From af0bf9cb357341f371f28eaaf19ed39e7a21698c Mon Sep 17 00:00:00 2001 From: "russell@unturf.com" Date: Sun, 14 Jun 2026 19:33:07 -0400 Subject: [PATCH] =?UTF-8?q?bend:=20fix=20C=20tier=20LinkError=20=E2=80=94?= =?UTF-8?q?=20switch=20EM=5FJS=20to=20--js-library=20mergeInto?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Browser instantiation of lumbda-c.wasm failed with: Aborted(LinkError: import object field 'js_lumbda_bend_call' is not a Function) The wasm correctly required env.js_lumbda_bend_call as a function import, and the EM_JS-generated function existed in the glue — emcc placed the function declaration at depth 0 of createLumbdaC where wasmImports lives, so it SHOULD have been hoisted into scope at instantiate time. It worked in node test runs but threw on browser load. The exact emcc-version cause is fuzzy; the fix is to use the textbook mechanism instead of guessing. New file wasm/c/bend-call-library.js — Emscripten JS library with mergeInto(LibraryManager.library, { js_lumbda_bend_call: function(...) }). mergeInto lands the function directly inside wasmImports under the mangled name _js_lumbda_bend_call (auto-prefix), wired to the js_lumbda_bend_call import. No scope guessing. lumbda_wasm_entry.c — drops EM_JS, keeps the C wrapper bi_bend_call_wasm and declares extern int js_lumbda_bend_call(...) so emcc emits the env import that the library fills. wasm/Makefile — adds --js-library c/bend-call-library.js to C_LDFLAGS and lists the library as a dependency so changes trigger a rebuild. Verified: deployed glue at lumbda.com now contains the mergeInto binding (js_lumbda_bend_call:_js_lumbda_bend_call inside wasmImports). End-to-end smoke via mocked XHR in node returns the expected (ok pong) round-trip from the demo's first probe step. --- wasm/Makefile | 17 +++++++++-- wasm/c/bend-call-library.js | 42 ++++++++++++++++++++++++++++ wasm/dist-repl/c/lumbda-c.js | 2 +- wasm/dist-repl/c/lumbda-c.loader.js | 22 +++++++++++++++ wasm/dist-repl/c/lumbda-c.wasm | Bin 288844 -> 295100 bytes www/playground/c/lumbda-c.js | 2 +- www/playground/c/lumbda-c.loader.js | 22 +++++++++++++++ www/playground/c/lumbda-c.wasm | Bin 288844 -> 295100 bytes www/repl/c/lumbda-c.js | 2 +- www/repl/c/lumbda-c.loader.js | 22 +++++++++++++++ www/repl/c/lumbda-c.wasm | Bin 288844 -> 295100 bytes 11 files changed, 125 insertions(+), 6 deletions(-) create mode 100644 wasm/c/bend-call-library.js diff --git a/wasm/Makefile b/wasm/Makefile index fac3c36..ae658a4 100644 --- a/wasm/Makefile +++ b/wasm/Makefile @@ -85,7 +85,17 @@ C_SOURCES := $(addprefix $(C_SRC_DIR)/, \ # are never executed. mmap PROT_EXEC would fail in WASM anyway; harmless. C_JIT_STUB := c/jit-stub.c -C_CFLAGS := -O2 -DLUMBDA_WASM -std=c11 -D_POSIX_C_SOURCE=200809L -D_GNU_SOURCE \ +# bdwgc integration attempt — DEFERRED. See c/lumbda_wasm_entry.c +# header comment for the full status: bdwgc builds cleanly with emcc +# via CMake, but option-1 (binaryen --spill-pointers) crashes in our +# emsdk version and option-2 (GC_disable + manual gcollect at safe +# points) compiles but triggers a runtime fault on the first eval. +# Likely a missed root somewhere in the eval call chain. Leaving the +# pieces in place (BDWGC_DIR check + commented include) so the next +# session can iterate without rebuilding bdwgc. + +C_CFLAGS := -O2 -DLUMBDA_WASM -std=c11 \ + -D_POSIX_C_SOURCE=200809L -D_GNU_SOURCE \ -I$(C_SRC_DIR) -Wno-everything C_LDFLAGS := -s WASM=1 -s MODULARIZE=1 -s EXPORT_ES6=1 \ -s EXPORT_NAME=createLumbdaC \ @@ -94,11 +104,12 @@ C_LDFLAGS := -s WASM=1 -s MODULARIZE=1 -s EXPORT_ES6=1 \ -s ALLOW_MEMORY_GROWTH=1 -s INITIAL_MEMORY=32MB \ -s STACK_SIZE=8MB \ -s ENVIRONMENT=web,worker,node \ - -s SINGLE_FILE=0 + -s SINGLE_FILE=0 \ + --js-library c/bend-call-library.js c: $(DIST)/c/lumbda-c.js $(DIST)/c/lumbda-c.wasm $(DIST)/c/lumbda-c.loader.js -$(DIST)/c/lumbda-c.js $(DIST)/c/lumbda-c.wasm: $(C_SOURCES) $(C_JIT_STUB) c/lumbda_wasm_entry.c +$(DIST)/c/lumbda-c.js $(DIST)/c/lumbda-c.wasm: $(C_SOURCES) $(C_JIT_STUB) c/lumbda_wasm_entry.c c/bend-call-library.js @mkdir -p $(@D) EMSDK=$(EMSDK_DIR) EMSDK_NODE=$(EMSDK_DIR)/node/22.16.0_64bit/bin/node \ PATH=$(EMSDK_DIR)/node/22.16.0_64bit/bin:$(EMSDK_DIR)/upstream/emscripten:$$PATH \ diff --git a/wasm/c/bend-call-library.js b/wasm/c/bend-call-library.js new file mode 100644 index 0000000..71f9c1b --- /dev/null +++ b/wasm/c/bend-call-library.js @@ -0,0 +1,42 @@ +// wasm/c/bend-call-library.js — Emscripten JS library exposing +// js_lumbda_bend_call to the C tier wasm. +// +// Used over EM_JS because EM_JS-generated function declarations +// can end up in a scope that's not visible at WebAssembly.instantiate +// time (we saw a LinkError "import object field 'js_lumbda_bend_call' +// is not a Function" in browsers). mergeInto + --js-library lands +// the function correctly inside emcc's wasmImports object. +// +// The function mirrors the asm tier's env.bend_call import and the +// pyodide tier's _lumbdaPyBendCall: sync XHR POST to whatever URL +// globalThis._lumbdaCBendUrl was set to (the loader exposes +// setBendUrl that mutates it). + +mergeInto(LibraryManager.library, { + js_lumbda_bend_call: function(payload_ptr, payload_len, resp_buf, resp_cap) { + var bendUrl = globalThis._lumbdaCBendUrl; + if (!bendUrl) { + var msg = "no bend URL configured"; + var n = Math.min(msg.length, resp_cap - 1); + for (var i = 0; i < n; i++) HEAPU8[resp_buf + i] = msg.charCodeAt(i); + return n; + } + try { + var payload = UTF8ToString(payload_ptr, payload_len); + var xhr = new XMLHttpRequest(); + xhr.open("POST", bendUrl, false); // sync + xhr.setRequestHeader("Content-Type", "text/plain; charset=utf-8"); + xhr.send(payload); + var resp = xhr.responseText || ""; + var bytes = new TextEncoder().encode(resp); + var n = Math.min(bytes.length, resp_cap); + HEAPU8.set(bytes.subarray(0, n), resp_buf); + return n; + } catch (e) { + var err = "bend error: " + (e.message || String(e)); + var n = Math.min(err.length, resp_cap - 1); + for (var i = 0; i < n; i++) HEAPU8[resp_buf + i] = err.charCodeAt(i); + return n; + } + }, +}); diff --git a/wasm/dist-repl/c/lumbda-c.js b/wasm/dist-repl/c/lumbda-c.js index 7e9d5de..0f020e1 100644 --- a/wasm/dist-repl/c/lumbda-c.js +++ b/wasm/dist-repl/c/lumbda-c.js @@ -1,2 +1,2 @@ -async function createLumbdaC(moduleArg={}){var moduleRtn;var Module=moduleArg;var ENVIRONMENT_IS_WEB=!!globalThis.window;var ENVIRONMENT_IS_WORKER=!!globalThis.WorkerGlobalScope;var ENVIRONMENT_IS_NODE=globalThis.process?.versions?.node&&globalThis.process?.type!="renderer";if(ENVIRONMENT_IS_NODE){const{createRequire}=await import("node:module");var require=createRequire(import.meta.url)}var programArgs=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var _scriptName=import.meta.url;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var readAsync,readBinary;if(ENVIRONMENT_IS_NODE){var fs=require("node:fs");if(_scriptName.startsWith("file:")){scriptDirectory=require("node:path").dirname(require("node:url").fileURLToPath(_scriptName))+"/"}readBinary=filename=>{filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename);return ret};readAsync=async(filename,binary=true)=>{filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename,binary?undefined:"utf8");return ret};if(process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}programArgs=process.argv.slice(2);quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){try{scriptDirectory=new URL(".",_scriptName).href}catch{}{if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=async url=>{var response=await fetch(url,{credentials:"same-origin"});if(response.ok){return response.arrayBuffer()}throw new Error(response.status+" : "+response.url)}}}else{}var out=console.log.bind(console);var err=console.error.bind(console);var wasmBinary;var ABORT=false;var EXITSTATUS;var isFileURI=filename=>filename.startsWith("file://");class EmscriptenEH{}class EmscriptenSjLj extends EmscriptenEH{}var readyPromiseResolve,readyPromiseReject;var runtimeInitialized=false;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 preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(onPreRuns)}function initRuntime(){runtimeInitialized=true;SOCKFS.root=FS.mount(SOCKFS,{},null);if(!Module["noFSInit"]&&!FS.initialized)FS.init();TTY.init();PIPEFS.root=FS.mount(PIPEFS,{},null);wasmExports["__wasm_call_ctors"]();FS.ignorePermissions=false}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(onPostRuns)}function abort(what){Module["onAbort"]?.(what);what=`Aborted(${what})`;err(what);ABORT=true;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject?.(e);throw e}var wasmBinaryFile;function findWasmBinary(){if(Module["locateFile"]){return locateFile("lumbda-c.wasm")}return new URL("lumbda-c.wasm",import.meta.url).href}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}async function getWasmBinary(binaryFile){if(!wasmBinary){try{var response=await readAsync(binaryFile);return new Uint8Array(response)}catch{}}return getBinarySync(binaryFile)}async function instantiateArrayBuffer(binaryFile,imports){try{var binary=await getWasmBinary(binaryFile);var instance=await WebAssembly.instantiate(binary,imports);return instance}catch(reason){err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)}}async function instantiateAsync(binary,binaryFile,imports){if(!binary&&!ENVIRONMENT_IS_NODE){try{var response=fetch(binaryFile,{credentials:"same-origin"});var instantiationResult=await WebAssembly.instantiateStreaming(response,imports);return instantiationResult}catch(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation")}}return instantiateArrayBuffer(binaryFile,imports)}function getWasmImports(){var imports={env:wasmImports,wasi_snapshot_preview1:wasmImports};return imports}async function createWasm(){function receiveInstance(instance,module){wasmExports=instance.exports;assignWasmExports(wasmExports);updateMemoryViews();return wasmExports}function receiveInstantiationResult(result){return receiveInstance(result["instance"])}var info=getWasmImports();if(Module["instantiateWasm"]){return new Promise((resolve,reject)=>{Module["instantiateWasm"](info,(inst,mod)=>{resolve(receiveInstance(inst,mod))})})}wasmBinaryFile??=findWasmBinary();var result=await instantiateAsync(wasmBinary,wasmBinaryFile,info);var exports=receiveInstantiationResult(result);return exports}class ExitStatus{name="ExitStatus";constructor(status){this.message=`Program terminated with exit(${status})`;this.status=status}}var HEAP16;var HEAP32;var HEAP64;var HEAP8;var HEAPF32;var HEAPF64;var HEAPU16;var HEAPU32;var HEAPU64;var HEAPU8;var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var onPostRuns=[];var addOnPostRun=cb=>onPostRuns.push(cb);var onPreRuns=[];var addOnPreRun=cb=>onPreRuns.push(cb);var noExitRuntime=true;var stackRestore=val=>__emscripten_stack_restore(val);var stackSave=()=>_emscripten_stack_get_current();var initRandomFill=()=>{if(ENVIRONMENT_IS_NODE){var nodeCrypto=require("node:crypto");return view=>nodeCrypto.randomFillSync(view)}return view=>(crypto.getRandomValues(view),0)};var randomFill=view=>(randomFill=initRandomFill())(view);var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.slice(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.slice(0,-1)}return root+dir},basename:path=>path&&path.match(/([^\/]+|\/)\/*$/)[1],join:(...paths)=>PATH.normalize(paths.join("/")),join2:(l,r)=>PATH.normalize(l+"/"+r)};var PATH_FS={resolve:(...args)=>{var resolvedPath="",resolvedAbsolute=false;for(var i=args.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?args[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).slice(1);to=PATH_FS.resolve(to).slice(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i{var maxIdx=idx+maxBytesToRead;if(ignoreNul)return maxIdx;while(heapOrArray[idx]&&!(idx>=maxIdx))++idx;return idx};var UTF8ArrayToString=(heapOrArray,idx=0,maxBytesToRead,ignoreNul)=>{var endPtr=findStringEnd(heapOrArray,idx,maxBytesToRead,ignoreNul);if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str};var FS_stdin_getChar_buffer=[];var lengthBytesUTF8=str=>{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63;i++}}heap[outIdx]=0;return outIdx-startIdx};var intArrayFromString=(stringy,dontAddNull,length)=>{var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array};var FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc(BUFSIZE);var bytesRead=0;var fd=process.stdin.fd;try{bytesRead=fs.readSync(fd,buf,0,BUFSIZE)}catch(e){if(e.toString().includes("EOF"))bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}}else if(globalThis.window?.prompt){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else{}if(!result){return null}FS_stdin_getChar_buffer=intArrayFromString(result,true)}return FS_stdin_getChar_buffer.shift()};var TTY={ttys:[],init(){},shutdown(){},register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close(stream){stream.tty.ops.fsync(stream.tty)},fsync(stream){stream.tty.ops.fsync(stream.tty)},read(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){out(UTF8ArrayToString(tty.output));tty.output=[]}},ioctl_tcgets(tty){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(tty,optional_actions,data){return 0},ioctl_tiocgwinsz(tty){return[24,80]}},default_tty1_ops:{put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync(tty){if(tty.output?.length>0){err(UTF8ArrayToString(tty.output));tty.output=[]}}}};var mmapAlloc=size=>{abort()};var 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}};var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=MEMFS.emptyFileContents??=new Uint8Array(0)}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.atime=node.mtime=node.ctime=Date.now();if(parent){parent.contents[name]=node;parent.atime=parent.mtime=parent.ctime=node.atime}return node},getFileDataAsTypedArray(node){return node.contents.subarray(0,node.usedBytes)},expandFileStorage(node,newCapacity){var prevCapacity=node.contents.length;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity)newCapacity=Math.max(newCapacity,256);var oldContents=MEMFS.getFileDataAsTypedArray(node);node.contents=new Uint8Array(newCapacity);node.contents.set(oldContents)},resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;var 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={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.atime);attr.mtime=new Date(node.mtime);attr.ctime=new Date(node.ctime);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr(node,attr){for(const key of["mode","atime","mtime","ctime"]){if(attr[key]!=null){node[key]=attr[key]}}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup(parent,name){if(!MEMFS.doesNotExistError){MEMFS.doesNotExistError=new FS.ErrnoError(44);MEMFS.doesNotExistError.stack=""}throw 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;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){var node=FS.lookupNode(parent,name);for(var i in node.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){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);buffer.set(contents.subarray(position,position+size),offset);return size},write(stream,buffer,offset,length,position,canOwn){if(buffer.buffer===HEAP8.buffer){canOwn=false}if(!length)return 0;var node=stream.node;node.mtime=node.ctime=Date.now();if(canOwn){node.contents=buffer.subarray(offset,offset+length);node.usedBytes=length}else if(node.usedBytes===0&&position===0){node.contents=buffer.slice(offset,offset+length);node.usedBytes=length}else{MEMFS.expandFileStorage(node,position+length);node.contents.set(buffer.subarray(offset,offset+length),position);node.usedBytes=Math.max(node.usedBytes,position+length)}return length},llseek(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.usedBytes}}if(position<0){throw new FS.ErrnoError(28)}return position},mmap(stream,length,position,prot,flags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}var ptr;var allocated;var contents=stream.node.contents;if(!(flags&2)&&contents.buffer===HEAP8.buffer){allocated=false;ptr=contents.byteOffset}else{allocated=true;ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}if(contents){if(position>0||position+length{if(typeof str!="string")return str;var flagModes={r:0,"r+":2,w:512|64|1,"w+":512|64|2,a:1024|64|1,"a+":1024|64|2};var flags=flagModes[str];if(typeof flags=="undefined"){throw new Error(`Unknown file open mode: ${str}`)}return flags};var FS_fileDataToTypedArray=data=>{if(typeof data=="string"){data=intArrayFromString(data,true)}if(!data.subarray){data=new Uint8Array(data)}return data};var FS_getMode=(canRead,canWrite)=>{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode};var asyncLoad=async url=>{var arrayBuffer=await readAsync(url);return new Uint8Array(arrayBuffer)};var FS_createDataFile=(...args)=>FS.createDataFile(...args);var getUniqueRunDependency=id=>id;var runDependencies=0;var dependenciesFulfilled=null;var removeRunDependency=id=>{runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);if(runDependencies==0){if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}};var addRunDependency=id=>{runDependencies++;Module["monitorRunDependencies"]?.(runDependencies)};var preloadPlugins=[];var FS_handledByPreloadPlugin=async(byteArray,fullname)=>{if(typeof Browser!="undefined")Browser.init();for(var plugin of preloadPlugins){if(plugin["canHandle"](fullname)){return plugin["handle"](byteArray,fullname)}}return byteArray};var FS_preloadFile=async(parent,name,url,canRead,canWrite,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);addRunDependency(dep);try{var byteArray=url;if(typeof url=="string"){byteArray=await asyncLoad(url)}byteArray=await FS_handledByPreloadPlugin(byteArray,fullname);preFinish?.();if(!dontCreateFile){FS_createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}}finally{removeRunDependency(dep)}};var 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)};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,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(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(val){this.shared.flags=val}get position(){return this.shared.position}set position(val){this.shared.position=val}},FSNode:class{node_ops={};stream_ops={};readMode=292|73;writeMode=146;mounted=null;constructor(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;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??=true;if(!PATH.isAbs(path)){path=FS.cwd()+"/"+path}linkloop:for(var nlinks=0;nlinks<40;nlinks++){var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i>>0)%FS.nameTable.length},hashAddNode(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode(node){FS.hashRemoveNode(node)},isRoot(node){return node===node.parent},isMountpoint(node){return!!node.mounted},isFile(mode){return(mode&61440)===32768},isDir(mode){return(mode&61440)===16384},isLink(mode){return(mode&61440)===40960},isChrdev(mode){return(mode&61440)===8192},isBlkdev(mode){return(mode&61440)===24576},isFIFO(mode){return(mode&61440)===4096},isSocket(mode){return(mode&49152)===49152},flagsToPermissionString(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions(node,perms){if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}if(perms.includes("w")&&!(node.mode&146)){return 2}if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup(dir){if(!FS.isDir(dir.mode))return 54;var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate(dir,name){if(!FS.isDir(dir.mode)){return 54}try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else if(FS.isDir(node.mode)){return 31}return 0},mayOpen(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}var mode=FS.flagsToPermissionString(flags);if(FS.isDir(node.mode)){if(mode!=="r"||flags&(512|64)){return 31}}return FS.nodePermissions(node,mode)},checkOpExists(op,err){if(!op){throw new FS.ErrnoError(err)}return op},MAX_OPEN_FDS:4096,nextfd(){for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStreamChecked(fd){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}return stream},getStream:fd=>FS.streams[fd],createStream(stream,fd=-1){stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream(fd){FS.streams[fd]=null},dupStream(origStream,fd=-1){var stream=FS.createStream(origStream,fd);stream.stream_ops?.dup?.(stream);return stream},doSetAttr(stream,node,attr){var setattr=stream?.stream_ops.setattr;var arg=setattr?stream:node;setattr??=node.node_ops.setattr;FS.checkOpExists(setattr,63);try{setattr(arg,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=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push(...m.mounts)}return mounts},syncfs(populate,callback){if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}for(var mount of mounts){if(mount.type.syncfs){mount.type.syncfs(mount,populate,done)}else{done(null)}}},mount(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type,opts,mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);for(var[hash,current]of Object.entries(FS.nameTable)){while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}}node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup(parent,name){return parent.node_ops.lookup(parent,name)},mknod(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name){throw new FS.ErrnoError(28)}if(name==="."||name===".."){throw new FS.ErrnoError(20)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},statfs(path){return FS.statfsNode(FS.lookupPath(path,{follow:true}).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};if(node.node_ops.statfs){Object.assign(rtn,node.node_ops.statfs(node.mount.opts.root))}return rtn},create(path,mode=438){mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir(path,mode=511){mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree(path,mode){var dirs=path.split("/");var d="";for(var dir of dirs){if(!dir)continue;if(d||PATH.isAbs(path))d+="/";d+=dir;try{FS.mkdir(d,mode)}catch(e){if(e.errno!=20)throw e}}},mkdev(path,mode,dev){if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink(oldpath,newpath){if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name);old_node.parent=new_dir}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;var readdir=FS.checkOpExists(node.node_ops.readdir,54);return readdir(node)},unlink(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return link.node_ops.readlink(link)},stat(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;var getattr=FS.checkOpExists(node.node_ops.getattr,63);return getattr(node)},fstat(fd){var stream=FS.getStreamChecked(fd);var node=stream.node;var getattr=stream.stream_ops.getattr;var arg=getattr?stream:node;getattr??=node.node_ops.getattr;FS.checkOpExists(getattr,63);return getattr(arg)},lstat(path){return FS.stat(path,true)},doChmod(stream,node,mode,dontFollow){FS.doSetAttr(stream,node,{mode:mode&4095|node.mode&~4095,ctime:Date.now(),dontFollow})},chmod(path,mode,dontFollow){var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}FS.doChmod(null,node,mode,dontFollow)},lchmod(path,mode){FS.chmod(path,mode,true)},fchmod(fd,mode){var stream=FS.getStreamChecked(fd);FS.doChmod(stream,stream.node,mode,false)},doChown(stream,node,dontFollow){FS.doSetAttr(stream,node,{timestamp:Date.now(),dontFollow})},chown(path,uid,gid,dontFollow){var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}FS.doChown(null,node,dontFollow)},lchown(path,uid,gid){FS.chown(path,uid,gid,true)},fchown(fd,uid,gid){var stream=FS.getStreamChecked(fd);FS.doChown(stream,stream.node,false)},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)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}FS.doTruncate(null,node,len)},ftruncate(fd,len){var stream=FS.getStreamChecked(fd);if(len<0||(stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.doTruncate(stream,stream.node,len)},utime(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;var setattr=FS.checkOpExists(node.node_ops.setattr,63);setattr(node,{atime,mtime})},open(path,flags,mode=438){if(path===""){throw new FS.ErrnoError(44)}flags=FS_modeStringToFlags(flags);if(flags&64){mode=mode&4095|32768}else{mode=0}var node;var isDirPath;if(typeof path=="object"){node=path}else{isDirPath=path.endsWith("/");var lookup=FS.lookupPath(path,{follow:!(flags&131072),noent_okay:true});node=lookup.node;path=lookup.path}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else if(isDirPath){throw new FS.ErrnoError(31)}else{node=FS.mknod(path,mode|511,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node,path:FS.getPath(node),flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(created){FS.chmod(node,mode&511)}return stream},close(stream){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed(stream){return stream.fd===null},llseek(stream,offset,whence){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},mmap(stream,length,position,prot,flags){if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}if(!length){throw new FS.ErrnoError(28)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync(stream,buffer,offset,length,mmapFlags){if(!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},ioctl(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile(path,opts={}){opts.flags=opts.flags??0;opts.encoding=opts.encoding??"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){abort(`Invalid encoding type "${opts.encoding}"`)}var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){buf=UTF8ArrayToString(buf)}FS.close(stream);return buf},writeFile(path,data,opts={}){opts.flags=opts.flags??577;var stream=FS.open(path,opts.flags,opts.mode);data=FS_fileDataToTypedArray(data);FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn);FS.close(stream)},cwd:()=>FS.currentPath,chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length,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;var randomByte=()=>{if(randomLeft===0){randomFill(randomBuffer);randomLeft=randomBuffer.byteLength}return randomBuffer[--randomLeft]};FS.createDevice("/dev","random",randomByte);FS.createDevice("/dev","urandom",randomByte);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount(){var node=FS.createNode(proc_self,"fd",16895,73);node.stream_ops={llseek:MEMFS.stream_ops.llseek};node.node_ops={lookup(parent,name){var fd=+name;var stream=FS.getStreamChecked(fd);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path},id:fd+1};ret.parent=ret;return ret},readdir(){return Array.from(FS.streams.entries()).filter(([k,v])=>v).map(([k,v])=>k.toString())}};return node}},{},"/proc/self/fd")},createStandardStreams(input,output,error){if(input){FS.createDevice("/dev","stdin",input)}else{FS.symlink("/dev/tty","/dev/stdin")}if(output){FS.createDevice("/dev","stdout",null,output)}else{FS.symlink("/dev/tty","/dev/stdout")}if(error){FS.createDevice("/dev","stderr",null,error)}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},staticInit(){FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={MEMFS}},init(input,output,error){FS.initialized=true;input??=Module["stdin"];output??=Module["stdout"];error??=Module["stderr"];FS.createStandardStreams(input,output,error)},quit(){FS.initialized=false;for(var stream of FS.streams){if(stream){FS.close(stream)}}},findObject(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);if(!ret.exists){return null}return ret.object},analyzePath(path,dontResolveLastLink){try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath(parent,path,canRead,canWrite){parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){if(e.errno!=20)throw e}parent=current}return current},createFile(parent,name,properties,canRead,canWrite){var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile(parent,name,data,canRead,canWrite,canOwn){var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS_getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){data=FS_fileDataToTypedArray(data);FS.chmod(node,mode|146);var stream=FS.open(node,577);FS.write(stream,data,0,data.length,0,canOwn);FS.close(stream);FS.chmod(node,mode)}},createDevice(parent,name,input,output){var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(!!input,!!output);FS.createDevice.major??=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open(stream){stream.seekable=false},close(stream){if(output?.buffer?.length){output(10)}},read(stream,buffer,offset,length,pos){var bytesRead=0;for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]}setDataGetter(getter){this.getter=getter}cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))abort("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)abort(`invalid range (${from}, ${to}) or no bytes requested!`);if(to>datalength-1)abort(`only ${datalength} bytes available! programmer error!`);var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))abort("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText??"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")abort("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true}get length(){if(!this.lengthKnown){this.cacheLength()}return this._length}get chunkSize(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}if(globalThis.XMLHttpRequest){if(!ENVIRONMENT_IS_WORKER)abort("Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc");var lazyArray=new LazyUint8Array;var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};for(const[key,fn]of Object.entries(node.stream_ops)){stream_ops[key]=(...args)=>{FS.forceLoadFile(node);return fn(...args)}}function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr,allocated:true}};node.stream_ops=stream_ops;return node}};var SOCKFS={websocketArgs:{},callbacks:{},on(event,callback){SOCKFS.callbacks[event]=callback},emit(event,param){SOCKFS.callbacks[event]?.(param)},mount(mount){SOCKFS.websocketArgs=Module["websocket"]||{};(Module["websocket"]??={})["on"]=SOCKFS.on;return FS.createNode(null,"/",16895,0)},createSocket(family,type,protocol){if(family!=2){throw new FS.ErrnoError(5)}type&=~526336;if(type!=1&&type!=2){throw new FS.ErrnoError(28)}var streaming=type==1;if(streaming&&protocol&&protocol!=6){throw new FS.ErrnoError(66)}var sock={family,type,protocol,server:null,error:null,peers:{},pending:[],recv_queue:[],sock_ops:SOCKFS.websocket_sock_ops};var name=SOCKFS.nextname();var node=FS.createNode(SOCKFS.root,name,49152,0);node.sock=sock;var stream=FS.createStream({path:name,node,flags:2,seekable:false,stream_ops:SOCKFS.stream_ops});sock.stream=stream;return sock},getSocket(fd){var stream=FS.getStream(fd);if(!stream||!FS.isSocket(stream.node.mode)){return null}return stream.node.sock},stream_ops:{poll(stream){var sock=stream.node.sock;return sock.sock_ops.poll(sock)},ioctl(stream,request,varargs){var sock=stream.node.sock;return sock.sock_ops.ioctl(sock,request,varargs)},read(stream,buffer,offset,length,position){var sock=stream.node.sock;var msg=sock.sock_ops.recvmsg(sock,length);if(!msg){return 0}buffer.set(msg.buffer,offset);return msg.buffer.length},write(stream,buffer,offset,length,position){var sock=stream.node.sock;return sock.sock_ops.sendmsg(sock,buffer,offset,length)},close(stream){var sock=stream.node.sock;sock.sock_ops.close(sock)}},nextname(){if(!SOCKFS.nextname.current){SOCKFS.nextname.current=0}return`socket[${SOCKFS.nextname.current++}]`},websocket_sock_ops:{createPeer(sock,addr,port){var ws;if(typeof addr=="object"){ws=addr;addr=null;port=null}if(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 url="ws://".replace("#","//");var subProtocols="binary";var opts=undefined;if(SOCKFS.websocketArgs["url"]){url=SOCKFS.websocketArgs["url"]}if(SOCKFS.websocketArgs["subprotocol"]){subProtocols=SOCKFS.websocketArgs["subprotocol"]}else if(SOCKFS.websocketArgs["subprotocol"]===null){subProtocols="null"}if(url==="ws://"||url==="wss://"){var parts=addr.split("/");url=url+parts[0]+":"+port+"/"+parts.slice(1).join("/")}if(subProtocols!=="null"){subProtocols=subProtocols.replace(/^ +| +$/g,"").split(/ *, */);opts=subProtocols}var WebSocketConstructor;if(ENVIRONMENT_IS_NODE){WebSocketConstructor=require("ws")}else{WebSocketConstructor=WebSocket}ws=new WebSocketConstructor(url,opts);ws.binaryType="arraybuffer"}catch(e){throw new FS.ErrnoError(23)}}var peer={addr,port,socket:ws,msg_send_queue:[]};SOCKFS.websocket_sock_ops.addPeer(sock,peer);SOCKFS.websocket_sock_ops.handlePeerEvents(sock,peer);if(sock.type===2&&typeof sock.sport!="undefined"){peer.msg_send_queue.push(new Uint8Array([255,255,255,255,"p".charCodeAt(0),"o".charCodeAt(0),"r".charCodeAt(0),"t".charCodeAt(0),(sock.sport&65280)>>8,sock.sport&255]))}return peer},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=true;function handleOpen(){sock.connecting=false;SOCKFS.emit("open",sock.stream.fd);try{var queued=peer.msg_send_queue.shift();while(queued){peer.socket.send(queued);queued=peer.msg_send_queue.shift()}}catch(e){peer.socket.close()}}function handleMessage(data){if(typeof data=="string"){var encoder=new TextEncoder;data=encoder.encode(data)}else{if(data.byteLength==0){return}data=new Uint8Array(data)}var wasfirst=first;first=false;if(wasfirst&&data.length===10&&data[0]===255&&data[1]===255&&data[2]===255&&data[3]===255&&data[4]==="p".charCodeAt(0)&&data[5]==="o".charCodeAt(0)&&data[6]==="r".charCodeAt(0)&&data[7]==="t".charCodeAt(0)){var newport=data[8]<<8|data[9];SOCKFS.websocket_sock_ops.removePeer(sock,peer);peer.port=newport;SOCKFS.websocket_sock_ops.addPeer(sock,peer);return}sock.recv_queue.push({addr:peer.addr,port:peer.port,data});SOCKFS.emit("message",sock.stream.fd)}if(ENVIRONMENT_IS_NODE){peer.socket.on("open",handleOpen);peer.socket.on("message",(data,isBinary)=>{if(!isBinary){return}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"])});return}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){if(sock.type===1&&sock.server){return sock.pending.length?64|1:0}var mask=0;var dest=sock.type===1?SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport):null;if(sock.recv_queue.length||!dest||dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=64|1}if(!dest||dest&&dest.socket.readyState===dest.socket.OPEN){mask|=4}if(dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){if(sock.connecting){mask|=4}else{mask|=16}}return mask},ioctl(sock,request,arg){switch(request){case 21531:var bytes=0;if(sock.recv_queue.length){bytes=sock.recv_queue[0].data.length}HEAP32[arg>>2]=bytes;return 0;case 21537:var on=HEAP32[arg>>2];if(on){sock.stream.flags|=2048}else{sock.stream.flags&=~2048}return 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(typeof sock.saddr!="undefined"||typeof sock.sport!="undefined"){throw new FS.ErrnoError(28)}sock.saddr=addr;sock.sport=port;if(sock.type===2){if(sock.server){sock.server.close();sock.server=null}try{sock.sock_ops.listen(sock,0)}catch(e){if(!(e.name==="ErrnoError"))throw e;if(e.errno!==138)throw e}}},connect(sock,addr,port){if(sock.server){throw new FS.ErrnoError(138)}if(typeof sock.daddr!="undefined"&&typeof sock.dport!="undefined"){var dest=SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport);if(dest){if(dest.socket.readyState===dest.socket.CONNECTING){throw new FS.ErrnoError(7)}else{throw new FS.ErrnoError(30)}}}var peer=SOCKFS.websocket_sock_ops.createPeer(sock,addr,port);sock.daddr=peer.addr;sock.dport=peer.port;sock.connecting=true},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;var host=sock.saddr;sock.server=new WebSocketServer({host,port:sock.sport});SOCKFS.emit("listen",sock.stream.fd);sock.server.on("connection",ws=>{if(sock.type===1){var newsock=SOCKFS.createSocket(sock.family,sock.type,sock.protocol);var 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)}else{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){if(!listensock.server||!listensock.pending.length){throw new FS.ErrnoError(28)}var newsock=listensock.pending.shift();newsock.stream.flags=listensock.stream.flags;return newsock},getname(sock,peer){var addr,port;if(peer){if(sock.daddr===undefined||sock.dport===undefined){throw new FS.ErrnoError(53)}addr=sock.daddr;port=sock.dport}else{addr=sock.saddr||0;port=sock.sport||0}return{addr,port}},sendmsg(sock,buffer,offset,length,addr,port){if(sock.type===2){if(addr===undefined||port===undefined){addr=sock.daddr;port=sock.dport}if(addr===undefined||port===undefined){throw new FS.ErrnoError(17)}}else{addr=sock.daddr;port=sock.dport}var dest=SOCKFS.websocket_sock_ops.getPeer(sock,addr,port);if(sock.type===1){if(!dest||dest.socket.readyState===dest.socket.CLOSING||dest.socket.readyState===dest.socket.CLOSED){throw new FS.ErrnoError(53)}}if(ArrayBuffer.isView(buffer)){offset+=buffer.byteOffset;buffer=buffer.buffer}var data=buffer.slice(offset,offset+length);if(!dest||dest.socket.readyState!==dest.socket.OPEN){if(sock.type===2){if(!dest||dest.socket.readyState===dest.socket.CLOSING||dest.socket.readyState===dest.socket.CLOSED){dest=SOCKFS.websocket_sock_ops.createPeer(sock,addr,port)}}dest.msg_send_queue.push(data);return length}try{dest.socket.send(data);return length}catch(e){throw new FS.ErrnoError(28)}},recvmsg(sock,length){if(sock.type===1&&sock.server){throw new FS.ErrnoError(53)}var queued=sock.recv_queue.shift();if(!queued){if(sock.type===1){var dest=SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport);if(!dest){throw new FS.ErrnoError(53)}if(dest.socket.readyState===dest.socket.CLOSING||dest.socket.readyState===dest.socket.CLOSED){return null}throw new FS.ErrnoError(6)}throw new FS.ErrnoError(6)}var queuedLength=queued.data.byteLength||queued.data.length;var queuedOffset=queued.data.byteOffset||0;var queuedBuffer=queued.data.buffer||queued.data;var bytesRead=Math.min(length,queuedLength);var res={buffer:new Uint8Array(queuedBuffer,queuedOffset,bytesRead),addr:queued.addr,port:queued.port};if(sock.type===1&&bytesRead{var socket=SOCKFS.getSocket(fd);if(!socket)throw new FS.ErrnoError(8);return socket};var inetPton4=str=>{var b=str.split(".");for(var 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};var inetPton6=str=>{var words;var w,offset,z;var valid6regx=/^((?=.*::)(?!.*::.+::)(::)?([\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;var parts=[];if(!valid6regx.test(str)){return null}if(str==="::"){return[0,0,0,0,0,0,0,0]}if(str.startsWith("::")){str=str.replace("::","Z:")}else{str=str.replace("::",":Z:")}if(str.indexOf(".")>0){str=str.replace(new RegExp("[.]","g"),":");words=str.split(":");words[words.length-4]=Number(words[words.length-4])+Number(words[words.length-3])*256;words[words.length-3]=Number(words[words.length-2])+Number(words[words.length-1])*256;words=words.slice(0,words.length-2)}else{words=str.split(":")}offset=0;z=0;for(w=0;wHEAPU8.fill(0,ptr,ptr+size);var writeSockaddr=(sa,family,addr,port,addrlen)=>{switch(family){case 2:addr=inetPton4(addr);zeroMemory(sa,16);if(addrlen){HEAP32[addrlen>>2]=16}HEAP16[sa>>1]=family;HEAP32[sa+4>>2]=addr;HEAP16[sa+2>>1]=_htons(port);break;case 10:addr=inetPton6(addr);zeroMemory(sa,28);if(addrlen){HEAP32[addrlen>>2]=28}HEAP32[sa>>2]=family;HEAP32[sa+8>>2]=addr[0];HEAP32[sa+12>>2]=addr[1];HEAP32[sa+16>>2]=addr[2];HEAP32[sa+20>>2]=addr[3];HEAP16[sa+2>>1]=_htons(port);break;default:return 5}return 0};var DNS={address_map:{id:1,addrs:{},names:{}},lookup_name(name){var res=inetPton4(name);if(res!==null){return name}res=inetPton6(name);if(res!==null){return name}var addr;if(DNS.address_map.addrs[name]){addr=DNS.address_map.addrs[name]}else{var id=DNS.address_map.id++;addr="172.29."+(id&255)+"."+(id&65280);DNS.address_map.names[addr]=name;DNS.address_map.addrs[name]=addr}return addr},lookup_addr(addr){if(DNS.address_map.names[addr]){return DNS.address_map.names[addr]}return null}};function ___syscall_accept4(fd,addr,addrlen,flags,d1,d2){try{var sock=getSocketFromFD(fd);var newsock=sock.sock_ops.accept(sock);if(addr){var errno=writeSockaddr(addr,newsock.family,DNS.lookup_name(newsock.daddr),newsock.dport,addrlen)}return newsock.stream.fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var inetNtop4=addr=>(addr&255)+"."+(addr>>8&255)+"."+(addr>>16&255)+"."+(addr>>24&255);var inetNtop6=ints=>{var str="";var word=0;var longest=0;var lastzero=0;var zstart=0;var len=0;var i=0;var parts=[ints[0]&65535,ints[0]>>16,ints[1]&65535,ints[1]>>16,ints[2]&65535,ints[2]>>16,ints[3]&65535,ints[3]>>16];var hasipv4=true;var v4part="";for(i=0;i<5;i++){if(parts[i]!==0){hasipv4=false;break}}if(hasipv4){v4part=inetNtop4(parts[6]|parts[7]<<16);if(parts[5]===-1){str="::ffff:";str+=v4part;return str}if(parts[5]===0){str="::";if(v4part==="0.0.0.0")v4part="";if(v4part==="0.0.0.1")v4part="1";str+=v4part;return str}}for(word=0;word<8;word++){if(parts[word]===0){if(word-lastzero>1){len=0}lastzero=word;len++}if(len>longest){longest=len;zstart=word-longest+1}}for(word=0;word<8;word++){if(longest>1){if(parts[word]===0&&word>=zstart&&word{var family=HEAP16[sa>>1];var port=_ntohs(HEAPU16[sa+2>>1]);var addr;switch(family){case 2:if(salen!==16){return{errno:28}}addr=HEAP32[sa+4>>2];addr=inetNtop4(addr);break;case 10:if(salen!==28){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,addr,port}};var getSocketAddress=(addrp,addrlen)=>{var info=readSockaddr(addrp,addrlen);if(info.errno)throw new FS.ErrnoError(info.errno);info.addr=DNS.lookup_addr(info.addr)||info.addr;return info};function ___syscall_bind(fd,addr,addrlen,d1,d2,d3){try{var sock=getSocketFromFD(fd);var info=getSocketAddress(addr,addrlen);sock.sock_ops.bind(sock,info.addr,info.port);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_connect(fd,addr,addrlen,d1,d2,d3){try{var sock=getSocketFromFD(fd);var info=getSocketAddress(addr,addrlen);sock.sock_ops.connect(sock,info.addr,info.port);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var UTF8ToString=(ptr,maxBytesToRead,ignoreNul)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead,ignoreNul):"";var SYSCALLS={currentUmask:18,calculateAt(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return dir+"/"+path},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();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();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);return 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(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},getStreamFromFD(fd){var stream=FS.getStreamChecked(fd);return stream},varargs:undefined,getStr(ptr){var ret=UTF8ToString(ptr);return ret}};function ___syscall_dup3(fd,newfd,flags){try{if(fd===newfd)return-28;if(flags&~524288)return-28;var old=SYSCALLS.getStreamFromFD(fd);if(newfd<0||newfd>=FS.MAX_OPEN_FDS)return-8;var existing=FS.getStream(newfd);if(existing)FS.close(existing);var stream=FS.dupStream(old,newfd);if(flags&524288){stream.flags|=524288}return stream.fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var syscallGetVarargI=()=>{var ret=HEAP32[+SYSCALLS.varargs>>2];SYSCALLS.varargs+=4;return ret};var syscallGetVarargP=syscallGetVarargI;function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=syscallGetVarargI();if(arg<0){return-28}while(FS.streams[arg]){arg++}var newStream;newStream=FS.dupStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=syscallGetVarargI();var mask=289792;stream.flags=stream.flags&~mask|arg&mask;return 0}case 12:{var arg=syscallGetVarargP();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0}return-28}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_fstat64(fd,buf){try{return SYSCALLS.writeStat(buf,FS.fstat(fd))}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);function ___syscall_getcwd(buf,size){try{if(size===0)return-28;var cwd=FS.cwd();var cwdLengthInBytes=lengthBytesUTF8(cwd)+1;if(size>2]=termios.c_iflag||0;HEAP32[argp+4>>2]=termios.c_oflag||0;HEAP32[argp+8>>2]=termios.c_cflag||0;HEAP32[argp+12>>2]=termios.c_lflag||0;for(var i=0;i<32;i++){HEAP8[argp+i+17]=termios.c_cc[i]||0}return 0}return 0}case 21510:case 21511:case 21512:{if(!stream.tty)return-59;return 0}case 21506:case 21507:case 21508:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcsets){var argp=syscallGetVarargP();var c_iflag=HEAP32[argp>>2];var c_oflag=HEAP32[argp+4>>2];var c_cflag=HEAP32[argp+8>>2];var c_lflag=HEAP32[argp+12>>2];var c_cc=[];for(var i=0;i<32;i++){c_cc.push(HEAP8[argp+i+17])}return stream.tty.ops.ioctl_tcsets(stream.tty,op,{c_iflag,c_oflag,c_cflag,c_lflag,c_cc})}return 0}case 21519:{if(!stream.tty)return-59;var argp=syscallGetVarargP();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21537:case 21531:{var argp=syscallGetVarargP();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tiocgwinsz){var winsize=stream.tty.ops.ioctl_tiocgwinsz(stream.tty);var argp=syscallGetVarargP();HEAP16[argp>>1]=winsize[0];HEAP16[argp+2>>1]=winsize[1]}return 0}case 21524:{if(!stream.tty)return-59;return 0}case 21515:{if(!stream.tty)return-59;return 0}default:return-28}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_listen(fd,backlog){try{var sock=getSocketFromFD(fd);sock.sock_ops.listen(sock,backlog);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_lstat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.writeStat(buf,FS.lstat(path))}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_newfstatat(dirfd,path,buf,flags){try{path=SYSCALLS.getStr(path);var nofollow=flags&256;var allowEmpty=flags&4096;flags=flags&~6400;path=SYSCALLS.calculateAt(dirfd,path,allowEmpty);return SYSCALLS.writeStat(buf,nofollow?FS.lstat(path):FS.stat(path))}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?syscallGetVarargI():0;if(flags&64){mode&=~SYSCALLS.currentUmask}return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var PIPEFS={BUCKET_BUFFER_SIZE:8192,mount(mount){return FS.createNode(null,"/",16384|511,0)},createPipe(){var pipe={buckets:[],refcnt:2,timestamp:new Date};pipe.buckets.push({buffer:new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE),offset:0,roffset:0});var rName=PIPEFS.nextname();var wName=PIPEFS.nextname();var rNode=FS.createNode(PIPEFS.root,rName,4096,0);var wNode=FS.createNode(PIPEFS.root,wName,4096,0);rNode.pipe=pipe;wNode.pipe=pipe;var readableStream=FS.createStream({path:rName,node:rNode,flags:0,seekable:false,stream_ops:PIPEFS.stream_ops});rNode.stream=readableStream;var writableStream=FS.createStream({path:wName,node:wNode,flags:1,seekable:false,stream_ops:PIPEFS.stream_ops});wNode.stream=writableStream;return{readable_fd:readableStream.fd,writable_fd:writableStream.fd}},stream_ops:{getattr(stream){var node=stream.node;var timestamp=node.pipe.timestamp;return{dev:14,ino:node.id,mode:4480,nlink:1,uid:0,gid:0,rdev:0,size:0,atime:timestamp,mtime:timestamp,ctime:timestamp,blksize:4096,blocks:0}},poll(stream,timeout,notifyCallback){var pipe=stream.node.pipe;if((stream.flags&2097155)===1){return 256|4}for(var bucket of pipe.buckets){if(bucket.offset-bucket.roffset>0){return 64|1}}return 0},dup(stream){stream.node.pipe.refcnt++},ioctl(stream,request,argp){if(request==21531){var pipe=stream.node.pipe;var currentLength=0;for(var bucket of pipe.buckets){currentLength+=bucket.offset-bucket.roffset}HEAP32[argp>>2]=currentLength;return 0}return 28},fsync(stream){return 28},read(stream,buffer,offset,length,position){var pipe=stream.node.pipe;var currentLength=0;for(var bucket of pipe.buckets){currentLength+=bucket.offset-bucket.roffset}var data=buffer.subarray(offset,offset+length);if(length<=0){return 0}if(currentLength==0){throw new FS.ErrnoError(6)}var toRead=Math.min(currentLength,length);var totalRead=toRead;var toRemove=0;for(var bucket of pipe.buckets){var bucketSize=bucket.offset-bucket.roffset;if(toRead<=bucketSize){var tmpSlice=bucket.buffer.subarray(bucket.roffset,bucket.offset);if(toRead=dataLen){currBucket.buffer.set(data,currBucket.offset);currBucket.offset+=dataLen;return dataLen}else if(freeBytesInCurrBuffer>0){currBucket.buffer.set(data.subarray(0,freeBytesInCurrBuffer),currBucket.offset);currBucket.offset+=freeBytesInCurrBuffer;data=data.subarray(freeBytesInCurrBuffer,data.byteLength)}var numBuckets=data.byteLength/PIPEFS.BUCKET_BUFFER_SIZE|0;var remElements=data.byteLength%PIPEFS.BUCKET_BUFFER_SIZE;for(var i=0;i0){var newBucket={buffer:new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE),offset:data.byteLength,roffset:0};pipe.buckets.push(newBucket);newBucket.buffer.set(data)}return dataLen},close(stream){var pipe=stream.node.pipe;pipe.refcnt--;if(pipe.refcnt===0){pipe.buckets=null}}},nextname(){if(!PIPEFS.nextname.current){PIPEFS.nextname.current=0}return"pipe["+PIPEFS.nextname.current+++"]"}};function ___syscall_pipe2(fdPtr,flags){try{if(fdPtr==0){throw new FS.ErrnoError(21)}var validFlags=524288|2048;if(flags&~validFlags){throw new FS.ErrnoError(138)}var res=PIPEFS.createPipe();if(flags&2048){FS.getStream(res.readable_fd).flags|=2048;FS.getStream(res.writable_fd).flags|=2048}HEAP32[fdPtr>>2]=res.readable_fd;HEAP32[fdPtr+4>>2]=res.writable_fd;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_renameat(olddirfd,oldpath,newdirfd,newpath){try{oldpath=SYSCALLS.getStr(oldpath);newpath=SYSCALLS.getStr(newpath);oldpath=SYSCALLS.calculateAt(olddirfd,oldpath);newpath=SYSCALLS.calculateAt(newdirfd,newpath);FS.rename(oldpath,newpath);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_socket(domain,type,protocol){try{var sock=SOCKFS.createSocket(domain,type,protocol);return sock.stream.fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.writeStat(buf,FS.stat(path))}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_unlinkat(dirfd,path,flags){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(!flags){FS.unlink(path)}else if(flags===512){FS.rmdir(path)}else{return-28}return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var __emscripten_lookup_name=name=>{var nameString=UTF8ToString(name);return inetPton4(DNS.lookup_name(nameString))};var __emscripten_throw_longjmp=()=>{throw new EmscriptenSjLj};var _emscripten_get_now=()=>performance.now();var _emscripten_date_now=()=>Date.now();var nowIsMonotonic=1;var checkWasiClock=clock_id=>clock_id>=0&&clock_id<=3;var INT53_MAX=9007199254740992;var INT53_MIN=-9007199254740992;var bigintToI53Checked=num=>numINT53_MAX?NaN:Number(num);function _clock_time_get(clk_id,ignored_precision,ptime){ignored_precision=bigintToI53Checked(ignored_precision);if(!checkWasiClock(clk_id)){return 28}var now;if(clk_id===0){now=_emscripten_date_now()}else if(nowIsMonotonic){now=_emscripten_get_now()}else{return 52}var nsec=Math.round(now*1e3*1e3);HEAP64[ptime>>3]=BigInt(nsec);return 0}var getHeapMax=()=>2147483648;var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var growMemory=size=>{var oldHeapSize=wasmMemory.buffer.byteLength;var pages=(size-oldHeapSize+65535)/65536|0;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignMemory(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var ENV={};var getExecutableName=()=>thisProgram;var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(globalThis.navigator?.language??"C").replace("-","_")+".UTF-8";var env={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:lang,_:getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var _environ_get=(__environ,environ_buf)=>{var bufSize=0;var envp=0;for(var string of getEnvStrings()){var ptr=environ_buf+bufSize;HEAPU32[__environ+envp>>2]=ptr;bufSize+=stringToUTF8(string,ptr,Infinity)+1;envp+=4}return 0};var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;for(var string of strings){bufSize+=lengthBytesUTF8(string)+1}HEAPU32[penviron_buf_size>>2]=bufSize;return 0};var runtimeKeepaliveCounter=0;var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){Module["onExit"]?.(code);ABORT=true}quit_(code,new ExitStatus(code))};var exitJS=(status,implicit)=>{EXITSTATUS=status;_proc_exit(status)};var _exit=exitJS;function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _fd_fdstat_get(fd,pbuf){try{var rightsBase=0;var rightsInheriting=0;var flags=0;{var stream=SYSCALLS.getStreamFromFD(fd);var type=stream.tty?2:FS.isDir(stream.mode)?3:FS.isLink(stream.mode)?7:4}HEAP8[pbuf]=type;HEAP16[pbuf+2>>1]=flags;HEAP64[pbuf+8>>3]=BigInt(rightsBase);HEAP64[pbuf+16>>3]=BigInt(rightsInheriting);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doReadv=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _fd_seek(fd,offset,whence,newOffset){offset=bigintToI53Checked(offset);try{if(isNaN(offset))return 22;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);HEAP64[newOffset>>3]=BigInt(stream.position);if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doWritev=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var wasmTableMirror=[];var getWasmTableEntry=funcPtr=>{var func=wasmTableMirror[funcPtr];if(!func){wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func};var getCFunc=ident=>{var func=Module["_"+ident];return func};var writeArrayToMemory=(array,buffer)=>{HEAP8.set(array,buffer)};var stackAlloc=sz=>__emscripten_stack_alloc(sz);var stringToUTF8OnStack=str=>{var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8(str,ret,size);return ret};var ccall=(ident,returnType,argTypes,args,opts)=>{var toC={string:str=>{var ret=0;if(str!==null&&str!==undefined&&str!==0){ret=stringToUTF8OnStack(str)}return ret},array:arr=>{var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType==="string"){return UTF8ToString(ret)}if(returnType==="boolean")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i{var numericArgs=!argTypes||argTypes.every(type=>type==="number"||type==="boolean");var numericRet=returnType!=="string";if(numericRet&&numericArgs&&!opts){return getCFunc(ident)}return(...args)=>ccall(ident,returnType,argTypes,args,opts)};FS.createPreloadedFile=FS_createPreloadedFile;FS.preloadFile=FS_preloadFile;FS.staticInit();{if(Module["noExitRuntime"])noExitRuntime=Module["noExitRuntime"];if(Module["preloadPlugins"])preloadPlugins=Module["preloadPlugins"];if(Module["print"])out=Module["print"];if(Module["printErr"])err=Module["printErr"];if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];if(Module["arguments"])programArgs=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].shift()()}}}Module["ccall"]=ccall;Module["cwrap"]=cwrap;Module["UTF8ToString"]=UTF8ToString;Module["stringToUTF8"]=stringToUTF8;Module["lengthBytesUTF8"]=lengthBytesUTF8;function js_lumbda_bend_call(payload_ptr,payload_len,resp_buf,resp_cap){var bendUrl=globalThis._lumbdaCBendUrl;if(!bendUrl){var msg="no bend URL configured";var n=Math.min(msg.length,resp_cap-1);for(var i=0;i0){dependenciesFulfilled=run;return}preRun();if(runDependencies>0){dependenciesFulfilled=run;return}function doRun(){Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve?.(Module);Module["onRuntimeInitialized"]?.();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(()=>{setTimeout(()=>Module["setStatus"](""),1);doRun()},1)}else{doRun()}}var wasmExports;wasmExports=await (createWasm());run();if(runtimeInitialized){moduleRtn=Module}else{moduleRtn=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject})} +async function createLumbdaC(moduleArg={}){var moduleRtn;var Module=moduleArg;var ENVIRONMENT_IS_WEB=!!globalThis.window;var ENVIRONMENT_IS_WORKER=!!globalThis.WorkerGlobalScope;var ENVIRONMENT_IS_NODE=globalThis.process?.versions?.node&&globalThis.process?.type!="renderer";if(ENVIRONMENT_IS_NODE){const{createRequire}=await import("node:module");var require=createRequire(import.meta.url)}var programArgs=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var _scriptName=import.meta.url;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var readAsync,readBinary;if(ENVIRONMENT_IS_NODE){var fs=require("node:fs");if(_scriptName.startsWith("file:")){scriptDirectory=require("node:path").dirname(require("node:url").fileURLToPath(_scriptName))+"/"}readBinary=filename=>{filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename);return ret};readAsync=async(filename,binary=true)=>{filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename,binary?undefined:"utf8");return ret};if(process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}programArgs=process.argv.slice(2);quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){try{scriptDirectory=new URL(".",_scriptName).href}catch{}{if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=async url=>{var response=await fetch(url,{credentials:"same-origin"});if(response.ok){return response.arrayBuffer()}throw new Error(response.status+" : "+response.url)}}}else{}var out=console.log.bind(console);var err=console.error.bind(console);var wasmBinary;var ABORT=false;var EXITSTATUS;var isFileURI=filename=>filename.startsWith("file://");class EmscriptenEH{}class EmscriptenSjLj extends EmscriptenEH{}var readyPromiseResolve,readyPromiseReject;var runtimeInitialized=false;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 preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(onPreRuns)}function initRuntime(){runtimeInitialized=true;SOCKFS.root=FS.mount(SOCKFS,{},null);if(!Module["noFSInit"]&&!FS.initialized)FS.init();TTY.init();PIPEFS.root=FS.mount(PIPEFS,{},null);wasmExports["__wasm_call_ctors"]();FS.ignorePermissions=false}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(onPostRuns)}function abort(what){Module["onAbort"]?.(what);what=`Aborted(${what})`;err(what);ABORT=true;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject?.(e);throw e}var wasmBinaryFile;function findWasmBinary(){if(Module["locateFile"]){return locateFile("lumbda-c.wasm")}return new URL("lumbda-c.wasm",import.meta.url).href}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}async function getWasmBinary(binaryFile){if(!wasmBinary){try{var response=await readAsync(binaryFile);return new Uint8Array(response)}catch{}}return getBinarySync(binaryFile)}async function instantiateArrayBuffer(binaryFile,imports){try{var binary=await getWasmBinary(binaryFile);var instance=await WebAssembly.instantiate(binary,imports);return instance}catch(reason){err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)}}async function instantiateAsync(binary,binaryFile,imports){if(!binary&&!ENVIRONMENT_IS_NODE){try{var response=fetch(binaryFile,{credentials:"same-origin"});var instantiationResult=await WebAssembly.instantiateStreaming(response,imports);return instantiationResult}catch(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation")}}return instantiateArrayBuffer(binaryFile,imports)}function getWasmImports(){var imports={env:wasmImports,wasi_snapshot_preview1:wasmImports};return imports}async function createWasm(){function receiveInstance(instance,module){wasmExports=instance.exports;assignWasmExports(wasmExports);updateMemoryViews();return wasmExports}function receiveInstantiationResult(result){return receiveInstance(result["instance"])}var info=getWasmImports();if(Module["instantiateWasm"]){return new Promise((resolve,reject)=>{Module["instantiateWasm"](info,(inst,mod)=>{resolve(receiveInstance(inst,mod))})})}wasmBinaryFile??=findWasmBinary();var result=await instantiateAsync(wasmBinary,wasmBinaryFile,info);var exports=receiveInstantiationResult(result);return exports}class ExitStatus{name="ExitStatus";constructor(status){this.message=`Program terminated with exit(${status})`;this.status=status}}var HEAP16;var HEAP32;var HEAP64;var HEAP8;var HEAPF32;var HEAPF64;var HEAPU16;var HEAPU32;var HEAPU64;var HEAPU8;var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var onPostRuns=[];var addOnPostRun=cb=>onPostRuns.push(cb);var onPreRuns=[];var addOnPreRun=cb=>onPreRuns.push(cb);var noExitRuntime=true;var stackRestore=val=>__emscripten_stack_restore(val);var stackSave=()=>_emscripten_stack_get_current();var initRandomFill=()=>{if(ENVIRONMENT_IS_NODE){var nodeCrypto=require("node:crypto");return view=>nodeCrypto.randomFillSync(view)}return view=>(crypto.getRandomValues(view),0)};var randomFill=view=>(randomFill=initRandomFill())(view);var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.slice(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.slice(0,-1)}return root+dir},basename:path=>path&&path.match(/([^\/]+|\/)\/*$/)[1],join:(...paths)=>PATH.normalize(paths.join("/")),join2:(l,r)=>PATH.normalize(l+"/"+r)};var PATH_FS={resolve:(...args)=>{var resolvedPath="",resolvedAbsolute=false;for(var i=args.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?args[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).slice(1);to=PATH_FS.resolve(to).slice(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i{var maxIdx=idx+maxBytesToRead;if(ignoreNul)return maxIdx;while(heapOrArray[idx]&&!(idx>=maxIdx))++idx;return idx};var UTF8ArrayToString=(heapOrArray,idx=0,maxBytesToRead,ignoreNul)=>{var endPtr=findStringEnd(heapOrArray,idx,maxBytesToRead,ignoreNul);if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str};var FS_stdin_getChar_buffer=[];var lengthBytesUTF8=str=>{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63;i++}}heap[outIdx]=0;return outIdx-startIdx};var intArrayFromString=(stringy,dontAddNull,length)=>{var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array};var FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc(BUFSIZE);var bytesRead=0;var fd=process.stdin.fd;try{bytesRead=fs.readSync(fd,buf,0,BUFSIZE)}catch(e){if(e.toString().includes("EOF"))bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}}else if(globalThis.window?.prompt){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else{}if(!result){return null}FS_stdin_getChar_buffer=intArrayFromString(result,true)}return FS_stdin_getChar_buffer.shift()};var TTY={ttys:[],init(){},shutdown(){},register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close(stream){stream.tty.ops.fsync(stream.tty)},fsync(stream){stream.tty.ops.fsync(stream.tty)},read(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){out(UTF8ArrayToString(tty.output));tty.output=[]}},ioctl_tcgets(tty){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(tty,optional_actions,data){return 0},ioctl_tiocgwinsz(tty){return[24,80]}},default_tty1_ops:{put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync(tty){if(tty.output?.length>0){err(UTF8ArrayToString(tty.output));tty.output=[]}}}};var mmapAlloc=size=>{abort()};var 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}};var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=MEMFS.emptyFileContents??=new Uint8Array(0)}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.atime=node.mtime=node.ctime=Date.now();if(parent){parent.contents[name]=node;parent.atime=parent.mtime=parent.ctime=node.atime}return node},getFileDataAsTypedArray(node){return node.contents.subarray(0,node.usedBytes)},expandFileStorage(node,newCapacity){var prevCapacity=node.contents.length;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity)newCapacity=Math.max(newCapacity,256);var oldContents=MEMFS.getFileDataAsTypedArray(node);node.contents=new Uint8Array(newCapacity);node.contents.set(oldContents)},resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;var 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={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.atime);attr.mtime=new Date(node.mtime);attr.ctime=new Date(node.ctime);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr(node,attr){for(const key of["mode","atime","mtime","ctime"]){if(attr[key]!=null){node[key]=attr[key]}}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup(parent,name){if(!MEMFS.doesNotExistError){MEMFS.doesNotExistError=new FS.ErrnoError(44);MEMFS.doesNotExistError.stack=""}throw 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;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){var node=FS.lookupNode(parent,name);for(var i in node.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){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);buffer.set(contents.subarray(position,position+size),offset);return size},write(stream,buffer,offset,length,position,canOwn){if(buffer.buffer===HEAP8.buffer){canOwn=false}if(!length)return 0;var node=stream.node;node.mtime=node.ctime=Date.now();if(canOwn){node.contents=buffer.subarray(offset,offset+length);node.usedBytes=length}else if(node.usedBytes===0&&position===0){node.contents=buffer.slice(offset,offset+length);node.usedBytes=length}else{MEMFS.expandFileStorage(node,position+length);node.contents.set(buffer.subarray(offset,offset+length),position);node.usedBytes=Math.max(node.usedBytes,position+length)}return length},llseek(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.usedBytes}}if(position<0){throw new FS.ErrnoError(28)}return position},mmap(stream,length,position,prot,flags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}var ptr;var allocated;var contents=stream.node.contents;if(!(flags&2)&&contents.buffer===HEAP8.buffer){allocated=false;ptr=contents.byteOffset}else{allocated=true;ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}if(contents){if(position>0||position+length{if(typeof str!="string")return str;var flagModes={r:0,"r+":2,w:512|64|1,"w+":512|64|2,a:1024|64|1,"a+":1024|64|2};var flags=flagModes[str];if(typeof flags=="undefined"){throw new Error(`Unknown file open mode: ${str}`)}return flags};var FS_fileDataToTypedArray=data=>{if(typeof data=="string"){data=intArrayFromString(data,true)}if(!data.subarray){data=new Uint8Array(data)}return data};var FS_getMode=(canRead,canWrite)=>{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode};var asyncLoad=async url=>{var arrayBuffer=await readAsync(url);return new Uint8Array(arrayBuffer)};var FS_createDataFile=(...args)=>FS.createDataFile(...args);var getUniqueRunDependency=id=>id;var runDependencies=0;var dependenciesFulfilled=null;var removeRunDependency=id=>{runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);if(runDependencies==0){if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}};var addRunDependency=id=>{runDependencies++;Module["monitorRunDependencies"]?.(runDependencies)};var preloadPlugins=[];var FS_handledByPreloadPlugin=async(byteArray,fullname)=>{if(typeof Browser!="undefined")Browser.init();for(var plugin of preloadPlugins){if(plugin["canHandle"](fullname)){return plugin["handle"](byteArray,fullname)}}return byteArray};var FS_preloadFile=async(parent,name,url,canRead,canWrite,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);addRunDependency(dep);try{var byteArray=url;if(typeof url=="string"){byteArray=await asyncLoad(url)}byteArray=await FS_handledByPreloadPlugin(byteArray,fullname);preFinish?.();if(!dontCreateFile){FS_createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}}finally{removeRunDependency(dep)}};var 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)};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,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(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(val){this.shared.flags=val}get position(){return this.shared.position}set position(val){this.shared.position=val}},FSNode:class{node_ops={};stream_ops={};readMode=292|73;writeMode=146;mounted=null;constructor(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;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??=true;if(!PATH.isAbs(path)){path=FS.cwd()+"/"+path}linkloop:for(var nlinks=0;nlinks<40;nlinks++){var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i>>0)%FS.nameTable.length},hashAddNode(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode(node){FS.hashRemoveNode(node)},isRoot(node){return node===node.parent},isMountpoint(node){return!!node.mounted},isFile(mode){return(mode&61440)===32768},isDir(mode){return(mode&61440)===16384},isLink(mode){return(mode&61440)===40960},isChrdev(mode){return(mode&61440)===8192},isBlkdev(mode){return(mode&61440)===24576},isFIFO(mode){return(mode&61440)===4096},isSocket(mode){return(mode&49152)===49152},flagsToPermissionString(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions(node,perms){if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}if(perms.includes("w")&&!(node.mode&146)){return 2}if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup(dir){if(!FS.isDir(dir.mode))return 54;var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate(dir,name){if(!FS.isDir(dir.mode)){return 54}try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else if(FS.isDir(node.mode)){return 31}return 0},mayOpen(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}var mode=FS.flagsToPermissionString(flags);if(FS.isDir(node.mode)){if(mode!=="r"||flags&(512|64)){return 31}}return FS.nodePermissions(node,mode)},checkOpExists(op,err){if(!op){throw new FS.ErrnoError(err)}return op},MAX_OPEN_FDS:4096,nextfd(){for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStreamChecked(fd){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}return stream},getStream:fd=>FS.streams[fd],createStream(stream,fd=-1){stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream(fd){FS.streams[fd]=null},dupStream(origStream,fd=-1){var stream=FS.createStream(origStream,fd);stream.stream_ops?.dup?.(stream);return stream},doSetAttr(stream,node,attr){var setattr=stream?.stream_ops.setattr;var arg=setattr?stream:node;setattr??=node.node_ops.setattr;FS.checkOpExists(setattr,63);try{setattr(arg,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=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push(...m.mounts)}return mounts},syncfs(populate,callback){if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}for(var mount of mounts){if(mount.type.syncfs){mount.type.syncfs(mount,populate,done)}else{done(null)}}},mount(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type,opts,mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);for(var[hash,current]of Object.entries(FS.nameTable)){while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}}node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup(parent,name){return parent.node_ops.lookup(parent,name)},mknod(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name){throw new FS.ErrnoError(28)}if(name==="."||name===".."){throw new FS.ErrnoError(20)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},statfs(path){return FS.statfsNode(FS.lookupPath(path,{follow:true}).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};if(node.node_ops.statfs){Object.assign(rtn,node.node_ops.statfs(node.mount.opts.root))}return rtn},create(path,mode=438){mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir(path,mode=511){mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree(path,mode){var dirs=path.split("/");var d="";for(var dir of dirs){if(!dir)continue;if(d||PATH.isAbs(path))d+="/";d+=dir;try{FS.mkdir(d,mode)}catch(e){if(e.errno!=20)throw e}}},mkdev(path,mode,dev){if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink(oldpath,newpath){if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name);old_node.parent=new_dir}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;var readdir=FS.checkOpExists(node.node_ops.readdir,54);return readdir(node)},unlink(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return link.node_ops.readlink(link)},stat(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;var getattr=FS.checkOpExists(node.node_ops.getattr,63);return getattr(node)},fstat(fd){var stream=FS.getStreamChecked(fd);var node=stream.node;var getattr=stream.stream_ops.getattr;var arg=getattr?stream:node;getattr??=node.node_ops.getattr;FS.checkOpExists(getattr,63);return getattr(arg)},lstat(path){return FS.stat(path,true)},doChmod(stream,node,mode,dontFollow){FS.doSetAttr(stream,node,{mode:mode&4095|node.mode&~4095,ctime:Date.now(),dontFollow})},chmod(path,mode,dontFollow){var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}FS.doChmod(null,node,mode,dontFollow)},lchmod(path,mode){FS.chmod(path,mode,true)},fchmod(fd,mode){var stream=FS.getStreamChecked(fd);FS.doChmod(stream,stream.node,mode,false)},doChown(stream,node,dontFollow){FS.doSetAttr(stream,node,{timestamp:Date.now(),dontFollow})},chown(path,uid,gid,dontFollow){var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}FS.doChown(null,node,dontFollow)},lchown(path,uid,gid){FS.chown(path,uid,gid,true)},fchown(fd,uid,gid){var stream=FS.getStreamChecked(fd);FS.doChown(stream,stream.node,false)},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)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}FS.doTruncate(null,node,len)},ftruncate(fd,len){var stream=FS.getStreamChecked(fd);if(len<0||(stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.doTruncate(stream,stream.node,len)},utime(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;var setattr=FS.checkOpExists(node.node_ops.setattr,63);setattr(node,{atime,mtime})},open(path,flags,mode=438){if(path===""){throw new FS.ErrnoError(44)}flags=FS_modeStringToFlags(flags);if(flags&64){mode=mode&4095|32768}else{mode=0}var node;var isDirPath;if(typeof path=="object"){node=path}else{isDirPath=path.endsWith("/");var lookup=FS.lookupPath(path,{follow:!(flags&131072),noent_okay:true});node=lookup.node;path=lookup.path}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else if(isDirPath){throw new FS.ErrnoError(31)}else{node=FS.mknod(path,mode|511,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node,path:FS.getPath(node),flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(created){FS.chmod(node,mode&511)}return stream},close(stream){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed(stream){return stream.fd===null},llseek(stream,offset,whence){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},mmap(stream,length,position,prot,flags){if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}if(!length){throw new FS.ErrnoError(28)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync(stream,buffer,offset,length,mmapFlags){if(!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},ioctl(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile(path,opts={}){opts.flags=opts.flags??0;opts.encoding=opts.encoding??"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){abort(`Invalid encoding type "${opts.encoding}"`)}var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){buf=UTF8ArrayToString(buf)}FS.close(stream);return buf},writeFile(path,data,opts={}){opts.flags=opts.flags??577;var stream=FS.open(path,opts.flags,opts.mode);data=FS_fileDataToTypedArray(data);FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn);FS.close(stream)},cwd:()=>FS.currentPath,chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length,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;var randomByte=()=>{if(randomLeft===0){randomFill(randomBuffer);randomLeft=randomBuffer.byteLength}return randomBuffer[--randomLeft]};FS.createDevice("/dev","random",randomByte);FS.createDevice("/dev","urandom",randomByte);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount(){var node=FS.createNode(proc_self,"fd",16895,73);node.stream_ops={llseek:MEMFS.stream_ops.llseek};node.node_ops={lookup(parent,name){var fd=+name;var stream=FS.getStreamChecked(fd);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path},id:fd+1};ret.parent=ret;return ret},readdir(){return Array.from(FS.streams.entries()).filter(([k,v])=>v).map(([k,v])=>k.toString())}};return node}},{},"/proc/self/fd")},createStandardStreams(input,output,error){if(input){FS.createDevice("/dev","stdin",input)}else{FS.symlink("/dev/tty","/dev/stdin")}if(output){FS.createDevice("/dev","stdout",null,output)}else{FS.symlink("/dev/tty","/dev/stdout")}if(error){FS.createDevice("/dev","stderr",null,error)}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},staticInit(){FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={MEMFS}},init(input,output,error){FS.initialized=true;input??=Module["stdin"];output??=Module["stdout"];error??=Module["stderr"];FS.createStandardStreams(input,output,error)},quit(){FS.initialized=false;for(var stream of FS.streams){if(stream){FS.close(stream)}}},findObject(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);if(!ret.exists){return null}return ret.object},analyzePath(path,dontResolveLastLink){try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath(parent,path,canRead,canWrite){parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){if(e.errno!=20)throw e}parent=current}return current},createFile(parent,name,properties,canRead,canWrite){var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile(parent,name,data,canRead,canWrite,canOwn){var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS_getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){data=FS_fileDataToTypedArray(data);FS.chmod(node,mode|146);var stream=FS.open(node,577);FS.write(stream,data,0,data.length,0,canOwn);FS.close(stream);FS.chmod(node,mode)}},createDevice(parent,name,input,output){var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(!!input,!!output);FS.createDevice.major??=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open(stream){stream.seekable=false},close(stream){if(output?.buffer?.length){output(10)}},read(stream,buffer,offset,length,pos){var bytesRead=0;for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]}setDataGetter(getter){this.getter=getter}cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))abort("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)abort(`invalid range (${from}, ${to}) or no bytes requested!`);if(to>datalength-1)abort(`only ${datalength} bytes available! programmer error!`);var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))abort("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText??"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")abort("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true}get length(){if(!this.lengthKnown){this.cacheLength()}return this._length}get chunkSize(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}if(globalThis.XMLHttpRequest){if(!ENVIRONMENT_IS_WORKER)abort("Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc");var lazyArray=new LazyUint8Array;var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};for(const[key,fn]of Object.entries(node.stream_ops)){stream_ops[key]=(...args)=>{FS.forceLoadFile(node);return fn(...args)}}function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr,allocated:true}};node.stream_ops=stream_ops;return node}};var SOCKFS={websocketArgs:{},callbacks:{},on(event,callback){SOCKFS.callbacks[event]=callback},emit(event,param){SOCKFS.callbacks[event]?.(param)},mount(mount){SOCKFS.websocketArgs=Module["websocket"]||{};(Module["websocket"]??={})["on"]=SOCKFS.on;return FS.createNode(null,"/",16895,0)},createSocket(family,type,protocol){if(family!=2){throw new FS.ErrnoError(5)}type&=~526336;if(type!=1&&type!=2){throw new FS.ErrnoError(28)}var streaming=type==1;if(streaming&&protocol&&protocol!=6){throw new FS.ErrnoError(66)}var sock={family,type,protocol,server:null,error:null,peers:{},pending:[],recv_queue:[],sock_ops:SOCKFS.websocket_sock_ops};var name=SOCKFS.nextname();var node=FS.createNode(SOCKFS.root,name,49152,0);node.sock=sock;var stream=FS.createStream({path:name,node,flags:2,seekable:false,stream_ops:SOCKFS.stream_ops});sock.stream=stream;return sock},getSocket(fd){var stream=FS.getStream(fd);if(!stream||!FS.isSocket(stream.node.mode)){return null}return stream.node.sock},stream_ops:{poll(stream){var sock=stream.node.sock;return sock.sock_ops.poll(sock)},ioctl(stream,request,varargs){var sock=stream.node.sock;return sock.sock_ops.ioctl(sock,request,varargs)},read(stream,buffer,offset,length,position){var sock=stream.node.sock;var msg=sock.sock_ops.recvmsg(sock,length);if(!msg){return 0}buffer.set(msg.buffer,offset);return msg.buffer.length},write(stream,buffer,offset,length,position){var sock=stream.node.sock;return sock.sock_ops.sendmsg(sock,buffer,offset,length)},close(stream){var sock=stream.node.sock;sock.sock_ops.close(sock)}},nextname(){if(!SOCKFS.nextname.current){SOCKFS.nextname.current=0}return`socket[${SOCKFS.nextname.current++}]`},websocket_sock_ops:{createPeer(sock,addr,port){var ws;if(typeof addr=="object"){ws=addr;addr=null;port=null}if(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 url="ws://".replace("#","//");var subProtocols="binary";var opts=undefined;if(SOCKFS.websocketArgs["url"]){url=SOCKFS.websocketArgs["url"]}if(SOCKFS.websocketArgs["subprotocol"]){subProtocols=SOCKFS.websocketArgs["subprotocol"]}else if(SOCKFS.websocketArgs["subprotocol"]===null){subProtocols="null"}if(url==="ws://"||url==="wss://"){var parts=addr.split("/");url=url+parts[0]+":"+port+"/"+parts.slice(1).join("/")}if(subProtocols!=="null"){subProtocols=subProtocols.replace(/^ +| +$/g,"").split(/ *, */);opts=subProtocols}var WebSocketConstructor;if(ENVIRONMENT_IS_NODE){WebSocketConstructor=require("ws")}else{WebSocketConstructor=WebSocket}ws=new WebSocketConstructor(url,opts);ws.binaryType="arraybuffer"}catch(e){throw new FS.ErrnoError(23)}}var peer={addr,port,socket:ws,msg_send_queue:[]};SOCKFS.websocket_sock_ops.addPeer(sock,peer);SOCKFS.websocket_sock_ops.handlePeerEvents(sock,peer);if(sock.type===2&&typeof sock.sport!="undefined"){peer.msg_send_queue.push(new Uint8Array([255,255,255,255,"p".charCodeAt(0),"o".charCodeAt(0),"r".charCodeAt(0),"t".charCodeAt(0),(sock.sport&65280)>>8,sock.sport&255]))}return peer},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=true;function handleOpen(){sock.connecting=false;SOCKFS.emit("open",sock.stream.fd);try{var queued=peer.msg_send_queue.shift();while(queued){peer.socket.send(queued);queued=peer.msg_send_queue.shift()}}catch(e){peer.socket.close()}}function handleMessage(data){if(typeof data=="string"){var encoder=new TextEncoder;data=encoder.encode(data)}else{if(data.byteLength==0){return}data=new Uint8Array(data)}var wasfirst=first;first=false;if(wasfirst&&data.length===10&&data[0]===255&&data[1]===255&&data[2]===255&&data[3]===255&&data[4]==="p".charCodeAt(0)&&data[5]==="o".charCodeAt(0)&&data[6]==="r".charCodeAt(0)&&data[7]==="t".charCodeAt(0)){var newport=data[8]<<8|data[9];SOCKFS.websocket_sock_ops.removePeer(sock,peer);peer.port=newport;SOCKFS.websocket_sock_ops.addPeer(sock,peer);return}sock.recv_queue.push({addr:peer.addr,port:peer.port,data});SOCKFS.emit("message",sock.stream.fd)}if(ENVIRONMENT_IS_NODE){peer.socket.on("open",handleOpen);peer.socket.on("message",(data,isBinary)=>{if(!isBinary){return}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"])});return}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){if(sock.type===1&&sock.server){return sock.pending.length?64|1:0}var mask=0;var dest=sock.type===1?SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport):null;if(sock.recv_queue.length||!dest||dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=64|1}if(!dest||dest&&dest.socket.readyState===dest.socket.OPEN){mask|=4}if(dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){if(sock.connecting){mask|=4}else{mask|=16}}return mask},ioctl(sock,request,arg){switch(request){case 21531:var bytes=0;if(sock.recv_queue.length){bytes=sock.recv_queue[0].data.length}HEAP32[arg>>2]=bytes;return 0;case 21537:var on=HEAP32[arg>>2];if(on){sock.stream.flags|=2048}else{sock.stream.flags&=~2048}return 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(typeof sock.saddr!="undefined"||typeof sock.sport!="undefined"){throw new FS.ErrnoError(28)}sock.saddr=addr;sock.sport=port;if(sock.type===2){if(sock.server){sock.server.close();sock.server=null}try{sock.sock_ops.listen(sock,0)}catch(e){if(!(e.name==="ErrnoError"))throw e;if(e.errno!==138)throw e}}},connect(sock,addr,port){if(sock.server){throw new FS.ErrnoError(138)}if(typeof sock.daddr!="undefined"&&typeof sock.dport!="undefined"){var dest=SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport);if(dest){if(dest.socket.readyState===dest.socket.CONNECTING){throw new FS.ErrnoError(7)}else{throw new FS.ErrnoError(30)}}}var peer=SOCKFS.websocket_sock_ops.createPeer(sock,addr,port);sock.daddr=peer.addr;sock.dport=peer.port;sock.connecting=true},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;var host=sock.saddr;sock.server=new WebSocketServer({host,port:sock.sport});SOCKFS.emit("listen",sock.stream.fd);sock.server.on("connection",ws=>{if(sock.type===1){var newsock=SOCKFS.createSocket(sock.family,sock.type,sock.protocol);var 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)}else{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){if(!listensock.server||!listensock.pending.length){throw new FS.ErrnoError(28)}var newsock=listensock.pending.shift();newsock.stream.flags=listensock.stream.flags;return newsock},getname(sock,peer){var addr,port;if(peer){if(sock.daddr===undefined||sock.dport===undefined){throw new FS.ErrnoError(53)}addr=sock.daddr;port=sock.dport}else{addr=sock.saddr||0;port=sock.sport||0}return{addr,port}},sendmsg(sock,buffer,offset,length,addr,port){if(sock.type===2){if(addr===undefined||port===undefined){addr=sock.daddr;port=sock.dport}if(addr===undefined||port===undefined){throw new FS.ErrnoError(17)}}else{addr=sock.daddr;port=sock.dport}var dest=SOCKFS.websocket_sock_ops.getPeer(sock,addr,port);if(sock.type===1){if(!dest||dest.socket.readyState===dest.socket.CLOSING||dest.socket.readyState===dest.socket.CLOSED){throw new FS.ErrnoError(53)}}if(ArrayBuffer.isView(buffer)){offset+=buffer.byteOffset;buffer=buffer.buffer}var data=buffer.slice(offset,offset+length);if(!dest||dest.socket.readyState!==dest.socket.OPEN){if(sock.type===2){if(!dest||dest.socket.readyState===dest.socket.CLOSING||dest.socket.readyState===dest.socket.CLOSED){dest=SOCKFS.websocket_sock_ops.createPeer(sock,addr,port)}}dest.msg_send_queue.push(data);return length}try{dest.socket.send(data);return length}catch(e){throw new FS.ErrnoError(28)}},recvmsg(sock,length){if(sock.type===1&&sock.server){throw new FS.ErrnoError(53)}var queued=sock.recv_queue.shift();if(!queued){if(sock.type===1){var dest=SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport);if(!dest){throw new FS.ErrnoError(53)}if(dest.socket.readyState===dest.socket.CLOSING||dest.socket.readyState===dest.socket.CLOSED){return null}throw new FS.ErrnoError(6)}throw new FS.ErrnoError(6)}var queuedLength=queued.data.byteLength||queued.data.length;var queuedOffset=queued.data.byteOffset||0;var queuedBuffer=queued.data.buffer||queued.data;var bytesRead=Math.min(length,queuedLength);var res={buffer:new Uint8Array(queuedBuffer,queuedOffset,bytesRead),addr:queued.addr,port:queued.port};if(sock.type===1&&bytesRead{var socket=SOCKFS.getSocket(fd);if(!socket)throw new FS.ErrnoError(8);return socket};var inetPton4=str=>{var b=str.split(".");for(var 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};var inetPton6=str=>{var words;var w,offset,z;var valid6regx=/^((?=.*::)(?!.*::.+::)(::)?([\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;var parts=[];if(!valid6regx.test(str)){return null}if(str==="::"){return[0,0,0,0,0,0,0,0]}if(str.startsWith("::")){str=str.replace("::","Z:")}else{str=str.replace("::",":Z:")}if(str.indexOf(".")>0){str=str.replace(new RegExp("[.]","g"),":");words=str.split(":");words[words.length-4]=Number(words[words.length-4])+Number(words[words.length-3])*256;words[words.length-3]=Number(words[words.length-2])+Number(words[words.length-1])*256;words=words.slice(0,words.length-2)}else{words=str.split(":")}offset=0;z=0;for(w=0;wHEAPU8.fill(0,ptr,ptr+size);var writeSockaddr=(sa,family,addr,port,addrlen)=>{switch(family){case 2:addr=inetPton4(addr);zeroMemory(sa,16);if(addrlen){HEAP32[addrlen>>2]=16}HEAP16[sa>>1]=family;HEAP32[sa+4>>2]=addr;HEAP16[sa+2>>1]=_htons(port);break;case 10:addr=inetPton6(addr);zeroMemory(sa,28);if(addrlen){HEAP32[addrlen>>2]=28}HEAP32[sa>>2]=family;HEAP32[sa+8>>2]=addr[0];HEAP32[sa+12>>2]=addr[1];HEAP32[sa+16>>2]=addr[2];HEAP32[sa+20>>2]=addr[3];HEAP16[sa+2>>1]=_htons(port);break;default:return 5}return 0};var DNS={address_map:{id:1,addrs:{},names:{}},lookup_name(name){var res=inetPton4(name);if(res!==null){return name}res=inetPton6(name);if(res!==null){return name}var addr;if(DNS.address_map.addrs[name]){addr=DNS.address_map.addrs[name]}else{var id=DNS.address_map.id++;addr="172.29."+(id&255)+"."+(id&65280);DNS.address_map.names[addr]=name;DNS.address_map.addrs[name]=addr}return addr},lookup_addr(addr){if(DNS.address_map.names[addr]){return DNS.address_map.names[addr]}return null}};function ___syscall_accept4(fd,addr,addrlen,flags,d1,d2){try{var sock=getSocketFromFD(fd);var newsock=sock.sock_ops.accept(sock);if(addr){var errno=writeSockaddr(addr,newsock.family,DNS.lookup_name(newsock.daddr),newsock.dport,addrlen)}return newsock.stream.fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var inetNtop4=addr=>(addr&255)+"."+(addr>>8&255)+"."+(addr>>16&255)+"."+(addr>>24&255);var inetNtop6=ints=>{var str="";var word=0;var longest=0;var lastzero=0;var zstart=0;var len=0;var i=0;var parts=[ints[0]&65535,ints[0]>>16,ints[1]&65535,ints[1]>>16,ints[2]&65535,ints[2]>>16,ints[3]&65535,ints[3]>>16];var hasipv4=true;var v4part="";for(i=0;i<5;i++){if(parts[i]!==0){hasipv4=false;break}}if(hasipv4){v4part=inetNtop4(parts[6]|parts[7]<<16);if(parts[5]===-1){str="::ffff:";str+=v4part;return str}if(parts[5]===0){str="::";if(v4part==="0.0.0.0")v4part="";if(v4part==="0.0.0.1")v4part="1";str+=v4part;return str}}for(word=0;word<8;word++){if(parts[word]===0){if(word-lastzero>1){len=0}lastzero=word;len++}if(len>longest){longest=len;zstart=word-longest+1}}for(word=0;word<8;word++){if(longest>1){if(parts[word]===0&&word>=zstart&&word{var family=HEAP16[sa>>1];var port=_ntohs(HEAPU16[sa+2>>1]);var addr;switch(family){case 2:if(salen!==16){return{errno:28}}addr=HEAP32[sa+4>>2];addr=inetNtop4(addr);break;case 10:if(salen!==28){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,addr,port}};var getSocketAddress=(addrp,addrlen)=>{var info=readSockaddr(addrp,addrlen);if(info.errno)throw new FS.ErrnoError(info.errno);info.addr=DNS.lookup_addr(info.addr)||info.addr;return info};function ___syscall_bind(fd,addr,addrlen,d1,d2,d3){try{var sock=getSocketFromFD(fd);var info=getSocketAddress(addr,addrlen);sock.sock_ops.bind(sock,info.addr,info.port);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_connect(fd,addr,addrlen,d1,d2,d3){try{var sock=getSocketFromFD(fd);var info=getSocketAddress(addr,addrlen);sock.sock_ops.connect(sock,info.addr,info.port);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var UTF8ToString=(ptr,maxBytesToRead,ignoreNul)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead,ignoreNul):"";var SYSCALLS={currentUmask:18,calculateAt(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return dir+"/"+path},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();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();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);return 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(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},getStreamFromFD(fd){var stream=FS.getStreamChecked(fd);return stream},varargs:undefined,getStr(ptr){var ret=UTF8ToString(ptr);return ret}};function ___syscall_dup3(fd,newfd,flags){try{if(fd===newfd)return-28;if(flags&~524288)return-28;var old=SYSCALLS.getStreamFromFD(fd);if(newfd<0||newfd>=FS.MAX_OPEN_FDS)return-8;var existing=FS.getStream(newfd);if(existing)FS.close(existing);var stream=FS.dupStream(old,newfd);if(flags&524288){stream.flags|=524288}return stream.fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var syscallGetVarargI=()=>{var ret=HEAP32[+SYSCALLS.varargs>>2];SYSCALLS.varargs+=4;return ret};var syscallGetVarargP=syscallGetVarargI;function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=syscallGetVarargI();if(arg<0){return-28}while(FS.streams[arg]){arg++}var newStream;newStream=FS.dupStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=syscallGetVarargI();var mask=289792;stream.flags=stream.flags&~mask|arg&mask;return 0}case 12:{var arg=syscallGetVarargP();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0}return-28}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_fstat64(fd,buf){try{return SYSCALLS.writeStat(buf,FS.fstat(fd))}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);function ___syscall_getcwd(buf,size){try{if(size===0)return-28;var cwd=FS.cwd();var cwdLengthInBytes=lengthBytesUTF8(cwd)+1;if(size>2]=termios.c_iflag||0;HEAP32[argp+4>>2]=termios.c_oflag||0;HEAP32[argp+8>>2]=termios.c_cflag||0;HEAP32[argp+12>>2]=termios.c_lflag||0;for(var i=0;i<32;i++){HEAP8[argp+i+17]=termios.c_cc[i]||0}return 0}return 0}case 21510:case 21511:case 21512:{if(!stream.tty)return-59;return 0}case 21506:case 21507:case 21508:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcsets){var argp=syscallGetVarargP();var c_iflag=HEAP32[argp>>2];var c_oflag=HEAP32[argp+4>>2];var c_cflag=HEAP32[argp+8>>2];var c_lflag=HEAP32[argp+12>>2];var c_cc=[];for(var i=0;i<32;i++){c_cc.push(HEAP8[argp+i+17])}return stream.tty.ops.ioctl_tcsets(stream.tty,op,{c_iflag,c_oflag,c_cflag,c_lflag,c_cc})}return 0}case 21519:{if(!stream.tty)return-59;var argp=syscallGetVarargP();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21537:case 21531:{var argp=syscallGetVarargP();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tiocgwinsz){var winsize=stream.tty.ops.ioctl_tiocgwinsz(stream.tty);var argp=syscallGetVarargP();HEAP16[argp>>1]=winsize[0];HEAP16[argp+2>>1]=winsize[1]}return 0}case 21524:{if(!stream.tty)return-59;return 0}case 21515:{if(!stream.tty)return-59;return 0}default:return-28}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_listen(fd,backlog){try{var sock=getSocketFromFD(fd);sock.sock_ops.listen(sock,backlog);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_lstat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.writeStat(buf,FS.lstat(path))}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_newfstatat(dirfd,path,buf,flags){try{path=SYSCALLS.getStr(path);var nofollow=flags&256;var allowEmpty=flags&4096;flags=flags&~6400;path=SYSCALLS.calculateAt(dirfd,path,allowEmpty);return SYSCALLS.writeStat(buf,nofollow?FS.lstat(path):FS.stat(path))}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?syscallGetVarargI():0;if(flags&64){mode&=~SYSCALLS.currentUmask}return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var PIPEFS={BUCKET_BUFFER_SIZE:8192,mount(mount){return FS.createNode(null,"/",16384|511,0)},createPipe(){var pipe={buckets:[],refcnt:2,timestamp:new Date};pipe.buckets.push({buffer:new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE),offset:0,roffset:0});var rName=PIPEFS.nextname();var wName=PIPEFS.nextname();var rNode=FS.createNode(PIPEFS.root,rName,4096,0);var wNode=FS.createNode(PIPEFS.root,wName,4096,0);rNode.pipe=pipe;wNode.pipe=pipe;var readableStream=FS.createStream({path:rName,node:rNode,flags:0,seekable:false,stream_ops:PIPEFS.stream_ops});rNode.stream=readableStream;var writableStream=FS.createStream({path:wName,node:wNode,flags:1,seekable:false,stream_ops:PIPEFS.stream_ops});wNode.stream=writableStream;return{readable_fd:readableStream.fd,writable_fd:writableStream.fd}},stream_ops:{getattr(stream){var node=stream.node;var timestamp=node.pipe.timestamp;return{dev:14,ino:node.id,mode:4480,nlink:1,uid:0,gid:0,rdev:0,size:0,atime:timestamp,mtime:timestamp,ctime:timestamp,blksize:4096,blocks:0}},poll(stream,timeout,notifyCallback){var pipe=stream.node.pipe;if((stream.flags&2097155)===1){return 256|4}for(var bucket of pipe.buckets){if(bucket.offset-bucket.roffset>0){return 64|1}}return 0},dup(stream){stream.node.pipe.refcnt++},ioctl(stream,request,argp){if(request==21531){var pipe=stream.node.pipe;var currentLength=0;for(var bucket of pipe.buckets){currentLength+=bucket.offset-bucket.roffset}HEAP32[argp>>2]=currentLength;return 0}return 28},fsync(stream){return 28},read(stream,buffer,offset,length,position){var pipe=stream.node.pipe;var currentLength=0;for(var bucket of pipe.buckets){currentLength+=bucket.offset-bucket.roffset}var data=buffer.subarray(offset,offset+length);if(length<=0){return 0}if(currentLength==0){throw new FS.ErrnoError(6)}var toRead=Math.min(currentLength,length);var totalRead=toRead;var toRemove=0;for(var bucket of pipe.buckets){var bucketSize=bucket.offset-bucket.roffset;if(toRead<=bucketSize){var tmpSlice=bucket.buffer.subarray(bucket.roffset,bucket.offset);if(toRead=dataLen){currBucket.buffer.set(data,currBucket.offset);currBucket.offset+=dataLen;return dataLen}else if(freeBytesInCurrBuffer>0){currBucket.buffer.set(data.subarray(0,freeBytesInCurrBuffer),currBucket.offset);currBucket.offset+=freeBytesInCurrBuffer;data=data.subarray(freeBytesInCurrBuffer,data.byteLength)}var numBuckets=data.byteLength/PIPEFS.BUCKET_BUFFER_SIZE|0;var remElements=data.byteLength%PIPEFS.BUCKET_BUFFER_SIZE;for(var i=0;i0){var newBucket={buffer:new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE),offset:data.byteLength,roffset:0};pipe.buckets.push(newBucket);newBucket.buffer.set(data)}return dataLen},close(stream){var pipe=stream.node.pipe;pipe.refcnt--;if(pipe.refcnt===0){pipe.buckets=null}}},nextname(){if(!PIPEFS.nextname.current){PIPEFS.nextname.current=0}return"pipe["+PIPEFS.nextname.current+++"]"}};function ___syscall_pipe2(fdPtr,flags){try{if(fdPtr==0){throw new FS.ErrnoError(21)}var validFlags=524288|2048;if(flags&~validFlags){throw new FS.ErrnoError(138)}var res=PIPEFS.createPipe();if(flags&2048){FS.getStream(res.readable_fd).flags|=2048;FS.getStream(res.writable_fd).flags|=2048}HEAP32[fdPtr>>2]=res.readable_fd;HEAP32[fdPtr+4>>2]=res.writable_fd;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_renameat(olddirfd,oldpath,newdirfd,newpath){try{oldpath=SYSCALLS.getStr(oldpath);newpath=SYSCALLS.getStr(newpath);oldpath=SYSCALLS.calculateAt(olddirfd,oldpath);newpath=SYSCALLS.calculateAt(newdirfd,newpath);FS.rename(oldpath,newpath);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_socket(domain,type,protocol){try{var sock=SOCKFS.createSocket(domain,type,protocol);return sock.stream.fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.writeStat(buf,FS.stat(path))}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_unlinkat(dirfd,path,flags){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(!flags){FS.unlink(path)}else if(flags===512){FS.rmdir(path)}else{return-28}return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var __emscripten_lookup_name=name=>{var nameString=UTF8ToString(name);return inetPton4(DNS.lookup_name(nameString))};var __emscripten_throw_longjmp=()=>{throw new EmscriptenSjLj};var _emscripten_get_now=()=>performance.now();var _emscripten_date_now=()=>Date.now();var nowIsMonotonic=1;var checkWasiClock=clock_id=>clock_id>=0&&clock_id<=3;var INT53_MAX=9007199254740992;var INT53_MIN=-9007199254740992;var bigintToI53Checked=num=>numINT53_MAX?NaN:Number(num);function _clock_time_get(clk_id,ignored_precision,ptime){ignored_precision=bigintToI53Checked(ignored_precision);if(!checkWasiClock(clk_id)){return 28}var now;if(clk_id===0){now=_emscripten_date_now()}else if(nowIsMonotonic){now=_emscripten_get_now()}else{return 52}var nsec=Math.round(now*1e3*1e3);HEAP64[ptime>>3]=BigInt(nsec);return 0}var getHeapMax=()=>2147483648;var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var growMemory=size=>{var oldHeapSize=wasmMemory.buffer.byteLength;var pages=(size-oldHeapSize+65535)/65536|0;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignMemory(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var ENV={};var getExecutableName=()=>thisProgram;var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(globalThis.navigator?.language??"C").replace("-","_")+".UTF-8";var env={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:lang,_:getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var _environ_get=(__environ,environ_buf)=>{var bufSize=0;var envp=0;for(var string of getEnvStrings()){var ptr=environ_buf+bufSize;HEAPU32[__environ+envp>>2]=ptr;bufSize+=stringToUTF8(string,ptr,Infinity)+1;envp+=4}return 0};var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;for(var string of strings){bufSize+=lengthBytesUTF8(string)+1}HEAPU32[penviron_buf_size>>2]=bufSize;return 0};var runtimeKeepaliveCounter=0;var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){Module["onExit"]?.(code);ABORT=true}quit_(code,new ExitStatus(code))};var exitJS=(status,implicit)=>{EXITSTATUS=status;_proc_exit(status)};var _exit=exitJS;function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _fd_fdstat_get(fd,pbuf){try{var rightsBase=0;var rightsInheriting=0;var flags=0;{var stream=SYSCALLS.getStreamFromFD(fd);var type=stream.tty?2:FS.isDir(stream.mode)?3:FS.isLink(stream.mode)?7:4}HEAP8[pbuf]=type;HEAP16[pbuf+2>>1]=flags;HEAP64[pbuf+8>>3]=BigInt(rightsBase);HEAP64[pbuf+16>>3]=BigInt(rightsInheriting);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doReadv=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _fd_seek(fd,offset,whence,newOffset){offset=bigintToI53Checked(offset);try{if(isNaN(offset))return 22;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);HEAP64[newOffset>>3]=BigInt(stream.position);if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doWritev=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _js_lumbda_bend_call(payload_ptr,payload_len,resp_buf,resp_cap){var bendUrl=globalThis._lumbdaCBendUrl;if(!bendUrl){var msg="no bend URL configured";var n=Math.min(msg.length,resp_cap-1);for(var i=0;i{var func=wasmTableMirror[funcPtr];if(!func){wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func};var getCFunc=ident=>{var func=Module["_"+ident];return func};var writeArrayToMemory=(array,buffer)=>{HEAP8.set(array,buffer)};var stackAlloc=sz=>__emscripten_stack_alloc(sz);var stringToUTF8OnStack=str=>{var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8(str,ret,size);return ret};var ccall=(ident,returnType,argTypes,args,opts)=>{var toC={string:str=>{var ret=0;if(str!==null&&str!==undefined&&str!==0){ret=stringToUTF8OnStack(str)}return ret},array:arr=>{var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType==="string"){return UTF8ToString(ret)}if(returnType==="boolean")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i{var numericArgs=!argTypes||argTypes.every(type=>type==="number"||type==="boolean");var numericRet=returnType!=="string";if(numericRet&&numericArgs&&!opts){return getCFunc(ident)}return(...args)=>ccall(ident,returnType,argTypes,args,opts)};FS.createPreloadedFile=FS_createPreloadedFile;FS.preloadFile=FS_preloadFile;FS.staticInit();{if(Module["noExitRuntime"])noExitRuntime=Module["noExitRuntime"];if(Module["preloadPlugins"])preloadPlugins=Module["preloadPlugins"];if(Module["print"])out=Module["print"];if(Module["printErr"])err=Module["printErr"];if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];if(Module["arguments"])programArgs=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].shift()()}}}Module["ccall"]=ccall;Module["cwrap"]=cwrap;Module["UTF8ToString"]=UTF8ToString;Module["stringToUTF8"]=stringToUTF8;Module["lengthBytesUTF8"]=lengthBytesUTF8;var _malloc,_free,_htons,_lumbda_wasm_init,_lumbda_wasm_eval,_lumbda_wasm_free_result,_ntohs,_setThrew,__emscripten_stack_restore,__emscripten_stack_alloc,_emscripten_stack_get_current,memory,__indirect_function_table,wasmMemory,wasmTable;function assignWasmExports(wasmExports){_malloc=Module["_malloc"]=wasmExports["malloc"];_free=Module["_free"]=wasmExports["free"];_htons=wasmExports["htons"];_lumbda_wasm_init=Module["_lumbda_wasm_init"]=wasmExports["lumbda_wasm_init"];_lumbda_wasm_eval=Module["_lumbda_wasm_eval"]=wasmExports["lumbda_wasm_eval"];_lumbda_wasm_free_result=Module["_lumbda_wasm_free_result"]=wasmExports["lumbda_wasm_free_result"];_ntohs=wasmExports["ntohs"];_setThrew=wasmExports["setThrew"];__emscripten_stack_restore=wasmExports["_emscripten_stack_restore"];__emscripten_stack_alloc=wasmExports["_emscripten_stack_alloc"];_emscripten_stack_get_current=wasmExports["emscripten_stack_get_current"];memory=wasmMemory=wasmExports["memory"];__indirect_function_table=wasmTable=wasmExports["__indirect_function_table"]}var wasmImports={__syscall_accept4:___syscall_accept4,__syscall_bind:___syscall_bind,__syscall_connect:___syscall_connect,__syscall_dup3:___syscall_dup3,__syscall_fcntl64:___syscall_fcntl64,__syscall_fstat64:___syscall_fstat64,__syscall_getcwd:___syscall_getcwd,__syscall_ioctl:___syscall_ioctl,__syscall_listen:___syscall_listen,__syscall_lstat64:___syscall_lstat64,__syscall_newfstatat:___syscall_newfstatat,__syscall_openat:___syscall_openat,__syscall_pipe2:___syscall_pipe2,__syscall_renameat:___syscall_renameat,__syscall_socket:___syscall_socket,__syscall_stat64:___syscall_stat64,__syscall_unlinkat:___syscall_unlinkat,_emscripten_lookup_name:__emscripten_lookup_name,_emscripten_throw_longjmp:__emscripten_throw_longjmp,clock_time_get:_clock_time_get,emscripten_get_now:_emscripten_get_now,emscripten_resize_heap:_emscripten_resize_heap,environ_get:_environ_get,environ_sizes_get:_environ_sizes_get,exit:_exit,fd_close:_fd_close,fd_fdstat_get:_fd_fdstat_get,fd_read:_fd_read,fd_seek:_fd_seek,fd_write:_fd_write,invoke_i,invoke_ii,invoke_iii,invoke_iiii,invoke_iiiii,invoke_iiiiiiiiii,invoke_iiiiijiiiii,invoke_iiiijii,invoke_iiij,invoke_iiijiii,invoke_iijj,invoke_ij,invoke_iji,invoke_ijj,invoke_ji,invoke_jii,invoke_jiii,invoke_jij,invoke_jj,invoke_jji,invoke_jjii,invoke_jjiii,invoke_jjj,invoke_jjjjjjj,invoke_v,invoke_vi,invoke_vii,invoke_viii,invoke_viiii,invoke_viiiii,invoke_viiji,invoke_vij,invoke_vijj,invoke_vjii,invoke_vjiii,js_lumbda_bend_call:_js_lumbda_bend_call,proc_exit:_proc_exit};function invoke_jij(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_vii(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_jji(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_iiiijii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_jjiii(index,a1,a2,a3,a4){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_ijj(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_iji(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_vij(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_ij(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_iiijiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_vijj(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_iijj(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_jjii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_jj(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_jiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_vjii(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_iii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_ji(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_jjj(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_jjjjjjj(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_jii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_iiij(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_vjiii(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_iiiiijiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_viiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_viiji(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_iiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function run(){if(runDependencies>0){dependenciesFulfilled=run;return}preRun();if(runDependencies>0){dependenciesFulfilled=run;return}function doRun(){Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve?.(Module);Module["onRuntimeInitialized"]?.();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(()=>{setTimeout(()=>Module["setStatus"](""),1);doRun()},1)}else{doRun()}}var wasmExports;wasmExports=await (createWasm());run();if(runtimeInitialized){moduleRtn=Module}else{moduleRtn=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject})} ;return moduleRtn}export default createLumbdaC; diff --git a/wasm/dist-repl/c/lumbda-c.loader.js b/wasm/dist-repl/c/lumbda-c.loader.js index 71b0e54..64e78c2 100644 --- a/wasm/dist-repl/c/lumbda-c.loader.js +++ b/wasm/dist-repl/c/lumbda-c.loader.js @@ -27,6 +27,12 @@ async function _bootstrap() { _init(); + // /tmp must exist before (portal-snapshot! ...) writes there — the + // C builtin fopen("w")s the path directly so a missing dir is a + // hard error. Emscripten's MEMFS gives us /tmp on recent versions + // but make it idempotent. + try { module.FS.mkdir("/tmp"); } catch (e) { /* exists */ } + // bend!-call host bridge — js_lumbda_bend_call inside the wasm // (EM_JS in lumbda_wasm_entry.c) reads globalThis._lumbdaCBendUrl // for the destination, then does sync XHR POST and writes the @@ -34,6 +40,22 @@ async function _bootstrap() { // global so runner.js can propagate a saved playground URL. return { setBendUrl(url) { globalThis._lumbdaCBendUrl = url || null; }, + // portalSave / portalLoad bridge MEMFS to the JS side so the + // REPL can persist checkpoints to the encrypted vault and + // restore them on a fresh worker. Names come from the worker + // (REPL caller validates alphanumeric) so path traversal isn't + // a concern. + portalSave(name) { + const path = `/tmp/${name}.portal`; + try { + const bytes = module.FS.readFile(path); + return new TextDecoder().decode(bytes); + } catch (e) { return null; } + }, + portalLoad(name, blob) { + const path = `/tmp/${name}.portal`; + module.FS.writeFile(path, blob); + }, async evalLisp(src) { outBuf = []; errBuf = []; diff --git a/wasm/dist-repl/c/lumbda-c.wasm b/wasm/dist-repl/c/lumbda-c.wasm index 961ed9abb1c723b0cb4ff58d6d9d5c8ee11e16a5..9d5fad2f70701c339d761f76f6605d7abfce4df3 100755 GIT binary patch delta 96623 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 diff --git a/www/playground/c/lumbda-c.js b/www/playground/c/lumbda-c.js index 7e9d5de..0f020e1 100644 --- a/www/playground/c/lumbda-c.js +++ b/www/playground/c/lumbda-c.js @@ -1,2 +1,2 @@ -async function createLumbdaC(moduleArg={}){var moduleRtn;var Module=moduleArg;var ENVIRONMENT_IS_WEB=!!globalThis.window;var ENVIRONMENT_IS_WORKER=!!globalThis.WorkerGlobalScope;var ENVIRONMENT_IS_NODE=globalThis.process?.versions?.node&&globalThis.process?.type!="renderer";if(ENVIRONMENT_IS_NODE){const{createRequire}=await import("node:module");var require=createRequire(import.meta.url)}var programArgs=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var _scriptName=import.meta.url;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var readAsync,readBinary;if(ENVIRONMENT_IS_NODE){var fs=require("node:fs");if(_scriptName.startsWith("file:")){scriptDirectory=require("node:path").dirname(require("node:url").fileURLToPath(_scriptName))+"/"}readBinary=filename=>{filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename);return ret};readAsync=async(filename,binary=true)=>{filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename,binary?undefined:"utf8");return ret};if(process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}programArgs=process.argv.slice(2);quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){try{scriptDirectory=new URL(".",_scriptName).href}catch{}{if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=async url=>{var response=await fetch(url,{credentials:"same-origin"});if(response.ok){return response.arrayBuffer()}throw new Error(response.status+" : "+response.url)}}}else{}var out=console.log.bind(console);var err=console.error.bind(console);var wasmBinary;var ABORT=false;var EXITSTATUS;var isFileURI=filename=>filename.startsWith("file://");class EmscriptenEH{}class EmscriptenSjLj extends EmscriptenEH{}var readyPromiseResolve,readyPromiseReject;var runtimeInitialized=false;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 preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(onPreRuns)}function initRuntime(){runtimeInitialized=true;SOCKFS.root=FS.mount(SOCKFS,{},null);if(!Module["noFSInit"]&&!FS.initialized)FS.init();TTY.init();PIPEFS.root=FS.mount(PIPEFS,{},null);wasmExports["__wasm_call_ctors"]();FS.ignorePermissions=false}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(onPostRuns)}function abort(what){Module["onAbort"]?.(what);what=`Aborted(${what})`;err(what);ABORT=true;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject?.(e);throw e}var wasmBinaryFile;function findWasmBinary(){if(Module["locateFile"]){return locateFile("lumbda-c.wasm")}return new URL("lumbda-c.wasm",import.meta.url).href}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}async function getWasmBinary(binaryFile){if(!wasmBinary){try{var response=await readAsync(binaryFile);return new Uint8Array(response)}catch{}}return getBinarySync(binaryFile)}async function instantiateArrayBuffer(binaryFile,imports){try{var binary=await getWasmBinary(binaryFile);var instance=await WebAssembly.instantiate(binary,imports);return instance}catch(reason){err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)}}async function instantiateAsync(binary,binaryFile,imports){if(!binary&&!ENVIRONMENT_IS_NODE){try{var response=fetch(binaryFile,{credentials:"same-origin"});var instantiationResult=await WebAssembly.instantiateStreaming(response,imports);return instantiationResult}catch(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation")}}return instantiateArrayBuffer(binaryFile,imports)}function getWasmImports(){var imports={env:wasmImports,wasi_snapshot_preview1:wasmImports};return imports}async function createWasm(){function receiveInstance(instance,module){wasmExports=instance.exports;assignWasmExports(wasmExports);updateMemoryViews();return wasmExports}function receiveInstantiationResult(result){return receiveInstance(result["instance"])}var info=getWasmImports();if(Module["instantiateWasm"]){return new Promise((resolve,reject)=>{Module["instantiateWasm"](info,(inst,mod)=>{resolve(receiveInstance(inst,mod))})})}wasmBinaryFile??=findWasmBinary();var result=await instantiateAsync(wasmBinary,wasmBinaryFile,info);var exports=receiveInstantiationResult(result);return exports}class ExitStatus{name="ExitStatus";constructor(status){this.message=`Program terminated with exit(${status})`;this.status=status}}var HEAP16;var HEAP32;var HEAP64;var HEAP8;var HEAPF32;var HEAPF64;var HEAPU16;var HEAPU32;var HEAPU64;var HEAPU8;var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var onPostRuns=[];var addOnPostRun=cb=>onPostRuns.push(cb);var onPreRuns=[];var addOnPreRun=cb=>onPreRuns.push(cb);var noExitRuntime=true;var stackRestore=val=>__emscripten_stack_restore(val);var stackSave=()=>_emscripten_stack_get_current();var initRandomFill=()=>{if(ENVIRONMENT_IS_NODE){var nodeCrypto=require("node:crypto");return view=>nodeCrypto.randomFillSync(view)}return view=>(crypto.getRandomValues(view),0)};var randomFill=view=>(randomFill=initRandomFill())(view);var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.slice(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.slice(0,-1)}return root+dir},basename:path=>path&&path.match(/([^\/]+|\/)\/*$/)[1],join:(...paths)=>PATH.normalize(paths.join("/")),join2:(l,r)=>PATH.normalize(l+"/"+r)};var PATH_FS={resolve:(...args)=>{var resolvedPath="",resolvedAbsolute=false;for(var i=args.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?args[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).slice(1);to=PATH_FS.resolve(to).slice(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i{var maxIdx=idx+maxBytesToRead;if(ignoreNul)return maxIdx;while(heapOrArray[idx]&&!(idx>=maxIdx))++idx;return idx};var UTF8ArrayToString=(heapOrArray,idx=0,maxBytesToRead,ignoreNul)=>{var endPtr=findStringEnd(heapOrArray,idx,maxBytesToRead,ignoreNul);if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str};var FS_stdin_getChar_buffer=[];var lengthBytesUTF8=str=>{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63;i++}}heap[outIdx]=0;return outIdx-startIdx};var intArrayFromString=(stringy,dontAddNull,length)=>{var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array};var FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc(BUFSIZE);var bytesRead=0;var fd=process.stdin.fd;try{bytesRead=fs.readSync(fd,buf,0,BUFSIZE)}catch(e){if(e.toString().includes("EOF"))bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}}else if(globalThis.window?.prompt){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else{}if(!result){return null}FS_stdin_getChar_buffer=intArrayFromString(result,true)}return FS_stdin_getChar_buffer.shift()};var TTY={ttys:[],init(){},shutdown(){},register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close(stream){stream.tty.ops.fsync(stream.tty)},fsync(stream){stream.tty.ops.fsync(stream.tty)},read(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){out(UTF8ArrayToString(tty.output));tty.output=[]}},ioctl_tcgets(tty){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(tty,optional_actions,data){return 0},ioctl_tiocgwinsz(tty){return[24,80]}},default_tty1_ops:{put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync(tty){if(tty.output?.length>0){err(UTF8ArrayToString(tty.output));tty.output=[]}}}};var mmapAlloc=size=>{abort()};var 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}};var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=MEMFS.emptyFileContents??=new Uint8Array(0)}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.atime=node.mtime=node.ctime=Date.now();if(parent){parent.contents[name]=node;parent.atime=parent.mtime=parent.ctime=node.atime}return node},getFileDataAsTypedArray(node){return node.contents.subarray(0,node.usedBytes)},expandFileStorage(node,newCapacity){var prevCapacity=node.contents.length;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity)newCapacity=Math.max(newCapacity,256);var oldContents=MEMFS.getFileDataAsTypedArray(node);node.contents=new Uint8Array(newCapacity);node.contents.set(oldContents)},resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;var 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={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.atime);attr.mtime=new Date(node.mtime);attr.ctime=new Date(node.ctime);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr(node,attr){for(const key of["mode","atime","mtime","ctime"]){if(attr[key]!=null){node[key]=attr[key]}}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup(parent,name){if(!MEMFS.doesNotExistError){MEMFS.doesNotExistError=new FS.ErrnoError(44);MEMFS.doesNotExistError.stack=""}throw 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;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){var node=FS.lookupNode(parent,name);for(var i in node.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){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);buffer.set(contents.subarray(position,position+size),offset);return size},write(stream,buffer,offset,length,position,canOwn){if(buffer.buffer===HEAP8.buffer){canOwn=false}if(!length)return 0;var node=stream.node;node.mtime=node.ctime=Date.now();if(canOwn){node.contents=buffer.subarray(offset,offset+length);node.usedBytes=length}else if(node.usedBytes===0&&position===0){node.contents=buffer.slice(offset,offset+length);node.usedBytes=length}else{MEMFS.expandFileStorage(node,position+length);node.contents.set(buffer.subarray(offset,offset+length),position);node.usedBytes=Math.max(node.usedBytes,position+length)}return length},llseek(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.usedBytes}}if(position<0){throw new FS.ErrnoError(28)}return position},mmap(stream,length,position,prot,flags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}var ptr;var allocated;var contents=stream.node.contents;if(!(flags&2)&&contents.buffer===HEAP8.buffer){allocated=false;ptr=contents.byteOffset}else{allocated=true;ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}if(contents){if(position>0||position+length{if(typeof str!="string")return str;var flagModes={r:0,"r+":2,w:512|64|1,"w+":512|64|2,a:1024|64|1,"a+":1024|64|2};var flags=flagModes[str];if(typeof flags=="undefined"){throw new Error(`Unknown file open mode: ${str}`)}return flags};var FS_fileDataToTypedArray=data=>{if(typeof data=="string"){data=intArrayFromString(data,true)}if(!data.subarray){data=new Uint8Array(data)}return data};var FS_getMode=(canRead,canWrite)=>{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode};var asyncLoad=async url=>{var arrayBuffer=await readAsync(url);return new Uint8Array(arrayBuffer)};var FS_createDataFile=(...args)=>FS.createDataFile(...args);var getUniqueRunDependency=id=>id;var runDependencies=0;var dependenciesFulfilled=null;var removeRunDependency=id=>{runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);if(runDependencies==0){if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}};var addRunDependency=id=>{runDependencies++;Module["monitorRunDependencies"]?.(runDependencies)};var preloadPlugins=[];var FS_handledByPreloadPlugin=async(byteArray,fullname)=>{if(typeof Browser!="undefined")Browser.init();for(var plugin of preloadPlugins){if(plugin["canHandle"](fullname)){return plugin["handle"](byteArray,fullname)}}return byteArray};var FS_preloadFile=async(parent,name,url,canRead,canWrite,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);addRunDependency(dep);try{var byteArray=url;if(typeof url=="string"){byteArray=await asyncLoad(url)}byteArray=await FS_handledByPreloadPlugin(byteArray,fullname);preFinish?.();if(!dontCreateFile){FS_createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}}finally{removeRunDependency(dep)}};var 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)};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,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(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(val){this.shared.flags=val}get position(){return this.shared.position}set position(val){this.shared.position=val}},FSNode:class{node_ops={};stream_ops={};readMode=292|73;writeMode=146;mounted=null;constructor(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;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??=true;if(!PATH.isAbs(path)){path=FS.cwd()+"/"+path}linkloop:for(var nlinks=0;nlinks<40;nlinks++){var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i>>0)%FS.nameTable.length},hashAddNode(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode(node){FS.hashRemoveNode(node)},isRoot(node){return node===node.parent},isMountpoint(node){return!!node.mounted},isFile(mode){return(mode&61440)===32768},isDir(mode){return(mode&61440)===16384},isLink(mode){return(mode&61440)===40960},isChrdev(mode){return(mode&61440)===8192},isBlkdev(mode){return(mode&61440)===24576},isFIFO(mode){return(mode&61440)===4096},isSocket(mode){return(mode&49152)===49152},flagsToPermissionString(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions(node,perms){if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}if(perms.includes("w")&&!(node.mode&146)){return 2}if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup(dir){if(!FS.isDir(dir.mode))return 54;var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate(dir,name){if(!FS.isDir(dir.mode)){return 54}try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else if(FS.isDir(node.mode)){return 31}return 0},mayOpen(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}var mode=FS.flagsToPermissionString(flags);if(FS.isDir(node.mode)){if(mode!=="r"||flags&(512|64)){return 31}}return FS.nodePermissions(node,mode)},checkOpExists(op,err){if(!op){throw new FS.ErrnoError(err)}return op},MAX_OPEN_FDS:4096,nextfd(){for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStreamChecked(fd){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}return stream},getStream:fd=>FS.streams[fd],createStream(stream,fd=-1){stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream(fd){FS.streams[fd]=null},dupStream(origStream,fd=-1){var stream=FS.createStream(origStream,fd);stream.stream_ops?.dup?.(stream);return stream},doSetAttr(stream,node,attr){var setattr=stream?.stream_ops.setattr;var arg=setattr?stream:node;setattr??=node.node_ops.setattr;FS.checkOpExists(setattr,63);try{setattr(arg,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=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push(...m.mounts)}return mounts},syncfs(populate,callback){if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}for(var mount of mounts){if(mount.type.syncfs){mount.type.syncfs(mount,populate,done)}else{done(null)}}},mount(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type,opts,mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);for(var[hash,current]of Object.entries(FS.nameTable)){while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}}node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup(parent,name){return parent.node_ops.lookup(parent,name)},mknod(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name){throw new FS.ErrnoError(28)}if(name==="."||name===".."){throw new FS.ErrnoError(20)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},statfs(path){return FS.statfsNode(FS.lookupPath(path,{follow:true}).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};if(node.node_ops.statfs){Object.assign(rtn,node.node_ops.statfs(node.mount.opts.root))}return rtn},create(path,mode=438){mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir(path,mode=511){mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree(path,mode){var dirs=path.split("/");var d="";for(var dir of dirs){if(!dir)continue;if(d||PATH.isAbs(path))d+="/";d+=dir;try{FS.mkdir(d,mode)}catch(e){if(e.errno!=20)throw e}}},mkdev(path,mode,dev){if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink(oldpath,newpath){if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name);old_node.parent=new_dir}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;var readdir=FS.checkOpExists(node.node_ops.readdir,54);return readdir(node)},unlink(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return link.node_ops.readlink(link)},stat(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;var getattr=FS.checkOpExists(node.node_ops.getattr,63);return getattr(node)},fstat(fd){var stream=FS.getStreamChecked(fd);var node=stream.node;var getattr=stream.stream_ops.getattr;var arg=getattr?stream:node;getattr??=node.node_ops.getattr;FS.checkOpExists(getattr,63);return getattr(arg)},lstat(path){return FS.stat(path,true)},doChmod(stream,node,mode,dontFollow){FS.doSetAttr(stream,node,{mode:mode&4095|node.mode&~4095,ctime:Date.now(),dontFollow})},chmod(path,mode,dontFollow){var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}FS.doChmod(null,node,mode,dontFollow)},lchmod(path,mode){FS.chmod(path,mode,true)},fchmod(fd,mode){var stream=FS.getStreamChecked(fd);FS.doChmod(stream,stream.node,mode,false)},doChown(stream,node,dontFollow){FS.doSetAttr(stream,node,{timestamp:Date.now(),dontFollow})},chown(path,uid,gid,dontFollow){var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}FS.doChown(null,node,dontFollow)},lchown(path,uid,gid){FS.chown(path,uid,gid,true)},fchown(fd,uid,gid){var stream=FS.getStreamChecked(fd);FS.doChown(stream,stream.node,false)},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)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}FS.doTruncate(null,node,len)},ftruncate(fd,len){var stream=FS.getStreamChecked(fd);if(len<0||(stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.doTruncate(stream,stream.node,len)},utime(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;var setattr=FS.checkOpExists(node.node_ops.setattr,63);setattr(node,{atime,mtime})},open(path,flags,mode=438){if(path===""){throw new FS.ErrnoError(44)}flags=FS_modeStringToFlags(flags);if(flags&64){mode=mode&4095|32768}else{mode=0}var node;var isDirPath;if(typeof path=="object"){node=path}else{isDirPath=path.endsWith("/");var lookup=FS.lookupPath(path,{follow:!(flags&131072),noent_okay:true});node=lookup.node;path=lookup.path}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else if(isDirPath){throw new FS.ErrnoError(31)}else{node=FS.mknod(path,mode|511,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node,path:FS.getPath(node),flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(created){FS.chmod(node,mode&511)}return stream},close(stream){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed(stream){return stream.fd===null},llseek(stream,offset,whence){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},mmap(stream,length,position,prot,flags){if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}if(!length){throw new FS.ErrnoError(28)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync(stream,buffer,offset,length,mmapFlags){if(!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},ioctl(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile(path,opts={}){opts.flags=opts.flags??0;opts.encoding=opts.encoding??"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){abort(`Invalid encoding type "${opts.encoding}"`)}var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){buf=UTF8ArrayToString(buf)}FS.close(stream);return buf},writeFile(path,data,opts={}){opts.flags=opts.flags??577;var stream=FS.open(path,opts.flags,opts.mode);data=FS_fileDataToTypedArray(data);FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn);FS.close(stream)},cwd:()=>FS.currentPath,chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length,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;var randomByte=()=>{if(randomLeft===0){randomFill(randomBuffer);randomLeft=randomBuffer.byteLength}return randomBuffer[--randomLeft]};FS.createDevice("/dev","random",randomByte);FS.createDevice("/dev","urandom",randomByte);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount(){var node=FS.createNode(proc_self,"fd",16895,73);node.stream_ops={llseek:MEMFS.stream_ops.llseek};node.node_ops={lookup(parent,name){var fd=+name;var stream=FS.getStreamChecked(fd);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path},id:fd+1};ret.parent=ret;return ret},readdir(){return Array.from(FS.streams.entries()).filter(([k,v])=>v).map(([k,v])=>k.toString())}};return node}},{},"/proc/self/fd")},createStandardStreams(input,output,error){if(input){FS.createDevice("/dev","stdin",input)}else{FS.symlink("/dev/tty","/dev/stdin")}if(output){FS.createDevice("/dev","stdout",null,output)}else{FS.symlink("/dev/tty","/dev/stdout")}if(error){FS.createDevice("/dev","stderr",null,error)}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},staticInit(){FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={MEMFS}},init(input,output,error){FS.initialized=true;input??=Module["stdin"];output??=Module["stdout"];error??=Module["stderr"];FS.createStandardStreams(input,output,error)},quit(){FS.initialized=false;for(var stream of FS.streams){if(stream){FS.close(stream)}}},findObject(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);if(!ret.exists){return null}return ret.object},analyzePath(path,dontResolveLastLink){try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath(parent,path,canRead,canWrite){parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){if(e.errno!=20)throw e}parent=current}return current},createFile(parent,name,properties,canRead,canWrite){var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile(parent,name,data,canRead,canWrite,canOwn){var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS_getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){data=FS_fileDataToTypedArray(data);FS.chmod(node,mode|146);var stream=FS.open(node,577);FS.write(stream,data,0,data.length,0,canOwn);FS.close(stream);FS.chmod(node,mode)}},createDevice(parent,name,input,output){var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(!!input,!!output);FS.createDevice.major??=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open(stream){stream.seekable=false},close(stream){if(output?.buffer?.length){output(10)}},read(stream,buffer,offset,length,pos){var bytesRead=0;for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]}setDataGetter(getter){this.getter=getter}cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))abort("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)abort(`invalid range (${from}, ${to}) or no bytes requested!`);if(to>datalength-1)abort(`only ${datalength} bytes available! programmer error!`);var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))abort("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText??"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")abort("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true}get length(){if(!this.lengthKnown){this.cacheLength()}return this._length}get chunkSize(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}if(globalThis.XMLHttpRequest){if(!ENVIRONMENT_IS_WORKER)abort("Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc");var lazyArray=new LazyUint8Array;var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};for(const[key,fn]of Object.entries(node.stream_ops)){stream_ops[key]=(...args)=>{FS.forceLoadFile(node);return fn(...args)}}function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr,allocated:true}};node.stream_ops=stream_ops;return node}};var SOCKFS={websocketArgs:{},callbacks:{},on(event,callback){SOCKFS.callbacks[event]=callback},emit(event,param){SOCKFS.callbacks[event]?.(param)},mount(mount){SOCKFS.websocketArgs=Module["websocket"]||{};(Module["websocket"]??={})["on"]=SOCKFS.on;return FS.createNode(null,"/",16895,0)},createSocket(family,type,protocol){if(family!=2){throw new FS.ErrnoError(5)}type&=~526336;if(type!=1&&type!=2){throw new FS.ErrnoError(28)}var streaming=type==1;if(streaming&&protocol&&protocol!=6){throw new FS.ErrnoError(66)}var sock={family,type,protocol,server:null,error:null,peers:{},pending:[],recv_queue:[],sock_ops:SOCKFS.websocket_sock_ops};var name=SOCKFS.nextname();var node=FS.createNode(SOCKFS.root,name,49152,0);node.sock=sock;var stream=FS.createStream({path:name,node,flags:2,seekable:false,stream_ops:SOCKFS.stream_ops});sock.stream=stream;return sock},getSocket(fd){var stream=FS.getStream(fd);if(!stream||!FS.isSocket(stream.node.mode)){return null}return stream.node.sock},stream_ops:{poll(stream){var sock=stream.node.sock;return sock.sock_ops.poll(sock)},ioctl(stream,request,varargs){var sock=stream.node.sock;return sock.sock_ops.ioctl(sock,request,varargs)},read(stream,buffer,offset,length,position){var sock=stream.node.sock;var msg=sock.sock_ops.recvmsg(sock,length);if(!msg){return 0}buffer.set(msg.buffer,offset);return msg.buffer.length},write(stream,buffer,offset,length,position){var sock=stream.node.sock;return sock.sock_ops.sendmsg(sock,buffer,offset,length)},close(stream){var sock=stream.node.sock;sock.sock_ops.close(sock)}},nextname(){if(!SOCKFS.nextname.current){SOCKFS.nextname.current=0}return`socket[${SOCKFS.nextname.current++}]`},websocket_sock_ops:{createPeer(sock,addr,port){var ws;if(typeof addr=="object"){ws=addr;addr=null;port=null}if(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 url="ws://".replace("#","//");var subProtocols="binary";var opts=undefined;if(SOCKFS.websocketArgs["url"]){url=SOCKFS.websocketArgs["url"]}if(SOCKFS.websocketArgs["subprotocol"]){subProtocols=SOCKFS.websocketArgs["subprotocol"]}else if(SOCKFS.websocketArgs["subprotocol"]===null){subProtocols="null"}if(url==="ws://"||url==="wss://"){var parts=addr.split("/");url=url+parts[0]+":"+port+"/"+parts.slice(1).join("/")}if(subProtocols!=="null"){subProtocols=subProtocols.replace(/^ +| +$/g,"").split(/ *, */);opts=subProtocols}var WebSocketConstructor;if(ENVIRONMENT_IS_NODE){WebSocketConstructor=require("ws")}else{WebSocketConstructor=WebSocket}ws=new WebSocketConstructor(url,opts);ws.binaryType="arraybuffer"}catch(e){throw new FS.ErrnoError(23)}}var peer={addr,port,socket:ws,msg_send_queue:[]};SOCKFS.websocket_sock_ops.addPeer(sock,peer);SOCKFS.websocket_sock_ops.handlePeerEvents(sock,peer);if(sock.type===2&&typeof sock.sport!="undefined"){peer.msg_send_queue.push(new Uint8Array([255,255,255,255,"p".charCodeAt(0),"o".charCodeAt(0),"r".charCodeAt(0),"t".charCodeAt(0),(sock.sport&65280)>>8,sock.sport&255]))}return peer},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=true;function handleOpen(){sock.connecting=false;SOCKFS.emit("open",sock.stream.fd);try{var queued=peer.msg_send_queue.shift();while(queued){peer.socket.send(queued);queued=peer.msg_send_queue.shift()}}catch(e){peer.socket.close()}}function handleMessage(data){if(typeof data=="string"){var encoder=new TextEncoder;data=encoder.encode(data)}else{if(data.byteLength==0){return}data=new Uint8Array(data)}var wasfirst=first;first=false;if(wasfirst&&data.length===10&&data[0]===255&&data[1]===255&&data[2]===255&&data[3]===255&&data[4]==="p".charCodeAt(0)&&data[5]==="o".charCodeAt(0)&&data[6]==="r".charCodeAt(0)&&data[7]==="t".charCodeAt(0)){var newport=data[8]<<8|data[9];SOCKFS.websocket_sock_ops.removePeer(sock,peer);peer.port=newport;SOCKFS.websocket_sock_ops.addPeer(sock,peer);return}sock.recv_queue.push({addr:peer.addr,port:peer.port,data});SOCKFS.emit("message",sock.stream.fd)}if(ENVIRONMENT_IS_NODE){peer.socket.on("open",handleOpen);peer.socket.on("message",(data,isBinary)=>{if(!isBinary){return}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"])});return}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){if(sock.type===1&&sock.server){return sock.pending.length?64|1:0}var mask=0;var dest=sock.type===1?SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport):null;if(sock.recv_queue.length||!dest||dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=64|1}if(!dest||dest&&dest.socket.readyState===dest.socket.OPEN){mask|=4}if(dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){if(sock.connecting){mask|=4}else{mask|=16}}return mask},ioctl(sock,request,arg){switch(request){case 21531:var bytes=0;if(sock.recv_queue.length){bytes=sock.recv_queue[0].data.length}HEAP32[arg>>2]=bytes;return 0;case 21537:var on=HEAP32[arg>>2];if(on){sock.stream.flags|=2048}else{sock.stream.flags&=~2048}return 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(typeof sock.saddr!="undefined"||typeof sock.sport!="undefined"){throw new FS.ErrnoError(28)}sock.saddr=addr;sock.sport=port;if(sock.type===2){if(sock.server){sock.server.close();sock.server=null}try{sock.sock_ops.listen(sock,0)}catch(e){if(!(e.name==="ErrnoError"))throw e;if(e.errno!==138)throw e}}},connect(sock,addr,port){if(sock.server){throw new FS.ErrnoError(138)}if(typeof sock.daddr!="undefined"&&typeof sock.dport!="undefined"){var dest=SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport);if(dest){if(dest.socket.readyState===dest.socket.CONNECTING){throw new FS.ErrnoError(7)}else{throw new FS.ErrnoError(30)}}}var peer=SOCKFS.websocket_sock_ops.createPeer(sock,addr,port);sock.daddr=peer.addr;sock.dport=peer.port;sock.connecting=true},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;var host=sock.saddr;sock.server=new WebSocketServer({host,port:sock.sport});SOCKFS.emit("listen",sock.stream.fd);sock.server.on("connection",ws=>{if(sock.type===1){var newsock=SOCKFS.createSocket(sock.family,sock.type,sock.protocol);var 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)}else{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){if(!listensock.server||!listensock.pending.length){throw new FS.ErrnoError(28)}var newsock=listensock.pending.shift();newsock.stream.flags=listensock.stream.flags;return newsock},getname(sock,peer){var addr,port;if(peer){if(sock.daddr===undefined||sock.dport===undefined){throw new FS.ErrnoError(53)}addr=sock.daddr;port=sock.dport}else{addr=sock.saddr||0;port=sock.sport||0}return{addr,port}},sendmsg(sock,buffer,offset,length,addr,port){if(sock.type===2){if(addr===undefined||port===undefined){addr=sock.daddr;port=sock.dport}if(addr===undefined||port===undefined){throw new FS.ErrnoError(17)}}else{addr=sock.daddr;port=sock.dport}var dest=SOCKFS.websocket_sock_ops.getPeer(sock,addr,port);if(sock.type===1){if(!dest||dest.socket.readyState===dest.socket.CLOSING||dest.socket.readyState===dest.socket.CLOSED){throw new FS.ErrnoError(53)}}if(ArrayBuffer.isView(buffer)){offset+=buffer.byteOffset;buffer=buffer.buffer}var data=buffer.slice(offset,offset+length);if(!dest||dest.socket.readyState!==dest.socket.OPEN){if(sock.type===2){if(!dest||dest.socket.readyState===dest.socket.CLOSING||dest.socket.readyState===dest.socket.CLOSED){dest=SOCKFS.websocket_sock_ops.createPeer(sock,addr,port)}}dest.msg_send_queue.push(data);return length}try{dest.socket.send(data);return length}catch(e){throw new FS.ErrnoError(28)}},recvmsg(sock,length){if(sock.type===1&&sock.server){throw new FS.ErrnoError(53)}var queued=sock.recv_queue.shift();if(!queued){if(sock.type===1){var dest=SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport);if(!dest){throw new FS.ErrnoError(53)}if(dest.socket.readyState===dest.socket.CLOSING||dest.socket.readyState===dest.socket.CLOSED){return null}throw new FS.ErrnoError(6)}throw new FS.ErrnoError(6)}var queuedLength=queued.data.byteLength||queued.data.length;var queuedOffset=queued.data.byteOffset||0;var queuedBuffer=queued.data.buffer||queued.data;var bytesRead=Math.min(length,queuedLength);var res={buffer:new Uint8Array(queuedBuffer,queuedOffset,bytesRead),addr:queued.addr,port:queued.port};if(sock.type===1&&bytesRead{var socket=SOCKFS.getSocket(fd);if(!socket)throw new FS.ErrnoError(8);return socket};var inetPton4=str=>{var b=str.split(".");for(var 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};var inetPton6=str=>{var words;var w,offset,z;var valid6regx=/^((?=.*::)(?!.*::.+::)(::)?([\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;var parts=[];if(!valid6regx.test(str)){return null}if(str==="::"){return[0,0,0,0,0,0,0,0]}if(str.startsWith("::")){str=str.replace("::","Z:")}else{str=str.replace("::",":Z:")}if(str.indexOf(".")>0){str=str.replace(new RegExp("[.]","g"),":");words=str.split(":");words[words.length-4]=Number(words[words.length-4])+Number(words[words.length-3])*256;words[words.length-3]=Number(words[words.length-2])+Number(words[words.length-1])*256;words=words.slice(0,words.length-2)}else{words=str.split(":")}offset=0;z=0;for(w=0;wHEAPU8.fill(0,ptr,ptr+size);var writeSockaddr=(sa,family,addr,port,addrlen)=>{switch(family){case 2:addr=inetPton4(addr);zeroMemory(sa,16);if(addrlen){HEAP32[addrlen>>2]=16}HEAP16[sa>>1]=family;HEAP32[sa+4>>2]=addr;HEAP16[sa+2>>1]=_htons(port);break;case 10:addr=inetPton6(addr);zeroMemory(sa,28);if(addrlen){HEAP32[addrlen>>2]=28}HEAP32[sa>>2]=family;HEAP32[sa+8>>2]=addr[0];HEAP32[sa+12>>2]=addr[1];HEAP32[sa+16>>2]=addr[2];HEAP32[sa+20>>2]=addr[3];HEAP16[sa+2>>1]=_htons(port);break;default:return 5}return 0};var DNS={address_map:{id:1,addrs:{},names:{}},lookup_name(name){var res=inetPton4(name);if(res!==null){return name}res=inetPton6(name);if(res!==null){return name}var addr;if(DNS.address_map.addrs[name]){addr=DNS.address_map.addrs[name]}else{var id=DNS.address_map.id++;addr="172.29."+(id&255)+"."+(id&65280);DNS.address_map.names[addr]=name;DNS.address_map.addrs[name]=addr}return addr},lookup_addr(addr){if(DNS.address_map.names[addr]){return DNS.address_map.names[addr]}return null}};function ___syscall_accept4(fd,addr,addrlen,flags,d1,d2){try{var sock=getSocketFromFD(fd);var newsock=sock.sock_ops.accept(sock);if(addr){var errno=writeSockaddr(addr,newsock.family,DNS.lookup_name(newsock.daddr),newsock.dport,addrlen)}return newsock.stream.fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var inetNtop4=addr=>(addr&255)+"."+(addr>>8&255)+"."+(addr>>16&255)+"."+(addr>>24&255);var inetNtop6=ints=>{var str="";var word=0;var longest=0;var lastzero=0;var zstart=0;var len=0;var i=0;var parts=[ints[0]&65535,ints[0]>>16,ints[1]&65535,ints[1]>>16,ints[2]&65535,ints[2]>>16,ints[3]&65535,ints[3]>>16];var hasipv4=true;var v4part="";for(i=0;i<5;i++){if(parts[i]!==0){hasipv4=false;break}}if(hasipv4){v4part=inetNtop4(parts[6]|parts[7]<<16);if(parts[5]===-1){str="::ffff:";str+=v4part;return str}if(parts[5]===0){str="::";if(v4part==="0.0.0.0")v4part="";if(v4part==="0.0.0.1")v4part="1";str+=v4part;return str}}for(word=0;word<8;word++){if(parts[word]===0){if(word-lastzero>1){len=0}lastzero=word;len++}if(len>longest){longest=len;zstart=word-longest+1}}for(word=0;word<8;word++){if(longest>1){if(parts[word]===0&&word>=zstart&&word{var family=HEAP16[sa>>1];var port=_ntohs(HEAPU16[sa+2>>1]);var addr;switch(family){case 2:if(salen!==16){return{errno:28}}addr=HEAP32[sa+4>>2];addr=inetNtop4(addr);break;case 10:if(salen!==28){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,addr,port}};var getSocketAddress=(addrp,addrlen)=>{var info=readSockaddr(addrp,addrlen);if(info.errno)throw new FS.ErrnoError(info.errno);info.addr=DNS.lookup_addr(info.addr)||info.addr;return info};function ___syscall_bind(fd,addr,addrlen,d1,d2,d3){try{var sock=getSocketFromFD(fd);var info=getSocketAddress(addr,addrlen);sock.sock_ops.bind(sock,info.addr,info.port);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_connect(fd,addr,addrlen,d1,d2,d3){try{var sock=getSocketFromFD(fd);var info=getSocketAddress(addr,addrlen);sock.sock_ops.connect(sock,info.addr,info.port);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var UTF8ToString=(ptr,maxBytesToRead,ignoreNul)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead,ignoreNul):"";var SYSCALLS={currentUmask:18,calculateAt(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return dir+"/"+path},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();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();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);return 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(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},getStreamFromFD(fd){var stream=FS.getStreamChecked(fd);return stream},varargs:undefined,getStr(ptr){var ret=UTF8ToString(ptr);return ret}};function ___syscall_dup3(fd,newfd,flags){try{if(fd===newfd)return-28;if(flags&~524288)return-28;var old=SYSCALLS.getStreamFromFD(fd);if(newfd<0||newfd>=FS.MAX_OPEN_FDS)return-8;var existing=FS.getStream(newfd);if(existing)FS.close(existing);var stream=FS.dupStream(old,newfd);if(flags&524288){stream.flags|=524288}return stream.fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var syscallGetVarargI=()=>{var ret=HEAP32[+SYSCALLS.varargs>>2];SYSCALLS.varargs+=4;return ret};var syscallGetVarargP=syscallGetVarargI;function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=syscallGetVarargI();if(arg<0){return-28}while(FS.streams[arg]){arg++}var newStream;newStream=FS.dupStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=syscallGetVarargI();var mask=289792;stream.flags=stream.flags&~mask|arg&mask;return 0}case 12:{var arg=syscallGetVarargP();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0}return-28}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_fstat64(fd,buf){try{return SYSCALLS.writeStat(buf,FS.fstat(fd))}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);function ___syscall_getcwd(buf,size){try{if(size===0)return-28;var cwd=FS.cwd();var cwdLengthInBytes=lengthBytesUTF8(cwd)+1;if(size>2]=termios.c_iflag||0;HEAP32[argp+4>>2]=termios.c_oflag||0;HEAP32[argp+8>>2]=termios.c_cflag||0;HEAP32[argp+12>>2]=termios.c_lflag||0;for(var i=0;i<32;i++){HEAP8[argp+i+17]=termios.c_cc[i]||0}return 0}return 0}case 21510:case 21511:case 21512:{if(!stream.tty)return-59;return 0}case 21506:case 21507:case 21508:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcsets){var argp=syscallGetVarargP();var c_iflag=HEAP32[argp>>2];var c_oflag=HEAP32[argp+4>>2];var c_cflag=HEAP32[argp+8>>2];var c_lflag=HEAP32[argp+12>>2];var c_cc=[];for(var i=0;i<32;i++){c_cc.push(HEAP8[argp+i+17])}return stream.tty.ops.ioctl_tcsets(stream.tty,op,{c_iflag,c_oflag,c_cflag,c_lflag,c_cc})}return 0}case 21519:{if(!stream.tty)return-59;var argp=syscallGetVarargP();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21537:case 21531:{var argp=syscallGetVarargP();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tiocgwinsz){var winsize=stream.tty.ops.ioctl_tiocgwinsz(stream.tty);var argp=syscallGetVarargP();HEAP16[argp>>1]=winsize[0];HEAP16[argp+2>>1]=winsize[1]}return 0}case 21524:{if(!stream.tty)return-59;return 0}case 21515:{if(!stream.tty)return-59;return 0}default:return-28}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_listen(fd,backlog){try{var sock=getSocketFromFD(fd);sock.sock_ops.listen(sock,backlog);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_lstat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.writeStat(buf,FS.lstat(path))}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_newfstatat(dirfd,path,buf,flags){try{path=SYSCALLS.getStr(path);var nofollow=flags&256;var allowEmpty=flags&4096;flags=flags&~6400;path=SYSCALLS.calculateAt(dirfd,path,allowEmpty);return SYSCALLS.writeStat(buf,nofollow?FS.lstat(path):FS.stat(path))}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?syscallGetVarargI():0;if(flags&64){mode&=~SYSCALLS.currentUmask}return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var PIPEFS={BUCKET_BUFFER_SIZE:8192,mount(mount){return FS.createNode(null,"/",16384|511,0)},createPipe(){var pipe={buckets:[],refcnt:2,timestamp:new Date};pipe.buckets.push({buffer:new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE),offset:0,roffset:0});var rName=PIPEFS.nextname();var wName=PIPEFS.nextname();var rNode=FS.createNode(PIPEFS.root,rName,4096,0);var wNode=FS.createNode(PIPEFS.root,wName,4096,0);rNode.pipe=pipe;wNode.pipe=pipe;var readableStream=FS.createStream({path:rName,node:rNode,flags:0,seekable:false,stream_ops:PIPEFS.stream_ops});rNode.stream=readableStream;var writableStream=FS.createStream({path:wName,node:wNode,flags:1,seekable:false,stream_ops:PIPEFS.stream_ops});wNode.stream=writableStream;return{readable_fd:readableStream.fd,writable_fd:writableStream.fd}},stream_ops:{getattr(stream){var node=stream.node;var timestamp=node.pipe.timestamp;return{dev:14,ino:node.id,mode:4480,nlink:1,uid:0,gid:0,rdev:0,size:0,atime:timestamp,mtime:timestamp,ctime:timestamp,blksize:4096,blocks:0}},poll(stream,timeout,notifyCallback){var pipe=stream.node.pipe;if((stream.flags&2097155)===1){return 256|4}for(var bucket of pipe.buckets){if(bucket.offset-bucket.roffset>0){return 64|1}}return 0},dup(stream){stream.node.pipe.refcnt++},ioctl(stream,request,argp){if(request==21531){var pipe=stream.node.pipe;var currentLength=0;for(var bucket of pipe.buckets){currentLength+=bucket.offset-bucket.roffset}HEAP32[argp>>2]=currentLength;return 0}return 28},fsync(stream){return 28},read(stream,buffer,offset,length,position){var pipe=stream.node.pipe;var currentLength=0;for(var bucket of pipe.buckets){currentLength+=bucket.offset-bucket.roffset}var data=buffer.subarray(offset,offset+length);if(length<=0){return 0}if(currentLength==0){throw new FS.ErrnoError(6)}var toRead=Math.min(currentLength,length);var totalRead=toRead;var toRemove=0;for(var bucket of pipe.buckets){var bucketSize=bucket.offset-bucket.roffset;if(toRead<=bucketSize){var tmpSlice=bucket.buffer.subarray(bucket.roffset,bucket.offset);if(toRead=dataLen){currBucket.buffer.set(data,currBucket.offset);currBucket.offset+=dataLen;return dataLen}else if(freeBytesInCurrBuffer>0){currBucket.buffer.set(data.subarray(0,freeBytesInCurrBuffer),currBucket.offset);currBucket.offset+=freeBytesInCurrBuffer;data=data.subarray(freeBytesInCurrBuffer,data.byteLength)}var numBuckets=data.byteLength/PIPEFS.BUCKET_BUFFER_SIZE|0;var remElements=data.byteLength%PIPEFS.BUCKET_BUFFER_SIZE;for(var i=0;i0){var newBucket={buffer:new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE),offset:data.byteLength,roffset:0};pipe.buckets.push(newBucket);newBucket.buffer.set(data)}return dataLen},close(stream){var pipe=stream.node.pipe;pipe.refcnt--;if(pipe.refcnt===0){pipe.buckets=null}}},nextname(){if(!PIPEFS.nextname.current){PIPEFS.nextname.current=0}return"pipe["+PIPEFS.nextname.current+++"]"}};function ___syscall_pipe2(fdPtr,flags){try{if(fdPtr==0){throw new FS.ErrnoError(21)}var validFlags=524288|2048;if(flags&~validFlags){throw new FS.ErrnoError(138)}var res=PIPEFS.createPipe();if(flags&2048){FS.getStream(res.readable_fd).flags|=2048;FS.getStream(res.writable_fd).flags|=2048}HEAP32[fdPtr>>2]=res.readable_fd;HEAP32[fdPtr+4>>2]=res.writable_fd;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_renameat(olddirfd,oldpath,newdirfd,newpath){try{oldpath=SYSCALLS.getStr(oldpath);newpath=SYSCALLS.getStr(newpath);oldpath=SYSCALLS.calculateAt(olddirfd,oldpath);newpath=SYSCALLS.calculateAt(newdirfd,newpath);FS.rename(oldpath,newpath);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_socket(domain,type,protocol){try{var sock=SOCKFS.createSocket(domain,type,protocol);return sock.stream.fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.writeStat(buf,FS.stat(path))}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_unlinkat(dirfd,path,flags){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(!flags){FS.unlink(path)}else if(flags===512){FS.rmdir(path)}else{return-28}return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var __emscripten_lookup_name=name=>{var nameString=UTF8ToString(name);return inetPton4(DNS.lookup_name(nameString))};var __emscripten_throw_longjmp=()=>{throw new EmscriptenSjLj};var _emscripten_get_now=()=>performance.now();var _emscripten_date_now=()=>Date.now();var nowIsMonotonic=1;var checkWasiClock=clock_id=>clock_id>=0&&clock_id<=3;var INT53_MAX=9007199254740992;var INT53_MIN=-9007199254740992;var bigintToI53Checked=num=>numINT53_MAX?NaN:Number(num);function _clock_time_get(clk_id,ignored_precision,ptime){ignored_precision=bigintToI53Checked(ignored_precision);if(!checkWasiClock(clk_id)){return 28}var now;if(clk_id===0){now=_emscripten_date_now()}else if(nowIsMonotonic){now=_emscripten_get_now()}else{return 52}var nsec=Math.round(now*1e3*1e3);HEAP64[ptime>>3]=BigInt(nsec);return 0}var getHeapMax=()=>2147483648;var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var growMemory=size=>{var oldHeapSize=wasmMemory.buffer.byteLength;var pages=(size-oldHeapSize+65535)/65536|0;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignMemory(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var ENV={};var getExecutableName=()=>thisProgram;var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(globalThis.navigator?.language??"C").replace("-","_")+".UTF-8";var env={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:lang,_:getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var _environ_get=(__environ,environ_buf)=>{var bufSize=0;var envp=0;for(var string of getEnvStrings()){var ptr=environ_buf+bufSize;HEAPU32[__environ+envp>>2]=ptr;bufSize+=stringToUTF8(string,ptr,Infinity)+1;envp+=4}return 0};var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;for(var string of strings){bufSize+=lengthBytesUTF8(string)+1}HEAPU32[penviron_buf_size>>2]=bufSize;return 0};var runtimeKeepaliveCounter=0;var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){Module["onExit"]?.(code);ABORT=true}quit_(code,new ExitStatus(code))};var exitJS=(status,implicit)=>{EXITSTATUS=status;_proc_exit(status)};var _exit=exitJS;function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _fd_fdstat_get(fd,pbuf){try{var rightsBase=0;var rightsInheriting=0;var flags=0;{var stream=SYSCALLS.getStreamFromFD(fd);var type=stream.tty?2:FS.isDir(stream.mode)?3:FS.isLink(stream.mode)?7:4}HEAP8[pbuf]=type;HEAP16[pbuf+2>>1]=flags;HEAP64[pbuf+8>>3]=BigInt(rightsBase);HEAP64[pbuf+16>>3]=BigInt(rightsInheriting);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doReadv=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _fd_seek(fd,offset,whence,newOffset){offset=bigintToI53Checked(offset);try{if(isNaN(offset))return 22;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);HEAP64[newOffset>>3]=BigInt(stream.position);if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doWritev=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var wasmTableMirror=[];var getWasmTableEntry=funcPtr=>{var func=wasmTableMirror[funcPtr];if(!func){wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func};var getCFunc=ident=>{var func=Module["_"+ident];return func};var writeArrayToMemory=(array,buffer)=>{HEAP8.set(array,buffer)};var stackAlloc=sz=>__emscripten_stack_alloc(sz);var stringToUTF8OnStack=str=>{var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8(str,ret,size);return ret};var ccall=(ident,returnType,argTypes,args,opts)=>{var toC={string:str=>{var ret=0;if(str!==null&&str!==undefined&&str!==0){ret=stringToUTF8OnStack(str)}return ret},array:arr=>{var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType==="string"){return UTF8ToString(ret)}if(returnType==="boolean")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i{var numericArgs=!argTypes||argTypes.every(type=>type==="number"||type==="boolean");var numericRet=returnType!=="string";if(numericRet&&numericArgs&&!opts){return getCFunc(ident)}return(...args)=>ccall(ident,returnType,argTypes,args,opts)};FS.createPreloadedFile=FS_createPreloadedFile;FS.preloadFile=FS_preloadFile;FS.staticInit();{if(Module["noExitRuntime"])noExitRuntime=Module["noExitRuntime"];if(Module["preloadPlugins"])preloadPlugins=Module["preloadPlugins"];if(Module["print"])out=Module["print"];if(Module["printErr"])err=Module["printErr"];if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];if(Module["arguments"])programArgs=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].shift()()}}}Module["ccall"]=ccall;Module["cwrap"]=cwrap;Module["UTF8ToString"]=UTF8ToString;Module["stringToUTF8"]=stringToUTF8;Module["lengthBytesUTF8"]=lengthBytesUTF8;function js_lumbda_bend_call(payload_ptr,payload_len,resp_buf,resp_cap){var bendUrl=globalThis._lumbdaCBendUrl;if(!bendUrl){var msg="no bend URL configured";var n=Math.min(msg.length,resp_cap-1);for(var i=0;i0){dependenciesFulfilled=run;return}preRun();if(runDependencies>0){dependenciesFulfilled=run;return}function doRun(){Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve?.(Module);Module["onRuntimeInitialized"]?.();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(()=>{setTimeout(()=>Module["setStatus"](""),1);doRun()},1)}else{doRun()}}var wasmExports;wasmExports=await (createWasm());run();if(runtimeInitialized){moduleRtn=Module}else{moduleRtn=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject})} +async function createLumbdaC(moduleArg={}){var moduleRtn;var Module=moduleArg;var ENVIRONMENT_IS_WEB=!!globalThis.window;var ENVIRONMENT_IS_WORKER=!!globalThis.WorkerGlobalScope;var ENVIRONMENT_IS_NODE=globalThis.process?.versions?.node&&globalThis.process?.type!="renderer";if(ENVIRONMENT_IS_NODE){const{createRequire}=await import("node:module");var require=createRequire(import.meta.url)}var programArgs=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var _scriptName=import.meta.url;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var readAsync,readBinary;if(ENVIRONMENT_IS_NODE){var fs=require("node:fs");if(_scriptName.startsWith("file:")){scriptDirectory=require("node:path").dirname(require("node:url").fileURLToPath(_scriptName))+"/"}readBinary=filename=>{filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename);return ret};readAsync=async(filename,binary=true)=>{filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename,binary?undefined:"utf8");return ret};if(process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}programArgs=process.argv.slice(2);quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){try{scriptDirectory=new URL(".",_scriptName).href}catch{}{if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=async url=>{var response=await fetch(url,{credentials:"same-origin"});if(response.ok){return response.arrayBuffer()}throw new Error(response.status+" : "+response.url)}}}else{}var out=console.log.bind(console);var err=console.error.bind(console);var wasmBinary;var ABORT=false;var EXITSTATUS;var isFileURI=filename=>filename.startsWith("file://");class EmscriptenEH{}class EmscriptenSjLj extends EmscriptenEH{}var readyPromiseResolve,readyPromiseReject;var runtimeInitialized=false;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 preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(onPreRuns)}function initRuntime(){runtimeInitialized=true;SOCKFS.root=FS.mount(SOCKFS,{},null);if(!Module["noFSInit"]&&!FS.initialized)FS.init();TTY.init();PIPEFS.root=FS.mount(PIPEFS,{},null);wasmExports["__wasm_call_ctors"]();FS.ignorePermissions=false}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(onPostRuns)}function abort(what){Module["onAbort"]?.(what);what=`Aborted(${what})`;err(what);ABORT=true;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject?.(e);throw e}var wasmBinaryFile;function findWasmBinary(){if(Module["locateFile"]){return locateFile("lumbda-c.wasm")}return new URL("lumbda-c.wasm",import.meta.url).href}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}async function getWasmBinary(binaryFile){if(!wasmBinary){try{var response=await readAsync(binaryFile);return new Uint8Array(response)}catch{}}return getBinarySync(binaryFile)}async function instantiateArrayBuffer(binaryFile,imports){try{var binary=await getWasmBinary(binaryFile);var instance=await WebAssembly.instantiate(binary,imports);return instance}catch(reason){err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)}}async function instantiateAsync(binary,binaryFile,imports){if(!binary&&!ENVIRONMENT_IS_NODE){try{var response=fetch(binaryFile,{credentials:"same-origin"});var instantiationResult=await WebAssembly.instantiateStreaming(response,imports);return instantiationResult}catch(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation")}}return instantiateArrayBuffer(binaryFile,imports)}function getWasmImports(){var imports={env:wasmImports,wasi_snapshot_preview1:wasmImports};return imports}async function createWasm(){function receiveInstance(instance,module){wasmExports=instance.exports;assignWasmExports(wasmExports);updateMemoryViews();return wasmExports}function receiveInstantiationResult(result){return receiveInstance(result["instance"])}var info=getWasmImports();if(Module["instantiateWasm"]){return new Promise((resolve,reject)=>{Module["instantiateWasm"](info,(inst,mod)=>{resolve(receiveInstance(inst,mod))})})}wasmBinaryFile??=findWasmBinary();var result=await instantiateAsync(wasmBinary,wasmBinaryFile,info);var exports=receiveInstantiationResult(result);return exports}class ExitStatus{name="ExitStatus";constructor(status){this.message=`Program terminated with exit(${status})`;this.status=status}}var HEAP16;var HEAP32;var HEAP64;var HEAP8;var HEAPF32;var HEAPF64;var HEAPU16;var HEAPU32;var HEAPU64;var HEAPU8;var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var onPostRuns=[];var addOnPostRun=cb=>onPostRuns.push(cb);var onPreRuns=[];var addOnPreRun=cb=>onPreRuns.push(cb);var noExitRuntime=true;var stackRestore=val=>__emscripten_stack_restore(val);var stackSave=()=>_emscripten_stack_get_current();var initRandomFill=()=>{if(ENVIRONMENT_IS_NODE){var nodeCrypto=require("node:crypto");return view=>nodeCrypto.randomFillSync(view)}return view=>(crypto.getRandomValues(view),0)};var randomFill=view=>(randomFill=initRandomFill())(view);var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.slice(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.slice(0,-1)}return root+dir},basename:path=>path&&path.match(/([^\/]+|\/)\/*$/)[1],join:(...paths)=>PATH.normalize(paths.join("/")),join2:(l,r)=>PATH.normalize(l+"/"+r)};var PATH_FS={resolve:(...args)=>{var resolvedPath="",resolvedAbsolute=false;for(var i=args.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?args[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).slice(1);to=PATH_FS.resolve(to).slice(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i{var maxIdx=idx+maxBytesToRead;if(ignoreNul)return maxIdx;while(heapOrArray[idx]&&!(idx>=maxIdx))++idx;return idx};var UTF8ArrayToString=(heapOrArray,idx=0,maxBytesToRead,ignoreNul)=>{var endPtr=findStringEnd(heapOrArray,idx,maxBytesToRead,ignoreNul);if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str};var FS_stdin_getChar_buffer=[];var lengthBytesUTF8=str=>{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63;i++}}heap[outIdx]=0;return outIdx-startIdx};var intArrayFromString=(stringy,dontAddNull,length)=>{var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array};var FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc(BUFSIZE);var bytesRead=0;var fd=process.stdin.fd;try{bytesRead=fs.readSync(fd,buf,0,BUFSIZE)}catch(e){if(e.toString().includes("EOF"))bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}}else if(globalThis.window?.prompt){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else{}if(!result){return null}FS_stdin_getChar_buffer=intArrayFromString(result,true)}return FS_stdin_getChar_buffer.shift()};var TTY={ttys:[],init(){},shutdown(){},register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close(stream){stream.tty.ops.fsync(stream.tty)},fsync(stream){stream.tty.ops.fsync(stream.tty)},read(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){out(UTF8ArrayToString(tty.output));tty.output=[]}},ioctl_tcgets(tty){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(tty,optional_actions,data){return 0},ioctl_tiocgwinsz(tty){return[24,80]}},default_tty1_ops:{put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync(tty){if(tty.output?.length>0){err(UTF8ArrayToString(tty.output));tty.output=[]}}}};var mmapAlloc=size=>{abort()};var 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}};var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=MEMFS.emptyFileContents??=new Uint8Array(0)}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.atime=node.mtime=node.ctime=Date.now();if(parent){parent.contents[name]=node;parent.atime=parent.mtime=parent.ctime=node.atime}return node},getFileDataAsTypedArray(node){return node.contents.subarray(0,node.usedBytes)},expandFileStorage(node,newCapacity){var prevCapacity=node.contents.length;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity)newCapacity=Math.max(newCapacity,256);var oldContents=MEMFS.getFileDataAsTypedArray(node);node.contents=new Uint8Array(newCapacity);node.contents.set(oldContents)},resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;var 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={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.atime);attr.mtime=new Date(node.mtime);attr.ctime=new Date(node.ctime);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr(node,attr){for(const key of["mode","atime","mtime","ctime"]){if(attr[key]!=null){node[key]=attr[key]}}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup(parent,name){if(!MEMFS.doesNotExistError){MEMFS.doesNotExistError=new FS.ErrnoError(44);MEMFS.doesNotExistError.stack=""}throw 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;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){var node=FS.lookupNode(parent,name);for(var i in node.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){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);buffer.set(contents.subarray(position,position+size),offset);return size},write(stream,buffer,offset,length,position,canOwn){if(buffer.buffer===HEAP8.buffer){canOwn=false}if(!length)return 0;var node=stream.node;node.mtime=node.ctime=Date.now();if(canOwn){node.contents=buffer.subarray(offset,offset+length);node.usedBytes=length}else if(node.usedBytes===0&&position===0){node.contents=buffer.slice(offset,offset+length);node.usedBytes=length}else{MEMFS.expandFileStorage(node,position+length);node.contents.set(buffer.subarray(offset,offset+length),position);node.usedBytes=Math.max(node.usedBytes,position+length)}return length},llseek(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.usedBytes}}if(position<0){throw new FS.ErrnoError(28)}return position},mmap(stream,length,position,prot,flags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}var ptr;var allocated;var contents=stream.node.contents;if(!(flags&2)&&contents.buffer===HEAP8.buffer){allocated=false;ptr=contents.byteOffset}else{allocated=true;ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}if(contents){if(position>0||position+length{if(typeof str!="string")return str;var flagModes={r:0,"r+":2,w:512|64|1,"w+":512|64|2,a:1024|64|1,"a+":1024|64|2};var flags=flagModes[str];if(typeof flags=="undefined"){throw new Error(`Unknown file open mode: ${str}`)}return flags};var FS_fileDataToTypedArray=data=>{if(typeof data=="string"){data=intArrayFromString(data,true)}if(!data.subarray){data=new Uint8Array(data)}return data};var FS_getMode=(canRead,canWrite)=>{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode};var asyncLoad=async url=>{var arrayBuffer=await readAsync(url);return new Uint8Array(arrayBuffer)};var FS_createDataFile=(...args)=>FS.createDataFile(...args);var getUniqueRunDependency=id=>id;var runDependencies=0;var dependenciesFulfilled=null;var removeRunDependency=id=>{runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);if(runDependencies==0){if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}};var addRunDependency=id=>{runDependencies++;Module["monitorRunDependencies"]?.(runDependencies)};var preloadPlugins=[];var FS_handledByPreloadPlugin=async(byteArray,fullname)=>{if(typeof Browser!="undefined")Browser.init();for(var plugin of preloadPlugins){if(plugin["canHandle"](fullname)){return plugin["handle"](byteArray,fullname)}}return byteArray};var FS_preloadFile=async(parent,name,url,canRead,canWrite,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);addRunDependency(dep);try{var byteArray=url;if(typeof url=="string"){byteArray=await asyncLoad(url)}byteArray=await FS_handledByPreloadPlugin(byteArray,fullname);preFinish?.();if(!dontCreateFile){FS_createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}}finally{removeRunDependency(dep)}};var 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)};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,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(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(val){this.shared.flags=val}get position(){return this.shared.position}set position(val){this.shared.position=val}},FSNode:class{node_ops={};stream_ops={};readMode=292|73;writeMode=146;mounted=null;constructor(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;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??=true;if(!PATH.isAbs(path)){path=FS.cwd()+"/"+path}linkloop:for(var nlinks=0;nlinks<40;nlinks++){var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i>>0)%FS.nameTable.length},hashAddNode(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode(node){FS.hashRemoveNode(node)},isRoot(node){return node===node.parent},isMountpoint(node){return!!node.mounted},isFile(mode){return(mode&61440)===32768},isDir(mode){return(mode&61440)===16384},isLink(mode){return(mode&61440)===40960},isChrdev(mode){return(mode&61440)===8192},isBlkdev(mode){return(mode&61440)===24576},isFIFO(mode){return(mode&61440)===4096},isSocket(mode){return(mode&49152)===49152},flagsToPermissionString(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions(node,perms){if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}if(perms.includes("w")&&!(node.mode&146)){return 2}if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup(dir){if(!FS.isDir(dir.mode))return 54;var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate(dir,name){if(!FS.isDir(dir.mode)){return 54}try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else if(FS.isDir(node.mode)){return 31}return 0},mayOpen(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}var mode=FS.flagsToPermissionString(flags);if(FS.isDir(node.mode)){if(mode!=="r"||flags&(512|64)){return 31}}return FS.nodePermissions(node,mode)},checkOpExists(op,err){if(!op){throw new FS.ErrnoError(err)}return op},MAX_OPEN_FDS:4096,nextfd(){for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStreamChecked(fd){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}return stream},getStream:fd=>FS.streams[fd],createStream(stream,fd=-1){stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream(fd){FS.streams[fd]=null},dupStream(origStream,fd=-1){var stream=FS.createStream(origStream,fd);stream.stream_ops?.dup?.(stream);return stream},doSetAttr(stream,node,attr){var setattr=stream?.stream_ops.setattr;var arg=setattr?stream:node;setattr??=node.node_ops.setattr;FS.checkOpExists(setattr,63);try{setattr(arg,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=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push(...m.mounts)}return mounts},syncfs(populate,callback){if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}for(var mount of mounts){if(mount.type.syncfs){mount.type.syncfs(mount,populate,done)}else{done(null)}}},mount(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type,opts,mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);for(var[hash,current]of Object.entries(FS.nameTable)){while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}}node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup(parent,name){return parent.node_ops.lookup(parent,name)},mknod(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name){throw new FS.ErrnoError(28)}if(name==="."||name===".."){throw new FS.ErrnoError(20)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},statfs(path){return FS.statfsNode(FS.lookupPath(path,{follow:true}).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};if(node.node_ops.statfs){Object.assign(rtn,node.node_ops.statfs(node.mount.opts.root))}return rtn},create(path,mode=438){mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir(path,mode=511){mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree(path,mode){var dirs=path.split("/");var d="";for(var dir of dirs){if(!dir)continue;if(d||PATH.isAbs(path))d+="/";d+=dir;try{FS.mkdir(d,mode)}catch(e){if(e.errno!=20)throw e}}},mkdev(path,mode,dev){if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink(oldpath,newpath){if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name);old_node.parent=new_dir}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;var readdir=FS.checkOpExists(node.node_ops.readdir,54);return readdir(node)},unlink(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return link.node_ops.readlink(link)},stat(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;var getattr=FS.checkOpExists(node.node_ops.getattr,63);return getattr(node)},fstat(fd){var stream=FS.getStreamChecked(fd);var node=stream.node;var getattr=stream.stream_ops.getattr;var arg=getattr?stream:node;getattr??=node.node_ops.getattr;FS.checkOpExists(getattr,63);return getattr(arg)},lstat(path){return FS.stat(path,true)},doChmod(stream,node,mode,dontFollow){FS.doSetAttr(stream,node,{mode:mode&4095|node.mode&~4095,ctime:Date.now(),dontFollow})},chmod(path,mode,dontFollow){var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}FS.doChmod(null,node,mode,dontFollow)},lchmod(path,mode){FS.chmod(path,mode,true)},fchmod(fd,mode){var stream=FS.getStreamChecked(fd);FS.doChmod(stream,stream.node,mode,false)},doChown(stream,node,dontFollow){FS.doSetAttr(stream,node,{timestamp:Date.now(),dontFollow})},chown(path,uid,gid,dontFollow){var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}FS.doChown(null,node,dontFollow)},lchown(path,uid,gid){FS.chown(path,uid,gid,true)},fchown(fd,uid,gid){var stream=FS.getStreamChecked(fd);FS.doChown(stream,stream.node,false)},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)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}FS.doTruncate(null,node,len)},ftruncate(fd,len){var stream=FS.getStreamChecked(fd);if(len<0||(stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.doTruncate(stream,stream.node,len)},utime(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;var setattr=FS.checkOpExists(node.node_ops.setattr,63);setattr(node,{atime,mtime})},open(path,flags,mode=438){if(path===""){throw new FS.ErrnoError(44)}flags=FS_modeStringToFlags(flags);if(flags&64){mode=mode&4095|32768}else{mode=0}var node;var isDirPath;if(typeof path=="object"){node=path}else{isDirPath=path.endsWith("/");var lookup=FS.lookupPath(path,{follow:!(flags&131072),noent_okay:true});node=lookup.node;path=lookup.path}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else if(isDirPath){throw new FS.ErrnoError(31)}else{node=FS.mknod(path,mode|511,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node,path:FS.getPath(node),flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(created){FS.chmod(node,mode&511)}return stream},close(stream){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed(stream){return stream.fd===null},llseek(stream,offset,whence){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},mmap(stream,length,position,prot,flags){if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}if(!length){throw new FS.ErrnoError(28)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync(stream,buffer,offset,length,mmapFlags){if(!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},ioctl(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile(path,opts={}){opts.flags=opts.flags??0;opts.encoding=opts.encoding??"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){abort(`Invalid encoding type "${opts.encoding}"`)}var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){buf=UTF8ArrayToString(buf)}FS.close(stream);return buf},writeFile(path,data,opts={}){opts.flags=opts.flags??577;var stream=FS.open(path,opts.flags,opts.mode);data=FS_fileDataToTypedArray(data);FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn);FS.close(stream)},cwd:()=>FS.currentPath,chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length,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;var randomByte=()=>{if(randomLeft===0){randomFill(randomBuffer);randomLeft=randomBuffer.byteLength}return randomBuffer[--randomLeft]};FS.createDevice("/dev","random",randomByte);FS.createDevice("/dev","urandom",randomByte);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount(){var node=FS.createNode(proc_self,"fd",16895,73);node.stream_ops={llseek:MEMFS.stream_ops.llseek};node.node_ops={lookup(parent,name){var fd=+name;var stream=FS.getStreamChecked(fd);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path},id:fd+1};ret.parent=ret;return ret},readdir(){return Array.from(FS.streams.entries()).filter(([k,v])=>v).map(([k,v])=>k.toString())}};return node}},{},"/proc/self/fd")},createStandardStreams(input,output,error){if(input){FS.createDevice("/dev","stdin",input)}else{FS.symlink("/dev/tty","/dev/stdin")}if(output){FS.createDevice("/dev","stdout",null,output)}else{FS.symlink("/dev/tty","/dev/stdout")}if(error){FS.createDevice("/dev","stderr",null,error)}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},staticInit(){FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={MEMFS}},init(input,output,error){FS.initialized=true;input??=Module["stdin"];output??=Module["stdout"];error??=Module["stderr"];FS.createStandardStreams(input,output,error)},quit(){FS.initialized=false;for(var stream of FS.streams){if(stream){FS.close(stream)}}},findObject(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);if(!ret.exists){return null}return ret.object},analyzePath(path,dontResolveLastLink){try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath(parent,path,canRead,canWrite){parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){if(e.errno!=20)throw e}parent=current}return current},createFile(parent,name,properties,canRead,canWrite){var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile(parent,name,data,canRead,canWrite,canOwn){var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS_getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){data=FS_fileDataToTypedArray(data);FS.chmod(node,mode|146);var stream=FS.open(node,577);FS.write(stream,data,0,data.length,0,canOwn);FS.close(stream);FS.chmod(node,mode)}},createDevice(parent,name,input,output){var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(!!input,!!output);FS.createDevice.major??=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open(stream){stream.seekable=false},close(stream){if(output?.buffer?.length){output(10)}},read(stream,buffer,offset,length,pos){var bytesRead=0;for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]}setDataGetter(getter){this.getter=getter}cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))abort("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)abort(`invalid range (${from}, ${to}) or no bytes requested!`);if(to>datalength-1)abort(`only ${datalength} bytes available! programmer error!`);var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))abort("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText??"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")abort("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true}get length(){if(!this.lengthKnown){this.cacheLength()}return this._length}get chunkSize(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}if(globalThis.XMLHttpRequest){if(!ENVIRONMENT_IS_WORKER)abort("Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc");var lazyArray=new LazyUint8Array;var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};for(const[key,fn]of Object.entries(node.stream_ops)){stream_ops[key]=(...args)=>{FS.forceLoadFile(node);return fn(...args)}}function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr,allocated:true}};node.stream_ops=stream_ops;return node}};var SOCKFS={websocketArgs:{},callbacks:{},on(event,callback){SOCKFS.callbacks[event]=callback},emit(event,param){SOCKFS.callbacks[event]?.(param)},mount(mount){SOCKFS.websocketArgs=Module["websocket"]||{};(Module["websocket"]??={})["on"]=SOCKFS.on;return FS.createNode(null,"/",16895,0)},createSocket(family,type,protocol){if(family!=2){throw new FS.ErrnoError(5)}type&=~526336;if(type!=1&&type!=2){throw new FS.ErrnoError(28)}var streaming=type==1;if(streaming&&protocol&&protocol!=6){throw new FS.ErrnoError(66)}var sock={family,type,protocol,server:null,error:null,peers:{},pending:[],recv_queue:[],sock_ops:SOCKFS.websocket_sock_ops};var name=SOCKFS.nextname();var node=FS.createNode(SOCKFS.root,name,49152,0);node.sock=sock;var stream=FS.createStream({path:name,node,flags:2,seekable:false,stream_ops:SOCKFS.stream_ops});sock.stream=stream;return sock},getSocket(fd){var stream=FS.getStream(fd);if(!stream||!FS.isSocket(stream.node.mode)){return null}return stream.node.sock},stream_ops:{poll(stream){var sock=stream.node.sock;return sock.sock_ops.poll(sock)},ioctl(stream,request,varargs){var sock=stream.node.sock;return sock.sock_ops.ioctl(sock,request,varargs)},read(stream,buffer,offset,length,position){var sock=stream.node.sock;var msg=sock.sock_ops.recvmsg(sock,length);if(!msg){return 0}buffer.set(msg.buffer,offset);return msg.buffer.length},write(stream,buffer,offset,length,position){var sock=stream.node.sock;return sock.sock_ops.sendmsg(sock,buffer,offset,length)},close(stream){var sock=stream.node.sock;sock.sock_ops.close(sock)}},nextname(){if(!SOCKFS.nextname.current){SOCKFS.nextname.current=0}return`socket[${SOCKFS.nextname.current++}]`},websocket_sock_ops:{createPeer(sock,addr,port){var ws;if(typeof addr=="object"){ws=addr;addr=null;port=null}if(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 url="ws://".replace("#","//");var subProtocols="binary";var opts=undefined;if(SOCKFS.websocketArgs["url"]){url=SOCKFS.websocketArgs["url"]}if(SOCKFS.websocketArgs["subprotocol"]){subProtocols=SOCKFS.websocketArgs["subprotocol"]}else if(SOCKFS.websocketArgs["subprotocol"]===null){subProtocols="null"}if(url==="ws://"||url==="wss://"){var parts=addr.split("/");url=url+parts[0]+":"+port+"/"+parts.slice(1).join("/")}if(subProtocols!=="null"){subProtocols=subProtocols.replace(/^ +| +$/g,"").split(/ *, */);opts=subProtocols}var WebSocketConstructor;if(ENVIRONMENT_IS_NODE){WebSocketConstructor=require("ws")}else{WebSocketConstructor=WebSocket}ws=new WebSocketConstructor(url,opts);ws.binaryType="arraybuffer"}catch(e){throw new FS.ErrnoError(23)}}var peer={addr,port,socket:ws,msg_send_queue:[]};SOCKFS.websocket_sock_ops.addPeer(sock,peer);SOCKFS.websocket_sock_ops.handlePeerEvents(sock,peer);if(sock.type===2&&typeof sock.sport!="undefined"){peer.msg_send_queue.push(new Uint8Array([255,255,255,255,"p".charCodeAt(0),"o".charCodeAt(0),"r".charCodeAt(0),"t".charCodeAt(0),(sock.sport&65280)>>8,sock.sport&255]))}return peer},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=true;function handleOpen(){sock.connecting=false;SOCKFS.emit("open",sock.stream.fd);try{var queued=peer.msg_send_queue.shift();while(queued){peer.socket.send(queued);queued=peer.msg_send_queue.shift()}}catch(e){peer.socket.close()}}function handleMessage(data){if(typeof data=="string"){var encoder=new TextEncoder;data=encoder.encode(data)}else{if(data.byteLength==0){return}data=new Uint8Array(data)}var wasfirst=first;first=false;if(wasfirst&&data.length===10&&data[0]===255&&data[1]===255&&data[2]===255&&data[3]===255&&data[4]==="p".charCodeAt(0)&&data[5]==="o".charCodeAt(0)&&data[6]==="r".charCodeAt(0)&&data[7]==="t".charCodeAt(0)){var newport=data[8]<<8|data[9];SOCKFS.websocket_sock_ops.removePeer(sock,peer);peer.port=newport;SOCKFS.websocket_sock_ops.addPeer(sock,peer);return}sock.recv_queue.push({addr:peer.addr,port:peer.port,data});SOCKFS.emit("message",sock.stream.fd)}if(ENVIRONMENT_IS_NODE){peer.socket.on("open",handleOpen);peer.socket.on("message",(data,isBinary)=>{if(!isBinary){return}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"])});return}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){if(sock.type===1&&sock.server){return sock.pending.length?64|1:0}var mask=0;var dest=sock.type===1?SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport):null;if(sock.recv_queue.length||!dest||dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=64|1}if(!dest||dest&&dest.socket.readyState===dest.socket.OPEN){mask|=4}if(dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){if(sock.connecting){mask|=4}else{mask|=16}}return mask},ioctl(sock,request,arg){switch(request){case 21531:var bytes=0;if(sock.recv_queue.length){bytes=sock.recv_queue[0].data.length}HEAP32[arg>>2]=bytes;return 0;case 21537:var on=HEAP32[arg>>2];if(on){sock.stream.flags|=2048}else{sock.stream.flags&=~2048}return 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(typeof sock.saddr!="undefined"||typeof sock.sport!="undefined"){throw new FS.ErrnoError(28)}sock.saddr=addr;sock.sport=port;if(sock.type===2){if(sock.server){sock.server.close();sock.server=null}try{sock.sock_ops.listen(sock,0)}catch(e){if(!(e.name==="ErrnoError"))throw e;if(e.errno!==138)throw e}}},connect(sock,addr,port){if(sock.server){throw new FS.ErrnoError(138)}if(typeof sock.daddr!="undefined"&&typeof sock.dport!="undefined"){var dest=SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport);if(dest){if(dest.socket.readyState===dest.socket.CONNECTING){throw new FS.ErrnoError(7)}else{throw new FS.ErrnoError(30)}}}var peer=SOCKFS.websocket_sock_ops.createPeer(sock,addr,port);sock.daddr=peer.addr;sock.dport=peer.port;sock.connecting=true},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;var host=sock.saddr;sock.server=new WebSocketServer({host,port:sock.sport});SOCKFS.emit("listen",sock.stream.fd);sock.server.on("connection",ws=>{if(sock.type===1){var newsock=SOCKFS.createSocket(sock.family,sock.type,sock.protocol);var 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)}else{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){if(!listensock.server||!listensock.pending.length){throw new FS.ErrnoError(28)}var newsock=listensock.pending.shift();newsock.stream.flags=listensock.stream.flags;return newsock},getname(sock,peer){var addr,port;if(peer){if(sock.daddr===undefined||sock.dport===undefined){throw new FS.ErrnoError(53)}addr=sock.daddr;port=sock.dport}else{addr=sock.saddr||0;port=sock.sport||0}return{addr,port}},sendmsg(sock,buffer,offset,length,addr,port){if(sock.type===2){if(addr===undefined||port===undefined){addr=sock.daddr;port=sock.dport}if(addr===undefined||port===undefined){throw new FS.ErrnoError(17)}}else{addr=sock.daddr;port=sock.dport}var dest=SOCKFS.websocket_sock_ops.getPeer(sock,addr,port);if(sock.type===1){if(!dest||dest.socket.readyState===dest.socket.CLOSING||dest.socket.readyState===dest.socket.CLOSED){throw new FS.ErrnoError(53)}}if(ArrayBuffer.isView(buffer)){offset+=buffer.byteOffset;buffer=buffer.buffer}var data=buffer.slice(offset,offset+length);if(!dest||dest.socket.readyState!==dest.socket.OPEN){if(sock.type===2){if(!dest||dest.socket.readyState===dest.socket.CLOSING||dest.socket.readyState===dest.socket.CLOSED){dest=SOCKFS.websocket_sock_ops.createPeer(sock,addr,port)}}dest.msg_send_queue.push(data);return length}try{dest.socket.send(data);return length}catch(e){throw new FS.ErrnoError(28)}},recvmsg(sock,length){if(sock.type===1&&sock.server){throw new FS.ErrnoError(53)}var queued=sock.recv_queue.shift();if(!queued){if(sock.type===1){var dest=SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport);if(!dest){throw new FS.ErrnoError(53)}if(dest.socket.readyState===dest.socket.CLOSING||dest.socket.readyState===dest.socket.CLOSED){return null}throw new FS.ErrnoError(6)}throw new FS.ErrnoError(6)}var queuedLength=queued.data.byteLength||queued.data.length;var queuedOffset=queued.data.byteOffset||0;var queuedBuffer=queued.data.buffer||queued.data;var bytesRead=Math.min(length,queuedLength);var res={buffer:new Uint8Array(queuedBuffer,queuedOffset,bytesRead),addr:queued.addr,port:queued.port};if(sock.type===1&&bytesRead{var socket=SOCKFS.getSocket(fd);if(!socket)throw new FS.ErrnoError(8);return socket};var inetPton4=str=>{var b=str.split(".");for(var 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};var inetPton6=str=>{var words;var w,offset,z;var valid6regx=/^((?=.*::)(?!.*::.+::)(::)?([\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;var parts=[];if(!valid6regx.test(str)){return null}if(str==="::"){return[0,0,0,0,0,0,0,0]}if(str.startsWith("::")){str=str.replace("::","Z:")}else{str=str.replace("::",":Z:")}if(str.indexOf(".")>0){str=str.replace(new RegExp("[.]","g"),":");words=str.split(":");words[words.length-4]=Number(words[words.length-4])+Number(words[words.length-3])*256;words[words.length-3]=Number(words[words.length-2])+Number(words[words.length-1])*256;words=words.slice(0,words.length-2)}else{words=str.split(":")}offset=0;z=0;for(w=0;wHEAPU8.fill(0,ptr,ptr+size);var writeSockaddr=(sa,family,addr,port,addrlen)=>{switch(family){case 2:addr=inetPton4(addr);zeroMemory(sa,16);if(addrlen){HEAP32[addrlen>>2]=16}HEAP16[sa>>1]=family;HEAP32[sa+4>>2]=addr;HEAP16[sa+2>>1]=_htons(port);break;case 10:addr=inetPton6(addr);zeroMemory(sa,28);if(addrlen){HEAP32[addrlen>>2]=28}HEAP32[sa>>2]=family;HEAP32[sa+8>>2]=addr[0];HEAP32[sa+12>>2]=addr[1];HEAP32[sa+16>>2]=addr[2];HEAP32[sa+20>>2]=addr[3];HEAP16[sa+2>>1]=_htons(port);break;default:return 5}return 0};var DNS={address_map:{id:1,addrs:{},names:{}},lookup_name(name){var res=inetPton4(name);if(res!==null){return name}res=inetPton6(name);if(res!==null){return name}var addr;if(DNS.address_map.addrs[name]){addr=DNS.address_map.addrs[name]}else{var id=DNS.address_map.id++;addr="172.29."+(id&255)+"."+(id&65280);DNS.address_map.names[addr]=name;DNS.address_map.addrs[name]=addr}return addr},lookup_addr(addr){if(DNS.address_map.names[addr]){return DNS.address_map.names[addr]}return null}};function ___syscall_accept4(fd,addr,addrlen,flags,d1,d2){try{var sock=getSocketFromFD(fd);var newsock=sock.sock_ops.accept(sock);if(addr){var errno=writeSockaddr(addr,newsock.family,DNS.lookup_name(newsock.daddr),newsock.dport,addrlen)}return newsock.stream.fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var inetNtop4=addr=>(addr&255)+"."+(addr>>8&255)+"."+(addr>>16&255)+"."+(addr>>24&255);var inetNtop6=ints=>{var str="";var word=0;var longest=0;var lastzero=0;var zstart=0;var len=0;var i=0;var parts=[ints[0]&65535,ints[0]>>16,ints[1]&65535,ints[1]>>16,ints[2]&65535,ints[2]>>16,ints[3]&65535,ints[3]>>16];var hasipv4=true;var v4part="";for(i=0;i<5;i++){if(parts[i]!==0){hasipv4=false;break}}if(hasipv4){v4part=inetNtop4(parts[6]|parts[7]<<16);if(parts[5]===-1){str="::ffff:";str+=v4part;return str}if(parts[5]===0){str="::";if(v4part==="0.0.0.0")v4part="";if(v4part==="0.0.0.1")v4part="1";str+=v4part;return str}}for(word=0;word<8;word++){if(parts[word]===0){if(word-lastzero>1){len=0}lastzero=word;len++}if(len>longest){longest=len;zstart=word-longest+1}}for(word=0;word<8;word++){if(longest>1){if(parts[word]===0&&word>=zstart&&word{var family=HEAP16[sa>>1];var port=_ntohs(HEAPU16[sa+2>>1]);var addr;switch(family){case 2:if(salen!==16){return{errno:28}}addr=HEAP32[sa+4>>2];addr=inetNtop4(addr);break;case 10:if(salen!==28){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,addr,port}};var getSocketAddress=(addrp,addrlen)=>{var info=readSockaddr(addrp,addrlen);if(info.errno)throw new FS.ErrnoError(info.errno);info.addr=DNS.lookup_addr(info.addr)||info.addr;return info};function ___syscall_bind(fd,addr,addrlen,d1,d2,d3){try{var sock=getSocketFromFD(fd);var info=getSocketAddress(addr,addrlen);sock.sock_ops.bind(sock,info.addr,info.port);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_connect(fd,addr,addrlen,d1,d2,d3){try{var sock=getSocketFromFD(fd);var info=getSocketAddress(addr,addrlen);sock.sock_ops.connect(sock,info.addr,info.port);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var UTF8ToString=(ptr,maxBytesToRead,ignoreNul)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead,ignoreNul):"";var SYSCALLS={currentUmask:18,calculateAt(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return dir+"/"+path},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();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();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);return 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(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},getStreamFromFD(fd){var stream=FS.getStreamChecked(fd);return stream},varargs:undefined,getStr(ptr){var ret=UTF8ToString(ptr);return ret}};function ___syscall_dup3(fd,newfd,flags){try{if(fd===newfd)return-28;if(flags&~524288)return-28;var old=SYSCALLS.getStreamFromFD(fd);if(newfd<0||newfd>=FS.MAX_OPEN_FDS)return-8;var existing=FS.getStream(newfd);if(existing)FS.close(existing);var stream=FS.dupStream(old,newfd);if(flags&524288){stream.flags|=524288}return stream.fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var syscallGetVarargI=()=>{var ret=HEAP32[+SYSCALLS.varargs>>2];SYSCALLS.varargs+=4;return ret};var syscallGetVarargP=syscallGetVarargI;function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=syscallGetVarargI();if(arg<0){return-28}while(FS.streams[arg]){arg++}var newStream;newStream=FS.dupStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=syscallGetVarargI();var mask=289792;stream.flags=stream.flags&~mask|arg&mask;return 0}case 12:{var arg=syscallGetVarargP();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0}return-28}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_fstat64(fd,buf){try{return SYSCALLS.writeStat(buf,FS.fstat(fd))}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);function ___syscall_getcwd(buf,size){try{if(size===0)return-28;var cwd=FS.cwd();var cwdLengthInBytes=lengthBytesUTF8(cwd)+1;if(size>2]=termios.c_iflag||0;HEAP32[argp+4>>2]=termios.c_oflag||0;HEAP32[argp+8>>2]=termios.c_cflag||0;HEAP32[argp+12>>2]=termios.c_lflag||0;for(var i=0;i<32;i++){HEAP8[argp+i+17]=termios.c_cc[i]||0}return 0}return 0}case 21510:case 21511:case 21512:{if(!stream.tty)return-59;return 0}case 21506:case 21507:case 21508:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcsets){var argp=syscallGetVarargP();var c_iflag=HEAP32[argp>>2];var c_oflag=HEAP32[argp+4>>2];var c_cflag=HEAP32[argp+8>>2];var c_lflag=HEAP32[argp+12>>2];var c_cc=[];for(var i=0;i<32;i++){c_cc.push(HEAP8[argp+i+17])}return stream.tty.ops.ioctl_tcsets(stream.tty,op,{c_iflag,c_oflag,c_cflag,c_lflag,c_cc})}return 0}case 21519:{if(!stream.tty)return-59;var argp=syscallGetVarargP();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21537:case 21531:{var argp=syscallGetVarargP();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tiocgwinsz){var winsize=stream.tty.ops.ioctl_tiocgwinsz(stream.tty);var argp=syscallGetVarargP();HEAP16[argp>>1]=winsize[0];HEAP16[argp+2>>1]=winsize[1]}return 0}case 21524:{if(!stream.tty)return-59;return 0}case 21515:{if(!stream.tty)return-59;return 0}default:return-28}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_listen(fd,backlog){try{var sock=getSocketFromFD(fd);sock.sock_ops.listen(sock,backlog);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_lstat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.writeStat(buf,FS.lstat(path))}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_newfstatat(dirfd,path,buf,flags){try{path=SYSCALLS.getStr(path);var nofollow=flags&256;var allowEmpty=flags&4096;flags=flags&~6400;path=SYSCALLS.calculateAt(dirfd,path,allowEmpty);return SYSCALLS.writeStat(buf,nofollow?FS.lstat(path):FS.stat(path))}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?syscallGetVarargI():0;if(flags&64){mode&=~SYSCALLS.currentUmask}return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var PIPEFS={BUCKET_BUFFER_SIZE:8192,mount(mount){return FS.createNode(null,"/",16384|511,0)},createPipe(){var pipe={buckets:[],refcnt:2,timestamp:new Date};pipe.buckets.push({buffer:new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE),offset:0,roffset:0});var rName=PIPEFS.nextname();var wName=PIPEFS.nextname();var rNode=FS.createNode(PIPEFS.root,rName,4096,0);var wNode=FS.createNode(PIPEFS.root,wName,4096,0);rNode.pipe=pipe;wNode.pipe=pipe;var readableStream=FS.createStream({path:rName,node:rNode,flags:0,seekable:false,stream_ops:PIPEFS.stream_ops});rNode.stream=readableStream;var writableStream=FS.createStream({path:wName,node:wNode,flags:1,seekable:false,stream_ops:PIPEFS.stream_ops});wNode.stream=writableStream;return{readable_fd:readableStream.fd,writable_fd:writableStream.fd}},stream_ops:{getattr(stream){var node=stream.node;var timestamp=node.pipe.timestamp;return{dev:14,ino:node.id,mode:4480,nlink:1,uid:0,gid:0,rdev:0,size:0,atime:timestamp,mtime:timestamp,ctime:timestamp,blksize:4096,blocks:0}},poll(stream,timeout,notifyCallback){var pipe=stream.node.pipe;if((stream.flags&2097155)===1){return 256|4}for(var bucket of pipe.buckets){if(bucket.offset-bucket.roffset>0){return 64|1}}return 0},dup(stream){stream.node.pipe.refcnt++},ioctl(stream,request,argp){if(request==21531){var pipe=stream.node.pipe;var currentLength=0;for(var bucket of pipe.buckets){currentLength+=bucket.offset-bucket.roffset}HEAP32[argp>>2]=currentLength;return 0}return 28},fsync(stream){return 28},read(stream,buffer,offset,length,position){var pipe=stream.node.pipe;var currentLength=0;for(var bucket of pipe.buckets){currentLength+=bucket.offset-bucket.roffset}var data=buffer.subarray(offset,offset+length);if(length<=0){return 0}if(currentLength==0){throw new FS.ErrnoError(6)}var toRead=Math.min(currentLength,length);var totalRead=toRead;var toRemove=0;for(var bucket of pipe.buckets){var bucketSize=bucket.offset-bucket.roffset;if(toRead<=bucketSize){var tmpSlice=bucket.buffer.subarray(bucket.roffset,bucket.offset);if(toRead=dataLen){currBucket.buffer.set(data,currBucket.offset);currBucket.offset+=dataLen;return dataLen}else if(freeBytesInCurrBuffer>0){currBucket.buffer.set(data.subarray(0,freeBytesInCurrBuffer),currBucket.offset);currBucket.offset+=freeBytesInCurrBuffer;data=data.subarray(freeBytesInCurrBuffer,data.byteLength)}var numBuckets=data.byteLength/PIPEFS.BUCKET_BUFFER_SIZE|0;var remElements=data.byteLength%PIPEFS.BUCKET_BUFFER_SIZE;for(var i=0;i0){var newBucket={buffer:new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE),offset:data.byteLength,roffset:0};pipe.buckets.push(newBucket);newBucket.buffer.set(data)}return dataLen},close(stream){var pipe=stream.node.pipe;pipe.refcnt--;if(pipe.refcnt===0){pipe.buckets=null}}},nextname(){if(!PIPEFS.nextname.current){PIPEFS.nextname.current=0}return"pipe["+PIPEFS.nextname.current+++"]"}};function ___syscall_pipe2(fdPtr,flags){try{if(fdPtr==0){throw new FS.ErrnoError(21)}var validFlags=524288|2048;if(flags&~validFlags){throw new FS.ErrnoError(138)}var res=PIPEFS.createPipe();if(flags&2048){FS.getStream(res.readable_fd).flags|=2048;FS.getStream(res.writable_fd).flags|=2048}HEAP32[fdPtr>>2]=res.readable_fd;HEAP32[fdPtr+4>>2]=res.writable_fd;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_renameat(olddirfd,oldpath,newdirfd,newpath){try{oldpath=SYSCALLS.getStr(oldpath);newpath=SYSCALLS.getStr(newpath);oldpath=SYSCALLS.calculateAt(olddirfd,oldpath);newpath=SYSCALLS.calculateAt(newdirfd,newpath);FS.rename(oldpath,newpath);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_socket(domain,type,protocol){try{var sock=SOCKFS.createSocket(domain,type,protocol);return sock.stream.fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.writeStat(buf,FS.stat(path))}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_unlinkat(dirfd,path,flags){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(!flags){FS.unlink(path)}else if(flags===512){FS.rmdir(path)}else{return-28}return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var __emscripten_lookup_name=name=>{var nameString=UTF8ToString(name);return inetPton4(DNS.lookup_name(nameString))};var __emscripten_throw_longjmp=()=>{throw new EmscriptenSjLj};var _emscripten_get_now=()=>performance.now();var _emscripten_date_now=()=>Date.now();var nowIsMonotonic=1;var checkWasiClock=clock_id=>clock_id>=0&&clock_id<=3;var INT53_MAX=9007199254740992;var INT53_MIN=-9007199254740992;var bigintToI53Checked=num=>numINT53_MAX?NaN:Number(num);function _clock_time_get(clk_id,ignored_precision,ptime){ignored_precision=bigintToI53Checked(ignored_precision);if(!checkWasiClock(clk_id)){return 28}var now;if(clk_id===0){now=_emscripten_date_now()}else if(nowIsMonotonic){now=_emscripten_get_now()}else{return 52}var nsec=Math.round(now*1e3*1e3);HEAP64[ptime>>3]=BigInt(nsec);return 0}var getHeapMax=()=>2147483648;var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var growMemory=size=>{var oldHeapSize=wasmMemory.buffer.byteLength;var pages=(size-oldHeapSize+65535)/65536|0;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignMemory(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var ENV={};var getExecutableName=()=>thisProgram;var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(globalThis.navigator?.language??"C").replace("-","_")+".UTF-8";var env={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:lang,_:getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var _environ_get=(__environ,environ_buf)=>{var bufSize=0;var envp=0;for(var string of getEnvStrings()){var ptr=environ_buf+bufSize;HEAPU32[__environ+envp>>2]=ptr;bufSize+=stringToUTF8(string,ptr,Infinity)+1;envp+=4}return 0};var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;for(var string of strings){bufSize+=lengthBytesUTF8(string)+1}HEAPU32[penviron_buf_size>>2]=bufSize;return 0};var runtimeKeepaliveCounter=0;var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){Module["onExit"]?.(code);ABORT=true}quit_(code,new ExitStatus(code))};var exitJS=(status,implicit)=>{EXITSTATUS=status;_proc_exit(status)};var _exit=exitJS;function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _fd_fdstat_get(fd,pbuf){try{var rightsBase=0;var rightsInheriting=0;var flags=0;{var stream=SYSCALLS.getStreamFromFD(fd);var type=stream.tty?2:FS.isDir(stream.mode)?3:FS.isLink(stream.mode)?7:4}HEAP8[pbuf]=type;HEAP16[pbuf+2>>1]=flags;HEAP64[pbuf+8>>3]=BigInt(rightsBase);HEAP64[pbuf+16>>3]=BigInt(rightsInheriting);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doReadv=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _fd_seek(fd,offset,whence,newOffset){offset=bigintToI53Checked(offset);try{if(isNaN(offset))return 22;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);HEAP64[newOffset>>3]=BigInt(stream.position);if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doWritev=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _js_lumbda_bend_call(payload_ptr,payload_len,resp_buf,resp_cap){var bendUrl=globalThis._lumbdaCBendUrl;if(!bendUrl){var msg="no bend URL configured";var n=Math.min(msg.length,resp_cap-1);for(var i=0;i{var func=wasmTableMirror[funcPtr];if(!func){wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func};var getCFunc=ident=>{var func=Module["_"+ident];return func};var writeArrayToMemory=(array,buffer)=>{HEAP8.set(array,buffer)};var stackAlloc=sz=>__emscripten_stack_alloc(sz);var stringToUTF8OnStack=str=>{var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8(str,ret,size);return ret};var ccall=(ident,returnType,argTypes,args,opts)=>{var toC={string:str=>{var ret=0;if(str!==null&&str!==undefined&&str!==0){ret=stringToUTF8OnStack(str)}return ret},array:arr=>{var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType==="string"){return UTF8ToString(ret)}if(returnType==="boolean")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i{var numericArgs=!argTypes||argTypes.every(type=>type==="number"||type==="boolean");var numericRet=returnType!=="string";if(numericRet&&numericArgs&&!opts){return getCFunc(ident)}return(...args)=>ccall(ident,returnType,argTypes,args,opts)};FS.createPreloadedFile=FS_createPreloadedFile;FS.preloadFile=FS_preloadFile;FS.staticInit();{if(Module["noExitRuntime"])noExitRuntime=Module["noExitRuntime"];if(Module["preloadPlugins"])preloadPlugins=Module["preloadPlugins"];if(Module["print"])out=Module["print"];if(Module["printErr"])err=Module["printErr"];if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];if(Module["arguments"])programArgs=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].shift()()}}}Module["ccall"]=ccall;Module["cwrap"]=cwrap;Module["UTF8ToString"]=UTF8ToString;Module["stringToUTF8"]=stringToUTF8;Module["lengthBytesUTF8"]=lengthBytesUTF8;var _malloc,_free,_htons,_lumbda_wasm_init,_lumbda_wasm_eval,_lumbda_wasm_free_result,_ntohs,_setThrew,__emscripten_stack_restore,__emscripten_stack_alloc,_emscripten_stack_get_current,memory,__indirect_function_table,wasmMemory,wasmTable;function assignWasmExports(wasmExports){_malloc=Module["_malloc"]=wasmExports["malloc"];_free=Module["_free"]=wasmExports["free"];_htons=wasmExports["htons"];_lumbda_wasm_init=Module["_lumbda_wasm_init"]=wasmExports["lumbda_wasm_init"];_lumbda_wasm_eval=Module["_lumbda_wasm_eval"]=wasmExports["lumbda_wasm_eval"];_lumbda_wasm_free_result=Module["_lumbda_wasm_free_result"]=wasmExports["lumbda_wasm_free_result"];_ntohs=wasmExports["ntohs"];_setThrew=wasmExports["setThrew"];__emscripten_stack_restore=wasmExports["_emscripten_stack_restore"];__emscripten_stack_alloc=wasmExports["_emscripten_stack_alloc"];_emscripten_stack_get_current=wasmExports["emscripten_stack_get_current"];memory=wasmMemory=wasmExports["memory"];__indirect_function_table=wasmTable=wasmExports["__indirect_function_table"]}var wasmImports={__syscall_accept4:___syscall_accept4,__syscall_bind:___syscall_bind,__syscall_connect:___syscall_connect,__syscall_dup3:___syscall_dup3,__syscall_fcntl64:___syscall_fcntl64,__syscall_fstat64:___syscall_fstat64,__syscall_getcwd:___syscall_getcwd,__syscall_ioctl:___syscall_ioctl,__syscall_listen:___syscall_listen,__syscall_lstat64:___syscall_lstat64,__syscall_newfstatat:___syscall_newfstatat,__syscall_openat:___syscall_openat,__syscall_pipe2:___syscall_pipe2,__syscall_renameat:___syscall_renameat,__syscall_socket:___syscall_socket,__syscall_stat64:___syscall_stat64,__syscall_unlinkat:___syscall_unlinkat,_emscripten_lookup_name:__emscripten_lookup_name,_emscripten_throw_longjmp:__emscripten_throw_longjmp,clock_time_get:_clock_time_get,emscripten_get_now:_emscripten_get_now,emscripten_resize_heap:_emscripten_resize_heap,environ_get:_environ_get,environ_sizes_get:_environ_sizes_get,exit:_exit,fd_close:_fd_close,fd_fdstat_get:_fd_fdstat_get,fd_read:_fd_read,fd_seek:_fd_seek,fd_write:_fd_write,invoke_i,invoke_ii,invoke_iii,invoke_iiii,invoke_iiiii,invoke_iiiiiiiiii,invoke_iiiiijiiiii,invoke_iiiijii,invoke_iiij,invoke_iiijiii,invoke_iijj,invoke_ij,invoke_iji,invoke_ijj,invoke_ji,invoke_jii,invoke_jiii,invoke_jij,invoke_jj,invoke_jji,invoke_jjii,invoke_jjiii,invoke_jjj,invoke_jjjjjjj,invoke_v,invoke_vi,invoke_vii,invoke_viii,invoke_viiii,invoke_viiiii,invoke_viiji,invoke_vij,invoke_vijj,invoke_vjii,invoke_vjiii,js_lumbda_bend_call:_js_lumbda_bend_call,proc_exit:_proc_exit};function invoke_jij(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_vii(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_jji(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_iiiijii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_jjiii(index,a1,a2,a3,a4){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_ijj(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_iji(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_vij(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_ij(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_iiijiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_vijj(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_iijj(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_jjii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_jj(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_jiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_vjii(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_iii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_ji(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_jjj(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_jjjjjjj(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_jii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_iiij(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_vjiii(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_iiiiijiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_viiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_viiji(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_iiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function run(){if(runDependencies>0){dependenciesFulfilled=run;return}preRun();if(runDependencies>0){dependenciesFulfilled=run;return}function doRun(){Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve?.(Module);Module["onRuntimeInitialized"]?.();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(()=>{setTimeout(()=>Module["setStatus"](""),1);doRun()},1)}else{doRun()}}var wasmExports;wasmExports=await (createWasm());run();if(runtimeInitialized){moduleRtn=Module}else{moduleRtn=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject})} ;return moduleRtn}export default createLumbdaC; diff --git a/www/playground/c/lumbda-c.loader.js b/www/playground/c/lumbda-c.loader.js index 71b0e54..64e78c2 100644 --- a/www/playground/c/lumbda-c.loader.js +++ b/www/playground/c/lumbda-c.loader.js @@ -27,6 +27,12 @@ async function _bootstrap() { _init(); + // /tmp must exist before (portal-snapshot! ...) writes there — the + // C builtin fopen("w")s the path directly so a missing dir is a + // hard error. Emscripten's MEMFS gives us /tmp on recent versions + // but make it idempotent. + try { module.FS.mkdir("/tmp"); } catch (e) { /* exists */ } + // bend!-call host bridge — js_lumbda_bend_call inside the wasm // (EM_JS in lumbda_wasm_entry.c) reads globalThis._lumbdaCBendUrl // for the destination, then does sync XHR POST and writes the @@ -34,6 +40,22 @@ async function _bootstrap() { // global so runner.js can propagate a saved playground URL. return { setBendUrl(url) { globalThis._lumbdaCBendUrl = url || null; }, + // portalSave / portalLoad bridge MEMFS to the JS side so the + // REPL can persist checkpoints to the encrypted vault and + // restore them on a fresh worker. Names come from the worker + // (REPL caller validates alphanumeric) so path traversal isn't + // a concern. + portalSave(name) { + const path = `/tmp/${name}.portal`; + try { + const bytes = module.FS.readFile(path); + return new TextDecoder().decode(bytes); + } catch (e) { return null; } + }, + portalLoad(name, blob) { + const path = `/tmp/${name}.portal`; + module.FS.writeFile(path, blob); + }, async evalLisp(src) { outBuf = []; errBuf = []; diff --git a/www/playground/c/lumbda-c.wasm b/www/playground/c/lumbda-c.wasm index 961ed9abb1c723b0cb4ff58d6d9d5c8ee11e16a5..9d5fad2f70701c339d761f76f6605d7abfce4df3 100755 GIT binary patch delta 96623 zcmdqK2Y3|K`aizs%%<)pSs=ZT$&x_my$M1lNG}5Rf{J3pg57IPzyc^jV1NTE5U_xF zK@>Hh0s%o0kRqUtvWGUwj(*RFg_Ch;$!7MmR%>ko5C*X9&d}$yGH-eFeVa@ozD2ko{=mnD%sAI zmCZ+ORdo*VX zi(rbKC8P};lwgli?1Sz0w1k9&%j(%9QX*K2J&N7Omhz=MB8stMdvP(3jORs6D}G1c z8PhW6q+-AAfm?62ozm;X<~CfRxbA-Vo|}gaz41}d?#4Usz4Ia4I4kVdM~2>QE75O? zO;4VvMBMw(h&vv%tx%#Ly!D~W?|9(WM{WP;C9#=og1#U&ot5ZoW3#(Xw8wmAXEu#F zmhfUWr0*!!uXp#Jw?5DM7mZ|3_ZiKG_tM6&4a$H^Z@6yY7G>D&gI-jwA7#IDtMVc% zxa`d0`i@n!%i{R!Lj_Hk;X$ zcR+E?h5`=Nrn!da+O#n*D=Z&GeDA_IKLX*tJpVZZ9Y-9fe92m;d#TEhokq zNln<^zUy^)Tt&<9Ig`xsKu?iY9FZrCp&gdia5);lS?$~zR z?!X(=PJMR0Hu|~rbH-CAo<`79O`%75{q$Qi8%FNR(;{5k^~ssDjZ$?yrO+u6!*gu1 z@Q|!KBe&GoB2jQd);yzNZ4`|3pd-qDlDGJkx-MosO~lhES(OOYc9+|%&$jGqBKI}M z2e;|1)h8pjH_)PR`GNXm6gnAS+NO8Nc`|ZzCcd;yU+#W9+OADeH9KxPyPu5Q*uaFZ zFup;}HNN3(?wE>CA~eMyM1TF|+&0G3ii8-TU!2!1@S}fK1apusE5EP)T>ZAe9@TFU z^wHZ9{p1Lep0x3E)scEi+|Q;N#-c_NszpkaMHzrA58o)x~*+A+H{l zf9vTPjW5U5eT{SD7az7Yx7j+`?5d)@b6B6#c%m$lqz`Z5)URmL%Y0#FlOb&(jNP13 z#F>!2ZX|_VBT?%HamFQNt(y~^#L)w|Qs`=91O2k5eNsMdsz$mtDCtx^TaKbeY9-*d zt@`^-n@jwO`q`#Mk>Gdj&!6P5UJm*Tr}n=)m_9 zlh(|&Nr6ZhH$T|??~YmSfYw(M6^LzKJm^>xyr@cqkYl52MnhEFT-P7mt+=|WitChO zH0kxj-m2N!D=zb+s`l0)s(=f4^zWKK<|X1}?^T?h)6#RdzGXuE_Tx5){zWzp%5Occ zA8vWQS@hag)JMc z_Tr0=>DRTpnSXd#U(wDT`?aij3#$3g?HU*TC~phyGCIslkQnOE7iHt4>2k8X1Uo>l zMCaI1uH318?xb6LMmv5v0DslfrZpnX(gT2j1}5smrSc1#Z53$_j*3+EDeY^u-E^3U zxwldY$!MP+q8^Z(wpvy~vf8Ob`giT~V`Xn1rx*3O4p|V4#vRhxR=r0D;iV+IIy<>|(8VoSA|%WK zMVaFu4b2)V(b_a!pV9@-^@d%K0C!?RUwreXg3QVO?pc z*apKY!<268HUKZyyJQfIss6|%GjNmG{YPN=vwP3@GfGaR3hVPwPK1WX1ACCdncSn1 z%Y#^r0Z%$qhhFQJ9R1fGSFuxzd-i;S^*FrHu=5&InQC*{ppgM0!Q*rxeE_W}$4*uQ zhD19mAG!^rf-k-g;TmbzpS&$kzxRsB`YLazxN^GEPqbUp_D-S(46+xfUFQOlQ{c>Y zXon~1*Ytj&yB9mxWF=WxAI|U70E8IWXNy0+S8Ics;o)-)b@z`#oeeq|&4=TpG8Yd* zn#d5O+1~fM*i(weopl}B@kx4@o6?dBN0NVHI4A|EDzpW9rud3`{2NgNqM#Akc1?lx zmgb#YBL6QEFX-3x-v!?5FkspR`exFl4X(oHqSWX(rbb0*HV2yJV#!;HIddvZ%G}YMyRkMCK6^l_{@LKBmw5>ey$#opLmVPBlo+lt z7kWIP+=h~h9+wUFF&>dT%Ee_TRBAwU2>IH5*+45Mh-zR=q3ZO&<%PXWDnMN8IZ!9u z#zTd><5hdlIGdxA7%5IS!V5=Efl-!}EJPU;(a&9;-Wr6f)SOVAY-rLbzIKZK=oOFn zT2>=1355`8CwU;zK7Qf!|KEPu4?3~pNT3k1e0>qA7Qz5W?L?_qK z2FT99roi1u*9(Sj)L*=@mXBf{?hWj+gzC~;Z*HmAxhXm6lv4PNpE;(66zgcnOBb#Y z;K&X`4_&y5_jIB|Y=$>AM%S0zJnjP3b?hx9J@4M~)%n&nDg;}8G3-iT)v9F3P%2{B zt?h@StNi^K>Z%gyBC8sFOp+VJVT)3`!a}Wvg>psaLGtzg?xAbkN`K*wlp?d%yukebwC74I4c?AV zYS0e1y?b1Ws^l_9J(i>B3)iLeiG(lg;}gWCv0*!#$F)H$m zxv)D^^(Ob`a}fH*mWG*A{lW6)PkSjEmve1ZW%{d zPxQKGM0{UwXGW>iaAngsMS%I^EBqal+**>2LJ2b`ydf)qQ^f8GOxr{Cl#n^yM z5-OlLeqY-w=LOeD?}tlJlb)sbC;4hxwF?uv;kmthOc-aj+7U))d+Qci1ZU4`W%Eh+ z7nuY>GD_97CGu`?9P^WN!{{zDSR*W>EA_Sh#yYiQdA)sH#2> zs_Ur_Ws$mW|4@f&t80>}Pamq4;;&fLN8rMq(b#>Eox22>C9F zJTTAG=vq~2%Re5?)2Bb0;V+L>d3mAHwYveHd9)fuIfE$57&xOXA|f*tHx{*|i*Bd|K^p^!9@cRbdz+Pe~)nnj| z^Yc6m76>d^=Z7s*ulr=DXzn}|s=uDh^PzI0`+{5bP^hv- zHb8=;cfZ)KtEHAvmme zQ6&y5{a@p-mKC|{)f#bEejMI+J3Og%eRFYmnO1`%x{qvJv3k>LRy}?H$l5-xB@eGg z0?^Z|?&C}W2-Cqc+PiU-PXbUk8j|et%!L(!v^t!8nY|XDMgRMmDP^}i*ypifoA5o<IHf>Tvd^$?;aO*XXUV6D=}F!P;wl!4=XKXWC{jD z39Wvf=CoYMG)}I5_@xfM@WzD@JuWrCxoX!o_aDruKaoCj`kP`J)tB#Ob`?$6_IywNeYIBrj<1EhGdxV7G$t8 zRGi#(ieC`xP~#B91~yiq5#{P76Pu%A6m{IKvDTODp>#;WhKZ zS3|D490)ubz{{?bg?Rmcg|+hZK0=z(5h5upQ@Uk!zP?9Xuz+jJYJah*ig`k*dSJ3x zpsKhhG_E`a^Xc@~)4N)Sk%J~HLSNWvO4c_oAmcRV~n-bNOJ^}7JY<0i}kiw`uf+gs#I{O9y{|&zw0pDc-Lj-8CaD*`Y2oVlEU7fNl_~2p04D3|a(I4)~A6wLN^#PH!}` zv(FqwAeh9o_!^*GG*hae?KA6zrGgsIYH~}t*~>;0xK`c;8Xp^1qb_fZxu3Q`hH@ZL zxY~0KTb4G7N9Qb>Bv)GG;X=QwG$W$ePFF9MW?!{AIPV^Owg$saY<9~F#bj)Do<3uC z23)|Uv$On>7RpJnfoC>`60XcSgD(^+_CcP%Usnj@ySHYf%X37kF~i-8oZzir{#tih zXuwI4Bd|cX;0ie&n!PIqa%R`Rc&*_8Zw?U|B{(27g%@jhFnc$!OBl*}6ujP*!rzgv zrv?<5P~P>1*B?GlGZt!G=lM6fS``6WB^5#7$ifq8XC%S@THBKb~ii@~UVWs<-RDb#X7RU?h@Xj!b<*5VI5t*|~S~isXE8=~6)w zHygbLgE!Y5g=J3d_#!z6%9!zzMES3Cw&7ZFv^F*sH;bT7UE#%#l$xxEoUI-+J4+un zKi{Xi>Zo0i@r(>2<)LDhYv0a`jZmZ8@lvX|&fZQd7)@0zl~oO#tqP5khT%rN?Y`=; zg=f9d2?f&|K$x(nG(h3{R6;W8#0^hk-2!vf3d=@9ChpnrBy_5EQcN2x<_X?_wMGL1 zljuA|z37YvlKDYH{ho!f zkj#HAY~c0tg6D=pO=RD@&@XteDmN4wQLcW^I~iA<4c<-VM#E*bt4~&_B>SSPuPhEe z_io!x;^V-h$>+fZ1GZfg#NCs_8r83HAbo5PC>5c#oqw2|0?o;S%B*j;GQDls?Fe5MC0y&08-W20%rkBE(bY8FblgX2HzMw*$@^&z ztu%P|ebTNbCQWbhv4zxz`#v~ax(xWFU63Kj%fdw&`$;>H+Mtd56G@vVKS{fz*bdz_ zui5aNc9KTv4sBj=8lB4}_ch#}$#+-S{$Wmk7H))cI* zW3Ju6g+{A6jHMg6IGi~=r-N)^2F;FKBHM^O7O1HgEDx_DW0tq@sjetw9A8LDbyKJAYcpvLNL zyG*AvH*0a^(`%X;wHUM3W>$l)kiz!VLkdbAtbIbX59d|Ce|2I%sA-<#^qcf;aA|KJHmr%Oc;LQ~u22a~5 zlb7gOv8vbE(A(OYusM77hF*10eYud|811b`HP_E=2%NwVrA@|d%GXDH+3W(2Vg9cZ{NUo9_h?w$VSdYNdkwc;XX0t|2DAheBxqymt)gi8^Y z3edZ4tH54C>lVtl`F`7=bg-Ax)LdAFXI@Ee(|d2P>oaOKo7T8sdn1Rz$XIR+5#GQ3 z=OQmv(o{FnR&{)NI=?`+CHRmMYsr z?Gl5Fs%t$DVq?_BhnUB? z{pwoeiPfpH-PKE~s;ufkiMp!Rx@P<8+8cH4W~pm#6?MHt5;n_&8I{el5;oIYSyjQN z2umi(xp)O?eKilhoO6&g5aV|=>5Pt~7XF%>8Q)% zJ?KD%cq@j}WV=UN<;-Y=%n@P;@g|oyVip|RoBeC zrq_qH@CjK5AoA`T7)6`W`c>IZ)TZ!jlwBYF-Jroc2>({9BTK=eItNM|7#88ZK#a8@80?Tmt+a1zP(e4it;pPoQ5 z)<00J0an_gDs#`pw;G|No6CU3*yYtH3W}PAO^bbs!t%Z9@YC`=9dGsW6W3l&Q6qd} z<+t9~R1d)g*k67VyF;#21Y3}X+Bw)(ls3@4es8YN3CP4;oWz{I)F3H--j>lenxrWd zKMAAV^t|$GmjXwYN&j+hZ!5Q2@;DZfkQeCRvC$PeHp=MOXhM6(zQ;%w4(uD4ZKgJU z_NF#)1zl=Xrr53z-oKKHCLOqW2o+5NgKI2@V`~@rJ^yWV6jg&E3bsFHCTDQuH}L6c&29GfU>_k^)UV2~olNKl&}ws|!MeKl^pW z@g#lukEyYg!J^r~2$A;w7&sLfs)2*nr|4Y|C3)2#P5Y$a`7E}?1gnHQ^>falmV;&O z^8K7aW4ZoG*&X4rOzFB5z4PI=J`Pl{6(2Elc#{WPmZs<%4_|Xtu`oAL0)s|sk$s3y z!MEN{w*|2bp~AYSe>y<>zd>(C=MXdN_Z$g4f)`5imL3^Ead6Df*#Tp#P@R0;&t3a@ z8$;QTC5U`Tp@kdy%s85-JC63ZW)*@)KcQMTNCfhV&f5H&sWQ&ELm1MPT^H% z*`bGP%QC~>iEGfYB)#6Rb*|iuWG^;|wP|b3tgnxubFk5OxbqXn{c4%EW~+e(Fyt>m zSC2=;w(dsHA3O|=i zkv{DZ>8~k`TvB*CvgPl&`rW^!`X-~e)f~7v;Z2YkIVefr{hOc3cR~g(_xH!EWu#mF zewn{@mh(a60HfCvwxA28U$;DxqW|!FR>GBZrYWidG#xkfn*qK@RSo90_pVf@byLnw`GLn=*joaG3^WV09WS{;$k)c%xQCf&iFqtV|#=+!_fa6_W*Q zZkyjqp}}!}17dEx^?Lo`#MP~+Io0#t^|Uj+$=(b*lhf6F*;-9Fa{g|5RUzx@GXwl7 zFsL#GEZica3NHolksxuqe+n%^?c>23kOdo`cdTM_=qq2Sqi;GJCj*5v3KYD|5a=^j zvJg?c5fO-jqi6hkk2=%nJ-x+=>>*yvax`&QdyLDr&`gfQnG{}*3+o&D2miU}TED83 zA}OX3U!0BLvU|y7!A)x3zgr_KL|a2!jz3-IAlO=(n@R4<26;i21^c7dGJzGI(m?O) zUr=DFdi%@MNovqesz69nJ`%mrv42kIiF5r2dOOMpxcdbb+4FC;p88iqqGPweJi+k} zOe&$sIP(VM%zq~%kB;yQdy`=?fxh?e9OE8|2D*3t%3Sj{`Q}zS!dJhlhR`+w~s{1;;6|}ov>L7*bw!zV^q!N(nwObi^+_2PM411 z5SybB<3%8u&4tsekYQr3li~6miyJEL5AMT9VrBQFN`Q%0_INOLkBg%7b&MrY;#GyM^)i~8GB?K=uy&a6W)anj zwcDJ|5+fvW#d15F?3=h+bsZ}zFHargj9!$hw8V@E_5(X9o{3})yqcYA>h(~3?M4_u z=HFkbRH&&NDIRQnWA1AV9%4P>d%cZpKtLz6MlXdGSpY%knL|$%P`Xt;WOE@Q#-GFo6{3(`jA&-l$ZY^TZKNJKWQz z{9=AIYcmAL6W%vC{U(J6*yd)dG| zBnPOn)HFZe#FZ38%0ggw$3QxK+<{DS5C5z~mYSlb0(aZ+svaN9ZY%UK0BW47rT|$0 zTp>vCVJvHY2~?d2m6{Qdmq5%=O63HUik(~zp*dI!PbR~M`8-g(?qCfq`>|%_)WvyX z@M_B^iGvPyy-F!ioFt}5dmu016d00@S+gj0lasacx#VeTEo6b~1d@*Ps1DR*k~raH zIX;9=q#ZKUy1qfgYPGLr9hTHndh~9Yy2bY6TT}Sm2x$&&dWf<6y zsZ=Rkv_zpDKhCvG?Ep@U3npcuRKvmqmh6jHF`|f34DUn=OOwwB)72hM^~h^#WqA$k zBAyR+Ur&=rr3aP$>fxe2Q%TwbTbb(N%G5?5puPydjSfEwiqS6SozYS4zVN4(q0Is) zAPCy|v=BbC7+8yWw~(w+WwL{5!}F|+&nRT6>EYvYN07VZbr5ha983T*?tY9e4h)QIZWyUGc9z2klJI{{2(L;5OGL^9D9Tq59{!6xP^RqriUXc`!13 zhpZtUs(}yT^W`E^9c3Q!86cfdE&8E`;;vMd)^+vI=5e1v_&HQ_5t<~CViMn_24UzB zA%kd`#E(Y(a&p8glbo7+9?X?OD?{Z$Ut(bfYfecY8UG_FqIDV$RUQu*N4*fKElR|B;0cJn z&BWZRoJADX!!hAFhdI}V)WYNp*J7O5j41-P92+ly$ly3gjk`WlV1*)FA7c`WgxCPV z`MzAUVT(OXShCUh5gkq5-!11wxR#agw#TJBJO%&x#y2nHI>{5H=uP z?HY_%aCogeLDPn7WPf6C9ycYF&_1rO?2=YC)yXA&Ojo&##WGGh zk4JRMWgYNM@o+BlJL|JPW~kB-ci?>&F_dUY7Rm$!bsA72kCRZJCG}Tvh>I&nM(svO zTpwXPq4WmwzMKTO@H|lV@Nsk&suvG0INa)W7z8dcb_npFsZw7}2*1_S>a%Q0ts1S3 zhbjoRd?rL&|ESMi_S!)RZ!8EG=M!EF*(wg-ROpGF4KTUXTc;YK>XOge`%u-#l3rRc z5>^MyY{-(u=6sg!kFN%lZ{CnK^XCmBS3usVnr%_7hF3#|n1j>@q}P@chcMrV8F_v= ze!fF-$C1jWBTPaPh~#3Q6Rz5a-gMXGM`AB~uskFtxp zjak#=Ge`nMzp1u-j(rWGPc;6J>x>xMn9T_GEU^h2*^P2xS_~?r#u^qlx;>A^D!yVT zR578%CC+BSrHf&+tGw|j4^V`k+@B7%5c!2C~V3a;^*$B>^2;o zEw(jfPv@Ue+)&?k=vmc?I)W5(={0PHKp>&3Z=GY z4^uehYReK^frDt^(QjPRu;3*4o@}@rWU|9MH`H;<2@toRTeBozTD1WzStRwZUk=KG zlH9N=Q1)uWKC4NUSSd>p_nwWr&kda0Tgv@m8s_4Vn9ay$6Q&LsMLgTvrB9&&gN_OZq-Pm4b+&#{;IQEzcy&+r75 zS}(r82zyBbiS{_F6OObK5*Z8beUPQM@g_8VJrKG#J@ts{Ygr`P2*$yf;~#)|&kw7t z*r3Z$F>fqV?TY=YGwbYIYFfieK?oAXeb2H8kbLSjEF&C>uY4BD?D30PQ-lg6pXRZv z#BDX?hD)ksgb+IVgohEf^bgXm&;3~WONY_QFbr3IO_F-fYC*q@M<=O<@D_p<#s$BS-khGv3r&btpLKK_o!74q|!!*1GCS zRZT|G@?Nu2;nEEVlEp`ZS%*qhLdqvBIuV+13zH9{@p{x!^Qox%;tqwm-yvs21#aDzEr+eQ2 z{tDJ0oCbN`zw}C$9?tvPRbZZXuVlS^*|R1p_7GQ*Q%%W9B+;wnwS=HCP-gkE@kkG9 zDsqEi=_{a05g%Q}(tO=TE@<7bQ#eE}D=q~Cj^QP}9==+-A2Pc_OYN#jCz@ap@6(@{ zIny(aIUO|#WkIf_%aFFt=eufoHgziv;o#Lw1p#YXkw+9fo+P@sylSEFtu&}c6G+GS`Dk)>9=40h7maUZ zjs5*fOxZL2%D{nY2$g^TP?j8P%Zb43eL1mx#f^qA?z=IFRSe-1HMog2#_%a-0nn6q z)gfnwc-=s0pRh)-_FUg2+iDO+P;Gs~r@#`HCrDUG;iL`?&vJX-AAW0i$wANi;R+1i zPZF2j%=-CkbrU#jj&RLB;TuGgN9=0i1r!%gGjF&hd@}hqhak~yRE5Q-Sk}AB24kO? zuLH@DW1sE_EVFTuc!-2y;d!4|4rA?zWx^GU&R`Ys>o68srJ)NUTR@Uo+b3HwBwN%d z;=?fAnA#RMrbk?Yk&%}u!?DGZHQU_g(;?NhCKADd+nCep>mh*^rUOI>i%9S6kP8u! z?Cwh^rsu?{b~>^Zv!-fkYfY=ny^0E(+|(!)KP!j@@o3uy7R+ zy)W*(gVn7GOK-ZvHwY1sRYGtx-p{J+wpG#5q48y4pCzy9k>Vlc!}TQe<*s{KTy>c- zYdFgw5s~D+5RBiR>OXpsq(n%zQjNKa?sm#MgMuJh9mvDmUFuVu0{xSl;jiYeoxA#y`QXuTKk2 zqA)Z=)4}N%^HXIgE?2?x9EUT;yqCDSDY9vT=tOTsC%Ad(SCmU@h2G_?HzV- zf8A3xi-hog#t^^Ar9#q7P8UwnaO6XVniOUf-0A6>k&TkPLmgP`Q9-Wc?7LX$4f!&x z;d4<&5zD+ApOCxJdl)vx92dcU#-4p}{62_)u_p6TG2<%DPB~psUc?U2nl{g8v9`){ zNgM0P5RR5sY0QxmsbC%f)-d=l8)_uiW$`daxQ#`-BB~2Z=v^@jft|i1eY-?h@}(in z`r{)*xCP`b2A?P>PL5=`BpKW(Y*i$w ztCTiU0Wsd3A&sE)#0+W7C-U};iN8X=BHz<-A=dz5!fG0cbI>p@1gk(<)@Y=brnmYX zG(gSiY?+f%_m}++T!s0R8B11G@iM{ea|zy5M$Y+HKErPFZk$1TvAOI zBZi2!Fhq|yxs{gB)Lwkv$fS>-}4LIQ@U3rLy<_J?+Bu-ssvjZPWjTP3`}3`1J7i>rebpV<+Q+ zu(RysF|S;hM$P*lX;cLnUH@N@(Ip8r<>w36eSgikFx|JQhTXS(rZF8N+(^J&CMGVL z6<&L!o}V#`MGZlM4jE7EFRma>hdc#sO{`)lCe?o%2DO&ohOpI1GGVKaEU&&+u`jh{ zSHEgvO70i!pG7p1LW#k%ej&0Na>4h`Qe!q$(2fX^Iz+Os6Qv5Cm>piG^xN4i182<3 z{4zH4vN_}q>~tc4h@HdkGIxl;f=XbqGuJ|(WEb+T8_q#r9lrNGWKJNGO zS-PxHGj^}C+ucfG_9=OVxB9g|ZPtg0|-y4UZ)+9_hi>+Hi!>|TUS z4Q*4zG}=`OBMR92i1yvbO1_D2uzu#YMA*Sd{P+gD#Fz4GsVdrPM*9f{+IR{1670=o z{I~3thRlu)$#2D+po;mbOpP%1MxZ^USx<~C6i3r8cD2ppnsSop0&mc;nt1C?mK=fM zwAGWu>Nl|$AI@2#;wen_2U5tkGST(e#c@1H5uDQI=neq;P#$Z zj8iJBq`H+44hqfI++$5!C9JR5EK7K-?y`2x>uo?rr4bqxuD94P3sz~@#}gMwn(0#?_# zV=BoA4%PiVJp+iVRnk239rNRVy4JBz!{*6!3Hinbd&J27c7{ zc5YZ=C4O7TuJg@J^CAm}Q-uBw>wckd)m>!tX~#vZdBCn94=1=T6)!JhvwU_h_%VT1 zV(A{&)XVuKQgr@Ivge?{1Y&OQU{?-p^jg8FV&_1V3Gsy{zAxZ-GAv{s;6F^?fHn=) zB5BjRz~;_X1$vHsO*_8FUhtmJsM&Ee35+LHB{{X`0R@#z1Dt@WNb6e6n)(JgJuXGL ztwQS!V;xfZpIgjS-`vj#qiQ$~$R3{EI<~lGcB}9EEbS&wud2y&iBPCbLRhsSyVB6x zzgVCQqec29xT_ID(~(pR_S8<}+J;7$z!7>2O{<&GJucr{Cue<9CE}qEf=C(duTzDT zZU5kcNLgcFeQ-#xMapQC&Z?!%9a_pnQW_NiRZR_Gk8&jwB`o!=R;xy}#g$9h0C?lGw;Gc&$>Xft`YQR5LBo zsivqzqeG41`nx`2jmafv8^a3@c7Mb!MvRg1F}s-1T>CLo1DdlCg8%Q2nLGo}P^$6J zNWo%^5Qw5bVfB1=(QEI+avq56IAPKg2uk&)`e+{1tF3oFUg4LY_{TD^yJ#~HOACvA zGs+~9y-M6yqDnzQD6=6PGS7oFs;GBC znQbhm2 z?Nu7(i@*$)_udWV;pVpDGi5g(QO+* z|M`X`;U{SayCeDUT@dNI5X><39Ez!I#iXD&U!|-!O48I&d^J92@d~!<+ zZ-F}=%Wq4;M`AUcsYq#koJkK!)FNouy(m_`crca^K+)C?er+O(Mrx777mpb=oS3|I z9B+xATjTf?2+^N${OY>Plyt{0j71h{i8Lxt0k`MH2)uZIJSUzO`0=a6nt0x$$T-jl z*m2q&nwPHHA$>R{PPLzlwSjOE4yXf+`R|ZJ_(VKhsnklxIUHGyQ%khdd9GpdR90NS zXkKFjW9^eB1{^0JXh+Oz?3%B=l4iiMr@B_OFUzz~Z)v$!6YYm~tp744f0;~H~Rw2kI9=BQ|2ISe@FsA!*? z*O;TC?KQ74M@9Q6(I~U12sf{pH<%xy{ZhwxP>$;tJ*``dn?q*pHsktatWjtOu9vFD zHRg?IlT5;5R*UwrNi$4p(e~vVWzOPSk29_@kwrV%!c`ka1hjwu~* zgL%=i7JKpJT~B8n#?3pPo8!2dildulv9q`t7blk2;%P;+KyFy!r!qV){u|+O5p*)G zuo_ml+6tsaF~bViSb-BH@G~p$S@2Hb=T_LO>42@Z!VYGDdWBzDf%6hjaGe#l2~;Rt zZ-q?*B?~uLVb6lO3cs|%&VkB>8?CUJpkCo7f)y2e8$AmBTDaL-a3sODSYbzV0Q<@c zD+Tu!ZneT@LH-K2Sz*uA25h?@jHrEx3V!Ve1Z*b3zOlka(aSrmupg=1PAlvkf_-a+ z9fRl;erJUpZ{ZqNRJh9uJX9A2cUxgopj8ULx5Az!*d8nFFY5OSuyFz2{V^5g_R4pQ zyyQPlz1Yua=PgWpJ5*=1}#0s4HBLRQ50!t6{MU#-CT^7Z3Z;J+pCgcXP>y2A>8v%>cNP((HT-3nbVKXlRxeD5HYJY@x* zktI)Cfy*TDj1~C41fI15$NXp$gOhpfqQB+SKdeuGlVAMP3Op`>=d3`QXg#d(FDsCy zln*QX+X^g`um58O{!}E378{8|k0Kl|i8#^`||Z?t-xIp_?#7Z z@L*S}>GM|TW?9qGR^U1b9AgD8J1AzS@H#~+B=Q%m53$f-SmBFS7?zFsHuX^zLLUY&`60 z;S?)uqO8qS0*d!i;glW{TT(%bg=GB;r&|lZLhXLp3VR1NFMP!c`;KVwsuebs-ko8E zZ6SB4aHbXbCLwHC0l1Xjo@FigHrbL=F*1YK89Lkg=nGP&bF8rC1bfX2TTE1{P;Ng} zzCyWg8&6H=7d6~S#DCL@Vl-K~xmMVAaZ5UHz~9Rd0LbBKjn~)9I`&QWJRPF;S>`fxa zhgR74#BgOrR^U+rF0sPIA?o0zR$!?Feq;rXBQg8f3VV%g@h4W;yVQ%zB+O_2z9YN4 z+*6O*qYr;)g*{I!Uja5=x~bN3UqYq8{j>uAAa2}kg&m;}e{Y37N6K`M6?UW{ zV0*2wodnxwg{>smehKr*-x1l*2dpLkppplzu&+tM{7?Z#&HK>`TR@~aWQF}mU4PgQ zM)ZH5SoSABAYfZbOCPbqR*`c0*$O*OWH@StjikQ&#R~h9Wa^j|HUapG3V*c%=Muu> zR@m5hz)o0UFA`;bv%+Q&>~|~dI0EOwlUCRwDtAi4eDvQ-?0VW-a6Yl?87u4rl{;&N z{Y<*^KUUZ$ME*alu(`xYfBM6q|CW;0KIad#X`hg_`^yR&L$JTCuv5ef|5#xM2v$7G zqC_SW1xH$8KakNassJn}UCr#s zO#vKjE%+b9(X;|5l8zi}g+13u?03VMzfPFPS)WlxrSK&y>}!d5ycIZGD!U56`DE=T zSPQNq4k)q0R#3TG6$<{@KuoKLYAqyT(ycG-CRUhih3%xKO|im$Bgvj>g?&j)5>^;x zpbDp1VU&p~oIc8GW8Nb6c-dO;-^5xKU@sHw6>GU2qyZ|>atsOBtJZRFOJg#_1QwY| zox@aernTgLX})J!foG)OTxtb=Pa0&}w_kT%b_ zQ(5vg6XpR@_m+%l&Y*)eP&=B(~c&1 zz;oSLL5GSDAgH*r1uy2mH4;C!;OYEmXA#ws=Oxd>NRb-7EC(}(m*rq5I^@)&UGqd? zOJ0wErijN|@htIdOFkmwGa9gpP$TB#;9#;s+hw>@UPcDp>H1v6x8j+ZZzwr(0ML90 zI7X7X(@U+q5t;=|Uweamv=k%j>*6e*p9r2QfjG|vD@Sg8q{wnNly!w0(O zDcU~?_q*98Huj=RgeEiOQlOWN?}Y@R4@!_(ToDO+N5%~i1DEe#WB#c#?g zX=CKCTPbx%smg4OU`#U}U>vvPP2p#edAZTZbCcIhe%=n-39DF*fB zZocGGF|s|sg74fyziHw`d)}2V*eP0d;J@;jTMc06j{G$+-QJF%_sLFWXFKvZxD$WLgLm&5F|;#J z@=)7mp*FKnds=6VKFt$fbmr}g=HY0q{&6f_jgovt{6X}`uSx%k)VG(qBUJlrx7|y9 zJE(8)j8a9tC|VF%FC8@a?r5zE|B-tMp&-2qgk;C3_>-SOJRd<=U_ zH0i?s@iceQ260JO-k+6&}1q}W+R%q~& z-S0XeRu%eQcxQunq8lH}UKSCT@CNv4dI_ItKcsNQsQHmgd^JCen%~=dhaF`J$yE4l_hfQ=TXa`tT?*uQz`@?wM~*L3y7syC~_+Q$^1{d?KIwrTDfFzn8z= zRrKl08}hfhiii91(fsr(@poT7ickGijOxcnM`1<-w*LEBxcc)K`NvJgjQ%`@fH=(U zUGZ^$p20SVZ~F5rexjW?-Jkd5Yqp851GvVId?#}5;K^e1tvp-2dNp^6&j;`Ud~92B z-4*aEN;A>$BGd{@vie$Fz>F<#rRv%=7k1& z>i6D!>SrS3Hhz{*@Bt+=IK&mV^BJ*Y*O|=uoTx>pm&kVQ`7O&pKvz2F7+QgT4^O3w{jW}^HPi9BO?f3BE{HxWT+avezNBD<({cZ<~ z_4k61!V8NY!CUf|Hi=FnAP=X+RU`O2_=&m?>hhFmc`eW2%eIOI_wgzGm5m-e*WJ%o zbMckPd4MM;9fhA|I#~*IKAbEUyp?_r@U8r%JyjNYkT>NgJBrRDcv>7L5A}eu2BTo( zVln$cK8YV~DcU~7H}NSQ%OW4$+liN-;uqni z?N9N0>Uln*7$1qkM=*hjKB5>O+4iZp^=bY*sDJcnQ2$UD5mUs+*2Q~@*1{uW-d7Zo zvCq1QMMZo9UMVQXD<57Yh7@Dog?YQ9qi~J%-F~rCd^!^T>?tvR6beu1EZ!c)$MIDc zi;mAAvwuol{R|(7+P?J+zpP?yV=C45uNETvS?J)U9Z6jziW{Eg_u}O*pG8leQl?(R z(__}RHyA`0Bkti{Mfn2A-Yw5T6+OR6G87-1BIZ5EXYp^olJ}0WDaH%hi;czb=lSyF zwe2di7+&f!8b$!W3rE9*p-)Eh&+s#2jAZ1cWB5~i@uUZ=Zl5ULz7(f0>6uI?&N*_yBFYIo-A{`h)F8MBQ_aP+(G^Y zI$Fxf{7quWIQ{@X{iU~AKaJxz@ZXGPva@A3y~Gn(UdeRG3AznYNu-uJ9Fu?c!O4K< z9*J#;o7!yHn5AU8m^_|$KhL6nkLO*w?NM@QU8Fw_%-#bsHD;ONvv94sYm?%Z6NI>C z(_-nnv|R^g<;goyG=Vovezy(QA5zd135GM}8T4B|0g`i4WR-B5Z8-86Sm)2J-i9tD z@JSIn5&rB!MGP##L?N@(tZm*><0iskSS>D{1S7TSd(sVwc9#a^o=%!IiH~DjM9yUH z76Wv2+_8$K;yhhXR`DmIXrmFk>l=El4WGF(0N&>&LlCzg7jIAIjgo10ooWZI zab#nZX6uKg%?$I8exA(VL=z@W;m;*})fSpS29CzGyZTdkvwVEn4x#nvIuPw58!R4i z0~8lXbqDqcQNRsPPUS=DZ9i_yp($3h4~g6fMQ#{E+XLbIQMB2~NpWr}&usXO8E2tR zSY<7v4ID#r1}q^p18vw2PT{VtLKAQX&WKwC*IMDD5r)SZ4VjEEGzj)PCUx*}E7Xc= zAAv)}eLeWK;J@WP_a&5`rxk?542#h?h29y-J!Fk>!-q5od;fHP3EM2RP6$5ydh3Vj zygUc3!Bj((bH`B2a4wv^0DKrh5KJRRw|w?8zmn!JJ-d#mXA3h&oz%ucFB3xk$W zy+$omumZq1Jf13#*wj~f|2mss8!^szukhbpV^fXC8|d?Nn$-8N^0o#PxV+GMGx&8^8s7=w=9C&`B(t z4QFNRDzd!kB6|*ZLSmZCfi*s{N8C7vPvEE9i{o?nO)=BE80xQ=c;zN=!ryzv6R*Kr zUHP3@{TjcSpZ!YYzs^79pLZ3%yw2a|Kd%%ozX6rJ`K(y;2Antio_T}c+hD8WdVx^{ zfl091W;tzFhPk{M)%Dz5o?Y8lJ(^66=D#hP&g0GNe}Az- z3X1Ar!d;r1xz=JTu~DAdAe%619=|ajFq(-AW`q>>5L@2h^+fHrc#jxNM5Oo>-x~TB zua|6oi)8>89svQ7LaZE%ZaF@m$0W}(4H(4GlozSAw!VeV2NE`)Uqipw&*v(A6j~RY zZ_hx*#n6>p6$78+cCm0iPpad2ibq6i`JH1w!h77)M*KOSKj3&5dxkO8*bZ_3*W0|F zITMnU#p`eLhoPU+|IK?fLlDCtG|*#MLoC1O!khMj!e?bBiPC~n=K~Wdj*@@#SJ^_* zbOCP}Z5CfBZd<_buusl#Ef!xb0Jppb{Rw@XNlgP*ubzWwlXR0_`9?Hd$gi@$?!-G? z-@!ZQzLxLgR`JdUSkF#;^noZ^z%PxMg9N1c@d+hqq-Pi7oH&`bpdO zn*N`*J07Y5ShXF^gmV!e-GJ%@(`J8Ks#+s&Ce;_BUvw&&IoEt8U2GWwFZ}E(NW~XM zdwupNhT2U?e>Z%AOW)<4BVLj9EqRw`HT_7k#>WyD?4`{`04y)Yv}|Z_MCi=5)c2vG zC7gD1YO;oBa1%fN+%XC1=u-Ub5S)=k&dqYu++U^JeX^S_~1RB-NX-|6h7l+3Mu^> zHEOcQ>bPc1UCa~NdXco4=kawLL}&c6_r%SMd9xP#K~q^%h|rtXw`3N>hMKR33j|3V zO98)77b7`2`eLzbF~6IQ7ro!-4Ow~FgYWZL*6^g^? zY?uela(tn9^8<<(n_>1NGF=&8;AC0y5=ajh#n5(1|ry9uZhkd^0r0C zv4TS?avOHx0~SS2f7fgj?$e$0;3Fx4Nq5q3jv+PRy@Ou{UMCXC!nE8TZ12=o%em4p zZW^rpU7B*gI})Ep_+W=^et`V9t;%ps9RHAC&0Z6|%lIW1kApW4Tx1Yw=RCSb-)xbK z1|UpemI$2a0}SN%6XzH&z$qcYUsuMjWXOgr;hi;4N7`I7Dt4sJ(G%DA6 zF>?veOB>zQU#2O;tdT^+g6>+vyVgdCgbGsZ^&WZ?die{{bSbo(^x%`keM@-+AKytl zx)lBL9@gL>`1wsZKH`JHyQ8p~bG*vPrpk%ebnlk=kU*tyq4M z6IIXVW;tAY8DoCSp@9%RC|VPAFPagFcmgx#HAEWZ{M!p$lceBA(xQ;Bu{Hs}mqO_1 zl{~yct(Ck@N$;guuwvlyf3jU)i}uTT#~B>=A(gpH7X>SL@3@aQngFez zYrmMff_G=r#jX_y82?x!V#@h+wqLwf&b!%t=5u~$k+71F&6!5(8g(@60F<*d2aqq1 z2@v0}f=BlC_5d-0L@?|85d0ko!8M=q`*W-aTt*ENE7YK_h*=HkdSkn^3$Y$1&}NCN zR`YB8j80>((II&vT~7e0TWNIc5LIb(;Qm9X{#wnOc}&jSuO(`)O`A}5=NjIW@i9}& zrhUeHGF~#ZY~SZRhVf}r#nH9=3tl=^lzqW_@p)4PTgOxQA_=cA3fA%0_>!ptrCW)V z_52%NZr->z@SS|^)Uv-e@T08g<#La4ek~34B;)-5<%Prhu^GAIflUY_v7~Aftm)d+ zvck>$F(r3?s!=U)E6fDq6vJBRt85rDqw12AwP!2Oh(l}@4OxY=Yj?aZqPFpy6HBJb ztstYcX~spg21-7)4J&b!l}L}jv7JwEX)>P^I!8PB6FNzY#_-xQMT^EEG}59g`A`D+ z(EP>|G2&~!o-GrdzTvOn=bLZ%tJFac@4)h*IK0=P2gEDOp_NP(+8$89)3^K=3GW$~ z1wln!MBDH92mT=RB8nyn=PuaaW#X}2Nck@l>AQK|jCr!=s(lbdHx3R(LnYcZf(#&f z8ffZ^$9D4x{IYKqMz0v~hZ{ck}8677W_sade3t#!Al*yt>?jYHzt#E~?kEl4j{beo8t~73c zFb7gE1j7}D&$(vhmgib3_n&5#+qcbIZF_SAu1&BsM$zUr7jGZH_{ytd?*aa?CyVml z7OxMv)nsc*-N>we^IV?Ww#if)l8`iSRM!-h9r-`VJxc$*oApiyI)1Gh$~BOOD!U3*q^ zKEwyd8Q>g>LJ`xwa)>_wZ61G^x8*ax^R{rvVLmlxzal+=g1f|)dwEhlY+*`Pq=hza z2boecgoky<7valL?m!O67As#ip8FAxqzV!Txhro zz$-Ll(jB?DgqBdXBSx5zU4bpFct1!H*+=lgelhe2{9hQpr|^q#n0f>o-omf27a^g6 zaLx6af*8_~Lt}bSFg7eE63dV9Q87qj$X0C-y?^E%T%+mM$X+171zS1sXP#XPnu#h| za2G`d(c0KlvGQl08ufi^*$c*Kfp!!{{`gkha+Kc*?iut8B9PrX#Lq`DGWJVXG2$1V z3f>y?3*rpPVx7c4zwqH~xfp&7`H6))WG`fT*rqq4^LjR|#a(V2jQ2Kd_PA}T*o^F7 zopDUA>ZgPRMs}apE>)5Wn0cRvhPPD82JI5^pcSLomeOFY3RO+&jv>QD=ja zisKdGx)lRG15Y3ayMLQleS+sXi>E5^QZg_ISv*yoI>AM)(c8^$Y2zD62{fqo_iv!u z=evdaJ7zk-Q7_^JaA9^#63c%_MYf0?zoYhB#9zi;%1M45U;1qYFQUjpw6RR)G~~A_ zq$vg2cJBj;Xk;FGSo;#wdgvO~M4ODsiFCaP*P~;NYnU5twZphxg6ro^_!wM&YQopz z`Z*K60CNg+Y))-6U<_GF4LZ8XDR@e>-V=JEom|2yH;0VI3f7g1Qcs*aEmO8vpW(f+ zoOI3^ena+4p4Gf^?Q!t;qD7yx{L$LrZ~l;0=U$BucgyjW(_-sczLkv;bN|EZ;b;AS z_$63Zjy$BTi4Bo#3+;n+q)<%RrH#_HbM-~@KV;#{{@{a<-F)K@zLK;XB%5l@HL5j5 zzzDY7c2s`kpIBLXN-X}9?|>pJawuu2{+s9cPTUp$h0Z!HUj7TSBTkkb_=^wY1}+3z zez+)bb1SaXQ@N7*!Q;wZEa(S~Lf-@R9!?*kH>NzUBpLg>i^hsFDkzDM;jI%fvU=<6 z3N0DFB0?zzSx!eN?eNnyQh5wZpyx&^^%)*+jFLqUM=5AtS$edR8Kn36#3+=gHc>lb zm1p7+zeRvl%0mc?q2ynURraHVNt@{orDZaDAqww4YP*yzgftR{-GlUmOZkTA6h+IEqmen69fLa}CRUh>1GS9r&=?y0d&_qk z)mCU%>jAZuT>Ly(8(eu(Os%a9#>ao6XJg9Z>L|6aB3)!BD()g9pM!WsTX4dr)rA|a zP;O2;HmR>xy*7+pkYCyk3pnjA)uDD9|m5v?6IE@HHU#zib9hsiPy?bib~t-c2< zq8BV6F2^^tWlprXoD~gsy^k0QA4T#J!+-7gBJa~haK8N?Vl&86@59mx52M@h67R#3 z3Ja2FziuyU@tJcD3@ zq6-QtE(+n0$e|#p5l{&P`TweW-peC``?=r#qrC2!?yjz`s_w3?uI}k-WTBEN-}63L zRxStvjPX7VogD8ESMq!Ga}eq%NFAd}i=+nBQ4fe48c<9BY(T|mbp@p4np~^FD2R}( z1yr?B%V}8)CP~!tHfn)2NkL;wpm?&K8X`j2jX+FsQ?AubFDP)H=YfEzY(Nc?|M4~B z3!7&xd>bcAd~Zz#z9&I8tQp)IF!}Ho1SEzRBqZKU!E}#)h{|Ey^LU(npt}();<(wA zI}f;|IaBJZZ6;^B?bHkA^EkUvEJPX92bI@0#pz^90_~z3(zGNtAEQ#(z?WM;8_xBZ zi36gzA@x9pgAM7PPHf_i_c$*^JM{rqF}4xi82e@h z5PF^BVm+eMK0QV3X+*8P)y{1O!J}5xsKio688gWJ^eU_{R}NG z75U^21ryff=BlEiQz~7fzb;0mQq%t2zG#mVKvi|asxo+ybHQ-d;(gSm?=5~GL?Q}Q z@RG9(LL`^$phtNswE;EFH0n^7p~I7C2a=N&6mdfuWsCwFoPDYtE;|@#JJ~SxLe_r3 z&4RJV;)_Fwg^?Tozb`EIr%}f&#sjv^55LudY=dNgD$OC@@1uz4*NwMT(#djtPkGA#pK*6yt_=oRm|u`3z~O$(!g91RHD|X6RDyw_ zHw;W5U$9xi+k_fpAkS<;;?t z93y)eBj2MbHBMww>K^BKjFaHDX>?O+3fjzWO1E^|3v{{TN@6nWziS-!3>G|>8upC# ztxXI*i$t56`%l4E$Q?=Es3YYZl`Q}TLr|grW4Q3boR*>CQx9^y@JXq_$i^D2r!dxt z_Un%|lUr|5yjYM^p8@${qa2Vd>qmmYk8jSvsHsDBMyHI)^%+ibuXvs_pzl3bP+;cW5FZ&{P=Fj%#oFSjpVq^^azfp6>ks69E-=Yi~M&mdl*l-s$F(W zHQd~}Wo$pi0Ed?ILe>*XzfPv|JH}U04G(^q0gZs3ilqnhn`c2gl06Jy`hpgSJC1%* z+`xlA(Tn2In86Hq8)()=uFsV>mbTiWfc_rFF60bjmyS02c`8&}A5J?KHf(rcD+M^f zkz3CT6RImPUe*u!!?0q*U=c1~+*YnbwksY>3t2b6MPuCuKc3JlUFqP>OJJZ`Q+Y|j zzO}XSCCmhpMn;xwYDngPy`d7M7t(r3#{>jFmS8ct30G+v5&p0JcbQji7X32Fg&GLF z!5JvOYR8QC2C+%yI*+kdt^xfB?jU~bKXFrGX2CT%h@oh09MQK8MzZ<;0?8|*<>NkQ zWBI{6k)mRN!~Spz0xFy8$KxIIqbOE|alVn16kopDHI8%gdCmJIgV}ZWS${b?6 zyN6f_&bu(#4d*!+pA<;|of+m-Hg+2&8K-Cp+C0yxK4M|xxV3rL#t5ezhn z6ta}RRxw;_hl1947Z+6&f)oqKQGO{=`GL`uGt@5#3!X}SNy-RfFxa?-o@uBGNi0JA z@T2)mRFso3Sq?F4B+6lI+lx=Eb5zzl`?4Ue00A)AGRf|0E+7YdmyZ(ItW@9=f2W=u zBxeYx%aZeIgSiq;PCGW6r?NUz-9wrzqmLmEh|k?cY&NKYUlnl{H9}<=u?*)h=r4&E zMhDr0nFy1tnyWFceniqYNU$O}Z6C42Ae%+eP ze!)Br;4M4Zd0>S@lufo00_tuR9*JHlQJ)7{&ue)j(Ca_Kh)Q+!!_YfqerelQl+y_d@g;S;p{|5ORBhbVH3~ z_#F+hyuWo&lwr}Ukt4ZSi1t96frjvEUF7jbN@`aJM}e@+Tr3(s9RRn~!&&*hc6`kN z-Vl-_j6Gs;z{-IZ%j#F}R8}isH;TfOyZmO-D!;JK_w;Y*xp1A zW#bHTgZlu__}JDZYiL9myFFfZgMwVz(To|BPtg^zI4^HA+n6QOcxi4kVL~YSeNb{6 z;!O>ja)3v<8Yu~J%k75DAom?0Ccy*L%7TJ|kJm^6g3n_T`;$HqHa27W#VTEj7Fkmfe$7fYN6y9N%F|7J9!wMOY#Dd-Abn7^)OP0W}*QC0rpLho2>?1N|MZ{tB%8mYq=(nUFAbFkip}5 zn{Y#+T64kOk$VTyeV7b2$HyY?4iR#>RA69{Q@|TMY-K`TxneTpaOPvRm+hy~qu^o8 zx;HyKMY3ZrWU@6hR3GOC1}MimQ=YS5Y6u~9M-fOt#R}2+R?AI@Cet)EQ#a7*;=RzQ zJx&Y)9$7&agI75=v14)^2dp2W63p(>Rlp&Y&hPvNFPRX5f}#@Tf{N8iyt`h*Evy+D z?lD$ra`~jv%eT=xz&dFBeW zRb`hR)!Z2AAC-wFM5B*6%0>}wRS*nCpjCl>YpR3`s9p>`fQ+S%#^3u?OJ`gN`J~Q% z%pWZ`+K4)lip^XMjhL2iU9C=A2xTN{@I}^K2a(4Vt`DlD})lnza@t_Ar@W zu+itSQT2wQ8&9wxg3HcFUiFfV(mcayR=&^7-c_;u_`&^E-=5VT^O5N2rK^m}`C_P- zvW;W&#R?89;A7#XhvPnMf`fpNSSte#FHoJEH`+!l!Eh-;bKyQ<1VKj&n+skZP`23E zjOzP0)^pLRYV1Zyt6V-&r!=5?Hnhe)f)_bsx<1zfrbnXIh>Px})Dyf~v z5TL&qme*_g|HCREaq|B3Pz7j#%?tSura%Y?Z%lMrI2Chv5XXy+i99Da#I{hdVQoVB z|82`e_jKx9^VK(S!zG(#guXmjQ$4_$ze*@kl1}M&V2d+IkuZd}W8b6(TlpE;-^d1W zeH&_@f*Z5}Ct8lc96A`lm`w$yn9_#Y{TCbaQyXg2FRU>xY2a;`<}9@F{nV%s$wLkP z_Y}`-OJO&~WA6=T$X}TvyDndw68iM$C1n3~`4pGJRDv(j{03KE{1@?D`Tq;g_iz)& ze-Y1B|93p=i?7>KqJa--UucUh+cTnHJ8A~|KjvG{BHhr#4~Q69!fJ={8jhS;v5D4d zWMbU`^Dg(_LP5}(oVRS~^4rz^MG~|*On0d=O|#A$GJ=deOY^xZJ{;*fqZjR&~=vkSP^vG`5zLd@UX)0kUM{j3KlKASdany zZ=lY*h!q!T}wYrzlGxh(Dv{~ zd2X^z1*eI8HPU0u24zQJihdrPgG&ol2uT|g4O`9 zM%;d>qsqmygPZEGidOb6Kk|heyyR+2W>#hesWnT*2QGHUdHD_Kh8Hxg4Yg9PfECm$ z167tdXJ$(*0JtvDUuu4GrHdHc0fE257nq?za&nO@E-j&JTtekblx4VdA|@zF8MS1)auF+3#BwWvq5oGasT(R$*DZm4y~~vF z*WgtzRHU9;B3{{#r8+h3N!fwDS2`e%Q+?`pGiRTC_ zGJGGrRAk^!fic^USFs#pO@=p>q$b0LUo5*WCuS?-YJ~USi5YhSmfbK>#SaMmgc?SgYS1>V3wA0^gkGEbkxbmU1f#Rt^_(cQ2GeCFrCovv}ExA3Zj?7AX5SHH{H0aS&QqPnN{IDyjuuyu72Yx@h?BYCvV3s?JTyKXB z(MDvAf+`o;unb*BLtP!Fp~~;c%4R~VFwi1iv;{R(tW!Z65EkA~&`_l{+l2Zk4!5Hg z{K*nIeJ~?<8gbm51sLZ&tnG4}!!%=LT7@Ig)i_m}p{>HPKzU?0q*DGyOdte|N;BOH zy0WsY!ysb8ej%*}m=|Tg23oVQ;o5SIE_g{LY-+qR*Th%tsWsGPXn-|48|be! z+GITlwPr=aS zhtR3uw~2E@yl~{~aPQ(RIcGr(k8~IeVSVN4!GMNSsPn-*-D#`x+oEG9`g`wn*p_UK z^uHr)j__54Hp15s#yLeryfwxfCa?&1HF`6oUD9KlhtX>l?!2?v#e?@E<0`mloDzMm zq8tRTTm?VKQ=)%oDnxLoGd-oB3XJMPpBaf2b95V>-PUn6l-ZUF=8FE;P^X4rO~4?^ z{juRFE8RLJ7G6Wc^i%7vrAH%-BXh;$-Kn2ZIahqtopx}zs0U5g-w(9Nq{nrHFJ-|c zMSov>inD+SZpx;GM%l8!;cSXE*!larKaf{H6iB>*3Q1okmfTFO>MkXZ1z!9?Q-9;F zrDEUBKyam~zL}i+RHJVMnGutdk({3fLogKc&=@n{vs0HARAxu9{G?JSg0sY4aO3P; zp1bf?Mex?v^Em<3EAB}tsPE05G#Eo;+AXw3UnM@ch5lev7Ky}O)Fojx;VuDq@@wq1 zzE=ECFKQjLnmk@i2G%+;trv~d-x1&Tg7@l6qD61INnb6-^rq3==6$`%Zuu(`W3WBT zM=Tw}+lQLe`-oC~Fy$54`B44gB?vJS1Nu?UswPc923zu_jYLn!JD zq@Iw+I|ssVZnKy-kh=IQ*Q;ySVzM)4;E1u7hb!%TQEh3)8+tL&Lag8o9gZO}a#4ka z`J}0jm&(^$^%psufpCdWEB3K5Shh!B!nAOT-I^E35Ljb`a9_<(ukbDbH=wDPXw=#D zfdRLH$v8%F@OH}YTR6{vtc?ee}HAy5#iiPU6MkNlndcOdvxn#G4oFP z3>Q}n9z;`(S&hWeLF7%SIIFYr$(phA{CSad7i|uM_4!@YCG0UZhsL4fJe@-=^^XFt z=FlF(EhtY9rrY#)0$&WKiMqZzaQnTKpc_w_V)%V@J%>x~L(fEb>^{1dL*Gyp<_v{I zRf~l~X>7x%U?|5v5m_KV0xS@)z$NQvVGpBg+Es&iy!W7ElN#1WtD0AcI!xtQWWXq^ z@qUt#tz~N#z)u|piAVVMFeqyX&kdsj4j&s%ehx1Tr&%1%yq{+1<)ZEgoJ21dw~oN5 zTP{8uL46Ul97+8VOd3gxTJFKJ0D6u$0@DgkkJQ0BxpEe>&zs;JQISN-5@W_v%cyel zz_tH?7&(e=LHXB5(I52kK-DOM5&yh6pG&J_kp)(O$adOE@#<)q>%wTd8=3DKL$AgK z2X-jGdqktL)ENnV#?p-lo*zpi6Us@pTJEb^<-#+LGLh7494$zh#B*u4(TquwOmvL<8O*6&$JXrftZR30uX693my61?Y27BMd zOzVP}n@{PuM64vA{$!w7$^>d_y-(IuM(1P01$Ns6IMweJ4^N=a! zeCtWhxehteW=6aW18_QRHMq??CQx!?R0_OQhHMQ8n5hU-`A!RD(I;XSJ}0~rso~u- z0VCtt7-TE4I(I72Oti#KUT*D^1g+4$vd}Sh{gK*5kRl%kDKdW| zHDQXZcf-#n($R2U5_q}o0lF5#VmyfM1D+;61iAcN^m&NxwSrQSt$EQ-NJi;H>2z0TKq5Jb}|JsY*x z70668BCP$QaRH^JK;Y1NlVvxR(<|`|!86e*|EGXPFn2c{M|!JvPJb|s8Q!c@)Yu> zpraU0G0EnvliA)N#>|>2227#5n5t{1P(%HK*gA#UV$?n}h1y9q)a@6T>A?|hYn-)D zTsxKi;-6)Do7nXrkMQ_y;wdt*n`5%M6Zh{#H`k0T{tvY_=aF5*+~td4RY{I-AsrnO zFMW^kS}t!R%B%xy6tqqDx5MSDa?8|?;Jt8cWU(sT_yk~OCYC*#Ic zFMD(F7Ap*DvT7^evDgj?U>MsGb9AVB`D?Emv-kH{xptBAwk@uJkuVbaOBTrv~tN z4HDQTOO|GfFiv1&HXY<+4!CLNrN zxW#09Zil*nyiuqb*SY9Vl<=Ke~&HiHI1rA?R#)#s}~hndt* z*N+7XW>LPb9~Y;eruPtRm`&Y`(ploC+0gmF7DJwa4qhc*c!mUm&U0vs@$no{H3ynh zm1sGa9&cYITZv5B2Gs;%8o(R@K>K;aT4Ct#cDy54>$v_t9*7aUzsNJ!3F4d z${&?|ixSw!qC2d~Af>=1ByIGKfo{)HKGj`<4v&=>p<r;0AI`l+LGyX~)1Jer6y3 zM3+Ghj>QBFoQpX0b2exEIyRWI1A z6OEnuN4Q2i&li>ITxjmB!DCb^q*A{Z4p_lP!NkFUWuwGLf?DZE13w9B8mXTU$%|-G z+NEGI^FfzH0ZA>fauHpHjGr&Ue$O${X))E0!e%e1T@nW#< zggCdDdZmKw@NyXilQX^;oPPrZozFL`QiF@B0kS_-Ol{+3%?V&eLN4H~EvDq8lhUw= zNmn7Eu-;n?d3awmei8C;LfrKtjbX8S|3z9gP=csqCj?mym#7f(ECq2+A><@7m<*5i zT-Yc=tdFUok}Rj{dw&TknkAxNqMrI2V!%t(LH|Zfc?s&=OJdtgyzHI7ly2sA;Vnz4 zb=p$71jj7O1`MoZ{CQ46Dcu;4yTpscoTap#bLK3g8;!HCh^5P@TT1atV$&(MpjNEJ zK?}Ah6E7l>UbT#FG746T?3byn%7^}`@<~Ir;pThlWg5_&;dsfJy^^iZFk$+c?&uoy z;6z_U9-9XM@xsg0tqrnB&v2&z5#E1`!?CaGSGb(d!!v?sgw!EctQPk!rxQl?E28fT zv=PrmD`+)`H~$UR5MZ|OZ!{|bV7RD;kr>sBt6rhOJs7mK@CGXbG2mOJ#l^5_Pg5lf z9F*WVIE)Kq*xc?Et^}o4ijQBR>wAAJeGQOhkBo2+*uRFd{nsGhE<_57d5AOl5m|8| zE3SSTkGbZRPhW|cz`%|K9T;9;BW_bGJycaNDJ1bNa-V{8LP@j0%`|X&X@iDxp ze0_~{&&HV+b*O^}bViMv$%WroBT83NhE+wdSNOqQI|3%iU28=3N@|zx)}qzaf_Z2Z z)?s=d=^sTs~& zHu~_DM-JXeIg##^&PD)`cIh_|f%y$5)xj%R=R+7_hw*P|gXdJ|e z39knU-!woIQ@AuM%tn?SgDe{E2nbSqb-=BNhvCarRP+YDTWeTmR)+>%nnXb-G|%rc+6*!}tiMP`qYFtY$$rUchQ5a0|xA$t~=&Sc=cZ~>L0c(g*Q&Ig-8Y$(7ag*Fra)etWf^vjQ zZG&>e!*H$9pm-}yP@~T;hG8R2in?s0_ly{kHLzpzr9A?E%I<_g@f@-J%EXa=mlP9+RTCfg?10*p(~d95oBhmzTt7D_&*tK_D; zf~DE~6iVLeCf~J-TGp4q3z1COb*2M4aslxCUDQP-;lhe+jN1UHk^%>JQ6~eaCGN(W zVTKsGo95S>&KRP_Np^kg-tsjT=SBP;tode$R(t6830w)*#);Vx68fY)R8n8 z2UIoP99tu9ET=5}qIjwtI|MMe@1-XZEZj?v>gNLu_R;-J>n9FSA3Sb90LxA~h|MPt z*dPx5OFqHI2aIvu8>1x?I2!0sf!#m-T;R`N&~P?5S0AEO1MeFhrgFkPRNQxOg=hBp zFX?)0PIUc>+Q!Y8W-Qe;ry$x>_EccZSF}v0d&dnG)^VC<3>zz+Jx+a%{9%F5kHa!( z4j(;kh^RV2&za+g8jp*`0wu0BmUG-AjEG50i7_lyH3+&oraAYE(ZQUqs?*ShvWq|{eaDs z8(eHBj2$w5!iaGbf$^|Och5jX?8kz?<-#|{}YOuMvEwX+0{|45IfCEPbYf82fA zkkO;@``|D!qMq5FhJ#wq*E2VfHTr=u_YNJB;X-<_Q=nh6InRi4YZkj3nIFW~R1;X7 zV%Di6R;Qcy86V9J)NNya8*99?Oc+<2uNgnT90*)(?rCV0?-BEEHPei$Jz_0~Mde}# zhb86W1c&A2BBrmImQz)(dy)sIz5Vo%U8UQn^}e~oo_gIi{;T*QQ*(;;B6Y>|=^f2o zrPq6=d~-T`|Ldhl>>;3Y-N(VpRfBJiWw^i9F_}j7q+ZusmhjdYWaSV*N@TIFXnPsbb!O;r~+B^fcSu4 zmLCwu5%#D$08o`}#zwXJu++MkIk0bsWChCR+(n-wwXAQhH)ls_>WKH>oVUTN(9k3- z?1S_NVEIrkA5iP(!rz~3Jt+RlVaY-9CWqw*MLEJARR;mG-3OjEJ_d#syYl%75h5PJ6T$K zs`E=Z10QIi8n1Egg-3KxgSKGBTcy9#D%-T{(njGZ6E|ETvEqAf<`L0hAR}=^^x?4R zD2K^W#hh4jRLsQ79_2?-d2y%DZg}U7(h;|J=#&1KEBFPRtBO+xAD#6{<@(aS6FP6Z zMz}IHm{W_s6#8udC?87X16uW^XnGshD#PR`Tju-^YQn6kL^NX!$DwJb`^tU_XP!E<-qZWm^L^3$Qn zyY@G8@!-^jCsA};>lQs1WOj)gbk&Ap^d65KH#oKAB=*J8`n@N`TYm($RVT$helGe( zR3XeM`3A7dBFj2`y(aU~Zrl3yNK8<$E51SLa!wt5ng+{=unLGPTu|Imw$d zPeo;XIO#igG^#kk7*vWOcQOW*!p~uOrT8m{Rh8mR4vW4QReGc*608S(pho}q zIMu3r@BFy!nV+8#?a%wrJ7VcWt{qH+6uU=RGr#2VeVKa+Ut4<5=U8rf{ z8IgGxYA!h=a`?IYjCh2@sxx8%!knTX0Oc4{aA#&(<+A${yzN~4k1+28UH;pgTJ?jla!^yzkD@(?B|nPZ9G3qm zMsZm6qnLp(r|2if;L~QWH`Suk$7;x&=ytkjp+m-piXZOc^*s6oV z&*s!}PVJbysAAi$%%yu`Q)k-kRjS6RRX@$Yn-MrGnjrL*oYg&z2H$yb)2E+i?jN=^ zx{W7x(}<@)&>5OmI74#|;S&#cn}2D$;+*b@t7l3|SfoAuZw?!K}pB9e{H(SO&J=^f$E)z%07OxC9Q)1ucXG?Q-&K4i?^F@BHt2s|U zBTfxBoBjUnXADn53hGEn;a~j4XwGT8)RSh>!ZHBzSNr2slb} z3E@ys5kZikatjIw5@mw`H*EO5@9+QO$LvhaOm%g2RdscB zb@%%5HFuY%IBmo3xr^CsHg?E<=?rK4>iAixL z#M)A7Ikb9->9Ix0vG|vqApfy?wX(V^tVhpen~2=Z%Xmy2VH8Dwb(?HY z*lK4sjXBox5;nBoBdmYlp1p6Gz%D5s&&FLmk&W!5O=8=X0RykUcF-{ z{Gj}(IQbHm_|lphyY+raYQcfIifYT}PK}S%>?2(jiifr3HkI{EvJpI9LhOawfw}s# zN%h*}brp#k+B#ep(8Wi%C@CqC!2P)1Hbt*Un#orR{oUj? z`WwkkzIhfd`|%z0(@Za_u_%6eg-x@$hT8OTuGakZ3f=9R-swdX=1_T4G=Ho%&j+w; z2W`EQ?9Ld6_Ubprmk#ZSDp5GJ-&DQA^#ETtYxQj@E_Ovpf$LqRr@gSK^bwF%via|` zHg|$EmMXEaf%)i(a~`cYXfvNpKIhqzY}dQ`o|+l;p08)VQ*zEbWk9Vfwc01_Ry;8p z19MmRs8yFacY}ql+uaGO-E~YKm8vz}Z!%ToYP{wgsU^BTQ``x>P>n~!G_~21Y#Lt4 z=eST41Ut=Z=_gVPF1LIZKhm{daXXBU;)6bNY(RAxxTuXkVsq`1tRP0<-)YGT`Rvah z@Jt_-=Be`wT`432T&wV212xy0yLRZWq%Cj~fvR1z5v}@F>6fNdC?qzD3NlHSP}lY8 zXB2iqPsvZMaYFGVw&ivQz92T}!*VauUD;=hr%pVLp{JUHM@@6?joqEA#kk(rm*p%p z-l*k$1ML+v(ruG3j;S*u_RTyk7B3#Gv&?w0CSHv7q9Ud*&t3g$T^BQ+rs8RwBqK(( z-Qh85Ia2TH*pdPixJU1;J`}sLffk3$o$5nzXn&NnNAK@`D0WFUO4_5pkIU!lX?9!= z@;nq<*1&}RNAF+1r%?)3)+ohS*-Lbu+bQ^IjHVc@7;iiYWr2q^IHSu-u#xAi<#U${ z5Ad4`fxfI!1AOveqf&g5Q*a;tIvdy5%L*=&S9JeaAS%ce1-n%=wLyc7( z9h4Ggysd4vX@~0Lx&&VW6%;^X(VDq-D9{b#=6hS<-Eqs^kAZh6yl(T7gsC7*Q-M%l z+PrS!F~y*I&0&3S^Yp|wz9+OUdU~Sy1Ck{#%D*1HP0MF+wX0=r^4jAz=yyjO2k+J# z*Uz-P4iBzwH3feUw|W?V^V$~aFSMqsF&EX>dtcN@UiCNc51IG%^=561C-wCQ&8sy1 z%{C(?hCckY3Vn3joA^72^$**65)VttS`cMt+cqx#P2LvXVX)X>1z4CsEim^maWh^v zki0|#!YstQ?Rc-uscm%9tv$OfzYKs=9<3~&3_~vf1{s)$^E+h;7BMigqz&<0DCg6pqIa>nGafC(1TBNgwL&_I21Xy<7V%wp+iZ zJ;}xs?Thg@vBP^1<4-z##*VCB*)fUXW@D#uj_>Q5J7zOi<0pl_ud~i7 zR^QU41xtl4IG`kM2bo;fNQu{u2>r#bc&>Np_7iaD7xrs-jObAv7fTg_I>9cfuRDpvkiKe?hBmjW+{yn+Yofd=sk~g9{_yqdJLvM^obtN;U>T5VIZ&3 zt9SAV#T~1n%NgsA(eQY9ukLuTtXF~4i&#y7rhe7yA$Dx_wY?u?y_T&qx^<1IOtrae zu(1G<=5V@@UA|WAwo@N~Zb4fvA9{=~0wt}1hWw%E({IhwwZ3T?D+N(H*j}i1TZ;O- z3!U{G+B%`%)%S^>K6KouCX1@1&KEaCjfY>nFA(3PnqXUW_!eI8xg-uW8x=R|3tOi$ z7q5gDu@QLjW4~*m-5Ph+b!eM~zISM*ep`PRWbOX`V*-hmO%gTH`k+fOnU7#Wx4QzNNii=a@lb9M8quCrV{eBVQ+Vs4r+hFOyV}nZP zcxButC)I0)>xbs)34=QgHV_X^ip%m-8y<5cVSjdTlPi}Q>asg`AfB_gGUbsKd>d7uCo#;7Qy07T%B z{@9fTe)3GQ56$aH)&AwmO@2((s_5@mkqNJN^=G_vj{fJ>jr?fC5*Vqfw_o#yA5*mm zTskmM!9YfT>e}!9?GURLp@WQZCxvVWX9SslpCJE$X?>My)n{8@NCHQ>(cfADk1tW1<$<^wmi)RS+C)0^E` zBMrnq8qk>$@#RE(UH$GGM_-exdKaY03qn^|_mg+1qdapsLJ{ ziy(?$4!^=rT38{BWD@SbrJXy3tR0k2psK+QBs*JvOM0|+R_}VNGqBp#=?bUcdTkY} z9m&wNxUFwGd>=**-VtkEr`;BPUH`tVs-`+JfvxoUw`UZaMDjxOzj59x?WBcl)6I`l zyTPMhzaB1qtUETOnTsG19(&KE3{}Zxj{3~4=%c4*=x6VZ@w1(4&m>0eB~H61Pk(d7 z;J!ZBAs*B&1GO;AaUrRVqzN~^n@cXN{@}>&&ChX(B50BK+tfQ6MJ3$}pUcyqy(1-~ ze2#)Ky~cWD%+%Z62jLA~s7)98hC7CG{N&u3J@7Qz$E`Ti$!js2ifez;cr?1v!?b(c z`qDdd0u{?}F}jE3VuUu=hfU4Xo88sHN1WPosXKIgM3UQ-QMo;RXf$%-5~9Y`l$X!Z z3rFP>6Gx7cyxch|JLj~b+THafKQTK|BE5L8rFwdFT2xIrY-+xK_h?5yU+cuFHi+iB z*;0{0v!V)2y(E@K&~iLpm0@WWFzQ3^9_DX#Cr12Tp*x8oTRoB!Zy(dO)Hq_(59PwHvNkk_eR&}QrSVh)8y*#F;5@$?(M!UQTkSf_!oum>k8diJ=W z;8``ap!=08Elz}G1U$u%*r@z7jE3@)fWYIM7SN|Z7M(tkfAY^`alsb(F@w6$U121d z8aCyeJ~g!aUj;<^SC1zkGIiwfdch=?7$k;{l)|$M>!^G^Ay@zRg!=w|GQ9U68J)#G zCx)@lkx}L9qbAlHE&U$K@$krqD<*q2V}@1^B+Z%6fN@(53&{A|qY-&MHSaEp zEXqMfxy5qt547ACAwDx9`Y?_@Y)Y>F+N7S=P|FcuRJ&FZYKc^b@pFt&%Wad-Kh$D= z`}7k9Q4LXsK2cz;NO^TCg8rVI$={#o78Nn(=hL5zt}e%(tUuW26T8&dSBhk)yrksJ zS=(c-BzJVPgs=*Jb)&F=4ecDIU6`7G7ep__09iX&xy9Wkg*CKG6G^g$O>OBXKD@1n zhzeqVW@>x?sKbTuNK%wq3#skx9}k5OwnQRq=o9sa#N>0ZiChiY$VN!0dT5V5>CsP4 zu@?hxhz3JM<87fRVuHstB67G}e<+q1AvAkre4+Zj5wFA{@VEE;m5P^D}zM&~CM zMd$xf{e~`1ME!1G+_M&JGNvXJ6(bfj09?P1AK#5JIx(IJIEJTTuPKP zWS1@Jc8L#VP0Uy9N2^2Qu%61598&Be`N{{E+*`#yD$)$ioaeh)O#vz@O+n~EdL+W? zzfk{*WtEHjM^fCQ8$v_c2jcrm)Hk{n0l*mpoaprnm!@60vU0-9tEs00f#3pD9_abh zLbt#$gB#`W6N<5V87cnWWfsK`*A+&RgjO$hp-y4Ui?u>_3Xwi{y_Q!jbD^d81SJIn zrMhDL>xskqoVI+WOe``&3~A7+@-w!PT1mXNDFZhvVOL$z=ZDqDz+cbYP)EQ2rF_5r zs-<>CgtW4W@<>CKQ7`A+9HYj!<)tAAS7V8GHTDi|1Cd`U$qyafid+uO(9L|=bLG0q z1$sA_g_=Y+0D>j%=L<+^>10E9KZMn3%#{+-oJHy+poVwtehAGQFdv0b@hj4hq=~*R8X(6BHAu0SAS?l4QS$& z6%BnHt~}%uDWQAltAQh}a3P<_n7UoLqw>bsY&3?XISLl$>9tp0bwzpQ_&@rL#5L-U zLqEPU-mk`9moM5rBb4Q}hZOwCRxYr8GT>#fO421GV`^Ancrzbe9ZHe*TX?Gvdo6ka zegCz37mAnjR|mxOy`5Ne$rnK74~b{MZ>x-xkraCV>fBs7W?*J)VBQc`@*lMFaNwF~ zd6=(nUXvIchuk4W-0cb}NRfz!Mb%yUHLQcllYeOeZMW&{Keo0xH-`|gs{8|To(Na^FJ+#4zj5cpHO@xpl zs;gMxdsh<57#yXD8Yo?%q9Yeai*n$vy}@Pr z+HeHXg5Cg0=*FvpCdFXR0SVc?-n@$PvP<90^rm%YI<%9P=F|7R8C^yy4c!ah3ej9c zqGbfo*)I;6iG69bC==JW1#b;zY}t^iU%b8tF=YDs%-fNnj%5waM!MU|EcGmhcG|)i zi(H?{C08@r=4cgc&Q42oO{1-q^K>qa#4hvJOEz-$Mzc;waz?t_%Q|H{C_mb}g4Qo# zMtbz-TG6}D^ES2!uG4ynF1q2{yp4fQgfRyd+8v3ME?>NsUgl+uh z0vQYqNHPiUc|}HOkp;?JUL*My+H;SLE?0MN8R74XobbOYUu%%W!>0t5ZwUx{hes7@ z1UGDJ9yxQ#)PG}pAqqfp3|TQ93KU2w3YgpZ_&V|jrd z%-H$hw4%G;ZflJf*(=MvpN?W@T;T)i#3*vx{j<)D#a z`MLgRGh<1p#@)_sqT^=}PcOJ;Ghv+w?_(yHqKo zlX0jH%$q9)@PFflaP#7uyS!LKRA^*~g9~ zFDS@{RZeqNN?NhAV_-h2k?mJWK5A9)UAD_L2;2?M@U0$mDY5gjUA?Qw;7BfU%BTkV zlke5RzA_{ZlO{@Wpv^hx7MZAYl_r2X9d!nPPbZ@@?=$>X)enw4Qr}8Gc=lz^mgF?N>`$K){_(+VSbo^J}4@$>R zs7yH`wO!r4ZLHH5>ybGN<>p{c=;@0{tyH=3@FcqH($5G#I>I^qsvd+NYWc(S0VCXEH)iX5 zCKY&hxq|CcfH^zwE>|9&)CjkB*Pn{b??GrpY%jG>WeKyC?B1~0ixTJ?LcM(`?MV%A zt4Ne;cU4KsmEEl23}veIBhgylix{+GX2p+~CwT&BE%pxLiP)ZMk8s4QUX-9!wbEM8 zPitS$+TB8HZWvm7NXFLjVg|8wti0Y)e5*QZ4FN7k-vb zQg&{Lp0GIru+jE!0qu{~o!<7R?K#yBK^PdG_p5wkHo~4@VlSqB*%GYiyUr!<3kMXL6@p=?Jqc#v<0DWSAlbx9P6zIS}@ki%qO) zQ4Mab262J3M9=u5wLb&i9Q67;Qwzaly@ANLXI&g^YZ{;-cH%aTw}5r-7lVg*86p+B zf8fG+3tAq87M!r4fa#{{llow%=H+EFo3al`9vYEP(>ilGyBo2%)@uBWuy>fHx(eT|{z zAmJv}-H-4GX`NY+5};X>9TQ-GNYSKb9Xi<8Dy5cyjfFMj+y%CAd{7(58EqU-ZT!%o z2S^8gKQxGb`hJtm5jDB>n=N$L=-Zoyk_4wgf;Hym*yBWEmKz6|PNt%2=va7^IeACE z4OmH53t>k}GN{Dtqi7gYpS_?82CzyW{9O}&2#;$|QZfPULFzM?*7l8n?Va!B)+8st zyCpDSNgME-k$G#O{ozO+--7S2F7nA=9T{><3&ptz#C1H}#qW&O1rws*8Fa(prb94` zAQN^g z@G7D_zhd8Nh*ym$G2U{#B|1xSyeW3{K-l{k8A7EVQ^n@{^Oz-9m}{SBN4@cs=S2P$ zr3lN~+9@_|mKmS*i>@16NJpDmPrZyIiYE+%&x1X$KE!JmZa!5IXliWL=r2D!)#^%!EQIPzE{)HPb;tfTGD1Gl zb)aV-%+RmRbl~TJ&fN(exGd1GJ}*`pv~>>bi)DU?oCNbZ zx)zj?Eb2GETvXYv#<7+9Gm((q`sEI8ZKag-|7TdyjS?U z7+-olVvOGa@O#7@UbYeB(f9sV+s`5oURly$WaYw2&SPbMw%+vjzSNW4|GT>zC?zM| zN)kMPK!-ZqpmP831N`Bv7Is5@lc5ZQ2_7HP?rGYs(ZX~e9r~&1G zn+B^l{E>W}7qy(;JJ1fZdo46m%5ai_Ps*YzWal4uUE?i4i&5pI@Q!oxnk=}<(Fkl` zY+P*%tb!Sfh@}D3^gp}#$6>I*(OdJNaeM2QXjHI=4s(#x4fXv1bcI*n06xQDb2(#*-108s$VqBMpG+ov>?Wsij(Ra;0A_c zrk%OOA8s(l%>AjTbH~iU8fGYHsd1CP8xdcx{9BH1U;JB+Z{PWQh?Ank#DvXAzt(gA zX;qH|KLdgv z)W9bEelVr-1B??=aHaqHj~lUX+#^gt_v%>>&1BJKpR-GN`P|jV&yHiAO&?EclAWA9 zQZI{ZCQtRjqF+cP2*wc=@TfG>+9$;_#yV$7H*l!UQNVaHxMg$Ua3dsBFjs}R;Zv3_ zQaQWD-&5sib6v2UwY}W7C`WKK!ED1=4N8T>CB#W5OBEk*_H=)r)&*~0?Z-!IW)HCK zwCKi*sb^9g9lD}`c_4G8!glxsP0d*9c7~)5DQgzh4W@2TJWIoN0wG3a0Y4aN2miEa5ogceA|aefoT$6T>y6qBPJcS5`~ z&aFGjqlvL_?J_Wd)$@1g#tAAwRY%P0O&2`*$abOhO*Xcr>cChPIGV3@hNWft5iGGNG&SrC$s!Zp>8rDD%Fiv547bcxt62-a?n<(-bJz$ zt5R6He;kTAKFmJ&av3buuL`ECyj;{w4X%Bz2K#*J^TzHMA5yZcO07XvDD~r_9Y{(4 zL-!}=hbu=Dho~*0ucIS?gJQ0W`I0KC#Vy0Wg)m7F>#EdnppPopN~=MR9;v?x>ZtW9 zvzb*SFc4Q(^>C$$aWz@|)!rJbIn}Vjq3nV9x+ZH)9@07E-zu2(kO+s?VwqR2I!bmI z<2qMp;fogeo?0wBWS>z5xk(c(Qki8DLIw;B57jrGcRQ2S&p}H^t+uAW`b#RC?@Nck z@Ys4FnP2O|ciw>=E_v5+hU0W3jh*rLEby*FQyZae$oEeZ9Wz*#Z!7_SK9MGEL-$mX znr3zeYwUBjsKX24uU4(Y3wASTQ5#M(^^aX~53ey7j9pj&`ScHAI|l}T&WpKVs3@+@ zGP}L~BZ)k6H7XJLNNgAs&rpT?3*5+Z2F;1~|^ki&Y;Bo^6$!ua!9hR1EY-8hLm{?DLT^3)L;VAN5!c~uTNWvk^?pO-y;6(B{;);6gx}#0$jDg|4swO&qJw`ee~ahBCltAVa?x$HbuWuG5Mbn9JJpb#uhzTsF&RKeYxb&eK4z z7J9EkOeR{QXfhx{B>?3g3gx```gE|ChH4l$HBww|Ir2Ajr~yI&RDv%U0Fm`2GZwp} zD8kn%!9P#JLZGzsrXHuIBPvzD0c$@P;}T;1W?uSQ^mFEN64)D=0^Mi628*OjhTo4sfbpMSyR}b z8ymCK#1n`fyKoe;TM;drAb9(9V^(55!%uz_HXfnFmzuDwd^$bej&*n?IO2pp;>8*| zV9btW(XSa)cEDIyG+`YQj2Lq)Zksh_I2KP_(Udj9Pf1gDD?cg3k)~{1K8|6BF}JtF zR)9`ex)?Q1u7;sb!OhVu)REH3%;KqL>{512eAA5Kh;lIo2RP&B{Z?S`P0iU@3#hJ0 zY{6~~0xfC5a7MTH!<$>Ox6C^`NJtR-TCr>~q*c&oS5Y{g`jIBB*}eX-XG3%&7{lC& zz>v?e4OkXuj8#c3y`gP6gGAfdN@FTc^?;xJPivMQjFOKHj5S$Mk_QzA<#iXacY?7+ zPhfI8);Jhj^t6p{$8HftZP{bNDE}7`sQV+M`RK;s(zr5x15|%Qgl~kqpJJ)~;?QgR zHIfMh)A9uEA4!@rrj=Cx!?8s`1RvlPV|1>~~>*`Qa9KNP0ompCc zl`=`KRc#f0RXeiGYm8`|nnGui*IF91;IP^?&%A7%aRwUU_tPDx)`DhY#22ukmA}O! z^OSfYHg#fgu{JlcL$n;kYPB*0C+CSM9eD@hx=t)7%I_s14*#mk0@a2NjC|n`!d#`Q zNs3$-v#g7JgN^g7Q<|94nRUKkG(jgaiA%1_SavjAx~~iCfwgj^rRI5{{{!Ms(3LeO zA}bYz2ab4RH8)@kWB2s>R&L!1+S0X z-@vA&490U5DtsHz95MDs^eU8`Bc`yZnA@|GUL!m{@ncVRVcK*|FLss;E5bJW|3_Ms z^yBN^5Seg_5urt)WZphD3;QabKmUd3!@7p0AhKnyzG=S}gc~uJutq1Wig*%fS)fmn z63H~nJ_o&hRQ?AUu$lc>ta#vJMmu3g-9?*-nvpccV!yfnKS)!w95ei@D18~PG>7re z(7}c?ljw{}a-DLAsO|2e9tLrNB`5+4xV}96@wKTYv~QM7y4)Lo6{Mt`K() zWV!x@W^u@diqj6HL_L=HY#?jMOXmnah&8Q7v&{Tg_1s5%pDs=fVs-hlIU;2+s}yLY+~KDE19DDZ?Nq>mpxN?R}4$V@{^UTRW*cv z%(dX<&zG?t{%8jsS*(skP{Fst@_Zx(1gG`&`RC-aA4qX0s5JxjI6hx=vV;8ja@H`K zp(oKZ&_|D!qA7tsxe+}$*B^{vjR>jOb_MI}kFGV5qZ34AGu){mU7RYQyo6?+?14i) zL_IY%+K{KDa`%-i;7n^8l+=wnUPK6c`*}&o6t!lQ!@9{=u|{5VOY8N{@yWw8jC3~H zqO-k|nA1U>OLdgZaN^RYO^ykhadZ2jKY_ zb#O_w>RI$Qi8!7cpe9~76zx6TY;Pm-EDl}IQlnwODRRuZ+`yU!`kXeOoJ8f$Zn~MJ zH?g^6REL=>pNK1S>px1L_aqoSr?IkyY+B)+l~5nS*&1{Us2_YIOT&~ag#wYDuR3J1 ziO-PBp35CieY7vV_k5a@D&wDR1(v8>Ou|A|sL8PCI(qN-<8FyA?&SSGT0Oz{Y2xOa zSbzVNdlNW-j%XbMi7(;i;CZO%HH9i@4bH{{xdoV$Z zBq8XLk?j(Ll|7ge_qp_eh zKnh4&9j&mwcZ)GY5bgI;xcc0RL8WP0&bL<~1VhMh>`w{m=?oc&w$~@T=qm{?QUF@q z#xjP?GCOL2zJ(SreHfMbZ8;J~@zvW{VrY{dUfe2?HsCa3jM26UArKGU&gyyFBxGk5 z!QAf~3nVv=VDU3YFnd_1u8N49){YvX&&vF{Dk6-<=1jhxNGgKVghL~k=X`|_9LuIU z&Uh#~laHP~O{^Tr;uAm-WDe6~V#`RDHLTR)DK4wjQD(dIWC|C5>7ef zh*kn6QT6Vuo&$_81yn653WcLtY<2XD0*|?J+V+54(r&1j;>2!`D=&<19zl(wR?Q@74t(AIg1cE- zNNXHEMj<45f8EUzW041o;}C`OVU``N@gK?1b?81Pe7nn#@#ACIMb$9$z!B(~$e}@X zJQLZq&iEG#IA^DN9s!IrZDAa>s{|oT7Z2XUvcfW{3Jobus|=z0&Ph6-QIeE}E61|d zVd)6p-~!#d93({>I+yN2zk8W_L8gCJ-0RO%iAFuhKFGv93baQ#Ga=df^uJlJ>aZ2| zxLRx_doJqU&*H_x`ywQfL}*|yrhv0Bs~1Kae?OxWwZ$vnjN{LOxVH6tX^I$G4w z#k75?;b-}J19I}co)>is6tpqU@-c&Sp-*G><_?};$kUq%ENeurS6GRuf(7xi8yt#T!zox4rhYb7f%x% z9%4!7>yT40E{-;7rXD0(VL{})PJlyhf7nQDh;{%!`r+znB)-oc8ZcxD3Z7}y8fjXp zs${Eal?{y|2-CoE)f>mqB;K$P>Lt_t5~UMlB(79Xa+(*joI9bfa))}aFPC8Yci1_@ zyAe-7ffz1UCl^*G?H4}7>~=C4;-g~rEv=dJmW^dw-b*t(5bcB|wi5*f8{bnjrZxR>vQ+txL-lqpd6DN&BOrwDXxk8dm%UY`AM7F1%@| zJe4;GP2~@k2IyI9f}ZDOs<<0#6#A)H`A7>jy&+g=3wK=;YN0~p#M=3fvn+oT8Cp_1 z>J%NwP`bZ~a=5Tr=RE{%Y!&!{*Vr8s`f?=(e4@A~E$Or0NeIE!5dNKps z`nBlWy5%h97KEgFmhq$sghuS;1j$S=Wi7* zXj8PPPAi0vwQkkspa_<=AFC;AC!S(8s#{C(KcJRfFFdPGACB4tOSSx8!>XVq8=Gwx zo>zbVKgz2u{{y`G`TrGO$#7x39$i|0uwnZB|0%A#^vs3f%CG-Vai#yv=(*zGrY}c( zH7i=*7>2ppopg{nefI*Hh`II#J1#VRNEqN}$I- z{=4e97S)zuS(kZpFHBw5efxj4EJUYm}qSZ1FqM}>A1ngvf$0ejlA9waJ@g^ zx;)_eV8Hc}fa{Y1*QW!nCk0%W1Y9qhU0Xqxp+V`&fCsbYh!2;rwOHZ(#Pci*KhHnU z`kR{|VZS8t=ku%wDP-XbER}Z8rC=eY5sDjLV71ehO8|vYup=J!S2H#Wn(_k6Y>jk{ zn&vrA?liiX6fpwXjl=egcUxh@McVq>mp~nm^H}T--h|9bxQFs-#e}6S16wxD zU&`u(9b1=T>nT)s%s&6_DCdDvj9&_s(3Y_rf4aa$ATYtdPoo7JO&kQC3SlL%taKSm zW?phA{OWBElT$c~F)RX{Dv{J$jWL$#ajcBO;^~&oW&zVpbhceOg7@j(7`TNz3-%Ol z3vT(9FPZssm9oo%AtVC1P0E%Pm9RU)_pX;&!0w*NK~mGP;iSVi&0TqI&ZPyo(qf%W zWR#fbiIU$fg7_V<3!KxW&o_k=mb_xCFi=~bgWK6Spe@@#x3*!M%G7A8Pw1OlNKfdM z)YMrZ*|BgrtL5DVA}r14lHAOKvsY3RGA1N0-W6=s#pi4!Nxc3QzXxz0D8=$uSY79` zxujV*N1KTIlcx;!v#-8vU@~B~tBkDL|Ey*J_PeM3H;KO&HB6l@w>L;+J zVSTjCwxGHi@*k47P?D3WDzJ!(a2RK}VFihi8xg!rdJ{9~gP{Tb^pcr7bqsXjN)?0atxY1tzv z(y4VU%hw0xQXh2DI@UO(ZHs^jbfxwTMDT!`Y+^G={x)r@#Al8m#^W|)kXwH{k8?u*10;g0bO6eQSO2UNQ$lj zJ_RDu&f|Oi+fSU&0B+QFsmE^%J?JT0{ch zg=^ivb_El+wOYgh-%}S%^vd506g@gJGirMcRQcj8?0?yq-OMSY#l?G~)BN}LTtNO` z^FHf-!T6=^H65sEJyjqWG}IT2JCCUMIUOX8HE_bRC8kbGQKh|(GDsQ{U+8fV63N5& zxgqJJ4N9Y_eWQ@oPYkL)9WNoMyNR;;A@Nc5TZEkQpqPYjPZW$I=tw5-aBa;#ru)qi zO$d-`MK>WZ^#hjg>(RrG@58rsPm58h^s$j*9MJ~z01w~eQ4Nm zvhaMwE>|(xip|Y&YLamfw>&%x@#byJ4Z+5p5FasjF-~rxm^gO+;wo#4Y1d`HF$zj! z%{`7H`d-P>5;3v060>`*dYH16FU8|*TKYd7LX{~PAN@5vbAv- z_}z?|=X5E#HskFPvS>7IK+y`Vj53Q>{6))`f{Ug%1BwRKvP5o{SRW;#cpSTYT$Fyy z`r??CpFU<+u^FQKC#(=ZkA1>sb$>>1j{*)TZl)BfRDG;Tz&Tm~F)Ve*NnL=sJPdo& zfCHG)6cv;5-Y!ze2$|}BOmn#skqC;#Ap8kFamHRxa z%>50U&G_+5vHn}O55Hy8zGGWBt0)`%1M8!tevV^x=#Vn)c&6_{;FaRCCP!J3`CfM= zbK!;>4lU%%@111(SxMQFQ`kEJhi=!N7mV@)EX2{2t3EvR6fM9KV>pjyJxJ5BU14IQ}%g9uv>6>F^GW zLL4y?HVgPu@dMd+X%db>Fg<#a;Xpf;(Gop6=MIF>?!NW}J{(v^B=F1dvoV1;04d)m z@D{jBPvp0ffF)`;IMN2=z-aE?{7_GnAD&L+1Mq5Z2frp2uf}SzBrCCa3)`y2p@7#N zycJ$J;^6JfQ~`qKJNam*vB&CQ2tQ6gTI}TccyG6pH#CIWX_VOyZ;mSdh~a zKMy4FXQ6sElKEA2*D6_#V~oWXYpHY=It2{8AI9Lr$CEk9`OEkTAmX!R-pjlt?D;h~ z4nCI|1;jgCsZ<%q8M}=RQP#fBbq%LknsvDTtG;oK-Iuj53XE$U@}Ny_Y+Pf*e{FYd z<9a`?f6Fnh58`@zigA4e*E>u&SfPE{z%{&>3OJ3M<;QHsTi8ZX+jY>q!7hq0jm87) zx2J7)8Q0jfN!x?f6p}t{r=y+u+PuMTI@-71C)fr=TbOOUg%lU!gyU$igGYvjIY3sQ}DkY1uqGOv+# zqJ2=yfMfZ&R_d)BR-bFdkC_Z9#m%pY##_s9y}h1sjeHdCZIiLcmeH1gX~eV5xGrgE zT<^g3<4MMKIj;5Q#x)XWv{Q|Y>w~!7WLEzOt`8cGSgf7I&7@4@C1lHJ&zh}^^d0S6 zlWe5#XzzNffa^!is?Ean!93&JQe3}oUN6J-0c1~0N>}1$rME?Jh@!T_d$W0tQmnmj z$b4@H9{uB#-#BJ8BBO6}jq|_`lYZOeqP*cnZ_DF8O8z-(a}@(ftG9+1ZL8mF7kwB2BQCCi z3>JM900is=l(y(&E9?xt_lXs@nqZ$=VaMs){Z`mt^xkJy*tQ&3@$jP0t-v3lPDNi> zVbdVcMF*^~Gj#y_(h8eM1%G9Q{RWd!^tBas!UqHYz3l&ofI%M%YP*Bhj~5c`kQKJv z4cIqU*mKa-qHnFRjYt6Xp{{^7HXl;K$!~qwgQFLSK~MKWYVTlixpP1y+0~hGmc>Nirr_A0CvziB{m} z5;(~U+#`XLt-!sqz$dIgEKnF;^rRK`Y8DygDOMmBWehKxYK843m!aq>EASl&oMr_c zC+j%f3i|~eY|#uW?2*QRJw3jkh0}}41nbrpU#E|svBLg=4^i~26?V2lY^co}7Jo$q z%(6b)NPa-kY%B0Bs^=Ul>;?LGt`+tdbyD-Ju(kB0D%mtt8lD1J=qbwVQ}Sz*%&$!aTXL0!PsSYdC`d#_tz?@-gOwZh&d87#}S0zW3; zIxB4H_u^1CG%2NB#18D{L_}-3BY{Bz3nNt*}+pRd2GwCQyrQ zF17-np@O$qVN*lE7EslHeS|ln-%!91a6nWVqdTRg)}?wSYIubufA&q z?#)0!JFKwjB-HSj?9E)z{Xo)pAuVx zV6TOMZ6nwt)^Dc}>`^PM_y_?XvjR&A_P7=H9SPwCE9`4>zb0B?lco8YWCgAym6&XW zEg{$w;!h9v6wf5&Q>@P^h*C7w3Og(v)u*h$RkFk&;7){5il$j#TtQMW-3t4P-b)F3 z@w*0Md40GKdq|;l>j&?UG(2O4ou;ZhYlTgu{&%Jo_6Jo-SYZ@(Dw<`5QS_;3_9GbU z;-A+TK1UKV$NFL^iChruDT2+lzPE*}KoBoaQAOri-g-%=|O z>yx1;2ElA(Cs3Oh=s@dYdFNmj3!mz3-EzzO-lQ`s0|}L40>^*)=z#OwBcEsE?#DKL`Vq-(z zguNl=74R|Qx_q9-umN0S{<9d~i04=S)sjYh7v3CQfR9(u$1~WfGJKa6rlcF2@ZEfN zXVI)Fe~+)(TJ~2{ObqaeyTqN%`M3PL#$s>_o|f@d4bVmr|HP#p8y2={wgE{@`$|0A zf|u|ajl|g&Jc~csNo2P~=zF2iTJluTk?JUFI%%nP);0z+5FUUweEo1xfYdSF6br}zkf4k{vazNr3269pKcKq?RchG(T;cKr}xs$ReblSqE~x< zf^85-+wm+hr~_XNu`TSz)4ATU%-NCmVf^Wi;?Q88mKLNUQpFmJl1{uuy|+NSYmDnH zWid_I?XPKys0~Xp2`u(@;!{n$9nQWDs!Ubm4`IS4&NarPpfP0g*euP%EX}jLGp45& ziZ46!cGOC?OOjZY8Yf$aq>Wk!zh>(Mw~f8j6QkM}dhEWovHRLaLDNvH$o4^-ozpaS z04JI4C0j=5U3jXC+5+E}LWNLOv_)ALK8Y<7gIOJohABe zyh&rsD9<+ZLkd$3#kSF<0ZIUOZ2{CoU@jkzYt6(`RA+ShYcE=?~3a zvN5hN6rmRKG;yp5lb5E5yuV9K@6IPPU1as(4e?XdgU@G&#i1Smn(s{PCLZg_XW?O; zUc5VghV|kX;b&$qzLh;AuI>%9RWen4(VO3j+oC@Fa_`91tdb1|= zU)EZTxtt#t*@Jj%ux8AqJRLuom-8$5nij^R<%7?8G@+&OsLQ42JUY_Wc=Y~d=RA6< zT^Y)9Gk-ZRUBUOq{Q3^6EmmH^SBs8U@p>`u?(p5GT+Qq8BRj-d>DAoB zkM1OhaLjnuWY`QQS`NU29kOaO_<}E}iapClT+2JK#D!m&uU&7v^=>Dz?-t%v{Cyp7 z!N2u$qqZ12l>fn3d|r0d^}IQU@tJfZ%KvA-c=1N`2akLqKD?1%!`HpzAR}*ddx;#pA`e>$poC zyO|H=8@F5El10e362y(Sai`c^&h29AP53gaAFm=^S`!>H%IUS zzQ8%V&cm?&6kSAraRHDi@J&L?&Rb7t8a@NCqP0MiE(%Fk^IzF?=2g}|II)CD&TgA z_+}KiyVeJ*H=4KP%lC*ni{OYLF=*6i{wnet>fR00cub@;g>b2Tc?>_WPi(szw7j`n zVskEn2S!TyGlQjTxdoPP))+otSzB(S?x$9UP4m712TdVuq}lpK;^u$x50&L#8gF?j zdCTwJU2e#x-X1$e@Eoz?9-aWQ*4@LO=1;Z|{m1gXd`-KuI`{Gd#=m=8^!+z~n?Kz_ zB;UukCVsTlWY@=H)%|>&xaxjBknen3ym&wVgsClh1H6|5*$BwWpk$$n zvYP+l*Rwjn-G5Aq`5IQAeks-mpnL*$%> z{E|L;@?o%k(?w#{!@MIts(6^+6>H+VVI1)NvPC>Jj!&oyn4+~9nG0_QDIhRlv^|ER zVV4Y>Hld49i(#*iiIZLsMF_b&6xlwK>qq+9C6T=?kkKoPk9)pQErid0}AznYV5e1L)2l?}Rqzv&*>0;C4 zd;$NhT;4l2VZk0zuf5brjGw?arvE@2D*zBELip(NiRdfvyL}?MF))83f2R%_5L>$- z<87p7>u9sVSLP79+tI3MI8iC@)qc3lr3{gJ*Wl*u7dqmwQ_*?u$2j7c7 zKf#-`iZaiWaL=jj(IgTru7K939*H~mn6frmw0xZR72Bt9H-Fa96%;sgD!-o3cwd&s zR+Qa0mDgZ-`_0wdpgLB|841toGdLD-v0|}xb5olQ`@rmb~v73FQr%y-sI!D|vfoI6(A!vng&w!~qporV1BX!7pX`_58 z!Q0?7M6)gYA<^Jz-Ys^6LW3E>w(>0H_yK7rWRrQDZtc^2N<22$0l&2t;?Q;QgNN%p zU72dw6yLi(pB@&+vl!l$fX5(HQO+ z*almFQ zNrI5dC?zNn8gooMGm{T3TzlN+rd%x68^bz`6656#D6~-#D2UTaj6yY=o1rZ^Bm)Uv zn#*lhaEF)5MN7fcYMlUKQiEyFc|72*-QsEi$Kr%|P;d>b-ynE)`sdhTLedwb#s{?I zalwDiTJj#m$2+d3^T^C`HOT*S7JrJBi^;Qj4}PNkIehzjHs9<9wa7yR@ty>t+^)vk z3qf%VL1=wfx%g@hza^&}V^En+sc40FsK}?Jraas29yn^d#SL?L|2|7UB|2Kjgg7va z#tG;?R1NZ?V2c?^KE}R&@&l$r z4Rz)@UfaGLtKGzg5tyBuzEx=Rp}kMOEf&t_1Nejk;?#WjJFm#!X5zsGa9B5eLBPi3 z+c?FS3wSHO?|?`t<hTQJ}u=J^N-8LzZdd)qG%z2yT7EHp?r4-@$o|5 zi~qct`r!s>sve8bEl>YS+_#8N~RFBt7z(#j2&yg)Pm+t`~USAS52qbt&(EUYKgW-PY(M?qzHo73=2W z@8!JUBDz+Ur5=vuxU~C|O>^|lc4Kgeu{qUSQ+yusg{41O36Ka&ps z7UUuu?^8u&J?1RqHxT`QE#vnlAO(>Ip16JBMP9#_iJE0&tbj*&e~EbYMcyENV;d7U zx)i^hiK8#_CU$(}7SC-(D|UPdZW?fneTl0{1};dtJ=?WXEPRP~ba_D_n|QiJoZSou z^q*Fu*30}~j+d04Nu<(t$o=$}d3`g>5$Z11zs&E2MQOF1_esU*g+T?})LhGDbGcp; zPc7$}Y`0jpoX=xRMbB4w%XstIQZeooe!G25mTS5A=@s6HL4e;jEOOHoJcCUYJy-B6 z?F*cEUb+I$=USfgqiN#I3Vub*YltTrZz#t;^4np;!MCP~)vxk4_SH%f7sp@Xb=^p0 zwQ0Y81yv^P)b=KWX>{>>6XW7}GV!CuoRvJqDEifvJTrc+>}y<$Mfpm8F+1WT#A}ZG zt>Rb3yetXXvyInjyjnKV8l#7@0W$%x=g~;Yo<`pc9>3;Ad2$ucRF0u5nK2!{$6BNF zB?T{h4S|UXV$5s2R_x<;t%mDy@x*J0XuY9yV#!h|oFg?CdOs?lgX?p2czs})nQNxl z^BS+G1pt(yM`d`LVzpAEG$M8?Xz6Ku5&VKp1v+Gf7~T5!!LVT{AV?9miIY2 zVHAW8oM~%=kPvF)%RThv3!TKTtNER%!>~1IzcAn)X-AL!qM!W6P9i^RXHX2~los@%EiYU^ZbXgOm!g=rD((GQ#>p*sY zT8kjaZV^)kH({O_R>pf|JO)1(I#0a^ZEQ!^;QKDIzKmx%jfd!uNngGx<5#emqQg4g zxrw(yY_6H-^4sJkWmKzpK`dN{5bHLvb{)^le4z_e$`?kif#yaxBRh^?*YR#OD-?81 z$dGrsUM9~^acvbn-{4J5e>N>n*7cPRV%i)0YBb}IZ(tDclc@hDACmRxe(KbGr~`Y_ zX>anTd4{g`lC5nR3FF#Wfg!J<6^HOD|8t*ky~WF64Gz7<$Ht&}SJV~PtmnOpHXT?K)84GNgh6-+QdT_5NEV&@8`gxBNBPGo@=idxREzzJH>+= zc}~N5Fh22W!bneo)||#1SnZslTeeufK6BcgQ=aT6=PH> z(l_yTj+x~)h$k$jYl^sP6Yrb!`EC=S^>=+PR&2tGDEi_%roh)62XDFMXhdOVZxim# zd^Y=BytSEkXJ!Ypv!m$0l}~mrgB@9p#9lpC^=3m>4$bckQjzVHFDpBLiF?KA@x1uq&9fJ^zY~o?> zC}!bUEYy$qO{oVZ+c1DRVqC;)VE4?A;NS9tUB#x4`Roi+K%KBZ+P6QTDYbY^X{{Bb zKY@3%R!shczlWd8Kjm}rbLvxsjDcd>ek{64TB~U7dnGYv9fyX-OF4kZ@ZDcyy6p1L z`7!yhcTyc{BQ)l~FZk<$Ahavq9}krJ0bbgXF!fHVt13n8AyW7u6z;)BP!GA|sOJi7 z{Ul%O;{jS9m>UTFOFk_S{iL}8q=15ufL5LE+RDc|rm z1xu8qRCMDsN`s$;n3x*hPH6#a-vZlZ7>uG0$_Z(|`y1X>IryHT#?qSl`yQ-Bz|3i? z>CWP9c*qBunT>7SK4v;;+Fq}eROh0Y{J&@rQB^?PYxOO}&1!17-Q}hAR}-$SuvX?B z)>Lf&7PA)5im#4g=Aq4ZSgK{j9r(Vz(hiUpc=S6y3`%gx_mH#-aohL&RzBW%n(Q?} zLu^_ueDPnt#~`{wq#ed6@U1E0-ov~N|LlFS{P218gAIQ>g&kWdQbXjf2E6(ANf#V`U;rXWHJ6#o)PYYqv@izqn;F7&%$r87gLN8jF_juCvsqzr`lmNz=I=V|4;mp1Ps|8V6?lL4XX4=sJ_53^fC&&tGO$FX8=j~KSy7+RGd=c%zv(8n*CD}Fl8vtws9$4A?R;{+eW_Z<}D zPVkJJuMZ+IL$#wjj)|c`YrF&b8x(NS4*n=so#45JsF|Wo=VV7?&WXn^Y6Zsv1gBH~ z$9hq3gdh}Nqn_^$$3n(2;WHkFu;3(rgn!#jyn2#1%CFdC)-%++7`P~nw&Lh3L$^6E z?zOya464mpG|}}GqP62c6kng>dCu}V3cRXpO!}425w4%PNPgi%a+0ZQ`#n#yiI#Wr z;Ue=FaQ^TYqSG&2&)bFe=Y?>JjP-j))RDPu3Si`#p!0yU|I05tH+z@jiR+2D8=k6h z=pK}S7h3(wuT}Q%w>m98A96CI07L0qq7GiFb`mSJexrnPngWM0*DB1#W$2c)X~-ZX zcnMl=Vxn=4eoNbg%ua$&0(^oA-w*gk6Fv*@$4&SyB>rLIk&2{!kg>XXZdvdD!YQMr zmT0K9azUxwF)|+ONe?JWeKGVj=CSJi&M(Ex0~VduXotEpG2>@eN6h)1d$785!|(k1 zdarmF+{)#_mE$U|2_@rWwOXSzKGGxSF^-Glr}>AhL~Q+o*T>J{KX?zU3rAqw*2IQB zp@sHwCPEvgwV)1M`#w)x{HJ_*)SrAX;)a|5Z^4ByTD8@5&6rHl9erUj;D|NPB|bNUupJM=9#zNH)< ze5<&Qzy7fDC^O2$x6eMT)E2F|@{aKd5+wpYi7`LHOHIvf-Fqp@Bb9RfIM6y16(Z?- zyFzPv?~YMQ!J3ps#l z*`s2uQ>hDrKXxitC|JfVn!1#IR8FkqrcsVFMfsGc~`ZZj@owavywoVMP$h^M?SdM80!V_YO6?Mp%& z+Sx-kt$`OS1kTZxZ$=r~8YgPJnH7(8y@DYh3PqIAu3|a#O5f9!7$pQg#J-cIzK5kj z598bN>Ar{4gC54Ug+Jjfv?TChF$%?6&QI#C-LOe`_&em5x}Vbg4GGe*Z*H@UjiRRk^SG@uP4_eVZs%1Kzarj2;mgu zkRxIwF!9xqpDbu!ylJ?kk` zH>^ifYcrRi0fYBy$4{F1u!L->M_nQ1JN4+fc5I~%vztqT@D*hhP<{`!n;U}6x|Q#s z_jIsnuY3=&i`G}M8MP*g8i$-n0HwJUipVE8@5-Yv;6DBP|F1!)wd+k%1ug6w8tb>i{92MB9cD^lZS_K%vGkNCiQ;~gAt z6+xka5P=h?xS>kY!ob3Unscr4MF@(}V$n~p7jd!FvL*`>4nwDrIMTu?Qe&yP8#Q9W z9|qh>OCM^6i)dCYLeg^DmjwNhgZnw^=1cS2GfRbo)k+d7LhDmZHzp27)dQEY1!55g zMFJlWphG5a`s2-wf6=-hznqr)H6fMO-ZF#HyPV%VE~ z#BsJ?ra1Oz6mM)mt%Ie^kt;~NQy=4fP#lFm_FKvKYXj=>&0yI$!H5_bNA)9Etg7Ao zI@pAHn`sm?;wTPsS{+9{I~9X=Zu3&GtQ%A7S9?cw{4=`RJD6P(;eQtxY927Iz~0GC z4c!E;pn(E$VQU~wA69|!Ai4(l;fX#vglQ_~r@ZymMufGZ2$!`yQh0eJcj0+=*T53V zP<{we(ATV4BD&$C6yr{uwGQ5-soF$d0AP`2?lG)LjI3gOE9$8gED;5*C`sD{(^PAO z>z9Zgt?93!=j)pu4?G$j&0$SE(3&2I`h@VY4Qy(lp3NX!*1?0bT$G4c8Nn|jN)q+j zP#yO>wS2|SukU-<=6mp{Y;A;D*u3O(1>^yphj896$0#iyrnzh!%~3Rs=h<8~?%D7G z1CpB0;#efce3gRKpm0p>JNi9)^tbYER9!O zmDiB1!SbBncs{38MZ29UI%w&|;QQPRHbNEd)J#3iQ9)uydx~^peQ7PHD$%{CIh@v~ zmVP5bZdlMSd7+zJI)^FIOfRoNs^~)TSQl-LFn?zj%+-=m24c2Gz}V@iSM?$Ls`R+0 z?Z5Dm-GSOvU3d@K`-J4sD!<=x4?6uni=|FSihueFe~OLdjr-LI&b?Zl*ns~<=!-g1 zi)dWq1*}2xt3Di>yy=WexlQ6sM{4%}k(oa{OilY&W5y>M)Nic$ejGlZhL36dcFk$s ziR$+C%g4mB03PS>SDibl{4C2oV*f9-xT7;Q((tXSuRCMmb6IrmLJeQ!wG!Dk2WbIS z?SQx$XzpKX2p?2y2=Y3A{}&T9)HwJ0rmrF3=0WcKi5G8Z2u&ZQmV8Z{96NZCEsaG! z_-$x`omG&4qgt~=qP6he%B^R>1hN*c4bqRu<`?I0DBp#J1T1#CbrT}10=_P!%0(jl zC9u*&=PYkus#Hm{4mxbr%&LPi(NU@7zqQDFO2kKMRJOz80>aeCsJ{Ph?cab?tb2@_ zK7WM=W{3(Ceyn}dF!op~W>rP?##yC$_Y}g{RsDy$>hL%9PXJ8-xC0_H?~y`Yiq;#O!G88?@p zDZ$o-9bX=mI5`%&ytiv+1;Ye0xChk=!XTiU368zu)gH95_lGc&G=YAsL-+u~^#~1w z8xV$?=lnKB#JJmOy)of4moDYe&4q!ZgGDLZS=!nWFD52qmRTm2B~uE5?~`E?Dih0l zQYL~ny=aD7=H1eZj%g7Eb5#RP+fZ?=NKc@Wxng-=YF)1y!G@B=t*>61Bi>OaF7>6M z$oxb28)MyyaUsHESTVSwVXs*6C+b%N{ydl}^+0zCEp*Hi>QL&ao)Mjf z(p;P|+&h$}Gavn5q@Fd_VST`E5zL4VM&5gox*CXt-NEr5f@r9?iP|uM3%e;UMz~P~ z4x?UR><`1JDFicd7$q}f`-V{(#MO2<4MZ@1ICbIJ1H&=-`A}RRPH!N~j1kmC{aCCY zK@Gd^BNy)^@MVMO-hkOq(p`EQ*hLGooGW~0dRB9c2MTqQ2{A`@92600)CK1)`=!zA zZhT}0hmc%2GiS?j1ppWREypPZ7*gdwvq&ab4gntWJz=(LJ(&eE#OW*sZ>j{Z_kq_` z2j^6RvwYx8gd#PalA*uvr&D`%v-mQd+PV*YB+us=!Ig&@b(nAysPtobVi8XzAFJ%c z;hW2QCQNxP-{9y^)ps~7MY!Ch@L50~Kk9Opk?HZ3d|Q?Psui=`D$Fdkq7WCZnk7C8 zG_&XR=)6LR13l?x|Fhk(}V@{RNP$7?e@I|o>$hjF( z@lFHJ(SZkk+Uvx%QE296-iD*8nF?3B{$r?P@F}z>RHfsTczq1DtzG#_=};GiTt+7^r(8++jBC(5^zKGos>~{bRu&rYc;|CJGXTj2dVn_MH%vsd6=5=DM{?>Ol z(Q!+Z%%XVpx(Jy~&uhq*KARF8JIV1qlXFP(AzL*YyANN8f6b=&1lEJ@Fb5mSW5>Gm z49Ab0ay?RlXC}M=U3EO|)tKi7bFi{Rp`go3kfeYBJqAGx`|V1mJpds`j?A}4{$|SG zEX^VFmV+lG@W{xSnh|Z(cT9q2##6cKisJCL>HMuAA=k%?y797n|{L9x+L zMR2ck1BhXGIo_d?I$HKhLBqM)!?P$7L^aByHqmHVnpuG4ka?R*hVMpzFqcrB1f3^gIJJXCWVLo+=Wznja{a6qIF7M5zPNS@ zpC&^q)ViTZxvQc>F%#0mNl_KFOrC}5W^-J(fQth#663%PuQkA*Bg1sym>{pXF&^N_ zRB;vtZ>o7#9cvaT?5#oAoOfac&jnlAkrNx*F(?mDA$YR8f^(g2>{B^4o@W6!V}!L7 zV~nK73`s^YHuId4&g7Xmu7eyE$ z=$ky)U6g*-0oZCuQsDQ7ku-Fo%N=Iuxk-1`DX#D&_q3-FjSo}4>cmDJc+&WsosW8( zbn(H|l?PsoBXAYu`^_Od77AvSl>v>! z8J_m7{-lOTY)0T(SLie&^ff2OK;LG$-5!fMjyWl{pY8@F-i)^>P*YEfzrBqi{;Z%J z8iYCVb2*qJo%OnNsK2U~cn`fp8LE0tJhFmzBM4bZowT=Sita11nD|m`ScyqICMPRN zAeizl?b6oI70IhG<+>?eUPZ69xM^p4;2h`}3;tE7!@R{Y=C^k9CdWgg95HrhBow-q zVh)%dZ7y~amAq!#f%*`2ivb+Jp`=8R&o>D9zGDb!hu z1vfR+ylWSWKcq*JBwMxoY2EMkCA#K}ynY7Hc-b;0ne2Cg{U?@xdngGpk*69<3c9QPeQP{Z)uCR%AOe7CXp=OSK)0-n5$x@!fw;`MEmV5LI?wbH@F5aiN)>5gxs-#@^3 zoVdh2SMD*ewSj#kf=qgOyvsJ0yA)vTvzWk=6%*oVuB zLg_m3kL`3x+nOuh&IgZp|2m&?Im{}6oduMY70~Q(paH`!1^q9I7n65TYF9=r-6{Qr zK^Q?e-xwOqy1mQFp(P^+o>9emx=Z>M9LmMiHdh#*(8IkmrO_Knvg89dfu$QL$qf%N z^9?+Ba(EK2^DB}XA$&S#3`UsukG^jk$Na7I8{uxQ7pp#@xSr+fC8g-3%~Iu+=KH!kX4!a_IgocCpC9mBUn7#s9nPbTjm=ZMDLx{ zEZ$d&QdNp-1n>b0wNDr?o+&vD<4}O(ns{d?TEI22X(zR;XEEvGHF!Wec3KQI9hd$f z(cPU?KNb`*Rgkl(XMi_e-dw}H75aNkbl64l9l(%}DK3nc9Oh-2!BAMtc;=hfc|^L8 zlk8p8*uB?RhbUJuv_5>O#YCLc6YldA^9LZ{&kLBhdFsLsMW`zn|6m-!gH>7lHq|F} z?giPk3Z0P2%EpyCFG$9CFfJfIf+z1a7A01Vc+V1HnCPn2Zq$ z@!Y3?9zi)d8^qL4sd+4F19&GuN}LkrBAF6MfJhwplp1xlQnSc_Ltg9z^~0_vveIdZmEX8 zh6;}zLmBT1kjclrM8 z8mK_`F!&~-su;{s@&VR13kvh5#L1LPoR%8gk5hd11$C%KeQi2<{iPS{kQS z$Gc<~&szBOG0G3%9<3->)IScp627@}92YPw;aP}%VUTLK%=efgUS?yvYId`Z$%%Q# z=}9eXgSc>OjeO{_JDs&xB7Ezmq+!}qo8Ft1X%ljJ=s`G;)nj&?;CrQzRLIu^@246n6eoJ0r4dq(m^N8^mL929dZbn95%G z656fJ%oM%PQIi_H(E&{=!-fYCm0_jk5ogO_gYby&%BW$K2j*dE z57OEGz@}o{_reQY(dLpL%$BrDaH(p6M^}Q`_EZVp>jQsqi5k_B$TI<^q#DzK9jSo$ z-nR^V{gHF6AxiyjRfw1KY*pnKHd;Kj*~&UyvzWAAHDAHu&=0I z_g=hBFG|bw9g5KqKjID*Q}7Ad$os;5tk+NUFm^Gf|3nF)rIWOkDt0M?>^alC+kT>V z)i;Ofli$3e_wgpGdbB2^e!d6&1;Gd1zZgZd6{L>oP{hG>wa57E}m^G;6E zzX{P+tPmM}^nYq+R(c!v)r;zBdB=o0Opn!ykBK-AD~^dS9A+OE&v2M`T>KSbO7U^k z9+?{Z$(+GQ^7l{e-J@kutu6}xmE1~H%nF9CnLfRhekA{4`{XM(l1_D&&;o{L7XjL1 z#FM>OeUYE~#uL+bZ!oO9ISkD!64$t-;v!LFI8#t0nsbPAO9&$ayU9ewVgw>nii?3N zYs8MMy@mPufUkycT^F}a7Nkfr7`oyWS~c8#YvtK0Op+(0}*yDJ_%IiO-BVbKA7*g zn>e6f%Sa2A!Ko`4TF@`unQ|aMX86ChEZpq0$WSD%Q=)JL_>wPq@&%=y5?8r^ic=yi zjhR0!5;)8|Es_y-Ej|sD{ckQE^!t7J=a1~riwm1t1*YEM0vUS97@FhWn;(4Vq&t6G zf>mHQhGw4;JJMK?{E{bMP~aJHmJ6sjBYuAa7;^O{VPs$q1GCSI3Pg6zJCDM1S|59C=cfGO zPqpk5|Ef>%J)EkTp{W;VA1>dRe_~vleeH!$r&1YOabAr5GlVK%vM=xpxVj(~a9AwE z$UsA;ydXZ~$n1;aYlJCz7lGFkQP3)6UH-!P?WQan*xcf(q?}8Y(5SJelRn7rJ?7ZO zzfF#<2CeutXaVQV{G_Idbt=qIi@Z(`EBlkl}>zC6nLI zzYsj})kdCpOZurYCxDTjqk%DbBERFRJAWTAuZaci#?U)o;k>>cqb)Awux_Bik(*0J zIwIXCN`cpr-n7J>f1%rnu*5H;tegrbn*TM7(fp8$2P(MA`S4VC)=PC9p2X6Gx3bgs zIIQ#@1{MPt>G}K9PZ^nshrjzW;F(hmeRMGN4rkrhPrm!y-ez57!KnEjl-w^LdoTM?o1=z|b)-&8bBV^wei<;dn4$e2 zoi=aQoLcK1s#t{TmD|z9Bp)L94hS zmT{PUQ*7lh@1{7xVew6I8(~VtO{U;z!;hklB)(OWdAZ$%AWQn)zG4b)0lIhWC-cT0 zNqp(pu;7D@TUzuP49#O`tH@;~`;H{8EDDL4WwfxM3PX!;i7_uR1-Ha}gs$vwReMzG zz_Z(q9!)$obY)Oed&ssP(=p8B|Ckwy`N_9p|4aJPgqgQhduT0PiW)ynG4ox6sDQ?L zN4*EUrMKfndmRslZ+rj#vi@X{wqceio2WMmxim|&tD%bd-7FF9)}uq-osD+~ZZV%N zy7K#3ey^#Rmu8D0ZoT0n%janJ@Mx3~9nHV^3s%f85UJM2(IkX*A~{n21lQ(A1;2pJ zn~OAcA)dKnuUl{ChIg|)cqsfw6hl#Lig^U@IM@l(86HAfs*2JA|8ow)sx=Qe!O~#a)>R~O diff --git a/www/repl/c/lumbda-c.js b/www/repl/c/lumbda-c.js index 7e9d5de..0f020e1 100644 --- a/www/repl/c/lumbda-c.js +++ b/www/repl/c/lumbda-c.js @@ -1,2 +1,2 @@ -async function createLumbdaC(moduleArg={}){var moduleRtn;var Module=moduleArg;var ENVIRONMENT_IS_WEB=!!globalThis.window;var ENVIRONMENT_IS_WORKER=!!globalThis.WorkerGlobalScope;var ENVIRONMENT_IS_NODE=globalThis.process?.versions?.node&&globalThis.process?.type!="renderer";if(ENVIRONMENT_IS_NODE){const{createRequire}=await import("node:module");var require=createRequire(import.meta.url)}var programArgs=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var _scriptName=import.meta.url;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var readAsync,readBinary;if(ENVIRONMENT_IS_NODE){var fs=require("node:fs");if(_scriptName.startsWith("file:")){scriptDirectory=require("node:path").dirname(require("node:url").fileURLToPath(_scriptName))+"/"}readBinary=filename=>{filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename);return ret};readAsync=async(filename,binary=true)=>{filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename,binary?undefined:"utf8");return ret};if(process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}programArgs=process.argv.slice(2);quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){try{scriptDirectory=new URL(".",_scriptName).href}catch{}{if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=async url=>{var response=await fetch(url,{credentials:"same-origin"});if(response.ok){return response.arrayBuffer()}throw new Error(response.status+" : "+response.url)}}}else{}var out=console.log.bind(console);var err=console.error.bind(console);var wasmBinary;var ABORT=false;var EXITSTATUS;var isFileURI=filename=>filename.startsWith("file://");class EmscriptenEH{}class EmscriptenSjLj extends EmscriptenEH{}var readyPromiseResolve,readyPromiseReject;var runtimeInitialized=false;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 preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(onPreRuns)}function initRuntime(){runtimeInitialized=true;SOCKFS.root=FS.mount(SOCKFS,{},null);if(!Module["noFSInit"]&&!FS.initialized)FS.init();TTY.init();PIPEFS.root=FS.mount(PIPEFS,{},null);wasmExports["__wasm_call_ctors"]();FS.ignorePermissions=false}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(onPostRuns)}function abort(what){Module["onAbort"]?.(what);what=`Aborted(${what})`;err(what);ABORT=true;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject?.(e);throw e}var wasmBinaryFile;function findWasmBinary(){if(Module["locateFile"]){return locateFile("lumbda-c.wasm")}return new URL("lumbda-c.wasm",import.meta.url).href}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}async function getWasmBinary(binaryFile){if(!wasmBinary){try{var response=await readAsync(binaryFile);return new Uint8Array(response)}catch{}}return getBinarySync(binaryFile)}async function instantiateArrayBuffer(binaryFile,imports){try{var binary=await getWasmBinary(binaryFile);var instance=await WebAssembly.instantiate(binary,imports);return instance}catch(reason){err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)}}async function instantiateAsync(binary,binaryFile,imports){if(!binary&&!ENVIRONMENT_IS_NODE){try{var response=fetch(binaryFile,{credentials:"same-origin"});var instantiationResult=await WebAssembly.instantiateStreaming(response,imports);return instantiationResult}catch(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation")}}return instantiateArrayBuffer(binaryFile,imports)}function getWasmImports(){var imports={env:wasmImports,wasi_snapshot_preview1:wasmImports};return imports}async function createWasm(){function receiveInstance(instance,module){wasmExports=instance.exports;assignWasmExports(wasmExports);updateMemoryViews();return wasmExports}function receiveInstantiationResult(result){return receiveInstance(result["instance"])}var info=getWasmImports();if(Module["instantiateWasm"]){return new Promise((resolve,reject)=>{Module["instantiateWasm"](info,(inst,mod)=>{resolve(receiveInstance(inst,mod))})})}wasmBinaryFile??=findWasmBinary();var result=await instantiateAsync(wasmBinary,wasmBinaryFile,info);var exports=receiveInstantiationResult(result);return exports}class ExitStatus{name="ExitStatus";constructor(status){this.message=`Program terminated with exit(${status})`;this.status=status}}var HEAP16;var HEAP32;var HEAP64;var HEAP8;var HEAPF32;var HEAPF64;var HEAPU16;var HEAPU32;var HEAPU64;var HEAPU8;var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var onPostRuns=[];var addOnPostRun=cb=>onPostRuns.push(cb);var onPreRuns=[];var addOnPreRun=cb=>onPreRuns.push(cb);var noExitRuntime=true;var stackRestore=val=>__emscripten_stack_restore(val);var stackSave=()=>_emscripten_stack_get_current();var initRandomFill=()=>{if(ENVIRONMENT_IS_NODE){var nodeCrypto=require("node:crypto");return view=>nodeCrypto.randomFillSync(view)}return view=>(crypto.getRandomValues(view),0)};var randomFill=view=>(randomFill=initRandomFill())(view);var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.slice(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.slice(0,-1)}return root+dir},basename:path=>path&&path.match(/([^\/]+|\/)\/*$/)[1],join:(...paths)=>PATH.normalize(paths.join("/")),join2:(l,r)=>PATH.normalize(l+"/"+r)};var PATH_FS={resolve:(...args)=>{var resolvedPath="",resolvedAbsolute=false;for(var i=args.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?args[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).slice(1);to=PATH_FS.resolve(to).slice(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i{var maxIdx=idx+maxBytesToRead;if(ignoreNul)return maxIdx;while(heapOrArray[idx]&&!(idx>=maxIdx))++idx;return idx};var UTF8ArrayToString=(heapOrArray,idx=0,maxBytesToRead,ignoreNul)=>{var endPtr=findStringEnd(heapOrArray,idx,maxBytesToRead,ignoreNul);if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str};var FS_stdin_getChar_buffer=[];var lengthBytesUTF8=str=>{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63;i++}}heap[outIdx]=0;return outIdx-startIdx};var intArrayFromString=(stringy,dontAddNull,length)=>{var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array};var FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc(BUFSIZE);var bytesRead=0;var fd=process.stdin.fd;try{bytesRead=fs.readSync(fd,buf,0,BUFSIZE)}catch(e){if(e.toString().includes("EOF"))bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}}else if(globalThis.window?.prompt){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else{}if(!result){return null}FS_stdin_getChar_buffer=intArrayFromString(result,true)}return FS_stdin_getChar_buffer.shift()};var TTY={ttys:[],init(){},shutdown(){},register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close(stream){stream.tty.ops.fsync(stream.tty)},fsync(stream){stream.tty.ops.fsync(stream.tty)},read(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){out(UTF8ArrayToString(tty.output));tty.output=[]}},ioctl_tcgets(tty){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(tty,optional_actions,data){return 0},ioctl_tiocgwinsz(tty){return[24,80]}},default_tty1_ops:{put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync(tty){if(tty.output?.length>0){err(UTF8ArrayToString(tty.output));tty.output=[]}}}};var mmapAlloc=size=>{abort()};var 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}};var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=MEMFS.emptyFileContents??=new Uint8Array(0)}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.atime=node.mtime=node.ctime=Date.now();if(parent){parent.contents[name]=node;parent.atime=parent.mtime=parent.ctime=node.atime}return node},getFileDataAsTypedArray(node){return node.contents.subarray(0,node.usedBytes)},expandFileStorage(node,newCapacity){var prevCapacity=node.contents.length;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity)newCapacity=Math.max(newCapacity,256);var oldContents=MEMFS.getFileDataAsTypedArray(node);node.contents=new Uint8Array(newCapacity);node.contents.set(oldContents)},resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;var 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={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.atime);attr.mtime=new Date(node.mtime);attr.ctime=new Date(node.ctime);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr(node,attr){for(const key of["mode","atime","mtime","ctime"]){if(attr[key]!=null){node[key]=attr[key]}}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup(parent,name){if(!MEMFS.doesNotExistError){MEMFS.doesNotExistError=new FS.ErrnoError(44);MEMFS.doesNotExistError.stack=""}throw 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;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){var node=FS.lookupNode(parent,name);for(var i in node.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){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);buffer.set(contents.subarray(position,position+size),offset);return size},write(stream,buffer,offset,length,position,canOwn){if(buffer.buffer===HEAP8.buffer){canOwn=false}if(!length)return 0;var node=stream.node;node.mtime=node.ctime=Date.now();if(canOwn){node.contents=buffer.subarray(offset,offset+length);node.usedBytes=length}else if(node.usedBytes===0&&position===0){node.contents=buffer.slice(offset,offset+length);node.usedBytes=length}else{MEMFS.expandFileStorage(node,position+length);node.contents.set(buffer.subarray(offset,offset+length),position);node.usedBytes=Math.max(node.usedBytes,position+length)}return length},llseek(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.usedBytes}}if(position<0){throw new FS.ErrnoError(28)}return position},mmap(stream,length,position,prot,flags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}var ptr;var allocated;var contents=stream.node.contents;if(!(flags&2)&&contents.buffer===HEAP8.buffer){allocated=false;ptr=contents.byteOffset}else{allocated=true;ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}if(contents){if(position>0||position+length{if(typeof str!="string")return str;var flagModes={r:0,"r+":2,w:512|64|1,"w+":512|64|2,a:1024|64|1,"a+":1024|64|2};var flags=flagModes[str];if(typeof flags=="undefined"){throw new Error(`Unknown file open mode: ${str}`)}return flags};var FS_fileDataToTypedArray=data=>{if(typeof data=="string"){data=intArrayFromString(data,true)}if(!data.subarray){data=new Uint8Array(data)}return data};var FS_getMode=(canRead,canWrite)=>{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode};var asyncLoad=async url=>{var arrayBuffer=await readAsync(url);return new Uint8Array(arrayBuffer)};var FS_createDataFile=(...args)=>FS.createDataFile(...args);var getUniqueRunDependency=id=>id;var runDependencies=0;var dependenciesFulfilled=null;var removeRunDependency=id=>{runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);if(runDependencies==0){if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}};var addRunDependency=id=>{runDependencies++;Module["monitorRunDependencies"]?.(runDependencies)};var preloadPlugins=[];var FS_handledByPreloadPlugin=async(byteArray,fullname)=>{if(typeof Browser!="undefined")Browser.init();for(var plugin of preloadPlugins){if(plugin["canHandle"](fullname)){return plugin["handle"](byteArray,fullname)}}return byteArray};var FS_preloadFile=async(parent,name,url,canRead,canWrite,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);addRunDependency(dep);try{var byteArray=url;if(typeof url=="string"){byteArray=await asyncLoad(url)}byteArray=await FS_handledByPreloadPlugin(byteArray,fullname);preFinish?.();if(!dontCreateFile){FS_createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}}finally{removeRunDependency(dep)}};var 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)};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,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(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(val){this.shared.flags=val}get position(){return this.shared.position}set position(val){this.shared.position=val}},FSNode:class{node_ops={};stream_ops={};readMode=292|73;writeMode=146;mounted=null;constructor(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;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??=true;if(!PATH.isAbs(path)){path=FS.cwd()+"/"+path}linkloop:for(var nlinks=0;nlinks<40;nlinks++){var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i>>0)%FS.nameTable.length},hashAddNode(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode(node){FS.hashRemoveNode(node)},isRoot(node){return node===node.parent},isMountpoint(node){return!!node.mounted},isFile(mode){return(mode&61440)===32768},isDir(mode){return(mode&61440)===16384},isLink(mode){return(mode&61440)===40960},isChrdev(mode){return(mode&61440)===8192},isBlkdev(mode){return(mode&61440)===24576},isFIFO(mode){return(mode&61440)===4096},isSocket(mode){return(mode&49152)===49152},flagsToPermissionString(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions(node,perms){if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}if(perms.includes("w")&&!(node.mode&146)){return 2}if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup(dir){if(!FS.isDir(dir.mode))return 54;var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate(dir,name){if(!FS.isDir(dir.mode)){return 54}try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else if(FS.isDir(node.mode)){return 31}return 0},mayOpen(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}var mode=FS.flagsToPermissionString(flags);if(FS.isDir(node.mode)){if(mode!=="r"||flags&(512|64)){return 31}}return FS.nodePermissions(node,mode)},checkOpExists(op,err){if(!op){throw new FS.ErrnoError(err)}return op},MAX_OPEN_FDS:4096,nextfd(){for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStreamChecked(fd){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}return stream},getStream:fd=>FS.streams[fd],createStream(stream,fd=-1){stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream(fd){FS.streams[fd]=null},dupStream(origStream,fd=-1){var stream=FS.createStream(origStream,fd);stream.stream_ops?.dup?.(stream);return stream},doSetAttr(stream,node,attr){var setattr=stream?.stream_ops.setattr;var arg=setattr?stream:node;setattr??=node.node_ops.setattr;FS.checkOpExists(setattr,63);try{setattr(arg,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=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push(...m.mounts)}return mounts},syncfs(populate,callback){if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}for(var mount of mounts){if(mount.type.syncfs){mount.type.syncfs(mount,populate,done)}else{done(null)}}},mount(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type,opts,mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);for(var[hash,current]of Object.entries(FS.nameTable)){while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}}node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup(parent,name){return parent.node_ops.lookup(parent,name)},mknod(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name){throw new FS.ErrnoError(28)}if(name==="."||name===".."){throw new FS.ErrnoError(20)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},statfs(path){return FS.statfsNode(FS.lookupPath(path,{follow:true}).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};if(node.node_ops.statfs){Object.assign(rtn,node.node_ops.statfs(node.mount.opts.root))}return rtn},create(path,mode=438){mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir(path,mode=511){mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree(path,mode){var dirs=path.split("/");var d="";for(var dir of dirs){if(!dir)continue;if(d||PATH.isAbs(path))d+="/";d+=dir;try{FS.mkdir(d,mode)}catch(e){if(e.errno!=20)throw e}}},mkdev(path,mode,dev){if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink(oldpath,newpath){if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name);old_node.parent=new_dir}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;var readdir=FS.checkOpExists(node.node_ops.readdir,54);return readdir(node)},unlink(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return link.node_ops.readlink(link)},stat(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;var getattr=FS.checkOpExists(node.node_ops.getattr,63);return getattr(node)},fstat(fd){var stream=FS.getStreamChecked(fd);var node=stream.node;var getattr=stream.stream_ops.getattr;var arg=getattr?stream:node;getattr??=node.node_ops.getattr;FS.checkOpExists(getattr,63);return getattr(arg)},lstat(path){return FS.stat(path,true)},doChmod(stream,node,mode,dontFollow){FS.doSetAttr(stream,node,{mode:mode&4095|node.mode&~4095,ctime:Date.now(),dontFollow})},chmod(path,mode,dontFollow){var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}FS.doChmod(null,node,mode,dontFollow)},lchmod(path,mode){FS.chmod(path,mode,true)},fchmod(fd,mode){var stream=FS.getStreamChecked(fd);FS.doChmod(stream,stream.node,mode,false)},doChown(stream,node,dontFollow){FS.doSetAttr(stream,node,{timestamp:Date.now(),dontFollow})},chown(path,uid,gid,dontFollow){var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}FS.doChown(null,node,dontFollow)},lchown(path,uid,gid){FS.chown(path,uid,gid,true)},fchown(fd,uid,gid){var stream=FS.getStreamChecked(fd);FS.doChown(stream,stream.node,false)},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)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}FS.doTruncate(null,node,len)},ftruncate(fd,len){var stream=FS.getStreamChecked(fd);if(len<0||(stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.doTruncate(stream,stream.node,len)},utime(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;var setattr=FS.checkOpExists(node.node_ops.setattr,63);setattr(node,{atime,mtime})},open(path,flags,mode=438){if(path===""){throw new FS.ErrnoError(44)}flags=FS_modeStringToFlags(flags);if(flags&64){mode=mode&4095|32768}else{mode=0}var node;var isDirPath;if(typeof path=="object"){node=path}else{isDirPath=path.endsWith("/");var lookup=FS.lookupPath(path,{follow:!(flags&131072),noent_okay:true});node=lookup.node;path=lookup.path}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else if(isDirPath){throw new FS.ErrnoError(31)}else{node=FS.mknod(path,mode|511,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node,path:FS.getPath(node),flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(created){FS.chmod(node,mode&511)}return stream},close(stream){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed(stream){return stream.fd===null},llseek(stream,offset,whence){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},mmap(stream,length,position,prot,flags){if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}if(!length){throw new FS.ErrnoError(28)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync(stream,buffer,offset,length,mmapFlags){if(!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},ioctl(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile(path,opts={}){opts.flags=opts.flags??0;opts.encoding=opts.encoding??"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){abort(`Invalid encoding type "${opts.encoding}"`)}var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){buf=UTF8ArrayToString(buf)}FS.close(stream);return buf},writeFile(path,data,opts={}){opts.flags=opts.flags??577;var stream=FS.open(path,opts.flags,opts.mode);data=FS_fileDataToTypedArray(data);FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn);FS.close(stream)},cwd:()=>FS.currentPath,chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length,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;var randomByte=()=>{if(randomLeft===0){randomFill(randomBuffer);randomLeft=randomBuffer.byteLength}return randomBuffer[--randomLeft]};FS.createDevice("/dev","random",randomByte);FS.createDevice("/dev","urandom",randomByte);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount(){var node=FS.createNode(proc_self,"fd",16895,73);node.stream_ops={llseek:MEMFS.stream_ops.llseek};node.node_ops={lookup(parent,name){var fd=+name;var stream=FS.getStreamChecked(fd);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path},id:fd+1};ret.parent=ret;return ret},readdir(){return Array.from(FS.streams.entries()).filter(([k,v])=>v).map(([k,v])=>k.toString())}};return node}},{},"/proc/self/fd")},createStandardStreams(input,output,error){if(input){FS.createDevice("/dev","stdin",input)}else{FS.symlink("/dev/tty","/dev/stdin")}if(output){FS.createDevice("/dev","stdout",null,output)}else{FS.symlink("/dev/tty","/dev/stdout")}if(error){FS.createDevice("/dev","stderr",null,error)}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},staticInit(){FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={MEMFS}},init(input,output,error){FS.initialized=true;input??=Module["stdin"];output??=Module["stdout"];error??=Module["stderr"];FS.createStandardStreams(input,output,error)},quit(){FS.initialized=false;for(var stream of FS.streams){if(stream){FS.close(stream)}}},findObject(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);if(!ret.exists){return null}return ret.object},analyzePath(path,dontResolveLastLink){try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath(parent,path,canRead,canWrite){parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){if(e.errno!=20)throw e}parent=current}return current},createFile(parent,name,properties,canRead,canWrite){var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile(parent,name,data,canRead,canWrite,canOwn){var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS_getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){data=FS_fileDataToTypedArray(data);FS.chmod(node,mode|146);var stream=FS.open(node,577);FS.write(stream,data,0,data.length,0,canOwn);FS.close(stream);FS.chmod(node,mode)}},createDevice(parent,name,input,output){var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(!!input,!!output);FS.createDevice.major??=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open(stream){stream.seekable=false},close(stream){if(output?.buffer?.length){output(10)}},read(stream,buffer,offset,length,pos){var bytesRead=0;for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]}setDataGetter(getter){this.getter=getter}cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))abort("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)abort(`invalid range (${from}, ${to}) or no bytes requested!`);if(to>datalength-1)abort(`only ${datalength} bytes available! programmer error!`);var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))abort("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText??"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")abort("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true}get length(){if(!this.lengthKnown){this.cacheLength()}return this._length}get chunkSize(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}if(globalThis.XMLHttpRequest){if(!ENVIRONMENT_IS_WORKER)abort("Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc");var lazyArray=new LazyUint8Array;var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};for(const[key,fn]of Object.entries(node.stream_ops)){stream_ops[key]=(...args)=>{FS.forceLoadFile(node);return fn(...args)}}function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr,allocated:true}};node.stream_ops=stream_ops;return node}};var SOCKFS={websocketArgs:{},callbacks:{},on(event,callback){SOCKFS.callbacks[event]=callback},emit(event,param){SOCKFS.callbacks[event]?.(param)},mount(mount){SOCKFS.websocketArgs=Module["websocket"]||{};(Module["websocket"]??={})["on"]=SOCKFS.on;return FS.createNode(null,"/",16895,0)},createSocket(family,type,protocol){if(family!=2){throw new FS.ErrnoError(5)}type&=~526336;if(type!=1&&type!=2){throw new FS.ErrnoError(28)}var streaming=type==1;if(streaming&&protocol&&protocol!=6){throw new FS.ErrnoError(66)}var sock={family,type,protocol,server:null,error:null,peers:{},pending:[],recv_queue:[],sock_ops:SOCKFS.websocket_sock_ops};var name=SOCKFS.nextname();var node=FS.createNode(SOCKFS.root,name,49152,0);node.sock=sock;var stream=FS.createStream({path:name,node,flags:2,seekable:false,stream_ops:SOCKFS.stream_ops});sock.stream=stream;return sock},getSocket(fd){var stream=FS.getStream(fd);if(!stream||!FS.isSocket(stream.node.mode)){return null}return stream.node.sock},stream_ops:{poll(stream){var sock=stream.node.sock;return sock.sock_ops.poll(sock)},ioctl(stream,request,varargs){var sock=stream.node.sock;return sock.sock_ops.ioctl(sock,request,varargs)},read(stream,buffer,offset,length,position){var sock=stream.node.sock;var msg=sock.sock_ops.recvmsg(sock,length);if(!msg){return 0}buffer.set(msg.buffer,offset);return msg.buffer.length},write(stream,buffer,offset,length,position){var sock=stream.node.sock;return sock.sock_ops.sendmsg(sock,buffer,offset,length)},close(stream){var sock=stream.node.sock;sock.sock_ops.close(sock)}},nextname(){if(!SOCKFS.nextname.current){SOCKFS.nextname.current=0}return`socket[${SOCKFS.nextname.current++}]`},websocket_sock_ops:{createPeer(sock,addr,port){var ws;if(typeof addr=="object"){ws=addr;addr=null;port=null}if(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 url="ws://".replace("#","//");var subProtocols="binary";var opts=undefined;if(SOCKFS.websocketArgs["url"]){url=SOCKFS.websocketArgs["url"]}if(SOCKFS.websocketArgs["subprotocol"]){subProtocols=SOCKFS.websocketArgs["subprotocol"]}else if(SOCKFS.websocketArgs["subprotocol"]===null){subProtocols="null"}if(url==="ws://"||url==="wss://"){var parts=addr.split("/");url=url+parts[0]+":"+port+"/"+parts.slice(1).join("/")}if(subProtocols!=="null"){subProtocols=subProtocols.replace(/^ +| +$/g,"").split(/ *, */);opts=subProtocols}var WebSocketConstructor;if(ENVIRONMENT_IS_NODE){WebSocketConstructor=require("ws")}else{WebSocketConstructor=WebSocket}ws=new WebSocketConstructor(url,opts);ws.binaryType="arraybuffer"}catch(e){throw new FS.ErrnoError(23)}}var peer={addr,port,socket:ws,msg_send_queue:[]};SOCKFS.websocket_sock_ops.addPeer(sock,peer);SOCKFS.websocket_sock_ops.handlePeerEvents(sock,peer);if(sock.type===2&&typeof sock.sport!="undefined"){peer.msg_send_queue.push(new Uint8Array([255,255,255,255,"p".charCodeAt(0),"o".charCodeAt(0),"r".charCodeAt(0),"t".charCodeAt(0),(sock.sport&65280)>>8,sock.sport&255]))}return peer},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=true;function handleOpen(){sock.connecting=false;SOCKFS.emit("open",sock.stream.fd);try{var queued=peer.msg_send_queue.shift();while(queued){peer.socket.send(queued);queued=peer.msg_send_queue.shift()}}catch(e){peer.socket.close()}}function handleMessage(data){if(typeof data=="string"){var encoder=new TextEncoder;data=encoder.encode(data)}else{if(data.byteLength==0){return}data=new Uint8Array(data)}var wasfirst=first;first=false;if(wasfirst&&data.length===10&&data[0]===255&&data[1]===255&&data[2]===255&&data[3]===255&&data[4]==="p".charCodeAt(0)&&data[5]==="o".charCodeAt(0)&&data[6]==="r".charCodeAt(0)&&data[7]==="t".charCodeAt(0)){var newport=data[8]<<8|data[9];SOCKFS.websocket_sock_ops.removePeer(sock,peer);peer.port=newport;SOCKFS.websocket_sock_ops.addPeer(sock,peer);return}sock.recv_queue.push({addr:peer.addr,port:peer.port,data});SOCKFS.emit("message",sock.stream.fd)}if(ENVIRONMENT_IS_NODE){peer.socket.on("open",handleOpen);peer.socket.on("message",(data,isBinary)=>{if(!isBinary){return}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"])});return}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){if(sock.type===1&&sock.server){return sock.pending.length?64|1:0}var mask=0;var dest=sock.type===1?SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport):null;if(sock.recv_queue.length||!dest||dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=64|1}if(!dest||dest&&dest.socket.readyState===dest.socket.OPEN){mask|=4}if(dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){if(sock.connecting){mask|=4}else{mask|=16}}return mask},ioctl(sock,request,arg){switch(request){case 21531:var bytes=0;if(sock.recv_queue.length){bytes=sock.recv_queue[0].data.length}HEAP32[arg>>2]=bytes;return 0;case 21537:var on=HEAP32[arg>>2];if(on){sock.stream.flags|=2048}else{sock.stream.flags&=~2048}return 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(typeof sock.saddr!="undefined"||typeof sock.sport!="undefined"){throw new FS.ErrnoError(28)}sock.saddr=addr;sock.sport=port;if(sock.type===2){if(sock.server){sock.server.close();sock.server=null}try{sock.sock_ops.listen(sock,0)}catch(e){if(!(e.name==="ErrnoError"))throw e;if(e.errno!==138)throw e}}},connect(sock,addr,port){if(sock.server){throw new FS.ErrnoError(138)}if(typeof sock.daddr!="undefined"&&typeof sock.dport!="undefined"){var dest=SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport);if(dest){if(dest.socket.readyState===dest.socket.CONNECTING){throw new FS.ErrnoError(7)}else{throw new FS.ErrnoError(30)}}}var peer=SOCKFS.websocket_sock_ops.createPeer(sock,addr,port);sock.daddr=peer.addr;sock.dport=peer.port;sock.connecting=true},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;var host=sock.saddr;sock.server=new WebSocketServer({host,port:sock.sport});SOCKFS.emit("listen",sock.stream.fd);sock.server.on("connection",ws=>{if(sock.type===1){var newsock=SOCKFS.createSocket(sock.family,sock.type,sock.protocol);var 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)}else{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){if(!listensock.server||!listensock.pending.length){throw new FS.ErrnoError(28)}var newsock=listensock.pending.shift();newsock.stream.flags=listensock.stream.flags;return newsock},getname(sock,peer){var addr,port;if(peer){if(sock.daddr===undefined||sock.dport===undefined){throw new FS.ErrnoError(53)}addr=sock.daddr;port=sock.dport}else{addr=sock.saddr||0;port=sock.sport||0}return{addr,port}},sendmsg(sock,buffer,offset,length,addr,port){if(sock.type===2){if(addr===undefined||port===undefined){addr=sock.daddr;port=sock.dport}if(addr===undefined||port===undefined){throw new FS.ErrnoError(17)}}else{addr=sock.daddr;port=sock.dport}var dest=SOCKFS.websocket_sock_ops.getPeer(sock,addr,port);if(sock.type===1){if(!dest||dest.socket.readyState===dest.socket.CLOSING||dest.socket.readyState===dest.socket.CLOSED){throw new FS.ErrnoError(53)}}if(ArrayBuffer.isView(buffer)){offset+=buffer.byteOffset;buffer=buffer.buffer}var data=buffer.slice(offset,offset+length);if(!dest||dest.socket.readyState!==dest.socket.OPEN){if(sock.type===2){if(!dest||dest.socket.readyState===dest.socket.CLOSING||dest.socket.readyState===dest.socket.CLOSED){dest=SOCKFS.websocket_sock_ops.createPeer(sock,addr,port)}}dest.msg_send_queue.push(data);return length}try{dest.socket.send(data);return length}catch(e){throw new FS.ErrnoError(28)}},recvmsg(sock,length){if(sock.type===1&&sock.server){throw new FS.ErrnoError(53)}var queued=sock.recv_queue.shift();if(!queued){if(sock.type===1){var dest=SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport);if(!dest){throw new FS.ErrnoError(53)}if(dest.socket.readyState===dest.socket.CLOSING||dest.socket.readyState===dest.socket.CLOSED){return null}throw new FS.ErrnoError(6)}throw new FS.ErrnoError(6)}var queuedLength=queued.data.byteLength||queued.data.length;var queuedOffset=queued.data.byteOffset||0;var queuedBuffer=queued.data.buffer||queued.data;var bytesRead=Math.min(length,queuedLength);var res={buffer:new Uint8Array(queuedBuffer,queuedOffset,bytesRead),addr:queued.addr,port:queued.port};if(sock.type===1&&bytesRead{var socket=SOCKFS.getSocket(fd);if(!socket)throw new FS.ErrnoError(8);return socket};var inetPton4=str=>{var b=str.split(".");for(var 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};var inetPton6=str=>{var words;var w,offset,z;var valid6regx=/^((?=.*::)(?!.*::.+::)(::)?([\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;var parts=[];if(!valid6regx.test(str)){return null}if(str==="::"){return[0,0,0,0,0,0,0,0]}if(str.startsWith("::")){str=str.replace("::","Z:")}else{str=str.replace("::",":Z:")}if(str.indexOf(".")>0){str=str.replace(new RegExp("[.]","g"),":");words=str.split(":");words[words.length-4]=Number(words[words.length-4])+Number(words[words.length-3])*256;words[words.length-3]=Number(words[words.length-2])+Number(words[words.length-1])*256;words=words.slice(0,words.length-2)}else{words=str.split(":")}offset=0;z=0;for(w=0;wHEAPU8.fill(0,ptr,ptr+size);var writeSockaddr=(sa,family,addr,port,addrlen)=>{switch(family){case 2:addr=inetPton4(addr);zeroMemory(sa,16);if(addrlen){HEAP32[addrlen>>2]=16}HEAP16[sa>>1]=family;HEAP32[sa+4>>2]=addr;HEAP16[sa+2>>1]=_htons(port);break;case 10:addr=inetPton6(addr);zeroMemory(sa,28);if(addrlen){HEAP32[addrlen>>2]=28}HEAP32[sa>>2]=family;HEAP32[sa+8>>2]=addr[0];HEAP32[sa+12>>2]=addr[1];HEAP32[sa+16>>2]=addr[2];HEAP32[sa+20>>2]=addr[3];HEAP16[sa+2>>1]=_htons(port);break;default:return 5}return 0};var DNS={address_map:{id:1,addrs:{},names:{}},lookup_name(name){var res=inetPton4(name);if(res!==null){return name}res=inetPton6(name);if(res!==null){return name}var addr;if(DNS.address_map.addrs[name]){addr=DNS.address_map.addrs[name]}else{var id=DNS.address_map.id++;addr="172.29."+(id&255)+"."+(id&65280);DNS.address_map.names[addr]=name;DNS.address_map.addrs[name]=addr}return addr},lookup_addr(addr){if(DNS.address_map.names[addr]){return DNS.address_map.names[addr]}return null}};function ___syscall_accept4(fd,addr,addrlen,flags,d1,d2){try{var sock=getSocketFromFD(fd);var newsock=sock.sock_ops.accept(sock);if(addr){var errno=writeSockaddr(addr,newsock.family,DNS.lookup_name(newsock.daddr),newsock.dport,addrlen)}return newsock.stream.fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var inetNtop4=addr=>(addr&255)+"."+(addr>>8&255)+"."+(addr>>16&255)+"."+(addr>>24&255);var inetNtop6=ints=>{var str="";var word=0;var longest=0;var lastzero=0;var zstart=0;var len=0;var i=0;var parts=[ints[0]&65535,ints[0]>>16,ints[1]&65535,ints[1]>>16,ints[2]&65535,ints[2]>>16,ints[3]&65535,ints[3]>>16];var hasipv4=true;var v4part="";for(i=0;i<5;i++){if(parts[i]!==0){hasipv4=false;break}}if(hasipv4){v4part=inetNtop4(parts[6]|parts[7]<<16);if(parts[5]===-1){str="::ffff:";str+=v4part;return str}if(parts[5]===0){str="::";if(v4part==="0.0.0.0")v4part="";if(v4part==="0.0.0.1")v4part="1";str+=v4part;return str}}for(word=0;word<8;word++){if(parts[word]===0){if(word-lastzero>1){len=0}lastzero=word;len++}if(len>longest){longest=len;zstart=word-longest+1}}for(word=0;word<8;word++){if(longest>1){if(parts[word]===0&&word>=zstart&&word{var family=HEAP16[sa>>1];var port=_ntohs(HEAPU16[sa+2>>1]);var addr;switch(family){case 2:if(salen!==16){return{errno:28}}addr=HEAP32[sa+4>>2];addr=inetNtop4(addr);break;case 10:if(salen!==28){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,addr,port}};var getSocketAddress=(addrp,addrlen)=>{var info=readSockaddr(addrp,addrlen);if(info.errno)throw new FS.ErrnoError(info.errno);info.addr=DNS.lookup_addr(info.addr)||info.addr;return info};function ___syscall_bind(fd,addr,addrlen,d1,d2,d3){try{var sock=getSocketFromFD(fd);var info=getSocketAddress(addr,addrlen);sock.sock_ops.bind(sock,info.addr,info.port);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_connect(fd,addr,addrlen,d1,d2,d3){try{var sock=getSocketFromFD(fd);var info=getSocketAddress(addr,addrlen);sock.sock_ops.connect(sock,info.addr,info.port);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var UTF8ToString=(ptr,maxBytesToRead,ignoreNul)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead,ignoreNul):"";var SYSCALLS={currentUmask:18,calculateAt(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return dir+"/"+path},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();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();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);return 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(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},getStreamFromFD(fd){var stream=FS.getStreamChecked(fd);return stream},varargs:undefined,getStr(ptr){var ret=UTF8ToString(ptr);return ret}};function ___syscall_dup3(fd,newfd,flags){try{if(fd===newfd)return-28;if(flags&~524288)return-28;var old=SYSCALLS.getStreamFromFD(fd);if(newfd<0||newfd>=FS.MAX_OPEN_FDS)return-8;var existing=FS.getStream(newfd);if(existing)FS.close(existing);var stream=FS.dupStream(old,newfd);if(flags&524288){stream.flags|=524288}return stream.fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var syscallGetVarargI=()=>{var ret=HEAP32[+SYSCALLS.varargs>>2];SYSCALLS.varargs+=4;return ret};var syscallGetVarargP=syscallGetVarargI;function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=syscallGetVarargI();if(arg<0){return-28}while(FS.streams[arg]){arg++}var newStream;newStream=FS.dupStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=syscallGetVarargI();var mask=289792;stream.flags=stream.flags&~mask|arg&mask;return 0}case 12:{var arg=syscallGetVarargP();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0}return-28}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_fstat64(fd,buf){try{return SYSCALLS.writeStat(buf,FS.fstat(fd))}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);function ___syscall_getcwd(buf,size){try{if(size===0)return-28;var cwd=FS.cwd();var cwdLengthInBytes=lengthBytesUTF8(cwd)+1;if(size>2]=termios.c_iflag||0;HEAP32[argp+4>>2]=termios.c_oflag||0;HEAP32[argp+8>>2]=termios.c_cflag||0;HEAP32[argp+12>>2]=termios.c_lflag||0;for(var i=0;i<32;i++){HEAP8[argp+i+17]=termios.c_cc[i]||0}return 0}return 0}case 21510:case 21511:case 21512:{if(!stream.tty)return-59;return 0}case 21506:case 21507:case 21508:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcsets){var argp=syscallGetVarargP();var c_iflag=HEAP32[argp>>2];var c_oflag=HEAP32[argp+4>>2];var c_cflag=HEAP32[argp+8>>2];var c_lflag=HEAP32[argp+12>>2];var c_cc=[];for(var i=0;i<32;i++){c_cc.push(HEAP8[argp+i+17])}return stream.tty.ops.ioctl_tcsets(stream.tty,op,{c_iflag,c_oflag,c_cflag,c_lflag,c_cc})}return 0}case 21519:{if(!stream.tty)return-59;var argp=syscallGetVarargP();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21537:case 21531:{var argp=syscallGetVarargP();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tiocgwinsz){var winsize=stream.tty.ops.ioctl_tiocgwinsz(stream.tty);var argp=syscallGetVarargP();HEAP16[argp>>1]=winsize[0];HEAP16[argp+2>>1]=winsize[1]}return 0}case 21524:{if(!stream.tty)return-59;return 0}case 21515:{if(!stream.tty)return-59;return 0}default:return-28}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_listen(fd,backlog){try{var sock=getSocketFromFD(fd);sock.sock_ops.listen(sock,backlog);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_lstat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.writeStat(buf,FS.lstat(path))}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_newfstatat(dirfd,path,buf,flags){try{path=SYSCALLS.getStr(path);var nofollow=flags&256;var allowEmpty=flags&4096;flags=flags&~6400;path=SYSCALLS.calculateAt(dirfd,path,allowEmpty);return SYSCALLS.writeStat(buf,nofollow?FS.lstat(path):FS.stat(path))}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?syscallGetVarargI():0;if(flags&64){mode&=~SYSCALLS.currentUmask}return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var PIPEFS={BUCKET_BUFFER_SIZE:8192,mount(mount){return FS.createNode(null,"/",16384|511,0)},createPipe(){var pipe={buckets:[],refcnt:2,timestamp:new Date};pipe.buckets.push({buffer:new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE),offset:0,roffset:0});var rName=PIPEFS.nextname();var wName=PIPEFS.nextname();var rNode=FS.createNode(PIPEFS.root,rName,4096,0);var wNode=FS.createNode(PIPEFS.root,wName,4096,0);rNode.pipe=pipe;wNode.pipe=pipe;var readableStream=FS.createStream({path:rName,node:rNode,flags:0,seekable:false,stream_ops:PIPEFS.stream_ops});rNode.stream=readableStream;var writableStream=FS.createStream({path:wName,node:wNode,flags:1,seekable:false,stream_ops:PIPEFS.stream_ops});wNode.stream=writableStream;return{readable_fd:readableStream.fd,writable_fd:writableStream.fd}},stream_ops:{getattr(stream){var node=stream.node;var timestamp=node.pipe.timestamp;return{dev:14,ino:node.id,mode:4480,nlink:1,uid:0,gid:0,rdev:0,size:0,atime:timestamp,mtime:timestamp,ctime:timestamp,blksize:4096,blocks:0}},poll(stream,timeout,notifyCallback){var pipe=stream.node.pipe;if((stream.flags&2097155)===1){return 256|4}for(var bucket of pipe.buckets){if(bucket.offset-bucket.roffset>0){return 64|1}}return 0},dup(stream){stream.node.pipe.refcnt++},ioctl(stream,request,argp){if(request==21531){var pipe=stream.node.pipe;var currentLength=0;for(var bucket of pipe.buckets){currentLength+=bucket.offset-bucket.roffset}HEAP32[argp>>2]=currentLength;return 0}return 28},fsync(stream){return 28},read(stream,buffer,offset,length,position){var pipe=stream.node.pipe;var currentLength=0;for(var bucket of pipe.buckets){currentLength+=bucket.offset-bucket.roffset}var data=buffer.subarray(offset,offset+length);if(length<=0){return 0}if(currentLength==0){throw new FS.ErrnoError(6)}var toRead=Math.min(currentLength,length);var totalRead=toRead;var toRemove=0;for(var bucket of pipe.buckets){var bucketSize=bucket.offset-bucket.roffset;if(toRead<=bucketSize){var tmpSlice=bucket.buffer.subarray(bucket.roffset,bucket.offset);if(toRead=dataLen){currBucket.buffer.set(data,currBucket.offset);currBucket.offset+=dataLen;return dataLen}else if(freeBytesInCurrBuffer>0){currBucket.buffer.set(data.subarray(0,freeBytesInCurrBuffer),currBucket.offset);currBucket.offset+=freeBytesInCurrBuffer;data=data.subarray(freeBytesInCurrBuffer,data.byteLength)}var numBuckets=data.byteLength/PIPEFS.BUCKET_BUFFER_SIZE|0;var remElements=data.byteLength%PIPEFS.BUCKET_BUFFER_SIZE;for(var i=0;i0){var newBucket={buffer:new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE),offset:data.byteLength,roffset:0};pipe.buckets.push(newBucket);newBucket.buffer.set(data)}return dataLen},close(stream){var pipe=stream.node.pipe;pipe.refcnt--;if(pipe.refcnt===0){pipe.buckets=null}}},nextname(){if(!PIPEFS.nextname.current){PIPEFS.nextname.current=0}return"pipe["+PIPEFS.nextname.current+++"]"}};function ___syscall_pipe2(fdPtr,flags){try{if(fdPtr==0){throw new FS.ErrnoError(21)}var validFlags=524288|2048;if(flags&~validFlags){throw new FS.ErrnoError(138)}var res=PIPEFS.createPipe();if(flags&2048){FS.getStream(res.readable_fd).flags|=2048;FS.getStream(res.writable_fd).flags|=2048}HEAP32[fdPtr>>2]=res.readable_fd;HEAP32[fdPtr+4>>2]=res.writable_fd;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_renameat(olddirfd,oldpath,newdirfd,newpath){try{oldpath=SYSCALLS.getStr(oldpath);newpath=SYSCALLS.getStr(newpath);oldpath=SYSCALLS.calculateAt(olddirfd,oldpath);newpath=SYSCALLS.calculateAt(newdirfd,newpath);FS.rename(oldpath,newpath);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_socket(domain,type,protocol){try{var sock=SOCKFS.createSocket(domain,type,protocol);return sock.stream.fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.writeStat(buf,FS.stat(path))}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_unlinkat(dirfd,path,flags){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(!flags){FS.unlink(path)}else if(flags===512){FS.rmdir(path)}else{return-28}return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var __emscripten_lookup_name=name=>{var nameString=UTF8ToString(name);return inetPton4(DNS.lookup_name(nameString))};var __emscripten_throw_longjmp=()=>{throw new EmscriptenSjLj};var _emscripten_get_now=()=>performance.now();var _emscripten_date_now=()=>Date.now();var nowIsMonotonic=1;var checkWasiClock=clock_id=>clock_id>=0&&clock_id<=3;var INT53_MAX=9007199254740992;var INT53_MIN=-9007199254740992;var bigintToI53Checked=num=>numINT53_MAX?NaN:Number(num);function _clock_time_get(clk_id,ignored_precision,ptime){ignored_precision=bigintToI53Checked(ignored_precision);if(!checkWasiClock(clk_id)){return 28}var now;if(clk_id===0){now=_emscripten_date_now()}else if(nowIsMonotonic){now=_emscripten_get_now()}else{return 52}var nsec=Math.round(now*1e3*1e3);HEAP64[ptime>>3]=BigInt(nsec);return 0}var getHeapMax=()=>2147483648;var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var growMemory=size=>{var oldHeapSize=wasmMemory.buffer.byteLength;var pages=(size-oldHeapSize+65535)/65536|0;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignMemory(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var ENV={};var getExecutableName=()=>thisProgram;var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(globalThis.navigator?.language??"C").replace("-","_")+".UTF-8";var env={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:lang,_:getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var _environ_get=(__environ,environ_buf)=>{var bufSize=0;var envp=0;for(var string of getEnvStrings()){var ptr=environ_buf+bufSize;HEAPU32[__environ+envp>>2]=ptr;bufSize+=stringToUTF8(string,ptr,Infinity)+1;envp+=4}return 0};var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;for(var string of strings){bufSize+=lengthBytesUTF8(string)+1}HEAPU32[penviron_buf_size>>2]=bufSize;return 0};var runtimeKeepaliveCounter=0;var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){Module["onExit"]?.(code);ABORT=true}quit_(code,new ExitStatus(code))};var exitJS=(status,implicit)=>{EXITSTATUS=status;_proc_exit(status)};var _exit=exitJS;function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _fd_fdstat_get(fd,pbuf){try{var rightsBase=0;var rightsInheriting=0;var flags=0;{var stream=SYSCALLS.getStreamFromFD(fd);var type=stream.tty?2:FS.isDir(stream.mode)?3:FS.isLink(stream.mode)?7:4}HEAP8[pbuf]=type;HEAP16[pbuf+2>>1]=flags;HEAP64[pbuf+8>>3]=BigInt(rightsBase);HEAP64[pbuf+16>>3]=BigInt(rightsInheriting);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doReadv=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _fd_seek(fd,offset,whence,newOffset){offset=bigintToI53Checked(offset);try{if(isNaN(offset))return 22;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);HEAP64[newOffset>>3]=BigInt(stream.position);if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doWritev=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var wasmTableMirror=[];var getWasmTableEntry=funcPtr=>{var func=wasmTableMirror[funcPtr];if(!func){wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func};var getCFunc=ident=>{var func=Module["_"+ident];return func};var writeArrayToMemory=(array,buffer)=>{HEAP8.set(array,buffer)};var stackAlloc=sz=>__emscripten_stack_alloc(sz);var stringToUTF8OnStack=str=>{var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8(str,ret,size);return ret};var ccall=(ident,returnType,argTypes,args,opts)=>{var toC={string:str=>{var ret=0;if(str!==null&&str!==undefined&&str!==0){ret=stringToUTF8OnStack(str)}return ret},array:arr=>{var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType==="string"){return UTF8ToString(ret)}if(returnType==="boolean")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i{var numericArgs=!argTypes||argTypes.every(type=>type==="number"||type==="boolean");var numericRet=returnType!=="string";if(numericRet&&numericArgs&&!opts){return getCFunc(ident)}return(...args)=>ccall(ident,returnType,argTypes,args,opts)};FS.createPreloadedFile=FS_createPreloadedFile;FS.preloadFile=FS_preloadFile;FS.staticInit();{if(Module["noExitRuntime"])noExitRuntime=Module["noExitRuntime"];if(Module["preloadPlugins"])preloadPlugins=Module["preloadPlugins"];if(Module["print"])out=Module["print"];if(Module["printErr"])err=Module["printErr"];if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];if(Module["arguments"])programArgs=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].shift()()}}}Module["ccall"]=ccall;Module["cwrap"]=cwrap;Module["UTF8ToString"]=UTF8ToString;Module["stringToUTF8"]=stringToUTF8;Module["lengthBytesUTF8"]=lengthBytesUTF8;function js_lumbda_bend_call(payload_ptr,payload_len,resp_buf,resp_cap){var bendUrl=globalThis._lumbdaCBendUrl;if(!bendUrl){var msg="no bend URL configured";var n=Math.min(msg.length,resp_cap-1);for(var i=0;i0){dependenciesFulfilled=run;return}preRun();if(runDependencies>0){dependenciesFulfilled=run;return}function doRun(){Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve?.(Module);Module["onRuntimeInitialized"]?.();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(()=>{setTimeout(()=>Module["setStatus"](""),1);doRun()},1)}else{doRun()}}var wasmExports;wasmExports=await (createWasm());run();if(runtimeInitialized){moduleRtn=Module}else{moduleRtn=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject})} +async function createLumbdaC(moduleArg={}){var moduleRtn;var Module=moduleArg;var ENVIRONMENT_IS_WEB=!!globalThis.window;var ENVIRONMENT_IS_WORKER=!!globalThis.WorkerGlobalScope;var ENVIRONMENT_IS_NODE=globalThis.process?.versions?.node&&globalThis.process?.type!="renderer";if(ENVIRONMENT_IS_NODE){const{createRequire}=await import("node:module");var require=createRequire(import.meta.url)}var programArgs=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var _scriptName=import.meta.url;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var readAsync,readBinary;if(ENVIRONMENT_IS_NODE){var fs=require("node:fs");if(_scriptName.startsWith("file:")){scriptDirectory=require("node:path").dirname(require("node:url").fileURLToPath(_scriptName))+"/"}readBinary=filename=>{filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename);return ret};readAsync=async(filename,binary=true)=>{filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename,binary?undefined:"utf8");return ret};if(process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}programArgs=process.argv.slice(2);quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){try{scriptDirectory=new URL(".",_scriptName).href}catch{}{if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=async url=>{var response=await fetch(url,{credentials:"same-origin"});if(response.ok){return response.arrayBuffer()}throw new Error(response.status+" : "+response.url)}}}else{}var out=console.log.bind(console);var err=console.error.bind(console);var wasmBinary;var ABORT=false;var EXITSTATUS;var isFileURI=filename=>filename.startsWith("file://");class EmscriptenEH{}class EmscriptenSjLj extends EmscriptenEH{}var readyPromiseResolve,readyPromiseReject;var runtimeInitialized=false;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 preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(onPreRuns)}function initRuntime(){runtimeInitialized=true;SOCKFS.root=FS.mount(SOCKFS,{},null);if(!Module["noFSInit"]&&!FS.initialized)FS.init();TTY.init();PIPEFS.root=FS.mount(PIPEFS,{},null);wasmExports["__wasm_call_ctors"]();FS.ignorePermissions=false}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(onPostRuns)}function abort(what){Module["onAbort"]?.(what);what=`Aborted(${what})`;err(what);ABORT=true;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject?.(e);throw e}var wasmBinaryFile;function findWasmBinary(){if(Module["locateFile"]){return locateFile("lumbda-c.wasm")}return new URL("lumbda-c.wasm",import.meta.url).href}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}async function getWasmBinary(binaryFile){if(!wasmBinary){try{var response=await readAsync(binaryFile);return new Uint8Array(response)}catch{}}return getBinarySync(binaryFile)}async function instantiateArrayBuffer(binaryFile,imports){try{var binary=await getWasmBinary(binaryFile);var instance=await WebAssembly.instantiate(binary,imports);return instance}catch(reason){err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)}}async function instantiateAsync(binary,binaryFile,imports){if(!binary&&!ENVIRONMENT_IS_NODE){try{var response=fetch(binaryFile,{credentials:"same-origin"});var instantiationResult=await WebAssembly.instantiateStreaming(response,imports);return instantiationResult}catch(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation")}}return instantiateArrayBuffer(binaryFile,imports)}function getWasmImports(){var imports={env:wasmImports,wasi_snapshot_preview1:wasmImports};return imports}async function createWasm(){function receiveInstance(instance,module){wasmExports=instance.exports;assignWasmExports(wasmExports);updateMemoryViews();return wasmExports}function receiveInstantiationResult(result){return receiveInstance(result["instance"])}var info=getWasmImports();if(Module["instantiateWasm"]){return new Promise((resolve,reject)=>{Module["instantiateWasm"](info,(inst,mod)=>{resolve(receiveInstance(inst,mod))})})}wasmBinaryFile??=findWasmBinary();var result=await instantiateAsync(wasmBinary,wasmBinaryFile,info);var exports=receiveInstantiationResult(result);return exports}class ExitStatus{name="ExitStatus";constructor(status){this.message=`Program terminated with exit(${status})`;this.status=status}}var HEAP16;var HEAP32;var HEAP64;var HEAP8;var HEAPF32;var HEAPF64;var HEAPU16;var HEAPU32;var HEAPU64;var HEAPU8;var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var onPostRuns=[];var addOnPostRun=cb=>onPostRuns.push(cb);var onPreRuns=[];var addOnPreRun=cb=>onPreRuns.push(cb);var noExitRuntime=true;var stackRestore=val=>__emscripten_stack_restore(val);var stackSave=()=>_emscripten_stack_get_current();var initRandomFill=()=>{if(ENVIRONMENT_IS_NODE){var nodeCrypto=require("node:crypto");return view=>nodeCrypto.randomFillSync(view)}return view=>(crypto.getRandomValues(view),0)};var randomFill=view=>(randomFill=initRandomFill())(view);var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.slice(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.slice(0,-1)}return root+dir},basename:path=>path&&path.match(/([^\/]+|\/)\/*$/)[1],join:(...paths)=>PATH.normalize(paths.join("/")),join2:(l,r)=>PATH.normalize(l+"/"+r)};var PATH_FS={resolve:(...args)=>{var resolvedPath="",resolvedAbsolute=false;for(var i=args.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?args[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).slice(1);to=PATH_FS.resolve(to).slice(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i{var maxIdx=idx+maxBytesToRead;if(ignoreNul)return maxIdx;while(heapOrArray[idx]&&!(idx>=maxIdx))++idx;return idx};var UTF8ArrayToString=(heapOrArray,idx=0,maxBytesToRead,ignoreNul)=>{var endPtr=findStringEnd(heapOrArray,idx,maxBytesToRead,ignoreNul);if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str};var FS_stdin_getChar_buffer=[];var lengthBytesUTF8=str=>{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63;i++}}heap[outIdx]=0;return outIdx-startIdx};var intArrayFromString=(stringy,dontAddNull,length)=>{var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array};var FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc(BUFSIZE);var bytesRead=0;var fd=process.stdin.fd;try{bytesRead=fs.readSync(fd,buf,0,BUFSIZE)}catch(e){if(e.toString().includes("EOF"))bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}}else if(globalThis.window?.prompt){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else{}if(!result){return null}FS_stdin_getChar_buffer=intArrayFromString(result,true)}return FS_stdin_getChar_buffer.shift()};var TTY={ttys:[],init(){},shutdown(){},register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close(stream){stream.tty.ops.fsync(stream.tty)},fsync(stream){stream.tty.ops.fsync(stream.tty)},read(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){out(UTF8ArrayToString(tty.output));tty.output=[]}},ioctl_tcgets(tty){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(tty,optional_actions,data){return 0},ioctl_tiocgwinsz(tty){return[24,80]}},default_tty1_ops:{put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync(tty){if(tty.output?.length>0){err(UTF8ArrayToString(tty.output));tty.output=[]}}}};var mmapAlloc=size=>{abort()};var 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}};var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=MEMFS.emptyFileContents??=new Uint8Array(0)}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.atime=node.mtime=node.ctime=Date.now();if(parent){parent.contents[name]=node;parent.atime=parent.mtime=parent.ctime=node.atime}return node},getFileDataAsTypedArray(node){return node.contents.subarray(0,node.usedBytes)},expandFileStorage(node,newCapacity){var prevCapacity=node.contents.length;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity)newCapacity=Math.max(newCapacity,256);var oldContents=MEMFS.getFileDataAsTypedArray(node);node.contents=new Uint8Array(newCapacity);node.contents.set(oldContents)},resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;var 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={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.atime);attr.mtime=new Date(node.mtime);attr.ctime=new Date(node.ctime);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr(node,attr){for(const key of["mode","atime","mtime","ctime"]){if(attr[key]!=null){node[key]=attr[key]}}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup(parent,name){if(!MEMFS.doesNotExistError){MEMFS.doesNotExistError=new FS.ErrnoError(44);MEMFS.doesNotExistError.stack=""}throw 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;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){var node=FS.lookupNode(parent,name);for(var i in node.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){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);buffer.set(contents.subarray(position,position+size),offset);return size},write(stream,buffer,offset,length,position,canOwn){if(buffer.buffer===HEAP8.buffer){canOwn=false}if(!length)return 0;var node=stream.node;node.mtime=node.ctime=Date.now();if(canOwn){node.contents=buffer.subarray(offset,offset+length);node.usedBytes=length}else if(node.usedBytes===0&&position===0){node.contents=buffer.slice(offset,offset+length);node.usedBytes=length}else{MEMFS.expandFileStorage(node,position+length);node.contents.set(buffer.subarray(offset,offset+length),position);node.usedBytes=Math.max(node.usedBytes,position+length)}return length},llseek(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.usedBytes}}if(position<0){throw new FS.ErrnoError(28)}return position},mmap(stream,length,position,prot,flags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}var ptr;var allocated;var contents=stream.node.contents;if(!(flags&2)&&contents.buffer===HEAP8.buffer){allocated=false;ptr=contents.byteOffset}else{allocated=true;ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}if(contents){if(position>0||position+length{if(typeof str!="string")return str;var flagModes={r:0,"r+":2,w:512|64|1,"w+":512|64|2,a:1024|64|1,"a+":1024|64|2};var flags=flagModes[str];if(typeof flags=="undefined"){throw new Error(`Unknown file open mode: ${str}`)}return flags};var FS_fileDataToTypedArray=data=>{if(typeof data=="string"){data=intArrayFromString(data,true)}if(!data.subarray){data=new Uint8Array(data)}return data};var FS_getMode=(canRead,canWrite)=>{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode};var asyncLoad=async url=>{var arrayBuffer=await readAsync(url);return new Uint8Array(arrayBuffer)};var FS_createDataFile=(...args)=>FS.createDataFile(...args);var getUniqueRunDependency=id=>id;var runDependencies=0;var dependenciesFulfilled=null;var removeRunDependency=id=>{runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);if(runDependencies==0){if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}};var addRunDependency=id=>{runDependencies++;Module["monitorRunDependencies"]?.(runDependencies)};var preloadPlugins=[];var FS_handledByPreloadPlugin=async(byteArray,fullname)=>{if(typeof Browser!="undefined")Browser.init();for(var plugin of preloadPlugins){if(plugin["canHandle"](fullname)){return plugin["handle"](byteArray,fullname)}}return byteArray};var FS_preloadFile=async(parent,name,url,canRead,canWrite,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);addRunDependency(dep);try{var byteArray=url;if(typeof url=="string"){byteArray=await asyncLoad(url)}byteArray=await FS_handledByPreloadPlugin(byteArray,fullname);preFinish?.();if(!dontCreateFile){FS_createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}}finally{removeRunDependency(dep)}};var 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)};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,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(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(val){this.shared.flags=val}get position(){return this.shared.position}set position(val){this.shared.position=val}},FSNode:class{node_ops={};stream_ops={};readMode=292|73;writeMode=146;mounted=null;constructor(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;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??=true;if(!PATH.isAbs(path)){path=FS.cwd()+"/"+path}linkloop:for(var nlinks=0;nlinks<40;nlinks++){var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i>>0)%FS.nameTable.length},hashAddNode(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode(node){FS.hashRemoveNode(node)},isRoot(node){return node===node.parent},isMountpoint(node){return!!node.mounted},isFile(mode){return(mode&61440)===32768},isDir(mode){return(mode&61440)===16384},isLink(mode){return(mode&61440)===40960},isChrdev(mode){return(mode&61440)===8192},isBlkdev(mode){return(mode&61440)===24576},isFIFO(mode){return(mode&61440)===4096},isSocket(mode){return(mode&49152)===49152},flagsToPermissionString(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions(node,perms){if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}if(perms.includes("w")&&!(node.mode&146)){return 2}if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup(dir){if(!FS.isDir(dir.mode))return 54;var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate(dir,name){if(!FS.isDir(dir.mode)){return 54}try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else if(FS.isDir(node.mode)){return 31}return 0},mayOpen(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}var mode=FS.flagsToPermissionString(flags);if(FS.isDir(node.mode)){if(mode!=="r"||flags&(512|64)){return 31}}return FS.nodePermissions(node,mode)},checkOpExists(op,err){if(!op){throw new FS.ErrnoError(err)}return op},MAX_OPEN_FDS:4096,nextfd(){for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStreamChecked(fd){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}return stream},getStream:fd=>FS.streams[fd],createStream(stream,fd=-1){stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream(fd){FS.streams[fd]=null},dupStream(origStream,fd=-1){var stream=FS.createStream(origStream,fd);stream.stream_ops?.dup?.(stream);return stream},doSetAttr(stream,node,attr){var setattr=stream?.stream_ops.setattr;var arg=setattr?stream:node;setattr??=node.node_ops.setattr;FS.checkOpExists(setattr,63);try{setattr(arg,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=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push(...m.mounts)}return mounts},syncfs(populate,callback){if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}for(var mount of mounts){if(mount.type.syncfs){mount.type.syncfs(mount,populate,done)}else{done(null)}}},mount(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type,opts,mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);for(var[hash,current]of Object.entries(FS.nameTable)){while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}}node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup(parent,name){return parent.node_ops.lookup(parent,name)},mknod(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name){throw new FS.ErrnoError(28)}if(name==="."||name===".."){throw new FS.ErrnoError(20)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},statfs(path){return FS.statfsNode(FS.lookupPath(path,{follow:true}).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};if(node.node_ops.statfs){Object.assign(rtn,node.node_ops.statfs(node.mount.opts.root))}return rtn},create(path,mode=438){mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir(path,mode=511){mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree(path,mode){var dirs=path.split("/");var d="";for(var dir of dirs){if(!dir)continue;if(d||PATH.isAbs(path))d+="/";d+=dir;try{FS.mkdir(d,mode)}catch(e){if(e.errno!=20)throw e}}},mkdev(path,mode,dev){if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink(oldpath,newpath){if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name);old_node.parent=new_dir}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;var readdir=FS.checkOpExists(node.node_ops.readdir,54);return readdir(node)},unlink(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return link.node_ops.readlink(link)},stat(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;var getattr=FS.checkOpExists(node.node_ops.getattr,63);return getattr(node)},fstat(fd){var stream=FS.getStreamChecked(fd);var node=stream.node;var getattr=stream.stream_ops.getattr;var arg=getattr?stream:node;getattr??=node.node_ops.getattr;FS.checkOpExists(getattr,63);return getattr(arg)},lstat(path){return FS.stat(path,true)},doChmod(stream,node,mode,dontFollow){FS.doSetAttr(stream,node,{mode:mode&4095|node.mode&~4095,ctime:Date.now(),dontFollow})},chmod(path,mode,dontFollow){var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}FS.doChmod(null,node,mode,dontFollow)},lchmod(path,mode){FS.chmod(path,mode,true)},fchmod(fd,mode){var stream=FS.getStreamChecked(fd);FS.doChmod(stream,stream.node,mode,false)},doChown(stream,node,dontFollow){FS.doSetAttr(stream,node,{timestamp:Date.now(),dontFollow})},chown(path,uid,gid,dontFollow){var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}FS.doChown(null,node,dontFollow)},lchown(path,uid,gid){FS.chown(path,uid,gid,true)},fchown(fd,uid,gid){var stream=FS.getStreamChecked(fd);FS.doChown(stream,stream.node,false)},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)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}FS.doTruncate(null,node,len)},ftruncate(fd,len){var stream=FS.getStreamChecked(fd);if(len<0||(stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.doTruncate(stream,stream.node,len)},utime(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;var setattr=FS.checkOpExists(node.node_ops.setattr,63);setattr(node,{atime,mtime})},open(path,flags,mode=438){if(path===""){throw new FS.ErrnoError(44)}flags=FS_modeStringToFlags(flags);if(flags&64){mode=mode&4095|32768}else{mode=0}var node;var isDirPath;if(typeof path=="object"){node=path}else{isDirPath=path.endsWith("/");var lookup=FS.lookupPath(path,{follow:!(flags&131072),noent_okay:true});node=lookup.node;path=lookup.path}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else if(isDirPath){throw new FS.ErrnoError(31)}else{node=FS.mknod(path,mode|511,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node,path:FS.getPath(node),flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(created){FS.chmod(node,mode&511)}return stream},close(stream){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed(stream){return stream.fd===null},llseek(stream,offset,whence){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},mmap(stream,length,position,prot,flags){if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}if(!length){throw new FS.ErrnoError(28)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync(stream,buffer,offset,length,mmapFlags){if(!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},ioctl(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile(path,opts={}){opts.flags=opts.flags??0;opts.encoding=opts.encoding??"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){abort(`Invalid encoding type "${opts.encoding}"`)}var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){buf=UTF8ArrayToString(buf)}FS.close(stream);return buf},writeFile(path,data,opts={}){opts.flags=opts.flags??577;var stream=FS.open(path,opts.flags,opts.mode);data=FS_fileDataToTypedArray(data);FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn);FS.close(stream)},cwd:()=>FS.currentPath,chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length,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;var randomByte=()=>{if(randomLeft===0){randomFill(randomBuffer);randomLeft=randomBuffer.byteLength}return randomBuffer[--randomLeft]};FS.createDevice("/dev","random",randomByte);FS.createDevice("/dev","urandom",randomByte);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount(){var node=FS.createNode(proc_self,"fd",16895,73);node.stream_ops={llseek:MEMFS.stream_ops.llseek};node.node_ops={lookup(parent,name){var fd=+name;var stream=FS.getStreamChecked(fd);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path},id:fd+1};ret.parent=ret;return ret},readdir(){return Array.from(FS.streams.entries()).filter(([k,v])=>v).map(([k,v])=>k.toString())}};return node}},{},"/proc/self/fd")},createStandardStreams(input,output,error){if(input){FS.createDevice("/dev","stdin",input)}else{FS.symlink("/dev/tty","/dev/stdin")}if(output){FS.createDevice("/dev","stdout",null,output)}else{FS.symlink("/dev/tty","/dev/stdout")}if(error){FS.createDevice("/dev","stderr",null,error)}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},staticInit(){FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={MEMFS}},init(input,output,error){FS.initialized=true;input??=Module["stdin"];output??=Module["stdout"];error??=Module["stderr"];FS.createStandardStreams(input,output,error)},quit(){FS.initialized=false;for(var stream of FS.streams){if(stream){FS.close(stream)}}},findObject(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);if(!ret.exists){return null}return ret.object},analyzePath(path,dontResolveLastLink){try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath(parent,path,canRead,canWrite){parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){if(e.errno!=20)throw e}parent=current}return current},createFile(parent,name,properties,canRead,canWrite){var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile(parent,name,data,canRead,canWrite,canOwn){var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS_getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){data=FS_fileDataToTypedArray(data);FS.chmod(node,mode|146);var stream=FS.open(node,577);FS.write(stream,data,0,data.length,0,canOwn);FS.close(stream);FS.chmod(node,mode)}},createDevice(parent,name,input,output){var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(!!input,!!output);FS.createDevice.major??=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open(stream){stream.seekable=false},close(stream){if(output?.buffer?.length){output(10)}},read(stream,buffer,offset,length,pos){var bytesRead=0;for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]}setDataGetter(getter){this.getter=getter}cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))abort("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)abort(`invalid range (${from}, ${to}) or no bytes requested!`);if(to>datalength-1)abort(`only ${datalength} bytes available! programmer error!`);var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))abort("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText??"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")abort("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true}get length(){if(!this.lengthKnown){this.cacheLength()}return this._length}get chunkSize(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}if(globalThis.XMLHttpRequest){if(!ENVIRONMENT_IS_WORKER)abort("Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc");var lazyArray=new LazyUint8Array;var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};for(const[key,fn]of Object.entries(node.stream_ops)){stream_ops[key]=(...args)=>{FS.forceLoadFile(node);return fn(...args)}}function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr,allocated:true}};node.stream_ops=stream_ops;return node}};var SOCKFS={websocketArgs:{},callbacks:{},on(event,callback){SOCKFS.callbacks[event]=callback},emit(event,param){SOCKFS.callbacks[event]?.(param)},mount(mount){SOCKFS.websocketArgs=Module["websocket"]||{};(Module["websocket"]??={})["on"]=SOCKFS.on;return FS.createNode(null,"/",16895,0)},createSocket(family,type,protocol){if(family!=2){throw new FS.ErrnoError(5)}type&=~526336;if(type!=1&&type!=2){throw new FS.ErrnoError(28)}var streaming=type==1;if(streaming&&protocol&&protocol!=6){throw new FS.ErrnoError(66)}var sock={family,type,protocol,server:null,error:null,peers:{},pending:[],recv_queue:[],sock_ops:SOCKFS.websocket_sock_ops};var name=SOCKFS.nextname();var node=FS.createNode(SOCKFS.root,name,49152,0);node.sock=sock;var stream=FS.createStream({path:name,node,flags:2,seekable:false,stream_ops:SOCKFS.stream_ops});sock.stream=stream;return sock},getSocket(fd){var stream=FS.getStream(fd);if(!stream||!FS.isSocket(stream.node.mode)){return null}return stream.node.sock},stream_ops:{poll(stream){var sock=stream.node.sock;return sock.sock_ops.poll(sock)},ioctl(stream,request,varargs){var sock=stream.node.sock;return sock.sock_ops.ioctl(sock,request,varargs)},read(stream,buffer,offset,length,position){var sock=stream.node.sock;var msg=sock.sock_ops.recvmsg(sock,length);if(!msg){return 0}buffer.set(msg.buffer,offset);return msg.buffer.length},write(stream,buffer,offset,length,position){var sock=stream.node.sock;return sock.sock_ops.sendmsg(sock,buffer,offset,length)},close(stream){var sock=stream.node.sock;sock.sock_ops.close(sock)}},nextname(){if(!SOCKFS.nextname.current){SOCKFS.nextname.current=0}return`socket[${SOCKFS.nextname.current++}]`},websocket_sock_ops:{createPeer(sock,addr,port){var ws;if(typeof addr=="object"){ws=addr;addr=null;port=null}if(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 url="ws://".replace("#","//");var subProtocols="binary";var opts=undefined;if(SOCKFS.websocketArgs["url"]){url=SOCKFS.websocketArgs["url"]}if(SOCKFS.websocketArgs["subprotocol"]){subProtocols=SOCKFS.websocketArgs["subprotocol"]}else if(SOCKFS.websocketArgs["subprotocol"]===null){subProtocols="null"}if(url==="ws://"||url==="wss://"){var parts=addr.split("/");url=url+parts[0]+":"+port+"/"+parts.slice(1).join("/")}if(subProtocols!=="null"){subProtocols=subProtocols.replace(/^ +| +$/g,"").split(/ *, */);opts=subProtocols}var WebSocketConstructor;if(ENVIRONMENT_IS_NODE){WebSocketConstructor=require("ws")}else{WebSocketConstructor=WebSocket}ws=new WebSocketConstructor(url,opts);ws.binaryType="arraybuffer"}catch(e){throw new FS.ErrnoError(23)}}var peer={addr,port,socket:ws,msg_send_queue:[]};SOCKFS.websocket_sock_ops.addPeer(sock,peer);SOCKFS.websocket_sock_ops.handlePeerEvents(sock,peer);if(sock.type===2&&typeof sock.sport!="undefined"){peer.msg_send_queue.push(new Uint8Array([255,255,255,255,"p".charCodeAt(0),"o".charCodeAt(0),"r".charCodeAt(0),"t".charCodeAt(0),(sock.sport&65280)>>8,sock.sport&255]))}return peer},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=true;function handleOpen(){sock.connecting=false;SOCKFS.emit("open",sock.stream.fd);try{var queued=peer.msg_send_queue.shift();while(queued){peer.socket.send(queued);queued=peer.msg_send_queue.shift()}}catch(e){peer.socket.close()}}function handleMessage(data){if(typeof data=="string"){var encoder=new TextEncoder;data=encoder.encode(data)}else{if(data.byteLength==0){return}data=new Uint8Array(data)}var wasfirst=first;first=false;if(wasfirst&&data.length===10&&data[0]===255&&data[1]===255&&data[2]===255&&data[3]===255&&data[4]==="p".charCodeAt(0)&&data[5]==="o".charCodeAt(0)&&data[6]==="r".charCodeAt(0)&&data[7]==="t".charCodeAt(0)){var newport=data[8]<<8|data[9];SOCKFS.websocket_sock_ops.removePeer(sock,peer);peer.port=newport;SOCKFS.websocket_sock_ops.addPeer(sock,peer);return}sock.recv_queue.push({addr:peer.addr,port:peer.port,data});SOCKFS.emit("message",sock.stream.fd)}if(ENVIRONMENT_IS_NODE){peer.socket.on("open",handleOpen);peer.socket.on("message",(data,isBinary)=>{if(!isBinary){return}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"])});return}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){if(sock.type===1&&sock.server){return sock.pending.length?64|1:0}var mask=0;var dest=sock.type===1?SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport):null;if(sock.recv_queue.length||!dest||dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=64|1}if(!dest||dest&&dest.socket.readyState===dest.socket.OPEN){mask|=4}if(dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){if(sock.connecting){mask|=4}else{mask|=16}}return mask},ioctl(sock,request,arg){switch(request){case 21531:var bytes=0;if(sock.recv_queue.length){bytes=sock.recv_queue[0].data.length}HEAP32[arg>>2]=bytes;return 0;case 21537:var on=HEAP32[arg>>2];if(on){sock.stream.flags|=2048}else{sock.stream.flags&=~2048}return 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(typeof sock.saddr!="undefined"||typeof sock.sport!="undefined"){throw new FS.ErrnoError(28)}sock.saddr=addr;sock.sport=port;if(sock.type===2){if(sock.server){sock.server.close();sock.server=null}try{sock.sock_ops.listen(sock,0)}catch(e){if(!(e.name==="ErrnoError"))throw e;if(e.errno!==138)throw e}}},connect(sock,addr,port){if(sock.server){throw new FS.ErrnoError(138)}if(typeof sock.daddr!="undefined"&&typeof sock.dport!="undefined"){var dest=SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport);if(dest){if(dest.socket.readyState===dest.socket.CONNECTING){throw new FS.ErrnoError(7)}else{throw new FS.ErrnoError(30)}}}var peer=SOCKFS.websocket_sock_ops.createPeer(sock,addr,port);sock.daddr=peer.addr;sock.dport=peer.port;sock.connecting=true},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;var host=sock.saddr;sock.server=new WebSocketServer({host,port:sock.sport});SOCKFS.emit("listen",sock.stream.fd);sock.server.on("connection",ws=>{if(sock.type===1){var newsock=SOCKFS.createSocket(sock.family,sock.type,sock.protocol);var 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)}else{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){if(!listensock.server||!listensock.pending.length){throw new FS.ErrnoError(28)}var newsock=listensock.pending.shift();newsock.stream.flags=listensock.stream.flags;return newsock},getname(sock,peer){var addr,port;if(peer){if(sock.daddr===undefined||sock.dport===undefined){throw new FS.ErrnoError(53)}addr=sock.daddr;port=sock.dport}else{addr=sock.saddr||0;port=sock.sport||0}return{addr,port}},sendmsg(sock,buffer,offset,length,addr,port){if(sock.type===2){if(addr===undefined||port===undefined){addr=sock.daddr;port=sock.dport}if(addr===undefined||port===undefined){throw new FS.ErrnoError(17)}}else{addr=sock.daddr;port=sock.dport}var dest=SOCKFS.websocket_sock_ops.getPeer(sock,addr,port);if(sock.type===1){if(!dest||dest.socket.readyState===dest.socket.CLOSING||dest.socket.readyState===dest.socket.CLOSED){throw new FS.ErrnoError(53)}}if(ArrayBuffer.isView(buffer)){offset+=buffer.byteOffset;buffer=buffer.buffer}var data=buffer.slice(offset,offset+length);if(!dest||dest.socket.readyState!==dest.socket.OPEN){if(sock.type===2){if(!dest||dest.socket.readyState===dest.socket.CLOSING||dest.socket.readyState===dest.socket.CLOSED){dest=SOCKFS.websocket_sock_ops.createPeer(sock,addr,port)}}dest.msg_send_queue.push(data);return length}try{dest.socket.send(data);return length}catch(e){throw new FS.ErrnoError(28)}},recvmsg(sock,length){if(sock.type===1&&sock.server){throw new FS.ErrnoError(53)}var queued=sock.recv_queue.shift();if(!queued){if(sock.type===1){var dest=SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport);if(!dest){throw new FS.ErrnoError(53)}if(dest.socket.readyState===dest.socket.CLOSING||dest.socket.readyState===dest.socket.CLOSED){return null}throw new FS.ErrnoError(6)}throw new FS.ErrnoError(6)}var queuedLength=queued.data.byteLength||queued.data.length;var queuedOffset=queued.data.byteOffset||0;var queuedBuffer=queued.data.buffer||queued.data;var bytesRead=Math.min(length,queuedLength);var res={buffer:new Uint8Array(queuedBuffer,queuedOffset,bytesRead),addr:queued.addr,port:queued.port};if(sock.type===1&&bytesRead{var socket=SOCKFS.getSocket(fd);if(!socket)throw new FS.ErrnoError(8);return socket};var inetPton4=str=>{var b=str.split(".");for(var 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};var inetPton6=str=>{var words;var w,offset,z;var valid6regx=/^((?=.*::)(?!.*::.+::)(::)?([\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;var parts=[];if(!valid6regx.test(str)){return null}if(str==="::"){return[0,0,0,0,0,0,0,0]}if(str.startsWith("::")){str=str.replace("::","Z:")}else{str=str.replace("::",":Z:")}if(str.indexOf(".")>0){str=str.replace(new RegExp("[.]","g"),":");words=str.split(":");words[words.length-4]=Number(words[words.length-4])+Number(words[words.length-3])*256;words[words.length-3]=Number(words[words.length-2])+Number(words[words.length-1])*256;words=words.slice(0,words.length-2)}else{words=str.split(":")}offset=0;z=0;for(w=0;wHEAPU8.fill(0,ptr,ptr+size);var writeSockaddr=(sa,family,addr,port,addrlen)=>{switch(family){case 2:addr=inetPton4(addr);zeroMemory(sa,16);if(addrlen){HEAP32[addrlen>>2]=16}HEAP16[sa>>1]=family;HEAP32[sa+4>>2]=addr;HEAP16[sa+2>>1]=_htons(port);break;case 10:addr=inetPton6(addr);zeroMemory(sa,28);if(addrlen){HEAP32[addrlen>>2]=28}HEAP32[sa>>2]=family;HEAP32[sa+8>>2]=addr[0];HEAP32[sa+12>>2]=addr[1];HEAP32[sa+16>>2]=addr[2];HEAP32[sa+20>>2]=addr[3];HEAP16[sa+2>>1]=_htons(port);break;default:return 5}return 0};var DNS={address_map:{id:1,addrs:{},names:{}},lookup_name(name){var res=inetPton4(name);if(res!==null){return name}res=inetPton6(name);if(res!==null){return name}var addr;if(DNS.address_map.addrs[name]){addr=DNS.address_map.addrs[name]}else{var id=DNS.address_map.id++;addr="172.29."+(id&255)+"."+(id&65280);DNS.address_map.names[addr]=name;DNS.address_map.addrs[name]=addr}return addr},lookup_addr(addr){if(DNS.address_map.names[addr]){return DNS.address_map.names[addr]}return null}};function ___syscall_accept4(fd,addr,addrlen,flags,d1,d2){try{var sock=getSocketFromFD(fd);var newsock=sock.sock_ops.accept(sock);if(addr){var errno=writeSockaddr(addr,newsock.family,DNS.lookup_name(newsock.daddr),newsock.dport,addrlen)}return newsock.stream.fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var inetNtop4=addr=>(addr&255)+"."+(addr>>8&255)+"."+(addr>>16&255)+"."+(addr>>24&255);var inetNtop6=ints=>{var str="";var word=0;var longest=0;var lastzero=0;var zstart=0;var len=0;var i=0;var parts=[ints[0]&65535,ints[0]>>16,ints[1]&65535,ints[1]>>16,ints[2]&65535,ints[2]>>16,ints[3]&65535,ints[3]>>16];var hasipv4=true;var v4part="";for(i=0;i<5;i++){if(parts[i]!==0){hasipv4=false;break}}if(hasipv4){v4part=inetNtop4(parts[6]|parts[7]<<16);if(parts[5]===-1){str="::ffff:";str+=v4part;return str}if(parts[5]===0){str="::";if(v4part==="0.0.0.0")v4part="";if(v4part==="0.0.0.1")v4part="1";str+=v4part;return str}}for(word=0;word<8;word++){if(parts[word]===0){if(word-lastzero>1){len=0}lastzero=word;len++}if(len>longest){longest=len;zstart=word-longest+1}}for(word=0;word<8;word++){if(longest>1){if(parts[word]===0&&word>=zstart&&word{var family=HEAP16[sa>>1];var port=_ntohs(HEAPU16[sa+2>>1]);var addr;switch(family){case 2:if(salen!==16){return{errno:28}}addr=HEAP32[sa+4>>2];addr=inetNtop4(addr);break;case 10:if(salen!==28){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,addr,port}};var getSocketAddress=(addrp,addrlen)=>{var info=readSockaddr(addrp,addrlen);if(info.errno)throw new FS.ErrnoError(info.errno);info.addr=DNS.lookup_addr(info.addr)||info.addr;return info};function ___syscall_bind(fd,addr,addrlen,d1,d2,d3){try{var sock=getSocketFromFD(fd);var info=getSocketAddress(addr,addrlen);sock.sock_ops.bind(sock,info.addr,info.port);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_connect(fd,addr,addrlen,d1,d2,d3){try{var sock=getSocketFromFD(fd);var info=getSocketAddress(addr,addrlen);sock.sock_ops.connect(sock,info.addr,info.port);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var UTF8ToString=(ptr,maxBytesToRead,ignoreNul)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead,ignoreNul):"";var SYSCALLS={currentUmask:18,calculateAt(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return dir+"/"+path},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();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();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);return 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(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},getStreamFromFD(fd){var stream=FS.getStreamChecked(fd);return stream},varargs:undefined,getStr(ptr){var ret=UTF8ToString(ptr);return ret}};function ___syscall_dup3(fd,newfd,flags){try{if(fd===newfd)return-28;if(flags&~524288)return-28;var old=SYSCALLS.getStreamFromFD(fd);if(newfd<0||newfd>=FS.MAX_OPEN_FDS)return-8;var existing=FS.getStream(newfd);if(existing)FS.close(existing);var stream=FS.dupStream(old,newfd);if(flags&524288){stream.flags|=524288}return stream.fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var syscallGetVarargI=()=>{var ret=HEAP32[+SYSCALLS.varargs>>2];SYSCALLS.varargs+=4;return ret};var syscallGetVarargP=syscallGetVarargI;function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=syscallGetVarargI();if(arg<0){return-28}while(FS.streams[arg]){arg++}var newStream;newStream=FS.dupStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=syscallGetVarargI();var mask=289792;stream.flags=stream.flags&~mask|arg&mask;return 0}case 12:{var arg=syscallGetVarargP();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0}return-28}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_fstat64(fd,buf){try{return SYSCALLS.writeStat(buf,FS.fstat(fd))}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);function ___syscall_getcwd(buf,size){try{if(size===0)return-28;var cwd=FS.cwd();var cwdLengthInBytes=lengthBytesUTF8(cwd)+1;if(size>2]=termios.c_iflag||0;HEAP32[argp+4>>2]=termios.c_oflag||0;HEAP32[argp+8>>2]=termios.c_cflag||0;HEAP32[argp+12>>2]=termios.c_lflag||0;for(var i=0;i<32;i++){HEAP8[argp+i+17]=termios.c_cc[i]||0}return 0}return 0}case 21510:case 21511:case 21512:{if(!stream.tty)return-59;return 0}case 21506:case 21507:case 21508:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcsets){var argp=syscallGetVarargP();var c_iflag=HEAP32[argp>>2];var c_oflag=HEAP32[argp+4>>2];var c_cflag=HEAP32[argp+8>>2];var c_lflag=HEAP32[argp+12>>2];var c_cc=[];for(var i=0;i<32;i++){c_cc.push(HEAP8[argp+i+17])}return stream.tty.ops.ioctl_tcsets(stream.tty,op,{c_iflag,c_oflag,c_cflag,c_lflag,c_cc})}return 0}case 21519:{if(!stream.tty)return-59;var argp=syscallGetVarargP();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21537:case 21531:{var argp=syscallGetVarargP();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tiocgwinsz){var winsize=stream.tty.ops.ioctl_tiocgwinsz(stream.tty);var argp=syscallGetVarargP();HEAP16[argp>>1]=winsize[0];HEAP16[argp+2>>1]=winsize[1]}return 0}case 21524:{if(!stream.tty)return-59;return 0}case 21515:{if(!stream.tty)return-59;return 0}default:return-28}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_listen(fd,backlog){try{var sock=getSocketFromFD(fd);sock.sock_ops.listen(sock,backlog);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_lstat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.writeStat(buf,FS.lstat(path))}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_newfstatat(dirfd,path,buf,flags){try{path=SYSCALLS.getStr(path);var nofollow=flags&256;var allowEmpty=flags&4096;flags=flags&~6400;path=SYSCALLS.calculateAt(dirfd,path,allowEmpty);return SYSCALLS.writeStat(buf,nofollow?FS.lstat(path):FS.stat(path))}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?syscallGetVarargI():0;if(flags&64){mode&=~SYSCALLS.currentUmask}return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var PIPEFS={BUCKET_BUFFER_SIZE:8192,mount(mount){return FS.createNode(null,"/",16384|511,0)},createPipe(){var pipe={buckets:[],refcnt:2,timestamp:new Date};pipe.buckets.push({buffer:new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE),offset:0,roffset:0});var rName=PIPEFS.nextname();var wName=PIPEFS.nextname();var rNode=FS.createNode(PIPEFS.root,rName,4096,0);var wNode=FS.createNode(PIPEFS.root,wName,4096,0);rNode.pipe=pipe;wNode.pipe=pipe;var readableStream=FS.createStream({path:rName,node:rNode,flags:0,seekable:false,stream_ops:PIPEFS.stream_ops});rNode.stream=readableStream;var writableStream=FS.createStream({path:wName,node:wNode,flags:1,seekable:false,stream_ops:PIPEFS.stream_ops});wNode.stream=writableStream;return{readable_fd:readableStream.fd,writable_fd:writableStream.fd}},stream_ops:{getattr(stream){var node=stream.node;var timestamp=node.pipe.timestamp;return{dev:14,ino:node.id,mode:4480,nlink:1,uid:0,gid:0,rdev:0,size:0,atime:timestamp,mtime:timestamp,ctime:timestamp,blksize:4096,blocks:0}},poll(stream,timeout,notifyCallback){var pipe=stream.node.pipe;if((stream.flags&2097155)===1){return 256|4}for(var bucket of pipe.buckets){if(bucket.offset-bucket.roffset>0){return 64|1}}return 0},dup(stream){stream.node.pipe.refcnt++},ioctl(stream,request,argp){if(request==21531){var pipe=stream.node.pipe;var currentLength=0;for(var bucket of pipe.buckets){currentLength+=bucket.offset-bucket.roffset}HEAP32[argp>>2]=currentLength;return 0}return 28},fsync(stream){return 28},read(stream,buffer,offset,length,position){var pipe=stream.node.pipe;var currentLength=0;for(var bucket of pipe.buckets){currentLength+=bucket.offset-bucket.roffset}var data=buffer.subarray(offset,offset+length);if(length<=0){return 0}if(currentLength==0){throw new FS.ErrnoError(6)}var toRead=Math.min(currentLength,length);var totalRead=toRead;var toRemove=0;for(var bucket of pipe.buckets){var bucketSize=bucket.offset-bucket.roffset;if(toRead<=bucketSize){var tmpSlice=bucket.buffer.subarray(bucket.roffset,bucket.offset);if(toRead=dataLen){currBucket.buffer.set(data,currBucket.offset);currBucket.offset+=dataLen;return dataLen}else if(freeBytesInCurrBuffer>0){currBucket.buffer.set(data.subarray(0,freeBytesInCurrBuffer),currBucket.offset);currBucket.offset+=freeBytesInCurrBuffer;data=data.subarray(freeBytesInCurrBuffer,data.byteLength)}var numBuckets=data.byteLength/PIPEFS.BUCKET_BUFFER_SIZE|0;var remElements=data.byteLength%PIPEFS.BUCKET_BUFFER_SIZE;for(var i=0;i0){var newBucket={buffer:new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE),offset:data.byteLength,roffset:0};pipe.buckets.push(newBucket);newBucket.buffer.set(data)}return dataLen},close(stream){var pipe=stream.node.pipe;pipe.refcnt--;if(pipe.refcnt===0){pipe.buckets=null}}},nextname(){if(!PIPEFS.nextname.current){PIPEFS.nextname.current=0}return"pipe["+PIPEFS.nextname.current+++"]"}};function ___syscall_pipe2(fdPtr,flags){try{if(fdPtr==0){throw new FS.ErrnoError(21)}var validFlags=524288|2048;if(flags&~validFlags){throw new FS.ErrnoError(138)}var res=PIPEFS.createPipe();if(flags&2048){FS.getStream(res.readable_fd).flags|=2048;FS.getStream(res.writable_fd).flags|=2048}HEAP32[fdPtr>>2]=res.readable_fd;HEAP32[fdPtr+4>>2]=res.writable_fd;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_renameat(olddirfd,oldpath,newdirfd,newpath){try{oldpath=SYSCALLS.getStr(oldpath);newpath=SYSCALLS.getStr(newpath);oldpath=SYSCALLS.calculateAt(olddirfd,oldpath);newpath=SYSCALLS.calculateAt(newdirfd,newpath);FS.rename(oldpath,newpath);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_socket(domain,type,protocol){try{var sock=SOCKFS.createSocket(domain,type,protocol);return sock.stream.fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.writeStat(buf,FS.stat(path))}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_unlinkat(dirfd,path,flags){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(!flags){FS.unlink(path)}else if(flags===512){FS.rmdir(path)}else{return-28}return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var __emscripten_lookup_name=name=>{var nameString=UTF8ToString(name);return inetPton4(DNS.lookup_name(nameString))};var __emscripten_throw_longjmp=()=>{throw new EmscriptenSjLj};var _emscripten_get_now=()=>performance.now();var _emscripten_date_now=()=>Date.now();var nowIsMonotonic=1;var checkWasiClock=clock_id=>clock_id>=0&&clock_id<=3;var INT53_MAX=9007199254740992;var INT53_MIN=-9007199254740992;var bigintToI53Checked=num=>numINT53_MAX?NaN:Number(num);function _clock_time_get(clk_id,ignored_precision,ptime){ignored_precision=bigintToI53Checked(ignored_precision);if(!checkWasiClock(clk_id)){return 28}var now;if(clk_id===0){now=_emscripten_date_now()}else if(nowIsMonotonic){now=_emscripten_get_now()}else{return 52}var nsec=Math.round(now*1e3*1e3);HEAP64[ptime>>3]=BigInt(nsec);return 0}var getHeapMax=()=>2147483648;var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var growMemory=size=>{var oldHeapSize=wasmMemory.buffer.byteLength;var pages=(size-oldHeapSize+65535)/65536|0;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignMemory(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var ENV={};var getExecutableName=()=>thisProgram;var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(globalThis.navigator?.language??"C").replace("-","_")+".UTF-8";var env={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:lang,_:getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var _environ_get=(__environ,environ_buf)=>{var bufSize=0;var envp=0;for(var string of getEnvStrings()){var ptr=environ_buf+bufSize;HEAPU32[__environ+envp>>2]=ptr;bufSize+=stringToUTF8(string,ptr,Infinity)+1;envp+=4}return 0};var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;for(var string of strings){bufSize+=lengthBytesUTF8(string)+1}HEAPU32[penviron_buf_size>>2]=bufSize;return 0};var runtimeKeepaliveCounter=0;var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){Module["onExit"]?.(code);ABORT=true}quit_(code,new ExitStatus(code))};var exitJS=(status,implicit)=>{EXITSTATUS=status;_proc_exit(status)};var _exit=exitJS;function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _fd_fdstat_get(fd,pbuf){try{var rightsBase=0;var rightsInheriting=0;var flags=0;{var stream=SYSCALLS.getStreamFromFD(fd);var type=stream.tty?2:FS.isDir(stream.mode)?3:FS.isLink(stream.mode)?7:4}HEAP8[pbuf]=type;HEAP16[pbuf+2>>1]=flags;HEAP64[pbuf+8>>3]=BigInt(rightsBase);HEAP64[pbuf+16>>3]=BigInt(rightsInheriting);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doReadv=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _fd_seek(fd,offset,whence,newOffset){offset=bigintToI53Checked(offset);try{if(isNaN(offset))return 22;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);HEAP64[newOffset>>3]=BigInt(stream.position);if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doWritev=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _js_lumbda_bend_call(payload_ptr,payload_len,resp_buf,resp_cap){var bendUrl=globalThis._lumbdaCBendUrl;if(!bendUrl){var msg="no bend URL configured";var n=Math.min(msg.length,resp_cap-1);for(var i=0;i{var func=wasmTableMirror[funcPtr];if(!func){wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func};var getCFunc=ident=>{var func=Module["_"+ident];return func};var writeArrayToMemory=(array,buffer)=>{HEAP8.set(array,buffer)};var stackAlloc=sz=>__emscripten_stack_alloc(sz);var stringToUTF8OnStack=str=>{var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8(str,ret,size);return ret};var ccall=(ident,returnType,argTypes,args,opts)=>{var toC={string:str=>{var ret=0;if(str!==null&&str!==undefined&&str!==0){ret=stringToUTF8OnStack(str)}return ret},array:arr=>{var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType==="string"){return UTF8ToString(ret)}if(returnType==="boolean")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i{var numericArgs=!argTypes||argTypes.every(type=>type==="number"||type==="boolean");var numericRet=returnType!=="string";if(numericRet&&numericArgs&&!opts){return getCFunc(ident)}return(...args)=>ccall(ident,returnType,argTypes,args,opts)};FS.createPreloadedFile=FS_createPreloadedFile;FS.preloadFile=FS_preloadFile;FS.staticInit();{if(Module["noExitRuntime"])noExitRuntime=Module["noExitRuntime"];if(Module["preloadPlugins"])preloadPlugins=Module["preloadPlugins"];if(Module["print"])out=Module["print"];if(Module["printErr"])err=Module["printErr"];if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];if(Module["arguments"])programArgs=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].shift()()}}}Module["ccall"]=ccall;Module["cwrap"]=cwrap;Module["UTF8ToString"]=UTF8ToString;Module["stringToUTF8"]=stringToUTF8;Module["lengthBytesUTF8"]=lengthBytesUTF8;var _malloc,_free,_htons,_lumbda_wasm_init,_lumbda_wasm_eval,_lumbda_wasm_free_result,_ntohs,_setThrew,__emscripten_stack_restore,__emscripten_stack_alloc,_emscripten_stack_get_current,memory,__indirect_function_table,wasmMemory,wasmTable;function assignWasmExports(wasmExports){_malloc=Module["_malloc"]=wasmExports["malloc"];_free=Module["_free"]=wasmExports["free"];_htons=wasmExports["htons"];_lumbda_wasm_init=Module["_lumbda_wasm_init"]=wasmExports["lumbda_wasm_init"];_lumbda_wasm_eval=Module["_lumbda_wasm_eval"]=wasmExports["lumbda_wasm_eval"];_lumbda_wasm_free_result=Module["_lumbda_wasm_free_result"]=wasmExports["lumbda_wasm_free_result"];_ntohs=wasmExports["ntohs"];_setThrew=wasmExports["setThrew"];__emscripten_stack_restore=wasmExports["_emscripten_stack_restore"];__emscripten_stack_alloc=wasmExports["_emscripten_stack_alloc"];_emscripten_stack_get_current=wasmExports["emscripten_stack_get_current"];memory=wasmMemory=wasmExports["memory"];__indirect_function_table=wasmTable=wasmExports["__indirect_function_table"]}var wasmImports={__syscall_accept4:___syscall_accept4,__syscall_bind:___syscall_bind,__syscall_connect:___syscall_connect,__syscall_dup3:___syscall_dup3,__syscall_fcntl64:___syscall_fcntl64,__syscall_fstat64:___syscall_fstat64,__syscall_getcwd:___syscall_getcwd,__syscall_ioctl:___syscall_ioctl,__syscall_listen:___syscall_listen,__syscall_lstat64:___syscall_lstat64,__syscall_newfstatat:___syscall_newfstatat,__syscall_openat:___syscall_openat,__syscall_pipe2:___syscall_pipe2,__syscall_renameat:___syscall_renameat,__syscall_socket:___syscall_socket,__syscall_stat64:___syscall_stat64,__syscall_unlinkat:___syscall_unlinkat,_emscripten_lookup_name:__emscripten_lookup_name,_emscripten_throw_longjmp:__emscripten_throw_longjmp,clock_time_get:_clock_time_get,emscripten_get_now:_emscripten_get_now,emscripten_resize_heap:_emscripten_resize_heap,environ_get:_environ_get,environ_sizes_get:_environ_sizes_get,exit:_exit,fd_close:_fd_close,fd_fdstat_get:_fd_fdstat_get,fd_read:_fd_read,fd_seek:_fd_seek,fd_write:_fd_write,invoke_i,invoke_ii,invoke_iii,invoke_iiii,invoke_iiiii,invoke_iiiiiiiiii,invoke_iiiiijiiiii,invoke_iiiijii,invoke_iiij,invoke_iiijiii,invoke_iijj,invoke_ij,invoke_iji,invoke_ijj,invoke_ji,invoke_jii,invoke_jiii,invoke_jij,invoke_jj,invoke_jji,invoke_jjii,invoke_jjiii,invoke_jjj,invoke_jjjjjjj,invoke_v,invoke_vi,invoke_vii,invoke_viii,invoke_viiii,invoke_viiiii,invoke_viiji,invoke_vij,invoke_vijj,invoke_vjii,invoke_vjiii,js_lumbda_bend_call:_js_lumbda_bend_call,proc_exit:_proc_exit};function invoke_jij(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_vii(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_jji(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_iiiijii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_jjiii(index,a1,a2,a3,a4){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_ijj(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_iji(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_vij(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_ij(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_iiijiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_vijj(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_iijj(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_jjii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_jj(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_jiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_vjii(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_iii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_ji(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_jjj(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_jjjjjjj(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_jii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_iiij(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_vjiii(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_iiiiijiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_viiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_viiji(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_iiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function run(){if(runDependencies>0){dependenciesFulfilled=run;return}preRun();if(runDependencies>0){dependenciesFulfilled=run;return}function doRun(){Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve?.(Module);Module["onRuntimeInitialized"]?.();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(()=>{setTimeout(()=>Module["setStatus"](""),1);doRun()},1)}else{doRun()}}var wasmExports;wasmExports=await (createWasm());run();if(runtimeInitialized){moduleRtn=Module}else{moduleRtn=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject})} ;return moduleRtn}export default createLumbdaC; diff --git a/www/repl/c/lumbda-c.loader.js b/www/repl/c/lumbda-c.loader.js index 71b0e54..64e78c2 100644 --- a/www/repl/c/lumbda-c.loader.js +++ b/www/repl/c/lumbda-c.loader.js @@ -27,6 +27,12 @@ async function _bootstrap() { _init(); + // /tmp must exist before (portal-snapshot! ...) writes there — the + // C builtin fopen("w")s the path directly so a missing dir is a + // hard error. Emscripten's MEMFS gives us /tmp on recent versions + // but make it idempotent. + try { module.FS.mkdir("/tmp"); } catch (e) { /* exists */ } + // bend!-call host bridge — js_lumbda_bend_call inside the wasm // (EM_JS in lumbda_wasm_entry.c) reads globalThis._lumbdaCBendUrl // for the destination, then does sync XHR POST and writes the @@ -34,6 +40,22 @@ async function _bootstrap() { // global so runner.js can propagate a saved playground URL. return { setBendUrl(url) { globalThis._lumbdaCBendUrl = url || null; }, + // portalSave / portalLoad bridge MEMFS to the JS side so the + // REPL can persist checkpoints to the encrypted vault and + // restore them on a fresh worker. Names come from the worker + // (REPL caller validates alphanumeric) so path traversal isn't + // a concern. + portalSave(name) { + const path = `/tmp/${name}.portal`; + try { + const bytes = module.FS.readFile(path); + return new TextDecoder().decode(bytes); + } catch (e) { return null; } + }, + portalLoad(name, blob) { + const path = `/tmp/${name}.portal`; + module.FS.writeFile(path, blob); + }, async evalLisp(src) { outBuf = []; errBuf = []; diff --git a/www/repl/c/lumbda-c.wasm b/www/repl/c/lumbda-c.wasm index 961ed9abb1c723b0cb4ff58d6d9d5c8ee11e16a5..9d5fad2f70701c339d761f76f6605d7abfce4df3 100755 GIT binary patch delta 96623 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