[
  {
    "path": "README.md",
    "content": "# Octo Project\n\n[Try the online demo now.](https://douglasdwyer.github.io/octo-release/)\n\n[Download the native demo.](https://douglasdwyer.github.io/octo-release/octo.exe)\n\n[See YouTube for gameplay and technical videos.](https://www.youtube.com/@DouglasDwyer?sub_confirmation=1)\n\nThis is the repository for releases of the Octo voxel game engine. The engine is designed to support the processing, modification, and rendering of large-scale voxel volumes consisting of various colors and materials. Ultimately, the goal of Octo is to become an online multiplayer platform in which users can create, interact, and extend with mods or plugins. Using voxel ray marching with compute shaders, the engine seeks to support a wide range of hardware, including integrated GPUs. Specifically, the Octo engine seeks to:\n\n- Run at playable speeds on integrated hardware\n- Run at playable speeds in a web browser\n- Run at high-quality speeds on desktop with a discrete GPU\n\nThe engine is written in Rust, and runs on native platforms and the web using WASM and WebGPU.\n\n### Supported platforms\n\n- Native: Windows\n- Web: Windows or Mac with Chrome, Edge, or Opera (or any other browser with WebGPU enabled)\n\n### Controls\n\n- Mouse: look around\n- WASD: move horizontally\n- Space/shift: move vertically\n- T: lock/unlock cursor\n- G: swap material\n- F: spawn physics object\n- Left click: destroy\n- Right click: build, drag object\n- Escape: pause game\n\n### Features\n\nThe following features are included in the demo:\n\n- Large-scale voxel rendering using ray marching and LODs\n- Realtime path-traced lighting (ambient occlusion, shadows, and emissive voxels)\n- Fully editable voxel terrain\n- Rigidbody physics simulation\n- Importing voxel models at various scales\n- TCP networked multiplayer (desktop only)\n- WASM-based modding system with runtime loading of mods\n\n### To be re-added\n\nThe following features used to exist, but have been removed as a part of the ray marching rewrite.\nThey will be added back soon:\n\n- Transparent voxel objects\n- Octree-accelerated terrain generation with Perlin noise\n- Peer-to-peer networked multiplayer (web and desktop)\n\n### Future plans\n\nIn the future, development is planned for the following parts of the engine:\n\n- Immersive character and camera controls\n- 3D spatial audio\n- A material system that allows assigning properties to voxel types, such as textures, sound effects, and physics data\n\n### Changelog\n\n- 0.1.1: Fixed a chunk meshing bug that was causing slower cached meshing times. World editing should now feel faster and smoother. In addition, improved left-click/right-click controls.\n- 0.1.2: Fixed a chunk generation priority bug that could lead to chunks being slow to load around the player. In addition, increased voxel placement/destruction radius.\n- 0.2.0: Rewrote the engine on top of the new Geese event system. Switched to greedy meshing with LODs for voxel rendering. Added snow and the ability to import voxel models.\n- 0.3.0: Created a rigidbody physics system with connected component detection, collision detection, and collision response. Enabled multiplayer for the live demo. Fixed various bugs.\n- 0.3.1: Added task-level and data-level multithreading, alongside other optimizations for the physics engine. Fixed various bugs.\n- 0.3.2: Overhauled the networking systems related to chunk/entity synchronization. Drastically reduced network bandwidth consumption, improving multiplayer performance.\n- 0.3.3: Fixed a critical issue with network chunk synchronization.\n- 0.5.0: Removed all voxel-related code from the engine. Implemented new voxel data structures with ray marched graphics.\n- 0.6.0: Major improvements to ray marcher performance. In addition, added back world editing, LODs, and some multiplayer functionality.\n- 0.7.0: Added path-traced indirect lighting, including ambient occlusion and emissive voxels.\n- 0.7.1: Upgraded winit to fix bug with mouse input on web.\n- 0.8.0: Implemented realistic rigidbody physics. Fixed graphics bugs and improved performance.\n- 0.9.0: Implemented WASM-based modding system. Exposed GUI and user input APIs for mods to use. Added controller support."
  },
  {
    "path": "coi-serviceworker.min-3ab9f3ea9501efd5.js",
    "content": "/*! coi-serviceworker v0.1.6 - Guido Zuidhof, licensed under MIT */\n\"undefined\"==typeof window?(self.addEventListener(\"install\",(()=>self.skipWaiting())),self.addEventListener(\"activate\",(e=>e.waitUntil(self.clients.claim()))),self.addEventListener(\"message\",(e=>{e.data&&\"deregister\"===e.data.type&&self.registration.unregister().then((()=>self.clients.matchAll())).then((e=>{e.forEach((e=>e.navigate(e.url)))}))})),self.addEventListener(\"fetch\",(function(e){\"only-if-cached\"===e.request.cache&&\"same-origin\"!==e.request.mode||e.respondWith(fetch(e.request).then((e=>{if(0===e.status)return e;const r=new Headers(e.headers);return r.set(\"Cross-Origin-Embedder-Policy\",\"require-corp\"),r.set(\"Cross-Origin-Opener-Policy\",\"same-origin\"),new Response(e.body,{status:e.status,statusText:e.statusText,headers:r})})).catch((e=>console.error(e))))}))):(()=>{const e={shouldRegister:()=>!0,shouldDeregister:()=>!1,doReload:()=>window.location.reload(),quiet:!1,...window.coi},r=navigator;e.shouldDeregister()&&r.serviceWorker&&r.serviceWorker.controller&&r.serviceWorker.controller.postMessage({type:\"deregister\"}),!1===window.crossOriginIsolated&&e.shouldRegister()&&(window.isSecureContext?r.serviceWorker&&r.serviceWorker.register(window.document.currentScript.src).then((t=>{e.quiet,console.log(\"COOP/COEP Service Worker registered\",t.scope),t.addEventListener(\"updatefound\",(()=>{!e.quiet&&console.log(\"Reloading page to make use of updated COOP/COEP Service Worker.\"),e.doReload()})),t.active&&!r.serviceWorker.controller&&(!e.quiet&&console.log(\"Reloading page to make use of COOP/COEP Service Worker.\"),e.doReload())}),(r=>{!e.quiet&&console.error(\"COOP/COEP Service Worker failed to register:\",r)})):!e.quiet&&console.log(\"COOP/COEP Service Worker not registered, a secure context is required.\"))})();"
  },
  {
    "path": "index.html",
    "content": "<!DOCTYPE html><html lang=\"en\"><head>\n        <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0\">\n    \n<link rel=\"preload\" href=\"./web-36409e0eedf7bbdd_bg.wasm\" as=\"fetch\" type=\"application/wasm\" crossorigin=\"\">\n<link rel=\"modulepreload\" href=\"./web-36409e0eedf7bbdd.js\"></head>\n    <body style=\"position:fixed;left:0;top:0;min-width:100%;height:100%;outline:none;overscroll-behavior: contain;\" tabindex=\"-1\" onfocus=\"Array.prototype.slice.call(document.body.children)[0]\">\n        <div id=\"canvas-holder\" style=\"position:fixed;left:0;top:0;min-width:100%;height:100%;outline:none;overscroll-behavior: contain;\">\n        </div>\n        <script>\n            window.OldPointerEvent = window.PointerEvent;\n            window.PointerEvent = null;\n    \n            document.getElementById('canvas-holder').addEventListener('DOMNodeInserted', function (event) {\n                if(event.target.parentNode.id == 'canvas-holder') {\n                    let canvas = event.target;\n                    let rpl = canvas.requestPointerLock.bind(canvas);\n                    canvas.requestPointerLock = function() {\n                        document.pointerLockEnabled = true;\n                        rpl();\n                    };\n    \n                    canvas.onclick = function() {\n                        if(document.pointerLockEnabled && document.pointerLockElement != canvas) {\n                            rpl();\n                        }\n                    };\n                    canvas.onkeydown = canvas.onclick;\n                };\n            }, false);\n    \n            let epl = document.exitPointerLock.bind(document);\n            document.exitPointerLock = function() {\n                document.pointerLockEnabled = false;\n                epl();\n            }\n    \n            document.onclick = function() {\n                if(!document.freezePrevention) {\n                    (function() {\n                        let ctx = new AudioContext()\n    \n                        var source = ctx.createConstantSource()\n                        var gainNode = ctx.createGain()\n                        gainNode.gain.value = 0.001 // required to prevent popping on start\n                        source.connect(gainNode)\n                        gainNode.connect(ctx.destination)\n                        source.start()\n                    })();\n                    document.freezePrevention = true;\n                }\n            };\n        </script>\n        <script src=\"./coi-serviceworker.min-3ab9f3ea9501efd5.js\"></script>\n        <script type=\"module\">import init from './web-36409e0eedf7bbdd.js';init('./web-36409e0eedf7bbdd_bg.wasm');</script>\n    \n</body></html>"
  },
  {
    "path": "snippets/wasm-bindgen-futures-f2cfeab8864dd175/src/task/worker.js",
    "content": "onmessage = function (ev) {\n    let [ia, index, value] = ev.data;\n    ia = new Int32Array(ia.buffer);\n    let result = Atomics.wait(ia, index, value);\n    postMessage(result);\n};\n"
  },
  {
    "path": "web-36409e0eedf7bbdd.js",
    "content": "import * as __wbg_star0 from './snippets/wasm_thread-8ee53d0673203880/src/wasm32/js/module_workers_polyfill.min.js';\n\nlet wasm;\n\nconst heap = new Array(128).fill(undefined);\n\nheap.push(undefined, null, true, false);\n\nfunction getObject(idx) { return heap[idx]; }\n\nlet heap_next = heap.length;\n\nfunction dropObject(idx) {\n    if (idx < 132) return;\n    heap[idx] = heap_next;\n    heap_next = idx;\n}\n\nfunction takeObject(idx) {\n    const ret = getObject(idx);\n    dropObject(idx);\n    return ret;\n}\n\nfunction addHeapObject(obj) {\n    if (heap_next === heap.length) heap.push(heap.length + 1);\n    const idx = heap_next;\n    heap_next = heap[idx];\n\n    heap[idx] = obj;\n    return idx;\n}\n\nconst cachedTextDecoder = (typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }) : { decode: () => { throw Error('TextDecoder not available') } } );\n\nif (typeof TextDecoder !== 'undefined') { cachedTextDecoder.decode(); };\n\nlet cachedUint8ArrayMemory0 = null;\n\nfunction getUint8ArrayMemory0() {\n    if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.buffer !== wasm.memory.buffer) {\n        cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n    }\n    return cachedUint8ArrayMemory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n    ptr = ptr >>> 0;\n    return cachedTextDecoder.decode(getUint8ArrayMemory0().slice(ptr, ptr + len));\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nconst cachedTextEncoder = (typeof TextEncoder !== 'undefined' ? new TextEncoder('utf-8') : { encode: () => { throw Error('TextEncoder not available') } } );\n\nconst encodeString = function (arg, view) {\n    const buf = cachedTextEncoder.encode(arg);\n    view.set(buf);\n    return {\n        read: arg.length,\n        written: buf.length\n    };\n};\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n\n    if (realloc === undefined) {\n        const buf = cachedTextEncoder.encode(arg);\n        const ptr = malloc(buf.length, 1) >>> 0;\n        getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf);\n        WASM_VECTOR_LEN = buf.length;\n        return ptr;\n    }\n\n    let len = arg.length;\n    let ptr = malloc(len, 1) >>> 0;\n\n    const mem = getUint8ArrayMemory0();\n\n    let offset = 0;\n\n    for (; offset < len; offset++) {\n        const code = arg.charCodeAt(offset);\n        if (code > 0x7F) break;\n        mem[ptr + offset] = code;\n    }\n\n    if (offset !== len) {\n        if (offset !== 0) {\n            arg = arg.slice(offset);\n        }\n        ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;\n        const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);\n        const ret = encodeString(arg, view);\n\n        offset += ret.written;\n        ptr = realloc(ptr, len, offset, 1) >>> 0;\n    }\n\n    WASM_VECTOR_LEN = offset;\n    return ptr;\n}\n\nfunction isLikeNone(x) {\n    return x === undefined || x === null;\n}\n\nlet cachedDataViewMemory0 = null;\n\nfunction getDataViewMemory0() {\n    if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer !== wasm.memory.buffer) {\n        cachedDataViewMemory0 = new DataView(wasm.memory.buffer);\n    }\n    return cachedDataViewMemory0;\n}\n\nfunction debugString(val) {\n    // primitive types\n    const type = typeof val;\n    if (type == 'number' || type == 'boolean' || val == null) {\n        return  `${val}`;\n    }\n    if (type == 'string') {\n        return `\"${val}\"`;\n    }\n    if (type == 'symbol') {\n        const description = val.description;\n        if (description == null) {\n            return 'Symbol';\n        } else {\n            return `Symbol(${description})`;\n        }\n    }\n    if (type == 'function') {\n        const name = val.name;\n        if (typeof name == 'string' && name.length > 0) {\n            return `Function(${name})`;\n        } else {\n            return 'Function';\n        }\n    }\n    // objects\n    if (Array.isArray(val)) {\n        const length = val.length;\n        let debug = '[';\n        if (length > 0) {\n            debug += debugString(val[0]);\n        }\n        for(let i = 1; i < length; i++) {\n            debug += ', ' + debugString(val[i]);\n        }\n        debug += ']';\n        return debug;\n    }\n    // Test for built-in\n    const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n    let className;\n    if (builtInMatches.length > 1) {\n        className = builtInMatches[1];\n    } else {\n        // Failed to match the standard '[object ClassName]'\n        return toString.call(val);\n    }\n    if (className == 'Object') {\n        // we're a user defined class or Object\n        // JSON.stringify avoids problems with cycles, and is generally much\n        // easier than looping through ownProperties of `val`.\n        try {\n            return 'Object(' + JSON.stringify(val) + ')';\n        } catch (_) {\n            return 'Object';\n        }\n    }\n    // errors\n    if (val instanceof Error) {\n        return `${val.name}: ${val.message}\\n${val.stack}`;\n    }\n    // TODO we could test for more things here, like `Set`s and `Map`s.\n    return className;\n}\n\nconst CLOSURE_DTORS = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(state => {\n    wasm.__wbindgen_export_3.get(state.dtor)(state.a, state.b)\n});\n\nfunction makeMutClosure(arg0, arg1, dtor, f) {\n    const state = { a: arg0, b: arg1, cnt: 1, dtor };\n    const real = (...args) => {\n        // First up with a closure we increment the internal reference\n        // count. This ensures that the Rust closure environment won't\n        // be deallocated while we're invoking it.\n        state.cnt++;\n        const a = state.a;\n        state.a = 0;\n        try {\n            return f(a, state.b, ...args);\n        } finally {\n            if (--state.cnt === 0) {\n                wasm.__wbindgen_export_3.get(state.dtor)(a, state.b);\n                CLOSURE_DTORS.unregister(state);\n            } else {\n                state.a = a;\n            }\n        }\n    };\n    real.original = state;\n    CLOSURE_DTORS.register(real, state, state);\n    return real;\n}\nfunction __wbg_adapter_36(arg0, arg1, arg2) {\n    wasm._ZN136__LT_dyn_u20_core__ops__function__FnMut_LT__LP_A_C__RP__GT__u2b_Output_u20__u3d__u20_R_u20_as_u20_wasm_bindgen__closure__WasmClosure_GT_8describe6invoke17h00227d784c6b30b3E(arg0, arg1, addHeapObject(arg2));\n}\n\nfunction __wbg_adapter_43(arg0, arg1, arg2, arg3) {\n    wasm._ZN137__LT_dyn_u20_core__ops__function__FnMut_LT__LP_A_C_B_RP__GT__u2b_Output_u20__u3d__u20_R_u20_as_u20_wasm_bindgen__closure__WasmClosure_GT_8describe6invoke17h1cba9df218177c3fE(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3));\n}\n\nfunction __wbg_adapter_48(arg0, arg1) {\n    wasm._ZN132__LT_dyn_u20_core__ops__function__FnMut_LT__LP__RP__GT__u2b_Output_u20__u3d__u20_R_u20_as_u20_wasm_bindgen__closure__WasmClosure_GT_8describe6invoke17h0b398f227927802aE(arg0, arg1);\n}\n\nlet stack_pointer = 128;\n\nfunction addBorrowedObject(obj) {\n    if (stack_pointer == 1) throw new Error('out of js stack');\n    heap[--stack_pointer] = obj;\n    return stack_pointer;\n}\nfunction __wbg_adapter_75(arg0, arg1, arg2) {\n    try {\n        wasm._ZN140__LT_dyn_u20_core__ops__function__FnMut_LT__LP__RF_A_C__RP__GT__u2b_Output_u20__u3d__u20_R_u20_as_u20_wasm_bindgen__closure__WasmClosure_GT_8describe6invoke17hf80f463a105ea039E(arg0, arg1, addBorrowedObject(arg2));\n    } finally {\n        heap[stack_pointer++] = undefined;\n    }\n}\n\nfunction handleError(f, args) {\n    try {\n        return f.apply(this, args);\n    } catch (e) {\n        wasm.__wbindgen_exn_store(addHeapObject(e));\n    }\n}\n\nfunction notDefined(what) { return () => { throw new Error(`${what} is not defined`); }; }\n/**\n* Entry point for web workers\n* @param {number} ptr\n*/\nexport function wasm_thread_entry_point(ptr) {\n    wasm.wasm_thread_entry_point(ptr);\n}\n\nlet cachedUint32ArrayMemory0 = null;\n\nfunction getUint32ArrayMemory0() {\n    if (cachedUint32ArrayMemory0 === null || cachedUint32ArrayMemory0.buffer !== wasm.memory.buffer) {\n        cachedUint32ArrayMemory0 = new Uint32Array(wasm.memory.buffer);\n    }\n    return cachedUint32ArrayMemory0;\n}\n\nfunction getArrayU32FromWasm0(ptr, len) {\n    ptr = ptr >>> 0;\n    return getUint32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len);\n}\n\nasync function __wbg_load(module, imports) {\n    if (typeof Response === 'function' && module instanceof Response) {\n        if (typeof WebAssembly.instantiateStreaming === 'function') {\n            try {\n                return await WebAssembly.instantiateStreaming(module, imports);\n\n            } catch (e) {\n                if (module.headers.get('Content-Type') != 'application/wasm') {\n                    console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n\n                } else {\n                    throw e;\n                }\n            }\n        }\n\n        const bytes = await module.arrayBuffer();\n        return await WebAssembly.instantiate(bytes, imports);\n\n    } else {\n        const instance = await WebAssembly.instantiate(module, imports);\n\n        if (instance instanceof WebAssembly.Instance) {\n            return { instance, module };\n\n        } else {\n            return instance;\n        }\n    }\n}\n\nfunction __wbg_get_imports() {\n    const imports = {};\n    imports.wbg = {};\n    imports.wbg.__wbg_offsetX_d08eda91526f22a2 = function(arg0) {\n        const ret = getObject(arg0).offsetX;\n        return ret;\n    };\n    imports.wbg.__wbg_offsetY_3c895bb1534dfbf4 = function(arg0) {\n        const ret = getObject(arg0).offsetY;\n        return ret;\n    };\n    imports.wbg.__wbg_pressure_95cee3909a8549a9 = function(arg0) {\n        const ret = getObject(arg0).pressure;\n        return ret;\n    };\n    imports.wbg.__wbindgen_object_drop_ref = function(arg0) {\n        takeObject(arg0);\n    };\n    imports.wbg.__wbg_get_3baa728f9d58d3f6 = function(arg0, arg1) {\n        const ret = getObject(arg0)[arg1 >>> 0];\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbindgen_object_clone_ref = function(arg0) {\n        const ret = getObject(arg0);\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_Window_cc0273a5da2c36dc = function(arg0) {\n        const ret = getObject(arg0).Window;\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbindgen_is_undefined = function(arg0) {\n        const ret = getObject(arg0) === undefined;\n        return ret;\n    };\n    imports.wbg.__wbg_matches_42eb40a28a316d0e = function(arg0) {\n        const ret = getObject(arg0).matches;\n        return ret;\n    };\n    imports.wbg.__wbg_preventDefault_c55d86c27b2dfa6e = function(arg0) {\n        getObject(arg0).preventDefault();\n    };\n    imports.wbg.__wbg_exitPointerLock_25631bbb069a5753 = function(arg0) {\n        getObject(arg0).exitPointerLock();\n    };\n    imports.wbg.__wbg_requestPointerLock_951e136d8eaf5637 = function(arg0) {\n        getObject(arg0).requestPointerLock();\n    };\n    imports.wbg.__wbg_focus_06621101cc79f5d8 = function() { return handleError(function (arg0) {\n        getObject(arg0).focus();\n    }, arguments) };\n    imports.wbg.__wbg_button_460cdec9f2512a91 = function(arg0) {\n        const ret = getObject(arg0).button;\n        return ret;\n    };\n    imports.wbg.__wbg_removeEventListener_b6cef5ad085bea8f = function() { return handleError(function (arg0, arg1, arg2, arg3) {\n        getObject(arg0).removeEventListener(getStringFromWasm0(arg1, arg2), getObject(arg3));\n    }, arguments) };\n    imports.wbg.__wbindgen_string_new = function(arg0, arg1) {\n        const ret = getStringFromWasm0(arg0, arg1);\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_error_9ce09486992d3ac5 = function(arg0, arg1) {\n        console.error(getObject(arg0), getObject(arg1));\n    };\n    imports.wbg.__wbindgen_cb_drop = function(arg0) {\n        const obj = takeObject(arg0).original;\n        if (obj.cnt-- == 1) {\n            obj.a = 0;\n            return true;\n        }\n        const ret = false;\n        return ret;\n    };\n    imports.wbg.__wbg_disconnect_24e89f8d65ad2fd5 = function(arg0) {\n        getObject(arg0).disconnect();\n    };\n    imports.wbg.__wbg_cancelAnimationFrame_f80ecdad075d1d55 = function() { return handleError(function (arg0, arg1) {\n        getObject(arg0).cancelAnimationFrame(arg1);\n    }, arguments) };\n    imports.wbg.__wbg_disconnect_1dbf7e19d9590abd = function(arg0) {\n        getObject(arg0).disconnect();\n    };\n    imports.wbg.__wbg_clearTimeout_25cdc2ed88b3c0b2 = function(arg0, arg1) {\n        getObject(arg0).clearTimeout(arg1);\n    };\n    imports.wbg.__wbg_close_87d69f9e9fe928c3 = function(arg0) {\n        getObject(arg0).close();\n    };\n    imports.wbg.__wbg_setonmessage_3b07505d5f934b5c = function(arg0, arg1) {\n        getObject(arg0).onmessage = getObject(arg1);\n    };\n    imports.wbg.__wbg_cancelIdleCallback_0d1373370ef859bd = function(arg0, arg1) {\n        getObject(arg0).cancelIdleCallback(arg1 >>> 0);\n    };\n    imports.wbg.__wbg_abort_8659d889a7877ae3 = function(arg0) {\n        getObject(arg0).abort();\n    };\n    imports.wbg.__wbg_contentRect_c1a9045c459744d9 = function(arg0) {\n        const ret = getObject(arg0).contentRect;\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_width_e7964a50b174d035 = function(arg0) {\n        const ret = getObject(arg0).width;\n        return ret;\n    };\n    imports.wbg.__wbg_height_cd5c897b4d3fabe3 = function(arg0) {\n        const ret = getObject(arg0).height;\n        return ret;\n    };\n    imports.wbg.__wbg_devicePixelRatio_7ba8bc80d46340bd = function(arg0) {\n        const ret = getObject(arg0).devicePixelRatio;\n        return ret;\n    };\n    imports.wbg.__wbg_devicePixelContentBoxSize_8d531ca6a4331b28 = function(arg0) {\n        const ret = getObject(arg0).devicePixelContentBoxSize;\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_getPropertyValue_b0f0858c3b5f17dd = function() { return handleError(function (arg0, arg1, arg2, arg3) {\n        const ret = getObject(arg1).getPropertyValue(getStringFromWasm0(arg2, arg3));\n        const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n        const len1 = WASM_VECTOR_LEN;\n        getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n        getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n    }, arguments) };\n    imports.wbg.__wbg_inlineSize_322ab111c2b5c9e3 = function(arg0) {\n        const ret = getObject(arg0).inlineSize;\n        return ret;\n    };\n    imports.wbg.__wbg_blockSize_981c4dfa6e1263a8 = function(arg0) {\n        const ret = getObject(arg0).blockSize;\n        return ret;\n    };\n    imports.wbg.__wbg_isIntersecting_7cba11b732bde6a7 = function(arg0) {\n        const ret = getObject(arg0).isIntersecting;\n        return ret;\n    };\n    imports.wbg.__wbg_visibilityState_51f5bb37c843e94e = function(arg0) {\n        const ret = getObject(arg0).visibilityState;\n        return {\"hidden\":0,\"visible\":1,}[ret] ?? 2;\n    };\n    imports.wbg.__wbg_shiftKey_8c0f9a5ca3ff8f93 = function(arg0) {\n        const ret = getObject(arg0).shiftKey;\n        return ret;\n    };\n    imports.wbg.__wbg_ctrlKey_957c6c31b62b4550 = function(arg0) {\n        const ret = getObject(arg0).ctrlKey;\n        return ret;\n    };\n    imports.wbg.__wbg_altKey_d3fbce7596aac8cf = function(arg0) {\n        const ret = getObject(arg0).altKey;\n        return ret;\n    };\n    imports.wbg.__wbg_metaKey_be0158b14b1cef4a = function(arg0) {\n        const ret = getObject(arg0).metaKey;\n        return ret;\n    };\n    imports.wbg.__wbg_shiftKey_f38dee34420e0d62 = function(arg0) {\n        const ret = getObject(arg0).shiftKey;\n        return ret;\n    };\n    imports.wbg.__wbg_ctrlKey_319ff2374dc7f372 = function(arg0) {\n        const ret = getObject(arg0).ctrlKey;\n        return ret;\n    };\n    imports.wbg.__wbg_altKey_5a6eb49ec8194792 = function(arg0) {\n        const ret = getObject(arg0).altKey;\n        return ret;\n    };\n    imports.wbg.__wbg_metaKey_00fdcfadf1968d45 = function(arg0) {\n        const ret = getObject(arg0).metaKey;\n        return ret;\n    };\n    imports.wbg.__wbg_repeat_8451a79b3608855b = function(arg0) {\n        const ret = getObject(arg0).repeat;\n        return ret;\n    };\n    imports.wbg.__wbg_pointerType_d375491a3013a9bc = function(arg0, arg1) {\n        const ret = getObject(arg1).pointerType;\n        const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n        const len1 = WASM_VECTOR_LEN;\n        getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n        getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n    };\n    imports.wbg.__wbg_pointerId_37ae0c4682f85248 = function(arg0) {\n        const ret = getObject(arg0).pointerId;\n        return ret;\n    };\n    imports.wbg.__wbg_setPointerCapture_16fb4f004fe3aaae = function() { return handleError(function (arg0, arg1) {\n        getObject(arg0).setPointerCapture(arg1);\n    }, arguments) };\n    imports.wbg.__wbg_buttons_a302533e27733599 = function(arg0) {\n        const ret = getObject(arg0).buttons;\n        return ret;\n    };\n    imports.wbg.__wbg_instanceof_Window_5012736c80a01584 = function(arg0) {\n        let result;\n        try {\n            result = getObject(arg0) instanceof Window;\n        } catch (_) {\n            result = false;\n        }\n        const ret = result;\n        return ret;\n    };\n    imports.wbg.__wbg_document_8554450897a855b9 = function(arg0) {\n        const ret = getObject(arg0).document;\n        return isLikeNone(ret) ? 0 : addHeapObject(ret);\n    };\n    imports.wbg.__wbg_getElementById_f56c8e6a15a6926d = function(arg0, arg1, arg2) {\n        const ret = getObject(arg0).getElementById(getStringFromWasm0(arg1, arg2));\n        return isLikeNone(ret) ? 0 : addHeapObject(ret);\n    };\n    imports.wbg.__wbg_setInterval_edede8e2124cbb00 = function() { return handleError(function (arg0, arg1) {\n        const ret = setInterval(getObject(arg0), arg1);\n        return addHeapObject(ret);\n    }, arguments) };\n    imports.wbg.__wbg_instanceof_HtmlElement_ee6cb55e6b90ae79 = function(arg0) {\n        let result;\n        try {\n            result = getObject(arg0) instanceof HTMLElement;\n        } catch (_) {\n            result = false;\n        }\n        const ret = result;\n        return ret;\n    };\n    imports.wbg.__wbg_setinnerHTML_ea7e3c6a3c4790c6 = function(arg0, arg1, arg2) {\n        getObject(arg0).innerHTML = getStringFromWasm0(arg1, arg2);\n    };\n    imports.wbg.__wbg_children_0725d024369e02df = function(arg0) {\n        const ret = getObject(arg0).children;\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_item_284906f439cece90 = function(arg0, arg1) {\n        const ret = getObject(arg0).item(arg1 >>> 0);\n        return isLikeNone(ret) ? 0 : addHeapObject(ret);\n    };\n    imports.wbg.__wbg_instanceof_HtmlCanvasElement_1a96a01603ec2d8b = function(arg0) {\n        let result;\n        try {\n            result = getObject(arg0) instanceof HTMLCanvasElement;\n        } catch (_) {\n            result = false;\n        }\n        const ret = result;\n        return ret;\n    };\n    imports.wbg.__wbg_addEventListener_e167f012cbedfa4e = function() { return handleError(function (arg0, arg1, arg2, arg3) {\n        getObject(arg0).addEventListener(getStringFromWasm0(arg1, arg2), getObject(arg3));\n    }, arguments) };\n    imports.wbg.__wbg_setAttribute_d5540a19be09f8dc = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {\n        getObject(arg0).setAttribute(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4));\n    }, arguments) };\n    imports.wbg.__wbg_getComputedStyle_ba4609b39055f674 = function() { return handleError(function (arg0, arg1) {\n        const ret = getObject(arg0).getComputedStyle(getObject(arg1));\n        return isLikeNone(ret) ? 0 : addHeapObject(ret);\n    }, arguments) };\n    imports.wbg.__wbg_requestFullscreen_a851d70cb190396a = function(arg0) {\n        const ret = getObject(arg0).requestFullscreen;\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_activeElement_1036a8ddc10ec3f1 = function(arg0) {\n        const ret = getObject(arg0).activeElement;\n        return isLikeNone(ret) ? 0 : addHeapObject(ret);\n    };\n    imports.wbg.__wbg_is_009b1ef508712fda = function(arg0, arg1) {\n        const ret = Object.is(getObject(arg0), getObject(arg1));\n        return ret;\n    };\n    imports.wbg.__wbg_matchMedia_170d35fd154463b2 = function() { return handleError(function (arg0, arg1, arg2) {\n        const ret = getObject(arg0).matchMedia(getStringFromWasm0(arg1, arg2));\n        return isLikeNone(ret) ? 0 : addHeapObject(ret);\n    }, arguments) };\n    imports.wbg.__wbg_addListener_7d72b16c4161a20a = function() { return handleError(function (arg0, arg1) {\n        getObject(arg0).addListener(getObject(arg1));\n    }, arguments) };\n    imports.wbg.__wbg_new_42acb42ec2ace97c = function() { return handleError(function (arg0) {\n        const ret = new ResizeObserver(getObject(arg0));\n        return addHeapObject(ret);\n    }, arguments) };\n    imports.wbg.__wbg_new_525245e2b9901204 = function() {\n        const ret = new Object();\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_setbox_0d838a2d268b7fac = function(arg0, arg1) {\n        getObject(arg0).box = [\"border-box\",\"content-box\",\"device-pixel-content-box\",][arg1];\n    };\n    imports.wbg.__wbg_observe_60f3631b2f7c6d8b = function(arg0, arg1, arg2) {\n        getObject(arg0).observe(getObject(arg1), getObject(arg2));\n    };\n    imports.wbg.__wbg_observe_101f5cf5a11e9a79 = function(arg0, arg1) {\n        getObject(arg0).observe(getObject(arg1));\n    };\n    imports.wbg.__wbg_new_d0c6c2df51a6d903 = function() { return handleError(function (arg0) {\n        const ret = new IntersectionObserver(getObject(arg0));\n        return addHeapObject(ret);\n    }, arguments) };\n    imports.wbg.__wbg_observe_c901133fbef21560 = function(arg0, arg1) {\n        getObject(arg0).observe(getObject(arg1));\n    };\n    imports.wbg.__wbg_key_a626396efbca2b95 = function(arg0, arg1) {\n        const ret = getObject(arg1).key;\n        const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n        const len1 = WASM_VECTOR_LEN;\n        getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n        getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n    };\n    imports.wbg.__wbg_clipboardData_93c130a72996456a = function(arg0) {\n        const ret = getObject(arg0).clipboardData;\n        return isLikeNone(ret) ? 0 : addHeapObject(ret);\n    };\n    imports.wbg.__wbg_getData_b768ea3ff59e2a13 = function() { return handleError(function (arg0, arg1, arg2, arg3) {\n        const ret = getObject(arg1).getData(getStringFromWasm0(arg2, arg3));\n        const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n        const len1 = WASM_VECTOR_LEN;\n        getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n        getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n    }, arguments) };\n    imports.wbg.__wbg_set_eacc7d73fefaafdf = function() { return handleError(function (arg0, arg1, arg2) {\n        const ret = Reflect.set(getObject(arg0), getObject(arg1), getObject(arg2));\n        return ret;\n    }, arguments) };\n    imports.wbg.__wbg_isSecureContext_80defc491f0c2d6a = function(arg0) {\n        const ret = getObject(arg0).isSecureContext;\n        return ret;\n    };\n    imports.wbg.__wbg_navigator_6210380287bf8581 = function(arg0) {\n        const ret = getObject(arg0).navigator;\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_hardwareConcurrency_b8428be0a8eb8fcf = function(arg0) {\n        const ret = getObject(arg0).hardwareConcurrency;\n        return ret;\n    };\n    imports.wbg.__wbg_eval_6e4fc17d87772f52 = function() { return handleError(function (arg0, arg1) {\n        const ret = eval(getStringFromWasm0(arg0, arg1));\n        return addHeapObject(ret);\n    }, arguments) };\n    imports.wbg.__wbg_instanceof_WorkerGlobalScope_e34c8a505711a78e = function(arg0) {\n        let result;\n        try {\n            result = getObject(arg0) instanceof WorkerGlobalScope;\n        } catch (_) {\n            result = false;\n        }\n        const ret = result;\n        return ret;\n    };\n    imports.wbg.__wbg_navigator_db73b5b11a0c5c93 = function(arg0) {\n        const ret = getObject(arg0).navigator;\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_hardwareConcurrency_c1296fa0f93898a9 = function(arg0) {\n        const ret = getObject(arg0).hardwareConcurrency;\n        return ret;\n    };\n    imports.wbg.__wbg_clipboard_0d7b5c390c14b0e6 = function(arg0) {\n        const ret = getObject(arg0).clipboard;\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_addEventListener_ad76aa70e65794bd = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {\n        getObject(arg0).addEventListener(getStringFromWasm0(arg1, arg2), getObject(arg3), arg4 !== 0);\n    }, arguments) };\n    imports.wbg.__wbg_new_abda76e883ba8a5f = function() {\n        const ret = new Error();\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_stack_658279fe44541cf6 = function(arg0, arg1) {\n        const ret = getObject(arg1).stack;\n        const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n        const len1 = WASM_VECTOR_LEN;\n        getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n        getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n    };\n    imports.wbg.__wbg_error_f851667af71bcfc6 = function(arg0, arg1) {\n        let deferred0_0;\n        let deferred0_1;\n        try {\n            deferred0_0 = arg0;\n            deferred0_1 = arg1;\n            console.error(getStringFromWasm0(arg0, arg1));\n        } finally {\n            wasm.__wbindgen_free(deferred0_0, deferred0_1, 1);\n        }\n    };\n    imports.wbg.__wbg_get_224d16597dbbfd96 = function() { return handleError(function (arg0, arg1) {\n        const ret = Reflect.get(getObject(arg0), getObject(arg1));\n        return addHeapObject(ret);\n    }, arguments) };\n    imports.wbg.__wbindgen_string_get = function(arg0, arg1) {\n        const obj = getObject(arg1);\n        const ret = typeof(obj) === 'string' ? obj : undefined;\n        var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n        var len1 = WASM_VECTOR_LEN;\n        getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n        getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n    };\n    imports.wbg.__wbg_open_43b3c6577af2a808 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {\n        const ret = getObject(arg0).open(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4));\n        return isLikeNone(ret) ? 0 : addHeapObject(ret);\n    }, arguments) };\n    imports.wbg.__wbg_writeText_20fb3f7393d34052 = function(arg0, arg1, arg2) {\n        const ret = getObject(arg0).writeText(getStringFromWasm0(arg1, arg2));\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_crypto_1d1f22824a6a080c = function(arg0) {\n        const ret = getObject(arg0).crypto;\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbindgen_is_object = function(arg0) {\n        const val = getObject(arg0);\n        const ret = typeof(val) === 'object' && val !== null;\n        return ret;\n    };\n    imports.wbg.__wbg_process_4a72847cc503995b = function(arg0) {\n        const ret = getObject(arg0).process;\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_versions_f686565e586dd935 = function(arg0) {\n        const ret = getObject(arg0).versions;\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_node_104a2ff8d6ea03a2 = function(arg0) {\n        const ret = getObject(arg0).node;\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbindgen_is_string = function(arg0) {\n        const ret = typeof(getObject(arg0)) === 'string';\n        return ret;\n    };\n    imports.wbg.__wbg_require_cca90b1a94a0255b = function() { return handleError(function () {\n        const ret = module.require;\n        return addHeapObject(ret);\n    }, arguments) };\n    imports.wbg.__wbindgen_is_function = function(arg0) {\n        const ret = typeof(getObject(arg0)) === 'function';\n        return ret;\n    };\n    imports.wbg.__wbg_msCrypto_eb05e62b530a1508 = function(arg0) {\n        const ret = getObject(arg0).msCrypto;\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_newwithlength_ec548f448387c968 = function(arg0) {\n        const ret = new Uint8Array(arg0 >>> 0);\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_getGamepads_280528ca4aa5aa9b = function() { return handleError(function (arg0) {\n        const ret = getObject(arg0).getGamepads();\n        return addHeapObject(ret);\n    }, arguments) };\n    imports.wbg.__wbg_length_ae22078168b726f5 = function(arg0) {\n        const ret = getObject(arg0).length;\n        return ret;\n    };\n    imports.wbg.__wbg_index_72e7eaa6b16bc661 = function(arg0) {\n        const ret = getObject(arg0).index;\n        return ret;\n    };\n    imports.wbg.__wbg_now_b7a162010a9e75b4 = function() {\n        const ret = Date.now();\n        return ret;\n    };\n    imports.wbg.__wbg_buttons_2e819714e685a1fa = function(arg0) {\n        const ret = getObject(arg0).buttons;\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_pressed_958135bcec29730b = function(arg0) {\n        const ret = getObject(arg0).pressed;\n        return ret;\n    };\n    imports.wbg.__wbg_value_3ded5544ccbde300 = function(arg0) {\n        const ret = getObject(arg0).value;\n        return ret;\n    };\n    imports.wbg.__wbg_axes_3c375d4b1704688f = function(arg0) {\n        const ret = getObject(arg0).axes;\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbindgen_number_get = function(arg0, arg1) {\n        const obj = getObject(arg1);\n        const ret = typeof(obj) === 'number' ? obj : undefined;\n        getDataViewMemory0().setFloat64(arg0 + 8 * 1, isLikeNone(ret) ? 0 : ret, true);\n        getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true);\n    };\n    imports.wbg.__wbindgen_is_null = function(arg0) {\n        const ret = getObject(arg0) === null;\n        return ret;\n    };\n    imports.wbg.__wbg_instanceof_DomException_1bbe86882eadb549 = function(arg0) {\n        let result;\n        try {\n            result = getObject(arg0) instanceof DOMException;\n        } catch (_) {\n            result = false;\n        }\n        const ret = result;\n        return ret;\n    };\n    imports.wbg.__wbg_message_b477ea215924b777 = function(arg0, arg1) {\n        const ret = getObject(arg1).message;\n        const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n        const len1 = WASM_VECTOR_LEN;\n        getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n        getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n    };\n    imports.wbg.__wbg_id_0b5f526d96ca0241 = function(arg0, arg1) {\n        const ret = getObject(arg1).id;\n        const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n        const len1 = WASM_VECTOR_LEN;\n        getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n        getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n    };\n    imports.wbg.__wbg_new_13847c66f41dda63 = function(arg0, arg1, arg2, arg3) {\n        const ret = new RegExp(getStringFromWasm0(arg0, arg1), getStringFromWasm0(arg2, arg3));\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_exec_a29a4ce5544bd3be = function(arg0, arg1, arg2) {\n        const ret = getObject(arg0).exec(getStringFromWasm0(arg1, arg2));\n        return isLikeNone(ret) ? 0 : addHeapObject(ret);\n    };\n    imports.wbg.__wbg_mapping_60849ba1aadc4b79 = function(arg0) {\n        const ret = getObject(arg0).mapping;\n        return {\"\":0,\"standard\":1,}[ret] ?? 2;\n    };\n    imports.wbg.__wbg_connected_fd2ea2e0300f40cb = function(arg0) {\n        const ret = getObject(arg0).connected;\n        return ret;\n    };\n    imports.wbg.__wbg_name_ed3cda975cce080d = function(arg0, arg1) {\n        const ret = getObject(arg1).name;\n        const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n        const len1 = WASM_VECTOR_LEN;\n        getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n        getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n    };\n    imports.wbg.__wbg_new_b85e72ed1bfd57f9 = function(arg0, arg1) {\n        try {\n            var state0 = {a: arg0, b: arg1};\n            var cb0 = (arg0, arg1) => {\n                const a = state0.a;\n                state0.a = 0;\n                try {\n                    return __wbg_adapter_43(a, state0.b, arg0, arg1);\n                } finally {\n                    state0.a = a;\n                }\n            };\n            const ret = new Promise(cb0);\n            return addHeapObject(ret);\n        } finally {\n            state0.a = state0.b = 0;\n        }\n    };\n    imports.wbg.__wbg_new_ea1883e1e5e86686 = function(arg0) {\n        const ret = new Uint8Array(getObject(arg0));\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_length_8339fcf5d8ecd12e = function(arg0) {\n        const ret = getObject(arg0).length;\n        return ret;\n    };\n    imports.wbg.__wbg_new_8515b7401632bd44 = function() { return handleError(function () {\n        const ret = new FileReader();\n        return addHeapObject(ret);\n    }, arguments) };\n    imports.wbg.__wbg_setonload_71d51f79887a9257 = function(arg0, arg1) {\n        getObject(arg0).onload = getObject(arg1);\n    };\n    imports.wbg.__wbg_readAsArrayBuffer_6475a86a924a8856 = function() { return handleError(function (arg0, arg1) {\n        getObject(arg0).readAsArrayBuffer(getObject(arg1));\n    }, arguments) };\n    imports.wbg.__wbg_result_3869032b57f861ac = function() { return handleError(function (arg0) {\n        const ret = getObject(arg0).result;\n        return addHeapObject(ret);\n    }, arguments) };\n    imports.wbg.__wbg_call_89af060b4e1523f2 = function() { return handleError(function (arg0, arg1, arg2) {\n        const ret = getObject(arg0).call(getObject(arg1), getObject(arg2));\n        return addHeapObject(ret);\n    }, arguments) };\n    imports.wbg.__wbg_setInterval_e227d4d8a9d44d66 = function() { return handleError(function (arg0, arg1) {\n        const ret = setInterval(getObject(arg0), arg1);\n        return addHeapObject(ret);\n    }, arguments) };\n    imports.wbg.__wbg_clearInterval_7f51e4380e64c6c5 = function(arg0) {\n        const ret = clearInterval(takeObject(arg0));\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_instanceof_DedicatedWorkerGlobalScope_a7feec288dff4a90 = function(arg0) {\n        let result;\n        try {\n            result = getObject(arg0) instanceof DedicatedWorkerGlobalScope;\n        } catch (_) {\n            result = false;\n        }\n        const ret = result;\n        return ret;\n    };\n    imports.wbg.__wbg_close_61c6d857d06ac98d = function(arg0) {\n        getObject(arg0).close();\n    };\n    imports.wbg.__wbg_pointerLockElement_78eebbbfc327027e = function(arg0) {\n        const ret = getObject(arg0).pointerLockElement;\n        return isLikeNone(ret) ? 0 : addHeapObject(ret);\n    };\n    imports.wbg.__wbg_self_3093d5d1f7bcb682 = function() { return handleError(function () {\n        const ret = self.self;\n        return addHeapObject(ret);\n    }, arguments) };\n    imports.wbg.__wbg_window_3bcfc4d31bc012f8 = function() { return handleError(function () {\n        const ret = window.window;\n        return addHeapObject(ret);\n    }, arguments) };\n    imports.wbg.__wbg_globalThis_86b222e13bdf32ed = function() { return handleError(function () {\n        const ret = globalThis.globalThis;\n        return addHeapObject(ret);\n    }, arguments) };\n    imports.wbg.__wbg_global_e5a3fe56f8be9485 = function() { return handleError(function () {\n        const ret = global.global;\n        return addHeapObject(ret);\n    }, arguments) };\n    imports.wbg.__wbg_newnoargs_76313bd6ff35d0f2 = function(arg0, arg1) {\n        const ret = new Function(getStringFromWasm0(arg0, arg1));\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_call_1084a111329e68ce = function() { return handleError(function (arg0, arg1) {\n        const ret = getObject(arg0).call(getObject(arg1));\n        return addHeapObject(ret);\n    }, arguments) };\n    imports.wbg.__wbindgen_memory = function() {\n        const ret = wasm.memory;\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_buffer_b7b08af79b0b0974 = function(arg0) {\n        const ret = getObject(arg0).buffer;\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_set_d1e79e2388520f18 = function(arg0, arg1, arg2) {\n        getObject(arg0).set(getObject(arg1), arg2 >>> 0);\n    };\n    imports.wbg.__wbg_newwithbyteoffsetandlength_c89d62ca194b7f14 = function(arg0, arg1, arg2) {\n        const ret = new Int32Array(getObject(arg0), arg1 >>> 0, arg2 >>> 0);\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_notify_5eddfb8fa9821c9b = function() { return handleError(function (arg0, arg1) {\n        const ret = Atomics.notify(getObject(arg0), arg1 >>> 0);\n        return ret;\n    }, arguments) };\n    imports.wbg.__wbg_newwithbyteoffsetandlength_8a2cb9ca96b27ec9 = function(arg0, arg1, arg2) {\n        const ret = new Uint8Array(getObject(arg0), arg1 >>> 0, arg2 >>> 0);\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_randomFillSync_5c9c955aa56b6049 = function() { return handleError(function (arg0, arg1) {\n        getObject(arg0).randomFillSync(takeObject(arg1));\n    }, arguments) };\n    imports.wbg.__wbg_subarray_7c2e3576afe181d1 = function(arg0, arg1, arg2) {\n        const ret = getObject(arg0).subarray(arg1 >>> 0, arg2 >>> 0);\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_getRandomValues_3aa56aa6edec874c = function() { return handleError(function (arg0, arg1) {\n        getObject(arg0).getRandomValues(getObject(arg1));\n    }, arguments) };\n    imports.wbg.__wbg_remove_5b68b70c39041e2a = function(arg0) {\n        getObject(arg0).remove();\n    };\n    imports.wbg.__wbg_setmultiple_d67da734cbada979 = function(arg0, arg1) {\n        getObject(arg0).multiple = arg1 !== 0;\n    };\n    imports.wbg.__wbg_files_b94d8f21e2b53924 = function(arg0) {\n        const ret = getObject(arg0).files;\n        return isLikeNone(ret) ? 0 : addHeapObject(ret);\n    };\n    imports.wbg.__wbg_length_f2469772b8ec9ea3 = function(arg0) {\n        const ret = getObject(arg0).length;\n        return ret;\n    };\n    imports.wbg.__wbg_get_6d8ff52d2078d871 = function(arg0, arg1) {\n        const ret = getObject(arg0)[arg1 >>> 0];\n        return isLikeNone(ret) ? 0 : addHeapObject(ret);\n    };\n    imports.wbg.__wbg_setonclick_cdd25d3e6e7636a0 = function(arg0, arg1) {\n        getObject(arg0).onclick = getObject(arg1);\n    };\n    imports.wbg.__wbg_new_a220cf903aa02ca2 = function() {\n        const ret = new Array();\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_buffer_0710d1b9dbe2eea6 = function(arg0) {\n        const ret = getObject(arg0).buffer;\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_push_37c89022f34c01ca = function(arg0, arg1) {\n        const ret = getObject(arg0).push(getObject(arg1));\n        return ret;\n    };\n    imports.wbg.__wbg_settype_b6ab7b74bd1908a1 = function(arg0, arg1, arg2) {\n        getObject(arg0).type = getStringFromWasm0(arg1, arg2);\n    };\n    imports.wbg.__wbg_newwithu8arraysequenceandoptions_c8bc456a23f02fca = function() { return handleError(function (arg0, arg1) {\n        const ret = new Blob(getObject(arg0), getObject(arg1));\n        return addHeapObject(ret);\n    }, arguments) };\n    imports.wbg.__wbg_createObjectURL_ca544150f40fb1bf = function() { return handleError(function (arg0, arg1) {\n        const ret = URL.createObjectURL(getObject(arg1));\n        const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n        const len1 = WASM_VECTOR_LEN;\n        getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n        getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n    }, arguments) };\n    imports.wbg.__wbg_sethref_e76addd808540f69 = function(arg0, arg1, arg2) {\n        getObject(arg0).href = getStringFromWasm0(arg1, arg2);\n    };\n    imports.wbg.__wbg_setdownload_c4a56cf2790f498a = function(arg0, arg1, arg2) {\n        getObject(arg0).download = getStringFromWasm0(arg1, arg2);\n    };\n    imports.wbg.__wbg_click_025eb185eb16f006 = function(arg0) {\n        getObject(arg0).click();\n    };\n    imports.wbg.__wbg_setoninput_69dd34cdd46b2565 = function(arg0, arg1) {\n        getObject(arg0).oninput = getObject(arg1);\n    };\n    imports.wbg.__wbg_createElement_5921e9eb06b9ec89 = function() { return handleError(function (arg0, arg1, arg2) {\n        const ret = getObject(arg0).createElement(getStringFromWasm0(arg1, arg2));\n        return addHeapObject(ret);\n    }, arguments) };\n    imports.wbg.__wbg_instanceof_HtmlInputElement_88bf515ab1d9511d = function(arg0) {\n        let result;\n        try {\n            result = getObject(arg0) instanceof HTMLInputElement;\n        } catch (_) {\n            result = false;\n        }\n        const ret = result;\n        return ret;\n    };\n    imports.wbg.__wbg_setid_b43ed506c9b1e9c5 = function(arg0, arg1, arg2) {\n        getObject(arg0).id = getStringFromWasm0(arg1, arg2);\n    };\n    imports.wbg.__wbg_settype_c348825948b36c71 = function(arg0, arg1, arg2) {\n        getObject(arg0).type = getStringFromWasm0(arg1, arg2);\n    };\n    imports.wbg.__wbg_setaccept_ecbe2b14b78fc505 = function(arg0, arg1, arg2) {\n        getObject(arg0).accept = getStringFromWasm0(arg1, arg2);\n    };\n    imports.wbg.__wbindgen_throw = function(arg0, arg1) {\n        throw new Error(getStringFromWasm0(arg0, arg1));\n    };\n    imports.wbg.__wbindgen_debug_string = function(arg0, arg1) {\n        const ret = debugString(getObject(arg1));\n        const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n        const len1 = WASM_VECTOR_LEN;\n        getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n        getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n    };\n    imports.wbg.__wbindgen_rethrow = function(arg0) {\n        throw takeObject(arg0);\n    };\n    imports.wbg.__wbg_then_876bb3c633745cc6 = function(arg0, arg1, arg2) {\n        const ret = getObject(arg0).then(getObject(arg1), getObject(arg2));\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_then_95e6edc0f89b73b1 = function(arg0, arg1) {\n        const ret = getObject(arg0).then(getObject(arg1));\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_queueMicrotask_481971b0d87f3dd4 = function(arg0) {\n        queueMicrotask(getObject(arg0));\n    };\n    imports.wbg.__wbg_queueMicrotask_3cbae2ec6b6cd3d6 = function(arg0) {\n        const ret = getObject(arg0).queueMicrotask;\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_resolve_570458cb99d56a43 = function(arg0) {\n        const ret = Promise.resolve(getObject(arg0));\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_waitAsync_5d743fc9058ba01a = function() {\n        const ret = Atomics.waitAsync;\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_new_a0719a520adfdb99 = function(arg0) {\n        const ret = new Int32Array(getObject(arg0));\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_waitAsync_46d5c36955b71a79 = function(arg0, arg1, arg2) {\n        const ret = Atomics.waitAsync(getObject(arg0), arg1, arg2);\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_async_19c0400d97cc72fe = function(arg0) {\n        const ret = getObject(arg0).async;\n        return ret;\n    };\n    imports.wbg.__wbg_value_571d60108110e917 = function(arg0) {\n        const ret = getObject(arg0).value;\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_new_25d9d4e2932d816f = function() { return handleError(function (arg0, arg1) {\n        const ret = new Worker(getStringFromWasm0(arg0, arg1));\n        return addHeapObject(ret);\n    }, arguments) };\n    imports.wbg.__wbg_setonmessage_7cee8e224acfa056 = function(arg0, arg1) {\n        getObject(arg0).onmessage = getObject(arg1);\n    };\n    imports.wbg.__wbindgen_number_new = function(arg0) {\n        const ret = arg0;\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_of_61f336d7eeabfca8 = function(arg0, arg1, arg2) {\n        const ret = Array.of(getObject(arg0), getObject(arg1), getObject(arg2));\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_postMessage_37faac1bc005e5c0 = function() { return handleError(function (arg0, arg1) {\n        getObject(arg0).postMessage(getObject(arg1));\n    }, arguments) };\n    imports.wbg.__wbg_data_5c47a6985fefc490 = function(arg0) {\n        const ret = getObject(arg0).data;\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbindgen_link_fc1eedd35dc7e0a6 = function(arg0) {\n        const val = `onmessage = function (ev) {\n            let [ia, index, value] = ev.data;\n            ia = new Int32Array(ia.buffer);\n            let result = Atomics.wait(ia, index, value);\n            postMessage(result);\n        };\n        `;\n        const ret = typeof URL.createObjectURL === 'undefined' ? \"data:application/javascript,\" + encodeURIComponent(val) : URL.createObjectURL(new Blob([val], { type: \"text/javascript\" }));\n        const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n        const len1 = WASM_VECTOR_LEN;\n        getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n        getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n    };\n    imports.wbg.__wbg_postMessage_815692a1ede7b5f1 = function() { return handleError(function (arg0, arg1) {\n        getObject(arg0).postMessage(getObject(arg1));\n    }, arguments) };\n    imports.wbg.__wbg_set_673dda6c73d19609 = function(arg0, arg1, arg2) {\n        getObject(arg0)[arg1 >>> 0] = takeObject(arg2);\n    };\n    imports.wbg.__wbg_newwithstrsequence_12085f7160a356d2 = function() { return handleError(function (arg0) {\n        const ret = new Blob(getObject(arg0));\n        return addHeapObject(ret);\n    }, arguments) };\n    imports.wbg.__wbg_size_8bb43f42080caff8 = function(arg0) {\n        const ret = getObject(arg0).size;\n        return ret;\n    };\n    imports.wbg.__wbg_slice_1a6a4193d55f7b5f = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {\n        const ret = getObject(arg0).slice(arg1, arg2, getStringFromWasm0(arg3, arg4));\n        return addHeapObject(ret);\n    }, arguments) };\n    imports.wbg.__wbg_random_4a6f48b07d1eab14 = typeof Math.random == 'function' ? Math.random : notDefined('Math.random');\n    imports.wbg.__wbg_setname_34512937225fceae = function(arg0, arg1, arg2) {\n        getObject(arg0).name = getStringFromWasm0(arg1, arg2);\n    };\n    imports.wbg.__wbg_settype_4c4ad7b3603563e6 = function(arg0, arg1) {\n        getObject(arg0).type = [\"classic\",\"module\",][arg1];\n    };\n    imports.wbg.__wbg_newwithoptions_1d8b2a34000b563b = function() { return handleError(function (arg0, arg1, arg2) {\n        const ret = new Worker(getStringFromWasm0(arg0, arg1), getObject(arg2));\n        return addHeapObject(ret);\n    }, arguments) };\n    imports.wbg.__wbindgen_module = function() {\n        const ret = __wbg_init.__wbindgen_wasm_module;\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_debug_d7780810b3a93632 = function(arg0, arg1, arg2, arg3) {\n        console.debug(getObject(arg0), getObject(arg1), getObject(arg2), getObject(arg3));\n    };\n    imports.wbg.__wbg_error_f02f3d66b42c6251 = function(arg0, arg1, arg2, arg3) {\n        console.error(getObject(arg0), getObject(arg1), getObject(arg2), getObject(arg3));\n    };\n    imports.wbg.__wbg_info_123d8c35ec14384a = function(arg0, arg1, arg2, arg3) {\n        console.info(getObject(arg0), getObject(arg1), getObject(arg2), getObject(arg3));\n    };\n    imports.wbg.__wbg_log_22aecf4cc2edc319 = function(arg0, arg1, arg2, arg3) {\n        console.log(getObject(arg0), getObject(arg1), getObject(arg2), getObject(arg3));\n    };\n    imports.wbg.__wbg_warn_60924fcf321399f0 = function(arg0, arg1, arg2, arg3) {\n        console.warn(getObject(arg0), getObject(arg1), getObject(arg2), getObject(arg3));\n    };\n    imports.wbg.__wbg_now_e0d8ec93dd25766a = function(arg0) {\n        const ret = getObject(arg0).now();\n        return ret;\n    };\n    imports.wbg.__wbg_performance_eeefc685c9bc38b4 = function(arg0) {\n        const ret = getObject(arg0).performance;\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_timeOrigin_2b5fc86b5df01793 = function(arg0) {\n        const ret = getObject(arg0).timeOrigin;\n        return ret;\n    };\n    imports.wbg.__wbg_now_abd80e969af37148 = function(arg0) {\n        const ret = getObject(arg0).now();\n        return ret;\n    };\n    imports.wbg.__wbg_performance_a1b8bde2ee512264 = function(arg0) {\n        const ret = getObject(arg0).performance;\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_timeOrigin_5c8b9e35719de799 = function(arg0) {\n        const ret = getObject(arg0).timeOrigin;\n        return ret;\n    };\n    imports.wbg.__wbg_Window_b33830c1e125f3ec = function(arg0) {\n        const ret = getObject(arg0).Window;\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_WorkerGlobalScope_09364a609c0ebf25 = function(arg0) {\n        const ret = getObject(arg0).WorkerGlobalScope;\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_gpu_29b3763fdd716bdd = function(arg0) {\n        const ret = getObject(arg0).gpu;\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_instanceof_GpuCanvasContext_341b919bd428793f = function(arg0) {\n        let result;\n        try {\n            result = getObject(arg0) instanceof GPUCanvasContext;\n        } catch (_) {\n            result = false;\n        }\n        const ret = result;\n        return ret;\n    };\n    imports.wbg.__wbg_instanceof_GpuAdapter_1269bd655cb029d5 = function(arg0) {\n        let result;\n        try {\n            result = getObject(arg0) instanceof GPUAdapter;\n        } catch (_) {\n            result = false;\n        }\n        const ret = result;\n        return ret;\n    };\n    imports.wbg.__wbg_queue_20cff2d2b72f8431 = function(arg0) {\n        const ret = getObject(arg0).queue;\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_has_6f6f04205edcb1ad = function(arg0, arg1, arg2) {\n        const ret = getObject(arg0).has(getStringFromWasm0(arg1, arg2));\n        return ret;\n    };\n    imports.wbg.__wbg_maxTextureDimension1D_c50f0720087ab1c0 = function(arg0) {\n        const ret = getObject(arg0).maxTextureDimension1D;\n        return ret;\n    };\n    imports.wbg.__wbg_maxTextureDimension2D_6321c260872490be = function(arg0) {\n        const ret = getObject(arg0).maxTextureDimension2D;\n        return ret;\n    };\n    imports.wbg.__wbg_maxTextureDimension3D_0b6be32b278b0b3d = function(arg0) {\n        const ret = getObject(arg0).maxTextureDimension3D;\n        return ret;\n    };\n    imports.wbg.__wbg_maxTextureArrayLayers_2ebe020a718355b8 = function(arg0) {\n        const ret = getObject(arg0).maxTextureArrayLayers;\n        return ret;\n    };\n    imports.wbg.__wbg_maxBindGroups_881d091c0dfef4e5 = function(arg0) {\n        const ret = getObject(arg0).maxBindGroups;\n        return ret;\n    };\n    imports.wbg.__wbg_maxBindingsPerBindGroup_61c2c442d2efbdd3 = function(arg0) {\n        const ret = getObject(arg0).maxBindingsPerBindGroup;\n        return ret;\n    };\n    imports.wbg.__wbg_maxDynamicUniformBuffersPerPipelineLayout_7adf0df47f0c05c3 = function(arg0) {\n        const ret = getObject(arg0).maxDynamicUniformBuffersPerPipelineLayout;\n        return ret;\n    };\n    imports.wbg.__wbg_maxDynamicStorageBuffersPerPipelineLayout_676b45398393fcdd = function(arg0) {\n        const ret = getObject(arg0).maxDynamicStorageBuffersPerPipelineLayout;\n        return ret;\n    };\n    imports.wbg.__wbg_maxSampledTexturesPerShaderStage_3802aa7064d7cf8f = function(arg0) {\n        const ret = getObject(arg0).maxSampledTexturesPerShaderStage;\n        return ret;\n    };\n    imports.wbg.__wbg_maxSamplersPerShaderStage_6605008c22b9c730 = function(arg0) {\n        const ret = getObject(arg0).maxSamplersPerShaderStage;\n        return ret;\n    };\n    imports.wbg.__wbg_maxStorageBuffersPerShaderStage_f0649ccf81d40c67 = function(arg0) {\n        const ret = getObject(arg0).maxStorageBuffersPerShaderStage;\n        return ret;\n    };\n    imports.wbg.__wbg_maxStorageTexturesPerShaderStage_c343e02fa6ee9b11 = function(arg0) {\n        const ret = getObject(arg0).maxStorageTexturesPerShaderStage;\n        return ret;\n    };\n    imports.wbg.__wbg_maxUniformBuffersPerShaderStage_659b87ba88fa44e4 = function(arg0) {\n        const ret = getObject(arg0).maxUniformBuffersPerShaderStage;\n        return ret;\n    };\n    imports.wbg.__wbg_maxUniformBufferBindingSize_1eb3a12500813c45 = function(arg0) {\n        const ret = getObject(arg0).maxUniformBufferBindingSize;\n        return ret;\n    };\n    imports.wbg.__wbg_maxStorageBufferBindingSize_8b19db4893e9bf77 = function(arg0) {\n        const ret = getObject(arg0).maxStorageBufferBindingSize;\n        return ret;\n    };\n    imports.wbg.__wbg_maxVertexBuffers_024dc1473c724264 = function(arg0) {\n        const ret = getObject(arg0).maxVertexBuffers;\n        return ret;\n    };\n    imports.wbg.__wbg_maxBufferSize_cdbca309bbd30bb5 = function(arg0) {\n        const ret = getObject(arg0).maxBufferSize;\n        return ret;\n    };\n    imports.wbg.__wbg_maxVertexAttributes_f43034f3a4d8751f = function(arg0) {\n        const ret = getObject(arg0).maxVertexAttributes;\n        return ret;\n    };\n    imports.wbg.__wbg_maxVertexBufferArrayStride_1c048fe2f1ec3478 = function(arg0) {\n        const ret = getObject(arg0).maxVertexBufferArrayStride;\n        return ret;\n    };\n    imports.wbg.__wbg_minUniformBufferOffsetAlignment_bf76315950e808db = function(arg0) {\n        const ret = getObject(arg0).minUniformBufferOffsetAlignment;\n        return ret;\n    };\n    imports.wbg.__wbg_minStorageBufferOffsetAlignment_1bb4616f03d08252 = function(arg0) {\n        const ret = getObject(arg0).minStorageBufferOffsetAlignment;\n        return ret;\n    };\n    imports.wbg.__wbg_maxInterStageShaderComponents_6bf02fc7cd374c19 = function(arg0) {\n        const ret = getObject(arg0).maxInterStageShaderComponents;\n        return ret;\n    };\n    imports.wbg.__wbg_maxColorAttachments_0706f4c14b6796f9 = function(arg0) {\n        const ret = getObject(arg0).maxColorAttachments;\n        return ret;\n    };\n    imports.wbg.__wbg_maxColorAttachmentBytesPerSample_6b8cb772693d30a3 = function(arg0) {\n        const ret = getObject(arg0).maxColorAttachmentBytesPerSample;\n        return ret;\n    };\n    imports.wbg.__wbg_maxComputeWorkgroupStorageSize_eff6506d54acf4b5 = function(arg0) {\n        const ret = getObject(arg0).maxComputeWorkgroupStorageSize;\n        return ret;\n    };\n    imports.wbg.__wbg_maxComputeInvocationsPerWorkgroup_0a815599dde998b6 = function(arg0) {\n        const ret = getObject(arg0).maxComputeInvocationsPerWorkgroup;\n        return ret;\n    };\n    imports.wbg.__wbg_maxComputeWorkgroupSizeX_d08b8fcb1298e4f2 = function(arg0) {\n        const ret = getObject(arg0).maxComputeWorkgroupSizeX;\n        return ret;\n    };\n    imports.wbg.__wbg_maxComputeWorkgroupSizeY_e8be0d6d91d9a5fd = function(arg0) {\n        const ret = getObject(arg0).maxComputeWorkgroupSizeY;\n        return ret;\n    };\n    imports.wbg.__wbg_maxComputeWorkgroupSizeZ_4650a00e8b258e44 = function(arg0) {\n        const ret = getObject(arg0).maxComputeWorkgroupSizeZ;\n        return ret;\n    };\n    imports.wbg.__wbg_maxComputeWorkgroupsPerDimension_ad146b346522f367 = function(arg0) {\n        const ret = getObject(arg0).maxComputeWorkgroupsPerDimension;\n        return ret;\n    };\n    imports.wbg.__wbg_createRenderPipeline_7c0092d9ae945fd8 = function(arg0, arg1) {\n        const ret = getObject(arg0).createRenderPipeline(getObject(arg1));\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_instanceof_GpuDeviceLostInfo_0d6133a1b20c210a = function(arg0) {\n        let result;\n        try {\n            result = getObject(arg0) instanceof GPUDeviceLostInfo;\n        } catch (_) {\n            result = false;\n        }\n        const ret = result;\n        return ret;\n    };\n    imports.wbg.__wbg_reason_9f09e92f5e862e80 = function(arg0) {\n        const ret = getObject(arg0).reason;\n        return {\"unknown\":0,\"destroyed\":1,}[ret] ?? 2;\n    };\n    imports.wbg.__wbg_message_652c7ad8ff17eadc = function(arg0, arg1) {\n        const ret = getObject(arg1).message;\n        const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n        const len1 = WASM_VECTOR_LEN;\n        getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n        getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n    };\n    imports.wbg.__wbg_error_c5e37b58c6d38266 = function(arg0) {\n        const ret = getObject(arg0).error;\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_valueOf_d5ba0a54a2aa5615 = function(arg0) {\n        const ret = getObject(arg0).valueOf();\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_instanceof_GpuValidationError_193353a4796b77a7 = function(arg0) {\n        let result;\n        try {\n            result = getObject(arg0) instanceof GPUValidationError;\n        } catch (_) {\n            result = false;\n        }\n        const ret = result;\n        return ret;\n    };\n    imports.wbg.__wbg_message_f447a0970df98b8e = function(arg0, arg1) {\n        const ret = getObject(arg1).message;\n        const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n        const len1 = WASM_VECTOR_LEN;\n        getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n        getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n    };\n    imports.wbg.__wbg_instanceof_GpuOutOfMemoryError_92c8f3cb22270edc = function(arg0) {\n        let result;\n        try {\n            result = getObject(arg0) instanceof GPUOutOfMemoryError;\n        } catch (_) {\n            result = false;\n        }\n        const ret = result;\n        return ret;\n    };\n    imports.wbg.__wbg_instanceof_Object_b80213ae6cc9aafb = function(arg0) {\n        let result;\n        try {\n            result = getObject(arg0) instanceof Object;\n        } catch (_) {\n            result = false;\n        }\n        const ret = result;\n        return ret;\n    };\n    imports.wbg.__wbg_writeBuffer_cbbd7b7511d993db = function(arg0, arg1, arg2, arg3, arg4, arg5) {\n        getObject(arg0).writeBuffer(getObject(arg1), arg2, getObject(arg3), arg4, arg5);\n    };\n    imports.wbg.__wbg_getContext_bd2ece8a59fd4732 = function() { return handleError(function (arg0, arg1, arg2) {\n        const ret = getObject(arg0).getContext(getStringFromWasm0(arg1, arg2));\n        return isLikeNone(ret) ? 0 : addHeapObject(ret);\n    }, arguments) };\n    imports.wbg.__wbg_querySelectorAll_52447cbab6df8bae = function() { return handleError(function (arg0, arg1, arg2) {\n        const ret = getObject(arg0).querySelectorAll(getStringFromWasm0(arg1, arg2));\n        return addHeapObject(ret);\n    }, arguments) };\n    imports.wbg.__wbg_get_fe289e3950b3978a = function(arg0, arg1) {\n        const ret = getObject(arg0)[arg1 >>> 0];\n        return isLikeNone(ret) ? 0 : addHeapObject(ret);\n    };\n    imports.wbg.__wbg_getContext_69ec873410cbba3c = function() { return handleError(function (arg0, arg1, arg2) {\n        const ret = getObject(arg0).getContext(getStringFromWasm0(arg1, arg2));\n        return isLikeNone(ret) ? 0 : addHeapObject(ret);\n    }, arguments) };\n    imports.wbg.__wbg_requestAdapter_9e8b0535a7f4ae87 = function(arg0, arg1) {\n        const ret = getObject(arg0).requestAdapter(getObject(arg1));\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_requestDevice_f102c42853793d79 = function(arg0, arg1) {\n        const ret = getObject(arg0).requestDevice(getObject(arg1));\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_features_f2f01f2b3e0defdd = function(arg0) {\n        const ret = getObject(arg0).features;\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_limits_3dbf4011aad6343b = function(arg0) {\n        const ret = getObject(arg0).limits;\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_getPreferredCanvasFormat_539bbfa034df1fa6 = function(arg0) {\n        const ret = getObject(arg0).getPreferredCanvasFormat();\n        return {\"r8unorm\":0,\"r8snorm\":1,\"r8uint\":2,\"r8sint\":3,\"r16uint\":4,\"r16sint\":5,\"r16float\":6,\"rg8unorm\":7,\"rg8snorm\":8,\"rg8uint\":9,\"rg8sint\":10,\"r32uint\":11,\"r32sint\":12,\"r32float\":13,\"rg16uint\":14,\"rg16sint\":15,\"rg16float\":16,\"rgba8unorm\":17,\"rgba8unorm-srgb\":18,\"rgba8snorm\":19,\"rgba8uint\":20,\"rgba8sint\":21,\"bgra8unorm\":22,\"bgra8unorm-srgb\":23,\"rgb9e5ufloat\":24,\"rgb10a2uint\":25,\"rgb10a2unorm\":26,\"rg11b10ufloat\":27,\"rg32uint\":28,\"rg32sint\":29,\"rg32float\":30,\"rgba16uint\":31,\"rgba16sint\":32,\"rgba16float\":33,\"rgba32uint\":34,\"rgba32sint\":35,\"rgba32float\":36,\"stencil8\":37,\"depth16unorm\":38,\"depth24plus\":39,\"depth24plus-stencil8\":40,\"depth32float\":41,\"depth32float-stencil8\":42,\"bc1-rgba-unorm\":43,\"bc1-rgba-unorm-srgb\":44,\"bc2-rgba-unorm\":45,\"bc2-rgba-unorm-srgb\":46,\"bc3-rgba-unorm\":47,\"bc3-rgba-unorm-srgb\":48,\"bc4-r-unorm\":49,\"bc4-r-snorm\":50,\"bc5-rg-unorm\":51,\"bc5-rg-snorm\":52,\"bc6h-rgb-ufloat\":53,\"bc6h-rgb-float\":54,\"bc7-rgba-unorm\":55,\"bc7-rgba-unorm-srgb\":56,\"etc2-rgb8unorm\":57,\"etc2-rgb8unorm-srgb\":58,\"etc2-rgb8a1unorm\":59,\"etc2-rgb8a1unorm-srgb\":60,\"etc2-rgba8unorm\":61,\"etc2-rgba8unorm-srgb\":62,\"eac-r11unorm\":63,\"eac-r11snorm\":64,\"eac-rg11unorm\":65,\"eac-rg11snorm\":66,\"astc-4x4-unorm\":67,\"astc-4x4-unorm-srgb\":68,\"astc-5x4-unorm\":69,\"astc-5x4-unorm-srgb\":70,\"astc-5x5-unorm\":71,\"astc-5x5-unorm-srgb\":72,\"astc-6x5-unorm\":73,\"astc-6x5-unorm-srgb\":74,\"astc-6x6-unorm\":75,\"astc-6x6-unorm-srgb\":76,\"astc-8x5-unorm\":77,\"astc-8x5-unorm-srgb\":78,\"astc-8x6-unorm\":79,\"astc-8x6-unorm-srgb\":80,\"astc-8x8-unorm\":81,\"astc-8x8-unorm-srgb\":82,\"astc-10x5-unorm\":83,\"astc-10x5-unorm-srgb\":84,\"astc-10x6-unorm\":85,\"astc-10x6-unorm-srgb\":86,\"astc-10x8-unorm\":87,\"astc-10x8-unorm-srgb\":88,\"astc-10x10-unorm\":89,\"astc-10x10-unorm-srgb\":90,\"astc-12x10-unorm\":91,\"astc-12x10-unorm-srgb\":92,\"astc-12x12-unorm\":93,\"astc-12x12-unorm-srgb\":94,}[ret] ?? 95;\n    };\n    imports.wbg.__wbg_setwidth_e371a8d6b16ebe84 = function(arg0, arg1) {\n        getObject(arg0).width = arg1 >>> 0;\n    };\n    imports.wbg.__wbg_setheight_ba99ad2df4295e89 = function(arg0, arg1) {\n        getObject(arg0).height = arg1 >>> 0;\n    };\n    imports.wbg.__wbg_setwidth_c20f1f8fcd5d93b4 = function(arg0, arg1) {\n        getObject(arg0).width = arg1 >>> 0;\n    };\n    imports.wbg.__wbg_setheight_a5e39c9d97429299 = function(arg0, arg1) {\n        getObject(arg0).height = arg1 >>> 0;\n    };\n    imports.wbg.__wbg_configure_ea62ac45b2856242 = function(arg0, arg1) {\n        getObject(arg0).configure(getObject(arg1));\n    };\n    imports.wbg.__wbg_getCurrentTexture_97a326995757bf3b = function(arg0) {\n        const ret = getObject(arg0).getCurrentTexture();\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_features_2965ca8ba5ca2ba2 = function(arg0) {\n        const ret = getObject(arg0).features;\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_limits_8e50703aab1f8530 = function(arg0) {\n        const ret = getObject(arg0).limits;\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_createShaderModule_1631c63b50b1a026 = function(arg0, arg1) {\n        const ret = getObject(arg0).createShaderModule(getObject(arg1));\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_createBindGroupLayout_971f5465be4c5fee = function(arg0, arg1) {\n        const ret = getObject(arg0).createBindGroupLayout(getObject(arg1));\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_createBindGroup_0cc8e6efd420f576 = function(arg0, arg1) {\n        const ret = getObject(arg0).createBindGroup(getObject(arg1));\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_createPipelineLayout_71d16b3b10516fe9 = function(arg0, arg1) {\n        const ret = getObject(arg0).createPipelineLayout(getObject(arg1));\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_createComputePipeline_d9b022b12e097ef6 = function(arg0, arg1) {\n        const ret = getObject(arg0).createComputePipeline(getObject(arg1));\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_createBuffer_09091d8e775e862b = function(arg0, arg1) {\n        const ret = getObject(arg0).createBuffer(getObject(arg1));\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_createTexture_380f6f9cc824bb79 = function(arg0, arg1) {\n        const ret = getObject(arg0).createTexture(getObject(arg1));\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_createSampler_145f74037facc765 = function(arg0, arg1) {\n        const ret = getObject(arg0).createSampler(getObject(arg1));\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_createQuerySet_f6210ed27b6a316d = function(arg0, arg1) {\n        const ret = getObject(arg0).createQuerySet(getObject(arg1));\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_createCommandEncoder_82908ad3ca9ea967 = function(arg0, arg1) {\n        const ret = getObject(arg0).createCommandEncoder(getObject(arg1));\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_createRenderBundleEncoder_2ccc5f5083076e5f = function(arg0, arg1) {\n        const ret = getObject(arg0).createRenderBundleEncoder(getObject(arg1));\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_lost_2abd419ec2113de2 = function(arg0) {\n        const ret = getObject(arg0).lost;\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_destroy_11766997e5376493 = function(arg0) {\n        getObject(arg0).destroy();\n    };\n    imports.wbg.__wbg_setonuncapturederror_f355983df8c267e5 = function(arg0, arg1) {\n        getObject(arg0).onuncapturederror = getObject(arg1);\n    };\n    imports.wbg.__wbg_pushErrorScope_e63a89653ad5d786 = function(arg0, arg1) {\n        getObject(arg0).pushErrorScope([\"validation\",\"out-of-memory\",\"internal\",][arg1]);\n    };\n    imports.wbg.__wbg_popErrorScope_3d73c351695d3fea = function(arg0) {\n        const ret = getObject(arg0).popErrorScope();\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_mapAsync_c9c2c62e891e3e0d = function(arg0, arg1, arg2, arg3) {\n        const ret = getObject(arg0).mapAsync(arg1 >>> 0, arg2, arg3);\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_getMappedRange_bbb850042c7b3871 = function(arg0, arg1, arg2) {\n        const ret = getObject(arg0).getMappedRange(arg1, arg2);\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_unmap_779803e9263c3641 = function(arg0) {\n        getObject(arg0).unmap();\n    };\n    imports.wbg.__wbg_createView_4758a3a8b1c6cead = function(arg0, arg1) {\n        const ret = getObject(arg0).createView(getObject(arg1));\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_destroy_224a8ac37d625fa1 = function(arg0) {\n        getObject(arg0).destroy();\n    };\n    imports.wbg.__wbg_destroy_b4aa9c00c6499972 = function(arg0) {\n        getObject(arg0).destroy();\n    };\n    imports.wbg.__wbg_getBindGroupLayout_575e6b0a12f6203a = function(arg0, arg1) {\n        const ret = getObject(arg0).getBindGroupLayout(arg1 >>> 0);\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_getBindGroupLayout_57838ea6906a9c1a = function(arg0, arg1) {\n        const ret = getObject(arg0).getBindGroupLayout(arg1 >>> 0);\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_copyBufferToBuffer_c9fd621aec5fefb1 = function(arg0, arg1, arg2, arg3, arg4, arg5) {\n        getObject(arg0).copyBufferToBuffer(getObject(arg1), arg2, getObject(arg3), arg4, arg5);\n    };\n    imports.wbg.__wbg_copyBufferToTexture_5353d0c394d6431f = function(arg0, arg1, arg2, arg3) {\n        getObject(arg0).copyBufferToTexture(getObject(arg1), getObject(arg2), getObject(arg3));\n    };\n    imports.wbg.__wbg_copyTextureToBuffer_859659fac3f00035 = function(arg0, arg1, arg2, arg3) {\n        getObject(arg0).copyTextureToBuffer(getObject(arg1), getObject(arg2), getObject(arg3));\n    };\n    imports.wbg.__wbg_copyTextureToTexture_710dd73b9351d803 = function(arg0, arg1, arg2, arg3) {\n        getObject(arg0).copyTextureToTexture(getObject(arg1), getObject(arg2), getObject(arg3));\n    };\n    imports.wbg.__wbg_beginComputePass_bd24248575c99b97 = function(arg0, arg1) {\n        const ret = getObject(arg0).beginComputePass(getObject(arg1));\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_end_9f5aa0c00d200bd8 = function(arg0) {\n        getObject(arg0).end();\n    };\n    imports.wbg.__wbg_beginRenderPass_34ef854d794faae3 = function(arg0, arg1) {\n        const ret = getObject(arg0).beginRenderPass(getObject(arg1));\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_end_eec61c2b8f66bacb = function(arg0) {\n        getObject(arg0).end();\n    };\n    imports.wbg.__wbg_label_7105583b8ae00e2a = function(arg0, arg1) {\n        const ret = getObject(arg1).label;\n        const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n        const len1 = WASM_VECTOR_LEN;\n        getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n        getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n    };\n    imports.wbg.__wbg_finish_d37db2e4f4ef48c2 = function(arg0, arg1) {\n        const ret = getObject(arg0).finish(getObject(arg1));\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_finish_e277995ca01d27fe = function(arg0) {\n        const ret = getObject(arg0).finish();\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_clearBuffer_30a71e8a1e485485 = function(arg0, arg1, arg2) {\n        getObject(arg0).clearBuffer(getObject(arg1), arg2);\n    };\n    imports.wbg.__wbg_clearBuffer_3392dc0158d5f04a = function(arg0, arg1, arg2, arg3) {\n        getObject(arg0).clearBuffer(getObject(arg1), arg2, arg3);\n    };\n    imports.wbg.__wbg_resolveQuerySet_efe400187d449f37 = function(arg0, arg1, arg2, arg3, arg4, arg5) {\n        getObject(arg0).resolveQuerySet(getObject(arg1), arg2 >>> 0, arg3 >>> 0, getObject(arg4), arg5 >>> 0);\n    };\n    imports.wbg.__wbg_finish_1aeb39f0aebbe8ce = function(arg0) {\n        const ret = getObject(arg0).finish();\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_finish_f6ddd27733a75945 = function(arg0, arg1) {\n        const ret = getObject(arg0).finish(getObject(arg1));\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_usage_25d014e586828e9c = function(arg0) {\n        const ret = getObject(arg0).usage;\n        return ret;\n    };\n    imports.wbg.__wbg_size_2bfb7d34f2031c6e = function(arg0) {\n        const ret = getObject(arg0).size;\n        return ret;\n    };\n    imports.wbg.__wbg_writeTexture_991a573f5bbeced8 = function(arg0, arg1, arg2, arg3, arg4) {\n        getObject(arg0).writeTexture(getObject(arg1), getObject(arg2), getObject(arg3), getObject(arg4));\n    };\n    imports.wbg.__wbg_copyExternalImageToTexture_d798cca8f97d5647 = function(arg0, arg1, arg2, arg3) {\n        getObject(arg0).copyExternalImageToTexture(getObject(arg1), getObject(arg2), getObject(arg3));\n    };\n    imports.wbg.__wbg_submit_0e12ae891738205b = function(arg0, arg1) {\n        getObject(arg0).submit(getObject(arg1));\n    };\n    imports.wbg.__wbg_setPipeline_a53a5f5f14a638df = function(arg0, arg1) {\n        getObject(arg0).setPipeline(getObject(arg1));\n    };\n    imports.wbg.__wbg_setBindGroup_666670ba51ae0859 = function(arg0, arg1, arg2) {\n        getObject(arg0).setBindGroup(arg1 >>> 0, getObject(arg2));\n    };\n    imports.wbg.__wbg_setBindGroup_159f73d9a4926024 = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6) {\n        getObject(arg0).setBindGroup(arg1 >>> 0, getObject(arg2), getArrayU32FromWasm0(arg3, arg4), arg5, arg6 >>> 0);\n    };\n    imports.wbg.__wbg_dispatchWorkgroups_9ca267438b69f3bc = function(arg0, arg1, arg2, arg3) {\n        getObject(arg0).dispatchWorkgroups(arg1 >>> 0, arg2 >>> 0, arg3 >>> 0);\n    };\n    imports.wbg.__wbg_dispatchWorkgroupsIndirect_bdf427037fa3244d = function(arg0, arg1, arg2) {\n        getObject(arg0).dispatchWorkgroupsIndirect(getObject(arg1), arg2);\n    };\n    imports.wbg.__wbg_setPipeline_6bfc15b4e6472736 = function(arg0, arg1) {\n        getObject(arg0).setPipeline(getObject(arg1));\n    };\n    imports.wbg.__wbg_setBindGroup_7cf3c1ff00d1a094 = function(arg0, arg1, arg2) {\n        getObject(arg0).setBindGroup(arg1 >>> 0, getObject(arg2));\n    };\n    imports.wbg.__wbg_setBindGroup_9c94a49d89c8288a = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6) {\n        getObject(arg0).setBindGroup(arg1 >>> 0, getObject(arg2), getArrayU32FromWasm0(arg3, arg4), arg5, arg6 >>> 0);\n    };\n    imports.wbg.__wbg_setIndexBuffer_9946754e4be2974e = function(arg0, arg1, arg2, arg3) {\n        getObject(arg0).setIndexBuffer(getObject(arg1), [\"uint16\",\"uint32\",][arg2], arg3);\n    };\n    imports.wbg.__wbg_setIndexBuffer_1595cc8409b1ad82 = function(arg0, arg1, arg2, arg3, arg4) {\n        getObject(arg0).setIndexBuffer(getObject(arg1), [\"uint16\",\"uint32\",][arg2], arg3, arg4);\n    };\n    imports.wbg.__wbg_setVertexBuffer_c88fdcc8a697a8b6 = function(arg0, arg1, arg2, arg3) {\n        getObject(arg0).setVertexBuffer(arg1 >>> 0, getObject(arg2), arg3);\n    };\n    imports.wbg.__wbg_setVertexBuffer_812f33e9cdaf1cea = function(arg0, arg1, arg2, arg3, arg4) {\n        getObject(arg0).setVertexBuffer(arg1 >>> 0, getObject(arg2), arg3, arg4);\n    };\n    imports.wbg.__wbg_draw_4f2761ec59517974 = function(arg0, arg1, arg2, arg3, arg4) {\n        getObject(arg0).draw(arg1 >>> 0, arg2 >>> 0, arg3 >>> 0, arg4 >>> 0);\n    };\n    imports.wbg.__wbg_drawIndexed_6a8c02fa3a8c8209 = function(arg0, arg1, arg2, arg3, arg4, arg5) {\n        getObject(arg0).drawIndexed(arg1 >>> 0, arg2 >>> 0, arg3 >>> 0, arg4, arg5 >>> 0);\n    };\n    imports.wbg.__wbg_drawIndirect_e49b7a44fc36a3c1 = function(arg0, arg1, arg2) {\n        getObject(arg0).drawIndirect(getObject(arg1), arg2);\n    };\n    imports.wbg.__wbg_drawIndexedIndirect_aef989ec623d0c61 = function(arg0, arg1, arg2) {\n        getObject(arg0).drawIndexedIndirect(getObject(arg1), arg2);\n    };\n    imports.wbg.__wbg_setPipeline_80a76da1ee9d10f3 = function(arg0, arg1) {\n        getObject(arg0).setPipeline(getObject(arg1));\n    };\n    imports.wbg.__wbg_setBindGroup_14e92aee89fac07e = function(arg0, arg1, arg2) {\n        getObject(arg0).setBindGroup(arg1 >>> 0, getObject(arg2));\n    };\n    imports.wbg.__wbg_setBindGroup_a2fc7aa76f93a484 = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6) {\n        getObject(arg0).setBindGroup(arg1 >>> 0, getObject(arg2), getArrayU32FromWasm0(arg3, arg4), arg5, arg6 >>> 0);\n    };\n    imports.wbg.__wbg_setIndexBuffer_89809ad3e9da0e6b = function(arg0, arg1, arg2, arg3) {\n        getObject(arg0).setIndexBuffer(getObject(arg1), [\"uint16\",\"uint32\",][arg2], arg3);\n    };\n    imports.wbg.__wbg_setIndexBuffer_8b1abb7e33153d9a = function(arg0, arg1, arg2, arg3, arg4) {\n        getObject(arg0).setIndexBuffer(getObject(arg1), [\"uint16\",\"uint32\",][arg2], arg3, arg4);\n    };\n    imports.wbg.__wbg_setVertexBuffer_ada2075332168baa = function(arg0, arg1, arg2, arg3) {\n        getObject(arg0).setVertexBuffer(arg1 >>> 0, getObject(arg2), arg3);\n    };\n    imports.wbg.__wbg_setVertexBuffer_3f647affce419717 = function(arg0, arg1, arg2, arg3, arg4) {\n        getObject(arg0).setVertexBuffer(arg1 >>> 0, getObject(arg2), arg3, arg4);\n    };\n    imports.wbg.__wbg_draw_a324dac236a62f36 = function(arg0, arg1, arg2, arg3, arg4) {\n        getObject(arg0).draw(arg1 >>> 0, arg2 >>> 0, arg3 >>> 0, arg4 >>> 0);\n    };\n    imports.wbg.__wbg_drawIndexed_226c53706f82b965 = function(arg0, arg1, arg2, arg3, arg4, arg5) {\n        getObject(arg0).drawIndexed(arg1 >>> 0, arg2 >>> 0, arg3 >>> 0, arg4, arg5 >>> 0);\n    };\n    imports.wbg.__wbg_drawIndirect_02b33f8f83a121ab = function(arg0, arg1, arg2) {\n        getObject(arg0).drawIndirect(getObject(arg1), arg2);\n    };\n    imports.wbg.__wbg_drawIndexedIndirect_1879881b21007921 = function(arg0, arg1, arg2) {\n        getObject(arg0).drawIndexedIndirect(getObject(arg1), arg2);\n    };\n    imports.wbg.__wbg_setBlendConstant_100031ce77d4a201 = function(arg0, arg1) {\n        getObject(arg0).setBlendConstant(getObject(arg1));\n    };\n    imports.wbg.__wbg_setScissorRect_e2aeb1b979baa840 = function(arg0, arg1, arg2, arg3, arg4) {\n        getObject(arg0).setScissorRect(arg1 >>> 0, arg2 >>> 0, arg3 >>> 0, arg4 >>> 0);\n    };\n    imports.wbg.__wbg_setViewport_83bfa06d3e1e0d95 = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6) {\n        getObject(arg0).setViewport(arg1, arg2, arg3, arg4, arg5, arg6);\n    };\n    imports.wbg.__wbg_setStencilReference_e71f15dd902f4842 = function(arg0, arg1) {\n        getObject(arg0).setStencilReference(arg1 >>> 0);\n    };\n    imports.wbg.__wbg_executeBundles_7c46aada8408e1dc = function(arg0, arg1) {\n        getObject(arg0).executeBundles(getObject(arg1));\n    };\n    imports.wbg.__wbg_scheduler_6932606c19435996 = function(arg0) {\n        const ret = getObject(arg0).scheduler;\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_scheduler_8082c844a9cfc0df = function(arg0) {\n        const ret = getObject(arg0).scheduler;\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_new_ebf2727385ee825c = function() { return handleError(function () {\n        const ret = new AbortController();\n        return addHeapObject(ret);\n    }, arguments) };\n    imports.wbg.__wbg_signal_41e46ccad44bb5e2 = function(arg0) {\n        const ret = getObject(arg0).signal;\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_postTask_4674878f9a603824 = function(arg0, arg1, arg2) {\n        const ret = getObject(arg0).postTask(getObject(arg1), getObject(arg2));\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_catch_a279b1da46d132d8 = function(arg0, arg1) {\n        const ret = getObject(arg0).catch(getObject(arg1));\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_requestIdleCallback_081ddac93612a53e = function(arg0) {\n        const ret = getObject(arg0).requestIdleCallback;\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_new_40ff2b042829bc58 = function() { return handleError(function () {\n        const ret = new MessageChannel();\n        return addHeapObject(ret);\n    }, arguments) };\n    imports.wbg.__wbg_port1_9e11ba1fe63adb21 = function(arg0) {\n        const ret = getObject(arg0).port1;\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_start_f642a950f6c98a0e = function(arg0) {\n        getObject(arg0).start();\n    };\n    imports.wbg.__wbg_port2_7d887905fa4a6677 = function(arg0) {\n        const ret = getObject(arg0).port2;\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_setTimeout_2bb9dfe810e45e24 = function() { return handleError(function (arg0, arg1) {\n        const ret = getObject(arg0).setTimeout(getObject(arg1));\n        return ret;\n    }, arguments) };\n    imports.wbg.__wbg_setTimeout_73b734ca971c19f4 = function() { return handleError(function (arg0, arg1, arg2) {\n        const ret = getObject(arg0).setTimeout(getObject(arg1), arg2);\n        return ret;\n    }, arguments) };\n    imports.wbg.__wbg_requestIdleCallback_af997f1fdcadcc54 = function() { return handleError(function (arg0, arg1) {\n        const ret = getObject(arg0).requestIdleCallback(getObject(arg1));\n        return ret;\n    }, arguments) };\n    imports.wbg.__wbg_removeListener_0ff79f74b9d808ac = function() { return handleError(function (arg0, arg1) {\n        getObject(arg0).removeListener(getObject(arg1));\n    }, arguments) };\n    imports.wbg.__wbg_postMessage_6eeb375bc13e8ec8 = function() { return handleError(function (arg0, arg1) {\n        getObject(arg0).postMessage(getObject(arg1));\n    }, arguments) };\n    imports.wbg.__wbg_contains_4f87c5405416b4fd = function(arg0, arg1) {\n        const ret = getObject(arg0).contains(getObject(arg1));\n        return ret;\n    };\n    imports.wbg.__wbg_unobserve_e67452df241a602d = function(arg0, arg1) {\n        getObject(arg0).unobserve(getObject(arg1));\n    };\n    imports.wbg.__wbg_prototype_8e5075a5dd95f801 = function() {\n        const ret = ResizeObserverEntry.prototype;\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_getOwnPropertyDescriptor_104555bb47552c24 = function(arg0, arg1) {\n        const ret = Object.getOwnPropertyDescriptor(getObject(arg0), getObject(arg1));\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_style_e06c9e03355741e9 = function(arg0) {\n        const ret = getObject(arg0).style;\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_setProperty_ff389e5a7fb9910e = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {\n        getObject(arg0).setProperty(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4));\n    }, arguments) };\n    imports.wbg.__wbg_webkitRequestFullscreen_8abcfecec7127495 = function(arg0) {\n        getObject(arg0).webkitRequestFullscreen();\n    };\n    imports.wbg.__wbg_requestFullscreen_f4349fb8a7429cf9 = function(arg0) {\n        const ret = getObject(arg0).requestFullscreen();\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_code_01dc6af887ca9ecb = function(arg0, arg1) {\n        const ret = getObject(arg1).code;\n        const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n        const len1 = WASM_VECTOR_LEN;\n        getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n        getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n    };\n    imports.wbg.__wbg_deltaX_7f4a9de8338c7ca6 = function(arg0) {\n        const ret = getObject(arg0).deltaX;\n        return ret;\n    };\n    imports.wbg.__wbg_deltaY_606f12aa66daba69 = function(arg0) {\n        const ret = getObject(arg0).deltaY;\n        return ret;\n    };\n    imports.wbg.__wbg_deltaMode_d6b849e45efd0f5e = function(arg0) {\n        const ret = getObject(arg0).deltaMode;\n        return ret;\n    };\n    imports.wbg.__wbg_onpointerrawupdate_e087759b4021ec00 = function(arg0) {\n        const ret = getObject(arg0).onpointerrawupdate;\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_getCoalescedEvents_4665669d237be577 = function(arg0) {\n        const ret = getObject(arg0).getCoalescedEvents;\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_movementX_ecd0c638be0899eb = function(arg0) {\n        const ret = getObject(arg0).movementX;\n        return ret;\n    };\n    imports.wbg.__wbg_movementY_3064817f736e8151 = function(arg0) {\n        const ret = getObject(arg0).movementY;\n        return ret;\n    };\n    imports.wbg.__wbg_getCoalescedEvents_bf1c46ef1a01dcce = function(arg0) {\n        const ret = getObject(arg0).getCoalescedEvents();\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbg_persisted_6483200f25cdfed4 = function(arg0) {\n        const ret = getObject(arg0).persisted;\n        return ret;\n    };\n    imports.wbg.__wbg_requestAnimationFrame_b4b782250b9c2c88 = function() { return handleError(function (arg0, arg1) {\n        const ret = getObject(arg0).requestAnimationFrame(getObject(arg1));\n        return ret;\n    }, arguments) };\n    imports.wbg.__wbg_webkitFullscreenElement_533c5f32e2ac8d0c = function(arg0) {\n        const ret = getObject(arg0).webkitFullscreenElement;\n        return isLikeNone(ret) ? 0 : addHeapObject(ret);\n    };\n    imports.wbg.__wbg_fullscreenElement_027a4ad195839d29 = function(arg0) {\n        const ret = getObject(arg0).fullscreenElement;\n        return isLikeNone(ret) ? 0 : addHeapObject(ret);\n    };\n    imports.wbg.__wbg_webkitExitFullscreen_225988f6e8c97b63 = function(arg0) {\n        getObject(arg0).webkitExitFullscreen();\n    };\n    imports.wbg.__wbg_exitFullscreen_3b8893467fd80879 = function(arg0) {\n        getObject(arg0).exitFullscreen();\n    };\n    imports.wbg.__wbg_location_d7fe3090ad7e80d7 = function(arg0) {\n        const ret = getObject(arg0).location;\n        return ret;\n    };\n    imports.wbg.__wbg_media_80f4e313bb8005f1 = function(arg0, arg1) {\n        const ret = getObject(arg1).media;\n        const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n        const len1 = WASM_VECTOR_LEN;\n        getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n        getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n    };\n    imports.wbg.__wbindgen_closure_wrapper407 = function(arg0, arg1, arg2) {\n        const ret = makeMutClosure(arg0, arg1, 3, __wbg_adapter_36);\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbindgen_closure_wrapper409 = function(arg0, arg1, arg2) {\n        const ret = makeMutClosure(arg0, arg1, 3, __wbg_adapter_36);\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbindgen_closure_wrapper411 = function(arg0, arg1, arg2) {\n        const ret = makeMutClosure(arg0, arg1, 3, __wbg_adapter_36);\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbindgen_closure_wrapper413 = function(arg0, arg1, arg2) {\n        const ret = makeMutClosure(arg0, arg1, 3, __wbg_adapter_43);\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbindgen_closure_wrapper415 = function(arg0, arg1, arg2) {\n        const ret = makeMutClosure(arg0, arg1, 3, __wbg_adapter_36);\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbindgen_closure_wrapper417 = function(arg0, arg1, arg2) {\n        const ret = makeMutClosure(arg0, arg1, 3, __wbg_adapter_48);\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbindgen_closure_wrapper419 = function(arg0, arg1, arg2) {\n        const ret = makeMutClosure(arg0, arg1, 3, __wbg_adapter_36);\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbindgen_closure_wrapper673 = function(arg0, arg1, arg2) {\n        const ret = makeMutClosure(arg0, arg1, 3, __wbg_adapter_48);\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbindgen_closure_wrapper679 = function(arg0, arg1, arg2) {\n        const ret = makeMutClosure(arg0, arg1, 3, __wbg_adapter_36);\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbindgen_closure_wrapper680 = function(arg0, arg1, arg2) {\n        const ret = makeMutClosure(arg0, arg1, 3, __wbg_adapter_48);\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbindgen_closure_wrapper682 = function(arg0, arg1, arg2) {\n        const ret = makeMutClosure(arg0, arg1, 3, __wbg_adapter_36);\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbindgen_closure_wrapper806 = function(arg0, arg1, arg2) {\n        const ret = makeMutClosure(arg0, arg1, 3, __wbg_adapter_36);\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbindgen_closure_wrapper3933 = function(arg0, arg1, arg2) {\n        const ret = makeMutClosure(arg0, arg1, 3, __wbg_adapter_48);\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbindgen_closure_wrapper4063 = function(arg0, arg1, arg2) {\n        const ret = makeMutClosure(arg0, arg1, 3, __wbg_adapter_48);\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbindgen_closure_wrapper5150 = function(arg0, arg1, arg2) {\n        const ret = makeMutClosure(arg0, arg1, 3, __wbg_adapter_48);\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbindgen_closure_wrapper5932 = function(arg0, arg1, arg2) {\n        const ret = makeMutClosure(arg0, arg1, 3, __wbg_adapter_48);\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbindgen_closure_wrapper7220 = function(arg0, arg1, arg2) {\n        const ret = makeMutClosure(arg0, arg1, 3, __wbg_adapter_36);\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbindgen_closure_wrapper7242 = function(arg0, arg1, arg2) {\n        const ret = makeMutClosure(arg0, arg1, 3, __wbg_adapter_36);\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbindgen_closure_wrapper7280 = function(arg0, arg1, arg2) {\n        const ret = makeMutClosure(arg0, arg1, 3, __wbg_adapter_75);\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbindgen_closure_wrapper8638 = function(arg0, arg1, arg2) {\n        const ret = makeMutClosure(arg0, arg1, 3, __wbg_adapter_36);\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbindgen_closure_wrapper9137 = function(arg0, arg1, arg2) {\n        const ret = makeMutClosure(arg0, arg1, 3, __wbg_adapter_36);\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbindgen_closure_wrapper9150 = function(arg0, arg1, arg2) {\n        const ret = makeMutClosure(arg0, arg1, 3, __wbg_adapter_36);\n        return addHeapObject(ret);\n    };\n    imports.wbg.__wbindgen_closure_wrapper9151 = function(arg0, arg1, arg2) {\n        const ret = makeMutClosure(arg0, arg1, 3, __wbg_adapter_36);\n        return addHeapObject(ret);\n    };\n    imports['./snippets/wasm_thread-8ee53d0673203880/src/wasm32/js/module_workers_polyfill.min.js'] = __wbg_star0;\n\n    return imports;\n}\n\nfunction __wbg_init_memory(imports, memory) {\n    imports.wbg.memory = memory || new WebAssembly.Memory({initial:210,maximum:65536,shared:true});\n}\n\nfunction __wbg_finalize_init(instance, module, thread_stack_size) {\n    wasm = instance.exports;\n    __wbg_init.__wbindgen_wasm_module = module;\n    cachedDataViewMemory0 = null;\n    cachedUint32ArrayMemory0 = null;\n    cachedUint8ArrayMemory0 = null;\n\nif (typeof thread_stack_size !== 'undefined' && (typeof thread_stack_size !== 'number' || thread_stack_size === 0 || thread_stack_size % 65536 !== 0)) { throw 'invalid stack size' }\nwasm.__wbindgen_start(thread_stack_size);\nreturn wasm;\n}\n\nfunction initSync(module, memory) {\n    if (wasm !== undefined) return wasm;\n\n    let thread_stack_size\n    if (typeof module !== 'undefined' && Object.getPrototypeOf(module) === Object.prototype)\n    ({module, memory, thread_stack_size} = module)\n    else\n    console.warn('using deprecated parameters for `initSync()`; pass a single object instead')\n\n    const imports = __wbg_get_imports();\n\n    __wbg_init_memory(imports, memory);\n\n    if (!(module instanceof WebAssembly.Module)) {\n        module = new WebAssembly.Module(module);\n    }\n\n    const instance = new WebAssembly.Instance(module, imports);\n\n    return __wbg_finalize_init(instance, module, thread_stack_size);\n}\n\nasync function __wbg_init(module_or_path, memory) {\n    if (wasm !== undefined) return wasm;\n\n    let thread_stack_size\n    if (typeof module_or_path !== 'undefined' && Object.getPrototypeOf(module_or_path) === Object.prototype)\n    ({module_or_path, memory, thread_stack_size} = module_or_path)\n    else\n    console.warn('using deprecated parameters for the initialization function; pass a single object instead')\n\n    if (typeof module_or_path === 'undefined') {\n        module_or_path = new URL('web-36409e0eedf7bbdd_bg.wasm', import.meta.url);\n    }\n    const imports = __wbg_get_imports();\n\n    if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) {\n        module_or_path = fetch(module_or_path);\n    }\n\n    __wbg_init_memory(imports, memory);\n\n    const { instance, module } = await __wbg_load(await module_or_path, imports);\n\n    return __wbg_finalize_init(instance, module, thread_stack_size);\n}\n\nexport { initSync };\nexport default __wbg_init;\n"
  }
]