blob: 65573f5867c219fb72df422aedbef8f57d3b51e1 [file] [edit]
async function WabtModule(moduleArg={}){var moduleRtn;var Module=moduleArg;var ENVIRONMENT_IS_WEB=!!globalThis.window;var ENVIRONMENT_IS_WORKER=!!globalThis.WorkerGlobalScope;var ENVIRONMENT_IS_NODE=globalThis.process?.versions?.node&&globalThis.process?.type!="renderer";if(ENVIRONMENT_IS_NODE){const{createRequire}=await import("node:module");var require=createRequire(import.meta.url)}var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var _scriptName=import.meta.url;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var readAsync,readBinary;if(ENVIRONMENT_IS_NODE){var fs=require("node:fs");if(_scriptName.startsWith("file:")){scriptDirectory=require("node:path").dirname(require("node:url").fileURLToPath(_scriptName))+"/"}readBinary=filename=>{filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename);return ret};readAsync=async(filename,binary=true)=>{filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename,binary?undefined:"utf8");return ret};if(process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){try{scriptDirectory=new URL(".",_scriptName).href}catch{}{if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=async url=>{if(isFileURI(url)){return new Promise((resolve,reject)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){resolve(xhr.response);return}reject(xhr.status)};xhr.onerror=reject;xhr.send(null)})}var response=await fetch(url,{credentials:"same-origin"});if(response.ok){return response.arrayBuffer()}throw new Error(response.status+" : "+response.url)}}}else{}var out=console.log.bind(console);var err=console.error.bind(console);var wasmBinary;var ABORT=false;var isFileURI=filename=>filename.startsWith("file://");var readyPromiseResolve,readyPromiseReject;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;var HEAP64,HEAPU64;var runtimeInitialized=false;function updateMemoryViews(){var b=wasmMemory.buffer;HEAP8=new Int8Array(b);HEAP16=new Int16Array(b);HEAPU8=new Uint8Array(b);HEAPU16=new Uint16Array(b);HEAP32=new Int32Array(b);HEAPU32=new Uint32Array(b);HEAPF32=new Float32Array(b);HEAPF64=new Float64Array(b);HEAP64=new BigInt64Array(b);HEAPU64=new BigUint64Array(b)}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(onPreRuns)}function initRuntime(){runtimeInitialized=true;wasmExports["h"]()}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(onPostRuns)}function abort(what){Module["onAbort"]?.(what);what="Aborted("+what+")";err(what);ABORT=true;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject?.(e);throw e}var wasmBinaryFile;function findWasmBinary(){if(Module["locateFile"]){return locateFile("libwabt.wasm")}return new URL("libwabt.wasm",import.meta.url).href}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}async function getWasmBinary(binaryFile){if(!wasmBinary){try{var response=await readAsync(binaryFile);return new Uint8Array(response)}catch{}}return getBinarySync(binaryFile)}async function instantiateArrayBuffer(binaryFile,imports){try{var binary=await getWasmBinary(binaryFile);var instance=await WebAssembly.instantiate(binary,imports);return instance}catch(reason){err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)}}async function instantiateAsync(binary,binaryFile,imports){if(!binary&&!isFileURI(binaryFile)&&!ENVIRONMENT_IS_NODE){try{var response=fetch(binaryFile,{credentials:"same-origin"});var instantiationResult=await WebAssembly.instantiateStreaming(response,imports);return instantiationResult}catch(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation")}}return instantiateArrayBuffer(binaryFile,imports)}function getWasmImports(){var imports={a:wasmImports};return imports}async function createWasm(){function receiveInstance(instance,module){wasmExports=instance.exports;assignWasmExports(wasmExports);updateMemoryViews();return wasmExports}function receiveInstantiationResult(result){return receiveInstance(result["instance"])}var info=getWasmImports();if(Module["instantiateWasm"]){return new Promise((resolve,reject)=>{Module["instantiateWasm"](info,(inst,mod)=>{resolve(receiveInstance(inst,mod))})})}wasmBinaryFile??=findWasmBinary();var result=await instantiateAsync(wasmBinary,wasmBinaryFile,info);var exports=receiveInstantiationResult(result);return exports}class ExitStatus{name="ExitStatus";constructor(status){this.message=`Program terminated with exit(${status})`;this.status=status}}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var onPostRuns=[];var addOnPostRun=cb=>onPostRuns.push(cb);var onPreRuns=[];var addOnPreRun=cb=>onPreRuns.push(cb);var noExitRuntime=true;var __abort_js=()=>abort("");var getHeapMax=()=>2147483648;var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var growMemory=size=>{var oldHeapSize=wasmMemory.buffer.byteLength;var pages=(size-oldHeapSize+65535)/65536|0;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignMemory(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var ENV={};var getExecutableName=()=>thisProgram||"./this.program";var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(globalThis.navigator?.language??"C").replace("-","_")+".UTF-8";var env={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:lang,_:getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.codePointAt(i);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;i++}}heap[outIdx]=0;return outIdx-startIdx};var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);var _environ_get=(__environ,environ_buf)=>{var bufSize=0;var envp=0;for(var string of getEnvStrings()){var ptr=environ_buf+bufSize;HEAPU32[__environ+envp>>2]=ptr;bufSize+=stringToUTF8(string,ptr,Infinity)+1;envp+=4}return 0};var lengthBytesUTF8=str=>{var len=0;for(var i=0;i<str.length;++i){var c=str.charCodeAt(i);if(c<=127){len++}else if(c<=2047){len+=2}else if(c>=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;for(var string of strings){bufSize+=lengthBytesUTF8(string)+1}HEAPU32[penviron_buf_size>>2]=bufSize;return 0};var _fd_close=fd=>52;var UTF8Decoder=new TextDecoder;var findStringEnd=(heapOrArray,idx,maxBytesToRead,ignoreNul)=>{var maxIdx=idx+maxBytesToRead;if(ignoreNul)return maxIdx;while(heapOrArray[idx]&&!(idx>=maxIdx))++idx;return idx};var UTF8ToString=(ptr,maxBytesToRead,ignoreNul)=>{if(!ptr)return"";var end=findStringEnd(HEAPU8,ptr,maxBytesToRead,ignoreNul);return UTF8Decoder.decode(HEAPU8.subarray(ptr,end))};var printCharBuffers=[null,[],[]];var UTF8ArrayToString=(heapOrArray,idx=0,maxBytesToRead,ignoreNul)=>{var endPtr=findStringEnd(heapOrArray,idx,maxBytesToRead,ignoreNul);return UTF8Decoder.decode(heapOrArray.buffer?heapOrArray.subarray(idx,endPtr):new Uint8Array(heapOrArray.slice(idx,endPtr)))};var printChar=(stream,curr)=>{var buffer=printCharBuffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer));buffer.length=0}else{buffer.push(curr)}};var _fd_write=(fd,iov,iovcnt,pnum)=>{var num=0;for(var i=0;i<iovcnt;i++){var ptr=HEAPU32[iov>>2];var len=HEAPU32[iov+4>>2];iov+=8;for(var j=0;j<len;j++){printChar(fd,HEAPU8[ptr+j])}num+=len}HEAPU32[pnum>>2]=num;return 0};var stringToNewUTF8=str=>{var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8(str,ret,size);return ret};{if(Module["noExitRuntime"])noExitRuntime=Module["noExitRuntime"];if(Module["print"])out=Module["print"];if(Module["printErr"])err=Module["printErr"];if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].shift()()}}}Module["lengthBytesUTF8"]=lengthBytesUTF8;Module["stringToNewUTF8"]=stringToNewUTF8;var _wabt_new_features,_wabt_destroy_features,_wabt_exceptions_enabled,_wabt_set_exceptions_enabled,_wabt_mutable_globals_enabled,_wabt_set_mutable_globals_enabled,_wabt_sat_float_to_int_enabled,_wabt_set_sat_float_to_int_enabled,_wabt_sign_extension_enabled,_wabt_set_sign_extension_enabled,_wabt_simd_enabled,_wabt_set_simd_enabled,_wabt_threads_enabled,_wabt_set_threads_enabled,_wabt_function_references_enabled,_wabt_set_function_references_enabled,_wabt_multi_value_enabled,_wabt_set_multi_value_enabled,_wabt_tail_call_enabled,_wabt_set_tail_call_enabled,_wabt_bulk_memory_enabled,_wabt_set_bulk_memory_enabled,_wabt_reference_types_enabled,_wabt_set_reference_types_enabled,_wabt_annotations_enabled,_wabt_set_annotations_enabled,_wabt_code_metadata_enabled,_wabt_set_code_metadata_enabled,_wabt_gc_enabled,_wabt_set_gc_enabled,_wabt_memory64_enabled,_wabt_set_memory64_enabled,_wabt_multi_memory_enabled,_wabt_set_multi_memory_enabled,_wabt_extended_const_enabled,_wabt_set_extended_const_enabled,_wabt_relaxed_simd_enabled,_wabt_set_relaxed_simd_enabled,_wabt_custom_page_sizes_enabled,_wabt_set_custom_page_sizes_enabled,_wabt_compact_imports_enabled,_wabt_set_compact_imports_enabled,_wabt_wide_arithmetic_enabled,_wabt_set_wide_arithmetic_enabled,_wabt_new_wast_buffer_lexer,_wabt_parse_wat,_wabt_parse_wast,_wabt_read_binary,_wabt_validate_module,_wabt_validate_script,_wabt_write_binary_spec_script,_wabt_apply_names_module,_wabt_generate_names_module,_wabt_write_binary_module,_wabt_write_text_module,_wabt_destroy_module,_wabt_destroy_wast_lexer,_wabt_new_errors,_wabt_format_text_errors,_wabt_format_binary_errors,_wabt_destroy_errors,_wabt_parse_wat_result_get_result,_wabt_parse_wat_result_release_module,_wabt_destroy_parse_wat_result,_wabt_parse_wast_result_get_result,_wabt_parse_wast_result_release_module,_wabt_read_binary_result_get_result,_wabt_read_binary_result_release_module,_wabt_destroy_read_binary_result,_wabt_write_module_result_get_result,_wabt_write_module_result_release_output_buffer,_wabt_write_module_result_release_log_output_buffer,_wabt_destroy_write_module_result,_wabt_output_buffer_get_data,_wabt_output_buffer_get_size,_wabt_destroy_output_buffer,_free,_malloc,memory,__indirect_function_table,wasmMemory;function assignWasmExports(wasmExports){_wabt_new_features=Module["_wabt_new_features"]=wasmExports["i"];_wabt_destroy_features=Module["_wabt_destroy_features"]=wasmExports["j"];_wabt_exceptions_enabled=Module["_wabt_exceptions_enabled"]=wasmExports["k"];_wabt_set_exceptions_enabled=Module["_wabt_set_exceptions_enabled"]=wasmExports["l"];_wabt_mutable_globals_enabled=Module["_wabt_mutable_globals_enabled"]=wasmExports["m"];_wabt_set_mutable_globals_enabled=Module["_wabt_set_mutable_globals_enabled"]=wasmExports["n"];_wabt_sat_float_to_int_enabled=Module["_wabt_sat_float_to_int_enabled"]=wasmExports["o"];_wabt_set_sat_float_to_int_enabled=Module["_wabt_set_sat_float_to_int_enabled"]=wasmExports["p"];_wabt_sign_extension_enabled=Module["_wabt_sign_extension_enabled"]=wasmExports["q"];_wabt_set_sign_extension_enabled=Module["_wabt_set_sign_extension_enabled"]=wasmExports["r"];_wabt_simd_enabled=Module["_wabt_simd_enabled"]=wasmExports["s"];_wabt_set_simd_enabled=Module["_wabt_set_simd_enabled"]=wasmExports["t"];_wabt_threads_enabled=Module["_wabt_threads_enabled"]=wasmExports["u"];_wabt_set_threads_enabled=Module["_wabt_set_threads_enabled"]=wasmExports["v"];_wabt_function_references_enabled=Module["_wabt_function_references_enabled"]=wasmExports["w"];_wabt_set_function_references_enabled=Module["_wabt_set_function_references_enabled"]=wasmExports["x"];_wabt_multi_value_enabled=Module["_wabt_multi_value_enabled"]=wasmExports["y"];_wabt_set_multi_value_enabled=Module["_wabt_set_multi_value_enabled"]=wasmExports["z"];_wabt_tail_call_enabled=Module["_wabt_tail_call_enabled"]=wasmExports["A"];_wabt_set_tail_call_enabled=Module["_wabt_set_tail_call_enabled"]=wasmExports["B"];_wabt_bulk_memory_enabled=Module["_wabt_bulk_memory_enabled"]=wasmExports["C"];_wabt_set_bulk_memory_enabled=Module["_wabt_set_bulk_memory_enabled"]=wasmExports["D"];_wabt_reference_types_enabled=Module["_wabt_reference_types_enabled"]=wasmExports["E"];_wabt_set_reference_types_enabled=Module["_wabt_set_reference_types_enabled"]=wasmExports["F"];_wabt_annotations_enabled=Module["_wabt_annotations_enabled"]=wasmExports["G"];_wabt_set_annotations_enabled=Module["_wabt_set_annotations_enabled"]=wasmExports["H"];_wabt_code_metadata_enabled=Module["_wabt_code_metadata_enabled"]=wasmExports["I"];_wabt_set_code_metadata_enabled=Module["_wabt_set_code_metadata_enabled"]=wasmExports["J"];_wabt_gc_enabled=Module["_wabt_gc_enabled"]=wasmExports["K"];_wabt_set_gc_enabled=Module["_wabt_set_gc_enabled"]=wasmExports["L"];_wabt_memory64_enabled=Module["_wabt_memory64_enabled"]=wasmExports["M"];_wabt_set_memory64_enabled=Module["_wabt_set_memory64_enabled"]=wasmExports["N"];_wabt_multi_memory_enabled=Module["_wabt_multi_memory_enabled"]=wasmExports["O"];_wabt_set_multi_memory_enabled=Module["_wabt_set_multi_memory_enabled"]=wasmExports["P"];_wabt_extended_const_enabled=Module["_wabt_extended_const_enabled"]=wasmExports["Q"];_wabt_set_extended_const_enabled=Module["_wabt_set_extended_const_enabled"]=wasmExports["R"];_wabt_relaxed_simd_enabled=Module["_wabt_relaxed_simd_enabled"]=wasmExports["S"];_wabt_set_relaxed_simd_enabled=Module["_wabt_set_relaxed_simd_enabled"]=wasmExports["T"];_wabt_custom_page_sizes_enabled=Module["_wabt_custom_page_sizes_enabled"]=wasmExports["U"];_wabt_set_custom_page_sizes_enabled=Module["_wabt_set_custom_page_sizes_enabled"]=wasmExports["V"];_wabt_compact_imports_enabled=Module["_wabt_compact_imports_enabled"]=wasmExports["W"];_wabt_set_compact_imports_enabled=Module["_wabt_set_compact_imports_enabled"]=wasmExports["X"];_wabt_wide_arithmetic_enabled=Module["_wabt_wide_arithmetic_enabled"]=wasmExports["Y"];_wabt_set_wide_arithmetic_enabled=Module["_wabt_set_wide_arithmetic_enabled"]=wasmExports["Z"];_wabt_new_wast_buffer_lexer=Module["_wabt_new_wast_buffer_lexer"]=wasmExports["_"];_wabt_parse_wat=Module["_wabt_parse_wat"]=wasmExports["$"];_wabt_parse_wast=Module["_wabt_parse_wast"]=wasmExports["aa"];_wabt_read_binary=Module["_wabt_read_binary"]=wasmExports["ba"];_wabt_validate_module=Module["_wabt_validate_module"]=wasmExports["ca"];_wabt_validate_script=Module["_wabt_validate_script"]=wasmExports["da"];_wabt_write_binary_spec_script=Module["_wabt_write_binary_spec_script"]=wasmExports["ea"];_wabt_apply_names_module=Module["_wabt_apply_names_module"]=wasmExports["fa"];_wabt_generate_names_module=Module["_wabt_generate_names_module"]=wasmExports["ga"];_wabt_write_binary_module=Module["_wabt_write_binary_module"]=wasmExports["ha"];_wabt_write_text_module=Module["_wabt_write_text_module"]=wasmExports["ia"];_wabt_destroy_module=Module["_wabt_destroy_module"]=wasmExports["ja"];_wabt_destroy_wast_lexer=Module["_wabt_destroy_wast_lexer"]=wasmExports["ka"];_wabt_new_errors=Module["_wabt_new_errors"]=wasmExports["la"];_wabt_format_text_errors=Module["_wabt_format_text_errors"]=wasmExports["ma"];_wabt_format_binary_errors=Module["_wabt_format_binary_errors"]=wasmExports["na"];_wabt_destroy_errors=Module["_wabt_destroy_errors"]=wasmExports["oa"];_wabt_parse_wat_result_get_result=Module["_wabt_parse_wat_result_get_result"]=wasmExports["pa"];_wabt_parse_wat_result_release_module=Module["_wabt_parse_wat_result_release_module"]=wasmExports["qa"];_wabt_destroy_parse_wat_result=Module["_wabt_destroy_parse_wat_result"]=wasmExports["ra"];_wabt_parse_wast_result_get_result=Module["_wabt_parse_wast_result_get_result"]=wasmExports["sa"];_wabt_parse_wast_result_release_module=Module["_wabt_parse_wast_result_release_module"]=wasmExports["ta"];_wabt_read_binary_result_get_result=Module["_wabt_read_binary_result_get_result"]=wasmExports["ua"];_wabt_read_binary_result_release_module=Module["_wabt_read_binary_result_release_module"]=wasmExports["va"];_wabt_destroy_read_binary_result=Module["_wabt_destroy_read_binary_result"]=wasmExports["wa"];_wabt_write_module_result_get_result=Module["_wabt_write_module_result_get_result"]=wasmExports["xa"];_wabt_write_module_result_release_output_buffer=Module["_wabt_write_module_result_release_output_buffer"]=wasmExports["ya"];_wabt_write_module_result_release_log_output_buffer=Module["_wabt_write_module_result_release_log_output_buffer"]=wasmExports["za"];_wabt_destroy_write_module_result=Module["_wabt_destroy_write_module_result"]=wasmExports["Aa"];_wabt_output_buffer_get_data=Module["_wabt_output_buffer_get_data"]=wasmExports["Ba"];_wabt_output_buffer_get_size=Module["_wabt_output_buffer_get_size"]=wasmExports["Ca"];_wabt_destroy_output_buffer=Module["_wabt_destroy_output_buffer"]=wasmExports["Da"];_free=Module["_free"]=wasmExports["Ea"];_malloc=Module["_malloc"]=wasmExports["Fa"];memory=wasmMemory=wasmExports["g"];__indirect_function_table=wasmExports["__indirect_function_table"]}var wasmImports={f:__abort_js,b:_emscripten_resize_heap,c:_environ_get,d:_environ_sizes_get,e:_fd_close,a:_fd_write};function run(){preRun();function doRun(){Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve?.(Module);Module["onRuntimeInitialized"]?.();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(()=>{setTimeout(()=>Module["setStatus"](""),1);doRun()},1)}else{doRun()}}var wasmExports;wasmExports=await (createWasm());run();const WABT_OK=0;const FEATURES=Object.freeze({exceptions:false,mutable_globals:true,sat_float_to_int:true,sign_extension:true,simd:true,threads:false,function_references:false,multi_value:true,tail_call:false,bulk_memory:true,reference_types:true,annotations:false,code_metadata:false,gc:false,memory64:false,multi_memory:false,extended_const:false,relaxed_simd:false,custom_page_sizes:false,compact_imports:false,wide_arithmetic:false});function malloc(size){const addr=Module._malloc(size);if(addr==0){throw new Error("out of memory")}return addr}function allocateBuffer(buf){let addr;let size;if(buf instanceof ArrayBuffer){size=buf.byteLength;addr=malloc(size);new Uint8Array(HEAPU8.buffer,addr,size).set(new Uint8Array(buf))}else if(ArrayBuffer.isView(buf)){size=buf.byteLength;addr=malloc(size);new Uint8Array(HEAPU8.buffer,addr,size).set(new Uint8Array(buf.buffer,buf.byteOffset,buf.byteLength))}else if(typeof buf=="string"){addr=stringToNewUTF8(buf);size=lengthBytesUTF8(buf)}else{throw new Error("unknown buffer type: "+buf)}return{addr,size}}class Features{constructor(obj={}){this.addr=Module._wabt_new_features();for(const[f,v]of Object.entries(FEATURES)){this[f]=obj[f]??v}}destroy(){Module._wabt_destroy_features(this.addr)}}Object.keys(FEATURES).forEach(function(feature){Object.defineProperty(Features.prototype,feature,{enumerable:true,get:function(){return Module["_wabt_"+feature+"_enabled"](this.addr)},set:function(newValue){Module["_wabt_set_"+feature+"_enabled"](this.addr,newValue|0)}})});class Lexer{constructor(filename,buffer,errors){this.filename=stringToNewUTF8(filename);this.bufferObj=allocateBuffer(buffer);this.addr=Module._wabt_new_wast_buffer_lexer(this.filename,this.bufferObj.addr,this.bufferObj.size,errors.addr)}destroy(){Module._wabt_destroy_wast_lexer(this.addr);Module._free(this.bufferObj.addr);Module._free(this.filename)}}class OutputBuffer{constructor(addr){this.addr=addr}toTypedArray(){if(!this.addr){return null}const addr=Module._wabt_output_buffer_get_data(this.addr);const size=Module._wabt_output_buffer_get_size(this.addr);const buffer=new Uint8Array(size);buffer.set(new Uint8Array(HEAPU8.buffer,addr,size));return buffer}toString(){if(!this.addr){return""}const addr=Module._wabt_output_buffer_get_data(this.addr);const size=Module._wabt_output_buffer_get_size(this.addr);return UTF8ToString(addr,size)}destroy(){Module._wabt_destroy_output_buffer(this.addr)}}class Errors{constructor(kind){this.kind=kind;this.addr=Module._wabt_new_errors()}format(lexer=null){let buffer;switch(this.kind){case"text":buffer=new OutputBuffer(Module._wabt_format_text_errors(this.addr,lexer.addr));break;case"binary":buffer=new OutputBuffer(Module._wabt_format_binary_errors(this.addr));break;default:throw new Error(`Invalid Errors kind: ${this.kind}`)}const message=buffer.toString();buffer.destroy();return message}destroy(){Module._wabt_destroy_errors(this.addr)}}function parseWat(filename,buffer,options){let errors=new Errors("text");let lexer=new Lexer(filename,buffer,errors);const features=new Features(options||{});let parseResult_addr;try{parseResult_addr=Module._wabt_parse_wat(lexer.addr,features.addr,errors.addr);const result=Module._wabt_parse_wat_result_get_result(parseResult_addr);if(result!==WABT_OK){throw new Error("parseWat failed:\n"+errors.format(lexer))}const module_addr=Module._wabt_parse_wat_result_release_module(parseResult_addr);const wasmModule=new WasmModule(module_addr,errors,lexer);errors=null;lexer=null;return wasmModule}finally{Module._wabt_destroy_parse_wat_result(parseResult_addr);features.destroy();if(errors){errors.destroy()}if(lexer){lexer.destroy()}}}function readWasm(buffer,options={}){const bufferObj=allocateBuffer(buffer);let errors=new Errors("binary");const readDebugNames=options.readDebugNames??false;const check=options.check??true;const features=new Features(options);let readBinaryResult_addr;try{readBinaryResult_addr=Module._wabt_read_binary(bufferObj.addr,bufferObj.size,readDebugNames,features.addr,errors.addr);const result=Module._wabt_read_binary_result_get_result(readBinaryResult_addr);if(check&&result!==WABT_OK){throw new Error("readWasm failed:\n"+errors.format())}const module_addr=Module._wabt_read_binary_result_release_module(readBinaryResult_addr);const wasmModule=new WasmModule(module_addr,errors);errors=null;return wasmModule}finally{Module._wabt_destroy_read_binary_result(readBinaryResult_addr);features.destroy();if(errors){errors.destroy()}Module._free(bufferObj.addr)}}class WasmModule{constructor(module_addr,errors,lexer=null){this.module_addr=module_addr;this.errors=errors;this.lexer=lexer}validate(options){const features=new Features(options||{});try{const result=Module._wabt_validate_module(this.module_addr,features.addr,this.errors.addr);if(result!==WABT_OK){throw new Error("validate failed:\n"+this.errors.format(this.lexer))}}finally{features.destroy()}}generateNames(){const result=Module._wabt_generate_names_module(this.module_addr);if(result!==WABT_OK){throw new Error("generateNames failed.")}}applyNames(){const result=Module._wabt_apply_names_module(this.module_addr);if(result!==WABT_OK){throw new Error("applyNames failed.")}}toText(options={}){const foldExprs=options.foldExprs??false;const inlineExport=options.inlineExport??false;const writeModuleResult_addr=Module._wabt_write_text_module(this.module_addr,foldExprs,inlineExport);const result=Module._wabt_write_module_result_get_result(writeModuleResult_addr);let outputBuffer;try{if(result!==WABT_OK){throw new Error("toText failed.")}outputBuffer=new OutputBuffer(Module._wabt_write_module_result_release_output_buffer(writeModuleResult_addr));return outputBuffer.toString()}finally{if(outputBuffer){outputBuffer.destroy()}Module._wabt_destroy_write_module_result(writeModuleResult_addr)}}toBinary(options={}){const log=options.log??false;const canonicalize_lebs=options.canonicalize_lebs??true;const relocatable=options.relocatable??false;const write_debug_names=options.write_debug_names??false;const writeModuleResult_addr=Module._wabt_write_binary_module(this.module_addr,log,canonicalize_lebs,relocatable,write_debug_names);const result=Module._wabt_write_module_result_get_result(writeModuleResult_addr);let binaryOutputBuffer;let logOutputBuffer;try{if(result!==WABT_OK){throw new Error("toBinary failed.")}binaryOutputBuffer=new OutputBuffer(Module._wabt_write_module_result_release_output_buffer(writeModuleResult_addr));logOutputBuffer=new OutputBuffer(Module._wabt_write_module_result_release_log_output_buffer(writeModuleResult_addr));return{buffer:binaryOutputBuffer.toTypedArray(),log:logOutputBuffer.toString()}}finally{if(binaryOutputBuffer){binaryOutputBuffer.destroy()}if(logOutputBuffer){logOutputBuffer.destroy()}Module._wabt_destroy_write_module_result(writeModuleResult_addr)}}destroy(){Module._wabt_destroy_module(this.module_addr);if(this.errors){this.errors.destroy()}if(this.lexer){this.lexer.destroy()}}}Module["parseWat"]=parseWat;Module["readWasm"]=readWasm;Module["FEATURES"]=FEATURES;if(runtimeInitialized){moduleRtn=Module}else{moduleRtn=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject})}
;return moduleRtn}export default WabtModule;