From cf0887e0e751797b7c91f10a4ba9ed6da87c193a Mon Sep 17 00:00:00 2001 From: wangdequan Date: Mon, 8 Jun 2026 08:49:38 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8C=89=E8=A7=84=E5=88=92=E7=BB=A7=E7=BB=AD?= =?UTF-8?q?=E5=B7=A5=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 结论:接入 LinuxCNC iniFindBool 到 INI WASM/SDK,并让 machine-session bridge 通过 vendored INI 解析 [EMCIO]RANDOM_TOOLCHANGER 后透传给 tooldata;native、WASM、OPFS 和浏览器 smoke 验证已通过。 --- wasm-port/docs/compatibility-validation.md | 14 ++++--- wasm-port/docs/drift-report.md | 4 +- wasm-port/docs/source-reuse-map.md | 8 ++-- .../core/linuxcnc_wrap/linuxcnc_ini_wasm.cpp | 13 +++++++ .../opfs/linuxcnc-machine-session-bridge.js | 27 ++++++++++++- wasm-port/runtime/sdk/README.md | 3 +- wasm-port/runtime/sdk/src/linuxcnc-ini.js | 17 +++++++++ wasm-port/runtime/ui/ini-panel/app.js | 5 ++- .../runtime/ui/ini-panel/linuxcnc_ini.js | 2 +- .../runtime/ui/ini-panel/linuxcnc_ini.wasm | Bin 347954 -> 351828 bytes wasm-port/tests/browser/interp_smoke.html | 28 ++++++++++++-- .../tests/browser/verify_interp_browser.sh | 3 ++ wasm-port/tests/host/verify_host_smokes.sh | 2 +- .../tests/opfs/node/verify_file_service.mjs | 36 ++++++++++++++++++ wasm-port/tests/wasm/node/verify_ini_wasm.mjs | 7 ++++ wasm-port/tools/build_ini_panel.sh | 2 +- 16 files changed, 151 insertions(+), 20 deletions(-) diff --git a/wasm-port/docs/compatibility-validation.md b/wasm-port/docs/compatibility-validation.md index b2ac3f3..523e250 100644 --- a/wasm-port/docs/compatibility-validation.md +++ b/wasm-port/docs/compatibility-validation.md @@ -74,8 +74,9 @@ The native validation script runs these checks in order: The WASM INI smoke script builds `runtime/ui/ini-panel/linuxcnc_ini.js` and `linuxcnc_ini.wasm` from vendored LinuxCNC `inifile.cc`, then loads that -module through `runtime/sdk/src/index.js` in Node and verifies INI -queries against a file written to the Emscripten filesystem. +module through `runtime/sdk/src/index.js` in Node and verifies INI string and +boolean queries against a file written to the Emscripten filesystem. Boolean +conversion is validated through vendored LinuxCNC `iniFindBool()`. The WASM interpreter-core smoke script builds `build/wasm/core/linuxcnc_interp.js` and `linuxcnc_interp.wasm` from the same @@ -252,10 +253,11 @@ smoke harness, the INI panel UI's machine-session load and G-code run buttons, the raw canonical-event display fed directly by LinuxCNC interpreter WASM output, the Node parameter/tool-table bridges that copy OPFS text through the SDK into vendored LinuxCNC file APIs, the Node machine-session bridge that -groups INI, parameter, and tool-table loading, the random-toolchanger flag as -a host boundary passed through to the LinuxCNC-backed tool-table ABI, and a -browser interpreter smoke that uses the same session bridge before saving -OPFS-backed parameter and tool-table text through vendored LinuxCNC file APIs. +groups INI, parameter, and tool-table loading, the random-toolchanger flag +derived from vendored LinuxCNC INI boolean parsing and passed through to the +LinuxCNC-backed tool-table ABI, and a browser interpreter smoke that uses the +same session bridge before saving OPFS-backed parameter and tool-table text +through vendored LinuxCNC file APIs. Full browser coverage, full SDK coverage, and richer machine-state validation remain future work. diff --git a/wasm-port/docs/drift-report.md b/wasm-port/docs/drift-report.md index b9e5e1b..bae036e 100644 --- a/wasm-port/docs/drift-report.md +++ b/wasm-port/docs/drift-report.md @@ -24,7 +24,7 @@ semantic rewrites: | --- | --- | | RTAPI | Minimal compatibility shim in `runtime/core/shims/rtapi.h`. | | HAL lookup | Standalone HAL adapter for `_hal[...]` named parameter reads. | -| INI lookup | Standalone INI adapter around vendored LinuxCNC INI parser behavior. | +| INI lookup | Standalone INI adapter around vendored LinuxCNC INI parser behavior, including boolean conversion through LinuxCNC `iniFindBool()`. | | Canonical output | Canonical calls are captured as test events instead of driving hardware. | | Feed-rate state | `SET_FEED_RATE` updates standalone canonical runtime state so vendored `convert_length_units()` can read it back through `GET_EXTERNAL_FEED_RATE()` during G20/G21 changes. | | Tool-data reload | LinuxCNC `RELOAD_TOOLDATA` is captured as a canonical test event; browser/native tool-table reload plumbing remains a future host/runtime adapter. | @@ -44,7 +44,7 @@ semantic rewrites: | Kinematics component lifecycle | Kinematics modules are initialized through LinuxCNC module entry points where native runtime probes exist, while HAL component init/ready/exit, HAL pin allocation, and RTAPI module metadata are handled by standalone shims. | | Go math C/C++ linkage | `genserkins` runtime probing compiles vendored `gomath.c` through a narrow C++ wrapper so LinuxCNC `genserfuncs.c` can link to the upstream Go math symbols without editing vendored source. | | Switchkins iterative forward | `genhexkins` runtime probing follows LinuxCNC switchkins iterative-forward behavior, including the first-call warmup path before asserting roundtrip convergence. | -| Browser storage | OPFS remains outside the native core; `runtime/opfs/file-service.js` owns browser text-file persistence, `runtime/opfs/path-model.js` owns host-side storage paths for INI, tool table, parameter, G-code, preview-cache, and session-snapshot content, `runtime/opfs/snapshot-store.js` owns generic JSON session snapshot persistence, `runtime/opfs/machine-file-store.js` owns pure-text machine-file and G-code persistence, `runtime/opfs/linuxcnc-parameter-bridge.js` only copies parameter files between OPFS text storage and the LinuxCNC-backed WASM parameter-file ABI, `runtime/opfs/linuxcnc-tool-table-bridge.js` only copies tool tables between OPFS text storage and the LinuxCNC-backed WASM tool-table ABI, and `runtime/opfs/linuxcnc-machine-session-bridge.js` groups INI, parameter, and tool-table loading without interpreting their CNC semantics. | +| Browser storage | OPFS remains outside the native core; `runtime/opfs/file-service.js` owns browser text-file persistence, `runtime/opfs/path-model.js` owns host-side storage paths for INI, tool table, parameter, G-code, preview-cache, and session-snapshot content, `runtime/opfs/snapshot-store.js` owns generic JSON session snapshot persistence, `runtime/opfs/machine-file-store.js` owns pure-text machine-file and G-code persistence, `runtime/opfs/linuxcnc-parameter-bridge.js` only copies parameter files between OPFS text storage and the LinuxCNC-backed WASM parameter-file ABI, `runtime/opfs/linuxcnc-tool-table-bridge.js` only copies tool tables between OPFS text storage and the LinuxCNC-backed WASM tool-table ABI, and `runtime/opfs/linuxcnc-machine-session-bridge.js` groups INI, parameter, and tool-table loading while using the LinuxCNC-backed INI SDK for `[EMCIO]RANDOM_TOOLCHANGER` when available. | ## Enforced Non-Drift Rules diff --git a/wasm-port/docs/source-reuse-map.md b/wasm-port/docs/source-reuse-map.md index 9a80abe..1810043 100644 --- a/wasm-port/docs/source-reuse-map.md +++ b/wasm-port/docs/source-reuse-map.md @@ -33,7 +33,7 @@ Current validation is intentionally mechanical: | Capability | LinuxCNC source files | Port classification | Standalone boundary | Current validation | | --- | --- | --- | --- | --- | -| INI parsing | `src/emc/ini/inifile.cc`, `inifile.h`, `inifile.hh` | Copy unchanged | Native file IO remains LinuxCNC-style in the vendored parser; browser OPFS integration remains outside this layer; `runtime/sdk/src/index.js` exports the INI SDK wrapper around the generated WASM C ABI | Vendor byte sync, `linuxcnc_ini_probe`, `linuxcnc_inifile_source_probe`, `tests/wasm/node/verify_ini_wasm.sh`, `tests/browser/verify_ini_panel_browser.sh`, `tests/host/verify_host_smokes.sh` | +| INI parsing | `src/emc/ini/inifile.cc`, `inifile.h`, `inifile.hh` | Copy unchanged | Native file IO remains LinuxCNC-style in the vendored parser; browser OPFS integration remains outside this layer; `runtime/sdk/src/index.js` exports the INI SDK wrapper around the generated WASM C ABI, including LinuxCNC `iniFindBool()` for machine-session flags | Vendor byte sync, `linuxcnc_ini_probe`, `linuxcnc_inifile_source_probe`, `tests/wasm/node/verify_ini_wasm.sh`, `tests/browser/verify_ini_panel_browser.sh`, `tests/host/verify_host_smokes.sh` | | RTAPI compatibility headers | `src/rtapi/rtapi_*.h` in the manifest | Copy unchanged plus standalone shim include path | `runtime/core/shims/rtapi.h` supplies the minimal standalone RTAPI surface needed by vendored code | Vendor byte sync, compile coverage through dependent source probes | | Canon/NML-facing interpreter types | `src/emc/nml_intf/canon*.hh`, `emctool.h`, `interp_return.hh`, `motion_types.h`, `emcpose.*`, `emcpos.h`, `debugflags.h`, `src/emc/linuxcnc.h` | Copy unchanged plus narrow standalone status shim | NML transport is not ported; `runtime/core/shims/nml_intf/emc.hh` exposes only the `emcStatus` machine-units status edge currently needed by vendored interpreter conversion and initialization code | Vendor byte sync, dependent source probes, `linuxcnc_emc_status_probe`, `linuxcnc_tp_api_probe`, interpreter harnesses | | Motion state headers | `src/emc/motion/state_tag.h`, `emcmotcfg.h`, `simple_tp.h`, `motion.h`, `mot_priv.h`, `axis.h` | Copy unchanged | Realtime motion process is not ported; standalone probes seed the small motion status/config state required by TP calls | Vendor byte sync, `linuxcnc_tp_api_probe` | @@ -92,6 +92,8 @@ Current validation is intentionally mechanical: copies OPFS-backed tool tables into the interpreter SDK filesystem and writes back the LinuxCNC-saved tool table. `runtime/opfs/linuxcnc-machine-session-bridge.js` groups INI, parameter, and - tool-table loading into one host-side session load boundary. Full - machine-state restoration remains future work. + tool-table loading into one host-side session load boundary and can derive + the random-toolchanger tooldata mode from `[EMCIO]RANDOM_TOOLCHANGER` through + the LinuxCNC-backed INI SDK. Full machine-state restoration remains future + work. - Native LinuxCNC GUI code remains out of scope for implementation. diff --git a/wasm-port/runtime/core/linuxcnc_wrap/linuxcnc_ini_wasm.cpp b/wasm-port/runtime/core/linuxcnc_wrap/linuxcnc_ini_wasm.cpp index 7def71c..8c42ef6 100644 --- a/wasm-port/runtime/core/linuxcnc_wrap/linuxcnc_ini_wasm.cpp +++ b/wasm-port/runtime/core/linuxcnc_wrap/linuxcnc_ini_wasm.cpp @@ -13,6 +13,19 @@ int lcini_get_string(const char *inipath, return iniFindString(inipath, tag, section, buf, static_cast(bufsize)); } +EMSCRIPTEN_KEEPALIVE +int lcini_get_bool(const char *inipath, + const char *section, + const char *tag, + int *result) { + bool value = false; + const int rc = iniFindBool(inipath, tag, section, &value); + if (rc == 0 && result) { + *result = value ? 1 : 0; + } + return rc; +} + EMSCRIPTEN_KEEPALIVE int lcini_tilde_expand(const char *path, char *buf, int bufsize) { return TildeExpansion(path, buf, static_cast(bufsize)); diff --git a/wasm-port/runtime/opfs/linuxcnc-machine-session-bridge.js b/wasm-port/runtime/opfs/linuxcnc-machine-session-bridge.js index 569efef..af62cc5 100644 --- a/wasm-port/runtime/opfs/linuxcnc-machine-session-bridge.js +++ b/wasm-port/runtime/opfs/linuxcnc-machine-session-bridge.js @@ -17,6 +17,17 @@ function requireSessionSdk(interp) { } } +function requireIniSdk(iniSdk) { + if (!iniSdk) { + return; + } + for (const method of ["writeTextFile", "getBool"]) { + if (typeof iniSdk[method] !== "function") { + throw new Error(`INI SDK is missing ${method}().`); + } + } +} + function resolveSessionPaths(machineId, options = {}) { return { iniOpfsPath: options.iniOpfsPath ?? machineIniPath(machineId, options.iniFilename), @@ -30,11 +41,25 @@ function resolveSessionPaths(machineId, options = {}) { }; } +function randomToolChangerFromIni(iniSdk, iniWasmPath, iniText) { + if (!iniSdk) { + return false; + } + + iniSdk.writeTextFile(iniWasmPath, iniText); + return iniSdk.getBool(iniWasmPath, "EMCIO", "RANDOM_TOOLCHANGER") === true; +} + export async function loadMachineSessionFromOpfs(interp, machineId, options = {}) { requireSessionSdk(interp); + requireIniSdk(options.iniSdk); const paths = resolveSessionPaths(machineId, options); const iniText = await loadTextFile(paths.iniOpfsPath, options.storage); interp.writeTextFile(paths.iniWasmPath, iniText); + const randomToolChanger = + typeof options.randomToolChanger === "boolean" + ? options.randomToolChanger + : randomToolChangerFromIni(options.iniSdk, paths.iniWasmPath, iniText); const parameters = await restoreMachineParametersFromOpfs(interp, machineId, { storage: options.storage, @@ -45,7 +70,7 @@ export async function loadMachineSessionFromOpfs(interp, machineId, options = {} storage: options.storage, opfsPath: paths.toolTableOpfsPath, wasmPath: paths.toolTableWasmPath, - randomToolChanger: options.randomToolChanger === true, + randomToolChanger, }); return { diff --git a/wasm-port/runtime/sdk/README.md b/wasm-port/runtime/sdk/README.md index 350ba68..a319c23 100644 --- a/wasm-port/runtime/sdk/README.md +++ b/wasm-port/runtime/sdk/README.md @@ -29,7 +29,8 @@ import { ``` `createLinuxCncIniSdk()` wraps the INI parser module built from vendored -LinuxCNC `inifile.cc`. +LinuxCNC `inifile.cc` and exposes `getString()` plus `getBool()`. Boolean +conversion is performed by vendored LinuxCNC `iniFindBool()`. `createLinuxCncInterpSdk()` wraps the interpreter-core module built from vendored LinuxCNC RS274NGC sources and exposes: diff --git a/wasm-port/runtime/sdk/src/linuxcnc-ini.js b/wasm-port/runtime/sdk/src/linuxcnc-ini.js index 38a75d7..9f4ff2b 100644 --- a/wasm-port/runtime/sdk/src/linuxcnc-ini.js +++ b/wasm-port/runtime/sdk/src/linuxcnc-ini.js @@ -55,6 +55,23 @@ export async function createLinuxCncIniSdk(moduleOptions = {}) { } }, + getBool(path, section, tag) { + const pathPtr = allocCString(mod, path); + const sectionPtr = allocCString(mod, section); + const tagPtr = allocCString(mod, tag); + const outPtr = mod._malloc(4); + + try { + const rc = mod._lcini_get_bool(pathPtr, sectionPtr, tagPtr, outPtr); + return rc === 0 ? mod.HEAP32[outPtr >> 2] !== 0 : null; + } finally { + mod._free(pathPtr); + mod._free(sectionPtr); + mod._free(tagPtr); + mod._free(outPtr); + } + }, + getFields(path, fields) { return Object.fromEntries( Object.entries(fields).map(([name, query]) => [ diff --git a/wasm-port/runtime/ui/ini-panel/app.js b/wasm-port/runtime/ui/ini-panel/app.js index 42a87f9..6d76ef9 100644 --- a/wasm-port/runtime/ui/ini-panel/app.js +++ b/wasm-port/runtime/ui/ini-panel/app.js @@ -204,7 +204,10 @@ document.getElementById("load-session").addEventListener("click", async () => { loadedSession = await loadMachineSessionFromOpfs( requireInterpSdk(), MACHINE_ID, - SESSION_WASM_FILES, + { + ...SESSION_WASM_FILES, + iniSdk: requireIniSdk(), + }, ); setField("sessionIni", loadedSession.ini.wasmPath); setField("sessionParameters", loadedSession.parameters.wasmPath); diff --git a/wasm-port/runtime/ui/ini-panel/linuxcnc_ini.js b/wasm-port/runtime/ui/ini-panel/linuxcnc_ini.js index 55cd3c7..bcaf9f8 100644 --- a/wasm-port/runtime/ui/ini-panel/linuxcnc_ini.js +++ b/wasm-port/runtime/ui/ini-panel/linuxcnc_ini.js @@ -6,7 +6,7 @@ var Module = (() => { async 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"&&process.type!="renderer";if(ENVIRONMENT_IS_NODE){const{createRequire}=await import("module");let dirname=import.meta.url;if(dirname.startsWith("data:")){dirname="/"}var require=createRequire(dirname)}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 readAsync,readBinary;if(ENVIRONMENT_IS_NODE){var fs=require("fs");var nodePath=require("path");if(!import.meta.url.startsWith("data:")){scriptDirectory=nodePath.dirname(require("url").fileURLToPath(import.meta.url))+"/"}readBinary=filename=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);var ret=fs.readFileSync(filename);return ret};readAsync=(filename,binary=true)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return new Promise((resolve,reject)=>{fs.readFile(filename,binary?undefined:"utf8",(err,data)=>{if(err)reject(err);else resolve(binary?data.buffer:data)})})};if(!Module["thisProgram"]&&process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptName){scriptDirectory=_scriptName}if(scriptDirectory.startsWith("blob:")){scriptDirectory=""}else{scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}{readAsync=url=>fetch(url,{credentials:"same-origin"}).then(response=>{if(response.ok){return response.arrayBuffer()}return Promise.reject(new Error(response.status+" : "+response.url))})}}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"];var wasmBinary=Module["wasmBinary"];function intArrayFromBase64(s){if(typeof ENVIRONMENT_IS_NODE!="undefined"&&ENVIRONMENT_IS_NODE){var buf=Buffer.from(s,"base64");return new Uint8Array(buf.buffer,buf.byteOffset,buf.length)}var decoded=atob(s);var bytes=new Uint8Array(decoded.length);for(var i=0;ifilename.startsWith(dataURIPrefix);var isFileURI=filename=>filename.startsWith("file://");function findWasmBinary(){if(Module["locateFile"]){var f="linuxcnc_ini.wasm";if(!isDataURI(f)){return locateFile(f)}return f}return new URL("linuxcnc_ini.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 readAsync(binaryFile).then(response=>new Uint8Array(response),()=>getBinarySync(binaryFile))}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)&&!ENVIRONMENT_IS_NODE&&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{env:wasmImports,wasi_snapshot_preview1:wasmImports}}function createWasm(){var info=getWasmImports();function receiveInstance(instance,module){wasmExports=instance.exports;wasmMemory=wasmExports["memory"];updateMemoryViews();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)}}wasmBinaryFile??=findWasmBinary();instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult).catch(readyPromiseReject);return{}}var tempDouble;var tempI64;var callRuntimeCallbacks=callbacks=>{callbacks.forEach(f=>f(Module))};var noExitRuntime=Module["noExitRuntime"]||true;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 exceptionLast=0;var uncaughtExceptionCount=0;var ___cxa_throw=(ptr,type,destructor)=>{var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;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.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 if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");var randomFillSync=crypto_module["randomFillSync"];if(randomFillSync){return view=>crypto_module["randomFillSync"](view)}var randomBytes=crypto_module["randomBytes"];return view=>(view.set(randomBytes(view.byteLength)),view)}catch(e){}}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 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 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=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(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc(BUFSIZE);var bytesRead=0;var fd=process.stdin.fd;try{bytesRead=fs.readSync(fd,buf,0,BUFSIZE)}catch(e){if(e.toString().includes("EOF"))bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}}else if(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};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&&tty.output.length>0){err(UTF8ArrayToString(tty.output));tty.output=[]}}}};var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var mmapAlloc=size=>{abort()};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).then(arrayBuffer=>{onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},err=>{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,readFiles:{},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,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||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(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(){[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}},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 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}}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 UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):"";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*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},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_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}}function ___syscall_lstat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.lstat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_newfstatat(dirfd,path,buf,flags){try{path=SYSCALLS.getStr(path);var nofollow=flags&256;var allowEmpty=flags&4096;flags=flags&~6400;path=SYSCALLS.calculateAt(dirfd,path,allowEmpty);return SYSCALLS.doStat(nofollow?FS.lstat:FS.stat,path,buf)}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}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?syscallGetVarargI():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var __abort_js=()=>{abort("")};var __emscripten_memcpy_js=(dest,src,num)=>HEAPU8.copyWithin(dest,src,src+num);var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);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(summerOffset2147483648;var growMemory=size=>{var b=wasmMemory.buffer;var pages=(size-b.byteLength+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.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}}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}}var convertI32PairToI53Checked=(lo,hi)=>hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN;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 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 FS_createPath=FS.createPath;var FS_unlink=path=>FS.unlink(path);var FS_createLazyFile=FS.createLazyFile;var FS_createDevice=FS.createDevice;FS.createPreloadedFile=FS_createPreloadedFile;FS.staticInit();Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_unlink"]=FS.unlink;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;var wasmImports={__cxa_throw:___cxa_throw,__syscall_fstat64:___syscall_fstat64,__syscall_lstat64:___syscall_lstat64,__syscall_newfstatat:___syscall_newfstatat,__syscall_openat:___syscall_openat,__syscall_stat64:___syscall_stat64,_abort_js:__abort_js,_emscripten_memcpy_js:__emscripten_memcpy_js,_tzset_js:__tzset_js,emscripten_resize_heap:_emscripten_resize_heap,environ_get:_environ_get,environ_sizes_get:_environ_sizes_get,fd_close:_fd_close,fd_read:_fd_read,fd_seek:_fd_seek,fd_write:_fd_write};var wasmExports=createWasm();var ___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports["__wasm_call_ctors"])();var _lcini_get_string=Module["_lcini_get_string"]=(a0,a1,a2,a3,a4)=>(_lcini_get_string=Module["_lcini_get_string"]=wasmExports["lcini_get_string"])(a0,a1,a2,a3,a4);var _lcini_tilde_expand=Module["_lcini_tilde_expand"]=(a0,a1,a2)=>(_lcini_tilde_expand=Module["_lcini_tilde_expand"]=wasmExports["lcini_tilde_expand"])(a0,a1,a2);var _malloc=Module["_malloc"]=a0=>(_malloc=Module["_malloc"]=wasmExports["malloc"])(a0);var _free=Module["_free"]=a0=>(_free=Module["_free"]=wasmExports["free"])(a0);var __emscripten_tempret_set=a0=>(__emscripten_tempret_set=wasmExports["_emscripten_tempret_set"])(a0);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 dynCall_viijii=Module["dynCall_viijii"]=(a0,a1,a2,a3,a4,a5,a6)=>(dynCall_viijii=Module["dynCall_viijii"]=wasmExports["dynCall_viijii"])(a0,a1,a2,a3,a4,a5,a6);var dynCall_jiji=Module["dynCall_jiji"]=(a0,a1,a2,a3,a4)=>(dynCall_jiji=Module["dynCall_jiji"]=wasmExports["dynCall_jiji"])(a0,a1,a2,a3,a4);var dynCall_iiiiij=Module["dynCall_iiiiij"]=(a0,a1,a2,a3,a4,a5,a6)=>(dynCall_iiiiij=Module["dynCall_iiiiij"]=wasmExports["dynCall_iiiiij"])(a0,a1,a2,a3,a4,a5,a6);var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=(a0,a1,a2,a3,a4,a5,a6,a7,a8)=>(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=wasmExports["dynCall_iiiiijj"])(a0,a1,a2,a3,a4,a5,a6,a7,a8);var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9)=>(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=wasmExports["dynCall_iiiiiijj"])(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9);Module["addRunDependency"]=addRunDependency;Module["removeRunDependency"]=removeRunDependency;Module["UTF8ToString"]=UTF8ToString;Module["stringToUTF8"]=stringToUTF8;Module["lengthBytesUTF8"]=lengthBytesUTF8;Module["FS_createPreloadedFile"]=FS_createPreloadedFile;Module["FS_unlink"]=FS_unlink;Module["FS_createPath"]=FS_createPath;Module["FS_createDevice"]=FS_createDevice;Module["FS"]=FS;Module["FS_createDataFile"]=FS_createDataFile;Module["FS_createLazyFile"]=FS_createLazyFile;var calledRun;var calledPrerun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(){if(runDependencies>0){return}if(!calledPrerun){calledPrerun=1;preRun();if(runDependencies>0){return}}function doRun(){if(calledRun)return;calledRun=1;Module["calledRun"]=1;if(ABORT)return;initRuntime();readyPromiseResolve(Module);Module["onRuntimeInitialized"]?.();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(()=>{setTimeout(()=>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()()}}run();moduleRtn=readyPromise; +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"&&process.type!="renderer";if(ENVIRONMENT_IS_NODE){const{createRequire}=await import("module");let dirname=import.meta.url;if(dirname.startsWith("data:")){dirname="/"}var require=createRequire(dirname)}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 readAsync,readBinary;if(ENVIRONMENT_IS_NODE){var fs=require("fs");var nodePath=require("path");if(!import.meta.url.startsWith("data:")){scriptDirectory=nodePath.dirname(require("url").fileURLToPath(import.meta.url))+"/"}readBinary=filename=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);var ret=fs.readFileSync(filename);return ret};readAsync=(filename,binary=true)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return new Promise((resolve,reject)=>{fs.readFile(filename,binary?undefined:"utf8",(err,data)=>{if(err)reject(err);else resolve(binary?data.buffer:data)})})};if(!Module["thisProgram"]&&process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptName){scriptDirectory=_scriptName}if(scriptDirectory.startsWith("blob:")){scriptDirectory=""}else{scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}{readAsync=url=>fetch(url,{credentials:"same-origin"}).then(response=>{if(response.ok){return response.arrayBuffer()}return Promise.reject(new Error(response.status+" : "+response.url))})}}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"];var wasmBinary=Module["wasmBinary"];function intArrayFromBase64(s){if(typeof ENVIRONMENT_IS_NODE!="undefined"&&ENVIRONMENT_IS_NODE){var buf=Buffer.from(s,"base64");return new Uint8Array(buf.buffer,buf.byteOffset,buf.length)}var decoded=atob(s);var bytes=new Uint8Array(decoded.length);for(var i=0;ifilename.startsWith(dataURIPrefix);var isFileURI=filename=>filename.startsWith("file://");function findWasmBinary(){if(Module["locateFile"]){var f="linuxcnc_ini.wasm";if(!isDataURI(f)){return locateFile(f)}return f}return new URL("linuxcnc_ini.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 readAsync(binaryFile).then(response=>new Uint8Array(response),()=>getBinarySync(binaryFile))}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)&&!ENVIRONMENT_IS_NODE&&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{env:wasmImports,wasi_snapshot_preview1:wasmImports}}function createWasm(){var info=getWasmImports();function receiveInstance(instance,module){wasmExports=instance.exports;wasmMemory=wasmExports["memory"];updateMemoryViews();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)}}wasmBinaryFile??=findWasmBinary();instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult).catch(readyPromiseReject);return{}}var tempDouble;var tempI64;var callRuntimeCallbacks=callbacks=>{callbacks.forEach(f=>f(Module))};var noExitRuntime=Module["noExitRuntime"]||true;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 exceptionLast=0;var uncaughtExceptionCount=0;var ___cxa_throw=(ptr,type,destructor)=>{var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;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.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 if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");var randomFillSync=crypto_module["randomFillSync"];if(randomFillSync){return view=>crypto_module["randomFillSync"](view)}var randomBytes=crypto_module["randomBytes"];return view=>(view.set(randomBytes(view.byteLength)),view)}catch(e){}}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 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 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=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(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc(BUFSIZE);var bytesRead=0;var fd=process.stdin.fd;try{bytesRead=fs.readSync(fd,buf,0,BUFSIZE)}catch(e){if(e.toString().includes("EOF"))bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}}else if(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};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&&tty.output.length>0){err(UTF8ArrayToString(tty.output));tty.output=[]}}}};var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var mmapAlloc=size=>{abort()};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).then(arrayBuffer=>{onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},err=>{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,readFiles:{},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,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||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(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(){[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}},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 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}}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 UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):"";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*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},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_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}}function ___syscall_lstat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.lstat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_newfstatat(dirfd,path,buf,flags){try{path=SYSCALLS.getStr(path);var nofollow=flags&256;var allowEmpty=flags&4096;flags=flags&~6400;path=SYSCALLS.calculateAt(dirfd,path,allowEmpty);return SYSCALLS.doStat(nofollow?FS.lstat:FS.stat,path,buf)}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}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?syscallGetVarargI():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var __abort_js=()=>{abort("")};var __emscripten_memcpy_js=(dest,src,num)=>HEAPU8.copyWithin(dest,src,src+num);var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);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(summerOffset2147483648;var growMemory=size=>{var b=wasmMemory.buffer;var pages=(size-b.byteLength+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.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}}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}}var convertI32PairToI53Checked=(lo,hi)=>hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN;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 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 FS_createPath=FS.createPath;var FS_unlink=path=>FS.unlink(path);var FS_createLazyFile=FS.createLazyFile;var FS_createDevice=FS.createDevice;FS.createPreloadedFile=FS_createPreloadedFile;FS.staticInit();Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_unlink"]=FS.unlink;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;var wasmImports={__cxa_throw:___cxa_throw,__syscall_fstat64:___syscall_fstat64,__syscall_lstat64:___syscall_lstat64,__syscall_newfstatat:___syscall_newfstatat,__syscall_openat:___syscall_openat,__syscall_stat64:___syscall_stat64,_abort_js:__abort_js,_emscripten_memcpy_js:__emscripten_memcpy_js,_tzset_js:__tzset_js,emscripten_resize_heap:_emscripten_resize_heap,environ_get:_environ_get,environ_sizes_get:_environ_sizes_get,fd_close:_fd_close,fd_read:_fd_read,fd_seek:_fd_seek,fd_write:_fd_write};var wasmExports=createWasm();var ___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports["__wasm_call_ctors"])();var _lcini_get_string=Module["_lcini_get_string"]=(a0,a1,a2,a3,a4)=>(_lcini_get_string=Module["_lcini_get_string"]=wasmExports["lcini_get_string"])(a0,a1,a2,a3,a4);var _lcini_get_bool=Module["_lcini_get_bool"]=(a0,a1,a2,a3)=>(_lcini_get_bool=Module["_lcini_get_bool"]=wasmExports["lcini_get_bool"])(a0,a1,a2,a3);var _lcini_tilde_expand=Module["_lcini_tilde_expand"]=(a0,a1,a2)=>(_lcini_tilde_expand=Module["_lcini_tilde_expand"]=wasmExports["lcini_tilde_expand"])(a0,a1,a2);var _malloc=Module["_malloc"]=a0=>(_malloc=Module["_malloc"]=wasmExports["malloc"])(a0);var _free=Module["_free"]=a0=>(_free=Module["_free"]=wasmExports["free"])(a0);var __emscripten_tempret_set=a0=>(__emscripten_tempret_set=wasmExports["_emscripten_tempret_set"])(a0);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 dynCall_viijii=Module["dynCall_viijii"]=(a0,a1,a2,a3,a4,a5,a6)=>(dynCall_viijii=Module["dynCall_viijii"]=wasmExports["dynCall_viijii"])(a0,a1,a2,a3,a4,a5,a6);var dynCall_jiji=Module["dynCall_jiji"]=(a0,a1,a2,a3,a4)=>(dynCall_jiji=Module["dynCall_jiji"]=wasmExports["dynCall_jiji"])(a0,a1,a2,a3,a4);var dynCall_iiiiij=Module["dynCall_iiiiij"]=(a0,a1,a2,a3,a4,a5,a6)=>(dynCall_iiiiij=Module["dynCall_iiiiij"]=wasmExports["dynCall_iiiiij"])(a0,a1,a2,a3,a4,a5,a6);var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=(a0,a1,a2,a3,a4,a5,a6,a7,a8)=>(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=wasmExports["dynCall_iiiiijj"])(a0,a1,a2,a3,a4,a5,a6,a7,a8);var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9)=>(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=wasmExports["dynCall_iiiiiijj"])(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9);Module["addRunDependency"]=addRunDependency;Module["removeRunDependency"]=removeRunDependency;Module["UTF8ToString"]=UTF8ToString;Module["stringToUTF8"]=stringToUTF8;Module["lengthBytesUTF8"]=lengthBytesUTF8;Module["FS_createPreloadedFile"]=FS_createPreloadedFile;Module["FS_unlink"]=FS_unlink;Module["FS_createPath"]=FS_createPath;Module["FS_createDevice"]=FS_createDevice;Module["FS"]=FS;Module["FS_createDataFile"]=FS_createDataFile;Module["FS_createLazyFile"]=FS_createLazyFile;var calledRun;var calledPrerun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(){if(runDependencies>0){return}if(!calledPrerun){calledPrerun=1;preRun();if(runDependencies>0){return}}function doRun(){if(calledRun)return;calledRun=1;Module["calledRun"]=1;if(ABORT)return;initRuntime();readyPromiseResolve(Module);Module["onRuntimeInitialized"]?.();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(()=>{setTimeout(()=>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()()}}run();moduleRtn=readyPromise; return moduleRtn; diff --git a/wasm-port/runtime/ui/ini-panel/linuxcnc_ini.wasm b/wasm-port/runtime/ui/ini-panel/linuxcnc_ini.wasm index c8db7688504eec335a6d2912e346156b4e6ff740..c99abdadca254c62623c4fe277296e8a5ee4304b 100755 GIT binary patch delta 80145 zcmdSCcYGB^_dmX8cJEEODGP)oBmwqb0wfT6Z<3AlCI|{DND)L5x~SN=p{RhAz>0$k z5hAu>8BzcI8$k969C|Eoj_2e%LTApOOX+8+H3F<4260Fl_X|3ByK> z9ghxfA2va|;Q7lU^soKysZ_Sr?Gpyy;(Q(vO@BDwN2Jh2#}ipKnD31ndiUt7G1|a8 zM~uiFF+!W{jS1)EB14;Usm2KYFISuDjStswb8@w5Uh}f75xKeA1Ky}lJfzv=`(0GH zp?3XWJ->N6HhtZ5h(4pk^aXuMUr})A(68xR`i{P*WB7NRPSOebfiBP=^gCUo2gHLS zTy^Ns>Ec_ODZZzN@$br-pVC3%f4juX;zRm?-lL)K(<|Z=aX@@34vNpj=SUq9Ux}~9 zH{x6Ioj59viQ^*ptvHFyAH*r~lQ=IfU<>nU82^Wl$9XiD`)pO_Jsl_U(p;^y&HxeWs4Y z!}=_J4hEd7FV>gqEA&@HFA#X$MqldQ~GKBNBxZcGxvU8zo7rF|Dop_Q;Y|U1)j$}PkNs5 zJnLEJS&4AeKc|WT&0hUtR8x^*X_nqpSZI7^ zv(qy+g``t2rc$s#x5(}8tqoD;2g0w}yEjDHdx|1?o|=77CG0)OQmuG0J>b*k?9IalW}%*x#Xep<8U&3%97^MK45gzPUFj?A^stHr~0{ zm^}W)OKyfp=C&B-Qob4!9h>{apBtDT{Y55E1GO&!r4YkEBmk5BTU?k#S;7TMiE~YC z>Yrfp6xx3*{OB6%`EI>}iLfuIgk6X{1(Sp86--bk*X9ublfzr0EZr{H8fCsG>^+;J zIKzBj*bBEtS%$sG%|8VwAVcMEj4n>zF9xnaIXUv`#>? z)e1|^5l&ROT84>NM~}ZF`okJc#Wu2pz0#Qy-=7Mc&*KL)-XV~2mVhHWqRa(4ARf)w zjsK^WBh9b5r6#aXw={FAuypgZGuBKA=2Hy$M79W`hMDU(!edV~@8*J_JDVPuO-UB8 zKbFveVd^mgjZk+{uw%H$uGhiV#>Enf&=S>A&p-;bIBn-!rpIUA?YnGk#EZ)kSX#4k z<9#czw6Az+zf^acB;2glR@tdvzDeBW>vPs5R;t02gk@kYWS&N&EC5>Tfe8xGc?$n( zW{jrzz?(9oUO2`M; zH9sIO>;eOrWRY)%b3So6?Q?EPYEPdyPba;AbJZD?ToI7*S)O>GSzYs)H8kH!XIk^qc}#FP0stqaD@uAD>tH%zVk9I1h8J2zLYK_58} zR2?6BuV(Rk7i%oH*=qIRN3_2(t#UH_4^v}jqrU+ibiVO-Lb_fcF^1R27@e;9UUqs0 z@~O#&eSu+QEUscUa$2U}khrH#Jh$uQwJm4 zGOQ@`pdtrO?Ke^^4>N~!AKnUdpXF117$^xu*{e&Kh(U}fb1qhYjIy1_YCJ`@b5+f@ zl;cdQS*e1eTgw9=1FL=ZTXpOYoTqDcKY6{@DQwW?(wGKsVkEc>k2$|#nITn)!F#BN%x=g-2C{g_ z9u1P6C0QwHUDc3=yVxs+bUw@)@IMc;wa$19Q@3vWwC?|Dh`DvIzchqG$5QB>uUlp* zsz{-uT1u;Wyp+-P1}W%OOZ!idbK>fk8RK6<>qLDXqDO;j{~1!V8~pE(y1n5rcSADM zt?GQl*vXK}%>M|slt$OkUT1Reia_-IMzyGgv!+pVK;)fH)t#uu9qAgUSK~3@Ejt^( zN!L2Fn{1((PN$}6sVAy466-c(5j!6`;<$iF_3QRA(>~|~n`Y8Y&eKgltGk^7X;zx~ z8d+&pOkSWuuH7;>V4ClcKgLQ$o=TR(R8`X1)GWOQ>Y`eUTvW27$NE!zR+=5vU7d)w z#+{gG^}2JhS)%nC<=JhxzjxjKDxd^O?oTD1Ce3R`a;4U}=DW_&=KZa`%LVAL2b+qH4Us<EJfjke)k(J21yd?#m9r_=N;3O9C2jmP!1=PxZCtzCRVnRz0Y|!JDC&NXsotSOM79-g*Eicc<2z)4neXgX!FjerT50aS4m+ur<8rv&9+`!F$%&%lQYZ(3cjUq$WZWo!twWY;oHDD)vtU+hRqVz6VB4UYf954-8Rq@j_-!L zX=TO;!TVAU;N3sb9iwy)d5n1UR=)?sdTfsnto=^2p3@lKaaX`Qt`y#Jm%%&kPw-B5 zVtXZ)f%$MiHcr8NVJ{cn^-6Po?ZvQu@md^}^Lr<<7?IR_#NR-+u9Mkk6`;GXPp>l2 zeS`WqG1vQzxl{(Gw4>Luih2 zp6nF>A`co+7O)x4_5qJ6;I`8}W*EFL+VTP1hLM0t|Z4!0MFiJUFl+wQ^n@ z_FbbJ4h zhr0dhX1`X6OP3iG9dvbCuTsyvuq?1fZ03tVG&q?}9of8KQEng-D*P47wbS#KtQwGz zmE;vt&xCEM-3_T{ZXwvkvRmc=(HabG4gNWLXbxlN`k}oWUeRMzZUDn&2-EhAH+SL) zh&Cs47s^V3y1rMIY-l>H3PrzTH5CU9h;d7un{Q=xV&`o)uqx%TPhkaWE>70QN~}tF zA!|Y~_d+o5F(QQr9ya_ZUtzd|@2ffkZyoS2dl)gI30AXYL`R7B-;Q{Od>>|n=Cd}# zS(N8asIrqhGMhDsGLzB+5zrvO`oj7v)HI$lYY<*5B0SMqBh^G#jhqR#)^Jo;3^r*L z^ay9?sLsK~BH*>PYm97g6#|5w6ah5O>yD!e)*#MVsB(-TPE(ZRqTekZzrjjnE@zk@ zdVuM$8e2wcE|NZ|F35srgUSIiS3*3uaf-#eEu!rBTyw49Q!5(Hof)Ic$3uHU9o`mX zo5jvEqth6&uZ=FGAh;G3H|2u~iU5BAe-(p&#WObAB7!g=@7R*O4Ey$5q2) z!}@XEC~omH`T2#OW_mK}Eq=!F-F`LKxaRh3ti0g%_5kxow~r=kF$`0f|3ZPoA9HCc zBJqfZ;E$ikT=OYs=pEJKcqy=xc`V(RXKr>D+_5Eg54ztQ(M)fS?)NzT@9dc3YLrpD zD34tPoY|WNsm!v29i76vlAW_tD>*0bY#z7ssr>wsC@g@`a;MYiF13J3cOBsA-7xXN zxNXbx^G|u3=?l5SHs{1dRiXLaQviXjcXy;uHt6@{5bfL0;odfa8%?|4^0NvTWBc>6 zKw)eT!Am+@UQ&4CO1FRcem__K`u>KgTsbOBtLoN-{U$BN!fyf}o%JUvO|#RatHsVN zXZED`V;3*Rgt5|z3`l2GuyZqR@5$1(8f*)QWW{PT>u4FG$Uqk{k!&MjEiSSZ6~tc?0lKOH2%Rg*kO!!mTNq?#+g64 zGZ!74Ts^8RM6;ZxQ(DB&S%GZ;G#4^D%vs?~n$kG}{Xw;lawgr?5>QWes!p8;6&L%$ z*llA~Tc^$`oyTSn6Xwx(T9;T=$F*~6okDw->>QfbBJSn6?q=`j$}c6e(m9HY7Sek2wa}R3f!41_O&Y|f2siDOd z{!3_846ijjl;tfk4>~huKj%A|5bASJ!oLI{V_E09oxl^fJyO+KKeq)9a*oZdLiak+ z1uy%~RSfm}Va5NU-_Pc8zcuIgL!bHcxz8o@U-o^F80xbq@qg&^_D9^g_Ok}z4A46I zAq}^Wg;}B`pxgEH_*}S#Ikw3QsO%cu*^Jg&3%?yZM-N<~>-^+5V*I z7*E_0_u->%b?_S_=R@bACln_@b+u$G#@YTgmivb+XClg=DM1EPWF1%r_RYgURFz)R8*O#vZzR%hue$l z@!QFwBy}u$m1Ud{P*}fV8ON_WJ*%uQf!y%<`e9tT{qqf~Fy5D*fe^VaKLefl&%Yl1 zJzn-lMD2wM6Fwdep|MJcrpE zQ`~ddE{K54WJUQR;a4kXHq?C8h=SnpUqB2jXMW&;f1_}rvPx=p$-*ex;~d)9J{ANo z*u3cqw)Hk8vtSFcoR1_8f^DBo?_kE&UKkq>qDH>mcAT9b9FJXD_Cj?ll;^#(H2aE5 z-@Z_zL8wy9m6iU!)m6n4fn~+T-C@4=Z0-+;582Ez>Wa-XVSK6o;=JCUdf1FZ%3p(N zK?3QN3i0g#XWL&_H3tR^b~^U)v)2Vqm0YmGvllO3jJPIND5*rZeP95v+(eAWsTlB@ z`<#R=Y{$QL%e5G9#TH10&ao|Q(;vOH7v@p2HJjm0+p_pkcbgKAI&7;4t?bTi9U)9_ z-!>l-YOj}WpdriGyhP$x;jG)96!iF&d<(0uq5LfYFSHJ=Q^1o7a|b(Ipt~U*p=VnW zmJvXXsf_SkIW@owLsjTVC`f<+g)|g4B)pviQK^Awa|pX)I&nr<6uO3U0sA(09WY{p z>|25uSEzdMH)K}l!EDp8w%a3 zp3x`R4rc?=H9v2zf|z-oO_)6KYb16Gy}`L`d0J`)9^4Nj{P`G0_)JE40|;-v$Jk!* zD6l<=9mG#@iW85>C|j6tFRpb)?^4Wi^Db5uoP)at@FT<;s_stbxBQpcsN_8Ta-Y8~ z8?`$rj#+@KNLre&nKN&99Uo`01TV~S&O3- zoa}tK(WfouIrGEKdnBA#6i%S6>nj!6+ydn44+w6cwiVL6!aRGAX4?Ba%I#jHE5AFo z6OQ=Oz0~0yaQ70aOM9tafSqbDWyPx0p2LBfie!s0Bi%$V*gxQhX|hREhuIZgLLFXF z;7T^I6pwbDl`eT{EYLt`ETk@trC!2g0dEYjBp08ASq^Rh;2(wx!WSdV@~)RCL$n4} zsG&UYK0?=u$%7^e578y%$736=@&klq_N~-oKM)9#Id=+ugqva_8m7)Gh4#mjWsKvs zMq;gRQ!~&ekkblA=Gif$nu_`^1i%eJM;;6b8Z}bavARqenhV(=mPb&FcYGF}_74H&IwX5764QcQ#M2q;Rvm-~ zlq7E3cJ;fJ{KRtL04W8Ww9-4B!kw6*n{@*Tj*c+J*h<2J8~N0U^T;tOeXF z%aCZ!=Zs)qG`aW)D+7AQiOYksC;-aQt*Dk7)CTAC-4$I@Vl4`XogNT%G*cP(&6=nT zKBt(i*TUYhT`Mxzr3@rt2}xInIY(2Zl~Sw#t&#|GH4GR4v=sgDj$^(74SY#ceFIL6 z5l+S{R|UBaSfwvas65pS-zSk28MMhC3A-0lnxPC|6kvuHhytDgJFzrA)Z+sY7DV+< zfe06Ekk6=Vz@Va#$3$JAHhvi7Ar$ktb@hxOwgY-@2+b7ss-uLx^damuTVxWBgf+qlYcQDrVeu?QSfqpQ3y{XJVJQK|a`%j}hP}0# z!dSyT#Td&aY6fH7s)O)Q7^@zTTJavjSWcP>V-1C|MhIh#Qj9gi7#n1C;?Wh#;&-)5 zyC|z>s_>0_SKwnnds8_NK(@S$u>b;gr3}WZW?_u=0%KX?3t=pd+c3tWxj8imkTJ?~ z?`--2TouaVmr*vPF{s^-QmnCbC*89@l`)p_JAge-=Z&@k5qXeMvPOab;L$0TQMpt+ z;5|htRzazJvIkXv7G9#UwH%p|H4w$5<4yoq)p=@BlLaM-33rU6CSYZ3W>yH-{kJ%fgAA7l_1& z7}Gsr;h#6+VOGMVSgc|);dW}Zm}hPPIBoh-T0fUruXez8fH#XRkAO}f z8r48l;LAKTm_?Qr^s$+ec`iePfq@-@2&G2x8+x`Y;W2=jTe$#9XQ)^KxCgUFS)v;< z2@7SwMG63s!G;Ja23sV9EhME;sujUti)64dv>0qbKg^l1hXQU4GG?j@ZmxYL3_buL zFW?QWUroLgY&f^`0zeJsZ6JCqmG=gM8jCieptcYoHKrH9mmh|2BI!YkgqiD1d&Lhi zb>%B9A)tQoNIHl3}>HN z#4MKal#@W{Qz`@di)kux9oc?{DzGJzX#=3`z%m8k9T5Vg;a1>MLt!PG5IkUsAZ;cS za?zb2GV_))m4oK-8ev7|f~3&S1WX`FfVH9$;}PU&7_b=wBdw^^Tt!tdc6W%yhGT2Z zdmv~;xQVDv$V9C!u{;o))4<1p=s{4SIufvCz?T>3j}EOkps*%}-&mrq`x73VTGBaPWYC&1!}*J@%k%o&Fy=E`&SvL2x33|veN1bw;wSd0t;_j?uk`>=cl zr4>AARPZoK$D3EYK4p6aDQQ@yj|*a*4=j;wjcmlV;Ji+D_ZdhMg!PqE(cYp29pX7L%S!@7wKSySVAyvBKBcMvXLwfR7a=s| zVRZ=UKw5XgJP|*1E6g=R^wuE7TxXwM6vh8g0x+405 ztsz_`qhISr#uRw?Hf-P1fSPfNU?yw6?~%L&FrYz%fkGER^NXuX6A zPK`G*qN6p;>NgMf-S>?#)W&)3jYsP(s^GQ)cRH`-#p#;hHf}D9JRO*2vT}fzXv}oh zn?Y){A?B?NGET>#be2(MeS3dULyezFA$T<~*j(@)f(bdjlADqYUf)DS8t2q9nrxC#R z;zv1%^SSWRE~IySJOJs+`$u~BS}>?I;%)u8 zEGO%eC~D_?doC-Q^Pj0|n<%LKTb<|v1Ru_-%Drq@{>da!4QDf(L<~^9LPZb-t2WG* zbmd_Nz}p?{0b7W3FsJk9;k5}n4W&SBdvzApCX_px^GLlRLXNZSwekF#AsXYA^Rl$I z?!uiahwi{3_Q;{?_%%PP?tFfzzDf-OQjGh|A91)24v+mlXY?1%J?zvx?0odubd(MJ zyapY19{jv59p3Qj=Y>Qi&hRg6{677~Dgdw7mkU~D`#Fvh90|e%^ED-kfMrFLnC<E8H}{I7FP-Jz)TN)C_xRiMghG24vBY42zRR|^`bvS~>{(!?cIRw)i4#9-%2eG-3) z@%!r0HhKqt^n!h)f=4QU?`MNb+wZ#rz_Y&(0;6M(Ri{o)qhq(hiNEOBHTXS#tQ~$E z9G{rNn+Q?R2tX?7#<*!Ak*7jcUOv7gE!&S*caN1;#(NAqsHJ0%ok=IEQTB#qCw>zc zYVoO;@jLi5@92G}dr)WR&C_@JI%DS}nhF!`oWdV1XVi~T$=MEo>gde-sebj2EHy!(&eF(48mP%>!D&d_ zoYu{b&Nn~JK>e|28ingaj4!Q^bZLF0x&EFrDrT(V&#gHkZ0yfT{Fw1`8b4P3oE=>n zr$)}apA%9`Uv(TPo?OW4IJ!bHYt}E-FI5*@ojV!!OSen8c7-Vgj?P8tD4u{zqaR|OUl;K!*!z1mgzYHJx5*Mvwb$8rghfOkLhQt^W(X* zs^hoMhB#w4r|r20(I*3z){_}yH!#Mg)C~-=34XslSKq4`VK*?s1{D<(?B>Is!_`A< zSP;HvoLheTNfdqS^gAB_4c&XbUQ!o75FSv=$=~&Hz5IZ=Dg?Ei=d1AyzB#Yv6Lmq& zr~U;spB@*6gZ5syP#3iK^@WK{djo&31KOMYJ6?`B5r5PL?KSLHH_YKBKOof^78?ICZ{ zsgVoS9zG~{a6l-i>b^IMm+J(3OVPJ-r9suHi+sxAqK517X>*C z&l^3&z?G9d#L$&XJk%y`?{``**s7&n4^e!-{N6)%(tJ7COO0u^eAG)#@b(rSWjm@7 zK{Zg?J%SpbG#EilG;(2tJKReV?l50Pkl!k$mpJeV5V@^lJTG3<$GO`tt4F%EyG6Q_ z%8jI&mFANbnW>wBgd8{>F2?ucbJa>%WpFDslcj(JtH;N4rzp9eN&%cBdNUbDuSRluxJRY9Do@ zqucSQ8xJg+E!)S_G(J378G}e2 zIy@p^CU6fAPB8+5(Wt}2rw)%Ob$CSZ;Smu&JYo@2R3Iyu1PqpoO-5mP+GHG-^~xzE zmYvFBRrw@y%MlI`xw#zS1d+|l1D`s{o6FPV@tdob2Fn8ZUXT$LXn3t093vdW4e}-* z*63qR^{|!~@F2$nGdYAxcNTJC1=@{q2PDw7coZc7J@Tn|PXgUdWsjSfut=dniHQcU zmje=MDW-HW5%bQLy_4t>Jibe!<aRng)5XzVn;i@Z(4QN~H(4`Im zm<3|6$GWRqvYO5sR4nnnvvlXG?EwRyZ*Vm}wLMA?M=jW$StDnIfB{Twj~Au3%@CI;YvwzS(Gj}*ob!ZgMWq*`j#fI!LYXkr5#I~-wwFmHmg3f3I5OL^GVT^}IM)My5z+4<}Nv90FntBlUt=!BlC& z35_X)b1*H)DlpANq^e@fEFu*iX-phrpa2NQ9Vs7vGTVuHZW$s2CJ(zRps4U4z|z9N zf=I}p0m9B3Ax{S=p+B*%j`5JsDg+zv5?lbqxa(mdmQyXYB$v><7M86h3Bgps3F`^L zDWdFHh8iI#!Xt>%5#X?J{j~~W3W3!K7zlF-caM#@qI-|s9N!_ZHpnCoi+L8Ww~p3Y z`JddiHxFo8T5T8L=+q8cSU#|tzjwtu+i>(`wI&5!K##Smbmd!izXfv(vEXzJgGaIg zH_SjGaKn=X7`tY9>;pc$2o)r#f*9Thgb4tsd~5|dD%tLiSC|vA#cJyUz+v83k=hko z2yq5xVho1u7OCcKHVpOPnOFmG9YtmKms>MZxdn~YfLS~sT61i*#h!Pzn}+}Sg6Atx zg^&f+LU!oPg0W+-V zQhKXdy3gqf>}iVLg7#4EDFa}FEK(NzL!@S~PvviEje&%S1BMZJM+ipPpb(5M5yPKp zExPPre@|=wn3}N<|AE{98K$|*DGpgFx%gU&Ns^f@yhzQJukx_#s|2^-0~0Qc;5Mi* z)~^BE3fNBp9)DpGhbgdaR)rkkV+MAut}BmcM6Oxa4@Wp36|fAm9q6YRym~nwiVNp6 z!?JSirviBOaDFrrK@_mPxPGpE#Kb!sv~~R)`wfWlc4X(-Z&bjm&iN31I3H&^f6!nr zjmNv-0v-wlunIty%eA4QU_>s6a|{V)O+zy&~o;G!tk1BGcP@KRF4 zzCXBCls6RxCTha{f*kam>yN{Xd{#U=R($S6z#rX23_FN0dv*}{cq;CU&@N8NPnHIs zft6tK1rLBsMS(V+bY(di$vxzcc};fPe-eFXv%CMW)~%*f;9hpIRB3)>PvVhYzew zO>2h5Ald;QMeYle#1Es4ih&5020`!z6&$4&ifd3c;gUgIf|8eAXa41J6H0)^kg5sK zpIx}F1NZWZ$Y;iu5Du{D$u%vo!AP*dbR0;SP;G$K;J676MSc6|0YsJ}Y=Nan6Fu|P zl(#T49O)BlA&E$zK`bXX6(2w!P=OO~A;A!W1L&Ze1Yd0`_LoWTLE82-6}!m_s@Mr! zPGQ)a5Gcygx%PudY(ye7i$cyr?E-!RjB7*B)p#Oj4~P6rchem6!|}WJM({I(xf+6g zfHP~u=wq)|p*PqFjwi)$Q0(Q0nqCGL!C^n@B;ZUeobeu(#*nKtHkGs4Q5wr(6aWb} z?XoZmtTh})5o)1DlDf?DH zuwH4W3VUOs>Jm~IcditE)?d%aFB*|mY2it& z<2Wp=DD>QncrAY4Tb$CEuA=C|Kh&q&_QD^Ehcux|L?h*WO=%U4Do$@kn~7%0L(Qob z9+g^9dpz(3W(zzX!^56MUvJ&mF>*l;Ntz++ zTun)sZ2POJYDEAM5m+#g@=vmrXeFCdNlv_)8YFWOWIrzG$v^$Vr6pIZalGxQZ_;R{ z2FQEuw9tQ6MDa>mDXZS9pHMX17aKc}*ecoa#tb0UfiGderYk-*21)SUwEa`S;D zp=NSecd}9#X7*v6!H`$-_!5f(mmvV%m!O;(PDyua8RG&AtudhV_8==swPZYvm>| ztF~@0;+it`{T_2xvF}<+pcF+t@U@`|3JO&5LXTC^94A}!rpnDj<%K9ua=XY^b*6jF z+p#=+)f~<*^aLQ^Wa_IufkbnToYNaF0uaZl-ZUJz7T?Ex&FDi7Q&~c?OVBg{gn%Y{ zAvj{+JKFtjUJ*h9DnFiS6yD(d2kJM zIrKX01}NFE3sC{Bid5UpI*70mrn>k#x+%@Ya0o;wU#N%K&SoGF_)dlEsg}S&aMkrx zJGl%o0|3}1228X$UQWKA9tHI!_l5a?jO^W)=Hc;mU+RHJ<9^f=j|cjZ6E`{}l;Xf9 zbAqgK1C37$b97Lt`c6g#=i!LdeXi6sNffNd$L2+Tkj z_VmZ3)t?%xv!=evMt$v2ls)JCHhpRF({+^?39eMAz}eRu7_? zap;0)uHoBy3@x(<)1a%kTbSu_;azATfDB=P8m=P&8f|l12n2R=8m4>$ak*T553b7F zvqXM2m|6y>FXw(yr9dT^xj(WzDu)eg_ADgw3z<6^{EDhjlkx4>*m3s$XFhz!b31po zXgLfjoH)KLl*qRbR>?Meh_8tD9mipc-D4x|@0O`0K$f%*yGh-WatI~((G;yqPq57am z!$kv=x^3jS(x|QZq2Z%F zf1_ldLW12)_Fn8&kP{yu;cgbcT?heN&jzmQ6A-?~xQ+d1>-X&9&yIFL3BMv}MC^}^*cXBa3HdEEYX6Esg1-^Hqj zfm;aGvMd2>_od|k-MmaDr{u|DR2RW-Xy>!pzkZl$ayXO~4OF&;7= zFJGl2ZRFxT5^CySLFa-zeJc$Q@S^>Q9tJrpoY6s$LJ_106XZR^X{7(~QYKx6T_G}r zQ^3+D1iY#mC@|tSdN~lH958EKM4)H~$v@FfEf3ZXhL$>ldiHdY)$%fkk*B?23~jrDf%3MMvQNw12y}hN zSZeHJpfK1NAREV0|4J^Zbq4EXkYdZhC_rjph?(Q4dKg}P#?ceZI8Tp5K*C|!X8a|% z^&d~uQ$w4@PG_}Qiid^}zSr%P)GEx~JH~o3bcn5CGK$gRfI*TsRdv8~R2_si4jps~ zPh`pM^ns-S!roO?A9TUnY$2AJj{*h?=9DI%n?N_WbNdC2@~8@M9ByS_B)(BavnPV@ zGN$vv7s7M_*nt6HQ?xLq_qu~_ucj~^r~&WfnWL7Q{SYVMn+pWBey~;$SLRF6-Y#0}`evg`h0{gUAc-qDIvK zQ5P~y5N!Ip66di+zuZMr)i#GfD5p)N&SCJqKT+ZR!*^fWzh~~oP1jRMj=cxUVNg!L zhw4W_)z{c=vHc#h1yF(RrE1|WYTfIi!fW?ZS9d312+=IfMNQ_gmbhXkdfZ0?f>)x5 z;`C+c8RwhYMrN~$p0Nwz-TP-aqk434Mj_K>J<3}5Q`7JoZoMCud>@vrCS3wU7-c;2 z-br*rOn78PD2FFeqEF$8PX8ObDpMm(g);kT%f4;z9Yin4I?F| z4La9~oI#!V*=q(}15t753~b_T`Qi+!hQ}fI?Pt7Inyr*&)@fLBcJE`JURt@==|_(x;l=><#&Os|)$sY^Z!;0*QjJS0=^OIkGAOri$X}LG zy^61v<|E||^;6t(Ih`U=xKd`Vp#Dj365G3D*mMxfF%L$LHGP%&rd+au5-T5G9jW3J z;Tu~w{YEyJmItt4D}^-rf_!fUHtsF?#|o;!k$W{(LZ`vA=Sr%|&vBvW{FT&(-}kK~ zz9LedSV?@%q-?&5I4W26T}9!GCe>Hj3AVau65dHjj8=l#UoKe%6dE9RuA;FRui=Hki;>^7i!8z&wy>tl#y#7*I&Ah6n55p zzK&GGw}9$8QrUJ5<7)AUH583N)5-FVwFuiQls~Mc%Jis=T}RKNmu>5CcAk)j)={dV zF#N(g)vCs`R8h5R^BmoeR$HH=s(fkTqw=%o5ZX6W<`-Qyyb&56pC1Z$_~Ih&NPba7 zt;;>8ZZg4{0#XERnUBl5>uGzf!!XGN*bs@3H9kWRPbEKC7k^`F7d$}bv+SUBHOa*1 zsic~ES2aLTuC)x_1oJt_e6_?P2n^`>-1AiJA5?ryw%q_Y6v+V_s2`^J!UhTeSf6Zw zNt%JxX%mQOfP8Qh?3smf%_iz<>?B_++3O{0oU|3B^8)$G;k?C?fVp5&9&?dw|AK<) znHMf&CGllh34f~TvXaKd3O+X%13rsO;lrJI%qQiVV%m{a_&^9g`UE&A8A2uV7(!nA zDa0-ntO!F$pJ101Ke`zkRl0Ki!r9y&>FeYF=LdQvvsQU*kSUvaU#Z;Jxa z<69Jne%hiyl(>~1QXpEgjcNcyuWp06vry_U;fUEOd%Q#~lK~sHZG>TC&SeJe1%L`) zqDD}eK6nYH&!rT@fr$7Dc9~keZhsrW;vjNBBBPgTzffxABs9lW_!cc z3*ISPA8#Y`Le;pzQ!1cRw=eGexE{AaYVDVXoVlIilS4z4OlyNCsED4q$qKoCJEheN zmF6SN9mOkDKPa|2gD1EQFPLDsTwd5tSwom&Z2>^9Bwwn6f?AHowF%M`^9iJVmEAHm z_tL`f+{2}q*yuoMX=s{q<_^BH+~2ds>1 z+`uuVXl?SN~ng8 zPvPXaBa|RNFQI19gF(4iPb!A7cG5^@V{>-8%=np|E?Yad(`BmGF3L?R!&EUtu)+{K zTe=H)J3v-_8TxK9jw?3OgV7zHspsNjXO9U-a7-Ss*^fXi^F_HD=VfH!3NZ0#bBo;f zGF8glM0OO&gMDl`6`X>bd)=zq{lcZ_~Gl zAp`>dRG}9NO8|n`-k}K$iZ<_-B44_^|6R)D%+>Ew_4uWr$U5$w(ZmPn!FTbs!)_V3 z7XV@0G9ni}!P*w|ST|vQg!%dGJ?a}=S^OuMG)o)|1Ks>Ye)thp?YK+$VCL7% zUBXpMeHHO$PYeI;8TW!!&8>5YDFCXgulAL7K9wy#2FQ-c!5>qyafE!^WxYdGNj~~9 z*-6jxf#wHGwP2kFBg29My7`Sf`7yA3rR=aDf%`}0efyyb9F;rvlbxWdqjECZlvYpp zgc>(f)AUuq_}p1(XvT4u!bpWJuPWC(idE%&?bATG(c$DzzvpX;N z@zgE65&TXa6!bU%@NZ^+AvF67e?9v@Wa_8*B;*tn(NC!Y|0K|9dF!VzA0V&bQ%aOO zK85)HE3OdgDCgmwev`j{iUZ-Ota*^CMPO#QTAZ~pg08;i zaRIS|YXY}5b1ACn<}-{*=3=DDd|bE(L@4GAm=KElfCt@NgXje@PXC$a8rjMlg%vj!?`5aB$(o7pL%ge5w2;f3%-? z`Uoe%V=3m5hpv3SERhpgJ6N(l$wHf z-j7J=Ygqj_MXvT)-eo!H2u_?AHM%6{L_+iWGQ@h#oR&&l7y*?B>3`<7B06f;7pk@k5M z9|69p2+z(6R0{vxcqj8LUmkBiLij1g55QNH#Sjt35aD8o z`UpZ{i1-@}F|NcA!5D&b1)wv(Vd4gAv!DilH0~hGHCz4(H-J7$Mh)RKV(J;E(_t)j z=PCGT1<+oUEss(?1xMc)lmgbr<()_A>U!`iW4A5r1V7V5PmT%Z_txsE1Yhu7yvQR* zfvO{A_3vqf*!`p|_#WrZDEaF55b;LI*khCtjesf}!Buea%C^U-pTP66V}wsDi{;*9 zv@4Mv%9UV*g*(@`L-2QFx?QqCu09TvCaT38ouL|`yHDHZT^TW9(V9rCd zI%ZYt2dbRrb`5-hV-8f9AH>y_J9Ic4+30=C5A-^BSN9ZU)_F_#rs?DfLDo=xuw3Ey zGAf0pMWJcQX{RU`qQeiT!0O(X6LAw%!rLH5j=N>e0)`)^zfa`a(>P8rnZ2ly^Et8N zz#q2YFT1^{F8R^9s%A>&3W(NU2F~WDc;nbzn86#|6n91NJ};Mhf273p4+J8$@QIKs zfCzh5`1Coh{^}ikhUSNILL%e==f&kKGX$KCikE_F6XqI6u$P zpK3(mGTSdPq`g}v{X}h|27q1S8x8YQIp8NaOI6YSjj9hYK4uBH{~Uj^$yWuQK>Q86 z(`4h%?D2#D7ThfS9XkAVz*)jY&_n9vZ|q|HGQq}r7b?FZl?C`H1Ya&%YE3wqWk(^N z*<{}0awtuhhot8W^`Y0~jc2HG%25bhBHO*t33pL&L?t)0%)@ft8LFttS$-Eb20-YQ z`*l}VuK9&5IRgZIO&&f&x6lgN;5-HJHvDJmaPv_`SeE%JmZ3n5jd%-|Ir!^67in>&e2A4E629farE)}wg35WCidp?|9+Jy>>Ae7%>aZO23wZP@ zIsF0x_Fk1AUZ9L2F)n=6@PEN6*0Yc)6j!k@Q+S44!Rz=7pMQE#e?h6GHn-G0M& z;3wqd->5cyA=mw;w(jlU%5Ghs^KdJ^Dhtn3(@Nh9-?IM>{1dX>1z7vb0w34kEs=4* zQ>8SQcftFcfuL-5NFkxFH6nAQy!v;l2D9t%->G*pf3*nM0NnPNaa<8{60<$|-tUwV zTXy-&WyBve6yO{Ahl23zKPbz5N3D@1t9QUHgB|1nfL|W{11IJxXIC4RK(YVSTDpVIA;<5;XQw#CD z<{kXSgbr88X!&`p$S}tE%sUo5i^!PK_%vKJ<}g!Kk{wAjLRjFvB$^A~X^sc|i$+ak zRYOFfWu^fhG)8tc5ScbXzHf;7Q0NVhxQYf8U+ocXDK;FW1f0>caTS25!6SJv(pInF z$Ww|C9r5TKA)1!s5_{gZ$XqDCw%IvWm%R*;jBCHtw4aR-DPrC>`9_4OZj9zr;HL<2 z1KM_v6dWk^WTfcL>m)WC5$ zGDh?jlS%H5!R`d*S$>R>S+Sxm=Z=gO*?3(SD{jQr;jShxMdX7;uvAbXUNosRH~^J6 z59n&}U1>PpEYUd?QN=gO!SUi2I#c{gyhtGWrTBm;#uGG)?&Za+cqCL1t>|;vvw|2( zXNxygz-5t8Lb_BG$DtfHOGMLe>u)x#|_t<`tvi0jh)F#xLF#*g>_Aj;HAq85Ep{A?xhjDYBQLz;M{ zJWe>iM-g&AEGBloFn^KtD~n`Iv~y*#EL)9L!7AsDg+G!ZgU}hIQgf9jqX-2^f%Wo|8wai^f<% zat#p1Ir&9RQ9(XXLo{uG{=%PDS-$Zc`Cq0t*yh1Vy!coUz~yV@QUQzOHAL;^YQ831 zU1lD}Wo7`w7!F13h!=)8J4$T|XISC2xQoB0rkLkWU=lE9P=?slTlEzO188WI1y&JW zJMU`@Ys}toDbL5&!h4R7b=(3TMm2MXxh)fTHdn696zyUL;BIWi6Ak--{3R3EH9%(9 z0{Q$bhu0FfLFC(8OQhlLL@lueMx)iWMH4(et1X6B{hfs*SGmLOF}uhW#N#+5<%DH_ zBnM}SmeKE8FdPG)O0wjNED@+uv`c+cF6;(fV})IUH)UJUyCQ@k{}uUlmRKaF>2hiv zkxf-6v3O)%@iEbH*{(kL_7okV`KkUyZt1a)s=t4hlyf5PJ_NaX%_+Jps4pgp zm$GDZ1CauUboB=KK1k&6k~?`oUf?5ML7pFk^7l&w5lV10$TmXR7hZlw15(6EU2C8jYKYW!|UD zgWvop4>l76SV(BqT#TmN;%A!U@Pgu0e7c2*;Dr3GrFfn-l4o0qYxsGwl?X(z?#x`c zW^3@(Me_01VtsHndta1pSj2`<0r?PG zL)|aVCXNmA{Wc;Hw*g0knhtQ#ESCCJVpjv)0qr$^BtQIb{Jj^r178d6HRtINK})md zBW=fwN1-FT4g!8YBFnWEiSoWdqM~fwRz$`gFkDqZ{dHH_tF5q89@XI=iL^h3*ka;| z?~oDd&bue&+O{G!CdglH@|ThLYgO{xAW;(_UaT{koCc9^gEb$A;rGs(8ES7r*i&oVi$3>wy3;<;>^jZAzCj(&#j{zYRag*N! zBo@p1Lqtd1t}=0ms2yar11Afj5tcr4zO@Q=3WDk5?Bk4 z)OR3mb;U@W{~nv~@Hq)S{qkX!N}&O(glQ^N#&R>kYlVBseGSoRHAp@3f-Mq!yIB>3 zbwQZBWonM7*WY)oVnx`cLYZ zB9uE0!@=`cAk7j^Y(`=M|5Y#@e=f{i!hBc<(|ueX?j|yO{G@Dj83JE3>gW|gekxK6 zNvPJ`X0d?Ri<_1007cw|9uSBV-3ZQx09g!kMwWCDHLapUk!B&=|J>YPh;0Bq?2noq z??q41%2*2CCHD=7KX4gO6YcSP7QOr=sRu3q|JcL&DVAe?EEC&_UIE}|ND-f>Ly&z3 zSKVL;0Qy}_jrH>aIisD(16m9kCa#W3;lB)qKVMcP?e=24C^{rJwHH(-ochf=={3*4nm%V3cl;vK~!OCAKO7ps0*+dSO~U0&-Uxfy)JJ#Q2&f7m2hzN2{j|JugTQ}UhRBIzION_uBeI}Ar$E_gW{)tw>=jsO@7 zXm@pX;V3(cDgWnSvQp-c_(w3A*H!fXTbP7!>s{QXb2)BhbraM6uffDv{VxbOqsRXU zmOAoO4{`1PHQ3NI|CENd^c21R6~0uG1)YT_8r0@q`eVo?oke9iv6mQJ8Gi{t;}6T3 z--B6}@_V89{V%;l^HP3~kJSY8ds6(KlWclYc_DsZwgcvEir@2h@%-jg}?`ErW;cay;;EcZfgi!4Y{owv0ul-z!uYaBGwINk5a<32AZEy)`-y%oBw5nwL&8P|DDlbNZi&L(jAkyTj8xcvRL?tu; zV5g&*5|t{Jp9QN+DYWM3G3UV!e!0iu>~<91exVH_yhE>8{+)q?L@unO3O4?055*;Mlu_q#9HY5D3K z=rH(3!B*E;gRXCdI>4?tKllafK2AJ zh6QI16!nsdb!a}CeKJnD)Xg7V9NR3%3=|a;@8ij6N>K^(D9yZ2K0Z+7yQ<}Eu3oA~ zf^U1xE&o}y+^SSd*dp&ABr17|*!3iz7$hqHdwsIP9Ox{U>yvY2t-+$DIaicbC$|dO zBU{u)tbO5NQ7^1cZUeLZlRCK-cCo)xCo}%LI?1{al-)Onh+1uwp2j4@G_+k;gcerX z{vUU50v_Yl{*TX`XSU2_Vu&RhlGus8mZD@-)mGJ3OKG)Qw58R()mkQ&k`NI@P7sVe z_E;x~NUT8+d+b3F5yT$*|8t+`naL!)efxdi@9(<)zn|-pIrn|ebDqzA&VBB4pXE7c z2io*jx8~$N=8{AwjzL>xZu%C@DT-09uN=A2X6An}azm8dlNXKLGVsz#eDy$9D%*^2knTSFw@Z<9@8aJhJP8<(U=z*{>x=bdC7$16c6?-KAS>==HZn8#aj5 z|G!*T_aW8)!gJlP`CP@+gI#lS2i3 z&SjEleDPxrZ-GuPB{l6Kx{KCIRdH?^mO7LCGxu2Z#FeU4w%**w`Lw;s&%hFJ9`$`3i{@G2z zGX8S~%aDh~Lcz-aQlwx{ODNbGp%Vr(lSy>O{Xb<@dnk?sv6RO3kNtA2m(dnYoODjkEW|)2 z_?zS^nX<`6B?Et5OcST_t)DUWf!9ux3pB>T@`k}8 zmOV9=B;NE-HnJ8Ld`y@X$EpLZ^x%+=gH$BMu*@W>P~4~|316gS|H+!EH*=q%tP_5| z9Eu{}%>Nq7sv94|fyCz+I?DlmZ36S>nM0Yr+C%X=l~&0OYq>KdjGt%~8eeYE3&G(} zhq4+KXhC66N8IX1+0d#TuJTslBa9ZqSV!z^9W#uzWMddl8^-FCxk?ztX4x@Jyz>Nq zK8#iL9D|`N4jiFn#9UruIBV=RuXqW5J)Bhu5+#W9rd&lxV_KXr$!Mty?L@^3CNe*{ zAj?ug9vm(T^6GFFLREsY_%Ewu<_K1optBv3!-(hB%U#f1(Ye#n#`7ieE($Z2-(ahkH&`@Ek>g*uIG)Z~2_hp27kf$ixdKiiUP`={!}~mI&$G+a9OKpiJ<$Mha1pke$PF-Q42AEflW{e|Bv!>yP}EW_7&2S_f}x%C7Yp$_TG^$C&<(ldo3aej!=xBi zCw46JhAx&J%WAzwx=5{$7KOu5xHO~`>H&v_lo5w-(0EwfWUg~67h>6L!_-qZ;^E<1K*F+ZW+2>AlNADA?eiV*m2nK#Cf@KSdp{^(`^Kls^}@Yrreqj zJ%c&mZDO%6LZ}%yvYr8MP4)}@`JqV9^rT`QvYv%8`gp2H&lb{JKW5mnRdCE`icO;C zC(cvBn}jZh4zl6|ahg+6S+Zc;1fQ-Dq2^Ohv{unG3Hv1G+^B`ieHYM+Twvabv5r>@ z$Bw7dyjwVHV^cnmP?y~PuKuUn-_>s0-?OmSK;Hh2=|^Sz`@h=#j!7VVGsL|j*n6%X z7ZW}IU5}gh?|NKP_ZX$ez3%LB>jXGodtQqVAE?dJZgcGR!FLg2^_;q1%&JlE>oFdk zMu~2>(|Bj6@x-mupz;>W^rBLpsQBk2&}rN#-uvFR;jD|I7Y$A1^(D zwZK=JT_&J^6+eE^M-Q?QGF6_APp9TdrnPvNTdi8*Kk988N4hok;=Sz_{$nKTg5EYI zlC`GZ_IV_$SLQ*<-u66iJrT#~7wc^YPGql@>}{7%WL5mLs6?{Wuj*}i9|EdnIQidhE+y4;T{7J9sXj5s{EE!vQsG|+yrJ{v}s}jwEDwgbR*D?40 zuWvLfhfj3zl;~bfJT97f!L}`qenlUP7s$2^j_&`UkM*4Vsy-HZ{G&eh?%(yXH%s=h zIN-3D?K`Md8_D+hV}Z+v7#-&OiZumS=eUL6oy@vc*+MG}@)jK2Eu}%RlBY;Vv7w(4 zedQM3Z_0n!SMK9Cr?3FGzA`Ad@ZWcmA53*?H^n>2EqwA+_8uDSrKzkc`bt9#cIocp ztzyvApWr{nu(~gIiYTh4ET41+onmWrh!104)gk66`r_6h;>njf#F~8AG@&^YroEz9 z#A{^D!BF^bd&RksfiHJ~(4*pAAX3x%DfNN-xF^Sk+MB#JXU*CvTj*ZV2flg>-AkWC)omtR=G%Hp(gFnRcN46YvY)amRk+kLfI?Sbyo(vFUXzO;HF9>0%6%S_l*k9T44 zDK7m({xqSk7A(s>wdFo8dLRgx6QV^#avkw@K_hlLE$WNBrb`MCx_rTv9H%7BU^N)F z+f`n~8t}6-prMa=z)V(;hFz{sbD-ss#Ba}J6>CCpI+;V+I!Gb$EtI%z2U`WsGD4vyNBQ@MUlU3op;$cW*_~3Zf%;yz}Y09iDue6v2^0V>G z%*JSVemwhh02Q{Mm3B9#QV)L*=l+QDz=tukiSe-%q?STa8!9RqxcLnR1;O`3W+*JN z@l9i8Gz2L5JkCwQ7!?C)kqcin3{-#Lr5G6S8SgvT`q7%+OxW)pp1NS?UVh_Z$6 zrgxTs!7`Ftm$FL!;s_xW3T?;~Ls{{M<^Ue?8?#veNn@JBK0&#EJ%`n;{D@{BJiW<% zp|eHZa>Px*NV{$h!$PYrr_4E{f4x&+tC;SfvVbtdU|BeZYammNC5VO4gL`nFqu9h~Jzi3+_3e{amVK zsYK0ZKK`RMbPNmXy+j#kkkgt~tXn-#thUOqooYZUOOTct9kyxE2h0y#DR_fKtfBW_ zz#6&QE-Xv2wrio8FechA`IqA~JZk}x;P=S_eCvnbwCSudAFz;>wngI;TC_`Qwb;U6 z)N1L$XdG}?qSYd2w^loeA&slm()^fvt3~W)B&OZjm=+OdI?_v=tyWB@iB_wQ;*}P$ z_SNIg<0ea-aqj~#(Ms5YaJUl2(9s%po{wL|{MlFyU%ZIb^>%OE!XrimweMQa)`!A@ z5&D)s0(I zpTyAAsSuT>J`VeHm8OmYD$&%%3}^AC?s~phQ%4mi&cdiMiod_a+14SFtF4dWm6tLP z-wB#x4L(FRdIp?8hX!Ap%2sLV%4h>+J7OvJ8btFMOIeHR;pd$7rMHGDVG9~dA=((# zBVK1MILlL3vWgAHViGjOvn;ix1h>cRZjZ$&VR|f@Z&}GIRg#}_Hz7`pXo%5#^fJt} zMf3g3Fa(I^e#==W{PbVWy5eWua@M1|C@|T2D7p#*;hM-*tVa}YxZ+jTW3#Xx*2HrL zYlx*cjd24pw+T~9CJ?taSwjX|WPrke6r7`PRB5ZY-kR$sN;Zk&?}zb%oLJbCVq(Ca zG;>paNbgd9y_@o*kk5<4B;`MgJV~cucfP8OX*2~^am(y%5Mire?j{wtLoNgw6eR3W zuPRQ>BnF0_>ZyD}BEFtm%##x_3LVAxi$qqj>@rL!q2qwh z1QSX}#pCP<-e5JqMlxjVi5^MhZy8IIg*rLT7`9Sf;QXk)(U>)<gypxZ7S@b;g6@kk7Kuklz zCC4B#V&yzy157S9Tb04*EcieNAy0%}qm?RbR59TqI0~5&!gt!!_`wbAHQQnh&Ynr2 z3%uyN)ut*G9=Zq2N-ojhGa7NWMlAG&yi=OKQzEBIbb2K*-6Os6n7m)IG(z%@dgTFZ zs>f$BB_F_d&f;D8FvRoaSezarPF_&5SoVJcX$O2b@(-c@JyPB=iM4}U7nQ`C`Uxiq z^+jJ9!PMC`ftEm1h{|F)!_Ot*ixIdObhR|p%IQz(UXfPooVoSFM3eXe52c>HzqtDeUNV=7cR6Y1TbcfKC^ z@U)H0zbvwYaB{ZdkamhG*vMWhE!MhZQA}j3cJLE>S)h&9yl_w`BEUN$?n@%+jW9Vh zgrPwPZgaHIY8R}y2_M|Z8Bu~j6Q<2^dUv1&V$i{MIHuAfXGqzh0b*<3a&*{&4KJG> z4l0c?A|?;Y!Vu#4t=kYnoSTOiJnHgX@zj3h|dE8YC z3yK}1r;=HX+BA#-Bp>lnDC8+ZP03s@qSuVvk59Bhw=jSGTy!8%TmHos_IYh=`8MLa z(wCkky%w5^cv(|<*nZ}N32ZpgeC`2OlQ&GkAZ;FhD+R-_X9t*%p3F-rn7e?3xMnYq zzL=tK)v(_9oA)@r83`+m|}-bz&t$li;S!TK7B*LYapFfL{ZDI3z5mnufn}$@`Zyq z0Rfdw31Ydf}l#__1b zFoLPVvswciJPr^KQ= zTmgB#5H%@|k%AUWw7}x4f_lrRNkP~RjE+S@0QG7@j5T+QIB!My{Es)?!5V3^iO0X& z!FqbH(9rB24w@0_twvV!dDaeA%jGfQYCq(XDgKg+BYRA#pcP$25Tlg(JK-@U7WbGO z$PONpZ6`b?v3cZG9@Dy=tg-Nz@^-QwCO40XciDySt~2;IyI8ei9#TFk4sxO8M)8Ha ziaex!yWk;3VG#WC9x)cVmOFe6WyoEvRe2_v`U^W`$-rKIsGJM@c5!D&%mb(}sui${)r}Bd5z*xby_B2qgUV7iMSc*bUep*nf1klB!JCMJ zqXai-T?Xdy-P|BHnel+Hzya0@Z#{c}1y&~OU=}vQOZ@c|f6It* zmE!o+#>o5agRI#%=miVun0Wyj-_ebC3(TB<6;AH5a1)uR3^ABiO8ucBg)BHKLH^(^5J$1e&I6r3`Lgq{PV+a;1A!3!Lj*Y| zivM7h9SABxvi6jOW~5PAxV zh!_7uCqlRig|e$KNiFX=fs-wc8&sSNS$&*GdQ#pmAL&^QXNu9botMw_q!L5zh_d3V zkFc_}|MpBzfu}&m(~AGFgH`3;M_GrS^UI*?hZ_;>QK8Aq}_R}0=Eo|5#TnZ7(@qPqRKD4=x zg7joOf?H@_i10SRZ%r93+!6R%o^-S$ZHx=X8WCLtY=RBl3$!>PlKupe3u?ixH$4Wk*o|Zo=E$HJC3!n6 zZAOQ_8Y$i^?^a3`>$3V%n7rasj~kO@`MU5oJBjd;<#GO?qTji zo&-+ibFOxM^x~S~3N*?ph5y*egG|K?h%=Yp zPO`c&C$(I7~%wu2}v1j?y0Pmo2B?+pn^j%k{!k!lL5X;8&Z?r!?4>%_f2v zMvgp(8s5jJohve%S%^@~W`-Ojvzd>%$Ic*}xl&5$lSm~jrrkiRGQwgq6`ysS`C(-FKeL$_Pzj@k_x)o-^e{M>Bj#{WbTvYG!&q8z}$<9{rPS5a{ao4M)&YvZz+W!-FMS=nZ8 zBAc0~*vy^0!bRB3EqvrfR@vyXnaO-9PQDF%rj6|tV|cPnc~A`C`VmvAx*l>YC3IZlH3x>W-gb5WHS>GbT!Jq zwV4T0aif_)-wp_?__EbRu1X`-TXe9SWH$R>VKx7~+1!j&wxWjXW;W4qU1pOSu1*sF(FRDK8O}6Xvi=~OpIIOrqV%tc&LCk z&t<>sQ)w~_7qV^0g{to0Ik~KbCPQP%;KA20=03;Yx`zGqNBFR7ETH2K8U)H)`va-( zr9Knbakd#P*`T0kGBlXRGzT=nTHG{?LJS-fY!;KbD3w9M`asOvTek5F*H}5<{bEdI zu%v2(uq1`n7obx%TC@Tj|F}#hDJd&h?ECg^tdPujC%2u zCJ26q^Rzr2tS|0 z-6#+}dS8@D*X!)H+EhS#ngYR=1C)yfdPRFriKOhXW{#F2qWJRbtS4?I(&n>nP508G zI6hGjD-e63i&W}#mXl>4mZivP-A5<;(_)l3;YqNT@d^2?78dc>=d=2?r^`EyL@`^4 zuxz8Hm2@o;qPE3twNzkUH!u&eo7cO+DhBS>qN$Pp0OLfd5yBZ|;x9G9U3}0DR<+v! z6a-Y&vI7?iV5A4rD2}B=dAq`vqbO@5R#s3wGE>}kDvyfD4x@Mh1COXINBQ|1n4mb0 zvo>kVpg>3JD2}FEq^3jTVLr~wM^d9S#pqvF9q38XJKe+L{iISs)R@RApv8N%V7YD5 z*pt#k?q*4AX0 z&_ruiaTboEN2TM#Ay0aq_HTH2TK3Vo%n9fDcehw|8`Krkn8N}k(liG7ge(#I63&XH=?xN5`A&)9 zx&5>OL~X-s@GI75)Ku!$gMk(-;n6vUI35?JYt7h$qdx%Jy5p{>RJGtlV?>{+u^iG^ zk2>RXobkkobH$%g;)59p<%ybvHUXM78A@UUC}u4nb-@l9E2S;Kg%)zo`OcgZt}AaQ z4qa;^$KP|tC+92i#Gwl@oCyl=D`1I};EK<8#%DZK;)#>!iofTKU-w9fCr*+p{;4xQa->aIOH>C~w3a0! z9J5cU4f`l1o;bArCC5iP<6}lE@x-A?COJOF86Q4Ii6;(CiplZu&iJP`X98k{r8pBT za3-*iRWcw>xGR3SGk(W7C7w9ZuK0D%_}p+Mo;Y!?_+%wM*v6=5m8_XlL^@`D`dAd1 zWL^G5DLYD=>Vlr`d{TMvp7X&m&y)w($pPHMfTZcJ2amcxXxR^|VJ&#>tbdBkbS2Gx zIca2=A_v7~xl-mUDXo#?m3ZRVU2@)Y#*dkx#1kjM86SvQ1Yvq`M{^1i7_3LP;@~>+ zXwZF=F_jMvR{Q|#88DE7Zc-uRt3=|k;jLoGEjmeT6eBAh0JVlG6$JgB0#k6H@UDBT zR5iKbKK9+`Ag>%AbRWB$3wX!-tT}#0-Dhp_v-3W_#43n=z^bvBojm*jt4qHQ(0nKk z;%4?kG84aGPJ6QsZFIm_>7oN<=pV^4i~TTIlgBNtw0qi3a`O{*wzPx3+aWj^3>`nihpSJXuqntO>M0w?#!9@x zGu(l&m)oDQ3CJPjIqQJ$5`KM-1CSr{oafA54mpT&MYkha_R=AN^fCGL7g(+-y_ovFs6t2wIY+{U`;gpG})8RrN(IVz4*Rb=M0nVuh2DG%Zu=P#LjU;-|bZ zON#P|+=6Qv{OLWoz#Q*srk1+spJ`0DwQ8JlYmx#TOVv`8*{0Y{vAa?X1LQIqr=?Dx zuK2VnCQ?j5yQPQ_Dd^1R5S2mPdlaJb5Zf2=b~tnxFwkB`5HPJEr~<7k%AmuPSLh3J z4VKATZ__ezgNk}@6fjROB~?-e4k&4HQI&9tm1~GxqlIF}IKT7_iu*N07%IR`pgteH zzF5B?AA%Np>`V0%Z9}Ge9O}Fbwnq%Rz{PR1yTYdJcjcimkASK+83m zPC?ckPFYjYeapfo>~IQ;kRoi@b{MM(9+v4^Yb1gNaxf0T$VkCmfZ%dDm`G{mU^0S* zaxfjin293oQ3R9ZU^as3axmY9aF!e{L@-wljsb>3IT(##c$CN@9>F*{2nl4-QxO18 z5*k4p_BMe0PSCo|f$13O29H7Jo# zTG6o9aL)sZE)?oCS=KQoxB2$RRW$8KIRTl#b99QPD>cS|~!< z2t5AIhTtYIijGHUi3lYiv|5DLA+$q;QW3f(v@Qdo z@XGW=7D8u5Yz{&Xg@zR%B)|A6LJ2};!vUWQSTP9Yi;x|m3wYM1wJt|6Q9PVP2?eel z2#pahLAl8FhH|k&e5yD6P`#m8it0_MEFwg`r6bW%XMtuq3p8wxvp^A23e=X3Hzmj_ zl8<1z94tgIUk;Ah4Jea@Iz=NGF9+ihTrLL_5KNVW>kvFD2U8I&kb@Zr#zl)9vJgy? zgEHbPlxrh+2{0KKQJ71aYd}X@p zl?W-XOhhPAmMs~uF|lw7jpT=3(}WlWk=RSS_SRrFd` zFqH?uq}SqyX8ueVgvYoZ2uG?(mC@r7Pe~7+jUK?S^9>7J55yr^j{F8Nl_$WY2k_&3 z!#dXk2}pI>i{1d9k{&!tk00j?cDT|fAyv{_dDQb-!Bw6Bm!80nc!O{Z*9vE(lI%~? z^c%VwWzJ6o`|!R#Qge7~Gkm1LcW9?8`YRj?3J;8#n&2_n0g+1DUpNiQwVYV7k#|ih z9)o;mfCjfg>V2igr8kPHP%$w^!2VIjR|QHwWoVnI4(^pE5U04( z*Ed)A#Q>?M*jTD;A2ll5M?K_eW6VTi+LwHG?47|g_%0gL$C%y`6DuMg@$D`);nI~F zbS{fLVI-8uZTE*7QqYC2YB_&XJ2!RV5f!C(lp{lgcTesroJkbDxOJ80xD~He$OL)B z3DnfV!+SLVQ;F+U-Mm(sGe#zB-hIoBwrr=XxoucN|+L- zUPkaUfl}l8Zab2U%8sPJ(@WkuNGczK;mAK##f>~HNUGv0W3eS0*XfEHQOdaEhX1sT zX%{*sK}9jsE-xMwEP0o84VJ{!y5j6B8}AS-)vx%~Tc(Lx`4fduG&3x0pm!D(i5*2e zCRln$A0Oj^QoqP^gQdYNK8E+KB7I*ipH^MSF2Z^lP<==QGlt~~Qu?w3F%Yg{`IP5Z zkv8CVs`*u=Yc(!vHKC*e7(wU2|7{GFp@|AKYKwamUt3M;s?O!Cy7Wyo_XsU*6Q}83 z6b+hHFuo)gnO)`4)nSCLaz}OPQYE)1uHy+7%0lJ$K*J%!u-Z}}&#EDH$7PFkYf6)G zYQol<(%bma*OHpyr%f%XC4Pq1lKKL~*;-O({M4!~H4Att=Mwpz3;eqjIP*)zZMCI} zoY#?hdle-Gti0F|bZ|HL>mkw@{G^0PT}ve3es!e~Tk(fbhFaWnP>TNEuS9gGCa?w8BQADDH=?>tHutLsyX)7le#kYM}J58h7xXo9_$EhBz>!9-w$vsZ7j9Z zn_9K`b?~6U-~T?iO>4)E7E&{bzi1-qe82eq`)~XA9US;u-*12IAJ}{7@K1*hf1}3G z;WZrIt)&>I&g2Q9(kFF$c4DgN@+#HmU6_jgB_OQBuL1u(@V}Y5fx0dN8ie;c8d{~{ z6>ZtMDw7&6M*;oz1J-LeR4iA5%Si!C4VBf7fMg$w0dFFOLfe+YIjj^4i;Y8>Qs}~c zl;I8HkEZX5utxt z?)Fky(-78$?OHHmA`l#=h_vtTjD-Vpks`)_I^?Y{f#VJl{T8p?kd5wp)O8TK5t=Hy z$E&PUKkNexH&S23RnEA5AnmHJ-R0NHsm9$H_rya>P!1VwMh*@SK+su+L_^pp%XTSEL`vLcvNR(lBuM*;Ff0R+ue($ z30tH#89%>jU-stVL!bUs2Cgd@l<~4fywxzNo=3Jq-{C(GlN$LYEJpgomQ~vnq@Vt} z#k;6yFev?DzIB+?!DvsA$u$YQ^l+(TK-dyAj(wXKR=aw*QO6G5kuVM%dSK}i{@ZZr zb7S;UnVyFoUBjg>0>YQ!3C;D0_A5`lGbn65D#;EGJ+WpP?=wOg;+wc!ZSsiSGe4@k z$?q>83_n0q{3(8GgfuiDYXvfR_Wrb@1O?zwf>A5^SerE2H*OU&=%8=ZZg0XQOq)jT^)TH=?u2BpxY--1ontn%G<;K_6_WC-&| zO3N#T<9-3p^%Fb0rLcoVDb}px-;R>D`4_H77FiX_dG-3M)v{PUTGIwO!MqK;<7g?% z7?vc{Q<8X{G14jjf{l1!!zI(XfJPo`IShFCCON^3O+4@~slXVGlZojK^OCvWSm};m zTnZk@@6q&@@2=nSo=kw4U{Hc>j_Tti54A^Ts!U&WG!K_d>VSf6kbB9s?$dMIH!9!a zV^YrT$}6@zK8wIqtZ(X0l-$IDZRfMXHsxUxvOrUod5-DhrK;+H=yYT;+#Xq!A^{vq zu_@hga)R`_+OKdgviM?g&hpMXR=i&aa_^H9%-iP(nTVbvAbUUZ_$0A!QIbM%D39?6 z9HXP8_tbvbnaE@6^|LwM+WVE+gb^KRk>HTy<|OF@r#Az2&ObF7~&?Nj?F-G%sHy?gRe!`SDG+E*uA0FL~UnRe--+Bf|nN^sxeKHB#(emGnj zGZvsJ{*EJdo|K~w$a;btPE6Wcl%fC}N-^rGBX)uGNbMgM#!McYFFx8CJ1Tra7c^|p zlwfHXb1Yp1^XQ*22D9C_CT=Q9lL`){IqcY)AeCYMx#76>dr`r0f4{{c+d3d346Y+3 zm=fX0Un+UCfP{(6@a`iaVCAmfAAE^qF|Xw|4uRnz<%>2_2A&<9y?^To}8yre<$I<delRQEnD)F{IEJ@GIpF4J2rXTrrSH#qQt?V6nhQ9xwgiXFm2q6!WuA|y zt+Fl#rL)ZGJoR)%2ns@L4?b(C2IuG`2u)~8Xf@~}f^tryqut&c55j|Tn$xOYONg)@ zv;ldoEw`!(o;mC$cv0Auy5?Y&bq2yx|NVG<0)>Pd zmu5rI5uc@-`2BjPCU10tI z@UlT@bM%8}N5Z;3;*)M*iEH+>;usvDi(|+H$Lz$gaqQU_EF9uta4x|?I^9nUo*69da?8`Swvd8H3kdwi7FT7)*ivzz2j#m-z?C(#6sI24Sz;q$s zX}fZuJqpnduGtB`M?>$Ny6FAEGs*B9K9B#Ytjc->9HS5*=jwzw6Hd?t!-FK)KX6yA zCMxS+xOvq88QNW)mWwtu8>HT1u3o3{af~h;pmg?|lQm~Bc*+E!4IN+elS$1`njp%A zt-0bQBy`jI2{TH{v;dr!WZD9zrAVeL{fwTq8mVxvbJ#7ZoUH({W~UtOuigD9NM((f ziTYC{dHD6HaTeGpuuQTnp2;62L0vY3V-(W7KBRIERO=`hxCps=oj-=XI~0Dy4bTQi zbmzk+O`)1&;~{S7_$l?@`4a<*IiPf5u@hSSUI{I6BPj1Qo3RRsSWLxFA?78C?t)o6 zl#je4Rj+t+0V-qBEXh==NQe(3I#fWXxpfwwTp)SdvJh)_Vjs|`^q6vJf8cp4=zsV8 z^*TDt@w2Ho1^ySeZfE+dtn%H+Ty0L6LUe7?w8V{G~^>QrQajB;8gHm67M9Kp9t}4@{zZt zCbkqi#48e@^6MA7qJ^9Q*UKfswfH~ZM2}klrr9aPH~HypVU8o_LRLkL)T~dJ!Z6JP z%OnfZ`|VTvp!u7@F$z(luJ3Jz5;_Kk0m3}o`*u`aD8)_C`cAJ++m=l(-ne-XwcoBc z+HFDg*+FP?*QgrSLscT|ExG}fip=80RvX94Z7YipyCcP59;NhM=-s#lBspn^c|dB` zw18oKsG)&rcEajZ7$GcQ#0U?wa7yd;;331C;Jf%jO|X%TiMVrM0)%HxWka8p5ST$D>lYBM)B$ ztPlE|Jf{2ZMDy9P{RdR3eG$*SD=o7fSd7Xk!o29&@M|c&tKfRMP@7uT%SIPDG6A9} zxHr_?vI>o623RH;dHBt!-_b9w1;;3`&zasa10GNY7#@V)G;c{g^lq0y8vsA%VZD|3 zCfxcQwBFugXinT@6c=9t=|V?+u3e2bmk2@|)_&v%mEaK|T!wl()JrizauIP%&2Qe7 z%Jc8DUn)O8yaeo(i~fpRZ^PjhnI@63FnreDilb+TAj6 zi~=A_jctUMwF3+TAsjK{RHDjymPkOnQP_6^4F3a=`mpxazB}8&+C{GbqK(vMq>YA`-K8`u(J*gR=kr3)!ew6+X^M03R&QlYWTeUwGShb zJGH2omr^Px8u<9iLg}9E%34Gg!R+|Mr8cO+7vOrifJUmG)kTfOt%F2PsMQ}E=fL!= z2G3Ig`~2Hg*P-Tn!7>TBkB_!hcY`g<0mp;zF5YR2ZK$$718o3eFSTb#K9n_fJ>*9rbm|yr1K=h+YNToYCMpNC-m+w9wH=+|GmP5=VeGnxoA;uP*g;?_ z?!tJuZyOPIcD2RoC5wOdR4S(~aQymIYNfWV+ya4$P(Gji^CI|6>EN23IFIf+)EuRJ z0X$CyDR13&2nzZ!SSA_kJ%_0_T%oBc5J#Xjj-8VaiI;=nL2z5AgixvM1Z@D|8|9h} z@lsjeJ_lMK`seP;nO~vFJOrf+dyu&2N7&!VThZH(oY3!eG#NL=N(9?{u%7YjUR#^C z_^x`LWLWfc$M4TE>1~_64bl|h9)9UcPrSqdu9pk>h{NYQpjH{LQO2M9SIdql*_q%Ng#=XwPHBKnX&o3IB*GW{liJmRhVBQ$04avH zO4Gq+Tm`8cIq2+^4AfEB4%E@!?>6gw;qW0`MvO{Ss$$|KA)-`0iM`dUTH)azKkBq? z`ze^GOmHu=Uv#{HY09tPsd*RbxEl$Jg!oPM)CV1XNQb zYCq&D0-1L2KooqU#o&6mVE&dLUK`9*FwIV&;aOQzAmd5!JQb)XV=He*mva{^qX7H! ziK&-%9H8BpI8 zF!X&Bzw$ephuS^?N;iIN`<_+d6%>Hb=7iMv0LdaQ@F26shb3Hav@~nH8B4j$yOq+E zwVk*Oye=3ETfI08Yz1JNoj^3%zy5(fGU5vGDp1-c#Fd54&I8LNz}Qx6S|U147w;Ci`$_Ix|w7Ce?rFwIV= zXFkvTu$j=Xu$z!4bYQ%ockW z$cx~7eYn?q(AY$9%}ziUv;kdFiF?5FR3JIV7EHp(;UZWj8C1)-=i6YDpMYZ&u#Bxn z9tV<`d%#V&R>QtE~x_eUT~ zTlZI?HL+Tr~xIXxMlxZqY^U-+QP9n}z!TjT>+#gYzcfc~qs8`;8=Tl@b;Rys2 zxI^B|Tn>d=0EPzvf7EsGuQ0}2KpOy^tCOCgd7J>Lvu><2yL%OAF$is^x1ZCTOvFpZ`kFRC|tFU3D27RTd?3Qtx0*-s_sEV>W7#o0Ql8ZP`C$tL>`=Hw! zISMQV+vA(vW}@t7fMt@=b!oM~9Ta9QI7Wf5UF9A-V7B&yVF1Ff`LJVXFjqk8JH4IX z&|*bpzW}A{x8w895?r0Q(KvrLx6;0iP|SL(L6la8n(h^l3BK3OIh(__q#u#Km~f!U z=V+I?jIERQ_JNBzo{E^jErA-J3JDW{QPZ$%Q_F-^KOgz#=*3Ue?*opbO`s;3*`7xu z)>)v_)AKs-nT>|aCqn`k%1_!fT#9DD8ca_GXT;FO)6pI810I7Wf> zREybNP{>cg@F28(-&mK4UVGXU2m`!d9uJyXUiG1MC1|~U;6~f>*052#LFq!jcz;zL zs8luxZJ4fRc6s=@2wUXd(7ht!rfN*)5~3websVgsxz22Jrb7xB;7=Dftc#42z%)A{ z|9as0c8GBZJWmC5`=Gc%@MH48GRd%qRMPiC-!XayBon~jtb6h~lEj1ILCC{Lezy;r zwjQ(r*e}0TxEme9fli?HVY)Nb7xqIxp9@MGq>E?)yF7BH##F|5Z>1g} zXrw7;d$#74*<0QfsW#ZROw+g{FmyjlUy`x=Y&6lX1%@CsqakW+LTSJUwJmG}=&c021pl3_K z^He~uijRGO^4bQLNrqhzcjgq-<1{!%0er+Ce_n!~-2=mepqE=06Na(h#4V7_-t@De zJ0tQ@sEhnT>qC2;ZB%(Dtm;-!y08sv=SQHLPI7BA)J7qArG9-jXj|#qnb^fqw_0i=bw%DBB(CJZUGSa)I4()OQy8%mgsaPPq4uJ==wZY2bM(fCqk1 z^)8I+DX>g3WUsD$_o7F+3yx8M9($nQw`gFIyC4;z_U?VO{~)xlg%2xZO9vwt?h;{?~sg)?Sh z*`J~LnP8foNH64+j)h-)4LnZ;>-z~$e}~I3`Xt~Bv`eOZ(E;W(9t;nHtIsb*elDsLuh=`rNXmmxq3YR(lnc&QfY@wa2L2uu~AnK5E}cgr_6ytqebl%aU}; z5!p_2TC&AngfK-2->f(CTs6#of$QbMnA33o0dyXF!1Pp5-r3>#26~K(V3}l`Z>}9e z>l{zOF$$ztn*5%Lr(!Na6oP8}E_@;$SpnJruxHQu4`Zs@)?J|W_EF=m9iNJ-Jr7D3 z`hH*IL}+Cp2yNJaq190$Q*yYaqo!Q>#2g?SJ3ey2ZJ*q>^G4li{VAqy(j6^3YVJvF zYd&xI4&2JDd=$GAR^aq26XD$42G3Igw!U-uS!k}~Zvedvt=FJu4UlL)I7R`k;@1bv z=ysFA@E~-}%Qw7-vDh)t2H?w?-7?e+wF0RR8=zf3CIq5|-vr(ZgDzFJqKf8%@D>Z6 zDphf`sg8^9;3f(60e&r>uyKC+8|7gjFw?cZ7(mm3cW*NA; ztERl;()$_@jcw6LEoO8@wf7oSXX*GKj?IRDwiR42mk7aoOLc@lmIbESDa0Y)KyUI2 z!1GkZ*m zdO=(CKQR*_5h0%aX}MV_h83Un+3E?miL;?K=-jXYcxjZYb)x z5QH|g)4;A}Fee(NHI-I6Quk^~1m8S=$k5dH554ns$PSO5yMYwE%Laa+2deJwCz|&( zwhbI&7GYmDvs>HxFlFGHo#?wXS#tws=^A*R3jRJfwENJfj*5ejvIL{Er}@I0oe7Rn z$Z(>+Iu>QK4h#vRo4 z6PV7k`)VpwNSY3a`*+?S|8D=@NfYi)9C`Q~=tHK%>kG}dnhGiN5L*OQb>(S4*t8RT z@&MR|0z{gf0J&$o_COFZA95%V(?X_xf@U%gERzg!(v+|Dz_l41qk#E_HG}5aj)LJq zILnP2`Z}844bTQ4UF{!s8J+031puBlX6pVP7(m)VXgi(Snp+AcQ z5+W5i-v3GyuVGOudBGsK)r(g`*<46X=idGeb}SW4vlDAzw=y$OY$w6aA}$2O0LcDdd4CHNmI6}W>C_gV<%3}QPJrs9>$fe$ z?={p!0Vr+m_-SqNSVW@MR7M$>7ORj1M3gG0I@B+t=?2Hv)MxvCJ^-VY3hoLI{^M6< zEWXuD*VrE5W1mt*0tNgi!-HhG6Mbz2Fi+eJQ6Y?RS-C#FVLKLq*5{6YC++t>D7~$q zbe1~Ju9(r9vOs9r!S751(^J8pw(s;>IMt`XGRYE5`Z7oZ8Sa8(6f&%TtLb;p z$jIFgl7#3#?aeN*=L%h0ri}C6F-0zz56%x{cx3kaSla2Rm`@}GL>em&=plnhdrXiZA8r#;x!0m##{b8?u zaG#>A_HCDMLP%m`+RVW0_wsUufGlK$zXU8 z*25q7`U^Q918o4>u5I4CiQeF*KWKf}uJSdf^+JZ>M*)BCg)#5Ip__Y@&mE2>gjDd% zCBSDn_6^sR)nZXTdldTKapxg}3tFStE??G8@1kY1}*RW&D_2?iE zgJqHdp6fC%5{a&ZV-yf4~ zi?3xOeE2^xzOHr$Z zV49ua?ge}o09Bmw2!IuM1#=Ig87~9JC;+BSZ{HJ$cYxtR2pt_x-GSXY3)%pT(bcbQ zuMIVO09tSHjsNKF>5yR3V@O~haI0odj1m$+XhU1v$fd^7dn@z?bHVde zP%irZc&9qpUIms(#u@WtoxM=_Bj6YX(v4*Yjm3NN!SEocZ%#b!k4OF*r$fIv;FhN8 ziWO+J0kc8tLtBiVRI@saw*!t)}t;G!8AK@rM<|X4XxM%o~MFrT9v9swDF5znPhCUcjm1J z+9%)`1-e@^zRg2%#>4?DEOlNSqBqvv+E1 zDEuSdCLUdW+%%xO7#O=|`^H*>Y>Pf>6GZ5yIlhb6%-7-zz|!;3o^RQa$c3zz+G914 zgwKTtPHf?q);`5l&0O$26?Er%w9dk4V-r{=f$xhMPu@9-syhOXQ2-2$2)Kie<^~uB zK%Bhvq8Cbh>^v0s-l+w@K7R<^nKMsU0i(*GPGcn~ViMxCxnZq#!L}aan69GI$1K%R zZG~McQTj!AhJUxaGaf(B(-P3Z7b4Q^L~&PFJ`979$*TZX!BP8{Q3puR!7>UYPYu1U zq8Hf#h6iB@o>A^7eBZO64FHohO`}6WJpifC4YS`n(;IDnQX-1l^7fLnKJbeYKxpl2 z7EeHzn^qTub4QSSL1%;Sb>OGpb`6=c@$w&CrI;M3SfOL&5>39=b|o1C6=7b`aP=Ap z^a5Nj7wXn0b~k`hPu~Jj6xmUC~at?WexkoyQOeg_29K8=qSR< zhM?kdglz@>bphR;zTRq8%|_SG)(SZC1E$`=eP-hJC9qa~5;fPfwmJJCkqdmibw7-R z`=11+*$MyT($2TwB^(0JQxV|v-+o9#k>`PBl0|6HWBUa7#iKJIr4Zu7Sz~(vUpyEd zB*ng;tK37ExE{0ta=cj>-lIOo{QjWzVbv`U`lLbmazSbPel>p^hF>H1^9vg^<;&am z14{`plJ+~y4voLgcKjryECTw0RqMc*^%l5ZE~qgc5C6oQ!%ra}C)o4LJ!zlST<|;< zxFOerRj8*;V3}mV+8M3Bgy2WOF$&1-4?k%K70Cy~gD`vbxg9tb8aDPcgy{R#*2uJ> z06qtlZhZcfsA!nxBoNx1gd=5O8xA2{Mj3q;tCa#ol)Ca_;@SQ`MBRRCVx7_F+o2M| z&p5Oxn#MX?N-m;{kXP>#UKM3^0$eW__ES$@SEI!gfN6H3UpiuPA!;e&8iZ8v+r}<`Uu+IJ|ah`k@LRLb@Wza|X1V552hs zu9pjRnLcxa(W=7>k&P4f(5H>M!Nr&do=FBC zDppYih$z+k3;nQ$-J1_-`>tVmT19jy;g21iGc-eWwz1>%=t4v(obvs~vB zy9lvGKz-iKD}%~jwTP!(z-T%hv1TW}4;QCNFbfyJ^HdOK^n3F<49a7$Oaf#6a-U`M zQ8iN+Lkt1(+Z!)v>SF~M2Ed$BJG?Dg$1afiPB->k4fTQXIS)$LFEuD#!lQ*Cw7CyH z!!F*s*2xKalSLVOx@lA**ya)vr8~kdYR>3vi#9-_BFq&p_CA8nek-_MF4P{oM_fhK zWr1mS;-322HTvB1Hh7*2@>|>OZ2)hA1HuUG?E^Kw7JHUc@!_4PgM2Gcmp5~;^c3>AIErNfm>3iO=S69LHatV;oK6Nz^ zkK7HZ6cG}-H>O>KGr%&*LPYw#Umcva;24D%h4CM(f?OG3c#s@zFZR0dI#ds|0g}`h z(QaZXRW0jt(0cpc6}6r>hsEXTkTW#+%I@D#--#f!VPk)N1go=`XWrKM=yJiD<;CY- z)Rc9wJD8@lO*#RnE>zz)EjtWtA^}XZ6W5HfN3KI%(!ldnke#^R`2tk*6j&x1+fSz^ zG=_D*3yx8si>nd872QT;7T^=Sfj!?IiANTKHUMDI<$VrRMM^!;`mnLL%SPk?WfmxH z&@)3T_+PgX)`;a%YuHJ>_~K~NNynx~nr3Be2cOA|bNFSUXi7IJ5RJfd3fx0r;&Z)8 z3TuwgEDDJauUAm0LoRq*C{(v0LKz5YLWc}T@C*gJ9Y2F$J_YY+Ya{psL2cOJalaru z;RV8hooq`EftX1|_X8eP5MD;%Yu1cG2ya4I7y9M)Mf!7P7&e!`uZ9O zeOUf4$IB-p>Jd?y-X86v@S(Cb0-w6;cl4Za;&v}k(?N}^e!t$}cUGEWy`d9QlJN+y0Whx*1`r?1#ix)5GKk@uP`{REHAEx>Q|DB&?H}_+z0Ptzw z_fw>$|HP{Vx-$L`LE1?Cr+*oKj0ZK;zHW2AOykc~^$<}X|D7)*UIWk#@jn+2K6QIp z7sNFJzcKzhUq-ywK+_Vl4}gZ?Km8kmUwme+YKH$^Klr8bXP-5C{foXofAi&M-|z?3 zv=u$*%lH`eN|f|- zREP4_nwy2>LLAAE9?MrHjiSzE)1(Nu@Wr@~py%(|ta4yBt#nU!Upt!@tV1X45qySO zvmmF@X-(+0cdCoYXLyEB#9Ry3>r=TZ<7V;R0PX|wRlGEP(<+tL*ilz!$?%*af+GZj zWff*cqc>9D1d@ULWavh4KaiiEECb7de2*y=)Pn~7{9P(LOXzNbB1Sh%JqL3mXwo@F zB=Z2(X3zo(!D>k+!(M@50B?>SlpH7~ax?W-AV2EK1@a~SHhoW#N-Nny^+8|;$Lnox z?~8PH_eXa2@7lDFjiX3HGlrH=uwDFbmi87X@A$=4>NbbteSNJ!GC*uSRbF% z1%)cz{by-2uYO-Q6{?KH6H_#oamr8WzCv|-&7Wwe$f=T^F0T}>!_U5q6SJQa$ka4Z z+AnSyC3~!}y)Hh?v;L^33)Mr8sqvE4YOCXh(Om9;Ctn@ccdL0v(&(Em&yulKs9td+;ZC#c`0ErVmtmO8C&WDf|7 zg3?yzw0eZIWT8z5<59SHUxS^E&n6@~iK-JoAYo_d2a-QI3GH z-d3VA>;q^J_0*>5VQ>peMv2SUY!_Xkiuh~aUzMnWGCBM|#8Xb8D@ZBwDx@Nlh>U7k z&cm>L8+}+8l&TEJ_jGNksWif+-#(4! zt`j|MqJJdO;K$%a@DuP;Fb*aFYlM{<$`Bz^J}#jI_LmIK&wx<=9GnKf0KWv2U<$mf zC!zGpHeS9C<$$4lg|M*B@Ue}rN_48;=u^v92t^w%QvNS1-RDyUw)yCy=5e3Owl9w} zm`C&_pGvcv7RSqoo{u$i>}GbkN=uin{4^JKm9$Pbm#dWr<;;$VJNr9!dF<-n+tc6G z5s5$hj~XB0xrO>~kmrC5*lXZ*@LM2dE%rB%=YiPY1iu5n2U5=aq62Y}eO_4tvSKo^+(z~wpTI9VQLzf4$I|D^)*zv+}p z)xJ@JBUq&@B)!Mz<4K3m15U+4=^j68B;HD0I>)9P>(vTJ zmVUvn9<3ApRQ!eiyl_w!<1fW0#(#zSO8ByEe#^?y+XAY+QmB4ys1AucMP6g6&cso4 z`kkzgWm&fwire)^0aaftS!81Rq|iC+auLb3L-jxn_r=xvM6F8GKd4bTK1pL5AK^N^ z2-kb)qCHqvC=lhkJIa+*3s;HF8<0QEHuryEleq%=CYw-DlY?mNN55=lWlL& znd^kN)kL$XiH6Tgc)f(DSN$)AQhYusg*n5~U~@2mK{n|}*Q*Y{49Fia%a#l;MuRSJ z{IJ_|%yGOnn#lu(r5V|xQ|b)M0nEa(7P&B)5p;p6Cxpe%(h;(UHXD{!WSbs~v8==_ zEYpjylwu29IU+1q49gb7@*wh4!jh^V*`S)%%Vxb|s0NV>6PgjKBTup7Eue$NK4NwZfAOp%hL$`-Dx+G76b#JWPED*s1r`t89DT zeo`N+SNZlm>MS0E`W(&Wa?_ckdDTo$GVgb4cZ15h>$8S!6o(G#JQZ3&unX)4y!m78 z1zoznK^1s~X8;gyXZ0@=){RSiSP$(m=+)mP%)aMchzkqVM@O;`7amsaGGcW7v_EHb zZAQ0`_5f&&lm!Pmf<2Kv-CYtSdu%;E=y&euY~K+Ib$5tf(%g<-;#(udx}{OAu#*@- zA)QN^Mk?ffh!2=jJcbAj=^Bua=&Hv$o(FQA`;0Aa!b0N5#?GY8%rf5 zqM~Rpa#!kA5lYe(r9u&+-DU{yb~X{!NLm zEJ$1xr~A*izjwzFxivxFm>69XA~KTPM0#XQj7tce?1p+JiYV@@7Yp-}xFp;WM3Y2e zq430rAX%&4iSgm$@0QPwGE-_?X*94;?vn@QD6n2M-@Pdhpo(V+N0PowavGq&E4
    ^J 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 Cn72#- diff --git a/wasm-port/tests/browser/interp_smoke.html b/wasm-port/tests/browser/interp_smoke.html index 1d3c0a8..3fd5998 100644 --- a/wasm-port/tests/browser/interp_smoke.html +++ b/wasm-port/tests/browser/interp_smoke.html @@ -7,7 +7,10 @@
    running