diff --git a/Makefile b/Makefile index 34245b06..de1c48e1 100644 --- a/Makefile +++ b/Makefile @@ -1,8 +1,6 @@ # dependencies -SQLITE_VERSION = version-3.50.1 -# Prefer the release zip snapshot over `/src/tarball/…`, which has intermittently returned 503 "Server Overload" in CI. -SQLITE_SRC_ZIP_URL = https://www.sqlite.org/2025/sqlite-src-3500100.zip -SQLITE_SRC_ZIP_ROOT = sqlite-src-3500100 +SQLITE_VERSION = version-3.53.0 +SQLITE_TARBALL_URL = https://www.sqlite.org/src/tarball/$(SQLITE_VERSION)/sqlite.tar.gz EXTENSION_FUNCTIONS = extension-functions.c EXTENSION_FUNCTIONS_URL = https://www.sqlite.org/contrib/download/extension-functions.c?get=25 @@ -51,6 +49,7 @@ EMCC ?= emcc CFLAGS_COMMON = \ -I'deps/$(SQLITE_VERSION)' \ -Wno-non-literal-null-conversion \ + -DSQLITE_EXPERIMENTAL_PRAGMA_20251114 \ $(CFLAGS_EXTRA) CFLAGS_DEBUG = -g $(CFLAGS_COMMON) CFLAGS_DIST = -Oz -flto $(CFLAGS_COMMON) @@ -150,19 +149,15 @@ clean-deps: rm -rf deps deps/$(SQLITE_VERSION)/sqlite3.h deps/$(SQLITE_VERSION)/sqlite3.c: - rm -rf cache/$(SQLITE_VERSION) mkdir -p cache/$(SQLITE_VERSION) - curl -LsSf --retry 8 --retry-delay 2 --retry-all-errors -o cache/$(SQLITE_VERSION)/sqlite-src.zip $(SQLITE_SRC_ZIP_URL) - unzip -q -o cache/$(SQLITE_VERSION)/sqlite-src.zip -d cache/$(SQLITE_VERSION) - mv cache/$(SQLITE_VERSION)/$(SQLITE_SRC_ZIP_ROOT)/* cache/$(SQLITE_VERSION)/ - rm -rf cache/$(SQLITE_VERSION)/$(SQLITE_SRC_ZIP_ROOT) cache/$(SQLITE_VERSION)/sqlite-src.zip + curl -LsS $(SQLITE_TARBALL_URL) | tar -xzf - -C cache/$(SQLITE_VERSION)/ --strip-components=1 mkdir -p deps/$(SQLITE_VERSION) (cd deps/$(SQLITE_VERSION); ../../cache/$(SQLITE_VERSION)/configure --enable-all && make sqlite3.c) deps/$(EXTENSION_FUNCTIONS): cache/$(EXTENSION_FUNCTIONS) mkdir -p deps openssl dgst -sha3-256 -r cache/$(EXTENSION_FUNCTIONS) | sed -e 's/\s.*//' > deps/sha3 - echo $(EXTENSION_FUNCTIONS_SHA3) | cmp -s - deps/sha3 || echo "warning: extension-functions sha3 mismatch, continuing" + echo $(EXTENSION_FUNCTIONS_SHA3) | cmp deps/sha3 rm -rf deps/sha3 $@ cp 'cache/$(EXTENSION_FUNCTIONS)' $@ @@ -179,6 +174,7 @@ tmp/obj/dist/%.o: %.c mkdir -p tmp/obj/dist $(EMCC) $(CFLAGS_DIST) $(WASQLITE_DEFINES) $^ -c -o $@ + ## debug .PHONY: clean-debug clean-debug: diff --git a/README.md b/README.md index babdc439..a6282efa 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ This is a WebAssembly build of SQLite with support for writing SQLite virtual fi IndexedDB and several Origin Private File System virtual file systems are among the examples provided as proof of concept. A table comparing the different VFS classes is [here](https://github.com/rhashimoto/wa-sqlite/tree/master/src/examples#vfs-comparison). -[Try the demo](https://rhashimoto.github.io/wa-sqlite/demo/?build=asyncify&config=IDBBatchAtomicVFS&reset) or run [benchmarks](https://rhashimoto.github.io/wa-sqlite/demo/benchmarks/?config=asyncify,IDBBatchAtomicVFS;asyncify,IDBMirrorVFS;default,AccessHandlePoolVFS;default,OPFSCoopSyncVFS;asyncify,OPFSAdaptiveVFS;asyncify,OPFSPermutedVFS) with a modern desktop web browser. More information is available in the [FAQ](https://github.com/rhashimoto/wa-sqlite/issues?q=is%3Aissue+label%3Afaq+), [discussion forums](https://github.com/rhashimoto/wa-sqlite/discussions), and [API reference](https://rhashimoto.github.io/wa-sqlite/docs/). +[Try the demo](https://rhashimoto.github.io/wa-sqlite/demo/?build=asyncify&config=IDBBatchAtomicVFS&reset) or run [benchmarks](https://rhashimoto.github.io/wa-sqlite/demo/benchmarks/?config=asyncify,IDBBatchAtomicVFS;asyncify,IDBMirrorVFS;default,AccessHandlePoolVFS;default,OPFSCoopSyncVFS;asyncify,OPFSAdaptiveVFS;asyncify,OPFSWriteAheadVFS) with a modern desktop web browser. More information is available in the [FAQ](https://github.com/rhashimoto/wa-sqlite/issues?q=is%3Aissue+label%3Afaq+), [discussion forums](https://github.com/rhashimoto/wa-sqlite/discussions), and [API reference](https://rhashimoto.github.io/wa-sqlite/docs/). ## Build The primary motivation for this project is to enable additions to SQLite with only Javascript. Most developers should be able to use the pre-built artifacts in @@ -67,7 +67,7 @@ The demo page provides access to databases on multiple VFS implementations. Quer | Parameter | Purpose | Values | Default | |----|----|----|----| | build | Emscripten build type | default, asyncify, jspi | default | -| config | select VFS | MemoryVFS, MemoryAsyncVFS, IDBBatchAtomicVFS, IDBMirrorVFS, AccessHandlePoolVFS, OPFSAdaptiveVFS, OPFSAnyContextVFS, OPFSCoopSyncVFS, OPFSPermutedVFS | uses SQLite internal memory | +| config | select VFS | MemoryVFS, MemoryAsyncVFS, IDBBatchAtomicVFS, IDBMirrorVFS, AccessHandlePoolVFS, OPFSAdaptiveVFS, OPFSAnyContextVFS, OPFSCoopSyncVFS, OPFSWriteAheadVFS | uses SQLite internal memory | | reset | clear persistent storage | | | For convenience, if any text region is selected in the editor, only that region will be executed. In addition, the editor contents are restored across page reloads using browser localStorage. diff --git a/demo/contention/contention-worker.js b/demo/contention/contention-worker.js index e2c26459..2694b89c 100644 --- a/demo/contention/contention-worker.js +++ b/demo/contention/contention-worker.js @@ -54,9 +54,13 @@ const BUILDS = new Map([ name: 'OPFSPermutedVFS', vfsModule: '../../src/examples/OPFSPermutedVFS.js', }, + { + name: 'OPFSWriteAheadVFS', + vfsModule: '../../src/examples/OPFSWriteAheadVFS.js', + }, { name: 'AccessHandlePoolVFS', - vfsModule: '../src/examples/AccessHandlePoolVFS.js', + vfsModule: '../../src/examples/AccessHandlePoolVFS.js', }, { name: 'FLOOR', diff --git a/demo/demo-worker.js b/demo/demo-worker.js index f6285d0a..5a68825a 100644 --- a/demo/demo-worker.js +++ b/demo/demo-worker.js @@ -61,6 +61,10 @@ const BUILDS = new Map([ name: 'OPFSPermutedVFS', vfsModule: '../src/examples/OPFSPermutedVFS.js', }, + { + name: 'OPFSWriteAheadVFS', + vfsModule: '../src/examples/OPFSWriteAheadVFS.js', + }, { name: 'AccessHandlePoolVFS', vfsModule: '../src/examples/AccessHandlePoolVFS.js', diff --git a/demo/hello/README.md b/demo/hello/README.md index d830fe83..177d25fe 100644 --- a/demo/hello/README.md +++ b/demo/hello/README.md @@ -13,7 +13,7 @@ are valid: * As of May 2024, the JSPI build works only on recent Chromium browsers behind an experiment flag. -* As of May 2024, OPFSPermutedVFS works only on recent Chromium browsers +* As of May 2024, OPFSWriteAheadVFS works only on recent Chromium browsers as it requires FileSystemSyncAccessHandle "readwrite-unsafe" locking. * Some VFS classes work only with an asynchronous build (Asyncify or JSPI). * OPFS VFS classes work only within a Worker. diff --git a/demo/hello/hello.js b/demo/hello/hello.js index 56c9c554..59aa0c53 100644 --- a/demo/hello/hello.js +++ b/demo/hello/hello.js @@ -14,16 +14,16 @@ import SQLiteESMFactory from '../../dist/wa-sqlite-async.mjs'; // in a Worker. // // Note that certain VFS classes cannot read each others' databases, e.g. -// IDBBatchAtomicVFS and IDBMirrorVFS, OPFSPermutedVFS and any other OPFS -// VFS. If you change this demo to use a different VFS, you may need to -// clear the appropriate storage for things to work. +// IDBBatchAtomicVFS and IDBMirrorVFS. If you change this demo to use a +// different VFS, you may need to clear the appropriate storage for things +// to work. import { IDBBatchAtomicVFS as MyVFS } from '../../src/examples/IDBBatchAtomicVFS.js'; // import { IDBMirrorVFS as MyVFS } from '../../src/examples/IDBMirrorVFS.js'; // import { AccessHandlePoolVFS as MyVFS } from '../../src/examples/AccessHandlePoolVFS.js'; // import { OPFSAdaptiveVFS as MyVFS } from '../../src/examples/OPFSAdaptiveVFS.js'; // import { OPFSAnyContextVFS as MyVFS } from '../../src/examples/OPFSAnyContextVFS.js'; // import { OPFSCoopSyncVFS as MyVFS } from '../../src/examples/OPFSCoopSyncVFS.js'; -// import { OPFSPermutedVFS as MyVFS } from '../../src/examples/OPFSPermutedVFS.js'; +// import { OPFSWriteAheadVFS as MyVFS } from '../../src/examples/OPFSWriteAheadVFS.js'; import * as SQLite from '../../src/sqlite-api.js'; diff --git a/dist/wa-sqlite-async.mjs b/dist/wa-sqlite-async.mjs index 6d5e5470..73fc7387 100644 --- a/dist/wa-sqlite-async.mjs +++ b/dist/wa-sqlite-async.mjs @@ -1,2 +1,16 @@ -async function Module(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";var arguments_=[];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_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 readyPromiseResolve,readyPromiseReject;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;var runtimeInitialized=false;function updateMemoryViews(){var b=wasmMemory.buffer;HEAP8=new Int8Array(b);HEAP16=new Int16Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);HEAPU16=new Uint16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);HEAPU32=new Uint32Array(b);HEAPF32=new Float32Array(b);HEAPF64=new Float64Array(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;if(!Module["noFSInit"]&&!FS.initialized)FS.init();TTY.init();wasmExports["Ga"]();FS.ignorePermissions=false}function preMain(){}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("wa-sqlite-async.wasm")}return new URL("wa-sqlite-async.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){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(){return{a:wasmImports}}async function createWasm(){function receiveInstance(instance,module){wasmExports=instance.exports;wasmExports=Asyncify.instrumentWasmExports(wasmExports);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}var tempDouble;var tempI64;class ExitStatus{name="ExitStatus";constructor(status){this.message=`Program terminated with exit(${status})`;this.status=status}}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 dynCalls={};function getValue(ptr,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":return HEAP8[ptr];case"i8":return HEAP8[ptr];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":abort("to do getValue(i64) use WASM_BIGINT");case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];case"*":return HEAPU32[ptr>>2];default:abort(`invalid type for getValue: ${type}`)}}var noExitRuntime=true;function setValue(ptr,value,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":HEAP8[ptr]=value;break;case"i8":HEAP8[ptr]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":abort("to do setValue(i64) use WASM_BIGINT");case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;case"*":HEAPU32[ptr>>2]=value;break;default:abort(`invalid type for setValue: ${type}`)}}var stackRestore=val=>__emscripten_stack_restore(val);var stackSave=()=>_emscripten_stack_get_current();var UTF8Decoder=new TextDecoder;var findStringEnd=(heapOrArray,idx,maxBytesToRead,ignoreNul)=>{var maxIdx=idx+maxBytesToRead;if(ignoreNul)return maxIdx;while(heapOrArray[idx]&&!(idx>=maxIdx))++idx;return idx};var UTF8ToString=(ptr,maxBytesToRead,ignoreNul)=>{if(!ptr)return"";var end=findStringEnd(HEAPU8,ptr,maxBytesToRead,ignoreNul);return UTF8Decoder.decode(HEAPU8.subarray(ptr,end))};var ___assert_fail=(condition,filename,line,func)=>abort(`Assertion failed: ${UTF8ToString(condition)}, at: `+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"]);var exceptionLast=0;class ExceptionInfo{constructor(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24}set_type(type){HEAPU32[this.ptr+4>>2]=type}get_type(){return HEAPU32[this.ptr+4>>2]}set_destructor(destructor){HEAPU32[this.ptr+8>>2]=destructor}get_destructor(){return HEAPU32[this.ptr+8>>2]}set_caught(caught){caught=caught?1:0;HEAP8[this.ptr+12]=caught}get_caught(){return HEAP8[this.ptr+12]!=0}set_rethrown(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13]=rethrown}get_rethrown(){return HEAP8[this.ptr+13]!=0}init(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)}set_adjusted_ptr(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr}get_adjusted_ptr(){return HEAPU32[this.ptr+16>>2]}}var setTempRet0=val=>__emscripten_tempret_set(val);var findMatchingCatch=args=>{var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0}var info=new ExceptionInfo(thrown);info.set_adjusted_ptr(thrown);var thrownType=info.get_type();if(!thrownType){setTempRet0(0);return thrown}for(var caughtType of args){if(caughtType===0||caughtType===thrownType){break}var adjusted_ptr_addr=info.ptr+16;if(___cxa_can_catch(caughtType,thrownType,adjusted_ptr_addr)){setTempRet0(caughtType);return thrown}}setTempRet0(thrownType);return thrown};var ___cxa_find_matching_catch_2=()=>findMatchingCatch([]);var uncaughtExceptionCount=0;var ___cxa_throw=(ptr,type,destructor)=>{var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast};var ___resumeException=ptr=>{if(!exceptionLast){exceptionLast=ptr}throw exceptionLast};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 initRandomFill=()=>view=>crypto.getRandomValues(view);var randomFill=view=>{(randomFill=initRandomFill())(view)};var PATH_FS={resolve:(...args)=>{var resolvedPath="",resolvedAbsolute=false;for(var i=args.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?args[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).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 endPtr=findStringEnd(heapOrArray,idx,maxBytesToRead,ignoreNul);return UTF8Decoder.decode(heapOrArray.buffer?heapOrArray.subarray(idx,endPtr):new Uint8Array(heapOrArray.slice(idx,endPtr)))};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(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 zeroMemory=(ptr,size)=>HEAPU8.fill(0,ptr,ptr+size);var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var mmapAlloc=size=>{size=alignMemory(size,65536);var ptr=_emscripten_builtin_memalign(65536,size);if(ptr)zeroMemory(ptr,size);return ptr};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=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.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){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.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);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{var flagModes={r:0,"r+":2,w:512|64|1,"w+":512|64|2,a:1024|64|1,"a+":1024|64|2};var flags=flagModes[str];if(typeof flags=="undefined"){throw new Error(`Unknown file open mode: ${str}`)}return flags};var FS_getMode=(canRead,canWrite)=>{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode};var 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,readFiles:{},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}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup(dir){if(!FS.isDir(dir.mode))return 54;var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate(dir,name){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}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&(512|64)){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},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);setattr(arg,attr)},chrdev_stream_ops:{open(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;stream.stream_ops.open?.(stream)},llseek(){throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push(...m.mounts)}return mounts},syncfs(populate,callback){if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type,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);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup(parent,name){return parent.node_ops.lookup(parent,name)},mknod(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name){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=typeof flags=="string"?FS_modeStringToFlags(flags):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)}if(Module["logReadFiles"]&&!(flags&1)){if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close(stream){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed(stream){return stream.fd===null},llseek(stream,offset,whence){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},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);if(typeof data=="string"){data=new Uint8Array(intArrayFromString(data,true))}if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{abort("Unsupported data type")}FS.close(stream)},cwd:()=>FS.currentPath,chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length,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){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;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={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=(...args)=>{FS.forceLoadFile(node);return fn(...args)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr,allocated:true}};node.stream_ops=stream_ops;return node}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return 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;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+24>>2]=tempI64[0],HEAP32[buf+28>>2]=tempI64[1];HEAP32[buf+32>>2]=4096;HEAP32[buf+36>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();tempI64=[Math.floor(atime/1e3)>>>0,(tempDouble=Math.floor(atime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAPU32[buf+48>>2]=atime%1e3*1e3*1e3;tempI64=[Math.floor(mtime/1e3)>>>0,(tempDouble=Math.floor(mtime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+56>>2]=tempI64[0],HEAP32[buf+60>>2]=tempI64[1];HEAPU32[buf+64>>2]=mtime%1e3*1e3*1e3;tempI64=[Math.floor(ctime/1e3)>>>0,(tempDouble=Math.floor(ctime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+72>>2]=tempI64[0],HEAP32[buf+76>>2]=tempI64[1];HEAPU32[buf+80>>2]=ctime%1e3*1e3*1e3;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+88>>2]=tempI64[0],HEAP32[buf+92>>2]=tempI64[1];return 0},writeStatFs(buf,stats){HEAPU32[buf+4>>2]=stats.bsize;HEAPU32[buf+60>>2]=stats.bsize;tempI64=[stats.blocks>>>0,(tempDouble=stats.blocks,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+8>>2]=tempI64[0],HEAP32[buf+12>>2]=tempI64[1];tempI64=[stats.bfree>>>0,(tempDouble=stats.bfree,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+16>>2]=tempI64[0],HEAP32[buf+20>>2]=tempI64[1];tempI64=[stats.bavail>>>0,(tempDouble=stats.bavail,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+24>>2]=tempI64[0],HEAP32[buf+28>>2]=tempI64[1];tempI64=[stats.files>>>0,(tempDouble=stats.files,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+32>>2]=tempI64[0],HEAP32[buf+36>>2]=tempI64[1];tempI64=[stats.ffree>>>0,(tempDouble=stats.ffree,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAPU32[buf+48>>2]=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_chmod(path,mode){try{path=SYSCALLS.getStr(path);FS.chmod(path,mode);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_faccessat(dirfd,path,amode,flags){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_fchmod(fd,mode){try{FS.fchmod(fd,mode);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_fchown32(fd,owner,group){try{FS.fchown(fd,owner,group);return 0}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();stream.flags|=arg;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 convertI32PairToI53Checked=(lo,hi)=>hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN;function ___syscall_ftruncate64(fd,length_low,length_high){var length=convertI32PairToI53Checked(length_low,length_high);try{if(isNaN(length))return-61;FS.ftruncate(fd,length);return 0}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(sizeHEAPU32[ptr>>2]+HEAP32[ptr+4>>2]*4294967296;function ___syscall_utimensat(dirfd,path,times,flags){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path,true);var now=Date.now(),atime,mtime;if(!times){atime=now;mtime=now}else{var seconds=readI53FromI64(times);var nanoseconds=HEAP32[times+8>>2];if(nanoseconds==1073741823){atime=now}else if(nanoseconds==1073741822){atime=null}else{atime=seconds*1e3+nanoseconds/(1e3*1e3)}times+=16;seconds=readI53FromI64(times);nanoseconds=HEAP32[times+8>>2];if(nanoseconds==1073741823){mtime=now}else if(nanoseconds==1073741822){mtime=null}else{mtime=seconds*1e3+nanoseconds/(1e3*1e3)}}if((mtime??atime)!==null){FS.utime(path,atime,mtime)}return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var __abort_js=()=>abort("");var runtimeKeepaliveCounter=0;var __emscripten_runtime_keepalive_clear=()=>{noExitRuntime=false;runtimeKeepaliveCounter=0};var isLeapYear=year=>year%4===0&&(year%100!==0||year%400===0);var MONTH_DAYS_LEAP_CUMULATIVE=[0,31,60,91,121,152,182,213,244,274,305,335];var MONTH_DAYS_REGULAR_CUMULATIVE=[0,31,59,90,120,151,181,212,243,273,304,334];var ydayFromDate=date=>{var leap=isLeapYear(date.getFullYear());var monthDaysCumulative=leap?MONTH_DAYS_LEAP_CUMULATIVE:MONTH_DAYS_REGULAR_CUMULATIVE;var yday=monthDaysCumulative[date.getMonth()]+date.getDate()-1;return yday};function __localtime_js(time_low,time_high,tmPtr){var time=convertI32PairToI53Checked(time_low,time_high);var date=new Date(time*1e3);HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getDay();var yday=ydayFromDate(date)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr+36>>2]=-(date.getTimezoneOffset()*60);var start=new Date(date.getFullYear(),0,1);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dst=(summerOffset!=winterOffset&&date.getTimezoneOffset()==Math.min(winterOffset,summerOffset))|0;HEAP32[tmPtr+32>>2]=dst}function __mmap_js(len,prot,flags,fd,offset_low,offset_high,allocated,addr){var offset=convertI32PairToI53Checked(offset_low,offset_high);try{var stream=SYSCALLS.getStreamFromFD(fd);var res=FS.mmap(stream,len,offset,prot,flags);var ptr=res.ptr;HEAP32[allocated>>2]=res.allocated;HEAPU32[addr>>2]=ptr;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function __munmap_js(addr,len,prot,flags,fd,offset_low,offset_high){var offset=convertI32PairToI53Checked(offset_low,offset_high);try{var stream=SYSCALLS.getStreamFromFD(fd);if(prot&2){SYSCALLS.doMsync(addr,stream,len,flags,offset)}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var timers={};var handleException=e=>{if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)};var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){Module["onExit"]?.(code);ABORT=true}quit_(code,new ExitStatus(code))};var exitJS=(status,implicit)=>{EXITSTATUS=status;_proc_exit(status)};var _exit=exitJS;var maybeExit=()=>{if(!keepRuntimeAlive()){try{_exit(EXITSTATUS)}catch(e){handleException(e)}}};var callUserCallback=func=>{if(ABORT){return}try{func();maybeExit()}catch(e){handleException(e)}};var _emscripten_get_now=()=>performance.now();var __setitimer_js=(which,timeout_ms)=>{if(timers[which]){clearTimeout(timers[which].id);delete timers[which]}if(!timeout_ms)return 0;var id=setTimeout(()=>{delete timers[which];callUserCallback(()=>__emscripten_timeout(which,_emscripten_get_now()))},timeout_ms);timers[which]={id,timeout_ms};return 0};var __tzset_js=(timezone,daylight,std_name,dst_name)=>{var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);var winterOffset=winter.getTimezoneOffset();var summerOffset=summer.getTimezoneOffset();var stdTimezoneOffset=Math.max(winterOffset,summerOffset);HEAPU32[timezone>>2]=stdTimezoneOffset*60;HEAP32[daylight>>2]=Number(winterOffset!=summerOffset);var extractZone=timezoneOffset=>{var sign=timezoneOffset>=0?"-":"+";var absOffset=Math.abs(timezoneOffset);var hours=String(Math.floor(absOffset/60)).padStart(2,"0");var minutes=String(absOffset%60).padStart(2,"0");return`UTC${sign}${hours}${minutes}`};var winterName=extractZone(winterOffset);var summerName=extractZone(summerOffset);if(summerOffsetDate.now();var getHeapMax=()=>2147483648;var _emscripten_get_heap_max=()=>getHeapMax();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||"./this.program";var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&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};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;tempI64=[rightsBase>>>0,(tempDouble=rightsBase,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[pbuf+8>>2]=tempI64[0],HEAP32[pbuf+12>>2]=tempI64[1];tempI64=[rightsInheriting>>>0,(tempDouble=rightsInheriting,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[pbuf+16>>2]=tempI64[0],HEAP32[pbuf+20>>2]=tempI64[1];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_low,offset_high,whence,newOffset){var offset=convertI32PairToI53Checked(offset_low,offset_high);try{if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var _fd_sync=function(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);return Asyncify.handleSleep(wakeUp=>{var mount=stream.node.mount;if(!mount.type.syncfs){wakeUp(0);return}mount.type.syncfs(mount,false,err=>{wakeUp(err?29:0)})})}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}};_fd_sync.isAsync=true;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 adapters_support=function(){const handleAsync=typeof Asyncify==="object"?Asyncify.handleAsync.bind(Asyncify):null;Module["handleAsync"]=handleAsync;const targets=new Map;Module["setCallback"]=(key,target)=>targets.set(key,target);Module["getCallback"]=key=>targets.get(key);Module["deleteCallback"]=key=>targets.delete(key);adapters_support=function(isAsync,key,...args){const receiver=targets.get(key);let methodName=null;const f=typeof receiver==="function"?receiver:receiver[methodName=UTF8ToString(args.shift())];if(isAsync){if(handleAsync){return handleAsync(()=>f.apply(receiver,args))}throw new Error("Synchronous WebAssembly cannot call async function")}const result=f.apply(receiver,args);if(typeof result?.then=="function"){console.error("unexpected Promise",f);throw new Error(`${methodName} unexpectedly returned a Promise`)}return result}};function _ipp(...args){return adapters_support(false,...args)}function _ipp_async(...args){return adapters_support(true,...args)}_ipp_async.isAsync=true;function _ippipppp(...args){return adapters_support(false,...args)}function _ippipppp_async(...args){return adapters_support(true,...args)}_ippipppp_async.isAsync=true;function _ippp(...args){return adapters_support(false,...args)}function _ippp_async(...args){return adapters_support(true,...args)}_ippp_async.isAsync=true;function _ipppi(...args){return adapters_support(false,...args)}function _ipppi_async(...args){return adapters_support(true,...args)}_ipppi_async.isAsync=true;function _ipppiii(...args){return adapters_support(false,...args)}function _ipppiii_async(...args){return adapters_support(true,...args)}_ipppiii_async.isAsync=true;function _ipppiiip(...args){return adapters_support(false,...args)}function _ipppiiip_async(...args){return adapters_support(true,...args)}_ipppiiip_async.isAsync=true;function _ipppip(...args){return adapters_support(false,...args)}function _ipppip_async(...args){return adapters_support(true,...args)}_ipppip_async.isAsync=true;function _ipppj(...args){return adapters_support(false,...args)}function _ipppj_async(...args){return adapters_support(true,...args)}_ipppj_async.isAsync=true;function _ipppp(...args){return adapters_support(false,...args)}function _ipppp_async(...args){return adapters_support(true,...args)}_ipppp_async.isAsync=true;function _ippppi(...args){return adapters_support(false,...args)}function _ippppi_async(...args){return adapters_support(true,...args)}_ippppi_async.isAsync=true;function _ippppij(...args){return adapters_support(false,...args)}function _ippppij_async(...args){return adapters_support(true,...args)}_ippppij_async.isAsync=true;function _ippppip(...args){return adapters_support(false,...args)}function _ippppip_async(...args){return adapters_support(true,...args)}_ippppip_async.isAsync=true;function _ipppppip(...args){return adapters_support(false,...args)}function _ipppppip_async(...args){return adapters_support(true,...args)}_ipppppip_async.isAsync=true;function _random_get(buffer,size){try{randomFill(HEAPU8.subarray(buffer,buffer+size));return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _vppippii(...args){return adapters_support(false,...args)}function _vppippii_async(...args){return adapters_support(true,...args)}_vppippii_async.isAsync=true;function _vppp(...args){return adapters_support(false,...args)}function _vppp_async(...args){return adapters_support(true,...args)}_vppp_async.isAsync=true;function _vpppip(...args){return adapters_support(false,...args)}function _vpppip_async(...args){return adapters_support(true,...args)}_vpppip_async.isAsync=true;var getWasmTableEntry=funcPtr=>wasmTable.get(funcPtr);var runAndAbortIfError=func=>{try{return func()}catch(e){abort(e)}};var runtimeKeepalivePush=()=>{runtimeKeepaliveCounter+=1};var runtimeKeepalivePop=()=>{runtimeKeepaliveCounter-=1};var Asyncify={instrumentWasmImports(imports){var importPattern=/^(ipp|ipp_async|ippp|ippp_async|vppp|vppp_async|ipppj|ipppj_async|ipppi|ipppi_async|ipppp|ipppp_async|ipppip|ipppip_async|vpppip|vpppip_async|ippppi|ippppi_async|ippppij|ippppij_async|ipppiii|ipppiii_async|ippppip|ippppip_async|ippipppp|ippipppp_async|ipppppip|ipppppip_async|ipppiiip|ipppiiip_async|vppippii|vppippii_async|invoke_.*|__asyncjs__.*)$/;for(let[x,original]of Object.entries(imports)){if(typeof original=="function"){let isAsyncifyImport=original.isAsync||importPattern.test(x)}}},instrumentFunction(original){var wrapper=(...args)=>{Asyncify.exportCallStack.push(original);try{return original(...args)}finally{if(!ABORT){var top=Asyncify.exportCallStack.pop();Asyncify.maybeStopUnwind()}}};Asyncify.funcWrappers.set(original,wrapper);return wrapper},instrumentWasmExports(exports){var ret={};for(let[x,original]of Object.entries(exports)){if(typeof original=="function"){var wrapper=Asyncify.instrumentFunction(original);ret[x]=wrapper}else{ret[x]=original}}return ret},State:{Normal:0,Unwinding:1,Rewinding:2,Disabled:3},state:0,StackSize:16384,currData:null,handleSleepReturnValue:0,exportCallStack:[],callstackFuncToId:new Map,callStackIdToFunc:new Map,funcWrappers:new Map,callStackId:0,asyncPromiseHandlers:null,sleepCallbacks:[],getCallStackId(func){if(!Asyncify.callstackFuncToId.has(func)){var id=Asyncify.callStackId++;Asyncify.callstackFuncToId.set(func,id);Asyncify.callStackIdToFunc.set(id,func)}return Asyncify.callstackFuncToId.get(func)},maybeStopUnwind(){if(Asyncify.currData&&Asyncify.state===Asyncify.State.Unwinding&&Asyncify.exportCallStack.length===0){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(_asyncify_stop_unwind);if(typeof Fibers!="undefined"){Fibers.trampoline()}}},whenDone(){return new Promise((resolve,reject)=>{Asyncify.asyncPromiseHandlers={resolve,reject}})},allocateData(){var ptr=_malloc(12+Asyncify.StackSize);Asyncify.setDataHeader(ptr,ptr+12,Asyncify.StackSize);Asyncify.setDataRewindFunc(ptr);return ptr},setDataHeader(ptr,stack,stackSize){HEAPU32[ptr>>2]=stack;HEAPU32[ptr+4>>2]=stack+stackSize},setDataRewindFunc(ptr){var bottomOfCallStack=Asyncify.exportCallStack[0];var rewindId=Asyncify.getCallStackId(bottomOfCallStack);HEAP32[ptr+8>>2]=rewindId},getDataRewindFunc(ptr){var id=HEAP32[ptr+8>>2];var func=Asyncify.callStackIdToFunc.get(id);return func},doRewind(ptr){var original=Asyncify.getDataRewindFunc(ptr);var func=Asyncify.funcWrappers.get(original);return func()},handleSleep(startAsync){if(ABORT)return;if(Asyncify.state===Asyncify.State.Normal){var reachedCallback=false;var reachedAfterCallback=false;startAsync((handleSleepReturnValue=0)=>{if(ABORT)return;Asyncify.handleSleepReturnValue=handleSleepReturnValue;reachedCallback=true;if(!reachedAfterCallback){return}Asyncify.state=Asyncify.State.Rewinding;runAndAbortIfError(()=>_asyncify_start_rewind(Asyncify.currData));if(typeof MainLoop!="undefined"&&MainLoop.func){MainLoop.resume()}var asyncWasmReturnValue,isError=false;try{asyncWasmReturnValue=Asyncify.doRewind(Asyncify.currData)}catch(err){asyncWasmReturnValue=err;isError=true}var handled=false;if(!Asyncify.currData){var asyncPromiseHandlers=Asyncify.asyncPromiseHandlers;if(asyncPromiseHandlers){Asyncify.asyncPromiseHandlers=null;(isError?asyncPromiseHandlers.reject:asyncPromiseHandlers.resolve)(asyncWasmReturnValue);handled=true}}if(isError&&!handled){throw asyncWasmReturnValue}});reachedAfterCallback=true;if(!reachedCallback){Asyncify.state=Asyncify.State.Unwinding;Asyncify.currData=Asyncify.allocateData();if(typeof MainLoop!="undefined"&&MainLoop.func){MainLoop.pause()}runAndAbortIfError(()=>_asyncify_start_unwind(Asyncify.currData))}}else if(Asyncify.state===Asyncify.State.Rewinding){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(_asyncify_stop_rewind);_free(Asyncify.currData);Asyncify.currData=null;Asyncify.sleepCallbacks.forEach(callUserCallback)}else{abort(`invalid state: ${Asyncify.state}`)}return Asyncify.handleSleepReturnValue},handleAsync:startAsync=>Asyncify.handleSleep(wakeUp=>{startAsync().then(wakeUp)})};var updateTableMap=(offset,count)=>{if(functionsInTableMap){for(var i=offset;i{if(!functionsInTableMap){functionsInTableMap=new WeakMap;updateTableMap(0,wasmTable.length)}return functionsInTableMap.get(func)||0};var freeTableIndexes=[];var getEmptyTableSlot=()=>{if(freeTableIndexes.length){return freeTableIndexes.pop()}return wasmTable["grow"](1)};var setWasmTableEntry=(idx,func)=>wasmTable.set(idx,func);var uleb128EncodeWithLen=arr=>{const n=arr.length;return[n%128|128,n>>7,...arr]};var wasmTypeCodes={i:127,p:127,j:126,f:125,d:124,e:111};var generateTypePack=types=>uleb128EncodeWithLen(Array.from(types,type=>{var code=wasmTypeCodes[type];return code}));var convertJsFunctionToWasm=(func,sig)=>{var bytes=Uint8Array.of(0,97,115,109,1,0,0,0,1,...uleb128EncodeWithLen([1,96,...generateTypePack(sig.slice(1)),...generateTypePack(sig[0]==="v"?"":sig[0])]),2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0);var module=new WebAssembly.Module(bytes);var instance=new WebAssembly.Instance(module,{e:{f:func}});var wrappedFunc=instance.exports["f"];return wrappedFunc};var addFunction=(func,sig)=>{var rtn=getFunctionAddress(func);if(rtn){return rtn}var ret=getEmptyTableSlot();try{setWasmTableEntry(ret,func)}catch(err){if(!(err instanceof TypeError)){throw err}var wrapped=convertJsFunctionToWasm(func,sig);setWasmTableEntry(ret,wrapped)}functionsInTableMap.set(func,ret);return ret};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)};var getTempRet0=val=>__emscripten_tempret_get();var stringToUTF16=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr};var stringToUTF32=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i65535){i++}HEAP32[outPtr>>2]=codePoint;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr};var AsciiToString=ptr=>{var str="";while(1){var ch=HEAPU8[ptr++];if(!ch)return str;str+=String.fromCharCode(ch)}};var UTF16Decoder=new TextDecoder("utf-16le");var UTF16ToString=(ptr,maxBytesToRead,ignoreNul)=>{var idx=ptr>>1;var endIdx=findStringEnd(HEAPU16,idx,maxBytesToRead/2,ignoreNul);return UTF16Decoder.decode(HEAPU16.subarray(idx,endIdx))};var UTF32ToString=(ptr,maxBytesToRead,ignoreNul)=>{var str="";var startIdx=ptr>>2;for(var i=0;!(i>=maxBytesToRead/4);i++){var utf32=HEAPU32[startIdx+i];if(!utf32&&!ignoreNul)break;str+=String.fromCodePoint(utf32)}return str};var intArrayToString=array=>{var ret=[];for(var i=0;i255){chr&=255}ret.push(String.fromCharCode(chr))}return ret.join("")};FS.createPreloadedFile=FS_createPreloadedFile;FS.preloadFile=FS_preloadFile;FS.staticInit();adapters_support();{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"])arguments_=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["getTempRet0"]=getTempRet0;Module["ccall"]=ccall;Module["cwrap"]=cwrap;Module["addFunction"]=addFunction;Module["setValue"]=setValue;Module["getValue"]=getValue;Module["UTF8ToString"]=UTF8ToString;Module["stringToUTF8"]=stringToUTF8;Module["lengthBytesUTF8"]=lengthBytesUTF8;Module["intArrayFromString"]=intArrayFromString;Module["intArrayToString"]=intArrayToString;Module["AsciiToString"]=AsciiToString;Module["UTF16ToString"]=UTF16ToString;Module["stringToUTF16"]=stringToUTF16;Module["UTF32ToString"]=UTF32ToString;Module["stringToUTF32"]=stringToUTF32;Module["writeArrayToMemory"]=writeArrayToMemory;var _sqlite3_status64,_sqlite3_status,_sqlite3_db_status,_sqlite3_msize,_sqlite3_vfs_find,_sqlite3_vfs_register,_sqlite3_vfs_unregister,_sqlite3_release_memory,_sqlite3_soft_heap_limit64,_sqlite3_memory_used,_sqlite3_hard_heap_limit64,_sqlite3_memory_highwater,_sqlite3_malloc,_sqlite3_malloc64,_sqlite3_free,_sqlite3_realloc,_sqlite3_realloc64,_sqlite3_str_vappendf,_sqlite3_str_append,_sqlite3_str_appendchar,_sqlite3_str_appendall,_sqlite3_str_appendf,_sqlite3_str_finish,_sqlite3_str_errcode,_sqlite3_str_length,_sqlite3_str_value,_sqlite3_str_reset,_sqlite3_str_new,_sqlite3_vmprintf,_sqlite3_mprintf,_sqlite3_vsnprintf,_sqlite3_snprintf,_sqlite3_log,_sqlite3_randomness,_sqlite3_stricmp,_sqlite3_strnicmp,_sqlite3_os_init,_sqlite3_os_end,_sqlite3_serialize,_sqlite3_prepare_v2,_sqlite3_step,_sqlite3_column_int64,_sqlite3_reset,_sqlite3_exec,_sqlite3_column_int,_sqlite3_finalize,_sqlite3_deserialize,_sqlite3_database_file_object,_sqlite3_backup_init,_sqlite3_backup_step,_sqlite3_backup_finish,_sqlite3_backup_remaining,_sqlite3_backup_pagecount,_sqlite3_clear_bindings,_sqlite3_value_blob,_sqlite3_value_text,_sqlite3_value_bytes,_sqlite3_value_bytes16,_sqlite3_value_double,_sqlite3_value_int,_sqlite3_value_int64,_sqlite3_value_subtype,_sqlite3_value_pointer,_sqlite3_value_text16,_sqlite3_value_text16be,_sqlite3_value_text16le,_sqlite3_value_type,_sqlite3_value_encoding,_sqlite3_value_nochange,_sqlite3_value_frombind,_sqlite3_value_dup,_sqlite3_value_free,_sqlite3_result_blob,_sqlite3_result_blob64,_sqlite3_result_double,_sqlite3_result_error,_sqlite3_result_error16,_sqlite3_result_int,_sqlite3_result_int64,_sqlite3_result_null,_sqlite3_result_pointer,_sqlite3_result_subtype,_sqlite3_result_text,_sqlite3_result_text64,_sqlite3_result_text16,_sqlite3_result_text16be,_sqlite3_result_text16le,_sqlite3_result_value,_sqlite3_result_error_toobig,_sqlite3_result_zeroblob,_sqlite3_result_zeroblob64,_sqlite3_result_error_code,_sqlite3_result_error_nomem,_sqlite3_user_data,_sqlite3_context_db_handle,_sqlite3_vtab_nochange,_sqlite3_vtab_in_first,_sqlite3_vtab_in_next,_sqlite3_aggregate_context,_sqlite3_get_auxdata,_sqlite3_set_auxdata,_sqlite3_column_count,_sqlite3_data_count,_sqlite3_column_blob,_sqlite3_column_bytes,_sqlite3_column_bytes16,_sqlite3_column_double,_sqlite3_column_text,_sqlite3_column_value,_sqlite3_column_text16,_sqlite3_column_type,_sqlite3_column_name,_sqlite3_column_name16,_sqlite3_bind_blob,_sqlite3_bind_blob64,_sqlite3_bind_double,_sqlite3_bind_int,_sqlite3_bind_int64,_sqlite3_bind_null,_sqlite3_bind_pointer,_sqlite3_bind_text,_sqlite3_bind_text64,_sqlite3_bind_text16,_sqlite3_bind_value,_sqlite3_bind_zeroblob,_sqlite3_bind_zeroblob64,_sqlite3_bind_parameter_count,_sqlite3_bind_parameter_name,_sqlite3_bind_parameter_index,_sqlite3_db_handle,_sqlite3_stmt_readonly,_sqlite3_stmt_isexplain,_sqlite3_stmt_explain,_sqlite3_stmt_busy,_sqlite3_next_stmt,_sqlite3_stmt_status,_sqlite3_sql,_sqlite3_expanded_sql,_sqlite3_value_numeric_type,_sqlite3_blob_open,_sqlite3_blob_close,_sqlite3_blob_read,_sqlite3_blob_write,_sqlite3_blob_bytes,_sqlite3_blob_reopen,_sqlite3_set_authorizer,_sqlite3_strglob,_sqlite3_strlike,_sqlite3_errmsg,_sqlite3_auto_extension,_sqlite3_cancel_auto_extension,_sqlite3_reset_auto_extension,_sqlite3_prepare,_sqlite3_prepare_v3,_sqlite3_prepare16,_sqlite3_prepare16_v2,_sqlite3_prepare16_v3,_sqlite3_get_table,_sqlite3_free_table,_sqlite3_create_module,_sqlite3_create_module_v2,_sqlite3_drop_modules,_sqlite3_declare_vtab,_sqlite3_vtab_on_conflict,_sqlite3_vtab_config,_sqlite3_vtab_collation,_sqlite3_vtab_in,_sqlite3_vtab_rhs_value,_sqlite3_vtab_distinct,_sqlite3_keyword_name,_sqlite3_keyword_count,_sqlite3_keyword_check,_sqlite3_complete,_sqlite3_complete16,_sqlite3_libversion,_sqlite3_libversion_number,_sqlite3_threadsafe,_sqlite3_initialize,_sqlite3_shutdown,_sqlite3_config,_sqlite3_db_mutex,_sqlite3_db_release_memory,_sqlite3_db_cacheflush,_sqlite3_db_config,_sqlite3_last_insert_rowid,_sqlite3_set_last_insert_rowid,_sqlite3_changes64,_sqlite3_changes,_sqlite3_total_changes64,_sqlite3_total_changes,_sqlite3_txn_state,_sqlite3_close,_sqlite3_close_v2,_sqlite3_busy_handler,_sqlite3_progress_handler,_sqlite3_busy_timeout,_sqlite3_interrupt,_sqlite3_is_interrupted,_sqlite3_create_function,_sqlite3_create_function_v2,_sqlite3_create_window_function,_sqlite3_create_function16,_sqlite3_overload_function,_sqlite3_trace_v2,_sqlite3_commit_hook,_sqlite3_update_hook,_sqlite3_rollback_hook,_sqlite3_autovacuum_pages,_sqlite3_wal_autocheckpoint,_sqlite3_wal_hook,_sqlite3_wal_checkpoint_v2,_sqlite3_wal_checkpoint,_sqlite3_error_offset,_sqlite3_errmsg16,_sqlite3_errcode,_sqlite3_extended_errcode,_sqlite3_system_errno,_sqlite3_errstr,_sqlite3_limit,_sqlite3_open,_sqlite3_open_v2,_sqlite3_open16,_sqlite3_create_collation,_sqlite3_create_collation_v2,_sqlite3_create_collation16,_sqlite3_collation_needed,_sqlite3_collation_needed16,_sqlite3_get_clientdata,_sqlite3_set_clientdata,_sqlite3_get_autocommit,_sqlite3_table_column_metadata,_sqlite3_sleep,_sqlite3_extended_result_codes,_sqlite3_file_control,_sqlite3_test_control,_sqlite3_create_filename,_sqlite3_free_filename,_sqlite3_uri_parameter,_sqlite3_uri_key,_sqlite3_uri_boolean,_sqlite3_uri_int64,_sqlite3_filename_database,_sqlite3_filename_journal,_sqlite3_filename_wal,_sqlite3_db_name,_sqlite3_db_filename,_sqlite3_db_readonly,_sqlite3_compileoption_used,_sqlite3_compileoption_get,_sqlite3_sourceid,_malloc,_free,_RegisterExtensionFunctions,_getSqliteFree,_main,_libauthorizer_set_authorizer,_libfunction_create_function,_libhook_commit_hook,_libhook_update_hook,_libprogress_progress_handler,_libvfs_vfs_register,_emscripten_builtin_memalign,__emscripten_timeout,_setThrew,__emscripten_tempret_set,__emscripten_tempret_get,__emscripten_stack_restore,__emscripten_stack_alloc,_emscripten_stack_get_current,___cxa_can_catch,dynCall_iii,dynCall_viiiii,dynCall_viii,dynCall_vii,dynCall_viiii,dynCall_vi,dynCall_viiiiij,dynCall_iiii,dynCall_ii,dynCall_viiiiii,dynCall_iiiiii,dynCall_iiiii,dynCall_iiiiiii,dynCall_viji,dynCall_viiiij,dynCall_iij,dynCall_iiiij,dynCall_v,dynCall_iijii,dynCall_iiji,dynCall_i,dynCall_iiiiiij,_asyncify_start_unwind,_asyncify_stop_unwind,_asyncify_start_rewind,_asyncify_stop_rewind,wasmMemory,wasmTable;function assignWasmExports(wasmExports){_sqlite3_status64=Module["_sqlite3_status64"]=wasmExports["Ha"];_sqlite3_status=Module["_sqlite3_status"]=wasmExports["Ia"];_sqlite3_db_status=Module["_sqlite3_db_status"]=wasmExports["Ja"];_sqlite3_msize=Module["_sqlite3_msize"]=wasmExports["Ka"];_sqlite3_vfs_find=Module["_sqlite3_vfs_find"]=wasmExports["La"];_sqlite3_vfs_register=Module["_sqlite3_vfs_register"]=wasmExports["Ma"];_sqlite3_vfs_unregister=Module["_sqlite3_vfs_unregister"]=wasmExports["Na"];_sqlite3_release_memory=Module["_sqlite3_release_memory"]=wasmExports["Oa"];_sqlite3_soft_heap_limit64=Module["_sqlite3_soft_heap_limit64"]=wasmExports["Pa"];_sqlite3_memory_used=Module["_sqlite3_memory_used"]=wasmExports["Qa"];_sqlite3_hard_heap_limit64=Module["_sqlite3_hard_heap_limit64"]=wasmExports["Ra"];_sqlite3_memory_highwater=Module["_sqlite3_memory_highwater"]=wasmExports["Sa"];_sqlite3_malloc=Module["_sqlite3_malloc"]=wasmExports["Ta"];_sqlite3_malloc64=Module["_sqlite3_malloc64"]=wasmExports["Ua"];_sqlite3_free=Module["_sqlite3_free"]=wasmExports["Va"];_sqlite3_realloc=Module["_sqlite3_realloc"]=wasmExports["Wa"];_sqlite3_realloc64=Module["_sqlite3_realloc64"]=wasmExports["Xa"];_sqlite3_str_vappendf=Module["_sqlite3_str_vappendf"]=wasmExports["Ya"];_sqlite3_str_append=Module["_sqlite3_str_append"]=wasmExports["Za"];_sqlite3_str_appendchar=Module["_sqlite3_str_appendchar"]=wasmExports["_a"];_sqlite3_str_appendall=Module["_sqlite3_str_appendall"]=wasmExports["$a"];_sqlite3_str_appendf=Module["_sqlite3_str_appendf"]=wasmExports["ab"];_sqlite3_str_finish=Module["_sqlite3_str_finish"]=wasmExports["bb"];_sqlite3_str_errcode=Module["_sqlite3_str_errcode"]=wasmExports["cb"];_sqlite3_str_length=Module["_sqlite3_str_length"]=wasmExports["db"];_sqlite3_str_value=Module["_sqlite3_str_value"]=wasmExports["eb"];_sqlite3_str_reset=Module["_sqlite3_str_reset"]=wasmExports["fb"];_sqlite3_str_new=Module["_sqlite3_str_new"]=wasmExports["gb"];_sqlite3_vmprintf=Module["_sqlite3_vmprintf"]=wasmExports["hb"];_sqlite3_mprintf=Module["_sqlite3_mprintf"]=wasmExports["ib"];_sqlite3_vsnprintf=Module["_sqlite3_vsnprintf"]=wasmExports["jb"];_sqlite3_snprintf=Module["_sqlite3_snprintf"]=wasmExports["kb"];_sqlite3_log=Module["_sqlite3_log"]=wasmExports["lb"];_sqlite3_randomness=Module["_sqlite3_randomness"]=wasmExports["mb"];_sqlite3_stricmp=Module["_sqlite3_stricmp"]=wasmExports["nb"];_sqlite3_strnicmp=Module["_sqlite3_strnicmp"]=wasmExports["ob"];_sqlite3_os_init=Module["_sqlite3_os_init"]=wasmExports["pb"];_sqlite3_os_end=Module["_sqlite3_os_end"]=wasmExports["qb"];_sqlite3_serialize=Module["_sqlite3_serialize"]=wasmExports["rb"];_sqlite3_prepare_v2=Module["_sqlite3_prepare_v2"]=wasmExports["sb"];_sqlite3_step=Module["_sqlite3_step"]=wasmExports["tb"];_sqlite3_column_int64=Module["_sqlite3_column_int64"]=wasmExports["ub"];_sqlite3_reset=Module["_sqlite3_reset"]=wasmExports["vb"];_sqlite3_exec=Module["_sqlite3_exec"]=wasmExports["wb"];_sqlite3_column_int=Module["_sqlite3_column_int"]=wasmExports["xb"];_sqlite3_finalize=Module["_sqlite3_finalize"]=wasmExports["yb"];_sqlite3_deserialize=Module["_sqlite3_deserialize"]=wasmExports["zb"];_sqlite3_database_file_object=Module["_sqlite3_database_file_object"]=wasmExports["Ab"];_sqlite3_backup_init=Module["_sqlite3_backup_init"]=wasmExports["Bb"];_sqlite3_backup_step=Module["_sqlite3_backup_step"]=wasmExports["Cb"];_sqlite3_backup_finish=Module["_sqlite3_backup_finish"]=wasmExports["Db"];_sqlite3_backup_remaining=Module["_sqlite3_backup_remaining"]=wasmExports["Eb"];_sqlite3_backup_pagecount=Module["_sqlite3_backup_pagecount"]=wasmExports["Fb"];_sqlite3_clear_bindings=Module["_sqlite3_clear_bindings"]=wasmExports["Gb"];_sqlite3_value_blob=Module["_sqlite3_value_blob"]=wasmExports["Hb"];_sqlite3_value_text=Module["_sqlite3_value_text"]=wasmExports["Ib"];_sqlite3_value_bytes=Module["_sqlite3_value_bytes"]=wasmExports["Jb"];_sqlite3_value_bytes16=Module["_sqlite3_value_bytes16"]=wasmExports["Kb"];_sqlite3_value_double=Module["_sqlite3_value_double"]=wasmExports["Lb"];_sqlite3_value_int=Module["_sqlite3_value_int"]=wasmExports["Mb"];_sqlite3_value_int64=Module["_sqlite3_value_int64"]=wasmExports["Nb"];_sqlite3_value_subtype=Module["_sqlite3_value_subtype"]=wasmExports["Ob"];_sqlite3_value_pointer=Module["_sqlite3_value_pointer"]=wasmExports["Pb"];_sqlite3_value_text16=Module["_sqlite3_value_text16"]=wasmExports["Qb"];_sqlite3_value_text16be=Module["_sqlite3_value_text16be"]=wasmExports["Rb"];_sqlite3_value_text16le=Module["_sqlite3_value_text16le"]=wasmExports["Sb"];_sqlite3_value_type=Module["_sqlite3_value_type"]=wasmExports["Tb"];_sqlite3_value_encoding=Module["_sqlite3_value_encoding"]=wasmExports["Ub"];_sqlite3_value_nochange=Module["_sqlite3_value_nochange"]=wasmExports["Vb"];_sqlite3_value_frombind=Module["_sqlite3_value_frombind"]=wasmExports["Wb"];_sqlite3_value_dup=Module["_sqlite3_value_dup"]=wasmExports["Xb"];_sqlite3_value_free=Module["_sqlite3_value_free"]=wasmExports["Yb"];_sqlite3_result_blob=Module["_sqlite3_result_blob"]=wasmExports["Zb"];_sqlite3_result_blob64=Module["_sqlite3_result_blob64"]=wasmExports["_b"];_sqlite3_result_double=Module["_sqlite3_result_double"]=wasmExports["$b"];_sqlite3_result_error=Module["_sqlite3_result_error"]=wasmExports["ac"];_sqlite3_result_error16=Module["_sqlite3_result_error16"]=wasmExports["bc"];_sqlite3_result_int=Module["_sqlite3_result_int"]=wasmExports["cc"];_sqlite3_result_int64=Module["_sqlite3_result_int64"]=wasmExports["dc"];_sqlite3_result_null=Module["_sqlite3_result_null"]=wasmExports["ec"];_sqlite3_result_pointer=Module["_sqlite3_result_pointer"]=wasmExports["fc"];_sqlite3_result_subtype=Module["_sqlite3_result_subtype"]=wasmExports["gc"];_sqlite3_result_text=Module["_sqlite3_result_text"]=wasmExports["hc"];_sqlite3_result_text64=Module["_sqlite3_result_text64"]=wasmExports["ic"];_sqlite3_result_text16=Module["_sqlite3_result_text16"]=wasmExports["jc"];_sqlite3_result_text16be=Module["_sqlite3_result_text16be"]=wasmExports["kc"];_sqlite3_result_text16le=Module["_sqlite3_result_text16le"]=wasmExports["lc"];_sqlite3_result_value=Module["_sqlite3_result_value"]=wasmExports["mc"];_sqlite3_result_error_toobig=Module["_sqlite3_result_error_toobig"]=wasmExports["nc"];_sqlite3_result_zeroblob=Module["_sqlite3_result_zeroblob"]=wasmExports["oc"];_sqlite3_result_zeroblob64=Module["_sqlite3_result_zeroblob64"]=wasmExports["pc"];_sqlite3_result_error_code=Module["_sqlite3_result_error_code"]=wasmExports["qc"];_sqlite3_result_error_nomem=Module["_sqlite3_result_error_nomem"]=wasmExports["rc"];_sqlite3_user_data=Module["_sqlite3_user_data"]=wasmExports["sc"];_sqlite3_context_db_handle=Module["_sqlite3_context_db_handle"]=wasmExports["tc"];_sqlite3_vtab_nochange=Module["_sqlite3_vtab_nochange"]=wasmExports["uc"];_sqlite3_vtab_in_first=Module["_sqlite3_vtab_in_first"]=wasmExports["vc"];_sqlite3_vtab_in_next=Module["_sqlite3_vtab_in_next"]=wasmExports["wc"];_sqlite3_aggregate_context=Module["_sqlite3_aggregate_context"]=wasmExports["xc"];_sqlite3_get_auxdata=Module["_sqlite3_get_auxdata"]=wasmExports["yc"];_sqlite3_set_auxdata=Module["_sqlite3_set_auxdata"]=wasmExports["zc"];_sqlite3_column_count=Module["_sqlite3_column_count"]=wasmExports["Ac"];_sqlite3_data_count=Module["_sqlite3_data_count"]=wasmExports["Bc"];_sqlite3_column_blob=Module["_sqlite3_column_blob"]=wasmExports["Cc"];_sqlite3_column_bytes=Module["_sqlite3_column_bytes"]=wasmExports["Dc"];_sqlite3_column_bytes16=Module["_sqlite3_column_bytes16"]=wasmExports["Ec"];_sqlite3_column_double=Module["_sqlite3_column_double"]=wasmExports["Fc"];_sqlite3_column_text=Module["_sqlite3_column_text"]=wasmExports["Gc"];_sqlite3_column_value=Module["_sqlite3_column_value"]=wasmExports["Hc"];_sqlite3_column_text16=Module["_sqlite3_column_text16"]=wasmExports["Ic"];_sqlite3_column_type=Module["_sqlite3_column_type"]=wasmExports["Jc"];_sqlite3_column_name=Module["_sqlite3_column_name"]=wasmExports["Kc"];_sqlite3_column_name16=Module["_sqlite3_column_name16"]=wasmExports["Lc"];_sqlite3_bind_blob=Module["_sqlite3_bind_blob"]=wasmExports["Mc"];_sqlite3_bind_blob64=Module["_sqlite3_bind_blob64"]=wasmExports["Nc"];_sqlite3_bind_double=Module["_sqlite3_bind_double"]=wasmExports["Oc"];_sqlite3_bind_int=Module["_sqlite3_bind_int"]=wasmExports["Pc"];_sqlite3_bind_int64=Module["_sqlite3_bind_int64"]=wasmExports["Qc"];_sqlite3_bind_null=Module["_sqlite3_bind_null"]=wasmExports["Rc"];_sqlite3_bind_pointer=Module["_sqlite3_bind_pointer"]=wasmExports["Sc"];_sqlite3_bind_text=Module["_sqlite3_bind_text"]=wasmExports["Tc"];_sqlite3_bind_text64=Module["_sqlite3_bind_text64"]=wasmExports["Uc"];_sqlite3_bind_text16=Module["_sqlite3_bind_text16"]=wasmExports["Vc"];_sqlite3_bind_value=Module["_sqlite3_bind_value"]=wasmExports["Wc"];_sqlite3_bind_zeroblob=Module["_sqlite3_bind_zeroblob"]=wasmExports["Xc"];_sqlite3_bind_zeroblob64=Module["_sqlite3_bind_zeroblob64"]=wasmExports["Yc"];_sqlite3_bind_parameter_count=Module["_sqlite3_bind_parameter_count"]=wasmExports["Zc"];_sqlite3_bind_parameter_name=Module["_sqlite3_bind_parameter_name"]=wasmExports["_c"];_sqlite3_bind_parameter_index=Module["_sqlite3_bind_parameter_index"]=wasmExports["$c"];_sqlite3_db_handle=Module["_sqlite3_db_handle"]=wasmExports["ad"];_sqlite3_stmt_readonly=Module["_sqlite3_stmt_readonly"]=wasmExports["bd"];_sqlite3_stmt_isexplain=Module["_sqlite3_stmt_isexplain"]=wasmExports["cd"];_sqlite3_stmt_explain=Module["_sqlite3_stmt_explain"]=wasmExports["dd"];_sqlite3_stmt_busy=Module["_sqlite3_stmt_busy"]=wasmExports["ed"];_sqlite3_next_stmt=Module["_sqlite3_next_stmt"]=wasmExports["fd"];_sqlite3_stmt_status=Module["_sqlite3_stmt_status"]=wasmExports["gd"];_sqlite3_sql=Module["_sqlite3_sql"]=wasmExports["hd"];_sqlite3_expanded_sql=Module["_sqlite3_expanded_sql"]=wasmExports["id"];_sqlite3_value_numeric_type=Module["_sqlite3_value_numeric_type"]=wasmExports["jd"];_sqlite3_blob_open=Module["_sqlite3_blob_open"]=wasmExports["kd"];_sqlite3_blob_close=Module["_sqlite3_blob_close"]=wasmExports["ld"];_sqlite3_blob_read=Module["_sqlite3_blob_read"]=wasmExports["md"];_sqlite3_blob_write=Module["_sqlite3_blob_write"]=wasmExports["nd"];_sqlite3_blob_bytes=Module["_sqlite3_blob_bytes"]=wasmExports["od"];_sqlite3_blob_reopen=Module["_sqlite3_blob_reopen"]=wasmExports["pd"];_sqlite3_set_authorizer=Module["_sqlite3_set_authorizer"]=wasmExports["qd"];_sqlite3_strglob=Module["_sqlite3_strglob"]=wasmExports["rd"];_sqlite3_strlike=Module["_sqlite3_strlike"]=wasmExports["sd"];_sqlite3_errmsg=Module["_sqlite3_errmsg"]=wasmExports["td"];_sqlite3_auto_extension=Module["_sqlite3_auto_extension"]=wasmExports["ud"];_sqlite3_cancel_auto_extension=Module["_sqlite3_cancel_auto_extension"]=wasmExports["vd"];_sqlite3_reset_auto_extension=Module["_sqlite3_reset_auto_extension"]=wasmExports["wd"];_sqlite3_prepare=Module["_sqlite3_prepare"]=wasmExports["xd"];_sqlite3_prepare_v3=Module["_sqlite3_prepare_v3"]=wasmExports["yd"];_sqlite3_prepare16=Module["_sqlite3_prepare16"]=wasmExports["zd"];_sqlite3_prepare16_v2=Module["_sqlite3_prepare16_v2"]=wasmExports["Ad"];_sqlite3_prepare16_v3=Module["_sqlite3_prepare16_v3"]=wasmExports["Bd"];_sqlite3_get_table=Module["_sqlite3_get_table"]=wasmExports["Cd"];_sqlite3_free_table=Module["_sqlite3_free_table"]=wasmExports["Dd"];_sqlite3_create_module=Module["_sqlite3_create_module"]=wasmExports["Ed"];_sqlite3_create_module_v2=Module["_sqlite3_create_module_v2"]=wasmExports["Fd"];_sqlite3_drop_modules=Module["_sqlite3_drop_modules"]=wasmExports["Gd"];_sqlite3_declare_vtab=Module["_sqlite3_declare_vtab"]=wasmExports["Hd"];_sqlite3_vtab_on_conflict=Module["_sqlite3_vtab_on_conflict"]=wasmExports["Id"];_sqlite3_vtab_config=Module["_sqlite3_vtab_config"]=wasmExports["Jd"];_sqlite3_vtab_collation=Module["_sqlite3_vtab_collation"]=wasmExports["Kd"];_sqlite3_vtab_in=Module["_sqlite3_vtab_in"]=wasmExports["Ld"];_sqlite3_vtab_rhs_value=Module["_sqlite3_vtab_rhs_value"]=wasmExports["Md"];_sqlite3_vtab_distinct=Module["_sqlite3_vtab_distinct"]=wasmExports["Nd"];_sqlite3_keyword_name=Module["_sqlite3_keyword_name"]=wasmExports["Od"];_sqlite3_keyword_count=Module["_sqlite3_keyword_count"]=wasmExports["Pd"];_sqlite3_keyword_check=Module["_sqlite3_keyword_check"]=wasmExports["Qd"];_sqlite3_complete=Module["_sqlite3_complete"]=wasmExports["Rd"];_sqlite3_complete16=Module["_sqlite3_complete16"]=wasmExports["Sd"];_sqlite3_libversion=Module["_sqlite3_libversion"]=wasmExports["Td"];_sqlite3_libversion_number=Module["_sqlite3_libversion_number"]=wasmExports["Ud"];_sqlite3_threadsafe=Module["_sqlite3_threadsafe"]=wasmExports["Vd"];_sqlite3_initialize=Module["_sqlite3_initialize"]=wasmExports["Wd"];_sqlite3_shutdown=Module["_sqlite3_shutdown"]=wasmExports["Xd"];_sqlite3_config=Module["_sqlite3_config"]=wasmExports["Yd"];_sqlite3_db_mutex=Module["_sqlite3_db_mutex"]=wasmExports["Zd"];_sqlite3_db_release_memory=Module["_sqlite3_db_release_memory"]=wasmExports["_d"];_sqlite3_db_cacheflush=Module["_sqlite3_db_cacheflush"]=wasmExports["$d"];_sqlite3_db_config=Module["_sqlite3_db_config"]=wasmExports["ae"];_sqlite3_last_insert_rowid=Module["_sqlite3_last_insert_rowid"]=wasmExports["be"];_sqlite3_set_last_insert_rowid=Module["_sqlite3_set_last_insert_rowid"]=wasmExports["ce"];_sqlite3_changes64=Module["_sqlite3_changes64"]=wasmExports["de"];_sqlite3_changes=Module["_sqlite3_changes"]=wasmExports["ee"];_sqlite3_total_changes64=Module["_sqlite3_total_changes64"]=wasmExports["fe"];_sqlite3_total_changes=Module["_sqlite3_total_changes"]=wasmExports["ge"];_sqlite3_txn_state=Module["_sqlite3_txn_state"]=wasmExports["he"];_sqlite3_close=Module["_sqlite3_close"]=wasmExports["ie"];_sqlite3_close_v2=Module["_sqlite3_close_v2"]=wasmExports["je"];_sqlite3_busy_handler=Module["_sqlite3_busy_handler"]=wasmExports["ke"];_sqlite3_progress_handler=Module["_sqlite3_progress_handler"]=wasmExports["le"];_sqlite3_busy_timeout=Module["_sqlite3_busy_timeout"]=wasmExports["me"];_sqlite3_interrupt=Module["_sqlite3_interrupt"]=wasmExports["ne"];_sqlite3_is_interrupted=Module["_sqlite3_is_interrupted"]=wasmExports["oe"];_sqlite3_create_function=Module["_sqlite3_create_function"]=wasmExports["pe"];_sqlite3_create_function_v2=Module["_sqlite3_create_function_v2"]=wasmExports["qe"];_sqlite3_create_window_function=Module["_sqlite3_create_window_function"]=wasmExports["re"];_sqlite3_create_function16=Module["_sqlite3_create_function16"]=wasmExports["se"];_sqlite3_overload_function=Module["_sqlite3_overload_function"]=wasmExports["te"];_sqlite3_trace_v2=Module["_sqlite3_trace_v2"]=wasmExports["ue"];_sqlite3_commit_hook=Module["_sqlite3_commit_hook"]=wasmExports["ve"];_sqlite3_update_hook=Module["_sqlite3_update_hook"]=wasmExports["we"];_sqlite3_rollback_hook=Module["_sqlite3_rollback_hook"]=wasmExports["xe"];_sqlite3_autovacuum_pages=Module["_sqlite3_autovacuum_pages"]=wasmExports["ye"];_sqlite3_wal_autocheckpoint=Module["_sqlite3_wal_autocheckpoint"]=wasmExports["ze"];_sqlite3_wal_hook=Module["_sqlite3_wal_hook"]=wasmExports["Ae"];_sqlite3_wal_checkpoint_v2=Module["_sqlite3_wal_checkpoint_v2"]=wasmExports["Be"];_sqlite3_wal_checkpoint=Module["_sqlite3_wal_checkpoint"]=wasmExports["Ce"];_sqlite3_error_offset=Module["_sqlite3_error_offset"]=wasmExports["De"];_sqlite3_errmsg16=Module["_sqlite3_errmsg16"]=wasmExports["Ee"];_sqlite3_errcode=Module["_sqlite3_errcode"]=wasmExports["Fe"];_sqlite3_extended_errcode=Module["_sqlite3_extended_errcode"]=wasmExports["Ge"];_sqlite3_system_errno=Module["_sqlite3_system_errno"]=wasmExports["He"];_sqlite3_errstr=Module["_sqlite3_errstr"]=wasmExports["Ie"];_sqlite3_limit=Module["_sqlite3_limit"]=wasmExports["Je"];_sqlite3_open=Module["_sqlite3_open"]=wasmExports["Ke"];_sqlite3_open_v2=Module["_sqlite3_open_v2"]=wasmExports["Le"];_sqlite3_open16=Module["_sqlite3_open16"]=wasmExports["Me"];_sqlite3_create_collation=Module["_sqlite3_create_collation"]=wasmExports["Ne"];_sqlite3_create_collation_v2=Module["_sqlite3_create_collation_v2"]=wasmExports["Oe"];_sqlite3_create_collation16=Module["_sqlite3_create_collation16"]=wasmExports["Pe"];_sqlite3_collation_needed=Module["_sqlite3_collation_needed"]=wasmExports["Qe"];_sqlite3_collation_needed16=Module["_sqlite3_collation_needed16"]=wasmExports["Re"];_sqlite3_get_clientdata=Module["_sqlite3_get_clientdata"]=wasmExports["Se"];_sqlite3_set_clientdata=Module["_sqlite3_set_clientdata"]=wasmExports["Te"];_sqlite3_get_autocommit=Module["_sqlite3_get_autocommit"]=wasmExports["Ue"];_sqlite3_table_column_metadata=Module["_sqlite3_table_column_metadata"]=wasmExports["Ve"];_sqlite3_sleep=Module["_sqlite3_sleep"]=wasmExports["We"];_sqlite3_extended_result_codes=Module["_sqlite3_extended_result_codes"]=wasmExports["Xe"];_sqlite3_file_control=Module["_sqlite3_file_control"]=wasmExports["Ye"];_sqlite3_test_control=Module["_sqlite3_test_control"]=wasmExports["Ze"];_sqlite3_create_filename=Module["_sqlite3_create_filename"]=wasmExports["_e"];_sqlite3_free_filename=Module["_sqlite3_free_filename"]=wasmExports["$e"];_sqlite3_uri_parameter=Module["_sqlite3_uri_parameter"]=wasmExports["af"];_sqlite3_uri_key=Module["_sqlite3_uri_key"]=wasmExports["bf"];_sqlite3_uri_boolean=Module["_sqlite3_uri_boolean"]=wasmExports["cf"];_sqlite3_uri_int64=Module["_sqlite3_uri_int64"]=wasmExports["df"];_sqlite3_filename_database=Module["_sqlite3_filename_database"]=wasmExports["ef"];_sqlite3_filename_journal=Module["_sqlite3_filename_journal"]=wasmExports["ff"];_sqlite3_filename_wal=Module["_sqlite3_filename_wal"]=wasmExports["gf"];_sqlite3_db_name=Module["_sqlite3_db_name"]=wasmExports["hf"];_sqlite3_db_filename=Module["_sqlite3_db_filename"]=wasmExports["jf"];_sqlite3_db_readonly=Module["_sqlite3_db_readonly"]=wasmExports["kf"];_sqlite3_compileoption_used=Module["_sqlite3_compileoption_used"]=wasmExports["lf"];_sqlite3_compileoption_get=Module["_sqlite3_compileoption_get"]=wasmExports["mf"];_sqlite3_sourceid=Module["_sqlite3_sourceid"]=wasmExports["nf"];_malloc=Module["_malloc"]=wasmExports["of"];_free=Module["_free"]=wasmExports["pf"];_RegisterExtensionFunctions=Module["_RegisterExtensionFunctions"]=wasmExports["qf"];_getSqliteFree=Module["_getSqliteFree"]=wasmExports["rf"];_main=Module["_main"]=wasmExports["sf"];_libauthorizer_set_authorizer=Module["_libauthorizer_set_authorizer"]=wasmExports["tf"];_libfunction_create_function=Module["_libfunction_create_function"]=wasmExports["uf"];_libhook_commit_hook=Module["_libhook_commit_hook"]=wasmExports["vf"];_libhook_update_hook=Module["_libhook_update_hook"]=wasmExports["wf"];_libprogress_progress_handler=Module["_libprogress_progress_handler"]=wasmExports["xf"];_libvfs_vfs_register=Module["_libvfs_vfs_register"]=wasmExports["yf"];_emscripten_builtin_memalign=wasmExports["Af"];__emscripten_timeout=wasmExports["Bf"];_setThrew=wasmExports["Cf"];__emscripten_tempret_set=wasmExports["Df"];__emscripten_tempret_get=wasmExports["Ef"];__emscripten_stack_restore=wasmExports["Ff"];__emscripten_stack_alloc=wasmExports["Gf"];_emscripten_stack_get_current=wasmExports["Hf"];___cxa_can_catch=wasmExports["If"];dynCall_iii=dynCalls["iii"]=wasmExports["Jf"];dynCall_viiiii=dynCalls["viiiii"]=wasmExports["Kf"];dynCall_viii=dynCalls["viii"]=wasmExports["Lf"];dynCall_vii=dynCalls["vii"]=wasmExports["Mf"];dynCall_viiii=dynCalls["viiii"]=wasmExports["Nf"];dynCall_vi=dynCalls["vi"]=wasmExports["Of"];dynCall_viiiiij=dynCalls["viiiiij"]=wasmExports["Pf"];dynCall_iiii=dynCalls["iiii"]=wasmExports["Qf"];dynCall_ii=dynCalls["ii"]=wasmExports["Rf"];dynCall_viiiiii=dynCalls["viiiiii"]=wasmExports["Sf"];dynCall_iiiiii=dynCalls["iiiiii"]=wasmExports["Tf"];dynCall_iiiii=dynCalls["iiiii"]=wasmExports["Uf"];dynCall_iiiiiii=dynCalls["iiiiiii"]=wasmExports["Vf"];dynCall_viji=dynCalls["viji"]=wasmExports["Wf"];dynCall_viiiij=dynCalls["viiiij"]=wasmExports["Xf"];dynCall_iij=dynCalls["iij"]=wasmExports["Yf"];dynCall_iiiij=dynCalls["iiiij"]=wasmExports["Zf"];dynCall_v=dynCalls["v"]=wasmExports["_f"];dynCall_iijii=dynCalls["iijii"]=wasmExports["$f"];dynCall_iiji=dynCalls["iiji"]=wasmExports["ag"];dynCall_i=dynCalls["i"]=wasmExports["bg"];dynCall_iiiiiij=dynCalls["iiiiiij"]=wasmExports["cg"];_asyncify_start_unwind=wasmExports["dg"];_asyncify_stop_unwind=wasmExports["eg"];_asyncify_start_rewind=wasmExports["fg"];_asyncify_stop_rewind=wasmExports["gg"];wasmMemory=wasmExports["Fa"];wasmTable=wasmExports["zf"]}var _sqlite3_version=Module["_sqlite3_version"]=60496;var __ZN19treecrdt_sqlite_ext9extension18_TREECRDT_INIT_REF17hab8690d9f9641fe9E=Module["__ZN19treecrdt_sqlite_ext9extension18_TREECRDT_INIT_REF17hab8690d9f9641fe9E"]=89056;var wasmImports={g:___assert_fail,a:___cxa_find_matching_catch_2,qa:___cxa_throw,c:___resumeException,ja:___syscall_chmod,ka:___syscall_faccessat,ia:___syscall_fchmod,ha:___syscall_fchown32,l:___syscall_fcntl64,ga:___syscall_fstat64,H:___syscall_ftruncate64,ba:___syscall_getcwd,ea:___syscall_lstat64,$:___syscall_mkdirat,da:___syscall_newfstatat,Z:___syscall_openat,W:___syscall_readlinkat,V:___syscall_rmdir,fa:___syscall_stat64,S:___syscall_unlinkat,R:___syscall_utimensat,la:__abort_js,Y:__emscripten_runtime_keepalive_clear,F:__localtime_js,D:__mmap_js,E:__munmap_js,O:__setitimer_js,_:__tzset_js,y:_emscripten_date_now,U:_emscripten_get_heap_max,q:_emscripten_get_now,P:_emscripten_resize_heap,na:_environ_get,oa:_environ_sizes_get,z:_fd_close,Q:_fd_fdstat_get,X:_fd_read,G:_fd_seek,ca:_fd_sync,v:_fd_write,k:invoke_ii,f:invoke_iii,j:invoke_iiii,pa:invoke_iiiiii,d:invoke_vi,b:invoke_vii,e:invoke_viii,i:invoke_viiii,h:invoke_viiiii,sa:invoke_viiiiii,J:invoke_viiiiij,I:_ipp,T:_ipp_async,Aa:_ippipppp,Ea:_ippipppp_async,t:_ippp,u:_ippp_async,m:_ipppi,n:_ipppi_async,wa:_ipppiii,xa:_ipppiii_async,ya:_ipppiiip,za:_ipppiiip_async,r:_ipppip,s:_ipppip_async,K:_ipppj,L:_ipppj_async,o:_ipppp,p:_ipppp_async,ua:_ippppi,va:_ippppi_async,M:_ippppij,N:_ippppij_async,A:_ippppip,B:_ippppip_async,Ba:_ipppppip,Ca:_ipppppip_async,ma:_proc_exit,aa:_random_get,Da:_vppippii,C:_vppippii_async,w:_vppp,x:_vppp_async,ra:_vpppip,ta:_vpppip_async};function invoke_iii(index,a1,a2){var sp=stackSave();try{return dynCall_iii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{dynCall_viiiii(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{dynCall_viii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{dynCall_vii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{dynCall_vi(index,a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return dynCall_ii(index,a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_iiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{dynCall_viiiiii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiii(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiij(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{dynCall_viiiiij(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function callMain(){var entryFunction=_main;var argc=0;var argv=0;try{var ret=entryFunction(argc,argv);exitJS(ret,true);return ret}catch(e){return handleException(e)}}function run(){if(runDependencies>0){dependenciesFulfilled=run;return}preRun();if(runDependencies>0){dependenciesFulfilled=run;return}function doRun(){Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();readyPromiseResolve?.(Module);Module["onRuntimeInitialized"]?.();var noInitialRun=Module["noInitialRun"]||false;if(!noInitialRun)callMain();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(()=>{setTimeout(()=>Module["setStatus"](""),1);doRun()},1)}else{doRun()}}var wasmExports;wasmExports=await (createWasm());run();(function(){const AsyncFunction=Object.getPrototypeOf(async function(){}).constructor;let pAsyncFlags=0;Module["set_authorizer"]=function(db,xAuthorizer,pApp){if(pAsyncFlags){Module["deleteCallback"](pAsyncFlags);Module["_sqlite3_free"](pAsyncFlags);pAsyncFlags=0}pAsyncFlags=Module["_sqlite3_malloc"](4);setValue(pAsyncFlags,xAuthorizer instanceof AsyncFunction?1:0,"i32");const result=ccall("libauthorizer_set_authorizer","number",["number","number","number"],[db,xAuthorizer?1:0,pAsyncFlags]);if(!result&&xAuthorizer){Module["setCallback"](pAsyncFlags,(_,iAction,p3,p4,p5,p6)=>xAuthorizer(pApp,iAction,p3,p4,p5,p6))}return result}})();(function(){const AsyncFunction=Object.getPrototypeOf(async function(){}).constructor;const FUNC_METHODS=["xFunc","xStep","xFinal"];const mapFunctionNameToKey=new Map;Module["create_function"]=function(db,zFunctionName,nArg,eTextRep,pApp,xFunc,xStep,xFinal){const pAsyncFlags=Module["_sqlite3_malloc"](4);const target={xFunc,xStep,xFinal};setValue(pAsyncFlags,FUNC_METHODS.reduce((mask,method,i)=>{if(target[method]instanceof AsyncFunction){return mask|1<xUpdateHook(iUpdateType,dbName,tblName,lo32,hi32))}}})();(function(){const AsyncFunction=Object.getPrototypeOf(async function(){}).constructor;let pAsyncFlags=0;Module["commit_hook"]=function(db,xCommitHook){if(pAsyncFlags){Module["deleteCallback"](pAsyncFlags);Module["_sqlite3_free"](pAsyncFlags);pAsyncFlags=0}pAsyncFlags=Module["_sqlite3_malloc"](4);setValue(pAsyncFlags,xCommitHook instanceof AsyncFunction?1:0,"i32");ccall("libhook_commit_hook","void",["number","number","number"],[db,xCommitHook?1:0,pAsyncFlags]);if(xCommitHook){Module["setCallback"](pAsyncFlags,_=>xCommitHook())}}})();(function(){const AsyncFunction=Object.getPrototypeOf(async function(){}).constructor;let pAsyncFlags=0;Module["progress_handler"]=function(db,nOps,xProgress,pApp){if(pAsyncFlags){Module["deleteCallback"](pAsyncFlags);Module["_sqlite3_free"](pAsyncFlags);pAsyncFlags=0}pAsyncFlags=Module["_sqlite3_malloc"](4);setValue(pAsyncFlags,xProgress instanceof AsyncFunction?1:0,"i32");ccall("libprogress_progress_handler","number",["number","number","number","number"],[db,nOps,xProgress?1:0,pAsyncFlags]);if(xProgress){Module["setCallback"](pAsyncFlags,_=>xProgress(pApp))}}})();(function(){const VFS_METHODS=["xOpen","xDelete","xAccess","xFullPathname","xRandomness","xSleep","xCurrentTime","xGetLastError","xCurrentTimeInt64","xClose","xRead","xWrite","xTruncate","xSync","xFileSize","xLock","xUnlock","xCheckReservedLock","xFileControl","xSectorSize","xDeviceCharacteristics","xShmMap","xShmLock","xShmBarrier","xShmUnmap"];const mapVFSNameToKey=new Map;Module["vfs_register"]=function(vfs,makeDefault){let methodMask=0;let asyncMask=0;VFS_METHODS.forEach((method,i)=>{if(vfs[method]){methodMask|=1<{readyPromiseResolve=resolve;readyPromiseReject=reject})} -;return moduleRtn}export default Module; + +var Module = (() => { + var _scriptName = import.meta.url; + + return ( +function(moduleArg = {}) { + var moduleRtn; + +var Module=moduleArg;var readyPromiseResolve,readyPromiseReject;var readyPromise=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary;if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptName){scriptDirectory=_scriptName}if(scriptDirectory.startsWith("blob:")){scriptDirectory=""}else{scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{fetch(url,{credentials:"same-origin"}).then(response=>{if(response.ok){return response.arrayBuffer()}return Promise.reject(new Error(response.status+" : "+response.url))}).then(onload,onerror)}}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var wasmMemory;var ABORT=false;var EXITSTATUS;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b)}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;Module["monitorRunDependencies"]?.(runDependencies)}function removeRunDependency(id){runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){Module["onAbort"]?.(what);what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix="data:application/octet-stream;base64,";var isDataURI=filename=>filename.startsWith(dataURIPrefix);function findWasmBinary(){if(Module["locateFile"]){var f="wa-sqlite-async.wasm";if(!isDataURI(f)){return locateFile(f)}return f}return new URL("wa-sqlite-async.wasm",import.meta.url).href}var wasmBinaryFile;function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}function getBinaryPromise(binaryFile){if(!wasmBinary){return new Promise((resolve,reject)=>{readAsync(binaryFile,response=>resolve(new Uint8Array(response)),error=>{try{resolve(getBinarySync(binaryFile))}catch(e){reject(e)}})})}return Promise.resolve().then(()=>getBinarySync(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>WebAssembly.instantiate(binary,imports)).then(receiver,reason=>{err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)})})}return instantiateArrayBuffer(binaryFile,imports,callback)}function getWasmImports(){return{a:wasmImports}}function createWasm(){var info=getWasmImports();function receiveInstance(instance,module){wasmExports=instance.exports;wasmExports=Asyncify.instrumentWasmExports(wasmExports);wasmMemory=wasmExports["la"];updateMemoryViews();wasmTable=wasmExports["ef"];addOnInit(wasmExports["ma"]);removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);readyPromiseReject(e)}}if(!wasmBinaryFile)wasmBinaryFile=findWasmBinary();instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult).catch(readyPromiseReject);return{}}var tempDouble;var tempI64;function ExitStatus(status){this.name="ExitStatus";this.message=`Program terminated with exit(${status})`;this.status=status}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};function getValue(ptr,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":return HEAP8[ptr];case"i8":return HEAP8[ptr];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":abort("to do getValue(i64) use WASM_BIGINT");case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];case"*":return HEAPU32[ptr>>2];default:abort(`invalid type for getValue: ${type}`)}}var noExitRuntime=Module["noExitRuntime"]||true;function setValue(ptr,value,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":HEAP8[ptr]=value;break;case"i8":HEAP8[ptr]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":abort("to do setValue(i64) use WASM_BIGINT");case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;case"*":HEAPU32[ptr>>2]=value;break;default:abort(`invalid type for setValue: ${type}`)}}var stackRestore=val=>__emscripten_stack_restore(val);var stackSave=()=>_emscripten_stack_get_current();var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;var UTF8ArrayToString=(heapOrArray,idx,maxBytesToRead)=>{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str};var UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):"";var ___assert_fail=(condition,filename,line,func)=>{abort(`Assertion failed: ${UTF8ToString(condition)}, at: `+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"])};var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:(...paths)=>PATH.normalize(paths.join("/")),join2:(l,r)=>PATH.normalize(l+"/"+r)};var initRandomFill=()=>{if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){return view=>crypto.getRandomValues(view)}else abort("initRandomDevice")};var randomFill=view=>(randomFill=initRandomFill())(view);var PATH_FS={resolve:(...args)=>{var resolvedPath="",resolvedAbsolute=false;for(var i=args.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?args[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx};function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(typeof window!="undefined"&&typeof window.prompt=="function"){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:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close(stream){stream.tty.ops.fsync(stream.tty)},fsync(stream){stream.tty.ops.fsync(stream.tty)},read(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}},ioctl_tcgets(tty){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(tty,optional_actions,data){return 0},ioctl_tiocgwinsz(tty){return[24,80]}},default_tty1_ops:{put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};var zeroMemory=(address,size)=>{HEAPU8.fill(0,address,address+size);return address};var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var mmapAlloc=size=>{size=alignMemory(size,65536);var ptr=_emscripten_builtin_memalign(65536,size);if(!ptr)return 0;return zeroMemory(ptr,size)};var MEMFS={ops_table:null,mount(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}MEMFS.ops_table||={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}};var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup(parent,name){throw FS.genericErrors[44]},mknod(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp},unlink(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir(node){var entries=[".",".."];for(var key of Object.keys(node.contents)){entries.push(key)}return entries},symlink(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{var dep=!noRunDep?getUniqueRunDependency(`al ${url}`):"";readAsync(url,arrayBuffer=>{onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},event=>{if(onerror){onerror()}else{throw`Loading data file "${url}" failed.`}});if(dep)addRunDependency(dep)};var FS_createDataFile=(parent,name,fileData,canRead,canWrite,canOwn)=>{FS.createDataFile(parent,name,fileData,canRead,canWrite,canOwn)};var preloadPlugins=Module["preloadPlugins"]||[];var FS_handledByPreloadPlugin=(byteArray,fullname,finish,onerror)=>{if(typeof Browser!="undefined")Browser.init();var handled=false;preloadPlugins.forEach(plugin=>{if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,onerror);handled=true}});return handled};var FS_createPreloadedFile=(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);function processData(byteArray){function finish(byteArray){preFinish?.();if(!dontCreateFile){FS_createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}onload?.();removeRunDependency(dep)}if(FS_handledByPreloadPlugin(byteArray,fullname,finish,()=>{onerror?.();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url,processData,onerror)}else{processData(url)}};var FS_modeStringToFlags=str=>{var flagModes={r:0,"r+":2,w:512|64|1,"w+":512|64|2,a:1024|64|1,"a+":1024|64|2};var flags=flagModes[str];if(typeof flags=="undefined"){throw new Error(`Unknown file open mode: ${str}`)}return flags};var FS_getMode=(canRead,canWrite)=>{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:class{constructor(errno){this.name="ErrnoError";this.errno=errno}},genericErrors:{},filesystems:null,syncFSRequests:0,FSStream:class{constructor(){this.shared={}}get object(){return this.node}set object(val){this.node=val}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(val){this.shared.flags=val}get position(){return this.shared.position}set position(val){this.shared.position=val}},FSNode:class{constructor(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev;this.readMode=292|73;this.writeMode=146}get read(){return(this.mode&this.readMode)===this.readMode}set read(val){val?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(val){val?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return FS.isDir(this.mode)}get isDevice(){return FS.isChrdev(this.mode)}},lookupPath(path,opts={}){path=PATH_FS.resolve(path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?`${mount}/${path}`:mount+path}path=path?`${node.name}/${path}`:node.name;node=node.parent}},hashName(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode(node){FS.hashRemoveNode(node)},isRoot(node){return node===node.parent},isMountpoint(node){return!!node.mounted},isFile(mode){return(mode&61440)===32768},isDir(mode){return(mode&61440)===16384},isLink(mode){return(mode&61440)===40960},isChrdev(mode){return(mode&61440)===8192},isBlkdev(mode){return(mode&61440)===24576},isFIFO(mode){return(mode&61440)===4096},isSocket(mode){return(mode&49152)===49152},flagsToPermissionString(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions(node,perms){if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup(dir){if(!FS.isDir(dir.mode))return 54;var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd(){for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStreamChecked(fd){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}return stream},getStream:fd=>FS.streams[fd],createStream(stream,fd=-1){stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream(fd){FS.streams[fd]=null},dupStream(origStream,fd=-1){var stream=FS.createStream(origStream,fd);stream.stream_ops?.dup?.(stream);return stream},chrdev_stream_ops:{open(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;stream.stream_ops.open?.(stream)},llseek(){throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push(...m.mounts)}return mounts},syncfs(populate,callback){if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup(parent,name){return parent.node_ops.lookup(parent,name)},mknod(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree(path,mode){var dirs=path.split("/");var d="";for(var i=0;iFS.currentPath,chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(randomLeft===0){randomLeft=randomFill(randomBuffer).byteLength}return randomBuffer[--randomLeft]};FS.createDevice("/dev","random",randomByte);FS.createDevice("/dev","urandom",randomByte);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount(){var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup(parent,name){var fd=+name;var stream=FS.getStreamChecked(fd);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams(){if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},staticInit(){[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""});FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={MEMFS:MEMFS}},init(input,output,error){FS.init.initialized=true;Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit(){FS.init.initialized=false;for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]}setDataGetter(getter){this.getter=getter}cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true}get length(){if(!this.lengthKnown){this.cacheLength()}return this._length}get chunkSize(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}if(typeof XMLHttpRequest!="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=(...args)=>{FS.forceLoadFile(node);return fn(...args)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr:ptr,allocated:true}};node.stream_ops=stream_ops;return node}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat(func,path,buf){var stat=func(path);HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=stat.mode;HEAPU32[buf+8>>2]=stat.nlink;HEAP32[buf+12>>2]=stat.uid;HEAP32[buf+16>>2]=stat.gid;HEAP32[buf+20>>2]=stat.rdev;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+24>>2]=tempI64[0],HEAP32[buf+28>>2]=tempI64[1];HEAP32[buf+32>>2]=4096;HEAP32[buf+36>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();tempI64=[Math.floor(atime/1e3)>>>0,(tempDouble=Math.floor(atime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAPU32[buf+48>>2]=atime%1e3*1e3;tempI64=[Math.floor(mtime/1e3)>>>0,(tempDouble=Math.floor(mtime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+56>>2]=tempI64[0],HEAP32[buf+60>>2]=tempI64[1];HEAPU32[buf+64>>2]=mtime%1e3*1e3;tempI64=[Math.floor(ctime/1e3)>>>0,(tempDouble=Math.floor(ctime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+72>>2]=tempI64[0],HEAP32[buf+76>>2]=tempI64[1];HEAPU32[buf+80>>2]=ctime%1e3*1e3;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+88>>2]=tempI64[0],HEAP32[buf+92>>2]=tempI64[1];return 0},doMsync(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},getStreamFromFD(fd){var stream=FS.getStreamChecked(fd);return stream},varargs:undefined,getStr(ptr){var ret=UTF8ToString(ptr);return ret}};function ___syscall_chmod(path,mode){try{path=SYSCALLS.getStr(path);FS.chmod(path,mode);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_faccessat(dirfd,path,amode,flags){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_fchmod(fd,mode){try{FS.fchmod(fd,mode);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_fchown32(fd,owner,group){try{FS.fchown(fd,owner,group);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function 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();stream.flags|=arg;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{var stream=SYSCALLS.getStreamFromFD(fd);return SYSCALLS.doStat(FS.stat,stream.path,buf)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var convertI32PairToI53Checked=(lo,hi)=>hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN;function ___syscall_ftruncate64(fd,length_low,length_high){var length=convertI32PairToI53Checked(length_low,length_high);try{if(isNaN(length))return 61;FS.ftruncate(fd,length);return 0}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(sizeHEAPU32[ptr>>2]+HEAP32[ptr+4>>2]*4294967296;function ___syscall_utimensat(dirfd,path,times,flags){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path,true);if(!times){var atime=Date.now();var mtime=atime}else{var seconds=readI53FromI64(times);var nanoseconds=HEAP32[times+8>>2];atime=seconds*1e3+nanoseconds/(1e3*1e3);times+=16;seconds=readI53FromI64(times);nanoseconds=HEAP32[times+8>>2];mtime=seconds*1e3+nanoseconds/(1e3*1e3)}FS.utime(path,atime,mtime);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var isLeapYear=year=>year%4===0&&(year%100!==0||year%400===0);var MONTH_DAYS_LEAP_CUMULATIVE=[0,31,60,91,121,152,182,213,244,274,305,335];var MONTH_DAYS_REGULAR_CUMULATIVE=[0,31,59,90,120,151,181,212,243,273,304,334];var ydayFromDate=date=>{var leap=isLeapYear(date.getFullYear());var monthDaysCumulative=leap?MONTH_DAYS_LEAP_CUMULATIVE:MONTH_DAYS_REGULAR_CUMULATIVE;var yday=monthDaysCumulative[date.getMonth()]+date.getDate()-1;return yday};function __localtime_js(time_low,time_high,tmPtr){var time=convertI32PairToI53Checked(time_low,time_high);var date=new Date(time*1e3);HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getDay();var yday=ydayFromDate(date)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr+36>>2]=-(date.getTimezoneOffset()*60);var start=new Date(date.getFullYear(),0,1);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dst=(summerOffset!=winterOffset&&date.getTimezoneOffset()==Math.min(winterOffset,summerOffset))|0;HEAP32[tmPtr+32>>2]=dst}function __mmap_js(len,prot,flags,fd,offset_low,offset_high,allocated,addr){var offset=convertI32PairToI53Checked(offset_low,offset_high);try{if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);var res=FS.mmap(stream,len,offset,prot,flags);var ptr=res.ptr;HEAP32[allocated>>2]=res.allocated;HEAPU32[addr>>2]=ptr;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function __munmap_js(addr,len,prot,flags,fd,offset_low,offset_high){var offset=convertI32PairToI53Checked(offset_low,offset_high);try{var stream=SYSCALLS.getStreamFromFD(fd);if(prot&2){SYSCALLS.doMsync(addr,stream,len,flags,offset)}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var __tzset_js=(timezone,daylight,std_name,dst_name)=>{var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);var winterOffset=winter.getTimezoneOffset();var summerOffset=summer.getTimezoneOffset();var stdTimezoneOffset=Math.max(winterOffset,summerOffset);HEAPU32[timezone>>2]=stdTimezoneOffset*60;HEAP32[daylight>>2]=Number(winterOffset!=summerOffset);var extractZone=date=>date.toLocaleTimeString(undefined,{hour12:false,timeZoneName:"short"}).split(" ")[1];var winterName=extractZone(winter);var summerName=extractZone(summer);if(summerOffsetDate.now();var _emscripten_get_now;_emscripten_get_now=()=>performance.now();var getHeapMax=()=>2147483648;var growMemory=size=>{var b=wasmMemory.buffer;var pages=(size-b.byteLength+65535)/65536;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}var alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var ENV={};var getExecutableName=()=>thisProgram||"./this.program";var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:lang,_:getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var stringToAscii=(str,buffer)=>{for(var i=0;i{var bufSize=0;getEnvStrings().forEach((string,i)=>{var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0};var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(string=>bufSize+=string.length+1);HEAPU32[penviron_buf_size>>2]=bufSize;return 0};function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}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;tempI64=[rightsBase>>>0,(tempDouble=rightsBase,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[pbuf+8>>2]=tempI64[0],HEAP32[pbuf+12>>2]=tempI64[1];tempI64=[rightsInheriting>>>0,(tempDouble=rightsInheriting,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[pbuf+16>>2]=tempI64[0],HEAP32[pbuf+20>>2]=tempI64[1];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_low,offset_high,whence,newOffset){var offset=convertI32PairToI53Checked(offset_low,offset_high);try{if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var _fd_sync=function(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);return Asyncify.handleSleep(wakeUp=>{var mount=stream.node.mount;if(!mount.type.syncfs){wakeUp(0);return}mount.type.syncfs(mount,false,err=>{if(err){wakeUp(29);return}wakeUp(0)})})}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}};_fd_sync.isAsync=true;var doWritev=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(typeof offset!="undefined"){offset+=curr}}return ret};function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var adapters_support=function(){const handleAsync=typeof Asyncify==="object"?Asyncify.handleAsync.bind(Asyncify):null;Module["handleAsync"]=handleAsync;const targets=new Map;Module["setCallback"]=(key,target)=>targets.set(key,target);Module["getCallback"]=key=>targets.get(key);Module["deleteCallback"]=key=>targets.delete(key);adapters_support=function(isAsync,key,...args){const receiver=targets.get(key);let methodName=null;const f=typeof receiver==="function"?receiver:receiver[methodName=UTF8ToString(args.shift())];if(isAsync){if(handleAsync){return handleAsync(()=>f.apply(receiver,args))}throw new Error("Synchronous WebAssembly cannot call async function")}const result=f.apply(receiver,args);if(typeof result?.then=="function"){console.error("unexpected Promise",f);throw new Error(`${methodName} unexpectedly returned a Promise`)}return result}};function _ipp(...args){return adapters_support(false,...args)}function _ipp_async(...args){return adapters_support(true,...args)}_ipp_async.isAsync=true;function _ippipppp(...args){return adapters_support(false,...args)}function _ippipppp_async(...args){return adapters_support(true,...args)}_ippipppp_async.isAsync=true;function _ippp(...args){return adapters_support(false,...args)}function _ippp_async(...args){return adapters_support(true,...args)}_ippp_async.isAsync=true;function _ipppi(...args){return adapters_support(false,...args)}function _ipppi_async(...args){return adapters_support(true,...args)}_ipppi_async.isAsync=true;function _ipppiii(...args){return adapters_support(false,...args)}function _ipppiii_async(...args){return adapters_support(true,...args)}_ipppiii_async.isAsync=true;function _ipppiiip(...args){return adapters_support(false,...args)}function _ipppiiip_async(...args){return adapters_support(true,...args)}_ipppiiip_async.isAsync=true;function _ipppip(...args){return adapters_support(false,...args)}function _ipppip_async(...args){return adapters_support(true,...args)}_ipppip_async.isAsync=true;function _ipppj(...args){return adapters_support(false,...args)}function _ipppj_async(...args){return adapters_support(true,...args)}_ipppj_async.isAsync=true;function _ipppp(...args){return adapters_support(false,...args)}function _ipppp_async(...args){return adapters_support(true,...args)}_ipppp_async.isAsync=true;function _ippppi(...args){return adapters_support(false,...args)}function _ippppi_async(...args){return adapters_support(true,...args)}_ippppi_async.isAsync=true;function _ippppij(...args){return adapters_support(false,...args)}function _ippppij_async(...args){return adapters_support(true,...args)}_ippppij_async.isAsync=true;function _ippppip(...args){return adapters_support(false,...args)}function _ippppip_async(...args){return adapters_support(true,...args)}_ippppip_async.isAsync=true;function _ipppppip(...args){return adapters_support(false,...args)}function _ipppppip_async(...args){return adapters_support(true,...args)}_ipppppip_async.isAsync=true;function _vppippii(...args){return adapters_support(false,...args)}function _vppippii_async(...args){return adapters_support(true,...args)}_vppippii_async.isAsync=true;function _vppp(...args){return adapters_support(false,...args)}function _vppp_async(...args){return adapters_support(true,...args)}_vppp_async.isAsync=true;function _vpppip(...args){return adapters_support(false,...args)}function _vpppip_async(...args){return adapters_support(true,...args)}_vpppip_async.isAsync=true;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 handleException=e=>{if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)};var runAndAbortIfError=func=>{try{return func()}catch(e){abort(e)}};var _exit=exitJS;var maybeExit=()=>{if(!keepRuntimeAlive()){try{_exit(EXITSTATUS)}catch(e){handleException(e)}}};var callUserCallback=func=>{if(ABORT){return}try{func();maybeExit()}catch(e){handleException(e)}};var sigToWasmTypes=sig=>{var typeNames={i:"i32",j:"i64",f:"f32",d:"f64",e:"externref",p:"i32"};var type={parameters:[],results:sig[0]=="v"?[]:[typeNames[sig[0]]]};for(var i=1;i{runtimeKeepaliveCounter+=1};var runtimeKeepalivePop=()=>{runtimeKeepaliveCounter-=1};var Asyncify={instrumentWasmImports(imports){var importPattern=/^(ipp|ipp_async|ippp|ippp_async|vppp|vppp_async|ipppj|ipppj_async|ipppi|ipppi_async|ipppp|ipppp_async|ipppip|ipppip_async|vpppip|vpppip_async|ippppi|ippppi_async|ippppij|ippppij_async|ipppiii|ipppiii_async|ippppip|ippppip_async|ippipppp|ippipppp_async|ipppppip|ipppppip_async|ipppiiip|ipppiiip_async|vppippii|vppippii_async|invoke_.*|__asyncjs__.*)$/;for(let[x,original]of Object.entries(imports)){if(typeof original=="function"){let isAsyncifyImport=original.isAsync||importPattern.test(x)}}},instrumentWasmExports(exports){var ret={};for(let[x,original]of Object.entries(exports)){if(typeof original=="function"){ret[x]=(...args)=>{Asyncify.exportCallStack.push(x);try{return original(...args)}finally{if(!ABORT){var y=Asyncify.exportCallStack.pop();Asyncify.maybeStopUnwind()}}}}else{ret[x]=original}}return ret},State:{Normal:0,Unwinding:1,Rewinding:2,Disabled:3},state:0,StackSize:16384,currData:null,handleSleepReturnValue:0,exportCallStack:[],callStackNameToId:{},callStackIdToName:{},callStackId:0,asyncPromiseHandlers:null,sleepCallbacks:[],getCallStackId(funcName){var id=Asyncify.callStackNameToId[funcName];if(id===undefined){id=Asyncify.callStackId++;Asyncify.callStackNameToId[funcName]=id;Asyncify.callStackIdToName[id]=funcName}return id},maybeStopUnwind(){if(Asyncify.currData&&Asyncify.state===Asyncify.State.Unwinding&&Asyncify.exportCallStack.length===0){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(_asyncify_stop_unwind);if(typeof Fibers!="undefined"){Fibers.trampoline()}}},whenDone(){return new Promise((resolve,reject)=>{Asyncify.asyncPromiseHandlers={resolve:resolve,reject:reject}})},allocateData(){var ptr=_malloc(12+Asyncify.StackSize);Asyncify.setDataHeader(ptr,ptr+12,Asyncify.StackSize);Asyncify.setDataRewindFunc(ptr);return ptr},setDataHeader(ptr,stack,stackSize){HEAPU32[ptr>>2]=stack;HEAPU32[ptr+4>>2]=stack+stackSize},setDataRewindFunc(ptr){var bottomOfCallStack=Asyncify.exportCallStack[0];var rewindId=Asyncify.getCallStackId(bottomOfCallStack);HEAP32[ptr+8>>2]=rewindId},getDataRewindFuncName(ptr){var id=HEAP32[ptr+8>>2];var name=Asyncify.callStackIdToName[id];return name},getDataRewindFunc(name){var func=wasmExports[name];return func},doRewind(ptr){var name=Asyncify.getDataRewindFuncName(ptr);var func=Asyncify.getDataRewindFunc(name);return func()},handleSleep(startAsync){if(ABORT)return;if(Asyncify.state===Asyncify.State.Normal){var reachedCallback=false;var reachedAfterCallback=false;startAsync((handleSleepReturnValue=0)=>{if(ABORT)return;Asyncify.handleSleepReturnValue=handleSleepReturnValue;reachedCallback=true;if(!reachedAfterCallback){return}Asyncify.state=Asyncify.State.Rewinding;runAndAbortIfError(()=>_asyncify_start_rewind(Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.resume()}var asyncWasmReturnValue,isError=false;try{asyncWasmReturnValue=Asyncify.doRewind(Asyncify.currData)}catch(err){asyncWasmReturnValue=err;isError=true}var handled=false;if(!Asyncify.currData){var asyncPromiseHandlers=Asyncify.asyncPromiseHandlers;if(asyncPromiseHandlers){Asyncify.asyncPromiseHandlers=null;(isError?asyncPromiseHandlers.reject:asyncPromiseHandlers.resolve)(asyncWasmReturnValue);handled=true}}if(isError&&!handled){throw asyncWasmReturnValue}});reachedAfterCallback=true;if(!reachedCallback){Asyncify.state=Asyncify.State.Unwinding;Asyncify.currData=Asyncify.allocateData();if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.pause()}runAndAbortIfError(()=>_asyncify_start_unwind(Asyncify.currData))}}else if(Asyncify.state===Asyncify.State.Rewinding){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(_asyncify_stop_rewind);_free(Asyncify.currData);Asyncify.currData=null;Asyncify.sleepCallbacks.forEach(callUserCallback)}else{abort(`invalid state: ${Asyncify.state}`)}return Asyncify.handleSleepReturnValue},handleAsync(startAsync){return Asyncify.handleSleep(wakeUp=>{startAsync().then(wakeUp)})}};var uleb128Encode=(n,target)=>{if(n<128){target.push(n)}else{target.push(n%128|128,n>>7)}};var generateFuncType=(sig,target)=>{var sigRet=sig.slice(0,1);var sigParam=sig.slice(1);var typeCodes={i:127,p:127,j:126,f:125,d:124,e:111};target.push(96);uleb128Encode(sigParam.length,target);for(var i=0;i{if(typeof WebAssembly.Function=="function"){return new WebAssembly.Function(sigToWasmTypes(sig),func)}var typeSectionBody=[1];generateFuncType(sig,typeSectionBody);var bytes=[0,97,115,109,1,0,0,0,1];uleb128Encode(typeSectionBody.length,bytes);bytes.push(...typeSectionBody);bytes.push(2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0);var module=new WebAssembly.Module(new Uint8Array(bytes));var instance=new WebAssembly.Instance(module,{e:{f:func}});var wrappedFunc=instance.exports["f"];return wrappedFunc};var wasmTable;var getWasmTableEntry=funcPtr=>wasmTable.get(funcPtr);var updateTableMap=(offset,count)=>{if(functionsInTableMap){for(var i=offset;i{if(!functionsInTableMap){functionsInTableMap=new WeakMap;updateTableMap(0,wasmTable.length)}return functionsInTableMap.get(func)||0};var freeTableIndexes=[];var getEmptyTableSlot=()=>{if(freeTableIndexes.length){return freeTableIndexes.pop()}try{wasmTable.grow(1)}catch(err){if(!(err instanceof RangeError)){throw err}throw"Unable to grow wasm table. Set ALLOW_TABLE_GROWTH."}return wasmTable.length-1};var setWasmTableEntry=(idx,func)=>wasmTable.set(idx,func);var addFunction=(func,sig)=>{var rtn=getFunctionAddress(func);if(rtn){return rtn}var ret=getEmptyTableSlot();try{setWasmTableEntry(ret,func)}catch(err){if(!(err instanceof TypeError)){throw err}var wrapped=convertJsFunctionToWasm(func,sig);setWasmTableEntry(ret,wrapped)}functionsInTableMap.set(func,ret);return ret};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)};var getTempRet0=val=>__emscripten_tempret_get();var stringToUTF16=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr};var stringToUTF32=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr};var AsciiToString=ptr=>{var str="";while(1){var ch=HEAPU8[ptr++];if(!ch)return str;str+=String.fromCharCode(ch)}};var UTF16Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):undefined;var UTF16ToString=(ptr,maxBytesToRead)=>{var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder)return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr));var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str};var UTF32ToString=(ptr,maxBytesToRead)=>{var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str};function intArrayToString(array){var ret=[];for(var i=0;i255){chr&=255}ret.push(String.fromCharCode(chr))}return ret.join("")}FS.createPreloadedFile=FS_createPreloadedFile;FS.staticInit();adapters_support();var wasmImports={a:___assert_fail,Y:___syscall_chmod,$:___syscall_faccessat,Z:___syscall_fchmod,X:___syscall_fchown32,b:___syscall_fcntl64,W:___syscall_fstat64,y:___syscall_ftruncate64,Q:___syscall_getcwd,U:___syscall_lstat64,N:___syscall_mkdirat,S:___syscall_newfstatat,M:___syscall_openat,K:___syscall_readlinkat,J:___syscall_rmdir,V:___syscall_stat64,G:___syscall_unlinkat,F:___syscall_utimensat,w:__localtime_js,u:__mmap_js,v:__munmap_js,H:__tzset_js,n:_emscripten_date_now,m:_emscripten_get_now,D:_emscripten_resize_heap,O:_environ_get,P:_environ_sizes_get,o:_fd_close,E:_fd_fdstat_get,L:_fd_read,x:_fd_seek,R:_fd_sync,I:_fd_write,s:_ipp,t:_ipp_async,ga:_ippipppp,ka:_ippipppp_async,i:_ippp,j:_ippp_async,c:_ipppi,d:_ipppi_async,ca:_ipppiii,da:_ipppiii_async,ea:_ipppiiip,fa:_ipppiiip_async,g:_ipppip,h:_ipppip_async,z:_ipppj,A:_ipppj_async,e:_ipppp,f:_ipppp_async,aa:_ippppi,ba:_ippppi_async,B:_ippppij,C:_ippppij_async,p:_ippppip,q:_ippppip_async,ha:_ipppppip,ia:_ipppppip_async,ja:_vppippii,r:_vppippii_async,k:_vppp,l:_vppp_async,T:_vpppip,_:_vpppip_async};var wasmExports=createWasm();var ___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports["ma"])();var _sqlite3_status64=Module["_sqlite3_status64"]=(a0,a1,a2,a3)=>(_sqlite3_status64=Module["_sqlite3_status64"]=wasmExports["na"])(a0,a1,a2,a3);var _sqlite3_status=Module["_sqlite3_status"]=(a0,a1,a2,a3)=>(_sqlite3_status=Module["_sqlite3_status"]=wasmExports["oa"])(a0,a1,a2,a3);var _sqlite3_msize=Module["_sqlite3_msize"]=a0=>(_sqlite3_msize=Module["_sqlite3_msize"]=wasmExports["pa"])(a0);var _sqlite3_db_status=Module["_sqlite3_db_status"]=(a0,a1,a2,a3,a4)=>(_sqlite3_db_status=Module["_sqlite3_db_status"]=wasmExports["qa"])(a0,a1,a2,a3,a4);var _sqlite3_vfs_find=Module["_sqlite3_vfs_find"]=a0=>(_sqlite3_vfs_find=Module["_sqlite3_vfs_find"]=wasmExports["ra"])(a0);var _sqlite3_vfs_register=Module["_sqlite3_vfs_register"]=(a0,a1)=>(_sqlite3_vfs_register=Module["_sqlite3_vfs_register"]=wasmExports["sa"])(a0,a1);var _sqlite3_vfs_unregister=Module["_sqlite3_vfs_unregister"]=a0=>(_sqlite3_vfs_unregister=Module["_sqlite3_vfs_unregister"]=wasmExports["ta"])(a0);var _sqlite3_release_memory=Module["_sqlite3_release_memory"]=a0=>(_sqlite3_release_memory=Module["_sqlite3_release_memory"]=wasmExports["ua"])(a0);var _sqlite3_soft_heap_limit64=Module["_sqlite3_soft_heap_limit64"]=(a0,a1)=>(_sqlite3_soft_heap_limit64=Module["_sqlite3_soft_heap_limit64"]=wasmExports["va"])(a0,a1);var _sqlite3_memory_used=Module["_sqlite3_memory_used"]=()=>(_sqlite3_memory_used=Module["_sqlite3_memory_used"]=wasmExports["wa"])();var _sqlite3_hard_heap_limit64=Module["_sqlite3_hard_heap_limit64"]=(a0,a1)=>(_sqlite3_hard_heap_limit64=Module["_sqlite3_hard_heap_limit64"]=wasmExports["xa"])(a0,a1);var _sqlite3_memory_highwater=Module["_sqlite3_memory_highwater"]=a0=>(_sqlite3_memory_highwater=Module["_sqlite3_memory_highwater"]=wasmExports["ya"])(a0);var _sqlite3_malloc=Module["_sqlite3_malloc"]=a0=>(_sqlite3_malloc=Module["_sqlite3_malloc"]=wasmExports["za"])(a0);var _sqlite3_malloc64=Module["_sqlite3_malloc64"]=(a0,a1)=>(_sqlite3_malloc64=Module["_sqlite3_malloc64"]=wasmExports["Aa"])(a0,a1);var _sqlite3_free=Module["_sqlite3_free"]=a0=>(_sqlite3_free=Module["_sqlite3_free"]=wasmExports["Ba"])(a0);var _sqlite3_realloc=Module["_sqlite3_realloc"]=(a0,a1)=>(_sqlite3_realloc=Module["_sqlite3_realloc"]=wasmExports["Ca"])(a0,a1);var _sqlite3_realloc64=Module["_sqlite3_realloc64"]=(a0,a1,a2)=>(_sqlite3_realloc64=Module["_sqlite3_realloc64"]=wasmExports["Da"])(a0,a1,a2);var _sqlite3_str_vappendf=Module["_sqlite3_str_vappendf"]=(a0,a1,a2)=>(_sqlite3_str_vappendf=Module["_sqlite3_str_vappendf"]=wasmExports["Ea"])(a0,a1,a2);var _sqlite3_str_append=Module["_sqlite3_str_append"]=(a0,a1,a2)=>(_sqlite3_str_append=Module["_sqlite3_str_append"]=wasmExports["Fa"])(a0,a1,a2);var _sqlite3_str_appendchar=Module["_sqlite3_str_appendchar"]=(a0,a1,a2)=>(_sqlite3_str_appendchar=Module["_sqlite3_str_appendchar"]=wasmExports["Ga"])(a0,a1,a2);var _sqlite3_str_appendall=Module["_sqlite3_str_appendall"]=(a0,a1)=>(_sqlite3_str_appendall=Module["_sqlite3_str_appendall"]=wasmExports["Ha"])(a0,a1);var _sqlite3_str_appendf=Module["_sqlite3_str_appendf"]=(a0,a1,a2)=>(_sqlite3_str_appendf=Module["_sqlite3_str_appendf"]=wasmExports["Ia"])(a0,a1,a2);var _sqlite3_str_finish=Module["_sqlite3_str_finish"]=a0=>(_sqlite3_str_finish=Module["_sqlite3_str_finish"]=wasmExports["Ja"])(a0);var _sqlite3_str_errcode=Module["_sqlite3_str_errcode"]=a0=>(_sqlite3_str_errcode=Module["_sqlite3_str_errcode"]=wasmExports["Ka"])(a0);var _sqlite3_str_length=Module["_sqlite3_str_length"]=a0=>(_sqlite3_str_length=Module["_sqlite3_str_length"]=wasmExports["La"])(a0);var _sqlite3_str_value=Module["_sqlite3_str_value"]=a0=>(_sqlite3_str_value=Module["_sqlite3_str_value"]=wasmExports["Ma"])(a0);var _sqlite3_str_reset=Module["_sqlite3_str_reset"]=a0=>(_sqlite3_str_reset=Module["_sqlite3_str_reset"]=wasmExports["Na"])(a0);var _sqlite3_str_new=Module["_sqlite3_str_new"]=a0=>(_sqlite3_str_new=Module["_sqlite3_str_new"]=wasmExports["Oa"])(a0);var _sqlite3_vmprintf=Module["_sqlite3_vmprintf"]=(a0,a1)=>(_sqlite3_vmprintf=Module["_sqlite3_vmprintf"]=wasmExports["Pa"])(a0,a1);var _sqlite3_mprintf=Module["_sqlite3_mprintf"]=(a0,a1)=>(_sqlite3_mprintf=Module["_sqlite3_mprintf"]=wasmExports["Qa"])(a0,a1);var _sqlite3_vsnprintf=Module["_sqlite3_vsnprintf"]=(a0,a1,a2,a3)=>(_sqlite3_vsnprintf=Module["_sqlite3_vsnprintf"]=wasmExports["Ra"])(a0,a1,a2,a3);var _sqlite3_snprintf=Module["_sqlite3_snprintf"]=(a0,a1,a2,a3)=>(_sqlite3_snprintf=Module["_sqlite3_snprintf"]=wasmExports["Sa"])(a0,a1,a2,a3);var _sqlite3_log=Module["_sqlite3_log"]=(a0,a1,a2)=>(_sqlite3_log=Module["_sqlite3_log"]=wasmExports["Ta"])(a0,a1,a2);var _sqlite3_randomness=Module["_sqlite3_randomness"]=(a0,a1)=>(_sqlite3_randomness=Module["_sqlite3_randomness"]=wasmExports["Ua"])(a0,a1);var _sqlite3_stricmp=Module["_sqlite3_stricmp"]=(a0,a1)=>(_sqlite3_stricmp=Module["_sqlite3_stricmp"]=wasmExports["Va"])(a0,a1);var _sqlite3_strnicmp=Module["_sqlite3_strnicmp"]=(a0,a1,a2)=>(_sqlite3_strnicmp=Module["_sqlite3_strnicmp"]=wasmExports["Wa"])(a0,a1,a2);var _sqlite3_os_init=Module["_sqlite3_os_init"]=()=>(_sqlite3_os_init=Module["_sqlite3_os_init"]=wasmExports["Xa"])();var _sqlite3_os_end=Module["_sqlite3_os_end"]=()=>(_sqlite3_os_end=Module["_sqlite3_os_end"]=wasmExports["Ya"])();var _sqlite3_serialize=Module["_sqlite3_serialize"]=(a0,a1,a2,a3)=>(_sqlite3_serialize=Module["_sqlite3_serialize"]=wasmExports["Za"])(a0,a1,a2,a3);var _sqlite3_prepare_v2=Module["_sqlite3_prepare_v2"]=(a0,a1,a2,a3,a4)=>(_sqlite3_prepare_v2=Module["_sqlite3_prepare_v2"]=wasmExports["_a"])(a0,a1,a2,a3,a4);var _sqlite3_step=Module["_sqlite3_step"]=a0=>(_sqlite3_step=Module["_sqlite3_step"]=wasmExports["$a"])(a0);var _sqlite3_column_int64=Module["_sqlite3_column_int64"]=(a0,a1)=>(_sqlite3_column_int64=Module["_sqlite3_column_int64"]=wasmExports["ab"])(a0,a1);var _sqlite3_reset=Module["_sqlite3_reset"]=a0=>(_sqlite3_reset=Module["_sqlite3_reset"]=wasmExports["bb"])(a0);var _sqlite3_exec=Module["_sqlite3_exec"]=(a0,a1,a2,a3,a4)=>(_sqlite3_exec=Module["_sqlite3_exec"]=wasmExports["cb"])(a0,a1,a2,a3,a4);var _sqlite3_column_int=Module["_sqlite3_column_int"]=(a0,a1)=>(_sqlite3_column_int=Module["_sqlite3_column_int"]=wasmExports["db"])(a0,a1);var _sqlite3_finalize=Module["_sqlite3_finalize"]=a0=>(_sqlite3_finalize=Module["_sqlite3_finalize"]=wasmExports["eb"])(a0);var _sqlite3_deserialize=Module["_sqlite3_deserialize"]=(a0,a1,a2,a3,a4,a5,a6,a7)=>(_sqlite3_deserialize=Module["_sqlite3_deserialize"]=wasmExports["fb"])(a0,a1,a2,a3,a4,a5,a6,a7);var _sqlite3_database_file_object=Module["_sqlite3_database_file_object"]=a0=>(_sqlite3_database_file_object=Module["_sqlite3_database_file_object"]=wasmExports["gb"])(a0);var _sqlite3_backup_init=Module["_sqlite3_backup_init"]=(a0,a1,a2,a3)=>(_sqlite3_backup_init=Module["_sqlite3_backup_init"]=wasmExports["hb"])(a0,a1,a2,a3);var _sqlite3_backup_step=Module["_sqlite3_backup_step"]=(a0,a1)=>(_sqlite3_backup_step=Module["_sqlite3_backup_step"]=wasmExports["ib"])(a0,a1);var _sqlite3_backup_finish=Module["_sqlite3_backup_finish"]=a0=>(_sqlite3_backup_finish=Module["_sqlite3_backup_finish"]=wasmExports["jb"])(a0);var _sqlite3_backup_remaining=Module["_sqlite3_backup_remaining"]=a0=>(_sqlite3_backup_remaining=Module["_sqlite3_backup_remaining"]=wasmExports["kb"])(a0);var _sqlite3_backup_pagecount=Module["_sqlite3_backup_pagecount"]=a0=>(_sqlite3_backup_pagecount=Module["_sqlite3_backup_pagecount"]=wasmExports["lb"])(a0);var _sqlite3_clear_bindings=Module["_sqlite3_clear_bindings"]=a0=>(_sqlite3_clear_bindings=Module["_sqlite3_clear_bindings"]=wasmExports["mb"])(a0);var _sqlite3_value_blob=Module["_sqlite3_value_blob"]=a0=>(_sqlite3_value_blob=Module["_sqlite3_value_blob"]=wasmExports["nb"])(a0);var _sqlite3_value_text=Module["_sqlite3_value_text"]=a0=>(_sqlite3_value_text=Module["_sqlite3_value_text"]=wasmExports["ob"])(a0);var _sqlite3_value_bytes=Module["_sqlite3_value_bytes"]=a0=>(_sqlite3_value_bytes=Module["_sqlite3_value_bytes"]=wasmExports["pb"])(a0);var _sqlite3_value_bytes16=Module["_sqlite3_value_bytes16"]=a0=>(_sqlite3_value_bytes16=Module["_sqlite3_value_bytes16"]=wasmExports["qb"])(a0);var _sqlite3_value_double=Module["_sqlite3_value_double"]=a0=>(_sqlite3_value_double=Module["_sqlite3_value_double"]=wasmExports["rb"])(a0);var _sqlite3_value_int=Module["_sqlite3_value_int"]=a0=>(_sqlite3_value_int=Module["_sqlite3_value_int"]=wasmExports["sb"])(a0);var _sqlite3_value_int64=Module["_sqlite3_value_int64"]=a0=>(_sqlite3_value_int64=Module["_sqlite3_value_int64"]=wasmExports["tb"])(a0);var _sqlite3_value_subtype=Module["_sqlite3_value_subtype"]=a0=>(_sqlite3_value_subtype=Module["_sqlite3_value_subtype"]=wasmExports["ub"])(a0);var _sqlite3_value_pointer=Module["_sqlite3_value_pointer"]=(a0,a1)=>(_sqlite3_value_pointer=Module["_sqlite3_value_pointer"]=wasmExports["vb"])(a0,a1);var _sqlite3_value_text16=Module["_sqlite3_value_text16"]=a0=>(_sqlite3_value_text16=Module["_sqlite3_value_text16"]=wasmExports["wb"])(a0);var _sqlite3_value_text16be=Module["_sqlite3_value_text16be"]=a0=>(_sqlite3_value_text16be=Module["_sqlite3_value_text16be"]=wasmExports["xb"])(a0);var _sqlite3_value_text16le=Module["_sqlite3_value_text16le"]=a0=>(_sqlite3_value_text16le=Module["_sqlite3_value_text16le"]=wasmExports["yb"])(a0);var _sqlite3_value_type=Module["_sqlite3_value_type"]=a0=>(_sqlite3_value_type=Module["_sqlite3_value_type"]=wasmExports["zb"])(a0);var _sqlite3_value_encoding=Module["_sqlite3_value_encoding"]=a0=>(_sqlite3_value_encoding=Module["_sqlite3_value_encoding"]=wasmExports["Ab"])(a0);var _sqlite3_value_nochange=Module["_sqlite3_value_nochange"]=a0=>(_sqlite3_value_nochange=Module["_sqlite3_value_nochange"]=wasmExports["Bb"])(a0);var _sqlite3_value_frombind=Module["_sqlite3_value_frombind"]=a0=>(_sqlite3_value_frombind=Module["_sqlite3_value_frombind"]=wasmExports["Cb"])(a0);var _sqlite3_value_dup=Module["_sqlite3_value_dup"]=a0=>(_sqlite3_value_dup=Module["_sqlite3_value_dup"]=wasmExports["Db"])(a0);var _sqlite3_value_free=Module["_sqlite3_value_free"]=a0=>(_sqlite3_value_free=Module["_sqlite3_value_free"]=wasmExports["Eb"])(a0);var _sqlite3_result_blob=Module["_sqlite3_result_blob"]=(a0,a1,a2,a3)=>(_sqlite3_result_blob=Module["_sqlite3_result_blob"]=wasmExports["Fb"])(a0,a1,a2,a3);var _sqlite3_result_blob64=Module["_sqlite3_result_blob64"]=(a0,a1,a2,a3,a4)=>(_sqlite3_result_blob64=Module["_sqlite3_result_blob64"]=wasmExports["Gb"])(a0,a1,a2,a3,a4);var _sqlite3_result_double=Module["_sqlite3_result_double"]=(a0,a1)=>(_sqlite3_result_double=Module["_sqlite3_result_double"]=wasmExports["Hb"])(a0,a1);var _sqlite3_result_error=Module["_sqlite3_result_error"]=(a0,a1,a2)=>(_sqlite3_result_error=Module["_sqlite3_result_error"]=wasmExports["Ib"])(a0,a1,a2);var _sqlite3_result_error16=Module["_sqlite3_result_error16"]=(a0,a1,a2)=>(_sqlite3_result_error16=Module["_sqlite3_result_error16"]=wasmExports["Jb"])(a0,a1,a2);var _sqlite3_result_int=Module["_sqlite3_result_int"]=(a0,a1)=>(_sqlite3_result_int=Module["_sqlite3_result_int"]=wasmExports["Kb"])(a0,a1);var _sqlite3_result_int64=Module["_sqlite3_result_int64"]=(a0,a1,a2)=>(_sqlite3_result_int64=Module["_sqlite3_result_int64"]=wasmExports["Lb"])(a0,a1,a2);var _sqlite3_result_null=Module["_sqlite3_result_null"]=a0=>(_sqlite3_result_null=Module["_sqlite3_result_null"]=wasmExports["Mb"])(a0);var _sqlite3_result_pointer=Module["_sqlite3_result_pointer"]=(a0,a1,a2,a3)=>(_sqlite3_result_pointer=Module["_sqlite3_result_pointer"]=wasmExports["Nb"])(a0,a1,a2,a3);var _sqlite3_result_subtype=Module["_sqlite3_result_subtype"]=(a0,a1)=>(_sqlite3_result_subtype=Module["_sqlite3_result_subtype"]=wasmExports["Ob"])(a0,a1);var _sqlite3_result_text=Module["_sqlite3_result_text"]=(a0,a1,a2,a3)=>(_sqlite3_result_text=Module["_sqlite3_result_text"]=wasmExports["Pb"])(a0,a1,a2,a3);var _sqlite3_result_text64=Module["_sqlite3_result_text64"]=(a0,a1,a2,a3,a4,a5)=>(_sqlite3_result_text64=Module["_sqlite3_result_text64"]=wasmExports["Qb"])(a0,a1,a2,a3,a4,a5);var _sqlite3_result_text16=Module["_sqlite3_result_text16"]=(a0,a1,a2,a3)=>(_sqlite3_result_text16=Module["_sqlite3_result_text16"]=wasmExports["Rb"])(a0,a1,a2,a3);var _sqlite3_result_text16be=Module["_sqlite3_result_text16be"]=(a0,a1,a2,a3)=>(_sqlite3_result_text16be=Module["_sqlite3_result_text16be"]=wasmExports["Sb"])(a0,a1,a2,a3);var _sqlite3_result_text16le=Module["_sqlite3_result_text16le"]=(a0,a1,a2,a3)=>(_sqlite3_result_text16le=Module["_sqlite3_result_text16le"]=wasmExports["Tb"])(a0,a1,a2,a3);var _sqlite3_result_value=Module["_sqlite3_result_value"]=(a0,a1)=>(_sqlite3_result_value=Module["_sqlite3_result_value"]=wasmExports["Ub"])(a0,a1);var _sqlite3_result_error_toobig=Module["_sqlite3_result_error_toobig"]=a0=>(_sqlite3_result_error_toobig=Module["_sqlite3_result_error_toobig"]=wasmExports["Vb"])(a0);var _sqlite3_result_zeroblob=Module["_sqlite3_result_zeroblob"]=(a0,a1)=>(_sqlite3_result_zeroblob=Module["_sqlite3_result_zeroblob"]=wasmExports["Wb"])(a0,a1);var _sqlite3_result_zeroblob64=Module["_sqlite3_result_zeroblob64"]=(a0,a1,a2)=>(_sqlite3_result_zeroblob64=Module["_sqlite3_result_zeroblob64"]=wasmExports["Xb"])(a0,a1,a2);var _sqlite3_result_error_code=Module["_sqlite3_result_error_code"]=(a0,a1)=>(_sqlite3_result_error_code=Module["_sqlite3_result_error_code"]=wasmExports["Yb"])(a0,a1);var _sqlite3_result_error_nomem=Module["_sqlite3_result_error_nomem"]=a0=>(_sqlite3_result_error_nomem=Module["_sqlite3_result_error_nomem"]=wasmExports["Zb"])(a0);var _sqlite3_user_data=Module["_sqlite3_user_data"]=a0=>(_sqlite3_user_data=Module["_sqlite3_user_data"]=wasmExports["_b"])(a0);var _sqlite3_context_db_handle=Module["_sqlite3_context_db_handle"]=a0=>(_sqlite3_context_db_handle=Module["_sqlite3_context_db_handle"]=wasmExports["$b"])(a0);var _sqlite3_vtab_nochange=Module["_sqlite3_vtab_nochange"]=a0=>(_sqlite3_vtab_nochange=Module["_sqlite3_vtab_nochange"]=wasmExports["ac"])(a0);var _sqlite3_vtab_in_first=Module["_sqlite3_vtab_in_first"]=(a0,a1)=>(_sqlite3_vtab_in_first=Module["_sqlite3_vtab_in_first"]=wasmExports["bc"])(a0,a1);var _sqlite3_vtab_in_next=Module["_sqlite3_vtab_in_next"]=(a0,a1)=>(_sqlite3_vtab_in_next=Module["_sqlite3_vtab_in_next"]=wasmExports["cc"])(a0,a1);var _sqlite3_aggregate_context=Module["_sqlite3_aggregate_context"]=(a0,a1)=>(_sqlite3_aggregate_context=Module["_sqlite3_aggregate_context"]=wasmExports["dc"])(a0,a1);var _sqlite3_get_auxdata=Module["_sqlite3_get_auxdata"]=(a0,a1)=>(_sqlite3_get_auxdata=Module["_sqlite3_get_auxdata"]=wasmExports["ec"])(a0,a1);var _sqlite3_set_auxdata=Module["_sqlite3_set_auxdata"]=(a0,a1,a2,a3)=>(_sqlite3_set_auxdata=Module["_sqlite3_set_auxdata"]=wasmExports["fc"])(a0,a1,a2,a3);var _sqlite3_column_count=Module["_sqlite3_column_count"]=a0=>(_sqlite3_column_count=Module["_sqlite3_column_count"]=wasmExports["gc"])(a0);var _sqlite3_data_count=Module["_sqlite3_data_count"]=a0=>(_sqlite3_data_count=Module["_sqlite3_data_count"]=wasmExports["hc"])(a0);var _sqlite3_column_blob=Module["_sqlite3_column_blob"]=(a0,a1)=>(_sqlite3_column_blob=Module["_sqlite3_column_blob"]=wasmExports["ic"])(a0,a1);var _sqlite3_column_bytes=Module["_sqlite3_column_bytes"]=(a0,a1)=>(_sqlite3_column_bytes=Module["_sqlite3_column_bytes"]=wasmExports["jc"])(a0,a1);var _sqlite3_column_bytes16=Module["_sqlite3_column_bytes16"]=(a0,a1)=>(_sqlite3_column_bytes16=Module["_sqlite3_column_bytes16"]=wasmExports["kc"])(a0,a1);var _sqlite3_column_double=Module["_sqlite3_column_double"]=(a0,a1)=>(_sqlite3_column_double=Module["_sqlite3_column_double"]=wasmExports["lc"])(a0,a1);var _sqlite3_column_text=Module["_sqlite3_column_text"]=(a0,a1)=>(_sqlite3_column_text=Module["_sqlite3_column_text"]=wasmExports["mc"])(a0,a1);var _sqlite3_column_value=Module["_sqlite3_column_value"]=(a0,a1)=>(_sqlite3_column_value=Module["_sqlite3_column_value"]=wasmExports["nc"])(a0,a1);var _sqlite3_column_text16=Module["_sqlite3_column_text16"]=(a0,a1)=>(_sqlite3_column_text16=Module["_sqlite3_column_text16"]=wasmExports["oc"])(a0,a1);var _sqlite3_column_type=Module["_sqlite3_column_type"]=(a0,a1)=>(_sqlite3_column_type=Module["_sqlite3_column_type"]=wasmExports["pc"])(a0,a1);var _sqlite3_column_name=Module["_sqlite3_column_name"]=(a0,a1)=>(_sqlite3_column_name=Module["_sqlite3_column_name"]=wasmExports["qc"])(a0,a1);var _sqlite3_column_name16=Module["_sqlite3_column_name16"]=(a0,a1)=>(_sqlite3_column_name16=Module["_sqlite3_column_name16"]=wasmExports["rc"])(a0,a1);var _sqlite3_bind_blob=Module["_sqlite3_bind_blob"]=(a0,a1,a2,a3,a4)=>(_sqlite3_bind_blob=Module["_sqlite3_bind_blob"]=wasmExports["sc"])(a0,a1,a2,a3,a4);var _sqlite3_bind_blob64=Module["_sqlite3_bind_blob64"]=(a0,a1,a2,a3,a4,a5)=>(_sqlite3_bind_blob64=Module["_sqlite3_bind_blob64"]=wasmExports["tc"])(a0,a1,a2,a3,a4,a5);var _sqlite3_bind_double=Module["_sqlite3_bind_double"]=(a0,a1,a2)=>(_sqlite3_bind_double=Module["_sqlite3_bind_double"]=wasmExports["uc"])(a0,a1,a2);var _sqlite3_bind_int=Module["_sqlite3_bind_int"]=(a0,a1,a2)=>(_sqlite3_bind_int=Module["_sqlite3_bind_int"]=wasmExports["vc"])(a0,a1,a2);var _sqlite3_bind_int64=Module["_sqlite3_bind_int64"]=(a0,a1,a2,a3)=>(_sqlite3_bind_int64=Module["_sqlite3_bind_int64"]=wasmExports["wc"])(a0,a1,a2,a3);var _sqlite3_bind_null=Module["_sqlite3_bind_null"]=(a0,a1)=>(_sqlite3_bind_null=Module["_sqlite3_bind_null"]=wasmExports["xc"])(a0,a1);var _sqlite3_bind_pointer=Module["_sqlite3_bind_pointer"]=(a0,a1,a2,a3,a4)=>(_sqlite3_bind_pointer=Module["_sqlite3_bind_pointer"]=wasmExports["yc"])(a0,a1,a2,a3,a4);var _sqlite3_bind_text=Module["_sqlite3_bind_text"]=(a0,a1,a2,a3,a4)=>(_sqlite3_bind_text=Module["_sqlite3_bind_text"]=wasmExports["zc"])(a0,a1,a2,a3,a4);var _sqlite3_bind_text64=Module["_sqlite3_bind_text64"]=(a0,a1,a2,a3,a4,a5,a6)=>(_sqlite3_bind_text64=Module["_sqlite3_bind_text64"]=wasmExports["Ac"])(a0,a1,a2,a3,a4,a5,a6);var _sqlite3_bind_text16=Module["_sqlite3_bind_text16"]=(a0,a1,a2,a3,a4)=>(_sqlite3_bind_text16=Module["_sqlite3_bind_text16"]=wasmExports["Bc"])(a0,a1,a2,a3,a4);var _sqlite3_bind_value=Module["_sqlite3_bind_value"]=(a0,a1,a2)=>(_sqlite3_bind_value=Module["_sqlite3_bind_value"]=wasmExports["Cc"])(a0,a1,a2);var _sqlite3_bind_zeroblob=Module["_sqlite3_bind_zeroblob"]=(a0,a1,a2)=>(_sqlite3_bind_zeroblob=Module["_sqlite3_bind_zeroblob"]=wasmExports["Dc"])(a0,a1,a2);var _sqlite3_bind_zeroblob64=Module["_sqlite3_bind_zeroblob64"]=(a0,a1,a2,a3)=>(_sqlite3_bind_zeroblob64=Module["_sqlite3_bind_zeroblob64"]=wasmExports["Ec"])(a0,a1,a2,a3);var _sqlite3_bind_parameter_count=Module["_sqlite3_bind_parameter_count"]=a0=>(_sqlite3_bind_parameter_count=Module["_sqlite3_bind_parameter_count"]=wasmExports["Fc"])(a0);var _sqlite3_bind_parameter_name=Module["_sqlite3_bind_parameter_name"]=(a0,a1)=>(_sqlite3_bind_parameter_name=Module["_sqlite3_bind_parameter_name"]=wasmExports["Gc"])(a0,a1);var _sqlite3_bind_parameter_index=Module["_sqlite3_bind_parameter_index"]=(a0,a1)=>(_sqlite3_bind_parameter_index=Module["_sqlite3_bind_parameter_index"]=wasmExports["Hc"])(a0,a1);var _sqlite3_db_handle=Module["_sqlite3_db_handle"]=a0=>(_sqlite3_db_handle=Module["_sqlite3_db_handle"]=wasmExports["Ic"])(a0);var _sqlite3_stmt_readonly=Module["_sqlite3_stmt_readonly"]=a0=>(_sqlite3_stmt_readonly=Module["_sqlite3_stmt_readonly"]=wasmExports["Jc"])(a0);var _sqlite3_stmt_isexplain=Module["_sqlite3_stmt_isexplain"]=a0=>(_sqlite3_stmt_isexplain=Module["_sqlite3_stmt_isexplain"]=wasmExports["Kc"])(a0);var _sqlite3_stmt_explain=Module["_sqlite3_stmt_explain"]=(a0,a1)=>(_sqlite3_stmt_explain=Module["_sqlite3_stmt_explain"]=wasmExports["Lc"])(a0,a1);var _sqlite3_stmt_busy=Module["_sqlite3_stmt_busy"]=a0=>(_sqlite3_stmt_busy=Module["_sqlite3_stmt_busy"]=wasmExports["Mc"])(a0);var _sqlite3_next_stmt=Module["_sqlite3_next_stmt"]=(a0,a1)=>(_sqlite3_next_stmt=Module["_sqlite3_next_stmt"]=wasmExports["Nc"])(a0,a1);var _sqlite3_stmt_status=Module["_sqlite3_stmt_status"]=(a0,a1,a2)=>(_sqlite3_stmt_status=Module["_sqlite3_stmt_status"]=wasmExports["Oc"])(a0,a1,a2);var _sqlite3_sql=Module["_sqlite3_sql"]=a0=>(_sqlite3_sql=Module["_sqlite3_sql"]=wasmExports["Pc"])(a0);var _sqlite3_expanded_sql=Module["_sqlite3_expanded_sql"]=a0=>(_sqlite3_expanded_sql=Module["_sqlite3_expanded_sql"]=wasmExports["Qc"])(a0);var _sqlite3_value_numeric_type=Module["_sqlite3_value_numeric_type"]=a0=>(_sqlite3_value_numeric_type=Module["_sqlite3_value_numeric_type"]=wasmExports["Rc"])(a0);var _sqlite3_blob_open=Module["_sqlite3_blob_open"]=(a0,a1,a2,a3,a4,a5,a6,a7)=>(_sqlite3_blob_open=Module["_sqlite3_blob_open"]=wasmExports["Sc"])(a0,a1,a2,a3,a4,a5,a6,a7);var _sqlite3_blob_close=Module["_sqlite3_blob_close"]=a0=>(_sqlite3_blob_close=Module["_sqlite3_blob_close"]=wasmExports["Tc"])(a0);var _sqlite3_blob_read=Module["_sqlite3_blob_read"]=(a0,a1,a2,a3)=>(_sqlite3_blob_read=Module["_sqlite3_blob_read"]=wasmExports["Uc"])(a0,a1,a2,a3);var _sqlite3_blob_write=Module["_sqlite3_blob_write"]=(a0,a1,a2,a3)=>(_sqlite3_blob_write=Module["_sqlite3_blob_write"]=wasmExports["Vc"])(a0,a1,a2,a3);var _sqlite3_blob_bytes=Module["_sqlite3_blob_bytes"]=a0=>(_sqlite3_blob_bytes=Module["_sqlite3_blob_bytes"]=wasmExports["Wc"])(a0);var _sqlite3_blob_reopen=Module["_sqlite3_blob_reopen"]=(a0,a1,a2)=>(_sqlite3_blob_reopen=Module["_sqlite3_blob_reopen"]=wasmExports["Xc"])(a0,a1,a2);var _sqlite3_set_authorizer=Module["_sqlite3_set_authorizer"]=(a0,a1,a2)=>(_sqlite3_set_authorizer=Module["_sqlite3_set_authorizer"]=wasmExports["Yc"])(a0,a1,a2);var _sqlite3_strglob=Module["_sqlite3_strglob"]=(a0,a1)=>(_sqlite3_strglob=Module["_sqlite3_strglob"]=wasmExports["Zc"])(a0,a1);var _sqlite3_strlike=Module["_sqlite3_strlike"]=(a0,a1,a2)=>(_sqlite3_strlike=Module["_sqlite3_strlike"]=wasmExports["_c"])(a0,a1,a2);var _sqlite3_errmsg=Module["_sqlite3_errmsg"]=a0=>(_sqlite3_errmsg=Module["_sqlite3_errmsg"]=wasmExports["$c"])(a0);var _sqlite3_auto_extension=Module["_sqlite3_auto_extension"]=a0=>(_sqlite3_auto_extension=Module["_sqlite3_auto_extension"]=wasmExports["ad"])(a0);var _sqlite3_cancel_auto_extension=Module["_sqlite3_cancel_auto_extension"]=a0=>(_sqlite3_cancel_auto_extension=Module["_sqlite3_cancel_auto_extension"]=wasmExports["bd"])(a0);var _sqlite3_reset_auto_extension=Module["_sqlite3_reset_auto_extension"]=()=>(_sqlite3_reset_auto_extension=Module["_sqlite3_reset_auto_extension"]=wasmExports["cd"])();var _sqlite3_prepare=Module["_sqlite3_prepare"]=(a0,a1,a2,a3,a4)=>(_sqlite3_prepare=Module["_sqlite3_prepare"]=wasmExports["dd"])(a0,a1,a2,a3,a4);var _sqlite3_prepare_v3=Module["_sqlite3_prepare_v3"]=(a0,a1,a2,a3,a4,a5)=>(_sqlite3_prepare_v3=Module["_sqlite3_prepare_v3"]=wasmExports["ed"])(a0,a1,a2,a3,a4,a5);var _sqlite3_prepare16=Module["_sqlite3_prepare16"]=(a0,a1,a2,a3,a4)=>(_sqlite3_prepare16=Module["_sqlite3_prepare16"]=wasmExports["fd"])(a0,a1,a2,a3,a4);var _sqlite3_prepare16_v2=Module["_sqlite3_prepare16_v2"]=(a0,a1,a2,a3,a4)=>(_sqlite3_prepare16_v2=Module["_sqlite3_prepare16_v2"]=wasmExports["gd"])(a0,a1,a2,a3,a4);var _sqlite3_prepare16_v3=Module["_sqlite3_prepare16_v3"]=(a0,a1,a2,a3,a4,a5)=>(_sqlite3_prepare16_v3=Module["_sqlite3_prepare16_v3"]=wasmExports["hd"])(a0,a1,a2,a3,a4,a5);var _sqlite3_get_table=Module["_sqlite3_get_table"]=(a0,a1,a2,a3,a4,a5)=>(_sqlite3_get_table=Module["_sqlite3_get_table"]=wasmExports["id"])(a0,a1,a2,a3,a4,a5);var _sqlite3_free_table=Module["_sqlite3_free_table"]=a0=>(_sqlite3_free_table=Module["_sqlite3_free_table"]=wasmExports["jd"])(a0);var _sqlite3_create_module=Module["_sqlite3_create_module"]=(a0,a1,a2,a3)=>(_sqlite3_create_module=Module["_sqlite3_create_module"]=wasmExports["kd"])(a0,a1,a2,a3);var _sqlite3_create_module_v2=Module["_sqlite3_create_module_v2"]=(a0,a1,a2,a3,a4)=>(_sqlite3_create_module_v2=Module["_sqlite3_create_module_v2"]=wasmExports["ld"])(a0,a1,a2,a3,a4);var _sqlite3_drop_modules=Module["_sqlite3_drop_modules"]=(a0,a1)=>(_sqlite3_drop_modules=Module["_sqlite3_drop_modules"]=wasmExports["md"])(a0,a1);var _sqlite3_declare_vtab=Module["_sqlite3_declare_vtab"]=(a0,a1)=>(_sqlite3_declare_vtab=Module["_sqlite3_declare_vtab"]=wasmExports["nd"])(a0,a1);var _sqlite3_vtab_on_conflict=Module["_sqlite3_vtab_on_conflict"]=a0=>(_sqlite3_vtab_on_conflict=Module["_sqlite3_vtab_on_conflict"]=wasmExports["od"])(a0);var _sqlite3_vtab_config=Module["_sqlite3_vtab_config"]=(a0,a1,a2)=>(_sqlite3_vtab_config=Module["_sqlite3_vtab_config"]=wasmExports["pd"])(a0,a1,a2);var _sqlite3_vtab_collation=Module["_sqlite3_vtab_collation"]=(a0,a1)=>(_sqlite3_vtab_collation=Module["_sqlite3_vtab_collation"]=wasmExports["qd"])(a0,a1);var _sqlite3_vtab_in=Module["_sqlite3_vtab_in"]=(a0,a1,a2)=>(_sqlite3_vtab_in=Module["_sqlite3_vtab_in"]=wasmExports["rd"])(a0,a1,a2);var _sqlite3_vtab_rhs_value=Module["_sqlite3_vtab_rhs_value"]=(a0,a1,a2)=>(_sqlite3_vtab_rhs_value=Module["_sqlite3_vtab_rhs_value"]=wasmExports["sd"])(a0,a1,a2);var _sqlite3_vtab_distinct=Module["_sqlite3_vtab_distinct"]=a0=>(_sqlite3_vtab_distinct=Module["_sqlite3_vtab_distinct"]=wasmExports["td"])(a0);var _sqlite3_keyword_name=Module["_sqlite3_keyword_name"]=(a0,a1,a2)=>(_sqlite3_keyword_name=Module["_sqlite3_keyword_name"]=wasmExports["ud"])(a0,a1,a2);var _sqlite3_keyword_count=Module["_sqlite3_keyword_count"]=()=>(_sqlite3_keyword_count=Module["_sqlite3_keyword_count"]=wasmExports["vd"])();var _sqlite3_keyword_check=Module["_sqlite3_keyword_check"]=(a0,a1)=>(_sqlite3_keyword_check=Module["_sqlite3_keyword_check"]=wasmExports["wd"])(a0,a1);var _sqlite3_complete=Module["_sqlite3_complete"]=a0=>(_sqlite3_complete=Module["_sqlite3_complete"]=wasmExports["xd"])(a0);var _sqlite3_complete16=Module["_sqlite3_complete16"]=a0=>(_sqlite3_complete16=Module["_sqlite3_complete16"]=wasmExports["yd"])(a0);var _sqlite3_libversion=Module["_sqlite3_libversion"]=()=>(_sqlite3_libversion=Module["_sqlite3_libversion"]=wasmExports["zd"])();var _sqlite3_libversion_number=Module["_sqlite3_libversion_number"]=()=>(_sqlite3_libversion_number=Module["_sqlite3_libversion_number"]=wasmExports["Ad"])();var _sqlite3_threadsafe=Module["_sqlite3_threadsafe"]=()=>(_sqlite3_threadsafe=Module["_sqlite3_threadsafe"]=wasmExports["Bd"])();var _sqlite3_initialize=Module["_sqlite3_initialize"]=()=>(_sqlite3_initialize=Module["_sqlite3_initialize"]=wasmExports["Cd"])();var _sqlite3_shutdown=Module["_sqlite3_shutdown"]=()=>(_sqlite3_shutdown=Module["_sqlite3_shutdown"]=wasmExports["Dd"])();var _sqlite3_config=Module["_sqlite3_config"]=(a0,a1)=>(_sqlite3_config=Module["_sqlite3_config"]=wasmExports["Ed"])(a0,a1);var _sqlite3_db_mutex=Module["_sqlite3_db_mutex"]=a0=>(_sqlite3_db_mutex=Module["_sqlite3_db_mutex"]=wasmExports["Fd"])(a0);var _sqlite3_db_release_memory=Module["_sqlite3_db_release_memory"]=a0=>(_sqlite3_db_release_memory=Module["_sqlite3_db_release_memory"]=wasmExports["Gd"])(a0);var _sqlite3_db_cacheflush=Module["_sqlite3_db_cacheflush"]=a0=>(_sqlite3_db_cacheflush=Module["_sqlite3_db_cacheflush"]=wasmExports["Hd"])(a0);var _sqlite3_db_config=Module["_sqlite3_db_config"]=(a0,a1,a2)=>(_sqlite3_db_config=Module["_sqlite3_db_config"]=wasmExports["Id"])(a0,a1,a2);var _sqlite3_last_insert_rowid=Module["_sqlite3_last_insert_rowid"]=a0=>(_sqlite3_last_insert_rowid=Module["_sqlite3_last_insert_rowid"]=wasmExports["Jd"])(a0);var _sqlite3_set_last_insert_rowid=Module["_sqlite3_set_last_insert_rowid"]=(a0,a1,a2)=>(_sqlite3_set_last_insert_rowid=Module["_sqlite3_set_last_insert_rowid"]=wasmExports["Kd"])(a0,a1,a2);var _sqlite3_changes64=Module["_sqlite3_changes64"]=a0=>(_sqlite3_changes64=Module["_sqlite3_changes64"]=wasmExports["Ld"])(a0);var _sqlite3_changes=Module["_sqlite3_changes"]=a0=>(_sqlite3_changes=Module["_sqlite3_changes"]=wasmExports["Md"])(a0);var _sqlite3_total_changes64=Module["_sqlite3_total_changes64"]=a0=>(_sqlite3_total_changes64=Module["_sqlite3_total_changes64"]=wasmExports["Nd"])(a0);var _sqlite3_total_changes=Module["_sqlite3_total_changes"]=a0=>(_sqlite3_total_changes=Module["_sqlite3_total_changes"]=wasmExports["Od"])(a0);var _sqlite3_txn_state=Module["_sqlite3_txn_state"]=(a0,a1)=>(_sqlite3_txn_state=Module["_sqlite3_txn_state"]=wasmExports["Pd"])(a0,a1);var _sqlite3_close=Module["_sqlite3_close"]=a0=>(_sqlite3_close=Module["_sqlite3_close"]=wasmExports["Qd"])(a0);var _sqlite3_close_v2=Module["_sqlite3_close_v2"]=a0=>(_sqlite3_close_v2=Module["_sqlite3_close_v2"]=wasmExports["Rd"])(a0);var _sqlite3_busy_handler=Module["_sqlite3_busy_handler"]=(a0,a1,a2)=>(_sqlite3_busy_handler=Module["_sqlite3_busy_handler"]=wasmExports["Sd"])(a0,a1,a2);var _sqlite3_progress_handler=Module["_sqlite3_progress_handler"]=(a0,a1,a2,a3)=>(_sqlite3_progress_handler=Module["_sqlite3_progress_handler"]=wasmExports["Td"])(a0,a1,a2,a3);var _sqlite3_busy_timeout=Module["_sqlite3_busy_timeout"]=(a0,a1)=>(_sqlite3_busy_timeout=Module["_sqlite3_busy_timeout"]=wasmExports["Ud"])(a0,a1);var _sqlite3_interrupt=Module["_sqlite3_interrupt"]=a0=>(_sqlite3_interrupt=Module["_sqlite3_interrupt"]=wasmExports["Vd"])(a0);var _sqlite3_is_interrupted=Module["_sqlite3_is_interrupted"]=a0=>(_sqlite3_is_interrupted=Module["_sqlite3_is_interrupted"]=wasmExports["Wd"])(a0);var _sqlite3_create_function=Module["_sqlite3_create_function"]=(a0,a1,a2,a3,a4,a5,a6,a7)=>(_sqlite3_create_function=Module["_sqlite3_create_function"]=wasmExports["Xd"])(a0,a1,a2,a3,a4,a5,a6,a7);var _sqlite3_create_function_v2=Module["_sqlite3_create_function_v2"]=(a0,a1,a2,a3,a4,a5,a6,a7,a8)=>(_sqlite3_create_function_v2=Module["_sqlite3_create_function_v2"]=wasmExports["Yd"])(a0,a1,a2,a3,a4,a5,a6,a7,a8);var _sqlite3_create_window_function=Module["_sqlite3_create_window_function"]=(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9)=>(_sqlite3_create_window_function=Module["_sqlite3_create_window_function"]=wasmExports["Zd"])(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9);var _sqlite3_create_function16=Module["_sqlite3_create_function16"]=(a0,a1,a2,a3,a4,a5,a6,a7)=>(_sqlite3_create_function16=Module["_sqlite3_create_function16"]=wasmExports["_d"])(a0,a1,a2,a3,a4,a5,a6,a7);var _sqlite3_overload_function=Module["_sqlite3_overload_function"]=(a0,a1,a2)=>(_sqlite3_overload_function=Module["_sqlite3_overload_function"]=wasmExports["$d"])(a0,a1,a2);var _sqlite3_trace_v2=Module["_sqlite3_trace_v2"]=(a0,a1,a2,a3)=>(_sqlite3_trace_v2=Module["_sqlite3_trace_v2"]=wasmExports["ae"])(a0,a1,a2,a3);var _sqlite3_commit_hook=Module["_sqlite3_commit_hook"]=(a0,a1,a2)=>(_sqlite3_commit_hook=Module["_sqlite3_commit_hook"]=wasmExports["be"])(a0,a1,a2);var _sqlite3_update_hook=Module["_sqlite3_update_hook"]=(a0,a1,a2)=>(_sqlite3_update_hook=Module["_sqlite3_update_hook"]=wasmExports["ce"])(a0,a1,a2);var _sqlite3_rollback_hook=Module["_sqlite3_rollback_hook"]=(a0,a1,a2)=>(_sqlite3_rollback_hook=Module["_sqlite3_rollback_hook"]=wasmExports["de"])(a0,a1,a2);var _sqlite3_autovacuum_pages=Module["_sqlite3_autovacuum_pages"]=(a0,a1,a2,a3)=>(_sqlite3_autovacuum_pages=Module["_sqlite3_autovacuum_pages"]=wasmExports["ee"])(a0,a1,a2,a3);var _sqlite3_wal_autocheckpoint=Module["_sqlite3_wal_autocheckpoint"]=(a0,a1)=>(_sqlite3_wal_autocheckpoint=Module["_sqlite3_wal_autocheckpoint"]=wasmExports["fe"])(a0,a1);var _sqlite3_wal_hook=Module["_sqlite3_wal_hook"]=(a0,a1,a2)=>(_sqlite3_wal_hook=Module["_sqlite3_wal_hook"]=wasmExports["ge"])(a0,a1,a2);var _sqlite3_wal_checkpoint_v2=Module["_sqlite3_wal_checkpoint_v2"]=(a0,a1,a2,a3,a4)=>(_sqlite3_wal_checkpoint_v2=Module["_sqlite3_wal_checkpoint_v2"]=wasmExports["he"])(a0,a1,a2,a3,a4);var _sqlite3_wal_checkpoint=Module["_sqlite3_wal_checkpoint"]=(a0,a1)=>(_sqlite3_wal_checkpoint=Module["_sqlite3_wal_checkpoint"]=wasmExports["ie"])(a0,a1);var _sqlite3_error_offset=Module["_sqlite3_error_offset"]=a0=>(_sqlite3_error_offset=Module["_sqlite3_error_offset"]=wasmExports["je"])(a0);var _sqlite3_errmsg16=Module["_sqlite3_errmsg16"]=a0=>(_sqlite3_errmsg16=Module["_sqlite3_errmsg16"]=wasmExports["ke"])(a0);var _sqlite3_errcode=Module["_sqlite3_errcode"]=a0=>(_sqlite3_errcode=Module["_sqlite3_errcode"]=wasmExports["le"])(a0);var _sqlite3_extended_errcode=Module["_sqlite3_extended_errcode"]=a0=>(_sqlite3_extended_errcode=Module["_sqlite3_extended_errcode"]=wasmExports["me"])(a0);var _sqlite3_system_errno=Module["_sqlite3_system_errno"]=a0=>(_sqlite3_system_errno=Module["_sqlite3_system_errno"]=wasmExports["ne"])(a0);var _sqlite3_errstr=Module["_sqlite3_errstr"]=a0=>(_sqlite3_errstr=Module["_sqlite3_errstr"]=wasmExports["oe"])(a0);var _sqlite3_limit=Module["_sqlite3_limit"]=(a0,a1,a2)=>(_sqlite3_limit=Module["_sqlite3_limit"]=wasmExports["pe"])(a0,a1,a2);var _sqlite3_open=Module["_sqlite3_open"]=(a0,a1)=>(_sqlite3_open=Module["_sqlite3_open"]=wasmExports["qe"])(a0,a1);var _sqlite3_open_v2=Module["_sqlite3_open_v2"]=(a0,a1,a2,a3)=>(_sqlite3_open_v2=Module["_sqlite3_open_v2"]=wasmExports["re"])(a0,a1,a2,a3);var _sqlite3_open16=Module["_sqlite3_open16"]=(a0,a1)=>(_sqlite3_open16=Module["_sqlite3_open16"]=wasmExports["se"])(a0,a1);var _sqlite3_create_collation=Module["_sqlite3_create_collation"]=(a0,a1,a2,a3,a4)=>(_sqlite3_create_collation=Module["_sqlite3_create_collation"]=wasmExports["te"])(a0,a1,a2,a3,a4);var _sqlite3_create_collation_v2=Module["_sqlite3_create_collation_v2"]=(a0,a1,a2,a3,a4,a5)=>(_sqlite3_create_collation_v2=Module["_sqlite3_create_collation_v2"]=wasmExports["ue"])(a0,a1,a2,a3,a4,a5);var _sqlite3_create_collation16=Module["_sqlite3_create_collation16"]=(a0,a1,a2,a3,a4)=>(_sqlite3_create_collation16=Module["_sqlite3_create_collation16"]=wasmExports["ve"])(a0,a1,a2,a3,a4);var _sqlite3_collation_needed=Module["_sqlite3_collation_needed"]=(a0,a1,a2)=>(_sqlite3_collation_needed=Module["_sqlite3_collation_needed"]=wasmExports["we"])(a0,a1,a2);var _sqlite3_collation_needed16=Module["_sqlite3_collation_needed16"]=(a0,a1,a2)=>(_sqlite3_collation_needed16=Module["_sqlite3_collation_needed16"]=wasmExports["xe"])(a0,a1,a2);var _sqlite3_get_clientdata=Module["_sqlite3_get_clientdata"]=(a0,a1)=>(_sqlite3_get_clientdata=Module["_sqlite3_get_clientdata"]=wasmExports["ye"])(a0,a1);var _sqlite3_set_clientdata=Module["_sqlite3_set_clientdata"]=(a0,a1,a2,a3)=>(_sqlite3_set_clientdata=Module["_sqlite3_set_clientdata"]=wasmExports["ze"])(a0,a1,a2,a3);var _sqlite3_get_autocommit=Module["_sqlite3_get_autocommit"]=a0=>(_sqlite3_get_autocommit=Module["_sqlite3_get_autocommit"]=wasmExports["Ae"])(a0);var _sqlite3_table_column_metadata=Module["_sqlite3_table_column_metadata"]=(a0,a1,a2,a3,a4,a5,a6,a7,a8)=>(_sqlite3_table_column_metadata=Module["_sqlite3_table_column_metadata"]=wasmExports["Be"])(a0,a1,a2,a3,a4,a5,a6,a7,a8);var _sqlite3_sleep=Module["_sqlite3_sleep"]=a0=>(_sqlite3_sleep=Module["_sqlite3_sleep"]=wasmExports["Ce"])(a0);var _sqlite3_extended_result_codes=Module["_sqlite3_extended_result_codes"]=(a0,a1)=>(_sqlite3_extended_result_codes=Module["_sqlite3_extended_result_codes"]=wasmExports["De"])(a0,a1);var _sqlite3_file_control=Module["_sqlite3_file_control"]=(a0,a1,a2,a3)=>(_sqlite3_file_control=Module["_sqlite3_file_control"]=wasmExports["Ee"])(a0,a1,a2,a3);var _sqlite3_test_control=Module["_sqlite3_test_control"]=(a0,a1)=>(_sqlite3_test_control=Module["_sqlite3_test_control"]=wasmExports["Fe"])(a0,a1);var _sqlite3_create_filename=Module["_sqlite3_create_filename"]=(a0,a1,a2,a3,a4)=>(_sqlite3_create_filename=Module["_sqlite3_create_filename"]=wasmExports["Ge"])(a0,a1,a2,a3,a4);var _sqlite3_free_filename=Module["_sqlite3_free_filename"]=a0=>(_sqlite3_free_filename=Module["_sqlite3_free_filename"]=wasmExports["He"])(a0);var _sqlite3_uri_parameter=Module["_sqlite3_uri_parameter"]=(a0,a1)=>(_sqlite3_uri_parameter=Module["_sqlite3_uri_parameter"]=wasmExports["Ie"])(a0,a1);var _sqlite3_uri_key=Module["_sqlite3_uri_key"]=(a0,a1)=>(_sqlite3_uri_key=Module["_sqlite3_uri_key"]=wasmExports["Je"])(a0,a1);var _sqlite3_uri_boolean=Module["_sqlite3_uri_boolean"]=(a0,a1,a2)=>(_sqlite3_uri_boolean=Module["_sqlite3_uri_boolean"]=wasmExports["Ke"])(a0,a1,a2);var _sqlite3_uri_int64=Module["_sqlite3_uri_int64"]=(a0,a1,a2,a3)=>(_sqlite3_uri_int64=Module["_sqlite3_uri_int64"]=wasmExports["Le"])(a0,a1,a2,a3);var _sqlite3_filename_database=Module["_sqlite3_filename_database"]=a0=>(_sqlite3_filename_database=Module["_sqlite3_filename_database"]=wasmExports["Me"])(a0);var _sqlite3_filename_journal=Module["_sqlite3_filename_journal"]=a0=>(_sqlite3_filename_journal=Module["_sqlite3_filename_journal"]=wasmExports["Ne"])(a0);var _sqlite3_filename_wal=Module["_sqlite3_filename_wal"]=a0=>(_sqlite3_filename_wal=Module["_sqlite3_filename_wal"]=wasmExports["Oe"])(a0);var _sqlite3_db_name=Module["_sqlite3_db_name"]=(a0,a1)=>(_sqlite3_db_name=Module["_sqlite3_db_name"]=wasmExports["Pe"])(a0,a1);var _sqlite3_db_filename=Module["_sqlite3_db_filename"]=(a0,a1)=>(_sqlite3_db_filename=Module["_sqlite3_db_filename"]=wasmExports["Qe"])(a0,a1);var _sqlite3_db_readonly=Module["_sqlite3_db_readonly"]=(a0,a1)=>(_sqlite3_db_readonly=Module["_sqlite3_db_readonly"]=wasmExports["Re"])(a0,a1);var _sqlite3_compileoption_used=Module["_sqlite3_compileoption_used"]=a0=>(_sqlite3_compileoption_used=Module["_sqlite3_compileoption_used"]=wasmExports["Se"])(a0);var _sqlite3_compileoption_get=Module["_sqlite3_compileoption_get"]=a0=>(_sqlite3_compileoption_get=Module["_sqlite3_compileoption_get"]=wasmExports["Te"])(a0);var _sqlite3_sourceid=Module["_sqlite3_sourceid"]=()=>(_sqlite3_sourceid=Module["_sqlite3_sourceid"]=wasmExports["Ue"])();var _malloc=Module["_malloc"]=a0=>(_malloc=Module["_malloc"]=wasmExports["Ve"])(a0);var _free=Module["_free"]=a0=>(_free=Module["_free"]=wasmExports["We"])(a0);var _RegisterExtensionFunctions=Module["_RegisterExtensionFunctions"]=a0=>(_RegisterExtensionFunctions=Module["_RegisterExtensionFunctions"]=wasmExports["Xe"])(a0);var _getSqliteFree=Module["_getSqliteFree"]=()=>(_getSqliteFree=Module["_getSqliteFree"]=wasmExports["Ye"])();var _main=Module["_main"]=(a0,a1)=>(_main=Module["_main"]=wasmExports["Ze"])(a0,a1);var _libauthorizer_set_authorizer=Module["_libauthorizer_set_authorizer"]=(a0,a1,a2)=>(_libauthorizer_set_authorizer=Module["_libauthorizer_set_authorizer"]=wasmExports["_e"])(a0,a1,a2);var _libfunction_create_function=Module["_libfunction_create_function"]=(a0,a1,a2,a3,a4,a5,a6,a7)=>(_libfunction_create_function=Module["_libfunction_create_function"]=wasmExports["$e"])(a0,a1,a2,a3,a4,a5,a6,a7);var _libhook_commit_hook=Module["_libhook_commit_hook"]=(a0,a1,a2)=>(_libhook_commit_hook=Module["_libhook_commit_hook"]=wasmExports["af"])(a0,a1,a2);var _libhook_update_hook=Module["_libhook_update_hook"]=(a0,a1,a2)=>(_libhook_update_hook=Module["_libhook_update_hook"]=wasmExports["bf"])(a0,a1,a2);var _libprogress_progress_handler=Module["_libprogress_progress_handler"]=(a0,a1,a2,a3)=>(_libprogress_progress_handler=Module["_libprogress_progress_handler"]=wasmExports["cf"])(a0,a1,a2,a3);var _libvfs_vfs_register=Module["_libvfs_vfs_register"]=(a0,a1,a2,a3,a4,a5)=>(_libvfs_vfs_register=Module["_libvfs_vfs_register"]=wasmExports["df"])(a0,a1,a2,a3,a4,a5);var _emscripten_builtin_memalign=(a0,a1)=>(_emscripten_builtin_memalign=wasmExports["ff"])(a0,a1);var __emscripten_tempret_get=()=>(__emscripten_tempret_get=wasmExports["gf"])();var __emscripten_stack_restore=a0=>(__emscripten_stack_restore=wasmExports["hf"])(a0);var __emscripten_stack_alloc=a0=>(__emscripten_stack_alloc=wasmExports["jf"])(a0);var _emscripten_stack_get_current=()=>(_emscripten_stack_get_current=wasmExports["kf"])();var _asyncify_start_unwind=a0=>(_asyncify_start_unwind=wasmExports["lf"])(a0);var _asyncify_stop_unwind=()=>(_asyncify_stop_unwind=wasmExports["mf"])();var _asyncify_start_rewind=a0=>(_asyncify_start_rewind=wasmExports["nf"])(a0);var _asyncify_stop_rewind=()=>(_asyncify_stop_rewind=wasmExports["of"])();var _sqlite3_version=Module["_sqlite3_version"]=3232;Module["getTempRet0"]=getTempRet0;Module["ccall"]=ccall;Module["cwrap"]=cwrap;Module["addFunction"]=addFunction;Module["setValue"]=setValue;Module["getValue"]=getValue;Module["UTF8ToString"]=UTF8ToString;Module["stringToUTF8"]=stringToUTF8;Module["lengthBytesUTF8"]=lengthBytesUTF8;Module["intArrayFromString"]=intArrayFromString;Module["intArrayToString"]=intArrayToString;Module["AsciiToString"]=AsciiToString;Module["UTF16ToString"]=UTF16ToString;Module["stringToUTF16"]=stringToUTF16;Module["UTF32ToString"]=UTF32ToString;Module["stringToUTF32"]=stringToUTF32;Module["writeArrayToMemory"]=writeArrayToMemory;var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(){var entryFunction=_main;var argc=0;var argv=0;try{var ret=entryFunction(argc,argv);exitJS(ret,true);return ret}catch(e){return handleException(e)}}function run(){if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();readyPromiseResolve(Module);if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"])shouldRunNow=false;run();(function(){const AsyncFunction=Object.getPrototypeOf(async function(){}).constructor;let pAsyncFlags=0;Module["set_authorizer"]=function(db,xAuthorizer,pApp){if(pAsyncFlags){Module["deleteCallback"](pAsyncFlags);Module["_sqlite3_free"](pAsyncFlags);pAsyncFlags=0}pAsyncFlags=Module["_sqlite3_malloc"](4);setValue(pAsyncFlags,xAuthorizer instanceof AsyncFunction?1:0,"i32");const result=ccall("libauthorizer_set_authorizer","number",["number","number","number"],[db,xAuthorizer?1:0,pAsyncFlags]);if(!result&&xAuthorizer){Module["setCallback"](pAsyncFlags,(_,iAction,p3,p4,p5,p6)=>xAuthorizer(pApp,iAction,p3,p4,p5,p6))}return result}})();(function(){const AsyncFunction=Object.getPrototypeOf(async function(){}).constructor;const FUNC_METHODS=["xFunc","xStep","xFinal"];const mapFunctionNameToKey=new Map;Module["create_function"]=function(db,zFunctionName,nArg,eTextRep,pApp,xFunc,xStep,xFinal){const pAsyncFlags=Module["_sqlite3_malloc"](4);const target={xFunc:xFunc,xStep:xStep,xFinal:xFinal};setValue(pAsyncFlags,FUNC_METHODS.reduce((mask,method,i)=>{if(target[method]instanceof AsyncFunction){return mask|1<xUpdateHook(iUpdateType,dbName,tblName,lo32,hi32))}}})();(function(){const AsyncFunction=Object.getPrototypeOf(async function(){}).constructor;let pAsyncFlags=0;Module["commit_hook"]=function(db,xCommitHook){if(pAsyncFlags){Module["deleteCallback"](pAsyncFlags);Module["_sqlite3_free"](pAsyncFlags);pAsyncFlags=0}pAsyncFlags=Module["_sqlite3_malloc"](4);setValue(pAsyncFlags,xCommitHook instanceof AsyncFunction?1:0,"i32");ccall("libhook_commit_hook","void",["number","number","number"],[db,xCommitHook?1:0,pAsyncFlags]);if(xCommitHook){Module["setCallback"](pAsyncFlags,_=>xCommitHook())}}})();(function(){const AsyncFunction=Object.getPrototypeOf(async function(){}).constructor;let pAsyncFlags=0;Module["progress_handler"]=function(db,nOps,xProgress,pApp){if(pAsyncFlags){Module["deleteCallback"](pAsyncFlags);Module["_sqlite3_free"](pAsyncFlags);pAsyncFlags=0}pAsyncFlags=Module["_sqlite3_malloc"](4);setValue(pAsyncFlags,xProgress instanceof AsyncFunction?1:0,"i32");ccall("libprogress_progress_handler","number",["number","number","number","number"],[db,nOps,xProgress?1:0,pAsyncFlags]);if(xProgress){Module["setCallback"](pAsyncFlags,_=>xProgress(pApp))}}})();(function(){const VFS_METHODS=["xOpen","xDelete","xAccess","xFullPathname","xRandomness","xSleep","xCurrentTime","xGetLastError","xCurrentTimeInt64","xClose","xRead","xWrite","xTruncate","xSync","xFileSize","xLock","xUnlock","xCheckReservedLock","xFileControl","xSectorSize","xDeviceCharacteristics","xShmMap","xShmLock","xShmBarrier","xShmUnmap"];const mapVFSNameToKey=new Map;Module["vfs_register"]=function(vfs,makeDefault){let methodMask=0;let asyncMask=0;VFS_METHODS.forEach((method,i)=>{if(vfs[method]){methodMask|=1<{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_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 readyPromiseResolve,readyPromiseReject;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;var runtimeInitialized=false;function updateMemoryViews(){var b=wasmMemory.buffer;HEAP8=new Int8Array(b);HEAP16=new Int16Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);HEAPU16=new Uint16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);HEAPU32=new Uint32Array(b);HEAPF32=new Float32Array(b);HEAPF64=new Float64Array(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;if(!Module["noFSInit"]&&!FS.initialized)FS.init();TTY.init();wasmExports["__wasm_call_ctors"]();FS.ignorePermissions=false}function preMain(){}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("wa-sqlite-jspi.wasm")}return new URL("wa-sqlite-jspi.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){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(){Asyncify.instrumentWasmImports(wasmImports);return{env:wasmImports,wasi_snapshot_preview1:wasmImports}}async function createWasm(){function receiveInstance(instance,module){wasmExports=instance.exports;wasmExports=Asyncify.instrumentWasmExports(wasmExports);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}var tempDouble;var tempI64;class ExitStatus{name="ExitStatus";constructor(status){this.message=`Program terminated with exit(${status})`;this.status=status}}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);function getValue(ptr,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":return HEAP8[ptr];case"i8":return HEAP8[ptr];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":abort("to do getValue(i64) use WASM_BIGINT");case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];case"*":return HEAPU32[ptr>>2];default:abort(`invalid type for getValue: ${type}`)}}var noExitRuntime=true;function setValue(ptr,value,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":HEAP8[ptr]=value;break;case"i8":HEAP8[ptr]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":abort("to do setValue(i64) use WASM_BIGINT");case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;case"*":HEAPU32[ptr>>2]=value;break;default:abort(`invalid type for setValue: ${type}`)}}var stackRestore=val=>__emscripten_stack_restore(val);var stackSave=()=>_emscripten_stack_get_current();var UTF8Decoder=new TextDecoder;var findStringEnd=(heapOrArray,idx,maxBytesToRead,ignoreNul)=>{var maxIdx=idx+maxBytesToRead;if(ignoreNul)return maxIdx;while(heapOrArray[idx]&&!(idx>=maxIdx))++idx;return idx};var UTF8ToString=(ptr,maxBytesToRead,ignoreNul)=>{if(!ptr)return"";var end=findStringEnd(HEAPU8,ptr,maxBytesToRead,ignoreNul);return UTF8Decoder.decode(HEAPU8.subarray(ptr,end))};var ___assert_fail=(condition,filename,line,func)=>abort(`Assertion failed: ${UTF8ToString(condition)}, at: `+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"]);var exceptionLast=0;class ExceptionInfo{constructor(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24}set_type(type){HEAPU32[this.ptr+4>>2]=type}get_type(){return HEAPU32[this.ptr+4>>2]}set_destructor(destructor){HEAPU32[this.ptr+8>>2]=destructor}get_destructor(){return HEAPU32[this.ptr+8>>2]}set_caught(caught){caught=caught?1:0;HEAP8[this.ptr+12]=caught}get_caught(){return HEAP8[this.ptr+12]!=0}set_rethrown(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13]=rethrown}get_rethrown(){return HEAP8[this.ptr+13]!=0}init(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)}set_adjusted_ptr(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr}get_adjusted_ptr(){return HEAPU32[this.ptr+16>>2]}}var setTempRet0=val=>__emscripten_tempret_set(val);var findMatchingCatch=args=>{var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0}var info=new ExceptionInfo(thrown);info.set_adjusted_ptr(thrown);var thrownType=info.get_type();if(!thrownType){setTempRet0(0);return thrown}for(var caughtType of args){if(caughtType===0||caughtType===thrownType){break}var adjusted_ptr_addr=info.ptr+16;if(___cxa_can_catch(caughtType,thrownType,adjusted_ptr_addr)){setTempRet0(caughtType);return thrown}}setTempRet0(thrownType);return thrown};var ___cxa_find_matching_catch_2=()=>findMatchingCatch([]);var uncaughtExceptionCount=0;var ___cxa_throw=(ptr,type,destructor)=>{var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast};var ___resumeException=ptr=>{if(!exceptionLast){exceptionLast=ptr}throw exceptionLast};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 initRandomFill=()=>view=>crypto.getRandomValues(view);var randomFill=view=>{(randomFill=initRandomFill())(view)};var PATH_FS={resolve:(...args)=>{var resolvedPath="",resolvedAbsolute=false;for(var i=args.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?args[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).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 endPtr=findStringEnd(heapOrArray,idx,maxBytesToRead,ignoreNul);return UTF8Decoder.decode(heapOrArray.buffer?heapOrArray.subarray(idx,endPtr):new Uint8Array(heapOrArray.slice(idx,endPtr)))};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(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 zeroMemory=(ptr,size)=>HEAPU8.fill(0,ptr,ptr+size);var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var mmapAlloc=size=>{size=alignMemory(size,65536);var ptr=_emscripten_builtin_memalign(65536,size);if(ptr)zeroMemory(ptr,size);return ptr};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=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.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){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.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);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{var flagModes={r:0,"r+":2,w:512|64|1,"w+":512|64|2,a:1024|64|1,"a+":1024|64|2};var flags=flagModes[str];if(typeof flags=="undefined"){throw new Error(`Unknown file open mode: ${str}`)}return flags};var FS_getMode=(canRead,canWrite)=>{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode};var 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,readFiles:{},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}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup(dir){if(!FS.isDir(dir.mode))return 54;var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate(dir,name){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}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&(512|64)){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},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);setattr(arg,attr)},chrdev_stream_ops:{open(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;stream.stream_ops.open?.(stream)},llseek(){throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push(...m.mounts)}return mounts},syncfs(populate,callback){if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type,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);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup(parent,name){return parent.node_ops.lookup(parent,name)},mknod(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name){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=typeof flags=="string"?FS_modeStringToFlags(flags):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)}if(Module["logReadFiles"]&&!(flags&1)){if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close(stream){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed(stream){return stream.fd===null},llseek(stream,offset,whence){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},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);if(typeof data=="string"){data=new Uint8Array(intArrayFromString(data,true))}if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{abort("Unsupported data type")}FS.close(stream)},cwd:()=>FS.currentPath,chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length,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){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;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={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=(...args)=>{FS.forceLoadFile(node);return fn(...args)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr,allocated:true}};node.stream_ops=stream_ops;return node}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return 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;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+24>>2]=tempI64[0],HEAP32[buf+28>>2]=tempI64[1];HEAP32[buf+32>>2]=4096;HEAP32[buf+36>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();tempI64=[Math.floor(atime/1e3)>>>0,(tempDouble=Math.floor(atime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAPU32[buf+48>>2]=atime%1e3*1e3*1e3;tempI64=[Math.floor(mtime/1e3)>>>0,(tempDouble=Math.floor(mtime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+56>>2]=tempI64[0],HEAP32[buf+60>>2]=tempI64[1];HEAPU32[buf+64>>2]=mtime%1e3*1e3*1e3;tempI64=[Math.floor(ctime/1e3)>>>0,(tempDouble=Math.floor(ctime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+72>>2]=tempI64[0],HEAP32[buf+76>>2]=tempI64[1];HEAPU32[buf+80>>2]=ctime%1e3*1e3*1e3;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+88>>2]=tempI64[0],HEAP32[buf+92>>2]=tempI64[1];return 0},writeStatFs(buf,stats){HEAPU32[buf+4>>2]=stats.bsize;HEAPU32[buf+60>>2]=stats.bsize;tempI64=[stats.blocks>>>0,(tempDouble=stats.blocks,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+8>>2]=tempI64[0],HEAP32[buf+12>>2]=tempI64[1];tempI64=[stats.bfree>>>0,(tempDouble=stats.bfree,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+16>>2]=tempI64[0],HEAP32[buf+20>>2]=tempI64[1];tempI64=[stats.bavail>>>0,(tempDouble=stats.bavail,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+24>>2]=tempI64[0],HEAP32[buf+28>>2]=tempI64[1];tempI64=[stats.files>>>0,(tempDouble=stats.files,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+32>>2]=tempI64[0],HEAP32[buf+36>>2]=tempI64[1];tempI64=[stats.ffree>>>0,(tempDouble=stats.ffree,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAPU32[buf+48>>2]=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_chmod(path,mode){try{path=SYSCALLS.getStr(path);FS.chmod(path,mode);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_faccessat(dirfd,path,amode,flags){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_fchmod(fd,mode){try{FS.fchmod(fd,mode);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_fchown32(fd,owner,group){try{FS.fchown(fd,owner,group);return 0}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();stream.flags|=arg;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 convertI32PairToI53Checked=(lo,hi)=>hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN;function ___syscall_ftruncate64(fd,length_low,length_high){var length=convertI32PairToI53Checked(length_low,length_high);try{if(isNaN(length))return-61;FS.ftruncate(fd,length);return 0}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(sizeHEAPU32[ptr>>2]+HEAP32[ptr+4>>2]*4294967296;function ___syscall_utimensat(dirfd,path,times,flags){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path,true);var now=Date.now(),atime,mtime;if(!times){atime=now;mtime=now}else{var seconds=readI53FromI64(times);var nanoseconds=HEAP32[times+8>>2];if(nanoseconds==1073741823){atime=now}else if(nanoseconds==1073741822){atime=null}else{atime=seconds*1e3+nanoseconds/(1e3*1e3)}times+=16;seconds=readI53FromI64(times);nanoseconds=HEAP32[times+8>>2];if(nanoseconds==1073741823){mtime=now}else if(nanoseconds==1073741822){mtime=null}else{mtime=seconds*1e3+nanoseconds/(1e3*1e3)}}if((mtime??atime)!==null){FS.utime(path,atime,mtime)}return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var __abort_js=()=>abort("");var runtimeKeepaliveCounter=0;var __emscripten_runtime_keepalive_clear=()=>{noExitRuntime=false;runtimeKeepaliveCounter=0};var isLeapYear=year=>year%4===0&&(year%100!==0||year%400===0);var MONTH_DAYS_LEAP_CUMULATIVE=[0,31,60,91,121,152,182,213,244,274,305,335];var MONTH_DAYS_REGULAR_CUMULATIVE=[0,31,59,90,120,151,181,212,243,273,304,334];var ydayFromDate=date=>{var leap=isLeapYear(date.getFullYear());var monthDaysCumulative=leap?MONTH_DAYS_LEAP_CUMULATIVE:MONTH_DAYS_REGULAR_CUMULATIVE;var yday=monthDaysCumulative[date.getMonth()]+date.getDate()-1;return yday};function __localtime_js(time_low,time_high,tmPtr){var time=convertI32PairToI53Checked(time_low,time_high);var date=new Date(time*1e3);HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getDay();var yday=ydayFromDate(date)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr+36>>2]=-(date.getTimezoneOffset()*60);var start=new Date(date.getFullYear(),0,1);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dst=(summerOffset!=winterOffset&&date.getTimezoneOffset()==Math.min(winterOffset,summerOffset))|0;HEAP32[tmPtr+32>>2]=dst}function __mmap_js(len,prot,flags,fd,offset_low,offset_high,allocated,addr){var offset=convertI32PairToI53Checked(offset_low,offset_high);try{var stream=SYSCALLS.getStreamFromFD(fd);var res=FS.mmap(stream,len,offset,prot,flags);var ptr=res.ptr;HEAP32[allocated>>2]=res.allocated;HEAPU32[addr>>2]=ptr;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function __munmap_js(addr,len,prot,flags,fd,offset_low,offset_high){var offset=convertI32PairToI53Checked(offset_low,offset_high);try{var stream=SYSCALLS.getStreamFromFD(fd);if(prot&2){SYSCALLS.doMsync(addr,stream,len,flags,offset)}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var timers={};var handleException=e=>{if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)};var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){Module["onExit"]?.(code);ABORT=true}quit_(code,new ExitStatus(code))};var exitJS=(status,implicit)=>{EXITSTATUS=status;_proc_exit(status)};var _exit=exitJS;var maybeExit=()=>{if(!keepRuntimeAlive()){try{_exit(EXITSTATUS)}catch(e){handleException(e)}}};var callUserCallback=func=>{if(ABORT){return}try{func();maybeExit()}catch(e){handleException(e)}};var _emscripten_get_now=()=>performance.now();var __setitimer_js=(which,timeout_ms)=>{if(timers[which]){clearTimeout(timers[which].id);delete timers[which]}if(!timeout_ms)return 0;var id=setTimeout(()=>{delete timers[which];callUserCallback(()=>__emscripten_timeout(which,_emscripten_get_now()))},timeout_ms);timers[which]={id,timeout_ms};return 0};var __tzset_js=(timezone,daylight,std_name,dst_name)=>{var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);var winterOffset=winter.getTimezoneOffset();var summerOffset=summer.getTimezoneOffset();var stdTimezoneOffset=Math.max(winterOffset,summerOffset);HEAPU32[timezone>>2]=stdTimezoneOffset*60;HEAP32[daylight>>2]=Number(winterOffset!=summerOffset);var extractZone=timezoneOffset=>{var sign=timezoneOffset>=0?"-":"+";var absOffset=Math.abs(timezoneOffset);var hours=String(Math.floor(absOffset/60)).padStart(2,"0");var minutes=String(absOffset%60).padStart(2,"0");return`UTC${sign}${hours}${minutes}`};var winterName=extractZone(winterOffset);var summerName=extractZone(summerOffset);if(summerOffsetDate.now();var getHeapMax=()=>2147483648;var _emscripten_get_heap_max=()=>getHeapMax();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||"./this.program";var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&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};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;tempI64=[rightsBase>>>0,(tempDouble=rightsBase,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[pbuf+8>>2]=tempI64[0],HEAP32[pbuf+12>>2]=tempI64[1];tempI64=[rightsInheriting>>>0,(tempDouble=rightsInheriting,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[pbuf+16>>2]=tempI64[0],HEAP32[pbuf+20>>2]=tempI64[1];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_low,offset_high,whence,newOffset){var offset=convertI32PairToI53Checked(offset_low,offset_high);try{if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var _fd_sync=function(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);return Asyncify.handleSleep(wakeUp=>{var mount=stream.node.mount;if(!mount.type.syncfs){wakeUp(0);return}mount.type.syncfs(mount,false,err=>{wakeUp(err?29:0)})})}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}};_fd_sync.isAsync=true;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 adapters_support=function(){const handleAsync=typeof Asyncify==="object"?Asyncify.handleAsync.bind(Asyncify):null;Module["handleAsync"]=handleAsync;const targets=new Map;Module["setCallback"]=(key,target)=>targets.set(key,target);Module["getCallback"]=key=>targets.get(key);Module["deleteCallback"]=key=>targets.delete(key);adapters_support=function(isAsync,key,...args){const receiver=targets.get(key);let methodName=null;const f=typeof receiver==="function"?receiver:receiver[methodName=UTF8ToString(args.shift())];if(isAsync){if(handleAsync){return handleAsync(()=>f.apply(receiver,args))}throw new Error("Synchronous WebAssembly cannot call async function")}const result=f.apply(receiver,args);if(typeof result?.then=="function"){console.error("unexpected Promise",f);throw new Error(`${methodName} unexpectedly returned a Promise`)}return result}};function _ipp(...args){return adapters_support(false,...args)}function _ipp_async(...args){return adapters_support(true,...args)}_ipp_async.isAsync=true;function _ippipppp(...args){return adapters_support(false,...args)}function _ippipppp_async(...args){return adapters_support(true,...args)}_ippipppp_async.isAsync=true;function _ippp(...args){return adapters_support(false,...args)}function _ippp_async(...args){return adapters_support(true,...args)}_ippp_async.isAsync=true;function _ipppi(...args){return adapters_support(false,...args)}function _ipppi_async(...args){return adapters_support(true,...args)}_ipppi_async.isAsync=true;function _ipppiii(...args){return adapters_support(false,...args)}function _ipppiii_async(...args){return adapters_support(true,...args)}_ipppiii_async.isAsync=true;function _ipppiiip(...args){return adapters_support(false,...args)}function _ipppiiip_async(...args){return adapters_support(true,...args)}_ipppiiip_async.isAsync=true;function _ipppip(...args){return adapters_support(false,...args)}function _ipppip_async(...args){return adapters_support(true,...args)}_ipppip_async.isAsync=true;function _ipppj(...args){return adapters_support(false,...args)}function _ipppj_async(...args){return adapters_support(true,...args)}_ipppj_async.isAsync=true;function _ipppp(...args){return adapters_support(false,...args)}function _ipppp_async(...args){return adapters_support(true,...args)}_ipppp_async.isAsync=true;function _ippppi(...args){return adapters_support(false,...args)}function _ippppi_async(...args){return adapters_support(true,...args)}_ippppi_async.isAsync=true;function _ippppij(...args){return adapters_support(false,...args)}function _ippppij_async(...args){return adapters_support(true,...args)}_ippppij_async.isAsync=true;function _ippppip(...args){return adapters_support(false,...args)}function _ippppip_async(...args){return adapters_support(true,...args)}_ippppip_async.isAsync=true;function _ipppppip(...args){return adapters_support(false,...args)}function _ipppppip_async(...args){return adapters_support(true,...args)}_ipppppip_async.isAsync=true;function _random_get(buffer,size){try{randomFill(HEAPU8.subarray(buffer,buffer+size));return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _vppippii(...args){return adapters_support(false,...args)}function _vppippii_async(...args){return adapters_support(true,...args)}_vppippii_async.isAsync=true;function _vppp(...args){return adapters_support(false,...args)}function _vppp_async(...args){return adapters_support(true,...args)}_vppp_async.isAsync=true;function _vpppip(...args){return adapters_support(false,...args)}function _vpppip_async(...args){return adapters_support(true,...args)}_vpppip_async.isAsync=true;var wasmTableMirror=[];var getWasmTableEntry=funcPtr=>{var func=wasmTableMirror[funcPtr];if(!func){wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr);if(Asyncify.isAsyncExport(func)){wasmTableMirror[funcPtr]=func=Asyncify.makeAsyncFunction(func)}}return func};var Asyncify={instrumentWasmImports(imports){var importPattern=/^(ipp|ipp_async|ippp|ippp_async|vppp|vppp_async|ipppj|ipppj_async|ipppi|ipppi_async|ipppp|ipppp_async|ipppip|ipppip_async|vpppip|vpppip_async|ippppi|ippppi_async|ippppij|ippppij_async|ipppiii|ipppiii_async|ippppip|ippppip_async|ippipppp|ippipppp_async|ipppppip|ipppppip_async|ipppiiip|ipppiiip_async|vppippii|vppippii_async|invoke_.*|__asyncjs__.*)$/;for(let[x,original]of Object.entries(imports)){if(typeof original=="function"){let isAsyncifyImport=original.isAsync||importPattern.test(x);if(isAsyncifyImport){imports[x]=original=new WebAssembly.Suspending(original)}}}},instrumentFunction(original){var wrapper=(...args)=>original(...args);return wrapper},instrumentWasmExports(exports){var exportPattern=/^(sqlite3_close|sqlite3_finalize|sqlite3_open_v2|sqlite3_prepare|sqlite3_prepare16|sqlite3_prepare_v2|sqlite3_prepare16_v2|sqlite3_prepare_v3|sqlite3_prepare16_v3|sqlite3_reset|sqlite3_step|main|__main_argc_argv)$/;Asyncify.asyncExports=new Set;var ret={};for(let[x,original]of Object.entries(exports)){if(typeof original=="function"){let isAsyncifyExport=exportPattern.test(x);if(isAsyncifyExport){Asyncify.asyncExports.add(original);original=Asyncify.makeAsyncFunction(original)}var wrapper=Asyncify.instrumentFunction(original);ret[x]=wrapper}else{ret[x]=original}}return ret},asyncExports:null,isAsyncExport(func){return Asyncify.asyncExports?.has(func)},handleAsync:async startAsync=>{try{return await startAsync()}finally{}},handleSleep:startAsync=>Asyncify.handleAsync(()=>new Promise(startAsync)),makeAsyncFunction(original){return WebAssembly.promising(original)}};var updateTableMap=(offset,count)=>{if(functionsInTableMap){for(var i=offset;i{if(!functionsInTableMap){functionsInTableMap=new WeakMap;updateTableMap(0,wasmTable.length)}return functionsInTableMap.get(func)||0};var freeTableIndexes=[];var getEmptyTableSlot=()=>{if(freeTableIndexes.length){return freeTableIndexes.pop()}return wasmTable["grow"](1)};var setWasmTableEntry=(idx,func)=>{wasmTable.set(idx,func);wasmTableMirror[idx]=wasmTable.get(idx)};var uleb128EncodeWithLen=arr=>{const n=arr.length;return[n%128|128,n>>7,...arr]};var wasmTypeCodes={i:127,p:127,j:126,f:125,d:124,e:111};var generateTypePack=types=>uleb128EncodeWithLen(Array.from(types,type=>{var code=wasmTypeCodes[type];return code}));var convertJsFunctionToWasm=(func,sig)=>{var bytes=Uint8Array.of(0,97,115,109,1,0,0,0,1,...uleb128EncodeWithLen([1,96,...generateTypePack(sig.slice(1)),...generateTypePack(sig[0]==="v"?"":sig[0])]),2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0);var module=new WebAssembly.Module(bytes);var instance=new WebAssembly.Instance(module,{e:{f:func}});var wrappedFunc=instance.exports["f"];return wrappedFunc};var addFunction=(func,sig)=>{var rtn=getFunctionAddress(func);if(rtn){return rtn}var ret=getEmptyTableSlot();try{setWasmTableEntry(ret,func)}catch(err){if(!(err instanceof TypeError)){throw err}var wrapped=convertJsFunctionToWasm(func,sig);setWasmTableEntry(ret,wrapped)}functionsInTableMap.set(func,ret);return ret};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)};var getTempRet0=val=>__emscripten_tempret_get();var stringToUTF16=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr};var stringToUTF32=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i65535){i++}HEAP32[outPtr>>2]=codePoint;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr};var AsciiToString=ptr=>{var str="";while(1){var ch=HEAPU8[ptr++];if(!ch)return str;str+=String.fromCharCode(ch)}};var UTF16Decoder=new TextDecoder("utf-16le");var UTF16ToString=(ptr,maxBytesToRead,ignoreNul)=>{var idx=ptr>>1;var endIdx=findStringEnd(HEAPU16,idx,maxBytesToRead/2,ignoreNul);return UTF16Decoder.decode(HEAPU16.subarray(idx,endIdx))};var UTF32ToString=(ptr,maxBytesToRead,ignoreNul)=>{var str="";var startIdx=ptr>>2;for(var i=0;!(i>=maxBytesToRead/4);i++){var utf32=HEAPU32[startIdx+i];if(!utf32&&!ignoreNul)break;str+=String.fromCodePoint(utf32)}return str};var intArrayToString=array=>{var ret=[];for(var i=0;i255){chr&=255}ret.push(String.fromCharCode(chr))}return ret.join("")};FS.createPreloadedFile=FS_createPreloadedFile;FS.preloadFile=FS_preloadFile;FS.staticInit();adapters_support();{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"])arguments_=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["getTempRet0"]=getTempRet0;Module["ccall"]=ccall;Module["cwrap"]=cwrap;Module["addFunction"]=addFunction;Module["setValue"]=setValue;Module["getValue"]=getValue;Module["UTF8ToString"]=UTF8ToString;Module["stringToUTF8"]=stringToUTF8;Module["lengthBytesUTF8"]=lengthBytesUTF8;Module["intArrayFromString"]=intArrayFromString;Module["intArrayToString"]=intArrayToString;Module["AsciiToString"]=AsciiToString;Module["UTF16ToString"]=UTF16ToString;Module["stringToUTF16"]=stringToUTF16;Module["UTF32ToString"]=UTF32ToString;Module["stringToUTF32"]=stringToUTF32;Module["writeArrayToMemory"]=writeArrayToMemory;var _sqlite3_status64,_sqlite3_status,_sqlite3_db_status,_sqlite3_msize,_sqlite3_vfs_find,_sqlite3_vfs_register,_sqlite3_vfs_unregister,_sqlite3_release_memory,_sqlite3_soft_heap_limit64,_sqlite3_memory_used,_sqlite3_hard_heap_limit64,_sqlite3_memory_highwater,_sqlite3_malloc,_sqlite3_malloc64,_sqlite3_free,_sqlite3_realloc,_sqlite3_realloc64,_sqlite3_str_vappendf,_sqlite3_str_append,_sqlite3_str_appendchar,_sqlite3_str_appendall,_sqlite3_str_appendf,_sqlite3_str_finish,_sqlite3_str_errcode,_sqlite3_str_length,_sqlite3_str_value,_sqlite3_str_reset,_sqlite3_str_new,_sqlite3_vmprintf,_sqlite3_mprintf,_sqlite3_vsnprintf,_sqlite3_snprintf,_sqlite3_log,_sqlite3_randomness,_sqlite3_stricmp,_sqlite3_strnicmp,_sqlite3_os_init,_sqlite3_os_end,_sqlite3_serialize,_sqlite3_prepare_v2,_sqlite3_step,_sqlite3_column_int64,_sqlite3_reset,_sqlite3_exec,_sqlite3_column_int,_sqlite3_finalize,_sqlite3_deserialize,_sqlite3_database_file_object,_sqlite3_backup_init,_sqlite3_backup_step,_sqlite3_backup_finish,_sqlite3_backup_remaining,_sqlite3_backup_pagecount,_sqlite3_clear_bindings,_sqlite3_value_blob,_sqlite3_value_text,_sqlite3_value_bytes,_sqlite3_value_bytes16,_sqlite3_value_double,_sqlite3_value_int,_sqlite3_value_int64,_sqlite3_value_subtype,_sqlite3_value_pointer,_sqlite3_value_text16,_sqlite3_value_text16be,_sqlite3_value_text16le,_sqlite3_value_type,_sqlite3_value_encoding,_sqlite3_value_nochange,_sqlite3_value_frombind,_sqlite3_value_dup,_sqlite3_value_free,_sqlite3_result_blob,_sqlite3_result_blob64,_sqlite3_result_double,_sqlite3_result_error,_sqlite3_result_error16,_sqlite3_result_int,_sqlite3_result_int64,_sqlite3_result_null,_sqlite3_result_pointer,_sqlite3_result_subtype,_sqlite3_result_text,_sqlite3_result_text64,_sqlite3_result_text16,_sqlite3_result_text16be,_sqlite3_result_text16le,_sqlite3_result_value,_sqlite3_result_error_toobig,_sqlite3_result_zeroblob,_sqlite3_result_zeroblob64,_sqlite3_result_error_code,_sqlite3_result_error_nomem,_sqlite3_user_data,_sqlite3_context_db_handle,_sqlite3_vtab_nochange,_sqlite3_vtab_in_first,_sqlite3_vtab_in_next,_sqlite3_aggregate_context,_sqlite3_get_auxdata,_sqlite3_set_auxdata,_sqlite3_column_count,_sqlite3_data_count,_sqlite3_column_blob,_sqlite3_column_bytes,_sqlite3_column_bytes16,_sqlite3_column_double,_sqlite3_column_text,_sqlite3_column_value,_sqlite3_column_text16,_sqlite3_column_type,_sqlite3_column_name,_sqlite3_column_name16,_sqlite3_bind_blob,_sqlite3_bind_blob64,_sqlite3_bind_double,_sqlite3_bind_int,_sqlite3_bind_int64,_sqlite3_bind_null,_sqlite3_bind_pointer,_sqlite3_bind_text,_sqlite3_bind_text64,_sqlite3_bind_text16,_sqlite3_bind_value,_sqlite3_bind_zeroblob,_sqlite3_bind_zeroblob64,_sqlite3_bind_parameter_count,_sqlite3_bind_parameter_name,_sqlite3_bind_parameter_index,_sqlite3_db_handle,_sqlite3_stmt_readonly,_sqlite3_stmt_isexplain,_sqlite3_stmt_explain,_sqlite3_stmt_busy,_sqlite3_next_stmt,_sqlite3_stmt_status,_sqlite3_sql,_sqlite3_expanded_sql,_sqlite3_value_numeric_type,_sqlite3_blob_open,_sqlite3_blob_close,_sqlite3_blob_read,_sqlite3_blob_write,_sqlite3_blob_bytes,_sqlite3_blob_reopen,_sqlite3_set_authorizer,_sqlite3_strglob,_sqlite3_strlike,_sqlite3_errmsg,_sqlite3_auto_extension,_sqlite3_cancel_auto_extension,_sqlite3_reset_auto_extension,_sqlite3_prepare,_sqlite3_prepare_v3,_sqlite3_prepare16,_sqlite3_prepare16_v2,_sqlite3_prepare16_v3,_sqlite3_get_table,_sqlite3_free_table,_sqlite3_create_module,_sqlite3_create_module_v2,_sqlite3_drop_modules,_sqlite3_declare_vtab,_sqlite3_vtab_on_conflict,_sqlite3_vtab_config,_sqlite3_vtab_collation,_sqlite3_vtab_in,_sqlite3_vtab_rhs_value,_sqlite3_vtab_distinct,_sqlite3_keyword_name,_sqlite3_keyword_count,_sqlite3_keyword_check,_sqlite3_complete,_sqlite3_complete16,_sqlite3_libversion,_sqlite3_libversion_number,_sqlite3_threadsafe,_sqlite3_initialize,_sqlite3_shutdown,_sqlite3_config,_sqlite3_db_mutex,_sqlite3_db_release_memory,_sqlite3_db_cacheflush,_sqlite3_db_config,_sqlite3_last_insert_rowid,_sqlite3_set_last_insert_rowid,_sqlite3_changes64,_sqlite3_changes,_sqlite3_total_changes64,_sqlite3_total_changes,_sqlite3_txn_state,_sqlite3_close,_sqlite3_close_v2,_sqlite3_busy_handler,_sqlite3_progress_handler,_sqlite3_busy_timeout,_sqlite3_interrupt,_sqlite3_is_interrupted,_sqlite3_create_function,_sqlite3_create_function_v2,_sqlite3_create_window_function,_sqlite3_create_function16,_sqlite3_overload_function,_sqlite3_trace_v2,_sqlite3_commit_hook,_sqlite3_update_hook,_sqlite3_rollback_hook,_sqlite3_autovacuum_pages,_sqlite3_wal_autocheckpoint,_sqlite3_wal_hook,_sqlite3_wal_checkpoint_v2,_sqlite3_wal_checkpoint,_sqlite3_error_offset,_sqlite3_errmsg16,_sqlite3_errcode,_sqlite3_extended_errcode,_sqlite3_system_errno,_sqlite3_errstr,_sqlite3_limit,_sqlite3_open,_sqlite3_open_v2,_sqlite3_open16,_sqlite3_create_collation,_sqlite3_create_collation_v2,_sqlite3_create_collation16,_sqlite3_collation_needed,_sqlite3_collation_needed16,_sqlite3_get_clientdata,_sqlite3_set_clientdata,_sqlite3_get_autocommit,_sqlite3_table_column_metadata,_sqlite3_sleep,_sqlite3_extended_result_codes,_sqlite3_file_control,_sqlite3_test_control,_sqlite3_create_filename,_sqlite3_free_filename,_sqlite3_uri_parameter,_sqlite3_uri_key,_sqlite3_uri_boolean,_sqlite3_uri_int64,_sqlite3_filename_database,_sqlite3_filename_journal,_sqlite3_filename_wal,_sqlite3_db_name,_sqlite3_db_filename,_sqlite3_db_readonly,_sqlite3_compileoption_used,_sqlite3_compileoption_get,_sqlite3_sourceid,_malloc,_free,_RegisterExtensionFunctions,_getSqliteFree,_main,_libauthorizer_set_authorizer,_libfunction_create_function,_libhook_commit_hook,_libhook_update_hook,_libprogress_progress_handler,_libvfs_vfs_register,_emscripten_builtin_memalign,__emscripten_timeout,_setThrew,__emscripten_tempret_set,__emscripten_tempret_get,__emscripten_stack_restore,__emscripten_stack_alloc,_emscripten_stack_get_current,___cxa_can_catch,dynCall_viiiiij,dynCall_viji,dynCall_viiiij,dynCall_iij,dynCall_iiiij,dynCall_iijii,dynCall_iiji,dynCall_iiiiiij,wasmMemory,wasmTable;function assignWasmExports(wasmExports){_sqlite3_status64=Module["_sqlite3_status64"]=wasmExports["sqlite3_status64"];_sqlite3_status=Module["_sqlite3_status"]=wasmExports["sqlite3_status"];_sqlite3_db_status=Module["_sqlite3_db_status"]=wasmExports["sqlite3_db_status"];_sqlite3_msize=Module["_sqlite3_msize"]=wasmExports["sqlite3_msize"];_sqlite3_vfs_find=Module["_sqlite3_vfs_find"]=wasmExports["sqlite3_vfs_find"];_sqlite3_vfs_register=Module["_sqlite3_vfs_register"]=wasmExports["sqlite3_vfs_register"];_sqlite3_vfs_unregister=Module["_sqlite3_vfs_unregister"]=wasmExports["sqlite3_vfs_unregister"];_sqlite3_release_memory=Module["_sqlite3_release_memory"]=wasmExports["sqlite3_release_memory"];_sqlite3_soft_heap_limit64=Module["_sqlite3_soft_heap_limit64"]=wasmExports["sqlite3_soft_heap_limit64"];_sqlite3_memory_used=Module["_sqlite3_memory_used"]=wasmExports["sqlite3_memory_used"];_sqlite3_hard_heap_limit64=Module["_sqlite3_hard_heap_limit64"]=wasmExports["sqlite3_hard_heap_limit64"];_sqlite3_memory_highwater=Module["_sqlite3_memory_highwater"]=wasmExports["sqlite3_memory_highwater"];_sqlite3_malloc=Module["_sqlite3_malloc"]=wasmExports["sqlite3_malloc"];_sqlite3_malloc64=Module["_sqlite3_malloc64"]=wasmExports["sqlite3_malloc64"];_sqlite3_free=Module["_sqlite3_free"]=wasmExports["sqlite3_free"];_sqlite3_realloc=Module["_sqlite3_realloc"]=wasmExports["sqlite3_realloc"];_sqlite3_realloc64=Module["_sqlite3_realloc64"]=wasmExports["sqlite3_realloc64"];_sqlite3_str_vappendf=Module["_sqlite3_str_vappendf"]=wasmExports["sqlite3_str_vappendf"];_sqlite3_str_append=Module["_sqlite3_str_append"]=wasmExports["sqlite3_str_append"];_sqlite3_str_appendchar=Module["_sqlite3_str_appendchar"]=wasmExports["sqlite3_str_appendchar"];_sqlite3_str_appendall=Module["_sqlite3_str_appendall"]=wasmExports["sqlite3_str_appendall"];_sqlite3_str_appendf=Module["_sqlite3_str_appendf"]=wasmExports["sqlite3_str_appendf"];_sqlite3_str_finish=Module["_sqlite3_str_finish"]=wasmExports["sqlite3_str_finish"];_sqlite3_str_errcode=Module["_sqlite3_str_errcode"]=wasmExports["sqlite3_str_errcode"];_sqlite3_str_length=Module["_sqlite3_str_length"]=wasmExports["sqlite3_str_length"];_sqlite3_str_value=Module["_sqlite3_str_value"]=wasmExports["sqlite3_str_value"];_sqlite3_str_reset=Module["_sqlite3_str_reset"]=wasmExports["sqlite3_str_reset"];_sqlite3_str_new=Module["_sqlite3_str_new"]=wasmExports["sqlite3_str_new"];_sqlite3_vmprintf=Module["_sqlite3_vmprintf"]=wasmExports["sqlite3_vmprintf"];_sqlite3_mprintf=Module["_sqlite3_mprintf"]=wasmExports["sqlite3_mprintf"];_sqlite3_vsnprintf=Module["_sqlite3_vsnprintf"]=wasmExports["sqlite3_vsnprintf"];_sqlite3_snprintf=Module["_sqlite3_snprintf"]=wasmExports["sqlite3_snprintf"];_sqlite3_log=Module["_sqlite3_log"]=wasmExports["sqlite3_log"];_sqlite3_randomness=Module["_sqlite3_randomness"]=wasmExports["sqlite3_randomness"];_sqlite3_stricmp=Module["_sqlite3_stricmp"]=wasmExports["sqlite3_stricmp"];_sqlite3_strnicmp=Module["_sqlite3_strnicmp"]=wasmExports["sqlite3_strnicmp"];_sqlite3_os_init=Module["_sqlite3_os_init"]=wasmExports["sqlite3_os_init"];_sqlite3_os_end=Module["_sqlite3_os_end"]=wasmExports["sqlite3_os_end"];_sqlite3_serialize=Module["_sqlite3_serialize"]=wasmExports["sqlite3_serialize"];_sqlite3_prepare_v2=Module["_sqlite3_prepare_v2"]=wasmExports["sqlite3_prepare_v2"];_sqlite3_step=Module["_sqlite3_step"]=wasmExports["sqlite3_step"];_sqlite3_column_int64=Module["_sqlite3_column_int64"]=wasmExports["sqlite3_column_int64"];_sqlite3_reset=Module["_sqlite3_reset"]=wasmExports["sqlite3_reset"];_sqlite3_exec=Module["_sqlite3_exec"]=wasmExports["sqlite3_exec"];_sqlite3_column_int=Module["_sqlite3_column_int"]=wasmExports["sqlite3_column_int"];_sqlite3_finalize=Module["_sqlite3_finalize"]=wasmExports["sqlite3_finalize"];_sqlite3_deserialize=Module["_sqlite3_deserialize"]=wasmExports["sqlite3_deserialize"];_sqlite3_database_file_object=Module["_sqlite3_database_file_object"]=wasmExports["sqlite3_database_file_object"];_sqlite3_backup_init=Module["_sqlite3_backup_init"]=wasmExports["sqlite3_backup_init"];_sqlite3_backup_step=Module["_sqlite3_backup_step"]=wasmExports["sqlite3_backup_step"];_sqlite3_backup_finish=Module["_sqlite3_backup_finish"]=wasmExports["sqlite3_backup_finish"];_sqlite3_backup_remaining=Module["_sqlite3_backup_remaining"]=wasmExports["sqlite3_backup_remaining"];_sqlite3_backup_pagecount=Module["_sqlite3_backup_pagecount"]=wasmExports["sqlite3_backup_pagecount"];_sqlite3_clear_bindings=Module["_sqlite3_clear_bindings"]=wasmExports["sqlite3_clear_bindings"];_sqlite3_value_blob=Module["_sqlite3_value_blob"]=wasmExports["sqlite3_value_blob"];_sqlite3_value_text=Module["_sqlite3_value_text"]=wasmExports["sqlite3_value_text"];_sqlite3_value_bytes=Module["_sqlite3_value_bytes"]=wasmExports["sqlite3_value_bytes"];_sqlite3_value_bytes16=Module["_sqlite3_value_bytes16"]=wasmExports["sqlite3_value_bytes16"];_sqlite3_value_double=Module["_sqlite3_value_double"]=wasmExports["sqlite3_value_double"];_sqlite3_value_int=Module["_sqlite3_value_int"]=wasmExports["sqlite3_value_int"];_sqlite3_value_int64=Module["_sqlite3_value_int64"]=wasmExports["sqlite3_value_int64"];_sqlite3_value_subtype=Module["_sqlite3_value_subtype"]=wasmExports["sqlite3_value_subtype"];_sqlite3_value_pointer=Module["_sqlite3_value_pointer"]=wasmExports["sqlite3_value_pointer"];_sqlite3_value_text16=Module["_sqlite3_value_text16"]=wasmExports["sqlite3_value_text16"];_sqlite3_value_text16be=Module["_sqlite3_value_text16be"]=wasmExports["sqlite3_value_text16be"];_sqlite3_value_text16le=Module["_sqlite3_value_text16le"]=wasmExports["sqlite3_value_text16le"];_sqlite3_value_type=Module["_sqlite3_value_type"]=wasmExports["sqlite3_value_type"];_sqlite3_value_encoding=Module["_sqlite3_value_encoding"]=wasmExports["sqlite3_value_encoding"];_sqlite3_value_nochange=Module["_sqlite3_value_nochange"]=wasmExports["sqlite3_value_nochange"];_sqlite3_value_frombind=Module["_sqlite3_value_frombind"]=wasmExports["sqlite3_value_frombind"];_sqlite3_value_dup=Module["_sqlite3_value_dup"]=wasmExports["sqlite3_value_dup"];_sqlite3_value_free=Module["_sqlite3_value_free"]=wasmExports["sqlite3_value_free"];_sqlite3_result_blob=Module["_sqlite3_result_blob"]=wasmExports["sqlite3_result_blob"];_sqlite3_result_blob64=Module["_sqlite3_result_blob64"]=wasmExports["sqlite3_result_blob64"];_sqlite3_result_double=Module["_sqlite3_result_double"]=wasmExports["sqlite3_result_double"];_sqlite3_result_error=Module["_sqlite3_result_error"]=wasmExports["sqlite3_result_error"];_sqlite3_result_error16=Module["_sqlite3_result_error16"]=wasmExports["sqlite3_result_error16"];_sqlite3_result_int=Module["_sqlite3_result_int"]=wasmExports["sqlite3_result_int"];_sqlite3_result_int64=Module["_sqlite3_result_int64"]=wasmExports["sqlite3_result_int64"];_sqlite3_result_null=Module["_sqlite3_result_null"]=wasmExports["sqlite3_result_null"];_sqlite3_result_pointer=Module["_sqlite3_result_pointer"]=wasmExports["sqlite3_result_pointer"];_sqlite3_result_subtype=Module["_sqlite3_result_subtype"]=wasmExports["sqlite3_result_subtype"];_sqlite3_result_text=Module["_sqlite3_result_text"]=wasmExports["sqlite3_result_text"];_sqlite3_result_text64=Module["_sqlite3_result_text64"]=wasmExports["sqlite3_result_text64"];_sqlite3_result_text16=Module["_sqlite3_result_text16"]=wasmExports["sqlite3_result_text16"];_sqlite3_result_text16be=Module["_sqlite3_result_text16be"]=wasmExports["sqlite3_result_text16be"];_sqlite3_result_text16le=Module["_sqlite3_result_text16le"]=wasmExports["sqlite3_result_text16le"];_sqlite3_result_value=Module["_sqlite3_result_value"]=wasmExports["sqlite3_result_value"];_sqlite3_result_error_toobig=Module["_sqlite3_result_error_toobig"]=wasmExports["sqlite3_result_error_toobig"];_sqlite3_result_zeroblob=Module["_sqlite3_result_zeroblob"]=wasmExports["sqlite3_result_zeroblob"];_sqlite3_result_zeroblob64=Module["_sqlite3_result_zeroblob64"]=wasmExports["sqlite3_result_zeroblob64"];_sqlite3_result_error_code=Module["_sqlite3_result_error_code"]=wasmExports["sqlite3_result_error_code"];_sqlite3_result_error_nomem=Module["_sqlite3_result_error_nomem"]=wasmExports["sqlite3_result_error_nomem"];_sqlite3_user_data=Module["_sqlite3_user_data"]=wasmExports["sqlite3_user_data"];_sqlite3_context_db_handle=Module["_sqlite3_context_db_handle"]=wasmExports["sqlite3_context_db_handle"];_sqlite3_vtab_nochange=Module["_sqlite3_vtab_nochange"]=wasmExports["sqlite3_vtab_nochange"];_sqlite3_vtab_in_first=Module["_sqlite3_vtab_in_first"]=wasmExports["sqlite3_vtab_in_first"];_sqlite3_vtab_in_next=Module["_sqlite3_vtab_in_next"]=wasmExports["sqlite3_vtab_in_next"];_sqlite3_aggregate_context=Module["_sqlite3_aggregate_context"]=wasmExports["sqlite3_aggregate_context"];_sqlite3_get_auxdata=Module["_sqlite3_get_auxdata"]=wasmExports["sqlite3_get_auxdata"];_sqlite3_set_auxdata=Module["_sqlite3_set_auxdata"]=wasmExports["sqlite3_set_auxdata"];_sqlite3_column_count=Module["_sqlite3_column_count"]=wasmExports["sqlite3_column_count"];_sqlite3_data_count=Module["_sqlite3_data_count"]=wasmExports["sqlite3_data_count"];_sqlite3_column_blob=Module["_sqlite3_column_blob"]=wasmExports["sqlite3_column_blob"];_sqlite3_column_bytes=Module["_sqlite3_column_bytes"]=wasmExports["sqlite3_column_bytes"];_sqlite3_column_bytes16=Module["_sqlite3_column_bytes16"]=wasmExports["sqlite3_column_bytes16"];_sqlite3_column_double=Module["_sqlite3_column_double"]=wasmExports["sqlite3_column_double"];_sqlite3_column_text=Module["_sqlite3_column_text"]=wasmExports["sqlite3_column_text"];_sqlite3_column_value=Module["_sqlite3_column_value"]=wasmExports["sqlite3_column_value"];_sqlite3_column_text16=Module["_sqlite3_column_text16"]=wasmExports["sqlite3_column_text16"];_sqlite3_column_type=Module["_sqlite3_column_type"]=wasmExports["sqlite3_column_type"];_sqlite3_column_name=Module["_sqlite3_column_name"]=wasmExports["sqlite3_column_name"];_sqlite3_column_name16=Module["_sqlite3_column_name16"]=wasmExports["sqlite3_column_name16"];_sqlite3_bind_blob=Module["_sqlite3_bind_blob"]=wasmExports["sqlite3_bind_blob"];_sqlite3_bind_blob64=Module["_sqlite3_bind_blob64"]=wasmExports["sqlite3_bind_blob64"];_sqlite3_bind_double=Module["_sqlite3_bind_double"]=wasmExports["sqlite3_bind_double"];_sqlite3_bind_int=Module["_sqlite3_bind_int"]=wasmExports["sqlite3_bind_int"];_sqlite3_bind_int64=Module["_sqlite3_bind_int64"]=wasmExports["sqlite3_bind_int64"];_sqlite3_bind_null=Module["_sqlite3_bind_null"]=wasmExports["sqlite3_bind_null"];_sqlite3_bind_pointer=Module["_sqlite3_bind_pointer"]=wasmExports["sqlite3_bind_pointer"];_sqlite3_bind_text=Module["_sqlite3_bind_text"]=wasmExports["sqlite3_bind_text"];_sqlite3_bind_text64=Module["_sqlite3_bind_text64"]=wasmExports["sqlite3_bind_text64"];_sqlite3_bind_text16=Module["_sqlite3_bind_text16"]=wasmExports["sqlite3_bind_text16"];_sqlite3_bind_value=Module["_sqlite3_bind_value"]=wasmExports["sqlite3_bind_value"];_sqlite3_bind_zeroblob=Module["_sqlite3_bind_zeroblob"]=wasmExports["sqlite3_bind_zeroblob"];_sqlite3_bind_zeroblob64=Module["_sqlite3_bind_zeroblob64"]=wasmExports["sqlite3_bind_zeroblob64"];_sqlite3_bind_parameter_count=Module["_sqlite3_bind_parameter_count"]=wasmExports["sqlite3_bind_parameter_count"];_sqlite3_bind_parameter_name=Module["_sqlite3_bind_parameter_name"]=wasmExports["sqlite3_bind_parameter_name"];_sqlite3_bind_parameter_index=Module["_sqlite3_bind_parameter_index"]=wasmExports["sqlite3_bind_parameter_index"];_sqlite3_db_handle=Module["_sqlite3_db_handle"]=wasmExports["sqlite3_db_handle"];_sqlite3_stmt_readonly=Module["_sqlite3_stmt_readonly"]=wasmExports["sqlite3_stmt_readonly"];_sqlite3_stmt_isexplain=Module["_sqlite3_stmt_isexplain"]=wasmExports["sqlite3_stmt_isexplain"];_sqlite3_stmt_explain=Module["_sqlite3_stmt_explain"]=wasmExports["sqlite3_stmt_explain"];_sqlite3_stmt_busy=Module["_sqlite3_stmt_busy"]=wasmExports["sqlite3_stmt_busy"];_sqlite3_next_stmt=Module["_sqlite3_next_stmt"]=wasmExports["sqlite3_next_stmt"];_sqlite3_stmt_status=Module["_sqlite3_stmt_status"]=wasmExports["sqlite3_stmt_status"];_sqlite3_sql=Module["_sqlite3_sql"]=wasmExports["sqlite3_sql"];_sqlite3_expanded_sql=Module["_sqlite3_expanded_sql"]=wasmExports["sqlite3_expanded_sql"];_sqlite3_value_numeric_type=Module["_sqlite3_value_numeric_type"]=wasmExports["sqlite3_value_numeric_type"];_sqlite3_blob_open=Module["_sqlite3_blob_open"]=wasmExports["sqlite3_blob_open"];_sqlite3_blob_close=Module["_sqlite3_blob_close"]=wasmExports["sqlite3_blob_close"];_sqlite3_blob_read=Module["_sqlite3_blob_read"]=wasmExports["sqlite3_blob_read"];_sqlite3_blob_write=Module["_sqlite3_blob_write"]=wasmExports["sqlite3_blob_write"];_sqlite3_blob_bytes=Module["_sqlite3_blob_bytes"]=wasmExports["sqlite3_blob_bytes"];_sqlite3_blob_reopen=Module["_sqlite3_blob_reopen"]=wasmExports["sqlite3_blob_reopen"];_sqlite3_set_authorizer=Module["_sqlite3_set_authorizer"]=wasmExports["sqlite3_set_authorizer"];_sqlite3_strglob=Module["_sqlite3_strglob"]=wasmExports["sqlite3_strglob"];_sqlite3_strlike=Module["_sqlite3_strlike"]=wasmExports["sqlite3_strlike"];_sqlite3_errmsg=Module["_sqlite3_errmsg"]=wasmExports["sqlite3_errmsg"];_sqlite3_auto_extension=Module["_sqlite3_auto_extension"]=wasmExports["sqlite3_auto_extension"];_sqlite3_cancel_auto_extension=Module["_sqlite3_cancel_auto_extension"]=wasmExports["sqlite3_cancel_auto_extension"];_sqlite3_reset_auto_extension=Module["_sqlite3_reset_auto_extension"]=wasmExports["sqlite3_reset_auto_extension"];_sqlite3_prepare=Module["_sqlite3_prepare"]=wasmExports["sqlite3_prepare"];_sqlite3_prepare_v3=Module["_sqlite3_prepare_v3"]=wasmExports["sqlite3_prepare_v3"];_sqlite3_prepare16=Module["_sqlite3_prepare16"]=wasmExports["sqlite3_prepare16"];_sqlite3_prepare16_v2=Module["_sqlite3_prepare16_v2"]=wasmExports["sqlite3_prepare16_v2"];_sqlite3_prepare16_v3=Module["_sqlite3_prepare16_v3"]=wasmExports["sqlite3_prepare16_v3"];_sqlite3_get_table=Module["_sqlite3_get_table"]=wasmExports["sqlite3_get_table"];_sqlite3_free_table=Module["_sqlite3_free_table"]=wasmExports["sqlite3_free_table"];_sqlite3_create_module=Module["_sqlite3_create_module"]=wasmExports["sqlite3_create_module"];_sqlite3_create_module_v2=Module["_sqlite3_create_module_v2"]=wasmExports["sqlite3_create_module_v2"];_sqlite3_drop_modules=Module["_sqlite3_drop_modules"]=wasmExports["sqlite3_drop_modules"];_sqlite3_declare_vtab=Module["_sqlite3_declare_vtab"]=wasmExports["sqlite3_declare_vtab"];_sqlite3_vtab_on_conflict=Module["_sqlite3_vtab_on_conflict"]=wasmExports["sqlite3_vtab_on_conflict"];_sqlite3_vtab_config=Module["_sqlite3_vtab_config"]=wasmExports["sqlite3_vtab_config"];_sqlite3_vtab_collation=Module["_sqlite3_vtab_collation"]=wasmExports["sqlite3_vtab_collation"];_sqlite3_vtab_in=Module["_sqlite3_vtab_in"]=wasmExports["sqlite3_vtab_in"];_sqlite3_vtab_rhs_value=Module["_sqlite3_vtab_rhs_value"]=wasmExports["sqlite3_vtab_rhs_value"];_sqlite3_vtab_distinct=Module["_sqlite3_vtab_distinct"]=wasmExports["sqlite3_vtab_distinct"];_sqlite3_keyword_name=Module["_sqlite3_keyword_name"]=wasmExports["sqlite3_keyword_name"];_sqlite3_keyword_count=Module["_sqlite3_keyword_count"]=wasmExports["sqlite3_keyword_count"];_sqlite3_keyword_check=Module["_sqlite3_keyword_check"]=wasmExports["sqlite3_keyword_check"];_sqlite3_complete=Module["_sqlite3_complete"]=wasmExports["sqlite3_complete"];_sqlite3_complete16=Module["_sqlite3_complete16"]=wasmExports["sqlite3_complete16"];_sqlite3_libversion=Module["_sqlite3_libversion"]=wasmExports["sqlite3_libversion"];_sqlite3_libversion_number=Module["_sqlite3_libversion_number"]=wasmExports["sqlite3_libversion_number"];_sqlite3_threadsafe=Module["_sqlite3_threadsafe"]=wasmExports["sqlite3_threadsafe"];_sqlite3_initialize=Module["_sqlite3_initialize"]=wasmExports["sqlite3_initialize"];_sqlite3_shutdown=Module["_sqlite3_shutdown"]=wasmExports["sqlite3_shutdown"];_sqlite3_config=Module["_sqlite3_config"]=wasmExports["sqlite3_config"];_sqlite3_db_mutex=Module["_sqlite3_db_mutex"]=wasmExports["sqlite3_db_mutex"];_sqlite3_db_release_memory=Module["_sqlite3_db_release_memory"]=wasmExports["sqlite3_db_release_memory"];_sqlite3_db_cacheflush=Module["_sqlite3_db_cacheflush"]=wasmExports["sqlite3_db_cacheflush"];_sqlite3_db_config=Module["_sqlite3_db_config"]=wasmExports["sqlite3_db_config"];_sqlite3_last_insert_rowid=Module["_sqlite3_last_insert_rowid"]=wasmExports["sqlite3_last_insert_rowid"];_sqlite3_set_last_insert_rowid=Module["_sqlite3_set_last_insert_rowid"]=wasmExports["sqlite3_set_last_insert_rowid"];_sqlite3_changes64=Module["_sqlite3_changes64"]=wasmExports["sqlite3_changes64"];_sqlite3_changes=Module["_sqlite3_changes"]=wasmExports["sqlite3_changes"];_sqlite3_total_changes64=Module["_sqlite3_total_changes64"]=wasmExports["sqlite3_total_changes64"];_sqlite3_total_changes=Module["_sqlite3_total_changes"]=wasmExports["sqlite3_total_changes"];_sqlite3_txn_state=Module["_sqlite3_txn_state"]=wasmExports["sqlite3_txn_state"];_sqlite3_close=Module["_sqlite3_close"]=wasmExports["sqlite3_close"];_sqlite3_close_v2=Module["_sqlite3_close_v2"]=wasmExports["sqlite3_close_v2"];_sqlite3_busy_handler=Module["_sqlite3_busy_handler"]=wasmExports["sqlite3_busy_handler"];_sqlite3_progress_handler=Module["_sqlite3_progress_handler"]=wasmExports["sqlite3_progress_handler"];_sqlite3_busy_timeout=Module["_sqlite3_busy_timeout"]=wasmExports["sqlite3_busy_timeout"];_sqlite3_interrupt=Module["_sqlite3_interrupt"]=wasmExports["sqlite3_interrupt"];_sqlite3_is_interrupted=Module["_sqlite3_is_interrupted"]=wasmExports["sqlite3_is_interrupted"];_sqlite3_create_function=Module["_sqlite3_create_function"]=wasmExports["sqlite3_create_function"];_sqlite3_create_function_v2=Module["_sqlite3_create_function_v2"]=wasmExports["sqlite3_create_function_v2"];_sqlite3_create_window_function=Module["_sqlite3_create_window_function"]=wasmExports["sqlite3_create_window_function"];_sqlite3_create_function16=Module["_sqlite3_create_function16"]=wasmExports["sqlite3_create_function16"];_sqlite3_overload_function=Module["_sqlite3_overload_function"]=wasmExports["sqlite3_overload_function"];_sqlite3_trace_v2=Module["_sqlite3_trace_v2"]=wasmExports["sqlite3_trace_v2"];_sqlite3_commit_hook=Module["_sqlite3_commit_hook"]=wasmExports["sqlite3_commit_hook"];_sqlite3_update_hook=Module["_sqlite3_update_hook"]=wasmExports["sqlite3_update_hook"];_sqlite3_rollback_hook=Module["_sqlite3_rollback_hook"]=wasmExports["sqlite3_rollback_hook"];_sqlite3_autovacuum_pages=Module["_sqlite3_autovacuum_pages"]=wasmExports["sqlite3_autovacuum_pages"];_sqlite3_wal_autocheckpoint=Module["_sqlite3_wal_autocheckpoint"]=wasmExports["sqlite3_wal_autocheckpoint"];_sqlite3_wal_hook=Module["_sqlite3_wal_hook"]=wasmExports["sqlite3_wal_hook"];_sqlite3_wal_checkpoint_v2=Module["_sqlite3_wal_checkpoint_v2"]=wasmExports["sqlite3_wal_checkpoint_v2"];_sqlite3_wal_checkpoint=Module["_sqlite3_wal_checkpoint"]=wasmExports["sqlite3_wal_checkpoint"];_sqlite3_error_offset=Module["_sqlite3_error_offset"]=wasmExports["sqlite3_error_offset"];_sqlite3_errmsg16=Module["_sqlite3_errmsg16"]=wasmExports["sqlite3_errmsg16"];_sqlite3_errcode=Module["_sqlite3_errcode"]=wasmExports["sqlite3_errcode"];_sqlite3_extended_errcode=Module["_sqlite3_extended_errcode"]=wasmExports["sqlite3_extended_errcode"];_sqlite3_system_errno=Module["_sqlite3_system_errno"]=wasmExports["sqlite3_system_errno"];_sqlite3_errstr=Module["_sqlite3_errstr"]=wasmExports["sqlite3_errstr"];_sqlite3_limit=Module["_sqlite3_limit"]=wasmExports["sqlite3_limit"];_sqlite3_open=Module["_sqlite3_open"]=wasmExports["sqlite3_open"];_sqlite3_open_v2=Module["_sqlite3_open_v2"]=wasmExports["sqlite3_open_v2"];_sqlite3_open16=Module["_sqlite3_open16"]=wasmExports["sqlite3_open16"];_sqlite3_create_collation=Module["_sqlite3_create_collation"]=wasmExports["sqlite3_create_collation"];_sqlite3_create_collation_v2=Module["_sqlite3_create_collation_v2"]=wasmExports["sqlite3_create_collation_v2"];_sqlite3_create_collation16=Module["_sqlite3_create_collation16"]=wasmExports["sqlite3_create_collation16"];_sqlite3_collation_needed=Module["_sqlite3_collation_needed"]=wasmExports["sqlite3_collation_needed"];_sqlite3_collation_needed16=Module["_sqlite3_collation_needed16"]=wasmExports["sqlite3_collation_needed16"];_sqlite3_get_clientdata=Module["_sqlite3_get_clientdata"]=wasmExports["sqlite3_get_clientdata"];_sqlite3_set_clientdata=Module["_sqlite3_set_clientdata"]=wasmExports["sqlite3_set_clientdata"];_sqlite3_get_autocommit=Module["_sqlite3_get_autocommit"]=wasmExports["sqlite3_get_autocommit"];_sqlite3_table_column_metadata=Module["_sqlite3_table_column_metadata"]=wasmExports["sqlite3_table_column_metadata"];_sqlite3_sleep=Module["_sqlite3_sleep"]=wasmExports["sqlite3_sleep"];_sqlite3_extended_result_codes=Module["_sqlite3_extended_result_codes"]=wasmExports["sqlite3_extended_result_codes"];_sqlite3_file_control=Module["_sqlite3_file_control"]=wasmExports["sqlite3_file_control"];_sqlite3_test_control=Module["_sqlite3_test_control"]=wasmExports["sqlite3_test_control"];_sqlite3_create_filename=Module["_sqlite3_create_filename"]=wasmExports["sqlite3_create_filename"];_sqlite3_free_filename=Module["_sqlite3_free_filename"]=wasmExports["sqlite3_free_filename"];_sqlite3_uri_parameter=Module["_sqlite3_uri_parameter"]=wasmExports["sqlite3_uri_parameter"];_sqlite3_uri_key=Module["_sqlite3_uri_key"]=wasmExports["sqlite3_uri_key"];_sqlite3_uri_boolean=Module["_sqlite3_uri_boolean"]=wasmExports["sqlite3_uri_boolean"];_sqlite3_uri_int64=Module["_sqlite3_uri_int64"]=wasmExports["sqlite3_uri_int64"];_sqlite3_filename_database=Module["_sqlite3_filename_database"]=wasmExports["sqlite3_filename_database"];_sqlite3_filename_journal=Module["_sqlite3_filename_journal"]=wasmExports["sqlite3_filename_journal"];_sqlite3_filename_wal=Module["_sqlite3_filename_wal"]=wasmExports["sqlite3_filename_wal"];_sqlite3_db_name=Module["_sqlite3_db_name"]=wasmExports["sqlite3_db_name"];_sqlite3_db_filename=Module["_sqlite3_db_filename"]=wasmExports["sqlite3_db_filename"];_sqlite3_db_readonly=Module["_sqlite3_db_readonly"]=wasmExports["sqlite3_db_readonly"];_sqlite3_compileoption_used=Module["_sqlite3_compileoption_used"]=wasmExports["sqlite3_compileoption_used"];_sqlite3_compileoption_get=Module["_sqlite3_compileoption_get"]=wasmExports["sqlite3_compileoption_get"];_sqlite3_sourceid=Module["_sqlite3_sourceid"]=wasmExports["sqlite3_sourceid"];_malloc=Module["_malloc"]=wasmExports["malloc"];_free=Module["_free"]=wasmExports["free"];_RegisterExtensionFunctions=Module["_RegisterExtensionFunctions"]=wasmExports["RegisterExtensionFunctions"];_getSqliteFree=Module["_getSqliteFree"]=wasmExports["getSqliteFree"];_main=Module["_main"]=wasmExports["main"];_libauthorizer_set_authorizer=Module["_libauthorizer_set_authorizer"]=wasmExports["libauthorizer_set_authorizer"];_libfunction_create_function=Module["_libfunction_create_function"]=wasmExports["libfunction_create_function"];_libhook_commit_hook=Module["_libhook_commit_hook"]=wasmExports["libhook_commit_hook"];_libhook_update_hook=Module["_libhook_update_hook"]=wasmExports["libhook_update_hook"];_libprogress_progress_handler=Module["_libprogress_progress_handler"]=wasmExports["libprogress_progress_handler"];_libvfs_vfs_register=Module["_libvfs_vfs_register"]=wasmExports["libvfs_vfs_register"];_emscripten_builtin_memalign=wasmExports["emscripten_builtin_memalign"];__emscripten_timeout=wasmExports["_emscripten_timeout"];_setThrew=wasmExports["setThrew"];__emscripten_tempret_set=wasmExports["_emscripten_tempret_set"];__emscripten_tempret_get=wasmExports["_emscripten_tempret_get"];__emscripten_stack_restore=wasmExports["_emscripten_stack_restore"];__emscripten_stack_alloc=wasmExports["_emscripten_stack_alloc"];_emscripten_stack_get_current=wasmExports["emscripten_stack_get_current"];___cxa_can_catch=wasmExports["__cxa_can_catch"];dynCall_viiiiij=wasmExports["dynCall_viiiiij"];dynCall_viji=wasmExports["dynCall_viji"];dynCall_viiiij=wasmExports["dynCall_viiiij"];dynCall_iij=wasmExports["dynCall_iij"];dynCall_iiiij=wasmExports["dynCall_iiiij"];dynCall_iijii=wasmExports["dynCall_iijii"];dynCall_iiji=wasmExports["dynCall_iiji"];dynCall_iiiiiij=wasmExports["dynCall_iiiiiij"];wasmMemory=wasmExports["memory"];wasmTable=wasmExports["__indirect_function_table"]}var _sqlite3_version=Module["_sqlite3_version"]=60496;var __ZN19treecrdt_sqlite_ext9extension18_TREECRDT_INIT_REF17hab8690d9f9641fe9E=Module["__ZN19treecrdt_sqlite_ext9extension18_TREECRDT_INIT_REF17hab8690d9f9641fe9E"]=89056;var wasmImports={__assert_fail:___assert_fail,__cxa_find_matching_catch_2:___cxa_find_matching_catch_2,__cxa_throw:___cxa_throw,__resumeException:___resumeException,__syscall_chmod:___syscall_chmod,__syscall_faccessat:___syscall_faccessat,__syscall_fchmod:___syscall_fchmod,__syscall_fchown32:___syscall_fchown32,__syscall_fcntl64:___syscall_fcntl64,__syscall_fstat64:___syscall_fstat64,__syscall_ftruncate64:___syscall_ftruncate64,__syscall_getcwd:___syscall_getcwd,__syscall_lstat64:___syscall_lstat64,__syscall_mkdirat:___syscall_mkdirat,__syscall_newfstatat:___syscall_newfstatat,__syscall_openat:___syscall_openat,__syscall_readlinkat:___syscall_readlinkat,__syscall_rmdir:___syscall_rmdir,__syscall_stat64:___syscall_stat64,__syscall_unlinkat:___syscall_unlinkat,__syscall_utimensat:___syscall_utimensat,_abort_js:__abort_js,_emscripten_runtime_keepalive_clear:__emscripten_runtime_keepalive_clear,_localtime_js:__localtime_js,_mmap_js:__mmap_js,_munmap_js:__munmap_js,_setitimer_js:__setitimer_js,_tzset_js:__tzset_js,emscripten_date_now:_emscripten_date_now,emscripten_get_heap_max:_emscripten_get_heap_max,emscripten_get_now:_emscripten_get_now,emscripten_resize_heap:_emscripten_resize_heap,environ_get:_environ_get,environ_sizes_get:_environ_sizes_get,fd_close:_fd_close,fd_fdstat_get:_fd_fdstat_get,fd_read:_fd_read,fd_seek:_fd_seek,fd_sync:_fd_sync,fd_write:_fd_write,invoke_ii,invoke_iii,invoke_iiii,invoke_iiiiii,invoke_vi,invoke_vii,invoke_viii,invoke_viiii,invoke_viiiii,invoke_viiiiii,invoke_viiiiij,ipp:_ipp,ipp_async:_ipp_async,ippipppp:_ippipppp,ippipppp_async:_ippipppp_async,ippp:_ippp,ippp_async:_ippp_async,ipppi:_ipppi,ipppi_async:_ipppi_async,ipppiii:_ipppiii,ipppiii_async:_ipppiii_async,ipppiiip:_ipppiiip,ipppiiip_async:_ipppiiip_async,ipppip:_ipppip,ipppip_async:_ipppip_async,ipppj:_ipppj,ipppj_async:_ipppj_async,ipppp:_ipppp,ipppp_async:_ipppp_async,ippppi:_ippppi,ippppi_async:_ippppi_async,ippppij:_ippppij,ippppij_async:_ippppij_async,ippppip:_ippppip,ippppip_async:_ippppip_async,ipppppip:_ipppppip,ipppppip_async:_ipppppip_async,proc_exit:_proc_exit,random_get:_random_get,vppippii:_vppippii,vppippii_async:_vppippii_async,vppp:_vppp,vppp_async:_vppp_async,vpppip:_vpppip,vpppip_async:_vpppip_async};function invoke_iii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiij(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{dynCall_viiiiij(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}async function callMain(){var entryFunction=_main;var argc=0;var argv=0;try{var ret=entryFunction(argc,argv);ret=await ret;exitJS(ret,true);return ret}catch(e){return handleException(e)}}function run(){if(runDependencies>0){dependenciesFulfilled=run;return}preRun();if(runDependencies>0){dependenciesFulfilled=run;return}async function doRun(){Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();readyPromiseResolve?.(Module);Module["onRuntimeInitialized"]?.();var noInitialRun=Module["noInitialRun"]||false;if(!noInitialRun)await callMain();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(()=>{setTimeout(()=>Module["setStatus"](""),1);doRun()},1)}else{doRun()}}var wasmExports;wasmExports=await (createWasm());run();(function(){const AsyncFunction=Object.getPrototypeOf(async function(){}).constructor;let pAsyncFlags=0;Module["set_authorizer"]=function(db,xAuthorizer,pApp){if(pAsyncFlags){Module["deleteCallback"](pAsyncFlags);Module["_sqlite3_free"](pAsyncFlags);pAsyncFlags=0}pAsyncFlags=Module["_sqlite3_malloc"](4);setValue(pAsyncFlags,xAuthorizer instanceof AsyncFunction?1:0,"i32");const result=ccall("libauthorizer_set_authorizer","number",["number","number","number"],[db,xAuthorizer?1:0,pAsyncFlags]);if(!result&&xAuthorizer){Module["setCallback"](pAsyncFlags,(_,iAction,p3,p4,p5,p6)=>xAuthorizer(pApp,iAction,p3,p4,p5,p6))}return result}})();(function(){const AsyncFunction=Object.getPrototypeOf(async function(){}).constructor;const FUNC_METHODS=["xFunc","xStep","xFinal"];const mapFunctionNameToKey=new Map;Module["create_function"]=function(db,zFunctionName,nArg,eTextRep,pApp,xFunc,xStep,xFinal){const pAsyncFlags=Module["_sqlite3_malloc"](4);const target={xFunc,xStep,xFinal};setValue(pAsyncFlags,FUNC_METHODS.reduce((mask,method,i)=>{if(target[method]instanceof AsyncFunction){return mask|1<xUpdateHook(iUpdateType,dbName,tblName,lo32,hi32))}}})();(function(){const AsyncFunction=Object.getPrototypeOf(async function(){}).constructor;let pAsyncFlags=0;Module["commit_hook"]=function(db,xCommitHook){if(pAsyncFlags){Module["deleteCallback"](pAsyncFlags);Module["_sqlite3_free"](pAsyncFlags);pAsyncFlags=0}pAsyncFlags=Module["_sqlite3_malloc"](4);setValue(pAsyncFlags,xCommitHook instanceof AsyncFunction?1:0,"i32");ccall("libhook_commit_hook","void",["number","number","number"],[db,xCommitHook?1:0,pAsyncFlags]);if(xCommitHook){Module["setCallback"](pAsyncFlags,_=>xCommitHook())}}})();(function(){const AsyncFunction=Object.getPrototypeOf(async function(){}).constructor;let pAsyncFlags=0;Module["progress_handler"]=function(db,nOps,xProgress,pApp){if(pAsyncFlags){Module["deleteCallback"](pAsyncFlags);Module["_sqlite3_free"](pAsyncFlags);pAsyncFlags=0}pAsyncFlags=Module["_sqlite3_malloc"](4);setValue(pAsyncFlags,xProgress instanceof AsyncFunction?1:0,"i32");ccall("libprogress_progress_handler","number",["number","number","number","number"],[db,nOps,xProgress?1:0,pAsyncFlags]);if(xProgress){Module["setCallback"](pAsyncFlags,_=>xProgress(pApp))}}})();(function(){const VFS_METHODS=["xOpen","xDelete","xAccess","xFullPathname","xRandomness","xSleep","xCurrentTime","xGetLastError","xCurrentTimeInt64","xClose","xRead","xWrite","xTruncate","xSync","xFileSize","xLock","xUnlock","xCheckReservedLock","xFileControl","xSectorSize","xDeviceCharacteristics","xShmMap","xShmLock","xShmBarrier","xShmUnmap"];const mapVFSNameToKey=new Map;Module["vfs_register"]=function(vfs,makeDefault){let methodMask=0;let asyncMask=0;VFS_METHODS.forEach((method,i)=>{if(vfs[method]){methodMask|=1<{readyPromiseResolve=resolve;readyPromiseReject=reject})} -;return moduleRtn}export default Module; + +var Module = (() => { + var _scriptName = import.meta.url; + + return ( +function(moduleArg = {}) { + var moduleRtn; + +var Module=moduleArg;var readyPromiseResolve,readyPromiseReject;var readyPromise=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary;if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptName){scriptDirectory=_scriptName}if(scriptDirectory.startsWith("blob:")){scriptDirectory=""}else{scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{fetch(url,{credentials:"same-origin"}).then(response=>{if(response.ok){return response.arrayBuffer()}return Promise.reject(new Error(response.status+" : "+response.url))}).then(onload,onerror)}}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var wasmMemory;var ABORT=false;var EXITSTATUS;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b)}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;Module["monitorRunDependencies"]?.(runDependencies)}function removeRunDependency(id){runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){Module["onAbort"]?.(what);what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix="data:application/octet-stream;base64,";var isDataURI=filename=>filename.startsWith(dataURIPrefix);function findWasmBinary(){if(Module["locateFile"]){var f="wa-sqlite-jspi.wasm";if(!isDataURI(f)){return locateFile(f)}return f}return new URL("wa-sqlite-jspi.wasm",import.meta.url).href}var wasmBinaryFile;function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}function getBinaryPromise(binaryFile){if(!wasmBinary){return new Promise((resolve,reject)=>{readAsync(binaryFile,response=>resolve(new Uint8Array(response)),error=>{try{resolve(getBinarySync(binaryFile))}catch(e){reject(e)}})})}return Promise.resolve().then(()=>getBinarySync(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>WebAssembly.instantiate(binary,imports)).then(receiver,reason=>{err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)})})}return instantiateArrayBuffer(binaryFile,imports,callback)}function getWasmImports(){Asyncify.instrumentWasmImports(wasmImports);return{env:wasmImports,wasi_snapshot_preview1:wasmImports}}function createWasm(){var info=getWasmImports();function receiveInstance(instance,module){wasmExports=instance.exports;wasmExports=Asyncify.instrumentWasmExports(wasmExports);wasmMemory=wasmExports["memory"];updateMemoryViews();wasmTable=wasmExports["__indirect_function_table"];addOnInit(wasmExports["__wasm_call_ctors"]);removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);readyPromiseReject(e)}}if(!wasmBinaryFile)wasmBinaryFile=findWasmBinary();instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult).catch(readyPromiseReject);return{}}var tempDouble;var tempI64;function ExitStatus(status){this.name="ExitStatus";this.message=`Program terminated with exit(${status})`;this.status=status}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};function getValue(ptr,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":return HEAP8[ptr];case"i8":return HEAP8[ptr];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":abort("to do getValue(i64) use WASM_BIGINT");case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];case"*":return HEAPU32[ptr>>2];default:abort(`invalid type for getValue: ${type}`)}}var noExitRuntime=Module["noExitRuntime"]||true;function setValue(ptr,value,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":HEAP8[ptr]=value;break;case"i8":HEAP8[ptr]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":abort("to do setValue(i64) use WASM_BIGINT");case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;case"*":HEAPU32[ptr>>2]=value;break;default:abort(`invalid type for setValue: ${type}`)}}var stackRestore=val=>__emscripten_stack_restore(val);var stackSave=()=>_emscripten_stack_get_current();var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;var UTF8ArrayToString=(heapOrArray,idx,maxBytesToRead)=>{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str};var UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):"";var ___assert_fail=(condition,filename,line,func)=>{abort(`Assertion failed: ${UTF8ToString(condition)}, at: `+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"])};var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:(...paths)=>PATH.normalize(paths.join("/")),join2:(l,r)=>PATH.normalize(l+"/"+r)};var initRandomFill=()=>{if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){return view=>crypto.getRandomValues(view)}else abort("initRandomDevice")};var randomFill=view=>(randomFill=initRandomFill())(view);var PATH_FS={resolve:(...args)=>{var resolvedPath="",resolvedAbsolute=false;for(var i=args.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?args[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx};function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(typeof window!="undefined"&&typeof window.prompt=="function"){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:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close(stream){stream.tty.ops.fsync(stream.tty)},fsync(stream){stream.tty.ops.fsync(stream.tty)},read(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}},ioctl_tcgets(tty){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(tty,optional_actions,data){return 0},ioctl_tiocgwinsz(tty){return[24,80]}},default_tty1_ops:{put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};var zeroMemory=(address,size)=>{HEAPU8.fill(0,address,address+size);return address};var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var mmapAlloc=size=>{size=alignMemory(size,65536);var ptr=_emscripten_builtin_memalign(65536,size);if(!ptr)return 0;return zeroMemory(ptr,size)};var MEMFS={ops_table:null,mount(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}MEMFS.ops_table||={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}};var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup(parent,name){throw FS.genericErrors[44]},mknod(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp},unlink(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir(node){var entries=[".",".."];for(var key of Object.keys(node.contents)){entries.push(key)}return entries},symlink(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{var dep=!noRunDep?getUniqueRunDependency(`al ${url}`):"";readAsync(url,arrayBuffer=>{onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},event=>{if(onerror){onerror()}else{throw`Loading data file "${url}" failed.`}});if(dep)addRunDependency(dep)};var FS_createDataFile=(parent,name,fileData,canRead,canWrite,canOwn)=>{FS.createDataFile(parent,name,fileData,canRead,canWrite,canOwn)};var preloadPlugins=Module["preloadPlugins"]||[];var FS_handledByPreloadPlugin=(byteArray,fullname,finish,onerror)=>{if(typeof Browser!="undefined")Browser.init();var handled=false;preloadPlugins.forEach(plugin=>{if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,onerror);handled=true}});return handled};var FS_createPreloadedFile=(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);function processData(byteArray){function finish(byteArray){preFinish?.();if(!dontCreateFile){FS_createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}onload?.();removeRunDependency(dep)}if(FS_handledByPreloadPlugin(byteArray,fullname,finish,()=>{onerror?.();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url,processData,onerror)}else{processData(url)}};var FS_modeStringToFlags=str=>{var flagModes={r:0,"r+":2,w:512|64|1,"w+":512|64|2,a:1024|64|1,"a+":1024|64|2};var flags=flagModes[str];if(typeof flags=="undefined"){throw new Error(`Unknown file open mode: ${str}`)}return flags};var FS_getMode=(canRead,canWrite)=>{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:class{constructor(errno){this.name="ErrnoError";this.errno=errno}},genericErrors:{},filesystems:null,syncFSRequests:0,FSStream:class{constructor(){this.shared={}}get object(){return this.node}set object(val){this.node=val}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(val){this.shared.flags=val}get position(){return this.shared.position}set position(val){this.shared.position=val}},FSNode:class{constructor(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev;this.readMode=292|73;this.writeMode=146}get read(){return(this.mode&this.readMode)===this.readMode}set read(val){val?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(val){val?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return FS.isDir(this.mode)}get isDevice(){return FS.isChrdev(this.mode)}},lookupPath(path,opts={}){path=PATH_FS.resolve(path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?`${mount}/${path}`:mount+path}path=path?`${node.name}/${path}`:node.name;node=node.parent}},hashName(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode(node){FS.hashRemoveNode(node)},isRoot(node){return node===node.parent},isMountpoint(node){return!!node.mounted},isFile(mode){return(mode&61440)===32768},isDir(mode){return(mode&61440)===16384},isLink(mode){return(mode&61440)===40960},isChrdev(mode){return(mode&61440)===8192},isBlkdev(mode){return(mode&61440)===24576},isFIFO(mode){return(mode&61440)===4096},isSocket(mode){return(mode&49152)===49152},flagsToPermissionString(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions(node,perms){if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup(dir){if(!FS.isDir(dir.mode))return 54;var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd(){for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStreamChecked(fd){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}return stream},getStream:fd=>FS.streams[fd],createStream(stream,fd=-1){stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream(fd){FS.streams[fd]=null},dupStream(origStream,fd=-1){var stream=FS.createStream(origStream,fd);stream.stream_ops?.dup?.(stream);return stream},chrdev_stream_ops:{open(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;stream.stream_ops.open?.(stream)},llseek(){throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push(...m.mounts)}return mounts},syncfs(populate,callback){if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup(parent,name){return parent.node_ops.lookup(parent,name)},mknod(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree(path,mode){var dirs=path.split("/");var d="";for(var i=0;iFS.currentPath,chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(randomLeft===0){randomLeft=randomFill(randomBuffer).byteLength}return randomBuffer[--randomLeft]};FS.createDevice("/dev","random",randomByte);FS.createDevice("/dev","urandom",randomByte);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount(){var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup(parent,name){var fd=+name;var stream=FS.getStreamChecked(fd);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams(){if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},staticInit(){[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""});FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={MEMFS:MEMFS}},init(input,output,error){FS.init.initialized=true;Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit(){FS.init.initialized=false;for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]}setDataGetter(getter){this.getter=getter}cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true}get length(){if(!this.lengthKnown){this.cacheLength()}return this._length}get chunkSize(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}if(typeof XMLHttpRequest!="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=(...args)=>{FS.forceLoadFile(node);return fn(...args)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr:ptr,allocated:true}};node.stream_ops=stream_ops;return node}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat(func,path,buf){var stat=func(path);HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=stat.mode;HEAPU32[buf+8>>2]=stat.nlink;HEAP32[buf+12>>2]=stat.uid;HEAP32[buf+16>>2]=stat.gid;HEAP32[buf+20>>2]=stat.rdev;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+24>>2]=tempI64[0],HEAP32[buf+28>>2]=tempI64[1];HEAP32[buf+32>>2]=4096;HEAP32[buf+36>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();tempI64=[Math.floor(atime/1e3)>>>0,(tempDouble=Math.floor(atime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAPU32[buf+48>>2]=atime%1e3*1e3;tempI64=[Math.floor(mtime/1e3)>>>0,(tempDouble=Math.floor(mtime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+56>>2]=tempI64[0],HEAP32[buf+60>>2]=tempI64[1];HEAPU32[buf+64>>2]=mtime%1e3*1e3;tempI64=[Math.floor(ctime/1e3)>>>0,(tempDouble=Math.floor(ctime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+72>>2]=tempI64[0],HEAP32[buf+76>>2]=tempI64[1];HEAPU32[buf+80>>2]=ctime%1e3*1e3;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+88>>2]=tempI64[0],HEAP32[buf+92>>2]=tempI64[1];return 0},doMsync(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},getStreamFromFD(fd){var stream=FS.getStreamChecked(fd);return stream},varargs:undefined,getStr(ptr){var ret=UTF8ToString(ptr);return ret}};function ___syscall_chmod(path,mode){try{path=SYSCALLS.getStr(path);FS.chmod(path,mode);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_faccessat(dirfd,path,amode,flags){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_fchmod(fd,mode){try{FS.fchmod(fd,mode);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_fchown32(fd,owner,group){try{FS.fchown(fd,owner,group);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function 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();stream.flags|=arg;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{var stream=SYSCALLS.getStreamFromFD(fd);return SYSCALLS.doStat(FS.stat,stream.path,buf)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var convertI32PairToI53Checked=(lo,hi)=>hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN;function ___syscall_ftruncate64(fd,length_low,length_high){var length=convertI32PairToI53Checked(length_low,length_high);try{if(isNaN(length))return 61;FS.ftruncate(fd,length);return 0}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(sizeHEAPU32[ptr>>2]+HEAP32[ptr+4>>2]*4294967296;function ___syscall_utimensat(dirfd,path,times,flags){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path,true);if(!times){var atime=Date.now();var mtime=atime}else{var seconds=readI53FromI64(times);var nanoseconds=HEAP32[times+8>>2];atime=seconds*1e3+nanoseconds/(1e3*1e3);times+=16;seconds=readI53FromI64(times);nanoseconds=HEAP32[times+8>>2];mtime=seconds*1e3+nanoseconds/(1e3*1e3)}FS.utime(path,atime,mtime);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var isLeapYear=year=>year%4===0&&(year%100!==0||year%400===0);var MONTH_DAYS_LEAP_CUMULATIVE=[0,31,60,91,121,152,182,213,244,274,305,335];var MONTH_DAYS_REGULAR_CUMULATIVE=[0,31,59,90,120,151,181,212,243,273,304,334];var ydayFromDate=date=>{var leap=isLeapYear(date.getFullYear());var monthDaysCumulative=leap?MONTH_DAYS_LEAP_CUMULATIVE:MONTH_DAYS_REGULAR_CUMULATIVE;var yday=monthDaysCumulative[date.getMonth()]+date.getDate()-1;return yday};function __localtime_js(time_low,time_high,tmPtr){var time=convertI32PairToI53Checked(time_low,time_high);var date=new Date(time*1e3);HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getDay();var yday=ydayFromDate(date)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr+36>>2]=-(date.getTimezoneOffset()*60);var start=new Date(date.getFullYear(),0,1);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dst=(summerOffset!=winterOffset&&date.getTimezoneOffset()==Math.min(winterOffset,summerOffset))|0;HEAP32[tmPtr+32>>2]=dst}function __mmap_js(len,prot,flags,fd,offset_low,offset_high,allocated,addr){var offset=convertI32PairToI53Checked(offset_low,offset_high);try{if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);var res=FS.mmap(stream,len,offset,prot,flags);var ptr=res.ptr;HEAP32[allocated>>2]=res.allocated;HEAPU32[addr>>2]=ptr;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function __munmap_js(addr,len,prot,flags,fd,offset_low,offset_high){var offset=convertI32PairToI53Checked(offset_low,offset_high);try{var stream=SYSCALLS.getStreamFromFD(fd);if(prot&2){SYSCALLS.doMsync(addr,stream,len,flags,offset)}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var __tzset_js=(timezone,daylight,std_name,dst_name)=>{var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);var winterOffset=winter.getTimezoneOffset();var summerOffset=summer.getTimezoneOffset();var stdTimezoneOffset=Math.max(winterOffset,summerOffset);HEAPU32[timezone>>2]=stdTimezoneOffset*60;HEAP32[daylight>>2]=Number(winterOffset!=summerOffset);var extractZone=date=>date.toLocaleTimeString(undefined,{hour12:false,timeZoneName:"short"}).split(" ")[1];var winterName=extractZone(winter);var summerName=extractZone(summer);if(summerOffsetDate.now();var _emscripten_get_now;_emscripten_get_now=()=>performance.now();var getHeapMax=()=>2147483648;var growMemory=size=>{var b=wasmMemory.buffer;var pages=(size-b.byteLength+65535)/65536;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}var alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var ENV={};var getExecutableName=()=>thisProgram||"./this.program";var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:lang,_:getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var stringToAscii=(str,buffer)=>{for(var i=0;i{var bufSize=0;getEnvStrings().forEach((string,i)=>{var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0};var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(string=>bufSize+=string.length+1);HEAPU32[penviron_buf_size>>2]=bufSize;return 0};function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}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;tempI64=[rightsBase>>>0,(tempDouble=rightsBase,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[pbuf+8>>2]=tempI64[0],HEAP32[pbuf+12>>2]=tempI64[1];tempI64=[rightsInheriting>>>0,(tempDouble=rightsInheriting,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[pbuf+16>>2]=tempI64[0],HEAP32[pbuf+20>>2]=tempI64[1];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_low,offset_high,whence,newOffset){var offset=convertI32PairToI53Checked(offset_low,offset_high);try{if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var _fd_sync=function(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);return Asyncify.handleSleep(wakeUp=>{var mount=stream.node.mount;if(!mount.type.syncfs){wakeUp(0);return}mount.type.syncfs(mount,false,err=>{if(err){wakeUp(29);return}wakeUp(0)})})}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}};_fd_sync.isAsync=true;var doWritev=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(typeof offset!="undefined"){offset+=curr}}return ret};function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var adapters_support=function(){const handleAsync=typeof Asyncify==="object"?Asyncify.handleAsync.bind(Asyncify):null;Module["handleAsync"]=handleAsync;const targets=new Map;Module["setCallback"]=(key,target)=>targets.set(key,target);Module["getCallback"]=key=>targets.get(key);Module["deleteCallback"]=key=>targets.delete(key);adapters_support=function(isAsync,key,...args){const receiver=targets.get(key);let methodName=null;const f=typeof receiver==="function"?receiver:receiver[methodName=UTF8ToString(args.shift())];if(isAsync){if(handleAsync){return handleAsync(()=>f.apply(receiver,args))}throw new Error("Synchronous WebAssembly cannot call async function")}const result=f.apply(receiver,args);if(typeof result?.then=="function"){console.error("unexpected Promise",f);throw new Error(`${methodName} unexpectedly returned a Promise`)}return result}};function _ipp(...args){return adapters_support(false,...args)}function _ipp_async(...args){return adapters_support(true,...args)}_ipp_async.isAsync=true;function _ippipppp(...args){return adapters_support(false,...args)}function _ippipppp_async(...args){return adapters_support(true,...args)}_ippipppp_async.isAsync=true;function _ippp(...args){return adapters_support(false,...args)}function _ippp_async(...args){return adapters_support(true,...args)}_ippp_async.isAsync=true;function _ipppi(...args){return adapters_support(false,...args)}function _ipppi_async(...args){return adapters_support(true,...args)}_ipppi_async.isAsync=true;function _ipppiii(...args){return adapters_support(false,...args)}function _ipppiii_async(...args){return adapters_support(true,...args)}_ipppiii_async.isAsync=true;function _ipppiiip(...args){return adapters_support(false,...args)}function _ipppiiip_async(...args){return adapters_support(true,...args)}_ipppiiip_async.isAsync=true;function _ipppip(...args){return adapters_support(false,...args)}function _ipppip_async(...args){return adapters_support(true,...args)}_ipppip_async.isAsync=true;function _ipppj(...args){return adapters_support(false,...args)}function _ipppj_async(...args){return adapters_support(true,...args)}_ipppj_async.isAsync=true;function _ipppp(...args){return adapters_support(false,...args)}function _ipppp_async(...args){return adapters_support(true,...args)}_ipppp_async.isAsync=true;function _ippppi(...args){return adapters_support(false,...args)}function _ippppi_async(...args){return adapters_support(true,...args)}_ippppi_async.isAsync=true;function _ippppij(...args){return adapters_support(false,...args)}function _ippppij_async(...args){return adapters_support(true,...args)}_ippppij_async.isAsync=true;function _ippppip(...args){return adapters_support(false,...args)}function _ippppip_async(...args){return adapters_support(true,...args)}_ippppip_async.isAsync=true;function _ipppppip(...args){return adapters_support(false,...args)}function _ipppppip_async(...args){return adapters_support(true,...args)}_ipppppip_async.isAsync=true;function _vppippii(...args){return adapters_support(false,...args)}function _vppippii_async(...args){return adapters_support(true,...args)}_vppippii_async.isAsync=true;function _vppp(...args){return adapters_support(false,...args)}function _vppp_async(...args){return adapters_support(true,...args)}_vppp_async.isAsync=true;function _vpppip(...args){return adapters_support(false,...args)}function _vpppip_async(...args){return adapters_support(true,...args)}_vpppip_async.isAsync=true;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 handleException=e=>{if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)};var sigToWasmTypes=sig=>{var typeNames={i:"i32",j:"i64",f:"f32",d:"f64",e:"externref",p:"i32"};var type={parameters:[],results:sig[0]=="v"?[]:[typeNames[sig[0]]]};for(var i=1;ioriginal(...args)}else{ret[x]=original}}return ret},asyncExports:null,isAsyncExport(func){return Asyncify.asyncExports?.has(func)},handleAsync:async startAsync=>{try{return await startAsync()}finally{}},handleSleep(startAsync){return Asyncify.handleAsync(()=>new Promise(startAsync))},makeAsyncFunction(original){return WebAssembly.promising(original)}};var uleb128Encode=(n,target)=>{if(n<128){target.push(n)}else{target.push(n%128|128,n>>7)}};var generateFuncType=(sig,target)=>{var sigRet=sig.slice(0,1);var sigParam=sig.slice(1);var typeCodes={i:127,p:127,j:126,f:125,d:124,e:111};target.push(96);uleb128Encode(sigParam.length,target);for(var i=0;i{if(typeof WebAssembly.Function=="function"){return new WebAssembly.Function(sigToWasmTypes(sig),func)}var typeSectionBody=[1];generateFuncType(sig,typeSectionBody);var bytes=[0,97,115,109,1,0,0,0,1];uleb128Encode(typeSectionBody.length,bytes);bytes.push(...typeSectionBody);bytes.push(2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0);var module=new WebAssembly.Module(new Uint8Array(bytes));var instance=new WebAssembly.Instance(module,{e:{f:func}});var wrappedFunc=instance.exports["f"];return wrappedFunc};var wasmTableMirror=[];var wasmTable;var getWasmTableEntry=funcPtr=>{var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr);if(Asyncify.isAsyncExport(func)){wasmTableMirror[funcPtr]=func=Asyncify.makeAsyncFunction(func)}}return func};var updateTableMap=(offset,count)=>{if(functionsInTableMap){for(var i=offset;i{if(!functionsInTableMap){functionsInTableMap=new WeakMap;updateTableMap(0,wasmTable.length)}return functionsInTableMap.get(func)||0};var freeTableIndexes=[];var getEmptyTableSlot=()=>{if(freeTableIndexes.length){return freeTableIndexes.pop()}try{wasmTable.grow(1)}catch(err){if(!(err instanceof RangeError)){throw err}throw"Unable to grow wasm table. Set ALLOW_TABLE_GROWTH."}return wasmTable.length-1};var setWasmTableEntry=(idx,func)=>{wasmTable.set(idx,func);wasmTableMirror[idx]=wasmTable.get(idx)};var addFunction=(func,sig)=>{var rtn=getFunctionAddress(func);if(rtn){return rtn}var ret=getEmptyTableSlot();try{setWasmTableEntry(ret,func)}catch(err){if(!(err instanceof TypeError)){throw err}var wrapped=convertJsFunctionToWasm(func,sig);setWasmTableEntry(ret,wrapped)}functionsInTableMap.set(func,ret);return ret};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)};var getTempRet0=val=>__emscripten_tempret_get();var stringToUTF16=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr};var stringToUTF32=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr};var AsciiToString=ptr=>{var str="";while(1){var ch=HEAPU8[ptr++];if(!ch)return str;str+=String.fromCharCode(ch)}};var UTF16Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):undefined;var UTF16ToString=(ptr,maxBytesToRead)=>{var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder)return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr));var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str};var UTF32ToString=(ptr,maxBytesToRead)=>{var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str};function intArrayToString(array){var ret=[];for(var i=0;i255){chr&=255}ret.push(String.fromCharCode(chr))}return ret.join("")}FS.createPreloadedFile=FS_createPreloadedFile;FS.staticInit();adapters_support();var wasmImports={__assert_fail:___assert_fail,__syscall_chmod:___syscall_chmod,__syscall_faccessat:___syscall_faccessat,__syscall_fchmod:___syscall_fchmod,__syscall_fchown32:___syscall_fchown32,__syscall_fcntl64:___syscall_fcntl64,__syscall_fstat64:___syscall_fstat64,__syscall_ftruncate64:___syscall_ftruncate64,__syscall_getcwd:___syscall_getcwd,__syscall_lstat64:___syscall_lstat64,__syscall_mkdirat:___syscall_mkdirat,__syscall_newfstatat:___syscall_newfstatat,__syscall_openat:___syscall_openat,__syscall_readlinkat:___syscall_readlinkat,__syscall_rmdir:___syscall_rmdir,__syscall_stat64:___syscall_stat64,__syscall_unlinkat:___syscall_unlinkat,__syscall_utimensat:___syscall_utimensat,_localtime_js:__localtime_js,_mmap_js:__mmap_js,_munmap_js:__munmap_js,_tzset_js:__tzset_js,emscripten_date_now:_emscripten_date_now,emscripten_get_now:_emscripten_get_now,emscripten_resize_heap:_emscripten_resize_heap,environ_get:_environ_get,environ_sizes_get:_environ_sizes_get,fd_close:_fd_close,fd_fdstat_get:_fd_fdstat_get,fd_read:_fd_read,fd_seek:_fd_seek,fd_sync:_fd_sync,fd_write:_fd_write,ipp:_ipp,ipp_async:_ipp_async,ippipppp:_ippipppp,ippipppp_async:_ippipppp_async,ippp:_ippp,ippp_async:_ippp_async,ipppi:_ipppi,ipppi_async:_ipppi_async,ipppiii:_ipppiii,ipppiii_async:_ipppiii_async,ipppiiip:_ipppiiip,ipppiiip_async:_ipppiiip_async,ipppip:_ipppip,ipppip_async:_ipppip_async,ipppj:_ipppj,ipppj_async:_ipppj_async,ipppp:_ipppp,ipppp_async:_ipppp_async,ippppi:_ippppi,ippppi_async:_ippppi_async,ippppij:_ippppij,ippppij_async:_ippppij_async,ippppip:_ippppip,ippppip_async:_ippppip_async,ipppppip:_ipppppip,ipppppip_async:_ipppppip_async,vppippii:_vppippii,vppippii_async:_vppippii_async,vppp:_vppp,vppp_async:_vppp_async,vpppip:_vpppip,vpppip_async:_vpppip_async};var wasmExports=createWasm();var ___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports["__wasm_call_ctors"])();var _sqlite3_status64=Module["_sqlite3_status64"]=(a0,a1,a2,a3)=>(_sqlite3_status64=Module["_sqlite3_status64"]=wasmExports["sqlite3_status64"])(a0,a1,a2,a3);var _sqlite3_status=Module["_sqlite3_status"]=(a0,a1,a2,a3)=>(_sqlite3_status=Module["_sqlite3_status"]=wasmExports["sqlite3_status"])(a0,a1,a2,a3);var _sqlite3_msize=Module["_sqlite3_msize"]=a0=>(_sqlite3_msize=Module["_sqlite3_msize"]=wasmExports["sqlite3_msize"])(a0);var _sqlite3_db_status=Module["_sqlite3_db_status"]=(a0,a1,a2,a3,a4)=>(_sqlite3_db_status=Module["_sqlite3_db_status"]=wasmExports["sqlite3_db_status"])(a0,a1,a2,a3,a4);var _sqlite3_vfs_find=Module["_sqlite3_vfs_find"]=a0=>(_sqlite3_vfs_find=Module["_sqlite3_vfs_find"]=wasmExports["sqlite3_vfs_find"])(a0);var _sqlite3_vfs_register=Module["_sqlite3_vfs_register"]=(a0,a1)=>(_sqlite3_vfs_register=Module["_sqlite3_vfs_register"]=wasmExports["sqlite3_vfs_register"])(a0,a1);var _sqlite3_vfs_unregister=Module["_sqlite3_vfs_unregister"]=a0=>(_sqlite3_vfs_unregister=Module["_sqlite3_vfs_unregister"]=wasmExports["sqlite3_vfs_unregister"])(a0);var _sqlite3_release_memory=Module["_sqlite3_release_memory"]=a0=>(_sqlite3_release_memory=Module["_sqlite3_release_memory"]=wasmExports["sqlite3_release_memory"])(a0);var _sqlite3_soft_heap_limit64=Module["_sqlite3_soft_heap_limit64"]=(a0,a1)=>(_sqlite3_soft_heap_limit64=Module["_sqlite3_soft_heap_limit64"]=wasmExports["sqlite3_soft_heap_limit64"])(a0,a1);var _sqlite3_memory_used=Module["_sqlite3_memory_used"]=()=>(_sqlite3_memory_used=Module["_sqlite3_memory_used"]=wasmExports["sqlite3_memory_used"])();var _sqlite3_hard_heap_limit64=Module["_sqlite3_hard_heap_limit64"]=(a0,a1)=>(_sqlite3_hard_heap_limit64=Module["_sqlite3_hard_heap_limit64"]=wasmExports["sqlite3_hard_heap_limit64"])(a0,a1);var _sqlite3_memory_highwater=Module["_sqlite3_memory_highwater"]=a0=>(_sqlite3_memory_highwater=Module["_sqlite3_memory_highwater"]=wasmExports["sqlite3_memory_highwater"])(a0);var _sqlite3_malloc=Module["_sqlite3_malloc"]=a0=>(_sqlite3_malloc=Module["_sqlite3_malloc"]=wasmExports["sqlite3_malloc"])(a0);var _sqlite3_malloc64=Module["_sqlite3_malloc64"]=(a0,a1)=>(_sqlite3_malloc64=Module["_sqlite3_malloc64"]=wasmExports["sqlite3_malloc64"])(a0,a1);var _sqlite3_free=Module["_sqlite3_free"]=a0=>(_sqlite3_free=Module["_sqlite3_free"]=wasmExports["sqlite3_free"])(a0);var _sqlite3_realloc=Module["_sqlite3_realloc"]=(a0,a1)=>(_sqlite3_realloc=Module["_sqlite3_realloc"]=wasmExports["sqlite3_realloc"])(a0,a1);var _sqlite3_realloc64=Module["_sqlite3_realloc64"]=(a0,a1,a2)=>(_sqlite3_realloc64=Module["_sqlite3_realloc64"]=wasmExports["sqlite3_realloc64"])(a0,a1,a2);var _sqlite3_str_vappendf=Module["_sqlite3_str_vappendf"]=(a0,a1,a2)=>(_sqlite3_str_vappendf=Module["_sqlite3_str_vappendf"]=wasmExports["sqlite3_str_vappendf"])(a0,a1,a2);var _sqlite3_str_append=Module["_sqlite3_str_append"]=(a0,a1,a2)=>(_sqlite3_str_append=Module["_sqlite3_str_append"]=wasmExports["sqlite3_str_append"])(a0,a1,a2);var _sqlite3_str_appendchar=Module["_sqlite3_str_appendchar"]=(a0,a1,a2)=>(_sqlite3_str_appendchar=Module["_sqlite3_str_appendchar"]=wasmExports["sqlite3_str_appendchar"])(a0,a1,a2);var _sqlite3_str_appendall=Module["_sqlite3_str_appendall"]=(a0,a1)=>(_sqlite3_str_appendall=Module["_sqlite3_str_appendall"]=wasmExports["sqlite3_str_appendall"])(a0,a1);var _sqlite3_str_appendf=Module["_sqlite3_str_appendf"]=(a0,a1,a2)=>(_sqlite3_str_appendf=Module["_sqlite3_str_appendf"]=wasmExports["sqlite3_str_appendf"])(a0,a1,a2);var _sqlite3_str_finish=Module["_sqlite3_str_finish"]=a0=>(_sqlite3_str_finish=Module["_sqlite3_str_finish"]=wasmExports["sqlite3_str_finish"])(a0);var _sqlite3_str_errcode=Module["_sqlite3_str_errcode"]=a0=>(_sqlite3_str_errcode=Module["_sqlite3_str_errcode"]=wasmExports["sqlite3_str_errcode"])(a0);var _sqlite3_str_length=Module["_sqlite3_str_length"]=a0=>(_sqlite3_str_length=Module["_sqlite3_str_length"]=wasmExports["sqlite3_str_length"])(a0);var _sqlite3_str_value=Module["_sqlite3_str_value"]=a0=>(_sqlite3_str_value=Module["_sqlite3_str_value"]=wasmExports["sqlite3_str_value"])(a0);var _sqlite3_str_reset=Module["_sqlite3_str_reset"]=a0=>(_sqlite3_str_reset=Module["_sqlite3_str_reset"]=wasmExports["sqlite3_str_reset"])(a0);var _sqlite3_str_new=Module["_sqlite3_str_new"]=a0=>(_sqlite3_str_new=Module["_sqlite3_str_new"]=wasmExports["sqlite3_str_new"])(a0);var _sqlite3_vmprintf=Module["_sqlite3_vmprintf"]=(a0,a1)=>(_sqlite3_vmprintf=Module["_sqlite3_vmprintf"]=wasmExports["sqlite3_vmprintf"])(a0,a1);var _sqlite3_mprintf=Module["_sqlite3_mprintf"]=(a0,a1)=>(_sqlite3_mprintf=Module["_sqlite3_mprintf"]=wasmExports["sqlite3_mprintf"])(a0,a1);var _sqlite3_vsnprintf=Module["_sqlite3_vsnprintf"]=(a0,a1,a2,a3)=>(_sqlite3_vsnprintf=Module["_sqlite3_vsnprintf"]=wasmExports["sqlite3_vsnprintf"])(a0,a1,a2,a3);var _sqlite3_snprintf=Module["_sqlite3_snprintf"]=(a0,a1,a2,a3)=>(_sqlite3_snprintf=Module["_sqlite3_snprintf"]=wasmExports["sqlite3_snprintf"])(a0,a1,a2,a3);var _sqlite3_log=Module["_sqlite3_log"]=(a0,a1,a2)=>(_sqlite3_log=Module["_sqlite3_log"]=wasmExports["sqlite3_log"])(a0,a1,a2);var _sqlite3_randomness=Module["_sqlite3_randomness"]=(a0,a1)=>(_sqlite3_randomness=Module["_sqlite3_randomness"]=wasmExports["sqlite3_randomness"])(a0,a1);var _sqlite3_stricmp=Module["_sqlite3_stricmp"]=(a0,a1)=>(_sqlite3_stricmp=Module["_sqlite3_stricmp"]=wasmExports["sqlite3_stricmp"])(a0,a1);var _sqlite3_strnicmp=Module["_sqlite3_strnicmp"]=(a0,a1,a2)=>(_sqlite3_strnicmp=Module["_sqlite3_strnicmp"]=wasmExports["sqlite3_strnicmp"])(a0,a1,a2);var _sqlite3_os_init=Module["_sqlite3_os_init"]=()=>(_sqlite3_os_init=Module["_sqlite3_os_init"]=wasmExports["sqlite3_os_init"])();var _sqlite3_os_end=Module["_sqlite3_os_end"]=()=>(_sqlite3_os_end=Module["_sqlite3_os_end"]=wasmExports["sqlite3_os_end"])();var _sqlite3_serialize=Module["_sqlite3_serialize"]=(a0,a1,a2,a3)=>(_sqlite3_serialize=Module["_sqlite3_serialize"]=wasmExports["sqlite3_serialize"])(a0,a1,a2,a3);var _sqlite3_prepare_v2=Module["_sqlite3_prepare_v2"]=(a0,a1,a2,a3,a4)=>(_sqlite3_prepare_v2=Module["_sqlite3_prepare_v2"]=wasmExports["sqlite3_prepare_v2"])(a0,a1,a2,a3,a4);var _sqlite3_step=Module["_sqlite3_step"]=a0=>(_sqlite3_step=Module["_sqlite3_step"]=wasmExports["sqlite3_step"])(a0);var _sqlite3_column_int64=Module["_sqlite3_column_int64"]=(a0,a1)=>(_sqlite3_column_int64=Module["_sqlite3_column_int64"]=wasmExports["sqlite3_column_int64"])(a0,a1);var _sqlite3_reset=Module["_sqlite3_reset"]=a0=>(_sqlite3_reset=Module["_sqlite3_reset"]=wasmExports["sqlite3_reset"])(a0);var _sqlite3_exec=Module["_sqlite3_exec"]=(a0,a1,a2,a3,a4)=>(_sqlite3_exec=Module["_sqlite3_exec"]=wasmExports["sqlite3_exec"])(a0,a1,a2,a3,a4);var _sqlite3_column_int=Module["_sqlite3_column_int"]=(a0,a1)=>(_sqlite3_column_int=Module["_sqlite3_column_int"]=wasmExports["sqlite3_column_int"])(a0,a1);var _sqlite3_finalize=Module["_sqlite3_finalize"]=a0=>(_sqlite3_finalize=Module["_sqlite3_finalize"]=wasmExports["sqlite3_finalize"])(a0);var _sqlite3_deserialize=Module["_sqlite3_deserialize"]=(a0,a1,a2,a3,a4,a5,a6,a7)=>(_sqlite3_deserialize=Module["_sqlite3_deserialize"]=wasmExports["sqlite3_deserialize"])(a0,a1,a2,a3,a4,a5,a6,a7);var _sqlite3_database_file_object=Module["_sqlite3_database_file_object"]=a0=>(_sqlite3_database_file_object=Module["_sqlite3_database_file_object"]=wasmExports["sqlite3_database_file_object"])(a0);var _sqlite3_backup_init=Module["_sqlite3_backup_init"]=(a0,a1,a2,a3)=>(_sqlite3_backup_init=Module["_sqlite3_backup_init"]=wasmExports["sqlite3_backup_init"])(a0,a1,a2,a3);var _sqlite3_backup_step=Module["_sqlite3_backup_step"]=(a0,a1)=>(_sqlite3_backup_step=Module["_sqlite3_backup_step"]=wasmExports["sqlite3_backup_step"])(a0,a1);var _sqlite3_backup_finish=Module["_sqlite3_backup_finish"]=a0=>(_sqlite3_backup_finish=Module["_sqlite3_backup_finish"]=wasmExports["sqlite3_backup_finish"])(a0);var _sqlite3_backup_remaining=Module["_sqlite3_backup_remaining"]=a0=>(_sqlite3_backup_remaining=Module["_sqlite3_backup_remaining"]=wasmExports["sqlite3_backup_remaining"])(a0);var _sqlite3_backup_pagecount=Module["_sqlite3_backup_pagecount"]=a0=>(_sqlite3_backup_pagecount=Module["_sqlite3_backup_pagecount"]=wasmExports["sqlite3_backup_pagecount"])(a0);var _sqlite3_clear_bindings=Module["_sqlite3_clear_bindings"]=a0=>(_sqlite3_clear_bindings=Module["_sqlite3_clear_bindings"]=wasmExports["sqlite3_clear_bindings"])(a0);var _sqlite3_value_blob=Module["_sqlite3_value_blob"]=a0=>(_sqlite3_value_blob=Module["_sqlite3_value_blob"]=wasmExports["sqlite3_value_blob"])(a0);var _sqlite3_value_text=Module["_sqlite3_value_text"]=a0=>(_sqlite3_value_text=Module["_sqlite3_value_text"]=wasmExports["sqlite3_value_text"])(a0);var _sqlite3_value_bytes=Module["_sqlite3_value_bytes"]=a0=>(_sqlite3_value_bytes=Module["_sqlite3_value_bytes"]=wasmExports["sqlite3_value_bytes"])(a0);var _sqlite3_value_bytes16=Module["_sqlite3_value_bytes16"]=a0=>(_sqlite3_value_bytes16=Module["_sqlite3_value_bytes16"]=wasmExports["sqlite3_value_bytes16"])(a0);var _sqlite3_value_double=Module["_sqlite3_value_double"]=a0=>(_sqlite3_value_double=Module["_sqlite3_value_double"]=wasmExports["sqlite3_value_double"])(a0);var _sqlite3_value_int=Module["_sqlite3_value_int"]=a0=>(_sqlite3_value_int=Module["_sqlite3_value_int"]=wasmExports["sqlite3_value_int"])(a0);var _sqlite3_value_int64=Module["_sqlite3_value_int64"]=a0=>(_sqlite3_value_int64=Module["_sqlite3_value_int64"]=wasmExports["sqlite3_value_int64"])(a0);var _sqlite3_value_subtype=Module["_sqlite3_value_subtype"]=a0=>(_sqlite3_value_subtype=Module["_sqlite3_value_subtype"]=wasmExports["sqlite3_value_subtype"])(a0);var _sqlite3_value_pointer=Module["_sqlite3_value_pointer"]=(a0,a1)=>(_sqlite3_value_pointer=Module["_sqlite3_value_pointer"]=wasmExports["sqlite3_value_pointer"])(a0,a1);var _sqlite3_value_text16=Module["_sqlite3_value_text16"]=a0=>(_sqlite3_value_text16=Module["_sqlite3_value_text16"]=wasmExports["sqlite3_value_text16"])(a0);var _sqlite3_value_text16be=Module["_sqlite3_value_text16be"]=a0=>(_sqlite3_value_text16be=Module["_sqlite3_value_text16be"]=wasmExports["sqlite3_value_text16be"])(a0);var _sqlite3_value_text16le=Module["_sqlite3_value_text16le"]=a0=>(_sqlite3_value_text16le=Module["_sqlite3_value_text16le"]=wasmExports["sqlite3_value_text16le"])(a0);var _sqlite3_value_type=Module["_sqlite3_value_type"]=a0=>(_sqlite3_value_type=Module["_sqlite3_value_type"]=wasmExports["sqlite3_value_type"])(a0);var _sqlite3_value_encoding=Module["_sqlite3_value_encoding"]=a0=>(_sqlite3_value_encoding=Module["_sqlite3_value_encoding"]=wasmExports["sqlite3_value_encoding"])(a0);var _sqlite3_value_nochange=Module["_sqlite3_value_nochange"]=a0=>(_sqlite3_value_nochange=Module["_sqlite3_value_nochange"]=wasmExports["sqlite3_value_nochange"])(a0);var _sqlite3_value_frombind=Module["_sqlite3_value_frombind"]=a0=>(_sqlite3_value_frombind=Module["_sqlite3_value_frombind"]=wasmExports["sqlite3_value_frombind"])(a0);var _sqlite3_value_dup=Module["_sqlite3_value_dup"]=a0=>(_sqlite3_value_dup=Module["_sqlite3_value_dup"]=wasmExports["sqlite3_value_dup"])(a0);var _sqlite3_value_free=Module["_sqlite3_value_free"]=a0=>(_sqlite3_value_free=Module["_sqlite3_value_free"]=wasmExports["sqlite3_value_free"])(a0);var _sqlite3_result_blob=Module["_sqlite3_result_blob"]=(a0,a1,a2,a3)=>(_sqlite3_result_blob=Module["_sqlite3_result_blob"]=wasmExports["sqlite3_result_blob"])(a0,a1,a2,a3);var _sqlite3_result_blob64=Module["_sqlite3_result_blob64"]=(a0,a1,a2,a3,a4)=>(_sqlite3_result_blob64=Module["_sqlite3_result_blob64"]=wasmExports["sqlite3_result_blob64"])(a0,a1,a2,a3,a4);var _sqlite3_result_double=Module["_sqlite3_result_double"]=(a0,a1)=>(_sqlite3_result_double=Module["_sqlite3_result_double"]=wasmExports["sqlite3_result_double"])(a0,a1);var _sqlite3_result_error=Module["_sqlite3_result_error"]=(a0,a1,a2)=>(_sqlite3_result_error=Module["_sqlite3_result_error"]=wasmExports["sqlite3_result_error"])(a0,a1,a2);var _sqlite3_result_error16=Module["_sqlite3_result_error16"]=(a0,a1,a2)=>(_sqlite3_result_error16=Module["_sqlite3_result_error16"]=wasmExports["sqlite3_result_error16"])(a0,a1,a2);var _sqlite3_result_int=Module["_sqlite3_result_int"]=(a0,a1)=>(_sqlite3_result_int=Module["_sqlite3_result_int"]=wasmExports["sqlite3_result_int"])(a0,a1);var _sqlite3_result_int64=Module["_sqlite3_result_int64"]=(a0,a1,a2)=>(_sqlite3_result_int64=Module["_sqlite3_result_int64"]=wasmExports["sqlite3_result_int64"])(a0,a1,a2);var _sqlite3_result_null=Module["_sqlite3_result_null"]=a0=>(_sqlite3_result_null=Module["_sqlite3_result_null"]=wasmExports["sqlite3_result_null"])(a0);var _sqlite3_result_pointer=Module["_sqlite3_result_pointer"]=(a0,a1,a2,a3)=>(_sqlite3_result_pointer=Module["_sqlite3_result_pointer"]=wasmExports["sqlite3_result_pointer"])(a0,a1,a2,a3);var _sqlite3_result_subtype=Module["_sqlite3_result_subtype"]=(a0,a1)=>(_sqlite3_result_subtype=Module["_sqlite3_result_subtype"]=wasmExports["sqlite3_result_subtype"])(a0,a1);var _sqlite3_result_text=Module["_sqlite3_result_text"]=(a0,a1,a2,a3)=>(_sqlite3_result_text=Module["_sqlite3_result_text"]=wasmExports["sqlite3_result_text"])(a0,a1,a2,a3);var _sqlite3_result_text64=Module["_sqlite3_result_text64"]=(a0,a1,a2,a3,a4,a5)=>(_sqlite3_result_text64=Module["_sqlite3_result_text64"]=wasmExports["sqlite3_result_text64"])(a0,a1,a2,a3,a4,a5);var _sqlite3_result_text16=Module["_sqlite3_result_text16"]=(a0,a1,a2,a3)=>(_sqlite3_result_text16=Module["_sqlite3_result_text16"]=wasmExports["sqlite3_result_text16"])(a0,a1,a2,a3);var _sqlite3_result_text16be=Module["_sqlite3_result_text16be"]=(a0,a1,a2,a3)=>(_sqlite3_result_text16be=Module["_sqlite3_result_text16be"]=wasmExports["sqlite3_result_text16be"])(a0,a1,a2,a3);var _sqlite3_result_text16le=Module["_sqlite3_result_text16le"]=(a0,a1,a2,a3)=>(_sqlite3_result_text16le=Module["_sqlite3_result_text16le"]=wasmExports["sqlite3_result_text16le"])(a0,a1,a2,a3);var _sqlite3_result_value=Module["_sqlite3_result_value"]=(a0,a1)=>(_sqlite3_result_value=Module["_sqlite3_result_value"]=wasmExports["sqlite3_result_value"])(a0,a1);var _sqlite3_result_error_toobig=Module["_sqlite3_result_error_toobig"]=a0=>(_sqlite3_result_error_toobig=Module["_sqlite3_result_error_toobig"]=wasmExports["sqlite3_result_error_toobig"])(a0);var _sqlite3_result_zeroblob=Module["_sqlite3_result_zeroblob"]=(a0,a1)=>(_sqlite3_result_zeroblob=Module["_sqlite3_result_zeroblob"]=wasmExports["sqlite3_result_zeroblob"])(a0,a1);var _sqlite3_result_zeroblob64=Module["_sqlite3_result_zeroblob64"]=(a0,a1,a2)=>(_sqlite3_result_zeroblob64=Module["_sqlite3_result_zeroblob64"]=wasmExports["sqlite3_result_zeroblob64"])(a0,a1,a2);var _sqlite3_result_error_code=Module["_sqlite3_result_error_code"]=(a0,a1)=>(_sqlite3_result_error_code=Module["_sqlite3_result_error_code"]=wasmExports["sqlite3_result_error_code"])(a0,a1);var _sqlite3_result_error_nomem=Module["_sqlite3_result_error_nomem"]=a0=>(_sqlite3_result_error_nomem=Module["_sqlite3_result_error_nomem"]=wasmExports["sqlite3_result_error_nomem"])(a0);var _sqlite3_user_data=Module["_sqlite3_user_data"]=a0=>(_sqlite3_user_data=Module["_sqlite3_user_data"]=wasmExports["sqlite3_user_data"])(a0);var _sqlite3_context_db_handle=Module["_sqlite3_context_db_handle"]=a0=>(_sqlite3_context_db_handle=Module["_sqlite3_context_db_handle"]=wasmExports["sqlite3_context_db_handle"])(a0);var _sqlite3_vtab_nochange=Module["_sqlite3_vtab_nochange"]=a0=>(_sqlite3_vtab_nochange=Module["_sqlite3_vtab_nochange"]=wasmExports["sqlite3_vtab_nochange"])(a0);var _sqlite3_vtab_in_first=Module["_sqlite3_vtab_in_first"]=(a0,a1)=>(_sqlite3_vtab_in_first=Module["_sqlite3_vtab_in_first"]=wasmExports["sqlite3_vtab_in_first"])(a0,a1);var _sqlite3_vtab_in_next=Module["_sqlite3_vtab_in_next"]=(a0,a1)=>(_sqlite3_vtab_in_next=Module["_sqlite3_vtab_in_next"]=wasmExports["sqlite3_vtab_in_next"])(a0,a1);var _sqlite3_aggregate_context=Module["_sqlite3_aggregate_context"]=(a0,a1)=>(_sqlite3_aggregate_context=Module["_sqlite3_aggregate_context"]=wasmExports["sqlite3_aggregate_context"])(a0,a1);var _sqlite3_get_auxdata=Module["_sqlite3_get_auxdata"]=(a0,a1)=>(_sqlite3_get_auxdata=Module["_sqlite3_get_auxdata"]=wasmExports["sqlite3_get_auxdata"])(a0,a1);var _sqlite3_set_auxdata=Module["_sqlite3_set_auxdata"]=(a0,a1,a2,a3)=>(_sqlite3_set_auxdata=Module["_sqlite3_set_auxdata"]=wasmExports["sqlite3_set_auxdata"])(a0,a1,a2,a3);var _sqlite3_column_count=Module["_sqlite3_column_count"]=a0=>(_sqlite3_column_count=Module["_sqlite3_column_count"]=wasmExports["sqlite3_column_count"])(a0);var _sqlite3_data_count=Module["_sqlite3_data_count"]=a0=>(_sqlite3_data_count=Module["_sqlite3_data_count"]=wasmExports["sqlite3_data_count"])(a0);var _sqlite3_column_blob=Module["_sqlite3_column_blob"]=(a0,a1)=>(_sqlite3_column_blob=Module["_sqlite3_column_blob"]=wasmExports["sqlite3_column_blob"])(a0,a1);var _sqlite3_column_bytes=Module["_sqlite3_column_bytes"]=(a0,a1)=>(_sqlite3_column_bytes=Module["_sqlite3_column_bytes"]=wasmExports["sqlite3_column_bytes"])(a0,a1);var _sqlite3_column_bytes16=Module["_sqlite3_column_bytes16"]=(a0,a1)=>(_sqlite3_column_bytes16=Module["_sqlite3_column_bytes16"]=wasmExports["sqlite3_column_bytes16"])(a0,a1);var _sqlite3_column_double=Module["_sqlite3_column_double"]=(a0,a1)=>(_sqlite3_column_double=Module["_sqlite3_column_double"]=wasmExports["sqlite3_column_double"])(a0,a1);var _sqlite3_column_text=Module["_sqlite3_column_text"]=(a0,a1)=>(_sqlite3_column_text=Module["_sqlite3_column_text"]=wasmExports["sqlite3_column_text"])(a0,a1);var _sqlite3_column_value=Module["_sqlite3_column_value"]=(a0,a1)=>(_sqlite3_column_value=Module["_sqlite3_column_value"]=wasmExports["sqlite3_column_value"])(a0,a1);var _sqlite3_column_text16=Module["_sqlite3_column_text16"]=(a0,a1)=>(_sqlite3_column_text16=Module["_sqlite3_column_text16"]=wasmExports["sqlite3_column_text16"])(a0,a1);var _sqlite3_column_type=Module["_sqlite3_column_type"]=(a0,a1)=>(_sqlite3_column_type=Module["_sqlite3_column_type"]=wasmExports["sqlite3_column_type"])(a0,a1);var _sqlite3_column_name=Module["_sqlite3_column_name"]=(a0,a1)=>(_sqlite3_column_name=Module["_sqlite3_column_name"]=wasmExports["sqlite3_column_name"])(a0,a1);var _sqlite3_column_name16=Module["_sqlite3_column_name16"]=(a0,a1)=>(_sqlite3_column_name16=Module["_sqlite3_column_name16"]=wasmExports["sqlite3_column_name16"])(a0,a1);var _sqlite3_bind_blob=Module["_sqlite3_bind_blob"]=(a0,a1,a2,a3,a4)=>(_sqlite3_bind_blob=Module["_sqlite3_bind_blob"]=wasmExports["sqlite3_bind_blob"])(a0,a1,a2,a3,a4);var _sqlite3_bind_blob64=Module["_sqlite3_bind_blob64"]=(a0,a1,a2,a3,a4,a5)=>(_sqlite3_bind_blob64=Module["_sqlite3_bind_blob64"]=wasmExports["sqlite3_bind_blob64"])(a0,a1,a2,a3,a4,a5);var _sqlite3_bind_double=Module["_sqlite3_bind_double"]=(a0,a1,a2)=>(_sqlite3_bind_double=Module["_sqlite3_bind_double"]=wasmExports["sqlite3_bind_double"])(a0,a1,a2);var _sqlite3_bind_int=Module["_sqlite3_bind_int"]=(a0,a1,a2)=>(_sqlite3_bind_int=Module["_sqlite3_bind_int"]=wasmExports["sqlite3_bind_int"])(a0,a1,a2);var _sqlite3_bind_int64=Module["_sqlite3_bind_int64"]=(a0,a1,a2,a3)=>(_sqlite3_bind_int64=Module["_sqlite3_bind_int64"]=wasmExports["sqlite3_bind_int64"])(a0,a1,a2,a3);var _sqlite3_bind_null=Module["_sqlite3_bind_null"]=(a0,a1)=>(_sqlite3_bind_null=Module["_sqlite3_bind_null"]=wasmExports["sqlite3_bind_null"])(a0,a1);var _sqlite3_bind_pointer=Module["_sqlite3_bind_pointer"]=(a0,a1,a2,a3,a4)=>(_sqlite3_bind_pointer=Module["_sqlite3_bind_pointer"]=wasmExports["sqlite3_bind_pointer"])(a0,a1,a2,a3,a4);var _sqlite3_bind_text=Module["_sqlite3_bind_text"]=(a0,a1,a2,a3,a4)=>(_sqlite3_bind_text=Module["_sqlite3_bind_text"]=wasmExports["sqlite3_bind_text"])(a0,a1,a2,a3,a4);var _sqlite3_bind_text64=Module["_sqlite3_bind_text64"]=(a0,a1,a2,a3,a4,a5,a6)=>(_sqlite3_bind_text64=Module["_sqlite3_bind_text64"]=wasmExports["sqlite3_bind_text64"])(a0,a1,a2,a3,a4,a5,a6);var _sqlite3_bind_text16=Module["_sqlite3_bind_text16"]=(a0,a1,a2,a3,a4)=>(_sqlite3_bind_text16=Module["_sqlite3_bind_text16"]=wasmExports["sqlite3_bind_text16"])(a0,a1,a2,a3,a4);var _sqlite3_bind_value=Module["_sqlite3_bind_value"]=(a0,a1,a2)=>(_sqlite3_bind_value=Module["_sqlite3_bind_value"]=wasmExports["sqlite3_bind_value"])(a0,a1,a2);var _sqlite3_bind_zeroblob=Module["_sqlite3_bind_zeroblob"]=(a0,a1,a2)=>(_sqlite3_bind_zeroblob=Module["_sqlite3_bind_zeroblob"]=wasmExports["sqlite3_bind_zeroblob"])(a0,a1,a2);var _sqlite3_bind_zeroblob64=Module["_sqlite3_bind_zeroblob64"]=(a0,a1,a2,a3)=>(_sqlite3_bind_zeroblob64=Module["_sqlite3_bind_zeroblob64"]=wasmExports["sqlite3_bind_zeroblob64"])(a0,a1,a2,a3);var _sqlite3_bind_parameter_count=Module["_sqlite3_bind_parameter_count"]=a0=>(_sqlite3_bind_parameter_count=Module["_sqlite3_bind_parameter_count"]=wasmExports["sqlite3_bind_parameter_count"])(a0);var _sqlite3_bind_parameter_name=Module["_sqlite3_bind_parameter_name"]=(a0,a1)=>(_sqlite3_bind_parameter_name=Module["_sqlite3_bind_parameter_name"]=wasmExports["sqlite3_bind_parameter_name"])(a0,a1);var _sqlite3_bind_parameter_index=Module["_sqlite3_bind_parameter_index"]=(a0,a1)=>(_sqlite3_bind_parameter_index=Module["_sqlite3_bind_parameter_index"]=wasmExports["sqlite3_bind_parameter_index"])(a0,a1);var _sqlite3_db_handle=Module["_sqlite3_db_handle"]=a0=>(_sqlite3_db_handle=Module["_sqlite3_db_handle"]=wasmExports["sqlite3_db_handle"])(a0);var _sqlite3_stmt_readonly=Module["_sqlite3_stmt_readonly"]=a0=>(_sqlite3_stmt_readonly=Module["_sqlite3_stmt_readonly"]=wasmExports["sqlite3_stmt_readonly"])(a0);var _sqlite3_stmt_isexplain=Module["_sqlite3_stmt_isexplain"]=a0=>(_sqlite3_stmt_isexplain=Module["_sqlite3_stmt_isexplain"]=wasmExports["sqlite3_stmt_isexplain"])(a0);var _sqlite3_stmt_explain=Module["_sqlite3_stmt_explain"]=(a0,a1)=>(_sqlite3_stmt_explain=Module["_sqlite3_stmt_explain"]=wasmExports["sqlite3_stmt_explain"])(a0,a1);var _sqlite3_stmt_busy=Module["_sqlite3_stmt_busy"]=a0=>(_sqlite3_stmt_busy=Module["_sqlite3_stmt_busy"]=wasmExports["sqlite3_stmt_busy"])(a0);var _sqlite3_next_stmt=Module["_sqlite3_next_stmt"]=(a0,a1)=>(_sqlite3_next_stmt=Module["_sqlite3_next_stmt"]=wasmExports["sqlite3_next_stmt"])(a0,a1);var _sqlite3_stmt_status=Module["_sqlite3_stmt_status"]=(a0,a1,a2)=>(_sqlite3_stmt_status=Module["_sqlite3_stmt_status"]=wasmExports["sqlite3_stmt_status"])(a0,a1,a2);var _sqlite3_sql=Module["_sqlite3_sql"]=a0=>(_sqlite3_sql=Module["_sqlite3_sql"]=wasmExports["sqlite3_sql"])(a0);var _sqlite3_expanded_sql=Module["_sqlite3_expanded_sql"]=a0=>(_sqlite3_expanded_sql=Module["_sqlite3_expanded_sql"]=wasmExports["sqlite3_expanded_sql"])(a0);var _sqlite3_value_numeric_type=Module["_sqlite3_value_numeric_type"]=a0=>(_sqlite3_value_numeric_type=Module["_sqlite3_value_numeric_type"]=wasmExports["sqlite3_value_numeric_type"])(a0);var _sqlite3_blob_open=Module["_sqlite3_blob_open"]=(a0,a1,a2,a3,a4,a5,a6,a7)=>(_sqlite3_blob_open=Module["_sqlite3_blob_open"]=wasmExports["sqlite3_blob_open"])(a0,a1,a2,a3,a4,a5,a6,a7);var _sqlite3_blob_close=Module["_sqlite3_blob_close"]=a0=>(_sqlite3_blob_close=Module["_sqlite3_blob_close"]=wasmExports["sqlite3_blob_close"])(a0);var _sqlite3_blob_read=Module["_sqlite3_blob_read"]=(a0,a1,a2,a3)=>(_sqlite3_blob_read=Module["_sqlite3_blob_read"]=wasmExports["sqlite3_blob_read"])(a0,a1,a2,a3);var _sqlite3_blob_write=Module["_sqlite3_blob_write"]=(a0,a1,a2,a3)=>(_sqlite3_blob_write=Module["_sqlite3_blob_write"]=wasmExports["sqlite3_blob_write"])(a0,a1,a2,a3);var _sqlite3_blob_bytes=Module["_sqlite3_blob_bytes"]=a0=>(_sqlite3_blob_bytes=Module["_sqlite3_blob_bytes"]=wasmExports["sqlite3_blob_bytes"])(a0);var _sqlite3_blob_reopen=Module["_sqlite3_blob_reopen"]=(a0,a1,a2)=>(_sqlite3_blob_reopen=Module["_sqlite3_blob_reopen"]=wasmExports["sqlite3_blob_reopen"])(a0,a1,a2);var _sqlite3_set_authorizer=Module["_sqlite3_set_authorizer"]=(a0,a1,a2)=>(_sqlite3_set_authorizer=Module["_sqlite3_set_authorizer"]=wasmExports["sqlite3_set_authorizer"])(a0,a1,a2);var _sqlite3_strglob=Module["_sqlite3_strglob"]=(a0,a1)=>(_sqlite3_strglob=Module["_sqlite3_strglob"]=wasmExports["sqlite3_strglob"])(a0,a1);var _sqlite3_strlike=Module["_sqlite3_strlike"]=(a0,a1,a2)=>(_sqlite3_strlike=Module["_sqlite3_strlike"]=wasmExports["sqlite3_strlike"])(a0,a1,a2);var _sqlite3_errmsg=Module["_sqlite3_errmsg"]=a0=>(_sqlite3_errmsg=Module["_sqlite3_errmsg"]=wasmExports["sqlite3_errmsg"])(a0);var _sqlite3_auto_extension=Module["_sqlite3_auto_extension"]=a0=>(_sqlite3_auto_extension=Module["_sqlite3_auto_extension"]=wasmExports["sqlite3_auto_extension"])(a0);var _sqlite3_cancel_auto_extension=Module["_sqlite3_cancel_auto_extension"]=a0=>(_sqlite3_cancel_auto_extension=Module["_sqlite3_cancel_auto_extension"]=wasmExports["sqlite3_cancel_auto_extension"])(a0);var _sqlite3_reset_auto_extension=Module["_sqlite3_reset_auto_extension"]=()=>(_sqlite3_reset_auto_extension=Module["_sqlite3_reset_auto_extension"]=wasmExports["sqlite3_reset_auto_extension"])();var _sqlite3_prepare=Module["_sqlite3_prepare"]=(a0,a1,a2,a3,a4)=>(_sqlite3_prepare=Module["_sqlite3_prepare"]=wasmExports["sqlite3_prepare"])(a0,a1,a2,a3,a4);var _sqlite3_prepare_v3=Module["_sqlite3_prepare_v3"]=(a0,a1,a2,a3,a4,a5)=>(_sqlite3_prepare_v3=Module["_sqlite3_prepare_v3"]=wasmExports["sqlite3_prepare_v3"])(a0,a1,a2,a3,a4,a5);var _sqlite3_prepare16=Module["_sqlite3_prepare16"]=(a0,a1,a2,a3,a4)=>(_sqlite3_prepare16=Module["_sqlite3_prepare16"]=wasmExports["sqlite3_prepare16"])(a0,a1,a2,a3,a4);var _sqlite3_prepare16_v2=Module["_sqlite3_prepare16_v2"]=(a0,a1,a2,a3,a4)=>(_sqlite3_prepare16_v2=Module["_sqlite3_prepare16_v2"]=wasmExports["sqlite3_prepare16_v2"])(a0,a1,a2,a3,a4);var _sqlite3_prepare16_v3=Module["_sqlite3_prepare16_v3"]=(a0,a1,a2,a3,a4,a5)=>(_sqlite3_prepare16_v3=Module["_sqlite3_prepare16_v3"]=wasmExports["sqlite3_prepare16_v3"])(a0,a1,a2,a3,a4,a5);var _sqlite3_get_table=Module["_sqlite3_get_table"]=(a0,a1,a2,a3,a4,a5)=>(_sqlite3_get_table=Module["_sqlite3_get_table"]=wasmExports["sqlite3_get_table"])(a0,a1,a2,a3,a4,a5);var _sqlite3_free_table=Module["_sqlite3_free_table"]=a0=>(_sqlite3_free_table=Module["_sqlite3_free_table"]=wasmExports["sqlite3_free_table"])(a0);var _sqlite3_create_module=Module["_sqlite3_create_module"]=(a0,a1,a2,a3)=>(_sqlite3_create_module=Module["_sqlite3_create_module"]=wasmExports["sqlite3_create_module"])(a0,a1,a2,a3);var _sqlite3_create_module_v2=Module["_sqlite3_create_module_v2"]=(a0,a1,a2,a3,a4)=>(_sqlite3_create_module_v2=Module["_sqlite3_create_module_v2"]=wasmExports["sqlite3_create_module_v2"])(a0,a1,a2,a3,a4);var _sqlite3_drop_modules=Module["_sqlite3_drop_modules"]=(a0,a1)=>(_sqlite3_drop_modules=Module["_sqlite3_drop_modules"]=wasmExports["sqlite3_drop_modules"])(a0,a1);var _sqlite3_declare_vtab=Module["_sqlite3_declare_vtab"]=(a0,a1)=>(_sqlite3_declare_vtab=Module["_sqlite3_declare_vtab"]=wasmExports["sqlite3_declare_vtab"])(a0,a1);var _sqlite3_vtab_on_conflict=Module["_sqlite3_vtab_on_conflict"]=a0=>(_sqlite3_vtab_on_conflict=Module["_sqlite3_vtab_on_conflict"]=wasmExports["sqlite3_vtab_on_conflict"])(a0);var _sqlite3_vtab_config=Module["_sqlite3_vtab_config"]=(a0,a1,a2)=>(_sqlite3_vtab_config=Module["_sqlite3_vtab_config"]=wasmExports["sqlite3_vtab_config"])(a0,a1,a2);var _sqlite3_vtab_collation=Module["_sqlite3_vtab_collation"]=(a0,a1)=>(_sqlite3_vtab_collation=Module["_sqlite3_vtab_collation"]=wasmExports["sqlite3_vtab_collation"])(a0,a1);var _sqlite3_vtab_in=Module["_sqlite3_vtab_in"]=(a0,a1,a2)=>(_sqlite3_vtab_in=Module["_sqlite3_vtab_in"]=wasmExports["sqlite3_vtab_in"])(a0,a1,a2);var _sqlite3_vtab_rhs_value=Module["_sqlite3_vtab_rhs_value"]=(a0,a1,a2)=>(_sqlite3_vtab_rhs_value=Module["_sqlite3_vtab_rhs_value"]=wasmExports["sqlite3_vtab_rhs_value"])(a0,a1,a2);var _sqlite3_vtab_distinct=Module["_sqlite3_vtab_distinct"]=a0=>(_sqlite3_vtab_distinct=Module["_sqlite3_vtab_distinct"]=wasmExports["sqlite3_vtab_distinct"])(a0);var _sqlite3_keyword_name=Module["_sqlite3_keyword_name"]=(a0,a1,a2)=>(_sqlite3_keyword_name=Module["_sqlite3_keyword_name"]=wasmExports["sqlite3_keyword_name"])(a0,a1,a2);var _sqlite3_keyword_count=Module["_sqlite3_keyword_count"]=()=>(_sqlite3_keyword_count=Module["_sqlite3_keyword_count"]=wasmExports["sqlite3_keyword_count"])();var _sqlite3_keyword_check=Module["_sqlite3_keyword_check"]=(a0,a1)=>(_sqlite3_keyword_check=Module["_sqlite3_keyword_check"]=wasmExports["sqlite3_keyword_check"])(a0,a1);var _sqlite3_complete=Module["_sqlite3_complete"]=a0=>(_sqlite3_complete=Module["_sqlite3_complete"]=wasmExports["sqlite3_complete"])(a0);var _sqlite3_complete16=Module["_sqlite3_complete16"]=a0=>(_sqlite3_complete16=Module["_sqlite3_complete16"]=wasmExports["sqlite3_complete16"])(a0);var _sqlite3_libversion=Module["_sqlite3_libversion"]=()=>(_sqlite3_libversion=Module["_sqlite3_libversion"]=wasmExports["sqlite3_libversion"])();var _sqlite3_libversion_number=Module["_sqlite3_libversion_number"]=()=>(_sqlite3_libversion_number=Module["_sqlite3_libversion_number"]=wasmExports["sqlite3_libversion_number"])();var _sqlite3_threadsafe=Module["_sqlite3_threadsafe"]=()=>(_sqlite3_threadsafe=Module["_sqlite3_threadsafe"]=wasmExports["sqlite3_threadsafe"])();var _sqlite3_initialize=Module["_sqlite3_initialize"]=()=>(_sqlite3_initialize=Module["_sqlite3_initialize"]=wasmExports["sqlite3_initialize"])();var _sqlite3_shutdown=Module["_sqlite3_shutdown"]=()=>(_sqlite3_shutdown=Module["_sqlite3_shutdown"]=wasmExports["sqlite3_shutdown"])();var _sqlite3_config=Module["_sqlite3_config"]=(a0,a1)=>(_sqlite3_config=Module["_sqlite3_config"]=wasmExports["sqlite3_config"])(a0,a1);var _sqlite3_db_mutex=Module["_sqlite3_db_mutex"]=a0=>(_sqlite3_db_mutex=Module["_sqlite3_db_mutex"]=wasmExports["sqlite3_db_mutex"])(a0);var _sqlite3_db_release_memory=Module["_sqlite3_db_release_memory"]=a0=>(_sqlite3_db_release_memory=Module["_sqlite3_db_release_memory"]=wasmExports["sqlite3_db_release_memory"])(a0);var _sqlite3_db_cacheflush=Module["_sqlite3_db_cacheflush"]=a0=>(_sqlite3_db_cacheflush=Module["_sqlite3_db_cacheflush"]=wasmExports["sqlite3_db_cacheflush"])(a0);var _sqlite3_db_config=Module["_sqlite3_db_config"]=(a0,a1,a2)=>(_sqlite3_db_config=Module["_sqlite3_db_config"]=wasmExports["sqlite3_db_config"])(a0,a1,a2);var _sqlite3_last_insert_rowid=Module["_sqlite3_last_insert_rowid"]=a0=>(_sqlite3_last_insert_rowid=Module["_sqlite3_last_insert_rowid"]=wasmExports["sqlite3_last_insert_rowid"])(a0);var _sqlite3_set_last_insert_rowid=Module["_sqlite3_set_last_insert_rowid"]=(a0,a1,a2)=>(_sqlite3_set_last_insert_rowid=Module["_sqlite3_set_last_insert_rowid"]=wasmExports["sqlite3_set_last_insert_rowid"])(a0,a1,a2);var _sqlite3_changes64=Module["_sqlite3_changes64"]=a0=>(_sqlite3_changes64=Module["_sqlite3_changes64"]=wasmExports["sqlite3_changes64"])(a0);var _sqlite3_changes=Module["_sqlite3_changes"]=a0=>(_sqlite3_changes=Module["_sqlite3_changes"]=wasmExports["sqlite3_changes"])(a0);var _sqlite3_total_changes64=Module["_sqlite3_total_changes64"]=a0=>(_sqlite3_total_changes64=Module["_sqlite3_total_changes64"]=wasmExports["sqlite3_total_changes64"])(a0);var _sqlite3_total_changes=Module["_sqlite3_total_changes"]=a0=>(_sqlite3_total_changes=Module["_sqlite3_total_changes"]=wasmExports["sqlite3_total_changes"])(a0);var _sqlite3_txn_state=Module["_sqlite3_txn_state"]=(a0,a1)=>(_sqlite3_txn_state=Module["_sqlite3_txn_state"]=wasmExports["sqlite3_txn_state"])(a0,a1);var _sqlite3_close=Module["_sqlite3_close"]=a0=>(_sqlite3_close=Module["_sqlite3_close"]=wasmExports["sqlite3_close"])(a0);var _sqlite3_close_v2=Module["_sqlite3_close_v2"]=a0=>(_sqlite3_close_v2=Module["_sqlite3_close_v2"]=wasmExports["sqlite3_close_v2"])(a0);var _sqlite3_busy_handler=Module["_sqlite3_busy_handler"]=(a0,a1,a2)=>(_sqlite3_busy_handler=Module["_sqlite3_busy_handler"]=wasmExports["sqlite3_busy_handler"])(a0,a1,a2);var _sqlite3_progress_handler=Module["_sqlite3_progress_handler"]=(a0,a1,a2,a3)=>(_sqlite3_progress_handler=Module["_sqlite3_progress_handler"]=wasmExports["sqlite3_progress_handler"])(a0,a1,a2,a3);var _sqlite3_busy_timeout=Module["_sqlite3_busy_timeout"]=(a0,a1)=>(_sqlite3_busy_timeout=Module["_sqlite3_busy_timeout"]=wasmExports["sqlite3_busy_timeout"])(a0,a1);var _sqlite3_interrupt=Module["_sqlite3_interrupt"]=a0=>(_sqlite3_interrupt=Module["_sqlite3_interrupt"]=wasmExports["sqlite3_interrupt"])(a0);var _sqlite3_is_interrupted=Module["_sqlite3_is_interrupted"]=a0=>(_sqlite3_is_interrupted=Module["_sqlite3_is_interrupted"]=wasmExports["sqlite3_is_interrupted"])(a0);var _sqlite3_create_function=Module["_sqlite3_create_function"]=(a0,a1,a2,a3,a4,a5,a6,a7)=>(_sqlite3_create_function=Module["_sqlite3_create_function"]=wasmExports["sqlite3_create_function"])(a0,a1,a2,a3,a4,a5,a6,a7);var _sqlite3_create_function_v2=Module["_sqlite3_create_function_v2"]=(a0,a1,a2,a3,a4,a5,a6,a7,a8)=>(_sqlite3_create_function_v2=Module["_sqlite3_create_function_v2"]=wasmExports["sqlite3_create_function_v2"])(a0,a1,a2,a3,a4,a5,a6,a7,a8);var _sqlite3_create_window_function=Module["_sqlite3_create_window_function"]=(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9)=>(_sqlite3_create_window_function=Module["_sqlite3_create_window_function"]=wasmExports["sqlite3_create_window_function"])(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9);var _sqlite3_create_function16=Module["_sqlite3_create_function16"]=(a0,a1,a2,a3,a4,a5,a6,a7)=>(_sqlite3_create_function16=Module["_sqlite3_create_function16"]=wasmExports["sqlite3_create_function16"])(a0,a1,a2,a3,a4,a5,a6,a7);var _sqlite3_overload_function=Module["_sqlite3_overload_function"]=(a0,a1,a2)=>(_sqlite3_overload_function=Module["_sqlite3_overload_function"]=wasmExports["sqlite3_overload_function"])(a0,a1,a2);var _sqlite3_trace_v2=Module["_sqlite3_trace_v2"]=(a0,a1,a2,a3)=>(_sqlite3_trace_v2=Module["_sqlite3_trace_v2"]=wasmExports["sqlite3_trace_v2"])(a0,a1,a2,a3);var _sqlite3_commit_hook=Module["_sqlite3_commit_hook"]=(a0,a1,a2)=>(_sqlite3_commit_hook=Module["_sqlite3_commit_hook"]=wasmExports["sqlite3_commit_hook"])(a0,a1,a2);var _sqlite3_update_hook=Module["_sqlite3_update_hook"]=(a0,a1,a2)=>(_sqlite3_update_hook=Module["_sqlite3_update_hook"]=wasmExports["sqlite3_update_hook"])(a0,a1,a2);var _sqlite3_rollback_hook=Module["_sqlite3_rollback_hook"]=(a0,a1,a2)=>(_sqlite3_rollback_hook=Module["_sqlite3_rollback_hook"]=wasmExports["sqlite3_rollback_hook"])(a0,a1,a2);var _sqlite3_autovacuum_pages=Module["_sqlite3_autovacuum_pages"]=(a0,a1,a2,a3)=>(_sqlite3_autovacuum_pages=Module["_sqlite3_autovacuum_pages"]=wasmExports["sqlite3_autovacuum_pages"])(a0,a1,a2,a3);var _sqlite3_wal_autocheckpoint=Module["_sqlite3_wal_autocheckpoint"]=(a0,a1)=>(_sqlite3_wal_autocheckpoint=Module["_sqlite3_wal_autocheckpoint"]=wasmExports["sqlite3_wal_autocheckpoint"])(a0,a1);var _sqlite3_wal_hook=Module["_sqlite3_wal_hook"]=(a0,a1,a2)=>(_sqlite3_wal_hook=Module["_sqlite3_wal_hook"]=wasmExports["sqlite3_wal_hook"])(a0,a1,a2);var _sqlite3_wal_checkpoint_v2=Module["_sqlite3_wal_checkpoint_v2"]=(a0,a1,a2,a3,a4)=>(_sqlite3_wal_checkpoint_v2=Module["_sqlite3_wal_checkpoint_v2"]=wasmExports["sqlite3_wal_checkpoint_v2"])(a0,a1,a2,a3,a4);var _sqlite3_wal_checkpoint=Module["_sqlite3_wal_checkpoint"]=(a0,a1)=>(_sqlite3_wal_checkpoint=Module["_sqlite3_wal_checkpoint"]=wasmExports["sqlite3_wal_checkpoint"])(a0,a1);var _sqlite3_error_offset=Module["_sqlite3_error_offset"]=a0=>(_sqlite3_error_offset=Module["_sqlite3_error_offset"]=wasmExports["sqlite3_error_offset"])(a0);var _sqlite3_errmsg16=Module["_sqlite3_errmsg16"]=a0=>(_sqlite3_errmsg16=Module["_sqlite3_errmsg16"]=wasmExports["sqlite3_errmsg16"])(a0);var _sqlite3_errcode=Module["_sqlite3_errcode"]=a0=>(_sqlite3_errcode=Module["_sqlite3_errcode"]=wasmExports["sqlite3_errcode"])(a0);var _sqlite3_extended_errcode=Module["_sqlite3_extended_errcode"]=a0=>(_sqlite3_extended_errcode=Module["_sqlite3_extended_errcode"]=wasmExports["sqlite3_extended_errcode"])(a0);var _sqlite3_system_errno=Module["_sqlite3_system_errno"]=a0=>(_sqlite3_system_errno=Module["_sqlite3_system_errno"]=wasmExports["sqlite3_system_errno"])(a0);var _sqlite3_errstr=Module["_sqlite3_errstr"]=a0=>(_sqlite3_errstr=Module["_sqlite3_errstr"]=wasmExports["sqlite3_errstr"])(a0);var _sqlite3_limit=Module["_sqlite3_limit"]=(a0,a1,a2)=>(_sqlite3_limit=Module["_sqlite3_limit"]=wasmExports["sqlite3_limit"])(a0,a1,a2);var _sqlite3_open=Module["_sqlite3_open"]=(a0,a1)=>(_sqlite3_open=Module["_sqlite3_open"]=wasmExports["sqlite3_open"])(a0,a1);var _sqlite3_open_v2=Module["_sqlite3_open_v2"]=(a0,a1,a2,a3)=>(_sqlite3_open_v2=Module["_sqlite3_open_v2"]=wasmExports["sqlite3_open_v2"])(a0,a1,a2,a3);var _sqlite3_open16=Module["_sqlite3_open16"]=(a0,a1)=>(_sqlite3_open16=Module["_sqlite3_open16"]=wasmExports["sqlite3_open16"])(a0,a1);var _sqlite3_create_collation=Module["_sqlite3_create_collation"]=(a0,a1,a2,a3,a4)=>(_sqlite3_create_collation=Module["_sqlite3_create_collation"]=wasmExports["sqlite3_create_collation"])(a0,a1,a2,a3,a4);var _sqlite3_create_collation_v2=Module["_sqlite3_create_collation_v2"]=(a0,a1,a2,a3,a4,a5)=>(_sqlite3_create_collation_v2=Module["_sqlite3_create_collation_v2"]=wasmExports["sqlite3_create_collation_v2"])(a0,a1,a2,a3,a4,a5);var _sqlite3_create_collation16=Module["_sqlite3_create_collation16"]=(a0,a1,a2,a3,a4)=>(_sqlite3_create_collation16=Module["_sqlite3_create_collation16"]=wasmExports["sqlite3_create_collation16"])(a0,a1,a2,a3,a4);var _sqlite3_collation_needed=Module["_sqlite3_collation_needed"]=(a0,a1,a2)=>(_sqlite3_collation_needed=Module["_sqlite3_collation_needed"]=wasmExports["sqlite3_collation_needed"])(a0,a1,a2);var _sqlite3_collation_needed16=Module["_sqlite3_collation_needed16"]=(a0,a1,a2)=>(_sqlite3_collation_needed16=Module["_sqlite3_collation_needed16"]=wasmExports["sqlite3_collation_needed16"])(a0,a1,a2);var _sqlite3_get_clientdata=Module["_sqlite3_get_clientdata"]=(a0,a1)=>(_sqlite3_get_clientdata=Module["_sqlite3_get_clientdata"]=wasmExports["sqlite3_get_clientdata"])(a0,a1);var _sqlite3_set_clientdata=Module["_sqlite3_set_clientdata"]=(a0,a1,a2,a3)=>(_sqlite3_set_clientdata=Module["_sqlite3_set_clientdata"]=wasmExports["sqlite3_set_clientdata"])(a0,a1,a2,a3);var _sqlite3_get_autocommit=Module["_sqlite3_get_autocommit"]=a0=>(_sqlite3_get_autocommit=Module["_sqlite3_get_autocommit"]=wasmExports["sqlite3_get_autocommit"])(a0);var _sqlite3_table_column_metadata=Module["_sqlite3_table_column_metadata"]=(a0,a1,a2,a3,a4,a5,a6,a7,a8)=>(_sqlite3_table_column_metadata=Module["_sqlite3_table_column_metadata"]=wasmExports["sqlite3_table_column_metadata"])(a0,a1,a2,a3,a4,a5,a6,a7,a8);var _sqlite3_sleep=Module["_sqlite3_sleep"]=a0=>(_sqlite3_sleep=Module["_sqlite3_sleep"]=wasmExports["sqlite3_sleep"])(a0);var _sqlite3_extended_result_codes=Module["_sqlite3_extended_result_codes"]=(a0,a1)=>(_sqlite3_extended_result_codes=Module["_sqlite3_extended_result_codes"]=wasmExports["sqlite3_extended_result_codes"])(a0,a1);var _sqlite3_file_control=Module["_sqlite3_file_control"]=(a0,a1,a2,a3)=>(_sqlite3_file_control=Module["_sqlite3_file_control"]=wasmExports["sqlite3_file_control"])(a0,a1,a2,a3);var _sqlite3_test_control=Module["_sqlite3_test_control"]=(a0,a1)=>(_sqlite3_test_control=Module["_sqlite3_test_control"]=wasmExports["sqlite3_test_control"])(a0,a1);var _sqlite3_create_filename=Module["_sqlite3_create_filename"]=(a0,a1,a2,a3,a4)=>(_sqlite3_create_filename=Module["_sqlite3_create_filename"]=wasmExports["sqlite3_create_filename"])(a0,a1,a2,a3,a4);var _sqlite3_free_filename=Module["_sqlite3_free_filename"]=a0=>(_sqlite3_free_filename=Module["_sqlite3_free_filename"]=wasmExports["sqlite3_free_filename"])(a0);var _sqlite3_uri_parameter=Module["_sqlite3_uri_parameter"]=(a0,a1)=>(_sqlite3_uri_parameter=Module["_sqlite3_uri_parameter"]=wasmExports["sqlite3_uri_parameter"])(a0,a1);var _sqlite3_uri_key=Module["_sqlite3_uri_key"]=(a0,a1)=>(_sqlite3_uri_key=Module["_sqlite3_uri_key"]=wasmExports["sqlite3_uri_key"])(a0,a1);var _sqlite3_uri_boolean=Module["_sqlite3_uri_boolean"]=(a0,a1,a2)=>(_sqlite3_uri_boolean=Module["_sqlite3_uri_boolean"]=wasmExports["sqlite3_uri_boolean"])(a0,a1,a2);var _sqlite3_uri_int64=Module["_sqlite3_uri_int64"]=(a0,a1,a2,a3)=>(_sqlite3_uri_int64=Module["_sqlite3_uri_int64"]=wasmExports["sqlite3_uri_int64"])(a0,a1,a2,a3);var _sqlite3_filename_database=Module["_sqlite3_filename_database"]=a0=>(_sqlite3_filename_database=Module["_sqlite3_filename_database"]=wasmExports["sqlite3_filename_database"])(a0);var _sqlite3_filename_journal=Module["_sqlite3_filename_journal"]=a0=>(_sqlite3_filename_journal=Module["_sqlite3_filename_journal"]=wasmExports["sqlite3_filename_journal"])(a0);var _sqlite3_filename_wal=Module["_sqlite3_filename_wal"]=a0=>(_sqlite3_filename_wal=Module["_sqlite3_filename_wal"]=wasmExports["sqlite3_filename_wal"])(a0);var _sqlite3_db_name=Module["_sqlite3_db_name"]=(a0,a1)=>(_sqlite3_db_name=Module["_sqlite3_db_name"]=wasmExports["sqlite3_db_name"])(a0,a1);var _sqlite3_db_filename=Module["_sqlite3_db_filename"]=(a0,a1)=>(_sqlite3_db_filename=Module["_sqlite3_db_filename"]=wasmExports["sqlite3_db_filename"])(a0,a1);var _sqlite3_db_readonly=Module["_sqlite3_db_readonly"]=(a0,a1)=>(_sqlite3_db_readonly=Module["_sqlite3_db_readonly"]=wasmExports["sqlite3_db_readonly"])(a0,a1);var _sqlite3_compileoption_used=Module["_sqlite3_compileoption_used"]=a0=>(_sqlite3_compileoption_used=Module["_sqlite3_compileoption_used"]=wasmExports["sqlite3_compileoption_used"])(a0);var _sqlite3_compileoption_get=Module["_sqlite3_compileoption_get"]=a0=>(_sqlite3_compileoption_get=Module["_sqlite3_compileoption_get"]=wasmExports["sqlite3_compileoption_get"])(a0);var _sqlite3_sourceid=Module["_sqlite3_sourceid"]=()=>(_sqlite3_sourceid=Module["_sqlite3_sourceid"]=wasmExports["sqlite3_sourceid"])();var _malloc=Module["_malloc"]=a0=>(_malloc=Module["_malloc"]=wasmExports["malloc"])(a0);var _free=Module["_free"]=a0=>(_free=Module["_free"]=wasmExports["free"])(a0);var _RegisterExtensionFunctions=Module["_RegisterExtensionFunctions"]=a0=>(_RegisterExtensionFunctions=Module["_RegisterExtensionFunctions"]=wasmExports["RegisterExtensionFunctions"])(a0);var _getSqliteFree=Module["_getSqliteFree"]=()=>(_getSqliteFree=Module["_getSqliteFree"]=wasmExports["getSqliteFree"])();var _main=Module["_main"]=(a0,a1)=>(_main=Module["_main"]=wasmExports["main"])(a0,a1);var _libauthorizer_set_authorizer=Module["_libauthorizer_set_authorizer"]=(a0,a1,a2)=>(_libauthorizer_set_authorizer=Module["_libauthorizer_set_authorizer"]=wasmExports["libauthorizer_set_authorizer"])(a0,a1,a2);var _libfunction_create_function=Module["_libfunction_create_function"]=(a0,a1,a2,a3,a4,a5,a6,a7)=>(_libfunction_create_function=Module["_libfunction_create_function"]=wasmExports["libfunction_create_function"])(a0,a1,a2,a3,a4,a5,a6,a7);var _libhook_commit_hook=Module["_libhook_commit_hook"]=(a0,a1,a2)=>(_libhook_commit_hook=Module["_libhook_commit_hook"]=wasmExports["libhook_commit_hook"])(a0,a1,a2);var _libhook_update_hook=Module["_libhook_update_hook"]=(a0,a1,a2)=>(_libhook_update_hook=Module["_libhook_update_hook"]=wasmExports["libhook_update_hook"])(a0,a1,a2);var _libprogress_progress_handler=Module["_libprogress_progress_handler"]=(a0,a1,a2,a3)=>(_libprogress_progress_handler=Module["_libprogress_progress_handler"]=wasmExports["libprogress_progress_handler"])(a0,a1,a2,a3);var _libvfs_vfs_register=Module["_libvfs_vfs_register"]=(a0,a1,a2,a3,a4,a5)=>(_libvfs_vfs_register=Module["_libvfs_vfs_register"]=wasmExports["libvfs_vfs_register"])(a0,a1,a2,a3,a4,a5);var _emscripten_builtin_memalign=(a0,a1)=>(_emscripten_builtin_memalign=wasmExports["emscripten_builtin_memalign"])(a0,a1);var __emscripten_tempret_get=()=>(__emscripten_tempret_get=wasmExports["_emscripten_tempret_get"])();var __emscripten_stack_restore=a0=>(__emscripten_stack_restore=wasmExports["_emscripten_stack_restore"])(a0);var __emscripten_stack_alloc=a0=>(__emscripten_stack_alloc=wasmExports["_emscripten_stack_alloc"])(a0);var _emscripten_stack_get_current=()=>(_emscripten_stack_get_current=wasmExports["emscripten_stack_get_current"])();var _sqlite3_version=Module["_sqlite3_version"]=3232;Module["getTempRet0"]=getTempRet0;Module["ccall"]=ccall;Module["cwrap"]=cwrap;Module["addFunction"]=addFunction;Module["setValue"]=setValue;Module["getValue"]=getValue;Module["UTF8ToString"]=UTF8ToString;Module["stringToUTF8"]=stringToUTF8;Module["lengthBytesUTF8"]=lengthBytesUTF8;Module["intArrayFromString"]=intArrayFromString;Module["intArrayToString"]=intArrayToString;Module["AsciiToString"]=AsciiToString;Module["UTF16ToString"]=UTF16ToString;Module["stringToUTF16"]=stringToUTF16;Module["UTF32ToString"]=UTF32ToString;Module["stringToUTF32"]=stringToUTF32;Module["writeArrayToMemory"]=writeArrayToMemory;var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(){var entryFunction=_main;var argc=0;var argv=0;try{var ret=entryFunction(argc,argv);Promise.resolve(ret).then(result=>{exitJS(result,true)}).catch(e=>{handleException(e)});return ret}catch(e){return handleException(e)}}function run(){if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();readyPromiseResolve(Module);if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"])shouldRunNow=false;run();(function(){const AsyncFunction=Object.getPrototypeOf(async function(){}).constructor;let pAsyncFlags=0;Module["set_authorizer"]=function(db,xAuthorizer,pApp){if(pAsyncFlags){Module["deleteCallback"](pAsyncFlags);Module["_sqlite3_free"](pAsyncFlags);pAsyncFlags=0}pAsyncFlags=Module["_sqlite3_malloc"](4);setValue(pAsyncFlags,xAuthorizer instanceof AsyncFunction?1:0,"i32");const result=ccall("libauthorizer_set_authorizer","number",["number","number","number"],[db,xAuthorizer?1:0,pAsyncFlags]);if(!result&&xAuthorizer){Module["setCallback"](pAsyncFlags,(_,iAction,p3,p4,p5,p6)=>xAuthorizer(pApp,iAction,p3,p4,p5,p6))}return result}})();(function(){const AsyncFunction=Object.getPrototypeOf(async function(){}).constructor;const FUNC_METHODS=["xFunc","xStep","xFinal"];const mapFunctionNameToKey=new Map;Module["create_function"]=function(db,zFunctionName,nArg,eTextRep,pApp,xFunc,xStep,xFinal){const pAsyncFlags=Module["_sqlite3_malloc"](4);const target={xFunc:xFunc,xStep:xStep,xFinal:xFinal};setValue(pAsyncFlags,FUNC_METHODS.reduce((mask,method,i)=>{if(target[method]instanceof AsyncFunction){return mask|1<xUpdateHook(iUpdateType,dbName,tblName,lo32,hi32))}}})();(function(){const AsyncFunction=Object.getPrototypeOf(async function(){}).constructor;let pAsyncFlags=0;Module["commit_hook"]=function(db,xCommitHook){if(pAsyncFlags){Module["deleteCallback"](pAsyncFlags);Module["_sqlite3_free"](pAsyncFlags);pAsyncFlags=0}pAsyncFlags=Module["_sqlite3_malloc"](4);setValue(pAsyncFlags,xCommitHook instanceof AsyncFunction?1:0,"i32");ccall("libhook_commit_hook","void",["number","number","number"],[db,xCommitHook?1:0,pAsyncFlags]);if(xCommitHook){Module["setCallback"](pAsyncFlags,_=>xCommitHook())}}})();(function(){const AsyncFunction=Object.getPrototypeOf(async function(){}).constructor;let pAsyncFlags=0;Module["progress_handler"]=function(db,nOps,xProgress,pApp){if(pAsyncFlags){Module["deleteCallback"](pAsyncFlags);Module["_sqlite3_free"](pAsyncFlags);pAsyncFlags=0}pAsyncFlags=Module["_sqlite3_malloc"](4);setValue(pAsyncFlags,xProgress instanceof AsyncFunction?1:0,"i32");ccall("libprogress_progress_handler","number",["number","number","number","number"],[db,nOps,xProgress?1:0,pAsyncFlags]);if(xProgress){Module["setCallback"](pAsyncFlags,_=>xProgress(pApp))}}})();(function(){const VFS_METHODS=["xOpen","xDelete","xAccess","xFullPathname","xRandomness","xSleep","xCurrentTime","xGetLastError","xCurrentTimeInt64","xClose","xRead","xWrite","xTruncate","xSync","xFileSize","xLock","xUnlock","xCheckReservedLock","xFileControl","xSectorSize","xDeviceCharacteristics","xShmMap","xShmLock","xShmBarrier","xShmUnmap"];const mapVFSNameToKey=new Map;Module["vfs_register"]=function(vfs,makeDefault){let methodMask=0;let asyncMask=0;VFS_METHODS.forEach((method,i)=>{if(vfs[method]){methodMask|=1<{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_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 readyPromiseResolve,readyPromiseReject;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;var runtimeInitialized=false;function updateMemoryViews(){var b=wasmMemory.buffer;HEAP8=new Int8Array(b);HEAP16=new Int16Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);HEAPU16=new Uint16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);HEAPU32=new Uint32Array(b);HEAPF32=new Float32Array(b);HEAPF64=new Float64Array(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;if(!Module["noFSInit"]&&!FS.initialized)FS.init();TTY.init();wasmExports["Ga"]();FS.ignorePermissions=false}function preMain(){}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("wa-sqlite.wasm")}return new URL("wa-sqlite.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){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(){return{a:wasmImports}}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}var tempDouble;var tempI64;class ExitStatus{name="ExitStatus";constructor(status){this.message=`Program terminated with exit(${status})`;this.status=status}}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);function getValue(ptr,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":return HEAP8[ptr];case"i8":return HEAP8[ptr];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":abort("to do getValue(i64) use WASM_BIGINT");case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];case"*":return HEAPU32[ptr>>2];default:abort(`invalid type for getValue: ${type}`)}}var noExitRuntime=true;function setValue(ptr,value,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":HEAP8[ptr]=value;break;case"i8":HEAP8[ptr]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":abort("to do setValue(i64) use WASM_BIGINT");case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;case"*":HEAPU32[ptr>>2]=value;break;default:abort(`invalid type for setValue: ${type}`)}}var stackRestore=val=>__emscripten_stack_restore(val);var stackSave=()=>_emscripten_stack_get_current();var UTF8Decoder=new TextDecoder;var findStringEnd=(heapOrArray,idx,maxBytesToRead,ignoreNul)=>{var maxIdx=idx+maxBytesToRead;if(ignoreNul)return maxIdx;while(heapOrArray[idx]&&!(idx>=maxIdx))++idx;return idx};var UTF8ToString=(ptr,maxBytesToRead,ignoreNul)=>{if(!ptr)return"";var end=findStringEnd(HEAPU8,ptr,maxBytesToRead,ignoreNul);return UTF8Decoder.decode(HEAPU8.subarray(ptr,end))};var ___assert_fail=(condition,filename,line,func)=>abort(`Assertion failed: ${UTF8ToString(condition)}, at: `+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"]);var exceptionLast=0;class ExceptionInfo{constructor(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24}set_type(type){HEAPU32[this.ptr+4>>2]=type}get_type(){return HEAPU32[this.ptr+4>>2]}set_destructor(destructor){HEAPU32[this.ptr+8>>2]=destructor}get_destructor(){return HEAPU32[this.ptr+8>>2]}set_caught(caught){caught=caught?1:0;HEAP8[this.ptr+12]=caught}get_caught(){return HEAP8[this.ptr+12]!=0}set_rethrown(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13]=rethrown}get_rethrown(){return HEAP8[this.ptr+13]!=0}init(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)}set_adjusted_ptr(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr}get_adjusted_ptr(){return HEAPU32[this.ptr+16>>2]}}var setTempRet0=val=>__emscripten_tempret_set(val);var findMatchingCatch=args=>{var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0}var info=new ExceptionInfo(thrown);info.set_adjusted_ptr(thrown);var thrownType=info.get_type();if(!thrownType){setTempRet0(0);return thrown}for(var caughtType of args){if(caughtType===0||caughtType===thrownType){break}var adjusted_ptr_addr=info.ptr+16;if(___cxa_can_catch(caughtType,thrownType,adjusted_ptr_addr)){setTempRet0(caughtType);return thrown}}setTempRet0(thrownType);return thrown};var ___cxa_find_matching_catch_2=()=>findMatchingCatch([]);var uncaughtExceptionCount=0;var ___cxa_throw=(ptr,type,destructor)=>{var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast};var ___resumeException=ptr=>{if(!exceptionLast){exceptionLast=ptr}throw exceptionLast};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 initRandomFill=()=>view=>crypto.getRandomValues(view);var randomFill=view=>{(randomFill=initRandomFill())(view)};var PATH_FS={resolve:(...args)=>{var resolvedPath="",resolvedAbsolute=false;for(var i=args.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?args[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).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 endPtr=findStringEnd(heapOrArray,idx,maxBytesToRead,ignoreNul);return UTF8Decoder.decode(heapOrArray.buffer?heapOrArray.subarray(idx,endPtr):new Uint8Array(heapOrArray.slice(idx,endPtr)))};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(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 zeroMemory=(ptr,size)=>HEAPU8.fill(0,ptr,ptr+size);var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var mmapAlloc=size=>{size=alignMemory(size,65536);var ptr=_emscripten_builtin_memalign(65536,size);if(ptr)zeroMemory(ptr,size);return ptr};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=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.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){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.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);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{var flagModes={r:0,"r+":2,w:512|64|1,"w+":512|64|2,a:1024|64|1,"a+":1024|64|2};var flags=flagModes[str];if(typeof flags=="undefined"){throw new Error(`Unknown file open mode: ${str}`)}return flags};var FS_getMode=(canRead,canWrite)=>{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode};var 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,readFiles:{},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}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup(dir){if(!FS.isDir(dir.mode))return 54;var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate(dir,name){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}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&(512|64)){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},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);setattr(arg,attr)},chrdev_stream_ops:{open(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;stream.stream_ops.open?.(stream)},llseek(){throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push(...m.mounts)}return mounts},syncfs(populate,callback){if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type,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);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup(parent,name){return parent.node_ops.lookup(parent,name)},mknod(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name){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=typeof flags=="string"?FS_modeStringToFlags(flags):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)}if(Module["logReadFiles"]&&!(flags&1)){if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close(stream){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed(stream){return stream.fd===null},llseek(stream,offset,whence){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},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);if(typeof data=="string"){data=new Uint8Array(intArrayFromString(data,true))}if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{abort("Unsupported data type")}FS.close(stream)},cwd:()=>FS.currentPath,chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length,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){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;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={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=(...args)=>{FS.forceLoadFile(node);return fn(...args)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr,allocated:true}};node.stream_ops=stream_ops;return node}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return 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;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+24>>2]=tempI64[0],HEAP32[buf+28>>2]=tempI64[1];HEAP32[buf+32>>2]=4096;HEAP32[buf+36>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();tempI64=[Math.floor(atime/1e3)>>>0,(tempDouble=Math.floor(atime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAPU32[buf+48>>2]=atime%1e3*1e3*1e3;tempI64=[Math.floor(mtime/1e3)>>>0,(tempDouble=Math.floor(mtime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+56>>2]=tempI64[0],HEAP32[buf+60>>2]=tempI64[1];HEAPU32[buf+64>>2]=mtime%1e3*1e3*1e3;tempI64=[Math.floor(ctime/1e3)>>>0,(tempDouble=Math.floor(ctime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+72>>2]=tempI64[0],HEAP32[buf+76>>2]=tempI64[1];HEAPU32[buf+80>>2]=ctime%1e3*1e3*1e3;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+88>>2]=tempI64[0],HEAP32[buf+92>>2]=tempI64[1];return 0},writeStatFs(buf,stats){HEAPU32[buf+4>>2]=stats.bsize;HEAPU32[buf+60>>2]=stats.bsize;tempI64=[stats.blocks>>>0,(tempDouble=stats.blocks,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+8>>2]=tempI64[0],HEAP32[buf+12>>2]=tempI64[1];tempI64=[stats.bfree>>>0,(tempDouble=stats.bfree,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+16>>2]=tempI64[0],HEAP32[buf+20>>2]=tempI64[1];tempI64=[stats.bavail>>>0,(tempDouble=stats.bavail,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+24>>2]=tempI64[0],HEAP32[buf+28>>2]=tempI64[1];tempI64=[stats.files>>>0,(tempDouble=stats.files,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+32>>2]=tempI64[0],HEAP32[buf+36>>2]=tempI64[1];tempI64=[stats.ffree>>>0,(tempDouble=stats.ffree,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAPU32[buf+48>>2]=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_chmod(path,mode){try{path=SYSCALLS.getStr(path);FS.chmod(path,mode);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_faccessat(dirfd,path,amode,flags){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_fchmod(fd,mode){try{FS.fchmod(fd,mode);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_fchown32(fd,owner,group){try{FS.fchown(fd,owner,group);return 0}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();stream.flags|=arg;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 convertI32PairToI53Checked=(lo,hi)=>hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN;function ___syscall_ftruncate64(fd,length_low,length_high){var length=convertI32PairToI53Checked(length_low,length_high);try{if(isNaN(length))return-61;FS.ftruncate(fd,length);return 0}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(sizeHEAPU32[ptr>>2]+HEAP32[ptr+4>>2]*4294967296;function ___syscall_utimensat(dirfd,path,times,flags){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path,true);var now=Date.now(),atime,mtime;if(!times){atime=now;mtime=now}else{var seconds=readI53FromI64(times);var nanoseconds=HEAP32[times+8>>2];if(nanoseconds==1073741823){atime=now}else if(nanoseconds==1073741822){atime=null}else{atime=seconds*1e3+nanoseconds/(1e3*1e3)}times+=16;seconds=readI53FromI64(times);nanoseconds=HEAP32[times+8>>2];if(nanoseconds==1073741823){mtime=now}else if(nanoseconds==1073741822){mtime=null}else{mtime=seconds*1e3+nanoseconds/(1e3*1e3)}}if((mtime??atime)!==null){FS.utime(path,atime,mtime)}return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var __abort_js=()=>abort("");var runtimeKeepaliveCounter=0;var __emscripten_runtime_keepalive_clear=()=>{noExitRuntime=false;runtimeKeepaliveCounter=0};var isLeapYear=year=>year%4===0&&(year%100!==0||year%400===0);var MONTH_DAYS_LEAP_CUMULATIVE=[0,31,60,91,121,152,182,213,244,274,305,335];var MONTH_DAYS_REGULAR_CUMULATIVE=[0,31,59,90,120,151,181,212,243,273,304,334];var ydayFromDate=date=>{var leap=isLeapYear(date.getFullYear());var monthDaysCumulative=leap?MONTH_DAYS_LEAP_CUMULATIVE:MONTH_DAYS_REGULAR_CUMULATIVE;var yday=monthDaysCumulative[date.getMonth()]+date.getDate()-1;return yday};function __localtime_js(time_low,time_high,tmPtr){var time=convertI32PairToI53Checked(time_low,time_high);var date=new Date(time*1e3);HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getDay();var yday=ydayFromDate(date)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr+36>>2]=-(date.getTimezoneOffset()*60);var start=new Date(date.getFullYear(),0,1);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dst=(summerOffset!=winterOffset&&date.getTimezoneOffset()==Math.min(winterOffset,summerOffset))|0;HEAP32[tmPtr+32>>2]=dst}function __mmap_js(len,prot,flags,fd,offset_low,offset_high,allocated,addr){var offset=convertI32PairToI53Checked(offset_low,offset_high);try{var stream=SYSCALLS.getStreamFromFD(fd);var res=FS.mmap(stream,len,offset,prot,flags);var ptr=res.ptr;HEAP32[allocated>>2]=res.allocated;HEAPU32[addr>>2]=ptr;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function __munmap_js(addr,len,prot,flags,fd,offset_low,offset_high){var offset=convertI32PairToI53Checked(offset_low,offset_high);try{var stream=SYSCALLS.getStreamFromFD(fd);if(prot&2){SYSCALLS.doMsync(addr,stream,len,flags,offset)}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var timers={};var handleException=e=>{if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)};var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){Module["onExit"]?.(code);ABORT=true}quit_(code,new ExitStatus(code))};var exitJS=(status,implicit)=>{EXITSTATUS=status;_proc_exit(status)};var _exit=exitJS;var maybeExit=()=>{if(!keepRuntimeAlive()){try{_exit(EXITSTATUS)}catch(e){handleException(e)}}};var callUserCallback=func=>{if(ABORT){return}try{func();maybeExit()}catch(e){handleException(e)}};var _emscripten_get_now=()=>performance.now();var __setitimer_js=(which,timeout_ms)=>{if(timers[which]){clearTimeout(timers[which].id);delete timers[which]}if(!timeout_ms)return 0;var id=setTimeout(()=>{delete timers[which];callUserCallback(()=>__emscripten_timeout(which,_emscripten_get_now()))},timeout_ms);timers[which]={id,timeout_ms};return 0};var __tzset_js=(timezone,daylight,std_name,dst_name)=>{var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);var winterOffset=winter.getTimezoneOffset();var summerOffset=summer.getTimezoneOffset();var stdTimezoneOffset=Math.max(winterOffset,summerOffset);HEAPU32[timezone>>2]=stdTimezoneOffset*60;HEAP32[daylight>>2]=Number(winterOffset!=summerOffset);var extractZone=timezoneOffset=>{var sign=timezoneOffset>=0?"-":"+";var absOffset=Math.abs(timezoneOffset);var hours=String(Math.floor(absOffset/60)).padStart(2,"0");var minutes=String(absOffset%60).padStart(2,"0");return`UTC${sign}${hours}${minutes}`};var winterName=extractZone(winterOffset);var summerName=extractZone(summerOffset);if(summerOffsetDate.now();var getHeapMax=()=>2147483648;var _emscripten_get_heap_max=()=>getHeapMax();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||"./this.program";var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&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};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;tempI64=[rightsBase>>>0,(tempDouble=rightsBase,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[pbuf+8>>2]=tempI64[0],HEAP32[pbuf+12>>2]=tempI64[1];tempI64=[rightsInheriting>>>0,(tempDouble=rightsInheriting,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[pbuf+16>>2]=tempI64[0],HEAP32[pbuf+20>>2]=tempI64[1];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_low,offset_high,whence,newOffset){var offset=convertI32PairToI53Checked(offset_low,offset_high);try{if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _fd_sync(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);if(stream.stream_ops?.fsync){return stream.stream_ops.fsync(stream)}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 adapters_support=function(){const handleAsync=typeof Asyncify==="object"?Asyncify.handleAsync.bind(Asyncify):null;Module["handleAsync"]=handleAsync;const targets=new Map;Module["setCallback"]=(key,target)=>targets.set(key,target);Module["getCallback"]=key=>targets.get(key);Module["deleteCallback"]=key=>targets.delete(key);adapters_support=function(isAsync,key,...args){const receiver=targets.get(key);let methodName=null;const f=typeof receiver==="function"?receiver:receiver[methodName=UTF8ToString(args.shift())];if(isAsync){if(handleAsync){return handleAsync(()=>f.apply(receiver,args))}throw new Error("Synchronous WebAssembly cannot call async function")}const result=f.apply(receiver,args);if(typeof result?.then=="function"){console.error("unexpected Promise",f);throw new Error(`${methodName} unexpectedly returned a Promise`)}return result}};function _ipp(...args){return adapters_support(false,...args)}function _ipp_async(...args){return adapters_support(true,...args)}function _ippipppp(...args){return adapters_support(false,...args)}function _ippipppp_async(...args){return adapters_support(true,...args)}function _ippp(...args){return adapters_support(false,...args)}function _ippp_async(...args){return adapters_support(true,...args)}function _ipppi(...args){return adapters_support(false,...args)}function _ipppi_async(...args){return adapters_support(true,...args)}function _ipppiii(...args){return adapters_support(false,...args)}function _ipppiii_async(...args){return adapters_support(true,...args)}function _ipppiiip(...args){return adapters_support(false,...args)}function _ipppiiip_async(...args){return adapters_support(true,...args)}function _ipppip(...args){return adapters_support(false,...args)}function _ipppip_async(...args){return adapters_support(true,...args)}function _ipppj(...args){return adapters_support(false,...args)}function _ipppj_async(...args){return adapters_support(true,...args)}function _ipppp(...args){return adapters_support(false,...args)}function _ipppp_async(...args){return adapters_support(true,...args)}function _ippppi(...args){return adapters_support(false,...args)}function _ippppi_async(...args){return adapters_support(true,...args)}function _ippppij(...args){return adapters_support(false,...args)}function _ippppij_async(...args){return adapters_support(true,...args)}function _ippppip(...args){return adapters_support(false,...args)}function _ippppip_async(...args){return adapters_support(true,...args)}function _ipppppip(...args){return adapters_support(false,...args)}function _ipppppip_async(...args){return adapters_support(true,...args)}function _random_get(buffer,size){try{randomFill(HEAPU8.subarray(buffer,buffer+size));return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _vppippii(...args){return adapters_support(false,...args)}function _vppippii_async(...args){return adapters_support(true,...args)}function _vppp(...args){return adapters_support(false,...args)}function _vppp_async(...args){return adapters_support(true,...args)}function _vpppip(...args){return adapters_support(false,...args)}function _vpppip_async(...args){return adapters_support(true,...args)}var getWasmTableEntry=funcPtr=>wasmTable.get(funcPtr);var updateTableMap=(offset,count)=>{if(functionsInTableMap){for(var i=offset;i{if(!functionsInTableMap){functionsInTableMap=new WeakMap;updateTableMap(0,wasmTable.length)}return functionsInTableMap.get(func)||0};var freeTableIndexes=[];var getEmptyTableSlot=()=>{if(freeTableIndexes.length){return freeTableIndexes.pop()}return wasmTable["grow"](1)};var setWasmTableEntry=(idx,func)=>wasmTable.set(idx,func);var uleb128EncodeWithLen=arr=>{const n=arr.length;return[n%128|128,n>>7,...arr]};var wasmTypeCodes={i:127,p:127,j:126,f:125,d:124,e:111};var generateTypePack=types=>uleb128EncodeWithLen(Array.from(types,type=>{var code=wasmTypeCodes[type];return code}));var convertJsFunctionToWasm=(func,sig)=>{var bytes=Uint8Array.of(0,97,115,109,1,0,0,0,1,...uleb128EncodeWithLen([1,96,...generateTypePack(sig.slice(1)),...generateTypePack(sig[0]==="v"?"":sig[0])]),2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0);var module=new WebAssembly.Module(bytes);var instance=new WebAssembly.Instance(module,{e:{f:func}});var wrappedFunc=instance.exports["f"];return wrappedFunc};var addFunction=(func,sig)=>{var rtn=getFunctionAddress(func);if(rtn){return rtn}var ret=getEmptyTableSlot();try{setWasmTableEntry(ret,func)}catch(err){if(!(err instanceof TypeError)){throw err}var wrapped=convertJsFunctionToWasm(func,sig);setWasmTableEntry(ret,wrapped)}functionsInTableMap.set(func,ret);return ret};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)};var getTempRet0=val=>__emscripten_tempret_get();var stringToUTF16=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr};var stringToUTF32=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i65535){i++}HEAP32[outPtr>>2]=codePoint;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr};var AsciiToString=ptr=>{var str="";while(1){var ch=HEAPU8[ptr++];if(!ch)return str;str+=String.fromCharCode(ch)}};var UTF16Decoder=new TextDecoder("utf-16le");var UTF16ToString=(ptr,maxBytesToRead,ignoreNul)=>{var idx=ptr>>1;var endIdx=findStringEnd(HEAPU16,idx,maxBytesToRead/2,ignoreNul);return UTF16Decoder.decode(HEAPU16.subarray(idx,endIdx))};var UTF32ToString=(ptr,maxBytesToRead,ignoreNul)=>{var str="";var startIdx=ptr>>2;for(var i=0;!(i>=maxBytesToRead/4);i++){var utf32=HEAPU32[startIdx+i];if(!utf32&&!ignoreNul)break;str+=String.fromCodePoint(utf32)}return str};var intArrayToString=array=>{var ret=[];for(var i=0;i255){chr&=255}ret.push(String.fromCharCode(chr))}return ret.join("")};FS.createPreloadedFile=FS_createPreloadedFile;FS.preloadFile=FS_preloadFile;FS.staticInit();adapters_support();{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"])arguments_=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["getTempRet0"]=getTempRet0;Module["ccall"]=ccall;Module["cwrap"]=cwrap;Module["addFunction"]=addFunction;Module["setValue"]=setValue;Module["getValue"]=getValue;Module["UTF8ToString"]=UTF8ToString;Module["stringToUTF8"]=stringToUTF8;Module["lengthBytesUTF8"]=lengthBytesUTF8;Module["intArrayFromString"]=intArrayFromString;Module["intArrayToString"]=intArrayToString;Module["AsciiToString"]=AsciiToString;Module["UTF16ToString"]=UTF16ToString;Module["stringToUTF16"]=stringToUTF16;Module["UTF32ToString"]=UTF32ToString;Module["stringToUTF32"]=stringToUTF32;Module["writeArrayToMemory"]=writeArrayToMemory;var _sqlite3_status64,_sqlite3_status,_sqlite3_db_status,_sqlite3_msize,_sqlite3_vfs_find,_sqlite3_vfs_register,_sqlite3_vfs_unregister,_sqlite3_release_memory,_sqlite3_soft_heap_limit64,_sqlite3_memory_used,_sqlite3_hard_heap_limit64,_sqlite3_memory_highwater,_sqlite3_malloc,_sqlite3_malloc64,_sqlite3_free,_sqlite3_realloc,_sqlite3_realloc64,_sqlite3_str_vappendf,_sqlite3_str_append,_sqlite3_str_appendchar,_sqlite3_str_appendall,_sqlite3_str_appendf,_sqlite3_str_finish,_sqlite3_str_errcode,_sqlite3_str_length,_sqlite3_str_value,_sqlite3_str_reset,_sqlite3_str_new,_sqlite3_vmprintf,_sqlite3_mprintf,_sqlite3_vsnprintf,_sqlite3_snprintf,_sqlite3_log,_sqlite3_randomness,_sqlite3_stricmp,_sqlite3_strnicmp,_sqlite3_os_init,_sqlite3_os_end,_sqlite3_serialize,_sqlite3_prepare_v2,_sqlite3_step,_sqlite3_column_int64,_sqlite3_reset,_sqlite3_exec,_sqlite3_column_int,_sqlite3_finalize,_sqlite3_deserialize,_sqlite3_database_file_object,_sqlite3_backup_init,_sqlite3_backup_step,_sqlite3_backup_finish,_sqlite3_backup_remaining,_sqlite3_backup_pagecount,_sqlite3_clear_bindings,_sqlite3_value_blob,_sqlite3_value_text,_sqlite3_value_bytes,_sqlite3_value_bytes16,_sqlite3_value_double,_sqlite3_value_int,_sqlite3_value_int64,_sqlite3_value_subtype,_sqlite3_value_pointer,_sqlite3_value_text16,_sqlite3_value_text16be,_sqlite3_value_text16le,_sqlite3_value_type,_sqlite3_value_encoding,_sqlite3_value_nochange,_sqlite3_value_frombind,_sqlite3_value_dup,_sqlite3_value_free,_sqlite3_result_blob,_sqlite3_result_blob64,_sqlite3_result_double,_sqlite3_result_error,_sqlite3_result_error16,_sqlite3_result_int,_sqlite3_result_int64,_sqlite3_result_null,_sqlite3_result_pointer,_sqlite3_result_subtype,_sqlite3_result_text,_sqlite3_result_text64,_sqlite3_result_text16,_sqlite3_result_text16be,_sqlite3_result_text16le,_sqlite3_result_value,_sqlite3_result_error_toobig,_sqlite3_result_zeroblob,_sqlite3_result_zeroblob64,_sqlite3_result_error_code,_sqlite3_result_error_nomem,_sqlite3_user_data,_sqlite3_context_db_handle,_sqlite3_vtab_nochange,_sqlite3_vtab_in_first,_sqlite3_vtab_in_next,_sqlite3_aggregate_context,_sqlite3_get_auxdata,_sqlite3_set_auxdata,_sqlite3_column_count,_sqlite3_data_count,_sqlite3_column_blob,_sqlite3_column_bytes,_sqlite3_column_bytes16,_sqlite3_column_double,_sqlite3_column_text,_sqlite3_column_value,_sqlite3_column_text16,_sqlite3_column_type,_sqlite3_column_name,_sqlite3_column_name16,_sqlite3_bind_blob,_sqlite3_bind_blob64,_sqlite3_bind_double,_sqlite3_bind_int,_sqlite3_bind_int64,_sqlite3_bind_null,_sqlite3_bind_pointer,_sqlite3_bind_text,_sqlite3_bind_text64,_sqlite3_bind_text16,_sqlite3_bind_value,_sqlite3_bind_zeroblob,_sqlite3_bind_zeroblob64,_sqlite3_bind_parameter_count,_sqlite3_bind_parameter_name,_sqlite3_bind_parameter_index,_sqlite3_db_handle,_sqlite3_stmt_readonly,_sqlite3_stmt_isexplain,_sqlite3_stmt_explain,_sqlite3_stmt_busy,_sqlite3_next_stmt,_sqlite3_stmt_status,_sqlite3_sql,_sqlite3_expanded_sql,_sqlite3_value_numeric_type,_sqlite3_blob_open,_sqlite3_blob_close,_sqlite3_blob_read,_sqlite3_blob_write,_sqlite3_blob_bytes,_sqlite3_blob_reopen,_sqlite3_set_authorizer,_sqlite3_strglob,_sqlite3_strlike,_sqlite3_errmsg,_sqlite3_auto_extension,_sqlite3_cancel_auto_extension,_sqlite3_reset_auto_extension,_sqlite3_prepare,_sqlite3_prepare_v3,_sqlite3_prepare16,_sqlite3_prepare16_v2,_sqlite3_prepare16_v3,_sqlite3_get_table,_sqlite3_free_table,_sqlite3_create_module,_sqlite3_create_module_v2,_sqlite3_drop_modules,_sqlite3_declare_vtab,_sqlite3_vtab_on_conflict,_sqlite3_vtab_config,_sqlite3_vtab_collation,_sqlite3_vtab_in,_sqlite3_vtab_rhs_value,_sqlite3_vtab_distinct,_sqlite3_keyword_name,_sqlite3_keyword_count,_sqlite3_keyword_check,_sqlite3_complete,_sqlite3_complete16,_sqlite3_libversion,_sqlite3_libversion_number,_sqlite3_threadsafe,_sqlite3_initialize,_sqlite3_shutdown,_sqlite3_config,_sqlite3_db_mutex,_sqlite3_db_release_memory,_sqlite3_db_cacheflush,_sqlite3_db_config,_sqlite3_last_insert_rowid,_sqlite3_set_last_insert_rowid,_sqlite3_changes64,_sqlite3_changes,_sqlite3_total_changes64,_sqlite3_total_changes,_sqlite3_txn_state,_sqlite3_close,_sqlite3_close_v2,_sqlite3_busy_handler,_sqlite3_progress_handler,_sqlite3_busy_timeout,_sqlite3_interrupt,_sqlite3_is_interrupted,_sqlite3_create_function,_sqlite3_create_function_v2,_sqlite3_create_window_function,_sqlite3_create_function16,_sqlite3_overload_function,_sqlite3_trace_v2,_sqlite3_commit_hook,_sqlite3_update_hook,_sqlite3_rollback_hook,_sqlite3_autovacuum_pages,_sqlite3_wal_autocheckpoint,_sqlite3_wal_hook,_sqlite3_wal_checkpoint_v2,_sqlite3_wal_checkpoint,_sqlite3_error_offset,_sqlite3_errmsg16,_sqlite3_errcode,_sqlite3_extended_errcode,_sqlite3_system_errno,_sqlite3_errstr,_sqlite3_limit,_sqlite3_open,_sqlite3_open_v2,_sqlite3_open16,_sqlite3_create_collation,_sqlite3_create_collation_v2,_sqlite3_create_collation16,_sqlite3_collation_needed,_sqlite3_collation_needed16,_sqlite3_get_clientdata,_sqlite3_set_clientdata,_sqlite3_get_autocommit,_sqlite3_table_column_metadata,_sqlite3_sleep,_sqlite3_extended_result_codes,_sqlite3_file_control,_sqlite3_test_control,_sqlite3_create_filename,_sqlite3_free_filename,_sqlite3_uri_parameter,_sqlite3_uri_key,_sqlite3_uri_boolean,_sqlite3_uri_int64,_sqlite3_filename_database,_sqlite3_filename_journal,_sqlite3_filename_wal,_sqlite3_db_name,_sqlite3_db_filename,_sqlite3_db_readonly,_sqlite3_compileoption_used,_sqlite3_compileoption_get,_sqlite3_sourceid,_malloc,_free,_RegisterExtensionFunctions,_getSqliteFree,_main,_libauthorizer_set_authorizer,_libfunction_create_function,_libhook_commit_hook,_libhook_update_hook,_libprogress_progress_handler,_libvfs_vfs_register,_emscripten_builtin_memalign,__emscripten_timeout,_setThrew,__emscripten_tempret_set,__emscripten_tempret_get,__emscripten_stack_restore,__emscripten_stack_alloc,_emscripten_stack_get_current,___cxa_can_catch,dynCall_viiiiij,dynCall_viji,dynCall_viiiij,dynCall_iij,dynCall_iiiij,dynCall_iijii,dynCall_iiji,dynCall_iiiiiij,wasmMemory,wasmTable;function assignWasmExports(wasmExports){_sqlite3_status64=Module["_sqlite3_status64"]=wasmExports["Ha"];_sqlite3_status=Module["_sqlite3_status"]=wasmExports["Ia"];_sqlite3_db_status=Module["_sqlite3_db_status"]=wasmExports["Ja"];_sqlite3_msize=Module["_sqlite3_msize"]=wasmExports["Ka"];_sqlite3_vfs_find=Module["_sqlite3_vfs_find"]=wasmExports["La"];_sqlite3_vfs_register=Module["_sqlite3_vfs_register"]=wasmExports["Ma"];_sqlite3_vfs_unregister=Module["_sqlite3_vfs_unregister"]=wasmExports["Na"];_sqlite3_release_memory=Module["_sqlite3_release_memory"]=wasmExports["Oa"];_sqlite3_soft_heap_limit64=Module["_sqlite3_soft_heap_limit64"]=wasmExports["Pa"];_sqlite3_memory_used=Module["_sqlite3_memory_used"]=wasmExports["Qa"];_sqlite3_hard_heap_limit64=Module["_sqlite3_hard_heap_limit64"]=wasmExports["Ra"];_sqlite3_memory_highwater=Module["_sqlite3_memory_highwater"]=wasmExports["Sa"];_sqlite3_malloc=Module["_sqlite3_malloc"]=wasmExports["Ta"];_sqlite3_malloc64=Module["_sqlite3_malloc64"]=wasmExports["Ua"];_sqlite3_free=Module["_sqlite3_free"]=wasmExports["Va"];_sqlite3_realloc=Module["_sqlite3_realloc"]=wasmExports["Wa"];_sqlite3_realloc64=Module["_sqlite3_realloc64"]=wasmExports["Xa"];_sqlite3_str_vappendf=Module["_sqlite3_str_vappendf"]=wasmExports["Ya"];_sqlite3_str_append=Module["_sqlite3_str_append"]=wasmExports["Za"];_sqlite3_str_appendchar=Module["_sqlite3_str_appendchar"]=wasmExports["_a"];_sqlite3_str_appendall=Module["_sqlite3_str_appendall"]=wasmExports["$a"];_sqlite3_str_appendf=Module["_sqlite3_str_appendf"]=wasmExports["ab"];_sqlite3_str_finish=Module["_sqlite3_str_finish"]=wasmExports["bb"];_sqlite3_str_errcode=Module["_sqlite3_str_errcode"]=wasmExports["cb"];_sqlite3_str_length=Module["_sqlite3_str_length"]=wasmExports["db"];_sqlite3_str_value=Module["_sqlite3_str_value"]=wasmExports["eb"];_sqlite3_str_reset=Module["_sqlite3_str_reset"]=wasmExports["fb"];_sqlite3_str_new=Module["_sqlite3_str_new"]=wasmExports["gb"];_sqlite3_vmprintf=Module["_sqlite3_vmprintf"]=wasmExports["hb"];_sqlite3_mprintf=Module["_sqlite3_mprintf"]=wasmExports["ib"];_sqlite3_vsnprintf=Module["_sqlite3_vsnprintf"]=wasmExports["jb"];_sqlite3_snprintf=Module["_sqlite3_snprintf"]=wasmExports["kb"];_sqlite3_log=Module["_sqlite3_log"]=wasmExports["lb"];_sqlite3_randomness=Module["_sqlite3_randomness"]=wasmExports["mb"];_sqlite3_stricmp=Module["_sqlite3_stricmp"]=wasmExports["nb"];_sqlite3_strnicmp=Module["_sqlite3_strnicmp"]=wasmExports["ob"];_sqlite3_os_init=Module["_sqlite3_os_init"]=wasmExports["pb"];_sqlite3_os_end=Module["_sqlite3_os_end"]=wasmExports["qb"];_sqlite3_serialize=Module["_sqlite3_serialize"]=wasmExports["rb"];_sqlite3_prepare_v2=Module["_sqlite3_prepare_v2"]=wasmExports["sb"];_sqlite3_step=Module["_sqlite3_step"]=wasmExports["tb"];_sqlite3_column_int64=Module["_sqlite3_column_int64"]=wasmExports["ub"];_sqlite3_reset=Module["_sqlite3_reset"]=wasmExports["vb"];_sqlite3_exec=Module["_sqlite3_exec"]=wasmExports["wb"];_sqlite3_column_int=Module["_sqlite3_column_int"]=wasmExports["xb"];_sqlite3_finalize=Module["_sqlite3_finalize"]=wasmExports["yb"];_sqlite3_deserialize=Module["_sqlite3_deserialize"]=wasmExports["zb"];_sqlite3_database_file_object=Module["_sqlite3_database_file_object"]=wasmExports["Ab"];_sqlite3_backup_init=Module["_sqlite3_backup_init"]=wasmExports["Bb"];_sqlite3_backup_step=Module["_sqlite3_backup_step"]=wasmExports["Cb"];_sqlite3_backup_finish=Module["_sqlite3_backup_finish"]=wasmExports["Db"];_sqlite3_backup_remaining=Module["_sqlite3_backup_remaining"]=wasmExports["Eb"];_sqlite3_backup_pagecount=Module["_sqlite3_backup_pagecount"]=wasmExports["Fb"];_sqlite3_clear_bindings=Module["_sqlite3_clear_bindings"]=wasmExports["Gb"];_sqlite3_value_blob=Module["_sqlite3_value_blob"]=wasmExports["Hb"];_sqlite3_value_text=Module["_sqlite3_value_text"]=wasmExports["Ib"];_sqlite3_value_bytes=Module["_sqlite3_value_bytes"]=wasmExports["Jb"];_sqlite3_value_bytes16=Module["_sqlite3_value_bytes16"]=wasmExports["Kb"];_sqlite3_value_double=Module["_sqlite3_value_double"]=wasmExports["Lb"];_sqlite3_value_int=Module["_sqlite3_value_int"]=wasmExports["Mb"];_sqlite3_value_int64=Module["_sqlite3_value_int64"]=wasmExports["Nb"];_sqlite3_value_subtype=Module["_sqlite3_value_subtype"]=wasmExports["Ob"];_sqlite3_value_pointer=Module["_sqlite3_value_pointer"]=wasmExports["Pb"];_sqlite3_value_text16=Module["_sqlite3_value_text16"]=wasmExports["Qb"];_sqlite3_value_text16be=Module["_sqlite3_value_text16be"]=wasmExports["Rb"];_sqlite3_value_text16le=Module["_sqlite3_value_text16le"]=wasmExports["Sb"];_sqlite3_value_type=Module["_sqlite3_value_type"]=wasmExports["Tb"];_sqlite3_value_encoding=Module["_sqlite3_value_encoding"]=wasmExports["Ub"];_sqlite3_value_nochange=Module["_sqlite3_value_nochange"]=wasmExports["Vb"];_sqlite3_value_frombind=Module["_sqlite3_value_frombind"]=wasmExports["Wb"];_sqlite3_value_dup=Module["_sqlite3_value_dup"]=wasmExports["Xb"];_sqlite3_value_free=Module["_sqlite3_value_free"]=wasmExports["Yb"];_sqlite3_result_blob=Module["_sqlite3_result_blob"]=wasmExports["Zb"];_sqlite3_result_blob64=Module["_sqlite3_result_blob64"]=wasmExports["_b"];_sqlite3_result_double=Module["_sqlite3_result_double"]=wasmExports["$b"];_sqlite3_result_error=Module["_sqlite3_result_error"]=wasmExports["ac"];_sqlite3_result_error16=Module["_sqlite3_result_error16"]=wasmExports["bc"];_sqlite3_result_int=Module["_sqlite3_result_int"]=wasmExports["cc"];_sqlite3_result_int64=Module["_sqlite3_result_int64"]=wasmExports["dc"];_sqlite3_result_null=Module["_sqlite3_result_null"]=wasmExports["ec"];_sqlite3_result_pointer=Module["_sqlite3_result_pointer"]=wasmExports["fc"];_sqlite3_result_subtype=Module["_sqlite3_result_subtype"]=wasmExports["gc"];_sqlite3_result_text=Module["_sqlite3_result_text"]=wasmExports["hc"];_sqlite3_result_text64=Module["_sqlite3_result_text64"]=wasmExports["ic"];_sqlite3_result_text16=Module["_sqlite3_result_text16"]=wasmExports["jc"];_sqlite3_result_text16be=Module["_sqlite3_result_text16be"]=wasmExports["kc"];_sqlite3_result_text16le=Module["_sqlite3_result_text16le"]=wasmExports["lc"];_sqlite3_result_value=Module["_sqlite3_result_value"]=wasmExports["mc"];_sqlite3_result_error_toobig=Module["_sqlite3_result_error_toobig"]=wasmExports["nc"];_sqlite3_result_zeroblob=Module["_sqlite3_result_zeroblob"]=wasmExports["oc"];_sqlite3_result_zeroblob64=Module["_sqlite3_result_zeroblob64"]=wasmExports["pc"];_sqlite3_result_error_code=Module["_sqlite3_result_error_code"]=wasmExports["qc"];_sqlite3_result_error_nomem=Module["_sqlite3_result_error_nomem"]=wasmExports["rc"];_sqlite3_user_data=Module["_sqlite3_user_data"]=wasmExports["sc"];_sqlite3_context_db_handle=Module["_sqlite3_context_db_handle"]=wasmExports["tc"];_sqlite3_vtab_nochange=Module["_sqlite3_vtab_nochange"]=wasmExports["uc"];_sqlite3_vtab_in_first=Module["_sqlite3_vtab_in_first"]=wasmExports["vc"];_sqlite3_vtab_in_next=Module["_sqlite3_vtab_in_next"]=wasmExports["wc"];_sqlite3_aggregate_context=Module["_sqlite3_aggregate_context"]=wasmExports["xc"];_sqlite3_get_auxdata=Module["_sqlite3_get_auxdata"]=wasmExports["yc"];_sqlite3_set_auxdata=Module["_sqlite3_set_auxdata"]=wasmExports["zc"];_sqlite3_column_count=Module["_sqlite3_column_count"]=wasmExports["Ac"];_sqlite3_data_count=Module["_sqlite3_data_count"]=wasmExports["Bc"];_sqlite3_column_blob=Module["_sqlite3_column_blob"]=wasmExports["Cc"];_sqlite3_column_bytes=Module["_sqlite3_column_bytes"]=wasmExports["Dc"];_sqlite3_column_bytes16=Module["_sqlite3_column_bytes16"]=wasmExports["Ec"];_sqlite3_column_double=Module["_sqlite3_column_double"]=wasmExports["Fc"];_sqlite3_column_text=Module["_sqlite3_column_text"]=wasmExports["Gc"];_sqlite3_column_value=Module["_sqlite3_column_value"]=wasmExports["Hc"];_sqlite3_column_text16=Module["_sqlite3_column_text16"]=wasmExports["Ic"];_sqlite3_column_type=Module["_sqlite3_column_type"]=wasmExports["Jc"];_sqlite3_column_name=Module["_sqlite3_column_name"]=wasmExports["Kc"];_sqlite3_column_name16=Module["_sqlite3_column_name16"]=wasmExports["Lc"];_sqlite3_bind_blob=Module["_sqlite3_bind_blob"]=wasmExports["Mc"];_sqlite3_bind_blob64=Module["_sqlite3_bind_blob64"]=wasmExports["Nc"];_sqlite3_bind_double=Module["_sqlite3_bind_double"]=wasmExports["Oc"];_sqlite3_bind_int=Module["_sqlite3_bind_int"]=wasmExports["Pc"];_sqlite3_bind_int64=Module["_sqlite3_bind_int64"]=wasmExports["Qc"];_sqlite3_bind_null=Module["_sqlite3_bind_null"]=wasmExports["Rc"];_sqlite3_bind_pointer=Module["_sqlite3_bind_pointer"]=wasmExports["Sc"];_sqlite3_bind_text=Module["_sqlite3_bind_text"]=wasmExports["Tc"];_sqlite3_bind_text64=Module["_sqlite3_bind_text64"]=wasmExports["Uc"];_sqlite3_bind_text16=Module["_sqlite3_bind_text16"]=wasmExports["Vc"];_sqlite3_bind_value=Module["_sqlite3_bind_value"]=wasmExports["Wc"];_sqlite3_bind_zeroblob=Module["_sqlite3_bind_zeroblob"]=wasmExports["Xc"];_sqlite3_bind_zeroblob64=Module["_sqlite3_bind_zeroblob64"]=wasmExports["Yc"];_sqlite3_bind_parameter_count=Module["_sqlite3_bind_parameter_count"]=wasmExports["Zc"];_sqlite3_bind_parameter_name=Module["_sqlite3_bind_parameter_name"]=wasmExports["_c"];_sqlite3_bind_parameter_index=Module["_sqlite3_bind_parameter_index"]=wasmExports["$c"];_sqlite3_db_handle=Module["_sqlite3_db_handle"]=wasmExports["ad"];_sqlite3_stmt_readonly=Module["_sqlite3_stmt_readonly"]=wasmExports["bd"];_sqlite3_stmt_isexplain=Module["_sqlite3_stmt_isexplain"]=wasmExports["cd"];_sqlite3_stmt_explain=Module["_sqlite3_stmt_explain"]=wasmExports["dd"];_sqlite3_stmt_busy=Module["_sqlite3_stmt_busy"]=wasmExports["ed"];_sqlite3_next_stmt=Module["_sqlite3_next_stmt"]=wasmExports["fd"];_sqlite3_stmt_status=Module["_sqlite3_stmt_status"]=wasmExports["gd"];_sqlite3_sql=Module["_sqlite3_sql"]=wasmExports["hd"];_sqlite3_expanded_sql=Module["_sqlite3_expanded_sql"]=wasmExports["id"];_sqlite3_value_numeric_type=Module["_sqlite3_value_numeric_type"]=wasmExports["jd"];_sqlite3_blob_open=Module["_sqlite3_blob_open"]=wasmExports["kd"];_sqlite3_blob_close=Module["_sqlite3_blob_close"]=wasmExports["ld"];_sqlite3_blob_read=Module["_sqlite3_blob_read"]=wasmExports["md"];_sqlite3_blob_write=Module["_sqlite3_blob_write"]=wasmExports["nd"];_sqlite3_blob_bytes=Module["_sqlite3_blob_bytes"]=wasmExports["od"];_sqlite3_blob_reopen=Module["_sqlite3_blob_reopen"]=wasmExports["pd"];_sqlite3_set_authorizer=Module["_sqlite3_set_authorizer"]=wasmExports["qd"];_sqlite3_strglob=Module["_sqlite3_strglob"]=wasmExports["rd"];_sqlite3_strlike=Module["_sqlite3_strlike"]=wasmExports["sd"];_sqlite3_errmsg=Module["_sqlite3_errmsg"]=wasmExports["td"];_sqlite3_auto_extension=Module["_sqlite3_auto_extension"]=wasmExports["ud"];_sqlite3_cancel_auto_extension=Module["_sqlite3_cancel_auto_extension"]=wasmExports["vd"];_sqlite3_reset_auto_extension=Module["_sqlite3_reset_auto_extension"]=wasmExports["wd"];_sqlite3_prepare=Module["_sqlite3_prepare"]=wasmExports["xd"];_sqlite3_prepare_v3=Module["_sqlite3_prepare_v3"]=wasmExports["yd"];_sqlite3_prepare16=Module["_sqlite3_prepare16"]=wasmExports["zd"];_sqlite3_prepare16_v2=Module["_sqlite3_prepare16_v2"]=wasmExports["Ad"];_sqlite3_prepare16_v3=Module["_sqlite3_prepare16_v3"]=wasmExports["Bd"];_sqlite3_get_table=Module["_sqlite3_get_table"]=wasmExports["Cd"];_sqlite3_free_table=Module["_sqlite3_free_table"]=wasmExports["Dd"];_sqlite3_create_module=Module["_sqlite3_create_module"]=wasmExports["Ed"];_sqlite3_create_module_v2=Module["_sqlite3_create_module_v2"]=wasmExports["Fd"];_sqlite3_drop_modules=Module["_sqlite3_drop_modules"]=wasmExports["Gd"];_sqlite3_declare_vtab=Module["_sqlite3_declare_vtab"]=wasmExports["Hd"];_sqlite3_vtab_on_conflict=Module["_sqlite3_vtab_on_conflict"]=wasmExports["Id"];_sqlite3_vtab_config=Module["_sqlite3_vtab_config"]=wasmExports["Jd"];_sqlite3_vtab_collation=Module["_sqlite3_vtab_collation"]=wasmExports["Kd"];_sqlite3_vtab_in=Module["_sqlite3_vtab_in"]=wasmExports["Ld"];_sqlite3_vtab_rhs_value=Module["_sqlite3_vtab_rhs_value"]=wasmExports["Md"];_sqlite3_vtab_distinct=Module["_sqlite3_vtab_distinct"]=wasmExports["Nd"];_sqlite3_keyword_name=Module["_sqlite3_keyword_name"]=wasmExports["Od"];_sqlite3_keyword_count=Module["_sqlite3_keyword_count"]=wasmExports["Pd"];_sqlite3_keyword_check=Module["_sqlite3_keyword_check"]=wasmExports["Qd"];_sqlite3_complete=Module["_sqlite3_complete"]=wasmExports["Rd"];_sqlite3_complete16=Module["_sqlite3_complete16"]=wasmExports["Sd"];_sqlite3_libversion=Module["_sqlite3_libversion"]=wasmExports["Td"];_sqlite3_libversion_number=Module["_sqlite3_libversion_number"]=wasmExports["Ud"];_sqlite3_threadsafe=Module["_sqlite3_threadsafe"]=wasmExports["Vd"];_sqlite3_initialize=Module["_sqlite3_initialize"]=wasmExports["Wd"];_sqlite3_shutdown=Module["_sqlite3_shutdown"]=wasmExports["Xd"];_sqlite3_config=Module["_sqlite3_config"]=wasmExports["Yd"];_sqlite3_db_mutex=Module["_sqlite3_db_mutex"]=wasmExports["Zd"];_sqlite3_db_release_memory=Module["_sqlite3_db_release_memory"]=wasmExports["_d"];_sqlite3_db_cacheflush=Module["_sqlite3_db_cacheflush"]=wasmExports["$d"];_sqlite3_db_config=Module["_sqlite3_db_config"]=wasmExports["ae"];_sqlite3_last_insert_rowid=Module["_sqlite3_last_insert_rowid"]=wasmExports["be"];_sqlite3_set_last_insert_rowid=Module["_sqlite3_set_last_insert_rowid"]=wasmExports["ce"];_sqlite3_changes64=Module["_sqlite3_changes64"]=wasmExports["de"];_sqlite3_changes=Module["_sqlite3_changes"]=wasmExports["ee"];_sqlite3_total_changes64=Module["_sqlite3_total_changes64"]=wasmExports["fe"];_sqlite3_total_changes=Module["_sqlite3_total_changes"]=wasmExports["ge"];_sqlite3_txn_state=Module["_sqlite3_txn_state"]=wasmExports["he"];_sqlite3_close=Module["_sqlite3_close"]=wasmExports["ie"];_sqlite3_close_v2=Module["_sqlite3_close_v2"]=wasmExports["je"];_sqlite3_busy_handler=Module["_sqlite3_busy_handler"]=wasmExports["ke"];_sqlite3_progress_handler=Module["_sqlite3_progress_handler"]=wasmExports["le"];_sqlite3_busy_timeout=Module["_sqlite3_busy_timeout"]=wasmExports["me"];_sqlite3_interrupt=Module["_sqlite3_interrupt"]=wasmExports["ne"];_sqlite3_is_interrupted=Module["_sqlite3_is_interrupted"]=wasmExports["oe"];_sqlite3_create_function=Module["_sqlite3_create_function"]=wasmExports["pe"];_sqlite3_create_function_v2=Module["_sqlite3_create_function_v2"]=wasmExports["qe"];_sqlite3_create_window_function=Module["_sqlite3_create_window_function"]=wasmExports["re"];_sqlite3_create_function16=Module["_sqlite3_create_function16"]=wasmExports["se"];_sqlite3_overload_function=Module["_sqlite3_overload_function"]=wasmExports["te"];_sqlite3_trace_v2=Module["_sqlite3_trace_v2"]=wasmExports["ue"];_sqlite3_commit_hook=Module["_sqlite3_commit_hook"]=wasmExports["ve"];_sqlite3_update_hook=Module["_sqlite3_update_hook"]=wasmExports["we"];_sqlite3_rollback_hook=Module["_sqlite3_rollback_hook"]=wasmExports["xe"];_sqlite3_autovacuum_pages=Module["_sqlite3_autovacuum_pages"]=wasmExports["ye"];_sqlite3_wal_autocheckpoint=Module["_sqlite3_wal_autocheckpoint"]=wasmExports["ze"];_sqlite3_wal_hook=Module["_sqlite3_wal_hook"]=wasmExports["Ae"];_sqlite3_wal_checkpoint_v2=Module["_sqlite3_wal_checkpoint_v2"]=wasmExports["Be"];_sqlite3_wal_checkpoint=Module["_sqlite3_wal_checkpoint"]=wasmExports["Ce"];_sqlite3_error_offset=Module["_sqlite3_error_offset"]=wasmExports["De"];_sqlite3_errmsg16=Module["_sqlite3_errmsg16"]=wasmExports["Ee"];_sqlite3_errcode=Module["_sqlite3_errcode"]=wasmExports["Fe"];_sqlite3_extended_errcode=Module["_sqlite3_extended_errcode"]=wasmExports["Ge"];_sqlite3_system_errno=Module["_sqlite3_system_errno"]=wasmExports["He"];_sqlite3_errstr=Module["_sqlite3_errstr"]=wasmExports["Ie"];_sqlite3_limit=Module["_sqlite3_limit"]=wasmExports["Je"];_sqlite3_open=Module["_sqlite3_open"]=wasmExports["Ke"];_sqlite3_open_v2=Module["_sqlite3_open_v2"]=wasmExports["Le"];_sqlite3_open16=Module["_sqlite3_open16"]=wasmExports["Me"];_sqlite3_create_collation=Module["_sqlite3_create_collation"]=wasmExports["Ne"];_sqlite3_create_collation_v2=Module["_sqlite3_create_collation_v2"]=wasmExports["Oe"];_sqlite3_create_collation16=Module["_sqlite3_create_collation16"]=wasmExports["Pe"];_sqlite3_collation_needed=Module["_sqlite3_collation_needed"]=wasmExports["Qe"];_sqlite3_collation_needed16=Module["_sqlite3_collation_needed16"]=wasmExports["Re"];_sqlite3_get_clientdata=Module["_sqlite3_get_clientdata"]=wasmExports["Se"];_sqlite3_set_clientdata=Module["_sqlite3_set_clientdata"]=wasmExports["Te"];_sqlite3_get_autocommit=Module["_sqlite3_get_autocommit"]=wasmExports["Ue"];_sqlite3_table_column_metadata=Module["_sqlite3_table_column_metadata"]=wasmExports["Ve"];_sqlite3_sleep=Module["_sqlite3_sleep"]=wasmExports["We"];_sqlite3_extended_result_codes=Module["_sqlite3_extended_result_codes"]=wasmExports["Xe"];_sqlite3_file_control=Module["_sqlite3_file_control"]=wasmExports["Ye"];_sqlite3_test_control=Module["_sqlite3_test_control"]=wasmExports["Ze"];_sqlite3_create_filename=Module["_sqlite3_create_filename"]=wasmExports["_e"];_sqlite3_free_filename=Module["_sqlite3_free_filename"]=wasmExports["$e"];_sqlite3_uri_parameter=Module["_sqlite3_uri_parameter"]=wasmExports["af"];_sqlite3_uri_key=Module["_sqlite3_uri_key"]=wasmExports["bf"];_sqlite3_uri_boolean=Module["_sqlite3_uri_boolean"]=wasmExports["cf"];_sqlite3_uri_int64=Module["_sqlite3_uri_int64"]=wasmExports["df"];_sqlite3_filename_database=Module["_sqlite3_filename_database"]=wasmExports["ef"];_sqlite3_filename_journal=Module["_sqlite3_filename_journal"]=wasmExports["ff"];_sqlite3_filename_wal=Module["_sqlite3_filename_wal"]=wasmExports["gf"];_sqlite3_db_name=Module["_sqlite3_db_name"]=wasmExports["hf"];_sqlite3_db_filename=Module["_sqlite3_db_filename"]=wasmExports["jf"];_sqlite3_db_readonly=Module["_sqlite3_db_readonly"]=wasmExports["kf"];_sqlite3_compileoption_used=Module["_sqlite3_compileoption_used"]=wasmExports["lf"];_sqlite3_compileoption_get=Module["_sqlite3_compileoption_get"]=wasmExports["mf"];_sqlite3_sourceid=Module["_sqlite3_sourceid"]=wasmExports["nf"];_malloc=Module["_malloc"]=wasmExports["of"];_free=Module["_free"]=wasmExports["pf"];_RegisterExtensionFunctions=Module["_RegisterExtensionFunctions"]=wasmExports["qf"];_getSqliteFree=Module["_getSqliteFree"]=wasmExports["rf"];_main=Module["_main"]=wasmExports["sf"];_libauthorizer_set_authorizer=Module["_libauthorizer_set_authorizer"]=wasmExports["tf"];_libfunction_create_function=Module["_libfunction_create_function"]=wasmExports["uf"];_libhook_commit_hook=Module["_libhook_commit_hook"]=wasmExports["vf"];_libhook_update_hook=Module["_libhook_update_hook"]=wasmExports["wf"];_libprogress_progress_handler=Module["_libprogress_progress_handler"]=wasmExports["xf"];_libvfs_vfs_register=Module["_libvfs_vfs_register"]=wasmExports["yf"];_emscripten_builtin_memalign=wasmExports["Af"];__emscripten_timeout=wasmExports["Bf"];_setThrew=wasmExports["Cf"];__emscripten_tempret_set=wasmExports["Df"];__emscripten_tempret_get=wasmExports["Ef"];__emscripten_stack_restore=wasmExports["Ff"];__emscripten_stack_alloc=wasmExports["Gf"];_emscripten_stack_get_current=wasmExports["Hf"];___cxa_can_catch=wasmExports["If"];dynCall_viiiiij=wasmExports["Jf"];dynCall_viji=wasmExports["dynCall_viji"];dynCall_viiiij=wasmExports["dynCall_viiiij"];dynCall_iij=wasmExports["dynCall_iij"];dynCall_iiiij=wasmExports["dynCall_iiiij"];dynCall_iijii=wasmExports["dynCall_iijii"];dynCall_iiji=wasmExports["dynCall_iiji"];dynCall_iiiiiij=wasmExports["dynCall_iiiiiij"];wasmMemory=wasmExports["Fa"];wasmTable=wasmExports["zf"]}var _sqlite3_version=Module["_sqlite3_version"]=60496;var __ZN19treecrdt_sqlite_ext9extension18_TREECRDT_INIT_REF17hab8690d9f9641fe9E=Module["__ZN19treecrdt_sqlite_ext9extension18_TREECRDT_INIT_REF17hab8690d9f9641fe9E"]=89056;var wasmImports={g:___assert_fail,a:___cxa_find_matching_catch_2,qa:___cxa_throw,c:___resumeException,ja:___syscall_chmod,ka:___syscall_faccessat,ia:___syscall_fchmod,ha:___syscall_fchown32,l:___syscall_fcntl64,ga:___syscall_fstat64,H:___syscall_ftruncate64,ba:___syscall_getcwd,ea:___syscall_lstat64,$:___syscall_mkdirat,da:___syscall_newfstatat,Z:___syscall_openat,W:___syscall_readlinkat,V:___syscall_rmdir,fa:___syscall_stat64,S:___syscall_unlinkat,R:___syscall_utimensat,la:__abort_js,Y:__emscripten_runtime_keepalive_clear,F:__localtime_js,D:__mmap_js,E:__munmap_js,O:__setitimer_js,_:__tzset_js,y:_emscripten_date_now,U:_emscripten_get_heap_max,q:_emscripten_get_now,P:_emscripten_resize_heap,na:_environ_get,oa:_environ_sizes_get,z:_fd_close,Q:_fd_fdstat_get,X:_fd_read,G:_fd_seek,ca:_fd_sync,v:_fd_write,k:invoke_ii,f:invoke_iii,j:invoke_iiii,pa:invoke_iiiiii,d:invoke_vi,b:invoke_vii,e:invoke_viii,i:invoke_viiii,h:invoke_viiiii,sa:invoke_viiiiii,J:invoke_viiiiij,I:_ipp,T:_ipp_async,Aa:_ippipppp,Ea:_ippipppp_async,t:_ippp,u:_ippp_async,m:_ipppi,n:_ipppi_async,wa:_ipppiii,xa:_ipppiii_async,ya:_ipppiiip,za:_ipppiiip_async,r:_ipppip,s:_ipppip_async,K:_ipppj,L:_ipppj_async,o:_ipppp,p:_ipppp_async,ua:_ippppi,va:_ippppi_async,M:_ippppij,N:_ippppij_async,A:_ippppip,B:_ippppip_async,Ba:_ipppppip,Ca:_ipppppip_async,ma:_proc_exit,aa:_random_get,Da:_vppippii,C:_vppippii_async,w:_vppp,x:_vppp_async,ra:_vpppip,ta:_vpppip_async};function invoke_iii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiij(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{dynCall_viiiiij(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function callMain(){var entryFunction=_main;var argc=0;var argv=0;try{var ret=entryFunction(argc,argv);exitJS(ret,true);return ret}catch(e){return handleException(e)}}function run(){if(runDependencies>0){dependenciesFulfilled=run;return}preRun();if(runDependencies>0){dependenciesFulfilled=run;return}function doRun(){Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();readyPromiseResolve?.(Module);Module["onRuntimeInitialized"]?.();var noInitialRun=Module["noInitialRun"]||false;if(!noInitialRun)callMain();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(()=>{setTimeout(()=>Module["setStatus"](""),1);doRun()},1)}else{doRun()}}var wasmExports;wasmExports=await (createWasm());run();(function(){const AsyncFunction=Object.getPrototypeOf(async function(){}).constructor;let pAsyncFlags=0;Module["set_authorizer"]=function(db,xAuthorizer,pApp){if(pAsyncFlags){Module["deleteCallback"](pAsyncFlags);Module["_sqlite3_free"](pAsyncFlags);pAsyncFlags=0}pAsyncFlags=Module["_sqlite3_malloc"](4);setValue(pAsyncFlags,xAuthorizer instanceof AsyncFunction?1:0,"i32");const result=ccall("libauthorizer_set_authorizer","number",["number","number","number"],[db,xAuthorizer?1:0,pAsyncFlags]);if(!result&&xAuthorizer){Module["setCallback"](pAsyncFlags,(_,iAction,p3,p4,p5,p6)=>xAuthorizer(pApp,iAction,p3,p4,p5,p6))}return result}})();(function(){const AsyncFunction=Object.getPrototypeOf(async function(){}).constructor;const FUNC_METHODS=["xFunc","xStep","xFinal"];const mapFunctionNameToKey=new Map;Module["create_function"]=function(db,zFunctionName,nArg,eTextRep,pApp,xFunc,xStep,xFinal){const pAsyncFlags=Module["_sqlite3_malloc"](4);const target={xFunc,xStep,xFinal};setValue(pAsyncFlags,FUNC_METHODS.reduce((mask,method,i)=>{if(target[method]instanceof AsyncFunction){return mask|1<xUpdateHook(iUpdateType,dbName,tblName,lo32,hi32))}}})();(function(){const AsyncFunction=Object.getPrototypeOf(async function(){}).constructor;let pAsyncFlags=0;Module["commit_hook"]=function(db,xCommitHook){if(pAsyncFlags){Module["deleteCallback"](pAsyncFlags);Module["_sqlite3_free"](pAsyncFlags);pAsyncFlags=0}pAsyncFlags=Module["_sqlite3_malloc"](4);setValue(pAsyncFlags,xCommitHook instanceof AsyncFunction?1:0,"i32");ccall("libhook_commit_hook","void",["number","number","number"],[db,xCommitHook?1:0,pAsyncFlags]);if(xCommitHook){Module["setCallback"](pAsyncFlags,_=>xCommitHook())}}})();(function(){const AsyncFunction=Object.getPrototypeOf(async function(){}).constructor;let pAsyncFlags=0;Module["progress_handler"]=function(db,nOps,xProgress,pApp){if(pAsyncFlags){Module["deleteCallback"](pAsyncFlags);Module["_sqlite3_free"](pAsyncFlags);pAsyncFlags=0}pAsyncFlags=Module["_sqlite3_malloc"](4);setValue(pAsyncFlags,xProgress instanceof AsyncFunction?1:0,"i32");ccall("libprogress_progress_handler","number",["number","number","number","number"],[db,nOps,xProgress?1:0,pAsyncFlags]);if(xProgress){Module["setCallback"](pAsyncFlags,_=>xProgress(pApp))}}})();(function(){const VFS_METHODS=["xOpen","xDelete","xAccess","xFullPathname","xRandomness","xSleep","xCurrentTime","xGetLastError","xCurrentTimeInt64","xClose","xRead","xWrite","xTruncate","xSync","xFileSize","xLock","xUnlock","xCheckReservedLock","xFileControl","xSectorSize","xDeviceCharacteristics","xShmMap","xShmLock","xShmBarrier","xShmUnmap"];const mapVFSNameToKey=new Map;Module["vfs_register"]=function(vfs,makeDefault){let methodMask=0;let asyncMask=0;VFS_METHODS.forEach((method,i)=>{if(vfs[method]){methodMask|=1<{readyPromiseResolve=resolve;readyPromiseReject=reject})} -;return moduleRtn}export default Module; + +var Module = (() => { + var _scriptName = import.meta.url; + + return ( +function(moduleArg = {}) { + var moduleRtn; + +var Module=moduleArg;var readyPromiseResolve,readyPromiseReject;var readyPromise=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary;if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptName){scriptDirectory=_scriptName}if(scriptDirectory.startsWith("blob:")){scriptDirectory=""}else{scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{fetch(url,{credentials:"same-origin"}).then(response=>{if(response.ok){return response.arrayBuffer()}return Promise.reject(new Error(response.status+" : "+response.url))}).then(onload,onerror)}}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var wasmMemory;var ABORT=false;var EXITSTATUS;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b)}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;Module["monitorRunDependencies"]?.(runDependencies)}function removeRunDependency(id){runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){Module["onAbort"]?.(what);what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix="data:application/octet-stream;base64,";var isDataURI=filename=>filename.startsWith(dataURIPrefix);function findWasmBinary(){if(Module["locateFile"]){var f="wa-sqlite.wasm";if(!isDataURI(f)){return locateFile(f)}return f}return new URL("wa-sqlite.wasm",import.meta.url).href}var wasmBinaryFile;function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}function getBinaryPromise(binaryFile){if(!wasmBinary){return new Promise((resolve,reject)=>{readAsync(binaryFile,response=>resolve(new Uint8Array(response)),error=>{try{resolve(getBinarySync(binaryFile))}catch(e){reject(e)}})})}return Promise.resolve().then(()=>getBinarySync(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>WebAssembly.instantiate(binary,imports)).then(receiver,reason=>{err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)})})}return instantiateArrayBuffer(binaryFile,imports,callback)}function getWasmImports(){return{a:wasmImports}}function createWasm(){var info=getWasmImports();function receiveInstance(instance,module){wasmExports=instance.exports;wasmMemory=wasmExports["la"];updateMemoryViews();wasmTable=wasmExports["ef"];addOnInit(wasmExports["ma"]);removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);readyPromiseReject(e)}}if(!wasmBinaryFile)wasmBinaryFile=findWasmBinary();instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult).catch(readyPromiseReject);return{}}var tempDouble;var tempI64;function ExitStatus(status){this.name="ExitStatus";this.message=`Program terminated with exit(${status})`;this.status=status}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};function getValue(ptr,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":return HEAP8[ptr];case"i8":return HEAP8[ptr];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":abort("to do getValue(i64) use WASM_BIGINT");case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];case"*":return HEAPU32[ptr>>2];default:abort(`invalid type for getValue: ${type}`)}}var noExitRuntime=Module["noExitRuntime"]||true;function setValue(ptr,value,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":HEAP8[ptr]=value;break;case"i8":HEAP8[ptr]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":abort("to do setValue(i64) use WASM_BIGINT");case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;case"*":HEAPU32[ptr>>2]=value;break;default:abort(`invalid type for setValue: ${type}`)}}var stackRestore=val=>__emscripten_stack_restore(val);var stackSave=()=>_emscripten_stack_get_current();var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;var UTF8ArrayToString=(heapOrArray,idx,maxBytesToRead)=>{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str};var UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):"";var ___assert_fail=(condition,filename,line,func)=>{abort(`Assertion failed: ${UTF8ToString(condition)}, at: `+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"])};var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:(...paths)=>PATH.normalize(paths.join("/")),join2:(l,r)=>PATH.normalize(l+"/"+r)};var initRandomFill=()=>{if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){return view=>crypto.getRandomValues(view)}else abort("initRandomDevice")};var randomFill=view=>(randomFill=initRandomFill())(view);var PATH_FS={resolve:(...args)=>{var resolvedPath="",resolvedAbsolute=false;for(var i=args.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?args[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx};function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(typeof window!="undefined"&&typeof window.prompt=="function"){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:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close(stream){stream.tty.ops.fsync(stream.tty)},fsync(stream){stream.tty.ops.fsync(stream.tty)},read(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}},ioctl_tcgets(tty){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(tty,optional_actions,data){return 0},ioctl_tiocgwinsz(tty){return[24,80]}},default_tty1_ops:{put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};var zeroMemory=(address,size)=>{HEAPU8.fill(0,address,address+size);return address};var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var mmapAlloc=size=>{size=alignMemory(size,65536);var ptr=_emscripten_builtin_memalign(65536,size);if(!ptr)return 0;return zeroMemory(ptr,size)};var MEMFS={ops_table:null,mount(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}MEMFS.ops_table||={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}};var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup(parent,name){throw FS.genericErrors[44]},mknod(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp},unlink(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir(node){var entries=[".",".."];for(var key of Object.keys(node.contents)){entries.push(key)}return entries},symlink(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{var dep=!noRunDep?getUniqueRunDependency(`al ${url}`):"";readAsync(url,arrayBuffer=>{onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},event=>{if(onerror){onerror()}else{throw`Loading data file "${url}" failed.`}});if(dep)addRunDependency(dep)};var FS_createDataFile=(parent,name,fileData,canRead,canWrite,canOwn)=>{FS.createDataFile(parent,name,fileData,canRead,canWrite,canOwn)};var preloadPlugins=Module["preloadPlugins"]||[];var FS_handledByPreloadPlugin=(byteArray,fullname,finish,onerror)=>{if(typeof Browser!="undefined")Browser.init();var handled=false;preloadPlugins.forEach(plugin=>{if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,onerror);handled=true}});return handled};var FS_createPreloadedFile=(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);function processData(byteArray){function finish(byteArray){preFinish?.();if(!dontCreateFile){FS_createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}onload?.();removeRunDependency(dep)}if(FS_handledByPreloadPlugin(byteArray,fullname,finish,()=>{onerror?.();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url,processData,onerror)}else{processData(url)}};var FS_modeStringToFlags=str=>{var flagModes={r:0,"r+":2,w:512|64|1,"w+":512|64|2,a:1024|64|1,"a+":1024|64|2};var flags=flagModes[str];if(typeof flags=="undefined"){throw new Error(`Unknown file open mode: ${str}`)}return flags};var FS_getMode=(canRead,canWrite)=>{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:class{constructor(errno){this.name="ErrnoError";this.errno=errno}},genericErrors:{},filesystems:null,syncFSRequests:0,FSStream:class{constructor(){this.shared={}}get object(){return this.node}set object(val){this.node=val}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(val){this.shared.flags=val}get position(){return this.shared.position}set position(val){this.shared.position=val}},FSNode:class{constructor(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev;this.readMode=292|73;this.writeMode=146}get read(){return(this.mode&this.readMode)===this.readMode}set read(val){val?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(val){val?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return FS.isDir(this.mode)}get isDevice(){return FS.isChrdev(this.mode)}},lookupPath(path,opts={}){path=PATH_FS.resolve(path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?`${mount}/${path}`:mount+path}path=path?`${node.name}/${path}`:node.name;node=node.parent}},hashName(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode(node){FS.hashRemoveNode(node)},isRoot(node){return node===node.parent},isMountpoint(node){return!!node.mounted},isFile(mode){return(mode&61440)===32768},isDir(mode){return(mode&61440)===16384},isLink(mode){return(mode&61440)===40960},isChrdev(mode){return(mode&61440)===8192},isBlkdev(mode){return(mode&61440)===24576},isFIFO(mode){return(mode&61440)===4096},isSocket(mode){return(mode&49152)===49152},flagsToPermissionString(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions(node,perms){if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup(dir){if(!FS.isDir(dir.mode))return 54;var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd(){for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStreamChecked(fd){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}return stream},getStream:fd=>FS.streams[fd],createStream(stream,fd=-1){stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream(fd){FS.streams[fd]=null},dupStream(origStream,fd=-1){var stream=FS.createStream(origStream,fd);stream.stream_ops?.dup?.(stream);return stream},chrdev_stream_ops:{open(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;stream.stream_ops.open?.(stream)},llseek(){throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push(...m.mounts)}return mounts},syncfs(populate,callback){if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup(parent,name){return parent.node_ops.lookup(parent,name)},mknod(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree(path,mode){var dirs=path.split("/");var d="";for(var i=0;iFS.currentPath,chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(randomLeft===0){randomLeft=randomFill(randomBuffer).byteLength}return randomBuffer[--randomLeft]};FS.createDevice("/dev","random",randomByte);FS.createDevice("/dev","urandom",randomByte);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount(){var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup(parent,name){var fd=+name;var stream=FS.getStreamChecked(fd);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams(){if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},staticInit(){[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""});FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={MEMFS:MEMFS}},init(input,output,error){FS.init.initialized=true;Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit(){FS.init.initialized=false;for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]}setDataGetter(getter){this.getter=getter}cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true}get length(){if(!this.lengthKnown){this.cacheLength()}return this._length}get chunkSize(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}if(typeof XMLHttpRequest!="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=(...args)=>{FS.forceLoadFile(node);return fn(...args)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr:ptr,allocated:true}};node.stream_ops=stream_ops;return node}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat(func,path,buf){var stat=func(path);HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=stat.mode;HEAPU32[buf+8>>2]=stat.nlink;HEAP32[buf+12>>2]=stat.uid;HEAP32[buf+16>>2]=stat.gid;HEAP32[buf+20>>2]=stat.rdev;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+24>>2]=tempI64[0],HEAP32[buf+28>>2]=tempI64[1];HEAP32[buf+32>>2]=4096;HEAP32[buf+36>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();tempI64=[Math.floor(atime/1e3)>>>0,(tempDouble=Math.floor(atime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAPU32[buf+48>>2]=atime%1e3*1e3;tempI64=[Math.floor(mtime/1e3)>>>0,(tempDouble=Math.floor(mtime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+56>>2]=tempI64[0],HEAP32[buf+60>>2]=tempI64[1];HEAPU32[buf+64>>2]=mtime%1e3*1e3;tempI64=[Math.floor(ctime/1e3)>>>0,(tempDouble=Math.floor(ctime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+72>>2]=tempI64[0],HEAP32[buf+76>>2]=tempI64[1];HEAPU32[buf+80>>2]=ctime%1e3*1e3;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+88>>2]=tempI64[0],HEAP32[buf+92>>2]=tempI64[1];return 0},doMsync(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},getStreamFromFD(fd){var stream=FS.getStreamChecked(fd);return stream},varargs:undefined,getStr(ptr){var ret=UTF8ToString(ptr);return ret}};function ___syscall_chmod(path,mode){try{path=SYSCALLS.getStr(path);FS.chmod(path,mode);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_faccessat(dirfd,path,amode,flags){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_fchmod(fd,mode){try{FS.fchmod(fd,mode);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_fchown32(fd,owner,group){try{FS.fchown(fd,owner,group);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function 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();stream.flags|=arg;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{var stream=SYSCALLS.getStreamFromFD(fd);return SYSCALLS.doStat(FS.stat,stream.path,buf)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var convertI32PairToI53Checked=(lo,hi)=>hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN;function ___syscall_ftruncate64(fd,length_low,length_high){var length=convertI32PairToI53Checked(length_low,length_high);try{if(isNaN(length))return 61;FS.ftruncate(fd,length);return 0}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(sizeHEAPU32[ptr>>2]+HEAP32[ptr+4>>2]*4294967296;function ___syscall_utimensat(dirfd,path,times,flags){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path,true);if(!times){var atime=Date.now();var mtime=atime}else{var seconds=readI53FromI64(times);var nanoseconds=HEAP32[times+8>>2];atime=seconds*1e3+nanoseconds/(1e3*1e3);times+=16;seconds=readI53FromI64(times);nanoseconds=HEAP32[times+8>>2];mtime=seconds*1e3+nanoseconds/(1e3*1e3)}FS.utime(path,atime,mtime);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var isLeapYear=year=>year%4===0&&(year%100!==0||year%400===0);var MONTH_DAYS_LEAP_CUMULATIVE=[0,31,60,91,121,152,182,213,244,274,305,335];var MONTH_DAYS_REGULAR_CUMULATIVE=[0,31,59,90,120,151,181,212,243,273,304,334];var ydayFromDate=date=>{var leap=isLeapYear(date.getFullYear());var monthDaysCumulative=leap?MONTH_DAYS_LEAP_CUMULATIVE:MONTH_DAYS_REGULAR_CUMULATIVE;var yday=monthDaysCumulative[date.getMonth()]+date.getDate()-1;return yday};function __localtime_js(time_low,time_high,tmPtr){var time=convertI32PairToI53Checked(time_low,time_high);var date=new Date(time*1e3);HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getDay();var yday=ydayFromDate(date)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr+36>>2]=-(date.getTimezoneOffset()*60);var start=new Date(date.getFullYear(),0,1);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dst=(summerOffset!=winterOffset&&date.getTimezoneOffset()==Math.min(winterOffset,summerOffset))|0;HEAP32[tmPtr+32>>2]=dst}function __mmap_js(len,prot,flags,fd,offset_low,offset_high,allocated,addr){var offset=convertI32PairToI53Checked(offset_low,offset_high);try{if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);var res=FS.mmap(stream,len,offset,prot,flags);var ptr=res.ptr;HEAP32[allocated>>2]=res.allocated;HEAPU32[addr>>2]=ptr;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function __munmap_js(addr,len,prot,flags,fd,offset_low,offset_high){var offset=convertI32PairToI53Checked(offset_low,offset_high);try{var stream=SYSCALLS.getStreamFromFD(fd);if(prot&2){SYSCALLS.doMsync(addr,stream,len,flags,offset)}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var __tzset_js=(timezone,daylight,std_name,dst_name)=>{var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);var winterOffset=winter.getTimezoneOffset();var summerOffset=summer.getTimezoneOffset();var stdTimezoneOffset=Math.max(winterOffset,summerOffset);HEAPU32[timezone>>2]=stdTimezoneOffset*60;HEAP32[daylight>>2]=Number(winterOffset!=summerOffset);var extractZone=date=>date.toLocaleTimeString(undefined,{hour12:false,timeZoneName:"short"}).split(" ")[1];var winterName=extractZone(winter);var summerName=extractZone(summer);if(summerOffsetDate.now();var _emscripten_get_now;_emscripten_get_now=()=>performance.now();var getHeapMax=()=>2147483648;var growMemory=size=>{var b=wasmMemory.buffer;var pages=(size-b.byteLength+65535)/65536;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}var alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var ENV={};var getExecutableName=()=>thisProgram||"./this.program";var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:lang,_:getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var stringToAscii=(str,buffer)=>{for(var i=0;i{var bufSize=0;getEnvStrings().forEach((string,i)=>{var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0};var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(string=>bufSize+=string.length+1);HEAPU32[penviron_buf_size>>2]=bufSize;return 0};function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}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;tempI64=[rightsBase>>>0,(tempDouble=rightsBase,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[pbuf+8>>2]=tempI64[0],HEAP32[pbuf+12>>2]=tempI64[1];tempI64=[rightsInheriting>>>0,(tempDouble=rightsInheriting,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[pbuf+16>>2]=tempI64[0],HEAP32[pbuf+20>>2]=tempI64[1];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_low,offset_high,whence,newOffset){var offset=convertI32PairToI53Checked(offset_low,offset_high);try{if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _fd_sync(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);if(stream.stream_ops?.fsync){return stream.stream_ops.fsync(stream)}return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doWritev=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(typeof offset!="undefined"){offset+=curr}}return ret};function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var adapters_support=function(){const handleAsync=typeof Asyncify==="object"?Asyncify.handleAsync.bind(Asyncify):null;Module["handleAsync"]=handleAsync;const targets=new Map;Module["setCallback"]=(key,target)=>targets.set(key,target);Module["getCallback"]=key=>targets.get(key);Module["deleteCallback"]=key=>targets.delete(key);adapters_support=function(isAsync,key,...args){const receiver=targets.get(key);let methodName=null;const f=typeof receiver==="function"?receiver:receiver[methodName=UTF8ToString(args.shift())];if(isAsync){if(handleAsync){return handleAsync(()=>f.apply(receiver,args))}throw new Error("Synchronous WebAssembly cannot call async function")}const result=f.apply(receiver,args);if(typeof result?.then=="function"){console.error("unexpected Promise",f);throw new Error(`${methodName} unexpectedly returned a Promise`)}return result}};function _ipp(...args){return adapters_support(false,...args)}function _ipp_async(...args){return adapters_support(true,...args)}function _ippipppp(...args){return adapters_support(false,...args)}function _ippipppp_async(...args){return adapters_support(true,...args)}function _ippp(...args){return adapters_support(false,...args)}function _ippp_async(...args){return adapters_support(true,...args)}function _ipppi(...args){return adapters_support(false,...args)}function _ipppi_async(...args){return adapters_support(true,...args)}function _ipppiii(...args){return adapters_support(false,...args)}function _ipppiii_async(...args){return adapters_support(true,...args)}function _ipppiiip(...args){return adapters_support(false,...args)}function _ipppiiip_async(...args){return adapters_support(true,...args)}function _ipppip(...args){return adapters_support(false,...args)}function _ipppip_async(...args){return adapters_support(true,...args)}function _ipppj(...args){return adapters_support(false,...args)}function _ipppj_async(...args){return adapters_support(true,...args)}function _ipppp(...args){return adapters_support(false,...args)}function _ipppp_async(...args){return adapters_support(true,...args)}function _ippppi(...args){return adapters_support(false,...args)}function _ippppi_async(...args){return adapters_support(true,...args)}function _ippppij(...args){return adapters_support(false,...args)}function _ippppij_async(...args){return adapters_support(true,...args)}function _ippppip(...args){return adapters_support(false,...args)}function _ippppip_async(...args){return adapters_support(true,...args)}function _ipppppip(...args){return adapters_support(false,...args)}function _ipppppip_async(...args){return adapters_support(true,...args)}function _vppippii(...args){return adapters_support(false,...args)}function _vppippii_async(...args){return adapters_support(true,...args)}function _vppp(...args){return adapters_support(false,...args)}function _vppp_async(...args){return adapters_support(true,...args)}function _vpppip(...args){return adapters_support(false,...args)}function _vpppip_async(...args){return adapters_support(true,...args)}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 handleException=e=>{if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)};var uleb128Encode=(n,target)=>{if(n<128){target.push(n)}else{target.push(n%128|128,n>>7)}};var sigToWasmTypes=sig=>{var typeNames={i:"i32",j:"i64",f:"f32",d:"f64",e:"externref",p:"i32"};var type={parameters:[],results:sig[0]=="v"?[]:[typeNames[sig[0]]]};for(var i=1;i{var sigRet=sig.slice(0,1);var sigParam=sig.slice(1);var typeCodes={i:127,p:127,j:126,f:125,d:124,e:111};target.push(96);uleb128Encode(sigParam.length,target);for(var i=0;i{if(typeof WebAssembly.Function=="function"){return new WebAssembly.Function(sigToWasmTypes(sig),func)}var typeSectionBody=[1];generateFuncType(sig,typeSectionBody);var bytes=[0,97,115,109,1,0,0,0,1];uleb128Encode(typeSectionBody.length,bytes);bytes.push(...typeSectionBody);bytes.push(2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0);var module=new WebAssembly.Module(new Uint8Array(bytes));var instance=new WebAssembly.Instance(module,{e:{f:func}});var wrappedFunc=instance.exports["f"];return wrappedFunc};var wasmTable;var getWasmTableEntry=funcPtr=>wasmTable.get(funcPtr);var updateTableMap=(offset,count)=>{if(functionsInTableMap){for(var i=offset;i{if(!functionsInTableMap){functionsInTableMap=new WeakMap;updateTableMap(0,wasmTable.length)}return functionsInTableMap.get(func)||0};var freeTableIndexes=[];var getEmptyTableSlot=()=>{if(freeTableIndexes.length){return freeTableIndexes.pop()}try{wasmTable.grow(1)}catch(err){if(!(err instanceof RangeError)){throw err}throw"Unable to grow wasm table. Set ALLOW_TABLE_GROWTH."}return wasmTable.length-1};var setWasmTableEntry=(idx,func)=>wasmTable.set(idx,func);var addFunction=(func,sig)=>{var rtn=getFunctionAddress(func);if(rtn){return rtn}var ret=getEmptyTableSlot();try{setWasmTableEntry(ret,func)}catch(err){if(!(err instanceof TypeError)){throw err}var wrapped=convertJsFunctionToWasm(func,sig);setWasmTableEntry(ret,wrapped)}functionsInTableMap.set(func,ret);return ret};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)};var getTempRet0=val=>__emscripten_tempret_get();var stringToUTF16=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr};var stringToUTF32=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr};var AsciiToString=ptr=>{var str="";while(1){var ch=HEAPU8[ptr++];if(!ch)return str;str+=String.fromCharCode(ch)}};var UTF16Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):undefined;var UTF16ToString=(ptr,maxBytesToRead)=>{var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder)return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr));var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str};var UTF32ToString=(ptr,maxBytesToRead)=>{var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str};function intArrayToString(array){var ret=[];for(var i=0;i255){chr&=255}ret.push(String.fromCharCode(chr))}return ret.join("")}FS.createPreloadedFile=FS_createPreloadedFile;FS.staticInit();adapters_support();var wasmImports={a:___assert_fail,Y:___syscall_chmod,$:___syscall_faccessat,Z:___syscall_fchmod,X:___syscall_fchown32,b:___syscall_fcntl64,W:___syscall_fstat64,y:___syscall_ftruncate64,Q:___syscall_getcwd,U:___syscall_lstat64,N:___syscall_mkdirat,S:___syscall_newfstatat,M:___syscall_openat,K:___syscall_readlinkat,J:___syscall_rmdir,V:___syscall_stat64,G:___syscall_unlinkat,F:___syscall_utimensat,w:__localtime_js,u:__mmap_js,v:__munmap_js,H:__tzset_js,n:_emscripten_date_now,m:_emscripten_get_now,D:_emscripten_resize_heap,O:_environ_get,P:_environ_sizes_get,o:_fd_close,E:_fd_fdstat_get,L:_fd_read,x:_fd_seek,R:_fd_sync,I:_fd_write,s:_ipp,t:_ipp_async,ga:_ippipppp,ka:_ippipppp_async,i:_ippp,j:_ippp_async,c:_ipppi,d:_ipppi_async,ca:_ipppiii,da:_ipppiii_async,ea:_ipppiiip,fa:_ipppiiip_async,g:_ipppip,h:_ipppip_async,z:_ipppj,A:_ipppj_async,e:_ipppp,f:_ipppp_async,aa:_ippppi,ba:_ippppi_async,B:_ippppij,C:_ippppij_async,p:_ippppip,q:_ippppip_async,ha:_ipppppip,ia:_ipppppip_async,ja:_vppippii,r:_vppippii_async,k:_vppp,l:_vppp_async,T:_vpppip,_:_vpppip_async};var wasmExports=createWasm();var ___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports["ma"])();var _sqlite3_status64=Module["_sqlite3_status64"]=(a0,a1,a2,a3)=>(_sqlite3_status64=Module["_sqlite3_status64"]=wasmExports["na"])(a0,a1,a2,a3);var _sqlite3_status=Module["_sqlite3_status"]=(a0,a1,a2,a3)=>(_sqlite3_status=Module["_sqlite3_status"]=wasmExports["oa"])(a0,a1,a2,a3);var _sqlite3_msize=Module["_sqlite3_msize"]=a0=>(_sqlite3_msize=Module["_sqlite3_msize"]=wasmExports["pa"])(a0);var _sqlite3_db_status=Module["_sqlite3_db_status"]=(a0,a1,a2,a3,a4)=>(_sqlite3_db_status=Module["_sqlite3_db_status"]=wasmExports["qa"])(a0,a1,a2,a3,a4);var _sqlite3_vfs_find=Module["_sqlite3_vfs_find"]=a0=>(_sqlite3_vfs_find=Module["_sqlite3_vfs_find"]=wasmExports["ra"])(a0);var _sqlite3_vfs_register=Module["_sqlite3_vfs_register"]=(a0,a1)=>(_sqlite3_vfs_register=Module["_sqlite3_vfs_register"]=wasmExports["sa"])(a0,a1);var _sqlite3_vfs_unregister=Module["_sqlite3_vfs_unregister"]=a0=>(_sqlite3_vfs_unregister=Module["_sqlite3_vfs_unregister"]=wasmExports["ta"])(a0);var _sqlite3_release_memory=Module["_sqlite3_release_memory"]=a0=>(_sqlite3_release_memory=Module["_sqlite3_release_memory"]=wasmExports["ua"])(a0);var _sqlite3_soft_heap_limit64=Module["_sqlite3_soft_heap_limit64"]=(a0,a1)=>(_sqlite3_soft_heap_limit64=Module["_sqlite3_soft_heap_limit64"]=wasmExports["va"])(a0,a1);var _sqlite3_memory_used=Module["_sqlite3_memory_used"]=()=>(_sqlite3_memory_used=Module["_sqlite3_memory_used"]=wasmExports["wa"])();var _sqlite3_hard_heap_limit64=Module["_sqlite3_hard_heap_limit64"]=(a0,a1)=>(_sqlite3_hard_heap_limit64=Module["_sqlite3_hard_heap_limit64"]=wasmExports["xa"])(a0,a1);var _sqlite3_memory_highwater=Module["_sqlite3_memory_highwater"]=a0=>(_sqlite3_memory_highwater=Module["_sqlite3_memory_highwater"]=wasmExports["ya"])(a0);var _sqlite3_malloc=Module["_sqlite3_malloc"]=a0=>(_sqlite3_malloc=Module["_sqlite3_malloc"]=wasmExports["za"])(a0);var _sqlite3_malloc64=Module["_sqlite3_malloc64"]=(a0,a1)=>(_sqlite3_malloc64=Module["_sqlite3_malloc64"]=wasmExports["Aa"])(a0,a1);var _sqlite3_free=Module["_sqlite3_free"]=a0=>(_sqlite3_free=Module["_sqlite3_free"]=wasmExports["Ba"])(a0);var _sqlite3_realloc=Module["_sqlite3_realloc"]=(a0,a1)=>(_sqlite3_realloc=Module["_sqlite3_realloc"]=wasmExports["Ca"])(a0,a1);var _sqlite3_realloc64=Module["_sqlite3_realloc64"]=(a0,a1,a2)=>(_sqlite3_realloc64=Module["_sqlite3_realloc64"]=wasmExports["Da"])(a0,a1,a2);var _sqlite3_str_vappendf=Module["_sqlite3_str_vappendf"]=(a0,a1,a2)=>(_sqlite3_str_vappendf=Module["_sqlite3_str_vappendf"]=wasmExports["Ea"])(a0,a1,a2);var _sqlite3_str_append=Module["_sqlite3_str_append"]=(a0,a1,a2)=>(_sqlite3_str_append=Module["_sqlite3_str_append"]=wasmExports["Fa"])(a0,a1,a2);var _sqlite3_str_appendchar=Module["_sqlite3_str_appendchar"]=(a0,a1,a2)=>(_sqlite3_str_appendchar=Module["_sqlite3_str_appendchar"]=wasmExports["Ga"])(a0,a1,a2);var _sqlite3_str_appendall=Module["_sqlite3_str_appendall"]=(a0,a1)=>(_sqlite3_str_appendall=Module["_sqlite3_str_appendall"]=wasmExports["Ha"])(a0,a1);var _sqlite3_str_appendf=Module["_sqlite3_str_appendf"]=(a0,a1,a2)=>(_sqlite3_str_appendf=Module["_sqlite3_str_appendf"]=wasmExports["Ia"])(a0,a1,a2);var _sqlite3_str_finish=Module["_sqlite3_str_finish"]=a0=>(_sqlite3_str_finish=Module["_sqlite3_str_finish"]=wasmExports["Ja"])(a0);var _sqlite3_str_errcode=Module["_sqlite3_str_errcode"]=a0=>(_sqlite3_str_errcode=Module["_sqlite3_str_errcode"]=wasmExports["Ka"])(a0);var _sqlite3_str_length=Module["_sqlite3_str_length"]=a0=>(_sqlite3_str_length=Module["_sqlite3_str_length"]=wasmExports["La"])(a0);var _sqlite3_str_value=Module["_sqlite3_str_value"]=a0=>(_sqlite3_str_value=Module["_sqlite3_str_value"]=wasmExports["Ma"])(a0);var _sqlite3_str_reset=Module["_sqlite3_str_reset"]=a0=>(_sqlite3_str_reset=Module["_sqlite3_str_reset"]=wasmExports["Na"])(a0);var _sqlite3_str_new=Module["_sqlite3_str_new"]=a0=>(_sqlite3_str_new=Module["_sqlite3_str_new"]=wasmExports["Oa"])(a0);var _sqlite3_vmprintf=Module["_sqlite3_vmprintf"]=(a0,a1)=>(_sqlite3_vmprintf=Module["_sqlite3_vmprintf"]=wasmExports["Pa"])(a0,a1);var _sqlite3_mprintf=Module["_sqlite3_mprintf"]=(a0,a1)=>(_sqlite3_mprintf=Module["_sqlite3_mprintf"]=wasmExports["Qa"])(a0,a1);var _sqlite3_vsnprintf=Module["_sqlite3_vsnprintf"]=(a0,a1,a2,a3)=>(_sqlite3_vsnprintf=Module["_sqlite3_vsnprintf"]=wasmExports["Ra"])(a0,a1,a2,a3);var _sqlite3_snprintf=Module["_sqlite3_snprintf"]=(a0,a1,a2,a3)=>(_sqlite3_snprintf=Module["_sqlite3_snprintf"]=wasmExports["Sa"])(a0,a1,a2,a3);var _sqlite3_log=Module["_sqlite3_log"]=(a0,a1,a2)=>(_sqlite3_log=Module["_sqlite3_log"]=wasmExports["Ta"])(a0,a1,a2);var _sqlite3_randomness=Module["_sqlite3_randomness"]=(a0,a1)=>(_sqlite3_randomness=Module["_sqlite3_randomness"]=wasmExports["Ua"])(a0,a1);var _sqlite3_stricmp=Module["_sqlite3_stricmp"]=(a0,a1)=>(_sqlite3_stricmp=Module["_sqlite3_stricmp"]=wasmExports["Va"])(a0,a1);var _sqlite3_strnicmp=Module["_sqlite3_strnicmp"]=(a0,a1,a2)=>(_sqlite3_strnicmp=Module["_sqlite3_strnicmp"]=wasmExports["Wa"])(a0,a1,a2);var _sqlite3_os_init=Module["_sqlite3_os_init"]=()=>(_sqlite3_os_init=Module["_sqlite3_os_init"]=wasmExports["Xa"])();var _sqlite3_os_end=Module["_sqlite3_os_end"]=()=>(_sqlite3_os_end=Module["_sqlite3_os_end"]=wasmExports["Ya"])();var _sqlite3_serialize=Module["_sqlite3_serialize"]=(a0,a1,a2,a3)=>(_sqlite3_serialize=Module["_sqlite3_serialize"]=wasmExports["Za"])(a0,a1,a2,a3);var _sqlite3_prepare_v2=Module["_sqlite3_prepare_v2"]=(a0,a1,a2,a3,a4)=>(_sqlite3_prepare_v2=Module["_sqlite3_prepare_v2"]=wasmExports["_a"])(a0,a1,a2,a3,a4);var _sqlite3_step=Module["_sqlite3_step"]=a0=>(_sqlite3_step=Module["_sqlite3_step"]=wasmExports["$a"])(a0);var _sqlite3_column_int64=Module["_sqlite3_column_int64"]=(a0,a1)=>(_sqlite3_column_int64=Module["_sqlite3_column_int64"]=wasmExports["ab"])(a0,a1);var _sqlite3_reset=Module["_sqlite3_reset"]=a0=>(_sqlite3_reset=Module["_sqlite3_reset"]=wasmExports["bb"])(a0);var _sqlite3_exec=Module["_sqlite3_exec"]=(a0,a1,a2,a3,a4)=>(_sqlite3_exec=Module["_sqlite3_exec"]=wasmExports["cb"])(a0,a1,a2,a3,a4);var _sqlite3_column_int=Module["_sqlite3_column_int"]=(a0,a1)=>(_sqlite3_column_int=Module["_sqlite3_column_int"]=wasmExports["db"])(a0,a1);var _sqlite3_finalize=Module["_sqlite3_finalize"]=a0=>(_sqlite3_finalize=Module["_sqlite3_finalize"]=wasmExports["eb"])(a0);var _sqlite3_deserialize=Module["_sqlite3_deserialize"]=(a0,a1,a2,a3,a4,a5,a6,a7)=>(_sqlite3_deserialize=Module["_sqlite3_deserialize"]=wasmExports["fb"])(a0,a1,a2,a3,a4,a5,a6,a7);var _sqlite3_database_file_object=Module["_sqlite3_database_file_object"]=a0=>(_sqlite3_database_file_object=Module["_sqlite3_database_file_object"]=wasmExports["gb"])(a0);var _sqlite3_backup_init=Module["_sqlite3_backup_init"]=(a0,a1,a2,a3)=>(_sqlite3_backup_init=Module["_sqlite3_backup_init"]=wasmExports["hb"])(a0,a1,a2,a3);var _sqlite3_backup_step=Module["_sqlite3_backup_step"]=(a0,a1)=>(_sqlite3_backup_step=Module["_sqlite3_backup_step"]=wasmExports["ib"])(a0,a1);var _sqlite3_backup_finish=Module["_sqlite3_backup_finish"]=a0=>(_sqlite3_backup_finish=Module["_sqlite3_backup_finish"]=wasmExports["jb"])(a0);var _sqlite3_backup_remaining=Module["_sqlite3_backup_remaining"]=a0=>(_sqlite3_backup_remaining=Module["_sqlite3_backup_remaining"]=wasmExports["kb"])(a0);var _sqlite3_backup_pagecount=Module["_sqlite3_backup_pagecount"]=a0=>(_sqlite3_backup_pagecount=Module["_sqlite3_backup_pagecount"]=wasmExports["lb"])(a0);var _sqlite3_clear_bindings=Module["_sqlite3_clear_bindings"]=a0=>(_sqlite3_clear_bindings=Module["_sqlite3_clear_bindings"]=wasmExports["mb"])(a0);var _sqlite3_value_blob=Module["_sqlite3_value_blob"]=a0=>(_sqlite3_value_blob=Module["_sqlite3_value_blob"]=wasmExports["nb"])(a0);var _sqlite3_value_text=Module["_sqlite3_value_text"]=a0=>(_sqlite3_value_text=Module["_sqlite3_value_text"]=wasmExports["ob"])(a0);var _sqlite3_value_bytes=Module["_sqlite3_value_bytes"]=a0=>(_sqlite3_value_bytes=Module["_sqlite3_value_bytes"]=wasmExports["pb"])(a0);var _sqlite3_value_bytes16=Module["_sqlite3_value_bytes16"]=a0=>(_sqlite3_value_bytes16=Module["_sqlite3_value_bytes16"]=wasmExports["qb"])(a0);var _sqlite3_value_double=Module["_sqlite3_value_double"]=a0=>(_sqlite3_value_double=Module["_sqlite3_value_double"]=wasmExports["rb"])(a0);var _sqlite3_value_int=Module["_sqlite3_value_int"]=a0=>(_sqlite3_value_int=Module["_sqlite3_value_int"]=wasmExports["sb"])(a0);var _sqlite3_value_int64=Module["_sqlite3_value_int64"]=a0=>(_sqlite3_value_int64=Module["_sqlite3_value_int64"]=wasmExports["tb"])(a0);var _sqlite3_value_subtype=Module["_sqlite3_value_subtype"]=a0=>(_sqlite3_value_subtype=Module["_sqlite3_value_subtype"]=wasmExports["ub"])(a0);var _sqlite3_value_pointer=Module["_sqlite3_value_pointer"]=(a0,a1)=>(_sqlite3_value_pointer=Module["_sqlite3_value_pointer"]=wasmExports["vb"])(a0,a1);var _sqlite3_value_text16=Module["_sqlite3_value_text16"]=a0=>(_sqlite3_value_text16=Module["_sqlite3_value_text16"]=wasmExports["wb"])(a0);var _sqlite3_value_text16be=Module["_sqlite3_value_text16be"]=a0=>(_sqlite3_value_text16be=Module["_sqlite3_value_text16be"]=wasmExports["xb"])(a0);var _sqlite3_value_text16le=Module["_sqlite3_value_text16le"]=a0=>(_sqlite3_value_text16le=Module["_sqlite3_value_text16le"]=wasmExports["yb"])(a0);var _sqlite3_value_type=Module["_sqlite3_value_type"]=a0=>(_sqlite3_value_type=Module["_sqlite3_value_type"]=wasmExports["zb"])(a0);var _sqlite3_value_encoding=Module["_sqlite3_value_encoding"]=a0=>(_sqlite3_value_encoding=Module["_sqlite3_value_encoding"]=wasmExports["Ab"])(a0);var _sqlite3_value_nochange=Module["_sqlite3_value_nochange"]=a0=>(_sqlite3_value_nochange=Module["_sqlite3_value_nochange"]=wasmExports["Bb"])(a0);var _sqlite3_value_frombind=Module["_sqlite3_value_frombind"]=a0=>(_sqlite3_value_frombind=Module["_sqlite3_value_frombind"]=wasmExports["Cb"])(a0);var _sqlite3_value_dup=Module["_sqlite3_value_dup"]=a0=>(_sqlite3_value_dup=Module["_sqlite3_value_dup"]=wasmExports["Db"])(a0);var _sqlite3_value_free=Module["_sqlite3_value_free"]=a0=>(_sqlite3_value_free=Module["_sqlite3_value_free"]=wasmExports["Eb"])(a0);var _sqlite3_result_blob=Module["_sqlite3_result_blob"]=(a0,a1,a2,a3)=>(_sqlite3_result_blob=Module["_sqlite3_result_blob"]=wasmExports["Fb"])(a0,a1,a2,a3);var _sqlite3_result_blob64=Module["_sqlite3_result_blob64"]=(a0,a1,a2,a3,a4)=>(_sqlite3_result_blob64=Module["_sqlite3_result_blob64"]=wasmExports["Gb"])(a0,a1,a2,a3,a4);var _sqlite3_result_double=Module["_sqlite3_result_double"]=(a0,a1)=>(_sqlite3_result_double=Module["_sqlite3_result_double"]=wasmExports["Hb"])(a0,a1);var _sqlite3_result_error=Module["_sqlite3_result_error"]=(a0,a1,a2)=>(_sqlite3_result_error=Module["_sqlite3_result_error"]=wasmExports["Ib"])(a0,a1,a2);var _sqlite3_result_error16=Module["_sqlite3_result_error16"]=(a0,a1,a2)=>(_sqlite3_result_error16=Module["_sqlite3_result_error16"]=wasmExports["Jb"])(a0,a1,a2);var _sqlite3_result_int=Module["_sqlite3_result_int"]=(a0,a1)=>(_sqlite3_result_int=Module["_sqlite3_result_int"]=wasmExports["Kb"])(a0,a1);var _sqlite3_result_int64=Module["_sqlite3_result_int64"]=(a0,a1,a2)=>(_sqlite3_result_int64=Module["_sqlite3_result_int64"]=wasmExports["Lb"])(a0,a1,a2);var _sqlite3_result_null=Module["_sqlite3_result_null"]=a0=>(_sqlite3_result_null=Module["_sqlite3_result_null"]=wasmExports["Mb"])(a0);var _sqlite3_result_pointer=Module["_sqlite3_result_pointer"]=(a0,a1,a2,a3)=>(_sqlite3_result_pointer=Module["_sqlite3_result_pointer"]=wasmExports["Nb"])(a0,a1,a2,a3);var _sqlite3_result_subtype=Module["_sqlite3_result_subtype"]=(a0,a1)=>(_sqlite3_result_subtype=Module["_sqlite3_result_subtype"]=wasmExports["Ob"])(a0,a1);var _sqlite3_result_text=Module["_sqlite3_result_text"]=(a0,a1,a2,a3)=>(_sqlite3_result_text=Module["_sqlite3_result_text"]=wasmExports["Pb"])(a0,a1,a2,a3);var _sqlite3_result_text64=Module["_sqlite3_result_text64"]=(a0,a1,a2,a3,a4,a5)=>(_sqlite3_result_text64=Module["_sqlite3_result_text64"]=wasmExports["Qb"])(a0,a1,a2,a3,a4,a5);var _sqlite3_result_text16=Module["_sqlite3_result_text16"]=(a0,a1,a2,a3)=>(_sqlite3_result_text16=Module["_sqlite3_result_text16"]=wasmExports["Rb"])(a0,a1,a2,a3);var _sqlite3_result_text16be=Module["_sqlite3_result_text16be"]=(a0,a1,a2,a3)=>(_sqlite3_result_text16be=Module["_sqlite3_result_text16be"]=wasmExports["Sb"])(a0,a1,a2,a3);var _sqlite3_result_text16le=Module["_sqlite3_result_text16le"]=(a0,a1,a2,a3)=>(_sqlite3_result_text16le=Module["_sqlite3_result_text16le"]=wasmExports["Tb"])(a0,a1,a2,a3);var _sqlite3_result_value=Module["_sqlite3_result_value"]=(a0,a1)=>(_sqlite3_result_value=Module["_sqlite3_result_value"]=wasmExports["Ub"])(a0,a1);var _sqlite3_result_error_toobig=Module["_sqlite3_result_error_toobig"]=a0=>(_sqlite3_result_error_toobig=Module["_sqlite3_result_error_toobig"]=wasmExports["Vb"])(a0);var _sqlite3_result_zeroblob=Module["_sqlite3_result_zeroblob"]=(a0,a1)=>(_sqlite3_result_zeroblob=Module["_sqlite3_result_zeroblob"]=wasmExports["Wb"])(a0,a1);var _sqlite3_result_zeroblob64=Module["_sqlite3_result_zeroblob64"]=(a0,a1,a2)=>(_sqlite3_result_zeroblob64=Module["_sqlite3_result_zeroblob64"]=wasmExports["Xb"])(a0,a1,a2);var _sqlite3_result_error_code=Module["_sqlite3_result_error_code"]=(a0,a1)=>(_sqlite3_result_error_code=Module["_sqlite3_result_error_code"]=wasmExports["Yb"])(a0,a1);var _sqlite3_result_error_nomem=Module["_sqlite3_result_error_nomem"]=a0=>(_sqlite3_result_error_nomem=Module["_sqlite3_result_error_nomem"]=wasmExports["Zb"])(a0);var _sqlite3_user_data=Module["_sqlite3_user_data"]=a0=>(_sqlite3_user_data=Module["_sqlite3_user_data"]=wasmExports["_b"])(a0);var _sqlite3_context_db_handle=Module["_sqlite3_context_db_handle"]=a0=>(_sqlite3_context_db_handle=Module["_sqlite3_context_db_handle"]=wasmExports["$b"])(a0);var _sqlite3_vtab_nochange=Module["_sqlite3_vtab_nochange"]=a0=>(_sqlite3_vtab_nochange=Module["_sqlite3_vtab_nochange"]=wasmExports["ac"])(a0);var _sqlite3_vtab_in_first=Module["_sqlite3_vtab_in_first"]=(a0,a1)=>(_sqlite3_vtab_in_first=Module["_sqlite3_vtab_in_first"]=wasmExports["bc"])(a0,a1);var _sqlite3_vtab_in_next=Module["_sqlite3_vtab_in_next"]=(a0,a1)=>(_sqlite3_vtab_in_next=Module["_sqlite3_vtab_in_next"]=wasmExports["cc"])(a0,a1);var _sqlite3_aggregate_context=Module["_sqlite3_aggregate_context"]=(a0,a1)=>(_sqlite3_aggregate_context=Module["_sqlite3_aggregate_context"]=wasmExports["dc"])(a0,a1);var _sqlite3_get_auxdata=Module["_sqlite3_get_auxdata"]=(a0,a1)=>(_sqlite3_get_auxdata=Module["_sqlite3_get_auxdata"]=wasmExports["ec"])(a0,a1);var _sqlite3_set_auxdata=Module["_sqlite3_set_auxdata"]=(a0,a1,a2,a3)=>(_sqlite3_set_auxdata=Module["_sqlite3_set_auxdata"]=wasmExports["fc"])(a0,a1,a2,a3);var _sqlite3_column_count=Module["_sqlite3_column_count"]=a0=>(_sqlite3_column_count=Module["_sqlite3_column_count"]=wasmExports["gc"])(a0);var _sqlite3_data_count=Module["_sqlite3_data_count"]=a0=>(_sqlite3_data_count=Module["_sqlite3_data_count"]=wasmExports["hc"])(a0);var _sqlite3_column_blob=Module["_sqlite3_column_blob"]=(a0,a1)=>(_sqlite3_column_blob=Module["_sqlite3_column_blob"]=wasmExports["ic"])(a0,a1);var _sqlite3_column_bytes=Module["_sqlite3_column_bytes"]=(a0,a1)=>(_sqlite3_column_bytes=Module["_sqlite3_column_bytes"]=wasmExports["jc"])(a0,a1);var _sqlite3_column_bytes16=Module["_sqlite3_column_bytes16"]=(a0,a1)=>(_sqlite3_column_bytes16=Module["_sqlite3_column_bytes16"]=wasmExports["kc"])(a0,a1);var _sqlite3_column_double=Module["_sqlite3_column_double"]=(a0,a1)=>(_sqlite3_column_double=Module["_sqlite3_column_double"]=wasmExports["lc"])(a0,a1);var _sqlite3_column_text=Module["_sqlite3_column_text"]=(a0,a1)=>(_sqlite3_column_text=Module["_sqlite3_column_text"]=wasmExports["mc"])(a0,a1);var _sqlite3_column_value=Module["_sqlite3_column_value"]=(a0,a1)=>(_sqlite3_column_value=Module["_sqlite3_column_value"]=wasmExports["nc"])(a0,a1);var _sqlite3_column_text16=Module["_sqlite3_column_text16"]=(a0,a1)=>(_sqlite3_column_text16=Module["_sqlite3_column_text16"]=wasmExports["oc"])(a0,a1);var _sqlite3_column_type=Module["_sqlite3_column_type"]=(a0,a1)=>(_sqlite3_column_type=Module["_sqlite3_column_type"]=wasmExports["pc"])(a0,a1);var _sqlite3_column_name=Module["_sqlite3_column_name"]=(a0,a1)=>(_sqlite3_column_name=Module["_sqlite3_column_name"]=wasmExports["qc"])(a0,a1);var _sqlite3_column_name16=Module["_sqlite3_column_name16"]=(a0,a1)=>(_sqlite3_column_name16=Module["_sqlite3_column_name16"]=wasmExports["rc"])(a0,a1);var _sqlite3_bind_blob=Module["_sqlite3_bind_blob"]=(a0,a1,a2,a3,a4)=>(_sqlite3_bind_blob=Module["_sqlite3_bind_blob"]=wasmExports["sc"])(a0,a1,a2,a3,a4);var _sqlite3_bind_blob64=Module["_sqlite3_bind_blob64"]=(a0,a1,a2,a3,a4,a5)=>(_sqlite3_bind_blob64=Module["_sqlite3_bind_blob64"]=wasmExports["tc"])(a0,a1,a2,a3,a4,a5);var _sqlite3_bind_double=Module["_sqlite3_bind_double"]=(a0,a1,a2)=>(_sqlite3_bind_double=Module["_sqlite3_bind_double"]=wasmExports["uc"])(a0,a1,a2);var _sqlite3_bind_int=Module["_sqlite3_bind_int"]=(a0,a1,a2)=>(_sqlite3_bind_int=Module["_sqlite3_bind_int"]=wasmExports["vc"])(a0,a1,a2);var _sqlite3_bind_int64=Module["_sqlite3_bind_int64"]=(a0,a1,a2,a3)=>(_sqlite3_bind_int64=Module["_sqlite3_bind_int64"]=wasmExports["wc"])(a0,a1,a2,a3);var _sqlite3_bind_null=Module["_sqlite3_bind_null"]=(a0,a1)=>(_sqlite3_bind_null=Module["_sqlite3_bind_null"]=wasmExports["xc"])(a0,a1);var _sqlite3_bind_pointer=Module["_sqlite3_bind_pointer"]=(a0,a1,a2,a3,a4)=>(_sqlite3_bind_pointer=Module["_sqlite3_bind_pointer"]=wasmExports["yc"])(a0,a1,a2,a3,a4);var _sqlite3_bind_text=Module["_sqlite3_bind_text"]=(a0,a1,a2,a3,a4)=>(_sqlite3_bind_text=Module["_sqlite3_bind_text"]=wasmExports["zc"])(a0,a1,a2,a3,a4);var _sqlite3_bind_text64=Module["_sqlite3_bind_text64"]=(a0,a1,a2,a3,a4,a5,a6)=>(_sqlite3_bind_text64=Module["_sqlite3_bind_text64"]=wasmExports["Ac"])(a0,a1,a2,a3,a4,a5,a6);var _sqlite3_bind_text16=Module["_sqlite3_bind_text16"]=(a0,a1,a2,a3,a4)=>(_sqlite3_bind_text16=Module["_sqlite3_bind_text16"]=wasmExports["Bc"])(a0,a1,a2,a3,a4);var _sqlite3_bind_value=Module["_sqlite3_bind_value"]=(a0,a1,a2)=>(_sqlite3_bind_value=Module["_sqlite3_bind_value"]=wasmExports["Cc"])(a0,a1,a2);var _sqlite3_bind_zeroblob=Module["_sqlite3_bind_zeroblob"]=(a0,a1,a2)=>(_sqlite3_bind_zeroblob=Module["_sqlite3_bind_zeroblob"]=wasmExports["Dc"])(a0,a1,a2);var _sqlite3_bind_zeroblob64=Module["_sqlite3_bind_zeroblob64"]=(a0,a1,a2,a3)=>(_sqlite3_bind_zeroblob64=Module["_sqlite3_bind_zeroblob64"]=wasmExports["Ec"])(a0,a1,a2,a3);var _sqlite3_bind_parameter_count=Module["_sqlite3_bind_parameter_count"]=a0=>(_sqlite3_bind_parameter_count=Module["_sqlite3_bind_parameter_count"]=wasmExports["Fc"])(a0);var _sqlite3_bind_parameter_name=Module["_sqlite3_bind_parameter_name"]=(a0,a1)=>(_sqlite3_bind_parameter_name=Module["_sqlite3_bind_parameter_name"]=wasmExports["Gc"])(a0,a1);var _sqlite3_bind_parameter_index=Module["_sqlite3_bind_parameter_index"]=(a0,a1)=>(_sqlite3_bind_parameter_index=Module["_sqlite3_bind_parameter_index"]=wasmExports["Hc"])(a0,a1);var _sqlite3_db_handle=Module["_sqlite3_db_handle"]=a0=>(_sqlite3_db_handle=Module["_sqlite3_db_handle"]=wasmExports["Ic"])(a0);var _sqlite3_stmt_readonly=Module["_sqlite3_stmt_readonly"]=a0=>(_sqlite3_stmt_readonly=Module["_sqlite3_stmt_readonly"]=wasmExports["Jc"])(a0);var _sqlite3_stmt_isexplain=Module["_sqlite3_stmt_isexplain"]=a0=>(_sqlite3_stmt_isexplain=Module["_sqlite3_stmt_isexplain"]=wasmExports["Kc"])(a0);var _sqlite3_stmt_explain=Module["_sqlite3_stmt_explain"]=(a0,a1)=>(_sqlite3_stmt_explain=Module["_sqlite3_stmt_explain"]=wasmExports["Lc"])(a0,a1);var _sqlite3_stmt_busy=Module["_sqlite3_stmt_busy"]=a0=>(_sqlite3_stmt_busy=Module["_sqlite3_stmt_busy"]=wasmExports["Mc"])(a0);var _sqlite3_next_stmt=Module["_sqlite3_next_stmt"]=(a0,a1)=>(_sqlite3_next_stmt=Module["_sqlite3_next_stmt"]=wasmExports["Nc"])(a0,a1);var _sqlite3_stmt_status=Module["_sqlite3_stmt_status"]=(a0,a1,a2)=>(_sqlite3_stmt_status=Module["_sqlite3_stmt_status"]=wasmExports["Oc"])(a0,a1,a2);var _sqlite3_sql=Module["_sqlite3_sql"]=a0=>(_sqlite3_sql=Module["_sqlite3_sql"]=wasmExports["Pc"])(a0);var _sqlite3_expanded_sql=Module["_sqlite3_expanded_sql"]=a0=>(_sqlite3_expanded_sql=Module["_sqlite3_expanded_sql"]=wasmExports["Qc"])(a0);var _sqlite3_value_numeric_type=Module["_sqlite3_value_numeric_type"]=a0=>(_sqlite3_value_numeric_type=Module["_sqlite3_value_numeric_type"]=wasmExports["Rc"])(a0);var _sqlite3_blob_open=Module["_sqlite3_blob_open"]=(a0,a1,a2,a3,a4,a5,a6,a7)=>(_sqlite3_blob_open=Module["_sqlite3_blob_open"]=wasmExports["Sc"])(a0,a1,a2,a3,a4,a5,a6,a7);var _sqlite3_blob_close=Module["_sqlite3_blob_close"]=a0=>(_sqlite3_blob_close=Module["_sqlite3_blob_close"]=wasmExports["Tc"])(a0);var _sqlite3_blob_read=Module["_sqlite3_blob_read"]=(a0,a1,a2,a3)=>(_sqlite3_blob_read=Module["_sqlite3_blob_read"]=wasmExports["Uc"])(a0,a1,a2,a3);var _sqlite3_blob_write=Module["_sqlite3_blob_write"]=(a0,a1,a2,a3)=>(_sqlite3_blob_write=Module["_sqlite3_blob_write"]=wasmExports["Vc"])(a0,a1,a2,a3);var _sqlite3_blob_bytes=Module["_sqlite3_blob_bytes"]=a0=>(_sqlite3_blob_bytes=Module["_sqlite3_blob_bytes"]=wasmExports["Wc"])(a0);var _sqlite3_blob_reopen=Module["_sqlite3_blob_reopen"]=(a0,a1,a2)=>(_sqlite3_blob_reopen=Module["_sqlite3_blob_reopen"]=wasmExports["Xc"])(a0,a1,a2);var _sqlite3_set_authorizer=Module["_sqlite3_set_authorizer"]=(a0,a1,a2)=>(_sqlite3_set_authorizer=Module["_sqlite3_set_authorizer"]=wasmExports["Yc"])(a0,a1,a2);var _sqlite3_strglob=Module["_sqlite3_strglob"]=(a0,a1)=>(_sqlite3_strglob=Module["_sqlite3_strglob"]=wasmExports["Zc"])(a0,a1);var _sqlite3_strlike=Module["_sqlite3_strlike"]=(a0,a1,a2)=>(_sqlite3_strlike=Module["_sqlite3_strlike"]=wasmExports["_c"])(a0,a1,a2);var _sqlite3_errmsg=Module["_sqlite3_errmsg"]=a0=>(_sqlite3_errmsg=Module["_sqlite3_errmsg"]=wasmExports["$c"])(a0);var _sqlite3_auto_extension=Module["_sqlite3_auto_extension"]=a0=>(_sqlite3_auto_extension=Module["_sqlite3_auto_extension"]=wasmExports["ad"])(a0);var _sqlite3_cancel_auto_extension=Module["_sqlite3_cancel_auto_extension"]=a0=>(_sqlite3_cancel_auto_extension=Module["_sqlite3_cancel_auto_extension"]=wasmExports["bd"])(a0);var _sqlite3_reset_auto_extension=Module["_sqlite3_reset_auto_extension"]=()=>(_sqlite3_reset_auto_extension=Module["_sqlite3_reset_auto_extension"]=wasmExports["cd"])();var _sqlite3_prepare=Module["_sqlite3_prepare"]=(a0,a1,a2,a3,a4)=>(_sqlite3_prepare=Module["_sqlite3_prepare"]=wasmExports["dd"])(a0,a1,a2,a3,a4);var _sqlite3_prepare_v3=Module["_sqlite3_prepare_v3"]=(a0,a1,a2,a3,a4,a5)=>(_sqlite3_prepare_v3=Module["_sqlite3_prepare_v3"]=wasmExports["ed"])(a0,a1,a2,a3,a4,a5);var _sqlite3_prepare16=Module["_sqlite3_prepare16"]=(a0,a1,a2,a3,a4)=>(_sqlite3_prepare16=Module["_sqlite3_prepare16"]=wasmExports["fd"])(a0,a1,a2,a3,a4);var _sqlite3_prepare16_v2=Module["_sqlite3_prepare16_v2"]=(a0,a1,a2,a3,a4)=>(_sqlite3_prepare16_v2=Module["_sqlite3_prepare16_v2"]=wasmExports["gd"])(a0,a1,a2,a3,a4);var _sqlite3_prepare16_v3=Module["_sqlite3_prepare16_v3"]=(a0,a1,a2,a3,a4,a5)=>(_sqlite3_prepare16_v3=Module["_sqlite3_prepare16_v3"]=wasmExports["hd"])(a0,a1,a2,a3,a4,a5);var _sqlite3_get_table=Module["_sqlite3_get_table"]=(a0,a1,a2,a3,a4,a5)=>(_sqlite3_get_table=Module["_sqlite3_get_table"]=wasmExports["id"])(a0,a1,a2,a3,a4,a5);var _sqlite3_free_table=Module["_sqlite3_free_table"]=a0=>(_sqlite3_free_table=Module["_sqlite3_free_table"]=wasmExports["jd"])(a0);var _sqlite3_create_module=Module["_sqlite3_create_module"]=(a0,a1,a2,a3)=>(_sqlite3_create_module=Module["_sqlite3_create_module"]=wasmExports["kd"])(a0,a1,a2,a3);var _sqlite3_create_module_v2=Module["_sqlite3_create_module_v2"]=(a0,a1,a2,a3,a4)=>(_sqlite3_create_module_v2=Module["_sqlite3_create_module_v2"]=wasmExports["ld"])(a0,a1,a2,a3,a4);var _sqlite3_drop_modules=Module["_sqlite3_drop_modules"]=(a0,a1)=>(_sqlite3_drop_modules=Module["_sqlite3_drop_modules"]=wasmExports["md"])(a0,a1);var _sqlite3_declare_vtab=Module["_sqlite3_declare_vtab"]=(a0,a1)=>(_sqlite3_declare_vtab=Module["_sqlite3_declare_vtab"]=wasmExports["nd"])(a0,a1);var _sqlite3_vtab_on_conflict=Module["_sqlite3_vtab_on_conflict"]=a0=>(_sqlite3_vtab_on_conflict=Module["_sqlite3_vtab_on_conflict"]=wasmExports["od"])(a0);var _sqlite3_vtab_config=Module["_sqlite3_vtab_config"]=(a0,a1,a2)=>(_sqlite3_vtab_config=Module["_sqlite3_vtab_config"]=wasmExports["pd"])(a0,a1,a2);var _sqlite3_vtab_collation=Module["_sqlite3_vtab_collation"]=(a0,a1)=>(_sqlite3_vtab_collation=Module["_sqlite3_vtab_collation"]=wasmExports["qd"])(a0,a1);var _sqlite3_vtab_in=Module["_sqlite3_vtab_in"]=(a0,a1,a2)=>(_sqlite3_vtab_in=Module["_sqlite3_vtab_in"]=wasmExports["rd"])(a0,a1,a2);var _sqlite3_vtab_rhs_value=Module["_sqlite3_vtab_rhs_value"]=(a0,a1,a2)=>(_sqlite3_vtab_rhs_value=Module["_sqlite3_vtab_rhs_value"]=wasmExports["sd"])(a0,a1,a2);var _sqlite3_vtab_distinct=Module["_sqlite3_vtab_distinct"]=a0=>(_sqlite3_vtab_distinct=Module["_sqlite3_vtab_distinct"]=wasmExports["td"])(a0);var _sqlite3_keyword_name=Module["_sqlite3_keyword_name"]=(a0,a1,a2)=>(_sqlite3_keyword_name=Module["_sqlite3_keyword_name"]=wasmExports["ud"])(a0,a1,a2);var _sqlite3_keyword_count=Module["_sqlite3_keyword_count"]=()=>(_sqlite3_keyword_count=Module["_sqlite3_keyword_count"]=wasmExports["vd"])();var _sqlite3_keyword_check=Module["_sqlite3_keyword_check"]=(a0,a1)=>(_sqlite3_keyword_check=Module["_sqlite3_keyword_check"]=wasmExports["wd"])(a0,a1);var _sqlite3_complete=Module["_sqlite3_complete"]=a0=>(_sqlite3_complete=Module["_sqlite3_complete"]=wasmExports["xd"])(a0);var _sqlite3_complete16=Module["_sqlite3_complete16"]=a0=>(_sqlite3_complete16=Module["_sqlite3_complete16"]=wasmExports["yd"])(a0);var _sqlite3_libversion=Module["_sqlite3_libversion"]=()=>(_sqlite3_libversion=Module["_sqlite3_libversion"]=wasmExports["zd"])();var _sqlite3_libversion_number=Module["_sqlite3_libversion_number"]=()=>(_sqlite3_libversion_number=Module["_sqlite3_libversion_number"]=wasmExports["Ad"])();var _sqlite3_threadsafe=Module["_sqlite3_threadsafe"]=()=>(_sqlite3_threadsafe=Module["_sqlite3_threadsafe"]=wasmExports["Bd"])();var _sqlite3_initialize=Module["_sqlite3_initialize"]=()=>(_sqlite3_initialize=Module["_sqlite3_initialize"]=wasmExports["Cd"])();var _sqlite3_shutdown=Module["_sqlite3_shutdown"]=()=>(_sqlite3_shutdown=Module["_sqlite3_shutdown"]=wasmExports["Dd"])();var _sqlite3_config=Module["_sqlite3_config"]=(a0,a1)=>(_sqlite3_config=Module["_sqlite3_config"]=wasmExports["Ed"])(a0,a1);var _sqlite3_db_mutex=Module["_sqlite3_db_mutex"]=a0=>(_sqlite3_db_mutex=Module["_sqlite3_db_mutex"]=wasmExports["Fd"])(a0);var _sqlite3_db_release_memory=Module["_sqlite3_db_release_memory"]=a0=>(_sqlite3_db_release_memory=Module["_sqlite3_db_release_memory"]=wasmExports["Gd"])(a0);var _sqlite3_db_cacheflush=Module["_sqlite3_db_cacheflush"]=a0=>(_sqlite3_db_cacheflush=Module["_sqlite3_db_cacheflush"]=wasmExports["Hd"])(a0);var _sqlite3_db_config=Module["_sqlite3_db_config"]=(a0,a1,a2)=>(_sqlite3_db_config=Module["_sqlite3_db_config"]=wasmExports["Id"])(a0,a1,a2);var _sqlite3_last_insert_rowid=Module["_sqlite3_last_insert_rowid"]=a0=>(_sqlite3_last_insert_rowid=Module["_sqlite3_last_insert_rowid"]=wasmExports["Jd"])(a0);var _sqlite3_set_last_insert_rowid=Module["_sqlite3_set_last_insert_rowid"]=(a0,a1,a2)=>(_sqlite3_set_last_insert_rowid=Module["_sqlite3_set_last_insert_rowid"]=wasmExports["Kd"])(a0,a1,a2);var _sqlite3_changes64=Module["_sqlite3_changes64"]=a0=>(_sqlite3_changes64=Module["_sqlite3_changes64"]=wasmExports["Ld"])(a0);var _sqlite3_changes=Module["_sqlite3_changes"]=a0=>(_sqlite3_changes=Module["_sqlite3_changes"]=wasmExports["Md"])(a0);var _sqlite3_total_changes64=Module["_sqlite3_total_changes64"]=a0=>(_sqlite3_total_changes64=Module["_sqlite3_total_changes64"]=wasmExports["Nd"])(a0);var _sqlite3_total_changes=Module["_sqlite3_total_changes"]=a0=>(_sqlite3_total_changes=Module["_sqlite3_total_changes"]=wasmExports["Od"])(a0);var _sqlite3_txn_state=Module["_sqlite3_txn_state"]=(a0,a1)=>(_sqlite3_txn_state=Module["_sqlite3_txn_state"]=wasmExports["Pd"])(a0,a1);var _sqlite3_close=Module["_sqlite3_close"]=a0=>(_sqlite3_close=Module["_sqlite3_close"]=wasmExports["Qd"])(a0);var _sqlite3_close_v2=Module["_sqlite3_close_v2"]=a0=>(_sqlite3_close_v2=Module["_sqlite3_close_v2"]=wasmExports["Rd"])(a0);var _sqlite3_busy_handler=Module["_sqlite3_busy_handler"]=(a0,a1,a2)=>(_sqlite3_busy_handler=Module["_sqlite3_busy_handler"]=wasmExports["Sd"])(a0,a1,a2);var _sqlite3_progress_handler=Module["_sqlite3_progress_handler"]=(a0,a1,a2,a3)=>(_sqlite3_progress_handler=Module["_sqlite3_progress_handler"]=wasmExports["Td"])(a0,a1,a2,a3);var _sqlite3_busy_timeout=Module["_sqlite3_busy_timeout"]=(a0,a1)=>(_sqlite3_busy_timeout=Module["_sqlite3_busy_timeout"]=wasmExports["Ud"])(a0,a1);var _sqlite3_interrupt=Module["_sqlite3_interrupt"]=a0=>(_sqlite3_interrupt=Module["_sqlite3_interrupt"]=wasmExports["Vd"])(a0);var _sqlite3_is_interrupted=Module["_sqlite3_is_interrupted"]=a0=>(_sqlite3_is_interrupted=Module["_sqlite3_is_interrupted"]=wasmExports["Wd"])(a0);var _sqlite3_create_function=Module["_sqlite3_create_function"]=(a0,a1,a2,a3,a4,a5,a6,a7)=>(_sqlite3_create_function=Module["_sqlite3_create_function"]=wasmExports["Xd"])(a0,a1,a2,a3,a4,a5,a6,a7);var _sqlite3_create_function_v2=Module["_sqlite3_create_function_v2"]=(a0,a1,a2,a3,a4,a5,a6,a7,a8)=>(_sqlite3_create_function_v2=Module["_sqlite3_create_function_v2"]=wasmExports["Yd"])(a0,a1,a2,a3,a4,a5,a6,a7,a8);var _sqlite3_create_window_function=Module["_sqlite3_create_window_function"]=(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9)=>(_sqlite3_create_window_function=Module["_sqlite3_create_window_function"]=wasmExports["Zd"])(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9);var _sqlite3_create_function16=Module["_sqlite3_create_function16"]=(a0,a1,a2,a3,a4,a5,a6,a7)=>(_sqlite3_create_function16=Module["_sqlite3_create_function16"]=wasmExports["_d"])(a0,a1,a2,a3,a4,a5,a6,a7);var _sqlite3_overload_function=Module["_sqlite3_overload_function"]=(a0,a1,a2)=>(_sqlite3_overload_function=Module["_sqlite3_overload_function"]=wasmExports["$d"])(a0,a1,a2);var _sqlite3_trace_v2=Module["_sqlite3_trace_v2"]=(a0,a1,a2,a3)=>(_sqlite3_trace_v2=Module["_sqlite3_trace_v2"]=wasmExports["ae"])(a0,a1,a2,a3);var _sqlite3_commit_hook=Module["_sqlite3_commit_hook"]=(a0,a1,a2)=>(_sqlite3_commit_hook=Module["_sqlite3_commit_hook"]=wasmExports["be"])(a0,a1,a2);var _sqlite3_update_hook=Module["_sqlite3_update_hook"]=(a0,a1,a2)=>(_sqlite3_update_hook=Module["_sqlite3_update_hook"]=wasmExports["ce"])(a0,a1,a2);var _sqlite3_rollback_hook=Module["_sqlite3_rollback_hook"]=(a0,a1,a2)=>(_sqlite3_rollback_hook=Module["_sqlite3_rollback_hook"]=wasmExports["de"])(a0,a1,a2);var _sqlite3_autovacuum_pages=Module["_sqlite3_autovacuum_pages"]=(a0,a1,a2,a3)=>(_sqlite3_autovacuum_pages=Module["_sqlite3_autovacuum_pages"]=wasmExports["ee"])(a0,a1,a2,a3);var _sqlite3_wal_autocheckpoint=Module["_sqlite3_wal_autocheckpoint"]=(a0,a1)=>(_sqlite3_wal_autocheckpoint=Module["_sqlite3_wal_autocheckpoint"]=wasmExports["fe"])(a0,a1);var _sqlite3_wal_hook=Module["_sqlite3_wal_hook"]=(a0,a1,a2)=>(_sqlite3_wal_hook=Module["_sqlite3_wal_hook"]=wasmExports["ge"])(a0,a1,a2);var _sqlite3_wal_checkpoint_v2=Module["_sqlite3_wal_checkpoint_v2"]=(a0,a1,a2,a3,a4)=>(_sqlite3_wal_checkpoint_v2=Module["_sqlite3_wal_checkpoint_v2"]=wasmExports["he"])(a0,a1,a2,a3,a4);var _sqlite3_wal_checkpoint=Module["_sqlite3_wal_checkpoint"]=(a0,a1)=>(_sqlite3_wal_checkpoint=Module["_sqlite3_wal_checkpoint"]=wasmExports["ie"])(a0,a1);var _sqlite3_error_offset=Module["_sqlite3_error_offset"]=a0=>(_sqlite3_error_offset=Module["_sqlite3_error_offset"]=wasmExports["je"])(a0);var _sqlite3_errmsg16=Module["_sqlite3_errmsg16"]=a0=>(_sqlite3_errmsg16=Module["_sqlite3_errmsg16"]=wasmExports["ke"])(a0);var _sqlite3_errcode=Module["_sqlite3_errcode"]=a0=>(_sqlite3_errcode=Module["_sqlite3_errcode"]=wasmExports["le"])(a0);var _sqlite3_extended_errcode=Module["_sqlite3_extended_errcode"]=a0=>(_sqlite3_extended_errcode=Module["_sqlite3_extended_errcode"]=wasmExports["me"])(a0);var _sqlite3_system_errno=Module["_sqlite3_system_errno"]=a0=>(_sqlite3_system_errno=Module["_sqlite3_system_errno"]=wasmExports["ne"])(a0);var _sqlite3_errstr=Module["_sqlite3_errstr"]=a0=>(_sqlite3_errstr=Module["_sqlite3_errstr"]=wasmExports["oe"])(a0);var _sqlite3_limit=Module["_sqlite3_limit"]=(a0,a1,a2)=>(_sqlite3_limit=Module["_sqlite3_limit"]=wasmExports["pe"])(a0,a1,a2);var _sqlite3_open=Module["_sqlite3_open"]=(a0,a1)=>(_sqlite3_open=Module["_sqlite3_open"]=wasmExports["qe"])(a0,a1);var _sqlite3_open_v2=Module["_sqlite3_open_v2"]=(a0,a1,a2,a3)=>(_sqlite3_open_v2=Module["_sqlite3_open_v2"]=wasmExports["re"])(a0,a1,a2,a3);var _sqlite3_open16=Module["_sqlite3_open16"]=(a0,a1)=>(_sqlite3_open16=Module["_sqlite3_open16"]=wasmExports["se"])(a0,a1);var _sqlite3_create_collation=Module["_sqlite3_create_collation"]=(a0,a1,a2,a3,a4)=>(_sqlite3_create_collation=Module["_sqlite3_create_collation"]=wasmExports["te"])(a0,a1,a2,a3,a4);var _sqlite3_create_collation_v2=Module["_sqlite3_create_collation_v2"]=(a0,a1,a2,a3,a4,a5)=>(_sqlite3_create_collation_v2=Module["_sqlite3_create_collation_v2"]=wasmExports["ue"])(a0,a1,a2,a3,a4,a5);var _sqlite3_create_collation16=Module["_sqlite3_create_collation16"]=(a0,a1,a2,a3,a4)=>(_sqlite3_create_collation16=Module["_sqlite3_create_collation16"]=wasmExports["ve"])(a0,a1,a2,a3,a4);var _sqlite3_collation_needed=Module["_sqlite3_collation_needed"]=(a0,a1,a2)=>(_sqlite3_collation_needed=Module["_sqlite3_collation_needed"]=wasmExports["we"])(a0,a1,a2);var _sqlite3_collation_needed16=Module["_sqlite3_collation_needed16"]=(a0,a1,a2)=>(_sqlite3_collation_needed16=Module["_sqlite3_collation_needed16"]=wasmExports["xe"])(a0,a1,a2);var _sqlite3_get_clientdata=Module["_sqlite3_get_clientdata"]=(a0,a1)=>(_sqlite3_get_clientdata=Module["_sqlite3_get_clientdata"]=wasmExports["ye"])(a0,a1);var _sqlite3_set_clientdata=Module["_sqlite3_set_clientdata"]=(a0,a1,a2,a3)=>(_sqlite3_set_clientdata=Module["_sqlite3_set_clientdata"]=wasmExports["ze"])(a0,a1,a2,a3);var _sqlite3_get_autocommit=Module["_sqlite3_get_autocommit"]=a0=>(_sqlite3_get_autocommit=Module["_sqlite3_get_autocommit"]=wasmExports["Ae"])(a0);var _sqlite3_table_column_metadata=Module["_sqlite3_table_column_metadata"]=(a0,a1,a2,a3,a4,a5,a6,a7,a8)=>(_sqlite3_table_column_metadata=Module["_sqlite3_table_column_metadata"]=wasmExports["Be"])(a0,a1,a2,a3,a4,a5,a6,a7,a8);var _sqlite3_sleep=Module["_sqlite3_sleep"]=a0=>(_sqlite3_sleep=Module["_sqlite3_sleep"]=wasmExports["Ce"])(a0);var _sqlite3_extended_result_codes=Module["_sqlite3_extended_result_codes"]=(a0,a1)=>(_sqlite3_extended_result_codes=Module["_sqlite3_extended_result_codes"]=wasmExports["De"])(a0,a1);var _sqlite3_file_control=Module["_sqlite3_file_control"]=(a0,a1,a2,a3)=>(_sqlite3_file_control=Module["_sqlite3_file_control"]=wasmExports["Ee"])(a0,a1,a2,a3);var _sqlite3_test_control=Module["_sqlite3_test_control"]=(a0,a1)=>(_sqlite3_test_control=Module["_sqlite3_test_control"]=wasmExports["Fe"])(a0,a1);var _sqlite3_create_filename=Module["_sqlite3_create_filename"]=(a0,a1,a2,a3,a4)=>(_sqlite3_create_filename=Module["_sqlite3_create_filename"]=wasmExports["Ge"])(a0,a1,a2,a3,a4);var _sqlite3_free_filename=Module["_sqlite3_free_filename"]=a0=>(_sqlite3_free_filename=Module["_sqlite3_free_filename"]=wasmExports["He"])(a0);var _sqlite3_uri_parameter=Module["_sqlite3_uri_parameter"]=(a0,a1)=>(_sqlite3_uri_parameter=Module["_sqlite3_uri_parameter"]=wasmExports["Ie"])(a0,a1);var _sqlite3_uri_key=Module["_sqlite3_uri_key"]=(a0,a1)=>(_sqlite3_uri_key=Module["_sqlite3_uri_key"]=wasmExports["Je"])(a0,a1);var _sqlite3_uri_boolean=Module["_sqlite3_uri_boolean"]=(a0,a1,a2)=>(_sqlite3_uri_boolean=Module["_sqlite3_uri_boolean"]=wasmExports["Ke"])(a0,a1,a2);var _sqlite3_uri_int64=Module["_sqlite3_uri_int64"]=(a0,a1,a2,a3)=>(_sqlite3_uri_int64=Module["_sqlite3_uri_int64"]=wasmExports["Le"])(a0,a1,a2,a3);var _sqlite3_filename_database=Module["_sqlite3_filename_database"]=a0=>(_sqlite3_filename_database=Module["_sqlite3_filename_database"]=wasmExports["Me"])(a0);var _sqlite3_filename_journal=Module["_sqlite3_filename_journal"]=a0=>(_sqlite3_filename_journal=Module["_sqlite3_filename_journal"]=wasmExports["Ne"])(a0);var _sqlite3_filename_wal=Module["_sqlite3_filename_wal"]=a0=>(_sqlite3_filename_wal=Module["_sqlite3_filename_wal"]=wasmExports["Oe"])(a0);var _sqlite3_db_name=Module["_sqlite3_db_name"]=(a0,a1)=>(_sqlite3_db_name=Module["_sqlite3_db_name"]=wasmExports["Pe"])(a0,a1);var _sqlite3_db_filename=Module["_sqlite3_db_filename"]=(a0,a1)=>(_sqlite3_db_filename=Module["_sqlite3_db_filename"]=wasmExports["Qe"])(a0,a1);var _sqlite3_db_readonly=Module["_sqlite3_db_readonly"]=(a0,a1)=>(_sqlite3_db_readonly=Module["_sqlite3_db_readonly"]=wasmExports["Re"])(a0,a1);var _sqlite3_compileoption_used=Module["_sqlite3_compileoption_used"]=a0=>(_sqlite3_compileoption_used=Module["_sqlite3_compileoption_used"]=wasmExports["Se"])(a0);var _sqlite3_compileoption_get=Module["_sqlite3_compileoption_get"]=a0=>(_sqlite3_compileoption_get=Module["_sqlite3_compileoption_get"]=wasmExports["Te"])(a0);var _sqlite3_sourceid=Module["_sqlite3_sourceid"]=()=>(_sqlite3_sourceid=Module["_sqlite3_sourceid"]=wasmExports["Ue"])();var _malloc=Module["_malloc"]=a0=>(_malloc=Module["_malloc"]=wasmExports["Ve"])(a0);var _free=Module["_free"]=a0=>(_free=Module["_free"]=wasmExports["We"])(a0);var _RegisterExtensionFunctions=Module["_RegisterExtensionFunctions"]=a0=>(_RegisterExtensionFunctions=Module["_RegisterExtensionFunctions"]=wasmExports["Xe"])(a0);var _getSqliteFree=Module["_getSqliteFree"]=()=>(_getSqliteFree=Module["_getSqliteFree"]=wasmExports["Ye"])();var _main=Module["_main"]=(a0,a1)=>(_main=Module["_main"]=wasmExports["Ze"])(a0,a1);var _libauthorizer_set_authorizer=Module["_libauthorizer_set_authorizer"]=(a0,a1,a2)=>(_libauthorizer_set_authorizer=Module["_libauthorizer_set_authorizer"]=wasmExports["_e"])(a0,a1,a2);var _libfunction_create_function=Module["_libfunction_create_function"]=(a0,a1,a2,a3,a4,a5,a6,a7)=>(_libfunction_create_function=Module["_libfunction_create_function"]=wasmExports["$e"])(a0,a1,a2,a3,a4,a5,a6,a7);var _libhook_commit_hook=Module["_libhook_commit_hook"]=(a0,a1,a2)=>(_libhook_commit_hook=Module["_libhook_commit_hook"]=wasmExports["af"])(a0,a1,a2);var _libhook_update_hook=Module["_libhook_update_hook"]=(a0,a1,a2)=>(_libhook_update_hook=Module["_libhook_update_hook"]=wasmExports["bf"])(a0,a1,a2);var _libprogress_progress_handler=Module["_libprogress_progress_handler"]=(a0,a1,a2,a3)=>(_libprogress_progress_handler=Module["_libprogress_progress_handler"]=wasmExports["cf"])(a0,a1,a2,a3);var _libvfs_vfs_register=Module["_libvfs_vfs_register"]=(a0,a1,a2,a3,a4,a5)=>(_libvfs_vfs_register=Module["_libvfs_vfs_register"]=wasmExports["df"])(a0,a1,a2,a3,a4,a5);var _emscripten_builtin_memalign=(a0,a1)=>(_emscripten_builtin_memalign=wasmExports["ff"])(a0,a1);var __emscripten_tempret_get=()=>(__emscripten_tempret_get=wasmExports["gf"])();var __emscripten_stack_restore=a0=>(__emscripten_stack_restore=wasmExports["hf"])(a0);var __emscripten_stack_alloc=a0=>(__emscripten_stack_alloc=wasmExports["jf"])(a0);var _emscripten_stack_get_current=()=>(_emscripten_stack_get_current=wasmExports["kf"])();var _sqlite3_version=Module["_sqlite3_version"]=3232;Module["getTempRet0"]=getTempRet0;Module["ccall"]=ccall;Module["cwrap"]=cwrap;Module["addFunction"]=addFunction;Module["setValue"]=setValue;Module["getValue"]=getValue;Module["UTF8ToString"]=UTF8ToString;Module["stringToUTF8"]=stringToUTF8;Module["lengthBytesUTF8"]=lengthBytesUTF8;Module["intArrayFromString"]=intArrayFromString;Module["intArrayToString"]=intArrayToString;Module["AsciiToString"]=AsciiToString;Module["UTF16ToString"]=UTF16ToString;Module["stringToUTF16"]=stringToUTF16;Module["UTF32ToString"]=UTF32ToString;Module["stringToUTF32"]=stringToUTF32;Module["writeArrayToMemory"]=writeArrayToMemory;var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(){var entryFunction=_main;var argc=0;var argv=0;try{var ret=entryFunction(argc,argv);exitJS(ret,true);return ret}catch(e){return handleException(e)}}function run(){if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();readyPromiseResolve(Module);if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"])shouldRunNow=false;run();(function(){const AsyncFunction=Object.getPrototypeOf(async function(){}).constructor;let pAsyncFlags=0;Module["set_authorizer"]=function(db,xAuthorizer,pApp){if(pAsyncFlags){Module["deleteCallback"](pAsyncFlags);Module["_sqlite3_free"](pAsyncFlags);pAsyncFlags=0}pAsyncFlags=Module["_sqlite3_malloc"](4);setValue(pAsyncFlags,xAuthorizer instanceof AsyncFunction?1:0,"i32");const result=ccall("libauthorizer_set_authorizer","number",["number","number","number"],[db,xAuthorizer?1:0,pAsyncFlags]);if(!result&&xAuthorizer){Module["setCallback"](pAsyncFlags,(_,iAction,p3,p4,p5,p6)=>xAuthorizer(pApp,iAction,p3,p4,p5,p6))}return result}})();(function(){const AsyncFunction=Object.getPrototypeOf(async function(){}).constructor;const FUNC_METHODS=["xFunc","xStep","xFinal"];const mapFunctionNameToKey=new Map;Module["create_function"]=function(db,zFunctionName,nArg,eTextRep,pApp,xFunc,xStep,xFinal){const pAsyncFlags=Module["_sqlite3_malloc"](4);const target={xFunc:xFunc,xStep:xStep,xFinal:xFinal};setValue(pAsyncFlags,FUNC_METHODS.reduce((mask,method,i)=>{if(target[method]instanceof AsyncFunction){return mask|1<xUpdateHook(iUpdateType,dbName,tblName,lo32,hi32))}}})();(function(){const AsyncFunction=Object.getPrototypeOf(async function(){}).constructor;let pAsyncFlags=0;Module["commit_hook"]=function(db,xCommitHook){if(pAsyncFlags){Module["deleteCallback"](pAsyncFlags);Module["_sqlite3_free"](pAsyncFlags);pAsyncFlags=0}pAsyncFlags=Module["_sqlite3_malloc"](4);setValue(pAsyncFlags,xCommitHook instanceof AsyncFunction?1:0,"i32");ccall("libhook_commit_hook","void",["number","number","number"],[db,xCommitHook?1:0,pAsyncFlags]);if(xCommitHook){Module["setCallback"](pAsyncFlags,_=>xCommitHook())}}})();(function(){const AsyncFunction=Object.getPrototypeOf(async function(){}).constructor;let pAsyncFlags=0;Module["progress_handler"]=function(db,nOps,xProgress,pApp){if(pAsyncFlags){Module["deleteCallback"](pAsyncFlags);Module["_sqlite3_free"](pAsyncFlags);pAsyncFlags=0}pAsyncFlags=Module["_sqlite3_malloc"](4);setValue(pAsyncFlags,xProgress instanceof AsyncFunction?1:0,"i32");ccall("libprogress_progress_handler","number",["number","number","number","number"],[db,nOps,xProgress?1:0,pAsyncFlags]);if(xProgress){Module["setCallback"](pAsyncFlags,_=>xProgress(pApp))}}})();(function(){const VFS_METHODS=["xOpen","xDelete","xAccess","xFullPathname","xRandomness","xSleep","xCurrentTime","xGetLastError","xCurrentTimeInt64","xClose","xRead","xWrite","xTruncate","xSync","xFileSize","xLock","xUnlock","xCheckReservedLock","xFileControl","xSectorSize","xDeviceCharacteristics","xShmMap","xShmLock","xShmBarrier","xShmUnmap"];const mapVFSNameToKey=new Map;Module["vfs_register"]=function(vfs,makeDefault){let methodMask=0;let asyncMask=0;VFS_METHODS.forEach((method,i)=>{if(vfs[method]){methodMask|=1<// Import an ES6 module factory function from one of the
// package builds, either 'wa-sqlite.mjs' (synchronous) or
// 'wa-sqlite-async.mjs' (asynchronous). You should only
// use the asynchronous build if you plan to use an
// asynchronous VFS or module.
import SQLiteESMFactory from 'wa-sqlite/dist/wa-sqlite.mjs';

// Import the Javascript API wrappers.
import * as SQLite from 'wa-sqlite';

// Use an async function to simplify Promise handling.
(async function() {
// Invoke the ES6 module factory to create the SQLite
// Emscripten module. This will fetch and compile the
// .wasm file.
const module = await SQLiteESMFactory();

// Use the module to build the API instance.
const sqlite3 = SQLite.Factory(module);

// Use the API to open and access a database.
const db = await sqlite3.open_v2('myDB');
...
})();
interface SQLiteAPI {
    bind(stmt, i, value): number;
    bind_blob(stmt, i, value): number;
    bind_collection(stmt, bindings): number;
    bind_double(stmt, i, value): number;
    bind_int(stmt, i, value): number;
    bind_int64(stmt, i, value): number;
    bind_null(stmt, i): number;
    bind_parameter_count(stmt): number;
    bind_parameter_name(stmt, i): string;
    bind_text(stmt, i, value): number;
    changes(db): number;
    clear_bindings(stmt): number;
    close(db): Promise<number>;
    column(stmt, i): SQLiteCompatibleType;
    column_blob(stmt, i): Uint8Array;
    column_bytes(stmt, i): number;
    column_count(stmt): number;
    column_double(stmt, i): number;
    column_int(stmt, i): number;
    column_int64(stmt, i): bigint;
    column_name(stmt, i): string;
    column_names(stmt): string[];
    column_text(stmt, i): string;
    column_type(stmt, i): number;
    create_function(db, zFunctionName, nArg, eTextRep, pApp, xFunc?, xStep?, xFinal?): number;
    data_count(stmt): number;
    exec(db, zSQL, callback?): Promise<number>;
    finalize(stmt): Promise<number>;
    get_autocommit(db): number;
    libversion(): string;
    libversion_number(): number;
    limit(db, id, newVal): number;
    open_v2(zFilename, iFlags?, zVfs?): Promise<number>;
    progress_handler(db, nProgressOps, handler, userData): any;
    reset(stmt): Promise<number>;
    result(context, value): void;
    result_blob(context, value): void;
    result_double(context, value): void;
    result_int(context, value): void;
    result_int64(context, value): void;
    result_null(context): void;
    result_text(context, value): void;
    row(stmt): SQLiteCompatibleType[];
    set_authorizer(db, authFunction, userData): number;
    sql(stmt): string;
    statements(db, sql, options?): AsyncIterable<number>;
    step(stmt): Promise<number>;
    update_hook(db, callback): void;
    value(pValue): SQLiteCompatibleType;
    value_blob(pValue): Uint8Array;
    value_bytes(pValue): number;
    value_double(pValue): number;
    value_int(pValue): number;
    value_int64(pValue): bigint;
    value_text(pValue): string;
    value_type(pValue): number;
    vfs_register(vfs, makeDefault?): number;
}

Methods

interface SQLiteAPI {
    bind(stmt, i, value): number;
    bind_blob(stmt, i, value): number;
    bind_collection(stmt, bindings): number;
    bind_double(stmt, i, value): number;
    bind_int(stmt, i, value): number;
    bind_int64(stmt, i, value): number;
    bind_null(stmt, i): number;
    bind_parameter_count(stmt): number;
    bind_parameter_name(stmt, i): string;
    bind_text(stmt, i, value): number;
    changes(db): number;
    clear_bindings(stmt): number;
    close(db): Promise<number>;
    column(stmt, i): SQLiteCompatibleType;
    column_blob(stmt, i): Uint8Array;
    column_bytes(stmt, i): number;
    column_count(stmt): number;
    column_double(stmt, i): number;
    column_int(stmt, i): number;
    column_int64(stmt, i): bigint;
    column_name(stmt, i): string;
    column_names(stmt): string[];
    column_text(stmt, i): string;
    column_type(stmt, i): number;
    commit_hook(db, callback): void;
    create_function(db, zFunctionName, nArg, eTextRep, pApp, xFunc?, xStep?, xFinal?): number;
    data_count(stmt): number;
    exec(db, zSQL, callback?): Promise<number>;
    finalize(stmt): Promise<number>;
    get_autocommit(db): number;
    libversion(): string;
    libversion_number(): number;
    limit(db, id, newVal): number;
    open_v2(zFilename, iFlags?, zVfs?): Promise<number>;
    progress_handler(db, nProgressOps, handler, userData): any;
    reset(stmt): Promise<number>;
    result(context, value): void;
    result_blob(context, value): void;
    result_double(context, value): void;
    result_int(context, value): void;
    result_int64(context, value): void;
    result_null(context): void;
    result_text(context, value): void;
    row(stmt): SQLiteCompatibleType[];
    set_authorizer(db, authFunction, userData): number;
    sql(stmt): string;
    statements(db, sql, options?): AsyncIterable<number>;
    step(stmt): Promise<number>;
    update_hook(db, callback): void;
    value(pValue): SQLiteCompatibleType;
    value_blob(pValue): Uint8Array;
    value_bytes(pValue): number;
    value_double(pValue): number;
    value_int(pValue): number;
    value_int64(pValue): bigint;
    value_text(pValue): string;
    value_type(pValue): number;
    vfs_register(vfs, makeDefault?): number;
}

Methods

  • i: number

    column index

  • Returns number

    enumeration value for type

    • Register a commit hook

      +

      Parameters

      • db: number

        database pointer

        +
      • callback: (() => number)

        If a non-zero value is returned, commit is converted into +a rollback; disables callback when null

        +
          • (): number
          • Returns number

      Returns void

    • Create or redefine SQL functions

      The application data passed is ignored. Use closures instead.

      If any callback function returns a Promise, that function must @@ -386,4 +392,4 @@

      Parameters

      • vfs: SQLiteVFS

        VFS object

      • Optional makeDefault: boolean

      Returns number

      SQLITE_OK (throws exception on error)

    Generated using TypeDoc

    \ No newline at end of file +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/SQLitePrepareOptions.html b/docs/interfaces/SQLitePrepareOptions.html index 506d61f6..1bc0c9a5 100644 --- a/docs/interfaces/SQLitePrepareOptions.html +++ b/docs/interfaces/SQLitePrepareOptions.html @@ -2,7 +2,7 @@
    interface SQLitePrepareOptions {
        flags?: number;
        unscoped?: boolean;
    }

    Properties

    Properties

    flags?: number

    SQLITE_PREPARE_* flags

    -
    unscoped?: boolean

    Statement handles prepared and yielded by SQLiteAPI.statements are normally valid only within the scope of an iteration. Set unscoped to true to give iterated statements an arbitrary diff --git a/docs/interfaces/SQLiteVFS.html b/docs/interfaces/SQLiteVFS.html index 11287961..39025e91 100644 --- a/docs/interfaces/SQLiteVFS.html +++ b/docs/interfaces/SQLiteVFS.html @@ -1,17 +1,14 @@ SQLiteVFS | wa-sqlite

    Interface SQLiteVFS

    SQLite Virtual File System object

    Objects with this interface can be passed to SQLiteAPI.vfs_register to define a new filesystem.

    -

    There are examples of a synchronous -MemoryVFS.js, -and asynchronous -MemoryAsyncVFS.js -and -IndexedDbVFS.js.

    +

    There are synchronous +and asynchronous +example VFS classes in the repository.

    interface SQLiteVFS {
        mxPathName?: number;
        xAccess(pVfs, zName, flags, pResOut): number | Promise<number>;
        xCheckReservedLock(fileId, pResOut): number | Promise<number>;
        xClose(fileId): number | Promise<number>;
        xDelete(pVfs, zName, syncDir): number | Promise<number>;
        xDeviceCharacteristics(fileId): number | Promise<number>;
        xFileControl(fileId, flags, pOut): number | Promise<number>;
        xFileSize(fileId, pSize64): number | Promise<number>;
        xLock(fileId, flags): number | Promise<number>;
        xOpen(pVfs, zName, pFile, flags, pOutFlags): number | Promise<number>;
        xRead(fileId, pData, iAmt, iOffsetLo, iOffsetHi): number | Promise<number>;
        xSync(fileId, flags): number | Promise<number>;
        xTruncate(fileId, iSizeLo, iSizeHi): number | Promise<number>;
        xUnlock(fileId, flags): number | Promise<number>;
        xWrite(fileId, pData, iAmt, iOffsetLo, iOffsetHi): number | Promise<number>;
    }

    Properties

    interface SQLiteVFS {
        mxPathname?: number;
        xAccess(pVfs, zName, flags, pResOut): number | Promise<number>;
        xCheckReservedLock(pFile, pResOut): number | Promise<number>;
        xClose(pFile): number | Promise<number>;
        xDelete(pVfs, zName, syncDir): number | Promise<number>;
        xDeviceCharacteristics(pFile): number | Promise<number>;
        xFileControl(pFile, op, pArg): number | Promise<number>;
        xFileSize(pFile, pSize): number | Promise<number>;
        xFullPathname(pVfs, zName, nOut, zOut): number | Promise<number>;
        xGetLastError(pVfs, nBuf, zBuf): number | Promise<number>;
        xLock(pFile, lockType): number | Promise<number>;
        xOpen(pVfs, zName, pFile, flags, pOutFlags): number | Promise<number>;
        xRead(pFile, pData, iAmt, iOffsetLo, iOffsetHi): number | Promise<number>;
        xSectorSize(pFile): number | Promise<number>;
        xSync(pFile, flags): number | Promise<number>;
        xTruncate(pFile, sizeLo, sizeHi): number | Promise<number>;
        xUnlock(pFile, lockType): number | Promise<number>;
        xWrite(pFile, pData, iAmt, iOffsetLo, iOffsetHi): number | Promise<number>;
    }

    Properties

    mxPathName?: number

    Maximum length of a file path in UTF-8 bytes (default 64)

    +

    Properties

    mxPathname?: number

    Maximum length of a file path in UTF-8 bytes (default 64)

    Methods

    • Parameters

      • pVfs: number
      • zName: number
      • flags: number
      • pResOut: number

      Returns number | Promise<number>

    • Parameters

      • pVfs: number
      • zName: number
      • syncDir: number

      Returns number | Promise<number>

    • Parameters

      • pVfs: number
      • zName: number
      • nOut: number
      • zOut: number

      Returns number | Promise<number>

    • Parameters

      • pVfs: number
      • nBuf: number
      • zBuf: number

      Returns number | Promise<number>

    • Parameters

      • pVfs: number
      • zName: number
      • pFile: number
      • flags: number
      • pOutFlags: number

      Returns number | Promise<number>

    • Parameters

      • fileId: number
      • pData: number
      • iAmt: number
      • iOffsetLo: number
      • iOffsetHi: number

      Returns number | Promise<number>

    • Parameters

      • fileId: number
      • pData: number
      • iAmt: number
      • iOffsetLo: number
      • iOffsetHi: number

      Returns number | Promise<number>

    Generated using TypeDoc

    \ No newline at end of file +
    • Parameters

      • pFile: number
      • pData: number
      • iAmt: number
      • iOffsetLo: number
      • iOffsetHi: number

      Returns number | Promise<number>

    • Parameters

      • pFile: number
      • pData: number
      • iAmt: number
      • iOffsetLo: number
      • iOffsetHi: number

      Returns number | Promise<number>

    Generated using TypeDoc

    \ No newline at end of file diff --git a/package.json b/package.json index 690d10ea..ddbc62b9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "wa-sqlite", - "version": "1.0.9", + "version": "1.1.1", "type": "module", "main": "src/sqlite-api.js", "types": "src/types/index.d.ts", @@ -24,7 +24,7 @@ "devDependencies": { "@types/jasmine": "^5.1.4", "@web/dev-server": "^0.4.6", - "@web/test-runner": "^0.20.0", + "@web/test-runner": "^0.20.2", "@web/test-runner-core": "^0.13.4", "comlink": "^4.4.1", "jasmine-core": "^4.5.0", diff --git a/src/examples/LazyLock.js b/src/examples/LazyLock.js new file mode 100644 index 00000000..6ba65588 --- /dev/null +++ b/src/examples/LazyLock.js @@ -0,0 +1,90 @@ +import { Lock } from './Lock.js'; + +export class LazyLock extends Lock { + #channel; + #isBusy = false; + #hasReleaseRequest = false; + + /** + * @param {string} name + */ + constructor(name) { + super(name); + this.#channel = new BroadcastChannel(name); + this.#channel.onmessage = (event) => { + if (this.#isBusy) { + // We're using the lock so postpone the release. + this.#hasReleaseRequest = true; + } else { + this.release(); + } + } + } + + close() { + super.close(); + this.#channel.onmessage = null; + this.#channel.close(); + } + + /** + * @param {LockMode} mode + * @param {number} timeout + * @returns {Promise} + */ + async acquire(mode, timeout = -1) { + this.#isBusy = true; + try { + if (mode === this.mode) { + // We never had to release the lock. + return true; + } + + if (this.mode) { + // Release the lock to acquire it in a different mode. + super.release(); + } else { + // Poll for the lock. This isn't necessary but if it works it avoids + // the BroadcastChannel traffic. + if (await super.acquire(mode, 0)) { + return true; + } + } + + // Request the lock. + const pResult = super.acquire(mode, timeout) + this.#channel.postMessage({}); + + return await pResult; + } catch (e) { + this.release(); + throw e; + } + } + + /** + * @param {LockMode} mode + * @returns {boolean} + */ + acquireIfHeld(mode) { + if (mode === this.mode) { + this.#isBusy = true; + return true; + } + return false; + } + + release() { + super.release(); + this.#isBusy = false; + this.#hasReleaseRequest = false; + } + + releaseLazy() { + // Release the lock only if someone else wants it. + this.#isBusy = false; + if (this.#hasReleaseRequest) { + this.release(); + } + } +} \ No newline at end of file diff --git a/src/examples/Lock.js b/src/examples/Lock.js new file mode 100644 index 00000000..6199f374 --- /dev/null +++ b/src/examples/Lock.js @@ -0,0 +1,69 @@ +// This is a convenience wrapper for the Web Locks API. +export class Lock { + #name; + /** @type {LockMode?} */ #mode = null; + /** @type {Promise} */ #releaser = Promise.resolve(null); + #isAcquiring = false; + + /** + * @param {string} name + */ + constructor(name) { + this.#name = name; + } + + get name() { return this.#name; } + get mode() { return this.#mode; } + + close() { + this.release(); + } + + /** + * @param {'shared'|'exclusive'} mode + * @param {number} timeout -1 for infinite, 0 for poll, >0 for milliseconds + * @return {Promise} true if lock acquired, false on failed poll + */ + async acquire(mode, timeout = -1) { + if (this.#isAcquiring) throw new Error('Lock is already being acquired'); + this.#isAcquiring = true; + try { + if (this.#mode) { + throw new Error(`Lock ${this.#name} is already acquired`); + } + + this.#releaser = new Promise((resolve, reject) => { + /** @type {LockOptions} */ + const options = { mode, ifAvailable: timeout === 0 }; + if (timeout > 0) { + options.signal = AbortSignal.timeout(timeout); + } + + navigator.locks.request(this.#name, options, lock => { + if (lock === null) { + // Polling (with timeout = 0) did not acquire the lock. + return resolve(null); + } + + // Lock acquired. The lock is released when this returned + // Promise is resolved. + this.#mode = mode; + return new Promise(releaser => { + resolve(releaser); + }) + }).catch(e => { + return reject(e); + }); + }); + + return this.#releaser.then(releaser => !!releaser) + } finally { + this.#isAcquiring = false; + } + } + + release() { + this.#releaser.then(releaser => releaser?.(), () => {}); + this.#mode = null; + } +} diff --git a/src/examples/OPFSCoopSyncVFS.js b/src/examples/OPFSCoopSyncVFS.js index 90630e6f..44028251 100644 --- a/src/examples/OPFSCoopSyncVFS.js +++ b/src/examples/OPFSCoopSyncVFS.js @@ -519,17 +519,24 @@ export class OPFSCoopSyncVFS extends FacadeVFS { this._module.retryOps.push((async () => { // Acquire the Web Lock. file.persistentFile.handleLockReleaser = await this.#acquireLock(file.persistentFile); - - // Get access handles for the database and releated files in parallel. - this.log?.(`creating access handles for ${file.path}`) - await Promise.all(DB_RELATED_FILE_SUFFIXES.map(async suffix => { - const persistentFile = this.persistentFiles.get(file.path + suffix); - if (persistentFile) { - persistentFile.accessHandle = - await persistentFile.fileHandle.createSyncAccessHandle(); - } - })); - file.persistentFile.isRequestInProgress = false; + try { + // Get access handles for the database and releated files in parallel. + this.log?.(`creating access handles for ${file.path}`) + await Promise.all(DB_RELATED_FILE_SUFFIXES.map(async suffix => { + const persistentFile = this.persistentFiles.get(file.path + suffix); + if (persistentFile) { + persistentFile.accessHandle = + await persistentFile.fileHandle.createSyncAccessHandle(); + } + })); + } catch (e) { + this.log?.(`failed to create access handles for ${file.path}`, e); + // Close any of the potentially opened access handles + this.#releaseAccessHandle(file); + throw e; + } finally { + file.persistentFile.isRequestInProgress = false; + } })()); return this._module.retryOps.at(-1); } @@ -539,8 +546,8 @@ export class OPFSCoopSyncVFS extends FacadeVFS { /** * @param {File} file */ - async #releaseAccessHandle(file) { - DB_RELATED_FILE_SUFFIXES.forEach(async suffix => { + #releaseAccessHandle(file) { + DB_RELATED_FILE_SUFFIXES.forEach(suffix => { const persistentFile = this.persistentFiles.get(file.path + suffix); if (persistentFile) { persistentFile.accessHandle?.close(); diff --git a/src/examples/OPFSWriteAheadVFS.js b/src/examples/OPFSWriteAheadVFS.js new file mode 100644 index 00000000..e425c678 --- /dev/null +++ b/src/examples/OPFSWriteAheadVFS.js @@ -0,0 +1,960 @@ +import { FacadeVFS } from "../FacadeVFS.js"; +import * as VFS from '../VFS.js'; +import { LazyLock } from "./LazyLock.js"; +import { WriteAhead } from "./WriteAhead.js"; + +const LIBRARY_FILES_ROOT = '.wa-sqlite'; +const DEFAULT_TEMP_FILES = 6; + +const finalizationRegistry = new FinalizationRegistry((/** @type {() => void} */ f) => f()); + +/** + * @typedef FileEntry + * @property {string} zName + * @property {number} flags + * @property {FileSystemSyncAccessHandle} [accessHandle] + + * Main database file properties: + * @property {*} [retryResult] + * @property {FileSystemSyncAccessHandle[]} [waHandles] + * + * @property {'reserved'|'exclusive'|null} [writeHint] + * @property {'normal'|'exclusive'} [lockingMode] + * @property {number} [lockState] SQLITE_LOCK_* + * @property {LazyLock} [readLock] + * @property {LazyLock} [writeLock] + * @property {'none'|'read'|'write'|'readwrite'} [useLazyLock] + * @property {number} [timeout] + * @property {0|1|2|3} [synchronous] + * @property {number?} [pageSize] + * @property {boolean} [overwrite] + * + * @property {WriteAhead} [writeAhead] + */ + +/** + * @typedef OPFSWriteAheadOptions + * @property {number} [nTmpFiles] + * @property {number} [autoCheckpoint] + * @property {number} [backstopInterval] + */ + +export class OPFSWriteAheadVFS extends FacadeVFS { + lastError = null; + log = null; + + /** @type {Map} */ mapIdToFile = new Map(); + /** @type {Map} */ mapPathToFile = new Map(); + + /** @type {Map} */ boundTempFiles = new Map(); + /** @type {Set} */ unboundTempFiles = new Set(); + /** @type {OPFSWriteAheadOptions} */ options = { + nTmpFiles: DEFAULT_TEMP_FILES + }; + + _ready; + + static async create(name, module, options) { + const vfs = new OPFSWriteAheadVFS(name, module); + Object.assign(vfs.options, options); + await vfs.isReady(); + return vfs; + } + + constructor(name, module) { + super(name, module); + this._ready = (async () => { + // Ensure the library files root directory exists. + let dirHandle = await navigator.storage.getDirectory(); + dirHandle = await dirHandle.getDirectoryHandle(LIBRARY_FILES_ROOT, { create: true }); + + // Clean up any stale session directories. + // @ts-ignore + for await (const name of dirHandle.keys()) { + if (name.startsWith('.session-')) { + // Acquire a lock on the session directory to ensure it is not in use. + await navigator.locks.request(name, { ifAvailable: true }, async lock => { + if (lock) { + // This directory is not in use. + try { + await dirHandle.removeEntry(name, { recursive: true }); + } catch (e) { + // Ignore errors, will try again next time. + } + } + }); + } + } + + // Create our session directory. + const dirName = `.session-${Math.random().toString(16).slice(2)}`; + await new Promise(resolve => { + navigator.locks.request(dirName, () => { + // @ts-ignore + resolve(); + return new Promise(release => { + // @ts-ignore + finalizationRegistry.register(this, release); + }); + }); + }); + dirHandle = await dirHandle.getDirectoryHandle(dirName, { create: true }); + + // Create temporary files. + for (let i = 0; i < this.options.nTmpFiles; i++) { + const fileHandle= await dirHandle.getFileHandle(i.toString(), { create: true }); + const accessHandle = await fileHandle.createSyncAccessHandle(); + finalizationRegistry.register(this, () => accessHandle.close()); + this.unboundTempFiles.add(accessHandle); + } + })(); + } + + isReady() { + return Promise.all([super.isReady(), this._ready]).then(() => true); + } + + /** + * @param {string?} zName + * @param {number} fileId + * @param {number} flags + * @param {DataView} pOutFlags + * @returns {number} + */ + jOpen(zName, fileId, flags, pOutFlags) { + try { + if (zName === null) { + // Generate a temporary filename. This will only be used as a + // key to map to a pre-opened temporary file access handle. + zName = Math.random().toString(16).slice(2); + } + + const file = this.mapPathToFile.get(zName) ?? { + zName, + flags, + retryResult: null, + }; + this.mapPathToFile.set(zName, file); + + if (flags & VFS.SQLITE_OPEN_MAIN_DB) { + // Open database and journal files with a retry operation. + if (file.retryResult === null) { + // This is the initial open attempt. Start the asynchronous task + // and return SQLITE_BUSY to force a retry. + this._module.retryOps.push(this.#retryOpen(zName, flags, fileId, pOutFlags)); + return VFS.SQLITE_BUSY; + } else if (file.retryResult instanceof Error) { + const e = file.retryResult; + file.retryResult = null; + throw e; + } + + // Initialize database file state. + file.accessHandle = file.retryResult.accessHandle; + file.waHandles = file.retryResult.waHandles; + file.writeAhead = file.retryResult.writeAhead; + file.retryResult = null; + + file.lockState = VFS.SQLITE_LOCK_NONE; + file.lockingMode = 'normal'; + file.readLock = new LazyLock(`${zName}#read`); + file.writeLock = new LazyLock(`${zName}#write`); + file.useLazyLock = 'readwrite'; + file.timeout = -1; + file.synchronous = 1; // NORMAL + file.writeHint = null; + file.pageSize = null; + file.overwrite = false; + } else if (flags & (VFS.SQLITE_OPEN_WAL | VFS.SQLITE_OPEN_SUPER_JOURNAL)) { + throw new Error('WAL and super-journal files are not supported'); + } else if (file.accessHandle) { + // This temporary file already has an access handle, which happens + // only for tests. Just use it as is. + } else { + // This is a temporary file. Use an unbound pre-opened accessHandle. + if (!(flags & VFS.SQLITE_OPEN_CREATE)) throw new Error('file not found'); + file.accessHandle = this.#openTemporaryFile(zName); + } + + this.mapIdToFile.set(fileId, file); + pOutFlags.setInt32(0, flags, true); + return VFS.SQLITE_OK; + } catch (e) { + console.error(e.stack); + this.lastError = e; + this.mapPathToFile.delete(zName); + return VFS.SQLITE_CANTOPEN; + } + } + + /** + * @param {string} zName + * @param {number} syncDir + * @returns {number} + */ + jDelete(zName, syncDir) { + try { + if (this.boundTempFiles.has(zName)) { + const file = this.mapPathToFile.get(zName); + this.#deleteTemporaryFile(file); + } else { + throw new Error(`unexpected file deletion: ${zName}`); + } + return VFS.SQLITE_OK; + } catch (e) { + console.error(e.stack); + this.lastError = e; + return VFS.SQLITE_IOERR_DELETE; + } + } + + /** + * @param {string} zName + * @param {number} flags + * @param {DataView} pResOut + * @returns {number} + */ + jAccess(zName, flags, pResOut) { + try { + const file = this.mapPathToFile.get(zName); + pResOut.setInt32(0, file ? 1 : 0, true); + return VFS.SQLITE_OK; + } catch (e) { + console.error(e.stack); + this.lastError = e; + return VFS.SQLITE_IOERR_ACCESS; + } + } + + /** + * @param {number} fileId + * @returns {number} + */ + jClose(fileId) { + try { + const file = this.mapIdToFile.get(fileId); + if (file?.flags & VFS.SQLITE_OPEN_MAIN_DB) { + file.writeAhead.close(); + file.accessHandle.close(); + file.waHandles.forEach(handle => handle.close()); + this.mapPathToFile.delete(file?.zName); + + file.readLock.close(); + file.writeLock.close(); + } else if (file?.flags & VFS.SQLITE_OPEN_DELETEONCLOSE) { + this.#deleteTemporaryFile(file); + } + + // Disassociate fileId from file entry. + this.mapIdToFile.delete(fileId); + return VFS.SQLITE_OK; + } catch (e) { + console.error(e.stack); + this.lastError = e; + return VFS.SQLITE_IOERR_CLOSE; + } + } + + /** + * @param {number} fileId + * @param {Uint8Array} pData + * @param {number} iOffset + * @returns {number} + */ + jRead(fileId, pData, iOffset) { + try { + const file = this.mapIdToFile.get(fileId); + + let bytesRead = null; + if (file.flags & VFS.SQLITE_OPEN_MAIN_DB) { + // Try reading from the write-ahead overlays first. A read on the + // database file is always a complete page, except when reading + // from the 100-byte header. + const pageOffset = iOffset < 100 ? iOffset : 0; + const page = file.writeAhead.read(iOffset - pageOffset); + if (page) { + const readData = page.subarray(pageOffset, pageOffset + pData.byteLength); + pData.set(readData); + bytesRead = readData.byteLength; + } + } + + if (bytesRead === null) { + // Read directly from the OPFS file. + + // On Chrome (at least), passing pData to accessHandle.read() is + // an error because pData is a Proxy of a Uint8Array. Calling + // subarray() produces a real Uint8Array and that works. + bytesRead = file.accessHandle.read(pData.subarray(), { at: iOffset }); + } + + if (bytesRead < pData.byteLength) { + pData.fill(0, bytesRead); + return VFS.SQLITE_IOERR_SHORT_READ; + } + return VFS.SQLITE_OK; + } catch (e) { + console.error(e.stack); + this.lastError = e; + return VFS.SQLITE_IOERR_READ; + } + } + + /** + * @param {number} fileId + * @param {Uint8Array} pData + * @param {number} iOffset + * @returns {number} + */ + jWrite(fileId, pData, iOffset) { + try { + const file = this.mapIdToFile.get(fileId); + if (file.flags & VFS.SQLITE_OPEN_MAIN_DB) { + // Write to the write-ahead overlay. + const isPageResize = file.overwrite && file.pageSize !== pData.byteLength; + file.writeAhead.write(iOffset, pData, { + dstPageSize: isPageResize ? file.pageSize : null + }); + return VFS.SQLITE_OK; + } + + // On Chrome (at least), passing pData to accessHandle.write() is + // an error because pData is a Proxy of a Uint8Array. Calling + // subarray() produces a real Uint8Array and that works. + file.accessHandle.write(pData.subarray(), { at: iOffset }); + return VFS.SQLITE_OK; + } catch (e) { + console.error(e.stack); + this.lastError = e; + return VFS.SQLITE_IOERR_WRITE; + } + } + + /** + * @param {number} fileId + * @param {number} iSize + * @returns {number} + */ + jTruncate(fileId, iSize) { + try { + const file = this.mapIdToFile.get(fileId); + if (file.flags & VFS.SQLITE_OPEN_MAIN_DB) { + file.writeAhead.truncate(iSize); + return VFS.SQLITE_OK; + } + file.accessHandle.truncate(iSize); + return VFS.SQLITE_OK; + } catch (e) { + console.error(e.stack); + this.lastError = e; + return VFS.SQLITE_IOERR_TRUNCATE; + } + } + + /** + * @param {number} fileId + * @param {number} flags + * @returns {number} + */ + jSync(fileId, flags) { + try { + const file = this.mapIdToFile.get(fileId); + if (file.flags & VFS.SQLITE_OPEN_MAIN_DB) { + const durability = file.synchronous > 1 ? 'strict' : 'relaxed'; + file.writeAhead.sync({ durability }); + } else { + // This is a temporary file so sync is not needed. + // Temporary journals are only used for rollback by the + // connection that created them, not for recovery. + } + return VFS.SQLITE_OK; + } catch (e) { + console.error(e.stack); + this.lastError = e; + return VFS.SQLITE_IOERR_FSYNC; + } + } + + /** + * @param {number} fileId + * @param {DataView} pSize64 + * @returns {number} + */ + jFileSize(fileId, pSize64) { + try { + const file = this.mapIdToFile.get(fileId); + + let size; + if (file.flags & VFS.SQLITE_OPEN_MAIN_DB) { + size = file.writeAhead.getFileSize() || file.accessHandle.getSize(); + } else { + size = file.accessHandle.getSize(); + } + pSize64.setBigInt64(0, BigInt(size), true); + return VFS.SQLITE_OK; + } catch (e) { + console.error(e.stack); + this.lastError = e; + return VFS.SQLITE_IOERR_FSTAT; + } + } + + /** + * @param {number} pFile + * @param {number} lockType + * @returns {number|Promise} + */ + jLock(pFile, lockType) { + try { + const file = this.mapIdToFile.get(pFile); + if (file.lockState === VFS.SQLITE_LOCK_NONE && lockType === VFS.SQLITE_LOCK_SHARED) { + // We do all our locking work in this transition. + if (file.retryResult === null) { + if (file.lockingMode === 'exclusive') { + // Exclusive locking mode is treated as a write, and the + // read lock is also acquired to block readers. + file.retryResult = {}; + this._module.retryOps.push(this.#retryLockWrite(file)); + return VFS.SQLITE_BUSY; + } + + // With WAL, read and write transactions use separate locks. In + // each case if the required lock is already held then we can + // proceed synchronously. Otherwise we need to acquire state + // asynchronously and retry. + if (file.writeHint) { + // Write transaction. + if (!file.writeLock.acquireIfHeld('exclusive')) { + file.retryResult = {}; + this._module.retryOps.push(this.#retryLockWrite(file)); + return VFS.SQLITE_BUSY; + } else { + file.writeAhead.isolateForWrite(); + } + } else { + // Read transaction. + if (!file.readLock.acquireIfHeld('shared')) { + file.retryResult = {}; + this._module.retryOps.push(this.#retryLockRead(file)); + return VFS.SQLITE_BUSY; + } else { + file.writeAhead.isolateForRead(); + } + } + } else if (file.retryResult instanceof Error) { + const e = file.retryResult; + file.retryResult = null; + throw e; + } + + // We have acquired the needed locks, either synchronously or + // via retry. + file.retryResult = null; + } else if (lockType >= VFS.SQLITE_LOCK_RESERVED && !file.writeLock.mode) { + // This is a write transaction but we don't already have the write + // lock. This happens when the write hint was not used, which this + // VFS treats as an error. + throw new Error('Write transaction cannot use BEGIN DEFERRED'); + } + file.lockState = lockType; + return VFS.SQLITE_OK; + } catch (e) { + if (e.name === 'TimeoutError') { + return VFS.SQLITE_BUSY; + } + + console.error(e.stack); + this.lastError = e; + return VFS.SQLITE_IOERR_LOCK; + } + } + + /** + * @param {number} pFile + * @param {number} lockType + * @returns {number} + */ + jUnlock(pFile, lockType) { + try { + const file = this.mapIdToFile.get(pFile); + + // If retryResult is non-null, an asynchronous lock operation is in + // progress. In that case, don't change any locks. + if (!file.retryResult && lockType === VFS.SQLITE_LOCK_NONE) { + // In this VFS, this is the only unlock transition that matters. + // Exit write-ahead isolation. + file.writeAhead.rejoin(); + + // Release any locks. + switch (file.useLazyLock) { + case 'none': + file.writeLock.release(); + file.readLock.release(); + break; + case 'read': + file.writeLock.release(); + file.readLock.releaseLazy(); + break; + case 'write': + file.writeLock.releaseLazy(); + file.readLock.release(); + break; + case 'readwrite': + file.writeLock.releaseLazy(); + file.readLock.releaseLazy(); + break; + } + + // Reset state for the next transaction. + file.writeHint = null; + } + file.lockState = lockType; + } catch (e) { + console.error(e.stack); + this.lastError = e; + return VFS.SQLITE_IOERR_UNLOCK; + } + } + + /** + * @param {number} pFile + * @param {DataView} pResOut + * @returns {number} + */ + jCheckReservedLock(pFile, pResOut) { + // A hot journal cannot exist so this method should never be called. + console.assert(false, 'unexpected'); + pResOut.setInt32(0, 0, true); + return VFS.SQLITE_OK; + } + + /** + * @param {number} pFile + * @param {number} op + * @param {DataView} pArg + * @returns {number} + */ + jFileControl(pFile, op, pArg) { + try { + const file = this.mapIdToFile.get(pFile); + switch (op) { + case VFS.SQLITE_FCNTL_PRAGMA: + const key = this._module.UTF8ToString(pArg.getUint32(4, true)); + const valueAddress = pArg.getUint32(8, true); + const value = valueAddress ? this._module.UTF8ToString(valueAddress) : null; + this.log?.(`PRAGMA ${key} ${value}`); + switch (key.toLowerCase()) { + case 'experimental_pragma_20251114': + // After entering the SHARED locking state on the next + // transaction, SQLite intends to immediately transition to + // RESERVED if value is '1', or EXCLUSIVE if value is '2'. + switch (value) { + case '1': + file.writeHint = 'reserved'; + break; + case '2': + file.writeHint = 'exclusive'; + break; + default: + throw new Error(`unexpected write hint value: ${value}`); + } + break; + case 'backstop_interval': + if (value !== null) { + const millis = parseInt(value); + file.writeAhead.setBackstopInterval(millis); + } else { + // Return current interval. + const s = file.writeAhead.options.backstopInterval.toString(); + const ptr = this._module._sqlite3_malloc64(s.length + 1); + this._module.stringToUTF8(s, ptr, s.length + 1); + pArg.setUint32(0, ptr, true); + } + return VFS.SQLITE_OK; + case 'busy_timeout': + // Override SQLite's handling of busy timeouts with our + // blocking lock timeouts. + if (value !== null) { + file.timeout = parseInt(value); + } else { + // Return current timeout. + const s = file.timeout.toString(); + const ptr = this._module._sqlite3_malloc64(s.length + 1); + this._module.stringToUTF8(s, ptr, s.length + 1); + pArg.setUint32(0, ptr, true); + } + return VFS.SQLITE_OK; + case 'journal_size_limit': + if (value !== null) { + const nPages = parseInt(value); + file.writeAhead.options.journalSizeLimit = nPages; + } + break; + case 'locking_mode': + // Track SQLite locking mode. Exclusive mode requires a + // write lock. + switch (value?.toLowerCase()) { + case 'normal': + file.lockingMode = 'normal'; + break; + case 'exclusive': + file.lockingMode = 'exclusive'; + break; + } + break; + case 'page_size': + if (value !== null) { + // Valid page sizes are 1 (which maps to 65536) or powers of + // two from 512 to 32768. + const n = parseInt(value); + if (n === 1 || (n >= 512 && n <= 32768 && (n & (n - 1)) === 0)) { + file.pageSize = n === 1 ? 65536 : n; + } + } + break; + case 'synchronous': + // Track SQLite synchronous mode. Write-ahead transactions + // trade durability for performance on values 1 (NORMAL) or + // lower. + if (value !== null) { + switch (value.toLowerCase()) { + case 'off': + case '0': + file.synchronous = 0; + break; + case 'normal': + case '1': + file.synchronous = 1; + break; + case 'full': + case '2': + file.synchronous = 2; + break; + case 'extra': + case '3': + file.synchronous = 3; + break; + default: + throw new Error(`unexpected synchronous value: ${value}`); + } + } + break; + case 'vfs_trace': + // This is a trace feature for debugging only. + if (value !== null) { + this.log = parseInt(value) !== 0 ? console.debug : null; + file.writeAhead.log = this.log; + } + return VFS.SQLITE_OK; + case 'wal_autocheckpoint': + // A setting greater than zero enables automatic checkpoints + // with this connection (enabled by default). + if (value !== null) { + file.writeAhead.options.autoCheckpoint = parseInt(value); + } + break; + case 'wal_checkpoint': + const checkpointMode = (value ?? 'passive').toLowerCase(); + switch (checkpointMode) { + case 'passive': + this._module.pendingOps.push(this.#pendingCheckpoint(file, checkpointMode)); + break; + case 'full': + case 'restart': + case 'truncate': + if (file.writeAhead.isTransactionPending()) { + throw new Error('invalid while a transaction is in progress'); + } + this._module.pendingOps.push(this.#pendingCheckpoint(file, checkpointMode)); + break; + case 'noop': + break; + default: + throw new Error(`unexpected wal_checkpoint mode: ${value}`); + } + + // Return the approximate number of pages in the WAL before + // checkpointing. SQLite returns different information, but + // that is not feasible from a VFS. + { + const s = file.writeAhead.getWriteAheadSize().toString(); + const ptr = this._module._sqlite3_malloc64(s.length + 1); + this._module.stringToUTF8(s, ptr, s.length + 1); + pArg.setUint32(0, ptr, true); + } + return VFS.SQLITE_OK; + case 'lazy_lock': + // Lazy locks don't actually release their Web Lock until + // they receive a message requesting it. Typically a setting + // of 'readwrite' (default) or 'read' is best. + if (value !== null) { + const useLazyLock = value.toLowerCase(); + switch (useLazyLock) { + case 'read': + case 'write': + case 'readwrite': + case 'none': + file.useLazyLock = useLazyLock; + break; + default: + throw new Error(`unexpected value for lazy_lock: ${value}`); + } + } + { + const s = file.useLazyLock; + const ptr = this._module._sqlite3_malloc64(s.length + 1); + this._module.stringToUTF8(s, ptr, s.length + 1); + pArg.setUint32(0, ptr, true); + } + return VFS.SQLITE_OK; + } + break; + + // Support SQLite batch atomic write transactions. + case VFS.SQLITE_FCNTL_BEGIN_ATOMIC_WRITE: + case VFS.SQLITE_FCNTL_COMMIT_ATOMIC_WRITE: + if (file.flags & VFS.SQLITE_OPEN_MAIN_DB) { + return VFS.SQLITE_OK; + } + break; + case VFS.SQLITE_FCNTL_ROLLBACK_ATOMIC_WRITE: + if (file.flags & VFS.SQLITE_OPEN_MAIN_DB) { + file.writeAhead.rollback(); + return VFS.SQLITE_OK; + } + break; + + case VFS.SQLITE_FCNTL_SYNC: + if (file.flags & VFS.SQLITE_OPEN_MAIN_DB) { + file.writeAhead.commit(); + } + break; + + case VFS.SQLITE_FCNTL_OVERWRITE: + file.overwrite = true; + break; + } + } catch (e) { + console.error(e.stack); + this.lastError = e; + return VFS.SQLITE_IOERR; + } + return VFS.SQLITE_NOTFOUND; + } + + /** + * @param {number} pFile + * @returns {number} + */ + jDeviceCharacteristics(pFile) { + return VFS.SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN + | VFS.SQLITE_IOCAP_BATCH_ATOMIC; + } + + /** + * @param {Uint8Array} zBuf + * @returns {number} + */ + jGetLastError(zBuf) { + if (this.lastError) { + console.error(this.lastError); + const outputArray = zBuf.subarray(0, zBuf.byteLength - 1); + const { written } = new TextEncoder().encodeInto(this.lastError.message, outputArray); + zBuf[written] = 0; + } + return VFS.SQLITE_OK + } + + /** + * @param {string} zName + * @returns {FileSystemSyncAccessHandle} + */ + #openTemporaryFile(zName) { + if (this.unboundTempFiles.size === 0) { + throw new Error('no temporary files available'); + } + + // Bind an access handle from the temporary pool. + const accessHandle = this.unboundTempFiles.values().next().value; + this.unboundTempFiles.delete(accessHandle); + this.boundTempFiles.set(zName, accessHandle); + return accessHandle; + } + + /** + * @param {FileEntry} file + */ + #deleteTemporaryFile(file) { + file.accessHandle.truncate(0); + + // Temporary files are not actually deleted, just returned to the pool. + this.mapPathToFile.delete(file.zName); + this.unboundTempFiles.add(file.accessHandle); + this.boundTempFiles.delete(file.zName); + } + + /** + * @param {string} dbName + * @param {number} i + * @returns {string} + */ + #getWriteAheadNameFromDbName(dbName, i) { + // Our WAL file is not compatible with SQLite WAL, so use a distinct name. + return `${dbName}-wa${i}`; + } + + /** + * Asynchronous PRAGMA operation to checkpoint the write-ahead log. + * @param {FileEntry} file + * @param {'passive'|'full'|'restart'|'truncate'} mode + */ + async #pendingCheckpoint(file, mode) { + const onFinally = []; + try { + if (mode !== 'passive' && file.lockState === VFS.SQLITE_LOCK_NONE) { + await file.writeLock.acquire('exclusive'); + onFinally.push(() => file.writeLock.release()); + + file.writeAhead.isolateForWrite(); + onFinally.push(() => file.writeAhead.rejoin()); + } + + await file.writeAhead.checkpoint({ isPassive: mode === 'passive' }); + } catch (e) { + if (e.name === 'AbortError') { + e.code = VFS.SQLITE_BUSY; + } + throw e; + } finally { + while (onFinally.length) { + onFinally.pop()(); + } + } + } + + /** + * @param {FileEntry} file + */ + async #retryLockRead(file) { + const onError = []; + try { + await file.readLock.acquire('shared', file.timeout); + onError.push(() => file.readLock.release()); + + file.writeAhead.isolateForRead(); + file.retryResult = {}; + } catch (e) { + while (onError.length) { + onError.pop()(); + } + file.retryResult = e; + } + } + + /** + * @param {FileEntry} file + */ + async #retryLockWrite(file) { + const onError = []; + try { + // Exclusive locking mode requires both read and write locks. + // Otherwise, only the write lock is needed. + if (file.lockingMode === 'exclusive') { + await file.readLock.acquire('exclusive', file.timeout); + onError.push(() => file.readLock.release()); + } + + await file.writeLock.acquire('exclusive', file.timeout); + onError.push(() => file.writeLock.release()); + + file.writeAhead.isolateForWrite(); + file.retryResult = {}; + } catch (e) { + while (onError.length) { + onError.pop()(); + } + file.retryResult = e; + } + } + + /** + * Handle asynchronous jOpen() tasks. + * @param {string} zName + * @param {number} flags + * @param {number} fileId + * @param {DataView} pOutFlags + * @returns {Promise} + */ + async #retryOpen(zName, flags, fileId, pOutFlags) { + /** @type {(() => void)[]} */ const onError = []; + const file = this.mapPathToFile.get(zName); + try { + await navigator.locks.request(`${zName}#ckpt`, async lock => { + // Parse the path components. + const directoryNames = zName.split('/').filter(d => d); + const dbName = directoryNames.pop(); + + // Get the OPFS directory handle. + let dirHandle = await navigator.storage.getDirectory(); + const create = !!(flags & VFS.SQLITE_OPEN_CREATE); + for (const directoryName of directoryNames) { + dirHandle = await dirHandle.getDirectoryHandle(directoryName, { create }); + } + + const isNewDatabase = create && await (async function() { + try { + await dirHandle.getFileHandle(dbName); + return false; + } catch (e) { + if (e.name === 'NotFoundError') { + return true; + } + throw e; + } + })(); + + // Convenience function for opening access handles. + async function openFile( + /** @type {string} */ filename, + /** @type {FileSystemGetFileOptions} */ options) { + const fileHandle = await dirHandle.getFileHandle(filename, options); + // @ts-ignore + const accessHandle = await fileHandle.createSyncAccessHandle({ + mode: 'readwrite-unsafe' + }); + onError.push(() => { + accessHandle.close(); + if (isNewDatabase) { + dirHandle.removeEntry(filename); + } + }); + return accessHandle; + } + + // Open the main database OPFS file. + const accessHandle = await openFile(dbName, { create }); + + // Open WAL files. + const waHandles = await Promise.all([0, 1].map(async i => { + const waName = this.#getWriteAheadNameFromDbName(dbName, i); + const waHandle = await openFile(waName, { create: true }); + if (isNewDatabase) { + waHandle.truncate(0); + } + return waHandle; + })); + + // Create the write-ahead manager. + const writeAhead = new WriteAhead(zName, accessHandle, waHandles); + await writeAhead.ready(); + + file.retryResult = { accessHandle, waHandles, writeAhead }; + }); + } catch (e) { + while (onError.length) { + onError.pop()(); + } + file.retryResult = e; + } + } +} diff --git a/src/examples/README.md b/src/examples/README.md index 7cc5c3b7..e8711445 100644 --- a/src/examples/README.md +++ b/src/examples/README.md @@ -57,33 +57,25 @@ To keep all the methods synchronous, when asynchronous operations are necessary Transactions that access more than one main (non-temporary) database are not supported. -### OPFSPermutedVFS -This is a hybrid OPFS/IndexedDB VFS that allows high concurrency - simultaneous access by multiple readers and a single writer. It requires the proposed "readwrite-unsafe" locking mode for OPFS access handles (only on Chromium browsers as of June 2024). +### OPFSWriteAheadVFS +This is a synchronous OPFS VFS that that implements write-ahead logging. It requires the proposed "readwrite-unsafe" locking mode for OPFS access handles (only on Chromium browsers as of June 2024). -OPFSPermutedVFS is a lot like SQLite WAL except that it writes directly to the database file instead of a separate write-ahead log file, so there may be more than one version of a page in the file and the location of pages is generally not sequential. All the page data is stored in the file and IndexedDB is used to manage the page versions and locations. - -OPFSPermutedVFS can trade durability for performance by setting `PRAGMA synchronous=normal`. - -Changing the page size after the database is created is not supported. Not filesystem transparent except immediately after VACUUM. +Write-ahead logging is implemented entirely within the VFS and is always on. It does not use the WAL feature built in to SQLite. ## VFS Comparison -||MemoryVFS|MemoryAsyncVFS|IDBBatchAtomicVFS|OPFSAdaptiveVFS|AccessHandlePoolVFS|OPFSAnyContextVFS|OPFSCoopSyncVFS|OPFSPermutedVFS| +||MemoryVFS|MemoryAsyncVFS|IDBBatchAtomicVFS|OPFSAdaptiveVFS|AccessHandlePoolVFS|OPFSAnyContextVFS|OPFSCoopSyncVFS|OPFSWriteAheadVFS| |-|-|-|-|-|-|-|-|-| -|Storage|RAM|RAM|IndexedDB|OPFS|OPFS|OPFS|OPFS|OPFS/IndexedDB| -|Synchronous build|✅|:x:|:x:|:x:|✅|:x:|✅|:x:| +|Storage|RAM|RAM|IndexedDB|OPFS|OPFS|OPFS|OPFS|OPFS| +|Synchronous build|✅|:x:|:x:|:x:|✅|:x:|✅|✅| |Asyncify build|✅|✅|✅|✅|✅|✅|✅| |JSPI build|✅|✅|✅|✅|✅|✅|✅|✅| |Contexts|All|All|All|Worker|Worker|All|Worker|Worker| -|Multiple connections|:x:|:x:|✅|✅|:x:|✅|✅|✅[^1]| +|Multiple connections|:x:|:x:|✅|✅|:x:|✅|✅|✅| |Full durability|✅|✅|✅|✅|✅|✅|✅|✅| |Relaxed durability|:x:|:x:|✅|:x:|:x:|:x:|:x:|✅| -|Filesystem transparency|:x:|:x:|:x:|✅|:x:|✅|✅|:x:[^2]| -|Write-ahead logging|:x:|:x:|:x:|:x:|:x:|:x:|:x:|✅[^3]| -|Multi-database transactions|✅|✅|✅|✅|✅|✅|:x:|✅| -|Change page size|✅|✅|:x:|✅|✅|✅|✅|:x:| +|Filesystem transparency|:x:|:x:|:x:|✅|:x:|✅|✅|✅| +|Write-ahead logging|:x:|:x:|:x:|:x:|:x:|:x:|:x:|✅| +|Multi-database transactions|✅|✅|✅|✅|✅|✅|:x:|:x:| +|Change page size|✅|✅|:x:|✅|✅|✅|✅|✅| |No COOP/COEP requirements|✅|✅|✅|✅|✅|✅|✅|✅| - -[^1]: Requires FileSystemSyncAccessHandle readwrite-unsafe locking mode support. -[^2]: Only filesystem transparent immediately after VACUUM. -[^3]: [Sort of](https://github.com/rhashimoto/wa-sqlite/discussions/152). diff --git a/src/examples/WriteAhead.js b/src/examples/WriteAhead.js new file mode 100644 index 00000000..243ae4d3 --- /dev/null +++ b/src/examples/WriteAhead.js @@ -0,0 +1,1174 @@ +import { Lock } from './Lock.js'; + +const DEFAULT_JOURNAL_SIZE_LIMIT = 1000; +const DEFAULT_BACKSTOP_INTERVAL = 30_000; + +const MAGIC = 0x377f0684; +const FILE_HEADER_SIZE = 32; +const FRAME_HEADER_SIZE = 32; +const FRAME_TYPE_PAGE = 0; +const FRAME_TYPE_COMMIT = 1; +const FRAME_TYPE_END = 2; + +/** + * @typedef PageEntry + * @property {number} waOffset location in WAL file + * @property {number} waSalt1 WAL2 file identifier + * @property {number} pageSize + * @property {Uint8Array} [pageData] + */ + +/** + * @typedef Transaction + * @property {number} id + * @property {Map} pages address to page data mapping + * @property {number} dbFileSize + * @property {number} [newPageSize] + * @property {number} waSalt1 WAL2 file identifier + * @property {number} waOffsetEnd + */ + +/** + * @typedef WriteAheadOptions + * @property {number} [autoCheckpoint] + * @property {number} [backstopInterval] + * @property {number} [journalSizeLimit] + */ + +export class WriteAhead { + + log = null; + /** @type {WriteAheadOptions} */ options = { + autoCheckpoint: 1, + backstopInterval: DEFAULT_BACKSTOP_INTERVAL, + journalSizeLimit: DEFAULT_JOURNAL_SIZE_LIMIT, + }; + + #zName; + #dbHandle; + + /** @type {FileSystemSyncAccessHandle[]} */ #waHandles; + /** @type {FileSystemSyncAccessHandle} */ #activeHandle; + /** @type {{nextTxId: number, salt1: number, salt2: number}} */ #activeHeader; + /** @type {number} */ #activeOffset; + /** @type {number} */ #txId = 0; + /** @type {Transaction} */ #txInProgress = null; + + #dbFileSize = 0; + + /** @type {Promise} */ #ready; + /** @type {'read'|'write'} */ #isolationState = null; + + /** @type {Lock} */ #txIdLock = null; + + /** @type {Map} */ #waOverlay = new Map(); + /** @type {Map} */ #mapIdToTx = new Map(); + /** @type {Map} */ #mapIdToPendingTx = new Map(); + #approxPageCount = 0; + + /** @type {BroadcastChannel} */ #broadcastChannel; + + /** @type {number} */ #backstopTimer; + /** @type {number} */ #backstopTimestamp = 0; + + #abortController = new AbortController(); + + /** + * @param {string} zName + * @param {FileSystemSyncAccessHandle} dbHandle + * @param {FileSystemSyncAccessHandle[]} waHandles + * @param {WriteAheadOptions} options + */ + constructor(zName, dbHandle, waHandles, options = {}) { + this.#zName = zName; + this.#dbHandle = dbHandle; + this.#waHandles = waHandles; + this.options = Object.assign(this.options, options); + + // All the asynchronous initialization is done here. + this.#ready = (async () => { + // Set our advertised txId to zero until we know the proper value. + await this.#updateTxIdLock(); + + // Listen for transactions and checkpoints from other connections. + this.#broadcastChannel = new BroadcastChannel(`${zName}#wa`); + this.#broadcastChannel.onmessage = (event) => { + this.#handleMessage(event); + }; + + // Read headers from both WAL files and use the one with the + // lower nextTxId. If neither header is valid, create a new header. + const fileHeader = this.#waHandles + .map(handle => this.#readFileHeader(handle)) + .filter(h => h) + .sort((a, b) => a.nextTxId - b.nextTxId)[0] + ?? this.#writeFileHeader(Math.floor(Math.random() * 0xffffffff)); + + this.#activeHeader = fileHeader; + this.#activeHandle = this.#waHandles[fileHeader.salt1 & 1]; + this.#activeOffset = FILE_HEADER_SIZE; + this.#txId = fileHeader.nextTxId - 1; + + // Load all the transactions from the WAL. + for (const tx of this.#readAllTx()) { + this.#activateTx(tx); + } + this.#updateTxIdLock(); // doesn't need await + + // Schedule backstop. The backstop is a guard against a crash in + // another context between persisting a transaction and broadcasting + // it. + this.#backstopTimestamp = performance.now(); + this.#backstop(); + })(); + } + + /** + * @returns {Promise} + */ + ready() { + return this.#ready; + } + + close() { + this.#abortController.abort(); + + // Stop asynchronous maintenance. + this.#broadcastChannel.onmessage = null; + clearTimeout(this.#backstopTimer); + + this.#txIdLock?.release(); + this.#broadcastChannel.close(); + } + + /** + * Freeze our view of the database. + * The view includes the transactions received so far but is not + * guaranteed to be completely up to date. Unfreeze the view with rejoin(). + */ + isolateForRead() { + if (this.#isolationState !== null) { + throw new Error('Already in isolated state'); + } + this.#isolationState = 'read'; + + // Disable backstop during isolation. + clearTimeout(this.#backstopTimer); + this.#backstopTimer = null; + } + + /** + * Freeze our view of the database for writing. + * The view includes all transactions. Unfreeze the view with rejoin(). + */ + isolateForWrite() { + if (this.#isolationState !== null) { + throw new Error('Already in isolated state'); + } + this.#isolationState = 'write'; + + // Disable backstop during isolation. + clearTimeout(this.#backstopTimer); + this.#backstopTimer = null; + + // A writer needs all previous transactions assimilated. + this.#advanceTxId({ readToCurrent: true }); + } + + rejoin() { + if (this.#isolationState === 'read') { + // Catch up on new transactions that arrived while isolated. + this.#advanceTxId({ autoCheckpoint: true }); + } + this.#isolationState = null; + + // Resume backstop after isolation. + this.#backstop(); + } + + /** + * @param {number} offset + * @return {Uint8Array?} + */ + read(offset) { + // First look for the page in any write transaction in progress. + // If the page is not found in the transaction overlay, look in the + // write-ahead overlay. + const pageEntry = this.#txInProgress?.pages.get(offset) ?? this.#waOverlay.get(offset); + if (pageEntry) { + if (pageEntry.pageData) { + // Page data is cached. + this.log?.(`%cread page at ${offset} from WAL ${pageEntry.waSalt1 & 1}:${pageEntry.waOffset} (cached)`, 'background-color: gold;'); + return pageEntry.pageData; + } + + // Read the page from the WAL file. + this.log?.(`%cread page at ${offset} from WAL ${pageEntry.waSalt1 & 1}:${pageEntry.waOffset}`, 'background-color: gold;'); + return this.#fetchPage(pageEntry); + } + return null; + } + + /** + * @param {number} offset + * @param {Uint8Array} data + * @param {{dstPageSize: number?}} options + */ + write(offset, data, options) { + if (this.#isolationState !== 'write') { + throw new Error('Not in write isolated state'); + } + + if (!this.#txInProgress) { + // There is no active transaction so we need to create one. But + // first check whether to move to the other WAL file. + const nPageThreshold = this.options.journalSizeLimit > 0 ? + this.options.journalSizeLimit : + DEFAULT_JOURNAL_SIZE_LIMIT; + if (this.#approxPageCount >= nPageThreshold && this.#isInactiveFileEmpty()) { + this.log?.(`%cchange WAL file at ${this.#approxPageCount} pages`, 'background-color: lightskyblue;'); + this.#swapActiveFile(); + } + + this.#beginTx(); + if (options.dstPageSize !== data.byteLength) { + // This is a VACUUM to a new page size. The incoming writes are at + // the old page size, but we want to write to the WAL with the new + // size. + this.#txInProgress.newPageSize = options.dstPageSize; + } + } + + if (this.#txInProgress.newPageSize) { + // The incoming data is not a single page because the page size + // is changing. The two cases are when the new page size is + // smaller or larger than the old page size. + const frameSize = FRAME_HEADER_SIZE + this.#txInProgress.newPageSize; + if (data.byteLength > this.#txInProgress.newPageSize) { + // New page size is smaller. Write multiple pages of the new + // page size. + for (let i = 0; i < data.byteLength; i += this.#txInProgress.newPageSize) { + const pageData = data.slice(i, i + this.#txInProgress.newPageSize); + const waOffset = this.#writePage(offset + i, pageData); + this.log?.(`%cwrite page at ${offset + i} to WAL ${this.#activeHeader.salt1 & 1}:${waOffset}`, 'background-color: lightskyblue;'); + } + } else { + // New page size is larger. Save the page data to the WAL file + // so it can be read back and rewritten as frames with the new + // page size. + const pageOffset = offset % this.#txInProgress.newPageSize; + const waOffset = this.#activeOffset + + (offset - pageOffset) / this.#txInProgress.newPageSize * frameSize + + FRAME_HEADER_SIZE + + pageOffset; + this.#activeHandle.write(data.subarray(), { at: waOffset }); + this.log?.(`%cwrite page at ${offset} to WAL ${this.#activeHeader.salt1 & 1}:${waOffset}`, 'background-color: lightskyblue;'); + } + } else { + // This is the normal case without a page size change. + const waOffset = this.#writePage(offset, data.slice()); + this.log?.(`%cwrite page at ${offset} to WAL ${this.#activeHeader.salt1 & 1}:${waOffset}`, 'background-color: lightskyblue;'); + } + } + + /** + * @param {number} newSize + */ + truncate(newSize) { + // Ignore truncation that happens outside of a transaction. That + // only happens (e.g. post-VACUUM) to ensure the file size matches + // the database header. + if (this.#txInProgress) { + // Remove any pages past the truncation point. + for (const offset of this.#txInProgress.pages.keys()) { + if (offset >= newSize) { + this.#txInProgress.pages.delete(offset); + } + } + } + } + + getFileSize() { + return this.#txInProgress?.dbFileSize ?? this.#dbFileSize; + } + + commit() { + const tx = this.#txInProgress; + if (tx.newPageSize && tx.pages.size === 0) { + // This transaction is a VACUUM with a page size increase. All + // the database pages have been written to the WAL file at their + // new size with blank frame headers. Read the page data back + // from the WAL file and rewrite as frames. + let pageCount = 1; // to be replaced on the first iteration + for (let i = 0; i < pageCount; i++) { + // Read the page data. + const pageData = new Uint8Array(tx.newPageSize); + const waOffset = this.#activeOffset + + i * (FRAME_HEADER_SIZE + tx.newPageSize) + + FRAME_HEADER_SIZE; + this.#activeHandle.read(pageData, { at: waOffset }); + + if (i === 0) { + // Get the actual page count from the file header. + const headerView = new DataView(pageData.buffer); + pageCount = headerView.getUint32(28); + } + + // Write back as a frame. + this.#writePage(i * tx.newPageSize, pageData); + } + } + + const page1 = this.#txInProgress.pages.get(0)?.pageData; + if (page1) { + const page1View = new DataView(page1.buffer, page1.byteOffset, page1.byteLength); + const pageCount = page1View.getUint32(28); + this.#txInProgress.dbFileSize = pageCount * page1.byteLength; + } else { + // The transaction doesn't include page 1, so this must be a + // non-batch-atomic rollback. + this.rollback(); + return; + } + + // Persist the final pending transaction page with the database size. + this.#commitTx(); + + // Incorporate the transaction locally. + this.#activateTx(tx); + this.#updateTxIdLock(); + + // Send the transaction to other connections. + const payload = { type: 'tx', tx }; + this.#broadcastChannel.postMessage(payload); + + this.#autoCheckpoint(); + this.#backstopTimestamp = performance.now(); + } + + rollback() { + // Discard transaction pages. + this.#abortTx(); + } + + /** + * @param {{durability: 'strict'|'relaxed'}} options + */ + sync(options) { + if (options.durability === 'strict') { + this.#flushActiveFile(); + } + } + + /** + * Move pages from write-ahead to main database file. + * + * @param {{isPassive: boolean}} options + */ + async checkpoint(options = { isPassive: true }) { + // Passive checkpointing is abandoned if another connection is + // already checkpointing. + const lockOptions = { + ifAvailable: options.isPassive, + }; + + await navigator.locks.request(`${this.#zName}#ckpt`, lockOptions, async lock => { + if (!lock) return; + if (this.#abortController.signal.aborted) return; + + let ckptId = this.#getActiveFileStartingTxId() - 1; + if (options.isPassive) { + if (!this.#mapIdToTx.has(ckptId)) { + // There are no transactions to checkpoint. + return; + } + + // Scan the txId locks to find the oldest txId. + const busyTxId = (await this.#getTxIdLocks()) + .reduce((min, value) => Math.min(min, value.maxTxId), this.#txId); + + if (busyTxId < ckptId) { + // The inactive WAL file is still being used. + return; + } + } else { + // Wait for all connections to reach the current txId. + await this.#waitForTxIdLocks(value => value.maxTxId >= this.#txId); + ckptId = this.#txId; + } + this.log?.(`%ccheckpoint through txId ${ckptId}`, 'background-color: lightgreen;'); + + // Sync the WAL file. This ensures that if there is a crash after + // part of the WAL has been copied, the uncopied part will still be + // available afterwards. + this.#flushInactiveFile(); + if (!options.isPassive) { + this.#flushActiveFile(); + } + + // Starting at ckptId and going backwards (higher to lower txId), + // write transaction pages to the main database file. Do not overwrite + // a page written by a more recent transaction. + const writtenOffsets = new Set(); + let dbFileSize = this.#dbHandle.getSize(); + for (let tx = this.#mapIdToTx.get(ckptId); tx; tx = this.#mapIdToTx.get(tx.id - 1)) { + if (tx.id === ckptId && dbFileSize !== tx.dbFileSize) { + // Set the file size from the latest transaction. + dbFileSize = tx.dbFileSize; + this.#dbHandle.truncate(dbFileSize); + } + + for (const [offset, pageEntry] of tx.pages) { + if (offset < dbFileSize && !writtenOffsets.has(offset)) { + // Fetch the page data from the WAL file if not cached. + const pageData = pageEntry.pageData ?? this.#fetchPage(pageEntry); + + // Write the page to the database file. + const nWritten = this.#dbHandle.write(pageData, { at: offset }); + if (nWritten !== pageData.byteLength) { + throw new Error('Checkpoint write failed'); + } + writtenOffsets.add(offset); + this.log?.(`%ccheckpoint wrote txId ${tx.id} page at ${offset} to database`, 'background-color: lightgreen;'); + } + } + + if (tx.newPageSize) { + // This transaction used a new page size to overwrite the entire + // database file so no older pages need to be written. This is + // not just an optimization; it prevents incorrectly writing + // older smaller pages at addresses that aren't multiples of + // the new page size. + break; + } + } + + // Ensure that database writes are durable. + this.log?.(`%ccheckpoint flush database file`, 'background-color: lightgreen;'); + this.#dbHandle.flush(); + + // Notify other connections and ourselves of the checkpoint. + this.#broadcastChannel.postMessage({ + type: 'ckpt', + ckptId, + }); + this.#handleCheckpoint(ckptId); + + // Wait for all connections to update their overlay. + this.log?.(`%ccheckpoint waiting for connection updates`, 'background-color: lightgreen;'); + await this.#waitForTxIdLocks(value => value.minTxId > ckptId); + + // Truncate the inactive WAL file. This prevents new connections from + // unnecessarily reading checkpointed data, and allows writers to make + // it active when their conditions are met. + this.#truncateInactiveFile(); + this.log?.(`%ccheckpoint complete`, 'background-color: lightgreen;'); + }); + } + + /** + * Return the approximate number of write-ahead pages. This is the + * sum of the number of unique page indices for each transaction, + * so it can be fewer than the number of pages if any transaction + * contains multiple frames for the same page. + * @returns {number} + */ + getWriteAheadSize() { + return this.#approxPageCount; + } + + isTransactionPending() { + return !!this.#txInProgress; + } + + setBackstopInterval(intervalMillis) { + this.options.backstopInterval = intervalMillis; + if (intervalMillis > 0 && this.#isolationState) { + this.#backstop(); + } + } + + /** + * Incorporate a transaction into our view of the database. + * @param {Transaction} tx + */ + #activateTx(tx) { + // Transfer to the active collection of transactions. + this.#mapIdToTx.set(tx.id, tx); + this.#approxPageCount += tx.pages.size; + + // Add transaction pages to the write-ahead overlay. + for (const [offset, pageEntry] of tx.pages) { + this.#waOverlay.set(offset, pageEntry); + } + this.#dbFileSize = tx.dbFileSize; + } + + /** + * Advance the local view of the database. By default, advance to the + * last broadcast transaction. Optionally, also advance through any + * additional transactions in the WAL file to be fully current. + * + * @param {{readToCurrent?: boolean, autoCheckpoint?: boolean}} options + */ + #advanceTxId(options = {}) { + let didAdvance = false; + while (this.#mapIdToPendingTx.size) { + // Fetch the next transaction in sequence. Usually this will come + // from pendingTx, but if it is missing then read it from the file. + const nextTxId = this.#txId + 1; + let tx; + if (this.#mapIdToPendingTx.has(nextTxId)) { + // This transaction arrived via message. + tx = this.#mapIdToPendingTx.get(nextTxId); + this.#mapIdToPendingTx.delete(tx.id); + + // Move the WAL file offset past this transaction. + this.#skipTx(tx); + } else { + // Read the transaction from the WAL file. + tx = this.#readTx(); + } + + this.#activateTx(tx); + didAdvance = true; + } + + if (options.readToCurrent) { + // Read all additional transactions from the WAL file. + for (const tx of this.#readAllTx()) { + this.#activateTx(tx); + didAdvance = true; + } + } + + if (didAdvance) { + // Publish our new view txId. + this.#updateTxIdLock(); + + if (options.autoCheckpoint) { + this.#autoCheckpoint(); + } + } + + if (options.readToCurrent || didAdvance) { + // The WAL has been accessed, so reset the backstop. + // Calling #backstop() here is not necessary because if we are + // in an isolated state then rejoin() will schedule the next call, + // and if we are not in an isolated state then the next call + // should already be scheduled. + this.#backstopTimestamp = performance.now(); + } + } + + #autoCheckpoint() { + if (this.options.autoCheckpoint > 0) { + this.checkpoint({ isPassive: true }); + } + } + + /** + * After a checkpoint, remove checkpointed pages from write-ahead. + * The checkpoint may be been done locally or by another connection. + * @param {number} ckptId + */ + #handleCheckpoint(ckptId) { + this.log?.(`%capply checkpoint through txId ${ckptId}`, 'background-color: lightgreen;'); + + // Loop backwards from ckptId. + for (let tx = this.#mapIdToTx.get(ckptId); tx; tx = this.#mapIdToTx.get(tx.id - 1)) { + // Remove pages from write-ahead overlay. + for (const [offset, pageEntry] of tx.pages.entries()) { + // Be sure not to remove a newer version of the page. + const overlayEntry = this.#waOverlay.get(offset); + if (overlayEntry === pageEntry) { + this.log?.(`%cremove txId ${tx.id} page at offset ${offset}`, 'background-color: lightgreen;'); + this.#waOverlay.delete(offset); + } + } + + // Remove transaction. + this.#mapIdToTx.delete(tx.id); + this.#approxPageCount -= tx.pages.size; + } + this.#updateTxIdLock(); + } + + /** + * @param {MessageEvent} event + */ + #handleMessage(event) { + if (event.data.type === 'tx') { + // New transaction from another connection. Don't use it if we + // already have it. + /** @type {Transaction} */ const tx = event.data.tx; + if (tx.id > this.#txId) { + this.#mapIdToPendingTx.set(tx.id, tx); + if (this.#isolationState === null) { + // Not in an isolated state, so advance our view of the database. + this.#advanceTxId({ autoCheckpoint: true }); + } + } + } else if (event.data.type === 'ckpt') { + // Checkpoint notification from another connection. + /** @type {number} */ const ckptId = event.data.ckptId; + this.#handleCheckpoint(ckptId); + } + } + + /** + * Periodic check for recovering from lost transaction broadcasts. + */ + #backstop() { + if (this.options.backstopInterval <= 0) { + // Backstop is disabled. + return; + } + + if (this.#isolationState) { + throw new Error('Backstop was invoked in an isolated state'); + } + + const now = performance.now(); + if (now >= this.#backstopTimestamp + this.options.backstopInterval) { + // The time since the last WAL access (read, write, or skip) has + // exceeded the backstop interval. Check for transactions in the + // write-ahead log that have not arrived via message. + const oldTxId = this.#txId; + this.#advanceTxId({ readToCurrent: true }); + if (this.#txId > oldTxId) { + this.log?.(`%cbackstop txId ${oldTxId} -> ${this.#txId}`, 'background-color: lightyellow;'); + } + this.#backstopTimestamp = performance.now(); + } + + // Schedule next backstop. + const delay = this.#backstopTimestamp + this.options.backstopInterval - performance.now(); + clearTimeout(this.#backstopTimer); + this.#backstopTimer = self.setTimeout(() => { + this.#backstop(); + }, delay); + } + + /** + * Update the lock that publishes our current txId. + */ + async #updateTxIdLock() { + // Our view of the database, i.e. the txId, is encoded into the name + // of a lock so other connections can see it. When our txId changes, + // we acquire a new lock and release the old one. We must not release + // the old lock until the new one is in place. + const oldLock = this.#txIdLock; + const newLockName = this.#encodeTxIdLockName(); + if (oldLock?.name !== newLockName) { + this.#txIdLock = new Lock(newLockName); + await this.#txIdLock.acquire('shared').then(() => { + // The new lock is acquired. + oldLock?.release(); + }); + + if (this.log) { + const { minTxId, maxTxId } = this.#decodeTxIdLockName(newLockName); + this.log?.(`%ctxId to ${minTxId}:${maxTxId}`, 'background-color: pink;'); + } + } + } + + /** + * Get all txId locks for this database. + * @returns {Promise<{name: string, minTxId: number, maxTxId: number, encoded: string}[]>} + */ + async #getTxIdLocks() { + const { held } = await navigator.locks.query(); + return held + .map(lock => this.#decodeTxIdLockName(lock.name)) + .filter(value => value !== null); + } + + /** + * @returns {string} + */ + #encodeTxIdLockName() { + // The maxTxId is our current view of the database. The minTxId is + // the lowest txId we get pages from the WAL for, which is the lowest + // key in mapIdToTx. If mapIdToTx is empty then we aren't reading + // from the WAL at all - in this case we arbitrarily set minTxId to + // invalid value maxTxId + 1. + // + // Use radix 36 to encode integer values to reduce the lock name length. + const maxTxId = this.#txId; + const minTxId = this.#mapIdToTx.keys().next().value ?? (maxTxId + 1); + return `${this.#zName}-txId<${minTxId.toString(36)}:${maxTxId.toString(36)}>`; + } + + /** + * @param {string} lockName + * @returns {{name: string, minTxId: number, maxTxId: number, encoded: string}?} + */ + #decodeTxIdLockName(lockName) { + const match = lockName.match(/^(.*)-txId<([0-9a-z]+):([0-9a-z]+)>$/); + if (match?.[1] === this.#zName) { + // This txId lock is for this database. + return { + name: match[1], + minTxId: parseInt(match[2], 36), + maxTxId: parseInt(match[3], 36), + encoded: lockName + }; + } + return null; + } + + /** + * Wait for all txId locks that fail the provided predicate. + * @param {(lock: {name: string, minTxId: number, maxTxId: number}) => boolean} predicate + */ + async #waitForTxIdLocks(predicate) { + /** @type {string[]} */ let failingLockNames = []; + do { + // Wait for all connections that fail the predicate. + if (failingLockNames.length > 0) { + await Promise.all( + failingLockNames.map(name => navigator.locks.request(name, async () => {})) + ); + } + + // Refresh the list of failing locks. + failingLockNames = (await this.#getTxIdLocks()) + .filter(value => !predicate(value)) + .map(value => value.encoded); + } while (failingLockNames.length > 0); + } + + /** + * @param {PageEntry} pageEntry + * @returns {Uint8Array} + */ + #fetchPage(pageEntry) { + // Get the appropriate access handle based on salt parity. + const accessHandle = this.#waHandles[pageEntry.waSalt1 & 1]; + + // Read the page. + const pageData = new Uint8Array(pageEntry.pageSize); + const nBytesRead = accessHandle.read(pageData, { at: pageEntry.waOffset }); + + if (nBytesRead !== pageEntry.pageSize) { + throw new Error(`Short WAL read: expected ${pageEntry.pageSize} bytes, got ${nBytesRead}`); + } + return pageData; + } + + *#readAllTx() { + while (true) { + const tx = this.#readTx(); + if (!tx) break; + yield tx; + } + } + + /** + * @returns {Transaction?} + */ + #readTx() { + // Read the next complete transaction or return null. + /** @type {Transaction} */ const tx = { + id: 0, // placeholder + pages: new Map(), + dbFileSize: 0, // placeholder + waSalt1: 0, // placeholder + waOffsetEnd: 0, // placeholder + }; + + // The property this.#activeOffset is only advanced on a successful + // transition to the other WAL file or on reading a complete + // transaction. Use a local variable to track our progress. + let offset = this.#activeOffset; + while (true) { + const frame = this.#readFrame(offset); + if (!frame) return null; + + if (frame.frameType === FRAME_TYPE_PAGE) { + tx.pages.set( + frame.pageOffset, + { + pageSize: frame.pageData.byteLength, + waOffset: offset + FRAME_HEADER_SIZE, + waSalt1: this.#activeHeader.salt1, + } + ); + } else if (frame.frameType === FRAME_TYPE_COMMIT) { + // The transaction is complete. Update the instance state. + this.#txId += 1; + this.#activeOffset = offset + frame.byteLength; + + // Finalize the transaction fields and return it. + tx.id = this.#txId; + tx.dbFileSize = frame.dbFileSize; + tx.waSalt1 = this.#activeHeader.salt1; + tx.newPageSize = (frame.flags & 1) ? tx.pages.get(0).pageSize : null; + tx.waOffsetEnd = this.#activeOffset; + return tx; + } else if (frame.frameType === FRAME_TYPE_END) { + // No more transactions on the current WAL file. Switch to the + // other file. + this.#followFileChange(frame.fileHeader); + offset = this.#activeOffset; + continue; + } + + offset += frame.byteLength; + } + } + + /** + * This method is called when transaction(s) have been received by other + * means than readTx(), e.g. via BroadcastChannel. + * + * @param {Transaction} tx + */ + #skipTx(tx) { + if (tx.waSalt1 !== this.#activeHeader.salt1) { + // This transaction is on the other WAL file. + if (!this.#followFileChange(null)) { + throw new Error('invalid WAL file'); + } + } + + this.#txId = tx.id; + this.#activeOffset = tx.waOffsetEnd; + } + + /** + * @param {{overwrite?: boolean}} options + * @returns {Transaction} + */ + #beginTx(options = {}) { + this.#txInProgress = { + id: this.#txId + 1, + pages: new Map(), + dbFileSize: this.#dbFileSize, + waSalt1: this.#activeHeader.salt1, + waOffsetEnd: this.#activeOffset, + }; + return this.#txInProgress; + } + + /** + * Write a page frame to the WAL file. + * + * @param {number} pageOffset + * @param {Uint8Array} pageData + */ + #writePage(pageOffset, pageData) { + const headerView = new DataView(new ArrayBuffer(FRAME_HEADER_SIZE)); + headerView.setUint8(0, FRAME_TYPE_PAGE); + headerView.setUint16(2, pageData.byteLength === 65536 ? 1 : pageData.byteLength); + headerView.setBigUint64(8, BigInt(pageOffset)); + headerView.setUint32(16, this.#activeHeader.salt1); + headerView.setUint32(20, this.#activeHeader.salt2); + + const checksum = new Checksum(); + checksum.update(new Uint8Array(headerView.buffer, 0, FRAME_HEADER_SIZE - 8)); + checksum.update(pageData); + headerView.setUint32(24, checksum.s0); + headerView.setUint32(28, checksum.s1); + + const bytesWritten = + this.#activeHandle.write(headerView, { at: this.#txInProgress.waOffsetEnd }) + + this.#activeHandle.write(pageData, { + at: this.#txInProgress.waOffsetEnd + FRAME_HEADER_SIZE, + }); + if (bytesWritten !== headerView.byteLength + pageData.byteLength) { + throw new Error('write failed'); + } + + // Cache page 1 as a performance optimization and to exercise the + // cache code path. + const pageEntry = { + pageSize: pageData.byteLength, + waOffset: this.#txInProgress.waOffsetEnd + FRAME_HEADER_SIZE, + waSalt1: this.#activeHeader.salt1, + pageData: pageOffset === 0 ? pageData : undefined + }; + this.#txInProgress.pages.set(pageOffset, pageEntry); + this.#txInProgress.waOffsetEnd += bytesWritten; + + return pageEntry.waOffset; + } + + /** + * @returns {Transaction} + */ + #commitTx() { + // Write a commit frame - which is a special frame header with no + // body - to the WAL file. + const headerView = new DataView(new ArrayBuffer(FRAME_HEADER_SIZE)); + headerView.setUint8(0, FRAME_TYPE_COMMIT); + headerView.setUint8(1, this.#txInProgress.newPageSize ? 1 : 0); + headerView.setBigUint64(8, BigInt(this.#txInProgress.dbFileSize)); + headerView.setUint32(16, this.#activeHeader.salt1); + headerView.setUint32(20, this.#activeHeader.salt2); + + const checksum = new Checksum(); + checksum.update(new Uint8Array(headerView.buffer, 0, FRAME_HEADER_SIZE - 8)); + headerView.setUint32(24, checksum.s0); + headerView.setUint32(28, checksum.s1); + + const bytesWritten = this.#activeHandle.write(headerView, { + at: this.#txInProgress.waOffsetEnd, + }); + if (bytesWritten !== headerView.byteLength) { + throw new Error('write failed'); + } + this.#txInProgress.waOffsetEnd += bytesWritten; + + const tx = this.#txInProgress; + this.#txInProgress = null; + this.#activeOffset = tx.waOffsetEnd; + this.#txId = tx.id; + return tx; + } + + #abortTx() { + this.#txInProgress = null; + this.#activeHandle.truncate(this.#activeOffset); + } + + /** + * Switch the active WAL file prior to writing the next transaction. + */ + #swapActiveFile() { + // Write an end frame to terminate the currently active WAL file. + const frameView = new DataView(new ArrayBuffer(FRAME_HEADER_SIZE)); + frameView.setUint8(0, FRAME_TYPE_END); + frameView.setUint32(16, this.#activeHeader.salt1); + frameView.setUint32(20, this.#activeHeader.salt2); + + const checksum = new Checksum(); + checksum.update(new Uint8Array(frameView.buffer, 0, FRAME_HEADER_SIZE - 8)); + frameView.setUint32(24, checksum.s0); + frameView.setUint32(28, checksum.s1); + + const bytesWritten = this.#activeHandle.write(frameView, { at: this.#activeOffset }); + if (bytesWritten !== frameView.byteLength) { + throw new Error('write failed'); + } + + // Initialize the other WAL file and make it active. + this.#activeHeader = this.#writeFileHeader(); + this.#activeHandle = this.#getInactiveHandle(); + this.#activeOffset = FILE_HEADER_SIZE; + } + + #getActiveFileStartingTxId() { + return this.#activeHeader.nextTxId; + } + + #flushActiveFile() { + this.#activeHandle.flush(); + } + + #flushInactiveFile() { + const accessHandle = this.#getInactiveHandle(); + accessHandle.flush(); + } + + #isInactiveFileEmpty() { + if (this.#mapIdToTx.has(this.#activeHeader.nextTxId - 1)) { + // At least one transaction on the inactive file has not been + // checkpointed. + return false; + } + + const inactiveHandle = this.#getInactiveHandle(); + if (inactiveHandle.getSize() < FILE_HEADER_SIZE) { + // The inactive file is smaller than the minimum size for a valid + // WAL file. + return true; + } + + // This test is sufficient by itself but the previous tests are + // less expensive. + return this.#readFileHeader(inactiveHandle) === null; + } + + #truncateInactiveFile() { + const accessHandle = this.#getInactiveHandle(); + accessHandle.truncate(0); + } + + /** + * This method is called after reading an end frame to switch to the + * other WAL file. + * @param {{nextTxId: number, salt1: number, salt2: number}?} fileHeader + */ + #followFileChange(fileHeader) { + // As an optimization, the file header can be passed as an argument + // if it has already been read and validated. Otherwise that is + // done here. + const accessHandle = this.#getInactiveHandle(); + if (!fileHeader) { + fileHeader = this.#readFileHeader(accessHandle); + if (fileHeader?.salt1 !== ((this.#activeHeader.salt1 + 1) >>> 0)) return null; + } + + this.#activeHandle = accessHandle; + this.#activeHeader = fileHeader; + this.#activeOffset = FILE_HEADER_SIZE; + return fileHeader; + } + + #getInactiveHandle() { + return this.#activeHandle !== this.#waHandles[0] ? + this.#waHandles[0] : + this.#waHandles[1]; + } + + /** + * @param {FileSystemSyncAccessHandle} accessHandle + */ + #readFileHeader(accessHandle) { + const headerView = new DataView(new ArrayBuffer(FILE_HEADER_SIZE)); + if (accessHandle.read(headerView, { at: 0 }) !== headerView.byteLength) { + return null; + } + + if (headerView.getUint32(0) !== MAGIC) return null; + + const checksum = new Checksum(); + checksum.update(new Uint8Array(headerView.buffer, 0, FILE_HEADER_SIZE - 8)); + if (!checksum.matches(headerView.getUint32(24), headerView.getUint32(28))) { + return null; + } + + return { + nextTxId: Number(headerView.getBigUint64(8)), + salt1: headerView.getUint32(16), + salt2: headerView.getUint32(20), + }; + } + + /** + * @param {number} offset + */ + #readFrame(offset) { + const headerView = new DataView(new ArrayBuffer(FRAME_HEADER_SIZE)); + if (this.#activeHandle.read(headerView, { at: offset }) !== headerView.byteLength) { + // EOF, not an error. + return null; + } + + // Verify the frame header salt values match the file header. + const frameSalt1 = headerView.getUint32(16); + const frameSalt2 = headerView.getUint32(20); + if (frameSalt1 !== this.#activeHeader.salt1 || frameSalt2 !== this.#activeHeader.salt2) { + // Not necessarily an error, could be from a restart without truncation. + return null; + } + + const payloadSize = (size => size === 1 ? 65536 : size)(headerView.getUint16(2)); + /** @type {Uint8Array} */ let payloadData; + if (payloadSize) { + payloadData = new Uint8Array(payloadSize); + const payloadBytesRead = this.#activeHandle.read( + payloadData, + { at: offset + FRAME_HEADER_SIZE } + ); + if (payloadBytesRead !== payloadSize) return null; + } + + const checksum = new Checksum(); + checksum.update(new Uint8Array(headerView.buffer, 0, FRAME_HEADER_SIZE - 8)); + if (payloadData) { + checksum.update(payloadData); + } + if (!checksum.matches(headerView.getUint32(24), headerView.getUint32(28))) { + // Not necessarily an error, could be from a restart without truncation. + return null; + } + + const frameType = headerView.getUint8(0); + if (frameType === FRAME_TYPE_PAGE) { + return { + frameType, + byteLength: FRAME_HEADER_SIZE + payloadSize, + pageOffset: Number(headerView.getBigUint64(8)), + pageData: payloadData, + }; + } else if (frameType === FRAME_TYPE_COMMIT) { + return { + frameType, + byteLength: FRAME_HEADER_SIZE, + flags: headerView.getUint8(1), + dbFileSize: Number(headerView.getBigUint64(8)), + }; + } else if (frameType === FRAME_TYPE_END) { + // Handling the end frame and new file header must be atomic, so + // we validate the new file header before returning the frame. + // If the file header is corrupt, the end frame effectively does + // not exist. + // + // A corrupt file header should be repaired by the next writer + // that attempts to swap WAL files. + const fileHeader = this.#readFileHeader(this.#getInactiveHandle()); + if (fileHeader?.salt1 !== ((this.#activeHeader.salt1 + 1) >>> 0)) return null; + + return { + frameType, + byteLength: FRAME_HEADER_SIZE, + fileHeader, + }; + } + throw new Error(`Invalid frame type: ${frameType}`); + } + + #writeFileHeader(prevSalt1 = this.#activeHeader.salt1) { + // Derive new values from the previous values. + const nextTxId = this.#txId + 1; + const salt1 = (prevSalt1 + 1) >>> 0; + const salt2 = Math.floor(Math.random() * 0xffffffff) >>> 0; + const headerView = new DataView(new ArrayBuffer(FILE_HEADER_SIZE)); + headerView.setUint32(0, MAGIC); + headerView.setBigUint64(8, BigInt(nextTxId)); + headerView.setUint32(16, salt1); + headerView.setUint32(20, salt2); + + const checksum = new Checksum(); + checksum.update(new Uint8Array(headerView.buffer, 0, FILE_HEADER_SIZE - 8)); + headerView.setUint32(24, checksum.s0); + headerView.setUint32(28, checksum.s1); + + // The even/odd parity of salt1 determines which file is written to. + const accessHandle = this.#waHandles[salt1 & 1]; + const bytesWritten = accessHandle.write(headerView, { at: 0 }); + if (bytesWritten !== headerView.byteLength) { + throw new Error('write failed'); + } + + return { nextTxId, salt1, salt2 }; + } +} + +// https://www.sqlite.org/fileformat.html#checksum_algorithm +class Checksum { + /** @type {number} */ s0 = 0; + /** @type {number} */ s1 = 0; + + /** + * @param {ArrayBuffer|ArrayBufferView} data + */ + update(data) { + if ((data.byteLength % 8) !== 0) throw new Error('Data must be a multiple of 8 bytes'); + const words = ArrayBuffer.isView(data) ? + new Uint32Array(data.buffer, data.byteOffset, data.byteLength / 4) : + new Uint32Array(data); + for (let i = 0; i < words.length; i += 2) { + this.s0 = (this.s0 + words[i] + this.s1) >>> 0; + this.s1 = (this.s1 + words[i + 1] + this.s0) >>> 0; + } + } + + matches(s0, s1) { + return this.s0 === s0 && this.s1 === s1; + } +} diff --git a/src/main.c b/src/main.c index 8a58192e..f479fc93 100644 --- a/src/main.c +++ b/src/main.c @@ -14,4 +14,4 @@ void* EMSCRIPTEN_KEEPALIVE getSqliteFree() { int main() { sqlite3_initialize(); return 0; -} +} \ No newline at end of file diff --git a/src/sqlite-api.js b/src/sqlite-api.js index 2b3c04f7..befcca21 100644 --- a/src/sqlite-api.js +++ b/src/sqlite-api.js @@ -28,6 +28,7 @@ export function Factory(Module) { /** @type {SQLiteAPI} */ const sqlite3 = {}; Module.retryOps = []; + Module.pendingOps = []; const sqliteFreeAddress = Module._getSqliteFree(); // Allocate some space for 32-bit returned values. @@ -869,18 +870,32 @@ export function Factory(Module) { // succeed. async function retry(f) { let rc; - do { + for (let retryCount = 0; retryCount < 2; ++retryCount) { // Wait for all pending retry operations to complete. This is // normally empty on the first loop iteration. if (Module.retryOps.length) { - await Promise.all(Module.retryOps); - Module.retryOps = []; + try { + await Promise.all(Module.retryOps); + } finally { + Module.retryOps = []; + } } rc = await f(); - - // Retry on failure with new pending retry operations. - } while (rc && Module.retryOps.length); + if (rc === SQLite.SQLITE_OK || Module.retryOps.length === 0) { + if (Module.pendingOps.length) { + try { + await Promise.all(Module.pendingOps); + } catch (e) { + console.error('Error in pendingOps:', e); + return e.code || SQLite.SQLITE_ERROR; + } finally { + Module.pendingOps = []; + } + } + return rc; + } + } return rc; } diff --git a/src/types/index.d.ts b/src/types/index.d.ts index 3eaa73a0..e16a9f47 100644 --- a/src/types/index.d.ts +++ b/src/types/index.d.ts @@ -9,7 +9,7 @@ /** * Javascript types that SQLite can use - * + * * C integer and floating-point types both map to/from Javascript `number`. * Blob data can be provided to SQLite as `Uint8Array` or `number[]` (with * each element converted to a byte); SQLite always returns blob data as @@ -19,33 +19,68 @@ type SQLiteCompatibleType = number|string|Uint8Array|Array|bigint|null; /** * SQLite Virtual File System object - * + * * Objects with this interface can be passed to {@link SQLiteAPI.vfs_register} * to define a new filesystem. - * - * There are examples of a synchronous - * [MemoryVFS.js](https://github.com/rhashimoto/wa-sqlite/blob/master/src/examples/MemoryVFS.js), - * and asynchronous - * [MemoryAsyncVFS.js](https://github.com/rhashimoto/wa-sqlite/blob/master/src/examples/MemoryAsyncVFS.js) - * and - * [IndexedDbVFS.js](https://github.com/rhashimoto/wa-sqlite/blob/master/src/examples/IndexedDbVFS.js). - * + * + * There are [synchronous](https://github.com/rhashimoto/wa-sqlite/blob/master/src/examples/MemoryVFS.js) + * and [asynchronous](https://github.com/rhashimoto/wa-sqlite/blob/master/src/examples/MemoryAsyncVFS.js) + * example VFS classes in the repository. + * * @see https://sqlite.org/vfs.html * @see https://sqlite.org/c3ref/io_methods.html */ declare interface SQLiteVFS { /** Maximum length of a file path in UTF-8 bytes (default 64) */ - mxPathName?: number; + mxPathname?: number; + + name: string; close(): void|Promise; isReady(): boolean|Promise; + hasAsyncMethod(methodName: string): boolean; + + /** @see https://sqlite.org/c3ref/vfs.html */ + xOpen( + pVfs: number, + zName: number, + pFile: number, + flags: number, + pOutFlags: number + ): number|Promise; + + /** @see https://sqlite.org/c3ref/vfs.html */ + xDelete(pVfs: number, zName: number, syncDir: number): number|Promise; + + /** @see https://sqlite.org/c3ref/vfs.html */ + xAccess( + pVfs: number, + zName: number, + flags: number, + pResOut: number + ): number|Promise; + + /** @see https://sqlite.org/c3ref/vfs.html */ + xFullPathname( + pVfs: number, + zName: number, + nOut: number, + zOut: number + ): number|Promise; + + /** @see https://sqlite.org/c3ref/vfs.html */ + xGetLastError( + pVfs: number, + nBuf: number, + zBuf: number + ): number|Promise; /** @see https://sqlite.org/c3ref/io_methods.html */ - xClose(fileId: number): number|Promise; + xClose(pFile: number): number|Promise; /** @see https://sqlite.org/c3ref/io_methods.html */ xRead( - fileId: number, + pFile: number, pData: number, iAmt: number, iOffsetLo: number, @@ -54,7 +89,7 @@ declare interface SQLiteVFS { /** @see https://sqlite.org/c3ref/io_methods.html */ xWrite( - fileId: number, + pFile: number, pData: number, iAmt: number, iOffsetLo: number, @@ -62,58 +97,41 @@ declare interface SQLiteVFS { ): number|Promise; /** @see https://sqlite.org/c3ref/io_methods.html */ - xTruncate(fileId: number, iSizeLo: number, iSizeHi): number|Promise; + xTruncate(pFile: number, sizeLo: number, sizeHi: number): number|Promise; /** @see https://sqlite.org/c3ref/io_methods.html */ - xSync(fileId: number, flags: number): number|Promise; + xSync(pFile: number, flags: number): number|Promise; /** @see https://sqlite.org/c3ref/io_methods.html */ xFileSize( - fileId: number, - pSize64: number + pFile: number, + pSize: number ): number|Promise; /** @see https://sqlite.org/c3ref/io_methods.html */ - xLock(fileId: number, flags: number): number|Promise; + xLock(pFile: number, lockType: number): number|Promise; /** @see https://sqlite.org/c3ref/io_methods.html */ - xUnlock(fileId: number, flags: number): number|Promise; + xUnlock(pFile: number, lockType: number): number|Promise; /** @see https://sqlite.org/c3ref/io_methods.html */ xCheckReservedLock( - fileId: number, + pFile: number, pResOut: number ): number|Promise; /** @see https://sqlite.org/c3ref/io_methods.html */ xFileControl( - fileId: number, - flags: number, - pOut: number - ): number|Promise; - - /** @see https://sqlite.org/c3ref/io_methods.html */ - xDeviceCharacteristics(fileId: number): number|Promise; - - /** @see https://sqlite.org/c3ref/vfs.html */ - xOpen( - pVfs: number, - zName: number, pFile: number, - flags: number, - pOutFlags: number + op: number, + pArg: number ): number|Promise; - /** @see https://sqlite.org/c3ref/vfs.html */ - xDelete(pVfs: number, zName: number, syncDir: number): number|Promise; + /** @see https://sqlite.org/c3ref/io_methods.html */ + xSectorSize(pFile: number): number|Promise; - /** @see https://sqlite.org/c3ref/vfs.html */ - xAccess( - pVfs: number, - zName: number, - flags: number, - pResOut: number - ): number|Promise; + /** @see https://sqlite.org/c3ref/io_methods.html */ + xDeviceCharacteristics(pFile: number): number|Promise; } /** @@ -130,25 +148,25 @@ declare interface SQLitePrepareOptions { /** * SQLITE_PREPARE_* flags - * @see https://www.sqlite.org/c3ref/c_prepare_normalize.html#sqlitepreparepersistent + * @see https://sqlite.org/c3ref/c_prepare_dont_log.html#sqlitepreparepersistent */ flags?: number; } /** * Javascript wrappers for the SQLite C API (plus a few convenience functions) - * + * * Function signatures have been slightly modified to be more * Javascript-friendly. For the C functions that return an error code, * the corresponding Javascript wrapper will throw an exception with a * `code` property on an error. - * + * * Note that a few functions return a Promise in order to accomodate * either a synchronous or asynchronous SQLite build, generally those * involved with opening/closing a database or executing a statement. - * + * * To create an instance of the API, follow these steps: - * + * * ```javascript * // Import an ES6 module factory function from one of the * // package builds, either 'wa-sqlite.mjs' (synchronous) or @@ -156,35 +174,35 @@ declare interface SQLitePrepareOptions { * // use the asynchronous build if you plan to use an * // asynchronous VFS or module. * import SQLiteESMFactory from 'wa-sqlite/dist/wa-sqlite.mjs'; - * + * * // Import the Javascript API wrappers. * import * as SQLite from 'wa-sqlite'; - * + * * // Use an async function to simplify Promise handling. * (async function() { * // Invoke the ES6 module factory to create the SQLite * // Emscripten module. This will fetch and compile the * // .wasm file. * const module = await SQLiteESMFactory(); - * + * * // Use the module to build the API instance. * const sqlite3 = SQLite.Factory(module); - * + * * // Use the API to open and access a database. * const db = await sqlite3.open_v2('myDB'); * ... * })(); * ``` - * + * * @see https://sqlite.org/c3ref/funclist.html */ declare interface SQLiteAPI { /** * Bind a collection of values to a statement - * + * * This convenience function binds values from either an array or object * to a prepared statement with placeholder parameters. - * + * * Array example using numbered parameters (numbering is implicit in * this example): * ``` @@ -194,7 +212,7 @@ declare interface SQLiteAPI { * ... * } * ``` - * + * * Object example using named parameters (':', '@', or '$' prefixes * are allowed): * ``` @@ -208,11 +226,11 @@ declare interface SQLiteAPI { * ... * } * ``` - * + * * Note that SQLite bindings are indexed beginning with 1, but when * binding values from an array `a` the values begin with `a[0]`. * @param stmt prepared statement pointer - * @param bindings + * @param bindings * @returns `SQLITE_OK` (throws exception on error) */ bind_collection( @@ -222,67 +240,67 @@ declare interface SQLiteAPI { /** * Bind value to prepared statement - * + * * This convenience function calls the appropriate `bind_*` function * based on the type of `value`. Note that binding indices begin with 1. * @param stmt prepared statement pointer * @param i binding index - * @param value + * @param value * @returns `SQLITE_OK` (throws exception on error) */ bind(stmt: number, i: number, value: SQLiteCompatibleType|null): number; /** * Bind blob to prepared statement parameter - * + * * Note that binding indices begin with 1. * @see https://www.sqlite.org/c3ref/bind_blob.html * @param stmt prepared statement pointer * @param i binding index - * @param value + * @param value * @returns `SQLITE_OK` (throws exception on error) */ bind_blob(stmt: number, i: number, value: Uint8Array|Array): number; /** * Bind number to prepared statement parameter - * + * * Note that binding indices begin with 1. * @see https://www.sqlite.org/c3ref/bind_blob.html * @param stmt prepared statement pointer * @param i binding index - * @param value + * @param value * @returns `SQLITE_OK` (throws exception on error) */ bind_double(stmt: number, i: number, value: number): number; /** * Bind number to prepared statement parameter - * + * * Note that binding indices begin with 1. * @see https://www.sqlite.org/c3ref/bind_blob.html * @param stmt prepared statement pointer * @param i binding index - * @param value + * @param value * @returns `SQLITE_OK` (throws exception on error) */ bind_int(stmt: number, i: number, value: number): number; /** * Bind number to prepared statement parameter - * + * * Note that binding indices begin with 1. * @see https://www.sqlite.org/c3ref/bind_blob.html * @param stmt prepared statement pointer * @param i binding index - * @param value + * @param value * @returns `SQLITE_OK` (throws exception on error) */ bind_int64(stmt: number, i: number, value: bigint): number; /** * Bind null to prepared statement - * + * * Note that binding indices begin with 1. * @see https://www.sqlite.org/c3ref/bind_blob.html * @param stmt prepared statement pointer @@ -301,7 +319,7 @@ declare interface SQLiteAPI { /** * Get name of bound parameter - * + * * Note that binding indices begin with 1. * @see https://www.sqlite.org/c3ref/bind_parameter_name.html * @param stmt prepared statement pointer @@ -312,12 +330,12 @@ declare interface SQLiteAPI { /** * Bind string to prepared statement - * + * * Note that binding indices begin with 1. * @see https://www.sqlite.org/c3ref/bind_blob.html * @param stmt prepared statement pointer * @param i binding index - * @param value + * @param value * @returns `SQLITE_OK` (throws exception on error) */ bind_text(stmt: number, i: number, value: string): number; @@ -328,7 +346,7 @@ declare interface SQLiteAPI { * @param db database pointer * @returns number of rows modified */ - changes(db): number; + changes(db: number): number; /** * Reset all bindings on a prepared statement. @@ -344,16 +362,16 @@ declare interface SQLiteAPI { * @param db database pointer * @returns `SQLITE_OK` (throws exception on error) */ - close(db): Promise; + close(db: number): Promise; /** * Call the appropriate `column_*` function based on the column type - * + * * The type is determined by calling {@link column_type}, which may * not match the type declared in `CREATE TABLE`. Note that if the column * value is a blob then as with `column_blob` the result may be invalid * after the next SQLite call; copy if it needs to be retained. - * + * * Integer values are returned as Number if within the min/max safe * integer bounds, otherwise they are returned as BigInt. * @param stmt prepared statement pointer @@ -364,7 +382,7 @@ declare interface SQLiteAPI { /** * Extract a column value from a row after a prepared statment {@link step} - * + * * The contents of the returned buffer may be invalid after the * next SQLite call. Make a copy of the data (e.g. with `.slice()`) * if longer retention is required. @@ -430,10 +448,10 @@ declare interface SQLiteAPI { /** * Get names for all columns of a prepared statement - * + * * This is a convenience function that calls {@link column_count} and * {@link column_name}. - * @param stmt + * @param stmt * @returns array of column names */ column_names(stmt: number): Array; @@ -449,7 +467,7 @@ declare interface SQLiteAPI { /** * Get column type for a prepared statement - * + * * Note that this type may not match the type declared in `CREATE TABLE`. * @see https://www.sqlite.org/c3ref/column_blob.html * @param stmt prepared statement pointer @@ -460,7 +478,7 @@ declare interface SQLiteAPI { /** * Register a commit hook - * + * * @see https://www.sqlite.org/c3ref/commit_hook.html * * @param db database pointer @@ -473,20 +491,20 @@ declare interface SQLiteAPI { /** * Create or redefine SQL functions - * + * * The application data passed is ignored. Use closures instead. - * + * * If any callback function returns a Promise, that function must * be declared `async`, i.e. it must allow use of `await`. * @see https://sqlite.org/c3ref/create_function.html * @param db database pointer - * @param zFunctionName + * @param zFunctionName * @param nArg number of function arguments * @param eTextRep text encoding (and other flags) * @param pApp application data (ignored) - * @param xFunc - * @param xStep - * @param xFinal + * @param xFunc + * @param xStep + * @param xFinal * @returns `SQLITE_OK` (throws exception on error) */ create_function( @@ -509,7 +527,7 @@ declare interface SQLiteAPI { /** * One-step query execution interface - * + * * The implementation of this function uses {@link row}, which makes a * copy of blobs and returns BigInt for integers outside the safe integer * bounds for Number. @@ -528,7 +546,7 @@ declare interface SQLiteAPI { /** * Destroy a prepared statement object compiled by {@link statements} * with the `unscoped` option set to `true` - * + * * This function does *not* throw on error. * @see https://www.sqlite.org/c3ref/finalize.html * @param stmt prepared statement pointer @@ -563,7 +581,7 @@ declare interface SQLiteAPI { * @see https://www.sqlite.org/c3ref/limit.html * @param db database pointer * @param id limit category - * @param newVal + * @param newVal * @returns previous setting */ limit( @@ -573,12 +591,12 @@ declare interface SQLiteAPI { /** * Opening a new database connection. - * + * * Note that this function differs from the C API in that it * returns the Promise-wrapped database pointer (instead of a * result code). * @see https://sqlite.org/c3ref/open.html - * @param zFilename + * @param zFilename * @param iFlags `SQLite.SQLITE_OPEN_CREATE | SQLite.SQLITE_OPEN_READWRITE` (0x6) if omitted * @param zVfs VFS name * @returns Promise-wrapped database pointer. @@ -586,22 +604,22 @@ declare interface SQLiteAPI { open_v2( zFilename: string, iFlags?: number, - zVfs?: string + zVfs?: string ): Promise; /** * Specify callback to be invoked between long-running queries - * + * * The application data passed is ignored. Use closures instead. - * + * * If any callback function returns a Promise, that function must * be declared `async`, i.e. it must allow use of `await`. * @param db database pointer * @param nProgressOps target number of database operations between handler invocations - * @param handler - * @param userData + * @param handler + * @param userData */ - progress_handler(db: number, nProgressOps: number, handler: (userData: any) => number|Promise, userData); + progress_handler(db: number, nProgressOps: number, handler: (userData: T) => number|Promise, userData: T): void; /** * Reset a prepared statement object @@ -614,7 +632,7 @@ declare interface SQLiteAPI { /** * Convenience function to call `result_*` based of the type of `value` * @param context context pointer - * @param value + * @param value */ result(context: number, value: (SQLiteCompatibleType|number[])|null): void; @@ -622,7 +640,7 @@ declare interface SQLiteAPI { * Set the result of a function or vtable column * @see https://sqlite.org/c3ref/result_blob.html * @param context context pointer - * @param value + * @param value */ result_blob(context: number, value: Uint8Array|number[]): void; @@ -630,7 +648,7 @@ declare interface SQLiteAPI { * Set the result of a function or vtable column * @see https://sqlite.org/c3ref/result_blob.html * @param context context pointer - * @param value + * @param value */ result_double(context: number, value: number): void; @@ -638,7 +656,7 @@ declare interface SQLiteAPI { * Set the result of a function or vtable column * @see https://sqlite.org/c3ref/result_blob.html * @param context context pointer - * @param value + * @param value */ result_int(context: number, value: number): void; @@ -646,7 +664,7 @@ declare interface SQLiteAPI { * Set the result of a function or vtable column * @see https://sqlite.org/c3ref/result_blob.html * @param context context pointer - * @param value + * @param value */ result_int64(context: number, value: bigint): void; @@ -661,13 +679,13 @@ declare interface SQLiteAPI { * Set the result of a function or vtable column * @see https://sqlite.org/c3ref/result_blob.html * @param context context pointer - * @param value + * @param value */ result_text(context: number, value: string): void; /** * Get all column data for a row from a prepared statement step - * + * * This convenience function will return a copy of any blob, unlike * {@link column_blob} which returns a value referencing volatile WASM * memory with short validity. Like {@link column}, it will return a @@ -681,14 +699,14 @@ declare interface SQLiteAPI { * Register a callback function that is invoked to authorize certain SQL statement actions. * @see https://www.sqlite.org/c3ref/set_authorizer.html * @param db database pointer - * @param authFunction - * @param userData + * @param authFunction + * @param userData */ set_authorizer( db: number, authFunction: (userData: any, iActionCode: number, param3: string|null, param4: string|null, param5: string|null, param6: string|null) => number|Promise, userData: any): number; - + /** * Get statement SQL * @see https://www.sqlite.org/c3ref/expanded_sql.html @@ -699,7 +717,7 @@ declare interface SQLiteAPI { /** * SQL statement iterator - * + * * This function manages statement compilation by creating an async * iterator that yields a prepared statement handle on each iteration. * It is typically used with a `for await` loop (in an async function), @@ -708,7 +726,7 @@ declare interface SQLiteAPI { * // Compile one statement on each iteration of this loop. * for await (const stmt of sqlite3.statements(db, sql)) { * // Bind parameters here if using SQLite placeholders. - * + * * // Execute the statement with this loop. * while (await sqlite3.step(stmt) === SQLite.SQLITE_ROW) { * // Collect row data here. @@ -717,14 +735,14 @@ declare interface SQLiteAPI { * // Change bindings, reset, and execute again if desired. * } * ``` - * + * * By default, the lifetime of a yielded prepared statement is managed * automatically by the iterator, ending at the end of each iteration. * {@link finalize} should *not* be called on a statement provided by * the iterator unless the `unscoped` option is set to `true` (that * option is provided for applications that wish to manage statement * lifetimes manually). - * + * * If using the iterator manually, i.e. by calling its `next` * method, be sure to call the `return` method if iteration * is abandoned before completion (`for await` and other implicit @@ -732,7 +750,7 @@ declare interface SQLiteAPI { * to ensure that all allocated resources are released. * @see https://www.sqlite.org/c3ref/prepare.html * @param db database pointer - * @param sql + * @param sql * @param options */ statements(db: number, sql: string, options?: SQLitePrepareOptions): AsyncIterable; @@ -748,7 +766,7 @@ declare interface SQLiteAPI { /** * Register an update hook - * + * * The callback is invoked whenever a row is updated, inserted, or deleted * in a rowid table on this connection. * @see https://www.sqlite.org/c3ref/update_hook.html @@ -758,7 +776,7 @@ declare interface SQLiteAPI { * - SQLITE_INSERT: 18 * - SQLITE_UPDATE: 23 * @see https://www.sqlite.org/c3ref/c_alter_table.html - * + * * @param db database pointer * @param callback */ @@ -768,11 +786,11 @@ declare interface SQLiteAPI { /** * Extract a value from `sqlite3_value` - * + * * This is a convenience function that calls the appropriate `value_*` * function based on its type. Note that if the value is a blob then as * with `value_blob` the result may be invalid after the next SQLite call. - * + * * Integer values are returned as Number if within the min/max safe * integer bounds, otherwise they are returned as BigInt. * @param pValue `sqlite3_value` pointer @@ -782,7 +800,7 @@ declare interface SQLiteAPI { /** * Extract a value from `sqlite3_value` - * + * * The contents of the returned buffer may be invalid after the * next SQLite call. Make a copy of the data (e.g. with `.slice()`) * if longer retention is required. @@ -839,13 +857,13 @@ declare interface SQLiteAPI { * @returns enumeration value for type */ value_type(pValue: number): number; - + /** * Register a new Virtual File System. - * + * * @see https://www.sqlite.org/c3ref/vfs_find.html * @param vfs VFS object - * @param makeDefault + * @param makeDefault * @returns `SQLITE_OK` (throws exception on error) */ vfs_register(vfs: SQLiteVFS, makeDefault?: boolean): number; @@ -1109,199 +1127,79 @@ declare module 'wa-sqlite' { /** @ignore */ declare module 'wa-sqlite/dist/wa-sqlite.mjs' { function ModuleFactory(config?: object): Promise; - export = ModuleFactory; + export default ModuleFactory; } /** @ignore */ declare module 'wa-sqlite/dist/wa-sqlite-async.mjs' { function ModuleFactory(config?: object): Promise; - export = ModuleFactory; + export default ModuleFactory; } /** @ignore */ declare module 'wa-sqlite/src/VFS.js' { export * from 'wa-sqlite/src/sqlite-constants.js'; - export class Base { - mxPathName: number; - /** - * @param {number} fileId - * @returns {number|Promise} - */ - xClose(fileId: number): number; - /** - * @param {number} fileId - * @param {Uint8Array} pData - * @param {number} iOffset - * @returns {number} - */ - xRead(fileId: number, pData: { - size: number; - value: Uint8Array; - }, iOffset: number): number; - /** - * @param {number} fileId - * @param {Uint8Array} pData - * @param {number} iOffset - * @returns {number} - */ - xWrite(fileId: number, pData: { - size: number; - value: Uint8Array; - }, iOffset: number): number; - /** - * @param {number} fileId - * @param {number} iSize - * @returns {number} - */ - xTruncate(fileId: number, iSize: number): number; - /** - * @param {number} fileId - * @param {*} flags - * @returns {number} - */ - xSync(fileId: number, flags: any): number; - /** - * @param {number} fileId - * @param {DataView} pSize64 - * @returns {number|Promise} - */ - xFileSize(fileId: number, pSize64: DataView): number; - /** - * @param {number} fileId - * @param {number} flags - * @returns {number} - */ - xLock(fileId: number, flags: number): number; - /** - * @param {number} fileId - * @param {number} flags - * @returns {number} - */ - xUnlock(fileId: number, flags: number): number; - /** - * @param {number} fileId - * @param {DataView} pResOut - * @returns {number} - */ - xCheckReservedLock(fileId: number, pResOut: DataView): number; - /** - * @param {number} fileId - * @param {number} flags - * @param {DataView} pArg - * @returns {number} - */ - xFileControl(fileId: number, flags: number, pArg: DataView): number; - /** - * @param {number} fileId - * @returns {number} - */ - xSectorSize(fileId: number): number; - /** - * @param {number} fileId - * @returns {number} - */ - xDeviceCharacteristics(fileId: number): number; - /** - * @param {string?} name - * @param {number} fileId - * @param {number} flags - * @param {DataView} pOutFlags - * @returns {number} - */ - xOpen(name: string | null, fileId: number, flags: number, pOutFlags: DataView): number; - /** - * - * @param {string} name - * @param {number} syncDir - * @returns {number} - */ - xDelete(name: string, syncDir: number): number; - /** - * @param {string} name - * @param {number} flags - * @param {DataView} pResOut - * @returns {number} - */ - xAccess(name: string, flags: number, pResOut: DataView): number; - /** - * Handle asynchronous operation. This implementation will be overriden on - * registration by an Asyncify build. - * @param {function(): Promise} f - * @returns {number} - */ - handleAsync(f: () => Promise): number; - } -} - -/** @ignore */ -declare module 'wa-sqlite/src/examples/IndexedDbVFS.js' { - import * as VFS from "wa-sqlite/src/VFS.js"; - export class IndexedDbVFS extends VFS.Base { - /** - * @param {string} idbName Name of IndexedDB database. - */ - constructor(idbName?: string); - name: string; - mapIdToFile: Map; - cacheSize: number; - db: any; - close(): Promise; - /** - * Delete a file from IndexedDB. - * @param {string} name - */ - deleteFile(name: string): Promise; - /** - * Forcibly clear an orphaned file lock. - * @param {string} name - */ - forceClearLock(name: string): Promise; - _getStore(mode?: string): any; - /** - * Returns the key for file metadata. - * @param {string} name - * @returns - */ - _metaKey(name: string): string; - /** - * Returns the key for file block data. - * @param {string} name - * @param {number} index - * @returns - */ - _blockKey(name: string, index: number): string; - _getBlock(store: any, file: any, index: any): Promise; - _putBlock(store: any, file: any, index: any, blockData: any): void; - _purgeCache(store: any, file: any, size?: number): void; - _flushCache(store: any, file: any): Promise; - _sync(file: any): Promise; - /** - * Helper function that deletes all keys greater or equal to `key` - * provided they start with `prefix`. - * @param {string} key - * @param {string} [prefix] - * @returns - */ - _delete(key: string, prefix?: string): Promise; - } -} - -/** @ignore */ -declare module 'wa-sqlite/src/examples/MemoryVFS.js' { - import * as VFS from "wa-sqlite/src/VFS.js"; - /** @ignore */ - export class MemoryVFS extends VFS.Base { + export class Base implements SQLiteVFS { name: string; - mapNameToFile: Map; - mapIdToFile: Map; - } -} - -/** @ignore */ -declare module 'wa-sqlite/src/examples/MemoryAsyncVFS.js' { - import { MemoryVFS } from "wa-sqlite/src/examples/MemoryVFS.js"; - export class MemoryAsyncVFS extends MemoryVFS { + mxPathname: number; + _module: object; + + constructor(name: string, module: object); + + close(): void | Promise; + isReady(): boolean | Promise; + hasAsyncMethod(methodName: string): boolean; + + xOpen( + pVfs: number, + zName: number, + pFile: number, + flags: number, + pOutFlags: number + ): number | Promise; + xDelete(pVfs: number, zName: number, syncDir: number): number | Promise; + xAccess( + pVfs: number, + zName: number, + flags: number, + pResOut: number + ): number | Promise; + xFullPathname( + pVfs: number, + zName: number, + nOut: number, + zOut: number + ): number | Promise; + xGetLastError( + pVfs: number, + nBuf: number, + zBuf: number + ): number | Promise; + xClose(pFile: number): number | Promise; + xRead( + pFile: number, + pData: number, + iAmt: number, + iOffsetLo: number, + iOffsetHi: number + ): number | Promise; + xWrite( + pFile: number, + pData: number, + iAmt: number, + iOffsetLo: number, + iOffsetHi: number + ): number | Promise; + xTruncate(pFile: number, sizeLo: number, sizeHi: number): number | Promise; + xSync(pFile: number, flags: number): number | Promise; + xFileSize(pFile: number, pSize: number): number | Promise; + xLock(pFile: number, lockType: number): number | Promise; + xUnlock(pFile: number, lockType: number): number | Promise; + xCheckReservedLock(pFile: number, pResOut: number): number | Promise; + xFileControl(pFile: number, op: number, pArg: number): number | Promise; + xSectorSize(pFile: number): number | Promise; + xDeviceCharacteristics(pFile: number): number | Promise; } } diff --git a/test/OPFSPermutedVFS.test.js b/test/OPFSWriteAheadVFS.test.js similarity index 95% rename from test/OPFSPermutedVFS.test.js rename to test/OPFSWriteAheadVFS.test.js index ca192121..b1888950 100644 --- a/test/OPFSPermutedVFS.test.js +++ b/test/OPFSWriteAheadVFS.test.js @@ -5,7 +5,7 @@ import { vfs_xClose } from "./vfs_xClose.js"; import { vfs_xRead } from "./vfs_xRead.js"; import { vfs_xWrite } from "./vfs_xWrite.js"; -const CONFIG = 'OPFSPermutedVFS'; +const CONFIG = 'OPFSWriteAheadVFS'; const BUILDS = ['asyncify', 'jspi']; const supportsJSPI = await TestContext.supportsJSPI(); diff --git a/test/api.test.js b/test/api.test.js index 46a9939b..f1cf986b 100644 --- a/test/api.test.js +++ b/test/api.test.js @@ -23,7 +23,7 @@ const CONFIGS = new Map([ ['IDBMirrorVFS', ASYNC_BUILDS], ['OPFSAdaptiveVFS', ASYNC_BUILDS], ['OPFSAnyContextVFS', ASYNC_BUILDS], - ['OPFSPermutedVFS', ASYNC_BUILDS], + ['OPFSWriteAheadVFS', ASYNC_BUILDS], ]); describe('SQLite API', function() { diff --git a/test/sql.test.js b/test/sql.test.js index 1b68a188..9ba837dc 100644 --- a/test/sql.test.js +++ b/test/sql.test.js @@ -22,10 +22,10 @@ const CONFIGS = new Map([ ['IDBMirrorVFS', ASYNC_BUILDS], ['OPFSAdaptiveVFS', ASYNC_BUILDS], ['OPFSAnyContextVFS', ASYNC_BUILDS], - ['OPFSPermutedVFS', ASYNC_BUILDS], + ['OPFSWriteAheadVFS', ASYNC_BUILDS], ]); -const DISALLOWS_PAGE_SIZE_CHANGE = ['IDBBatchAtomicVFS', 'IDBMirrorVFS', 'OPFSPermutedVFS', 'FLOOR']; +const DISALLOWS_PAGE_SIZE_CHANGE = ['IDBBatchAtomicVFS', 'IDBMirrorVFS']; const NOT_PERSISTENT = ['', 'MemoryVFS', 'MemoryAsyncVFS']; const SINGLE_CONNECTION = ['', 'MemoryVFS', 'MemoryAsyncVFS', 'AccessHandlePoolVFS']; diff --git a/test/test-worker.js b/test/test-worker.js index f560b668..b4d5d73e 100644 --- a/test/test-worker.js +++ b/test/test-worker.js @@ -52,8 +52,8 @@ const VFS_CONFIGS = new Map([ vfsModule: '../src/examples/OPFSAnyContextVFS.js', }, { - name: 'OPFSPermutedVFS', - vfsModule: '../src/examples/OPFSPermutedVFS.js', + name: 'OPFSWriteAheadVFS', + vfsModule: '../src/examples/OPFSWriteAheadVFS.js', }, ].map(config => [config.name, config])); diff --git a/yarn.lock b/yarn.lock index 3a49dbc2..d4de5b3c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -42,10 +42,19 @@ __metadata: languageName: node linkType: hard -"@gar/promisify@npm:^1.1.3": - version: 1.1.3 - resolution: "@gar/promisify@npm:1.1.3" - checksum: 052dd232140fa60e81588000cbe729a40146579b361f1070bce63e2a761388a22a16d00beeffc504bd3601cb8e055c57b21a185448b3ed550cf50716f4fd442e +"@gar/promise-retry@npm:^1.0.0": + version: 1.0.3 + resolution: "@gar/promise-retry@npm:1.0.3" + checksum: 0d13ea3bb1025755e055648f6e290d2a7e0c87affaf552218f09f66b3fcd9ea9d5c9cc5fe2aa6e285e1530437768e40f9448fe9a86f4f3417b216dcf488d3d1a + languageName: node + linkType: hard + +"@isaacs/fs-minipass@npm:^4.0.0": + version: 4.0.1 + resolution: "@isaacs/fs-minipass@npm:4.0.1" + dependencies: + minipass: "npm:^7.0.4" + checksum: 4412e9e6713c89c1e66d80bb0bb5a2a93192f10477623a27d08f228ba0316bb880affabc5bfe7f838f58a34d26c2c190da726e576cdfc18c49a72e89adabdcf5 languageName: node linkType: hard @@ -100,23 +109,32 @@ __metadata: languageName: node linkType: hard -"@npmcli/fs@npm:^2.1.0": - version: 2.1.0 - resolution: "@npmcli/fs@npm:2.1.0" +"@npmcli/agent@npm:^4.0.0": + version: 4.0.0 + resolution: "@npmcli/agent@npm:4.0.0" dependencies: - "@gar/promisify": "npm:^1.1.3" - semver: "npm:^7.3.5" - checksum: 1fe97efb5c1250c5986b46b6c8256b1eab8159a6d50fc8ace9f90937b3195541272faf77f18bdbf5eeb89bab68332c7846ac5ab9337e6099e63c6007388ebe84 + agent-base: "npm:^7.1.0" + http-proxy-agent: "npm:^7.0.0" + https-proxy-agent: "npm:^7.0.1" + lru-cache: "npm:^11.2.1" + socks-proxy-agent: "npm:^8.0.3" + checksum: 1a81573becc60515031accc696e6405e9b894e65c12b98ef4aeee03b5617c41948633159dbf6caf5dde5b47367eeb749bdc7b7dfb21960930a9060a935c6f636 languageName: node linkType: hard -"@npmcli/move-file@npm:^1.1.2": - version: 1.1.2 - resolution: "@npmcli/move-file@npm:1.1.2" +"@npmcli/fs@npm:^5.0.0": + version: 5.0.0 + resolution: "@npmcli/fs@npm:5.0.0" dependencies: - mkdirp: "npm:^1.0.4" - rimraf: "npm:^3.0.2" - checksum: c96381d4a37448ea280951e46233f7e541058cf57a57d4094dd4bdcaae43fa5872b5f2eb6bfb004591a68e29c5877abe3cdc210cb3588cbf20ab2877f31a7de7 + semver: "npm:^7.3.5" + checksum: 4935c7719d17830d0f9fa46c50be17b2a3c945cec61760f6d0909bce47677c42e1810ca673305890f9e84f008ec4d8e841182f371e42100a8159d15f22249208 + languageName: node + linkType: hard + +"@npmcli/redact@npm:^4.0.0": + version: 4.0.0 + resolution: "@npmcli/redact@npm:4.0.0" + checksum: 5d52df2b5267f4369c97a2b2f7c427e3d7aa4b6a83e7a1b522e196f6e9d50024c620bd0cb2052067c74d1aaa0c330d9bc04e1d335bfb46180e705bb33423e74c languageName: node linkType: hard @@ -190,122 +208,178 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-android-arm-eabi@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-android-arm-eabi@npm:4.22.4" +"@rollup/rollup-android-arm-eabi@npm:4.60.1": + version: 4.60.1 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.60.1" conditions: os=android & cpu=arm languageName: node linkType: hard -"@rollup/rollup-android-arm64@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-android-arm64@npm:4.22.4" +"@rollup/rollup-android-arm64@npm:4.60.1": + version: 4.60.1 + resolution: "@rollup/rollup-android-arm64@npm:4.60.1" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-darwin-arm64@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-darwin-arm64@npm:4.22.4" +"@rollup/rollup-darwin-arm64@npm:4.60.1": + version: 4.60.1 + resolution: "@rollup/rollup-darwin-arm64@npm:4.60.1" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-darwin-x64@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-darwin-x64@npm:4.22.4" +"@rollup/rollup-darwin-x64@npm:4.60.1": + version: 4.60.1 + resolution: "@rollup/rollup-darwin-x64@npm:4.60.1" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@rollup/rollup-linux-arm-gnueabihf@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.22.4" +"@rollup/rollup-freebsd-arm64@npm:4.60.1": + version: 4.60.1 + resolution: "@rollup/rollup-freebsd-arm64@npm:4.60.1" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-freebsd-x64@npm:4.60.1": + version: 4.60.1 + resolution: "@rollup/rollup-freebsd-x64@npm:4.60.1" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm-gnueabihf@npm:4.60.1": + version: 4.60.1 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.60.1" conditions: os=linux & cpu=arm & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-arm-musleabihf@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.22.4" +"@rollup/rollup-linux-arm-musleabihf@npm:4.60.1": + version: 4.60.1 + resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.60.1" conditions: os=linux & cpu=arm & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-arm64-gnu@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.22.4" +"@rollup/rollup-linux-arm64-gnu@npm:4.60.1": + version: 4.60.1 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.60.1" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-arm64-musl@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-linux-arm64-musl@npm:4.22.4" +"@rollup/rollup-linux-arm64-musl@npm:4.60.1": + version: 4.60.1 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.60.1" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-powerpc64le-gnu@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.22.4" +"@rollup/rollup-linux-loong64-gnu@npm:4.60.1": + version: 4.60.1 + resolution: "@rollup/rollup-linux-loong64-gnu@npm:4.60.1" + conditions: os=linux & cpu=loong64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-loong64-musl@npm:4.60.1": + version: 4.60.1 + resolution: "@rollup/rollup-linux-loong64-musl@npm:4.60.1" + conditions: os=linux & cpu=loong64 & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-linux-ppc64-gnu@npm:4.60.1": + version: 4.60.1 + resolution: "@rollup/rollup-linux-ppc64-gnu@npm:4.60.1" conditions: os=linux & cpu=ppc64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-riscv64-gnu@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.22.4" +"@rollup/rollup-linux-ppc64-musl@npm:4.60.1": + version: 4.60.1 + resolution: "@rollup/rollup-linux-ppc64-musl@npm:4.60.1" + conditions: os=linux & cpu=ppc64 & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-linux-riscv64-gnu@npm:4.60.1": + version: 4.60.1 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.60.1" conditions: os=linux & cpu=riscv64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-s390x-gnu@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.22.4" +"@rollup/rollup-linux-riscv64-musl@npm:4.60.1": + version: 4.60.1 + resolution: "@rollup/rollup-linux-riscv64-musl@npm:4.60.1" + conditions: os=linux & cpu=riscv64 & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-linux-s390x-gnu@npm:4.60.1": + version: 4.60.1 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.60.1" conditions: os=linux & cpu=s390x & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-x64-gnu@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-linux-x64-gnu@npm:4.22.4" +"@rollup/rollup-linux-x64-gnu@npm:4.60.1": + version: 4.60.1 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.60.1" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-x64-musl@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-linux-x64-musl@npm:4.22.4" +"@rollup/rollup-linux-x64-musl@npm:4.60.1": + version: 4.60.1 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.60.1" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-win32-arm64-msvc@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.22.4" +"@rollup/rollup-openbsd-x64@npm:4.60.1": + version: 4.60.1 + resolution: "@rollup/rollup-openbsd-x64@npm:4.60.1" + conditions: os=openbsd & cpu=x64 + languageName: node + linkType: hard + +"@rollup/rollup-openharmony-arm64@npm:4.60.1": + version: 4.60.1 + resolution: "@rollup/rollup-openharmony-arm64@npm:4.60.1" + conditions: os=openharmony & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-win32-arm64-msvc@npm:4.60.1": + version: 4.60.1 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.60.1" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-win32-ia32-msvc@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.22.4" +"@rollup/rollup-win32-ia32-msvc@npm:4.60.1": + version: 4.60.1 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.60.1" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@rollup/rollup-win32-x64-msvc@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-win32-x64-msvc@npm:4.22.4" +"@rollup/rollup-win32-x64-gnu@npm:4.60.1": + version: 4.60.1 + resolution: "@rollup/rollup-win32-x64-gnu@npm:4.60.1" conditions: os=win32 & cpu=x64 languageName: node linkType: hard -"@tootallnate/once@npm:2": - version: 2.0.0 - resolution: "@tootallnate/once@npm:2.0.0" - checksum: ad87447820dd3f24825d2d947ebc03072b20a42bfc96cbafec16bff8bbda6c1a81fcb0be56d5b21968560c5359a0af4038a68ba150c3e1694fe4c109a063bed8 +"@rollup/rollup-win32-x64-msvc@npm:4.60.1": + version: 4.60.1 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.60.1" + conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -401,10 +475,10 @@ __metadata: languageName: node linkType: hard -"@types/estree@npm:1.0.5, @types/estree@npm:^1.0.0": - version: 1.0.5 - resolution: "@types/estree@npm:1.0.5" - checksum: 7de6d928dd4010b0e20c6919e1a6c27b61f8d4567befa89252055fad503d587ecb9a1e3eab1b1901f923964d7019796db810b7fd6430acb26c32866d126fd408 +"@types/estree@npm:1.0.8, @types/estree@npm:^1.0.0": + version: 1.0.8 + resolution: "@types/estree@npm:1.0.8" + checksum: 25a4c16a6752538ffde2826c2cc0c6491d90e69cd6187bef4a006dd2c3c45469f049e643d7e516c515f21484dc3d48fd5c870be158a5beb72f5baf3dc43e4099 languageName: node linkType: hard @@ -709,16 +783,15 @@ __metadata: languageName: node linkType: hard -"@web/test-runner-chrome@npm:^0.18.0": - version: 0.18.0 - resolution: "@web/test-runner-chrome@npm:0.18.0" +"@web/test-runner-chrome@npm:^0.18.1": + version: 0.18.1 + resolution: "@web/test-runner-chrome@npm:0.18.1" dependencies: "@web/test-runner-core": "npm:^0.13.0" "@web/test-runner-coverage-v8": "npm:^0.8.0" - async-mutex: "npm:0.4.0" chrome-launcher: "npm:^0.15.0" puppeteer-core: "npm:^24.0.0" - checksum: 5683e889e6c5e102c63a223d56778fecac32e4f062ac96b962fb123c788df7faf647fa88eb2b87e2119b20a2b90a908a34e05646fba8427b56f0cbb96740244e + checksum: bd0e987d65d8a4642a0407e74efe8e4531b60002be26b689b5435e574c7f6670c34c41e31f394f8a04a05642522cfc3cbdc34387f6e576a3f75dc5d8c05c7a03 languageName: node linkType: hard @@ -732,41 +805,7 @@ __metadata: languageName: node linkType: hard -"@web/test-runner-core@npm:^0.13.0": - version: 0.13.3 - resolution: "@web/test-runner-core@npm:0.13.3" - dependencies: - "@babel/code-frame": "npm:^7.12.11" - "@types/babel__code-frame": "npm:^7.0.2" - "@types/co-body": "npm:^6.1.0" - "@types/convert-source-map": "npm:^2.0.0" - "@types/debounce": "npm:^1.2.0" - "@types/istanbul-lib-coverage": "npm:^2.0.3" - "@types/istanbul-reports": "npm:^3.0.0" - "@web/browser-logs": "npm:^0.4.0" - "@web/dev-server-core": "npm:^0.7.2" - chokidar: "npm:^3.4.3" - cli-cursor: "npm:^3.1.0" - co-body: "npm:^6.1.0" - convert-source-map: "npm:^2.0.0" - debounce: "npm:^1.2.0" - dependency-graph: "npm:^0.11.0" - globby: "npm:^11.0.1" - internal-ip: "npm:^6.2.0" - istanbul-lib-coverage: "npm:^3.0.0" - istanbul-lib-report: "npm:^3.0.1" - istanbul-reports: "npm:^3.0.2" - log-update: "npm:^4.0.0" - nanocolors: "npm:^0.2.1" - nanoid: "npm:^3.1.25" - open: "npm:^8.0.2" - picomatch: "npm:^2.2.2" - source-map: "npm:^0.7.3" - checksum: d601bd7a93d3b4ad5c819731364217770d9494d2887c605980bfd60bad946370f8412364d39db0daf962592751ae271e30df133636b19cd27abe61447d711328 - languageName: node - linkType: hard - -"@web/test-runner-core@npm:^0.13.4": +"@web/test-runner-core@npm:^0.13.0, @web/test-runner-core@npm:^0.13.4": version: 0.13.4 resolution: "@web/test-runner-core@npm:0.13.4" dependencies: @@ -849,14 +888,14 @@ __metadata: languageName: node linkType: hard -"@web/test-runner@npm:^0.20.0": - version: 0.20.0 - resolution: "@web/test-runner@npm:0.20.0" +"@web/test-runner@npm:^0.20.2": + version: 0.20.2 + resolution: "@web/test-runner@npm:0.20.2" dependencies: "@web/browser-logs": "npm:^0.4.0" "@web/config-loader": "npm:^0.3.0" "@web/dev-server": "npm:^0.4.0" - "@web/test-runner-chrome": "npm:^0.18.0" + "@web/test-runner-chrome": "npm:^0.18.1" "@web/test-runner-commands": "npm:^0.9.0" "@web/test-runner-core": "npm:^0.13.0" "@web/test-runner-mocha": "npm:^0.9.0" @@ -872,14 +911,14 @@ __metadata: bin: web-test-runner: dist/bin.js wtr: dist/bin.js - checksum: 15d96bf0d9466dfb041880ead1275bfe4ff46777c0b4f5743bab11c7373a1725e6245555cb6ec8655b89b625b91d18421d7a97157d25ad10631c93774fc7bec8 + checksum: bc9f52ce56a14348cd6a419a69ce0f0782978d3a9435d4efe8112d09f0e03397b3d6bd320152e7c264a6cdbc60c6975d8516780fad0cf6e4c939f93800a4ecdf languageName: node linkType: hard -"abbrev@npm:1": - version: 1.1.1 - resolution: "abbrev@npm:1.1.1" - checksum: 2d882941183c66aa665118bafdab82b7a177e9add5eb2776c33e960a4f3c89cff88a1b38aba13a456de01d0dd9d66a8bea7c903268b21ea91dd1097e1e2e8243 +"abbrev@npm:^4.0.0": + version: 4.0.0 + resolution: "abbrev@npm:4.0.0" + checksum: e2f0c6a6708ad738b3e8f50233f4800de31ad41a6cdc50e0cbe51b76fed69fd0213516d92c15ce1a9985fca71a14606a9be22bf00f8475a58987b9bfb671c582 languageName: node linkType: hard @@ -893,15 +932,6 @@ __metadata: languageName: node linkType: hard -"agent-base@npm:6, agent-base@npm:^6.0.2": - version: 6.0.2 - resolution: "agent-base@npm:6.0.2" - dependencies: - debug: "npm:4" - checksum: 21fb903e0917e5cb16591b4d0ef6a028a54b83ac30cd1fca58dece3d4e0990512a8723f9f83130d88a41e2af8b1f7be1386fda3ea2d181bb1a62155e75e95e23 - languageName: node - linkType: hard - "agent-base@npm:^7.1.0": version: 7.1.0 resolution: "agent-base@npm:7.1.0" @@ -918,27 +948,6 @@ __metadata: languageName: node linkType: hard -"agentkeepalive@npm:^4.2.1": - version: 4.2.1 - resolution: "agentkeepalive@npm:4.2.1" - dependencies: - debug: "npm:^4.1.0" - depd: "npm:^1.1.2" - humanize-ms: "npm:^1.2.1" - checksum: 63961cba1afa26d708da94159f3b9428d46fdc137b783fbc399b848e750c5e28c97d96839efa8cb3c2d11ecd12dd411298c00d164600212f660e8c55369c9e55 - languageName: node - linkType: hard - -"aggregate-error@npm:^3.0.0": - version: 3.1.0 - resolution: "aggregate-error@npm:3.1.0" - dependencies: - clean-stack: "npm:^2.0.0" - indent-string: "npm:^4.0.0" - checksum: 1101a33f21baa27a2fa8e04b698271e64616b886795fd43c31068c07533c7b3facfcaf4e9e0cab3624bd88f729a592f1c901a1a229c9e490eafce411a8644b79 - languageName: node - linkType: hard - "ansi-escapes@npm:^4.3.0": version: 4.3.2 resolution: "ansi-escapes@npm:4.3.2" @@ -990,23 +999,6 @@ __metadata: languageName: node linkType: hard -"aproba@npm:^1.0.3 || ^2.0.0": - version: 2.0.0 - resolution: "aproba@npm:2.0.0" - checksum: c2b9a631298e8d6f3797547e866db642f68493808f5b37cd61da778d5f6ada890d16f668285f7d60bd4fc3b03889bd590ffe62cf81b700e9bb353431238a0a7b - languageName: node - linkType: hard - -"are-we-there-yet@npm:^3.0.0": - version: 3.0.0 - resolution: "are-we-there-yet@npm:3.0.0" - dependencies: - delegates: "npm:^1.0.0" - readable-stream: "npm:^3.6.0" - checksum: 7266eee19d0be9dd8e58b63cfb1e1ad45945125fac1e75f00237b55960891bf3bb0be291757a8d9dcf1dbfacfb3802d3eb3f9a064084a6a70a61fe0571f9318f - languageName: node - linkType: hard - "array-back@npm:^3.0.1, array-back@npm:^3.1.0": version: 3.1.0 resolution: "array-back@npm:3.1.0" @@ -1044,6 +1036,20 @@ __metadata: languageName: node linkType: hard +"async-function@npm:^1.0.0": + version: 1.0.0 + resolution: "async-function@npm:1.0.0" + checksum: 1a09379937d846f0ce7614e75071c12826945d4e417db634156bf0e4673c495989302f52186dfa9767a1d9181794554717badd193ca2bbab046ef1da741d8efd + languageName: node + linkType: hard + +"async-generator-function@npm:^1.0.0": + version: 1.0.0 + resolution: "async-generator-function@npm:1.0.0" + checksum: 3d49e7acbeee9e84537f4cb0e0f91893df8eba976759875ae8ee9e3d3c82f6ecdebdb347c2fad9926b92596d93cdfc78ecc988bcdf407e40433e8e8e6fe5d78e + languageName: node + linkType: hard + "async-mutex@npm:0.4.0": version: 0.4.0 resolution: "async-mutex@npm:0.4.0" @@ -1076,6 +1082,13 @@ __metadata: languageName: node linkType: hard +"balanced-match@npm:^4.0.2": + version: 4.0.4 + resolution: "balanced-match@npm:4.0.4" + checksum: fb07bb66a0959c2843fc055838047e2a95ccebb837c519614afb067ebfdf2fa967ca8d712c35ced07f2cd26fc6f07964230b094891315ad74f11eba3d53178a0 + languageName: node + linkType: hard + "bare-events@npm:^2.2.0": version: 2.2.2 resolution: "bare-events@npm:2.2.2" @@ -1147,9 +1160,9 @@ __metadata: linkType: hard "basic-ftp@npm:^5.0.2": - version: 5.0.4 - resolution: "basic-ftp@npm:5.0.4" - checksum: bc35c1a1246176c2ef68b9bdac3639d2da6fe499a5700d10b161826e6ee3dcbfd4ad1dd10d0093f1ddc781c36a3aa5e13c8e8b006efad329f86c45481f23eb76 + version: 5.2.2 + resolution: "basic-ftp@npm:5.2.2" + checksum: 2bb208276bafbc3549992734b67247d78bfe6546e2eb1e9513c2761364c47e88b94171666359200279a738b36b152d2bbba0953d4f83f4677f1fd5b68aea3e29 languageName: node linkType: hard @@ -1160,22 +1173,21 @@ __metadata: languageName: node linkType: hard -"brace-expansion@npm:^1.1.7": - version: 1.1.12 - resolution: "brace-expansion@npm:1.1.12" +"brace-expansion@npm:^2.0.2": + version: 2.1.0 + resolution: "brace-expansion@npm:2.1.0" dependencies: balanced-match: "npm:^1.0.0" - concat-map: "npm:0.0.1" - checksum: 12cb6d6310629e3048cadb003e1aca4d8c9bb5c67c3c321bafdd7e7a50155de081f78ea3e0ed92ecc75a9015e784f301efc8132383132f4f7904ad1ac529c562 + checksum: c77a7a64aabf94b8d5913955adb4f36957917565374461355bb4276830c027a313d981f32410cea9e38f52573e7eb776d02fe05091c3a79a061958d97e4d2b43 languageName: node linkType: hard -"brace-expansion@npm:^2.0.1": - version: 2.0.1 - resolution: "brace-expansion@npm:2.0.1" +"brace-expansion@npm:^5.0.5": + version: 5.0.6 + resolution: "brace-expansion@npm:5.0.6" dependencies: - balanced-match: "npm:^1.0.0" - checksum: a61e7cd2e8a8505e9f0036b3b6108ba5e926b4b55089eeb5550cd04a471fe216c96d4fe7e4c7f995c728c554ae20ddfc4244cad10aef255e72b62930afd233d1 + balanced-match: "npm:^4.0.2" + checksum: a7acf120fefa79e9d7c9c92898114f57c07596a3920197f3c5917e6a628b04220a5f7f9618c30bdd973a6576a32113b99f9c3f1c8245ccc399dd2a9a718d81d8 languageName: node linkType: hard @@ -1219,29 +1231,21 @@ __metadata: languageName: node linkType: hard -"cacache@npm:^16.0.2": - version: 16.0.3 - resolution: "cacache@npm:16.0.3" +"cacache@npm:^20.0.1": + version: 20.0.4 + resolution: "cacache@npm:20.0.4" dependencies: - "@npmcli/fs": "npm:^2.1.0" - "@npmcli/move-file": "npm:^1.1.2" - chownr: "npm:^2.0.0" - fs-minipass: "npm:^2.1.0" - glob: "npm:^7.2.0" - infer-owner: "npm:^1.0.4" - lru-cache: "npm:^7.7.1" - minipass: "npm:^3.1.6" - minipass-collect: "npm:^1.0.2" + "@npmcli/fs": "npm:^5.0.0" + fs-minipass: "npm:^3.0.0" + glob: "npm:^13.0.0" + lru-cache: "npm:^11.1.0" + minipass: "npm:^7.0.3" + minipass-collect: "npm:^2.0.1" minipass-flush: "npm:^1.0.5" minipass-pipeline: "npm:^1.2.4" - mkdirp: "npm:^1.0.4" - p-map: "npm:^4.0.0" - promise-inflight: "npm:^1.0.1" - rimraf: "npm:^3.0.2" - ssri: "npm:^8.0.1" - tar: "npm:^6.1.11" - unique-filename: "npm:^1.1.1" - checksum: 33788e925e25d63a9db2e6cf871d8fb653be69d825b3418c2f36ad001a3be32de3b4c3a7570614a8de46150925f38d5a59bd5b26b5770f22c34694ba73b12185 + p-map: "npm:^7.0.2" + ssri: "npm:^13.0.0" + checksum: 02c1b4c57dc2473e6f4654220c9405b73ae5fcdb392f82a7cf535468a52b842690cdb3694861d13bbe4dc067d5f8abe9697b4f791ae5b65cd73d62abad1e3e54 languageName: node linkType: hard @@ -1255,14 +1259,23 @@ __metadata: languageName: node linkType: hard -"call-bind@npm:^1.0.0": - version: 1.0.5 - resolution: "call-bind@npm:1.0.5" +"call-bind-apply-helpers@npm:^1.0.1, call-bind-apply-helpers@npm:^1.0.2": + version: 1.0.2 + resolution: "call-bind-apply-helpers@npm:1.0.2" dependencies: + es-errors: "npm:^1.3.0" function-bind: "npm:^1.1.2" - get-intrinsic: "npm:^1.2.1" - set-function-length: "npm:^1.1.1" - checksum: 246d44db6ef9bbd418828dbd5337f80b46be4398d522eded015f31554cbb2ea33025b0203b75c7ab05a1a255b56ef218880cca1743e4121e306729f9e414da39 + checksum: 00482c1f6aa7cfb30fb1dbeb13873edf81cfac7c29ed67a5957d60635a56b2a4a480f1016ddbdb3395cc37900d46037fb965043a51c5c789ffeab4fc535d18b5 + languageName: node + linkType: hard + +"call-bound@npm:^1.0.2": + version: 1.0.4 + resolution: "call-bound@npm:1.0.4" + dependencies: + call-bind-apply-helpers: "npm:^1.0.2" + get-intrinsic: "npm:^1.3.0" + checksum: ef2b96e126ec0e58a7ff694db43f4d0d44f80e641370c21549ed911fecbdbc2df3ebc9bddad918d6bbdefeafb60bb3337902006d5176d72bcd2da74820991af7 languageName: node linkType: hard @@ -1331,10 +1344,10 @@ __metadata: languageName: node linkType: hard -"chownr@npm:^2.0.0": - version: 2.0.0 - resolution: "chownr@npm:2.0.0" - checksum: c57cf9dd0791e2f18a5ee9c1a299ae6e801ff58fee96dc8bfd0dcb4738a6ce58dd252a3605b1c93c6418fe4f9d5093b28ffbf4d66648cb2a9c67eaef9679be2f +"chownr@npm:^3.0.0": + version: 3.0.0 + resolution: "chownr@npm:3.0.0" + checksum: b63cb1f73d171d140a2ed8154ee6566c8ab775d3196b0e03a2a94b5f6a0ce7777ee5685ca56849403c8d17bd457a6540672f9a60696a6137c7a409097495b82c languageName: node linkType: hard @@ -1377,13 +1390,6 @@ __metadata: languageName: node linkType: hard -"clean-stack@npm:^2.0.0": - version: 2.2.0 - resolution: "clean-stack@npm:2.2.0" - checksum: 2ac8cd2b2f5ec986a3c743935ec85b07bc174d5421a5efc8017e1f146a1cf5f781ae962618f416352103b32c9cd7e203276e8c28241bbe946160cab16149fb68 - languageName: node - linkType: hard - "cli-cursor@npm:^3.1.0": version: 3.1.0 resolution: "cli-cursor@npm:3.1.0" @@ -1462,15 +1468,6 @@ __metadata: languageName: node linkType: hard -"color-support@npm:^1.1.3": - version: 1.1.3 - resolution: "color-support@npm:1.1.3" - bin: - color-support: bin.js - checksum: 4bcfe30eea1498fe1cabc852bbda6c9770f230ea0e4faf4611c5858b1b9e4dde3730ac485e65f54ca182f4c50b626c1bea7c8441ceda47367a54a818c248aa7a - languageName: node - linkType: hard - "comlink@npm:^4.4.1": version: 4.4.1 resolution: "comlink@npm:4.4.1" @@ -1502,20 +1499,6 @@ __metadata: languageName: node linkType: hard -"concat-map@npm:0.0.1": - version: 0.0.1 - resolution: "concat-map@npm:0.0.1" - checksum: 9680699c8e2b3af0ae22592cb764acaf973f292a7b71b8a06720233011853a58e256c89216a10cbe889727532fd77f8bcd49a760cedfde271b8e006c20e079f2 - languageName: node - linkType: hard - -"console-control-strings@npm:^1.1.0": - version: 1.1.0 - resolution: "console-control-strings@npm:1.1.0" - checksum: 27b5fa302bc8e9ae9e98c03c66d76ca289ad0c61ce2fe20ab288d288bee875d217512d2edb2363fc83165e88f1c405180cf3f5413a46e51b4fe1a004840c6cdb - languageName: node - linkType: hard - "content-disposition@npm:~0.5.2": version: 0.5.4 resolution: "content-disposition@npm:0.5.4" @@ -1574,7 +1557,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4": +"debug@npm:4, debug@npm:^4.1.1, debug@npm:^4.3.2, debug@npm:^4.3.4": version: 4.3.4 resolution: "debug@npm:4.3.4" dependencies: @@ -1639,17 +1622,6 @@ __metadata: languageName: node linkType: hard -"define-data-property@npm:^1.1.1": - version: 1.1.1 - resolution: "define-data-property@npm:1.1.1" - dependencies: - get-intrinsic: "npm:^1.2.1" - gopd: "npm:^1.0.1" - has-property-descriptors: "npm:^1.0.0" - checksum: 5573c8df96b5857408cad64d9b91b69152e305ce4b06218e5f49b59c6cafdbb90a8bd8a0bb83c7bc67a8d479c04aa697063c9bc28d849b7282f9327586d6bc7b - languageName: node - linkType: hard - "define-lazy-prop@npm:^2.0.0": version: 2.0.0 resolution: "define-lazy-prop@npm:2.0.0" @@ -1682,7 +1654,7 @@ __metadata: languageName: node linkType: hard -"depd@npm:^1.1.2, depd@npm:~1.1.2": +"depd@npm:~1.1.2": version: 1.1.2 resolution: "depd@npm:1.1.2" checksum: 2ed6966fc14463a9e85451db330ab8ba041efed0b9a1a472dbfc6fbf2f82bab66491915f996b25d8517dddc36c8c74e24c30879b34877f3c4410733444a51d1d @@ -1733,6 +1705,17 @@ __metadata: languageName: node linkType: hard +"dunder-proto@npm:^1.0.1": + version: 1.0.1 + resolution: "dunder-proto@npm:1.0.1" + dependencies: + call-bind-apply-helpers: "npm:^1.0.1" + es-errors: "npm:^1.3.0" + gopd: "npm:^1.2.0" + checksum: 5add88a3d68d42d6e6130a0cac450b7c2edbe73364bbd2fc334564418569bea97c6943a8fcd70e27130bf32afc236f30982fc4905039b703f23e9e0433c29934 + languageName: node + linkType: hard + "ee-first@npm:1.1.1": version: 1.1.1 resolution: "ee-first@npm:1.1.1" @@ -1754,15 +1737,6 @@ __metadata: languageName: node linkType: hard -"encoding@npm:^0.1.13": - version: 0.1.13 - resolution: "encoding@npm:0.1.13" - dependencies: - iconv-lite: "npm:^0.6.2" - checksum: bb98632f8ffa823996e508ce6a58ffcf5856330fde839ae42c9e1f436cc3b5cc651d4aeae72222916545428e54fd0f6aa8862fd8d25bdbcc4589f1e3f3715e7f - languageName: node - linkType: hard - "end-of-stream@npm:^1.1.0": version: 1.4.4 resolution: "end-of-stream@npm:1.4.4" @@ -1779,13 +1753,6 @@ __metadata: languageName: node linkType: hard -"err-code@npm:^2.0.2": - version: 2.0.3 - resolution: "err-code@npm:2.0.3" - checksum: 1d20d825cdcce8d811bfbe86340f4755c02655a7feb2f13f8c880566d9d72a3f6c92c192a6867632e490d6da67b678271f46e01044996a6443e870331100dfdd - languageName: node - linkType: hard - "errorstacks@npm:^2.2.0": version: 2.4.1 resolution: "errorstacks@npm:2.4.1" @@ -1793,6 +1760,20 @@ __metadata: languageName: node linkType: hard +"es-define-property@npm:^1.0.1": + version: 1.0.1 + resolution: "es-define-property@npm:1.0.1" + checksum: f8dc9e660d90919f11084db0a893128f3592b781ce967e4fccfb8f3106cb83e400a4032c559184ec52ee1dbd4b01e7776c7cd0b3327b1961b1a4a7008920fe78 + languageName: node + linkType: hard + +"es-errors@npm:^1.3.0": + version: 1.3.0 + resolution: "es-errors@npm:1.3.0" + checksum: 96e65d640156f91b707517e8cdc454dd7d47c32833aa3e85d79f24f9eb7ea85f39b63e36216ef0114996581969b59fe609a94e30316b08f5f4df1d44134cf8d5 + languageName: node + linkType: hard + "es-module-lexer@npm:^1.0.0": version: 1.4.1 resolution: "es-module-lexer@npm:1.4.1" @@ -1800,6 +1781,15 @@ __metadata: languageName: node linkType: hard +"es-object-atoms@npm:^1.0.0, es-object-atoms@npm:^1.1.1": + version: 1.1.1 + resolution: "es-object-atoms@npm:1.1.1" + dependencies: + es-errors: "npm:^1.3.0" + checksum: 54fe77de288451dae51c37bfbfe3ec86732dc3778f98f3eb3bdb4bf48063b2c0b8f9c93542656986149d08aa5be3204286e2276053d19582b76753f1a2728867 + languageName: node + linkType: hard + "escalade@npm:^3.1.1": version: 3.1.1 resolution: "escalade@npm:3.1.1" @@ -1901,6 +1891,13 @@ __metadata: languageName: node linkType: hard +"exponential-backoff@npm:^3.1.1": + version: 3.1.3 + resolution: "exponential-backoff@npm:3.1.3" + checksum: ca25962b4bbab943b7c4ed0b5228e263833a5063c65e1cdeac4be9afad350aae5466e8e619b5051f4f8d37b2144a2d6e8fcc771b6cc82934f7dade2f964f652c + languageName: node + linkType: hard + "extract-zip@npm:^2.0.1": version: 2.0.1 resolution: "extract-zip@npm:2.0.1" @@ -1956,6 +1953,18 @@ __metadata: languageName: node linkType: hard +"fdir@npm:^6.5.0": + version: 6.5.0 + resolution: "fdir@npm:6.5.0" + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + checksum: 14ca1c9f0a0e8f4f2e9bf4e8551065a164a09545dae548c12a18d238b72e51e5a7b39bd8e5494b56463a0877672d0a6c1ef62c6fa0677db1b0c847773be939b1 + languageName: node + linkType: hard + "fill-range@npm:^7.1.1": version: 7.1.1 resolution: "fill-range@npm:7.1.1" @@ -1992,19 +2001,12 @@ __metadata: languageName: node linkType: hard -"fs-minipass@npm:^2.0.0, fs-minipass@npm:^2.1.0": - version: 2.1.0 - resolution: "fs-minipass@npm:2.1.0" +"fs-minipass@npm:^3.0.0": + version: 3.0.3 + resolution: "fs-minipass@npm:3.0.3" dependencies: - minipass: "npm:^3.0.0" - checksum: 03191781e94bc9a54bd376d3146f90fe8e082627c502185dbf7b9b3032f66b0b142c1115f3b2cc5936575fc1b44845ce903dd4c21bec2a8d69f3bd56f9cee9ec - languageName: node - linkType: hard - -"fs.realpath@npm:^1.0.0": - version: 1.0.0 - resolution: "fs.realpath@npm:1.0.0" - checksum: e703107c28e362d8d7b910bbcbfd371e640a3bb45ae157a362b5952c0030c0b6d4981140ec319b347bce7adc025dd7813da1ff908a945ac214d64f5402a51b96 + minipass: "npm:^7.0.3" + checksum: af143246cf6884fe26fa281621d45cfe111d34b30535a475bfa38dafe343dadb466c047a924ffc7d6b7b18265df4110224ce3803806dbb07173bf2087b648d7f languageName: node linkType: hard @@ -2034,19 +2036,10 @@ __metadata: languageName: node linkType: hard -"gauge@npm:^4.0.0": - version: 4.0.4 - resolution: "gauge@npm:4.0.4" - dependencies: - aproba: "npm:^1.0.3 || ^2.0.0" - color-support: "npm:^1.1.3" - console-control-strings: "npm:^1.1.0" - has-unicode: "npm:^2.0.1" - signal-exit: "npm:^3.0.7" - string-width: "npm:^4.2.3" - strip-ansi: "npm:^6.0.1" - wide-align: "npm:^1.1.5" - checksum: 09535dd53b5ced6a34482b1fa9f3929efdeac02f9858569cde73cef3ed95050e0f3d095706c1689614059898924b7a74aa14042f51381a1ccc4ee5c29d2389c4 +"generator-function@npm:^2.0.0": + version: 2.0.1 + resolution: "generator-function@npm:2.0.1" + checksum: eb7e7eb896c5433f3d40982b2ccacdb3dd990dd3499f14040e002b5d54572476513be8a2e6f9609f6e41ab29f2c4469307611ddbfc37ff4e46b765c326663805 languageName: node linkType: hard @@ -2057,15 +2050,34 @@ __metadata: languageName: node linkType: hard -"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.2": - version: 1.2.2 - resolution: "get-intrinsic@npm:1.2.2" +"get-intrinsic@npm:^1.2.5, get-intrinsic@npm:^1.3.0": + version: 1.3.1 + resolution: "get-intrinsic@npm:1.3.1" dependencies: + async-function: "npm:^1.0.0" + async-generator-function: "npm:^1.0.0" + call-bind-apply-helpers: "npm:^1.0.2" + es-define-property: "npm:^1.0.1" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.1.1" function-bind: "npm:^1.1.2" - has-proto: "npm:^1.0.1" - has-symbols: "npm:^1.0.3" - hasown: "npm:^2.0.0" - checksum: aa96db4f809734d26d49b59bc8669d73a0ae792da561514e987735573a1dfaede516cd102f217a078ea2b42d4c4fb1f83d487932cb15d49826b726cc9cd4470b + generator-function: "npm:^2.0.0" + get-proto: "npm:^1.0.1" + gopd: "npm:^1.2.0" + has-symbols: "npm:^1.1.0" + hasown: "npm:^2.0.2" + math-intrinsics: "npm:^1.1.0" + checksum: bb579dda84caa4a3a41611bdd483dade7f00f246f2a7992eb143c5861155290df3fdb48a8406efa3dfb0b434e2c8fafa4eebd469e409d0439247f85fc3fa2cc1 + languageName: node + linkType: hard + +"get-proto@npm:^1.0.1": + version: 1.0.1 + resolution: "get-proto@npm:1.0.1" + dependencies: + dunder-proto: "npm:^1.0.1" + es-object-atoms: "npm:^1.0.0" + checksum: 4fc96afdb58ced9a67558698b91433e6b037aaa6f1493af77498d7c85b141382cf223c0e5946f334fb328ee85dfe6edd06d218eaf09556f4bc4ec6005d7f5f7b languageName: node linkType: hard @@ -2106,17 +2118,14 @@ __metadata: languageName: node linkType: hard -"glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.2.0": - version: 7.2.0 - resolution: "glob@npm:7.2.0" +"glob@npm:^13.0.0": + version: 13.0.6 + resolution: "glob@npm:13.0.6" dependencies: - fs.realpath: "npm:^1.0.0" - inflight: "npm:^1.0.4" - inherits: "npm:2" - minimatch: "npm:^3.0.4" - once: "npm:^1.3.0" - path-is-absolute: "npm:^1.0.0" - checksum: bc78b6ea0735b6e23d20678aba4ae6a4760e8c9527e3c4683ac25b14e70f55f9531245dcf25959b70cbc4aa3dcce1fc37ab65fd026a4cbd70aa3a44880bd396b + minimatch: "npm:^10.2.2" + minipass: "npm:^7.1.3" + path-scurry: "npm:^2.0.2" + checksum: 201ad69e5f0aa74e1d8c00a481581f8b8c804b6a4fbfabeeb8541f5d756932800331daeba99b58fb9e4cd67e12ba5a7eba5b82fb476691588418060b84353214 languageName: node linkType: hard @@ -2134,12 +2143,10 @@ __metadata: languageName: node linkType: hard -"gopd@npm:^1.0.1": - version: 1.0.1 - resolution: "gopd@npm:1.0.1" - dependencies: - get-intrinsic: "npm:^1.1.3" - checksum: 5fbc7ad57b368ae4cd2f41214bd947b045c1a4be2f194a7be1778d71f8af9dbf4004221f3b6f23e30820eb0d052b4f819fe6ebe8221e2a3c6f0ee4ef173421ca +"gopd@npm:^1.2.0": + version: 1.2.0 + resolution: "gopd@npm:1.2.0" + checksum: 94e296d69f92dc1c0768fcfeecfb3855582ab59a7c75e969d5f96ce50c3d201fd86d5a2857c22565764d5bb8a816c7b1e58f133ec318cd56274da36c5e3fb1a1 languageName: node linkType: hard @@ -2164,29 +2171,20 @@ __metadata: languageName: node linkType: hard -"has-property-descriptors@npm:^1.0.0, has-property-descriptors@npm:^1.0.1": - version: 1.0.1 - resolution: "has-property-descriptors@npm:1.0.1" - dependencies: - get-intrinsic: "npm:^1.2.2" - checksum: 21a47bb080a24e79594aef1ce71e1a18a1c5ab4120308e218088f67ebb7f6f408847541e2d96e5bd00e90eef5c5a49e4ebbdc8fc2d5b365a2c379aef071642f0 - languageName: node - linkType: hard - -"has-proto@npm:^1.0.1": - version: 1.0.1 - resolution: "has-proto@npm:1.0.1" - checksum: eab2ab0ed1eae6d058b9bbc4c1d99d2751b29717be80d02fd03ead8b62675488de0c7359bc1fdd4b87ef6fd11e796a9631ad4d7452d9324fdada70158c2e5be7 - languageName: node - linkType: hard - -"has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": +"has-symbols@npm:^1.0.2": version: 1.0.3 resolution: "has-symbols@npm:1.0.3" checksum: 464f97a8202a7690dadd026e6d73b1ceeddd60fe6acfd06151106f050303eaa75855aaa94969df8015c11ff7c505f196114d22f7386b4a471038da5874cf5e9b languageName: node linkType: hard +"has-symbols@npm:^1.1.0": + version: 1.1.0 + resolution: "has-symbols@npm:1.1.0" + checksum: 959385c98696ebbca51e7534e0dc723ada325efa3475350951363cce216d27373e0259b63edb599f72eb94d6cde8577b4b2375f080b303947e560f85692834fa + languageName: node + linkType: hard + "has-tostringtag@npm:^1.0.0": version: 1.0.0 resolution: "has-tostringtag@npm:1.0.0" @@ -2196,13 +2194,6 @@ __metadata: languageName: node linkType: hard -"has-unicode@npm:^2.0.1": - version: 2.0.1 - resolution: "has-unicode@npm:2.0.1" - checksum: 041b4293ad6bf391e21c5d85ed03f412506d6623786b801c4ab39e4e6ca54993f13201bceb544d92963f9e0024e6e7fbf0cb1d84c9d6b31cb9c79c8c990d13d8 - languageName: node - linkType: hard - "hasown@npm:^2.0.0": version: 2.0.0 resolution: "hasown@npm:2.0.0" @@ -2212,6 +2203,15 @@ __metadata: languageName: node linkType: hard +"hasown@npm:^2.0.2": + version: 2.0.2 + resolution: "hasown@npm:2.0.2" + dependencies: + function-bind: "npm:^1.1.2" + checksum: 7898a9c1788b2862cf0f9c345a6bec77ba4a0c0983c7f19d610c382343d4f98fa260686b225dfb1f88393a66679d2ec58ee310c1d6868c081eda7918f32cc70a + languageName: node + linkType: hard + "html-escaper@npm:^2.0.0": version: 2.0.2 resolution: "html-escaper@npm:2.0.2" @@ -2229,10 +2229,10 @@ __metadata: languageName: node linkType: hard -"http-cache-semantics@npm:^4.1.0": - version: 4.1.1 - resolution: "http-cache-semantics@npm:4.1.1" - checksum: 362d5ed66b12ceb9c0a328fb31200b590ab1b02f4a254a697dc796850cc4385603e75f53ec59f768b2dad3bfa1464bd229f7de278d2899a0e3beffc634b6683f +"http-cache-semantics@npm:^4.1.1": + version: 4.2.0 + resolution: "http-cache-semantics@npm:4.2.0" + checksum: 4efd2dfcfeea9d5e88c84af450b9980be8a43c2c8179508b1c57c7b4421c855f3e8efe92fa53e0b3f4a43c85824ada930eabbc306d1b3beab750b6dcc5187693 languageName: node linkType: hard @@ -2274,17 +2274,6 @@ __metadata: languageName: node linkType: hard -"http-proxy-agent@npm:^5.0.0": - version: 5.0.0 - resolution: "http-proxy-agent@npm:5.0.0" - dependencies: - "@tootallnate/once": "npm:2" - agent-base: "npm:6" - debug: "npm:4" - checksum: 5ee19423bc3e0fd5f23ce991b0755699ad2a46a440ce9cec99e8126bb98448ad3479d2c0ea54be5519db5b19a4ffaa69616bac01540db18506dd4dac3dc418f0 - languageName: node - linkType: hard - "http-proxy-agent@npm:^7.0.0": version: 7.0.0 resolution: "http-proxy-agent@npm:7.0.0" @@ -2305,17 +2294,7 @@ __metadata: languageName: node linkType: hard -"https-proxy-agent@npm:^5.0.0": - version: 5.0.0 - resolution: "https-proxy-agent@npm:5.0.0" - dependencies: - agent-base: "npm:6" - debug: "npm:4" - checksum: 517037badcbbe30757a9a88aaf5e8c198d31aa0b1e9c0a49a0053ab8e812809242218cc9ea1929171f74d95ae1ec89782ba471ffc3709b8910e91d1761f5f1a6 - languageName: node - linkType: hard - -"https-proxy-agent@npm:^7.0.6": +"https-proxy-agent@npm:^7.0.1, https-proxy-agent@npm:^7.0.6": version: 7.0.6 resolution: "https-proxy-agent@npm:7.0.6" dependencies: @@ -2332,15 +2311,6 @@ __metadata: languageName: node linkType: hard -"humanize-ms@npm:^1.2.1": - version: 1.2.1 - resolution: "humanize-ms@npm:1.2.1" - dependencies: - ms: "npm:^2.0.0" - checksum: 9c7a74a2827f9294c009266c82031030eae811ca87b0da3dceb8d6071b9bde22c9f3daef0469c3c533cc67a97d8a167cd9fc0389350e5f415f61a79b171ded16 - languageName: node - linkType: hard - "iconv-lite@npm:0.4.24": version: 0.4.24 resolution: "iconv-lite@npm:0.4.24" @@ -2350,12 +2320,12 @@ __metadata: languageName: node linkType: hard -"iconv-lite@npm:^0.6.2": - version: 0.6.3 - resolution: "iconv-lite@npm:0.6.3" +"iconv-lite@npm:^0.7.2": + version: 0.7.2 + resolution: "iconv-lite@npm:0.7.2" dependencies: safer-buffer: "npm:>= 2.1.2 < 3.0.0" - checksum: 24e3292dd3dadaa81d065c6f8c41b274a47098150d444b96e5f53b4638a9a71482921ea6a91a1f59bb71d9796de25e04afd05919fa64c360347ba65d3766f10f + checksum: 24c937b532f868e938386b62410b303b7c767ce3d08dc2829cbe59464d5a26ef86ae5ad1af6b34eec43ddfea39e7d101638644b0178d67262fa87015d59f983a languageName: node linkType: hard @@ -2373,27 +2343,6 @@ __metadata: languageName: node linkType: hard -"imurmurhash@npm:^0.1.4": - version: 0.1.4 - resolution: "imurmurhash@npm:0.1.4" - checksum: 2d30b157a91fe1c1d7c6f653cbf263f039be6c5bfa959245a16d4ee191fc0f2af86c08545b6e6beeb041c56b574d2d5b9f95343d378ab49c0f37394d541e7fc8 - languageName: node - linkType: hard - -"indent-string@npm:^4.0.0": - version: 4.0.0 - resolution: "indent-string@npm:4.0.0" - checksum: cd3f5cbc9ca2d624c6a1f53f12e6b341659aba0e2d3254ae2b4464aaea8b4294cdb09616abbc59458f980531f2429784ed6a420d48d245bcad0811980c9efae9 - languageName: node - linkType: hard - -"infer-owner@npm:^1.0.4": - version: 1.0.4 - resolution: "infer-owner@npm:1.0.4" - checksum: 181e732764e4a0611576466b4b87dac338972b839920b2a8cde43642e4ed6bd54dc1fb0b40874728f2a2df9a1b097b8ff83b56d5f8f8e3927f837fdcb47d8a89 - languageName: node - linkType: hard - "inflation@npm:^2.0.0": version: 2.1.0 resolution: "inflation@npm:2.1.0" @@ -2401,30 +2350,20 @@ __metadata: languageName: node linkType: hard -"inflight@npm:^1.0.4": - version: 1.0.6 - resolution: "inflight@npm:1.0.6" - dependencies: - once: "npm:^1.3.0" - wrappy: "npm:1" - checksum: d2ebd65441a38c8336c223d1b80b921b9fa737e37ea466fd7e253cb000c64ae1f17fa59e68130ef5bda92cfd8d36b83d37dab0eb0a4558bcfec8e8cdfd2dcb67 +"inherits@npm:2.0.3": + version: 2.0.3 + resolution: "inherits@npm:2.0.3" + checksum: 8771303d66c51be433b564427c16011a8e3fbc3449f1f11ea50efb30a4369495f1d0e89f0fc12bdec0bd7e49102ced5d137e031d39ea09821cb3c717fcf21e69 languageName: node linkType: hard -"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.3": +"inherits@npm:2.0.4": version: 2.0.4 resolution: "inherits@npm:2.0.4" checksum: cd45e923bee15186c07fa4c89db0aace24824c482fb887b528304694b2aa6ff8a898da8657046a5dcf3e46cd6db6c61629551f9215f208d7c3f157cf9b290521 languageName: node linkType: hard -"inherits@npm:2.0.3": - version: 2.0.3 - resolution: "inherits@npm:2.0.3" - checksum: 8771303d66c51be433b564427c16011a8e3fbc3449f1f11ea50efb30a4369495f1d0e89f0fc12bdec0bd7e49102ced5d137e031d39ea09821cb3c717fcf21e69 - languageName: node - linkType: hard - "internal-ip@npm:^6.2.0": version: 6.2.0 resolution: "internal-ip@npm:6.2.0" @@ -2437,13 +2376,10 @@ __metadata: languageName: node linkType: hard -"ip-address@npm:^9.0.5": - version: 9.0.5 - resolution: "ip-address@npm:9.0.5" - dependencies: - jsbn: "npm:1.1.0" - sprintf-js: "npm:^1.1.3" - checksum: 1ed81e06721af012306329b31f532b5e24e00cb537be18ddc905a84f19fe8f83a09a1699862bf3a1ec4b9dea93c55a3fa5faf8b5ea380431469df540f38b092c +"ip-address@npm:^10.1.1": + version: 10.2.0 + resolution: "ip-address@npm:10.2.0" + checksum: 12fec399e1af5753ac322e47a6d81a50d3a528b3abb17c09525b2a2edcaedcca628c40520706f7037bc4d8e951b0296c47e7b86d0a8e6e2335c8f0ba4afcfac1 languageName: node linkType: hard @@ -2538,13 +2474,6 @@ __metadata: languageName: node linkType: hard -"is-lambda@npm:^1.0.1": - version: 1.0.1 - resolution: "is-lambda@npm:1.0.1" - checksum: 93a32f01940220532e5948538699ad610d5924ac86093fcee83022252b363eb0cc99ba53ab084a04e4fb62bf7b5731f55496257a4c38adf87af9c4d352c71c35 - languageName: node - linkType: hard - "is-module@npm:^1.0.0": version: 1.0.0 resolution: "is-module@npm:1.0.0" @@ -2589,6 +2518,13 @@ __metadata: languageName: node linkType: hard +"isexe@npm:^4.0.0": + version: 4.0.0 + resolution: "isexe@npm:4.0.0" + checksum: 2ead327ef596042ef9c9ec5f236b316acfaedb87f4bb61b3c3d574fb2e9c8a04b67305e04733bde52c24d9622fdebd3270aadb632adfbf9cadef88fe30f479e5 + languageName: node + linkType: hard + "istanbul-lib-coverage@npm:^3.0.0": version: 3.2.2 resolution: "istanbul-lib-coverage@npm:3.2.2" @@ -2631,13 +2567,6 @@ __metadata: languageName: node linkType: hard -"jsbn@npm:1.1.0": - version: 1.1.0 - resolution: "jsbn@npm:1.1.0" - checksum: bebe7ae829bbd586ce8cbe83501dd8cb8c282c8902a8aeeed0a073a89dc37e8103b1244f3c6acd60278bcbfe12d93a3f83c9ac396868a3b3bbc3c5e5e3b648ef - languageName: node - linkType: hard - "jsonc-parser@npm:^3.2.0": version: 3.2.0 resolution: "jsonc-parser@npm:3.2.0" @@ -2714,8 +2643,8 @@ __metadata: linkType: hard "koa@npm:^2.13.0": - version: 2.16.3 - resolution: "koa@npm:2.16.3" + version: 2.16.4 + resolution: "koa@npm:2.16.4" dependencies: accepts: "npm:^1.3.5" cache-content-type: "npm:^1.0.0" @@ -2740,7 +2669,7 @@ __metadata: statuses: "npm:^1.5.0" type-is: "npm:^1.6.16" vary: "npm:^1.1.2" - checksum: 62b6bc4939003eab2b77d523207e252f4eed3f75471fce3b50fe46a80fb01b9f425d4094437f25e3579ad90bcf43b652c166ac5b58d277255ed82a0ea7069ac8 + checksum: f49e76c2cb7db4facbf215eef964c1eb3f0012c2f64490dfd9b349727e11c7f429f4bf16a47f725e41325415ffebefab0ca6ece3b1187518b42f979e4dbf6e01 languageName: node linkType: hard @@ -2762,9 +2691,9 @@ __metadata: linkType: hard "lodash@npm:^4.17.14, lodash@npm:^4.17.21": - version: 4.17.21 - resolution: "lodash@npm:4.17.21" - checksum: c08619c038846ea6ac754abd6dd29d2568aa705feb69339e836dfa8d8b09abbb2f859371e86863eda41848221f9af43714491467b5b0299122431e202bb0c532 + version: 4.18.1 + resolution: "lodash@npm:4.18.1" + checksum: 306fea53dfd39dad1f03d45ba654a2405aebd35797b673077f401edb7df2543623dc44b9effbb98f69b32152295fff725a4cec99c684098947430600c6af0c3f languageName: node linkType: hard @@ -2780,6 +2709,13 @@ __metadata: languageName: node linkType: hard +"lru-cache@npm:^11.0.0, lru-cache@npm:^11.1.0, lru-cache@npm:^11.2.1": + version: 11.2.7 + resolution: "lru-cache@npm:11.2.7" + checksum: fbff4b8dee8189dde9b52cdfb3ea89b4c9cec094c1538cd30d1f47299477ff312efdb35f7994477ec72328f8e754e232b26a143feda1bd1f79ff22da6664d2c5 + languageName: node + linkType: hard + "lru-cache@npm:^6.0.0": version: 6.0.0 resolution: "lru-cache@npm:6.0.0" @@ -2796,13 +2732,6 @@ __metadata: languageName: node linkType: hard -"lru-cache@npm:^7.7.1": - version: 7.7.3 - resolution: "lru-cache@npm:7.7.3" - checksum: 832a332b7f96f5c67e3b9cdca581bce94a5eb8a59175787318e56437b6ff3388b121d0240d0828252da43dbaf4ba78afb88f3a573367bff1006f68433f974a1b - languageName: node - linkType: hard - "lru-cache@npm:^8.0.4": version: 8.0.5 resolution: "lru-cache@npm:8.0.5" @@ -2826,27 +2755,23 @@ __metadata: languageName: node linkType: hard -"make-fetch-happen@npm:^10.0.3": - version: 10.1.1 - resolution: "make-fetch-happen@npm:10.1.1" +"make-fetch-happen@npm:^15.0.0": + version: 15.0.5 + resolution: "make-fetch-happen@npm:15.0.5" dependencies: - agentkeepalive: "npm:^4.2.1" - cacache: "npm:^16.0.2" - http-cache-semantics: "npm:^4.1.0" - http-proxy-agent: "npm:^5.0.0" - https-proxy-agent: "npm:^5.0.0" - is-lambda: "npm:^1.0.1" - lru-cache: "npm:^7.7.1" - minipass: "npm:^3.1.6" - minipass-collect: "npm:^1.0.2" - minipass-fetch: "npm:^2.0.3" + "@gar/promise-retry": "npm:^1.0.0" + "@npmcli/agent": "npm:^4.0.0" + "@npmcli/redact": "npm:^4.0.0" + cacache: "npm:^20.0.1" + http-cache-semantics: "npm:^4.1.1" + minipass: "npm:^7.0.2" + minipass-fetch: "npm:^5.0.0" minipass-flush: "npm:^1.0.5" minipass-pipeline: "npm:^1.2.4" - negotiator: "npm:^0.6.3" - promise-retry: "npm:^2.0.1" - socks-proxy-agent: "npm:^6.1.1" - ssri: "npm:^8.0.1" - checksum: b616f86b91fe3d24591dbfde5bbc46131b206214a65325c1530df92ef535c86f27f2d21cbb302fd67bf8e640b3675c5b8857da5f63f879148f936af58570b3a0 + negotiator: "npm:^1.0.0" + proc-log: "npm:^6.0.0" + ssri: "npm:^13.0.0" + checksum: d2649effb06c00cb2b266057cb1c8c1e99cfc8d1378e7d9c26cc8f00be41bc63d59b77a5576ed28f8105acc57fb16220b64217f8d3a6a066a594c004aa163afa languageName: node linkType: hard @@ -2866,6 +2791,13 @@ __metadata: languageName: node linkType: hard +"math-intrinsics@npm:^1.1.0": + version: 1.1.0 + resolution: "math-intrinsics@npm:1.1.0" + checksum: 11df2eda46d092a6035479632e1ec865b8134bdfc4bd9e571a656f4191525404f13a283a515938c3a8de934dbfd9c09674d9da9fa831e6eb7e22b50b197d2edd + languageName: node + linkType: hard + "media-typer@npm:0.3.0": version: 0.3.0 resolution: "media-typer@npm:0.3.0" @@ -2920,21 +2852,21 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^3.0.4": - version: 3.1.2 - resolution: "minimatch@npm:3.1.2" +"minimatch@npm:^10.2.2": + version: 10.2.5 + resolution: "minimatch@npm:10.2.5" dependencies: - brace-expansion: "npm:^1.1.7" - checksum: e0b25b04cd4ec6732830344e5739b13f8690f8a012d73445a4a19fbc623f5dd481ef7a5827fde25954cd6026fede7574cc54dc4643c99d6c6b653d6203f94634 + brace-expansion: "npm:^5.0.5" + checksum: 19e87a931aff60ee7b9d80f39f817b8bfc54f61f8356ee3549fbf636dbccacacfec8d803eac73293955c4527cd085247dfc064bce4a5e349f8f3b85e2bf5da0f languageName: node linkType: hard "minimatch@npm:^9.0.3": - version: 9.0.3 - resolution: "minimatch@npm:9.0.3" + version: 9.0.9 + resolution: "minimatch@npm:9.0.9" dependencies: - brace-expansion: "npm:^2.0.1" - checksum: c81b47d28153e77521877649f4bab48348d10938df9e8147a58111fe00ef89559a2938de9f6632910c4f7bf7bb5cd81191a546167e58d357f0cfb1e18cecc1c5 + brace-expansion: "npm:^2.0.2" + checksum: b91fad937deaffb68a45a2cb731ff3cff1c3baf9b6469c879477ed16f15c8f4ce39d63a3f75c2455107c2fdff0f3ab597d97dc09e2e93b883aafcf926ef0c8f9 languageName: node linkType: hard @@ -2945,27 +2877,27 @@ __metadata: languageName: node linkType: hard -"minipass-collect@npm:^1.0.2": - version: 1.0.2 - resolution: "minipass-collect@npm:1.0.2" +"minipass-collect@npm:^2.0.1": + version: 2.0.1 + resolution: "minipass-collect@npm:2.0.1" dependencies: - minipass: "npm:^3.0.0" - checksum: 14df761028f3e47293aee72888f2657695ec66bd7d09cae7ad558da30415fdc4752bbfee66287dcc6fd5e6a2fa3466d6c484dc1cbd986525d9393b9523d97f10 + minipass: "npm:^7.0.3" + checksum: b251bceea62090f67a6cced7a446a36f4cd61ee2d5cea9aee7fff79ba8030e416327a1c5aa2908dc22629d06214b46d88fdab8c51ac76bacbf5703851b5ad342 languageName: node linkType: hard -"minipass-fetch@npm:^2.0.3": - version: 2.1.0 - resolution: "minipass-fetch@npm:2.1.0" +"minipass-fetch@npm:^5.0.0": + version: 5.0.2 + resolution: "minipass-fetch@npm:5.0.2" dependencies: - encoding: "npm:^0.1.13" - minipass: "npm:^3.1.6" - minipass-sized: "npm:^1.0.3" - minizlib: "npm:^2.1.2" + iconv-lite: "npm:^0.7.2" + minipass: "npm:^7.0.3" + minipass-sized: "npm:^2.0.0" + minizlib: "npm:^3.0.1" dependenciesMeta: - encoding: + iconv-lite: optional: true - checksum: 33b6927ef8a4516e27878e1e9966a6dee5c2efb844584b39712a8c222cf7cc586ae00c09897ce3b21e77b6600ad4c7503f8bd732ef1a8bf98137f18c45c6d6c4 + checksum: 4f3f65ea5b20a3a287765ebf21cc73e62031f754944272df2a3039296cc75a8fc2dc50b8a3c4f39ce3ac6e5cc583e8dc664d12c6ab98e0883d263e49f344bc86 languageName: node linkType: hard @@ -2987,16 +2919,16 @@ __metadata: languageName: node linkType: hard -"minipass-sized@npm:^1.0.3": - version: 1.0.3 - resolution: "minipass-sized@npm:1.0.3" +"minipass-sized@npm:^2.0.0": + version: 2.0.0 + resolution: "minipass-sized@npm:2.0.0" dependencies: - minipass: "npm:^3.0.0" - checksum: 40982d8d836a52b0f37049a0a7e5d0f089637298e6d9b45df9c115d4f0520682a78258905e5c8b180fb41b593b0a82cc1361d2c74b45f7ada66334f84d1ecfdd + minipass: "npm:^7.1.2" + checksum: 3b89adf64ca705662f77481e278eff5ec0a57aeffb5feba7cc8843722b1e7770efc880f2a17d1d4877b2d7bf227873cd46afb4da44c0fd18088b601ea50f96bb languageName: node linkType: hard -"minipass@npm:^3.0.0, minipass@npm:^3.1.1, minipass@npm:^3.1.6": +"minipass@npm:^3.0.0": version: 3.1.6 resolution: "minipass@npm:3.1.6" dependencies: @@ -3005,20 +2937,19 @@ __metadata: languageName: node linkType: hard -"minipass@npm:^5.0.0": - version: 5.0.0 - resolution: "minipass@npm:5.0.0" - checksum: 61682162d29f45d3152b78b08bab7fb32ca10899bc5991ffe98afc18c9e9543bd1e3be94f8b8373ba6262497db63607079dc242ea62e43e7b2270837b7347c93 +"minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.0.4, minipass@npm:^7.1.2, minipass@npm:^7.1.3": + version: 7.1.3 + resolution: "minipass@npm:7.1.3" + checksum: 175e4d5e20980c3cd316ae82d2c031c42f6c746467d8b1905b51060a0ba4461441a0c25bb67c025fd9617f9a3873e152c7b543c6b5ac83a1846be8ade80dffd6 languageName: node linkType: hard -"minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": - version: 2.1.2 - resolution: "minizlib@npm:2.1.2" +"minizlib@npm:^3.0.1, minizlib@npm:^3.1.0": + version: 3.1.0 + resolution: "minizlib@npm:3.1.0" dependencies: - minipass: "npm:^3.0.0" - yallist: "npm:^4.0.0" - checksum: ae0f45436fb51344dcb87938446a32fbebb540d0e191d63b35e1c773d47512e17307bf54aa88326cc6d176594d00e4423563a091f7266c2f9a6872cdc1e234d1 + minipass: "npm:^7.1.2" + checksum: f47365cc2cb7f078cbe7e046eb52655e2e7e97f8c0a9a674f4da60d94fb0624edfcec9b5db32e8ba5a99a5f036f595680ae6fe02a262beaa73026e505cc52f99 languageName: node linkType: hard @@ -3040,7 +2971,7 @@ __metadata: languageName: node linkType: hard -"mkdirp@npm:^1.0.3, mkdirp@npm:^1.0.4": +"mkdirp@npm:^1.0.4": version: 1.0.4 resolution: "mkdirp@npm:1.0.4" bin: @@ -3070,7 +3001,7 @@ __metadata: languageName: node linkType: hard -"ms@npm:^2.0.0, ms@npm:^2.1.1, ms@npm:^2.1.3": +"ms@npm:^2.1.1, ms@npm:^2.1.3": version: 2.1.3 resolution: "ms@npm:2.1.3" checksum: aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d @@ -3093,13 +3024,20 @@ __metadata: languageName: node linkType: hard -"negotiator@npm:0.6.3, negotiator@npm:^0.6.3": +"negotiator@npm:0.6.3": version: 0.6.3 resolution: "negotiator@npm:0.6.3" checksum: 2723fb822a17ad55c93a588a4bc44d53b22855bf4be5499916ca0cab1e7165409d0b288ba2577d7b029f10ce18cf2ed8e703e5af31c984e1e2304277ef979837 languageName: node linkType: hard +"negotiator@npm:^1.0.0": + version: 1.0.0 + resolution: "negotiator@npm:1.0.0" + checksum: b5734e87295324fabf868e36fb97c84b7d7f3156ec5f4ee5bf6e488079c11054f818290fc33804cef7b1ee21f55eeb14caea83e7dafae6492a409b3e573153e5 + languageName: node + linkType: hard + "netmask@npm:^2.0.2": version: 2.0.2 resolution: "netmask@npm:2.0.2" @@ -3108,33 +3046,33 @@ __metadata: linkType: hard "node-gyp@npm:latest": - version: 9.0.0 - resolution: "node-gyp@npm:9.0.0" + version: 12.2.0 + resolution: "node-gyp@npm:12.2.0" dependencies: env-paths: "npm:^2.2.0" - glob: "npm:^7.1.4" + exponential-backoff: "npm:^3.1.1" graceful-fs: "npm:^4.2.6" - make-fetch-happen: "npm:^10.0.3" - nopt: "npm:^5.0.0" - npmlog: "npm:^6.0.0" - rimraf: "npm:^3.0.2" + make-fetch-happen: "npm:^15.0.0" + nopt: "npm:^9.0.0" + proc-log: "npm:^6.0.0" semver: "npm:^7.3.5" - tar: "npm:^6.1.2" - which: "npm:^2.0.2" + tar: "npm:^7.5.4" + tinyglobby: "npm:^0.2.12" + which: "npm:^6.0.0" bin: node-gyp: bin/node-gyp.js - checksum: 7a9f184dda7bd53970ac52e138b091b417505bef5be0a7d9a902137a55246afaebbae1263a0545b6d7d94af131bcd49ac99f18db0b801c5b4c627dd291c08a7f + checksum: 4ebab5b77585a637315e969c2274b5520562473fe75de850639a580c2599652fb9f33959ec782ea45a2e149d8f04b548030f472eeeb3dbdf19a7f2ccbc30b908 languageName: node linkType: hard -"nopt@npm:^5.0.0": - version: 5.0.0 - resolution: "nopt@npm:5.0.0" +"nopt@npm:^9.0.0": + version: 9.0.0 + resolution: "nopt@npm:9.0.0" dependencies: - abbrev: "npm:1" + abbrev: "npm:^4.0.0" bin: nopt: bin/nopt.js - checksum: 00f9bb2d16449469ba8ffcf9b8f0eae6bae285ec74b135fec533e5883563d2400c0cd70902d0a7759e47ac031ccf206ace4e86556da08ed3f1c66dda206e9ccd + checksum: 56a1ccd2ad711fb5115918e2c96828703cddbe12ba2c3bd00591758f6fa30e6f47dd905c59dbfcf9b773f3a293b45996609fb6789ae29d6bfcc3cf3a6f7d9fda languageName: node linkType: hard @@ -3154,22 +3092,10 @@ __metadata: languageName: node linkType: hard -"npmlog@npm:^6.0.0": - version: 6.0.1 - resolution: "npmlog@npm:6.0.1" - dependencies: - are-we-there-yet: "npm:^3.0.0" - console-control-strings: "npm:^1.1.0" - gauge: "npm:^4.0.0" - set-blocking: "npm:^2.0.0" - checksum: cd2efe47d521453898fb3d582f2fad29127bccb8d690457873f8ea6e55a325c8e317b05797fc0807c515f2c932a31c017656bec0a60b38a04a730ffcdb562926 - languageName: node - linkType: hard - -"object-inspect@npm:^1.9.0": - version: 1.13.1 - resolution: "object-inspect@npm:1.13.1" - checksum: 92f4989ed83422d56431bc39656d4c780348eb15d397ce352ade6b7fec08f973b53744bd41b94af021901e61acaf78fcc19e65bf464ecc0df958586a672700f0 +"object-inspect@npm:^1.13.3": + version: 1.13.4 + resolution: "object-inspect@npm:1.13.4" + checksum: aa13b1190ad3e366f6c83ad8a16ed37a19ed57d267385aa4bfdccda833d7b90465c057ff6c55d035a6b2e52c1a2295582b294217a0a3a1ae7abdd6877ef781fb languageName: node linkType: hard @@ -3182,7 +3108,7 @@ __metadata: languageName: node linkType: hard -"once@npm:^1.3.0, once@npm:^1.3.1, once@npm:^1.4.0": +"once@npm:^1.3.1, once@npm:^1.4.0": version: 1.4.0 resolution: "once@npm:1.4.0" dependencies: @@ -3234,12 +3160,10 @@ __metadata: languageName: node linkType: hard -"p-map@npm:^4.0.0": - version: 4.0.0 - resolution: "p-map@npm:4.0.0" - dependencies: - aggregate-error: "npm:^3.0.0" - checksum: 7ba4a2b1e24c05e1fc14bbaea0fc6d85cf005ae7e9c9425d4575550f37e2e584b1af97bcde78eacd7559208f20995988d52881334db16cf77bc1bcf68e48ed7c +"p-map@npm:^7.0.2": + version: 7.0.4 + resolution: "p-map@npm:7.0.4" + checksum: ef48c3b2e488f31c693c9fcc0df0ef76518cf6426a495cf9486ebbb0fd7f31aef7f90e96f72e0070c0ff6e3177c9318f644b512e2c29e3feee8d7153fcb6782e languageName: node linkType: hard @@ -3292,7 +3216,7 @@ __metadata: languageName: node linkType: hard -"path-is-absolute@npm:1.0.1, path-is-absolute@npm:^1.0.0": +"path-is-absolute@npm:1.0.1": version: 1.0.1 resolution: "path-is-absolute@npm:1.0.1" checksum: 060840f92cf8effa293bcc1bea81281bd7d363731d214cbe5c227df207c34cd727430f70c6037b5159c8a870b9157cba65e775446b0ab06fd5ecc7e54615a3b8 @@ -3313,6 +3237,16 @@ __metadata: languageName: node linkType: hard +"path-scurry@npm:^2.0.2": + version: 2.0.2 + resolution: "path-scurry@npm:2.0.2" + dependencies: + lru-cache: "npm:^11.0.0" + minipass: "npm:^7.1.2" + checksum: 2b4257422bcb870a4c2d205b3acdbb213a72f5e2250f61c80f79c9d014d010f82bdf8584441612c8e1fa4eb098678f5704a66fa8377d72646bad4be38e57a2c3 + languageName: node + linkType: hard + "path-type@npm:^4.0.0": version: 4.0.0 resolution: "path-type@npm:4.0.0" @@ -3328,9 +3262,16 @@ __metadata: linkType: hard "picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.2.2, picomatch@npm:^2.3.1": - version: 2.3.1 - resolution: "picomatch@npm:2.3.1" - checksum: 60c2595003b05e4535394d1da94850f5372c9427ca4413b71210f437f7b2ca091dbd611c45e8b37d10036fa8eade25c1b8951654f9d3973bfa66a2ff4d3b08bc + version: 2.3.2 + resolution: "picomatch@npm:2.3.2" + checksum: b788ef8148a2415b9dec12f0bb350ae6a5830f8f1950e472abc2f5225494debf7d1b75eb031df0ceaea9e8ec3e7bad599e8dbf3c60d61b42be429ba41bff4426 + languageName: node + linkType: hard + +"picomatch@npm:^4.0.3": + version: 4.0.4 + resolution: "picomatch@npm:4.0.4" + checksum: f6ef80a3590827ce20378ae110ac78209cc4f74d39236370f1780f957b7ee41c12acde0e4651b90f39983506fd2f5e449994716f516db2e9752924aff8de93ce languageName: node linkType: hard @@ -3345,6 +3286,13 @@ __metadata: languageName: node linkType: hard +"proc-log@npm:^6.0.0": + version: 6.1.0 + resolution: "proc-log@npm:6.1.0" + checksum: 9033f30f168ed5a0991b773d0c50ff88384c4738e9a0a67d341de36bf7293771eed648ab6a0562f62276da12fde91f3bbfc75ffff6e71ad49aafd74fc646be66 + languageName: node + linkType: hard + "progress@npm:^2.0.3": version: 2.0.3 resolution: "progress@npm:2.0.3" @@ -3352,23 +3300,6 @@ __metadata: languageName: node linkType: hard -"promise-inflight@npm:^1.0.1": - version: 1.0.1 - resolution: "promise-inflight@npm:1.0.1" - checksum: 1560d413ea20c5a74f3631d39ba8cbd1972b9228072a755d01e1f5ca5110382d9af76a1582d889445adc6e75bb5ac4886b56dc4b6eae51b30145d7bb1ac7505b - languageName: node - linkType: hard - -"promise-retry@npm:^2.0.1": - version: 2.0.1 - resolution: "promise-retry@npm:2.0.1" - dependencies: - err-code: "npm:^2.0.2" - retry: "npm:^0.12.0" - checksum: 96e1a82453c6c96eef53a37a1d6134c9f2482f94068f98a59145d0986ca4e497bf110a410adf73857e588165eab3899f0ebcf7b3890c1b3ce802abc0d65967d4 - languageName: node - linkType: hard - "proxy-agent@npm:^6.4.0, proxy-agent@npm:^6.5.0": version: 6.5.0 resolution: "proxy-agent@npm:6.5.0" @@ -3437,11 +3368,11 @@ __metadata: linkType: hard "qs@npm:^6.5.2": - version: 6.11.2 - resolution: "qs@npm:6.11.2" + version: 6.15.2 + resolution: "qs@npm:6.15.2" dependencies: - side-channel: "npm:^1.0.4" - checksum: f2321d0796664d0f94e92447ccd3bdfd6b6f3a50b6b762aa79d7f5b1ea3a7a9f94063ba896b82bc2a877ed6a7426d4081e4f16568fdb04f0ee188cca9d8505b4 + side-channel: "npm:^1.1.0" + checksum: 7a934b2dba40654cf9878dab7c1e7ad56c6186265509727fbece67dadc38fd5d67715b61b6ef938e5a0475faeee701d18ec0a7ce420ad64367caad7f1bdb66e2 languageName: node linkType: hard @@ -3471,17 +3402,6 @@ __metadata: languageName: node linkType: hard -"readable-stream@npm:^3.6.0": - version: 3.6.0 - resolution: "readable-stream@npm:3.6.0" - dependencies: - inherits: "npm:^2.0.3" - string_decoder: "npm:^1.1.1" - util-deprecate: "npm:^1.0.1" - checksum: b80b3e6a7fafb1c79de7db541de357f4a5ee73bd70c21672f5a7c840d27bb27bdb0151e7ba2fd82c4a888df22ce0c501b0d9f3e4dfe51688876701c437d59536 - languageName: node - linkType: hard - "readdirp@npm:^4.0.1": version: 4.1.2 resolution: "readdirp@npm:4.1.2" @@ -3551,13 +3471,6 @@ __metadata: languageName: node linkType: hard -"retry@npm:^0.12.0": - version: 0.12.0 - resolution: "retry@npm:0.12.0" - checksum: 1f914879f97e7ee931ad05fe3afa629bd55270fc6cf1c1e589b6a99fab96d15daad0fa1a52a00c729ec0078045fe3e399bd4fd0c93bcc906957bdc17f89cb8e6 - languageName: node - linkType: hard - "reusify@npm:^1.0.4": version: 1.0.4 resolution: "reusify@npm:1.0.4" @@ -3565,38 +3478,36 @@ __metadata: languageName: node linkType: hard -"rimraf@npm:^3.0.2": - version: 3.0.2 - resolution: "rimraf@npm:3.0.2" - dependencies: - glob: "npm:^7.1.3" - bin: - rimraf: bin.js - checksum: 063ffaccaaaca2cfd0ef3beafb12d6a03dd7ff1260d752d62a6077b5dfff6ae81bea571f655bb6b589d366930ec1bdd285d40d560c0dae9b12f125e54eb743d5 - languageName: node - linkType: hard - "rollup@npm:^4.4.0": - version: 4.22.4 - resolution: "rollup@npm:4.22.4" - dependencies: - "@rollup/rollup-android-arm-eabi": "npm:4.22.4" - "@rollup/rollup-android-arm64": "npm:4.22.4" - "@rollup/rollup-darwin-arm64": "npm:4.22.4" - "@rollup/rollup-darwin-x64": "npm:4.22.4" - "@rollup/rollup-linux-arm-gnueabihf": "npm:4.22.4" - "@rollup/rollup-linux-arm-musleabihf": "npm:4.22.4" - "@rollup/rollup-linux-arm64-gnu": "npm:4.22.4" - "@rollup/rollup-linux-arm64-musl": "npm:4.22.4" - "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.22.4" - "@rollup/rollup-linux-riscv64-gnu": "npm:4.22.4" - "@rollup/rollup-linux-s390x-gnu": "npm:4.22.4" - "@rollup/rollup-linux-x64-gnu": "npm:4.22.4" - "@rollup/rollup-linux-x64-musl": "npm:4.22.4" - "@rollup/rollup-win32-arm64-msvc": "npm:4.22.4" - "@rollup/rollup-win32-ia32-msvc": "npm:4.22.4" - "@rollup/rollup-win32-x64-msvc": "npm:4.22.4" - "@types/estree": "npm:1.0.5" + version: 4.60.1 + resolution: "rollup@npm:4.60.1" + dependencies: + "@rollup/rollup-android-arm-eabi": "npm:4.60.1" + "@rollup/rollup-android-arm64": "npm:4.60.1" + "@rollup/rollup-darwin-arm64": "npm:4.60.1" + "@rollup/rollup-darwin-x64": "npm:4.60.1" + "@rollup/rollup-freebsd-arm64": "npm:4.60.1" + "@rollup/rollup-freebsd-x64": "npm:4.60.1" + "@rollup/rollup-linux-arm-gnueabihf": "npm:4.60.1" + "@rollup/rollup-linux-arm-musleabihf": "npm:4.60.1" + "@rollup/rollup-linux-arm64-gnu": "npm:4.60.1" + "@rollup/rollup-linux-arm64-musl": "npm:4.60.1" + "@rollup/rollup-linux-loong64-gnu": "npm:4.60.1" + "@rollup/rollup-linux-loong64-musl": "npm:4.60.1" + "@rollup/rollup-linux-ppc64-gnu": "npm:4.60.1" + "@rollup/rollup-linux-ppc64-musl": "npm:4.60.1" + "@rollup/rollup-linux-riscv64-gnu": "npm:4.60.1" + "@rollup/rollup-linux-riscv64-musl": "npm:4.60.1" + "@rollup/rollup-linux-s390x-gnu": "npm:4.60.1" + "@rollup/rollup-linux-x64-gnu": "npm:4.60.1" + "@rollup/rollup-linux-x64-musl": "npm:4.60.1" + "@rollup/rollup-openbsd-x64": "npm:4.60.1" + "@rollup/rollup-openharmony-arm64": "npm:4.60.1" + "@rollup/rollup-win32-arm64-msvc": "npm:4.60.1" + "@rollup/rollup-win32-ia32-msvc": "npm:4.60.1" + "@rollup/rollup-win32-x64-gnu": "npm:4.60.1" + "@rollup/rollup-win32-x64-msvc": "npm:4.60.1" + "@types/estree": "npm:1.0.8" fsevents: "npm:~2.3.2" dependenciesMeta: "@rollup/rollup-android-arm-eabi": @@ -3607,6 +3518,10 @@ __metadata: optional: true "@rollup/rollup-darwin-x64": optional: true + "@rollup/rollup-freebsd-arm64": + optional: true + "@rollup/rollup-freebsd-x64": + optional: true "@rollup/rollup-linux-arm-gnueabihf": optional: true "@rollup/rollup-linux-arm-musleabihf": @@ -3615,27 +3530,41 @@ __metadata: optional: true "@rollup/rollup-linux-arm64-musl": optional: true - "@rollup/rollup-linux-powerpc64le-gnu": + "@rollup/rollup-linux-loong64-gnu": + optional: true + "@rollup/rollup-linux-loong64-musl": + optional: true + "@rollup/rollup-linux-ppc64-gnu": + optional: true + "@rollup/rollup-linux-ppc64-musl": optional: true "@rollup/rollup-linux-riscv64-gnu": optional: true + "@rollup/rollup-linux-riscv64-musl": + optional: true "@rollup/rollup-linux-s390x-gnu": optional: true "@rollup/rollup-linux-x64-gnu": optional: true "@rollup/rollup-linux-x64-musl": optional: true + "@rollup/rollup-openbsd-x64": + optional: true + "@rollup/rollup-openharmony-arm64": + optional: true "@rollup/rollup-win32-arm64-msvc": optional: true "@rollup/rollup-win32-ia32-msvc": optional: true + "@rollup/rollup-win32-x64-gnu": + optional: true "@rollup/rollup-win32-x64-msvc": optional: true fsevents: optional: true bin: rollup: dist/bin/rollup - checksum: 0fbee8c14d9052624c76a09fe79ed4d46024832be3ceea86c69f1521ae84b581a64c6e6596fdd796030c206835987e1a0a3be85f4c0d35b71400be5dce799d12 + checksum: 6866a35efc999990e191fc954a859ba802d13be63ca13b04746459455982f6b8784d92e5eea8db3ef8acf8baba8c43e8e6cb741f3233ba4c46adf148d3708a9c languageName: node linkType: hard @@ -3648,7 +3577,7 @@ __metadata: languageName: node linkType: hard -"safe-buffer@npm:5.2.1, safe-buffer@npm:~5.2.0": +"safe-buffer@npm:5.2.1": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" checksum: 32872cd0ff68a3ddade7a7617b8f4c2ae8764d8b7d884c651b74457967a9e0e886267d3ecc781220629c44a865167b61c375d2da6c720c840ecd73f45d5d9451 @@ -3682,26 +3611,6 @@ __metadata: languageName: node linkType: hard -"set-blocking@npm:^2.0.0": - version: 2.0.0 - resolution: "set-blocking@npm:2.0.0" - checksum: 8980ebf7ae9eb945bb036b6e283c547ee783a1ad557a82babf758a065e2fb6ea337fd82cac30dd565c1e606e423f30024a19fff7afbf4977d784720c4026a8ef - languageName: node - linkType: hard - -"set-function-length@npm:^1.1.1": - version: 1.2.0 - resolution: "set-function-length@npm:1.2.0" - dependencies: - define-data-property: "npm:^1.1.1" - function-bind: "npm:^1.1.2" - get-intrinsic: "npm:^1.2.2" - gopd: "npm:^1.0.1" - has-property-descriptors: "npm:^1.0.1" - checksum: 6d609cd060c488d7d2178a5d4c3689f8a6afa26fa4c48ff4a0516664ff9b84c1c0898915777f5628092dab55c4fcead205525e2edd15c659423bf86f790fdcae - languageName: node - linkType: hard - "setprototypeof@npm:1.1.0": version: 1.1.0 resolution: "setprototypeof@npm:1.1.0" @@ -3744,18 +3653,55 @@ __metadata: languageName: node linkType: hard -"side-channel@npm:^1.0.4": - version: 1.0.4 - resolution: "side-channel@npm:1.0.4" +"side-channel-list@npm:^1.0.0": + version: 1.0.0 + resolution: "side-channel-list@npm:1.0.0" dependencies: - call-bind: "npm:^1.0.0" - get-intrinsic: "npm:^1.0.2" - object-inspect: "npm:^1.9.0" - checksum: c4998d9fc530b0e75a7fd791ad868fdc42846f072734f9080ff55cc8dc7d3899abcda24fd896aa6648c3ab7021b4bb478073eb4f44dfd55bce9714bc1a7c5d45 + es-errors: "npm:^1.3.0" + object-inspect: "npm:^1.13.3" + checksum: 603b928997abd21c5a5f02ae6b9cc36b72e3176ad6827fab0417ead74580cc4fb4d5c7d0a8a2ff4ead34d0f9e35701ed7a41853dac8a6d1a664fcce1a044f86f languageName: node linkType: hard -"signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7": +"side-channel-map@npm:^1.0.1": + version: 1.0.1 + resolution: "side-channel-map@npm:1.0.1" + dependencies: + call-bound: "npm:^1.0.2" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.5" + object-inspect: "npm:^1.13.3" + checksum: 5771861f77feefe44f6195ed077a9e4f389acc188f895f570d56445e251b861754b547ea9ef73ecee4e01fdada6568bfe9020d2ec2dfc5571e9fa1bbc4a10615 + languageName: node + linkType: hard + +"side-channel-weakmap@npm:^1.0.2": + version: 1.0.2 + resolution: "side-channel-weakmap@npm:1.0.2" + dependencies: + call-bound: "npm:^1.0.2" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.5" + object-inspect: "npm:^1.13.3" + side-channel-map: "npm:^1.0.1" + checksum: a815c89bc78c5723c714ea1a77c938377ea710af20d4fb886d362b0d1f8ac73a17816a5f6640f354017d7e292a43da9c5e876c22145bac00b76cfb3468001736 + languageName: node + linkType: hard + +"side-channel@npm:^1.1.0": + version: 1.1.0 + resolution: "side-channel@npm:1.1.0" + dependencies: + es-errors: "npm:^1.3.0" + object-inspect: "npm:^1.13.3" + side-channel-list: "npm:^1.0.0" + side-channel-map: "npm:^1.0.1" + side-channel-weakmap: "npm:^1.0.2" + checksum: 7d53b9db292c6262f326b6ff3bc1611db84ece36c2c7dc0e937954c13c73185b0406c56589e2bb8d071d6fee468e14c39fb5d203ee39be66b7b8174f179afaba + languageName: node + linkType: hard + +"signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3": version: 3.0.7 resolution: "signal-exit@npm:3.0.7" checksum: a2f098f247adc367dffc27845853e9959b9e88b01cb301658cfe4194352d8d2bb32e18467c786a7fe15f1d44b233ea35633d076d5e737870b7139949d1ab6318 @@ -3787,18 +3733,7 @@ __metadata: languageName: node linkType: hard -"socks-proxy-agent@npm:^6.1.1": - version: 6.1.1 - resolution: "socks-proxy-agent@npm:6.1.1" - dependencies: - agent-base: "npm:^6.0.2" - debug: "npm:^4.3.1" - socks: "npm:^2.6.1" - checksum: 53fb7d34bf3e5ed9cf4de73bf5c18b351d75c4a8757a0c0e384c2a7c86adf688e5f5e8f72eee7bc6c01ff619458f621ccf9d172bc986adb05f10fa0c9599c39e - languageName: node - linkType: hard - -"socks-proxy-agent@npm:^8.0.5": +"socks-proxy-agent@npm:^8.0.3, socks-proxy-agent@npm:^8.0.5": version: 8.0.5 resolution: "socks-proxy-agent@npm:8.0.5" dependencies: @@ -3809,23 +3744,13 @@ __metadata: languageName: node linkType: hard -"socks@npm:^2.6.1": - version: 2.8.3 - resolution: "socks@npm:2.8.3" - dependencies: - ip-address: "npm:^9.0.5" - smart-buffer: "npm:^4.2.0" - checksum: ffcb622c22481dfcd7589aae71fbfd71ca34334064d181df64bf8b7feaeee19706aba4cffd1de35cc7bbaeeaa0af96be2d7f40fcbc7bc0ab69533a7ae9ffc4fb - languageName: node - linkType: hard - "socks@npm:^2.8.3": - version: 2.8.4 - resolution: "socks@npm:2.8.4" + version: 2.8.9 + resolution: "socks@npm:2.8.9" dependencies: - ip-address: "npm:^9.0.5" + ip-address: "npm:^10.1.1" smart-buffer: "npm:^4.2.0" - checksum: ab3af97aeb162f32c80e176c717ccf16a11a6ebb4656a62b94c0f96495ea2a1f4a8206c04b54438558485d83d0c5f61920c07a1a5d3963892a589b40cc6107dd + checksum: 8675e6b023faeaa5c2511664b106fd21f5d5ecb403584412e0efae58a76e0c0661c0c18ca340988f6cb398232308dae85fb710f847c9c6e0a6af33b07e4cd33a languageName: node linkType: hard @@ -3843,19 +3768,12 @@ __metadata: languageName: node linkType: hard -"sprintf-js@npm:^1.1.3": - version: 1.1.3 - resolution: "sprintf-js@npm:1.1.3" - checksum: e7587128c423f7e43cc625fe2f87e6affdf5ca51c1cc468e910d8aaca46bb44a7fbcfa552f787b1d3987f7043aeb4527d1b99559e6621e01b42b3f45e5a24cbb - languageName: node - linkType: hard - -"ssri@npm:^8.0.1": - version: 8.0.1 - resolution: "ssri@npm:8.0.1" +"ssri@npm:^13.0.0": + version: 13.0.1 + resolution: "ssri@npm:13.0.1" dependencies: - minipass: "npm:^3.1.1" - checksum: fde247b7107674d9a424a20f9c1a6e3ad88a139c2636b9d9ffa7df59e85e11a894cdae48fadd0ad6be41eb0d5b847fe094736513d333615c7eebc3d111abe0d2 + minipass: "npm:^7.0.3" + checksum: ae560d0378d074006a71b06af71bfbe84a3fe1ac6e16c1f07575f69e670d40170507fe52b21bcc23399429bc6a15f4bc3ea8d9bc88e9dfd7e87de564e6da6a72 languageName: node linkType: hard @@ -3904,7 +3822,7 @@ __metadata: languageName: node linkType: hard -"string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": +"string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": version: 4.2.3 resolution: "string-width@npm:4.2.3" dependencies: @@ -3915,15 +3833,6 @@ __metadata: languageName: node linkType: hard -"string_decoder@npm:^1.1.1": - version: 1.3.0 - resolution: "string_decoder@npm:1.3.0" - dependencies: - safe-buffer: "npm:~5.2.0" - checksum: 54d23f4a6acae0e93f999a585e673be9e561b65cd4cca37714af1e893ab8cd8dfa52a9e4f58f48f87b4a44918d3a9254326cb80ed194bf2e4c226e2b21767e56 - languageName: node - linkType: hard - "strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": version: 6.0.1 resolution: "strip-ansi@npm:6.0.1" @@ -4010,17 +3919,16 @@ __metadata: languageName: node linkType: hard -"tar@npm:^6.1.11, tar@npm:^6.1.2": - version: 6.2.1 - resolution: "tar@npm:6.2.1" +"tar@npm:^7.5.4": + version: 7.5.19 + resolution: "tar@npm:7.5.19" dependencies: - chownr: "npm:^2.0.0" - fs-minipass: "npm:^2.0.0" - minipass: "npm:^5.0.0" - minizlib: "npm:^2.1.1" - mkdirp: "npm:^1.0.3" - yallist: "npm:^4.0.0" - checksum: bfbfbb2861888077fc1130b84029cdc2721efb93d1d1fb80f22a7ac3a98ec6f8972f29e564103bbebf5e97be67ebc356d37fa48dbc4960600a1eb7230fbd1ea0 + "@isaacs/fs-minipass": "npm:^4.0.0" + chownr: "npm:^3.0.0" + minipass: "npm:^7.1.2" + minizlib: "npm:^3.1.0" + yallist: "npm:^5.0.0" + checksum: 0b06a0917fe68a4dff361e147db30fd67ae2ee85ab2863d62046a6ccef46f0d1906eed20f92277a436300eaaa0e3cd31d8763d7f02fa389f41d7966e58388db8 languageName: node linkType: hard @@ -4040,6 +3948,16 @@ __metadata: languageName: node linkType: hard +"tinyglobby@npm:^0.2.12": + version: 0.2.15 + resolution: "tinyglobby@npm:0.2.15" + dependencies: + fdir: "npm:^6.5.0" + picomatch: "npm:^4.0.3" + checksum: d72bd826a8b0fa5fa3929e7fe5ba48fceb2ae495df3a231b6c5408cd7d8c00b58ab5a9c2a76ba56a62ee9b5e083626f1f33599734bed1ffc4b792406408f0ca2 + languageName: node + linkType: hard + "to-regex-range@npm:^5.0.1": version: 5.0.1 resolution: "to-regex-range@npm:5.0.1" @@ -4163,24 +4081,6 @@ __metadata: languageName: node linkType: hard -"unique-filename@npm:^1.1.1": - version: 1.1.1 - resolution: "unique-filename@npm:1.1.1" - dependencies: - unique-slug: "npm:^2.0.0" - checksum: 9b6969d649a2096755f19f793315465c6427453b66d67c2a1bee8f36ca7e1fc40725be2c028e974dec110d365bd30a4248e89b1044dc1dfe29663b6867d071ef - languageName: node - linkType: hard - -"unique-slug@npm:^2.0.0": - version: 2.0.2 - resolution: "unique-slug@npm:2.0.2" - dependencies: - imurmurhash: "npm:^0.1.4" - checksum: 6cfaf91976acc9c125fd0686c561ee9ca0784bb4b2b408972e6cd30e747b4ff0ca50264c01bcf5e711b463535ea611ffb84199e9f73088cd79ac9ddee8154042 - languageName: node - linkType: hard - "universalify@npm:^0.1.0": version: 0.1.2 resolution: "universalify@npm:0.1.2" @@ -4202,13 +4102,6 @@ __metadata: languageName: node linkType: hard -"util-deprecate@npm:^1.0.1": - version: 1.0.2 - resolution: "util-deprecate@npm:1.0.2" - checksum: 474acf1146cb2701fe3b074892217553dfcf9a031280919ba1b8d651a068c9b15d863b7303cb15bd00a862b498e6cf4ad7b4a08fb134edd5a6f7641681cb54a2 - languageName: node - linkType: hard - "v8-to-istanbul@npm:^9.0.1": version: 9.2.0 resolution: "v8-to-istanbul@npm:9.2.0" @@ -4247,7 +4140,7 @@ __metadata: dependencies: "@types/jasmine": "npm:^5.1.4" "@web/dev-server": "npm:^0.4.6" - "@web/test-runner": "npm:^0.20.0" + "@web/test-runner": "npm:^0.20.2" "@web/test-runner-core": "npm:^0.13.4" comlink: "npm:^4.4.1" jasmine-core: "npm:^4.5.0" @@ -4289,7 +4182,7 @@ __metadata: languageName: node linkType: hard -"which@npm:^2.0.1, which@npm:^2.0.2": +"which@npm:^2.0.1": version: 2.0.2 resolution: "which@npm:2.0.2" dependencies: @@ -4300,12 +4193,14 @@ __metadata: languageName: node linkType: hard -"wide-align@npm:^1.1.5": - version: 1.1.5 - resolution: "wide-align@npm:1.1.5" +"which@npm:^6.0.0": + version: 6.0.1 + resolution: "which@npm:6.0.1" dependencies: - string-width: "npm:^1.0.2 || 2 || 3 || 4" - checksum: d5f8027b9a8255a493a94e4ec1b74a27bff6679d5ffe29316a3215e4712945c84ef73ca4045c7e20ae7d0c72f5f57f296e04a4928e773d4276a2f1222e4c2e99 + isexe: "npm:^4.0.0" + bin: + node-which: bin/which.js + checksum: dbea77c7d3058bf6c78bf9659d2dce4d2b57d39a15b826b2af6ac2e5a219b99dc8a831b79fdbc453c0598adb4f3f84cf9c2491fd52beb9f5d2dececcad117f68 languageName: node linkType: hard @@ -4389,6 +4284,13 @@ __metadata: languageName: node linkType: hard +"yallist@npm:^5.0.0": + version: 5.0.0 + resolution: "yallist@npm:5.0.0" + checksum: 1884d272d485845ad04759a255c71775db0fac56308764b4c77ea56a20d56679fad340213054c8c9c9c26fcfd4c4b2a90df993b7e0aaf3cdb73c618d1d1a802a + languageName: node + linkType: hard + "yargs-parser@npm:^21.1.1": version: 21.1.1 resolution: "yargs-parser@npm:21.1.1"