@mateuszjs/magic-render 0.1.0-next.20 → 0.1.0-next.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/index.mjs +1 -1
- package/lib/index.mjs.map +1 -1
- package/lib/types/src/WebGPU/generatePreview.d.ts +2 -0
- package/lib/types/src/WebGPU/generatePreview.d.ts.map +1 -0
- package/lib/types/src/index.d.ts +1 -1
- package/lib/types/src/index.d.ts.map +1 -1
- package/lib/types/src/run.d.ts +4 -1
- package/lib/types/src/run.d.ts.map +1 -1
- package/lib/types/src/utils/debounce.d.ts +2 -0
- package/lib/types/src/utils/debounce.d.ts.map +1 -0
- package/package.json +1 -1
package/lib/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","mappings":"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AAK,CAAC,EAAGC,EAAK,CAAC,EACvFC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EACjGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EACjGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EACjGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EACjGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EACjGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EACjGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EACjGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EACjGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EACjGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAC3GC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAC3GC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAC3GC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAC3GC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAC3GC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAC3GC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAC3GC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAC3GC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAC3GC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAC3GC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAG/DC,GAAK,CAAC,EAAGC,GAAK,CAAC,EAAGC,GAAK,CAAC,EAAGC,GAAK,CAAC,EAAGC,GAAK,CAAC,EAAGC,GAAK,CAAC,EAAGC,GAAK,CAAC,EAAGC,GAAK,CAAC,EAAGC,GAAK,CAAC,EAAGC,GAAK,CAAC,EACvFC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EACjGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EACjGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EACjGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EACjGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EACjGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EACjGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EACjGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EACjGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EACjGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAC3GC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAC3GC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAC3GC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAC3GC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAC3GC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAC3GC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAC3GC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,E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","sources":["webpack://@mateuszjs/magic-render/webpack/runtime/async module","webpack://@mateuszjs/magic-render/./node_modules/svg-parser/dist/svg-parser.esm.js","webpack://@mateuszjs/magic-render/./src/WebGPU/canvasSizeObserver.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/getDevice.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/getTexture/index.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/pick.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/pointer.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/programs/drawTriangle/getProgram.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/programs/blur/getProgram.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/programs/drawTexture/getProgram.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/programs/pickTexture/getProgram.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/programs/pickTriangle/getProgram.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/programs/drawMSDF/getProgram.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/programs/initPrograms.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/programs/drawBezier/getProgram.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/programs/draw3dModelTexture/getProgram.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/programs/draw3dModel/getProgram.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/programs/draw3dModelLight/getProgram.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/programs/drawShape/getProgram.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/textureCache.ts","webpack://@mateuszjs/magic-render/./src/getCanvasMatrix.ts","webpack://@mateuszjs/magic-render/./src/getDepthTexture.ts","webpack://@mateuszjs/magic-render/./src/getCanvasRenderDescriptor.ts","webpack://@mateuszjs/magic-render/./src/getMultisampleTexture.ts","webpack://@mateuszjs/magic-render/./src/index.ts","webpack://@mateuszjs/magic-render/./src/loadingTexture.ts","webpack://@mateuszjs/magic-render/./src/run.ts","webpack://@mateuszjs/magic-render/./src/shapes/const.ts","webpack://@mateuszjs/magic-render/./src/shapes/createShape.ts","webpack://@mateuszjs/magic-render/./src/shapes/parseColor.ts","webpack://@mateuszjs/magic-render/./src/shapes/parseEllipse.ts","webpack://@mateuszjs/magic-render/./src/shapes/parsePathData.ts","webpack://@mateuszjs/magic-render/./src/shapes/parseRect.ts","webpack://@mateuszjs/magic-render/./src/textures.ts","webpack://@mateuszjs/magic-render/./src/utils/clamp.ts","webpack://@mateuszjs/magic-render/./src/utils/getDefaultPoints.ts","webpack://@mateuszjs/magic-render/./src/utils/vec3.ts","webpack://@mateuszjs/magic-render/./src/utils/mat4.ts","webpack://@mateuszjs/magic-render/./src/logic/index.zig","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/accessors/all.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/accessors/bool.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/accessors/int.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/accessors/uint.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/constants.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/environment.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/errors.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/features/allocator-methods.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/features/baseline.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/features/call-marshaling-inbound.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/features/call-marshaling-outbound.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/features/data-copying.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/features/int-conversion.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/features/js-allocator.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/features/memory-mapping.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/features/module-loading.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/features/object-linkage.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/features/pointer-synchronization.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/features/thunk-allocation.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/features/view-management.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/features/write-protection.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/index.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/iterators/for-array.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/iterators/for-struct.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/members/all.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/members/base64.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/members/bool.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/members/clamped-array.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/members/data-view.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/members/float.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/members/object.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/members/primitive.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/members/string.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/members/to-json.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/members/type.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/members/typed-array.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/members/uint.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/members/value-of.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/members/void.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/structures/all.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/structures/arg-struct.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/structures/array-like.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/structures/array.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/structures/enum.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/structures/error-set.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/structures/error-union.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/structures/function.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/structures/optional.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/structures/pointer.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/structures/primitive.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/structures/slice.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/structures/struct-like.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/structures/struct.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/symbols.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/utils.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/visitors/all.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/visitors/in-arg-struct.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/visitors/in-array.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/visitors/in-optional.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/visitors/in-struct.js","webpack://@mateuszjs/magic-render/webpack/bootstrap","webpack://@mateuszjs/magic-render/webpack/runtime/define property getters","webpack://@mateuszjs/magic-render/webpack/runtime/hasOwnProperty shorthand","webpack://@mateuszjs/magic-render/webpack/runtime/publicPath","webpack://@mateuszjs/magic-render/webpack/startup"],"sourcesContent":["var webpackQueues = typeof Symbol === \"function\" ? Symbol(\"webpack queues\") : \"__webpack_queues__\";\nvar webpackExports = typeof Symbol === \"function\" ? Symbol(\"webpack exports\") : \"__webpack_exports__\";\nvar webpackError = typeof Symbol === \"function\" ? Symbol(\"webpack error\") : \"__webpack_error__\";\nvar resolveQueue = (queue) => {\n\tif(queue && queue.d < 1) {\n\t\tqueue.d = 1;\n\t\tqueue.forEach((fn) => (fn.r--));\n\t\tqueue.forEach((fn) => (fn.r-- ? fn.r++ : fn()));\n\t}\n}\nvar wrapDeps = (deps) => (deps.map((dep) => {\n\tif(dep !== null && typeof dep === \"object\") {\n\t\tif(dep[webpackQueues]) return dep;\n\t\tif(dep.then) {\n\t\t\tvar queue = [];\n\t\t\tqueue.d = 0;\n\t\t\tdep.then((r) => {\n\t\t\t\tobj[webpackExports] = r;\n\t\t\t\tresolveQueue(queue);\n\t\t\t}, (e) => {\n\t\t\t\tobj[webpackError] = e;\n\t\t\t\tresolveQueue(queue);\n\t\t\t});\n\t\t\tvar obj = {};\n\t\t\tobj[webpackQueues] = (fn) => (fn(queue));\n\t\t\treturn obj;\n\t\t}\n\t}\n\tvar ret = {};\n\tret[webpackQueues] = x => {};\n\tret[webpackExports] = dep;\n\treturn ret;\n}));\n__webpack_require__.a = (module, body, hasAwait) => {\n\tvar queue;\n\thasAwait && ((queue = []).d = -1);\n\tvar depQueues = new Set();\n\tvar exports = module.exports;\n\tvar currentDeps;\n\tvar outerResolve;\n\tvar reject;\n\tvar promise = new Promise((resolve, rej) => {\n\t\treject = rej;\n\t\touterResolve = resolve;\n\t});\n\tpromise[webpackExports] = exports;\n\tpromise[webpackQueues] = (fn) => (queue && fn(queue), depQueues.forEach(fn), promise[\"catch\"](x => {}));\n\tmodule.exports = promise;\n\tbody((deps) => {\n\t\tcurrentDeps = wrapDeps(deps);\n\t\tvar fn;\n\t\tvar getResult = () => (currentDeps.map((d) => {\n\t\t\tif(d[webpackError]) throw d[webpackError];\n\t\t\treturn d[webpackExports];\n\t\t}))\n\t\tvar promise = new Promise((resolve) => {\n\t\t\tfn = () => (resolve(getResult));\n\t\t\tfn.r = 0;\n\t\t\tvar fnQueue = (q) => (q !== queue && !depQueues.has(q) && (depQueues.add(q), q && !q.d && (fn.r++, q.push(fn))));\n\t\t\tcurrentDeps.map((dep) => (dep[webpackQueues](fnQueue)));\n\t\t});\n\t\treturn fn.r ? promise : getResult();\n\t}, (err) => ((err ? reject(promise[webpackError] = err) : outerResolve(exports)), resolveQueue(queue)));\n\tqueue && queue.d < 0 && (queue.d = 0);\n};","function getLocator(source, options) {\n if (options === void 0) { options = {}; }\n var offsetLine = options.offsetLine || 0;\n var offsetColumn = options.offsetColumn || 0;\n var originalLines = source.split('\\n');\n var start = 0;\n var lineRanges = originalLines.map(function (line, i) {\n var end = start + line.length + 1;\n var range = { start: start, end: end, line: i };\n start = end;\n return range;\n });\n var i = 0;\n function rangeContains(range, index) {\n return range.start <= index && index < range.end;\n }\n function getLocation(range, index) {\n return { line: offsetLine + range.line, column: offsetColumn + index - range.start, character: index };\n }\n function locate(search, startIndex) {\n if (typeof search === 'string') {\n search = source.indexOf(search, startIndex || 0);\n }\n var range = lineRanges[i];\n var d = search >= range.end ? 1 : -1;\n while (range) {\n if (rangeContains(range, search))\n return getLocation(range, search);\n i += d;\n range = lineRanges[i];\n }\n }\n return locate;\n}\nfunction locate(source, search, options) {\n if (typeof options === 'number') {\n throw new Error('locate takes a { startIndex, offsetLine, offsetColumn } object as the third argument');\n }\n return getLocator(source, options)(search, options && options.startIndex);\n}\n\nvar validNameCharacters = /[a-zA-Z0-9:_-]/;\nvar whitespace = /[\\s\\t\\r\\n]/;\nvar quotemark = /['\"]/;\n\nfunction repeat(str, i) {\n\tvar result = '';\n\twhile (i--) { result += str; }\n\treturn result;\n}\n\nfunction parse(source) {\n\tvar header = '';\n\tvar stack = [];\n\n\tvar state = metadata;\n\tvar currentElement = null;\n\tvar root = null;\n\n\tfunction error(message) {\n\t\tvar ref = locate(source, i);\n\t\tvar line = ref.line;\n\t\tvar column = ref.column;\n\t\tvar before = source.slice(0, i);\n\t\tvar beforeLine = /(^|\\n).*$/.exec(before)[0].replace(/\\t/g, ' ');\n\t\tvar after = source.slice(i);\n\t\tvar afterLine = /.*(\\n|$)/.exec(after)[0];\n\n\t\tvar snippet = \"\" + beforeLine + afterLine + \"\\n\" + (repeat(' ', beforeLine.length)) + \"^\";\n\n\t\tthrow new Error(\n\t\t\t(message + \" (\" + line + \":\" + column + \"). If this is valid SVG, it's probably a bug in svg-parser. Please raise an issue at https://github.com/Rich-Harris/svg-parser/issues – thanks!\\n\\n\" + snippet)\n\t\t);\n\t}\n\n\tfunction metadata() {\n\t\twhile ((i < source.length && source[i] !== '<') || !validNameCharacters.test(source[i + 1])) {\n\t\t\theader += source[i++];\n\t\t}\n\n\t\treturn neutral();\n\t}\n\n\tfunction neutral() {\n\t\tvar text = '';\n\t\twhile (i < source.length && source[i] !== '<') { text += source[i++]; }\n\n\t\tif (/\\S/.test(text)) {\n\t\t\tcurrentElement.children.push({ type: 'text', value: text });\n\t\t}\n\n\t\tif (source[i] === '<') {\n\t\t\treturn tag;\n\t\t}\n\n\t\treturn neutral;\n\t}\n\n\tfunction tag() {\n\t\tvar char = source[i];\n\n\t\tif (char === '?') { return neutral; } // <?xml...\n\n\t\tif (char === '!') {\n\t\t\tif (source.slice(i + 1, i + 3) === '--') { return comment; }\n\t\t\tif (source.slice(i + 1, i + 8) === '[CDATA[') { return cdata; }\n\t\t\tif (/doctype/i.test(source.slice(i + 1, i + 8))) { return neutral; }\n\t\t}\n\n\t\tif (char === '/') { return closingTag; }\n\n\t\tvar tagName = getName();\n\n\t\tvar element = {\n\t\t\ttype: 'element',\n\t\t\ttagName: tagName,\n\t\t\tproperties: {},\n\t\t\tchildren: []\n\t\t};\n\n\t\tif (currentElement) {\n\t\t\tcurrentElement.children.push(element);\n\t\t} else {\n\t\t\troot = element;\n\t\t}\n\n\t\tvar attribute;\n\t\twhile (i < source.length && (attribute = getAttribute())) {\n\t\t\telement.properties[attribute.name] = attribute.value;\n\t\t}\n\n\t\tvar selfClosing = false;\n\n\t\tif (source[i] === '/') {\n\t\t\ti += 1;\n\t\t\tselfClosing = true;\n\t\t}\n\n\t\tif (source[i] !== '>') {\n\t\t\terror('Expected >');\n\t\t}\n\n\t\tif (!selfClosing) {\n\t\t\tcurrentElement = element;\n\t\t\tstack.push(element);\n\t\t}\n\n\t\treturn neutral;\n\t}\n\n\tfunction comment() {\n\t\tvar index = source.indexOf('-->', i);\n\t\tif (!~index) { error('expected -->'); }\n\n\t\ti = index + 2;\n\t\treturn neutral;\n\t}\n\n\tfunction cdata() {\n\t\tvar index = source.indexOf(']]>', i);\n\t\tif (!~index) { error('expected ]]>'); }\n\n\t\tcurrentElement.children.push(source.slice(i + 7, index));\n\n\t\ti = index + 2;\n\t\treturn neutral;\n\t}\n\n\tfunction closingTag() {\n\t\tvar tagName = getName();\n\n\t\tif (!tagName) { error('Expected tag name'); }\n\n\t\tif (tagName !== currentElement.tagName) {\n\t\t\terror((\"Expected closing tag </\" + tagName + \"> to match opening tag <\" + (currentElement.tagName) + \">\"));\n\t\t}\n\n\t\tallowSpaces();\n\n\t\tif (source[i] !== '>') {\n\t\t\terror('Expected >');\n\t\t}\n\n\t\tstack.pop();\n\t\tcurrentElement = stack[stack.length - 1];\n\n\t\treturn neutral;\n\t}\n\n\tfunction getName() {\n\t\tvar name = '';\n\t\twhile (i < source.length && validNameCharacters.test(source[i])) { name += source[i++]; }\n\n\t\treturn name;\n\t}\n\n\tfunction getAttribute() {\n\t\tif (!whitespace.test(source[i])) { return null; }\n\t\tallowSpaces();\n\n\t\tvar name = getName();\n\t\tif (!name) { return null; }\n\n\t\tvar value = true;\n\n\t\tallowSpaces();\n\t\tif (source[i] === '=') {\n\t\t\ti += 1;\n\t\t\tallowSpaces();\n\n\t\t\tvalue = getAttributeValue();\n\t\t\tif (!isNaN(value) && value.trim() !== '') { value = +value; } // TODO whitelist numeric attributes?\n\t\t}\n\n\t\treturn { name: name, value: value };\n\t}\n\n\tfunction getAttributeValue() {\n\t\treturn quotemark.test(source[i]) ? getQuotedAttributeValue() : getUnquotedAttributeValue();\n\t}\n\n\tfunction getUnquotedAttributeValue() {\n\t\tvar value = '';\n\t\tdo {\n\t\t\tvar char = source[i];\n\t\t\tif (char === ' ' || char === '>' || char === '/') {\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t\tvalue += char;\n\t\t\ti += 1;\n\t\t} while (i < source.length);\n\n\t\treturn value;\n\t}\n\n\tfunction getQuotedAttributeValue() {\n\t\tvar quotemark = source[i++];\n\n\t\tvar value = '';\n\t\tvar escaped = false;\n\n\t\twhile (i < source.length) {\n\t\t\tvar char = source[i++];\n\t\t\tif (char === quotemark && !escaped) {\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t\tif (char === '\\\\' && !escaped) {\n\t\t\t\tescaped = true;\n\t\t\t}\n\n\t\t\tvalue += escaped ? (\"\\\\\" + char) : char;\n\t\t\tescaped = false;\n\t\t}\n\t}\n\n\tfunction allowSpaces() {\n\t\twhile (i < source.length && whitespace.test(source[i])) { i += 1; }\n\t}\n\n\tvar i = metadata.length;\n\twhile (i < source.length) {\n\t\tif (!state) { error('Unexpected character'); }\n\t\tstate = state();\n\t\ti += 1;\n\t}\n\n\tif (state !== neutral) {\n\t\terror('Unexpected end of input');\n\t}\n\n\tif (root.tagName === 'svg') { root.metadata = header; }\n\treturn {\n\t\ttype: 'root',\n\t\tchildren: [root]\n\t};\n}\n\nexport { parse };\n//# sourceMappingURL=svg-parser.esm.js.map\n","function updateCanvasSize(\n canvas: HTMLCanvasElement,\n width: number,\n height: number,\n device: GPUDevice\n) {\n canvas.width = Math.max(1, Math.min(width, device.limits.maxTextureDimension2D))\n canvas.height = Math.max(1, Math.min(height, device.limits.maxTextureDimension2D))\n}\n\nexport default function canvasSizeObserver(\n canvas: HTMLCanvasElement,\n device: GPUDevice,\n callback: VoidFunction\n) {\n // TODO: should we also handle window.devicePixelRatio; ?\n const observer = new ResizeObserver((entries) => {\n for (const entry of entries) {\n const canvas = entry.target as HTMLCanvasElement\n // Safari does not support devicePixelContentBoxSize\n const width =\n entry.devicePixelContentBoxSize?.[0].inlineSize ??\n entry.contentBoxSize[0].inlineSize * devicePixelRatio\n const height =\n entry.devicePixelContentBoxSize?.[0].blockSize ??\n entry.contentBoxSize[0].blockSize * devicePixelRatio\n\n updateCanvasSize(canvas, width, height, device)\n callback()\n }\n })\n\n try {\n observer.observe(canvas, { box: 'device-pixel-content-box' })\n } catch {\n observer.observe(canvas, { box: 'content-box' })\n }\n\n // observer calls it anyway but it just happens late enough that user see a flicker\n // it it just displayed for a brief second, so we don't play with devicePixelContentBoxSize or devicePixelRatio\n updateCanvasSize(canvas, canvas.clientWidth, canvas.clientHeight, device)\n}\n","export default async function getDevice() {\n if (!navigator.gpu) {\n throw Error(\"this browser does not support WebGPU\")\n }\n\n const adapter = await navigator.gpu.requestAdapter()\n \n\n if (!adapter) {\n throw Error(\"this browser supports webgpu but it appears disabled\")\n }\n\n const device = await adapter.requestDevice()\n device.lost.then((info) => {\n console.error(`WebGPU device was lost: ${info.message}`)\n\n if (info.reason !== \"destroyed\") {\n // reprot issue to the tracking system\n // getDevice(callback);\n }\n })\n\n return device\n}","import createCheckedImageData from './createCheckedImageData'\nimport generateMipmapsArray from './generateMimapsArray'\n\ninterface Options {\n mips?: boolean\n flipY?: boolean\n depthOrArrayLayers?: number\n}\n\ntype TextureSource =\n | ImageBitmap\n | HTMLVideoElement\n | HTMLCanvasElement\n | HTMLImageElement\n | OffscreenCanvas\n\nconst numMipLevels = (...sizes: number[]) => {\n const maxSize = Math.max(...sizes)\n return (1 + Math.log2(maxSize)) | 0\n}\n\nexport interface TextureSlice {\n source: GPUCopyExternalImageSource\n fakeMipmaps: boolean\n}\n\nfunction createCheckedMipmap(levels: Array<{ size: number; color: string }>) {\n const ctx = new OffscreenCanvas(0, 0).getContext('2d', { willReadFrequently: true })!\n\n return levels.map(({ size, color }, i) => {\n ctx.canvas.width = size\n ctx.canvas.height = size\n ctx.fillStyle = i & 1 ? '#000' : '#fff'\n ctx.fillRect(0, 0, size, size)\n ctx.fillStyle = color\n ctx.fillRect(0, 0, size / 2, size / 2)\n ctx.fillRect(size / 2, size / 2, size / 2, size / 2)\n\n ctx.fillStyle = i & 1 ? '#FFFFFF' : '#000000'\n ctx.font = `${size * 0.3}px serif`\n ctx.textAlign = 'center'\n ctx.textBaseline = 'middle'\n ;[\n { x: 0.25, y: 0.25 },\n { x: 0.25, y: 0.75 },\n { x: 0.75, y: 0.75 },\n { x: 0.75, y: 0.25 },\n ].forEach((p) => {\n ctx.fillText(i.toString(), p.x * size, p.y * size)\n })\n\n return ctx.getImageData(0, 0, size, size)\n })\n}\n\nexport function createTextureArray(\n device: GPUDevice,\n width: number,\n height: number,\n slices: number\n) {\n return device.createTexture({\n label: '2d array texture',\n format: 'rgba8unorm',\n mipLevelCount: 1 + Math.log2(2048),\n size: [width, height, slices],\n usage:\n GPUTextureUsage.TEXTURE_BINDING |\n GPUTextureUsage.COPY_DST |\n GPUTextureUsage.RENDER_ATTACHMENT,\n })\n}\n\n// adds texture ot texture array\nexport function attachSlice(\n device: GPUDevice,\n textue2dArray: GPUTexture,\n width: number,\n height: number,\n source: GPUCopyExternalImageSource,\n sliceIndex: number,\n options: Options = {}\n) {\n device.queue.copyExternalImageToTexture(\n { source },\n { texture: textue2dArray, origin: { z: sliceIndex }, mipLevel: 0 },\n { width, height }\n )\n\n // if (texSlice.fakeMipmaps) {\n // let mipLevel = 1, size = width\n // while ((size >>= 1) >= 1) {\n // const { data, width, height} = createCheckedImageData(size, mipLevel)\n // device.queue.writeTexture(\n // { texture: textue2dArray, origin: { z: sliceIndex }, mipLevel },\n // data,\n // { bytesPerRow: width * 4 },\n // { width, height },\n // );\n // mipLevel++\n // }\n // } else {\n // generateMipmapsArray(device, textue2dArray, {\n // baseArrayLayer: sliceIndex,\n // arrayLayerCount: 1,\n // });\n // }\n}\n\nexport function createTextureFromSource(\n device: GPUDevice,\n source: TextureSource,\n options: Options = {}\n) {\n const texture = device.createTexture({\n format: 'rgba8unorm',\n mipLevelCount: options.mips ? numMipLevels(source.width, source.height) : 1,\n size: [source.width, source.height],\n usage:\n GPUTextureUsage.TEXTURE_BINDING |\n GPUTextureUsage.COPY_DST |\n GPUTextureUsage.RENDER_ATTACHMENT,\n })\n copySourceToTexture(device, texture, source, options)\n return texture\n}\n\nfunction copySourceToTexture(\n device: GPUDevice,\n texture: GPUTexture,\n source: TextureSource,\n { flipY, depthOrArrayLayers }: Options = {}\n) {\n device.queue.copyExternalImageToTexture(\n { source, flipY },\n {\n texture,\n // premultipliedAlpha: true\n },\n { width: source.width, height: source.height, depthOrArrayLayers }\n )\n\n // if (texture.mipLevelCount > 1) {\n // generateMipmaps(device, texture);\n // }\n}\n\nexport async function loadImageBitmap(url: string) {\n const res = await fetch(url)\n const blob = await res.blob()\n return await createImageBitmap(blob, {\n colorSpaceConversion: 'none',\n premultiplyAlpha: 'premultiply',\n })\n}\n\nexport async function createTextureFromImage(device: GPUDevice, url: string, options: Options) {\n const imgBitmap = await loadImageBitmap(url)\n return createTextureFromSource(device, imgBitmap, options)\n}\n","import mat4 from 'utils/mat4'\nimport { pointer } from './pointer'\nimport { on_update_pick } from '../logic/index.zig'\n\nconst NUM_PIXELS = 1\n\nexport default class PickManager {\n private pickBuffer: GPUBuffer\n private pickTexture: GPUTexture\n private pickDepthTexture: GPUTexture\n private isPreviousPickDone = true\n\n constructor(device: GPUDevice) {\n this.pickBuffer = device.createBuffer({\n size: NUM_PIXELS * 4,\n usage: GPUBufferUsage.MAP_READ | GPUBufferUsage.COPY_DST,\n })\n\n this.pickTexture = device.createTexture({\n size: [1, 1],\n format: 'r32uint',\n usage: GPUTextureUsage.COPY_SRC | GPUTextureUsage.RENDER_ATTACHMENT,\n })\n\n this.pickDepthTexture = device.createTexture({\n size: [1, 1],\n format: 'depth24plus',\n usage: GPUTextureUsage.RENDER_ATTACHMENT,\n })\n }\n\n /**\n * Starts a picking render pass.\n * @param encoder The GPUCommandEncoder to use for the render pass.\n * @returns An object which contains render pass and a callback to end picking.\n */\n startPicking(encoder: GPUCommandEncoder): { pass: GPURenderPassEncoder; end: VoidFunction } {\n const descriptor: GPURenderPassDescriptor = {\n // describe which textures we want to raw to and how use them\n label: 'our render to canvas renderPass',\n colorAttachments: [\n {\n view: this.pickTexture.createView(),\n loadOp: 'clear',\n clearValue: [0, 0, 0, 1],\n storeOp: 'store',\n } as const,\n ],\n // depthStencilAttachment: {\n // view: this.pickDepthTexture.createView(), // placholder to calm down TS\n // depthLoadOp: 'clear',\n // depthClearValue: 1.0,\n // depthStoreOp: 'discard',\n // } as const,\n }\n\n const pass = encoder.beginRenderPass(descriptor)\n\n const width = 1\n const height = 1\n pass.setViewport(0, 0, width, height, 0, 1)\n // Set the scissor rectangle to clip rendering to the 1x1 area\n pass.setScissorRect(0, 0, width, height)\n\n const endPicking = () => {\n pass.end()\n\n if (this.isPreviousPickDone) {\n encoder.copyTextureToBuffer(\n {\n texture: this.pickTexture,\n origin: { x: 0, y: 0 },\n },\n {\n buffer: this.pickBuffer,\n },\n {\n width: NUM_PIXELS,\n }\n )\n }\n }\n\n return { pass, end: endPicking }\n }\n\n createMatrix(canvas: HTMLCanvasElement, canvasMatrix: Float32Array) {\n const tx = -(2 * (pointer.x / canvas.width) - 1)\n const ty = 2 * (pointer.y / canvas.height) - 1\n\n const pickMatrix = [\n mat4.scaling([canvas.width, canvas.height, 0]), // scale to 1px convers whole shader output\n mat4.translation([tx, ty, 0]),\n canvasMatrix,\n ].reduce(\n (accMatrix, rotationMatrix) => mat4.multiply(accMatrix, rotationMatrix),\n mat4.translation([-1, 1, 0]) // move (0,0) to the top left corner\n )\n\n return pickMatrix\n }\n\n async asyncPick() {\n if (!this.isPreviousPickDone) return\n this.isPreviousPickDone = false\n try {\n await this.pickBuffer.mapAsync(GPUMapMode.READ, 0, 4 * NUM_PIXELS)\n const [id] = new Uint32Array(this.pickBuffer.getMappedRange(0, 4 * NUM_PIXELS))\n on_update_pick(id)\n\n let i = 0\n while (i < pointer.afterPickEventsQueue.length) {\n // this is pretty stupid, because pointer.x, pointer.y were updated immediately\n // without waiting for this place right here\n const { requireNewPick, cb } = pointer.afterPickEventsQueue[i]\n if (requireNewPick && i > 0) break // we need to start new picking pass\n cb()\n i++\n }\n pointer.afterPickEventsQueue.splice(0, i) // remove processed events\n\n this.pickBuffer.unmap()\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (err) {\n /* ignorign errors when map fails because device was destroyed(so buffer too and was unmapped before mapAsync completed)*/\n }\n this.isPreviousPickDone = true\n }\n}\n","import * as Logic from '../logic/index.zig'\nimport clamp from '../utils/clamp'\n\nconst OUTSIDE_CANVAS = -1\n\nenum MouseMode {\n Pan,\n Zoom,\n None,\n}\n\nlet mouseMode = MouseMode.None\nlet panCameraStart: Point | null = null\n\nexport const camera = {\n x: 0,\n y: 0,\n zoom: 1,\n}\n\nexport const pointer = {\n x: 0,\n y: 0,\n afterPickEventsQueue: [] as Array<{ requireNewPick: boolean; cb: VoidFunction }>,\n /* this queue exists because wen mobiel device is touched we have to:\n 1) update pointer,\n 2) do picking,\n 3) record a click in order,\n so click has to wait after pick is done */\n}\n\nexport default function initMouseController(\n canvas: HTMLCanvasElement,\n onZoom: VoidFunction,\n onStartProcessing: VoidFunction\n) {\n pointer.x = OUTSIDE_CANVAS\n pointer.y = OUTSIDE_CANVAS\n\n function getZigAbsolutePointer(): [number, number] {\n return [\n (pointer.x - camera.x) / camera.zoom,\n (canvas.height - pointer.y - camera.y) / camera.zoom,\n ]\n }\n\n function updatePointer(e: MouseEvent) {\n const rect = canvas.getBoundingClientRect()\n const scale = canvas.width / rect.width\n pointer.x = (e.clientX - rect.left) * scale\n pointer.y = (e.clientY - rect.top) * scale\n }\n\n canvas.addEventListener('mouseleave', () => {\n onStartProcessing()\n canvas.style.cursor = 'default'\n\n const update = () => {\n pointer.x = OUTSIDE_CANVAS\n pointer.y = OUTSIDE_CANVAS\n Logic.on_pointer_leave()\n }\n if (pointer.afterPickEventsQueue.length > 0) {\n pointer.afterPickEventsQueue.push({\n requireNewPick: false,\n cb: update,\n })\n } else {\n update()\n }\n })\n\n canvas.addEventListener('mousemove', (e) => {\n if (panCameraStart) {\n updatePointer(e)\n\n camera.x = pointer.x - panCameraStart.x\n camera.y = -(pointer.y - panCameraStart.y)\n return\n }\n\n onStartProcessing()\n\n const move = () => {\n updatePointer(e)\n Logic.on_pointer_move(...getZigAbsolutePointer())\n }\n if (pointer.afterPickEventsQueue.length > 0) {\n pointer.afterPickEventsQueue.push({\n requireNewPick: false,\n cb: move,\n })\n } else {\n move()\n }\n })\n\n canvas.addEventListener('mousedown', (e) => {\n if (mouseMode === MouseMode.Pan) {\n updatePointer(e)\n panCameraStart = {\n x: pointer.x - camera.x,\n y: pointer.y + camera.y,\n }\n canvas.style.cursor = 'grabbing'\n return\n }\n panCameraStart = null\n\n onStartProcessing()\n\n updatePointer(e)\n pointer.afterPickEventsQueue.push({\n requireNewPick: true,\n cb: Logic.on_pointer_down.bind(null, ...getZigAbsolutePointer()),\n })\n })\n\n canvas.addEventListener('mouseup', () => {\n mouseMode = MouseMode.None\n panCameraStart = null\n canvas.style.cursor = 'default'\n\n onStartProcessing()\n\n if (pointer.afterPickEventsQueue.length > 0) {\n pointer.afterPickEventsQueue.push({\n requireNewPick: false,\n cb: Logic.on_pointer_up,\n })\n } else {\n Logic.on_pointer_up()\n }\n })\n\n /* zoom functionality shared between wheel and keyboard */\n function performZoom(zoomDelta: number, centerX: number, centerY: number) {\n const oldZoom = camera.zoom\n camera.zoom = clamp(camera.zoom + zoomDelta, 0.1, 20)\n onZoom()\n\n const zoomFactor = camera.zoom / oldZoom\n\n camera.x = centerX - (centerX - camera.x) * zoomFactor\n const realY = canvas.height - centerY\n camera.y = realY - (realY - camera.y) * zoomFactor\n }\n\n function zoom(delta: number) {\n const oldZoom = camera.zoom\n camera.zoom = clamp(camera.zoom - delta * 0.005, 0.1, 20)\n onZoom()\n const zoomFactor = camera.zoom / oldZoom\n camera.x = pointer.x - (pointer.x - camera.x) * zoomFactor\n const realY = canvas.height - pointer.y\n camera.y = realY - (realY - camera.y) * zoomFactor\n }\n\n /* panning , supports both scroll and touch, expect Safari */\n canvas.addEventListener('wheel', (event) => {\n updatePointer(event)\n event.preventDefault()\n if (mouseMode === MouseMode.Zoom) {\n const delta = Math.abs(event.deltaY) > Math.abs(event.deltaX) ? event.deltaY : -event.deltaX\n zoom(delta)\n } else {\n if (event.ctrlKey) {\n zoom(event.deltaY * camera.zoom)\n } else {\n camera.x -= event.deltaX\n camera.y += event.deltaY\n }\n }\n })\n // pointer.zoom = clamp(pointer.zoom + event.deltaY * 0.01, 0.1, 100)\n\n document.body.addEventListener('keydown', (event) => {\n switch (event.code) {\n case 'Space':\n event.preventDefault()\n if (mouseMode !== MouseMode.Pan) {\n canvas.style.cursor = 'grab'\n mouseMode = MouseMode.Pan\n }\n break\n case 'AltLeft':\n case 'AltRight':\n event.preventDefault()\n mouseMode = MouseMode.Zoom\n break\n case 'Escape':\n event.preventDefault()\n Logic.commit_changes()\n break\n case '=':\n case '+':\n // Zoom in with Ctrl/Cmd + Plus\n if (event.ctrlKey || event.metaKey) {\n event.preventDefault()\n const centerX = pointer.x !== OUTSIDE_CANVAS ? pointer.x : canvas.width / 2\n const centerY = pointer.y !== OUTSIDE_CANVAS ? pointer.y : canvas.height / 2\n performZoom(0.1, centerX, centerY)\n }\n break\n case '-':\n case '_':\n // Zoom out with Ctrl/Cmd/Shift + Minus\n if (event.ctrlKey || event.metaKey || event.shiftKey) {\n event.preventDefault()\n const centerX = pointer.x !== OUTSIDE_CANVAS ? pointer.x : canvas.width / 2\n const centerY = pointer.y !== OUTSIDE_CANVAS ? pointer.y : canvas.height / 2\n performZoom(-0.1, centerX, centerY)\n }\n break\n }\n })\n document.body.addEventListener('keyup', (event) => {\n if (event.code === 'Space' || event.key === 'Alt') {\n mouseMode = MouseMode.None\n }\n if (event.code === 'Space' && panCameraStart === null) {\n canvas.style.cursor = 'default'\n }\n })\n\n // The code below is from mozzila MDN docs, and it's a good base once we can test on mobile\n\n // function updateBackground(ev: TouchEvent) {\n // switch (ev.targetTouches.length) {\n // case 1:\n // console.log('single tap')\n // break\n // case 2:\n // console.log('Two simultaneous touches')\n // break\n // default:\n // console.log('More than two simultaneous touches')\n // }\n // }\n\n // const tpCache: Touch[] = []\n\n // canvas.addEventListener('touchstart', (event) => {\n // // If the user makes simultaneous touches, the browser will fire a\n // // separate touchstart event for each touch point. Thus if there are\n // // three simultaneous touches, the first touchstart event will have\n // // targetTouches length of one, the second event will have a length\n // // of two, and so on.\n // console.log(event.targetTouches.length)\n // event.preventDefault()\n // // Cache the touch points for later processing of 2-touch pinch/zoom\n // if (event.targetTouches.length === 2) {\n // for (const touch of event.targetTouches) {\n // tpCache.push(touch)\n // }\n // }\n // // if (logEvents) log('touchStart', event, true)\n // updateBackground(event)\n // })\n\n // canvas.addEventListener('touchmove', (ev) => {\n // // Note: if the user makes more than one \"simultaneous\" touches, most browsers\n // // fire at least one touchmove event and some will fire several touch moves.\n // // Consequently, an application might want to \"ignore\" some touch moves.\n // //\n // // This function sets the target element's border to \"dashed\" to visually\n // // indicate the target received a move event.\n // //\n // ev.preventDefault()\n // // if (logEvents) log('touchMove', ev, false)\n // // To avoid too much color flashing many touchmove events are started,\n // // don't update the background if two touch points are active\n // if (!(ev.touches.length === 2 && ev.targetTouches.length === 2)) updateBackground(ev)\n\n // // Set the target element's border to dashed to give a clear visual\n // // indication the element received a move event.\n // // ev.target.style.border = 'dashed'\n\n // // Check this event for 2-touch Move/Pinch/Zoom gesture\n // handlePinchZoom(ev)\n // })\n\n // function handlePinchZoom(ev: TouchEvent) {\n // if (ev.targetTouches.length === 2 && ev.changedTouches.length === 2) {\n // // Check if the two target touches are the same ones that started\n // // the 2-touch\n // const reverseTpCache = tpCache.slice().reverse()\n // const point1 = reverseTpCache.findIndex(\n // (tp) => tp.identifier === ev.targetTouches[0].identifier\n // )\n // const point2 = reverseTpCache.findIndex(\n // (tp) => tp.identifier === ev.targetTouches[1].identifier\n // )\n\n // if (point1 >= 0 && point2 >= 0) {\n // // Calculate the difference between the start and move coordinates\n // const diff1 = Math.abs(tpCache[point1].clientX - ev.targetTouches[0].clientX)\n // const diff2 = Math.abs(tpCache[point2].clientX - ev.targetTouches[1].clientX)\n\n // // This threshold is device dependent as well as application specific\n // const PINCH_THRESHOLD = (ev.target as HTMLCanvasElement).clientWidth / 10\n // if (diff1 >= PINCH_THRESHOLD && diff2 >= PINCH_THRESHOLD) {\n // // ev.target.style.background = 'green'\n // console.log('Pinch zoom detected')\n // }\n // } else {\n // // empty tpCache\n // tpCache.length = 0\n // }\n // }\n // }\n\n // function endHandler(ev: TouchEvent) {\n // ev.preventDefault()\n // // if (logEvents) log(ev.type, ev, false)\n // if (ev.targetTouches.length === 0) {\n // // Restore background and border to original values\n // // ev.target.style.background = 'white'\n // // ev.target.style.border = '1px solid black'\n // }\n // }\n\n // canvas.addEventListener('touchcancel', endHandler)\n // canvas.addEventListener('touchend', endHandler)\n}\n","import shaderCode from './shader.wgsl'\n\nconst INSTANCE_STRIDE =\n 4 * 3 /* positon */ + 1 /* color */ + 3 /* value of roudned corner for each of three positions */\n\nexport default function getProgram(\n device: GPUDevice,\n presentationFormat: GPUTextureFormat,\n matrixBuffer: GPUBuffer,\n buffersToDestroy: GPUBuffer[]\n) {\n const module = device.createShaderModule({\n label: 'draw triangle module',\n code: shaderCode,\n })\n\n const pipeline = device.createRenderPipeline({\n label: 'draw triangle pipeline',\n layout: 'auto',\n vertex: {\n module,\n entryPoint: 'vs',\n buffers: [\n {\n arrayStride: INSTANCE_STRIDE * 4, // The size in bytes for one instance's data\n stepMode: 'instance',\n attributes: [\n { shaderLocation: 0, offset: 0, format: 'float32x4' }, // position 0\n { shaderLocation: 1, offset: 16, format: 'float32x4' }, // position 1\n { shaderLocation: 2, offset: 16 + 16, format: 'float32x4' }, // position 2\n { shaderLocation: 3, offset: 16 + 16 + 16, format: 'unorm8x4' }, // color 'rgba8unorm'\n { shaderLocation: 4, offset: 16 + 16 + 16 + 4, format: 'float32x3' }, // rounded corner values\n ] as const,\n },\n ],\n },\n fragment: {\n module,\n entryPoint: 'fs',\n targets: [\n {\n format: presentationFormat,\n blend: {\n color: {\n srcFactor: 'one',\n dstFactor: 'one-minus-src-alpha',\n },\n alpha: {\n srcFactor: 'one',\n dstFactor: 'one-minus-src-alpha',\n },\n },\n },\n ],\n },\n multisample: {\n count: 4,\n },\n })\n\n // Cache bind group for this program (no texture needed)\n const cachedBindGroup = device.createBindGroup({\n layout: pipeline.getBindGroupLayout(0),\n entries: [{ binding: 0, resource: { buffer: matrixBuffer } }],\n })\n\n return function drawTriangle(pass: GPURenderPassEncoder, vertexData: DataView) {\n const numInstances = vertexData.byteLength / (4 * INSTANCE_STRIDE)\n\n const vertexBuffer = device.createBuffer({\n label: 'draw triangle - vertex buffer',\n size: vertexData.byteLength,\n usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(vertexBuffer, 0, vertexData)\n buffersToDestroy.push(vertexBuffer)\n\n pass.setPipeline(pipeline)\n pass.setVertexBuffer(0, vertexBuffer)\n pass.setBindGroup(0, cachedBindGroup)\n pass.draw(3, numInstances)\n }\n}\n","import shaderCode from \"./index.wgsl\"\n\nconst tileDim = 128\nconst batch = [4, 4]\n\nexport default function getProgram(device: GPUDevice) {\n const module = device.createShaderModule({\n label: \"blur shader module\",\n code: shaderCode,\n })\n\n const blurPipeline = device.createComputePipeline({\n layout: 'auto',\n compute: {\n module,\n entryPoint: 'main',\n },\n })\n\n return function renderBlur(\n texture: GPUTexture,\n commandEncoder: GPUCommandEncoder,\n ): GPUTexture {\n \n const textures = [0, 1].map(() => {\n return device.createTexture({\n size: {\n width: texture.width,\n height: texture.height,\n },\n format: 'rgba8unorm',\n usage:\n GPUTextureUsage.COPY_DST |\n GPUTextureUsage.STORAGE_BINDING |\n GPUTextureUsage.TEXTURE_BINDING,\n })\n })\n \n const buffer0 = (() => {\n const buffer = device.createBuffer({\n size: 4,\n mappedAtCreation: true,\n usage: GPUBufferUsage.UNIFORM,\n })\n new Uint32Array(buffer.getMappedRange())[0] = 0\n buffer.unmap()\n return buffer\n })()\n \n const buffer1 = (() => {\n const buffer = device.createBuffer({\n size: 4,\n mappedAtCreation: true,\n usage: GPUBufferUsage.UNIFORM,\n })\n new Uint32Array(buffer.getMappedRange())[0] = 1\n buffer.unmap()\n return buffer\n })()\n \n const blurParamsBuffer = device.createBuffer({\n size: 8,\n usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.UNIFORM,\n })\n\n const sampler = device.createSampler({\n magFilter: 'linear',\n minFilter: 'linear',\n })\n \n const computeConstants = device.createBindGroup({\n layout: blurPipeline.getBindGroupLayout(0),\n entries: [\n {\n binding: 0,\n resource: sampler,\n },\n {\n binding: 1,\n resource: {\n buffer: blurParamsBuffer,\n },\n },\n ],\n })\n \n const computeBindGroup0 = device.createBindGroup({\n layout: blurPipeline.getBindGroupLayout(1),\n entries: [\n {\n binding: 1,\n resource: texture.createView(),\n },\n {\n binding: 2,\n resource: textures[0].createView(),\n },\n {\n binding: 3,\n resource: {\n buffer: buffer0,\n },\n },\n ],\n })\n \n const computeBindGroup1 = device.createBindGroup({\n layout: blurPipeline.getBindGroupLayout(1),\n entries: [\n {\n binding: 1,\n resource: textures[0].createView(),\n },\n {\n binding: 2,\n resource: textures[1].createView(),\n },\n {\n binding: 3,\n resource: {\n buffer: buffer1,\n },\n },\n ],\n })\n \n const computeBindGroup2 = device.createBindGroup({\n layout: blurPipeline.getBindGroupLayout(1),\n entries: [\n {\n binding: 1,\n resource: textures[1].createView(),\n },\n {\n binding: 2,\n resource: textures[0].createView(),\n },\n {\n binding: 3,\n resource: {\n buffer: buffer0,\n },\n },\n ],\n })\n \n const settings = {\n filterSize: 15,\n iterations: 2,\n }\n\n // const blockDim = 128 - (15 - 1) = 114\n const blockDim = tileDim - (settings.filterSize - 1)\n device.queue.writeBuffer(\n blurParamsBuffer,\n 0,\n new Uint32Array([settings.filterSize, blockDim])\n )\n\n const computePass = commandEncoder.beginComputePass()\n computePass.setPipeline(blurPipeline)\n computePass.setBindGroup(0, computeConstants)\n\n computePass.setBindGroup(1, computeBindGroup0)\n computePass.dispatchWorkgroups(\n Math.ceil(texture.width / blockDim),\n Math.ceil(texture.height / batch[1])\n )\n\n computePass.setBindGroup(1, computeBindGroup1)\n computePass.dispatchWorkgroups(\n Math.ceil(texture.height / blockDim),\n Math.ceil(texture.width / batch[1])\n )\n\n for (let i = 0; i < settings.iterations - 1; ++i) {\n computePass.setBindGroup(1, computeBindGroup2)\n computePass.dispatchWorkgroups(\n Math.ceil(texture.width / blockDim), // 1200 / 114 = 11 ~ 10.52\n Math.ceil(texture.height / batch[1]) // 800 / 4 = 200\n )\n // exchange width with height!\n computePass.setBindGroup(1, computeBindGroup1)\n computePass.dispatchWorkgroups(\n Math.ceil(texture.height / blockDim),\n Math.ceil(texture.width / batch[1])\n )\n }\n\n computePass.end()\n\n return textures[1]\n }\n}\n","import shaderCode from './shader.wgsl'\n\nconst STRIDE = 4\nexport default function getProgram(\n device: GPUDevice,\n presentationFormat: GPUTextureFormat,\n matrixBuffer: GPUBuffer\n) {\n const module = device.createShaderModule({\n label: 'draw texture module',\n code: shaderCode,\n })\n\n const sampler = device.createSampler({\n minFilter: 'linear',\n magFilter: 'linear',\n })\n\n const pipeline = device.createRenderPipeline({\n label: 'draw texture pipeline',\n layout: 'auto',\n vertex: {\n module,\n entryPoint: 'vs',\n buffers: [\n {\n arrayStride: STRIDE * 4,\n attributes: [\n { shaderLocation: 0, offset: 0, format: 'float32x4' }, // destination(xy) and source (zw) positions\n ] as const,\n },\n ],\n },\n fragment: {\n module,\n entryPoint: 'fs',\n targets: [\n {\n format: presentationFormat,\n blend: {\n color: {\n srcFactor: 'one',\n dstFactor: 'one-minus-src-alpha',\n },\n alpha: {\n srcFactor: 'one',\n dstFactor: 'one-minus-src-alpha',\n },\n },\n },\n ],\n },\n multisample: {\n count: 4,\n },\n })\n\n // Cache bind groups per texture to avoid recreating them\n const bindGroupCache = new WeakMap<GPUTexture, GPUBindGroup>()\n\n return function drawTexture(\n pass: GPURenderPassEncoder,\n vertexData: DataView,\n texture: GPUTexture\n ) {\n const numVertices = vertexData.byteLength / (4 * STRIDE)\n\n const vertexBuffer = device.createBuffer({\n label: 'draw texture - vertex buffer',\n size: vertexData.byteLength,\n usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\n })\n\n device.queue.writeBuffer(vertexBuffer, 0, vertexData)\n\n // Get or create bind group for this texture\n let bindGroup = bindGroupCache.get(texture)\n if (!bindGroup) {\n bindGroup = device.createBindGroup({\n layout: pipeline.getBindGroupLayout(0),\n entries: [\n { binding: 0, resource: { buffer: matrixBuffer } },\n { binding: 1, resource: sampler },\n { binding: 2, resource: texture.createView() },\n ],\n })\n bindGroupCache.set(texture, bindGroup)\n }\n\n pass.setPipeline(pipeline)\n pass.setVertexBuffer(0, vertexBuffer)\n pass.setBindGroup(0, bindGroup)\n pass.draw(numVertices)\n }\n}\n","import shaderCode from './shader.wgsl'\n\nconst STRIDE = 4 + 1\n\nexport default function getProgram(device: GPUDevice, matrixBuffer: GPUBuffer) {\n const module = device.createShaderModule({\n label: 'pick texture module',\n code: shaderCode,\n })\n\n const sampler = device.createSampler({\n minFilter: 'linear',\n magFilter: 'linear',\n })\n\n const pipeline = device.createRenderPipeline({\n label: 'pick texture pipeline',\n layout: 'auto',\n vertex: {\n module,\n entryPoint: 'vs',\n buffers: [\n {\n arrayStride: STRIDE * 4,\n attributes: [\n { shaderLocation: 0, offset: 0, format: 'float32x4' }, // destination(xy) and source (zw) positions\n { shaderLocation: 1, offset: 16, format: 'uint32' }, // id\n ] as const,\n },\n ],\n },\n fragment: {\n module,\n entryPoint: 'fs',\n targets: [\n {\n // format: debugPresentationFormat,\n format: 'r32uint',\n },\n ],\n },\n })\n\n // Cache bind groups per texture to avoid recreating them\n const bindGroupCache = new WeakMap<GPUTexture, GPUBindGroup>()\n\n return function pickTexture(\n pass: GPURenderPassEncoder,\n vertexData: DataView,\n texture: GPUTexture\n ) {\n const numVertices = vertexData.byteLength / (4 * STRIDE)\n\n const vertexBuffer = device.createBuffer({\n label: 'pick texture - vertex buffer',\n size: vertexData.byteLength,\n usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(vertexBuffer, 0, vertexData)\n\n // Get or create bind group for this texture\n let bindGroup = bindGroupCache.get(texture)\n if (!bindGroup) {\n bindGroup = device.createBindGroup({\n layout: pipeline.getBindGroupLayout(0),\n entries: [\n { binding: 0, resource: { buffer: matrixBuffer } },\n { binding: 1, resource: sampler },\n { binding: 2, resource: texture.createView() },\n ],\n })\n bindGroupCache.set(texture, bindGroup)\n }\n\n pass.setPipeline(pipeline)\n pass.setVertexBuffer(0, vertexBuffer)\n pass.setBindGroup(0, bindGroup)\n pass.draw(numVertices)\n }\n}\n","import shaderCode from './shader.wgsl'\n\nconst INSTANCE_STRIDE =\n 4 * 3 /* positon */ + 1 /* id */ + 3 /* value of roudned corner for each of three positions */\n\nexport default function getProgram(device: GPUDevice, matrixBuffer: GPUBuffer) {\n const module = device.createShaderModule({\n label: 'pick triangle module',\n code: shaderCode,\n })\n\n const pipeline = device.createRenderPipeline({\n label: 'pick triangle pipeline',\n layout: 'auto',\n vertex: {\n module,\n entryPoint: 'vs',\n buffers: [\n {\n arrayStride: INSTANCE_STRIDE * 4,\n stepMode: 'instance',\n attributes: [\n { shaderLocation: 0, offset: 0, format: 'float32x4' }, // position 0\n { shaderLocation: 1, offset: 16, format: 'float32x4' }, // position 1\n { shaderLocation: 2, offset: 16 + 16, format: 'float32x4' }, // position 2\n { shaderLocation: 3, offset: 16 + 16 + 16, format: 'uint32' }, // id'\n { shaderLocation: 4, offset: 16 + 16 + 16 + 4, format: 'float32x3' }, // rounded corner values\n ] as const,\n },\n ],\n },\n fragment: {\n module,\n entryPoint: 'fs',\n targets: [\n {\n format: 'r32uint',\n },\n ],\n },\n })\n\n // Cache bind group for this program (no texture needed)\n let cachedBindGroup: GPUBindGroup | null = null\n\n return function pickTriangle(pass: GPURenderPassEncoder, vertexData: DataView) {\n const numInstances = vertexData.byteLength / (4 * INSTANCE_STRIDE)\n\n const vertexBuffer = device.createBuffer({\n label: 'pick triangle vertex buffer vertices',\n size: vertexData.byteLength,\n usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(vertexBuffer, 0, vertexData)\n\n // Get or create bind group for this program\n if (!cachedBindGroup) {\n cachedBindGroup = device.createBindGroup({\n layout: pipeline.getBindGroupLayout(0),\n entries: [{ binding: 0, resource: { buffer: matrixBuffer } }],\n })\n }\n\n pass.setPipeline(pipeline)\n pass.setVertexBuffer(0, vertexBuffer)\n pass.setBindGroup(0, cachedBindGroup)\n pass.draw(3, numInstances)\n }\n}\n","import shaderCode from './shader.wgsl'\n\nconst INSTANCE_STRIDE =\n 3 /*3 verticies*/ * 4 /*destination(xy) and texture coords(zw) */ + 1 /*color*/\n\nexport default function getProgram(\n device: GPUDevice,\n presentationFormat: GPUTextureFormat,\n matrixBuffer: GPUBuffer\n) {\n const module = device.createShaderModule({\n label: 'draw msdf module',\n code: shaderCode,\n })\n\n const sampler = device.createSampler({\n minFilter: 'linear',\n magFilter: 'linear',\n })\n\n const pipeline = device.createRenderPipeline({\n label: 'draw msdf pipeline',\n layout: 'auto',\n vertex: {\n module,\n entryPoint: 'vs',\n buffers: [\n {\n arrayStride: INSTANCE_STRIDE * 4,\n stepMode: 'instance',\n attributes: [\n { shaderLocation: 0, offset: 0, format: 'float32x4' }, // p0\n { shaderLocation: 1, offset: 16, format: 'float32x4' }, // p1\n { shaderLocation: 2, offset: 16 + 16, format: 'float32x4' }, // p2\n { shaderLocation: 3, offset: 16 + 16 + 16, format: 'unorm8x4' }, // color\n ] as const,\n },\n ],\n },\n fragment: {\n module,\n entryPoint: 'fs',\n targets: [\n {\n format: presentationFormat,\n blend: {\n color: {\n srcFactor: 'one',\n dstFactor: 'one-minus-src-alpha',\n },\n alpha: {\n srcFactor: 'one',\n dstFactor: 'one-minus-src-alpha',\n },\n },\n },\n ],\n },\n multisample: {\n count: 4,\n },\n })\n\n const bindGroupCache = new WeakMap<GPUTexture, GPUBindGroup>()\n\n return function drawMSDF(pass: GPURenderPassEncoder, vertexData: DataView, texture: GPUTexture) {\n const numInstances = vertexData.byteLength / (4 * INSTANCE_STRIDE)\n\n const vertexBuffer = device.createBuffer({\n label: 'draw msdf - vertex buffer',\n size: vertexData.byteLength,\n usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(vertexBuffer, 0, vertexData)\n\n // Get or create bind group for this texture\n let bindGroup = bindGroupCache.get(texture)\n if (!bindGroup) {\n bindGroup = device.createBindGroup({\n layout: pipeline.getBindGroupLayout(0),\n entries: [\n { binding: 0, resource: { buffer: matrixBuffer } },\n { binding: 1, resource: sampler },\n { binding: 2, resource: texture.createView() },\n ],\n })\n bindGroupCache.set(texture, bindGroup)\n }\n\n pass.setPipeline(pipeline)\n pass.setVertexBuffer(0, vertexBuffer)\n pass.setBindGroup(0, bindGroup)\n pass.draw(3, numInstances)\n }\n}\n","import getDrawTriangle from './drawTriangle/getProgram'\nimport getDrawBezier from './drawBezier/getProgram'\nimport getDraw3dModelTexture from './draw3dModelTexture/getProgram'\nimport getDraw3dModel from './draw3dModel/getProgram'\nimport getDraw3dModelLight from './draw3dModelLight/getProgram'\nimport getBlur from './blur/getProgram'\nimport getDrawtexture from './drawTexture/getProgram'\nimport getPickTexture from './pickTexture/getProgram'\nimport getPickTriangle from './pickTriangle/getProgram'\nimport getDrawMSDF from './drawMSDF/getProgram'\nimport getDrawShape from './drawShape/getProgram'\n\nexport let drawTriangle: ReturnType<typeof getDrawTriangle>\nexport let drawBezier: ReturnType<typeof getDrawBezier>\nexport let draw3dModel: ReturnType<typeof getDraw3dModel>\nexport let draw3dModelTexture: ReturnType<typeof getDraw3dModelTexture>\nexport let draw3dModelLight: ReturnType<typeof getDraw3dModelLight>\nexport let drawBlur: ReturnType<typeof getBlur>\nexport let drawTexture: ReturnType<typeof getDrawtexture>\nexport let pickTexture: ReturnType<typeof getPickTexture>\nexport let pickTriangle: ReturnType<typeof getPickTriangle>\nexport let drawMSDF: ReturnType<typeof getDrawMSDF>\nexport let drawShape: ReturnType<typeof getDrawShape>\n\nexport let canvasMatrixBuffer: GPUBuffer\nexport let pickCanvasMatrixBuffer: GPUBuffer\n\nexport default function initPrograms(device: GPUDevice, presentationFormat: GPUTextureFormat) {\n canvasMatrixBuffer = device.createBuffer({\n label: 'uniforms',\n size: 16 /*projection matrix*/ * 4,\n usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,\n })\n\n pickCanvasMatrixBuffer = device.createBuffer({\n label: 'uniforms',\n size: 16 /*projection matrix*/ * 4,\n usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,\n })\n\n const buffersToDestroy: GPUBuffer[] = []\n\n drawTriangle = getDrawTriangle(device, presentationFormat, canvasMatrixBuffer, buffersToDestroy)\n drawBezier = getDrawBezier(device, presentationFormat)\n draw3dModelTexture = getDraw3dModelTexture(device, presentationFormat)\n draw3dModel = getDraw3dModel(device, presentationFormat)\n draw3dModelLight = getDraw3dModelLight(device, presentationFormat)\n drawBlur = getBlur(device)\n drawTexture = getDrawtexture(device, presentationFormat, canvasMatrixBuffer)\n pickTexture = getPickTexture(device, pickCanvasMatrixBuffer)\n pickTriangle = getPickTriangle(device, pickCanvasMatrixBuffer)\n drawMSDF = getDrawMSDF(device, presentationFormat, canvasMatrixBuffer)\n drawShape = getDrawShape(device, presentationFormat, canvasMatrixBuffer, buffersToDestroy)\n\n return function cleanup() {\n buffersToDestroy.forEach((buffer) => buffer.destroy())\n }\n}\n","import shaderCode from \"./shader.wgsl\"\n\nexport default function getProgram(device: GPUDevice, presentationFormat: GPUTextureFormat) {\n const module = device.createShaderModule({\n label: \"bezier shader module\",\n code: shaderCode,\n })\n\n const pipeline = device.createRenderPipeline({\n label: 'bezier pipline',\n layout: 'auto',\n primitive: {\n topology: `triangle-strip`,\n },\n vertex: {\n module,\n entryPoint: 'vs',\n buffers: [\n {\n arrayStride: (1 /*t*/) * 4,\n attributes: [\n {shaderLocation: 0, offset: 0, format: 'float32'},\n ] as const,\n },\n {\n arrayStride: (1 /*dir*/) * 4,\n attributes: [\n {shaderLocation: 1, offset: 0, format: 'float32'},\n ] as const,\n },\n {\n arrayStride: (1 /*segmentIndex*/) * 4,\n attributes: [\n {shaderLocation: 2, offset: 0, format: 'uint32'},\n ] as const,\n },\n ],\n },\n fragment: {\n module,\n entryPoint: 'fs',\n targets: [{ format: presentationFormat }],\n },\n depthStencil: {\n depthWriteEnabled: false,\n depthCompare: 'always',\n format: 'depth24plus',\n },\n })\n\n return function renderBezierCurve(\n pass: GPURenderPassEncoder,\n matrix: Float32Array,\n pointsData: Float32Array,\n tData: Float32Array,\n dirData: Float32Array,\n segmentIndexData: Uint32Array,\n zoom: number,\n ) {\n // for each single segment we need to create a buffer OR more likely better is to combine\n // all of these data into one buffer!\n\n const storageBufferSize = (pointsData.length/*points*/) * 4\n const storageBuffer = device.createBuffer({\n label: 'storage points',\n size: storageBufferSize,\n usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST,\n })\n\n\n const uniformBufferSize = (16/*matrix*/ + 4/*zoom*/) * 4\n const uniformBuffer = device.createBuffer({\n label: 'uniforms',\n size: uniformBufferSize,\n usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,\n })\n\n const uniformValues = new Float32Array(uniformBufferSize / 4)\n\n // offsets to the various uniform values in float32 indices\n const kMatrixOffset = 0\n const kZoomOffset = 16\n\n const matrixValue = uniformValues.subarray(kMatrixOffset, kMatrixOffset + 16)\n const zoomValue = uniformValues.subarray(kZoomOffset, kZoomOffset + 1)\n\n const bindGroup = device.createBindGroup({\n label: 'bezier bind group for object',\n layout: pipeline.getBindGroupLayout(0),\n entries: [\n { binding: 0, resource: { buffer: uniformBuffer }},\n { binding: 1, resource: { buffer: storageBuffer }},\n ],\n })\n\n\n const tBuffer = device.createBuffer({\n label: 'bezier vertex buffer vertices',\n size: tData.byteLength,\n usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(tBuffer, 0, tData)\n\n const dirBuffer = device.createBuffer({\n label: 'bezier vertex buffer vertices',\n size: dirData.byteLength,\n usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(dirBuffer, 0, dirData)\n\n const segmentIndexBuffer = device.createBuffer({\n label: 'bezier vertex buffer vertices',\n size: segmentIndexData.byteLength,\n usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(segmentIndexBuffer, 0, segmentIndexData) // not sure if it should not be 1\n\n pass.setPipeline(pipeline)\n pass.setVertexBuffer(0, tBuffer) // index of the buffer in the pipline\n pass.setVertexBuffer(1, dirBuffer)\n pass.setVertexBuffer(2, segmentIndexBuffer)\n\n matrixValue.set(matrix)\n zoomValue.set(new Float32Array([zoom]))\n // p1, p2, p3, p4\n // t = 0, dir = 1\n // t = 0, dir = -1\n // t = 0.5, dir = 1\n // t = 0.5, dir = -1\n // t = 1, dir = 1\n // t = 1, dir = -1\n // change p1, p2, p3, p4\n\n // upload the uniform values to the uniform buffer\n device.queue.writeBuffer(uniformBuffer, 0, uniformValues)\n\n device.queue.writeBuffer(storageBuffer, 0, pointsData)\n\n pass.setBindGroup(0, bindGroup)\n pass.draw(tData.length)\n }\n}\n","import shaderCode from \"./shader.wgsl\"\n\nexport default function getProgram(device: GPUDevice, presentationFormat: GPUTextureFormat) {\n const module = device.createShaderModule({\n label: \"3d model texture shader module\",\n code: shaderCode,\n })\n\n const pipeline = device.createRenderPipeline({\n label: '3d model texture pipline',\n layout: 'auto',\n vertex: {\n module,\n entryPoint: 'vs',\n buffers: [\n {\n arrayStride: (3 + 2) * 4, // (3 + 2) floats, 4 bytes each\n attributes: [\n {shaderLocation: 0, offset: 0, format: 'float32x3'}, // position\n {shaderLocation: 1, offset: (3) * 4, format: 'float32x2'}, // texture coord\n ] as const,\n },\n ],\n },\n fragment: {\n module,\n entryPoint: 'fs',\n targets: [{ format: presentationFormat }],\n },\n depthStencil: {\n depthWriteEnabled: false,\n depthCompare: 'always',\n format: 'depth24plus',\n },\n })\n\n\n return function renderDraw3dModelTexture(\n pass: GPURenderPassEncoder,\n matrix: Float32Array,\n texture: GPUTexture,\n vertexData: Float32Array,\n indexData: Uint32Array,\n ) {\n const sampler = device.createSampler({\n magFilter: \"linear\",\n minFilter: 'linear',\n })\n\n const uniformBufferSize = (16) * 4\n const uniformBuffer = device.createBuffer({\n label: 'uniforms',\n size: uniformBufferSize,\n usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,\n })\n\n const uniformValues = new Float32Array(uniformBufferSize / 4)\n\n // offsets to the various uniform values in float32 indices\n const kMatrixOffset = 0\n\n const matrixValue = uniformValues.subarray(kMatrixOffset, kMatrixOffset + 16)\n\n const numVertices = indexData.length\n const vertexBuffer = device.createBuffer({\n label: '3d model texture vertex buffer vertices',\n size: vertexData.byteLength,\n usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(vertexBuffer, 0, vertexData)\n const indexBuffer = device.createBuffer({\n label: '3d model texture index buffer',\n size: indexData.byteLength,\n usage: GPUBufferUsage.INDEX | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(indexBuffer, 0, indexData)\n\n const bindGroup = device.createBindGroup({\n label: '3d model texture bind group for object',\n layout: pipeline.getBindGroupLayout(0),\n entries: [\n { binding: 0, resource: { buffer: uniformBuffer }},\n { binding: 1, resource: sampler },\n { binding: 2, resource: texture.createView() },\n ],\n })\n\n pass.setPipeline(pipeline)\n pass.setVertexBuffer(0, vertexBuffer)\n pass.setIndexBuffer(indexBuffer, 'uint32')\n\n matrixValue.set(matrix)\n\n device.queue.writeBuffer(uniformBuffer, 0, uniformValues)\n\n pass.setBindGroup(0, bindGroup)\n pass.drawIndexed(numVertices)\n }\n}\n","import shaderCode from \"./shader.wgsl\"\n\nexport default function getProgram(device: GPUDevice, presentationFormat: GPUTextureFormat) {\n const module = device.createShaderModule({\n label: \"3d model shader module\",\n code: shaderCode,\n })\n\n const pipeline = device.createRenderPipeline({\n label: '3d model pipline',\n layout: 'auto',\n vertex: {\n module,\n entryPoint: 'vs',\n buffers: [\n {\n // position + texture coords\n // arrayStride: (3) * 4, // (3) floats, 4 bytes each\n arrayStride: (3) * 4, // (3) floats, 4 bytes each\n attributes: [\n {shaderLocation: 0, offset: 0, format: 'float32x3'}, // position\n ] as const,\n },\n ],\n },\n fragment: {\n module,\n entryPoint: 'fs',\n targets: [{ format: presentationFormat }],\n },\n primitive: {\n cullMode: 'back',\n },\n depthStencil: {\n depthWriteEnabled: true,\n depthCompare: 'less',\n format: 'depth24plus',\n },\n })\n\n\n return function renderDraw3dModel(\n pass: GPURenderPassEncoder,\n matrix: Float32Array,\n vertexData: Float32Array,\n indexData: Uint32Array,\n ) {\n // matrix\n const uniformBufferSize = (16) * 4\n const uniformBuffer = device.createBuffer({\n label: 'uniforms',\n size: uniformBufferSize,\n usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,\n })\n\n const uniformValues = new Float32Array(uniformBufferSize / 4)\n\n // offsets to the various uniform values in float32 indices\n const kMatrixOffset = 0\n\n const matrixValue = uniformValues.subarray(kMatrixOffset, kMatrixOffset + 16)\n\n const numVertices = indexData.length\n const vertexBuffer = device.createBuffer({\n label: 'vertex buffer vertices',\n size: vertexData.byteLength,\n usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(vertexBuffer, 0, vertexData)\n const indexBuffer = device.createBuffer({\n label: 'index buffer',\n size: indexData.byteLength,\n usage: GPUBufferUsage.INDEX | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(indexBuffer, 0, indexData)\n\n const bindGroup = device.createBindGroup({\n label: 'bind group for object',\n layout: pipeline.getBindGroupLayout(0),\n entries: [\n { binding: 0, resource: { buffer: uniformBuffer }},\n ],\n })\n\n pass.setPipeline(pipeline)\n pass.setVertexBuffer(0, vertexBuffer)\n pass.setIndexBuffer(indexBuffer, 'uint32')\n\n matrixValue.set(matrix)\n\n // upload the uniform values to the uniform buffer\n device.queue.writeBuffer(uniformBuffer, 0, uniformValues)\n\n pass.setBindGroup(0, bindGroup)\n pass.drawIndexed(numVertices)\n }\n}\n","import shaderCode from \"./shader.wgsl\"\n\ninterface Uniforms {\n worldViewProjection: Float32Array,\n normalMatrix: Float32Array,\n lightColor: Float32Array,\n lightDirection: Float32Array\n}\n\nexport default function getProgram(device: GPUDevice, presentationFormat: GPUTextureFormat) {\n const module = device.createShaderModule({\n label: \"3d model light shader module\",\n code: shaderCode,\n })\n\n const pipeline = device.createRenderPipeline({\n label: '3d model light pipline',\n layout: 'auto',\n vertex: {\n module,\n entryPoint: 'vs',\n buffers: [\n {\n // position + texture coords\n // arrayStride: (3) * 4, // (3) floats, 4 bytes each\n arrayStride: (3 + 3) * 4, // (3) floats, 4 bytes each\n attributes: [\n {shaderLocation: 0, offset: 0, format: 'float32x3'}, // position\n {shaderLocation: 1, offset: 12, format: 'float32x3'}, // normal\n ] as const,\n },\n ],\n },\n fragment: {\n module,\n entryPoint: 'fs',\n targets: [{ format: presentationFormat }],\n },\n primitive: {\n cullMode: 'back',\n },\n depthStencil: {\n depthWriteEnabled: true,\n depthCompare: 'less',\n format: 'depth24plus',\n },\n })\n\n\n return function renderDraw3dModelLight(\n pass: GPURenderPassEncoder,\n uniform: Uniforms,\n vertexData: Float32Array,\n indexData: Uint32Array,\n ) {\n const {\n worldViewProjection,\n normalMatrix,\n lightColor,\n lightDirection,\n } = uniform\n // matrix\n const uniformBufferSize = (12 + 16 + 4 + 4) * 4\n const uniformBuffer = device.createBuffer({\n label: 'uniforms',\n size: uniformBufferSize,\n usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,\n })\n\n const uniformValues = new Float32Array(uniformBufferSize / 4)\n\n // offsets to the various uniform values in float32 indices\n const kNormalMatrixOffset = 0\n const kWorldViewProjectionOffset = 12\n const kColorOffset = 28\n const kLightDirectionOffset = 32\n\n const normalMatrixValue = uniformValues.subarray(kNormalMatrixOffset, kNormalMatrixOffset + 12)\n const worldViewProjectionValue = uniformValues.subarray(\n kWorldViewProjectionOffset, kWorldViewProjectionOffset + 16)\n const colorValue = uniformValues.subarray(kColorOffset, kColorOffset + 4)\n const lightDirectionValue =\n uniformValues.subarray(kLightDirectionOffset, kLightDirectionOffset + 3)\n\n const bindGroup = device.createBindGroup({\n label: 'bind group for object',\n layout: pipeline.getBindGroupLayout(0),\n entries: [\n { binding: 0, resource: { buffer: uniformBuffer }},\n ],\n })\n\n const numVertices = indexData.length\n const vertexBuffer = device.createBuffer({\n label: 'vertex buffer vertices',\n size: vertexData.byteLength,\n usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(vertexBuffer, 0, vertexData)\n const indexBuffer = device.createBuffer({\n label: 'index buffer',\n size: indexData.byteLength,\n usage: GPUBufferUsage.INDEX | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(indexBuffer, 0, indexData)\n\n pass.setPipeline(pipeline)\n pass.setVertexBuffer(0, vertexBuffer)\n pass.setIndexBuffer(indexBuffer, 'uint32')\n\n\n normalMatrixValue.set(normalMatrix)\n worldViewProjectionValue.set(worldViewProjection)\n colorValue.set(lightColor)\n lightDirectionValue.set(lightDirection)\n\n // upload the uniform values to the uniform buffer\n device.queue.writeBuffer(uniformBuffer, 0, uniformValues)\n\n pass.setBindGroup(0, bindGroup)\n pass.drawIndexed(numVertices)\n }\n}\n","import shaderCode from './shader.wgsl'\n\nexport default function getDrawShape(\n device: GPUDevice,\n presentationFormat: GPUTextureFormat,\n canvasMatrixBuffer: GPUBuffer,\n buffersToDestroy: GPUBuffer[]\n) {\n const shaderModule = device.createShaderModule({\n label: 'drawShape shader',\n code: shaderCode,\n })\n\n const uniformBufferSize =\n (1 /*stroke width*/ + 4 /*stroke color*/ + 4 /*fill color*/ + /*padding*/ 3) * 4\n\n const bindGroupLayout = device.createBindGroupLayout({\n label: 'drawShape bind group layout',\n entries: [\n {\n binding: 0,\n visibility: GPUShaderStage.VERTEX | GPUShaderStage.FRAGMENT,\n buffer: { type: 'uniform' },\n },\n {\n binding: 1,\n visibility: GPUShaderStage.FRAGMENT,\n buffer: { type: 'read-only-storage' },\n },\n {\n binding: 2,\n visibility: GPUShaderStage.VERTEX,\n buffer: { type: 'uniform' },\n },\n ],\n })\n\n const renderPipeline = device.createRenderPipeline({\n label: 'drawShape pipeline',\n layout: device.createPipelineLayout({\n bindGroupLayouts: [bindGroupLayout],\n }),\n vertex: {\n module: shaderModule,\n entryPoint: 'vs',\n buffers: [\n {\n arrayStride: 2 * 4, // position (2) + color (4)\n attributes: [\n {\n shaderLocation: 0,\n offset: 0,\n format: 'float32x2', // position\n },\n ],\n },\n ],\n },\n fragment: {\n module: shaderModule,\n entryPoint: 'fs',\n targets: [\n {\n format: presentationFormat,\n blend: {\n color: {\n srcFactor: 'src-alpha',\n dstFactor: 'one-minus-src-alpha',\n },\n alpha: {\n srcFactor: 'one',\n dstFactor: 'one-minus-src-alpha',\n },\n },\n },\n ],\n },\n multisample: {\n count: 4,\n },\n })\n\n return function drawShape(\n passEncoder: GPURenderPassEncoder,\n curvesDataView: DataView,\n boundingBoxDataView: DataView,\n uniformDataView: DataView\n ) {\n const boundBoxBuffer = device.createBuffer({\n label: 'drawShape vertex buffer',\n size: boundingBoxDataView.byteLength,\n usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(boundBoxBuffer, 0, boundingBoxDataView)\n buffersToDestroy.push(boundBoxBuffer)\n\n const curvesBuffer = device.createBuffer({\n label: 'drawShape curves buffer',\n size: curvesDataView.byteLength,\n usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(curvesBuffer, 0, curvesDataView)\n buffersToDestroy.push(curvesBuffer)\n\n const uniformBuffer = device.createBuffer({\n label: 'drawShape uniforms',\n size: uniformBufferSize,\n usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(uniformBuffer, 0, uniformDataView)\n buffersToDestroy.push(uniformBuffer)\n\n passEncoder.setPipeline(renderPipeline)\n\n const bindGroup = device.createBindGroup({\n label: 'drawShape bind group',\n layout: bindGroupLayout,\n entries: [\n { binding: 0, resource: { buffer: uniformBuffer } },\n { binding: 1, resource: { buffer: curvesBuffer } },\n { binding: 2, resource: { buffer: canvasMatrixBuffer } },\n ],\n })\n\n passEncoder.setBindGroup(0, bindGroup)\n passEncoder.setVertexBuffer(0, boundBoxBuffer)\n passEncoder.draw(6) // Draw quad\n }\n}\n","import { canvasMatrixBuffer } from 'WebGPU/programs/initPrograms'\nimport mat4 from 'utils/mat4'\nimport { updateRenderPass } from 'run'\nimport * as Textures from 'textures'\nimport getMultisampleTexture from 'getMultisampleTexture'\n\nlet endCacheCallback: VoidFunction = () => {\n throw new Error('Cache not started')\n}\n\nexport function endCache() {\n endCacheCallback()\n}\n\nexport function startCache(\n device: GPUDevice,\n presentationFormat: GPUTextureFormat,\n currTextureId: number | null,\n boundingBox: BoundingBox,\n outputWidth: number,\n outputHeight: number\n): number {\n const width = boundingBox.max_x - boundingBox.min_x\n const height = boundingBox.max_y - boundingBox.min_y\n\n const texture = device.createTexture({\n label: 'texture cache',\n format: presentationFormat,\n usage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TEXTURE_BINDING,\n size: [outputWidth, outputHeight],\n })\n\n const encoder = device.createCommandEncoder()\n\n const multisampleTexture = getMultisampleTexture(\n device,\n outputWidth,\n outputHeight,\n presentationFormat\n )\n const descriptor: GPURenderPassDescriptor = {\n label: 'texture cache pass',\n colorAttachments: [\n {\n view: multisampleTexture.createView(),\n resolveTarget: texture.createView(),\n loadOp: 'clear',\n storeOp: 'store',\n },\n ],\n }\n\n const pass = encoder.beginRenderPass(descriptor)\n updateRenderPass(pass)\n const matrix = mat4.ortho(\n boundingBox.min_x, // left\n boundingBox.min_x + width, // right\n boundingBox.min_y + height, // bottom\n boundingBox.min_y, // top, yes top and bottom and reversed on purpose to make texture start at bottom-left corner\n 1, // near\n -1 // far\n )\n\n device.queue.writeBuffer(canvasMatrixBuffer, 0, matrix)\n\n endCacheCallback = () => {\n pass.end()\n const commandBuffer = encoder.finish()\n device.queue.submit([commandBuffer])\n }\n\n return Textures.setTexture(texture, currTextureId)\n}\n","import mat4 from 'utils/mat4'\nimport { camera } from 'WebGPU/pointer'\n\nexport default function getCanvasMatrix(canvas: HTMLCanvasElement) {\n const ortho = mat4.ortho(\n 0, // left\n canvas.width, // right\n 0, // bottom\n canvas.height, // top\n 1, // near\n -1 // far\n )\n // when we implement zoom, it might be actually easier to scale our controls/icons down and this matrix up\n // instead of implement zoom for every signle effect I guess\n const translated = mat4.translate(ortho, [camera.x, camera.y, 0])\n const matrix = mat4.scale(translated, [camera.zoom, camera.zoom, 1])\n\n return matrix\n}\n","let depthTexture: GPUTexture | undefined\n\nexport default function getDepthTexture(device: GPUDevice, width: number, height: number) {\n if (!depthTexture || depthTexture.width !== width || depthTexture.height !== height) {\n depthTexture?.destroy()\n depthTexture = device.createTexture({\n size: [width, height],\n format: 'depth24plus',\n usage: GPUTextureUsage.RENDER_ATTACHMENT,\n })\n }\n\n return depthTexture\n}\n","import getMultisampleTexture from './getMultisampleTexture'\nimport getDepthTexture from './getDepthTexture'\n\nexport default function getCanvasRenderDescriptor(context: GPUCanvasContext, device: GPUDevice) {\n // here we need to render that texture into canvas\n const canvasTexture = context.getCurrentTexture()\n\n const depthTexture = getDepthTexture(device, canvasTexture.width, canvasTexture.height)\n const multisampleTexture = getMultisampleTexture(\n device,\n canvasTexture.width,\n canvasTexture.height,\n canvasTexture.format\n )\n const descriptor: GPURenderPassDescriptor = {\n // describe which textures we want to raw to and how use them\n label: 'our render to canvas renderPass',\n colorAttachments: [\n {\n view: multisampleTexture.createView(),\n resolveTarget: canvasTexture.createView(), // resolveTarget is used to resolve multisample texture into single sample texture\n clearValue: [0, 0, 0, 1],\n loadOp: 'clear', // before rendering clear the texture to value \"clear\". Other option is \"load\" to load existing content of the texture into GPU so we can draw over it\n storeOp: 'store', // to store the result of what we draw, other option is \"discard\"\n },\n ],\n // depthStencilAttachment: {\n // view: depthTexture.createView(), // placholder to calm down TS\n // depthClearValue: 1.0,\n // depthLoadOp: 'clear',\n // depthStoreOp: 'discard',\n // },\n }\n\n return descriptor\n}\n","let multisampleTexture: GPUTexture | undefined\n\nexport default function getMultisampleTexture(\n device: GPUDevice,\n width: number,\n height: number,\n format: GPUTextureFormat\n) {\n if (\n !multisampleTexture ||\n multisampleTexture.width !== width ||\n multisampleTexture.height !== height\n ) {\n multisampleTexture?.destroy()\n multisampleTexture = device.createTexture({\n format: format,\n usage: GPUTextureUsage.RENDER_ATTACHMENT,\n size: [width, height],\n sampleCount: 4,\n })\n }\n\n return multisampleTexture\n}\n","import canvasSizeObserver from 'WebGPU/canvasSizeObserver'\nimport getDevice from 'WebGPU/getDevice'\nimport initPrograms from 'WebGPU/programs/initPrograms'\nimport runCreator from 'run'\nimport * as Logic from './logic/index.zig'\nimport initMouseController, { camera } from 'WebGPU/pointer'\nimport IconsPng from '../msdf/output/icons.png'\nimport IconsJson from '../msdf/output/icons.json'\nimport getDefaultPoints from 'utils/getDefaultPoints'\nimport * as Textures from 'textures'\nimport { startCache, endCache } from 'WebGPU/textureCache'\n\nexport type SerializedInputAsset = {\n id?: number // not needed while loading project but useful for undo/redo to maintain selection\n points?: PointUV[]\n url: string\n textureId?: number\n}\n\nexport type SerializedOutputAsset = {\n id: number // not needed while loading project but useful for undo/redo to maintain selection\n points: PointUV[]\n url: string\n textureId: number\n}\n\nexport enum CreatorTool {\n None = 0,\n DrawShape = 1,\n}\n\nexport interface CreatorAPI {\n addImage: (url: string) => void\n resetAssets: (assets: SerializedInputAsset[], withSnapshot?: boolean) => void\n removeAsset: VoidFunction\n destroy: VoidFunction\n setTool: (tool: CreatorTool) => void\n}\n\nexport default async function initCreator(\n canvas: HTMLCanvasElement,\n uploadTexture: (url: string, onNewUrl: (newUrl: string) => void) => void,\n onAssetsUpdate: (assets: SerializedOutputAsset[]) => void,\n onAssetSelect: (assetId: number) => void,\n onProcessingUpdate: (inProgress: boolean) => void\n): Promise<CreatorAPI> {\n let loadingTextures = 0\n let isMouseEventProcessing = false\n\n function updateProcessing() {\n onProcessingUpdate(loadingTextures > 0 || isMouseEventProcessing)\n }\n\n const device = await getDevice()\n Textures.init(device, (texLoadings) => {\n loadingTextures = texLoadings\n updateProcessing()\n })\n\n const projectWidth = canvas.clientWidth / 2\n const projectHeight = canvas.clientHeight / 2\n\n Logic.init_state(projectWidth, projectHeight, device.limits.maxTextureDimension2D)\n // rotation doesnt work\n const context = canvas.getContext('webgpu')\n if (!context) throw Error('WebGPU from canvas needs to be always provided')\n\n const presentationFormat = navigator.gpu.getPreferredCanvasFormat()\n context.configure({\n device,\n format: presentationFormat,\n // Specify we want both RENDER_ATTACHMENT and COPY_SRC since we\n // will copy out of the swapchain texture.\n })\n\n function updateRenderScale() {\n Logic.update_render_scale(canvas.width / (canvas.clientWidth * camera.zoom))\n }\n\n let wasInitialOffsetSet = false\n canvasSizeObserver(canvas, device, () => {\n if (wasInitialOffsetSet === false) {\n camera.x = (canvas.width - projectWidth) / 2\n camera.y = (canvas.height - projectHeight) / 2\n wasInitialOffsetSet = true\n }\n updateRenderScale()\n })\n\n const cleanupPrograms = initPrograms(device, presentationFormat)\n\n initMouseController(canvas, updateRenderScale, () => {\n isMouseEventProcessing = true\n updateProcessing()\n })\n\n let lastAssetsSnapshot: ZigAssetOutput[] = []\n Logic.connect_on_asset_update_callback((serializedData: ZigAssetOutput[]) => {\n lastAssetsSnapshot = serializedData\n newAssetsSnapshot()\n })\n\n function newAssetsSnapshot() {\n // this function is not part of Logic.connect_on_asset_update_callback\n // only because once we update a texture url, we have to notify about the assets update\n const serializedAssetsTextureUrl = [...lastAssetsSnapshot].map<SerializedOutputAsset>(\n (asset) => ({\n id: asset.id,\n textureId: asset.texture_id,\n points: [...asset.points].map((point) => ({\n x: point.x,\n y: point.y,\n u: point.u,\n v: point.v,\n })),\n url: Textures.getUrl(asset.texture_id),\n })\n )\n onAssetsUpdate(serializedAssetsTextureUrl)\n }\n\n Logic.connect_on_asset_selection_callback(onAssetSelect)\n\n Logic.connect_cache_callbacks((textureId, boundingBox, width, height) => {\n return startCache(device, presentationFormat, textureId, boundingBox, width, height)\n }, endCache)\n\n const addImage: CreatorAPI['addImage'] = (url) => {\n const textureId = Textures.add(url, (width, height, isNew) => {\n const points = getDefaultPoints(width, height, projectWidth, projectHeight)\n Logic.add_asset(0 /* no id yet, needs to be generated */, points, textureId)\n\n if (isNew) {\n uploadTexture(url, (newUrl) => {\n Textures.updateTextureUrl(textureId, newUrl)\n newAssetsSnapshot()\n })\n }\n })\n }\n\n Textures.add(IconsPng, (width, height) => {\n Logic.import_icons(\n IconsJson.chars.flatMap((char) => [\n char.id,\n char.x / width,\n char.y / height,\n char.width / width,\n char.height / height,\n char.width,\n char.height,\n ])\n )\n })\n\n const stopCreator = runCreator(\n canvas,\n context,\n device,\n cleanupPrograms,\n presentationFormat,\n () => {\n isMouseEventProcessing = false\n updateProcessing()\n }\n )\n\n const resetAssets: CreatorAPI['resetAssets'] = async (assets, withSnapshot = false) => {\n const results = await Promise.allSettled(\n assets.map<Promise<ZigAssetInput>>(\n (asset) =>\n new Promise((resolve, reject) => {\n if (asset.points) {\n return resolve({\n points: asset.points, // here it makes sense\n texture_id: asset.textureId || Textures.add(asset.url), // if we got points, so we have url on the server for sure\n id: asset.id || 0,\n })\n }\n\n const textureId = Textures.add(asset.url, (width, height, isNew) => {\n // we wait to add image once points are known. Other option was to add image first\n // with \"default\" points and then update it once texture is loaded.\n // However, that would cause issues with undo/redo since we would have history\n // snapshot with \"default\" points and then update it to the real points.\n if (isNew) {\n uploadTexture(asset.url, (newUrl) => {\n Textures.updateTextureUrl(textureId, newUrl)\n newAssetsSnapshot()\n })\n }\n\n return resolve({\n points: getDefaultPoints(width, height, projectWidth, projectHeight),\n texture_id: textureId, // if there is no points, then for sure there is no asset.textureId\n id: 0,\n })\n })\n })\n )\n )\n\n const serializedAssets = results\n .filter((result) => result.status === 'fulfilled')\n .map((result) => result.value)\n\n Logic.reset_assets(serializedAssets, withSnapshot)\n }\n\n return {\n addImage,\n removeAsset: Logic.remove_asset,\n resetAssets,\n destroy: () => {\n stopCreator()\n Logic.destroy_state()\n context.unconfigure()\n device.destroy()\n },\n setTool: Logic.set_tool,\n }\n}\n","export default function getLoadingTexture(device: GPUDevice): GPUTexture {\n const textureWidth = 5\n const textureHeight = 7\n const _ = [255, 0, 0, 255] // red\n const y = [255, 255, 0, 255] // yellow\n const b = [0, 0, 255, 255] // blue\n // prettier-ignore\n const textureData = new Uint8Array([\n b, _, _, _, _,\n _, y, y, y, _,\n _, y, _, _, _,\n _, y, y, _, _,\n _, y, _, _, _,\n _, y, _, _, _,\n _, _, _, _, _,\n ].flat())\n\n const texture = device.createTexture({\n label: 'yellow F on red',\n size: [textureWidth, textureHeight],\n format: 'rgba8unorm',\n usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST,\n })\n device.queue.writeTexture(\n { texture },\n textureData,\n { bytesPerRow: textureWidth * 4 },\n { width: textureWidth, height: textureHeight }\n )\n\n return texture\n}\n","import getCanvasRenderDescriptor from 'getCanvasRenderDescriptor'\nimport {\n drawTexture,\n drawTriangle,\n drawMSDF,\n pickTexture,\n pickTriangle,\n canvasMatrixBuffer,\n pickCanvasMatrixBuffer,\n drawShape,\n} from 'WebGPU/programs/initPrograms'\nimport getCanvasMatrix from 'getCanvasMatrix'\nimport PickManager from 'WebGPU/pick'\nimport { render_draw, render_pick, connect_web_gpu_programs } from 'logic/index.zig'\nimport { pointer } from 'WebGPU/pointer'\nimport * as Textures from 'textures'\n\nlet renderPass: GPURenderPassEncoder\nexport function updateRenderPass(newRenderPass: GPURenderPassEncoder) {\n renderPass = newRenderPass\n}\n\nexport default function runCreator(\n canvas: HTMLCanvasElement,\n context: GPUCanvasContext,\n device: GPUDevice,\n cleanupPrograms: VoidFunction,\n presentationFormat: GPUTextureFormat,\n onEmptyEvents: VoidFunction // call when there is no more events to process\n): VoidFunction {\n let pickPass: GPURenderPassEncoder\n\n const pickManager = new PickManager(device)\n // let time = 0\n // let total = 0\n // let samplesCount = 0\n\n connect_web_gpu_programs({\n draw_texture: (vertex_data, texture_id) => {\n drawTexture(renderPass, vertex_data.dataView, Textures.getTexture(texture_id))\n },\n draw_msdf: (vertex_data, texture_id) => {\n const dataView = vertex_data['*'].dataView\n drawMSDF(renderPass, dataView, Textures.getTexture(texture_id))\n },\n draw_triangle: (vertex_data) => {\n const dataView = vertex_data['*'].dataView\n drawTriangle(renderPass, dataView)\n /*\n samplesCount++\n total += performance.now() - time\n if (samplesCount % 100 === 0) {\n console.log('Average draw time:', total / samplesCount)\n }\n */\n },\n draw_shape: (curves_data, bound_box_data, uniform_data) => {\n const curvesDataView = curves_data['*'].dataView\n const boundBoxDataView = bound_box_data['*'].dataView\n drawShape(renderPass, curvesDataView, boundBoxDataView, uniform_data.dataView)\n\n /*\n samplesCount++\n total += performance.now() - time\n if (samplesCount % 100 === 0) {\n console.log('Average draw time:', total / samplesCount)\n }\n */\n },\n pick_texture: (vertex_data, texture_id) => {\n const dataView = vertex_data['*'].dataView\n // const uints = new Uint32Array(\n // dataView.buffer.slice(dataView.byteOffset, dataView.byteOffset + dataView.byteLength)\n // )\n // for (let i = 0; i < uints.length; i += 5) {\n // console.log('texture id', uints[i + 4])\n // }\n pickTexture(pickPass, dataView, Textures.getTexture(texture_id))\n },\n pick_triangle: (vertex_data) => {\n const dataView = vertex_data['*'].dataView\n pickTriangle(pickPass, dataView)\n },\n })\n\n let rafId = 0\n const lastPickPointer: Point = { x: 0, y: 0 }\n\n function draw(_now: DOMHighResTimeStamp) {\n const encoder = device.createCommandEncoder()\n\n const canvasDescriptor = getCanvasRenderDescriptor(context, device)\n renderPass = encoder.beginRenderPass(canvasDescriptor)\n const canvasMatrix = getCanvasMatrix(canvas)\n device.queue.writeBuffer(canvasMatrixBuffer, 0, canvasMatrix)\n // time = performance.now()\n render_draw()\n renderPass.end()\n\n if (pointer.afterPickEventsQueue.length === 0) {\n onEmptyEvents()\n }\n\n const needsUpdatePick =\n pointer.afterPickEventsQueue.length > 0 ||\n lastPickPointer.x !== pointer.x ||\n lastPickPointer.y !== pointer.y\n\n if (needsUpdatePick) {\n lastPickPointer.x = pointer.x\n lastPickPointer.y = pointer.y\n const pickMatrix = pickManager.createMatrix(canvas, canvasMatrix)\n device.queue.writeBuffer(pickCanvasMatrixBuffer, 0, pickMatrix)\n const pick = pickManager.startPicking(encoder)\n pickPass = pick.pass\n render_pick()\n pick.end()\n }\n\n const commandBuffer = encoder.finish()\n device.queue.submit([commandBuffer])\n cleanupPrograms()\n\n pickManager.asyncPick()\n\n rafId = requestAnimationFrame(draw)\n }\n\n rafId = requestAnimationFrame(draw)\n\n return () => {\n cancelAnimationFrame(rafId)\n }\n}\n","export const STRAIGHT_LINE_HANDLE = { x: 1e11, y: 0 }\n","import { Node } from 'svg-parser'\nimport * as Logic from 'logic/index.zig'\nimport parsePathData from './parsePathData'\nimport parseRect from './parseRect'\nimport type { PathSegment } from './types'\nimport parseColor from './parseColor'\nimport parseEllipse from './parseEllipse'\n\nexport default function createShapes(node: Node, svgHeight: number): void {\n if (!('children' in node)) return\n\n node.children.forEach((child) => {\n if (typeof child !== 'string') {\n if ('properties' in child && typeof child.properties === 'object') {\n const props = child.properties\n const serializedProps: ShapeProps = {}\n if (props.fill) {\n const rgba = parseColor(props.fill as string)\n serializedProps.fill_color = rgba\n }\n let result: PathSegment[][] | undefined = undefined\n\n switch (child.tagName) {\n case 'path':\n if (typeof props?.d !== 'string') {\n throw Error(\"Path without 'd' property\")\n }\n result = parsePathData(props.d, svgHeight)\n break\n case 'rect':\n if (typeof props?.width !== 'number' || typeof props?.height !== 'number') {\n throw Error(\"Path without 'd' property\")\n }\n result = [parseRect(props.width, props.height, svgHeight)]\n break\n case 'ellipse':\n if (typeof props?.rx !== 'number' || typeof props?.ry !== 'number') {\n throw Error(\"Ellipse without 'rx' or 'ry' property\")\n }\n if (typeof props?.cx !== 'number' || typeof props?.cy !== 'number') {\n throw Error(\"Ellipse without 'cx' or 'cy' property\")\n }\n result = [parseEllipse(props.cx, props.cy, props.rx, props.ry, svgHeight)]\n }\n\n if (result) {\n Logic.add_shape(result, serializedProps)\n }\n }\n createShapes(child, svgHeight)\n }\n })\n}\n","// we use canvas to support ALL possible way of describing color in CSS\nexport default function parseCssColorToRgba(cssColor: string): [number, number, number, number] {\n // Create a temporary canvas element\n const canvas = new OffscreenCanvas(1, 1)\n const ctx = canvas.getContext('2d')!\n\n // Set the fillStyle to the CSS color and draw a 1x1 rectangle\n ctx.fillStyle = cssColor\n ctx.fillRect(0, 0, 1, 1)\n\n // Read the pixel data from the canvas\n const imageData = ctx.getImageData(0, 0, 1, 1)\n const [r, g, b, a] = imageData.data\n\n // Return normalized RGBA values (0-1 range)\n return [\n r / 255, // red\n g / 255, // green\n b / 255, // blue\n a / 255, // alpha\n ]\n}\n","import { BezierCurve } from './types'\n\ninterface Point {\n x: number\n y: number\n}\n\nexport default function parseEllipse(\n cx: number,\n cy: number,\n rx: number,\n ry: number,\n svgHeight: number\n): BezierCurve[] {\n // Convert center y-coordinate to Cartesian space\n const centerY = svgHeight - cy\n\n // Magic number for cubic Bezier approximation of a circle/ellipse\n // This creates a very close approximation using 4 cubic Bezier curves\n const kappa = 0.5522847498307936 // (4/3) * tan(π/8)\n\n // Calculate control point offsets\n const kx = kappa * rx\n const ky = kappa * ry\n\n // Define the 8 key points (4 corners + 4 control points for each quadrant)\n const rightPoint: Point = { x: cx + rx, y: centerY }\n const topPoint: Point = { x: cx, y: centerY + ry }\n const leftPoint: Point = { x: cx - rx, y: centerY }\n const bottomPoint: Point = { x: cx, y: centerY - ry }\n\n // Create four Bezier curves that form the ellipse\n const curves: BezierCurve[] = [\n // First quadrant: right to top\n [\n rightPoint,\n { x: cx + rx, y: centerY + ky }, // control point 1\n { x: cx + kx, y: centerY + ry }, // control point 2\n topPoint,\n ],\n\n // Second quadrant: top to left\n [\n topPoint,\n { x: cx - kx, y: centerY + ry }, // control point 1\n { x: cx - rx, y: centerY + ky }, // control point 2\n leftPoint,\n ],\n\n // Third quadrant: left to bottom\n [\n leftPoint,\n { x: cx - rx, y: centerY - ky }, // control point 1\n { x: cx - kx, y: centerY - ry }, // control point 2\n bottomPoint,\n ],\n\n // Fourth quadrant: bottom to right\n [\n bottomPoint,\n { x: cx + kx, y: centerY - ry }, // control point 1\n { x: cx + rx, y: centerY - ky }, // control point 2\n rightPoint,\n ],\n ]\n\n return curves\n}\n","import { STRAIGHT_LINE_HANDLE } from './const'\nimport { Line, BezierCurve, PathSegment } from './types'\n\ninterface PathCommand {\n command: string\n args: number[]\n}\n\nfunction getDataPathCommands(pathData: string): PathCommand[] {\n // Remove whitespace and split by command letters\n const commands: PathCommand[] = []\n const commandRegex = /([MmLlHhVvCcSsQqTtAaZz])\\s*([^MmLlHhVvCcSsQqTtAaZz]*)/g\n\n let match\n while ((match = commandRegex.exec(pathData)) !== null) {\n const command = match[1]\n const argsString = match[2].trim()\n\n // Parse numeric arguments\n const args: number[] = []\n if (argsString) {\n const numbers = argsString.match(/-?[0-9]*\\.?[0-9]+(?:[eE][-+]?[0-9]+)?/g)\n if (numbers) {\n args.push(...numbers.map(parseFloat))\n }\n }\n\n commands.push({ command, args })\n }\n\n return commands\n}\n\nfunction reflectY(y: number, svgHeight: number): number {\n return svgHeight - y\n}\n\nfunction commandsToSegments(commands: PathCommand[], svgHeight: number): PathSegment[][] {\n const allPaths: PathSegment[][] = []\n\n let currentSegments: PathSegment[] = []\n let currentPoint: Point = { x: 0, y: reflectY(0, svgHeight) }\n let pathStart: Point = { x: 0, y: reflectY(0, svgHeight) }\n let lastControlPoint: Point | null = null\n\n const finishCurrentPath = () => {\n if (currentSegments.length > 0) {\n allPaths.push([...currentSegments])\n currentSegments = []\n }\n }\n\n for (const { command, args } of commands) {\n switch (command.toLowerCase()) {\n case 'm': {\n // MoveTo - start a new sub-path if we have existing segments\n if (currentSegments.length > 0) {\n finishCurrentPath()\n }\n\n const isRelative = command === 'm'\n for (let i = 0; i < args.length; i += 2) {\n if (i === 0) {\n // First move is absolute for both M and m\n currentPoint = {\n x: isRelative ? currentPoint.x + args[i] : args[i],\n y: isRelative ? currentPoint.y - args[i + 1] : reflectY(args[i + 1], svgHeight),\n }\n pathStart = { ...currentPoint }\n } else {\n // Subsequent moves are treated as LineTo\n const newPoint = {\n x: args[i] + (isRelative ? currentPoint.x : 0),\n y: isRelative ? currentPoint.y - args[i + 1] : reflectY(args[i + 1], svgHeight),\n }\n const lineSegment: Line = [\n currentPoint,\n STRAIGHT_LINE_HANDLE,\n STRAIGHT_LINE_HANDLE,\n newPoint,\n ]\n currentSegments.push(lineSegment)\n currentPoint = newPoint\n }\n }\n lastControlPoint = null\n break\n }\n\n case 'l': {\n // LineTo\n const isRelative = command === 'l'\n for (let i = 0; i < args.length; i += 2) {\n const newPoint: Point = {\n x: args[i] + (isRelative ? currentPoint.x : 0),\n y: isRelative ? currentPoint.y - args[i + 1] : reflectY(args[i + 1], svgHeight),\n }\n const lineSegment: Line = [\n currentPoint,\n STRAIGHT_LINE_HANDLE,\n STRAIGHT_LINE_HANDLE,\n newPoint,\n ]\n currentSegments.push(lineSegment)\n currentPoint = newPoint\n }\n lastControlPoint = null\n break\n }\n\n case 'h': {\n // Horizontal LineTo\n const isRelative = command === 'h'\n for (const x of args) {\n const newPoint: Point = {\n x: x + (isRelative ? currentPoint.x : 0),\n y: currentPoint.y, // y stays the same for horizontal lines\n }\n const lineSegment: Line = [\n currentPoint,\n STRAIGHT_LINE_HANDLE,\n STRAIGHT_LINE_HANDLE,\n newPoint,\n ]\n currentSegments.push(lineSegment)\n currentPoint = newPoint\n }\n lastControlPoint = null\n break\n }\n\n case 'v': {\n // Vertical LineTo\n const isRelative = command === 'v'\n for (const y of args) {\n const newPoint: Point = {\n x: currentPoint.x, // x stays the same for vertical lines\n y: isRelative ? currentPoint.y - y : reflectY(y, svgHeight),\n }\n const lineSegment: Line = [\n currentPoint,\n STRAIGHT_LINE_HANDLE,\n STRAIGHT_LINE_HANDLE,\n newPoint,\n ]\n currentSegments.push(lineSegment)\n currentPoint = newPoint\n }\n lastControlPoint = null\n break\n }\n\n case 'c': {\n // Cubic Bezier\n const isRelative = command === 'c'\n for (let i = 0; i < args.length; i += 6) {\n const cp1: Point = {\n x: args[i] + (isRelative ? currentPoint.x : 0),\n y: isRelative ? currentPoint.y - args[i + 1] : reflectY(args[i + 1], svgHeight),\n }\n const cp2: Point = {\n x: args[i + 2] + (isRelative ? currentPoint.x : 0),\n y: isRelative ? currentPoint.y - args[i + 3] : reflectY(args[i + 3], svgHeight),\n }\n const endPoint: Point = {\n x: args[i + 4] + (isRelative ? currentPoint.x : 0),\n y: isRelative ? currentPoint.y - args[i + 5] : reflectY(args[i + 5], svgHeight),\n }\n\n const curveSegment: BezierCurve = [currentPoint, cp1, cp2, endPoint]\n currentSegments.push(curveSegment)\n currentPoint = endPoint\n lastControlPoint = cp2\n }\n break\n }\n\n case 's': {\n // Smooth Cubic Bezier\n const isRelative = command === 's'\n for (let i = 0; i < args.length; i += 4) {\n // First control point is reflection of last control point\n const cp1: Point = lastControlPoint\n ? {\n x: 2 * currentPoint.x - lastControlPoint.x,\n y: 2 * currentPoint.y - lastControlPoint.y,\n }\n : { ...currentPoint }\n\n const cp2: Point = {\n x: args[i] + (isRelative ? currentPoint.x : 0),\n y: isRelative ? currentPoint.y - args[i + 1] : reflectY(args[i + 1], svgHeight),\n }\n const endPoint: Point = {\n x: args[i + 2] + (isRelative ? currentPoint.x : 0),\n y: isRelative ? currentPoint.y - args[i + 3] : reflectY(args[i + 3], svgHeight),\n }\n\n const curveSegment: BezierCurve = [currentPoint, cp1, cp2, endPoint]\n currentSegments.push(curveSegment)\n currentPoint = endPoint\n lastControlPoint = cp2\n }\n break\n }\n\n case 'z': {\n // ClosePath - close current path and start a new one\n if (currentPoint.x !== pathStart.x || currentPoint.y !== pathStart.y) {\n const lineSegment: Line = [\n currentPoint,\n STRAIGHT_LINE_HANDLE,\n STRAIGHT_LINE_HANDLE,\n pathStart,\n ]\n currentSegments.push(lineSegment)\n }\n currentPoint = pathStart\n lastControlPoint = null\n\n // Finish the current path (this creates a new array)\n finishCurrentPath()\n break\n }\n\n // Note: Q, T, A commands not implemented yet (quadratic bezier and arc)\n default:\n console.warn(`SVG path command '${command}' not supported yet`)\n lastControlPoint = null\n }\n }\n\n // Finish any remaining path\n finishCurrentPath()\n\n return allPaths\n}\n\nexport default function parsePathData(dAttribute: string, svgHeight: number): PathSegment[][] {\n const commands = getDataPathCommands(dAttribute)\n const pathData = commandsToSegments(commands, svgHeight)\n\n return pathData\n}\n","import { STRAIGHT_LINE_HANDLE } from './const'\nimport { Line } from './types'\n\nexport default function parseRect(width: number, height: number, svgHeight: number): Line[] {\n // Define the four corners of the rectangle in Cartesian space\n const topLeft: Point = { x: 0, y: height }\n const topRight: Point = { x: width, y: height }\n const bottomRight: Point = { x: width, y: 0 }\n const bottomLeft: Point = { x: 0, y: 0 }\n\n // Create four lines that form the rectangle\n const lines: Line[] = [\n // Top edge: left to right\n [topLeft, STRAIGHT_LINE_HANDLE, STRAIGHT_LINE_HANDLE, topRight],\n\n // Right edge: top to bottom\n [topRight, STRAIGHT_LINE_HANDLE, STRAIGHT_LINE_HANDLE, bottomRight],\n\n // Bottom edge: right to left\n [bottomRight, STRAIGHT_LINE_HANDLE, STRAIGHT_LINE_HANDLE, bottomLeft],\n\n // Left edge: bottom to top\n [bottomLeft, STRAIGHT_LINE_HANDLE, STRAIGHT_LINE_HANDLE, topLeft],\n ]\n\n return lines\n}\n","import getLoadingTexture from 'loadingTexture'\nimport { parse, RootNode, ElementNode } from 'svg-parser'\nimport { createTextureFromSource } from 'WebGPU/getTexture'\nimport createShapes from 'shapes/createShape'\n\nlet device: GPUDevice\nlet textures: TextureSource[]\nlet loadingTexture: GPUTexture\nlet updateProcessing: () => void\nlet loadingTextures: number\n\nexport function init(\n _device: GPUDevice,\n _updateProcessing: (loadingTextures: number) => void\n): void {\n device = _device\n textures = []\n loadingTexture = getLoadingTexture(device)\n updateProcessing = () => _updateProcessing(loadingTextures)\n loadingTextures = 0\n}\n\nexport interface TextureSource {\n url: string\n texture?: GPUTexture\n hash?: string\n data?: Uint8ClampedArray // it's time consuming to obtain data from a GPUTexture later\n}\n\nexport function add(\n url: string,\n callback?: (width: number, height: number, isNew: boolean) => void\n): number {\n loadingTextures++\n updateProcessing()\n\n const sameUrl = textures.find((t) => t.url === url)\n if (sameUrl) {\n loadingTextures--\n updateProcessing()\n callback?.(sameUrl.texture!.width, sameUrl.texture!.height, false)\n return textures.indexOf(sameUrl)\n }\n\n const textureId = textures.length\n // we allow duplicates in textures array\n textures.push({ url })\n\n getImageWithDetails(url).then(([img, svgTree]) => {\n if (svgTree) {\n const svgRoot = svgTree.children[0] as ElementNode\n console.log(svgRoot)\n\n const svgHeight = svgRoot.properties?.height || img.naturalHeight\n if (!svgHeight || typeof svgHeight !== 'number') throw Error('SVG height is required')\n createShapes(svgRoot, svgHeight)\n return\n }\n const { ctx } = getImageData(img, img.naturalWidth, img.naturalHeight)\n const data = ctx.getImageData(0, 0, img.naturalWidth, img.naturalHeight).data\n const hash = hashImageData(data)\n\n const existingTexture = findSameTexture(data, hash)\n if (existingTexture !== null) {\n textures[textureId] = existingTexture\n } else {\n textures[textureId].texture = createTextureFromSource(device, img, { flipY: true })\n textures[textureId].data = data\n textures[textureId].hash = hash\n }\n\n callback?.(img.width, img.height, !existingTexture)\n\n loadingTextures--\n updateProcessing()\n })\n\n return textureId\n}\n\nexport function getTexture(textureId: number): GPUTexture {\n return textures[textureId].texture ?? loadingTexture\n}\n\nexport function setTexture(texture: GPUTexture, optionalId: number | null) {\n if (optionalId !== null) {\n textures[optionalId].texture?.destroy()\n }\n\n const id = optionalId ?? textures.length\n textures[id] = {\n url: 'cache',\n texture,\n }\n\n return id\n}\n\nexport function getUrl(textureId: number): string {\n return textures[textureId].url\n}\n\nfunction getImageData(img: CanvasImageSource, width: number, height: number) {\n const canvas = new OffscreenCanvas(width, height)\n const ctx = canvas.getContext('2d')!\n ctx.drawImage(img, 0, 0, width, height)\n return { canvas, ctx }\n}\n\n/**\n * A simple, non-cryptographic hash function (djb2) for raw pixel data.\n * @param data The Uint8ClampedArray from getImageData.\n * @returns A hash string.\n */\nfunction hashImageData(data: Uint8ClampedArray): string {\n let hash = 5381\n for (let i = 0; i < data.length; i++) {\n // Bitwise operations are fast\n hash = (hash << 5) + hash + data[i] /* hash * 33 + c */\n }\n return String(hash)\n}\n\nfunction findSameTexture(imgData: Uint8ClampedArray, hash: string): TextureSource | null {\n for (let i = 0; i < textures.length; i++) {\n const texture = textures[i]\n if (texture.hash === hash) {\n // if hashes match, perform the more expensive full pixel check\n if (imgData.length !== texture.data!.length) {\n return null\n }\n\n for (let i = 0; i < imgData.length; i++) {\n if (imgData[i] !== texture.data![i]) {\n return null\n }\n }\n return texture\n }\n }\n\n return null\n}\n\nexport function updateTextureUrl(textureId: number, url: string) {\n textures[textureId].url = url\n}\n\nasync function getImageWithDetails(url: string): Promise<[HTMLImageElement, RootNode | null]> {\n return Promise.all([\n new Promise<HTMLImageElement>((resolve) => {\n const img = new Image()\n img.src = url\n img.onload = () => resolve(img)\n }),\n new Promise<RootNode | null>((resolve) => {\n fetch(url)\n .then((response) => response.text())\n .then((text) => {\n if (text.includes('<svg')) {\n resolve(parse(text))\n } else {\n resolve(null)\n }\n })\n }),\n ])\n}\n","export default function clamp(value: number, min: number, max: number) {\n return Math.min(max, Math.max(min, value))\n}","import clamp from 'utils/clamp'\n\nexport default function getDefaultPoints(\n texWidth: number,\n texHeight: number,\n projectWidth: number,\n projectHeight: number\n): PointUV[] {\n const scale = getDefaultTextureScale(texWidth, texHeight, projectWidth, projectHeight)\n const scaledWidth = texWidth * scale\n const scaledHeight = texHeight * scale\n const paddingX = (projectWidth - scaledWidth) * 0.5\n const paddingY = (projectHeight - scaledHeight) * 0.5\n\n return [\n { x: paddingX, y: paddingY + scaledHeight, u: 0, v: 1 },\n { x: paddingX + scaledWidth, y: paddingY + scaledHeight, u: 1, v: 1 },\n { x: paddingX + scaledWidth, y: paddingY, u: 1, v: 0 },\n { x: paddingX, y: paddingY, u: 0, v: 0 },\n ]\n}\n\n/**\n * Returns visualy pleasant size of texture, to make sure it doesn't overflow canvas but also is not too small to manipulate\n */\nfunction getDefaultTextureScale(\n texWidth: number,\n texHeight: number,\n projectWidth: number,\n projectHeight: number\n) {\n const heightDiff = projectHeight - texHeight\n const widthDiff = projectWidth - texWidth\n\n if (heightDiff < widthDiff) {\n const height = clamp(texHeight, projectHeight * 0.2, projectHeight * 0.8)\n return height / texHeight\n }\n\n const width = clamp(texWidth, projectWidth * 0.2, projectWidth * 0.8)\n return width / texWidth\n}\n","\nconst vec3 = {\n cross(a: number[] | Float32Array, b: number[] | Float32Array, dst = new Float32Array(3)) {\n const t0 = a[1] * b[2] - a[2] * b[1]\n const t1 = a[2] * b[0] - a[0] * b[2]\n const t2 = a[0] * b[1] - a[1] * b[0]\n\n dst[0] = t0\n dst[1] = t1\n dst[2] = t2\n\n return dst\n },\n\n subtract(a: number[] | Float32Array, b: number[] | Float32Array, dst = new Float32Array(3)) {\n dst[0] = a[0] - b[0]\n dst[1] = a[1] - b[1]\n dst[2] = a[2] - b[2]\n\n return dst\n },\n\n normalize(v : number[] | Float32Array, dst = new Float32Array(3)) {\n const length = Math.sqrt(v[0] * v[0] + v[1] * v[1] + v[2] * v[2])\n // make sure we don't divide by 0.\n if (length > 0.00001) {\n dst[0] = v[0] / length\n dst[1] = v[1] / length\n dst[2] = v[2] / length\n } else {\n dst[0] = 0\n dst[1] = 0\n dst[2] = 0\n }\n\n return dst\n },\n}\n\nexport default vec3","import vec3 from \"./vec3\"\n\nconst mat4 = {\n projection(width: number, height: number, depth: number, dst: Float32Array) {\n // Note: This matrix flips the Y axis so that 0 is at the top.\n return mat4.ortho(0, width, height, 0, depth, -depth, dst)\n },\n\n perspective(fieldOfViewYInRadians: number, aspect: number, zNear: number, zFar: number, dst = new Float32Array(16)) {\n const f = Math.tan(Math.PI * 0.5 - 0.5 * fieldOfViewYInRadians)\n const rangeInv = 1 / (zNear - zFar)\n\n dst[0] = f / aspect\n dst[1] = 0\n dst[2] = 0\n dst[3] = 0\n\n dst[4] = 0\n dst[5] = f\n dst[6] = 0\n dst[7] = 0\n\n dst[8] = 0\n dst[9] = 0\n dst[10] = zFar * rangeInv\n dst[11] = -1\n\n dst[12] = 0\n dst[13] = 0\n dst[14] = zNear * zFar * rangeInv\n dst[15] = 0\n\n return dst\n },\n\n ortho(left: number, right: number, bottom: number, top: number, near: number, far: number, dst = new Float32Array(16)) {\n dst[0] = 2 / (right - left)\n dst[1] = 0\n dst[2] = 0\n dst[3] = 0\n\n dst[4] = 0\n dst[5] = 2 / (top - bottom)\n dst[6] = 0\n dst[7] = 0\n\n dst[8] = 0\n dst[9] = 0\n dst[10] = 1 / (near - far)\n dst[11] = 0\n\n dst[12] = (right + left) / (left - right)\n dst[13] = (top + bottom) / (bottom - top)\n dst[14] = near / (near - far)\n dst[15] = 1\n\n return dst\n },\n\n identity(dst = new Float32Array(16)) {\n dst[ 0] = 1; dst[ 1] = 0; dst[ 2] = 0; dst[ 3] = 0\n dst[ 4] = 0; dst[ 5] = 1; dst[ 6] = 0; dst[ 7] = 0\n dst[ 8] = 0; dst[ 9] = 0; dst[10] = 1; dst[11] = 0\n dst[12] = 0; dst[13] = 0; dst[14] = 0; dst[15] = 1\n return dst\n },\n\n multiply(a: Float32Array, b: Float32Array, dst = new Float32Array(16)) {\n const b00 = b[0 * 4 + 0]\n const b01 = b[0 * 4 + 1]\n const b02 = b[0 * 4 + 2]\n const b03 = b[0 * 4 + 3]\n const b10 = b[1 * 4 + 0]\n const b11 = b[1 * 4 + 1]\n const b12 = b[1 * 4 + 2]\n const b13 = b[1 * 4 + 3]\n const b20 = b[2 * 4 + 0]\n const b21 = b[2 * 4 + 1]\n const b22 = b[2 * 4 + 2]\n const b23 = b[2 * 4 + 3]\n const b30 = b[3 * 4 + 0]\n const b31 = b[3 * 4 + 1]\n const b32 = b[3 * 4 + 2]\n const b33 = b[3 * 4 + 3]\n const a00 = a[0 * 4 + 0]\n const a01 = a[0 * 4 + 1]\n const a02 = a[0 * 4 + 2]\n const a03 = a[0 * 4 + 3]\n const a10 = a[1 * 4 + 0]\n const a11 = a[1 * 4 + 1]\n const a12 = a[1 * 4 + 2]\n const a13 = a[1 * 4 + 3]\n const a20 = a[2 * 4 + 0]\n const a21 = a[2 * 4 + 1]\n const a22 = a[2 * 4 + 2]\n const a23 = a[2 * 4 + 3]\n const a30 = a[3 * 4 + 0]\n const a31 = a[3 * 4 + 1]\n const a32 = a[3 * 4 + 2]\n const a33 = a[3 * 4 + 3]\n\n dst[0] = b00 * a00 + b01 * a10 + b02 * a20 + b03 * a30\n dst[1] = b00 * a01 + b01 * a11 + b02 * a21 + b03 * a31\n dst[2] = b00 * a02 + b01 * a12 + b02 * a22 + b03 * a32\n dst[3] = b00 * a03 + b01 * a13 + b02 * a23 + b03 * a33\n\n dst[4] = b10 * a00 + b11 * a10 + b12 * a20 + b13 * a30\n dst[5] = b10 * a01 + b11 * a11 + b12 * a21 + b13 * a31\n dst[6] = b10 * a02 + b11 * a12 + b12 * a22 + b13 * a32\n dst[7] = b10 * a03 + b11 * a13 + b12 * a23 + b13 * a33\n\n dst[8] = b20 * a00 + b21 * a10 + b22 * a20 + b23 * a30\n dst[9] = b20 * a01 + b21 * a11 + b22 * a21 + b23 * a31\n dst[10] = b20 * a02 + b21 * a12 + b22 * a22 + b23 * a32\n dst[11] = b20 * a03 + b21 * a13 + b22 * a23 + b23 * a33\n\n dst[12] = b30 * a00 + b31 * a10 + b32 * a20 + b33 * a30\n dst[13] = b30 * a01 + b31 * a11 + b32 * a21 + b33 * a31\n dst[14] = b30 * a02 + b31 * a12 + b32 * a22 + b33 * a32\n dst[15] = b30 * a03 + b31 * a13 + b32 * a23 + b33 * a33\n\n return dst\n },\n\n cameraAim(eye: number[] | Float32Array, target: number[], up: number[], dst = new Float32Array(16)) {\n const zAxis = vec3.normalize(vec3.subtract(eye, target))\n const xAxis = vec3.normalize(vec3.cross(up, zAxis))\n const yAxis = vec3.normalize(vec3.cross(zAxis, xAxis))\n\n dst[ 0] = xAxis[0]; dst[ 1] = xAxis[1]; dst[ 2] = xAxis[2]; dst[ 3] = 0\n dst[ 4] = yAxis[0]; dst[ 5] = yAxis[1]; dst[ 6] = yAxis[2]; dst[ 7] = 0\n dst[ 8] = zAxis[0]; dst[ 9] = zAxis[1]; dst[10] = zAxis[2]; dst[11] = 0\n dst[12] = eye[0]; dst[13] = eye[1]; dst[14] = eye[2]; dst[15] = 1\n\n return dst\n },\n\n inverse(m: Float32Array, dst = new Float32Array(16)) {\n const m00 = m[0 * 4 + 0]\n const m01 = m[0 * 4 + 1]\n const m02 = m[0 * 4 + 2]\n const m03 = m[0 * 4 + 3]\n const m10 = m[1 * 4 + 0]\n const m11 = m[1 * 4 + 1]\n const m12 = m[1 * 4 + 2]\n const m13 = m[1 * 4 + 3]\n const m20 = m[2 * 4 + 0]\n const m21 = m[2 * 4 + 1]\n const m22 = m[2 * 4 + 2]\n const m23 = m[2 * 4 + 3]\n const m30 = m[3 * 4 + 0]\n const m31 = m[3 * 4 + 1]\n const m32 = m[3 * 4 + 2]\n const m33 = m[3 * 4 + 3]\n\n const tmp0 = m22 * m33\n const tmp1 = m32 * m23\n const tmp2 = m12 * m33\n const tmp3 = m32 * m13\n const tmp4 = m12 * m23\n const tmp5 = m22 * m13\n const tmp6 = m02 * m33\n const tmp7 = m32 * m03\n const tmp8 = m02 * m23\n const tmp9 = m22 * m03\n const tmp10 = m02 * m13\n const tmp11 = m12 * m03\n const tmp12 = m20 * m31\n const tmp13 = m30 * m21\n const tmp14 = m10 * m31\n const tmp15 = m30 * m11\n const tmp16 = m10 * m21\n const tmp17 = m20 * m11\n const tmp18 = m00 * m31\n const tmp19 = m30 * m01\n const tmp20 = m00 * m21\n const tmp21 = m20 * m01\n const tmp22 = m00 * m11\n const tmp23 = m10 * m01\n\n const t0 = (tmp0 * m11 + tmp3 * m21 + tmp4 * m31) -\n (tmp1 * m11 + tmp2 * m21 + tmp5 * m31)\n const t1 = (tmp1 * m01 + tmp6 * m21 + tmp9 * m31) -\n (tmp0 * m01 + tmp7 * m21 + tmp8 * m31)\n const t2 = (tmp2 * m01 + tmp7 * m11 + tmp10 * m31) -\n (tmp3 * m01 + tmp6 * m11 + tmp11 * m31)\n const t3 = (tmp5 * m01 + tmp8 * m11 + tmp11 * m21) -\n (tmp4 * m01 + tmp9 * m11 + tmp10 * m21)\n\n const d = 1 / (m00 * t0 + m10 * t1 + m20 * t2 + m30 * t3)\n\n dst[0] = d * t0\n dst[1] = d * t1\n dst[2] = d * t2\n dst[3] = d * t3\n\n dst[4] = d * ((tmp1 * m10 + tmp2 * m20 + tmp5 * m30) -\n (tmp0 * m10 + tmp3 * m20 + tmp4 * m30))\n dst[5] = d * ((tmp0 * m00 + tmp7 * m20 + tmp8 * m30) -\n (tmp1 * m00 + tmp6 * m20 + tmp9 * m30))\n dst[6] = d * ((tmp3 * m00 + tmp6 * m10 + tmp11 * m30) -\n (tmp2 * m00 + tmp7 * m10 + tmp10 * m30))\n dst[7] = d * ((tmp4 * m00 + tmp9 * m10 + tmp10 * m20) -\n (tmp5 * m00 + tmp8 * m10 + tmp11 * m20))\n\n dst[8] = d * ((tmp12 * m13 + tmp15 * m23 + tmp16 * m33) -\n (tmp13 * m13 + tmp14 * m23 + tmp17 * m33))\n dst[9] = d * ((tmp13 * m03 + tmp18 * m23 + tmp21 * m33) -\n (tmp12 * m03 + tmp19 * m23 + tmp20 * m33))\n dst[10] = d * ((tmp14 * m03 + tmp19 * m13 + tmp22 * m33) -\n (tmp15 * m03 + tmp18 * m13 + tmp23 * m33))\n dst[11] = d * ((tmp17 * m03 + tmp20 * m13 + tmp23 * m23) -\n (tmp16 * m03 + tmp21 * m13 + tmp22 * m23))\n\n dst[12] = d * ((tmp14 * m22 + tmp17 * m32 + tmp13 * m12) -\n (tmp16 * m32 + tmp12 * m12 + tmp15 * m22))\n dst[13] = d * ((tmp20 * m32 + tmp12 * m02 + tmp19 * m22) -\n (tmp18 * m22 + tmp21 * m32 + tmp13 * m02))\n dst[14] = d * ((tmp18 * m12 + tmp23 * m32 + tmp15 * m02) -\n (tmp22 * m32 + tmp14 * m02 + tmp19 * m12))\n dst[15] = d * ((tmp22 * m22 + tmp16 * m02 + tmp21 * m12) -\n (tmp20 * m12 + tmp23 * m22 + tmp17 * m02))\n return dst\n },\n\n transpose(m: Float32Array, dst = new Float32Array(16)) {\n dst[ 0] = m[ 0]; dst[ 1] = m[ 4]; dst[ 2] = m[ 8]; dst[ 3] = m[12]\n dst[ 4] = m[ 1]; dst[ 5] = m[ 5]; dst[ 6] = m[ 9]; dst[ 7] = m[13]\n dst[ 8] = m[ 2]; dst[ 9] = m[ 6]; dst[10] = m[10]; dst[11] = m[14]\n dst[12] = m[ 3]; dst[13] = m[ 7]; dst[14] = m[11]; dst[15] = m[15]\n\n return dst\n },\n\n aim(eye: Float32Array | number[], target: number[], up: number[], dst = new Float32Array(16)) {\n const zAxis = vec3.normalize(vec3.subtract(target, eye))\n const xAxis = vec3.normalize(vec3.cross(up, zAxis))\n const yAxis = vec3.normalize(vec3.cross(zAxis, xAxis))\n \n dst[ 0] = xAxis[0]; dst[ 1] = xAxis[1]; dst[ 2] = xAxis[2]; dst[ 3] = 0\n dst[ 4] = yAxis[0]; dst[ 5] = yAxis[1]; dst[ 6] = yAxis[2]; dst[ 7] = 0\n dst[ 8] = zAxis[0]; dst[ 9] = zAxis[1]; dst[10] = zAxis[2]; dst[11] = 0\n dst[12] = eye[0]; dst[13] = eye[1]; dst[14] = eye[2]; dst[15] = 1\n \n return dst\n },\n\n lookAt(eye: number[] | Float32Array, target: number[], up: number[], dst?: Float32Array) {\n return mat4.inverse(mat4.cameraAim(eye, target, up, dst), dst)\n },\n\n translation([tx, ty, tz]: number[], dst = new Float32Array(16)) {\n dst[ 0] = 1; dst[ 1] = 0; dst[ 2] = 0; dst[ 3] = 0\n dst[ 4] = 0; dst[ 5] = 1; dst[ 6] = 0; dst[ 7] = 0\n dst[ 8] = 0; dst[ 9] = 0; dst[10] = 1; dst[11] = 0\n dst[12] = tx; dst[13] = ty; dst[14] = tz; dst[15] = 1\n return dst\n },\n\n rotationX(angleInRadians: number, dst = new Float32Array(16)) {\n const c = Math.cos(angleInRadians)\n const s = Math.sin(angleInRadians)\n dst[ 0] = 1; dst[ 1] = 0; dst[ 2] = 0; dst[ 3] = 0\n dst[ 4] = 0; dst[ 5] = c; dst[ 6] = s; dst[ 7] = 0\n dst[ 8] = 0; dst[ 9] = -s; dst[10] = c; dst[11] = 0\n dst[12] = 0; dst[13] = 0; dst[14] = 0; dst[15] = 1\n return dst\n },\n\n rotationY(angleInRadians: number, dst = new Float32Array(16)) {\n const c = Math.cos(angleInRadians)\n const s = Math.sin(angleInRadians)\n dst[ 0] = c; dst[ 1] = 0; dst[ 2] = -s; dst[ 3] = 0\n dst[ 4] = 0; dst[ 5] = 1; dst[ 6] = 0; dst[ 7] = 0\n dst[ 8] = s; dst[ 9] = 0; dst[10] = c; dst[11] = 0\n dst[12] = 0; dst[13] = 0; dst[14] = 0; dst[15] = 1\n return dst\n },\n\n rotationZ(angleInRadians: number, dst = new Float32Array(16)) {\n const c = Math.cos(angleInRadians)\n const s = Math.sin(angleInRadians)\n dst[ 0] = c; dst[ 1] = s; dst[ 2] = 0; dst[ 3] = 0\n dst[ 4] = -s; dst[ 5] = c; dst[ 6] = 0; dst[ 7] = 0\n dst[ 8] = 0; dst[ 9] = 0; dst[10] = 1; dst[11] = 0\n dst[12] = 0; dst[13] = 0; dst[14] = 0; dst[15] = 1\n return dst\n },\n\n scaling([sx, sy, sz]: number[], dst = new Float32Array(16)) {\n dst[ 0] = sx; dst[ 1] = 0; dst[ 2] = 0; dst[ 3] = 0\n dst[ 4] = 0; dst[ 5] = sy; dst[ 6] = 0; dst[ 7] = 0\n dst[ 8] = 0; dst[ 9] = 0; dst[10] = sz; dst[11] = 0\n dst[12] = 0; dst[13] = 0; dst[14] = 0; dst[15] = 1\n return dst\n },\n\n translate(m: Float32Array, translation: number[], dst?: Float32Array) {\n return mat4.multiply(m, mat4.translation(translation), dst)\n },\n\n rotateX(m: Float32Array, angleInRadians: number, dst?: Float32Array) {\n return mat4.multiply(m, mat4.rotationX(angleInRadians), dst)\n },\n\n rotateY(m: Float32Array, angleInRadians: number, dst?: Float32Array) {\n return mat4.multiply(m, mat4.rotationY(angleInRadians), dst)\n },\n\n rotateZ(m: Float32Array, angleInRadians: number, dst?: Float32Array) {\n return mat4.multiply(m, mat4.rotationZ(angleInRadians), dst)\n },\n\n scale(m: Float32Array, scale: number[], dst?: Float32Array) {\n return mat4.multiply(m, mat4.scaling(scale), dst)\n },\n}\n\nexport default mat4","import { createEnvironment } from \"zigar-runtime\";\nimport 'zigar-runtime/accessors/all.js';\nimport 'zigar-runtime/accessors/bool.js';\nimport 'zigar-runtime/accessors/uint.js';\nimport 'zigar-runtime/features/allocator-methods.js';\nimport 'zigar-runtime/features/call-marshaling-inbound.js';\nimport 'zigar-runtime/features/call-marshaling-outbound.js';\nimport 'zigar-runtime/features/data-copying.js';\nimport 'zigar-runtime/features/int-conversion.js';\nimport 'zigar-runtime/features/memory-mapping.js';\nimport 'zigar-runtime/features/module-loading.js';\nimport 'zigar-runtime/features/view-management.js';\nimport 'zigar-runtime/features/write-protection.js';\nimport 'zigar-runtime/iterators/for-array.js';\nimport 'zigar-runtime/iterators/for-struct.js';\nimport 'zigar-runtime/members/all.js';\nimport 'zigar-runtime/members/base64.js';\nimport 'zigar-runtime/members/bool.js';\nimport 'zigar-runtime/members/clamped-array.js';\nimport 'zigar-runtime/members/data-view.js';\nimport 'zigar-runtime/members/float.js';\nimport 'zigar-runtime/members/object.js';\nimport 'zigar-runtime/members/primitive.js';\nimport 'zigar-runtime/members/string.js';\nimport 'zigar-runtime/members/to-json.js';\nimport 'zigar-runtime/members/type.js';\nimport 'zigar-runtime/members/typed-array.js';\nimport 'zigar-runtime/members/uint.js';\nimport 'zigar-runtime/members/value-of.js';\nimport 'zigar-runtime/members/void.js';\nimport 'zigar-runtime/structures/all.js';\nimport 'zigar-runtime/structures/arg-struct.js';\nimport 'zigar-runtime/structures/array.js';\nimport 'zigar-runtime/structures/array-like.js';\nimport 'zigar-runtime/structures/enum.js';\nimport 'zigar-runtime/structures/error-set.js';\nimport 'zigar-runtime/structures/error-union.js';\nimport 'zigar-runtime/structures/function.js';\nimport 'zigar-runtime/structures/optional.js';\nimport 'zigar-runtime/structures/pointer.js';\nimport 'zigar-runtime/structures/primitive.js';\nimport 'zigar-runtime/structures/slice.js';\nimport 'zigar-runtime/structures/struct.js';\nimport 'zigar-runtime/structures/struct-like.js';\nimport 'zigar-runtime/visitors/all.js';\nimport 'zigar-runtime/visitors/in-arg-struct.js';\nimport 'zigar-runtime/visitors/in-array.js';\nimport 'zigar-runtime/visitors/in-optional.js';\nimport 'zigar-runtime/visitors/in-struct.js';\nimport 'zigar-runtime/features/baseline.js';\nimport 'zigar-runtime/features/thunk-allocation.js';\nimport 'zigar-runtime/features/pointer-synchronization.js';\nimport 'zigar-runtime/features/js-allocator.js';\nimport 'zigar-runtime/features/object-linkage.js';\nimport 'zigar-runtime/accessors/int.js';\n\n// structure defaults\nconst s = {\n constructor: null,\n type: 0,\n flags: 0,\n signature: undefined,\n name: undefined,\n byteSize: 0,\n align: 0,\n instance: {\n members: [],\n template: null,\n },\n static: {\n members: [],\n template: null,\n },\n};\n\n// member defaults\nconst m = {\n type: 0,\n flags: 0,\n};\n\n// declare structure objects\nconst s0 = {}, s1 = {}, s2 = {}, s3 = {}, s4 = {}, s5 = {}, s6 = {}, s7 = {}, s8 = {}, s9 = {};\nconst s10 = {}, s11 = {}, s12 = {}, s13 = {}, s14 = {}, s15 = {}, s16 = {}, s17 = {}, s18 = {}, s19 = {};\nconst s20 = {}, s21 = {}, s22 = {}, s23 = {}, s24 = {}, s25 = {}, s26 = {}, s27 = {}, s28 = {}, s29 = {};\nconst s30 = {}, s31 = {}, s32 = {}, s33 = {}, s34 = {}, s35 = {}, s36 = {}, s37 = {}, s38 = {}, s39 = {};\nconst s40 = {}, s41 = {}, s42 = {}, s43 = {}, s44 = {}, s45 = {}, s46 = {}, s47 = {}, s48 = {}, s49 = {};\nconst s50 = {}, s51 = {}, s52 = {}, s53 = {}, s54 = {}, s55 = {}, s56 = {}, s57 = {}, s58 = {}, s59 = {};\nconst s60 = {}, s61 = {}, s62 = {}, s63 = {}, s64 = {}, s65 = {}, s66 = {}, s67 = {}, s68 = {}, s69 = {};\nconst s70 = {}, s71 = {}, s72 = {}, s73 = {}, s74 = {}, s75 = {}, s76 = {}, s77 = {}, s78 = {}, s79 = {};\nconst s80 = {}, s81 = {}, s82 = {}, s83 = {}, s84 = {}, s85 = {}, s86 = {}, s87 = {}, s88 = {}, s89 = {};\nconst s90 = {}, s91 = {}, s92 = {}, s93 = {}, s94 = {}, s95 = {}, s96 = {}, s97 = {}, s98 = {}, s99 = {};\nconst s100 = {}, s101 = {}, s102 = {}, s103 = {}, s104 = {}, s105 = {}, s106 = {}, s107 = {}, s108 = {}, s109 = {};\nconst s110 = {}, s111 = {}, s112 = {}, s113 = {}, s114 = {}, s115 = {}, s116 = {}, s117 = {}, s118 = {}, s119 = {};\nconst s120 = {}, s121 = {}, s122 = {}, s123 = {}, s124 = {}, s125 = {}, s126 = {}, s127 = {}, s128 = {}, s129 = {};\nconst s130 = {}, s131 = {}, s132 = {}, s133 = {}, s134 = {}, s135 = {}, s136 = {}, s137 = {}, s138 = {}, s139 = {};\nconst s140 = {}, s141 = {}, s142 = {}, s143 = {}, s144 = {}, s145 = {}, s146 = {}, s147 = {}, s148 = {}, s149 = {};\nconst s150 = {}, s151 = {}, s152 = {}, s153 = {}, s154 = {}, s155 = {}, s156 = {}, s157 = {}, s158 = {}, s159 = {};\nconst s160 = {}, s161 = {}, s162 = {}, s163 = {}, s164 = {}, s165 = {}, s166 = {}, s167 = {}, s168 = {}, s169 = {};\nconst s170 = {}, s171 = {}, s172 = {}, s173 = {}, s174 = {}, s175 = {}, s176 = {}, s177 = {}, s178 = {}, s179 = {};\nconst s180 = {}, s181 = {}, s182 = {}, s183 = {}, s184 = {}, s185 = {}, s186 = {}, s187 = {}, s188 = {}, s189 = {};\nconst s190 = {}, s191 = {}, s192 = {}, s193 = {}, s194 = {}, s195 = {}, s196 = {}, s197 = {}, s198 = {}, s199 = {};\nconst s200 = {}, s201 = {}, s202 = {}, s203 = {}, s204 = {}, s205 = {};\n\n// declare objects\nconst o0 = {}, o1 = {}, o2 = {}, o3 = {}, o4 = {}, o5 = {}, o6 = {}, o7 = {}, o8 = {}, o9 = {};\nconst o10 = {}, o11 = {}, o12 = {}, o13 = {}, o14 = {}, o15 = {}, o16 = {}, o17 = {}, o18 = {}, o19 = {};\nconst o20 = {}, o21 = {}, o22 = {}, o23 = {}, o24 = {}, o25 = {}, o26 = {}, o27 = {}, o28 = {}, o29 = {};\nconst o30 = {}, o31 = {}, o32 = {}, o33 = {}, o34 = {}, o35 = {}, o36 = {}, o37 = {}, o38 = {}, o39 = {};\nconst o40 = {}, o41 = {}, o42 = {}, o43 = {}, o44 = {}, o45 = {}, o46 = {}, o47 = {}, o48 = {}, o49 = {};\nconst o50 = {}, o51 = {}, o52 = {}, o53 = {}, o54 = {}, o55 = {}, o56 = {}, o57 = {}, o58 = {}, o59 = {};\nconst o60 = {}, o61 = {}, o62 = {}, o63 = {}, o64 = {}, o65 = {}, o66 = {}, o67 = {}, o68 = {}, o69 = {};\nconst o70 = {}, o71 = {}, o72 = {}, o73 = {}, o74 = {}, o75 = {}, o76 = {}, o77 = {}, o78 = {}, o79 = {};\nconst o80 = {}, o81 = {}, o82 = {}, o83 = {}, o84 = {}, o85 = {}, o86 = {}, o87 = {}, o88 = {}, o89 = {};\nconst o90 = {}, o91 = {}, o92 = {}, o93 = {}, o94 = {}, o95 = {}, o96 = {}, o97 = {}, o98 = {}, o99 = {};\nconst o100 = {}, o101 = {}, o102 = {}, o103 = {}, o104 = {}, o105 = {}, o106 = {}, o107 = {}, o108 = {}, o109 = {};\nconst o110 = {}, o111 = {}, o112 = {}, o113 = {}, o114 = {}, o115 = {}, o116 = {}, o117 = {}, o118 = {}, o119 = {};\nconst o120 = {}, o121 = {}, o122 = {}, o123 = {}, o124 = {}, o125 = {}, o126 = {}, o127 = {}, o128 = {}, o129 = {};\nconst o130 = {}, o131 = {}, o132 = {}, o133 = {}, o134 = {}, o135 = {}, o136 = {}, o137 = {}, o138 = {}, o139 = {};\nconst o140 = {}, o141 = {}, o142 = {}, o143 = {}, o144 = {}, o145 = {}, o146 = {}, o147 = {}, o148 = {}, o149 = {};\nconst o150 = {}, o151 = {}, o152 = {}, o153 = {}, o154 = {}, o155 = {}, o156 = {}, o157 = {}, o158 = {}, o159 = {};\nconst o160 = {}, o161 = {}, o162 = {}, o163 = {}, o164 = {}, o165 = {}, o166 = {}, o167 = {}, o168 = {}, o169 = {};\nconst o170 = {}, o171 = {}, o172 = {}, o173 = {}, o174 = {}, o175 = {}, o176 = {}, o177 = {}, o178 = {}, o179 = {};\nconst o180 = {}, o181 = {}, o182 = {}, o183 = {}, o184 = {}, o185 = {}, o186 = {}, o187 = {}, o188 = {}, o189 = {};\nconst o190 = {}, o191 = {}, o192 = {}, o193 = {}, o194 = {}, o195 = {}, o196 = {}, o197 = {}, o198 = {}, o199 = {};\nconst o200 = {}, o201 = {}, o202 = {}, o203 = {}, o204 = {}, o205 = {}, o206 = {}, o207 = {}, o208 = {}, o209 = {};\nconst o210 = {}, o211 = {};\n\n// define byte arrays\nconst U = i => new Uint8Array(i);\nconst a0 = U(0);\nconst a1 = U(8);\nconst a2 = U(16);\nconst a3 = U(64);\nconst a4 = U(48);\nconst a5 = U(52);\nconst a6 = U(20);\nconst a7 = U(64);\nconst a8 = U(24);\nconst a9 = U(72);\nconst a10 = U(16);\nconst a11 = U(1);\nconst a12 = U([ 1 ]);\nconst a13 = U([ 2 ]);\nconst a14 = U([ 3 ]);\nconst a15 = U([ 4 ]);\nconst a16 = U([ 5 ]);\nconst a17 = U(1);\nconst a18 = U(a12);\nconst a19 = U(a13);\nconst a20 = U(1);\nconst a21 = U(a12);\nconst a22 = U(a13);\nconst a23 = U(a14);\nconst a24 = U(a15);\nconst a25 = U(a16);\nconst a26 = U([ 6 ]);\nconst a27 = U(16);\nconst a28 = U([ 8, 0 ]);\nconst a29 = U(8);\nconst a30 = U(a28);\nconst a31 = U(a28);\nconst a32 = U(a28);\nconst a33 = U(a28);\nconst a34 = U(a28);\nconst a35 = U(a28);\nconst a36 = U(a28);\nconst a37 = U(a28);\nconst a38 = U(a28);\nconst a39 = U(a28);\nconst a40 = U(1);\nconst a41 = U(a12);\nconst a42 = U(a28);\nconst a43 = U([ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 63, 0, 0, 0, 0 ]);\nconst a44 = U([ 232, 3, 0, 0 ]);\n\n// fill in object properties\nconst $ = Object.assign;\n$(o0, {\n memory: { array: a0 },\n handle: 99,\n});\n$(o1, {\n memory: { array: a0 },\n handle: 100,\n});\n$(o2, {\n memory: { array: a0 },\n handle: 101,\n});\n$(o3, {\n memory: { array: a1 },\n});\n$(o4, {\n slots: {\n 0: o5, 2: o6, 3: o7, 4: o8,\n },\n});\n$(o5, {\n structure: s3,\n memory: { array: a0 },\n handle: 60,\n});\n$(o6, {\n structure: s5,\n memory: { array: a0 },\n handle: 61,\n});\n$(o7, {\n structure: s3,\n memory: { array: a0 },\n handle: 62,\n});\n$(o8, {\n structure: s7,\n memory: { array: a0 },\n handle: 63,\n});\n$(o9, {\n memory: { array: a0 },\n handle: 86,\n});\n$(o10, {\n memory: { array: a0 },\n handle: 87,\n});\n$(o11, {\n memory: { array: a2 },\n});\n$(o12, {\n slots: {\n 0: o13, 1: o14, 2: o15,\n },\n});\n$(o13, {\n structure: s10,\n memory: { array: a0 },\n handle: 60,\n});\n$(o14, {\n structure: s12,\n memory: { array: a0 },\n handle: 76,\n});\n$(o15, {\n structure: s12,\n memory: { array: a0 },\n handle: 61,\n});\n$(o16, {\n memory: { array: a0 },\n handle: 44,\n});\n$(o17, {\n memory: { array: a0 },\n handle: 45,\n});\n$(o18, {\n memory: { array: a3 },\n});\n$(o19, {\n memory: { array: a0 },\n handle: 25,\n});\n$(o20, {\n memory: { array: a0 },\n handle: 46,\n});\n$(o21, {\n memory: { array: a4 },\n});\n$(o22, {\n memory: { array: a0 },\n handle: 47,\n});\n$(o23, {\n memory: { array: a0 },\n handle: 48,\n});\n$(o24, {\n memory: { array: a5 },\n});\n$(o25, {\n memory: { array: a0 },\n handle: 49,\n});\n$(o26, {\n memory: { array: a0 },\n handle: 50,\n});\n$(o27, {\n memory: { array: a6 },\n});\n$(o28, {\n memory: { array: a0 },\n handle: 49,\n});\n$(o29, {\n memory: { array: a0 },\n handle: 51,\n});\n$(o30, {\n memory: { array: a7 },\n});\n$(o31, {\n memory: { array: a0 },\n handle: 25,\n});\n$(o32, {\n memory: { array: a0 },\n handle: 52,\n});\n$(o33, {\n memory: { array: a8 },\n handle: 264364,\n slots: {\n 0: o34, 1: o36, 2: o38, 3: o40, 4: o42, 5: o44,\n },\n});\n$(o34, {\n structure: s18,\n memory: { array: a8, offset: 0, length: 4 },\n slots: {\n 0: o35,\n },\n});\n$(o35, {\n structure: s17,\n memory: { array: a0 },\n});\n$(o36, {\n structure: s27,\n memory: { array: a8, offset: 4, length: 4 },\n slots: {\n 0: o37,\n },\n});\n$(o37, {\n structure: s26,\n memory: { array: a0 },\n});\n$(o38, {\n structure: s34,\n memory: { array: a8, offset: 8, length: 4 },\n slots: {\n 0: o39,\n },\n});\n$(o39, {\n structure: s33,\n memory: { array: a0 },\n});\n$(o40, {\n structure: s41,\n memory: { array: a8, offset: 12, length: 4 },\n slots: {\n 0: o41,\n },\n});\n$(o41, {\n structure: s40,\n memory: { array: a0 },\n});\n$(o42, {\n structure: s47,\n memory: { array: a8, offset: 16, length: 4 },\n slots: {\n 0: o43,\n },\n});\n$(o43, {\n structure: s46,\n memory: { array: a0 },\n});\n$(o44, {\n structure: s53,\n memory: { array: a8, offset: 20, length: 4 },\n slots: {\n 0: o45,\n },\n});\n$(o45, {\n structure: s52,\n memory: { array: a0 },\n});\n$(o46, {\n memory: { array: a0 },\n handle: 24,\n});\n$(o47, {\n memory: { array: a9 },\n});\n$(o48, {\n memory: { array: a0 },\n handle: 25,\n});\n$(o49, {\n memory: { array: a0 },\n handle: 26,\n});\n$(o50, {\n memory: { array: a0 },\n handle: 27,\n});\n$(o51, {\n memory: { array: a0 },\n handle: 35,\n});\n$(o52, {\n memory: { array: a0 },\n handle: 36,\n});\n$(o53, {\n memory: { array: a0 },\n handle: 27,\n});\n$(o54, {\n memory: { array: a10 },\n});\n$(o55, {\n memory: { array: a0 },\n handle: 28,\n});\n$(o56, {\n memory: { array: a0 },\n handle: 29,\n});\n$(o57, {\n memory: { array: a0 },\n handle: 39,\n});\n$(o58, {\n memory: { array: a0 },\n handle: 40,\n});\n$(o59, {\n memory: { array: a0 },\n handle: 30,\n});\n$(o60, {\n memory: { array: a0 },\n handle: 88,\n});\n$(o61, {\n memory: { array: a0 },\n handle: 89,\n});\n$(o62, {\n memory: { array: a0 },\n handle: 102,\n});\n$(o63, {\n memory: { array: a0 },\n handle: 103,\n});\n$(o64, {\n memory: { array: a0 },\n handle: 105,\n});\n$(o65, {\n slots: {\n 0: o66, 1: o67, 2: o68, 3: o69, 4: o70, 5: o71, 6: o72,\n },\n});\n$(o66, {\n structure: s99,\n memory: { array: a0 },\n handle: 98,\n});\n$(o67, {\n structure: s100,\n memory: { array: a11 },\n const: true,\n});\n$(o68, {\n structure: s100,\n memory: { array: a12 },\n const: true,\n});\n$(o69, {\n structure: s100,\n memory: { array: a13 },\n const: true,\n});\n$(o70, {\n structure: s100,\n memory: { array: a14 },\n const: true,\n});\n$(o71, {\n structure: s100,\n memory: { array: a15 },\n const: true,\n});\n$(o72, {\n structure: s100,\n memory: { array: a16 },\n const: true,\n});\n$(o73, {\n memory: { array: a0 },\n handle: 104,\n});\n$(o74, {\n slots: {\n 0: o75, 1: o76, 2: o77, 3: o78, 4: o79, 5: o80,\n },\n});\n$(o75, {\n structure: s93,\n memory: { array: a0 },\n handle: 95,\n});\n$(o76, {\n structure: s96,\n memory: { array: a0 },\n handle: 96,\n});\n$(o77, {\n structure: s102,\n memory: { array: a0 },\n handle: 97,\n});\n$(o78, {\n structure: s103,\n memory: { array: a17 },\n const: true,\n});\n$(o79, {\n structure: s103,\n memory: { array: a18 },\n const: true,\n});\n$(o80, {\n structure: s103,\n memory: { array: a19 },\n const: true,\n});\n$(o81, {\n memory: { array: a0 },\n handle: 90,\n});\n$(o82, {\n memory: { array: a0 },\n handle: 91,\n});\n$(o83, {\n memory: { array: a0 },\n handle: 92,\n});\n$(o84, {\n memory: { array: a0 },\n handle: 93,\n});\n$(o85, {\n memory: { array: a0 },\n handle: 94,\n});\n$(o86, {\n slots: {\n 0: o87, 1: o88, 2: o89, 3: o90, 4: o91, 5: o92, 6: o93, 7: o94, 8: o95, 9: o96,\n 10: o97, 11: o98, 12: o99, 13: o100, 14: o101, 15: o102,\n },\n});\n$(o87, {\n structure: s89,\n memory: { array: a0 },\n handle: 77,\n});\n$(o88, {\n structure: s91,\n memory: { array: a0 },\n handle: 78,\n});\n$(o89, {\n structure: s105,\n memory: { array: a0 },\n handle: 79,\n});\n$(o90, {\n structure: s107,\n memory: { array: a0 },\n handle: 80,\n});\n$(o91, {\n structure: s109,\n memory: { array: a0 },\n handle: 81,\n});\n$(o92, {\n structure: s109,\n memory: { array: a0 },\n handle: 82,\n});\n$(o93, {\n structure: s111,\n memory: { array: a0 },\n handle: 83,\n});\n$(o94, {\n structure: s111,\n memory: { array: a0 },\n handle: 84,\n});\n$(o95, {\n structure: s113,\n memory: { array: a0 },\n handle: 85,\n});\n$(o96, {\n structure: s114,\n memory: { array: a20 },\n const: true,\n});\n$(o97, {\n structure: s114,\n memory: { array: a21 },\n const: true,\n});\n$(o98, {\n structure: s114,\n memory: { array: a22 },\n const: true,\n});\n$(o99, {\n structure: s114,\n memory: { array: a23 },\n const: true,\n});\n$(o100, {\n structure: s114,\n memory: { array: a24 },\n const: true,\n});\n$(o101, {\n structure: s114,\n memory: { array: a25 },\n const: true,\n});\n$(o102, {\n structure: s114,\n memory: { array: a26 },\n const: true,\n});\n$(o103, {\n memory: { array: a0 },\n handle: 64,\n});\n$(o104, {\n memory: { array: a0 },\n handle: 65,\n});\n$(o105, {\n memory: { array: a0 },\n handle: 66,\n});\n$(o106, {\n memory: { array: a0 },\n handle: 67,\n});\n$(o107, {\n memory: { array: a0 },\n handle: 68,\n});\n$(o108, {\n memory: { array: a0 },\n handle: 69,\n});\n$(o109, {\n memory: { array: a0 },\n handle: 70,\n});\n$(o110, {\n memory: { array: a0 },\n handle: 71,\n});\n$(o111, {\n memory: { array: a27 },\n handle: 264388,\n slots: {\n 0: o112, 1: o114, 2: o116, 3: o118,\n },\n});\n$(o112, {\n structure: s117,\n memory: { array: a27, offset: 0, length: 4 },\n slots: {\n 0: o113,\n },\n});\n$(o113, {\n structure: s116,\n memory: { array: a0 },\n});\n$(o114, {\n structure: s121,\n memory: { array: a27, offset: 4, length: 4 },\n slots: {\n 0: o115,\n },\n});\n$(o115, {\n structure: s120,\n memory: { array: a0 },\n});\n$(o116, {\n structure: s124,\n memory: { array: a27, offset: 8, length: 4 },\n slots: {\n 0: o117,\n },\n});\n$(o117, {\n structure: s123,\n memory: { array: a0 },\n});\n$(o118, {\n structure: s127,\n memory: { array: a27, offset: 12, length: 4 },\n slots: {\n 0: o119,\n },\n});\n$(o119, {\n structure: s126,\n memory: { array: a0 },\n});\n$(o120, {\n slots: {\n 0: o121,\n },\n});\n$(o121, {\n structure: s131,\n memory: { array: a28 },\n const: true,\n});\n$(o122, {\n memory: { array: a0 },\n handle: 72,\n});\n$(o123, {\n memory: { array: a0 },\n handle: 72,\n});\n$(o124, {\n memory: { array: a0 },\n handle: 73,\n});\n$(o125, {\n memory: { array: a0 },\n handle: 73,\n});\n$(o126, {\n memory: { array: a0 },\n handle: 74,\n});\n$(o127, {\n memory: { array: a0 },\n handle: 74,\n});\n$(o128, {\n memory: { array: a0 },\n handle: 75,\n});\n$(o129, {\n memory: { array: a0 },\n handle: 75,\n});\n$(o130, {\n memory: { array: a29 },\n handle: 264168,\n slots: {\n 0: o131, 1: o133,\n },\n});\n$(o131, {\n structure: s83,\n memory: { array: a29, offset: 0, length: 4 },\n slots: {\n 0: o132,\n },\n});\n$(o132, {\n structure: s82,\n memory: { array: a0 },\n});\n$(o133, {\n structure: s129,\n memory: { array: a29, offset: 4, length: 4 },\n});\n$(o134, {\n slots: {\n 0: o135, 1: o137, 2: o139, 3: o141, 4: o142, 5: o143, 6: o144, 7: o145, 8: o146, 9: o147,\n },\n});\n$(o135, {\n structure: s130,\n memory: { array: a0 },\n slots: {\n 0: o136,\n },\n});\n$(o136, {\n structure: s131,\n});\n$(o137, {\n structure: s130,\n memory: { array: a0 },\n slots: {\n 0: o138,\n },\n});\n$(o138, {\n structure: s132,\n});\n$(o139, {\n structure: s130,\n memory: { array: a0 },\n slots: {\n 0: o140,\n },\n});\n$(o140, {\n structure: s128,\n});\n$(o141, {\n structure: s120,\n memory: { array: a0 },\n handle: 53,\n});\n$(o142, {\n structure: s123,\n memory: { array: a0 },\n handle: 54,\n});\n$(o143, {\n structure: s126,\n memory: { array: a0 },\n handle: 55,\n});\n$(o144, {\n structure: s135,\n memory: { array: a0 },\n handle: 56,\n});\n$(o145, {\n structure: s138,\n memory: { array: a0 },\n handle: 57,\n});\n$(o146, {\n structure: s141,\n memory: { array: a0 },\n handle: 58,\n});\n$(o147, {\n structure: s144,\n memory: { array: a0 },\n handle: 59,\n});\n$(o148, {\n memory: { array: a0 },\n handle: 31,\n});\n$(o149, {\n slots: {\n 0: o150,\n },\n});\n$(o150, {\n structure: s148,\n memory: { array: a30 },\n const: true,\n});\n$(o151, {\n memory: { array: a0 },\n handle: 32,\n});\n$(o152, {\n slots: {\n 0: o153,\n },\n});\n$(o153, {\n structure: s152,\n memory: { array: a31 },\n const: true,\n});\n$(o154, {\n memory: { array: a0 },\n handle: 33,\n});\n$(o155, {\n slots: {\n 0: o156,\n },\n});\n$(o156, {\n structure: s156,\n memory: { array: a32 },\n const: true,\n});\n$(o157, {\n memory: { array: a0 },\n handle: 34,\n});\n$(o158, {\n slots: {\n 0: o159,\n },\n});\n$(o159, {\n structure: s160,\n memory: { array: a33 },\n const: true,\n});\n$(o160, {\n memory: { array: a0 },\n handle: 37,\n});\n$(o161, {\n slots: {\n 0: o162,\n },\n});\n$(o162, {\n structure: s164,\n memory: { array: a34 },\n const: true,\n});\n$(o163, {\n memory: { array: a0 },\n handle: 34,\n});\n$(o164, {\n memory: { array: a0 },\n handle: 38,\n});\n$(o165, {\n slots: {\n 0: o166,\n },\n});\n$(o166, {\n structure: s170,\n memory: { array: a35 },\n const: true,\n});\n$(o167, {\n memory: { array: a0 },\n handle: 34,\n});\n$(o168, {\n slots: {\n 0: o169,\n },\n});\n$(o169, {\n structure: s174,\n memory: { array: a36 },\n const: true,\n});\n$(o170, {\n memory: { array: a0 },\n handle: 34,\n});\n$(o171, {\n slots: {\n 0: o172,\n },\n});\n$(o172, {\n structure: s178,\n memory: { array: a37 },\n const: true,\n});\n$(o173, {\n memory: { array: a0 },\n handle: 34,\n});\n$(o174, {\n slots: {\n 0: o175,\n },\n});\n$(o175, {\n structure: s182,\n memory: { array: a38 },\n const: true,\n});\n$(o176, {\n memory: { array: a0 },\n handle: 41,\n});\n$(o177, {\n memory: { array: a0 },\n handle: 25,\n});\n$(o178, {\n slots: {\n 0: o179,\n },\n});\n$(o179, {\n structure: s190,\n memory: { array: a39 },\n const: true,\n});\n$(o180, {\n slots: {\n 0: o181, 1: o182,\n },\n});\n$(o181, {\n structure: s192,\n memory: { array: a40 },\n const: true,\n});\n$(o182, {\n structure: s192,\n memory: { array: a41 },\n const: true,\n});\n$(o183, {\n memory: { array: a0 },\n handle: 42,\n});\n$(o184, {\n slots: {\n 0: o185,\n },\n});\n$(o185, {\n structure: s195,\n memory: { array: a42 },\n const: true,\n});\n$(o186, {\n memory: { array: a43 },\n});\n$(o187, {\n memory: { array: a0 },\n handle: 43,\n});\n$(o188, {\n slots: {\n 0: o189, 1: o190, 2: o191, 3: o192, 4: o193, 5: o194, 6: o195, 7: o196, 8: o197, 9: o198,\n 10: o199, 11: o200, 12: o201, 13: o202, 14: o203, 15: o204, 16: o205, 17: o206, 18: o207, 19: o208,\n 20: o209, 21: o210, 22: o211,\n },\n});\n$(o189, {\n structure: s57,\n memory: { array: a0 },\n handle: 2,\n});\n$(o190, {\n structure: s66,\n memory: { array: a0 },\n handle: 3,\n});\n$(o191, {\n structure: s71,\n memory: { array: a0 },\n handle: 4,\n});\n$(o192, {\n structure: s81,\n memory: { array: a0 },\n handle: 5,\n});\n$(o193, {\n structure: s15,\n memory: { array: a44 },\n const: true,\n});\n$(o194, {\n structure: s147,\n memory: { array: a0 },\n handle: 6,\n});\n$(o195, {\n structure: s151,\n memory: { array: a0 },\n handle: 7,\n});\n$(o196, {\n structure: s155,\n memory: { array: a0 },\n handle: 8,\n});\n$(o197, {\n structure: s159,\n memory: { array: a0 },\n handle: 9,\n});\n$(o198, {\n structure: s68,\n memory: { array: a0 },\n handle: 10,\n});\n$(o199, {\n structure: s163,\n memory: { array: a0 },\n handle: 11,\n});\n$(o200, {\n structure: s167,\n memory: { array: a0 },\n handle: 12,\n});\n$(o201, {\n structure: s169,\n memory: { array: a0 },\n handle: 13,\n});\n$(o202, {\n structure: s173,\n memory: { array: a0 },\n handle: 14,\n});\n$(o203, {\n structure: s177,\n memory: { array: a0 },\n handle: 15,\n});\n$(o204, {\n structure: s181,\n memory: { array: a0 },\n handle: 16,\n});\n$(o205, {\n structure: s78,\n memory: { array: a0 },\n handle: 17,\n});\n$(o206, {\n structure: s185,\n memory: { array: a0 },\n handle: 18,\n});\n$(o207, {\n structure: s78,\n memory: { array: a0 },\n handle: 19,\n});\n$(o208, {\n structure: s189,\n memory: { array: a0 },\n handle: 20,\n});\n$(o209, {\n structure: s194,\n memory: { array: a0 },\n handle: 21,\n});\n$(o210, {\n structure: s78,\n memory: { array: a0 },\n handle: 22,\n});\n$(o211, {\n structure: s204,\n memory: { array: a0 },\n handle: 23,\n});\n\n// fill in structure properties\n$(s0, {\n ...s,\n flags: 1,\n signature: 0xa310b7d01f11b8can,\n name: \"void\",\n align: 1,\n instance: {\n members: [\n {\n ...m,\n bitOffset: 0,\n bitSize: 0,\n byteSize: 0,\n structure: s0,\n },\n ],\n },\n});\n$(s1, {\n ...s,\n flags: 1,\n signature: 0x61e77abe97c52d51n,\n name: \"f32\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 4,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n structure: s1,\n },\n ],\n },\n});\n$(s2, {\n ...s,\n type: 12,\n flags: 10,\n signature: 0x207e329602a86755n,\n name: \"Arg(fn (Point, Point) Point)\",\n length: 2,\n byteSize: 24,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 64,\n byteSize: 8,\n slot: 0,\n name: \"retval\",\n structure: s8,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 64,\n bitSize: 64,\n byteSize: 8,\n slot: 1,\n name: \"0\",\n structure: s8,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 128,\n bitSize: 64,\n byteSize: 8,\n slot: 2,\n name: \"1\",\n structure: s8,\n },\n ],\n },\n});\n$(s3, {\n ...s,\n type: 14,\n signature: 0x8e48777d39cc425en,\n name: \"fn (Point, Point) Point\",\n length: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 192,\n byteSize: 24,\n structure: s2,\n },\n ],\n template: o0\n },\n});\n$(s4, {\n ...s,\n type: 12,\n flags: 10,\n signature: 0x61503e2c040eea30n,\n name: \"Arg(fn (Point, Point) f32)\",\n length: 2,\n byteSize: 20,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n name: \"retval\",\n structure: s1,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 32,\n bitSize: 64,\n byteSize: 8,\n slot: 1,\n name: \"0\",\n structure: s8,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 96,\n bitSize: 64,\n byteSize: 8,\n slot: 2,\n name: \"1\",\n structure: s8,\n },\n ],\n },\n});\n$(s5, {\n ...s,\n type: 14,\n signature: 0x18a1631fcf9c9650n,\n name: \"fn (Point, Point) f32\",\n length: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 160,\n byteSize: 20,\n structure: s4,\n },\n ],\n template: o1\n },\n});\n$(s6, {\n ...s,\n type: 12,\n flags: 10,\n signature: 0x8413fe22a0ec1c90n,\n name: \"Arg(fn (Point) Point)\",\n length: 1,\n byteSize: 16,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 64,\n byteSize: 8,\n slot: 0,\n name: \"retval\",\n structure: s8,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 64,\n bitSize: 64,\n byteSize: 8,\n slot: 1,\n name: \"0\",\n structure: s8,\n },\n ],\n },\n});\n$(s7, {\n ...s,\n type: 14,\n signature: 0x64ad1835b1055f17n,\n name: \"fn (Point) Point\",\n length: 1,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 128,\n byteSize: 16,\n structure: s6,\n },\n ],\n template: o2\n },\n});\n$(s8, {\n ...s,\n type: 2,\n flags: 16,\n signature: 0xc6238f223c317b90n,\n name: \"Point\",\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n name: \"x\",\n structure: s1,\n },\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 32,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"y\",\n structure: s1,\n },\n ],\n template: o3\n },\n static: {\n members: [\n {\n ...m,\n type: 5,\n flags: 18,\n slot: 0,\n name: \"mid\",\n structure: s3,\n },\n {\n ...m,\n type: 5,\n flags: 18,\n slot: 2,\n name: \"distance\",\n structure: s5,\n },\n {\n ...m,\n type: 5,\n flags: 18,\n slot: 3,\n name: \"diff\",\n structure: s3,\n },\n {\n ...m,\n type: 5,\n flags: 18,\n slot: 4,\n name: \"clone\",\n structure: s7,\n },\n ],\n template: o4\n },\n});\n$(s9, {\n ...s,\n type: 12,\n flags: 10,\n signature: 0x8d352bb77a26e612n,\n name: \"Arg(fn (PointUV, PointUV) Point)\",\n length: 2,\n byteSize: 40,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 64,\n byteSize: 8,\n slot: 0,\n name: \"retval\",\n structure: s8,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 64,\n bitSize: 128,\n byteSize: 16,\n slot: 1,\n name: \"0\",\n structure: s13,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 192,\n bitSize: 128,\n byteSize: 16,\n slot: 2,\n name: \"1\",\n structure: s13,\n },\n ],\n },\n});\n$(s10, {\n ...s,\n type: 14,\n signature: 0x0f1df05e0d01db92n,\n name: \"fn (PointUV, PointUV) Point\",\n length: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 320,\n byteSize: 40,\n structure: s9,\n },\n ],\n template: o9\n },\n});\n$(s11, {\n ...s,\n type: 12,\n flags: 10,\n signature: 0x9961a28ae296031fn,\n name: \"Arg(fn (PointUV, PointUV) f32)\",\n length: 2,\n byteSize: 36,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n name: \"retval\",\n structure: s1,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 32,\n bitSize: 128,\n byteSize: 16,\n slot: 1,\n name: \"0\",\n structure: s13,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 160,\n bitSize: 128,\n byteSize: 16,\n slot: 2,\n name: \"1\",\n structure: s13,\n },\n ],\n },\n});\n$(s12, {\n ...s,\n type: 14,\n signature: 0xb56a381f65765bdcn,\n name: \"fn (PointUV, PointUV) f32\",\n length: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 288,\n byteSize: 36,\n structure: s11,\n },\n ],\n template: o10\n },\n});\n$(s13, {\n ...s,\n type: 2,\n flags: 16,\n signature: 0x526f11b57045ab14n,\n name: \"PointUV\",\n byteSize: 16,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n name: \"x\",\n structure: s1,\n },\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 32,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"y\",\n structure: s1,\n },\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 64,\n bitSize: 32,\n byteSize: 4,\n slot: 2,\n name: \"u\",\n structure: s1,\n },\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 96,\n bitSize: 32,\n byteSize: 4,\n slot: 3,\n name: \"v\",\n structure: s1,\n },\n ],\n template: o11\n },\n static: {\n members: [\n {\n ...m,\n type: 5,\n flags: 18,\n slot: 0,\n name: \"mid\",\n structure: s10,\n },\n {\n ...m,\n type: 5,\n flags: 18,\n slot: 1,\n name: \"angle_to\",\n structure: s12,\n },\n {\n ...m,\n type: 5,\n flags: 18,\n slot: 2,\n name: \"distance\",\n structure: s12,\n },\n ],\n template: o12\n },\n});\n$(s14, {\n ...s,\n type: 1,\n flags: 10,\n signature: 0x3ee5e4424cbe9410n,\n name: \"[6]PointUV\",\n length: 6,\n byteSize: 96,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 128,\n byteSize: 16,\n structure: s13,\n },\n ],\n },\n});\n$(s15, {\n ...s,\n flags: 1,\n signature: 0x68598db431a811a3n,\n name: \"u32\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n structure: s15,\n },\n ],\n },\n});\n$(s16, {\n ...s,\n type: 12,\n flags: 10,\n signature: 0x20d5e187b003a7fen,\n name: \"Arg(fn ([6]PointUV, u32) void)\",\n length: 2,\n byteSize: 100,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 800,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n name: \"retval\",\n structure: s0,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 768,\n byteSize: 96,\n slot: 1,\n name: \"0\",\n structure: s14,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 768,\n bitSize: 32,\n byteSize: 4,\n slot: 2,\n name: \"1\",\n structure: s15,\n },\n ],\n },\n});\n$(s17, {\n ...s,\n type: 14,\n signature: 0x587e2b72fe4f7519n,\n name: \"fn ([6]PointUV, u32) void\",\n length: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 800,\n byteSize: 100,\n structure: s16,\n },\n ],\n template: o16\n },\n static: {\n members: [],\n template: o17\n },\n});\n$(s18, {\n ...s,\n type: 8,\n flags: 204,\n signature: 0x5ed530af4a7bcf1dn,\n name: \"*const fn ([6]PointUV, u32) void\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n structure: s17,\n },\n ],\n },\n});\n$(s19, {\n ...s,\n flags: 1,\n signature: 0x370ee22b85937307n,\n name: \"u8\",\n byteSize: 1,\n align: 1,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n bitOffset: 0,\n bitSize: 8,\n byteSize: 1,\n structure: s19,\n },\n ],\n },\n});\n$(s20, {\n ...s,\n type: 1,\n flags: 224,\n signature: 0x72a0d50910cc3369n,\n name: \"[4]u8\",\n length: 4,\n byteSize: 4,\n align: 1,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n bitSize: 8,\n byteSize: 1,\n structure: s19,\n },\n ],\n },\n});\n$(s21, {\n ...s,\n type: 1,\n flags: 64,\n signature: 0x965d25e134612060n,\n name: \"[3]f32\",\n length: 3,\n byteSize: 12,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 4,\n bitSize: 32,\n byteSize: 4,\n structure: s1,\n },\n ],\n },\n});\n$(s22, {\n ...s,\n type: 2,\n flags: 26,\n signature: 0x192d6f39fdd42e6en,\n name: \"DrawInstance\",\n byteSize: 64,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 128,\n byteSize: 16,\n slot: 0,\n name: \"p0\",\n structure: s13,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 128,\n bitSize: 128,\n byteSize: 16,\n slot: 1,\n name: \"p1\",\n structure: s13,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 256,\n bitSize: 128,\n byteSize: 16,\n slot: 2,\n name: \"p2\",\n structure: s13,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 384,\n bitSize: 32,\n byteSize: 4,\n slot: 3,\n name: \"color\",\n structure: s20,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 416,\n bitSize: 96,\n byteSize: 12,\n slot: 4,\n name: \"radius\",\n structure: s21,\n },\n ],\n template: o18\n },\n});\n$(s23, {\n ...s,\n type: 9,\n flags: 10,\n signature: 0x914ee09efb47cbf7n,\n name: \"[_]DrawInstance\",\n byteSize: 64,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 512,\n byteSize: 64,\n structure: s22,\n },\n ],\n },\n});\n$(s24, {\n ...s,\n type: 8,\n flags: 188,\n signature: 0x39778fa380da3875n,\n name: \"[]const DrawInstance\",\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 64,\n byteSize: 8,\n slot: 0,\n structure: s23,\n },\n ],\n },\n});\n$(s25, {\n ...s,\n type: 12,\n flags: 14,\n signature: 0x93ffc88e8c95765dn,\n name: \"Arg(fn ([]const DrawInstance) void)\",\n length: 1,\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 64,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n name: \"retval\",\n structure: s0,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 64,\n byteSize: 8,\n slot: 1,\n name: \"0\",\n structure: s24,\n },\n ],\n },\n});\n$(s26, {\n ...s,\n type: 14,\n signature: 0xe9f243b3e4ecde6cn,\n name: \"fn ([]const DrawInstance) void\",\n length: 1,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 64,\n byteSize: 8,\n structure: s25,\n },\n ],\n template: o19\n },\n static: {\n members: [],\n template: o20\n },\n});\n$(s27, {\n ...s,\n type: 8,\n flags: 204,\n signature: 0xffb0918139c04f1an,\n name: \"*const fn ([]const DrawInstance) void\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n structure: s26,\n },\n ],\n },\n});\n$(s28, {\n ...s,\n type: 9,\n flags: 10,\n signature: 0xc2e8551856512494n,\n name: \"[_]Point\",\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 64,\n byteSize: 8,\n structure: s8,\n },\n ],\n },\n});\n$(s29, {\n ...s,\n type: 8,\n flags: 188,\n signature: 0x04fa74127b6acc09n,\n name: \"[]const Point\",\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 64,\n byteSize: 8,\n slot: 0,\n structure: s28,\n },\n ],\n },\n});\n$(s30, {\n ...s,\n type: 1,\n flags: 64,\n signature: 0x55b5c2c225a6545bn,\n name: \"[4]f32\",\n length: 4,\n byteSize: 16,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 4,\n bitSize: 32,\n byteSize: 4,\n structure: s1,\n },\n ],\n },\n});\n$(s31, {\n ...s,\n type: 2,\n flags: 26,\n signature: 0x40db7c567416c304n,\n name: \"Uniform\",\n byteSize: 48,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n name: \"stroke_width\",\n structure: s1,\n },\n {\n ...m,\n type: 5,\n bitOffset: 32,\n bitSize: 96,\n byteSize: 12,\n slot: 1,\n name: \"padding\",\n structure: s21,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 128,\n bitSize: 128,\n byteSize: 16,\n slot: 2,\n name: \"fill_color\",\n structure: s30,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 256,\n bitSize: 128,\n byteSize: 16,\n slot: 3,\n name: \"stroke_color\",\n structure: s30,\n },\n ],\n template: o21\n },\n});\n$(s32, {\n ...s,\n type: 12,\n flags: 14,\n signature: 0x2e1c0405c0ec4674n,\n name: \"Arg(fn ([]const Point, []const Point, Uniform) void)\",\n length: 3,\n byteSize: 64,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 512,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n name: \"retval\",\n structure: s0,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 64,\n byteSize: 8,\n slot: 1,\n name: \"0\",\n structure: s29,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 64,\n bitSize: 64,\n byteSize: 8,\n slot: 2,\n name: \"1\",\n structure: s29,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 128,\n bitSize: 384,\n byteSize: 48,\n slot: 3,\n name: \"2\",\n structure: s31,\n },\n ],\n },\n});\n$(s33, {\n ...s,\n type: 14,\n signature: 0x154194cf2431a077n,\n name: \"fn ([]const Point, []const Point, Uniform) void\",\n length: 3,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 512,\n byteSize: 64,\n structure: s32,\n },\n ],\n template: o22\n },\n static: {\n members: [],\n template: o23\n },\n});\n$(s34, {\n ...s,\n type: 8,\n flags: 204,\n signature: 0xa85eca8385440e49n,\n name: \"*const fn ([]const Point, []const Point, Uniform) void\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n structure: s33,\n },\n ],\n },\n});\n$(s35, {\n ...s,\n type: 1,\n flags: 10,\n signature: 0x578493b95a018f7en,\n name: \"[3]PointUV\",\n length: 3,\n byteSize: 48,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 128,\n byteSize: 16,\n structure: s13,\n },\n ],\n },\n});\n$(s36, {\n ...s,\n type: 2,\n flags: 26,\n signature: 0xca530755a22a998en,\n name: \"DrawInstance\",\n byteSize: 52,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 384,\n byteSize: 48,\n slot: 0,\n name: \"points\",\n structure: s35,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 384,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"color\",\n structure: s20,\n },\n ],\n template: o24\n },\n});\n$(s37, {\n ...s,\n type: 9,\n flags: 10,\n signature: 0x27b89a18d30e0640n,\n name: \"[_]DrawInstance\",\n byteSize: 52,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 416,\n byteSize: 52,\n structure: s36,\n },\n ],\n },\n});\n$(s38, {\n ...s,\n type: 8,\n flags: 188,\n signature: 0x3afc30e1a57b269dn,\n name: \"[]const DrawInstance\",\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 64,\n byteSize: 8,\n slot: 0,\n structure: s37,\n },\n ],\n },\n});\n$(s39, {\n ...s,\n type: 12,\n flags: 14,\n signature: 0xd193affba67924f3n,\n name: \"Arg(fn ([]const DrawInstance, u32) void)\",\n length: 2,\n byteSize: 12,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 96,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n name: \"retval\",\n structure: s0,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 64,\n byteSize: 8,\n slot: 1,\n name: \"0\",\n structure: s38,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 64,\n bitSize: 32,\n byteSize: 4,\n slot: 2,\n name: \"1\",\n structure: s15,\n },\n ],\n },\n});\n$(s40, {\n ...s,\n type: 14,\n signature: 0xfaf2e98b5e6103a0n,\n name: \"fn ([]const DrawInstance, u32) void\",\n length: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 96,\n byteSize: 12,\n structure: s39,\n },\n ],\n template: o25\n },\n static: {\n members: [],\n template: o26\n },\n});\n$(s41, {\n ...s,\n type: 8,\n flags: 204,\n signature: 0xd75553fb178caa01n,\n name: \"*const fn ([]const DrawInstance, u32) void\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n structure: s40,\n },\n ],\n },\n});\n$(s42, {\n ...s,\n type: 2,\n flags: 26,\n signature: 0x51c81ec013b825c3n,\n name: \"PickVertex\",\n byteSize: 20,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 128,\n byteSize: 16,\n slot: 0,\n name: \"point\",\n structure: s13,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 128,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"id\",\n structure: s15,\n },\n ],\n template: o27\n },\n});\n$(s43, {\n ...s,\n type: 9,\n flags: 10,\n signature: 0x76ed8f1f33009424n,\n name: \"[_]PickVertex\",\n byteSize: 20,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 160,\n byteSize: 20,\n structure: s42,\n },\n ],\n },\n});\n$(s44, {\n ...s,\n type: 8,\n flags: 188,\n signature: 0x545dbe9066b56a76n,\n name: \"[]const PickVertex\",\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 64,\n byteSize: 8,\n slot: 0,\n structure: s43,\n },\n ],\n },\n});\n$(s45, {\n ...s,\n type: 12,\n flags: 14,\n signature: 0x31c024438eabbf73n,\n name: \"Arg(fn ([]const PickVertex, u32) void)\",\n length: 2,\n byteSize: 12,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 96,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n name: \"retval\",\n structure: s0,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 64,\n byteSize: 8,\n slot: 1,\n name: \"0\",\n structure: s44,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 64,\n bitSize: 32,\n byteSize: 4,\n slot: 2,\n name: \"1\",\n structure: s15,\n },\n ],\n },\n});\n$(s46, {\n ...s,\n type: 14,\n signature: 0xded0b6d1acc2290dn,\n name: \"fn ([]const PickVertex, u32) void\",\n length: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 96,\n byteSize: 12,\n structure: s45,\n },\n ],\n template: o28\n },\n static: {\n members: [],\n template: o29\n },\n});\n$(s47, {\n ...s,\n type: 8,\n flags: 204,\n signature: 0x187686ea5958f7abn,\n name: \"*const fn ([]const PickVertex, u32) void\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n structure: s46,\n },\n ],\n },\n});\n$(s48, {\n ...s,\n type: 2,\n flags: 26,\n signature: 0xfcafa76b343a3caan,\n name: \"PickInstance\",\n byteSize: 64,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 128,\n byteSize: 16,\n slot: 0,\n name: \"p0\",\n structure: s13,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 128,\n bitSize: 128,\n byteSize: 16,\n slot: 1,\n name: \"p1\",\n structure: s13,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 256,\n bitSize: 128,\n byteSize: 16,\n slot: 2,\n name: \"p2\",\n structure: s13,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 384,\n bitSize: 32,\n byteSize: 4,\n slot: 3,\n name: \"id\",\n structure: s15,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 416,\n bitSize: 96,\n byteSize: 12,\n slot: 4,\n name: \"radius\",\n structure: s21,\n },\n ],\n template: o30\n },\n});\n$(s49, {\n ...s,\n type: 9,\n flags: 10,\n signature: 0xe76a506318e15bf2n,\n name: \"[_]PickInstance\",\n byteSize: 64,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 512,\n byteSize: 64,\n structure: s48,\n },\n ],\n },\n});\n$(s50, {\n ...s,\n type: 8,\n flags: 188,\n signature: 0x22b542680e155723n,\n name: \"[]const PickInstance\",\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 64,\n byteSize: 8,\n slot: 0,\n structure: s49,\n },\n ],\n },\n});\n$(s51, {\n ...s,\n type: 12,\n flags: 14,\n signature: 0x601e644054b52458n,\n name: \"Arg(fn ([]const PickInstance) void)\",\n length: 1,\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 64,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n name: \"retval\",\n structure: s0,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 64,\n byteSize: 8,\n slot: 1,\n name: \"0\",\n structure: s50,\n },\n ],\n },\n});\n$(s52, {\n ...s,\n type: 14,\n signature: 0xaf76c83133419af9n,\n name: \"fn ([]const PickInstance) void\",\n length: 1,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 64,\n byteSize: 8,\n structure: s51,\n },\n ],\n template: o31\n },\n static: {\n members: [],\n template: o32\n },\n});\n$(s53, {\n ...s,\n type: 8,\n flags: 204,\n signature: 0xcf1430f10b87a1e6n,\n name: \"*const fn ([]const PickInstance) void\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n structure: s52,\n },\n ],\n },\n});\n$(s54, {\n ...s,\n type: 2,\n flags: 14,\n signature: 0xa7404041cce4d7e4n,\n name: \"WebGpuPrograms\",\n byteSize: 24,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n name: \"draw_texture\",\n structure: s18,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 32,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"draw_triangle\",\n structure: s27,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 64,\n bitSize: 32,\n byteSize: 4,\n slot: 2,\n name: \"draw_shape\",\n structure: s34,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 96,\n bitSize: 32,\n byteSize: 4,\n slot: 3,\n name: \"draw_msdf\",\n structure: s41,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 128,\n bitSize: 32,\n byteSize: 4,\n slot: 4,\n name: \"pick_texture\",\n structure: s47,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 160,\n bitSize: 32,\n byteSize: 4,\n slot: 5,\n name: \"pick_triangle\",\n structure: s53,\n },\n ],\n template: o33\n },\n});\n$(s55, {\n ...s,\n type: 8,\n flags: 204,\n signature: 0x4b97e7b342dc0e95n,\n name: \"*const WebGpuPrograms\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n structure: s54,\n },\n ],\n },\n});\n$(s56, {\n ...s,\n type: 12,\n flags: 14,\n signature: 0xc8c21ceda7f04e6en,\n name: \"Arg(fn (*const WebGpuPrograms) void)\",\n length: 1,\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 32,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n name: \"retval\",\n structure: s0,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"0\",\n structure: s55,\n },\n ],\n },\n});\n$(s57, {\n ...s,\n type: 14,\n signature: 0xc7d4865a224e46d2n,\n name: \"fn (*const WebGpuPrograms) void\",\n length: 1,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n structure: s56,\n },\n ],\n template: o46\n },\n});\n$(s58, {\n ...s,\n type: 1,\n flags: 10,\n signature: 0x009c896a0d8f3812n,\n name: \"[4]PointUV\",\n length: 4,\n byteSize: 64,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 128,\n byteSize: 16,\n structure: s13,\n },\n ],\n },\n});\n$(s59, {\n ...s,\n type: 2,\n flags: 10,\n signature: 0xf467acfa8faba0b0n,\n name: \"Serialized\",\n byteSize: 72,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 512,\n byteSize: 64,\n slot: 0,\n name: \"points\",\n structure: s58,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 512,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"texture_id\",\n structure: s15,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 544,\n bitSize: 32,\n byteSize: 4,\n slot: 2,\n name: \"id\",\n structure: s15,\n },\n ],\n template: o47\n },\n});\n$(s60, {\n ...s,\n type: 9,\n flags: 10,\n signature: 0xf4147de9f73841b8n,\n name: \"[_]Serialized\",\n byteSize: 72,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 576,\n byteSize: 72,\n structure: s59,\n },\n ],\n },\n});\n$(s61, {\n ...s,\n type: 8,\n flags: 188,\n signature: 0x6028753cdbfc756dn,\n name: \"[]const Serialized\",\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 64,\n byteSize: 8,\n slot: 0,\n structure: s60,\n },\n ],\n },\n});\n$(s62, {\n ...s,\n type: 12,\n flags: 14,\n signature: 0x5982668a5988d984n,\n name: \"Arg(fn ([]const Serialized) void)\",\n length: 1,\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 64,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n name: \"retval\",\n structure: s0,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 64,\n byteSize: 8,\n slot: 1,\n name: \"0\",\n structure: s61,\n },\n ],\n },\n});\n$(s63, {\n ...s,\n type: 14,\n signature: 0xb8beaa701eeeab6fn,\n name: \"fn ([]const Serialized) void\",\n length: 1,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 64,\n byteSize: 8,\n structure: s62,\n },\n ],\n template: o48\n },\n static: {\n members: [],\n template: o49\n },\n});\n$(s64, {\n ...s,\n type: 8,\n flags: 204,\n signature: 0x81bdb14af0e0d208n,\n name: \"*const fn ([]const Serialized) void\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n structure: s63,\n },\n ],\n },\n});\n$(s65, {\n ...s,\n type: 12,\n flags: 14,\n signature: 0x4b3fe0b344fb2b2dn,\n name: \"Arg(fn (*const fn ([]const Serialized) void) void)\",\n length: 1,\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 32,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n name: \"retval\",\n structure: s0,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"0\",\n structure: s64,\n },\n ],\n },\n});\n$(s66, {\n ...s,\n type: 14,\n signature: 0x2bc578db12d8c717n,\n name: \"fn (*const fn ([]const Serialized) void) void\",\n length: 1,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n structure: s65,\n },\n ],\n template: o50\n },\n});\n$(s67, {\n ...s,\n type: 12,\n signature: 0x6364608841bf263en,\n name: \"Arg(fn (u32) void)\",\n length: 1,\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 32,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n name: \"retval\",\n structure: s0,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"0\",\n structure: s15,\n },\n ],\n },\n});\n$(s68, {\n ...s,\n type: 14,\n signature: 0x956e45a1c96ff5e6n,\n name: \"fn (u32) void\",\n length: 1,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n structure: s67,\n },\n ],\n template: o51\n },\n static: {\n members: [],\n template: o52\n },\n});\n$(s69, {\n ...s,\n type: 8,\n flags: 204,\n signature: 0x139c4e15eb0a34d6n,\n name: \"*const fn (u32) void\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n structure: s68,\n },\n ],\n },\n});\n$(s70, {\n ...s,\n type: 12,\n flags: 14,\n signature: 0xfaa14a525ee0f8d4n,\n name: \"Arg(fn (*const fn (u32) void) void)\",\n length: 1,\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 32,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n name: \"retval\",\n structure: s0,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"0\",\n structure: s69,\n },\n ],\n },\n});\n$(s71, {\n ...s,\n type: 14,\n signature: 0x651c6f0337fe6099n,\n name: \"fn (*const fn (u32) void) void\",\n length: 1,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n structure: s70,\n },\n ],\n template: o53\n },\n});\n$(s72, {\n ...s,\n type: 7,\n flags: 17,\n signature: 0x6a0f688da3728775n,\n name: \"?u32\",\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n structure: s15,\n },\n {\n ...m,\n type: 3,\n flags: 8,\n bitOffset: 32,\n bitSize: 8,\n byteSize: 1,\n structure: s19,\n },\n ],\n },\n});\n$(s73, {\n ...s,\n type: 2,\n signature: 0x57847e8f0b7a3a1fn,\n name: \"BoundingBox\",\n byteSize: 16,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n name: \"min_x\",\n structure: s1,\n },\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 32,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"min_y\",\n structure: s1,\n },\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 64,\n bitSize: 32,\n byteSize: 4,\n slot: 2,\n name: \"max_x\",\n structure: s1,\n },\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 96,\n bitSize: 32,\n byteSize: 4,\n slot: 3,\n name: \"max_y\",\n structure: s1,\n },\n ],\n template: o54\n },\n});\n$(s74, {\n ...s,\n type: 12,\n flags: 10,\n signature: 0x147e6bb004780a90n,\n name: \"Arg(fn (?u32, BoundingBox, f32, f32) u32)\",\n length: 4,\n byteSize: 36,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n name: \"retval\",\n structure: s15,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 32,\n bitSize: 64,\n byteSize: 8,\n slot: 1,\n name: \"0\",\n structure: s72,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 96,\n bitSize: 128,\n byteSize: 16,\n slot: 2,\n name: \"1\",\n structure: s73,\n },\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 224,\n bitSize: 32,\n byteSize: 4,\n slot: 3,\n name: \"2\",\n structure: s1,\n },\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 256,\n bitSize: 32,\n byteSize: 4,\n slot: 4,\n name: \"3\",\n structure: s1,\n },\n ],\n },\n});\n$(s75, {\n ...s,\n type: 14,\n signature: 0xea27980e864495d8n,\n name: \"fn (?u32, BoundingBox, f32, f32) u32\",\n length: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 288,\n byteSize: 36,\n structure: s74,\n },\n ],\n template: o55\n },\n static: {\n members: [],\n template: o56\n },\n});\n$(s76, {\n ...s,\n type: 8,\n flags: 204,\n signature: 0x827a5e85f379e86cn,\n name: \"*const fn (?u32, BoundingBox, f32, f32) u32\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n structure: s75,\n },\n ],\n },\n});\n$(s77, {\n ...s,\n type: 12,\n signature: 0xfa22378c989ae19dn,\n name: \"Arg(fn () void)\",\n length: 0,\n align: 1,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 0,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n name: \"retval\",\n structure: s0,\n },\n ],\n },\n});\n$(s78, {\n ...s,\n type: 14,\n signature: 0xe3c3b022a28cd076n,\n name: \"fn () void\",\n length: 0,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 0,\n byteSize: 0,\n structure: s77,\n },\n ],\n template: o57\n },\n static: {\n members: [],\n template: o58\n },\n});\n$(s79, {\n ...s,\n type: 8,\n flags: 204,\n signature: 0xd7880dadce515974n,\n name: \"*const fn () void\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n structure: s78,\n },\n ],\n },\n});\n$(s80, {\n ...s,\n type: 12,\n flags: 14,\n signature: 0x8a236472578c7a3dn,\n name: \"Arg(fn (*const fn (?u32, BoundingBox, f32, f32) u32, *const fn () void) void)\",\n length: 2,\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 64,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n name: \"retval\",\n structure: s0,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"0\",\n structure: s76,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 32,\n bitSize: 32,\n byteSize: 4,\n slot: 2,\n name: \"1\",\n structure: s79,\n },\n ],\n },\n});\n$(s81, {\n ...s,\n type: 14,\n signature: 0x92a9e06d395eda27n,\n name: \"fn (*const fn (?u32, BoundingBox, f32, f32) u32, *const fn () void) void\",\n length: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 64,\n byteSize: 8,\n structure: s80,\n },\n ],\n template: o59\n },\n});\n$(s82, {\n ...s,\n type: 9,\n flags: 480,\n signature: 0x9b3f78f92307ba61n,\n name: \"anyopaque\",\n byteSize: undefined,\n align: undefined,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n bitSize: 8,\n byteSize: 1,\n structure: s19,\n },\n ],\n },\n});\n$(s83, {\n ...s,\n type: 8,\n flags: 332,\n signature: 0x4057fadddf1d8877n,\n name: \"*opaque\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n structure: s82,\n },\n ],\n },\n});\n$(s84, {\n ...s,\n type: 9,\n flags: 224,\n signature: 0x9b3f78f92307ba61n,\n name: \"[_]u8\",\n byteSize: 1,\n align: 1,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n bitSize: 8,\n byteSize: 1,\n structure: s19,\n },\n ],\n },\n});\n$(s85, {\n ...s,\n type: 8,\n flags: 44,\n signature: 0xdc4e40b42e2be1a4n,\n name: \"[*]u8\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n structure: s84,\n },\n ],\n },\n});\n$(s86, {\n ...s,\n flags: 17,\n signature: 0xad790f74c7d61933n,\n name: \"usize\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n structure: s86,\n },\n ],\n },\n});\n$(s87, {\n ...s,\n type: 7,\n flags: 15,\n signature: 0x46d9c68a3fe0a71cn,\n name: \"?[*]u8\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n structure: s85,\n },\n {\n ...m,\n type: 3,\n flags: 8,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n structure: s86,\n },\n ],\n },\n});\n$(s88, {\n ...s,\n type: 12,\n signature: 0xde13efb989eab233n,\n name: \"Arg(fn (Alignment) usize)\",\n length: 1,\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n name: \"retval\",\n structure: s86,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 32,\n bitSize: 5,\n byteSize: 1,\n slot: 1,\n name: \"0\",\n structure: s114,\n },\n ],\n },\n});\n$(s89, {\n ...s,\n type: 14,\n signature: 0x511f3836ff34e93an,\n name: \"fn (Alignment) usize\",\n length: 1,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 64,\n byteSize: 8,\n structure: s88,\n },\n ],\n template: o60\n },\n});\n$(s90, {\n ...s,\n type: 12,\n signature: 0x3d33381cd47940b4n,\n name: \"Arg(fn (usize) Alignment)\",\n length: 1,\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 32,\n bitSize: 5,\n byteSize: 1,\n slot: 0,\n name: \"retval\",\n structure: s114,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"0\",\n structure: s86,\n },\n ],\n },\n});\n$(s91, {\n ...s,\n type: 14,\n signature: 0x950458df9df4743bn,\n name: \"fn (usize) Alignment\",\n length: 1,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 64,\n byteSize: 8,\n structure: s90,\n },\n ],\n template: o61\n },\n});\n$(s92, {\n ...s,\n type: 12,\n signature: 0xa358945228ebaff3n,\n name: \"Arg(fn (Order) Order)\",\n length: 1,\n byteSize: 2,\n align: 1,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 0,\n bitSize: 2,\n byteSize: 1,\n slot: 0,\n name: \"retval\",\n structure: s103,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 8,\n bitSize: 2,\n byteSize: 1,\n slot: 1,\n name: \"0\",\n structure: s103,\n },\n ],\n },\n});\n$(s93, {\n ...s,\n type: 14,\n signature: 0x09217ef45d6a5583n,\n name: \"fn (Order) Order\",\n length: 1,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 16,\n byteSize: 2,\n structure: s92,\n },\n ],\n template: o62\n },\n});\n$(s94, {\n ...s,\n type: 7,\n flags: 17,\n signature: 0x45d6d2728e09761bn,\n name: \"?Order\",\n byteSize: 2,\n align: 1,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n bitOffset: 0,\n bitSize: 2,\n byteSize: 1,\n slot: 0,\n structure: s103,\n },\n {\n ...m,\n type: 3,\n flags: 8,\n bitOffset: 8,\n bitSize: 8,\n byteSize: 1,\n structure: s19,\n },\n ],\n },\n});\n$(s95, {\n ...s,\n type: 12,\n flags: 10,\n signature: 0x818dc2d151e5b733n,\n name: \"Arg(fn (Order) ?Order)\",\n length: 1,\n byteSize: 3,\n align: 1,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n slot: 0,\n name: \"retval\",\n structure: s94,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 16,\n bitSize: 2,\n byteSize: 1,\n slot: 1,\n name: \"0\",\n structure: s103,\n },\n ],\n },\n});\n$(s96, {\n ...s,\n type: 14,\n signature: 0x54ab34151663d188n,\n name: \"fn (Order) ?Order\",\n length: 1,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 24,\n byteSize: 3,\n structure: s95,\n },\n ],\n template: o63\n },\n});\n$(s97, {\n ...s,\n flags: 1,\n signature: 0x6eddab4b13ff06c5n,\n name: \"bool\",\n byteSize: 1,\n align: 1,\n instance: {\n members: [\n {\n ...m,\n type: 1,\n bitOffset: 0,\n bitSize: 1,\n byteSize: 1,\n structure: s97,\n },\n ],\n },\n});\n$(s98, {\n ...s,\n type: 12,\n signature: 0xb4bc84552cdf048fn,\n name: \"Arg(fn (CompareOperator) CompareOperator)\",\n length: 1,\n byteSize: 2,\n align: 1,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 0,\n bitSize: 3,\n byteSize: 1,\n slot: 0,\n name: \"retval\",\n structure: s100,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 8,\n bitSize: 3,\n byteSize: 1,\n slot: 1,\n name: \"0\",\n structure: s100,\n },\n ],\n },\n});\n$(s99, {\n ...s,\n type: 14,\n signature: 0x7614c9fef669bdabn,\n name: \"fn (CompareOperator) CompareOperator\",\n length: 1,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 16,\n byteSize: 2,\n structure: s98,\n },\n ],\n template: o64\n },\n});\n$(s100, {\n ...s,\n type: 6,\n flags: 1,\n signature: 0x89697612f8e25e90n,\n name: \"CompareOperator\",\n byteSize: 1,\n align: 1,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n bitOffset: 0,\n bitSize: 3,\n byteSize: 1,\n structure: s100,\n },\n ],\n },\n static: {\n members: [\n {\n ...m,\n type: 5,\n flags: 18,\n slot: 0,\n name: \"reverse\",\n structure: s99,\n },\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 1,\n name: \"lt\",\n structure: s100,\n },\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 2,\n name: \"lte\",\n structure: s100,\n },\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 3,\n name: \"eq\",\n structure: s100,\n },\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 4,\n name: \"gte\",\n structure: s100,\n },\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 5,\n name: \"gt\",\n structure: s100,\n },\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 6,\n name: \"neq\",\n structure: s100,\n },\n ],\n template: o65\n },\n});\n$(s101, {\n ...s,\n type: 12,\n signature: 0xacf11acba856b940n,\n name: \"Arg(fn (Order, CompareOperator) bool)\",\n length: 2,\n byteSize: 3,\n align: 1,\n instance: {\n members: [\n {\n ...m,\n type: 1,\n flags: 1,\n bitOffset: 0,\n bitSize: 1,\n byteSize: 1,\n slot: 0,\n name: \"retval\",\n structure: s97,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 8,\n bitSize: 2,\n byteSize: 1,\n slot: 1,\n name: \"0\",\n structure: s103,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 16,\n bitSize: 3,\n byteSize: 1,\n slot: 2,\n name: \"1\",\n structure: s100,\n },\n ],\n },\n});\n$(s102, {\n ...s,\n type: 14,\n signature: 0xf27159573848fb68n,\n name: \"fn (Order, CompareOperator) bool\",\n length: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 24,\n byteSize: 3,\n structure: s101,\n },\n ],\n template: o73\n },\n});\n$(s103, {\n ...s,\n type: 6,\n flags: 1,\n signature: 0x1aec8487f6280122n,\n name: \"Order\",\n byteSize: 1,\n align: 1,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n bitOffset: 0,\n bitSize: 2,\n byteSize: 1,\n structure: s103,\n },\n ],\n },\n static: {\n members: [\n {\n ...m,\n type: 5,\n flags: 18,\n slot: 0,\n name: \"invert\",\n structure: s93,\n },\n {\n ...m,\n type: 5,\n flags: 18,\n slot: 1,\n name: \"differ\",\n structure: s96,\n },\n {\n ...m,\n type: 5,\n flags: 18,\n slot: 2,\n name: \"compare\",\n structure: s102,\n },\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 3,\n name: \"gt\",\n structure: s103,\n },\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 4,\n name: \"lt\",\n structure: s103,\n },\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 5,\n name: \"eq\",\n structure: s103,\n },\n ],\n template: o74\n },\n});\n$(s104, {\n ...s,\n type: 12,\n signature: 0xf2ead49fdfa38e2bn,\n name: \"Arg(fn (Alignment, Alignment) Order)\",\n length: 2,\n byteSize: 3,\n align: 1,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 0,\n bitSize: 2,\n byteSize: 1,\n slot: 0,\n name: \"retval\",\n structure: s103,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 8,\n bitSize: 5,\n byteSize: 1,\n slot: 1,\n name: \"0\",\n structure: s114,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 16,\n bitSize: 5,\n byteSize: 1,\n slot: 2,\n name: \"1\",\n structure: s114,\n },\n ],\n },\n});\n$(s105, {\n ...s,\n type: 14,\n signature: 0xf13cee4b7fda58c4n,\n name: \"fn (Alignment, Alignment) Order\",\n length: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 24,\n byteSize: 3,\n structure: s104,\n },\n ],\n template: o81\n },\n});\n$(s106, {\n ...s,\n type: 12,\n signature: 0x05739b3b38be1fe7n,\n name: \"Arg(fn (Alignment, CompareOperator, Alignment) bool)\",\n length: 3,\n byteSize: 4,\n align: 1,\n instance: {\n members: [\n {\n ...m,\n type: 1,\n flags: 1,\n bitOffset: 0,\n bitSize: 1,\n byteSize: 1,\n slot: 0,\n name: \"retval\",\n structure: s97,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 8,\n bitSize: 5,\n byteSize: 1,\n slot: 1,\n name: \"0\",\n structure: s114,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 16,\n bitSize: 3,\n byteSize: 1,\n slot: 2,\n name: \"1\",\n structure: s100,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 24,\n bitSize: 5,\n byteSize: 1,\n slot: 3,\n name: \"2\",\n structure: s114,\n },\n ],\n },\n});\n$(s107, {\n ...s,\n type: 14,\n signature: 0x5fb140f1464d545dn,\n name: \"fn (Alignment, CompareOperator, Alignment) bool\",\n length: 3,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n structure: s106,\n },\n ],\n template: o82\n },\n});\n$(s108, {\n ...s,\n type: 12,\n signature: 0x19f9b9e423c9240bn,\n name: \"Arg(fn (Alignment, Alignment) Alignment)\",\n length: 2,\n byteSize: 3,\n align: 1,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 0,\n bitSize: 5,\n byteSize: 1,\n slot: 0,\n name: \"retval\",\n structure: s114,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 8,\n bitSize: 5,\n byteSize: 1,\n slot: 1,\n name: \"0\",\n structure: s114,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 16,\n bitSize: 5,\n byteSize: 1,\n slot: 2,\n name: \"1\",\n structure: s114,\n },\n ],\n },\n});\n$(s109, {\n ...s,\n type: 14,\n signature: 0x502383542de53673n,\n name: \"fn (Alignment, Alignment) Alignment\",\n length: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 24,\n byteSize: 3,\n structure: s108,\n },\n ],\n template: o83\n },\n});\n$(s110, {\n ...s,\n type: 12,\n signature: 0x84835b8f7162244fn,\n name: \"Arg(fn (Alignment, usize) usize)\",\n length: 2,\n byteSize: 12,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n name: \"retval\",\n structure: s86,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 64,\n bitSize: 5,\n byteSize: 1,\n slot: 1,\n name: \"0\",\n structure: s114,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 32,\n bitSize: 32,\n byteSize: 4,\n slot: 2,\n name: \"1\",\n structure: s86,\n },\n ],\n },\n});\n$(s111, {\n ...s,\n type: 14,\n signature: 0xf22d521b6289ec09n,\n name: \"fn (Alignment, usize) usize\",\n length: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 96,\n byteSize: 12,\n structure: s110,\n },\n ],\n template: o84\n },\n});\n$(s112, {\n ...s,\n type: 12,\n signature: 0x053c5d5cf40c778fn,\n name: \"Arg(fn (Alignment, usize) bool)\",\n length: 2,\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 1,\n flags: 1,\n bitOffset: 32,\n bitSize: 1,\n byteSize: 1,\n slot: 0,\n name: \"retval\",\n structure: s97,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 40,\n bitSize: 5,\n byteSize: 1,\n slot: 1,\n name: \"0\",\n structure: s114,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 2,\n name: \"1\",\n structure: s86,\n },\n ],\n },\n});\n$(s113, {\n ...s,\n type: 14,\n signature: 0xc152dfb87eadb0b4n,\n name: \"fn (Alignment, usize) bool\",\n length: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 64,\n byteSize: 8,\n structure: s112,\n },\n ],\n template: o85\n },\n});\n$(s114, {\n ...s,\n type: 6,\n flags: 17,\n signature: 0x585b7f21a11e5af0n,\n name: \"Alignment\",\n byteSize: 1,\n align: 1,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n bitOffset: 0,\n bitSize: 5,\n byteSize: 1,\n structure: s114,\n },\n ],\n },\n static: {\n members: [\n {\n ...m,\n type: 5,\n flags: 18,\n slot: 0,\n name: \"toByteUnits\",\n structure: s89,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 1,\n name: \"fromByteUnits\",\n structure: s91,\n },\n {\n ...m,\n type: 5,\n flags: 18,\n slot: 2,\n name: \"order\",\n structure: s105,\n },\n {\n ...m,\n type: 5,\n flags: 18,\n slot: 3,\n name: \"compare\",\n structure: s107,\n },\n {\n ...m,\n type: 5,\n flags: 18,\n slot: 4,\n name: \"max\",\n structure: s109,\n },\n {\n ...m,\n type: 5,\n flags: 18,\n slot: 5,\n name: \"min\",\n structure: s109,\n },\n {\n ...m,\n type: 5,\n flags: 18,\n slot: 6,\n name: \"forward\",\n structure: s111,\n },\n {\n ...m,\n type: 5,\n flags: 18,\n slot: 7,\n name: \"backward\",\n structure: s111,\n },\n {\n ...m,\n type: 5,\n flags: 18,\n slot: 8,\n name: \"check\",\n structure: s113,\n },\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 9,\n name: \"1\",\n structure: s114,\n },\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 10,\n name: \"2\",\n structure: s114,\n },\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 11,\n name: \"4\",\n structure: s114,\n },\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 12,\n name: \"8\",\n structure: s114,\n },\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 13,\n name: \"16\",\n structure: s114,\n },\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 14,\n name: \"32\",\n structure: s114,\n },\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 15,\n name: \"64\",\n structure: s114,\n },\n ],\n template: o86\n },\n});\n$(s115, {\n ...s,\n type: 12,\n flags: 14,\n signature: 0xe9635dad30c6baf7n,\n name: \"Arg(fn (*opaque, usize, Alignment, usize) ?[*]u8)\",\n length: 4,\n byteSize: 20,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n name: \"retval\",\n structure: s87,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 32,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"0\",\n structure: s83,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 64,\n bitSize: 32,\n byteSize: 4,\n slot: 2,\n name: \"1\",\n structure: s86,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 128,\n bitSize: 5,\n byteSize: 1,\n slot: 3,\n name: \"2\",\n structure: s114,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 96,\n bitSize: 32,\n byteSize: 4,\n slot: 4,\n name: \"3\",\n structure: s86,\n },\n ],\n },\n});\n$(s116, {\n ...s,\n type: 14,\n signature: 0xbed86186ab27c14cn,\n name: \"fn (*opaque, usize, Alignment, usize) ?[*]u8\",\n length: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 160,\n byteSize: 20,\n structure: s115,\n },\n ],\n template: o103\n },\n static: {\n members: [],\n template: o104\n },\n});\n$(s117, {\n ...s,\n type: 8,\n flags: 204,\n signature: 0x4e622a40d4cd5ff1n,\n name: \"*const fn (*opaque, usize, Alignment, usize) ?[*]u8\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n structure: s116,\n },\n ],\n },\n});\n$(s118, {\n ...s,\n type: 8,\n flags: 60,\n signature: 0x559135659a0a19ean,\n name: \"[]u8\",\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 64,\n byteSize: 8,\n slot: 0,\n structure: s84,\n },\n ],\n },\n});\n$(s119, {\n ...s,\n type: 12,\n flags: 14,\n signature: 0xcdf6dc4e0de8422cn,\n name: \"Arg(fn (*opaque, []u8, Alignment, usize, usize) bool)\",\n length: 5,\n byteSize: 24,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 1,\n flags: 1,\n bitOffset: 160,\n bitSize: 1,\n byteSize: 1,\n slot: 0,\n name: \"retval\",\n structure: s97,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"0\",\n structure: s83,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 32,\n bitSize: 64,\n byteSize: 8,\n slot: 2,\n name: \"1\",\n structure: s118,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 168,\n bitSize: 5,\n byteSize: 1,\n slot: 3,\n name: \"2\",\n structure: s114,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 96,\n bitSize: 32,\n byteSize: 4,\n slot: 4,\n name: \"3\",\n structure: s86,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 128,\n bitSize: 32,\n byteSize: 4,\n slot: 5,\n name: \"4\",\n structure: s86,\n },\n ],\n },\n});\n$(s120, {\n ...s,\n type: 14,\n signature: 0xb1911d4efbc4e934n,\n name: \"fn (*opaque, []u8, Alignment, usize, usize) bool\",\n length: 5,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 192,\n byteSize: 24,\n structure: s119,\n },\n ],\n template: o105\n },\n static: {\n members: [],\n template: o106\n },\n});\n$(s121, {\n ...s,\n type: 8,\n flags: 204,\n signature: 0x493ea89f26eed44an,\n name: \"*const fn (*opaque, []u8, Alignment, usize, usize) bool\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n structure: s120,\n },\n ],\n },\n});\n$(s122, {\n ...s,\n type: 12,\n flags: 14,\n signature: 0x9205d7e9600828c7n,\n name: \"Arg(fn (*opaque, []u8, Alignment, usize, usize) ?[*]u8)\",\n length: 5,\n byteSize: 28,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n name: \"retval\",\n structure: s87,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 32,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"0\",\n structure: s83,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 64,\n bitSize: 64,\n byteSize: 8,\n slot: 2,\n name: \"1\",\n structure: s118,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 192,\n bitSize: 5,\n byteSize: 1,\n slot: 3,\n name: \"2\",\n structure: s114,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 128,\n bitSize: 32,\n byteSize: 4,\n slot: 4,\n name: \"3\",\n structure: s86,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 160,\n bitSize: 32,\n byteSize: 4,\n slot: 5,\n name: \"4\",\n structure: s86,\n },\n ],\n },\n});\n$(s123, {\n ...s,\n type: 14,\n signature: 0xa62dc1e1ab682848n,\n name: \"fn (*opaque, []u8, Alignment, usize, usize) ?[*]u8\",\n length: 5,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 224,\n byteSize: 28,\n structure: s122,\n },\n ],\n template: o107\n },\n static: {\n members: [],\n template: o108\n },\n});\n$(s124, {\n ...s,\n type: 8,\n flags: 204,\n signature: 0x77acf15c3d1d71d3n,\n name: \"*const fn (*opaque, []u8, Alignment, usize, usize) ?[*]u8\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n structure: s123,\n },\n ],\n },\n});\n$(s125, {\n ...s,\n type: 12,\n flags: 14,\n signature: 0x904e42ce696930c2n,\n name: \"Arg(fn (*opaque, []u8, Alignment, usize) void)\",\n length: 4,\n byteSize: 20,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 128,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n name: \"retval\",\n structure: s0,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"0\",\n structure: s83,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 32,\n bitSize: 64,\n byteSize: 8,\n slot: 2,\n name: \"1\",\n structure: s118,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 128,\n bitSize: 5,\n byteSize: 1,\n slot: 3,\n name: \"2\",\n structure: s114,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 96,\n bitSize: 32,\n byteSize: 4,\n slot: 4,\n name: \"3\",\n structure: s86,\n },\n ],\n },\n});\n$(s126, {\n ...s,\n type: 14,\n signature: 0x6d484295c0c3632en,\n name: \"fn (*opaque, []u8, Alignment, usize) void\",\n length: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 160,\n byteSize: 20,\n structure: s125,\n },\n ],\n template: o109\n },\n static: {\n members: [],\n template: o110\n },\n});\n$(s127, {\n ...s,\n type: 8,\n flags: 204,\n signature: 0xa160bce25686afaen,\n name: \"*const fn (*opaque, []u8, Alignment, usize) void\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n structure: s126,\n },\n ],\n },\n});\n$(s128, {\n ...s,\n type: 2,\n flags: 14,\n signature: 0x82fdd6a3c2718ac5n,\n name: \"VTable\",\n byteSize: 16,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n name: \"alloc\",\n structure: s117,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 32,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"resize\",\n structure: s121,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 64,\n bitSize: 32,\n byteSize: 4,\n slot: 2,\n name: \"remap\",\n structure: s124,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 96,\n bitSize: 32,\n byteSize: 4,\n slot: 3,\n name: \"free\",\n structure: s127,\n },\n ],\n template: o111\n },\n});\n$(s129, {\n ...s,\n type: 8,\n flags: 204,\n signature: 0x032c51cdc1d57444n,\n name: \"*const VTable\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n structure: s128,\n },\n ],\n },\n});\n$(s130, {\n ...s,\n flags: 9,\n signature: 0x406b8a99e2cc9d59n,\n name: \"type\",\n align: 1,\n instance: {\n members: [\n {\n ...m,\n type: 6,\n bitOffset: 0,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n structure: s130,\n },\n ],\n },\n});\n$(s131, {\n ...s,\n type: 5,\n flags: 1,\n signature: 0x25c89e63075b428an,\n name: \"ES0\",\n byteSize: 2,\n align: 2,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n structure: s131,\n },\n ],\n },\n static: {\n members: [\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 0,\n name: \"OutOfMemory\",\n structure: s131,\n },\n ],\n template: o120\n },\n});\n$(s132, {\n ...s,\n flags: 1,\n signature: 0xcd90723bb6870a4dn,\n name: \"u5\",\n byteSize: 1,\n align: 1,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n bitOffset: 0,\n bitSize: 5,\n byteSize: 1,\n structure: s132,\n },\n ],\n },\n});\n$(s133, {\n ...s,\n type: 12,\n flags: 30,\n signature: 0xfbc5dcd792c9aee9n,\n name: \"Arg(fn (Allocator, usize, Alignment, usize) ?[*]u8)\",\n length: 3,\n byteSize: 24,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n name: \"retval\",\n structure: s87,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 32,\n bitSize: 64,\n byteSize: 8,\n slot: 1,\n name: \"0\",\n structure: s145,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 96,\n bitSize: 32,\n byteSize: 4,\n slot: 2,\n name: \"1\",\n structure: s86,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 160,\n bitSize: 5,\n byteSize: 1,\n slot: 3,\n name: \"2\",\n structure: s114,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 128,\n bitSize: 32,\n byteSize: 4,\n slot: 4,\n name: \"3\",\n structure: s86,\n },\n ],\n },\n});\n$(s134, {\n ...s,\n type: 14,\n signature: 0xa1c6c8ddb44e8aa1n,\n name: \"fn (Allocator, usize, Alignment, usize) ?[*]u8\",\n length: 3,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 192,\n byteSize: 24,\n structure: s133,\n },\n ],\n template: o122\n },\n});\n$(s135, {\n ...s,\n type: 14,\n signature: 0x3150e96a1cf4fb3en,\n name: \"fn (Allocator, usize, Alignment, usize) ?[*]u8\",\n length: 3,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 192,\n byteSize: 24,\n structure: s133,\n },\n ],\n template: o123\n },\n});\n$(s136, {\n ...s,\n type: 12,\n flags: 30,\n signature: 0x844b7d91572e5617n,\n name: \"Arg(fn (Allocator, []u8, Alignment, usize, usize) bool)\",\n length: 4,\n byteSize: 28,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 1,\n flags: 1,\n bitOffset: 192,\n bitSize: 1,\n byteSize: 1,\n slot: 0,\n name: \"retval\",\n structure: s97,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 64,\n byteSize: 8,\n slot: 1,\n name: \"0\",\n structure: s145,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 64,\n bitSize: 64,\n byteSize: 8,\n slot: 2,\n name: \"1\",\n structure: s118,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 200,\n bitSize: 5,\n byteSize: 1,\n slot: 3,\n name: \"2\",\n structure: s114,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 128,\n bitSize: 32,\n byteSize: 4,\n slot: 4,\n name: \"3\",\n structure: s86,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 160,\n bitSize: 32,\n byteSize: 4,\n slot: 5,\n name: \"4\",\n structure: s86,\n },\n ],\n },\n});\n$(s137, {\n ...s,\n type: 14,\n signature: 0xde63f52f14d5bc74n,\n name: \"fn (Allocator, []u8, Alignment, usize, usize) bool\",\n length: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 224,\n byteSize: 28,\n structure: s136,\n },\n ],\n template: o124\n },\n});\n$(s138, {\n ...s,\n type: 14,\n signature: 0xbacda0ec6bc94329n,\n name: \"fn (Allocator, []u8, Alignment, usize, usize) bool\",\n length: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 224,\n byteSize: 28,\n structure: s136,\n },\n ],\n template: o125\n },\n});\n$(s139, {\n ...s,\n type: 12,\n flags: 30,\n signature: 0xca4d0a4d3768c190n,\n name: \"Arg(fn (Allocator, []u8, Alignment, usize, usize) ?[*]u8)\",\n length: 4,\n byteSize: 32,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n name: \"retval\",\n structure: s87,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 32,\n bitSize: 64,\n byteSize: 8,\n slot: 1,\n name: \"0\",\n structure: s145,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 96,\n bitSize: 64,\n byteSize: 8,\n slot: 2,\n name: \"1\",\n structure: s118,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 224,\n bitSize: 5,\n byteSize: 1,\n slot: 3,\n name: \"2\",\n structure: s114,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 160,\n bitSize: 32,\n byteSize: 4,\n slot: 4,\n name: \"3\",\n structure: s86,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 192,\n bitSize: 32,\n byteSize: 4,\n slot: 5,\n name: \"4\",\n structure: s86,\n },\n ],\n },\n});\n$(s140, {\n ...s,\n type: 14,\n signature: 0x5694954bb4defd4fn,\n name: \"fn (Allocator, []u8, Alignment, usize, usize) ?[*]u8\",\n length: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 256,\n byteSize: 32,\n structure: s139,\n },\n ],\n template: o126\n },\n});\n$(s141, {\n ...s,\n type: 14,\n signature: 0xef3e466f3864f3f8n,\n name: \"fn (Allocator, []u8, Alignment, usize, usize) ?[*]u8\",\n length: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 256,\n byteSize: 32,\n structure: s139,\n },\n ],\n template: o127\n },\n});\n$(s142, {\n ...s,\n type: 12,\n flags: 30,\n signature: 0x8cbf4dbbc76d157cn,\n name: \"Arg(fn (Allocator, []u8, Alignment, usize) void)\",\n length: 3,\n byteSize: 24,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 160,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n name: \"retval\",\n structure: s0,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 64,\n byteSize: 8,\n slot: 1,\n name: \"0\",\n structure: s145,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 64,\n bitSize: 64,\n byteSize: 8,\n slot: 2,\n name: \"1\",\n structure: s118,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 160,\n bitSize: 5,\n byteSize: 1,\n slot: 3,\n name: \"2\",\n structure: s114,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 128,\n bitSize: 32,\n byteSize: 4,\n slot: 4,\n name: \"3\",\n structure: s86,\n },\n ],\n },\n});\n$(s143, {\n ...s,\n type: 14,\n signature: 0x0c1808e686843fafn,\n name: \"fn (Allocator, []u8, Alignment, usize) void\",\n length: 3,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 192,\n byteSize: 24,\n structure: s142,\n },\n ],\n template: o128\n },\n});\n$(s144, {\n ...s,\n type: 14,\n signature: 0x65e6caa57226340dn,\n name: \"fn (Allocator, []u8, Alignment, usize) void\",\n length: 3,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 192,\n byteSize: 24,\n structure: s142,\n },\n ],\n template: o129\n },\n});\n$(s145, {\n ...s,\n type: 2,\n flags: 270,\n signature: 0x792f7b78d636007fn,\n name: \"Allocator\",\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n name: \"ptr\",\n structure: s83,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 32,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"vtable\",\n structure: s129,\n },\n ],\n template: o130\n },\n static: {\n members: [\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 0,\n name: \"Error\",\n structure: s130,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 1,\n name: \"Log2Align\",\n structure: s130,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 2,\n name: \"VTable\",\n structure: s130,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 3,\n name: \"noResize\",\n structure: s120,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 4,\n name: \"noRemap\",\n structure: s123,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 5,\n name: \"noFree\",\n structure: s126,\n },\n {\n ...m,\n type: 5,\n flags: 18,\n slot: 6,\n name: \"rawAlloc\",\n structure: s134,\n },\n {\n ...m,\n type: 5,\n flags: 18,\n slot: 7,\n name: \"rawResize\",\n structure: s137,\n },\n {\n ...m,\n type: 5,\n flags: 18,\n slot: 8,\n name: \"rawRemap\",\n structure: s140,\n },\n {\n ...m,\n type: 5,\n flags: 18,\n slot: 9,\n name: \"rawFree\",\n structure: s143,\n },\n ],\n template: o134\n },\n});\n$(s146, {\n ...s,\n type: 12,\n flags: 30,\n signature: 0xd43be71134534ad3n,\n name: \"Arg(fn (Allocator, f32, f32, f32) void)\",\n length: 3,\n byteSize: 20,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 160,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n name: \"retval\",\n structure: s0,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 64,\n byteSize: 8,\n slot: 1,\n name: \"0\",\n structure: s145,\n },\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 64,\n bitSize: 32,\n byteSize: 4,\n slot: 2,\n name: \"1\",\n structure: s1,\n },\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 96,\n bitSize: 32,\n byteSize: 4,\n slot: 3,\n name: \"2\",\n structure: s1,\n },\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 128,\n bitSize: 32,\n byteSize: 4,\n slot: 4,\n name: \"3\",\n structure: s1,\n },\n ],\n },\n});\n$(s147, {\n ...s,\n type: 14,\n signature: 0x761bf1907c17c1a6n,\n name: \"fn (Allocator, f32, f32, f32) void\",\n length: 3,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 160,\n byteSize: 20,\n structure: s146,\n },\n ],\n template: o148\n },\n});\n$(s148, {\n ...s,\n type: 5,\n flags: 1,\n signature: 0x25c89e63075b428an,\n name: \"ES1\",\n byteSize: 2,\n align: 2,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n structure: s148,\n },\n ],\n },\n static: {\n members: [\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 0,\n name: \"OutOfMemory\",\n structure: s148,\n },\n ],\n template: o149\n },\n});\n$(s149, {\n ...s,\n type: 4,\n flags: 1,\n signature: 0x6b7a39b249c617e5n,\n name: \"ES1!void\",\n byteSize: 2,\n align: 2,\n instance: {\n members: [\n {\n ...m,\n bitOffset: 16,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n structure: s0,\n },\n {\n ...m,\n type: 3,\n flags: 8,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n structure: s148,\n },\n ],\n },\n});\n$(s150, {\n ...s,\n type: 12,\n flags: 42,\n signature: 0x5bb01020d75668f5n,\n name: \"Arg(fn (f32) ES1!void)\",\n length: 1,\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 32,\n bitSize: 16,\n byteSize: 2,\n slot: 0,\n name: \"retval\",\n structure: s149,\n },\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"0\",\n structure: s1,\n },\n ],\n },\n});\n$(s151, {\n ...s,\n type: 14,\n signature: 0x13f401b042d16a6cn,\n name: \"fn (f32) ES1!void\",\n length: 1,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 64,\n byteSize: 8,\n structure: s150,\n },\n ],\n template: o151\n },\n});\n$(s152, {\n ...s,\n type: 5,\n flags: 1,\n signature: 0x25c89e63075b428an,\n name: \"ES2\",\n byteSize: 2,\n align: 2,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n structure: s152,\n },\n ],\n },\n static: {\n members: [\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 0,\n name: \"OutOfMemory\",\n structure: s152,\n },\n ],\n template: o152\n },\n});\n$(s153, {\n ...s,\n type: 4,\n flags: 1,\n signature: 0x6b7a39b249c617e5n,\n name: \"ES2!void\",\n byteSize: 2,\n align: 2,\n instance: {\n members: [\n {\n ...m,\n bitOffset: 16,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n structure: s0,\n },\n {\n ...m,\n type: 3,\n flags: 8,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n structure: s152,\n },\n ],\n },\n});\n$(s154, {\n ...s,\n type: 12,\n flags: 42,\n signature: 0xe77c9ddd0c1696ddn,\n name: \"Arg(fn (u32, [4]PointUV, u32) ES2!void)\",\n length: 3,\n byteSize: 76,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 576,\n bitSize: 16,\n byteSize: 2,\n slot: 0,\n name: \"retval\",\n structure: s153,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"0\",\n structure: s15,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 32,\n bitSize: 512,\n byteSize: 64,\n slot: 2,\n name: \"1\",\n structure: s58,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 544,\n bitSize: 32,\n byteSize: 4,\n slot: 3,\n name: \"2\",\n structure: s15,\n },\n ],\n },\n});\n$(s155, {\n ...s,\n type: 14,\n signature: 0xa304643f09351c2an,\n name: \"fn (u32, [4]PointUV, u32) ES2!void\",\n length: 3,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 608,\n byteSize: 76,\n structure: s154,\n },\n ],\n template: o154\n },\n});\n$(s156, {\n ...s,\n type: 5,\n flags: 1,\n signature: 0x25c89e63075b428an,\n name: \"ES3\",\n byteSize: 2,\n align: 2,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n structure: s156,\n },\n ],\n },\n static: {\n members: [\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 0,\n name: \"OutOfMemory\",\n structure: s156,\n },\n ],\n template: o155\n },\n});\n$(s157, {\n ...s,\n type: 4,\n flags: 1,\n signature: 0x6b7a39b249c617e5n,\n name: \"ES3!void\",\n byteSize: 2,\n align: 2,\n instance: {\n members: [\n {\n ...m,\n bitOffset: 16,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n structure: s0,\n },\n {\n ...m,\n type: 3,\n flags: 8,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n structure: s156,\n },\n ],\n },\n});\n$(s158, {\n ...s,\n type: 12,\n flags: 42,\n signature: 0xd958a5eaf8a8097an,\n name: \"Arg(fn () ES3!void)\",\n length: 0,\n byteSize: 2,\n align: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n slot: 0,\n name: \"retval\",\n structure: s157,\n },\n ],\n },\n});\n$(s159, {\n ...s,\n type: 14,\n signature: 0x73c032fe09668bden,\n name: \"fn () ES3!void\",\n length: 0,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 16,\n byteSize: 2,\n structure: s158,\n },\n ],\n template: o157\n },\n});\n$(s160, {\n ...s,\n type: 5,\n flags: 1,\n signature: 0x25c89e63075b428an,\n name: \"ES4\",\n byteSize: 2,\n align: 2,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n structure: s160,\n },\n ],\n },\n static: {\n members: [\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 0,\n name: \"OutOfMemory\",\n structure: s160,\n },\n ],\n template: o158\n },\n});\n$(s161, {\n ...s,\n type: 4,\n flags: 1,\n signature: 0x6b7a39b249c617e5n,\n name: \"ES4!void\",\n byteSize: 2,\n align: 2,\n instance: {\n members: [\n {\n ...m,\n bitOffset: 16,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n structure: s0,\n },\n {\n ...m,\n type: 3,\n flags: 8,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n structure: s160,\n },\n ],\n },\n});\n$(s162, {\n ...s,\n type: 12,\n flags: 62,\n signature: 0x3fb768c112e58843n,\n name: \"Arg(fn (Allocator, f32, f32) ES4!void)\",\n length: 2,\n byteSize: 20,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 128,\n bitSize: 16,\n byteSize: 2,\n slot: 0,\n name: \"retval\",\n structure: s161,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 64,\n byteSize: 8,\n slot: 1,\n name: \"0\",\n structure: s145,\n },\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 64,\n bitSize: 32,\n byteSize: 4,\n slot: 2,\n name: \"1\",\n structure: s1,\n },\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 96,\n bitSize: 32,\n byteSize: 4,\n slot: 3,\n name: \"2\",\n structure: s1,\n },\n ],\n },\n});\n$(s163, {\n ...s,\n type: 14,\n signature: 0xf55fdf915ebb0439n,\n name: \"fn (Allocator, f32, f32) ES4!void\",\n length: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 160,\n byteSize: 20,\n structure: s162,\n },\n ],\n template: o160\n },\n});\n$(s164, {\n ...s,\n type: 5,\n flags: 1,\n signature: 0x25c89e63075b428an,\n name: \"ES5\",\n byteSize: 2,\n align: 2,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n structure: s164,\n },\n ],\n },\n static: {\n members: [\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 0,\n name: \"OutOfMemory\",\n structure: s164,\n },\n ],\n template: o161\n },\n});\n$(s165, {\n ...s,\n type: 4,\n flags: 1,\n signature: 0x6b7a39b249c617e5n,\n name: \"ES5!void\",\n byteSize: 2,\n align: 2,\n instance: {\n members: [\n {\n ...m,\n bitOffset: 16,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n structure: s0,\n },\n {\n ...m,\n type: 3,\n flags: 8,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n structure: s164,\n },\n ],\n },\n});\n$(s166, {\n ...s,\n type: 12,\n flags: 42,\n signature: 0xd958a5eaf8a8097an,\n name: \"Arg(fn () ES5!void)\",\n length: 0,\n byteSize: 2,\n align: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n slot: 0,\n name: \"retval\",\n structure: s165,\n },\n ],\n },\n});\n$(s167, {\n ...s,\n type: 14,\n signature: 0x73c032fe09668bden,\n name: \"fn () ES5!void\",\n length: 0,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 16,\n byteSize: 2,\n structure: s166,\n },\n ],\n template: o163\n },\n});\n$(s168, {\n ...s,\n type: 12,\n signature: 0xb1afac27f34003f4n,\n name: \"Arg(fn (f32, f32) void)\",\n length: 2,\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 64,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n name: \"retval\",\n structure: s0,\n },\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"0\",\n structure: s1,\n },\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 32,\n bitSize: 32,\n byteSize: 4,\n slot: 2,\n name: \"1\",\n structure: s1,\n },\n ],\n },\n});\n$(s169, {\n ...s,\n type: 14,\n signature: 0x63bac1760494db20n,\n name: \"fn (f32, f32) void\",\n length: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 64,\n byteSize: 8,\n structure: s168,\n },\n ],\n template: o164\n },\n});\n$(s170, {\n ...s,\n type: 5,\n flags: 1,\n signature: 0x25c89e63075b428an,\n name: \"ES6\",\n byteSize: 2,\n align: 2,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n structure: s170,\n },\n ],\n },\n static: {\n members: [\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 0,\n name: \"OutOfMemory\",\n structure: s170,\n },\n ],\n template: o165\n },\n});\n$(s171, {\n ...s,\n type: 4,\n flags: 1,\n signature: 0x6b7a39b249c617e5n,\n name: \"ES6!void\",\n byteSize: 2,\n align: 2,\n instance: {\n members: [\n {\n ...m,\n bitOffset: 16,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n structure: s0,\n },\n {\n ...m,\n type: 3,\n flags: 8,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n structure: s170,\n },\n ],\n },\n});\n$(s172, {\n ...s,\n type: 12,\n flags: 42,\n signature: 0xd958a5eaf8a8097an,\n name: \"Arg(fn () ES6!void)\",\n length: 0,\n byteSize: 2,\n align: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n slot: 0,\n name: \"retval\",\n structure: s171,\n },\n ],\n },\n});\n$(s173, {\n ...s,\n type: 14,\n signature: 0x73c032fe09668bden,\n name: \"fn () ES6!void\",\n length: 0,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 16,\n byteSize: 2,\n structure: s172,\n },\n ],\n template: o167\n },\n});\n$(s174, {\n ...s,\n type: 5,\n flags: 1,\n signature: 0x25c89e63075b428an,\n name: \"ES7\",\n byteSize: 2,\n align: 2,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n structure: s174,\n },\n ],\n },\n static: {\n members: [\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 0,\n name: \"OutOfMemory\",\n structure: s174,\n },\n ],\n template: o168\n },\n});\n$(s175, {\n ...s,\n type: 4,\n flags: 1,\n signature: 0x6b7a39b249c617e5n,\n name: \"ES7!void\",\n byteSize: 2,\n align: 2,\n instance: {\n members: [\n {\n ...m,\n bitOffset: 16,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n structure: s0,\n },\n {\n ...m,\n type: 3,\n flags: 8,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n structure: s174,\n },\n ],\n },\n});\n$(s176, {\n ...s,\n type: 12,\n flags: 42,\n signature: 0xd958a5eaf8a8097an,\n name: \"Arg(fn () ES7!void)\",\n length: 0,\n byteSize: 2,\n align: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n slot: 0,\n name: \"retval\",\n structure: s175,\n },\n ],\n },\n});\n$(s177, {\n ...s,\n type: 14,\n signature: 0x73c032fe09668bden,\n name: \"fn () ES7!void\",\n length: 0,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 16,\n byteSize: 2,\n structure: s176,\n },\n ],\n template: o170\n },\n});\n$(s178, {\n ...s,\n type: 5,\n flags: 1,\n signature: 0x25c89e63075b428an,\n name: \"ES8\",\n byteSize: 2,\n align: 2,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n structure: s178,\n },\n ],\n },\n static: {\n members: [\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 0,\n name: \"OutOfMemory\",\n structure: s178,\n },\n ],\n template: o171\n },\n});\n$(s179, {\n ...s,\n type: 4,\n flags: 1,\n signature: 0x6b7a39b249c617e5n,\n name: \"ES8!void\",\n byteSize: 2,\n align: 2,\n instance: {\n members: [\n {\n ...m,\n bitOffset: 16,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n structure: s0,\n },\n {\n ...m,\n type: 3,\n flags: 8,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n structure: s178,\n },\n ],\n },\n});\n$(s180, {\n ...s,\n type: 12,\n flags: 42,\n signature: 0xd958a5eaf8a8097an,\n name: \"Arg(fn () ES8!void)\",\n length: 0,\n byteSize: 2,\n align: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n slot: 0,\n name: \"retval\",\n structure: s179,\n },\n ],\n },\n});\n$(s181, {\n ...s,\n type: 14,\n signature: 0x73c032fe09668bden,\n name: \"fn () ES8!void\",\n length: 0,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 16,\n byteSize: 2,\n structure: s180,\n },\n ],\n template: o173\n },\n});\n$(s182, {\n ...s,\n type: 5,\n flags: 1,\n signature: 0x25c89e63075b428an,\n name: \"ES9\",\n byteSize: 2,\n align: 2,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n structure: s182,\n },\n ],\n },\n static: {\n members: [\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 0,\n name: \"OutOfMemory\",\n structure: s182,\n },\n ],\n template: o174\n },\n});\n$(s183, {\n ...s,\n type: 4,\n flags: 1,\n signature: 0x6b7a39b249c617e5n,\n name: \"ES9!void\",\n byteSize: 2,\n align: 2,\n instance: {\n members: [\n {\n ...m,\n bitOffset: 16,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n structure: s0,\n },\n {\n ...m,\n type: 3,\n flags: 8,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n structure: s182,\n },\n ],\n },\n});\n$(s184, {\n ...s,\n type: 12,\n flags: 46,\n signature: 0x5f0fe95343834fecn,\n name: \"Arg(fn ([]const Serialized, bool) ES9!void)\",\n length: 2,\n byteSize: 12,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 64,\n bitSize: 16,\n byteSize: 2,\n slot: 0,\n name: \"retval\",\n structure: s183,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 64,\n byteSize: 8,\n slot: 1,\n name: \"0\",\n structure: s61,\n },\n {\n ...m,\n type: 1,\n flags: 1,\n bitOffset: 80,\n bitSize: 1,\n byteSize: 1,\n slot: 2,\n name: \"1\",\n structure: s97,\n },\n ],\n },\n});\n$(s185, {\n ...s,\n type: 14,\n signature: 0x7dcebd98ea82b936n,\n name: \"fn ([]const Serialized, bool) ES9!void\",\n length: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 96,\n byteSize: 12,\n structure: s184,\n },\n ],\n template: o176\n },\n});\n$(s186, {\n ...s,\n type: 9,\n flags: 64,\n signature: 0x9212e6749825a514n,\n name: \"[_]f32\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 4,\n bitSize: 32,\n byteSize: 4,\n structure: s1,\n },\n ],\n },\n});\n$(s187, {\n ...s,\n type: 8,\n flags: 188,\n signature: 0xfc4e3831fa228a2en,\n name: \"[]const f32\",\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 64,\n byteSize: 8,\n slot: 0,\n structure: s186,\n },\n ],\n },\n});\n$(s188, {\n ...s,\n type: 12,\n flags: 14,\n signature: 0x0292a02ab8f8020cn,\n name: \"Arg(fn ([]const f32) void)\",\n length: 1,\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 64,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n name: \"retval\",\n structure: s0,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 64,\n byteSize: 8,\n slot: 1,\n name: \"0\",\n structure: s187,\n },\n ],\n },\n});\n$(s189, {\n ...s,\n type: 14,\n signature: 0x47389ea7e1d3d337n,\n name: \"fn ([]const f32) void\",\n length: 1,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 64,\n byteSize: 8,\n structure: s188,\n },\n ],\n template: o177\n },\n});\n$(s190, {\n ...s,\n type: 5,\n flags: 1,\n signature: 0x25c89e63075b428an,\n name: \"ES10\",\n byteSize: 2,\n align: 2,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n structure: s190,\n },\n ],\n },\n static: {\n members: [\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 0,\n name: \"OutOfMemory\",\n structure: s190,\n },\n ],\n template: o178\n },\n});\n$(s191, {\n ...s,\n type: 4,\n flags: 1,\n signature: 0x6b7a39b249c617e5n,\n name: \"ES10!void\",\n byteSize: 2,\n align: 2,\n instance: {\n members: [\n {\n ...m,\n bitOffset: 16,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n structure: s0,\n },\n {\n ...m,\n type: 3,\n flags: 8,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n structure: s190,\n },\n ],\n },\n});\n$(s192, {\n ...s,\n type: 6,\n flags: 1,\n signature: 0x9ebf0e3a55069528n,\n name: \"Tool\",\n byteSize: 1,\n align: 1,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n bitOffset: 0,\n bitSize: 1,\n byteSize: 1,\n structure: s192,\n },\n ],\n },\n static: {\n members: [\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 0,\n name: \"None\",\n structure: s192,\n },\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 1,\n name: \"DrawShape\",\n structure: s192,\n },\n ],\n template: o180\n },\n});\n$(s193, {\n ...s,\n type: 12,\n flags: 42,\n signature: 0x87df1d6f0819619en,\n name: \"Arg(fn (Tool) ES10!void)\",\n length: 1,\n byteSize: 4,\n align: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n slot: 0,\n name: \"retval\",\n structure: s191,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 16,\n bitSize: 1,\n byteSize: 1,\n slot: 1,\n name: \"0\",\n structure: s192,\n },\n ],\n },\n});\n$(s194, {\n ...s,\n type: 14,\n signature: 0xfd284c5d6ec70f46n,\n name: \"fn (Tool) ES10!void\",\n length: 1,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n structure: s193,\n },\n ],\n template: o183\n },\n});\n$(s195, {\n ...s,\n type: 5,\n flags: 1,\n signature: 0x25c89e63075b428an,\n name: \"ES11\",\n byteSize: 2,\n align: 2,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n structure: s195,\n },\n ],\n },\n static: {\n members: [\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 0,\n name: \"OutOfMemory\",\n structure: s195,\n },\n ],\n template: o184\n },\n});\n$(s196, {\n ...s,\n type: 4,\n flags: 1,\n signature: 0x6b7a39b249c617e5n,\n name: \"ES11!void\",\n byteSize: 2,\n align: 2,\n instance: {\n members: [\n {\n ...m,\n bitOffset: 16,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n structure: s0,\n },\n {\n ...m,\n type: 3,\n flags: 8,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n structure: s195,\n },\n ],\n },\n});\n$(s197, {\n ...s,\n type: 1,\n flags: 10,\n signature: 0xdad9d201b8d5c9b5n,\n name: \"[4]Point\",\n length: 4,\n byteSize: 32,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 64,\n byteSize: 8,\n structure: s8,\n },\n ],\n },\n});\n$(s198, {\n ...s,\n type: 9,\n flags: 10,\n signature: 0x9b9c01002975271fn,\n name: \"[_][4]Point\",\n byteSize: 32,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 256,\n byteSize: 32,\n structure: s197,\n },\n ],\n },\n});\n$(s199, {\n ...s,\n type: 8,\n flags: 188,\n signature: 0x40bb9abc611262cen,\n name: \"[]const [4]Point\",\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 64,\n byteSize: 8,\n slot: 0,\n structure: s198,\n },\n ],\n },\n});\n$(s200, {\n ...s,\n type: 9,\n flags: 14,\n signature: 0x7a657b2cbd904362n,\n name: \"[_][]const [4]Point\",\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 64,\n byteSize: 8,\n structure: s199,\n },\n ],\n },\n});\n$(s201, {\n ...s,\n type: 8,\n flags: 188,\n signature: 0x4f4b1e60a039c441n,\n name: \"[]const []const [4]Point\",\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 64,\n byteSize: 8,\n slot: 0,\n structure: s200,\n },\n ],\n },\n});\n$(s202, {\n ...s,\n type: 2,\n flags: 4106,\n signature: 0x19c171c6cb7748afn,\n name: \"ShapeProps\",\n byteSize: 36,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitOffset: 0,\n bitSize: 128,\n byteSize: 16,\n slot: 0,\n name: \"fill_color\",\n structure: s30,\n },\n {\n ...m,\n type: 5,\n bitOffset: 128,\n bitSize: 128,\n byteSize: 16,\n slot: 1,\n name: \"stroke_color\",\n structure: s30,\n },\n {\n ...m,\n type: 4,\n bitOffset: 256,\n bitSize: 32,\n byteSize: 4,\n slot: 2,\n name: \"stroke_width\",\n structure: s1,\n },\n ],\n template: o186\n },\n});\n$(s203, {\n ...s,\n type: 12,\n flags: 46,\n signature: 0xaee11af771b7adc0n,\n name: \"Arg(fn ([]const []const [4]Point, ShapeProps) ES11!void)\",\n length: 2,\n byteSize: 48,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 352,\n bitSize: 16,\n byteSize: 2,\n slot: 0,\n name: \"retval\",\n structure: s196,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 64,\n byteSize: 8,\n slot: 1,\n name: \"0\",\n structure: s201,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 64,\n bitSize: 288,\n byteSize: 36,\n slot: 2,\n name: \"1\",\n structure: s202,\n },\n ],\n },\n});\n$(s204, {\n ...s,\n type: 14,\n signature: 0x185e378cc11e1cf5n,\n name: \"fn ([]const []const [4]Point, ShapeProps) ES11!void\",\n length: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 384,\n byteSize: 48,\n structure: s203,\n },\n ],\n template: o187\n },\n});\n$(s205, {\n ...s,\n type: 2,\n flags: 4096,\n signature: 0x239ab4f327f6ac1bn,\n name: \"index\",\n align: 1,\n static: {\n members: [\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 0,\n name: \"connect_web_gpu_programs\",\n structure: s57,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 1,\n name: \"connect_on_asset_update_callback\",\n structure: s66,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 2,\n name: \"connect_on_asset_selection_callback\",\n structure: s71,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 3,\n name: \"connect_cache_callbacks\",\n structure: s81,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 4,\n name: \"ASSET_ID_TRESHOLD\",\n structure: s15,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 5,\n name: \"init_state\",\n structure: s147,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 6,\n name: \"update_render_scale\",\n structure: s151,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 7,\n name: \"add_asset\",\n structure: s155,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 8,\n name: \"remove_asset\",\n structure: s159,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 9,\n name: \"on_update_pick\",\n structure: s68,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 10,\n name: \"on_pointer_down\",\n structure: s163,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 11,\n name: \"on_pointer_up\",\n structure: s167,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 12,\n name: \"on_pointer_move\",\n structure: s169,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 13,\n name: \"on_pointer_leave\",\n structure: s173,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 14,\n name: \"commit_changes\",\n structure: s177,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 15,\n name: \"render_draw\",\n structure: s181,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 16,\n name: \"render_pick\",\n structure: s78,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 17,\n name: \"reset_assets\",\n structure: s185,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 18,\n name: \"destroy_state\",\n structure: s78,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 19,\n name: \"import_icons\",\n structure: s189,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 20,\n name: \"set_tool\",\n structure: s194,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 21,\n name: \"stop_drawing_shape\",\n structure: s78,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 22,\n name: \"add_shape\",\n structure: s204,\n },\n ],\n template: o188\n },\n});\nconst structures = [\n s0, s1, s2, s3, s4, s5, s6, s7, s8, s9,\n s10, s11, s12, s13, s14, s15, s16, s17, s18, s19,\n s20, s21, s22, s23, s24, s25, s26, s27, s28, s29,\n s30, s31, s32, s33, s34, s35, s36, s37, s38, s39,\n s40, s41, s42, s43, s44, s45, s46, s47, s48, s49,\n s50, s51, s52, s53, s54, s55, s56, s57, s58, s59,\n s60, s61, s62, s63, s64, s65, s66, s67, s68, s69,\n s70, s71, s72, s73, s74, s75, s76, s77, s78, s79,\n s80, s81, s82, s83, s84, s85, s86, s87, s88, s89,\n s90, s91, s92, s93, s94, s95, s96, s97, s98, s99,\n s100, s101, s102, s103, s104, s105, s106, s107, s108, s109,\n s110, s111, s112, s113, s114, s115, s116, s117, s118, s119,\n s120, s121, s122, s123, s124, s125, s126, s127, s128, s129,\n s130, s131, s132, s133, s134, s135, s136, s137, s138, s139,\n s140, s141, s142, s143, s144, s145, s146, s147, s148, s149,\n s150, s151, s152, s153, s154, s155, s156, s157, s158, s159,\n s160, s161, s162, s163, s164, s165, s166, s167, s168, s169,\n s170, s171, s172, s173, s174, s175, s176, s177, s178, s179,\n s180, s181, s182, s183, s184, s185, s186, s187, s188, s189,\n s190, s191, s192, s193, s194, s195, s196, s197, s198, s199,\n s200, s201, s202, s203, s204, s205,\n];\nconst root = s205;\nconst settings = {\n runtimeSafety: false,\n littleEndian: true,\n libc: false,\n};\n\n// create runtime environment\nconst env = createEnvironment();\n\n// recreate structures\nenv.recreateStructures(structures, settings);\n\n// initiate loading and compilation of WASM bytecodes\nconst source = (async () => {\n // index.zig\n const binaryString = atob(\"AGFzbQEAAAABiQInYAJ/fwBgBX9/f39/AGAEf39/fwF/YAN/f38AYAZ/f39/f38Bf2AEf399fQF/YAAAYAF/AGAEf319fQBgAX0Bf2ADf39/AX9gAAF/YAN/fX0Bf2ACfX0AYAF/AX9gAn9/AX1gAn9/AX9gBH9/f38AYAR/f35/AGAFf319fX8AYAV9fX19fQF9YAZ/f39/f38AYAJ9fQF9YAZ/f399f30AYAV/f399fQBgBn99fX19fwBgBH9/f30AYAF9AX1gAX8BfmAFf399fX8Bf2AHf39/f39/fwF/YAV/f39/fwF/YAV/fn5+fgBgAn98AGACfH8BfGABfAF/YAF8AX1gAn1/AX9gA3x8fAF8AoQBBgNlbnYGbWVtb3J5AgAFA2VudhlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAXAA1gIDZW52DV9kaXNwbGF5UGFuaWMAAANlbnYNX2hhbmRsZUpzQ2FsbAACA2VudhBfYWxsb2NhdGVKc1RodW5rABADZW52DF9mcmVlSnNUaHVuawAQA78DvQMGCwcHBwAICQoLBwwLDQsLCwYKBgAOBgoQEAABExQBAwMKCg4PBxAODgMHAw4OAQMDBwMLDg4HFRUVABYQAxcYAQoBAwMZGgAAFwMDBgMDAxYbDg4QDgAQDgoQEBAQEAQEAQIKBAQBAw8DAQccEBAREBAREBAQEBAQERAQEBEQEBACBAQBBwAHBwcHBwcHBwcHBwcHBwcGBwYGBgYGBgYGBgYGBgYGBhAREBEQERARChwQEREQERAREREQEBAQEBAAAwAAAAAAAAAAAAAAAAAAAAUdBQUFBQUFBQUFBQUFBQUFBB4EBAQEBAQEBAQEBAQEBAQEHgQEBAQEBAQEBAQEBAQEBAEVAQEBAQEBAQEBAQEBAQEBEBAQEBAQEAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEVAQEBAQEBAQEBAQEBAQEBAxEDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAIfAgICAgICAgICAgICAgICEBAQEBAQEAYQBwICBAQEBAEDCh8QEAcGCwIOBAQBICEiFiMbJCQlHxsmFhsbBggBfwFBgIAQCwe4AQoPZ2V0RmFjdG9yeVRodW5rAAUKaW5pdGlhbGl6ZQCbAxVhbGxvY2F0ZVNjcmF0Y2hNZW1vcnkAnAMRZnJlZVNjcmF0Y2hNZW1vcnkApQMIcnVuVGh1bmsApgMQcnVuVmFyaWFkaWNUaHVuawCnAw1jcmVhdGVKc1RodW5rAKgDDmRlc3Ryb3lKc1RodW5rAKkDC2ZsdXNoU3Rkb3V0AKsDE2dldE1vZHVsZUF0dHJpYnV0ZXMArAMIAQQJ8gQBAEEBC9UCAAYHCAkKCwwNDg8QERITFBUWFxgZGhtxcnN0dXZ3eHl6e3x9fn+AAYEBggGDAYQBtQG2AbcBuAG5AboBuwG8Ab0BY2RlhQGGAYcBiAFSKFMeqwGsAa0BrgGvAbABsQGyAb4BvwHAAcEBbFZXWF1eX2BhYsIBwwGZApoCmwKcAp0CngKfAllaW1yUA5UDlgOXA5gDmQOaA60DrwOwA7EDZmhpaokBiwGMAY0BjgGPAZABkQGSAZMBlAGVAZYBlwGYAZkBmgGcAZ0BngGfAaABoQGiAaMBpAGlAaYBpwGoAakBqgHEAcYBxwHIAckBygHLAcwBzQHOAc8B0AHRAdIB0wHUAdUB1wHYAdkB2gHbAdwB3QHeAd8B4AHhAeIB4wHkAeUB5gHoAekB6gHrAewB7QHuAe8B8AHxAfIB8wH0AfUB9gH3AfkB+gH7AfwB/QH+Af8BgAKBAoICgwKEAoUChgKHAogCigKLAowCjQKOAo8CkAKRApICkwKUApUClgKXApgCoAKiAqMCpAKlAqYCpwKoAqkCqgKrAqwCrQKuAq8CsAKxArICswK0ArUCtgK3ArgCuQK6ArsCvAK9Ar4CvwLAAsECwwLEAsUCxgLHAsgCyQLKAssCzALNAs4CzwLQAtEC0gLUAtUC1gLXAtgC2QLaAtsC3ALdAt4C3wLgAuEC4gLjAuQC5QLmAucC6ALpAuoC6wLsAu0C7gLvAvAC8QLyAvMC9AL1AvYC9wL4AvkC+gL7AvwC/QL+Av8CgAOBA4IDgwOFA4YDhwOIA4kDigOLA4wDjQOOA48DkAORA5IDkwOeA6ADogOkAwq3nwO9Aw4AQaizEEEAQYQJ/AsACwQAQQELCwBBACAANgK0sxALCwBBACAANgKosxALCwBBACAANgKwsxALFABBACABNgK8sxBBACAANgK4sxALPQBBAEIANwLMshBBACACOALIshBBACABOALE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ACgC0LIQIQ9BACEBAkACQANAAkACQAJAIAEgD0YNACABQQFqIRAgAiABQZQBbGoiASgCRCERIAEtAJABQQFxDQIgAEEgaiABQcQA/AoAACAAIBE2AmQgAEHoAGohEkFoIQEDQCABRQ0CIBIgDiABQcSNEGooAgBBBHRqIhMpAgA3AgAgEkEIaiATQQhqKQIANwIAIAFBBGohASASQRBqIRIMAAsLIABBACoCyLIQIhQ4ApQJIABBADYCkAkgACAUOAKMCSAAQQAqAsSyECIUOAKICSAAQQA2AoQJIAAgFDgCgAkgAEIANwP4CEEAIQEDQCABQQRGDQQgACAAQfgIaiABQQN0aikDADcD+AcCQAJAIAFBA0cNACAAQgA3A7AlIABBsCVqIRJBBCETDAELIAAgAEH4CGogAUEBaiITQQN0aikDADcDkAYgAEGQBmohEgsgAEHgCmogAUEHdGogAEH4B2ogEkEAKgLAshAiFCAUkkHsjBBDAAAAABBCIBMhAQwACwsgAEHoAGogEUEAKAK0sxAoAgARAAAgECEBDAELIAEoAnwhEyABLQCAASESIABByAFqIAFBxAD8CgAAIA0gAUHIAGpBNPwKAAAgDEECaiABQYMBai0AADoAACAMIAEvAIEBOwAAIAsgASkChAE3AgAgC0EIaiABQYwBaigCADYCACAAIBI6AMgCIAAgEzYCxAIgACARNgKMAgJAIBJFDQAgCSABKQJMNwIAIAggASkCXCIVNwIAIAcgFTcCACAGIAEpAmw3AgAgAEHgCmpBCGogCkEIaiISKQIANwMAIAlBCGogAUHUAGopAgA3AgAgCEEIaiABQeQAaikCACIVNwIAIAdBCGogFTcCACAGQQhqIAFB9ABqKQIANwIAIAAgCikCADcD4AogBUEIaiASKQIANwIAIAUgCikCADcCACAAQdgCaiAAQeAKakHgAPwKAAAgAEHYAmogE0EAKAK0sxAoAgARAAAgECEBDAELIABBuANqIABByAFqIABBGGpB9LIQQfyyEBAfIAAvAaQEIhYNAiAQIQEgAC0AoARFDQAgAEGoBGogAEG4A2pB6AD8CgAAIABBkAVqIABBuANqQegA/AoAACAAKAKoBCAAKAKsBCAEQQYgA0EAKAK0sxAoAggRAQAgECEBDAALC0EAIRYgAEHgCmpBCEEAKAK0sxAo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DSAIQRB2IgpJDQAgDiAJOwECIA4gBzsBACAIIQcgCiEFDAALCyAJQQFqIQkgBEEBaiEEDAALCyADLQAAQQFxDQELIAUgADYCAAsgBCABQZQB/AoAAEEAIQQLIAJBMGokACAEC7ACAwN/AX4DfyMAQSBrIgEkAEEAIQICQEEAKALUshAiAyAATw0AA0BBfyADQQF2IANqQQFqIgIgAiADSRsiAyAASQ0ACyABQQApAtyyECIENwMAIAFBDGogASADQZgBbBAtIAEvARQiAg0AIAEoAgwhAAJAAkBBACgC0LIQIgUNACABIAQ3AxggAUEYakEAKALMshBBACgC1LIQQZgBbBBRDAELIABBACgCzLIQIgZBqtWq1XpBACgC1LIQIgcbIAVBAnT8CgAAIAAgA0ECdGogBiAHQQJ0akGq1arVeiAHGyAFQZQBbPwKAAAgASAENwMYIAFBGGpBACgCzLIQQQAoAtSyEEGYAWwQUUEAIAU2AtCyEAtBACADNgLUshBBACAANgLMshALIAFBIGokACACCyUAQQJBA0EAIABB/wFxIgBBEUkbIABBCUkbQQJ0QZibEGooAgALnAECAX8BfiMAQTBrIgMkACADIAEpAgA3AxgCQAJAAkACQEEBDQBBCCEBDAELIANBIGogA0EYaiACEEEgAykDICIEQiCIpyIBQf//A3FFDQELIAMgATsBCCADIQEMAQsgAyACNgIQIAMgBD4CDCADQQA7ARQgA0EMaiEBCyAAIAEpAgA3AgAgAEEIaiABQQhqKAIANgIAIANBMGokAAs4AQJ/IwBBEGsiASQAIAFBACkC3LIQNwMIIAFBCGogACAALQAAIgIQLCACdEEEahBRIAFBEGokAAv6AwIHfwJ+IwBBIGsiAyQAIAEoAgQhBCABKAIAIQUgASgCCCEGAkACQAJAAkACQAJAIAEoAgwiAUUNACABQQRqIQdBASABLQAAIgh0IQlBAEEBQQIgCEERSRsgCEEJSRsOAwECAwELIAZFDQNBACEBA0AgBCABRg0EAkAgBSgCACACRw0AIABBAToABCAAIAE2AgAMBgsgBUEEaiEFIAFBAWohAQwACwsgAyABNgIUIAMgBjYCECADIAQ2AgwgAyAFNgIIIANBGGogA0EIaiACIAEgByAJEDsCQAJAIAMtABwNAEIAIQpCACELDAELIAcg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ACABKAIAIAEoAgQgABEAAEEAC9sBAQF/IwBBEGsiBCQAAkACQCACDQBBQCECA0ACQCACDQBBxJgQIQIMAwsCQCACQZi1EGooAgANACACQZi1EGogAzYCACAEQQA7AQQgBCACQaSSEGooAgA2AgAgBCECDAMLIAJBBGohAgwACwtBQCECA0ACQCACDQBBzJgQIQIMAgsCQCACQaSSEGooAgAgA0cNACACQZi1EGoiAigCACEDIAJBADYCACAEQQA7AQwgBCADNgIIIARBCGohAgwCCyACQQRqIQIMAAsLIAAgAikCADcCACAEQRBqJAALDgAgASgCACAAEQcAQQALaQIBfwJ9IwBBIGsiAiQAIAJBEGogAUEUaikCADcDACACIAEpAgQ3AwAgAiABKQIMNwMIIAIgASoCHCIDOAIYIAIgASoCICIEOAIcIAEgAiACQQhqIAMgBCAAEQUANgIAIAJBIGokAEEAC9sBAQF/IwBBEGsiBCQAAkACQCACDQBBQCECA0ACQCACDQBBxJgQIQIMAwsCQCACQdi1EGooAgANACACQdi1EGogAzYCACAEQQA7AQQgBCACQeSSEGooAgA2AgAgBCECDAMLIAJBBGohAgwACwtBQCECA0ACQCACDQBBzJgQIQIMAgsCQCACQeSSEGooAgAgA0cNACACQdi1EGoiAigCACEDIAJBADYCACAEQQA7AQwgBCADNgIIIARBCGohAgwCCyACQQRqIQIMAAsLIAAgAikCADcCACAEQRBqJAALEwAgASgCACABKAIEIAARAABBAAtWAgF/A30jAEEgayICJAAgAiABKQIANwMIIAIgASoCCCIDOAIQIAIgASoCDCIEOAIUIAIgASoCECIFOAIYIAJBCGogAyAEIAUgABEIACACQSBqJABBAAsTACABIAEqAgAgABEJADsBBEEAC1YBBH8jAEHQAGsiAiQAIAIgASgCACIDNgIIIAJBCGpBBGoiBCABQQRqQcAA/AoAACACIAEoAkQiBTYCTCABIAMgBCAFIAARCgA7AUggAkHQAGokAEEACw4AIAEgABELADsBAEEACw4AIAEoAgAgABEHAEEAC9sBAQF/IwBBEGsiBCQAAkACQCACDQBBQCECA0ACQCACDQBBxJgQIQIMAwsCQCACQZi0EGooAgANACACQZi0EGogAzYCACAEQQA7AQQgBCACQaiPEGooAgA2AgAgBCECDAMLIAJBBGohAgwACwtBQCECA0ACQCACDQBBzJgQIQIMAgsCQCACQaiPEGooAgAgA0cNACACQZi0EGoiAigCACEDIAJBADYCACAEQQA7AQwgBCADNgIIIARBCGohAgwCCyACQQRqIQIMAAsLIAAgAikCADcCACAEQRBqJAALSgIBfwJ9IwBBEGsiAiQAIAIgASkCADcDACACIAEqAggiAzgCCCACIAEqAgwiBDgCDCABIAIgAyAEIAARDAA7ARAgAkEQaiQAQQALEwAgASoCACABKgIEIAARDQBBAAsJACAAEQYAQQAL2wEBAX8jAEEQayIEJAACQAJAIAINAEFAIQIDQAJAIAINAEHEmBAhAgwDCwJAIAJB2LQQaigCAA0AIAJB2LQQaiADNgIAIARBADsBBCAEIAJB6I8QaigCADYCACAEIQIMAwsgAkEEaiECDAALC0FAIQIDQAJAIAINAEHMmBAhAgwCCwJAIAJB6I8QaigCACADRw0AIAJB2LQQaiICKAIAIQMgAkEANgIAIARBADsBDCAEIAM2AgggBEEIaiECDAILIAJBBGohAgwACwsgACACKQIANwIAIARBEGokAAsdACABIAEoAgAgASgCBCABLQAKIAARCgA7AQhBAAsxAQJ/IwBBEGsiAiQAIAIgAS0AAkEBcSIDOgAPIAEgAyAAEQ4AOwEAIAJBEGokAEEAC1MBBH8jAEEwayICJAAgAiABKAIEIgM2AgggAiABKAIAIgQ2AgQgAkEEakEIaiIFIAFBCGpBJPwKAAAgASAEIAMgBSAAEQoAOwEsIAJBMGokAEEACzoBAX8jAEEQayIEJAAgBCACQR9xIgI6AAwgACgCACABIAIgAyAAKAIEKAIAEQIAIQAgBEEQaiQAIAALPgEBfyMAQRBrIgYkACAGIANBH3EiAzoADCAAKAIAIAEgAiADIAQgBSAAKAIEKAIEEQQAIQAgBkEQaiQAIAALPgEBfyMAQRBrIgYkACAGIANBH3EiAzoADCAAKAIAIAEgAiADIAQgBSAAKAIEKAIIEQQAIQAgBkEQaiQAIAALOAEBfyMAQRBrIgUkACAFIANBH3EiAzoADCAAKAIAIAEgAiADIAQgACgCBCgCDBEBACAFQRBqJAALDgAgAEEAKALYsxAQigELVgEBfyMAQRBrIgIkACACIAA2AgwCQAJAAkACQCABIAJBDGpBBBCzAQ4EAAMBAgALIAJBEGokAA8LQbCLEEEiED4AC0GVixBBGhA+AAtB+ooQQRoQPgALDgAgAEEAKALcsxAQigELDgAgAEEAKALgsxAQigELDgAgAEEAKALksxAQigELDgAgAEEAKALosxAQigELDgAgAEEAKALssxAQigELDgAgAEEAKALwsxAQigELDgAgAEEAKAL0sxAQigELDgAgAEEAKAL4sxAQigELDgAgAEEAKAL8sxAQigELDgAgAEEAKAKAtBAQigELDgAgAEEAKAKEtBAQigELDgAgAEEAKAKItBAQigELDgAgAEEAKAKMtBAQigELDgAgAEEAKAKQtBAQigELDgAgAEEAKAKUtBAQigELDABBACgCmLQQEJsBCz4AAkACQAJAAkAgAEGq1arVekEAELMBDgQAAwECAAsPC0GwixBBIhA+AAtBlYsQQRoQPgALQfqKEEEaED4ACwwAQQAoApy0EBCbAQsMAEEAKAKgtBAQmwELDABBACgCpLQQEJsBCwwAQQAoAqi0EBCbAQsMAEEAKAKstBAQmwELDABBACgCsLQQEJsBCwwAQQAoArS0EBCbAQsMAEEAKAK4tBAQmwELDABBACgCvLQQEJsBCwwAQQAoAsC0EBCbAQsMAEEAKALEtBAQmwELDABBACgCyLQQEJsBCwwAQQAoAsy0EBCbAQsMAEEAKALQtBAQmwELDABBACgC1LQQEJsBC0ABAn8jAEEQayICJAAgAiABLQAQQR9xIgM6AAwgASABKAIEIAEoAgggAyABKAIMIAARAgA2AgAgAkEQaiQAQQAL2wEBAX8jAEEQayIEJAACQAJAIAINAEFAIQIDQAJAIAINAEHEmBAhAgwDCwJAIAJB3LoQaigCAA0AIAJB3LoQaiADNgIAIARBADsBBCAEIAJBxJgQaigCADYCACAEIQIMAwsgAkEEaiECDAALC0FAIQIDQAJAIAINAEHMmBAhAgwCCwJAIAJBxJgQaigCACADRw0AIAJB3LoQaiICKAIAIQMgAkEANgIAIARBADsBDCAEIAM2AgggBEEIaiECDAILIAJBBGohAgwACwsgACACKQIANwIAIARBEGokAAtNAQJ/IwBBEGsiAiQAIAIgAS0AFUEfcSIDOgAMIAEgASgCACAB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IQIMAgsCQCACQcSWEGooAgAgA0cNACACQdy4EGoiAigCACEDIAJBADYCACAEQQA7AQwgBCADNgIIIARBCGohAgwCCyACQQRqIQIMAAsLIAAgAikCADcCACAEQRBqJAALGAAgASgCACABKAIEIAEoAgggABEDAEEAC9sBAQF/IwBBEGsiBCQAAkACQCACDQBBQCECA0ACQCACDQBBxJgQIQIMAwsCQCACQZy5EGooAgANACACQZy5EGogAzYCACAEQQA7AQQgBCACQYSXEGooAgA2AgAgBCECDAMLIAJBBGohAgwACwtBQCECA0ACQCACDQBBzJgQIQIMAgsCQCACQYSXEGooAgAgA0cNACACQZy5EGoiAigCACEDIAJBADYCACAEQQA7AQwgBCADNgIIIARBCGohAgwCCyACQQRqIQIMAAsLIAAgAikCADcCACAEQRBqJAAL2wEBAX8jAEEQayIEJAACQAJAIAINAEFAIQIDQAJAIAINAEHEmBAhAgwDCwJAIAJB3LkQaigCAA0AIAJB3LkQaiADNgIAIARBADsBBCAEIAJBxJcQaigCADYCACAEIQIMAwsgAkEEaiECDAALC0FAIQIDQAJAIAINAEHMmBAhAgwCCwJAIAJBxJcQaigCACADRw0AIAJB3LkQaiICKAIAIQMgAkEANgIAIARBADsBDCAEIAM2AgggBEEIaiECDAILIAJBBGohAgwACwsgACACKQIANwIAIARBEGokAAvbAQEBfyMAQRBrIgQkAAJAAkAgAg0AQUAhAgNAAkAgAg0AQcSYECECDAMLAkAgAkGcuhBqKAIADQAgAkGcuhBqIAM2AgAgBEEAOwEEIAQgAkGEmBBqKAIANgIAIAQhAgwDCyACQQRqIQIMAAsLQUAhAgNAAkAgAg0AQcyYECECDAILAkAgAkGEmBBqKAIAIANHDQAgAkGcuhBqIgIoAgAhAyACQQA2AgAgBEEAOwEMIAQgAzYCCCAEQQhqIQIMAgsgAkEEaiECDAALCyAAIAIpAgA3AgAgBEEQaiQAC1wBBH8jAEEgayICJAAgAiABKQIENwMIIAIgASgCDCIDNgIQIAIgASgCECIENgIYIAIgAS0AFEEfcSIFOgAUIAEgAkEIaiADIAUgBCAAEQIANgIAIAJBIGokAEEAC3gBBn8jAEEgayICJAAgAiABKQIANwMAIAIgASgCDCIDNgIMIAIgASgCCCIENgIIIAIgASgCECIFNgIUIAIgASgCFCIGNgIYIAIgAS0AGUEfcSIHOgAQIAEgAiAEIAMgByAFIAYgABEEAEEBcToAGCACQSBqJABBAAt1AQZ/IwBBIGsiAiQAIAIgASkCBDcDACACIAEoAhAiAzYCDCACIAEoAgwiBDYCCCACIAEoAhQiBTYCFCACIAEoAhgiBjYCGCACIAEtABxBH3EiBzoAECABIAIgBCADIAcgBSAGIAARBAA2AgAgAkEgaiQAQQALZQEEfyMAQSBrIgIkACACIAEpAgA3AwggAiABKAIMIgM2AhQgAiABKAIIIgQ2AhAgAiABKAIQIgU2AhwgAiABLQAUQR9xIgE6ABggAkEIaiAEIAMgASAFIAARAQAgAkEgaiQAQQALawEBfyMAQTBrIgIkACACQRBqIAFBEGopAgA3AwAgAkEgaiABQSBqKQIANwMAIAIgASkCCDcDCCACIAEpAhg3AxggAkEoaiACQQhqIAJBCGpBEGogABEDACABIAIpAyg3AgAgAkEwaiQAQQALWwEBfyMAQSBrIgIkACACQQhqIAFBDGopAgA3AwAgAkEYaiABQRxqKQIANwMAIAIgASkCBDcDACACIAEpAhQ3AxAgASACIAJBEGogABEPADgCACACQSBqJABBAAsQACAAIAFBACgC2LQQEMUBC10BAX8jAEEQayIDJAAgAyABNgIMIAMgADYCCAJAAkACQAJAIAIgA0EIakEIELMBDgQAAwECAAsgA0EQaiQADwtBsIsQQSIQPgALQZWLEEEaED4AC0H6ihBBGhA+AAsQACAAIAFBACgC3LQQEMUBCxAAIAAgAUEAKALgtBAQxQELEAAgACABQQAoAuS0EBDFAQsQACAAIAFBACgC6LQQEMUBCxAAIAAgAUEAKALstBAQxQELEAAgACABQQAoAvC0EBDFAQsQACAAIAFBACgC9LQQEMUBCxAAIAAgAUEAKAL4tBAQxQELEAAgACABQQAoAvy0EBDFAQsQACAAIAFBACgCgLUQEMUBCxAAIAAgAUEAKAKEtRAQxQELEAAgACABQQAoAoi1EBDFAQsQACAAIAFBACgCjLUQEMUBCxAAIAAgAUEAKAKQtRAQxQELEAAgACABQQAoApS1EBDFAQt1AQF/IwBBMGsiBCQAIARBGGogAUEIaikCADcDACAEIAM4AiQgBCACOAIgIAQgASkCADcDECAEIAApAgA3AwggBEEANgIoIARBACgCmLUQIgE2AiwgBEEIaiAEQQhqQQhqIAIgAyABENYBIQEgBEEwaiQAIAELigEBAX8jAEEwayIFJAAgBUEgaiABQQhqKQIANwIAIAUgAzgCLCAFIAI4AiggBSABKQIANwIYIAUgACkCADcCEAJAAkACQAJAIAQgBUEMakEkELMBDgQAAwECAAsgBSgCDCEBIAVBMGokACABDwtBsIsQQSIQPgALQZWLEEEaED4AC0H6ihBBGhA+AAt1AQF/IwBBMGsiBCQAIARBGGogAUEIaikCADcDACAEIAM4AiQgBCACOAIgIAQgASkCADcDECAEIAApAgA3AwggBEEANgIoIARBACgCnLUQIgE2AiwgBEEIaiAEQQhqQQhqIAIgAyABENYBIQEgBEEwaiQAIAELdQEBfyMAQTBrIgQkACAEQRhqIAFBCGopAgA3AwAgBCADOAIkIAQgAjgCICAEIAEpAgA3AxAgBCAAKQIANwMIIARBADYCKCAEQQAoAqC1ECIBNgIsIARBCGogBEEIakEIaiACIAMgARDWASEBIARBMGokACABC3UBAX8jAEEwayIEJAAgBEEYaiABQQhqKQIANwMAIAQgAzgCJCAEIAI4AiAgBCABKQIANwMQIAQgACkCADcDCCAEQQA2AiggBEEAKAKktRAiATYCLCAEQQhqIARBCGpBCGogAiADIAEQ1gEhASAEQTBqJAAgAQt1AQF/IwBBMGsiBCQAIARBGGogAUEIaikCADcDACAEIAM4AiQgBCACOAIgIAQgASkCADcDECAEIAApAgA3AwggBEEANgIoIARBACgCqLUQIgE2AiwgBEEIaiAEQQhqQQhqIAIgAyABENYBIQEgBEEwaiQAIAELdQEBfyMAQTBrIgQkACAEQRhqIAFBCGopAgA3AwAgBCADOAIkIAQgAjgCICAEIAEpAgA3AxAgBCAAKQIANwMIIARBADYCKCAEQQAoAqy1ECIBNgIsIARBCGogBEEIakEIaiACIAMgARDWASEBIARBMGokACABC3UBAX8jAEEwayIEJAAgBEEYaiABQQhqKQIANwMAIAQgAzgCJCAEIAI4AiAgBCABKQIANwMQIAQgACkCADcDCCAEQQA2AiggBEEAKAKwtRAiATYCLCAEQQhqIARBCGpBCGogAiADIAEQ1gEhASAEQTBqJAAgAQt1AQF/IwBBMGsiBCQAIARBGGogAUEIaikCADcDACAEIAM4AiQgBCACOAIgIAQgASkCADcDECAEIAApAgA3AwggBEEANgIoIARBACgCtLUQIgE2AiwgBEEIaiAEQQhqQQhqIAIgAyABENYBIQEgBEEwaiQAIAELdQEBfyMAQTBrIgQkACAEQRhqIAFBCGopAgA3AwAgBCADOAIkIAQgAjgCICAEIAEpAgA3AxAgBCAAKQIANwMIIARBADYCKCAEQQAoAri1ECIBNgIsIARBCGogBEEIakEIaiACIAMgARDWASEBIARBMGokACABC3UBAX8jAEEwayIEJAAgBEEYaiABQQhqKQIANwMAIAQgAzgCJCAEIAI4AiAgBCABKQIANwMQIAQgACkCADcDCCAEQQA2AiggBEEAKAK8tRAiATYCLCAEQQhqIARBCGpBCGogAiADIAEQ1gEhASAEQTBqJAAgAQt1AQF/IwBBMGsiBCQAIARBGGogAUEIaikCADcDACAEIAM4AiQgBCACOAIgIAQgASkCADcDECAEIAApAgA3AwggBEEANgIoIARBACgCwLUQIgE2AiwgBEEIaiAEQQhqQQhqIAIgAyABENYBIQEgBEEwaiQAIAELdQEBfyMAQTBrIgQkACAEQRhqIAFBCGopAgA3AwAgBCADOAIkIAQgAjgCICAEIAEpAgA3AxAgBCAAKQIANwMIIARBADYCKCAEQQAoAsS1ECIBNgIsIARBCGogBEEIakEIaiACIAMgARDWASEBIARBMGokACABC3UBAX8jAEEwayIEJAAgBEEYaiABQQhqKQIANwMAIAQgAzgCJCAEIAI4AiAgBCABKQIANwMQIAQgACkCADcDCCAEQQA2AiggBEEAKALItRAiATYCLCAEQQhqIARBCGpBCGogAiADIAEQ1gEhASAEQTBqJAAgAQt1AQF/IwBBMGsiBCQAIARBGGogAUEIaikCADcDACAEIAM4AiQgBCACOAIgIAQgASkCADcDECAEIAApAgA3AwggBEEANgIoIARBACgCzLUQIgE2AiwgBEEIaiAEQQhqQQhqIAIgAyABENYBIQEgBEEwaiQAIAELdQEBfyMAQTBrIgQkACAEQRhqIAFBCGop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AzoACCAFIAM6AAwgACABIAIgAyAEQQAoApC3EBCJAiAFQRBqJAALOwEBfyMAQRBrIgUkACAFIANBH3EiAzoACCAFIAM6AAwgACABIAIgAyAEQQAoApS3EBCJAiAFQRBqJAALMQECfyMAQRBrIgIkACACIAEtAARBH3EiAzoADyABIAMgABEOADYCACACQRBqJABBAAsWACABIAEoAgAgABEOAEEfcToABEEAC0UBA38jAEEQayICJAAgAiABLQABQR9xIgM6AA8gAiABLQACQR9xIgQ6AA4gASADIAQgABEQAEEDcToAACACQRBqJABBAAtWAQR/IwBBEGsiAiQAIAIgAS0AAUEfcSIDOgAPIAIgAS0AAkEHcSIEOgAOIAIgAS0AA0EfcSIFOgANIAEgAyAEIAUgABEKAEEBcToAACACQRBqJABBAAtFAQN/IwBBEGsiAiQAIAIgAS0AAUEfcSIDOgAPIAIgAS0AAkEfcSIEOgAOIAEgAyAEIAAREABBH3E6AAAgAkEQaiQAQQALNgECfyMAQRBrIgIkACACIAEtAAhBH3EiAzoADCABIAMgASgCBCAAERAANgIAIAJBEGokAEEACzkBAn8jAEEQayICJAAgAiABLQAFQR9xIgM6AAwgASADIAEoAgAgABEQAEEBcToABCACQRBqJABBAAtMAQF/IwBB8ABrIgIkACACQQRqIABB4AD8CgAAIAIgATYCZCACQQA2AmggAkEAKAKctxAiADYCbCACQQRqIAEgABChAiACQfAAaiQAC2cBAX8jAEHwAGsiAyQAIANBDGogAEHgAPwKAAAgAyABNgJsAkACQAJAAkAgAiADQQxqQeQAELMBDgQAAwECAAsgA0HwAGokAA8LQbCLEEEiED4AC0GVixBBGhA+AAtB+ooQQRoQPgALTAEBfyMAQfAAayICJAAgAkEEaiAAQeAA/AoAACACIAE2AmQgAkEANgJoIAJBACgCoLcQIgA2AmwgAkEEaiABIAAQoQIgAkHwAGokAAtMAQF/IwBB8ABrIgIkACACQQRqIABB4AD8CgAAIAIgATYCZCACQQA2AmggAkEAKAKktxAiADYCbCACQQRqIAEgABChAiACQfAAaiQAC0wBAX8jAEHwAGsiAiQAIAJBBGogAEHgAPwKAAAgAiABNgJkIAJBADYCaCACQQAoAqi3ECIANgJsIAJBBGogASAAEKECIAJB8ABqJAALTAEBfyMAQfAAayICJAAgAkEEaiAAQeAA/AoAACACIAE2AmQgAkEANgJoIAJBACgCrLcQIgA2AmwgAkEEaiABIAAQoQIgAkHwAGokAAtMAQF/IwBB8ABrIgIkACACQQRqIABB4AD8CgAAIAIgATYCZCACQQA2AmggAkEAKAKwtxAiADYCbCACQQRqIAEgABChAiACQfAAaiQAC0wBAX8jAEHwAGsiAiQAIAJBBGogAEHgAPwKAAAgAiABNgJkIAJBADYCaCACQQAoArS3ECIANgJsIAJBBGogASAAEKECIAJB8ABqJAALTAEBfyMAQfAAayICJAAgAkEEaiAAQeAA/AoAACACIAE2AmQgAkEANgJoIAJBACgCuLcQIgA2AmwgAkEEaiABIAAQoQIgAkHwAGokAAtMAQF/IwBB8ABrIgIkACACQQRqIABB4AD8CgAAIAIgATYCZCACQQA2AmggAkEAKAK8txAiADYCbCACQQRqIAEgABChAiACQfAAaiQAC0wBAX8jAEHwAGsiAiQAIAJBBGogAEHgAPwKAAAgAiABNgJkIAJBADYCaCACQQAoAsC3ECIANgJsIAJBBGogASAAEKECIAJB8ABqJAALTAEBfyMAQfAAayICJAAgAkEEaiAAQeAA/AoAACACIAE2AmQgAkEANgJoIAJBACgCxLcQIgA2AmwgAkEEaiABIAAQoQIgAkHwAGokAAtMAQF/IwBB8ABrIgIkACACQQRqIABB4AD8CgAAIAIgATYCZCACQQA2AmggAkEAKALItxAiADYCbCACQQRqIAEgABChAiACQfAAaiQAC0wBAX8jAEHwAGsiAiQAIAJBBGogAEHgAPwKAAAgAiABNgJkIAJBADYCaCACQQAoAsy3ECIANgJsIAJBBGogASAAEKECIAJB8ABqJAALTAEBfyMAQfAAayICJAAgAkEEaiAAQeAA/AoAACACIAE2AmQgAkEANgJoIAJBACgC0LcQIgA2AmwgAkEEaiABIAAQoQIgAkHwAGokAAtMAQF/IwBB8ABrIgIkACACQQRqIABB4AD8CgAAIAIgATYCZCACQQA2AmggAkEAKALUtxAiADYCbCACQQRqIAEgABChAiACQfAAaiQAC0wBAX8jAEHwAGsiAiQAIAJBBGogAEHgAPwKAAAgAiABNgJkIAJBADYCaCACQQAoAti3ECIANgJsIAJBBGogASAAEKECIAJB8ABqJAALEAAgACABQQAoAty3EBDFAQsQACAAIAFBACgC4LcQEMUBCxAAIAAgAUEAKALktxAQxQELEAAgACABQQAoAui3EBDFAQsQACAAIAFBACgC7LcQEMUBCxAAIAAgAUEAKALwtxAQxQELEAAgACABQQAoAvS3EBDFAQsQACAAIAFBACgC+LcQEMUBCxAAIAAgAUEAKAL8txAQxQELEAAgACABQQAoAoC4EBDFAQsQACAAIAFBACgChLgQEMUBCxAAIAAgAUEAKAKIuBAQxQELEAAgACABQQAoAoy4EBDFAQsQACAAIAFBACgCkLgQEMUBCxAAIAAgAUEAKAKUuBAQxQELEAAgACABQQAoApi4EBDFAQtlAQJ/IwBB0ABrIgUkACAFQRhqIgYgBEEw/AoAACAFIAM2AhQgBSACNgIQIAUgATYCDCAFIAA2AgggBUEANgJIIAVBACgCnLgQIgQ2AkwgACABIAIgAyAGIAQQwgIgBUHQAGokAAt4AQF/IwBBwABrIgYkACAGQRBqIARBMPwKAAAgBiADNgIMIAYgAjYCCCAGIAE2AgQgBiAANgIAAkACQAJAAkAgBSAGQcAAELMBDgQAAwECAAsgBkHAAGokAA8LQbCLEEEiED4AC0GVixBBGhA+AAtB+ooQQRoQPgALZQECfyMAQdAAayIFJAAgBUEYaiIGIARBMPwKAAAgBSADNgIUIAUgAjYCECAFIAE2AgwgBSAANgIIIAVBADYCSCAFQQAoAqC4ECIENgJMIAAgASACIAMgBiAEEMICIAVB0ABqJAALZQECfyMAQdAAayIFJAAgBUEYaiIGIARBMPwKAAAgBSADNgIUIAUgAjYCECAFIAE2AgwgBSAANgIIIAVBADYCSCAFQQAoAqS4ECIENgJMIAAgASACIAMgBiAEEMICIAVB0ABqJAALZQECfyMAQdAAayIFJAAgBUEYaiIGIARBMPwKAAAgBSADNgIUIAUgAjYCECAFIAE2AgwgBSAANgIIIAVBADYCSCAFQQAoAqi4ECIENgJMIAAgASACIAMgBiAEEMICIAVB0ABqJAALZQECfyMAQdAAayIFJAAgBUEYaiIGIARBMPwKAAAgBSADNgIUIAUgAjYCECAFIAE2AgwgBSAANgIIIAVBADYCSCAFQQAoAqy4ECIENgJMIAAgASACIAMgBiAEEMICIAVB0ABqJAALZQECfyMAQdAAayIFJAAgBUEYaiIGIARBMPwKAAAgBSADNgIUIAUgAjYCECAFIAE2AgwgBSAANgIIIAVBADYCSCAFQQAoArC4ECIENgJMIAAgASACIAMgBiAEEMICIAVB0ABqJAALZQECfyMAQdAAayIFJAAgBUEYaiIGIARBMPwKAAAgBSADNgIUIAUgAjYCECAFIAE2AgwgBSAANgIIIAVBADYCSCAFQQAoArS4ECIENgJMIAAgASACIAMgBiAEEMICIAVB0ABqJAALZQECfyMAQdAAayIFJAAgBUEYaiIGIARBMPwKAAAgBSADNgIUIAUgAjYCECAFIAE2AgwgBSAANgIIIAVBADYCSCAFQQAoAri4ECIENgJMIAAgASACIAMgBiAEEMICIAVB0ABqJAALZQECfyMAQdAAayIFJAAgBUEYaiIGIARBMPwKAAAgBSADNgIUIAUgAjYCECAFIAE2AgwgBSAANgIIIAVBADYCSCAFQQAoAry4ECIENgJMIAAgASACIAMgBiAEEMICIAVB0ABqJAALZQECfyMAQdAAayIFJAAgBUEYaiIGIARBMPwKAAAgBSADNgIUIAUgAjYCECAFIAE2AgwgBSAANgIIIAVBADYCSCAFQQAoAsC4ECIENgJMIAAgASACIAMgBiAEEMICIAVB0ABqJAALZQECfyMAQdAAayIFJAAgBUEYaiIGIARBMPwKAAAgBSADNgIUIAUgAjYCECAFIAE2AgwgBSAANgIIIAVBADYCSCAFQQAoAsS4ECIENgJMIAAgASACIAMgBiAEEMICIAVB0ABqJAALZQECfyMAQdAAayIFJAAgBUEYaiIGIARBMPwKAAAgBSADNgIUIAUgAjYCECAFIAE2AgwgBSAANgIIIAVBADYCSCAFQQAoAsi4ECIENgJMIAAgASACIAMgBiAEEMICIAVB0ABqJAALZQECfyMAQdAAayIFJAAgBUEYaiIGIARBMPwKAAAgBSADNgIUIAUgAjYCECAFIAE2AgwgBSAANgIIIAVBADYCSCAFQQAoAsy4ECIENgJMIAAgASACIAMgBiAEEMICIAVB0ABqJAALZQECfyMAQdAAayIFJAAgBUEYaiIGIARBMPwKAAAgBSADNgIUIAUgAjYCECAFIAE2AgwgBSAANgIIIAVBADYCSCAFQQAoAtC4ECIENgJMIAAgASACIAMgBiAEEMICIAVB0ABqJAALZQECfyMAQdAAayIFJAAgBUEYaiIGIARBMPwKAAAgBSADNgIUIAUgAjYCECAFIAE2AgwgBSAANgIIIAVBADYCSCAFQQAoAtS4ECIENgJMIAAgASACIAMgBiAEEMICIAVB0ABqJAALZQECfyMAQdAAayIFJAAgBUEYaiIGIARBMPwKAAAgBSADNgIUIAUgAjYCECAFIAE2AgwgBSAANgIIIAVBADYCSCAFQQAoAti4ECIENgJMIAAgASACIAMgBiAEEMICIAVB0ABqJAALEgAgACABIAJBACgC3LgQENMCC2QBAX8jAEEQayIEJAAgBCACNgIMIAQgATYCCCAEIAA2AgQCQAJAAkACQCADIARBBGpBDBCzAQ4EAAMBAgALIARBEGokAA8LQbCLEEEiED4AC0GVixBBGhA+AAtB+ooQQRoQPgALEgAgACABIAJBACgC4LgQENMCCxIAIAAgASACQQAoAuS4EBDTAgsSACAAIAEgAkEAKALouBAQ0wILEgAgACABIAJBACgC7LgQENMCCxIAIAAgASACQQAoAvC4EBDTAgsSACAAIAEgAkEAKAL0uBAQ0wILEgAgACABIAJBACgC+LgQENMCCxIAIAAgASACQQAoAvy4EBDTAgsSACAAIAEgAkEAKAKAuRAQ0wILEgAgACABIAJBACgChLkQENMCCxIAIAAgASACQQAoAoi5EBDTAgsSACAAIAEgAkEAKAKMuRAQ0wILEgAgACABIAJBACgCkLkQENMCCxIAIAAgASACQQAoApS5EBDTAgsSACAAIAEgAkEAKAKYuRAQ0wILEgAgACABIAJBACgCnLkQENMCCxIAIAAgASACQQAoAqC5EBDTAgsSACAAIAEgAkEAKAKkuRAQ0wILEgAgACABIAJBACgCqLkQENMCCxIAIAAgASACQQAoAqy5EBDTAgsSACAAIAEgAkEAKAKwuRAQ0wILEgAgACABIAJBACgCtLkQENMCCxIAIAAgASACQQAoAri5EBDTAgsSACAAIAEgAkEAKAK8uRAQ0wILEgAgACABIAJBACgCwLkQENMCCxIAIAAgASACQQAoAsS5EBDTAgsSACAAIAEgAkEAKALI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IgMgAUL/////D4MiAX4iBUIgiCADIAR+fCIDQiCIfCADQv////8PgyACIAF+fCIBQiCIfDcDCCAAIAFCIIYgBUL/////D4OENwMAC8kBAwF/AX4Cf0EAIQICQAJAAkAgAb0iA0I0iKciBEH/D3EiBUUNACAFQf8PRw0BDAILIANC/////////weDUA0BIANCgICAgICAgICAf4NCACADIANCDIZ5pyICQQFqrYZC/////////weDIAJBP3FBMksbhEKAgICAgICA8D+EIQNBgnggAmshAgwBCyADQv////////+HgH+DQoCAgICAgIDwP4QhAyAEQf8PcUGCeGohAgsgAEEANgIMIAAgAjYCCCAAIAM3AwAL1AICA34CfwJAAkAgACAAYg0AIAC9IgJC////////////AINCgICAgICAgPj/AFoNACACQoCAgICAgICAgH+DIQNBCyACQgGGIgR5p2sgBEI1iKcgBEKAgICAgICAEFQbIQUCQCABQQBIDQACQEH+DyAFayABTg0AIANCgICAgICAgPj/AIS/DwsCQCAFIAFqIgZBAEoNACACIAFBP3GthiADhL8PCwJAIAVBAEoNACACQQEgBWuthkL/////////B4MgBq1CNIaEIAOEvw8LIAGtQjSGIAJ8vw8LQQAgAWshBkEAIAVrIAFIDQECQEFMIAVrIAFMDQAgA78PCyAFQQBKrUI0hiACQv////////8Hg4QgBkEBIAUgAWprIgEgBiABSBtBf2pBP3GtIgSIQgF8QgGIIAJ6IARRrUJ/hYMgA4S/IQALIAAPCyACIAatQjSGfb8LJwACQCAAIABcDQACQCABIAFbDQAgAA8LIAEgACAAIAFdGyEBCyABC2gCAX4BfwJAAkAgAL1C////////////AIMiAUI0iKciAkH/D0YNACACDQECQCABUEUNAEGAgICAeA8LQY14IAF5p2sPC0GAgICAeEH/////ByABQoCAgICAgID4/wBWGw8LIAJBgXhqC54DAwN/AX0BfCMAQRBrIgEkAAJAAkAgALwiAkH/////B3EiA0Han6T6A0sNAEMAAIA/IQQgA0GAgIDMA0kNASAAuxC4AyEEDAELAkACQAJAAkAgA0HSp+2DBEkNACADQdbjiIcETw0CIANB39u/hQRNDQFEGC1EVPshGcBEGC1EVPshGUAg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IA8gBygCALeiOQMAIAdBfGohByAJQXhqIQkgCEF/aiEIIA9EAAAAAAAAcD6iIQ8MAAsLIAVBkANqIAlBA3RqIA85AwAgCkEIaiEKIAlBAWohCQwACwsgAiAPOQMAIAJBCGohAiAIQX9qIQggCUEEaiEJIAdBAWohBwwACwvvAQMCfwF9AnwCQAJAAkACQAJAIAC8IgFB/////wdxIgJBgIDwlwRNDQAgAkGAgID8B0sNAyABQYCAgJgESA0BIABDAAAAf5QPCyACQYGAgJgDSQ0BDAMLIAFBAE4NAkMAAAAADwsgAEMAAIA/kiEACyAADwsgAEMAAEBJkiIDvEEIaiICQQ9xQQN0QcCxEGorAwAiBCAAIANDAABAyZKTuyIFRAAAAAC+v84/okQAAAAAQy7mP6AgBCAFoiIEoqAgBUQAAADAybKDP6JEAAAAgDRrrD+gIAUgBaIgBKKioCACQQR2Qf8Haq1CNIa/orYLmAUDA38CfAF+IwBBMGsiAyQAAkACQAJAIAC9Qv///////////wCDQv/////////3/wBWDQAgAb1C////////////AINCgICAgICAgPj/AFQNAQsgACABoiACoCECDAELIAK9Qv///////////wCDQv/////////3/wBWDQACQAJAIABEAAAAAAAAAABhDQAgAUQAAAAAAAAAAGINAQsgACABoiACoCECDAELAkAgAkQAAAAAAAAAAGINACAAIAGiIQIMAQsgAyAAELMDIAMrAwAhACADKAIIIQQgA0EQaiABELMDIAMrAxAhASADKAIYIQUgA0EgaiACELMDIAMrAyAhAgJAAkAgBSAEaiIEIAMoAihrIgVB6wBIDQAgAr1CgICAgICAgICAf4NCgICAgICAgAiEvyEGDAELIAJBACAFaxC0AyEGCyAAIABEAAAAAgAAoEGiIgIgACACoaAiAqEiByABIAFEAAAAAgAAoEGiIgAgASAAoaAiAKEiAaIgByAAoiACIAGioCIBIAIgAKIiAiACIAGgIgChoKAhAQJAIAAgBqAiAkQAAAAAAAAAAGINACACIAEgBBC0A6AhAgwBCwJAIAEgASAGIAIgAKEiB6EgACACIAehoaAiBqAiACAGoSIHoSAGIAAgB6GhoCIBRAAAAAAAAAAAYQ0AIAC9IginQQFxDQAgCEIBhCABvSAIhUI+iH2/IQALIAIgAKAhAQJAIAIQtgMgBGpBgnhODQAgACABIAKhIgahIAIgBiABoaCgIgJEAAAAAAAAAABhDQAgAb0iCEIBg1AgCEI0iKdB/w9xQQAgBGtHRg0AIAggAr0gCIVCPohCAoN9QgF8vyEBCyABIAQQtAMhAgsgA0EwaiQAIAILJwACQCAAIABcDQACQCABIAFbDQAgAA8LIAAgASAAIAFdGyEBCyABC5wCAgJ/An0CQAJAAkAgALwiAUGAgIAETg0AQwAAgP9DAADAfyAAQwAAAABbIgIbIQMgAg0CIAFBAEgNAiAAQwAAAEyUvCEBQeh+IQIMAQsgACEDIAFB////+wdLDQFBgX8hAkMAAAAAIQMgAUGAgID8A0YNAQsgAUGN9qsCaiIBQf///wNxQfOJ1PkDar5DAACAv5IiACAAIABDAAAAP5SUIgOTvEGAYHG+IgRDALC4P5QgACAEkyADkyAAIABDAAAAQJKVIgAgAyAAIACUIgAgACAAlCIAQ+7pkT6UQ6qqKj+SlCAAIABDJp54PpRDE87MPpKUkpKUkiIAQwCwuD+UIAAgBJJD1Jo4uZSSkiACIAFBF3ZqspIhAwsgAwuZAwIDfwF8IwBBEGsiASQAAkACQCAAvCICQf////8HcSIDQdqfpPoDSw0AIANBgICAzANJDQEgALsQuQMhAAwBCwJAAkACQAJAIANB0qftgwRJDQAgA0HW44iHBE8NAyAAuyEEIANB4Nu/hQRPDQEgAkF/Sg0CIARE0iEzf3zZEkCgELgDIQAMBAsgALshBAJAIANB5JfbgARJDQBEGC1EVPshCcBEGC1EVPshCUAgAkF/ShsgBKCaELkDIQAMBAsCQCACQX9KDQAgBEQYLURU+yH5P6AQuAOMIQAMBAsgBEQYLURU+yH5v6AQuAMhAAwDC0QYLURU+yEZwEQYLURU+yEZQCACQX9KGyAEoBC5AyEADAILIARE0iEzf3zZEsCgELgDjCEADAELAkAgA0H////7B0sNACAAIAFBCGoQugMhAyABKwMIIQQCQAJAAkACQCADQQNxDgQAAQIDAAsgBBC5AyEADAQLIAQQuAMhAAwDCyAEmhC5AyEADAILIAQQuAOMIQAMAQsgACAAkyEACyABQRBqJAAgAAsLuDMCAEGAgBALwDIAAAAAAAAAAAAAAAAAAAAAAAAAAGoAAABrAAAAbAAAAG0AAAAAAIA/AACAPwAAgD8AAIA/AAAAAAAAAAAAAAAAAACAPwAAAEBPdXRPZk1lbW9yeQBtYXhfeQBtaW5feQBzaGFwZXMuYm91bmRpbmdfYm94LkJvdW5kaW5nQm94AGltYWdlcy5QaWNrVmVydGV4AGluZGV4AG1heABtYXhfeABtaW5feAByZW5kZXJfZHJhdwB2AHUAaW52ZXJ0AHNsb3QAU2VsZWN0ZWQgc2hhcGUgYXNzZXQgc2hvdWxkIGJlIHByZXNlbnQgYXQgdGhpcyBwb2ludAB0eXBlcy5Qb2ludABtZW0uQWxpZ25tZW50AGx0AGd0AHJlbW92ZV9hc3NldABhZGRfYXNzZXQAYml0T2Zmc2V0AHJhZGl1cwBwb2ludHMAdG9CeXRlVW5pdHMAZnJvbUJ5dGVVbml0cwByZXNldF9hc3NldHMAc2hhcGVzLnNoYXBlcy5TaGFwZVByb3BzAGltcG9ydF9pY29ucwBjb25uZWN0X3dlYl9ncHVfcHJvZ3JhbXMAaW5kZXguV2ViR3B1UHJvZ3JhbXMAY29ubmVjdF9jYWNoZV9jYWxsYmFja3MAZmxhZ3MAY29tbWl0X2NoYW5nZXMAcHRyAG1hdGguQ29tcGFyZU9wZXJhdG9yAG1lbS5BbGxvY2F0b3IARXJyb3IAZmlsbF9jb2xvcgBzdHJva2VfY29sb3IAZGlmZmVyAG9yZGVyAG1hdGguT3JkZXIAbmVxAG9uX3BvaW50ZXJfdXAAcmVtYXAAcmF3UmVtYXAAbm9SZW1hcABhbmdsZV90bwBvbl9wb2ludGVyX2Rvd24AbWluAGFsaWduAExvZzJBbGlnbgBzaGFwZXMuc2hhcGVzLlVuaWZvcm0Ac2V0X3Rvb2wAaW5kZXguVG9vbABTZWxlY3RlZCBzaGFwZSBhc3NldCBzaG91bGQgYmUgcHJlc2VudCB3aGVuIGFjdGl2ZV9wYXRoX2luZGV4IGlzIG5vdCBudWxsAHJldHZhbAByZW5kZXJfcGljawBvbl91cGRhdGVfcGljawBjaGVjawBjb25uZWN0X29uX2Fzc2V0X3NlbGVjdGlvbl9jYWxsYmFjawBjb25uZWN0X29uX2Fzc2V0X3VwZGF0ZV9jYWxsYmFjawBsZW5ndGgAc3Ryb2tlX3dpZHRoAHBhZGRpbmcAZGlmZgBkcmF3X21zZGYAcmVzaXplAHJhd1Jlc2l6ZQBub1Jlc2l6ZQBiaXRTaXplAGJ5dGVTaXplAG9uX3BvaW50ZXJfbW92ZQBvbl9wb2ludGVyX2xlYXZlAGx0ZQBndGUAZGVzdHJveV9zdGF0ZQBpbml0X3N0YXRlAHJldmVyc2UAZHJhd190ZXh0dXJlAHBpY2tfdGV4dHVyZQBzdHJ1Y3R1cmUAc2lnbmF0dXJlAGNvbXBhcmUAdHlwZQBkcmF3X3NoYXBlAHN0b3BfZHJhd2luZ19zaGFwZQBhZGRfc2hhcGUARHJhd1NoYXBlAGNsb25lAE5vbmUAbmFtZQBkcmF3X3RyaWFuZ2xlAHBpY2tfdHJpYW5nbGUAdnRhYmxlAG1lbS5BbGxvY2F0b3IuVlRhYmxlAHVwZGF0ZV9yZW5kZXJfc2NhbGUAZnJlZQByYXdGcmVlAG5vRnJlZQBtc2RmLkRyYXdJbnN0YW5jZQB0cmlhbmdsZS5EcmF3SW5zdGFuY2UAdHJpYW5nbGUuUGlja0luc3RhbmNlAGRpc3RhbmNlAGZvcndhcmQAYmFja3dhcmQAbWlkAHRleHR1cmVfaWQAaW1hZ2VzLlNlcmlhbGl6ZWQASmF2YVNjcmlwdCBmdW5jdGlvbiBmYWlsZWQATXVsdGl0aHJlYWRpbmcgbm90IGVuYWJsZWQAUHJvbWlzZSBlbmNvdW50ZXJlZCBpbiBtYWluIHRocmVhZABhbGxvYwByYXdBbGxvYwB0eXBlcy5Qb2ludFVWAEFTU0VUX0lEX1RSRVNIT0xEADgAMTYANjQAMwBwMgAzMgBwMQBwMABBdHRlbXB0aW5nIHRvIGFkZCBwb2ludCB0byBhbHJlYWR5IGNsb3NlZCBwYXRoIQC3Q7pRAAAAAAAA//8AAAAAbgAAAG8AAABwAAAAcQAAAB4eHv9/f3///wAA/wD/AP8AAAAAEAAAAAAAAAASAAAAAAAAABkAAAAAAAAADgAAAAAAAAAWAAAA6AMAAP////8AAAD/AAAAAAEAAAACAAAAAgAAAAMAAAAAAAAAAQAAAAAAAAABAAAAAQAAAAAAAAADAAAAAgAAAAEAAAAAAAAAAgAAAAEAAAACAAAAAwAAAAIAAAABAAAAAwAAAAIAAAADAAAABAAAAAMAAAAAAAAABAAA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\");\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n await new Promise(r => setTimeout(r, 0));\n return bytes.buffer;\n})();\nenv.loadModule(source, {\"memoryInitial\":5,\"tableInitial\":342,\"multithreaded\":false});\nenv.linkVariables(false);\n\n// export root namespace and its methods and constants\nconst { constructor: v0 } = root;\nconst v1 = env.getSpecialExports();\nconst {\n connect_web_gpu_programs: v2,\n connect_on_asset_update_callback: v3,\n connect_on_asset_selection_callback: v4,\n connect_cache_callbacks: v5,\n ASSET_ID_TRESHOLD: v6,\n init_state: v7,\n update_render_scale: v8,\n add_asset: v9,\n remove_asset: v10,\n on_update_pick: v11,\n on_pointer_down: v12,\n on_pointer_up: v13,\n on_pointer_move: v14,\n on_pointer_leave: v15,\n commit_changes: v16,\n render_draw: v17,\n render_pick: v18,\n reset_assets: v19,\n destroy_state: v20,\n import_icons: v21,\n set_tool: v22,\n stop_drawing_shape: v23,\n add_shape: v24,\n} = v0;\nexport {\n v0 as default,\n v1 as __zigar,\n v2 as connect_web_gpu_programs,\n v3 as connect_on_asset_update_callback,\n v4 as connect_on_asset_selection_callback,\n v5 as connect_cache_callbacks,\n v6 as ASSET_ID_TRESHOLD,\n v7 as init_state,\n v8 as update_render_scale,\n v9 as add_asset,\n v10 as remove_asset,\n v11 as on_update_pick,\n v12 as on_pointer_down,\n v13 as on_pointer_up,\n v14 as on_pointer_move,\n v15 as on_pointer_leave,\n v16 as commit_changes,\n v17 as render_draw,\n v18 as render_pick,\n v19 as reset_assets,\n v20 as destroy_state,\n v21 as import_icons,\n v22 as set_tool,\n v23 as stop_drawing_shape,\n v24 as add_shape,\n};\nawait v1.init();","import { memberNames, MemberType } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport '../symbols.js';\nimport { defineProperty, defineValue } from '../utils.js';\n\n// handle retrieval of accessors\n\nvar all = mixin({\n init() {\n this.accessorCache = new Map();\n },\n getAccessor(access, member) {\n const { type, bitSize, bitOffset, byteSize } = member;\n const names = [];\n const unaligned = (byteSize === undefined) && (bitSize & 0x07 || bitOffset & 0x07);\n if (unaligned) {\n names.push('Unaligned');\n }\n let name = memberNames[type];\n if (bitSize > 32 && (type === MemberType.Int || type === MemberType.Uint)) {\n if (bitSize <= 64) {\n name = `Big${name}`;\n } else {\n name = `Jumbo${name}`;\n }\n }\n names.push(name, `${(type === MemberType.Bool && byteSize) ? byteSize * 8 : bitSize}`);\n if (unaligned) {\n names.push(`@${bitOffset}`);\n }\n const accessorName = access + names.join('');\n // see if it's a built-in method of DataView\n let accessor = DataView.prototype[accessorName];\n if (accessor) {\n return accessor;\n }\n // check cache\n accessor = this.accessorCache.get(accessorName);\n if (accessor) {\n return accessor;\n }\n while (names.length > 0) {\n const handlerName = `getAccessor${names.join('')}`;\n if (accessor = this[handlerName]?.(access, member)) {\n break;\n }\n names.pop();\n }\n if (!accessor) {\n throw new Error(`No accessor available: ${accessorName}`);\n }\n defineProperty(accessor, 'name', defineValue(accessorName));\n this.accessorCache.set(accessorName, accessor);\n return accessor;\n },\n});\n\nexport { all as default };\n","import { MemberType } from '../constants.js';\nimport { mixin } from '../environment.js';\n\n// handles bools, including implicit ones in optional pointers, where an address\n// of zero would be treated as boolean false\n\nvar bool = mixin({\n getAccessorBool(access, member) {\n const { byteSize } = member;\n const bitSize = byteSize * 8;\n const f = this.getAccessor(access, { type: MemberType.Uint, bitSize, byteSize });\n if (access === 'get') {\n return function(offset, littleEndian) {\n return !!f.call(this, offset, littleEndian);\n }\n } else {\n const zero = (bitSize <= 32) ? 0 : 0n;\n const one = (bitSize <= 32) ? 1 : 1n;\n return function(offset, value, littleEndian) {\n f.call(this, offset, value ? one : zero, littleEndian);\n }\n }\n }\n});\n\nexport { bool as default };\n","import { MemberType } from '../constants.js';\nimport { mixin } from '../environment.js';\n\n// handle non-standard ints 32-bit or smaller\n\nvar int = mixin({\n getAccessorInt(access, member) {\n const { bitSize, byteSize } = member;\n if (byteSize) {\n const f = this.getAccessor(access, { type: MemberType.Uint, bitSize: byteSize * 8, byteSize });\n const signMask = 2 ** (bitSize - 1);\n const valueMask = signMask - 1;\n if (access === 'get') {\n return function(offset, littleEndian) {\n const n = f.call(this, offset, littleEndian);\n return (n & valueMask) - (n & signMask);\n };\n } else {\n return function(offset, value, littleEndian) {\n const n = (value < 0) ? signMask | (value & valueMask) : value & valueMask;\n f.call(this, offset, n, littleEndian);\n };\n }\n }\n }\n});\n\nexport { int as default };\n","import { mixin } from '../environment.js';\n\n// handle non-standard uints 32-bit or smaller\n\nvar uint = mixin({\n getAccessorUint(access, member) {\n const { bitSize, byteSize } = member;\n if (byteSize) {\n const f = this.getAccessor(access, { ...member, bitSize: byteSize * 8 });\n const valueMask = (2 ** bitSize) - 1;\n if (access === 'get') {\n return function(offset, littleEndian) {\n const n = f.call(this, offset, littleEndian);\n return n & valueMask;\n };\n } else {\n return function(offset, value, littleEndian) {\n const n = value & valueMask;\n f.call(this, offset, n, littleEndian);\n };\n }\n }\n }\n});\n\nexport { uint as default };\n","const StructureType = {\n Primitive: 0,\n Array: 1,\n Struct: 2,\n Union: 3,\n ErrorUnion: 4,\n ErrorSet: 5,\n Enum: 6,\n Optional: 7,\n Pointer: 8,\n Slice: 9,\n Vector: 10,\n Opaque: 11,\n ArgStruct: 12,\n VariadicStruct: 13,\n Function: 14,\n};\nconst structureNames = Object.keys(StructureType);\nconst StructureFlag = {\n HasValue: 0x0001,\n HasObject: 0x0002,\n HasPointer: 0x0004,\n HasSlot: 0x0008,\n};\nconst PrimitiveFlag = {\n IsSize: 0x0010,\n};\nconst ArrayFlag = {\n HasSentinel: 0x0010,\n IsString: 0x0020,\n IsTypedArray: 0x0040,\n IsClampedArray: 0x0080,\n};\nconst StructFlag = {\n IsExtern: 0x0010,\n IsPacked: 0x0020,\n IsIterator: 0x0040,\n IsTuple: 0x0080,\n\n IsAllocator: 0x0100,\n IsPromise: 0x0200,\n IsGenerator: 0x0400,\n IsAbortSignal: 0x0800,\n\n IsOptional: 0x1000,\n IsReader: 0x2000,\n IsWriter: 0x4000,\n};\nconst UnionFlag = {\n HasSelector: 0x0010,\n HasTag: 0x0020,\n HasInaccessible: 0x0040,\n IsExtern: 0x0080,\n\n IsPacked: 0x0100,\n IsIterator: 0x0200,\n};\nconst EnumFlag = {\n IsOpenEnded: 0x0010,\n IsIterator: 0x0020,\n};\nconst OptionalFlag = {\n HasSelector: 0x0010,\n};\nconst PointerFlag = {\n HasLength: 0x0010,\n IsMultiple: 0x0020,\n IsSingle: 0x0040,\n IsConst: 0x0080,\n\n IsNullable: 0x0100,\n};\nconst SliceFlag = {\n HasSentinel: 0x0010,\n IsString: 0x0020,\n IsTypedArray: 0x0040,\n IsClampedArray: 0x0080,\n\n IsOpaque: 0x0100,\n};\nconst ErrorSetFlag = {\n IsGlobal: 0x0010,\n};\nconst OpaqueFlag = {\n IsIterator: 0x0010,\n};\nconst VectorFlag = {\n IsTypedArray: 0x0010,\n IsClampedArray: 0x0020,\n};\nconst ArgStructFlag = {\n HasOptions: 0x0010,\n IsThrowing: 0x0020,\n IsAsync: 0x0040,\n};\n\nconst MemberType = {\n Void: 0,\n Bool: 1,\n Int: 2,\n Uint: 3,\n Float: 4,\n Object: 5,\n Type: 6,\n Literal: 7,\n Null: 8,\n Undefined: 9,\n Unsupported: 10,\n};\nconst memberNames = Object.keys(MemberType);\nconst MemberFlag = {\n IsRequired: 0x0001,\n IsReadOnly: 0x0002,\n IsPartOfSet: 0x0004,\n IsSelector: 0x0008,\n IsMethod: 0x0010,\n IsSentinel: 0x0020,\n IsBackingInt: 0x0040,\n IsString: 0x0080,\n};\n\nconst CallResult = {\n OK: 0,\n Failure: 1,\n Deadlock: 2,\n Disabled: 3,\n};\n\nconst ModuleAttribute = {\n LittleEndian: 0x0001,\n RuntimeSafety: 0x0002,\n LibC: 0x0004,\n};\n\nconst VisitorFlag = {\n IsInactive: 0x0001,\n IsImmutable: 0x0002,\n\n IgnoreUncreated: 0x0004,\n IgnoreInactive: 0x0008,\n IgnoreArguments: 0x0010,\n IgnoreRetval: 0x0020,\n};\n\nexport { ArgStructFlag, ArrayFlag, CallResult, EnumFlag, ErrorSetFlag, MemberFlag, MemberType, ModuleAttribute, OpaqueFlag, OptionalFlag, PointerFlag, PrimitiveFlag, SliceFlag, StructFlag, StructureFlag, StructureType, UnionFlag, VectorFlag, VisitorFlag, memberNames, structureNames };\n","import { defineProperty, defineValue } from './utils.js';\n\nconst cls = {\n name: '',\n mixins: [],\n};\n\nfunction reset() {\n cls.name = '';\n cls.mixins = [];\n}\n\nfunction name(s) {\n cls.name = s;\n}\n\nfunction mixin(object) {\n if (!cls.mixins.includes(object)) {\n cls.mixins.push(object);\n }\n return object;\n}\n\nfunction defineEnvironment() {\n return defineClass(cls.name, cls.mixins);\n}\n\nfunction defineClass(name, mixins) {\n const initFunctions = [];\n const constructor = function() {\n for (const init of initFunctions) {\n init.call(this);\n }\n };\n const { prototype } = constructor;\n defineProperty(constructor, 'name', defineValue(name));\n for (const mixin of mixins) {\n for (let [ name, object ] of Object.entries(mixin)) {\n if (name === 'init') {\n initFunctions.push(object);\n } else {\n if (typeof(object) === 'function') ; else {\n let current = prototype[name];\n if (current !== undefined) {\n if (current?.constructor === Object) {\n object = Object.assign({ ...current }, object);\n } else if (current !== object) {\n throw new Error(`Duplicate property: ${name}`);\n }\n }\n }\n defineProperty(prototype, name, defineValue(object));\n }\n }\n }\n return constructor;\n}\n\nexport { defineClass, defineEnvironment, mixin, name, reset };\n","import { StructureType, memberNames } from './constants.js';\nimport { TYPED_ARRAY, UPDATE } from './symbols.js';\nimport { getPrimitiveName, defineProperty } from './utils.js';\n\nclass MustBeOverridden extends Error {\n constructor() {\n super(`Method must be overridden`);\n }\n}\n\nclass InvalidIntConversion extends SyntaxError {\n constructor(arg) {\n super(`Cannot convert ${arg} to an Int`);\n }\n}\n\nclass Unsupported extends TypeError {\n constructor() {\n super(`Unsupported`);\n }\n}\n\nclass NoInitializer extends TypeError {\n constructor(structure) {\n const { name } = structure;\n super(`An initializer must be provided to the constructor of ${name}, even when the intended value is undefined`);\n }\n}\n\nclass BufferSizeMismatch extends TypeError {\n constructor(structure, dv, target = null) {\n const { name, type, byteSize } = structure;\n const actual = dv.byteLength;\n const s = (byteSize !== 1) ? 's' : '';\n let msg;\n if (type === StructureType.Slice && !target) {\n msg = `${name} has elements that are ${byteSize} byte${s} in length, received ${actual}`;\n } else {\n const total = (type === StructureType.Slice) ? target.length * byteSize : byteSize;\n msg = `${name} has ${total} byte${s}, received ${actual}`;\n }\n super(msg);\n }\n}\n\nclass BufferExpected extends TypeError {\n constructor(structure) {\n const { type, byteSize, typedArray } = structure;\n const s = (byteSize !== 1) ? 's' : '';\n const acceptable = [ 'ArrayBuffer', 'DataView' ].map(addArticle);\n if (typedArray) {\n acceptable.push(addArticle(typedArray.name));\n }\n let msg;\n if (type === StructureType.Slice) {\n msg = `Expecting ${formatList(acceptable)} that can accommodate items ${byteSize} byte${s} in length`;\n } else {\n msg = `Expecting ${formatList(acceptable)} that is ${byteSize} byte${s} in length`;\n }\n super(msg);\n }\n}\n\nclass EnumExpected extends TypeError {\n constructor(structure, arg) {\n const { name } = structure;\n let msg;\n if (typeof(arg) === 'number' || typeof(arg) === 'bigint') {\n msg = `Value given does not correspond to an item of enum ${name}: ${arg}`;\n } else {\n msg = `Enum item of the type ${name} expected, received ${arg}`;\n }\n super(msg);\n }\n}\n\nclass ErrorExpected extends TypeError {\n constructor(structure, arg) {\n const { name } = structure;\n const type = typeof(arg);\n let msg;\n if (type === 'string' || type === 'number' || isErrorJSON(arg)) {\n if (isErrorJSON(arg)) {\n arg = `{ error: ${JSON.stringify(arg.error)} }`;\n }\n msg = `Error ${type} does not corresponds to any error in error set ${name}: ${arg}`;\n } else {\n msg = `Error of the type ${name} expected, received ${arg}`;\n }\n super(msg);\n }\n}\n\nclass NotInErrorSet extends TypeError {\n constructor(structure) {\n const { name } = structure;\n super(`Error given is not a part of error set ${name}`);\n }\n}\n\nclass InvalidType extends TypeError {\n constructor(structure) {\n const { name } = structure;\n super(`Object of specific type expected: ${name}`);\n }\n}\n\nclass MultipleUnionInitializers extends TypeError {\n constructor(structure) {\n const { name } = structure;\n super(`Only one property of ${name} can be given a value`);\n }\n}\n\nclass InactiveUnionProperty extends TypeError {\n constructor(structure, name, currentName) {\n super(`Accessing property ${name} when ${currentName} is active`);\n }\n}\n\nclass MissingUnionInitializer extends TypeError {\n constructor(structure, arg, exclusion) {\n const { name, instance: { members } } = structure;\n const missing = members.slice(0, exclusion ? -1 : undefined).map(m => m.name);\n super(`${name} needs an initializer for one of its union properties: ${missing.join(', ')}`);\n }\n}\n\nclass InvalidInitializer extends TypeError {\n constructor(structure, expected, arg) {\n const { name } = structure;\n const acceptable = [];\n if (Array.isArray(expected)) {\n for (const type of expected) {\n acceptable.push(addArticle(type));\n }\n } else {\n acceptable.push(addArticle(expected));\n }\n const received = getDescription(arg);\n super(`${name} expects ${formatList(acceptable)} as argument, received ${received}`);\n }\n}\n\nclass InvalidArrayInitializer extends InvalidInitializer {\n constructor(structure, arg, shapeless = false) {\n const { instance: { members: [ member ] }, type, constructor } = structure;\n const acceptable = [];\n const primitive = getPrimitiveName(member);\n if (primitive) {\n let object;\n switch (member.structure?.type) {\n case StructureType.Enum: object = 'enum item'; break;\n case StructureType.ErrorSet: object = 'error'; break;\n default: object = primitive;\n }\n acceptable.push(`array of ${object}s`);\n } else {\n acceptable.push(`array of objects`);\n }\n if (constructor[TYPED_ARRAY]) {\n acceptable.push(constructor[TYPED_ARRAY].name);\n }\n if (type === StructureType.Slice && shapeless) {\n acceptable.push(`length`);\n }\n super(structure, acceptable.join(' or '), arg);\n }\n}\n\nclass ArrayLengthMismatch extends TypeError {\n constructor(structure, target, arg) {\n const { name, length, instance: { members: [ member ] } } = structure;\n const { structure: { constructor: elementConstructor} } = member;\n const { length: argLength, constructor: argConstructor } = arg;\n // get length from object whech it's a slice\n const actualLength = target?.length ?? length;\n const s = (actualLength !== 1) ? 's' : '';\n let received;\n if (argConstructor === elementConstructor) {\n received = `only a single one`;\n } else if (argConstructor.child === elementConstructor) {\n received = `a slice/array that has ${argLength}`;\n } else {\n received = `${argLength} initializer${argLength > 1 ? 's' : ''}`;\n }\n super(`${name} has ${actualLength} element${s}, received ${received}`);\n }\n}\n\nclass InvalidSliceLength extends TypeError {\n constructor(length, max) {\n if (length < 0) {\n super(`Length of slice cannot be negative`);\n } else {\n super(`Length of slice can be ${max} or less, received ${length}`);\n }\n }\n}\n\nclass MissingInitializers extends TypeError {\n constructor(structure, missing) {\n const { name } = structure;\n super(`Missing initializers for ${name}: ${missing.join(', ')}`);\n }\n}\n\nclass NoProperty extends TypeError {\n constructor(structure, propName) {\n const { name, instance: { members } } = structure;\n const member = members.find(m => m.name === propName);\n let msg;\n if (member) {\n msg = `Comptime value cannot be changed: ${propName}`;\n } else {\n msg = `${name} does not have a property with that name: ${propName}`;\n }\n super(msg);\n }\n}\n\nclass ArgumentCountMismatch extends Error {\n constructor(expected, received, variadic = false) {\n super();\n const updateText = (argOffset) => {\n expected -= argOffset;\n received -= argOffset;\n const s = (expected !== 1) ? 's' : '';\n const p = (variadic) ? 'at least ' : '';\n this.message = `Expecting ${p}${expected} argument${s}, received ${received}`;\n this.stack = adjustStack(this.stack, 'new Arg(');\n };\n updateText(0);\n defineProperty(this, UPDATE, { value: updateText, enumerable: false });\n }\n}\n\nclass UndefinedArgument extends Error {\n constructor() {\n super(`Undefined argument`);\n }\n}\n\nclass NoCastingToPointer extends TypeError {\n constructor() {\n super(`Non-slice pointers can only be created with the help of the new operator`);\n }\n}\n\nclass NoCastingToFunction extends TypeError {\n constructor() {\n super(`Casting to function is not allowed`);\n }\n}\n\nclass ConstantConstraint extends TypeError {\n constructor(structure, pointer) {\n const { name: target } = structure;\n const { constructor: { name } } = pointer;\n super(`Conversion of ${name} to ${target} requires an explicit cast`);\n }\n}\n\nclass MisplacedSentinel extends TypeError {\n constructor(structure, value, index, length) {\n const { name } = structure;\n super(`${name} expects the sentinel value ${value} at ${length - 1}, found at ${index}`);\n }\n}\n\nclass MissingSentinel extends TypeError {\n constructor(structure, value, length) {\n const { name } = structure;\n super(`${name} expects the sentinel value ${value} at ${length - 1}`);\n }\n}\n\nclass AlignmentConflict extends TypeError {\n constructor(align1, align2) {\n super(`Unable to simultaneously align memory to ${align2}-byte and ${align1}-byte boundary`);\n }\n}\n\nclass AssigningToConstant extends TypeError {\n constructor(pointer) {\n const { constructor: { name } } = pointer;\n super(`${name} cannot be modified`);\n }\n}\n\nclass TypeMismatch extends TypeError {\n constructor(expected, arg) {\n const received = getDescription(arg);\n super(`Expected ${addArticle(expected)}, received ${received}`);\n }\n}\n\nclass InaccessiblePointer extends TypeError {\n constructor() {\n super(`Pointers within an untagged union are not accessible`);\n }\n}\n\nclass NullPointer extends TypeError {\n constructor() {\n super(`Null pointer`);\n }\n}\n\nclass PreviouslyFreed extends TypeError {\n constructor(arg) {\n super(`Object has been freed already: ${arg.constructor.name}`);\n }\n}\n\nclass InvalidPointerTarget extends TypeError {\n constructor(structure, arg) {\n const { name } = structure;\n let target;\n if (arg != null) {\n const noun = (arg instanceof Object && arg.constructor !== Object) ? `${arg.constructor.name} object`: typeof(arg);\n const a = article(noun);\n target = `${a} ${noun}`;\n } else {\n target = arg + '';\n }\n super(`${name} cannot point to ${target}`);\n }\n}\n\nclass ZigMemoryTargetRequired extends TypeError {\n constructor() {\n super(`Pointers in Zig memory cannot point to garbage-collected object`);\n }\n}\n\nclass Overflow extends TypeError {\n constructor(member, value) {\n const { type, bitSize } = member;\n const name = (bitSize > 32 ? 'Big' : '') + memberNames[type] + bitSize;\n super(`${name} cannot represent the value given: ${value}`);\n }\n}\n\nclass OutOfBound extends RangeError {\n constructor(member, index) {\n const { name } = member;\n super(`Index exceeds the size of ${name ?? 'array'}: ${index}`);\n }\n}\n\nclass NotUndefined extends TypeError {\n constructor(member) {\n const { name } = member;\n const rvalue = (name !== undefined) ? `Property ${name}` : `Element`;\n super(`${rvalue} can only be undefined`);\n }\n}\n\nclass NotOnByteBoundary extends TypeError {\n constructor(member) {\n const { name, structure: { name: struct } } = member;\n super(`Unable to create ${struct} as it is not situated on a byte boundary: ${name}`);\n }\n}\n\nclass ReadOnly extends TypeError {\n constructor() {\n super(`Unable to modify read-only object`);\n }\n}\n\nclass ReadOnlyTarget extends TypeError {\n constructor(structure) {\n const { name } = structure;\n super(`${name} cannot point to a read-only object`);\n }\n}\n\nclass AccessingOpaque extends TypeError {\n constructor(structure) {\n const { name } = structure;\n super(`Unable to access opaque structure ${name}`);\n }\n}\n\nclass CreatingOpaque extends TypeError {\n constructor(structure) {\n const { name } = structure;\n super(`Unable to create instance of ${name}, as it is opaque`);\n }\n}\n\nclass InvalidVariadicArgument extends TypeError {\n constructor() {\n super(`Arguments passed to variadic function must be casted to a Zig type`);\n }\n}\n\nclass UnexpectedGenerator extends TypeError {\n constructor() {\n super(`Unexpected async generator`);\n }\n}\n\nclass ZigError extends Error {\n constructor(error, remove = 0) {\n if (error instanceof Error) {\n super(error.message);\n error.stack = adjustStack(this.stack, remove);\n return error;\n } else {\n super(error ?? 'Error encountered in Zig code');\n }\n }\n}\n\nclass Exit extends ZigError {\n constructor(code) {\n super('Program exited');\n this.code = code;\n }\n}\n\nfunction adjustArgumentError(err, argIndex) {\n const updateText = (argOffset) => {\n argIndex -= argOffset;\n err.message = `args[${argIndex}]: ${err.message}`;\n err.stack = adjustStack(err.stack, 'new Arg(');\n };\n updateText(0);\n defineProperty(err, UPDATE, { value: updateText, enumerable: false });\n return err;\n}\n\nfunction adjustStack(stack, search) {\n if (typeof(stack) === 'string') {\n const lines = stack.split('\\n');\n const index = lines.findIndex(s => s.includes(search));\n if (index !== -1) {\n lines.splice(1, index);\n stack = lines.join('\\n');\n }\n }\n return stack;\n}\n\nfunction replaceRangeError(member, index, err) {\n if (err instanceof RangeError && !(err instanceof OutOfBound)) {\n err = new OutOfBound(member, index);\n }\n return err;\n}\n\nfunction throwReadOnly() {\n throw new ReadOnly();\n}\n\nfunction checkInefficientAccess(context, access, len) {\n if (context.bytes === undefined) {\n context.bytes = context.calls = 0;\n }\n context.bytes += len;\n context.calls++;\n if (context.calls === 100) {\n const bytesPerCall = context.bytes / context.calls;\n if (bytesPerCall < 8) {\n const s = bytesPerCall !== 1 ? 's' : '';\n const action = (access === 'read') ? 'reading' : 'writing';\n const name = (access === 'read') ? 'Reader' : 'Writer';\n throw new Error(`Inefficient ${access} access. Each call is only ${action} ${bytesPerCall} byte${s}. Please use std.io.Buffered${name}.`);\n }\n }\n}\n\nfunction deanimalizeErrorName(name) {\n // deal with snake_case first\n let s = name.replace(/_/g, ' ');\n // then camelCase, using a try block in case Unicode regex fails\n try {\n s = s.replace(/(\\p{Uppercase}+)(\\p{Lowercase}*)/gu, (m0, m1, m2) => {\n if (m1.length === 1) {\n return ` ${m1.toLocaleLowerCase()}${m2}`;\n } else {\n if (m2) {\n return m0;\n } else {\n return ` ${m1}`;\n }\n }\n }).trimStart();\n } catch (err) {\n }\n return s.charAt(0).toLocaleUpperCase() + s.substring(1);\n}\n\nfunction isErrorJSON(arg) {\n return typeof(arg) === 'object' && typeof(arg.error) === 'string' && Object.keys(arg).length === 1 ;\n}\n\nfunction getDescription(arg) {\n const type = typeof(arg);\n let s;\n if (type === 'object') {\n s = (arg) ? Object.prototype.toString.call(arg) : 'null';\n } else {\n s = type;\n }\n return addArticle(s);\n}\n\nfunction addArticle(noun) {\n return `${article(noun)} ${noun}`;\n}\n\nfunction article(noun) {\n return /^\\W*[aeiou]/i.test(noun) ? 'an' : 'a';\n}\n\nfunction formatList(list, conj = 'or') {\n const sep = ` ${conj} `;\n if (list.length > 2) {\n return list.slice(0, -1).join(', ') + sep + list[list.length - 1];\n } else {\n return list.join(sep);\n }\n}\n\nexport { AccessingOpaque, AlignmentConflict, ArgumentCountMismatch, ArrayLengthMismatch, AssigningToConstant, BufferExpected, BufferSizeMismatch, ConstantConstraint, CreatingOpaque, EnumExpected, ErrorExpected, Exit, InaccessiblePointer, InactiveUnionProperty, InvalidArrayInitializer, InvalidInitializer, InvalidIntConversion, InvalidPointerTarget, InvalidSliceLength, InvalidType, InvalidVariadicArgument, MisplacedSentinel, MissingInitializers, MissingSentinel, MissingUnionInitializer, MultipleUnionInitializers, MustBeOverridden, NoCastingToFunction, NoCastingToPointer, NoInitializer, NoProperty, NotInErrorSet, NotOnByteBoundary, NotUndefined, NullPointer, OutOfBound, Overflow, PreviouslyFreed, ReadOnly, ReadOnlyTarget, TypeMismatch, UndefinedArgument, UnexpectedGenerator, Unsupported, ZigError, ZigMemoryTargetRequired, addArticle, adjustArgumentError, article, checkInefficientAccess, deanimalizeErrorName, formatList, getDescription, isErrorJSON, replaceRangeError, throwReadOnly };\n","import { StructureType } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { TypeMismatch, PreviouslyFreed } from '../errors.js';\nimport { ZIG, MEMORY, TYPE, ALIGN } from '../symbols.js';\nimport { usizeInvalid, encodeText } from '../utils.js';\n\nvar allocatorMethods = mixin({\n defineAlloc() {\n return {\n value(len, align = 1) {\n const lz = Math.clz32(align); \n if (align !== 1 << (31 - lz)) {\n throw new Error(`Invalid alignment: ${align}`);\n }\n const ptrAlign = 31 - lz;\n const { vtable: { alloc }, ptr } = this;\n const slicePtr = alloc(ptr, len, ptrAlign, 0);\n if (!slicePtr) {\n throw new Error('Out of memory');\n }\n // alloc returns a [*]u8, which has a initial length of 1\n slicePtr.length = len;\n const dv = slicePtr['*'][MEMORY];\n // attach alignment so we can find it again\n dv[ZIG].align = align;\n return dv;\n }\n };\n },\n defineFree() {\n const thisEnv = this;\n return {\n value(arg) {\n const { dv, align } = getMemory(arg);\n const zig = dv?.[ZIG];\n if (!zig) {\n throw new TypeMismatch('object containing allocated Zig memory', arg);\n }\n const { address } = zig;\n if (address === usizeInvalid) {\n throw new PreviouslyFreed(arg);\n }\n const { vtable: { free }, ptr } = this;\n const ptrAlign = 31 - Math.clz32(align); \n free(ptr, dv, ptrAlign, 0);\n thisEnv.releaseZigView(dv);\n }\n };\n },\n defineDupe() {\n const copy = this.getCopyFunction();\n return {\n value(arg) {\n const { dv: src, align, constructor } = getMemory(arg);\n if (!src) {\n throw new TypeMismatch('string, DataView, typed array, or Zig object', arg);\n }\n const dest = this.alloc(src.byteLength, align);\n copy(dest, src);\n return (constructor) ? constructor(dest) : dest;\n }\n };\n }\n});\n\nfunction getMemory(arg) {\n let dv, align = 1, constructor = null;\n if (arg instanceof DataView) {\n dv = arg;\n const zigMemoryAlign = dv?.[ZIG]?.align;\n if (zigMemoryAlign) {\n align = zigMemoryAlign;\n }\n } else if (arg instanceof ArrayBuffer) {\n dv = new DataView(arg);\n } else if (arg) {\n if (arg[MEMORY]) {\n if (arg.constructor[TYPE] === StructureType.Pointer) {\n arg = arg['*'];\n }\n dv = arg[MEMORY];\n constructor = arg.constructor;\n align = constructor[ALIGN];\n } else {\n if (typeof(arg) === 'string') {\n arg = encodeText(arg);\n }\n const { buffer, byteOffset, byteLength, BYTES_PER_ELEMENT } = arg;\n if (buffer && byteOffset !== undefined && byteLength !== undefined) {\n dv = new DataView(buffer, byteOffset, byteLength);\n align = BYTES_PER_ELEMENT;\n }\n }\n }\n return { dv, align, constructor };\n}\n\nexport { allocatorMethods as default };\n","import { structureNames } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { MEMORY, SLOTS, TYPE, ALIGN, SIZE, ENVIRONMENT } from '../symbols.js';\n\nvar baseline = mixin({\n init() {\n this.variables = [];\n },\n getSpecialExports() {\n const check = (v) => {\n if (v === undefined) throw new Error('Not a Zig type');\n return v;\n };\n return {\n init: (...args) => this.initialize?.(...args),\n abandon: () => this.abandonModule?.(),\n connect: (console) => this.consoleObject = console,\n sizeOf: (T) => check(T?.[SIZE]),\n alignOf: (T) => check(T?.[ALIGN]),\n typeOf: (T) => structureNamesLC[check(T?.[TYPE])],\n };\n },\n recreateStructures(structures, settings) {\n Object.assign(this, settings);\n const insertObjects = (dest, placeholders) => {\n for (const [ slot, placeholder ] of Object.entries(placeholders)) {\n dest[slot] = createObject(placeholder);\n }\n return dest;\n };\n // empty arrays aren't replicated\n const getBuffer = a => (a.length) ? a.buffer : new ArrayBuffer(0);\n const createObject = (placeholder) => {\n const { memory, structure, actual } = placeholder;\n if (memory) {\n if (actual) {\n return actual;\n } else {\n const { array, offset, length } = memory;\n const dv = this.obtainView(getBuffer(array), offset, length);\n const { handle, const: isConst } = placeholder;\n const constructor = structure?.constructor;\n const object = placeholder.actual = constructor.call(ENVIRONMENT, dv);\n if (isConst) {\n this.makeReadOnly(object);\n }\n if (placeholder.slots) {\n insertObjects(object[SLOTS], placeholder.slots);\n }\n if (handle) {\n // need to replace dataview with one pointing to Zig memory later,\n // when the VM is up and running\n this.variables.push({ handle, object });\n }\n return object;\n }\n } else {\n return structure;\n }\n };\n const objectPlaceholders = new Map();\n for (const structure of structures) {\n // recreate the actual template using the provided placeholder\n for (const scope of [ structure.instance, structure.static ]) {\n if (scope.template) {\n const { slots, memory, handle } = scope.template;\n const object = scope.template = {};\n if (memory) {\n const { array, offset, length } = memory;\n object[MEMORY] = this.obtainView(getBuffer(array), offset, length);\n if (handle) {\n this.variables.push({ handle, object });\n }\n }\n if (slots) {\n // defer creation of objects until shapes of structures are finalized\n const realSlots = object[SLOTS] = {};\n objectPlaceholders.set(realSlots, slots);\n }\n }\n }\n this.defineStructure(structure);\n }\n // insert objects into template slots\n for (const [ slots, placeholders ] of objectPlaceholders) {\n insertObjects(slots, placeholders);\n }\n // add static members, methods, etc.\n for (const structure of structures) {\n this.finalizeStructure(structure);\n }\n },\n});\n\nconst structureNamesLC = structureNames.map(name => name.replace(/([a-z])([A-Z])/g, '$1 $2').toLowerCase());\n\nexport { baseline as default };\n","import { CallResult, StructureType, StructFlag, MemberType } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { UnexpectedGenerator } from '../errors.js';\nimport { MEMORY, ZIG, ALLOCATOR, VISIT, THROWING, RETURN, YIELD } from '../symbols.js';\n\nvar callMarshalingInbound = mixin({\n init() {\n this.jsFunctionThunkMap = new Map();\n this.jsFunctionCallerMap = new Map();\n this.jsFunctionControllerMap = new Map();\n this.jsFunctionIdMap = new WeakMap();\n this.jsFunctionNextId = 1;\n },\n getFunctionId(fn) {\n let id = this.jsFunctionIdMap.get(fn);\n if (id === undefined) {\n id = this.jsFunctionNextId++;\n this.jsFunctionIdMap.set(fn, id);\n }\n return id;\n },\n getFunctionThunk(fn, jsThunkController) {\n const id = this.getFunctionId(fn);\n let dv = this.jsFunctionThunkMap.get(id);\n if (dv === undefined) {\n const controllerAddress = this.getViewAddress(jsThunkController[MEMORY]);\n const thunkAddress = this.createJsThunk(controllerAddress, id);\n if (!thunkAddress) {\n throw new Error('Unable to create function thunk');\n }\n dv = this.obtainZigView(thunkAddress, 0);\n this.jsFunctionThunkMap.set(id, dv);\n this.jsFunctionControllerMap.set(id, jsThunkController);\n }\n return dv;\n },\n createInboundCaller(fn, ArgStruct) {\n const handler = (dv, futexHandle) => {\n let result = CallResult.OK;\n let awaiting = false;\n try {\n const argStruct = ArgStruct(dv);\n if (VISIT in argStruct) {\n // reset pointers in arg so we don't pick up old pointers\n // objects in stack memory really shouldn't be cached\n argStruct[VISIT]('reset');\n const context = this.startContext();\n this.updatePointerTargets(context, argStruct, true);\n this.updateShadowTargets(context);\n this.endContext();\n }\n const onError = function(err) {\n try {\n // if the error is not part of the error set returned by the function,\n // the following will throw\n if (ArgStruct[THROWING] && err instanceof Error) {\n argStruct[RETURN](err);\n } else {\n throw err;\n }\n } catch (_) {\n result = CallResult.Failure;\n console.error(err);\n }\n };\n const onReturn = function(value) {\n try {\n // [RETURN] defaults to the setter of retval; if the function accepts a promise,\n // it'd invoke the callback\n argStruct[RETURN](value);\n } catch (err) {\n result = CallResult.Failure;\n console.error(err);\n }\n };\n try {\n const retval = fn(...argStruct);\n const hasCallback = argStruct.hasOwnProperty(RETURN);\n if (retval?.[Symbol.toStringTag] === 'Promise') {\n // we can handle a promise when the Zig caller is able to wait or\n // it's receiving the result through a callback\n if (futexHandle || hasCallback) {\n const promise = retval.then(onReturn, onError);\n if (futexHandle) {\n promise.then(() => this.finalizeAsyncCall(futexHandle, result));\n }\n awaiting = true;\n result = CallResult.OK;\n } else {\n result = CallResult.Deadlock;\n }\n } else if (retval?.[Symbol.asyncIterator]) {\n if (argStruct.hasOwnProperty(YIELD)) {\n this.pipeContents(retval, argStruct);\n result = CallResult.OK;\n } else {\n throw new UnexpectedGenerator();\n }\n } else if (retval != undefined || !hasCallback) {\n onReturn(retval);\n }\n } catch (err) {\n onError(err);\n }\n } catch(err) {\n console.error(err);\n result = CallResult.Failure;\n }\n if (futexHandle && !awaiting) {\n this.finalizeAsyncCall(futexHandle, result);\n }\n return result;\n };\n const id = this.getFunctionId(fn);\n this.jsFunctionCallerMap.set(id, handler);\n return function(...args) {\n return fn(...args);\n };\n },\n defineArgIterator(members) {\n const thisEnv = this;\n const allocatorTotal = members.filter(({ structure: s }) => {\n return (s.type === StructureType.Struct) && (s.flags & StructFlag.IsAllocator);\n }).length;\n return {\n value() {\n let options;\n let allocatorCount = 0, callbackCount = 0, signalCount = 0;\n const args = [];\n for (const [ srcIndex, { structure, type } ] of members.entries()) {\n // error unions will throw on access, in which case we pass the error as the argument\n try {\n let arg = this[srcIndex];\n if (type === MemberType.Object && arg?.[MEMORY]?.[ZIG]) {\n // create copy in JS memory\n arg = new arg.constructor(arg);\n }\n let optName, opt;\n if (structure.type === StructureType.Struct) {\n if (structure.flags & StructFlag.IsAllocator) {\n optName = (allocatorTotal === 1) ? `allocator` : `allocator${++allocatorCount}`;\n opt = this[ALLOCATOR] = arg;\n } else if (structure.flags & StructFlag.IsPromise) {\n optName = 'callback';\n if (++callbackCount === 1) {\n opt = thisEnv.createPromiseCallback(this, arg);\n }\n } else if (structure.flags & StructFlag.IsGenerator) {\n optName = 'callback';\n if (++callbackCount === 1) {\n opt = thisEnv.createGeneratorCallback(this, arg);\n }\n } else if (structure.flags & StructFlag.IsAbortSignal) {\n optName = 'signal';\n if (++signalCount === 1) {\n opt = thisEnv.createInboundSignal(arg);\n }\n }\n }\n if (optName !== undefined) {\n if (opt !== undefined) {\n options ||= {};\n options[optName] = opt;\n }\n } else {\n // just a regular argument\n args.push(arg);\n }\n } catch (err) {\n args.push(err);\n }\n }\n if (options) {\n args.push(options);\n }\n return args[Symbol.iterator]();\n }\n };\n },\n handleJsCall(id, argAddress, argSize, futexHandle = 0) {\n const dv = this.obtainZigView(argAddress, argSize, false);\n const caller = this.jsFunctionCallerMap.get(id);\n return (caller) ? caller(dv, futexHandle) : CallResult.Failure;\n },\n releaseFunction(id) {\n const thunk = this.jsFunctionThunkMap.get(id);\n const controller = this.jsFunctionControllerMap.get(id);\n if (thunk && controller) {\n const controllerAddress = this.getViewAddress(controller[MEMORY]);\n const thunkAddress = this.getViewAddress(thunk);\n this.destroyJsThunk(controllerAddress, thunkAddress);\n this.releaseZigView(thunk);\n if (id) {\n this.jsFunctionThunkMap.delete(id);\n this.jsFunctionCallerMap.delete(id);\n this.jsFunctionControllerMap.delete(id);\n }\n }\n },\n freeFunction(func) {\n this.releaseFunction(this.getFunctionId(func));\n },\n ...({\n exports: {\n handleJsCall: { argType: 'iiii', returnType: 'i' },\n releaseFunction: { argType: 'i' },\n },\n imports: {\n createJsThunk: { argType: 'ii', returnType: 'i' },\n destroyJsThunk: { argType: 'ii', returnType: 'i' },\n finalizeAsyncCall: { argType: 'ii' },\n },\n } ),\n});\n\nexport { callMarshalingInbound as default };\n","import { StructureType, StructFlag, MemberType } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { ZigError, UndefinedArgument, adjustArgumentError, Exit } from '../errors.js';\nimport { ATTRIBUTES, MEMORY, FINALIZE, COPY, STRING_RETVAL, RETURN, PROMISE, GENERATOR, SETTERS, VISIT, ALLOCATOR } from '../symbols.js';\n\nvar callMarshalingOutbound = mixin({\n createOutboundCaller(thunk, ArgStruct) {\n const thisEnv = this;\n const self = function (...args) {\n {\n if (!thisEnv.runThunk) {\n return thisEnv.initPromise.then(() => {\n return self(...args);\n });\n }\n }\n // `this` is present when running a promise and generator callback received from a inbound call\n // it's going to be the argument struct of that call\n const argStruct = new ArgStruct(args, this?.[ALLOCATOR]);\n {\n try {\n return thisEnv.invokeThunk(thunk, self, argStruct);\n } catch (err) {\n // do nothing when exit code is 0\n if (err instanceof Exit && err.code === 0) {\n return;\n }\n throw err;\n }\n }\n };\n return self;\n },\n copyArguments(argStruct, argList, members, options, argAlloc) {\n let destIndex = 0, srcIndex = 0;\n let allocatorCount = 0;\n const setters = argStruct[SETTERS];\n for (const { type, structure } of members) {\n let arg, promise, generator, signal;\n if (structure.type === StructureType.Struct) {\n if (structure.flags & StructFlag.IsAllocator) {\n // use programmer-supplied allocator if found in options object, handling rare scenarios\n // where a function uses multiple allocators\n const allocator = (++allocatorCount === 1)\n ? options?.['allocator'] ?? options?.['allocator1']\n : options?.[`allocator${allocatorCount}`];\n // otherwise use default allocator which allocates relocatable memory from JS engine\n arg = allocator ?? this.createDefaultAllocator(argStruct, structure);\n } else if (structure.flags & StructFlag.IsPromise) {\n promise ||= this.createPromise(structure, argStruct, options?.['callback']);\n arg = promise;\n } else if (structure.flags & StructFlag.IsGenerator) {\n generator ||= this.createGenerator(structure, argStruct, options?.['callback']);\n arg = generator;\n } else if (structure.flags & StructFlag.IsAbortSignal) {\n // create an Int32Array with one element, hooking it up to the programmer-supplied\n // AbortSignal object if found\n signal ||= this.createSignal(structure, options?.['signal']);\n arg = signal;\n } else if (structure.flags & StructFlag.IsReader) {\n arg = this.createReader(argList[srcIndex++]);\n } else if (structure.flags & StructFlag.IsWriter) {\n arg = this.createWriter(argList[srcIndex++]);\n }\n }\n if (arg === undefined) {\n // just a regular argument\n arg = argList[srcIndex++];\n // only void has the value of undefined\n if (arg === undefined && type !== MemberType.Void) {\n throw new UndefinedArgument();\n }\n }\n try {\n const set = setters[destIndex++];\n set.call(argStruct, arg, argAlloc);\n } catch (err) {\n throw adjustArgumentError(err, destIndex - 1);\n }\n }\n },\n invokeThunk(thunk, fn, argStruct) {\n const context = this.startContext();\n const attrs = argStruct[ATTRIBUTES];\n const thunkAddress = this.getViewAddress(thunk[MEMORY]);\n const fnAddress = this.getViewAddress(fn[MEMORY]);\n const isAsync = FINALIZE in argStruct;\n const hasPointers = VISIT in argStruct;\n if (hasPointers) {\n this.updatePointerAddresses(context, argStruct);\n }\n // return address of shadow for argumnet struct\n const argAddress = this.getShadowAddress(context, argStruct, null, false)\n ;\n // get address of attributes if function variadic\n const attrAddress = (attrs) ? this.getShadowAddress(context, attrs) : 0\n ;\n this.updateShadows(context);\n const finalize = () => {\n this.updateShadowTargets(context);\n // create objects that pointers point to\n if (hasPointers) {\n this.updatePointerTargets(context, argStruct);\n }\n if (this.libc) {\n this.flushStdout?.();\n }\n this.flushConsole?.();\n this.endContext();\n };\n if (isAsync) {\n argStruct[FINALIZE] = finalize;\n }\n const success = (attrs)\n ? this.runVariadicThunk(thunkAddress, fnAddress, argAddress, attrAddress, attrs.length)\n : this.runThunk(thunkAddress, fnAddress, argAddress);\n if (!success) {\n finalize();\n throw new ZigError();\n }\n {\n // copy retval from shadow view\n argStruct[COPY]?.(this.findShadowView(argStruct[MEMORY]));\n }\n if (isAsync) {\n let retval = null;\n // if a function has returned a value or failed synchronmously, the promise is resolved immediately\n try {\n retval = argStruct.retval;\n } catch (err) {\n retval = new ZigError(err, 1);\n }\n if (retval != null) {\n if (fn[STRING_RETVAL] && retval) {\n retval = retval.string;\n }\n argStruct[RETURN](retval);\n } else if (fn[STRING_RETVAL]) {\n // so the promise or generator knows that a string is wanted \n argStruct[STRING_RETVAL] = true;\n }\n // this would be undefined if a callback function is used instead\n return argStruct[PROMISE] ?? argStruct[GENERATOR];\n } else {\n finalize();\n try {\n const { retval } = argStruct;\n return (fn[STRING_RETVAL] && retval) ? retval.string : retval;\n } catch (err) {\n throw new ZigError(err, 1);\n }\n }\n },\n ...({\n imports: {\n runThunk: { argType: 'iii', returnType: 'b' },\n runVariadicThunk: { argType: 'iiiii', returnType: 'b' },\n },\n } ),\n});\n\nexport { callMarshalingOutbound as default };\n","import { MemberType } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { MEMORY, ZIG, RESTORE } from '../symbols.js';\nimport { empty } from '../utils.js';\n\nvar dataCopying = mixin({\n init() {\n const int8 = { type: MemberType.Int, bitSize: 8, byteSize: 1 };\n const int16 = { type: MemberType.Int, bitSize: 16, byteSize: 2 };\n const int32 = { type: MemberType.Int, bitSize: 32, byteSize: 4 };\n const getInt8 = this.getAccessor('get', int8);\n const setInt8 = this.getAccessor('set', int8);\n const getInt16 = this.getAccessor('get', int16);\n const setInt16 = this.getAccessor('set', int16);\n const getInt32 = this.getAccessor('get', int32);\n const setInt32 = this.getAccessor('set', int32);\n this.copiers = {\n 0: empty,\n 1: function(dest, src) {\n setInt8.call(dest, 0, getInt8.call(src, 0));\n },\n 2: function(dest, src) {\n setInt16.call(dest, 0, getInt16.call(src, 0, true), true);\n\n },\n 4: function(dest, src) {\n setInt32.call(dest, 0, getInt32.call(src, 0, true), true);\n },\n 8: function(dest, src) {\n setInt32.call(dest, 0, getInt32.call(src, 0, true), true);\n setInt32.call(dest, 4, getInt32.call(src, 4, true), true);\n },\n 16: function(dest, src) {\n setInt32.call(dest, 0, getInt32.call(src, 0, true), true);\n setInt32.call(dest, 4, getInt32.call(src, 4, true), true);\n setInt32.call(dest, 8, getInt32.call(src, 8, true), true);\n setInt32.call(dest, 12, getInt32.call(src, 12, true), true);\n },\n 'any': function(dest, src) {\n let i = 0, len = dest.byteLength;\n while (i + 4 <= len) {\n setInt32.call(dest, i, getInt32.call(src, i, true), true);\n i += 4;\n }\n while (i + 1 <= len) {\n setInt8.call(dest, i, getInt8.call(src, i));\n i++;\n }\n },\n };\n this.resetters = {\n 0: empty,\n 1: function(dest, offset) {\n setInt8.call(dest, offset, 0);\n },\n 2: function(dest, offset) {\n setInt16.call(dest, offset, 0, true);\n\n },\n 4: function(dest, offset) {\n setInt32.call(dest, offset, 0, true);\n },\n 8: function(dest, offset) {\n setInt32.call(dest, offset + 0, 0, true);\n setInt32.call(dest, offset + 4, 0, true);\n },\n 16: function(dest, offset) {\n setInt32.call(dest, offset + 0, 0, true);\n setInt32.call(dest, offset + 4, 0, true);\n setInt32.call(dest, offset + 8, 0, true);\n setInt32.call(dest, offset + 12, 0, true);\n },\n any: function(dest, offset, len) {\n let i = offset;\n while (i + 4 <= len) {\n setInt32.call(dest, i, 0, true);\n i += 4;\n }\n while (i + 1 <= len) {\n setInt8.call(dest, i, 0);\n i++;\n }\n },\n };\n },\n defineCopier(size, multiple) {\n const copy = this.getCopyFunction(size, multiple);\n return {\n value(target) {\n {\n this[RESTORE]?.();\n target[RESTORE]?.();\n }\n const src = target[MEMORY];\n const dest = this[MEMORY];\n copy(dest, src);\n },\n };\n },\n defineResetter(offset, size) {\n const reset = this.getResetFunction(size);\n return {\n value() {\n {\n this[RESTORE]?.();\n }\n const dest = this[MEMORY];\n reset(dest, offset, size);\n }\n };\n },\n getCopyFunction(size, multiple = false) {\n const f = !multiple ? this.copiers[size] : undefined;\n return f ?? this.copiers.any;\n },\n getResetFunction(size) {\n return this.resetters[size] ?? this.resetters.any;\n },\n ...({\n defineRetvalCopier({ byteSize, bitOffset }) {\n if (byteSize > 0) {\n const thisEnv = this;\n const offset = bitOffset >> 3;\n const copy = this.getCopyFunction(byteSize);\n return {\n value(shadowDV) {\n const dv = this[MEMORY];\n const { address } = shadowDV[ZIG];\n const src = new DataView(thisEnv.memory.buffer, address + offset, byteSize);\n const dest = new DataView(dv.buffer, dv.byteOffset + offset, byteSize);\n copy(dest, src);\n }\n };\n }\n },\n copyExternBytes(dst, address, len) {\n const { memory } = this;\n const src = new DataView(memory.buffer, address, len);\n const copy = this.getCopyFunction(len);\n copy(dst, src);\n },\n } )\n});\n\nexport { dataCopying as default };\n","import { PrimitiveFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { InvalidIntConversion } from '../errors.js';\n\nvar intConversion = mixin({\n addIntConversion(getAccessor) {\n return function (access, member) {\n const accessor = getAccessor.call(this, access, member);\n const { flags, bitSize } = member;\n if (access === 'set') {\n return (bitSize > 32)\n ? function(offset, value, littleEndian) {\n accessor.call(this, offset, BigInt(value), littleEndian);\n }\n : function(offset, value, littleEndian) {\n const number = Number(value);\n if (!isFinite(number)) {\n throw new InvalidIntConversion(value)\n }\n accessor.call(this, offset, number, littleEndian);\n };\n } else {\n const { flags: structureFlags } = member.structure;\n if ((structureFlags & PrimitiveFlag.IsSize) && bitSize > 32) {\n const max = BigInt(Number.MAX_SAFE_INTEGER);\n const min = BigInt(Number.MIN_SAFE_INTEGER);\n return function(offset, littleEndian) {\n const bigint = accessor.call(this, offset, littleEndian);\n return (min <= bigint && bigint <= max) ? Number(bigint) : bigint;\n };\n }\n }\n return accessor;\n };\n },\n});\n\nexport { intConversion as default };\n","import { mixin } from '../environment.js';\nimport { MEMORY, RESET } from '../symbols.js';\nimport { usizeMax, usize } from '../utils.js';\n\nvar jsAllocator = mixin({\n init() {\n this.defaultAllocator = null;\n this.allocatorVtable = null;\n this.allocatorContextMap = new Map();\n this.nextAllocatorContextId = usize(0x1000);\n },\n createDefaultAllocator(args, structure) {\n let allocator = this.defaultAllocator;\n if (!allocator) {\n allocator = this.defaultAllocator = this.createJsAllocator(args, structure, false);\n }\n return allocator;\n },\n createJsAllocator(args, structure, resettable) {\n const { constructor: Allocator } = structure;\n let vtable = this.allocatorVtable;\n if (!vtable) { \n const { noResize, noRemap } = Allocator;\n vtable = this.allocatorVtable = {\n alloc: this.allocateHostMemory.bind(this),\n free: this.freeHostMemory.bind(this),\n resize: noResize,\n };\n if (noRemap) {\n vtable.remap = noRemap;\n }\n this.destructors.push(() => this.freeFunction(vtable.alloc));\n this.destructors.push(() => this.freeFunction(vtable.free));\n }\n let contextId = usizeMax;\n if (resettable) {\n // create list used to clean memory allocated for generator\n const list = [];\n contextId = this.nextAllocatorContextId++;\n this.allocatorContextMap.set(contextId, list);\n args[RESET] = (done) => {\n for (const { address, len } of list) {\n const entry = this.unregisterMemory(address, len);\n {\n if (entry) {\n this.freeShadowMemory(entry.shadowDV);\n }\n }\n if (done) {\n this.allocatorContextMap.delete(contextId);\n }\n }\n list.splice(0);\n };\n }\n const ptr = this.obtainZigView(contextId, 0);\n return new Allocator({ ptr, vtable });\n },\n allocateHostMemory(ptr, len, ptrAlign) {\n // see if we're dealing with a resettable allocator\n const contextId = this.getViewAddress(ptr['*'][MEMORY]);\n const list = (contextId != usizeMax) ? this.allocatorContextMap.get(contextId) : null;\n const align = 1 << ptrAlign;\n const targetDV = this.allocateJSMemory(len, align);\n {\n try {\n const shadowDV = this.allocateShadowMemory(len, align);\n const address = this.getViewAddress(shadowDV);\n this.registerMemory(address, len, align, true, targetDV, shadowDV);\n // save address and len if resettable\n list?.push({ address, len });\n return shadowDV;\n } catch (err) {\n return null;\n }\n }\n },\n freeHostMemory(ptr, buf, ptrAlign) {\n const dv = buf['*'][MEMORY];\n const address = this.getViewAddress(dv);\n const len = dv.byteLength;\n const entry = this.unregisterMemory(address, len);\n {\n if (entry) {\n this.freeShadowMemory(entry.shadowDV);\n }\n }\n },\n});\n\nexport { jsAllocator as default };\n","import { mixin } from '../environment.js';\nimport { AlignmentConflict } from '../errors.js';\nimport { MEMORY, ZIG, ALIGN } from '../symbols.js';\nimport { isInvalidAddress, usizeMax, usizeMin, adjustAddress, usizeInvalid, alignForward, isMisaligned, findSortedIndex } from '../utils.js';\n\nvar memoryMapping = mixin({\n init() {\n this.isMemoryMapping = true;\n this.memoryList = [];\n this.contextCount = 0;\n },\n startContext() {\n ++this.contextCount;\n return { shadowList: [] };\n },\n endContext() {\n if (--this.contextCount === 0) {\n for (const { shadowDV } of this.memoryList) {\n if (shadowDV) {\n this.freeShadowMemory(shadowDV);\n }\n }\n this.memoryList.splice(0);\n }\n },\n getShadowAddress(context, target, cluster, writable) {\n const targetDV = target[MEMORY];\n if (cluster) {\n if (cluster.address === undefined) {\n const { start, end, targets } = cluster;\n // look for largest align\n let maxAlign = 0, maxAlignOffset;\n for (const target of targets) {\n const dv = target[MEMORY];\n const offset = dv.byteOffset;\n const align = target.constructor[ALIGN] ?? dv[ALIGN];\n if (maxAlign === undefined || align > maxAlign) {\n maxAlign = align;\n maxAlignOffset = offset;\n }\n }\n // ensure the shadow buffer is large enough to accommodate necessary adjustments\n const len = end - start;\n const unalignedDV = this.allocateShadowMemory(len + maxAlign, 1);\n const unalignedAddress = this.getViewAddress(unalignedDV);\n const maxAlignAddress = alignForward(adjustAddress(unalignedAddress, maxAlignOffset - start), maxAlign);\n const address = adjustAddress(maxAlignAddress, start - maxAlignOffset);\n // make sure that other pointers are correctly aligned also\n for (const target of targets) {\n const dv = target[MEMORY];\n const offset = dv.byteOffset;\n if (offset !== maxAlignOffset) {\n const align = target.constructor[ALIGN] ?? dv[ALIGN];\n if (isMisaligned(adjustAddress(address, offset - start), align)) {\n throw new AlignmentConflict(align, maxAlign);\n }\n }\n }\n const shadowOffset = unalignedDV.byteOffset + Number(address - unalignedAddress);\n const shadowDV = new DataView(unalignedDV.buffer, shadowOffset, len);\n {\n // attach Zig memory info to aligned data view so it gets freed correctly\n shadowDV[ZIG] = { address, len, align: 1, unalignedAddress, type: MemoryType.Scratch };\n }\n const clusterDV = new DataView(targetDV.buffer, Number(start), len);\n const entry = this.registerMemory(address, len, 1, writable, clusterDV, shadowDV);\n context.shadowList.push(entry);\n cluster.address = address;\n }\n return adjustAddress(cluster.address, targetDV.byteOffset - cluster.start);\n } else {\n const align = target.constructor[ALIGN] ?? targetDV[ALIGN];\n const len = targetDV.byteLength;\n const shadowDV = this.allocateShadowMemory(len, align);\n const address = this.getViewAddress(shadowDV);\n const entry = this.registerMemory(address, len, 1, writable, targetDV, shadowDV);\n context.shadowList.push(entry);\n return address;\n }\n },\n updateShadows(context) {\n const copy = this.getCopyFunction();\n for (let { targetDV, shadowDV } of context.shadowList) {\n {\n shadowDV = this.restoreView(shadowDV);\n }\n copy(shadowDV, targetDV);\n }\n },\n updateShadowTargets(context) {\n const copy = this.getCopyFunction();\n for (let { targetDV, shadowDV, writable } of context.shadowList) {\n if (writable) {\n {\n shadowDV = this.restoreView(shadowDV);\n }\n copy(targetDV, shadowDV);\n }\n }\n },\n registerMemory(address, len, align, writable, targetDV, shadowDV) {\n const index = findMemoryIndex(this.memoryList, address);\n let entry = this.memoryList[index - 1];\n if (entry?.address === address && entry.len === len) {\n entry.writable ||= writable;\n } else {\n entry = { address, len, align, writable, targetDV, shadowDV };\n this.memoryList.splice(index, 0, entry);\n }\n return entry;\n },\n unregisterMemory(address, len) {\n const index = findMemoryIndex(this.memoryList, address);\n const entry = this.memoryList[index - 1];\n if (entry?.address === address && entry.len === len) {\n this.memoryList.splice(index - 1, 1);\n return entry;\n }\n },\n findMemory(context, address, count, size) {\n let len = count * (size ?? 0);\n const index = findMemoryIndex(this.memoryList, address);\n const entry = this.memoryList[index - 1];\n let dv;\n if (entry?.address === address && entry.len === len) {\n dv = entry.targetDV;\n } else if (entry?.address <= address && adjustAddress(address, len) <= adjustAddress(entry.address, entry.len)) {\n const offset = Number(address - entry.address);\n const isOpaque = size === undefined;\n const { targetDV } = entry;\n if (isOpaque) {\n len = targetDV.byteLength - offset;\n }\n dv = this.obtainView(targetDV.buffer, targetDV.byteOffset + offset, len);\n if (isOpaque) {\n // opaque structure--need to save the alignment\n dv[ALIGN] = entry.align;\n }\n }\n if (!dv) {\n // not found in any of the buffers we've seen--assume it's Zig memory\n dv = this.obtainZigView(address, len);\n } else {\n let { targetDV, shadowDV } = entry;\n if (shadowDV && context && !context.shadowList.includes(entry)) {\n {\n shadowDV = this.restoreView(shadowDV);\n }\n const copy = this.getCopyFunction();\n copy(targetDV, shadowDV);\n }\n }\n return dv;\n },\n findShadowView(dv) {\n for (const { shadowDV, targetDV } of this.memoryList) {\n if (targetDV === dv) {\n return shadowDV;\n }\n }\n },\n releaseZigView(dv) {\n const zig = dv[ZIG];\n const address = zig?.address;\n if (address && address !== usizeInvalid) {\n // set address to invalid to avoid double free\n zig.address = usizeInvalid;\n }\n },\n getViewAddress(dv) {\n const zig = dv[ZIG];\n if (zig) {\n return zig.address;\n } else {\n const address = this.getBufferAddress(dv.buffer);\n return adjustAddress(address, dv.byteOffset);\n }\n },\n ...({\n imports: {\n allocateScratchMemory: { argType: 'ii', returnType: 'i' },\n freeScratchMemory: { argType: 'iii' },\n },\n exports: {\n getViewAddress: { argType: 'v', returnType: 'i' },\n },\n usizeMaxBuffer: new ArrayBuffer(0),\n\n allocateShadowMemory(len, align) {\n const address = (len) ? this.allocateScratchMemory(len, align) : 0;\n if (!address && len) {\n throw new Error('Out of memory');\n }\n const dv = this.obtainZigView(address, len);\n const zig = dv?.[ZIG];\n if (zig) {\n zig.align = align;\n }\n return dv;\n },\n freeShadowMemory(dv) {\n const { address, unalignedAddress, len, align } = dv[ZIG];\n if (len) {\n this.freeScratchMemory(unalignedAddress ?? address, len, align);\n }\n this.releaseZigView(dv);\n },\n obtainZigView(address, len, cache = true) {\n if (isInvalidAddress(address)) {\n address = (len > 0) ? 0 : usizeMax;\n }\n if (!address && len) {\n return null;\n }\n let { buffer } = this.memory;\n if (address === usizeMax) {\n buffer = this.usizeMaxBuffer;\n address = usizeMin;\n len = 0;\n }\n let dv;\n if (cache) {\n dv = this.obtainView(buffer, address, len);\n } else {\n // don't attach the view to the buffer so that it'd get garbage-collected\n dv = new DataView(buffer, address, len);\n dv[ZIG] = { address, len };\n }\n return dv;\n },\n getTargetAddress(context, target, cluster, writable) {\n const dv = target[MEMORY];\n if (dv[ZIG]) {\n return this.getViewAddress(dv);\n } else if (dv.byteLength === 0) {\n // it's a null pointer/empty slice\n return 0;\n }\n // JS buffers always need shadowing\n return this.getShadowAddress(context, target, cluster, writable);\n },\n getBufferAddress(buffer) {\n return 0;\n },\n } ),\n});\n\nfunction findMemoryIndex(array, address) {\n return findSortedIndex(array, address, m => m.address);\n}\n\nconst MemoryType = {\n Normal: 0,\n Scratch: 1,\n};\n\nexport { MemoryType, memoryMapping as default };\n","import { mixin } from '../environment.js';\nimport { decodeText, empty, defineProperty, defineValue } from '../utils.js';\n\nvar moduleLoading = mixin({\n init() {\n this.abandoned = false;\n this.destructors = [];\n {\n this.nextValueIndex = 1;\n this.valueMap = new Map();\n this.valueIndices = new Map();\n this.options = null;\n this.executable = null;\n this.memory = null;\n this.table = null;\n this.initialTableLength = 0;\n this.exportedFunctions = null;\n }\n },\n abandonModule() {\n if (!this.abandoned) {\n for (const destructor of this.destructors.reverse()) {\n destructor();\n }\n this.abandoned = true;\n }\n },\n ...({\n imports: {\n initialize: { argType: '' },\n },\n exports: {\n displayPanic: { argType: 'ii' },\n },\n\n async initialize(wasi) {\n this.setCustomWASI?.(wasi);\n await this.initPromise;\n },\n getObjectIndex(object) {\n if (object != null) {\n let index = this.valueIndices.get(object);\n if (index === undefined) {\n index = this.nextValueIndex++;\n this.valueIndices.set(object, index);\n this.valueMap.set(index, object);\n }\n return index;\n } else {\n return 0;\n }\n },\n fromWebAssembly(type, arg) {\n switch (type) {\n case 'v':\n case 's': return this.valueMap.get(arg);\n case 'i': return arg;\n case 'b': return !!arg;\n }\n },\n toWebAssembly(type, arg) {\n switch (type) {\n case 'v':\n case 's': return this.getObjectIndex(arg);\n case 'i': return arg;\n case 'b': return arg ? 1 : 0;\n }\n },\n exportFunction(fn, argType = '', returnType = '', name) {\n if (!fn) {\n return () => {};\n }\n return (...args) => {\n args = args.map((arg, i) => this.fromWebAssembly(argType.charAt(i), arg));\n const retval = fn.apply(this, args);\n const retval2 = this.toWebAssembly(returnType, retval);\n return retval2;\n };\n },\n importFunction(fn, argType = '', returnType = '') {\n return (...args) => {\n args = args.map((arg, i) => this.toWebAssembly(argType.charAt(i), arg));\n const retval = fn.apply(this, args);\n return this.fromWebAssembly(returnType, retval);\n };\n },\n exportFunctions() {\n const imports = {};\n for (const [ name, { argType, returnType, alias } ] of Object.entries(this.exports)) {\n const fn = this[alias ?? name];\n if (fn) {\n imports[`_${name}`] = this.exportFunction(fn, argType, returnType, name);\n }\n }\n return imports;\n },\n importFunctions(exports) {\n for (const [ name, { argType, returnType } ] of Object.entries(this.imports)) {\n const fn = exports[name];\n if (fn) {\n defineProperty(this, name, defineValue(this.importFunction(fn, argType, returnType)));\n this.destructors.push(() => this[name] = throwError);\n }\n }\n },\n async instantiateWebAssembly(source, options) {\n const {\n memoryInitial,\n memoryMax,\n tableInitial,\n multithreaded,\n } = this.options = options;\n const res = await source;\n const suffix = (res[Symbol.toStringTag] === 'Response') ? 'Streaming' : '';\n const w = WebAssembly;\n const f = w['compile' + suffix];\n const executable = this.executable = await f(res);\n const functions = this.exportFunctions();\n const env = {}, wasi = {}, wasiPreview = {};\n const exports = this.exportedModules = { env, wasi, wasi_snapshot_preview1: wasiPreview };\n for (const { module, name, kind } of w.Module.imports(executable)) {\n if (kind === 'function') {\n if (module === 'env') {\n env[name] = functions[name] ?? empty;\n } else if (module === 'wasi_snapshot_preview1') {\n wasiPreview[name] = this.getWASIHandler(name);\n } else if (module === 'wasi') {\n wasi[name] = this.getThreadHandler?.(name) ?? empty;\n }\n }\n }\n this.memory = env.memory = new w.Memory({\n initial: memoryInitial,\n maximum: memoryMax,\n shared: multithreaded,\n });\n this.table = env.__indirect_function_table = new w.Table({\n initial: tableInitial,\n element: 'anyfunc',\n shared: multithreaded,\n });\n this.initialTableLength = tableInitial;\n return w.instantiate(executable, exports);\n },\n loadModule(source, options) {\n return this.initPromise = (async () => {\n const instance = await this.instantiateWebAssembly(source, options);\n const { exports } = instance;\n this.importFunctions(exports);\n if (this.customWASI) {\n // use a proxy to attach the memory object to the list of exports\n const exportsPlusMemory = { ...exports, memory: this.memory };\n const instanceProxy = new Proxy(instance, {\n get(inst, name) {\n return (name === 'exports') ? exportsPlusMemory : inst[name];\n }\n });\n this.customWASI.initialize?.(instanceProxy);\n }\n this.initialize();\n })();\n },\n displayPanic(address, len) {\n const array = new Uint8Array(this.memory.buffer, address, len);\n const msg = decodeText(array);\n console.error(`Zig panic: ${msg}`);\n },\n } ),\n});\n\nconst throwError = () => { throw new Error(`Module was abandoned`) };\n\nexport { moduleLoading as default };\n","import { VisitorFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { MEMORY, CACHE, VISIT, UPDATE, SLOTS } from '../symbols.js';\n\nvar objectLinkage = mixin({\n linkVariables(writeBack) {\n {\n // linkage occurs when WASM compilation is complete and functions have been imported\n if (!this.memory) {\n this.initPromise = this.initPromise.then(() => this.linkVariables(writeBack));\n return;\n }\n }\n const copy = this.getCopyFunction();\n for (const { object, handle } of this.variables) {\n const jsDV = object[MEMORY];\n // objects in WebAssembly have fixed addresses so the handle is the address\n // for native code module, locations of objects in memory can change depending on\n // where the shared library is loaded\n const address = handle ;\n let zigDV = object[MEMORY] = this.obtainZigView(address, jsDV.byteLength);\n if (writeBack) {\n copy(zigDV, jsDV);\n }\n object.constructor[CACHE]?.save?.(zigDV, object);\n this.destructors.push(() => {\n {\n zigDV = this.restoreView(object[MEMORY]);\n }\n const jsDV = object[MEMORY] = this.allocateMemory(zigDV.bytelength);\n copy(jsDV, zigDV);\n });\n const linkChildren = (object) => {\n const slots = object[SLOTS];\n if (slots) {\n const parentOffset = zigDV.byteOffset;\n for (const child of Object.values(slots)) {\n if (child) {\n const childDV = child[MEMORY];\n if (childDV.buffer === jsDV.buffer) {\n const offset = parentOffset + childDV.byteOffset - jsDV.byteOffset;\n child[MEMORY] = this.obtainView(zigDV.buffer, offset, childDV.byteLength);\n child.constructor[CACHE]?.save?.(zigDV, child);\n linkChildren(child);\n }\n }\n }\n }\n };\n linkChildren(object);\n // update pointer targets\n object[VISIT]?.(function() { this[UPDATE](); }, VisitorFlag.IgnoreInactive);\n }\n },\n ...({\n imports: {\n recreateAddress: { argType: 'i', returnType: 'i' },\n },\n } ),\n });\n\nexport { objectLinkage as default };\n","import { VisitorFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { MEMORY, VISIT, ADDRESS, LENGTH, POINTER, SLOTS, UPDATE, ZIG } from '../symbols.js';\nimport { findSortedIndex } from '../utils.js';\n\nvar pointerSynchronization = mixin({\n updatePointerAddresses(context, object) {\n // first, collect all the pointers\n const pointerMap = new Map();\n const bufferMap = new Map();\n const potentialClusters = [];\n const callback = function(flags) {\n // bypass proxy\n const pointer = this[POINTER];\n if (pointerMap.get(pointer) === undefined) {\n const target = pointer[SLOTS][0];\n if (target) {\n const writable = !pointer.constructor.const;\n const entry = { target, writable };\n // only targets in JS memory need updating\n const dv = target[MEMORY];\n if (!dv[ZIG]) {\n pointerMap.set(pointer, target);\n // see if the buffer is shared with other objects\n const other = bufferMap.get(dv.buffer);\n if (other) {\n const array = Array.isArray(other) ? other : [ other ];\n const index = findSortedIndex(array, dv.byteOffset, e => e.target[MEMORY].byteOffset);\n array.splice(index, 0, entry);\n if (!Array.isArray(other)) {\n bufferMap.set(dv.buffer, array);\n potentialClusters.push(array);\n }\n } else {\n bufferMap.set(dv.buffer, entry);\n }\n // scan pointers in target\n target[VISIT]?.(callback, 0);\n } else {\n // in Zig memory--no need to update\n pointerMap.set(pointer, null);\n }\n }\n }\n };\n const flags = VisitorFlag.IgnoreRetval | VisitorFlag.IgnoreInactive;\n object[VISIT](callback, flags);\n // find targets that overlap each other\n const clusters = this.findTargetClusters(potentialClusters);\n const clusterMap = new Map();\n for (const cluster of clusters) {\n for (const target of cluster.targets) {\n clusterMap.set(target, cluster);\n }\n }\n // process the pointers\n for (const [ pointer, target ] of pointerMap) {\n if (target) {\n const cluster = clusterMap.get(target);\n const writable = cluster?.writable ?? !pointer.constructor.const;\n pointer[ADDRESS] = this.getTargetAddress(context, target, cluster, writable);\n if (LENGTH in pointer) {\n pointer[LENGTH] = target.length;\n }\n }\n }\n },\n updatePointerTargets(context, object, inbound = false) {\n const pointerMap = new Map();\n const callback = function(flags) {\n // bypass proxy\n const pointer = this[POINTER];\n if (!pointerMap.get(pointer)) {\n pointerMap.set(pointer, true);\n const currentTarget = pointer[SLOTS][0];\n const newTarget = (!currentTarget || !(flags & VisitorFlag.IsImmutable))\n ? pointer[UPDATE](context, true, !(flags & VisitorFlag.IsInactive))\n : currentTarget;\n const targetFlags = (pointer.constructor.const) ? VisitorFlag.IsImmutable : 0;\n if (!(targetFlags & VisitorFlag.IsImmutable)) {\n // update targets of pointers in original target if it's in JS memory\n // pointers in Zig memory are updated on access so we don't need to do it here\n // (and they should never point to reloctable memory)\n if (currentTarget && !currentTarget[MEMORY][ZIG]) {\n currentTarget[VISIT]?.(callback, targetFlags);\n }\n }\n if (newTarget !== currentTarget) {\n // acquire targets of pointers in new target if it;s in JS memory\n if (newTarget && !newTarget[MEMORY][ZIG]) {\n newTarget?.[VISIT]?.(callback, targetFlags);\n }\n }\n }\n };\n const flags = (inbound) ? VisitorFlag.IgnoreRetval : 0;\n object[VISIT](callback, flags);\n },\n findTargetClusters(potentialClusters) {\n const clusters = [];\n for (const entries of potentialClusters) {\n let prevTarget = null, prevStart = 0, prevEnd = 0;\n let currentCluster = null;\n for (const { target, writable } of entries) {\n const dv = target[MEMORY];\n const { byteOffset: start, byteLength } = dv;\n const end = start + byteLength;\n let forward = true;\n if (prevTarget) {\n if (prevEnd > start) {\n // the previous target overlaps this one\n if (!currentCluster) {\n currentCluster = {\n targets: [ prevTarget ],\n start: prevStart,\n end: prevEnd,\n address: undefined,\n misaligned: undefined,\n writable,\n };\n clusters.push(currentCluster);\n } else {\n currentCluster.writable ||= writable;\n }\n currentCluster.targets.push(target);\n if (end > prevEnd) {\n // set cluster end offset to include this one\n currentCluster.end = end;\n } else {\n // the previous target contains this one\n forward = false;\n }\n } else {\n currentCluster = null;\n }\n }\n if (forward) {\n prevTarget = target;\n prevStart = start;\n prevEnd = end;\n }\n }\n }\n return clusters;\n },\n});\n\nexport { pointerSynchronization as default };\n","import { mixin } from '../environment.js';\nimport { empty } from '../utils.js';\n\nvar thunkAllocation = mixin({\n ...({\n exports: {\n allocateJsThunk: { argType: 'ii', returnType: 'i' },\n freeJsThunk: { argType: 'ii', returnType: 'i' },\n },\n init() {\n this.thunkSources = [];\n this.thunkMap = new Map();\n },\n addJsThunkSource() {\n const {\n memoryInitial,\n memoryMax,\n tableInitial,\n multithreaded,\n } = this.options;\n const w = WebAssembly;\n const env = {}, wasi = {}, wasiPreview = {};\n const imports = { env, wasi, wasi_snapshot_preview1: wasiPreview };\n for (const { module, name, kind } of w.Module.imports(this.executable)) {\n if (kind === 'function') {\n if (module === 'env') {\n env[name] = empty;\n } else if (module === 'wasi_snapshot_preview1') {\n wasiPreview[name] = empty;\n }\n }\n }\n env.memory = new w.Memory({\n initial: memoryInitial,\n maximum: memoryMax,\n shared: multithreaded,\n });\n const table = env.__indirect_function_table = new w.Table({\n initial: tableInitial,\n element: 'anyfunc',\n });\n const { exports } = new w.Instance(this.executable, imports);\n const { createJsThunk, destroyJsThunk } = exports;\n const source = {\n thunkCount: 0,\n createJsThunk,\n destroyJsThunk,\n table,\n };\n this.thunkSources.unshift(source);\n return source;\n },\n allocateJsThunk(controllerAddress, funcId) {\n let source, sourceAddress = 0;\n for (source of this.thunkSources) {\n sourceAddress = source.createJsThunk(controllerAddress, funcId);\n break;\n }\n if (!sourceAddress) {\n source = this.addJsThunkSource();\n sourceAddress = source.createJsThunk(controllerAddress, funcId);\n }\n // sourceAddress is an index into the function table of the source instance\n // we need to get the function object and place it into the main instance's\n // function table\n const thunkObject = source.table.get(sourceAddress);\n let thunkAddress = 0;\n for (let i = this.table.length - 1; i >= this.initialTableLength; i--) {\n if (!this.table.get(i)) {\n thunkAddress = i;\n break;\n }\n }\n if (!thunkAddress) {\n thunkAddress = this.table.length;\n this.table.grow(8);\n }\n this.table.set(thunkAddress, thunkObject);\n source.thunkCount++;\n // remember where the object is from\n this.thunkMap.set(thunkObject, { source, sourceAddress });\n return thunkAddress;\n },\n freeJsThunk(controllerAddress, thunkAddress) {\n let fnId = 0;\n const thunkObject = this.table.get(thunkAddress);\n this.table.set(thunkAddress, null);\n const entry = this.thunkMap.get(thunkObject);\n if (entry) {\n const { source, sourceAddress } = entry;\n fnId = source.destroyJsThunk(controllerAddress, sourceAddress);\n if (--source.thunkCount === 0) {\n const index = this.thunkSources.indexOf(source);\n if (index !== -1) {\n this.thunkSources.splice(index, 1);\n }\n }\n this.thunkMap.delete(thunkObject);\n }\n return fnId;\n },\n } ),\n});\n\nexport { thunkAllocation as default };\n","import { StructureType } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { BufferSizeMismatch, ArrayLengthMismatch, BufferExpected } from '../errors.js';\nimport { MEMORY, CONST_TARGET, CACHE, PROXY, ZIG, SENTINEL, SHAPE, COPY, TYPED_ARRAY } from '../symbols.js';\nimport { usizeInvalid, isCompatibleInstanceOf, findElements } from '../utils.js';\n\nvar viewManagement = mixin({\n init() {\n this.viewMap = new WeakMap();\n },\n extractView(structure, arg, onError = throwError) {\n const { type, byteSize, constructor } = structure;\n let dv;\n // not using instanceof just in case we're getting objects created in other contexts\n const tag = arg?.[Symbol.toStringTag];\n if (tag) {\n if (tag === 'DataView') {\n // capture relationship between the view and its buffer\n dv = this.registerView(arg);\n } else if (tag === 'ArrayBuffer') {\n dv = this.obtainView(arg, 0, arg.byteLength);\n } else if ((tag && tag === constructor[TYPED_ARRAY]?.name) || (tag === 'Uint8ClampedArray' && constructor[TYPED_ARRAY] === Uint8Array)) {\n dv = this.obtainView(arg.buffer, arg.byteOffset, arg.byteLength);\n } else ;\n }\n if (!dv) {\n const memory = arg?.[MEMORY];\n if (memory) {\n // arg a Zig data object\n const { constructor, instance: { members: [ member ] } } = structure;\n if (isCompatibleInstanceOf(arg, constructor)) {\n // same type, no problem\n return memory;\n } else {\n if (isArrayLike(type)) {\n // make sure the arg has the same type of elements\n const { byteSize: elementSize, structure: { constructor: Child } } = member;\n const number = findElements(arg, Child);\n if (number !== undefined) {\n if (type === StructureType.Slice || number * elementSize === byteSize) {\n return memory;\n } else {\n throw new ArrayLengthMismatch(structure, null, arg);\n }\n }\n }\n }\n }\n }\n if (dv) {\n if (byteSize !== undefined) {\n checkDataViewSize(dv, structure);\n }\n } else {\n onError?.(structure, arg);\n }\n return dv;\n },\n assignView(target, dv, structure, copy, allocator) {\n const { byteSize, type } = structure;\n const elementSize = byteSize ?? 1;\n if (!target[MEMORY]) {\n if (byteSize !== undefined) {\n checkDataViewSize(dv, structure);\n }\n const len = dv.byteLength / elementSize;\n const source = { [MEMORY]: dv };\n target.constructor[SENTINEL]?.validateData?.(source, len);\n if (allocator) {\n // need to copy when target object is in Zig memory\n copy = true;\n }\n target[SHAPE](copy ? null : dv, len, allocator);\n if (copy) {\n target[COPY](source);\n }\n } else {\n const byteLength = (type === StructureType.Slice) ? elementSize * target.length : elementSize;\n if (dv.byteLength !== byteLength) {\n throw new BufferSizeMismatch(structure, dv, target);\n }\n const source = { [MEMORY]: dv };\n target.constructor[SENTINEL]?.validateData?.(source, target.length);\n target[COPY](source);\n }\n },\n findViewAt(buffer, offset, len) {\n let entry = this.viewMap.get(buffer);\n let existing;\n if (entry) {\n if (entry instanceof DataView) {\n // only one view created thus far--see if that's the matching one\n if (entry.byteOffset === offset && entry.byteLength === len) {\n existing = entry;\n entry = null;\n } else {\n // no, need to replace the entry with a hash keyed by `offset:len`\n const prev = entry;\n const prevKey = `${prev.byteOffset}:${prev.byteLength}`;\n entry = new Map([ [ prevKey, prev ] ]);\n this.viewMap.set(buffer, entry);\n }\n } else {\n existing = entry.get(`${offset}:${len}`);\n }\n }\n {\n if (existing?.[ZIG]?.address === usizeInvalid) {\n // view was of previously freed memory\n existing = null;\n }\n }\n return { existing, entry };\n },\n obtainView(buffer, offset, len) {\n const { existing, entry } = this.findViewAt(buffer, offset, len);\n let dv;\n if (existing) {\n return existing;\n }\n dv = new DataView(buffer, offset, len);\n if (entry) {\n entry.set(`${offset}:${len}`, dv);\n } else {\n // just one view of this buffer for now\n this.viewMap.set(buffer, dv);\n }\n {\n if (buffer === this.memory?.buffer || buffer === this.usizeMaxBuffer) {\n dv[ZIG] = { address: offset, len };\n }\n return dv;\n }\n },\n registerView(dv) {\n if (!dv[ZIG]) {\n const { buffer, byteOffset, byteLength } = dv;\n const { existing, entry } = this.findViewAt(buffer, byteOffset, byteLength);\n if (existing) {\n // return existing view instead of this one\n return existing;\n } else if (entry) {\n entry.set(`${byteOffset}:${byteLength}`, dv);\n } else {\n this.viewMap.set(buffer, dv);\n }\n }\n return dv;\n },\n allocateMemory(len, align = 0, allocator = null) {\n return allocator?.alloc?.(len, align) ?? this.allocateJSMemory(len, align);\n },\n ...({\n allocateJSMemory(len, align) {\n // alignment doesn't matter since memory always needs to be shadowed\n return this.obtainView(new ArrayBuffer(len), 0, len);\n },\n restoreView(dv) {\n const zig = dv?.[ZIG];\n if (zig?.len > 0 && dv.buffer.byteLength === 0) {\n dv = this.obtainZigView(zig.address, zig.len);\n if (zig.align) {\n dv[ZIG].align = zig.align;\n }\n }\n return dv;\n },\n defineRestorer() {\n const thisEnv = this;\n return {\n value() {\n const dv = this[MEMORY];\n const newDV = thisEnv.restoreView(dv);\n if (dv !== newDV) {\n const target = this[CONST_TARGET] ?? this;\n target[MEMORY] = newDV;\n // pointers are referenced by their proxies in the cache\n target.constructor[CACHE]?.save?.(newDV, target[PROXY] ?? target);\n return true;\n } else {\n return false;\n }\n },\n }\n },\n } ),\n});\n\nfunction checkDataViewSize(dv, structure) {\n const { byteSize, type } = structure;\n const isSizeMatching = type === StructureType.Slice\n ? dv.byteLength % byteSize === 0\n : dv.byteLength === byteSize;\n if (!isSizeMatching) {\n throw new BufferSizeMismatch(structure, dv);\n }\n}\n\nfunction isArrayLike(type) {\n return type === StructureType.Array || type === StructureType.Vector || type === StructureType.Slice;\n}\n\nfunction throwError(structure) {\n throw new BufferExpected(structure);\n}\n\nexport { checkDataViewSize, viewManagement as default };\n","import { mixin } from '../environment.js';\nimport { throwReadOnly } from '../errors.js';\nimport { POINTER, ARRAY, CONST_TARGET } from '../symbols.js';\n\nvar writeProtection = mixin({\n makeReadOnly(object) {\n protect(object);\n }\n});\n\nconst gp = Object.getOwnPropertyDescriptors;\nconst df = Object.defineProperty;\n\nfunction protect(object) {\n const pointer = object[POINTER];\n if (pointer) {\n protectProperties(pointer, [ 'length' ]);\n } else {\n const array = object[ARRAY];\n if (array) {\n protectProperties(array);\n protectElements(array);\n } else {\n protectProperties(object);\n }\n }\n}\n\nfunction protectProperties(object, exclude = []) {\n const descriptors = gp(object.constructor.prototype);\n for (const [ name, descriptor ] of Object.entries(descriptors)) {\n if (descriptor.set && !exclude.includes(name)) {\n descriptor.set = throwReadOnly;\n df(object, name, descriptor);\n }\n }\n df(object, CONST_TARGET, { value: object });\n}\n\nfunction protectElements(array) {\n df(array, 'set', { value: throwReadOnly });\n const get = array.get;\n const getReadOnly = function(index) {\n const element = get.call(this, index);\n if (element?.[CONST_TARGET] === null) {\n protect(element);\n }\n return element;\n };\n df(array, 'get', { value: getReadOnly });\n}\n\nexport { writeProtection as default };\n","import { defineEnvironment } from './environment.js';\n\nfunction createEnvironment() {\n // define Environment class, incorporating methods and properties in imported mixins\n const Env = defineEnvironment();\n return new Env();\n}\n\nexport { createEnvironment };\n","import { mixin } from '../environment.js';\nimport { ARRAY } from '../symbols.js';\nimport { defineValue, getErrorHandler } from '../utils.js';\n\nvar forArray = mixin({\n defineArrayEntries() {\n return defineValue(getArrayEntries);\n },\n defineArrayIterator() {\n return defineValue(getArrayIterator);\n }\n});\n\nfunction getArrayIterator() {\n const self = this[ARRAY] ?? this;\n const length = this.length;\n let index = 0;\n return {\n next() {\n let value, done;\n if (index < length) {\n const current = index++;\n value = self.get(current);\n done = false;\n } else {\n done = true;\n }\n return { value, done };\n },\n };\n}\n\nfunction getArrayEntriesIterator(options) {\n const handleError = getErrorHandler(options);\n const self = this[ARRAY] ?? this;\n const length = this.length;\n let index = 0;\n return {\n next() {\n let value, done;\n if (index < length) {\n const current = index++;\n value = [ current, handleError(() => self.get(current)) ];\n done = false;\n } else {\n done = true;\n }\n return { value, done };\n },\n };\n}\n\nfunction getArrayEntries(options) {\n return {\n [Symbol.iterator]: getArrayEntriesIterator.bind(this, options),\n length: this.length,\n };\n}\n\nexport { forArray as default };\n","import { mixin } from '../environment.js';\nimport { PROPS } from '../symbols.js';\nimport { defineValue, getErrorHandler } from '../utils.js';\n\nvar forStruct = mixin({\n defineStructEntries() {\n return defineValue(getStructEntries);\n },\n defineStructIterator() {\n return defineValue(getStructIterator);\n }\n});\n\nfunction getStructEntries(options) {\n return {\n [Symbol.iterator]: getStructEntriesIterator.bind(this, options),\n length: this[PROPS].length,\n };\n}\n\nfunction getStructIterator(options) {\n const entries = getStructEntries.call(this, options);\n return entries[Symbol.iterator]();\n}\n\nfunction getStructEntriesIterator(options) {\n const handleError = getErrorHandler(options);\n const self = this;\n const props = this[PROPS];\n let index = 0;\n return {\n next() {\n let value, done;\n if (index < props.length) {\n const current = props[index++];\n value = [ current, handleError(() => self[current]) ];\n done = false;\n } else {\n done = true;\n }\n return { value, done };\n },\n };\n}\n\nexport { forStruct as default };\n","import { memberNames, structureNames } from '../constants.js';\nimport { mixin } from '../environment.js';\n\nvar all = mixin({\n defineMember(member, applyTransform = true) {\n if (!member) {\n return {};\n }\n const { type, structure } = member;\n const handleName = `defineMember${memberNames[type]}`;\n const f = this[handleName];\n const descriptor = f.call(this, member);\n if (applyTransform) {\n if (structure) {\n // we use int/uint getters to access underlying values of enums and error sets;\n // the transform functions put wrapper functions around the accessors that\n // perform item lookup\n const { type } = structure;\n const handleName = `transformDescriptor${structureNames[type]}`;\n const f = this[handleName];\n if (f) {\n return f.call(this, descriptor, member);\n }\n }\n }\n return descriptor;\n },\n});\n\nfunction bindSlot(slot, { get, set }) {\n if (slot !== undefined) {\n return {\n get: function() {\n return get.call(this, slot);\n },\n set: (set)\n ? function(arg, allocator) {\n return set.call(this, slot, arg, allocator);\n }\n : undefined,\n };\n } else {\n // array accessors\n return { get, set };\n }\n}\n\nexport { bindSlot, all as default };\n","import { mixin } from '../environment.js';\nimport { TypeMismatch } from '../errors.js';\nimport { markAsSpecial, decodeBase64, encodeBase64 } from '../utils.js';\n\nvar base64 = mixin({\n defineBase64(structure) {\n const thisEnv = this;\n return markAsSpecial({\n get() {\n return encodeBase64(this.dataView);\n },\n set(str, allocator) {\n if (typeof(str) !== 'string') {\n throw new TypeMismatch('string', str);\n }\n const dv = decodeBase64(str);\n thisEnv.assignView(this, dv, structure, false, allocator);\n }\n });\n },\n});\n\nexport { base64 as default };\n","import { mixin } from '../environment.js';\n\nvar bool = mixin({\n defineMemberBool(member) {\n return this.defineMemberUsing(member, this.getAccessor);\n },\n});\n\nexport { bool as default };\n","import { mixin } from '../environment.js';\nimport { TypeMismatch } from '../errors.js';\nimport { markAsSpecial } from '../utils.js';\n\nvar clampedArray = mixin({\n defineClampedArray(structure) {\n const thisEnv = this;\n const ClampedArray = Uint8ClampedArray;\n return markAsSpecial({\n get() {\n const ta = this.typedArray;\n return new ClampedArray(ta.buffer, ta.byteOffset, ta.length);\n },\n set(ta, allocator) {\n if (ta?.[Symbol.toStringTag] !== ClampedArray.name) {\n throw new TypeMismatch(ClampedArray.name, ta);\n }\n const dv = new DataView(ta.buffer, ta.byteOffset, ta.byteLength);\n thisEnv.assignView(this, dv, structure, true, allocator);\n },\n });\n },\n});\n\nexport { clampedArray as default };\n","import { mixin } from '../environment.js';\nimport { TypeMismatch } from '../errors.js';\nimport { RESTORE, MEMORY } from '../symbols.js';\nimport { markAsSpecial } from '../utils.js';\n\nvar dataView = mixin({\n defineDataView(structure) {\n const thisEnv = this;\n return markAsSpecial({\n get() {\n {\n this[RESTORE]?.();\n }\n const dv = this[MEMORY];\n return dv;\n },\n set(dv, allocator) {\n if (dv?.[Symbol.toStringTag] !== 'DataView') {\n throw new TypeMismatch('DataView', dv);\n }\n thisEnv.assignView(this, dv, structure, true, allocator);\n },\n });\n },\n});\n\nexport { dataView as default };\n","import { mixin } from '../environment.js';\n\nvar float = mixin({\n defineMemberFloat(member) {\n return this.defineMemberUsing(member, this.getAccessor);\n },\n});\n\nexport { float as default };\n","import { MemberFlag, StructureFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { throwReadOnly } from '../errors.js';\nimport { SLOTS, VIVIFICATE, INITIALIZE } from '../symbols.js';\nimport { bindSlot } from './all.js';\n\nvar object = mixin({\n defineMemberObject(member) {\n return bindSlot(member.slot, {\n get: (member.flags & MemberFlag.IsString)\n ? getString\n : (member.structure.flags & StructureFlag.HasValue) ? getValue : getObject,\n set: (member.flags & MemberFlag.IsReadOnly) ? throwReadOnly : setValue,\n });\n }\n});\n\nfunction getValue(slot) {\n return getObject.call(this, slot).$;\n}\n\nfunction getObject(slot) {\n return this[SLOTS][slot] ?? this[VIVIFICATE](slot);\n}\n\nfunction getString(slot) {\n const retval = getObject.call(this, slot).$;\n return (retval) ? retval.string : retval;\n}\n\nfunction setValue(slot, value, allocator) {\n const object = getObject.call(this, slot);\n object[INITIALIZE](value, allocator);\n}\n\nexport { object as default };\n","import { mixin } from '../environment.js';\nimport { replaceRangeError } from '../errors.js';\nimport { MEMORY, RESTORE } from '../symbols.js';\n\nvar primitive = mixin({\n ...({\n defineMemberUsing(member, getAccessor) {\n const { littleEndian } = this;\n const { bitOffset, byteSize } = member;\n const getter = getAccessor.call(this, 'get', member);\n const setter = getAccessor.call(this, 'set', member);\n if (bitOffset !== undefined) {\n const offset = bitOffset >> 3;\n return {\n get: function getValue() {\n try {\n return getter.call(this[MEMORY], offset, littleEndian);\n } catch (err) {\n if (err instanceof TypeError && this[RESTORE]?.()) {\n return getter.call(this[MEMORY], offset, littleEndian);\n } else {\n throw err;\n }\n }\n },\n set: function setValue(value) {\n try {\n return setter.call(this[MEMORY], offset, value, littleEndian);\n } catch (err) {\n if (err instanceof TypeError && this[RESTORE]?.()) {\n return setter.call(this[MEMORY], offset, value, littleEndian);\n } else {\n throw err;\n }\n }\n }\n }\n } else {\n return {\n get: function getElement(index) {\n try {\n return getter.call(this[MEMORY], index * byteSize, littleEndian);\n } catch (err) {\n if (err instanceof TypeError && this[RESTORE]?.()) {\n return getter.call(this[MEMORY], index * byteSize, littleEndian);\n } else {\n throw replaceRangeError(member, index, err);\n }\n }\n },\n set: function setElement(index, value) {\n try {\n return setter.call(this[MEMORY], index * byteSize, value, littleEndian);\n } catch (err) {\n if (err instanceof TypeError && this[RESTORE]?.()) {\n return setter.call(this[MEMORY], index * byteSize, value, littleEndian);\n } else {\n throw replaceRangeError(member, index, err);\n }\n }\n },\n }\n }\n },\n } ),\n});\n\nexport { primitive as default };\n","import { mixin } from '../environment.js';\nimport { TypeMismatch } from '../errors.js';\nimport { SENTINEL } from '../symbols.js';\nimport { markAsSpecial, encodeText, decodeText } from '../utils.js';\n\nvar string = mixin({\n defineString(structure) {\n const thisEnv = this;\n const { byteSize } = structure.instance.members[0];\n const encoding = `utf-${byteSize * 8}`;\n return markAsSpecial({\n get() {\n let str = decodeText(this.typedArray, encoding);\n const sentinelValue = this.constructor[SENTINEL]?.value;\n if (sentinelValue !== undefined && str.charCodeAt(str.length - 1) === sentinelValue) {\n str = str.slice(0, -1);\n }\n return str;\n },\n set(str, allocator) {\n if (typeof(str) !== 'string') {\n throw new TypeMismatch('string', str);\n }\n const sentinelValue = this.constructor[SENTINEL]?.value;\n if (sentinelValue !== undefined && str.charCodeAt(str.length - 1) !== sentinelValue) {\n str += String.fromCharCode(sentinelValue);\n }\n const ta = encodeText(str, encoding);\n const dv = new DataView(ta.buffer);\n thisEnv.assignView(this, dv, structure, false, allocator);\n },\n });\n },\n});\n\nexport { string as default };\n","import { mixin } from '../environment.js';\nimport { normalizeObject } from './value-of.js';\n\nvar toJson = mixin({\n defineToJSON() {\n return {\n value() {\n return normalizeObject(this, true);\n },\n };\n },\n});\n\nexport { toJson as default };\n","import { mixin } from '../environment.js';\nimport { throwReadOnly } from '../errors.js';\nimport { SLOTS } from '../symbols.js';\nimport { bindSlot } from './all.js';\n\nvar type = mixin({\n defineMemberType(member, env) {\n const { slot } = member;\n return bindSlot(slot, {\n get(slot) {\n // unsupported types will have undefined structure\n const structure = this[SLOTS][slot];\n return structure?.constructor;\n },\n set: throwReadOnly,\n });\n }\n});\n\nexport { type as default };\n","import { mixin } from '../environment.js';\nimport { TypeMismatch } from '../errors.js';\nimport { markAsSpecial } from '../utils.js';\n\nvar typedArray = mixin({\n defineTypedArray(structure) {\n const thisEnv = this;\n const TypedArray = this.getTypedArray(structure); // (from mixin \"structures/all\")\n return markAsSpecial({\n get() {\n const dv = this.dataView;\n const length = dv.byteLength / TypedArray.BYTES_PER_ELEMENT;\n return new TypedArray(dv.buffer, dv.byteOffset, length);\n },\n set(ta, allocator) {\n if (ta?.[Symbol.toStringTag] !== TypedArray.name) {\n throw new TypeMismatch(TypedArray.name, ta);\n }\n const dv = new DataView(ta.buffer, ta.byteOffset, ta.byteLength);\n thisEnv.assignView(this, dv, structure, true, allocator);\n },\n });\n },\n});\n\nexport { typedArray as default };\n","import { mixin } from '../environment.js';\n\nvar uint = mixin({\n defineMemberUint(member) {\n let getAccessor = this.getAccessor;\n if (this.runtimeSafety) {\n getAccessor = this.addRuntimeCheck(getAccessor);\n }\n getAccessor = this.addIntConversion(getAccessor);\n return this.defineMemberUsing(member, getAccessor);\n },\n});\n\nexport { uint as default };\n","import { StructureType, StructFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { TYPE, ENTRIES, FLAGS } from '../symbols.js';\nimport { getErrorHandler } from '../utils.js';\n\nvar valueOf = mixin({\n defineValueOf() {\n return {\n value() {\n return normalizeObject(this, false);\n },\n };\n },\n});\n\nconst INT_MAX = BigInt(Number.MAX_SAFE_INTEGER);\nconst INT_MIN = BigInt(Number.MIN_SAFE_INTEGER);\n\nfunction normalizeObject(object, forJSON) {\n const options = { error: (forJSON) ? 'return' : 'throw' };\n const handleError = getErrorHandler(options);\n const resultMap = new Map();\n const process = function(value) {\n // handle type (i.e. constructor) like a struct\n const type = (typeof(value) === 'function') ? StructureType.Struct : value?.constructor?.[TYPE];\n if (type === undefined) {\n if (forJSON) {\n if (typeof(value) === 'bigint' && INT_MIN <= value && value <= INT_MAX) {\n return Number(value);\n } else if (value instanceof Error) {\n return { error: value.message };\n }\n }\n return value;\n }\n let result = resultMap.get(value);\n if (result === undefined) {\n let entries;\n switch (type) {\n case StructureType.Struct:\n entries = value[ENTRIES](options);\n result = (value.constructor[FLAGS] & StructFlag.IsTuple) ? [] : {};\n break;\n case StructureType.Union:\n entries = value[ENTRIES](options);\n result = {};\n break;\n case StructureType.Array:\n case StructureType.Vector:\n case StructureType.Slice:\n entries = value[ENTRIES]();\n result = [];\n break;\n case StructureType.Pointer:\n try {\n result = value['*'];\n } catch (err) {\n result = Symbol.for('inaccessible');\n }\n break;\n case StructureType.Enum:\n result = handleError(() => String(value));\n break;\n case StructureType.Opaque:\n result = {};\n break;\n default:\n result = handleError(() => value.$);\n }\n result = process(result);\n resultMap.set(value, result);\n if (entries) {\n for (const [ key, child ] of entries) {\n result[key] = process(child);\n }\n }\n }\n return result;\n };\n return process(object);\n}\n\nexport { valueOf as default, normalizeObject };\n","import { mixin } from '../environment.js';\nimport { NotUndefined, OutOfBound } from '../errors.js';\n\nvar _void = mixin({\n defineMemberVoid(member, env) {\n const { bitOffset } = member;\n return {\n get() {\n return undefined;\n },\n set: (bitOffset !== undefined)\n ? function(value) {\n if (value !== undefined) {\n throw new NotUndefined(member);\n }\n }\n : function(index, value) {\n if (value !== undefined) {\n throw new NotUndefined(member);\n }\n if (index < 0 || index >= this.length) {\n throw new OutOfBound(member, index);\n }\n },\n };\n }\n});\n\nexport { _void as default };\n","import { StructureType, MemberType, MemberFlag, structureNames, StructureFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { NoProperty, MissingInitializers, NoInitializer } from '../errors.js';\nimport { KEYS, SETTERS, MEMORY, COPY, SLOTS, CACHE, RESTORE, PROPS, ENTRIES, TYPED_ARRAY, FLAGS, TYPE, SIZE, ALIGN, ENVIRONMENT, SIGNATURE, STRING_RETVAL, SHAPE, INITIALIZE, CAST, RESTRICT, FINALIZE, UPDATE, CONST_TARGET } from '../symbols.js';\nimport { ObjectCache, defineProperty, defineValue, defineProperties } from '../utils.js';\n\nvar all = mixin({\n defineStructure(structure) {\n const {\n type,\n byteSize,\n } = structure;\n const handlerName = `define${structureNames[type]}`;\n const f = this[handlerName];\n // default discriptors\n const keys = [];\n const setters = {};\n const descriptors = {\n dataView: this.defineDataView(structure),\n base64: this.defineBase64(structure),\n toJSON: this.defineToJSON(),\n valueOf: this.defineValueOf(),\n [CONST_TARGET]: { value: null },\n [SETTERS]: defineValue(setters),\n [KEYS]: defineValue(keys),\n // add memory copier (from mixin \"memory/copying\")\n [COPY]: this.defineCopier(byteSize),\n ...({\n // add method for recoverng from array detachment\n [RESTORE]: this.defineRestorer(),\n } ),\n };\n const constructor = structure.constructor = f.call(this, structure, descriptors);\n for (const [ name, descriptor ] of Object.entries(descriptors)) {\n const s = descriptor?.set;\n if (s && !setters[name] && name !== '$') {\n setters[name] = s;\n keys.push(name);\n }\n }\n defineProperties(constructor.prototype, descriptors);\n return constructor;\n },\n finalizeStructure(structure) {\n const {\n name,\n type,\n constructor,\n align,\n byteSize,\n flags,\n signature,\n static: { members, template },\n } = structure;\n const props = [];\n const staticDescriptors = {\n name: defineValue(name),\n toJSON: this.defineToJSON(),\n valueOf: this.defineValueOf(),\n [SIGNATURE]: defineValue(signature),\n [ENVIRONMENT]: defineValue(this),\n [ALIGN]: defineValue(align),\n [SIZE]: defineValue(byteSize),\n [TYPE]: defineValue(type),\n [FLAGS]: defineValue(flags),\n [PROPS]: defineValue(props),\n [TYPED_ARRAY]: defineValue(this.getTypedArray(structure)),\n [Symbol.iterator]: this.defineStructIterator(),\n [ENTRIES]: this.defineStructEntries(),\n [PROPS]: defineValue(props),\n };\n const descriptors = {\n [Symbol.toStringTag]: defineValue(name),\n };\n for (const member of members) {\n const { name, slot, flags } = member;\n if (member.structure.type === StructureType.Function) {\n let fn = template[SLOTS][slot];\n if (flags & MemberFlag.IsString) {\n fn[STRING_RETVAL] = true;\n }\n staticDescriptors[name] = defineValue(fn);\n // provide a name if one isn't assigned yet\n if (!fn.name) {\n defineProperty(fn, 'name', defineValue(name));\n }\n // see if it's a getter or setter\n const [ accessorType, propName ] = /^(get|set)\\s+([\\s\\S]+)/.exec(name)?.slice(1) ?? [];\n const argRequired = (accessorType === 'get') ? 0 : 1;\n if (accessorType && fn.length === argRequired) {\n staticDescriptors[propName] ||= {};\n const descriptor = staticDescriptors[propName];\n descriptor[accessorType] = fn;\n }\n // see if it's a method\n if (member.flags & MemberFlag.IsMethod) {\n const method = function(...args) {\n try {\n return fn(this, ...args);\n } catch (err) {\n // adjust argument index/count\n err[UPDATE]?.(1);\n throw err;\n }\n };\n defineProperties(method, {\n name: defineValue(name),\n length: defineValue(fn.length - 1),\n });\n descriptors[name] = defineValue(method);\n if (accessorType && method.length === argRequired) {\n const descriptor = descriptors[propName] ||= {};\n descriptor[accessorType] = method;\n }\n }\n } else {\n staticDescriptors[name] = this.defineMember(member);\n props.push(name);\n }\n }\n // static variable/constants are stored in slots\n staticDescriptors[SLOTS] = (props.length > 0) && defineValue(template[SLOTS]);\n const handlerName = `finalize${structureNames[type]}`;\n const f = this[handlerName];\n if (f?.call(this, structure, staticDescriptors, descriptors) !== false) {\n defineProperties(constructor.prototype, descriptors);\n defineProperties(constructor, staticDescriptors);\n }\n },\n createConstructor(structure, handlers = {}) {\n const {\n type,\n byteSize,\n align,\n flags,\n instance: { members, template },\n } = structure;\n const { onCastError } = handlers;\n // comptime fields are stored in the instance template's slots\n let comptimeFieldSlots;\n if (template?.[SLOTS]) {\n const comptimeMembers = members.filter(m => m.flags & MemberFlag.IsReadOnly);\n if (comptimeMembers.length > 0) {\n comptimeFieldSlots = comptimeMembers.map(m => m.slot);\n }\n }\n const cache = new ObjectCache();\n const thisEnv = this;\n const constructor = function(arg, options = {}) {\n const {\n allocator,\n } = options;\n const creating = this instanceof constructor;\n let self, dv;\n if (creating) {\n if (arguments.length === 0) {\n throw new NoInitializer(structure);\n }\n self = this;\n if (flags & StructureFlag.HasSlot) {\n self[SLOTS] = {};\n }\n if (SHAPE in self) {\n // provided by defineStructureSlice(); the slice is different from other structures\n // as it does not have a zig size; memory is allocated by the slice initializer\n // based on the argument given\n self[INITIALIZE](arg, allocator);\n dv = self[MEMORY];\n } else {\n // don't use allocator to create storage for pointer\n const a = (type !== StructureType.Pointer) ? allocator : null;\n self[MEMORY] = dv = thisEnv.allocateMemory(byteSize, align, a);\n }\n } else {\n if (CAST in constructor) {\n // casting from number, string, etc.\n self = constructor[CAST].call(this, arg, options);\n if (self !== false) {\n return self;\n }\n }\n // look for buffer\n dv = thisEnv.extractView(structure, arg, onCastError);\n if (self = cache.find(dv)) {\n return self;\n }\n self = Object.create(constructor.prototype);\n if (SHAPE in self) {\n thisEnv.assignView(self, dv, structure, false, false);\n } else {\n self[MEMORY] = dv;\n }\n if (flags & StructureFlag.HasSlot) {\n self[SLOTS] = {};\n }\n }\n if (comptimeFieldSlots) {\n for (const slot of comptimeFieldSlots) {\n self[SLOTS][slot] = template[SLOTS][slot];\n }\n }\n self[RESTRICT]?.();\n if (creating) {\n // initialize object unless that's done already\n if (!(SHAPE in self)) {\n self[INITIALIZE](arg, allocator);\n }\n }\n if (FINALIZE in self) {\n self = self[FINALIZE]();\n }\n return cache.save(dv, self);\n };\n defineProperty(constructor, CACHE, defineValue(cache));\n {\n if (template?.[MEMORY]) {\n defineProperty(template, RESTORE, this.defineRestorer());\n }\n }\n return constructor;\n },\n createApplier(structure) {\n const { instance: { template } } = structure;\n return function(arg, allocator) {\n const argKeys = Object.keys(arg);\n const keys = this[KEYS];\n const setters = this[SETTERS];\n // don't accept unknown props\n for (const key of argKeys) {\n if (!(key in setters)) {\n throw new NoProperty(structure, key);\n }\n }\n // checking each name so that we would see inenumerable initializers as well\n let normalCount = 0;\n let normalFound = 0;\n let normalMissing = 0;\n let specialFound = 0;\n for (const key of keys) {\n const set = setters[key];\n if (set.special) {\n if (key in arg) {\n specialFound++;\n }\n } else {\n normalCount++;\n if (key in arg) {\n normalFound++;\n } else if (set.required) {\n normalMissing++;\n }\n }\n }\n if (normalMissing !== 0 && specialFound === 0) {\n const missing = keys.filter(k => setters[k].required && !(k in arg));\n throw new MissingInitializers(structure, missing);\n }\n if (specialFound + normalFound > argKeys.length) {\n // some props aren't enumerable\n for (const key of keys) {\n if (key in arg) {\n if (!argKeys.includes(key)) {\n argKeys.push(key);\n }\n }\n }\n }\n // apply default values unless all properties are initialized\n if (normalFound < normalCount && specialFound === 0) {\n if (template) {\n if (template[MEMORY]) {\n this[COPY](template);\n }\n }\n }\n for (const key of argKeys) {\n const set = setters[key];\n set.call(this, arg[key], allocator);\n }\n return argKeys.length;\n };\n },\n getTypedArray(structure) {\n const { type, instance } = structure;\n if (type !== undefined && instance) {\n const [ member ] = instance.members;\n switch (type) {\n case StructureType.Enum:\n case StructureType.ErrorSet:\n case StructureType.Primitive: {\n const { byteSize, type } = member;\n const intType = (type === MemberType.Float)\n ? 'Float'\n : (type === MemberType.Int) ? 'Int' : 'Uint';\n const prefix = (byteSize > 4 && type !== MemberType.Float) ? 'Big' : '';\n const arrayName = prefix + intType + (byteSize * 8) + 'Array';\n return globalThis[arrayName];\n } case StructureType.Array:\n case StructureType.Slice:\n case StructureType.Vector:\n return this.getTypedArray(member.structure);\n }\n }\n },\n});\n\nexport { all as default };\n","import { ArgStructFlag, StructureFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { ArgumentCountMismatch } from '../errors.js';\nimport { THROWING, VIVIFICATE, VISIT, RETURN, ALLOCATOR, COPY, MEMORY, SLOTS, FINALIZE } from '../symbols.js';\nimport { defineValue } from '../utils.js';\n\nvar argStruct = mixin({\n defineArgStruct(structure, descriptors) {\n const {\n flags,\n byteSize,\n align,\n length,\n instance: { members },\n } = structure;\n const thisEnv = this;\n const argMembers = members.slice(1);\n const constructor = function(args, argAlloc) {\n const creating = this instanceof constructor;\n let self, dv;\n if (creating) {\n self = this;\n dv = thisEnv.allocateMemory(byteSize, align);\n } else {\n self = Object.create(constructor.prototype);\n dv = args;\n }\n self[MEMORY] = dv;\n if (flags & StructureFlag.HasSlot) {\n self[SLOTS] = {};\n }\n if (creating) {\n let options;\n if (flags & ArgStructFlag.HasOptions) {\n if (args.length === length + 1) {\n options = args.pop();\n }\n }\n // length holds the minimum number of arguments\n if (args.length !== length) {\n throw new ArgumentCountMismatch(length, args.length);\n }\n if (flags & ArgStructFlag.IsAsync) {\n self[FINALIZE] = null;\n }\n thisEnv.copyArguments(self, args, argMembers, options, argAlloc);\n } else {\n return self;\n }\n };\n for (const member of members) {\n descriptors[member.name] = this.defineMember(member);\n }\n const retvalSetter = descriptors.retval.set;\n descriptors.length = defineValue(argMembers.length);\n descriptors[VIVIFICATE] = (flags & StructureFlag.HasObject) && this.defineVivificatorStruct(structure);\n descriptors[VISIT] = (flags & StructureFlag.HasPointer) && this.defineVisitorArgStruct(members);\n descriptors[RETURN] = defineValue(function(value) {\n // pass allocator associated with argument to setter\n retvalSetter.call(this, value, this[ALLOCATOR]);\n });\n descriptors[Symbol.iterator] = this.defineArgIterator?.(argMembers);\n {\n descriptors[COPY] = this.defineRetvalCopier(members[0]);\n }\n return constructor;\n },\n finalizeArgStruct(structure, staticDescriptors) {\n const { flags } = structure;\n staticDescriptors[THROWING] = defineValue(!!(flags & ArgStructFlag.IsThrowing));\n },\n});\n\nexport { argStruct as default };\n","import { mixin } from '../environment.js';\nimport { PROXY, ARRAY, RESTORE, MEMORY, SLOTS, PARENT } from '../symbols.js';\nimport { defineProperties } from '../utils.js';\n\nvar arrayLike = mixin({\n defineFinalizerArray({ get, set }) {\n return {\n value() {\n const value = new Proxy(this, proxyHandlers);\n defineProperties(this, {\n [PROXY]: { value },\n get: { value: get.bind(this) },\n set: set && { value: set.bind(this) },\n });\n return value;\n },\n };\n },\n defineVivificatorArray(structure) {\n const { instance: { members: [ member ]} } = structure;\n const { byteSize, structure: elementStructure } = member;\n const thisEnv = this;\n const value = function getChild(index) {\n const { constructor } = elementStructure;\n {\n this[RESTORE]?.();\n }\n const dv = this[MEMORY];\n const parentOffset = dv.byteOffset;\n const offset = parentOffset + byteSize * index;\n const childDV = thisEnv.obtainView(dv.buffer, offset, byteSize);\n const object = this[SLOTS][index] = constructor.call(PARENT, childDV);\n return object;\n };\n return { value };\n },\n});\n\nconst proxyHandlers = {\n get(array, name) {\n const index = (typeof(name) === 'symbol') ? 0 : name|0;\n if (index !== 0 || index == name) {\n return array.get(index);\n } else if (name === ARRAY) {\n return array;\n } else {\n return array[name];\n }\n },\n set(array, name, value) {\n const index = (typeof(name) === 'symbol') ? 0 : name|0;\n if (index !== 0 || index == name) {\n array.set(index, value);\n } else {\n array[name] = value;\n }\n return true;\n },\n deleteProperty(array, name) {\n const index = (typeof(name) === 'symbol') ? 0 : name|0;\n if (index !== 0 || index == name) {\n return false;\n } else {\n delete array[name];\n return true;\n }\n },\n has(array, name) {\n const index = (typeof(name) === 'symbol') ? 0 : name|0;\n if (index !== 0 || index == name) {\n return (index >= 0 && index < array.length);\n } else {\n return array[name];\n }\n },\n ownKeys(array) {\n const keys = [];\n for (let i = 0, len = array.length; i < len; i++) {\n keys.push(`${i}`);\n }\n keys.push('length', PROXY);\n return keys;\n },\n getOwnPropertyDescriptor(array, name) {\n const index = (typeof(name) === 'symbol') ? 0 : name|0;\n if (index !== 0 || index == name) {\n if (index >= 0 && index < array.length) {\n return { value: array.get(index), enumerable: true, writable: true, configurable: true };\n }\n } else {\n return Object.getOwnPropertyDescriptor(array, name);\n }\n },\n};\n\nexport { arrayLike as default };\n","import { ArrayFlag, StructureFlag, VisitorFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { ArrayLengthMismatch, InvalidArrayInitializer } from '../errors.js';\nimport { SENTINEL, ENTRIES, INITIALIZE, FINALIZE, VIVIFICATE, VISIT, COPY } from '../symbols.js';\nimport { defineValue, getProxy, isCompatibleInstanceOf, transformIterable } from '../utils.js';\n\nvar array = mixin({\n defineArray(structure, descriptors) {\n const {\n length,\n instance: { members: [ member ] },\n flags,\n } = structure;\n const propApplier = this.createApplier(structure);\n const descriptor = this.defineMember(member);\n const { set } = descriptor;\n const constructor = this.createConstructor(structure);\n const initializer = function(arg, allocator) {\n if (isCompatibleInstanceOf(arg, constructor)) {\n this[COPY](arg);\n if (flags & StructureFlag.HasPointer) {\n this[VISIT]('copy', VisitorFlag.Vivificate, arg);\n }\n } else {\n if (typeof(arg) === 'string' && flags & ArrayFlag.IsString) {\n arg = { string: arg };\n }\n if (arg?.[Symbol.iterator]) {\n arg = transformIterable(arg);\n if (arg.length !== length) {\n throw new ArrayLengthMismatch(structure, this, arg);\n }\n let i = 0;\n for (const value of arg) {\n set.call(this, i++, value, allocator);\n }\n } else if (arg && typeof(arg) === 'object') {\n if (propApplier.call(this, arg) === 0) {\n throw new InvalidArrayInitializer(structure, arg);\n }\n } else if (arg !== undefined) {\n throw new InvalidArrayInitializer(structure, arg);\n }\n }\n };\n descriptors.$ = { get: getProxy, set: initializer };\n descriptors.length = defineValue(length);\n descriptors.entries = descriptors[ENTRIES] = this.defineArrayEntries();\n if (flags & ArrayFlag.IsTypedArray) {\n descriptors.typedArray = this.defineTypedArray(structure);\n if (flags & ArrayFlag.IsString) {\n descriptors.string = this.defineString(structure);\n }\n if (flags & ArrayFlag.IsClampedArray) {\n descriptors.clampedArray = this.defineClampedArray(structure);\n }\n }\n descriptors[Symbol.iterator] = this.defineArrayIterator();\n descriptors[INITIALIZE] = defineValue(initializer);\n descriptors[FINALIZE] = this.defineFinalizerArray(descriptor);\n descriptors[VIVIFICATE] = (flags & StructureFlag.HasObject) && this.defineVivificatorArray(structure);\n descriptors[VISIT] = (flags & StructureFlag.HasPointer) && this.defineVisitorArray();\n return constructor;\n },\n finalizeArray(structure, staticDescriptors) {\n const {\n flags,\n instance: { members: [ member ] },\n } = structure;\n staticDescriptors.child = defineValue(member.structure.constructor);\n staticDescriptors[SENTINEL] = (flags & ArrayFlag.HasSentinel) && this.defineSentinel(structure);\n },\n});\n\nexport { array as default };\n","import { MemberType, MemberFlag, EnumFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { InvalidInitializer, EnumExpected } from '../errors.js';\nimport { SLOTS, NAME, CAST, TAG, TYPED_ARRAY, INITIALIZE } from '../symbols.js';\nimport { defineProperty, defineValue, toString } from '../utils.js';\n\nvar _enum = mixin({\n defineEnum(structure, descriptors) {\n const {\n instance: {\n members: [ member ],\n },\n } = structure;\n const descriptor = this.defineMember(member);\n const { get, set } = descriptor;\n const { get: getNumber } = this.defineMember(member, false);\n const propApplier = this.createApplier(structure);\n const expected = [ 'string', 'number', 'tagged union' ];\n const initializer = function(arg) {\n if (arg && typeof(arg) === 'object') {\n if (propApplier.call(this, arg) === 0) {\n throw new InvalidInitializer(structure, expected, arg);\n }\n } else if (arg !== undefined) {\n set.call(this, arg);\n }\n };\n const constructor = this.createConstructor(structure, {\n onCastError(structure, arg) {\n throw new InvalidInitializer(structure, expected, arg);\n }\n });\n descriptors.$ = descriptor;\n descriptors.toString = defineValue(toString);\n descriptors[Symbol.toPrimitive] = {\n value(hint) {\n switch (hint) {\n case 'string':\n case 'default':\n return this.$[NAME];\n default:\n return getNumber.call(this);\n }\n },\n };\n descriptors[INITIALIZE] = defineValue(initializer);\n return constructor;\n },\n finalizeEnum(structure, staticDescriptors) {\n const {\n flags,\n constructor,\n instance: { members: [ member ] },\n static: { members, template },\n } = structure;\n const items = template[SLOTS];\n // obtain getter/setter for accessing int values directly\n const { get, set } = this.defineMember(member, false);\n const itemsByIndex = {};\n for (const { name, flags, slot } of members) {\n if (flags & MemberFlag.IsPartOfSet) {\n const item = items[slot];\n // attach name to item so tagged union code can quickly find it\n defineProperty(item, NAME, defineValue(name));\n const index = get.call(item);\n // make item available by name \n staticDescriptors[name] = { value: item, writable: false };\n itemsByIndex[index] = item;\n }\n }\n // add cast handler allowing strings, numbers, and tagged union to be casted into enums\n staticDescriptors[CAST] = {\n value(arg) {\n if (typeof(arg) === 'string') {\n return constructor[arg];\n } else if(typeof(arg) === 'number' || typeof(arg) === 'bigint') {\n let item = itemsByIndex[arg];\n if (!item) {\n if (flags & EnumFlag.IsOpenEnded) {\n // create the item on-the-fly when enum is non-exhaustive\n item = new constructor(undefined);\n // write the value into memory\n set.call(item, arg);\n // attach the new item to the enum set\n const name = `${arg}`;\n defineProperty(item, NAME, defineValue(name));\n defineProperty(constructor, name, defineValue(item));\n itemsByIndex[arg] = item;\n }\n }\n return item;\n } else if (arg instanceof constructor) {\n return arg;\n } else if (arg?.[TAG] instanceof constructor) {\n // a tagged union, return the active tag\n return arg[TAG];\n } else {\n return false;\n }\n }\n };\n staticDescriptors[TYPED_ARRAY] = defineValue(this.getTypedArray(structure));\n },\n transformDescriptorEnum(descriptor, member) {\n const { type, structure } = member;\n if (type === MemberType.Object) {\n return descriptor;\n }\n const findEnum = function(value) {\n const { constructor } = structure;\n // the enumeration constructor returns the object for the int value\n const item = constructor(value);\n if (!item) {\n throw new EnumExpected(structure, value);\n }\n return item\n };\n const { get, set } = descriptor;\n return {\n get: (get.length === 0)\n ? function getEnum() {\n const value = get.call(this);\n return findEnum(value);\n }\n : function getEnumElement(index) {\n const value = get.call(this, index);\n return findEnum(value);\n },\n set: (set.length === 1)\n ? function setEnum(value) {\n const item = findEnum(value);\n // call Symbol.toPrimitive directly as enum can be bigint or number\n value = item[Symbol.toPrimitive]();\n set.call(this, value);\n }\n : function setEnumElement(index, value) {\n const item = findEnum(value);\n set.call(this, index, item[Symbol.toPrimitive]());\n },\n };\n },\n});\n\nexport { _enum as default };\n","import { MemberType, ErrorSetFlag, StructureType } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { isErrorJSON, InvalidInitializer, deanimalizeErrorName, NotInErrorSet, ErrorExpected } from '../errors.js';\nimport { SLOTS, PROPS, CAST, CLASS, INITIALIZE } from '../symbols.js';\nimport { defineValue, defineProperties, defineProperty } from '../utils.js';\n\nvar errorSet = mixin({\n init() {\n this.ZigError = null,\n this.globalItemsByIndex = {};\n this.globalErrorSet = null;\n },\n defineErrorSet(structure, descriptors) {\n const {\n instance: { members: [ member ] },\n byteSize,\n flags,\n } = structure;\n if (!this.ZigError) {\n // create anyerror set\n this.ZigError = class Error extends ZigErrorBase {};\n const ae = {\n type: StructureType.ErrorSet,\n flags: ErrorSetFlag.IsGlobal,\n byteSize,\n name: 'anyerror',\n instance: { members: [ member ] },\n static: { members: [], template: { SLOTS: {} } },\n };\n const es = this.defineStructure(ae);\n this.finalizeStructure(ae);\n this.globalErrorSet = es;\n }\n if (this.globalErrorSet && (flags & ErrorSetFlag.IsGlobal)) {\n return this.globalErrorSet;\n }\n const descriptor = this.defineMember(member);\n const { set } = descriptor;\n const expected = [ 'string', 'number' ];\n const propApplier = this.createApplier(structure);\n const initializer = function(arg) {\n if (arg instanceof constructor[CLASS]) {\n set.call(this, arg);\n } else if (arg && typeof(arg) === 'object' && !isErrorJSON(arg)) {\n if (propApplier.call(this, arg) === 0) {\n throw new InvalidInitializer(structure, expected, arg);\n }\n } else if (arg !== undefined) {\n set.call(this, arg);\n }\n };\n const constructor = this.createConstructor(structure, {\n onCastError(structure, arg) {\n throw new InvalidInitializer(structure, expected, arg);\n }\n });\n descriptors.$ = descriptor;\n descriptors[INITIALIZE] = defineValue(initializer);\n return constructor;\n },\n finalizeErrorSet(structure, staticDescriptors) {\n const {\n constructor,\n flags,\n instance: { members: [ member ] },\n static: { members, template },\n } = structure;\n if (this.globalErrorSet && (flags & ErrorSetFlag.IsGlobal)) {\n // already finalized\n return false;\n }\n const items = template?.[SLOTS] ?? {};\n const itemsByIndex = (flags & ErrorSetFlag.IsGlobal) ? this.globalItemsByIndex : {};\n // obtain getter/setter for accessing int values directly\n const { get } = this.defineMember(member, false);\n for (const { name, slot } of members) {\n const item = items[slot];\n // unlike enums, error objects in an error-set aren't instances of the error-set class\n // they're instance of a superclass of JavaScript's Error; here we need to extract the\n // error number from the error-set instance and create the error object, if hasn't been\n // created already for an earlier set\n const number = get.call(item);\n let error = this.globalItemsByIndex[number];\n const inGlobalSet = !!error;\n if (!error) {\n error = new this.ZigError(name, number);\n }\n // make the error object available by name\n const descriptor = defineValue(error);\n staticDescriptors[name] = descriptor;\n // make it available by error.toString() as well, so that the in operator can be used\n // to see if an error is in a set; note that the text will be prefixed with \"Error: \"\n // so it's not the same as error.message\n const stringified = `${error}`;\n staticDescriptors[stringified] = descriptor;\n itemsByIndex[number] = error;\n // add to global set\n if (!inGlobalSet) { \n defineProperties(this.globalErrorSet, {\n [name]: descriptor,\n [stringified]: descriptor,\n });\n this.globalErrorSet[PROPS].push(name);\n this.globalItemsByIndex[number] = error;\n }\n }\n // add cast handler allowing strings, numbers, and JSON object to be casted into error set\n staticDescriptors[CAST] = {\n value(arg) {\n if (typeof(arg) === 'number') {\n return itemsByIndex[arg];\n } else if (typeof(arg) === 'string') {\n return constructor[arg];\n } else if (arg instanceof constructor[CLASS]) {\n return itemsByIndex[Number(arg)];\n } else if (isErrorJSON(arg)) {\n return constructor[`Error: ${arg.error}`];\n } else if (arg instanceof Error) {\n return constructor[`${arg}`];\n } else {\n return false;\n }\n }\n };\n staticDescriptors[CLASS] = defineValue(this.ZigError);\n },\n transformDescriptorErrorSet(descriptor, member) {\n const { type, structure } = member;\n if (type === MemberType.Object) {\n return descriptor;\n }\n const findError = (value) => {\n const { constructor, flags } = structure;\n const item = constructor(value);\n if (!item) {\n if (flags & ErrorSetFlag.IsGlobal) {\n if (typeof(value) === 'number') {\n const newItem = new this.ZigError(`Unknown error: ${value}`, value);\n this.globalItemsByIndex[value] = newItem;\n defineProperty(this.globalErrorSet, `${newItem}`, defineValue(newItem));\n return newItem;\n }\n }\n if (value instanceof Error) {\n throw new NotInErrorSet(structure);\n } else {\n throw new ErrorExpected(structure, value);\n }\n }\n return item\n };\n const { get, set } = descriptor;\n return {\n get: (get.length === 0)\n ? function getError() {\n const value = get.call(this);\n return findError(value);\n }\n : function getErrorElement(index) {\n const value = get.call(this, index);\n return findError(value);\n },\n set: (set.length === 1)\n ? function setError(value) {\n const item = findError(value);\n value = Number(item);\n set.call(this, value);\n }\n : function setError(index, value) {\n const item = findError(value);\n value = Number(item);\n set.call(this, index, value);\n },\n };\n },\n});\n\nclass ZigErrorBase extends Error {\n constructor(name, number) {\n super(deanimalizeErrorName(name));\n this.number = number;\n this.stack = undefined;\n }\n\n [Symbol.toPrimitive](hint) {\n switch (hint) {\n case 'string':\n case 'default':\n return Error.prototype.toString.call(this, hint);\n default:\n return this.number;\n }\n }\n\n toJSON() {\n return { error: this.message };\n }\n}\n\nexport { errorSet as default };\n","import { MemberType, StructureFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { NotInErrorSet, isErrorJSON } from '../errors.js';\nimport { INITIALIZE, VIVIFICATE, RESET, VISIT, COPY, CLASS } from '../symbols.js';\nimport { defineValue, isCompatibleInstanceOf } from '../utils.js';\n\nvar errorUnion = mixin({\n defineErrorUnion(structure, descriptors) {\n const {\n instance: { members: [ valueMember, errorMember ] },\n flags,\n } = structure;\n const { get: getValue, set: setValue } = this.defineMember(valueMember);\n const { get: getError, set: setError } = this.defineMember(errorMember);\n const { get: getErrorNumber, set: setErrorNumber } = this.defineMember(errorMember, false);\n const get = function() {\n const errNum = getErrorNumber.call(this);\n if (errNum) {\n throw getError.call(this);\n } else {\n return getValue.call(this);\n }\n };\n const isValueVoid = valueMember.type === MemberType.Void;\n const ErrorSet = errorMember.structure.constructor;\n const clearValue = function() {\n this[RESET]();\n this[VISIT]?.('clear');\n };\n const propApplier = this.createApplier(structure);\n const initializer = function(arg, allocator) {\n if (isCompatibleInstanceOf(arg, constructor)) {\n this[COPY](arg);\n if (flags & StructureFlag.HasPointer) {\n if (!getErrorNumber.call(this)) {\n this[VISIT]('copy', 0, arg);\n }\n }\n } else if (arg instanceof ErrorSet[CLASS] && ErrorSet(arg)) {\n setError.call(this, arg);\n clearValue.call(this);\n } else if (arg !== undefined || isValueVoid) {\n try {\n // call setValue() first, in case it throws\n setValue.call(this, arg, allocator);\n setErrorNumber.call(this, 0);\n } catch (err) {\n if (arg instanceof Error) {\n const match = ErrorSet(arg) ?? ErrorSet.Unexpected;\n if (match) {\n setError.call(this, match);\n clearValue.call(this);\n } else {\n // we gave setValue a chance to see if the error is actually an acceptable value\n // now is time to throw an error\n throw new NotInErrorSet(errorMember.structure);\n }\n } else if (isErrorJSON(arg)) {\n // setValue() failed because the argument actually is an error as JSON\n setError.call(this, arg);\n clearValue.call(this);\n } else if (arg && typeof(arg) === 'object') {\n // maybe the argument contains a special property like `dataView` or `base64`\n if (propApplier.call(this, arg) === 0) {\n // propApplier() found zero prop, so it's time to throw\n throw err;\n }\n } else {\n throw err;\n }\n }\n }\n };\n const { bitOffset, byteSize } = valueMember;\n const constructor = this.createConstructor(structure);\n descriptors.$ = { get, set: initializer };\n descriptors[INITIALIZE] = defineValue(initializer);\n descriptors[VIVIFICATE] = (flags & StructureFlag.HasObject) && this.defineVivificatorStruct(structure);\n // for clear value after error union is set to an an error (from mixin \"features/data-copying\")\n descriptors[RESET] = this.defineResetter(bitOffset / 8, byteSize);\n // for operating on pointers contained in the error union\n descriptors[VISIT] = (flags & StructureFlag.HasPointer) && this.defineVisitorErrorUnion(valueMember, getErrorNumber);\n return constructor;\n },\n});\n\nexport { errorUnion as default };\n","import { StructureType } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { NoInitializer, TypeMismatch, Unsupported, NoCastingToFunction } from '../errors.js';\nimport { TYPE, ENVIRONMENT, MEMORY } from '../symbols.js';\nimport { ObjectCache, defineValue, getSelf, defineProperties } from '../utils.js';\n\nvar _function = mixin({\n defineFunction(structure, descriptors) {\n const {\n instance: { members: [ member ], template: thunk },\n static: { template: jsThunkController },\n } = structure;\n const cache = new ObjectCache();\n const { structure: { constructor: ArgStruct } } = member;\n const thisEnv = this;\n const constructor = function(arg) {\n const creating = this instanceof constructor;\n let dv;\n if (creating) {\n // creating a Zig function object from a JavaScript function\n if (arguments.length === 0) {\n throw new NoInitializer(structure);\n }\n if (typeof(arg) !== 'function') {\n throw new TypeMismatch('function', arg);\n }\n if (ArgStruct[TYPE] === StructureType.VariadicStruct || !jsThunkController) {\n throw new Unsupported();\n }\n // create an inbound thunk for function (from mixin \"features/call-marshaling-inbound\")\n dv = thisEnv.getFunctionThunk(arg, jsThunkController);\n } else {\n if (this !== ENVIRONMENT) {\n // casting from buffer to function is allowed only if request comes from the runtime\n throw new NoCastingToFunction();\n }\n // casting a memory pointing to Zig binary\n dv = arg;\n }\n let existing;\n if (existing = cache.find(dv)) {\n return existing;\n }\n const argCount = ArgStruct.prototype.length;\n const self = (creating)\n ? thisEnv.createInboundCaller(arg, ArgStruct)\n : thisEnv.createOutboundCaller(thunk, ArgStruct);\n defineProperties(self, {\n length: defineValue(argCount),\n name: defineValue(creating ? arg.name : ''),\n });\n // make self an instance of this function type\n Object.setPrototypeOf(self, constructor.prototype);\n self[MEMORY] = dv;\n cache.save(dv, self);\n return self;\n };\n // make function type a superclass of Function\n Object.setPrototypeOf(constructor.prototype, Function.prototype);\n descriptors.valueOf = descriptors.toJSON = defineValue(getSelf);\n return constructor;\n },\n finalizeFunction(structure, staticDescriptors, descriptors) {\n // don't change the tag of functions\n descriptors[Symbol.toStringTag] = undefined;\n },\n});\n\nexport { _function as default };\n","import { MemberType, OptionalFlag, StructureFlag, VisitorFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { INITIALIZE, RESET, VIVIFICATE, VISIT, COPY } from '../symbols.js';\nimport { defineValue, isCompatibleInstanceOf } from '../utils.js';\n\nvar optional = mixin({\n defineOptional(structure, descriptors) {\n const {\n instance: { members: [ valueMember, presentMember ] },\n flags,\n } = structure;\n const { get: getValue, set: setValue } = this.defineMember(valueMember);\n const { get: getPresent, set: setPresent } = this.defineMember(presentMember);\n const get = function() {\n const present = getPresent.call(this);\n if (present) {\n return getValue.call(this);\n } else {\n this[VISIT]?.('clear');\n return null;\n }\n };\n const isValueVoid = valueMember.type === MemberType.Void;\n const initializer = function(arg, allocator) {\n if (isCompatibleInstanceOf(arg, constructor)) {\n this[COPY](arg);\n if (flags & StructureFlag.HasPointer) {\n // don't bother copying pointers when it's empty\n if (getPresent.call(this)) {\n this[VISIT]('copy', VisitorFlag.Vivificate, arg);\n }\n }\n } else if (arg === null) {\n setPresent.call(this, 0);\n this[RESET]?.();\n // clear references so objects can be garbage-collected\n this[VISIT]?.('clear');\n } else if (arg !== undefined || isValueVoid) {\n // call setValue() first, in case it throws\n setValue.call(this, arg, allocator);\n if (flags & OptionalFlag.HasSelector) {\n setPresent.call(this, 1);\n } else if (flags & StructureFlag.HasPointer) {\n // since setValue() wouldn't write address into memory when the target is in\n // JS memory, we need to use setPresent() in order to write something\n // non-zero there so that we know the field is populated\n if (!getPresent.call(this)) {\n setPresent.call(this, 13);\n }\n }\n }\n };\n const constructor = structure.constructor = this.createConstructor(structure);\n const { bitOffset, byteSize } = valueMember;\n descriptors.$ = { get, set: initializer };\n // we need to clear the value portion when there's a separate bool indicating whether a value\n // is present; for optional pointers, the bool overlaps the usize holding the address; setting\n // it to false automatically clears the address\n descriptors[INITIALIZE] = defineValue(initializer);\n descriptors[RESET] = (flags & OptionalFlag.HasSelector) && this.defineResetter(bitOffset / 8, byteSize);\n descriptors[VIVIFICATE] = (flags & StructureFlag.HasObject) && this.defineVivificatorStruct(structure);\n descriptors[VISIT] = (flags & StructureFlag.HasPointer) && this.defineVisitorOptional(valueMember, getPresent);\n return constructor;\n },\n});\n\nexport { optional as default };\n","import { PointerFlag, StructureType, MemberType, PrimitiveFlag, SliceFlag, StructureFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { NoCastingToPointer, throwReadOnly, NullPointer, ConstantConstraint, ReadOnlyTarget, InvalidPointerTarget, PreviouslyFreed, InvalidSliceLength, ZigMemoryTargetRequired } from '../errors.js';\nimport { CAST, ENVIRONMENT, PARENT, LAST_LENGTH, TARGET, INITIALIZE, FINALIZE, MEMORY, SLOTS, PROXY, UPDATE, ADDRESS, LENGTH, VISIT, LAST_ADDRESS, MAX_LENGTH, POINTER, TYPE, RESTORE, CONST_TARGET, SETTERS, TYPED_ARRAY, ZIG, SENTINEL, SIZE } from '../symbols.js';\nimport { defineValue, getProxy, isCompatibleType, isCompatibleInstanceOf, usizeInvalid, findElements } from '../utils.js';\n\nvar pointer = mixin({\n definePointer(structure, descriptors) {\n const {\n flags,\n byteSize,\n instance: { members: [ member ] },\n } = structure;\n const { structure: targetStructure } = member;\n const {\n type: targetType,\n flags: targetFlags,\n byteSize: targetSize = 1\n } = targetStructure;\n // length for slice can be zero or undefined\n const addressSize = (flags & PointerFlag.HasLength) ? byteSize / 2 : byteSize;\n const { get: readAddress, set: writeAddress } = this.defineMember({\n type: MemberType.Uint,\n bitOffset: 0,\n bitSize: addressSize * 8,\n byteSize: addressSize,\n structure: { byteSize: addressSize },\n });\n const { get: readLength, set: writeLength } = (flags & PointerFlag.HasLength) ? this.defineMember({\n type: MemberType.Uint,\n bitOffset: addressSize * 8,\n bitSize: addressSize * 8,\n byteSize: addressSize,\n structure: {\n flags: PrimitiveFlag.IsSize,\n byteSize: addressSize\n },\n }) : {};\n const updateTarget = function(context, all = true, active = true) {\n if (all || this[MEMORY][ZIG]) {\n if (active) {\n const Target = constructor.child;\n const address = readAddress.call(this);\n const length = (flags & PointerFlag.HasLength)\n ? readLength.call(this)\n : (targetType === StructureType.Slice && targetFlags & SliceFlag.HasSentinel)\n ? thisEnv.findSentinel(address, Target[SENTINEL].bytes) + 1\n : 1;\n if (address !== this[LAST_ADDRESS] || length !== this[LAST_LENGTH]) {\n const dv = thisEnv.findMemory(context, address, length, Target[SIZE]);\n const newTarget = (dv) ? Target.call(ENVIRONMENT, dv) : null;\n this[SLOTS][0] = newTarget;\n this[LAST_ADDRESS] = address;\n this[LAST_LENGTH] = length;\n if (flags & PointerFlag.HasLength) {\n this[MAX_LENGTH] = null;\n }\n return newTarget;\n }\n } else {\n return this[SLOTS][0] = undefined;\n }\n }\n return this[SLOTS][0];\n };\n const setAddress = function(address) {\n writeAddress.call(this, address);\n this[LAST_ADDRESS] = address;\n };\n const sentinelCount = (targetFlags & SliceFlag.HasSentinel) ? 1 : 0;\n const setLength = (flags & PointerFlag.HasLength || targetFlags & SliceFlag.HasSentinel)\n ? function(length) {\n writeLength?.call?.(this, length - sentinelCount);\n this[LAST_LENGTH] = length;\n }\n : null;\n const getTargetObject = function() {\n const pointer = this[POINTER] ?? this;\n const empty = !pointer[SLOTS][0];\n const target = updateTarget.call(pointer, null, empty);\n if (!target) {\n if (flags & PointerFlag.IsNullable) {\n return null;\n }\n throw new NullPointer();\n }\n return (flags & PointerFlag.IsConst) ? getConstProxy(target) : target;\n };\n const setTargetObject = function(arg) {\n if (arg === undefined) {\n return;\n }\n const pointer = this[POINTER] ?? this;\n if (arg) {\n const zig = arg[MEMORY][ZIG];\n if (zig) {\n // the target sits in Zig memory--apply the change immediately\n const { address, js } = zig;\n setAddress.call(this, address);\n setLength?.call?.(this, arg.length);\n if (js) {\n // remove the fake Zig memory attributes now that we've bypassed the check\n arg[MEMORY][ZIG] = undefined;\n }\n } else {\n if (pointer[MEMORY][ZIG]) {\n throw new ZigMemoryTargetRequired();\n }\n }\n } else if (pointer[MEMORY][ZIG]) {\n setAddress.call(this, 0);\n setLength?.call?.(this, 0);\n }\n pointer[SLOTS][0] = arg ?? null;\n if (flags & PointerFlag.HasLength) {\n pointer[MAX_LENGTH] = null;\n }\n };\n const getTarget = (targetFlags & StructureFlag.HasValue)\n ? function() {\n const target = getTargetObject.call(this);\n return target.$;\n }\n : getTargetObject;\n const setTarget = (flags & PointerFlag.IsConst)\n ? throwReadOnly\n : function(value) {\n const target = getTargetObject.call(this);\n return target.$ = value;\n };\n const getTargetLength = function() {\n const target = getTargetObject.call(this);\n return (target) ? target.length : 0;\n };\n const setTargetLength = function(len) {\n len = len | 0;\n const target = getTargetObject.call(this);\n if (target) {\n if (target.length === len) {\n return;\n }\n } else {\n if (len !== 0) {\n throw new InvalidSliceLength(len, 0);\n }\n return;\n }\n {\n target[RESTORE]?.();\n }\n const dv = target[MEMORY];\n const zig = dv[ZIG];\n // determine the maximum length\n let max;\n if (!zig) {\n if (flags & PointerFlag.HasLength) {\n this[MAX_LENGTH] ||= target.length;\n max = this[MAX_LENGTH];\n } else {\n const bytesAvailable = dv.buffer.byteLength - dv.byteOffset;\n max = (bytesAvailable / targetSize) | 0;\n }\n }\n if (len < 0 || len > max) {\n throw new InvalidSliceLength(len, max);\n }\n const byteLength = len * targetSize;\n const newDV = (zig)\n ? thisEnv.obtainZigView(zig.address, byteLength)\n : thisEnv.obtainView(dv.buffer, dv.byteOffset, byteLength);\n const Target = targetStructure.constructor;\n this[SLOTS][0] = Target.call(ENVIRONMENT, newDV);\n setLength?.call?.(this, len);\n };\n const thisEnv = this;\n const initializer = function(arg, allocator) {\n const Target = targetStructure.constructor;\n if (isPointerOf(arg, Target)) {\n // initialize with the other pointer'structure target\n if (!(flags & PointerFlag.IsConst) && arg.constructor.const) {\n throw new ConstantConstraint(structure, arg);\n }\n arg = arg[SLOTS][0];\n } else if (flags & PointerFlag.IsMultiple) {\n if (isCompatiblePointer(arg, Target, flags)) {\n arg = Target(arg[SLOTS][0][MEMORY]);\n }\n } else if (targetType === StructureType.Slice && (targetFlags & SliceFlag.IsOpaque) && arg) {\n if (arg.constructor[TYPE] === StructureType.Pointer) {\n arg = arg[TARGET]?.[MEMORY];\n } else if (arg[MEMORY]) {\n arg = arg[MEMORY];\n } else if (arg?.buffer instanceof ArrayBuffer) {\n if (!(arg instanceof Uint8Array || arg instanceof DataView)) {\n const { byteOffset, byteLength } = arg;\n if (byteOffset !== undefined && byteLength !== undefined) {\n arg = new DataView(arg.buffer, byteOffset, byteLength);\n }\n }\n }\n }\n if (arg instanceof Target) {\n {\n arg[RESTORE]?.();\n }\n const constTarget = arg[CONST_TARGET];\n if (constTarget) {\n if (flags & PointerFlag.IsConst) {\n arg = constTarget;\n } else {\n throw new ReadOnlyTarget(structure);\n }\n }\n } else if (isCompatibleInstanceOf(arg, Target)) {\n // compatible object from a different module\n arg = Target.call(ENVIRONMENT, arg[MEMORY]);\n } else if (flags & PointerFlag.IsSingle && flags & PointerFlag.IsMultiple && arg instanceof Target.child) {\n // C pointer\n arg = Target(arg[MEMORY]);\n } else if (isCompatibleBuffer(arg, Target)) {\n // autocast to target type\n const dv = thisEnv.extractView(targetStructure, arg);\n arg = Target(dv);\n } else if (arg != undefined && !arg[MEMORY]) {\n if (flags & PointerFlag.IsSingle && flags & PointerFlag.IsMultiple) {\n // C pointer\n if (typeof(arg) === 'object' && !arg[Symbol.iterator]) {\n let single = true;\n // make sure the object doesn't contain special props for the slice\n const propSetters = Target.prototype[SETTERS];\n for (const key of Object.keys(arg)) {\n const set = propSetters[key];\n if (set?.special) {\n single = false;\n break;\n }\n }\n if (single) {\n arg = [ arg ];\n }\n }\n }\n if (TYPED_ARRAY in Target && arg?.buffer && arg[Symbol.iterator]) {\n throw new InvalidPointerTarget(structure, arg);\n }\n // autovivificate target object\n const autoObj = new Target(arg, { allocator });\n arg = autoObj;\n } else if (arg !== undefined) {\n if (!(flags & PointerFlag.IsNullable) || arg !== null) {\n throw new InvalidPointerTarget(structure, arg);\n }\n }\n const zig = arg?.[MEMORY]?.[ZIG];\n if (zig?.address === usizeInvalid) {\n throw new PreviouslyFreed(arg);\n }\n this[TARGET] = arg;\n };\n const constructor = this.createConstructor(structure);\n descriptors['*'] = { get: getTarget, set: setTarget };\n descriptors.$ = { get: getProxy, set: initializer };\n descriptors.length = { get: getTargetLength, set: setTargetLength };\n descriptors.slice = (targetType === StructureType.Slice) && {\n value(begin, end) {\n const newTarget = this[TARGET].slice(begin, end);\n return new constructor(newTarget);\n }\n };\n descriptors.subarray = (targetType === StructureType.Slice) && {\n value(begin, end, options) {\n const newTarget = this[TARGET].subarray(begin, end, options);\n return new constructor(newTarget);\n }\n };\n descriptors[Symbol.toPrimitive] = (targetType === StructureType.Primitive) && {\n value(hint) {\n return this[TARGET][Symbol.toPrimitive](hint);\n }\n };\n descriptors[INITIALIZE] = defineValue(initializer);\n descriptors[FINALIZE] = {\n value() {\n const handlers = (targetType !== StructureType.Pointer) ? proxyHandlers : {};\n let self;\n if (targetType === StructureType.Function) {\n // use an empty function as object so the proxy's apply() method is triggered\n self = function() {};\n self[MEMORY] = this[MEMORY];\n self[SLOTS] = this[SLOTS];\n Object.setPrototypeOf(self, constructor.prototype);\n } else {\n self = this;\n }\n const proxy = new Proxy(self, handlers);\n // hide the proxy so console wouldn't display a recursive structure\n Object.defineProperty(self, PROXY, { value: proxy });\n return proxy;\n }\n };\n descriptors[TARGET] = { get: getTargetObject, set: setTargetObject };\n descriptors[UPDATE] = defineValue(updateTarget);\n descriptors[ADDRESS] = { set: setAddress };\n descriptors[LENGTH] = { set: setLength };\n descriptors[VISIT] = this.defineVisitor();\n descriptors[LAST_ADDRESS] = defineValue(0);\n descriptors[LAST_LENGTH] = defineValue(0);\n descriptors[MAX_LENGTH] = (flags & PointerFlag.HasLength) && defineValue(null);\n // disable these so the target's properties are returned instead through auto-dereferencing\n descriptors.dataView = descriptors.base64 = undefined;\n return constructor;\n },\n finalizePointer(structure, staticDescriptors) {\n const {\n flags,\n constructor,\n instance: { members: [ member ] },\n } = structure;\n const { structure: targetStructure } = member;\n const { type: targetType, constructor: Target } = targetStructure;\n staticDescriptors.child = (Target) ? defineValue(Target) : {\n // deal with self-referencing pointer\n get() { return targetStructure.constructor }\n };\n staticDescriptors.const = defineValue(!!(flags & PointerFlag.IsConst));\n staticDescriptors[CAST] = {\n value(arg, options) {\n if (this === ENVIRONMENT || this === PARENT || arg instanceof constructor) {\n // casting from buffer to pointer is allowed only if request comes from the runtime\n // casting from writable to read-only is also allowed\n return false;\n } else if (isPointerOf(arg, Target)) {\n // const/non-const casting\n return new constructor(Target(arg['*']), options);\n } else if (isCompatiblePointer(arg, Target, flags)) {\n // casting between C/multi/slice pointers\n return new constructor(arg);\n } else if (targetType === StructureType.Slice) {\n // allow casting to slice through constructor of its pointer\n return new constructor(Target(arg), options);\n } else {\n throw new NoCastingToPointer(structure);\n }\n }\n };\n }\n});\n\nfunction isPointerOf(arg, Target) {\n return isCompatibleType(arg?.constructor?.child, Target) && arg['*'];\n}\n\nfunction isCompatiblePointer(arg, Target, flags) {\n if (flags & PointerFlag.IsMultiple) {\n if (arg?.constructor?.child?.child === Target.child && arg['*']) {\n return true;\n } else if (flags & PointerFlag.IsSingle && isPointerOf(arg, Target.child)) {\n // C pointer\n return true;\n }\n }\n return false;\n}\n\nconst constProxies = new WeakMap();\n\nfunction getConstProxy(target) {\n let proxy = constProxies.get(target);\n if (!proxy) {\n const pointer = target[POINTER];\n if (pointer) {\n proxy = new Proxy(pointer, readOnlyProxyHandlers);\n } else {\n proxy = new Proxy(target, constTargetProxyHandlers);\n }\n constProxies.set(target, proxy);\n }\n return proxy;\n}\n\nconst proxyHandlers = {\n get(pointer, name) {\n if (name === POINTER) {\n return pointer;\n } else if (name in pointer) {\n return pointer[name];\n } else {\n const target = pointer[TARGET];\n return target[name];\n }\n },\n set(pointer, name, value) {\n if (name in pointer) {\n pointer[name] = value;\n } else {\n const target = pointer[TARGET];\n target[name] = value;\n }\n return true;\n },\n deleteProperty(pointer, name) {\n if (name in pointer) {\n delete pointer[name];\n } else {\n const target = pointer[TARGET];\n delete target[name];\n }\n return true;\n },\n has(pointer, name) {\n if (name in pointer) {\n return true;\n } else {\n const target = pointer[TARGET];\n return name in target;\n }\n },\n apply(pointer, thisArg, args) {\n const f = pointer['*'];\n return f.apply(thisArg, args);\n },\n};\n\nconst readOnlyProxyHandlers = {\n ...proxyHandlers,\n set(pointer, name, value) {\n if (name in pointer) {\n throwReadOnly();\n } else {\n const target = pointer[TARGET];\n target[name] = value;\n }\n return true;\n },\n};\n\nconst constTargetProxyHandlers = {\n get(target, name) {\n if (name === CONST_TARGET) {\n return target;\n } else {\n const value = target[name];\n if (value?.[MEMORY]) {\n return getConstProxy(value);\n } else {\n return value;\n }\n }\n },\n set(target, name, value) {\n throwReadOnly();\n }\n};\n\nfunction isCompatibleBuffer(arg, constructor) {\n // TODO: merge this with extractView in mixin \"view-management\"\n const tag = arg?.[Symbol.toStringTag];\n if (tag) {\n const typedArray = constructor[TYPED_ARRAY];\n if (typedArray) {\n switch (tag) {\n case typedArray.name:\n case 'DataView':\n return true;\n case 'ArrayBuffer':\n return typedArray === Uint8Array || typedArray === Int8Array;\n case 'Uint8ClampedArray':\n return typedArray === Uint8Array;\n }\n }\n if (constructor.child) {\n if (findElements(arg, constructor.child) !== undefined) {\n return true;\n }\n }\n }\n return false;\n}\n\nexport { pointer as default };\n","import { mixin } from '../environment.js';\nimport { InvalidInitializer } from '../errors.js';\nimport { BIT_SIZE, PRIMITIVE, INITIALIZE, COPY } from '../symbols.js';\nimport { defineValue, isCompatibleInstanceOf, getPrimitiveName } from '../utils.js';\n\nvar primitive = mixin({\n definePrimitive(structure, descriptors) {\n const {\n instance: { members: [ member ] },\n } = structure;\n const propApplier = this.createApplier(structure);\n const { get, set } = this.defineMember(member);\n const initializer = function(arg) {\n if (isCompatibleInstanceOf(arg, constructor)) {\n this[COPY](arg);\n } else {\n if (arg && typeof(arg) === 'object') {\n if (propApplier.call(this, arg) === 0) {\n const type = getPrimitiveName(member);\n throw new InvalidInitializer(structure, type, arg);\n }\n } else if (arg !== undefined) {\n set.call(this, arg);\n }\n }\n };\n const constructor = this.createConstructor(structure);\n descriptors.$ = { get, set: initializer };\n descriptors[INITIALIZE] = defineValue(initializer);\n descriptors[Symbol.toPrimitive] = defineValue(get);\n return constructor;\n },\n finalizePrimitive(structure, staticDescriptors) {\n const {\n instance: { members: [ member ] },\n } = structure;\n staticDescriptors[BIT_SIZE] = defineValue(member.bitSize);\n staticDescriptors[PRIMITIVE] = defineValue(member.type);\n },\n});\n\nexport { primitive as default };\n","import { SliceFlag, StructureFlag, VisitorFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { InvalidArrayInitializer, ArrayLengthMismatch } from '../errors.js';\nimport { SENTINEL, ENTRIES, COPY, MEMORY, SHAPE, INITIALIZE, FINALIZE, VIVIFICATE, VISIT, LENGTH } from '../symbols.js';\nimport { defineValue, getProxy, isCompatibleInstanceOf, transformIterable } from '../utils.js';\n\nvar slice = mixin({\n defineSlice(structure, descriptors) {\n const {\n align,\n flags,\n byteSize,\n name,\n instance: {\n members: [ member ],\n },\n } = structure;\n const { byteSize: elementSize, structure: elementStructure } = member;\n const thisEnv = this;\n const shapeDefiner = function(dv, length, allocator) {\n if (!dv) {\n dv = thisEnv.allocateMemory(length * elementSize, align, allocator);\n }\n this[MEMORY] = dv;\n this[LENGTH] = length;\n };\n const shapeChecker = function(arg, length) {\n if (length !== this[LENGTH]) {\n throw new ArrayLengthMismatch(structure, this, arg);\n }\n };\n const descriptor = this.defineMember(member);\n const { set } = descriptor;\n // the initializer behave differently depending on whether it's called by the\n // constructor or by a member setter (i.e. after object's shape has been established)\n const propApplier = this.createApplier(structure);\n const initializer = function(arg, allocator) {\n if (isCompatibleInstanceOf(arg, constructor)) {\n if (!this[MEMORY]) {\n shapeDefiner.call(this, null, arg.length, allocator);\n } else {\n shapeChecker.call(this, arg, arg.length);\n }\n this[COPY](arg);\n if (flags & StructureFlag.HasPointer) {\n this[VISIT]('copy', VisitorFlag.Vivificate, arg);\n }\n } else if (typeof(arg) === 'string' && flags & SliceFlag.IsString) {\n initializer.call(this, { string: arg }, allocator);\n } else if (arg?.[Symbol.iterator]) {\n arg = transformIterable(arg);\n if (!this[MEMORY]) {\n shapeDefiner.call(this, null, arg.length, allocator);\n } else {\n shapeChecker.call(this, arg, arg.length);\n }\n let i = 0;\n for (const value of arg) {\n constructor[SENTINEL]?.validateValue(value, i, arg.length);\n set.call(this, i++, value, allocator);\n }\n } else if (typeof(arg) === 'number') {\n if (!this[MEMORY] && arg >= 0 && isFinite(arg)) {\n shapeDefiner.call(this, null, arg, allocator);\n } else {\n throw new InvalidArrayInitializer(structure, arg, !this[MEMORY]);\n }\n } else if (arg && typeof(arg) === 'object') {\n if (propApplier.call(this, arg, allocator) === 0) {\n throw new InvalidArrayInitializer(structure, arg);\n }\n } else if (arg !== undefined) {\n throw new InvalidArrayInitializer(structure, arg);\n }\n };\n const getSubArrayView = function(begin, end) {\n const length = this[LENGTH];\n const dv = this[MEMORY];\n begin = (begin === undefined) ? 0 : adjustIndex(begin, length);\n end = (end === undefined) ? length : adjustIndex(end, length);\n const offset = begin * elementSize;\n const len = (end * elementSize) - offset;\n return thisEnv.obtainView(dv.buffer, dv.byteOffset + offset, len);\n };\n const constructor = this.createConstructor(structure);\n descriptors.$ = { get: getProxy, set: initializer };\n descriptors.length = { get: getLength };\n if (flags & SliceFlag.IsTypedArray) {\n descriptors.typedArray = this.defineTypedArray(structure);\n if (flags & SliceFlag.IsString) {\n descriptors.string = this.defineString(structure);\n }\n if (flags & SliceFlag.IsClampedArray) {\n descriptors.clampedArray = this.defineClampedArray(structure);\n }\n }\n descriptors.entries = descriptors[ENTRIES] = this.defineArrayEntries();\n descriptors.subarray = {\n value(begin, end) {\n const dv = getSubArrayView.call(this, begin, end);\n return constructor(dv);\n },\n };\n descriptors.slice = {\n value(begin, end, options = {}) {\n const {\n zig = false\n } = options;\n const dv1 = getSubArrayView.call(this, begin, end);\n const dv2 = thisEnv.allocateMemory(dv1.byteLength, align, zig);\n const slice = constructor(dv2);\n slice[COPY]({ [MEMORY]: dv1 });\n return slice;\n },\n };\n descriptors[Symbol.iterator] = this.defineArrayIterator();\n descriptors[SHAPE] = defineValue(shapeDefiner);\n descriptors[COPY] = this.defineCopier(byteSize, true);\n descriptors[INITIALIZE] = defineValue(initializer);\n descriptors[FINALIZE] = this.defineFinalizerArray(descriptor);\n descriptors[VIVIFICATE] = (flags & StructureFlag.HasObject) && this.defineVivificatorArray(structure);\n descriptors[VISIT] = (flags & StructureFlag.HasPointer) && this.defineVisitorArray();\n return constructor;\n },\n finalizeSlice(structure, staticDescriptors) {\n const {\n flags,\n instance: { members: [ member ] },\n } = structure;\n staticDescriptors.child = defineValue(member.structure.constructor);\n staticDescriptors[SENTINEL] = (flags & SliceFlag.HasSentinel) && this.defineSentinel(structure);\n },\n});\n\nfunction getLength() {\n return this[LENGTH];\n}\n\nfunction adjustIndex(index, len) {\n index = index | 0;\n if (index < 0) {\n index = len + index;\n if (index < 0) {\n index = 0;\n }\n } else {\n if (index > len) {\n index = len;\n }\n }\n return index;\n}\n\nexport { slice as default };\n","import { MemberType } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { NotOnByteBoundary } from '../errors.js';\nimport { RESTORE, MEMORY, SLOTS, PARENT } from '../symbols.js';\n\nvar structLike = mixin({\n defineVivificatorStruct(structure) {\n const { instance: { members } } = structure;\n const objectMembers = {};\n for (const member of members.filter(m => m.type === MemberType.Object)) {\n objectMembers[member.slot] = member;\n }\n const thisEnv = this;\n return {\n value(slot) {\n const member = objectMembers[slot];\n const { bitOffset, byteSize, structure: { constructor } } = member;\n {\n this[RESTORE]?.();\n }\n const dv = this[MEMORY];\n const parentOffset = dv.byteOffset;\n const offset = parentOffset + (bitOffset >> 3);\n let len = byteSize;\n if (len === undefined) {\n if (bitOffset & 7) {\n throw new NotOnByteBoundary(member);\n }\n len = member.bitSize >> 3;\n }\n const childDV = thisEnv.obtainView(dv.buffer, offset, len);\n const object = this[SLOTS][slot] = constructor.call(PARENT, childDV);\n return object;\n }\n };\n },\n});\n\nexport { structLike as default };\n","import { MemberFlag, StructFlag, StructureFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { InvalidInitializer } from '../errors.js';\nimport { SETTERS, KEYS, INITIALIZE, VIVIFICATE, VISIT, ENTRIES, PROPS, COPY } from '../symbols.js';\nimport { getSelf, defineValue, isCompatibleInstanceOf } from '../utils.js';\n\nvar struct = mixin({\n defineStruct(structure, descriptors) {\n const {\n flags,\n length,\n instance: { members },\n } = structure;\n const backingIntMember = members.find(m => m.flags & MemberFlag.IsBackingInt);\n const backingInt = backingIntMember && this.defineMember(backingIntMember);\n const propApplier = this.createApplier(structure);\n const initializer = function(arg, allocator) {\n if (isCompatibleInstanceOf(arg, constructor)) {\n this[COPY](arg);\n if (flags & StructureFlag.HasPointer) {\n this[VISIT]('copy', 0, arg);\n }\n } else if (arg && typeof(arg) === 'object') {\n propApplier.call(this, arg, allocator);\n } else if ((typeof(arg) === 'number' || typeof(arg) === 'bigint') && backingInt) {\n backingInt.set.call(this, arg);\n } else if (arg !== undefined) {\n throw new InvalidInitializer(structure, 'object', arg);\n }\n };\n const constructor = this.createConstructor(structure);\n // add descriptors of struct field\n const setters = descriptors[SETTERS].value;\n const keys = descriptors[KEYS].value;\n const props = [];\n for (const member of members.filter(m => !!m.name)) {\n const { name, flags } = member;\n const { set } = descriptors[name] = this.defineMember(member);\n if (set) {\n if (flags & MemberFlag.IsRequired) {\n set.required = true;\n }\n setters[name] = set;\n keys.push(name);\n }\n props.push(name);\n }\n descriptors.$ = { get: getSelf, set: initializer };\n // add length and entries if struct is a tuple\n descriptors.length = defineValue(length);\n descriptors.entries = (flags & StructFlag.IsTuple) && this.defineVectorEntries();\n // allow conversion of packed struct to number when there's a backing int\n descriptors[Symbol.toPrimitive] = backingInt && {\n value(hint) {\n return (hint === 'string')\n ? Object.prototype.toString.call(this)\n : backingInt.get.call(this);\n }\n };\n // add iterator\n descriptors[Symbol.iterator] = (flags & StructFlag.IsIterator)\n ? this.defineZigIterator()\n : (flags & StructFlag.IsTuple)\n ? this.defineVectorIterator()\n : this.defineStructIterator();\n descriptors[INITIALIZE] = defineValue(initializer);\n // for creating complex fields on access\n descriptors[VIVIFICATE] = (flags & StructureFlag.HasObject) && this.defineVivificatorStruct(structure);\n // for operating on pointers contained in the struct\n descriptors[VISIT] = (flags & StructureFlag.HasPointer) && this.defineVisitorStruct(members);\n descriptors[ENTRIES] = (flags & StructFlag.IsTuple) ? this.defineVectorEntries() : this.defineStructEntries();\n descriptors[PROPS] = defineValue(props);\n if (flags & StructFlag.IsAllocator) {\n descriptors.alloc = this.defineAlloc();\n descriptors.free = this.defineFree();\n descriptors.dupe = this.defineDupe();\n }\n return constructor;\n }\n});\n\nexport { struct as default };\n","const dict = globalThis[Symbol.for('ZIGAR')] ||= {};\n\nfunction __symbol(name) {\n return dict[name] ||= Symbol(name);\n}\n\nfunction symbol(name) {\n return /*@__PURE__*/ __symbol(name);\n}\n\nconst MEMORY = symbol('memory');\nconst SLOTS = symbol('slots');\nconst PARENT = symbol('parent');\nconst ZIG = symbol('zig');\nconst NAME = symbol('name');\nconst TYPE = symbol('type');\nconst FLAGS = symbol('flags');\nconst CLASS = symbol('class');\nconst TAG = symbol('tag');\nconst PROPS = symbol('props');\nconst POINTER = symbol('pointer');\nconst SENTINEL = symbol('sentinel');\nconst ARRAY = symbol('array');\nconst ITEMS = symbol('items');\nconst TARGET = symbol('target');\nconst ENTRIES = symbol('entries');\nconst MAX_LENGTH = symbol('max length');\nconst KEYS = symbol('keys');\nconst ADDRESS = symbol('address');\nconst LENGTH = symbol('length');\nconst LAST_ADDRESS = symbol('last address');\nconst LAST_LENGTH = symbol('last length');\nconst PROXY = symbol('proxy');\nconst CACHE = symbol('cache');\nconst SIZE = symbol('size');\nconst BIT_SIZE = symbol('bit size');\nconst ALIGN = symbol('align');\nconst CONST_TARGET = symbol('const target');\nconst ENVIRONMENT = symbol('environment');\nconst ATTRIBUTES = symbol('attributes');\nconst PRIMITIVE = symbol('primitive');\nconst GETTERS = symbol('getters');\nconst SETTERS = symbol('setters');\nconst TYPED_ARRAY = symbol('typed array');\nconst THROWING = symbol('throwing');\nconst PROMISE = symbol('promise');\nconst GENERATOR = symbol('generator');\nconst ALLOCATOR = symbol('allocator');\nconst FALLBACK = symbol('fallback');\nconst SIGNATURE = symbol('signature');\nconst STRING_RETVAL = symbol('string retval');\n\nconst UPDATE = symbol('update');\nconst RESTORE = symbol('restore');\nconst RESET = symbol('reset');\nconst VIVIFICATE = symbol('vivificate');\nconst VISIT = symbol('visit');\nconst COPY = symbol('copy');\nconst SHAPE = symbol('shape');\nconst INITIALIZE = symbol('initialize');\nconst RESTRICT = symbol('restrict');\nconst FINALIZE = symbol('finalize');\nconst CAST = symbol('cast');\nconst RETURN = symbol('return');\nconst YIELD = symbol('yield');\n\nexport { ADDRESS, ALIGN, ALLOCATOR, ARRAY, ATTRIBUTES, BIT_SIZE, CACHE, CAST, CLASS, CONST_TARGET, COPY, ENTRIES, ENVIRONMENT, FALLBACK, FINALIZE, FLAGS, GENERATOR, GETTERS, INITIALIZE, ITEMS, KEYS, LAST_ADDRESS, LAST_LENGTH, LENGTH, MAX_LENGTH, MEMORY, NAME, PARENT, POINTER, PRIMITIVE, PROMISE, PROPS, PROXY, RESET, RESTORE, RESTRICT, RETURN, SENTINEL, SETTERS, SHAPE, SIGNATURE, SIZE, SLOTS, STRING_RETVAL, TAG, TARGET, THROWING, TYPE, TYPED_ARRAY, UPDATE, VISIT, VIVIFICATE, YIELD, ZIG };\n","import { MemberType } from './constants.js';\nimport { SIGNATURE, ENVIRONMENT, LENGTH, PROXY } from './symbols.js';\n\nfunction defineProperty(object, name, descriptor) {\n if (descriptor) {\n const {\n set,\n get,\n value,\n enumerable,\n configurable = true,\n writable = true,\n } = descriptor;\n Object.defineProperty(object, name, (get || set)\n ? { get, set, configurable, enumerable }\n : { value, configurable, enumerable, writable }\n );\n }\n return object;\n}\n\nfunction defineProperties(object, descriptors) {\n for (const [ name, descriptor ] of Object.entries(descriptors)) {\n defineProperty(object, name, descriptor);\n }\n for (const symbol of Object.getOwnPropertySymbols(descriptors)) {\n const descriptor = descriptors[symbol];\n defineProperty(object, symbol, descriptor);\n }\n return object;\n}\n\nfunction defineValue(value) {\n return (value !== undefined) ? { value } : undefined;\n}\n\nfunction getErrorHandler(options) {\n return (options?.error === 'return')\n ? (cb) => {\n try {\n return cb();\n } catch (err) {\n return err;\n }\n }\n : (cb) => cb();\n}\n\nfunction getPrimitiveName({ type, bitSize }) {\n switch (type) {\n case MemberType.Bool: return 'boolean';\n case MemberType.Int:\n case MemberType.Uint:\n if (bitSize > 32) {\n return 'bigint';\n }\n case MemberType.Float: return 'number';\n }\n}\n\nfunction decodeText(arrays, encoding = 'utf-8') {\n const decoder = decoders[encoding] ||= new TextDecoder(encoding);\n let array;\n if (Array.isArray(arrays)) {\n if (arrays.length === 1) {\n array = arrays[0];\n } else {\n let len = 0;\n for (const a of arrays) {\n len += a.length;\n }\n const { constructor } = arrays[0];\n array = new constructor(len);\n let offset = 0;\n for (const a of arrays) {\n array.set(a, offset);\n offset += a.length;\n }\n }\n } else {\n array = arrays;\n }\n if (array.buffer[Symbol.toStringTag] === 'SharedArrayBuffer') {\n array = new array.constructor(array);\n }\n return decoder.decode(array);\n}\n\nfunction encodeText(text, encoding = 'utf-8') {\n switch (encoding) {\n case 'utf-16': {\n const { length } = text;\n const ta = new Uint16Array(length);\n for (let i = 0; i < length; i++) {\n ta[i] = text.charCodeAt(i);\n }\n return ta;\n }\n default: {\n const encoder = encoders[encoding] ||= new TextEncoder();\n return encoder.encode(text);\n }\n }\n}\n\nfunction encodeBase64(dv) {\n const ta = new Uint8Array(dv.buffer, dv.byteOffset, dv.byteLength);\n const bstr = String.fromCharCode.apply(null, ta);\n return btoa(bstr);\n}\n\nfunction decodeBase64(str) {\n const bstr = atob(str);\n const ta = new Uint8Array(bstr.length);\n for (let i = 0; i < ta.byteLength; i++) {\n ta[i] = bstr.charCodeAt(i);\n }\n return new DataView(ta.buffer);\n}\n\nconst decoders = {};\nconst encoders = {};\n\nfunction findSortedIndex(array, value, cb) {\n let low = 0;\n let high = array.length;\n if (high === 0) {\n return 0;\n }\n while (low < high) {\n const mid = Math.floor((low + high) / 2);\n const value2 = cb(array[mid]);\n if (value2 <= value) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n}\n\nconst isMisaligned = function(address, align) {\n return (align) ? !!(address & (align - 1)) : false;\n }\n;\n\nconst alignForward = function(address, align) {\n return (address + (align - 1)) & ~(align - 1);\n }\n;\n\nconst usizeMin = 0;\nconst usizeMax = 0xFFFF_FFFF;\nconst usizeInvalid = -1;\n\nconst usize = function(arg) {\n return Number(arg);\n }\n;\n\nconst isInvalidAddress = function(address) {\n return address === 0xaaaa_aaaa || address === -1431655766;\n }\n;\n\nconst adjustAddress = function(address, addend) {\n return address + addend;\n }\n;\n\nfunction transformIterable(arg) {\n if (typeof(arg.length) === 'number') {\n // it's an array of sort\n return arg;\n }\n const iterator = arg[Symbol.iterator]();\n const first = iterator.next();\n const length = first.value?.length;\n if (typeof(length) === 'number' && Object.keys(first.value).join() === 'length') {\n // return generator with length attached\n return Object.assign((function*() {\n let result;\n while (!(result = iterator.next()).done) {\n yield result.value;\n }\n })(), { length });\n } else {\n const array = [];\n let result = first;\n while (!result.done) {\n array.push(result.value);\n result = iterator.next();\n }\n return array;\n }\n}\n\nfunction findElements(arg, Child) {\n // casting to a array/slice\n const { constructor: Arg } = arg;\n if (Arg === Child) {\n // matching object\n return 1;\n } else if (Arg.child === Child) {\n // matching slice/array\n return arg.length;\n }\n}\n\nfunction findObjects(structures, SLOTS) {\n const list = [];\n const found = new Map();\n const find = (object) => {\n if (!object || found.get(object)) {\n return;\n }\n found.set(object, true);\n list.push(object);\n if (object[SLOTS]) {\n for (const child of Object.values(object[SLOTS])) {\n find(child);\n }\n }\n };\n for (const structure of structures) {\n find(structure.instance.template);\n find(structure.static.template);\n }\n return list;\n}\n\nfunction isCompatibleType(TypeA, TypeB) {\n return (TypeA === TypeB)\n || ((TypeA?.[SIGNATURE] === TypeB[SIGNATURE]) && (TypeA?.[ENVIRONMENT] !== TypeB?.[ENVIRONMENT]));\n}\n\nfunction isCompatibleInstanceOf(object, Type) {\n return (object instanceof Type) || isCompatibleType(object?.constructor, Type);\n}\n\nfunction markAsSpecial({ get, set }) {\n get.special = set.special = true;\n return { get, set };\n}\n\nfunction getSelf() {\n return this;\n}\n\nfunction getLength() {\n return this[LENGTH];\n}\n\nfunction getProxy() {\n return this[PROXY];\n}\n\nfunction toString() {\n return String(this);\n}\n\nfunction always() {\n return true;\n}\n\nfunction never() {\n return false;\n}\n\nfunction empty() {}\n\nclass ObjectCache {\n map = new WeakMap();\n\n find(dv) {\n return this.map.get(dv);\n }\n\n save(dv, object) {\n this.map.set(dv, object);\n return object;\n }\n}\n\nexport { ObjectCache, adjustAddress, alignForward, always, decodeBase64, decodeText, defineProperties, defineProperty, defineValue, empty, encodeBase64, encodeText, findElements, findObjects, findSortedIndex, getErrorHandler, getLength, getPrimitiveName, getProxy, getSelf, isCompatibleInstanceOf, isCompatibleType, isInvalidAddress, isMisaligned, markAsSpecial, never, toString, transformIterable, usize, usizeInvalid, usizeMax, usizeMin };\n","import { VisitorFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { ZigMemoryTargetRequired } from '../errors.js';\nimport { SLOTS, LAST_ADDRESS, MEMORY, ZIG, VIVIFICATE, VISIT } from '../symbols.js';\n\nvar all = mixin({\n defineVisitor() {\n return {\n value(cb, flags, src) {\n let fn;\n if (typeof(cb) === 'string') {\n fn = builtinVisitors[cb];\n } else {\n fn = cb;\n }\n fn.call(this, flags, src);\n }\n };\n },\n});\n\nfunction visitChild(slot, cb, flags, src) {\n let child = this[SLOTS][slot];\n if (!child) {\n if (!(flags & VisitorFlag.IgnoreUncreated)) {\n child = this[VIVIFICATE](slot);\n } else {\n return;\n }\n }\n let srcChild;\n if (src) {\n srcChild = src[SLOTS][slot];\n if (!srcChild) {\n return;\n }\n }\n child[VISIT](cb, flags, srcChild);\n}\n\nconst builtinVisitors = {\n copy(flags, src) {\n const target = src[SLOTS][0];\n if (this[MEMORY][ZIG]) {\n if (target && !target[MEMORY][ZIG]) {\n throw new ZigMemoryTargetRequired();\n }\n }\n this[SLOTS][0] = target;\n },\n clear(flags) {\n if (flags & VisitorFlag.IsInactive) {\n this[SLOTS][0] = undefined;\n }\n },\n reset() {\n this[SLOTS][0] = undefined;\n this[LAST_ADDRESS] = undefined;\n },\n};\n\nexport { all as default, visitChild };\n","import { StructureFlag, VisitorFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { visitChild } from './all.js';\n\nvar inArgStruct = mixin({\n defineVisitorArgStruct(members) {\n const argSlots = [];\n let rvSlot = undefined;\n for (const [ index, { slot, structure } ] of members.entries()) {\n if (structure.flags & StructureFlag.HasPointer) {\n if (index === 0) {\n rvSlot = slot;\n } else {\n argSlots.push(slot);\n }\n }\n }\n return {\n value(cb, flags, src) {\n if (!(flags & VisitorFlag.IgnoreArguments) && argSlots.length > 0) {\n for (const slot of argSlots) {\n visitChild.call(this, slot, cb, flags | VisitorFlag.IsImmutable, src);\n }\n }\n if (!(flags & VisitorFlag.IgnoreRetval) && rvSlot !== undefined) {\n visitChild.call(this, rvSlot, cb, flags, src);\n }\n }\n };\n }\n});\n\nexport { inArgStruct as default };\n","import { mixin } from '../environment.js';\nimport { visitChild } from './all.js';\n\nvar inArray = mixin({\n defineVisitorArray() {\n return {\n value(cb, flags, src) {\n for (let slot = 0, len = this.length; slot < len; slot++) {\n visitChild.call(this, slot, cb, flags, src);\n }\n }\n };\n },\n});\n\nexport { inArray as default };\n","import { VisitorFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { visitChild } from './all.js';\n\nvar inOptional = mixin({\n defineVisitorOptional(valueMember, getPresent) {\n const { slot } = valueMember;\n return {\n value(cb, flags, src) {\n if (!getPresent.call(this)) {\n flags |= VisitorFlag.IsInactive;\n }\n if (!(flags & VisitorFlag.IsInactive) || !(flags & VisitorFlag.IgnoreInactive)) {\n visitChild.call(this, slot, cb, flags, src);\n }\n }\n };\n }\n});\n\nexport { inOptional as default };\n","import { StructureFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { visitChild } from './all.js';\n\nvar inStruct = mixin({\n defineVisitorStruct(members) {\n const slots = members.filter(m => m.structure?.flags & StructureFlag.HasPointer).map(m => m.slot);\n return {\n value(cb, flags, src) {\n for (const slot of slots) {\n visitChild.call(this, slot, cb, flags, src);\n }\n }\n };\n }\n});\n\nexport { inStruct as default };\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var scriptUrl;\nif (typeof import.meta.url === \"string\") scriptUrl = import.meta.url\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","// startup\n// Load entry module and return exports\n// This entry module used 'module' so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(8156);\n"],"names":["webpackQueues","webpackExports","webpackError","resolveQueue","validNameCharacters","whitespace","quotemark","parse","source","header","stack","state","metadata","currentElement","root","error","message","ref","search","options","offsetLine","offsetColumn","originalLines","split","start","lineRanges","map","line","i","end","length","range","rangeContains","index","getLocation","column","character","startIndex","indexOf","d","getLocator","locate","before","slice","beforeLine","exec","replace","after","snippet","str","result","Error","test","neutral","text","children","push","type","value","tag","char","comment","cdata","closingTag","attribute","element","tagName","getName","properties","getAttribute","name","selfClosing","allowSpaces","pop","escaped","getQuotedAttributeValue","getUnquotedAttributeValue","isNaN","trim","updateCanvasSize","canvas","width","height","device","Math","max","min","limits","maxTextureDimension2D","canvasSizeObserver","callback","observer","ResizeObserver","entries","entry","target","devicePixelContentBoxSize","inlineSize","contentBoxSize","devicePixelRatio","blockSize","observe","box","clientWidth","clientHeight","getDevice","navigator","gpu","adapter","requestAdapter","requestDevice","lost","then","info","console","reason","numMipLevels","sizes","maxSize","log2","createTextureFromSource","texture","createTexture","format","mipLevelCount","mips","size","usage","GPUTextureUsage","TEXTURE_BINDING","COPY_DST","RENDER_ATTACHMENT","flipY","depthOrArrayLayers","queue","copyExternalImageToTexture","copySourceToTexture","NUM_PIXELS","PickManager","constructor","isPreviousPickDone","this","pickBuffer","createBuffer","GPUBufferUsage","MAP_READ","pickTexture","COPY_SRC","pickDepthTexture","startPicking","encoder","descriptor","label","colorAttachments","view","createView","loadOp","clearValue","storeOp","pass","beginRenderPass","setViewport","setScissorRect","copyTextureToBuffer","origin","x","y","buffer","createMatrix","canvasMatrix","tx","ty","scaling","translation","reduce","accMatrix","rotationMatrix","multiply","asyncPick","mapAsync","GPUMapMode","READ","id","Uint32Array","getMappedRange","afterPickEventsQueue","requireNewPick","cb","splice","unmap","err","OUTSIDE_CANVAS","MouseMode","mouseMode","None","panCameraStart","camera","zoom","pointer","initMouseController","onZoom","onStartProcessing","getZigAbsolutePointer","updatePointer","e","rect","getBoundingClientRect","scale","clientX","left","clientY","top","performZoom","zoomDelta","centerX","centerY","oldZoom","zoomFactor","realY","delta","addEventListener","style","cursor","update","move","Pan","bind","event","preventDefault","Zoom","abs","deltaY","deltaX","ctrlKey","document","body","code","metaKey","shiftKey","key","INSTANCE_STRIDE","tileDim","batch","STRIDE","drawTriangle","drawBezier","draw3dModel","draw3dModelTexture","draw3dModelLight","drawBlur","drawTexture","pickTriangle","drawMSDF","drawShape","canvasMatrixBuffer","pickCanvasMatrixBuffer","initPrograms","presentationFormat","UNIFORM","buffersToDestroy","matrixBuffer","module","createShaderModule","pipeline","createRenderPipeline","layout","vertex","entryPoint","buffers","arrayStride","stepMode","attributes","shaderLocation","offset","fragment","targets","blend","color","srcFactor","dstFactor","alpha","multisample","count","cachedBindGroup","createBindGroup","getBindGroupLayout","binding","resource","vertexData","numInstances","byteLength","vertexBuffer","VERTEX","writeBuffer","setPipeline","setVertexBuffer","setBindGroup","draw","primitive","topology","depthStencil","depthWriteEnabled","depthCompare","matrix","pointsData","tData","dirData","segmentIndexData","storageBufferSize","storageBuffer","STORAGE","uniformBuffer","uniformValues","Float32Array","uniformBufferSize","matrixValue","subarray","kMatrixOffset","zoomValue","kZoomOffset","bindGroup","tBuffer","dirBuffer","segmentIndexBuffer","set","indexData","sampler","createSampler","magFilter","minFilter","numVertices","indexBuffer","INDEX","setIndexBuffer","drawIndexed","cullMode","uniform","worldViewProjection","normalMatrix","lightColor","lightDirection","normalMatrixValue","kNormalMatrixOffset","worldViewProjectionValue","kWorldViewProjectionOffset","colorValue","kColorOffset","lightDirectionValue","kLightDirectionOffset","blurPipeline","createComputePipeline","compute","commandEncoder","textures","STORAGE_BINDING","buffer0","mappedAtCreation","buffer1","blurParamsBuffer","computeConstants","computeBindGroup0","computeBindGroup1","computeBindGroup2","blockDim","computePass","beginComputePass","dispatchWorkgroups","ceil","settings","bindGroupCache","WeakMap","get","shaderModule","bindGroupLayout","createBindGroupLayout","visibility","GPUShaderStage","FRAGMENT","renderPipeline","createPipelineLayout","bindGroupLayouts","passEncoder","curvesDataView","boundingBoxDataView","uniformDataView","boundBoxBuffer","curvesBuffer","getDrawShape","forEach","destroy","endCacheCallback","endCache","startCache","currTextureId","boundingBox","outputWidth","outputHeight","max_x","min_x","max_y","min_y","createCommandEncoder","resolveTarget","ortho","commandBuffer","finish","submit","getCanvasMatrix","translated","translate","depthTexture","getCanvasRenderDescriptor","context","canvasTexture","getCurrentTexture","getDepthTexture","getMultisampleTexture","multisampleTexture","sampleCount","CreatorTool","initCreator","uploadTexture","onAssetsUpdate","onAssetSelect","onProcessingUpdate","loadingTextures","isMouseEventProcessing","updateProcessing","texLoadings","projectWidth","projectHeight","getContext","getPreferredCanvasFormat","updateRenderScale","configure","wasInitialOffsetSet","cleanupPrograms","lastAssetsSnapshot","newAssetsSnapshot","serializedAssetsTextureUrl","asset","textureId","texture_id","points","point","u","v","url","serializedData","flatMap","stopCreator","addImage","isNew","newUrl","removeAsset","resetAssets","assets","withSnapshot","serializedAssets","Promise","allSettled","resolve","reject","filter","status","unconfigure","setTool","getLoadingTexture","_","textureData","Uint8Array","flat","writeTexture","bytesPerRow","textureWidth","renderPass","updateRenderPass","newRenderPass","runCreator","onEmptyEvents","pickPass","pickManager","draw_texture","vertex_data","dataView","draw_msdf","draw_triangle","draw_shape","curves_data","bound_box_data","uniform_data","boundBoxDataView","pick_texture","pick_triangle","rafId","lastPickPointer","requestAnimationFrame","_now","canvasDescriptor","pickMatrix","pick","cancelAnimationFrame","STRAIGHT_LINE_HANDLE","createShapes","node","svgHeight","child","props","serializedProps","fill","rgba","fill_color","rx","ry","cx","cy","parseCssColorToRgba","cssColor","ctx","OffscreenCanvas","fillStyle","fillRect","imageData","getImageData","r","g","b","a","data","parseEllipse","kappa","kx","ky","rightPoint","topPoint","leftPoint","bottomPoint","reflectY","parsePathData","dAttribute","commands","pathData","commandRegex","match","command","argsString","args","numbers","parseFloat","getDataPathCommands","allPaths","currentSegments","currentPoint","pathStart","lastControlPoint","finishCurrentPath","toLowerCase","isRelative","newPoint","lineSegment","cp1","cp2","endPoint","curveSegment","warn","commandsToSegments","parseRect","topLeft","topRight","bottomRight","bottomLeft","loadingTexture","init","_device","_updateProcessing","add","sameUrl","find","t","getImageWithDetails","img","svgTree","svgRoot","log","naturalHeight","naturalWidth","hash","hashImageData","existingTexture","findSameTexture","getTexture","setTexture","optionalId","getUrl","drawImage","String","imgData","updateTextureUrl","all","Image","src","onload","fetch","response","includes","clamp","getDefaultPoints","texWidth","texHeight","getDefaultTextureScale","scaledWidth","scaledHeight","paddingX","paddingY","cross","dst","t0","t1","t2","subtract","normalize","sqrt","mat4","projection","depth","perspective","fieldOfViewYInRadians","aspect","zNear","zFar","f","tan","PI","rangeInv","right","bottom","near","far","identity","b00","b01","b02","b03","b10","b11","b12","b13","b20","b21","b22","b23","b30","b31","b32","b33","a00","a01","a02","a03","a10","a11","a12","a13","a20","a21","a22","a23","a30","a31","a32","a33","cameraAim","eye","up","zAxis","xAxis","yAxis","inverse","m","m00","m01","m02","m03","m10","m11","m12","m13","m20","m21","m22","m23","m30","m31","m32","m33","tmp0","tmp1","tmp2","tmp3","tmp4","tmp5","tmp6","tmp7","tmp8","tmp9","tmp10","tmp11","tmp12","tmp13","tmp14","tmp15","tmp16","tmp17","tmp18","tmp19","tmp20","tmp21","tmp22","tmp23","t3","transpose","aim","lookAt","tz","rotationX","angleInRadians","c","cos","s","sin","rotationY","rotationZ","sx","sy","sz","rotateX","rotateY","rotateZ","flags","signature","undefined","byteSize","align","instance","members","template","static","s0","s1","s2","s3","s4","s5","s6","s7","s8","s9","s10","s11","s12","s13","s14","s15","s16","s17","s18","s19","s20","s21","s22","s23","s24","s25","s26","s27","s28","s29","s30","s31","s32","s33","s34","s35","s36","s37","s38","s39","s40","s41","s42","s43","s44","s45","s46","s47","s48","s49","s50","s51","s52","s53","s54","s55","s56","s57","s58","s59","s60","s61","s62","s63","s64","s65","s66","s67","s68","s69","s70","s71","s72","s73","s74","s75","s76","s77","s78","s79","s80","s81","s82","s83","s84","s85","s86","s87","s88","s89","s90","s91","s92","s93","s94","s95","s96","s97","s98","s99","s100","s101","s102","s103","s104","s105","s106","s107","s108","s109","s110","s111","s112","s113","s114","s115","s116","s117","s118","s119","s120","s121","s122","s123","s124","s125","s126","s127","s128","s129","s130","s131","s132","s133","s134","s135","s136","s137","s138","s139","s140","s141","s142","s143","s144","s145","s146","s147","s148","s149","s150","s151","s152","s153","s154","s155","s156","s157","s158","s159","s160","s161","s162","s163","s164","s165","s166","s167","s168","s169","s170","s171","s172","s173","s174","s175","s176","s177","s178","s179","s180","s181","s182","s183","s184","s185","s186","s187","s188","s189","s190","s191","s192","s193","s194","s195","s196","s197","s198","s199","s200","s201","s202","s203","s204","s205","o0","o1","o2","o3","o4","o5","o6","o7","o8","o9","o10","o11","o12","o13","o14","o15","o16","o17","o18","o19","o20","o21","o22","o23","o24","o25","o26","o27","o28","o29","o30","o31","o32","o33","o34","o35","o36","o37","o38","o39","o40","o41","o42","o43","o44","o45","o46","o47","o48","o49","o50","o51","o52","o53","o54","o55","o56","o57","o58","o59","o60","o61","o62","o63","o64","o65","o66","o67","o68","o69","o70","o71","o72","o73","o74","o75","o76","o77","o78","o79","o80","o81","o82","o83","o84","o85","o86","o87","o88","o89","o90","o91","o92","o93","o94","o95","o96","o97","o98","o99","o100","o101","o102","o103","o104","o105","o106","o107","o108","o109","o110","o111","o112","o113","o114","o115","o116","o117","o118","o119","o120","o121","o122","o123","o124","o125","o126","o127","o128","o129","o130","o131","o132","o133","o134","o135","o136","o137","o138","o139","o140","o141","o142","o143","o144","o145","o146","o147","o148","o149","o150","o151","o152","o153","o154","o155","o156","o157","o158","o159","o160","o161","o162","o163","o164","o165","o166","o167","o168","o169","o170","o171","o172","o173","o174","o175","o176","o177","o178","o179","o180","o181","o182","o183","o184","o185","o186","o187","o188","o189","o190","o191","o192","o193","o194","o195","o196","o197","o198","o199","o200","o201","o202","o203","o204","o205","o206","o207","o208","o209","o210","o211","U","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","a14","a15","a16","a17","a18","a19","a24","a25","a26","a27","a28","a29","a34","a35","a36","a37","a38","a39","a40","a41","a42","a43","a44","$","Object","assign","memory","array","handle","slots","structure","const","bitOffset","bitSize","slot","structures","runtimeSafety","littleEndian","libc","env","recreateStructures","binaryString","atob","bytes","charCodeAt","setTimeout","loadModule","linkVariables","v0","v1","getSpecialExports","connect_web_gpu_programs","v2","connect_on_asset_update_callback","v3","connect_on_asset_selection_callback","v4","connect_cache_callbacks","v5","ASSET_ID_TRESHOLD","v6","init_state","v7","update_render_scale","v8","add_asset","v9","remove_asset","v10","on_update_pick","v11","on_pointer_down","v12","on_pointer_up","v13","on_pointer_move","v14","on_pointer_leave","v15","commit_changes","v16","render_draw","v17","render_pick","v18","reset_assets","v19","destroy_state","v20","import_icons","v21","set_tool","v22","stop_drawing_shape","v23","add_shape","v24","accessorCache","Map","getAccessor","access","member","names","unaligned","Int","Uint","Bool","accessorName","join","accessor","DataView","prototype","handlerName","getAccessorBool","call","zero","one","getAccessorInt","signMask","valueMask","n","getAccessorUint","StructureType","Primitive","Array","Struct","Union","ErrorUnion","ErrorSet","Enum","Optional","Pointer","Slice","Vector","Opaque","ArgStruct","VariadicStruct","Function","structureNames","keys","StructureFlag","HasValue","HasObject","HasPointer","HasSlot","PrimitiveFlag","IsSize","ArrayFlag","HasSentinel","IsString","IsTypedArray","IsClampedArray","StructFlag","IsExtern","IsPacked","IsIterator","IsTuple","IsAllocator","IsPromise","IsGenerator","IsAbortSignal","IsOptional","IsReader","IsWriter","EnumFlag","IsOpenEnded","OptionalFlag","HasSelector","PointerFlag","HasLength","IsMultiple","IsSingle","IsConst","IsNullable","SliceFlag","IsOpaque","ErrorSetFlag","IsGlobal","ArgStructFlag","HasOptions","IsThrowing","IsAsync","MemberType","Void","Float","Type","Literal","Null","Undefined","Unsupported","memberNames","MemberFlag","IsRequired","IsReadOnly","IsPartOfSet","IsSelector","IsMethod","IsSentinel","IsBackingInt","CallResult","OK","Failure","Deadlock","Disabled","VisitorFlag","IsInactive","IsImmutable","IgnoreUncreated","IgnoreInactive","IgnoreArguments","IgnoreRetval","cls","mixins","mixin","object","defineEnvironment","initFunctions","current","defineClass","InvalidIntConversion","SyntaxError","arg","super","TypeError","NoInitializer","BufferSizeMismatch","dv","actual","msg","BufferExpected","typedArray","acceptable","addArticle","formatList","EnumExpected","ErrorExpected","isErrorJSON","JSON","stringify","NotInErrorSet","InvalidInitializer","expected","isArray","received","getDescription","InvalidArrayInitializer","shapeless","ArrayLengthMismatch","elementConstructor","argLength","argConstructor","actualLength","InvalidSliceLength","MissingInitializers","missing","NoProperty","propName","ArgumentCountMismatch","variadic","updateText","argOffset","p","adjustStack","enumerable","UndefinedArgument","NoCastingToPointer","NoCastingToFunction","ConstantConstraint","AlignmentConflict","align1","align2","TypeMismatch","NullPointer","PreviouslyFreed","InvalidPointerTarget","noun","article","ZigMemoryTargetRequired","OutOfBound","RangeError","NotUndefined","NotOnByteBoundary","struct","ReadOnly","ReadOnlyTarget","UnexpectedGenerator","ZigError","remove","Exit","adjustArgumentError","argIndex","lines","findIndex","replaceRangeError","throwReadOnly","deanimalizeErrorName","m0","m1","m2","toLocaleLowerCase","trimStart","charAt","toLocaleUpperCase","substring","toString","list","conj","sep","getMemory","zigMemoryAlign","ArrayBuffer","byteOffset","BYTES_PER_ELEMENT","defineAlloc","len","lz","clz32","ptrAlign","vtable","alloc","ptr","slicePtr","defineFree","thisEnv","zig","address","free","releaseZigView","defineDupe","copy","getCopyFunction","dest","variables","check","initialize","abandon","abandonModule","connect","consoleObject","sizeOf","T","alignOf","typeOf","structureNamesLC","insertObjects","placeholders","placeholder","createObject","getBuffer","obtainView","isConst","makeReadOnly","objectPlaceholders","scope","realSlots","defineStructure","finalizeStructure","jsFunctionThunkMap","jsFunctionCallerMap","jsFunctionControllerMap","jsFunctionIdMap","jsFunctionNextId","getFunctionId","fn","getFunctionThunk","jsThunkController","controllerAddress","getViewAddress","thunkAddress","createJsThunk","obtainZigView","createInboundCaller","futexHandle","awaiting","argStruct","startContext","updatePointerTargets","updateShadowTargets","endContext","onError","onReturn","retval","hasCallback","hasOwnProperty","Symbol","toStringTag","promise","finalizeAsyncCall","asyncIterator","pipeContents","defineArgIterator","allocatorTotal","allocatorCount","callbackCount","signalCount","srcIndex","optName","opt","createPromiseCallback","createGeneratorCallback","createInboundSignal","iterator","handleJsCall","argAddress","argSize","caller","releaseFunction","thunk","controller","destroyJsThunk","delete","freeFunction","func","exports","argType","returnType","imports","createOutboundCaller","self","runThunk","initPromise","invokeThunk","copyArguments","argList","argAlloc","destIndex","setters","generator","signal","createDefaultAllocator","createPromise","createGenerator","createSignal","createReader","createWriter","attrs","fnAddress","isAsync","hasPointers","updatePointerAddresses","getShadowAddress","attrAddress","updateShadows","finalize","flushStdout","flushConsole","runVariadicThunk","findShadowView","string","int8","int16","int32","getInt8","setInt8","getInt16","setInt16","getInt32","setInt32","copiers","resetters","any","defineCopier","multiple","defineResetter","reset","getResetFunction","defineRetvalCopier","shadowDV","copyExternBytes","addIntConversion","BigInt","number","Number","isFinite","structureFlags","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","bigint","defaultAllocator","allocatorVtable","allocatorContextMap","nextAllocatorContextId","allocator","createJsAllocator","resettable","Allocator","noResize","noRemap","allocateHostMemory","freeHostMemory","resize","remap","destructors","contextId","done","unregisterMemory","freeShadowMemory","targetDV","allocateJSMemory","allocateShadowMemory","registerMemory","buf","findMemoryIndex","isMemoryMapping","memoryList","contextCount","shadowList","cluster","writable","maxAlignOffset","maxAlign","unalignedDV","unalignedAddress","maxAlignAddress","shadowOffset","MemoryType","Scratch","clusterDV","restoreView","findMemory","isOpaque","getBufferAddress","allocateScratchMemory","freeScratchMemory","usizeMaxBuffer","cache","getTargetAddress","Normal","abandoned","nextValueIndex","valueMap","valueIndices","executable","table","initialTableLength","exportedFunctions","destructor","reverse","displayPanic","wasi","setCustomWASI","getObjectIndex","fromWebAssembly","toWebAssembly","exportFunction","apply","importFunction","exportFunctions","alias","importFunctions","throwError","instantiateWebAssembly","memoryInitial","memoryMax","tableInitial","multithreaded","res","suffix","w","WebAssembly","functions","wasiPreview","exportedModules","wasi_snapshot_preview1","kind","Module","getWASIHandler","getThreadHandler","Memory","initial","maximum","shared","__indirect_function_table","Table","instantiate","customWASI","exportsPlusMemory","instanceProxy","Proxy","inst","writeBack","jsDV","zigDV","save","allocateMemory","bytelength","linkChildren","parentOffset","values","childDV","recreateAddress","pointerMap","bufferMap","potentialClusters","other","clusters","findTargetClusters","clusterMap","inbound","currentTarget","newTarget","targetFlags","prevTarget","prevStart","prevEnd","currentCluster","forward","misaligned","allocateJsThunk","freeJsThunk","thunkSources","thunkMap","addJsThunkSource","Instance","thunkCount","unshift","funcId","sourceAddress","thunkObject","grow","fnId","checkDataViewSize","viewMap","extractView","registerView","isArrayLike","elementSize","Child","assignView","validateData","findViewAt","existing","prev","prevKey","defineRestorer","newDV","protect","gp","getOwnPropertyDescriptors","df","defineProperty","protectProperties","protectElements","exclude","descriptors","createEnvironment","getArrayIterator","next","getArrayEntriesIterator","handleError","getArrayEntries","defineArrayEntries","defineArrayIterator","getStructEntries","getStructEntriesIterator","getStructIterator","defineStructEntries","defineStructIterator","bindSlot","defineMember","applyTransform","defineBase64","defineMemberBool","defineMemberUsing","defineClampedArray","ClampedArray","Uint8ClampedArray","ta","defineDataView","defineMemberFloat","getValue","getObject","getString","setValue","defineMemberObject","getter","setter","defineString","encoding","sentinelValue","fromCharCode","defineToJSON","defineMemberType","defineTypedArray","TypedArray","getTypedArray","defineMemberUint","addRuntimeCheck","defineValueOf","normalizeObject","INT_MAX","INT_MIN","forJSON","resultMap","process","for","defineMemberVoid","base64","toJSON","valueOf","staticDescriptors","accessorType","argRequired","method","createConstructor","handlers","onCastError","comptimeFieldSlots","comptimeMembers","creating","arguments","create","createApplier","argKeys","normalCount","normalFound","normalMissing","specialFound","special","required","k","intType","prefix","globalThis","defineArgStruct","argMembers","retvalSetter","defineVivificatorStruct","defineVisitorArgStruct","finalizeArgStruct","defineFinalizerArray","proxyHandlers","defineVivificatorArray","elementStructure","deleteProperty","has","ownKeys","getOwnPropertyDescriptor","configurable","defineArray","propApplier","initializer","Vivificate","clampedArray","defineVisitorArray","finalizeArray","defineSentinel","defineEnum","getNumber","toPrimitive","hint","finalizeEnum","items","itemsByIndex","item","transformDescriptorEnum","findEnum","globalItemsByIndex","globalErrorSet","defineErrorSet","ZigErrorBase","ae","SLOTS","es","finalizeErrorSet","inGlobalSet","stringified","transformDescriptorErrorSet","findError","newItem","defineErrorUnion","valueMember","errorMember","getError","setError","getErrorNumber","setErrorNumber","isValueVoid","Unexpected","defineVisitorErrorUnion","defineFunction","argCount","setPrototypeOf","finalizeFunction","defineOptional","presentMember","getPresent","setPresent","defineVisitorOptional","isPointerOf","Target","isCompatiblePointer","definePointer","targetStructure","targetType","targetSize","addressSize","readAddress","writeAddress","readLength","writeLength","updateTarget","active","findSentinel","setAddress","sentinelCount","setLength","getTargetObject","empty","getConstProxy","getTarget","setTarget","constTarget","Int8Array","isCompatibleBuffer","single","propSetters","begin","proxy","js","defineVisitor","finalizePointer","constProxies","readOnlyProxyHandlers","constTargetProxyHandlers","thisArg","definePrimitive","finalizePrimitive","getLength","adjustIndex","defineSlice","shapeDefiner","shapeChecker","validateValue","getSubArrayView","dv1","dv2","finalizeSlice","objectMembers","defineStruct","backingIntMember","backingInt","defineVectorEntries","defineZigIterator","defineVectorIterator","defineVisitorStruct","dupe","dict","__symbol","symbol","MEMORY","PARENT","ZIG","NAME","TYPE","FLAGS","CLASS","TAG","PROPS","POINTER","SENTINEL","ARRAY","TARGET","ENTRIES","MAX_LENGTH","KEYS","ADDRESS","LENGTH","LAST_ADDRESS","LAST_LENGTH","PROXY","CACHE","SIZE","BIT_SIZE","ALIGN","CONST_TARGET","ENVIRONMENT","ATTRIBUTES","PRIMITIVE","SETTERS","TYPED_ARRAY","THROWING","PROMISE","GENERATOR","ALLOCATOR","SIGNATURE","STRING_RETVAL","UPDATE","RESTORE","RESET","VIVIFICATE","VISIT","COPY","SHAPE","INITIALIZE","RESTRICT","FINALIZE","CAST","RETURN","YIELD","defineProperties","getOwnPropertySymbols","defineValue","getErrorHandler","getPrimitiveName","decodeText","arrays","decoder","decoders","TextDecoder","decode","encodeText","Uint16Array","encoders","TextEncoder","encode","encodeBase64","bstr","btoa","decodeBase64","findSortedIndex","low","high","mid","floor","isMisaligned","alignForward","usizeMin","usizeMax","usizeInvalid","usize","isInvalidAddress","adjustAddress","addend","transformIterable","first","findElements","Arg","isCompatibleType","TypeA","TypeB","isCompatibleInstanceOf","markAsSpecial","getSelf","getProxy","ObjectCache","visitChild","srcChild","builtinVisitors","clear","argSlots","rvSlot","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","hasAwait","currentDeps","outerResolve","depQueues","Set","rej","deps","dep","obj","ret","wrapDeps","getResult","fnQueue","q","definition","o","prop","scriptUrl","__webpack_exports__"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"index.mjs","mappings":"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CAAC,EAAGC,EAAK,CAAC,EAAGC,EAAK,CAAC,EAAGC,EAAK,CAAC,EAAGC,EAAK,CAAC,EAAGC,EAAK,CAAC,EAAGC,EAAK,CAAC,EACvFC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EACjGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EACjGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EACjGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EACjGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EACjGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EACjGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EACjGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EACjGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EACjGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAC3GC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAC3GC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAC3GC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAC3GC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAC3GC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAC3GC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAC3GC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAC3GC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAC3GC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAC3GC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAG/DC,GAAK,CAAC,EAAGC,GAAK,CAAC,EAAGC,GAAK,CAAC,EAAGC,GAAK,CAAC,EAAGC,GAAK,CAAC,EAAGC,GAAK,CAAC,EAAGC,GAAK,CAAC,EAAGC,GAAK,CAAC,EAAGC,GAAK,CAAC,EAAGC,GAAK,CAAC,EACvFC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EACjGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EACjGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EACjGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EACjGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EACjGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EACjGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EACjGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EACjGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EAAGC,GAAM,CAAC,EACjGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAC3GC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAC3GC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAC3GC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAC3GC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAC3GC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAC3GC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAAGC,GAAO,CAAC,EAC3GC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","sources":["webpack://@mateuszjs/magic-render/webpack/runtime/async module","webpack://@mateuszjs/magic-render/./node_modules/svg-parser/dist/svg-parser.esm.js","webpack://@mateuszjs/magic-render/./src/WebGPU/canvasSizeObserver.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/generatePreview.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/getDevice.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/getTexture/index.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/pick.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/pointer.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/programs/drawTriangle/getProgram.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/programs/blur/getProgram.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/programs/drawTexture/getProgram.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/programs/pickTexture/getProgram.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/programs/pickTriangle/getProgram.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/programs/drawMSDF/getProgram.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/programs/initPrograms.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/programs/drawBezier/getProgram.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/programs/draw3dModelTexture/getProgram.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/programs/draw3dModel/getProgram.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/programs/draw3dModelLight/getProgram.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/programs/drawShape/getProgram.ts","webpack://@mateuszjs/magic-render/./src/WebGPU/textureCache.ts","webpack://@mateuszjs/magic-render/./src/getCanvasMatrix.ts","webpack://@mateuszjs/magic-render/./src/getDepthTexture.ts","webpack://@mateuszjs/magic-render/./src/getCanvasRenderDescriptor.ts","webpack://@mateuszjs/magic-render/./src/getMultisampleTexture.ts","webpack://@mateuszjs/magic-render/./src/index.ts","webpack://@mateuszjs/magic-render/./src/loadingTexture.ts","webpack://@mateuszjs/magic-render/./src/run.ts","webpack://@mateuszjs/magic-render/./src/shapes/const.ts","webpack://@mateuszjs/magic-render/./src/shapes/createShape.ts","webpack://@mateuszjs/magic-render/./src/shapes/parseColor.ts","webpack://@mateuszjs/magic-render/./src/shapes/parseEllipse.ts","webpack://@mateuszjs/magic-render/./src/shapes/parsePathData.ts","webpack://@mateuszjs/magic-render/./src/shapes/parseRect.ts","webpack://@mateuszjs/magic-render/./src/textures.ts","webpack://@mateuszjs/magic-render/./src/utils/clamp.ts","webpack://@mateuszjs/magic-render/./src/utils/debounce.ts","webpack://@mateuszjs/magic-render/./src/utils/getDefaultPoints.ts","webpack://@mateuszjs/magic-render/./src/utils/vec3.ts","webpack://@mateuszjs/magic-render/./src/utils/mat4.ts","webpack://@mateuszjs/magic-render/./src/logic/index.zig","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/accessors/all.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/accessors/bool.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/accessors/int.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/accessors/uint.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/constants.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/environment.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/errors.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/features/allocator-methods.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/features/baseline.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/features/call-marshaling-inbound.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/features/call-marshaling-outbound.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/features/data-copying.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/features/int-conversion.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/features/js-allocator.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/features/memory-mapping.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/features/module-loading.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/features/object-linkage.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/features/pointer-synchronization.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/features/thunk-allocation.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/features/view-management.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/features/write-protection.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/index.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/iterators/for-array.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/iterators/for-struct.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/members/all.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/members/base64.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/members/bool.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/members/clamped-array.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/members/data-view.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/members/float.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/members/object.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/members/primitive.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/members/string.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/members/to-json.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/members/type.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/members/typed-array.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/members/uint.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/members/value-of.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/members/void.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/structures/all.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/structures/arg-struct.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/structures/array-like.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/structures/array.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/structures/enum.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/structures/error-set.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/structures/error-union.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/structures/function.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/structures/optional.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/structures/pointer.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/structures/primitive.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/structures/slice.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/structures/struct-like.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/structures/struct.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/symbols.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/utils.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/visitors/all.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/visitors/in-arg-struct.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/visitors/in-array.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/visitors/in-optional.js","webpack://@mateuszjs/magic-render/./node_modules/zigar-runtime/dist/visitors/in-struct.js","webpack://@mateuszjs/magic-render/webpack/bootstrap","webpack://@mateuszjs/magic-render/webpack/runtime/define property getters","webpack://@mateuszjs/magic-render/webpack/runtime/hasOwnProperty shorthand","webpack://@mateuszjs/magic-render/webpack/runtime/publicPath","webpack://@mateuszjs/magic-render/webpack/startup"],"sourcesContent":["var webpackQueues = typeof Symbol === \"function\" ? Symbol(\"webpack queues\") : \"__webpack_queues__\";\nvar webpackExports = typeof Symbol === \"function\" ? Symbol(\"webpack exports\") : \"__webpack_exports__\";\nvar webpackError = typeof Symbol === \"function\" ? Symbol(\"webpack error\") : \"__webpack_error__\";\nvar resolveQueue = (queue) => {\n\tif(queue && queue.d < 1) {\n\t\tqueue.d = 1;\n\t\tqueue.forEach((fn) => (fn.r--));\n\t\tqueue.forEach((fn) => (fn.r-- ? fn.r++ : fn()));\n\t}\n}\nvar wrapDeps = (deps) => (deps.map((dep) => {\n\tif(dep !== null && typeof dep === \"object\") {\n\t\tif(dep[webpackQueues]) return dep;\n\t\tif(dep.then) {\n\t\t\tvar queue = [];\n\t\t\tqueue.d = 0;\n\t\t\tdep.then((r) => {\n\t\t\t\tobj[webpackExports] = r;\n\t\t\t\tresolveQueue(queue);\n\t\t\t}, (e) => {\n\t\t\t\tobj[webpackError] = e;\n\t\t\t\tresolveQueue(queue);\n\t\t\t});\n\t\t\tvar obj = {};\n\t\t\tobj[webpackQueues] = (fn) => (fn(queue));\n\t\t\treturn obj;\n\t\t}\n\t}\n\tvar ret = {};\n\tret[webpackQueues] = x => {};\n\tret[webpackExports] = dep;\n\treturn ret;\n}));\n__webpack_require__.a = (module, body, hasAwait) => {\n\tvar queue;\n\thasAwait && ((queue = []).d = -1);\n\tvar depQueues = new Set();\n\tvar exports = module.exports;\n\tvar currentDeps;\n\tvar outerResolve;\n\tvar reject;\n\tvar promise = new Promise((resolve, rej) => {\n\t\treject = rej;\n\t\touterResolve = resolve;\n\t});\n\tpromise[webpackExports] = exports;\n\tpromise[webpackQueues] = (fn) => (queue && fn(queue), depQueues.forEach(fn), promise[\"catch\"](x => {}));\n\tmodule.exports = promise;\n\tbody((deps) => {\n\t\tcurrentDeps = wrapDeps(deps);\n\t\tvar fn;\n\t\tvar getResult = () => (currentDeps.map((d) => {\n\t\t\tif(d[webpackError]) throw d[webpackError];\n\t\t\treturn d[webpackExports];\n\t\t}))\n\t\tvar promise = new Promise((resolve) => {\n\t\t\tfn = () => (resolve(getResult));\n\t\t\tfn.r = 0;\n\t\t\tvar fnQueue = (q) => (q !== queue && !depQueues.has(q) && (depQueues.add(q), q && !q.d && (fn.r++, q.push(fn))));\n\t\t\tcurrentDeps.map((dep) => (dep[webpackQueues](fnQueue)));\n\t\t});\n\t\treturn fn.r ? promise : getResult();\n\t}, (err) => ((err ? reject(promise[webpackError] = err) : outerResolve(exports)), resolveQueue(queue)));\n\tqueue && queue.d < 0 && (queue.d = 0);\n};","function getLocator(source, options) {\n if (options === void 0) { options = {}; }\n var offsetLine = options.offsetLine || 0;\n var offsetColumn = options.offsetColumn || 0;\n var originalLines = source.split('\\n');\n var start = 0;\n var lineRanges = originalLines.map(function (line, i) {\n var end = start + line.length + 1;\n var range = { start: start, end: end, line: i };\n start = end;\n return range;\n });\n var i = 0;\n function rangeContains(range, index) {\n return range.start <= index && index < range.end;\n }\n function getLocation(range, index) {\n return { line: offsetLine + range.line, column: offsetColumn + index - range.start, character: index };\n }\n function locate(search, startIndex) {\n if (typeof search === 'string') {\n search = source.indexOf(search, startIndex || 0);\n }\n var range = lineRanges[i];\n var d = search >= range.end ? 1 : -1;\n while (range) {\n if (rangeContains(range, search))\n return getLocation(range, search);\n i += d;\n range = lineRanges[i];\n }\n }\n return locate;\n}\nfunction locate(source, search, options) {\n if (typeof options === 'number') {\n throw new Error('locate takes a { startIndex, offsetLine, offsetColumn } object as the third argument');\n }\n return getLocator(source, options)(search, options && options.startIndex);\n}\n\nvar validNameCharacters = /[a-zA-Z0-9:_-]/;\nvar whitespace = /[\\s\\t\\r\\n]/;\nvar quotemark = /['\"]/;\n\nfunction repeat(str, i) {\n\tvar result = '';\n\twhile (i--) { result += str; }\n\treturn result;\n}\n\nfunction parse(source) {\n\tvar header = '';\n\tvar stack = [];\n\n\tvar state = metadata;\n\tvar currentElement = null;\n\tvar root = null;\n\n\tfunction error(message) {\n\t\tvar ref = locate(source, i);\n\t\tvar line = ref.line;\n\t\tvar column = ref.column;\n\t\tvar before = source.slice(0, i);\n\t\tvar beforeLine = /(^|\\n).*$/.exec(before)[0].replace(/\\t/g, ' ');\n\t\tvar after = source.slice(i);\n\t\tvar afterLine = /.*(\\n|$)/.exec(after)[0];\n\n\t\tvar snippet = \"\" + beforeLine + afterLine + \"\\n\" + (repeat(' ', beforeLine.length)) + \"^\";\n\n\t\tthrow new Error(\n\t\t\t(message + \" (\" + line + \":\" + column + \"). If this is valid SVG, it's probably a bug in svg-parser. Please raise an issue at https://github.com/Rich-Harris/svg-parser/issues – thanks!\\n\\n\" + snippet)\n\t\t);\n\t}\n\n\tfunction metadata() {\n\t\twhile ((i < source.length && source[i] !== '<') || !validNameCharacters.test(source[i + 1])) {\n\t\t\theader += source[i++];\n\t\t}\n\n\t\treturn neutral();\n\t}\n\n\tfunction neutral() {\n\t\tvar text = '';\n\t\twhile (i < source.length && source[i] !== '<') { text += source[i++]; }\n\n\t\tif (/\\S/.test(text)) {\n\t\t\tcurrentElement.children.push({ type: 'text', value: text });\n\t\t}\n\n\t\tif (source[i] === '<') {\n\t\t\treturn tag;\n\t\t}\n\n\t\treturn neutral;\n\t}\n\n\tfunction tag() {\n\t\tvar char = source[i];\n\n\t\tif (char === '?') { return neutral; } // <?xml...\n\n\t\tif (char === '!') {\n\t\t\tif (source.slice(i + 1, i + 3) === '--') { return comment; }\n\t\t\tif (source.slice(i + 1, i + 8) === '[CDATA[') { return cdata; }\n\t\t\tif (/doctype/i.test(source.slice(i + 1, i + 8))) { return neutral; }\n\t\t}\n\n\t\tif (char === '/') { return closingTag; }\n\n\t\tvar tagName = getName();\n\n\t\tvar element = {\n\t\t\ttype: 'element',\n\t\t\ttagName: tagName,\n\t\t\tproperties: {},\n\t\t\tchildren: []\n\t\t};\n\n\t\tif (currentElement) {\n\t\t\tcurrentElement.children.push(element);\n\t\t} else {\n\t\t\troot = element;\n\t\t}\n\n\t\tvar attribute;\n\t\twhile (i < source.length && (attribute = getAttribute())) {\n\t\t\telement.properties[attribute.name] = attribute.value;\n\t\t}\n\n\t\tvar selfClosing = false;\n\n\t\tif (source[i] === '/') {\n\t\t\ti += 1;\n\t\t\tselfClosing = true;\n\t\t}\n\n\t\tif (source[i] !== '>') {\n\t\t\terror('Expected >');\n\t\t}\n\n\t\tif (!selfClosing) {\n\t\t\tcurrentElement = element;\n\t\t\tstack.push(element);\n\t\t}\n\n\t\treturn neutral;\n\t}\n\n\tfunction comment() {\n\t\tvar index = source.indexOf('-->', i);\n\t\tif (!~index) { error('expected -->'); }\n\n\t\ti = index + 2;\n\t\treturn neutral;\n\t}\n\n\tfunction cdata() {\n\t\tvar index = source.indexOf(']]>', i);\n\t\tif (!~index) { error('expected ]]>'); }\n\n\t\tcurrentElement.children.push(source.slice(i + 7, index));\n\n\t\ti = index + 2;\n\t\treturn neutral;\n\t}\n\n\tfunction closingTag() {\n\t\tvar tagName = getName();\n\n\t\tif (!tagName) { error('Expected tag name'); }\n\n\t\tif (tagName !== currentElement.tagName) {\n\t\t\terror((\"Expected closing tag </\" + tagName + \"> to match opening tag <\" + (currentElement.tagName) + \">\"));\n\t\t}\n\n\t\tallowSpaces();\n\n\t\tif (source[i] !== '>') {\n\t\t\terror('Expected >');\n\t\t}\n\n\t\tstack.pop();\n\t\tcurrentElement = stack[stack.length - 1];\n\n\t\treturn neutral;\n\t}\n\n\tfunction getName() {\n\t\tvar name = '';\n\t\twhile (i < source.length && validNameCharacters.test(source[i])) { name += source[i++]; }\n\n\t\treturn name;\n\t}\n\n\tfunction getAttribute() {\n\t\tif (!whitespace.test(source[i])) { return null; }\n\t\tallowSpaces();\n\n\t\tvar name = getName();\n\t\tif (!name) { return null; }\n\n\t\tvar value = true;\n\n\t\tallowSpaces();\n\t\tif (source[i] === '=') {\n\t\t\ti += 1;\n\t\t\tallowSpaces();\n\n\t\t\tvalue = getAttributeValue();\n\t\t\tif (!isNaN(value) && value.trim() !== '') { value = +value; } // TODO whitelist numeric attributes?\n\t\t}\n\n\t\treturn { name: name, value: value };\n\t}\n\n\tfunction getAttributeValue() {\n\t\treturn quotemark.test(source[i]) ? getQuotedAttributeValue() : getUnquotedAttributeValue();\n\t}\n\n\tfunction getUnquotedAttributeValue() {\n\t\tvar value = '';\n\t\tdo {\n\t\t\tvar char = source[i];\n\t\t\tif (char === ' ' || char === '>' || char === '/') {\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t\tvalue += char;\n\t\t\ti += 1;\n\t\t} while (i < source.length);\n\n\t\treturn value;\n\t}\n\n\tfunction getQuotedAttributeValue() {\n\t\tvar quotemark = source[i++];\n\n\t\tvar value = '';\n\t\tvar escaped = false;\n\n\t\twhile (i < source.length) {\n\t\t\tvar char = source[i++];\n\t\t\tif (char === quotemark && !escaped) {\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t\tif (char === '\\\\' && !escaped) {\n\t\t\t\tescaped = true;\n\t\t\t}\n\n\t\t\tvalue += escaped ? (\"\\\\\" + char) : char;\n\t\t\tescaped = false;\n\t\t}\n\t}\n\n\tfunction allowSpaces() {\n\t\twhile (i < source.length && whitespace.test(source[i])) { i += 1; }\n\t}\n\n\tvar i = metadata.length;\n\twhile (i < source.length) {\n\t\tif (!state) { error('Unexpected character'); }\n\t\tstate = state();\n\t\ti += 1;\n\t}\n\n\tif (state !== neutral) {\n\t\terror('Unexpected end of input');\n\t}\n\n\tif (root.tagName === 'svg') { root.metadata = header; }\n\treturn {\n\t\ttype: 'root',\n\t\tchildren: [root]\n\t};\n}\n\nexport { parse };\n//# sourceMappingURL=svg-parser.esm.js.map\n","function updateCanvasSize(\n canvas: HTMLCanvasElement,\n width: number,\n height: number,\n device: GPUDevice\n) {\n canvas.width = Math.max(1, Math.min(width, device.limits.maxTextureDimension2D))\n canvas.height = Math.max(1, Math.min(height, device.limits.maxTextureDimension2D))\n}\n\nexport default function canvasSizeObserver(\n canvas: HTMLCanvasElement,\n device: GPUDevice,\n callback: VoidFunction\n) {\n // TODO: should we also handle window.devicePixelRatio; ?\n const observer = new ResizeObserver((entries) => {\n for (const entry of entries) {\n const canvas = entry.target as HTMLCanvasElement\n // Safari does not support devicePixelContentBoxSize\n const width =\n entry.devicePixelContentBoxSize?.[0].inlineSize ??\n entry.contentBoxSize[0].inlineSize * devicePixelRatio\n const height =\n entry.devicePixelContentBoxSize?.[0].blockSize ??\n entry.contentBoxSize[0].blockSize * devicePixelRatio\n\n updateCanvasSize(canvas, width, height, device)\n callback()\n }\n })\n\n try {\n observer.observe(canvas, { box: 'device-pixel-content-box' })\n } catch {\n observer.observe(canvas, { box: 'content-box' })\n }\n\n // observer calls it anyway but it just happens late enough that user see a flicker\n // it it just displayed for a brief second, so we don't play with devicePixelContentBoxSize or devicePixelRatio\n updateCanvasSize(canvas, canvas.clientWidth, canvas.clientHeight, device)\n}\n","import { camera } from './pointer'\nimport Logic from 'logic/index.zig'\n\nexport default async function generatePreview(\n device: GPUDevice,\n presentationFormat: GPUTextureFormat,\n creatorCanvas: HTMLCanvasElement,\n projectWidth: number,\n projectHeight: number,\n capturePreview: (canvas: HTMLCanvasElement, context: GPUCanvasContext) => Promise<void>,\n onPreviewUpdate: (canvas: HTMLCanvasElement) => void\n) {\n const size = Math.min(projectWidth, projectHeight)\n const previewCanvas = document.createElement('canvas')\n previewCanvas.width = size\n previewCanvas.height = size\n const previewContext = previewCanvas.getContext('webgpu')!\n\n previewContext.configure({\n device,\n format: presentationFormat,\n })\n\n // setup viewport for the preview\n const cameraCopy = { ...camera }\n\n const scale = previewCanvas.width / previewCanvas.clientWidth\n camera.x = (previewCanvas.width - projectWidth) / 2\n camera.y = (previewCanvas.height - projectHeight) / 2\n camera.zoom = 1\n\n Logic.update_render_scale(scale)\n\n capturePreview(previewCanvas, previewContext).then(() => {\n onPreviewUpdate(previewCanvas)\n previewContext.unconfigure()\n // roll back changed back to original\n camera.x = cameraCopy.x\n camera.y = cameraCopy.y\n camera.zoom = cameraCopy.zoom\n Logic.update_render_scale(creatorCanvas.width / (creatorCanvas.clientWidth * camera.zoom))\n })\n}\n","export default async function getDevice() {\n if (!navigator.gpu) {\n throw Error(\"this browser does not support WebGPU\")\n }\n\n const adapter = await navigator.gpu.requestAdapter()\n \n\n if (!adapter) {\n throw Error(\"this browser supports webgpu but it appears disabled\")\n }\n\n const device = await adapter.requestDevice()\n device.lost.then((info) => {\n console.error(`WebGPU device was lost: ${info.message}`)\n\n if (info.reason !== \"destroyed\") {\n // reprot issue to the tracking system\n // getDevice(callback);\n }\n })\n\n return device\n}","import createCheckedImageData from './createCheckedImageData'\nimport generateMipmapsArray from './generateMimapsArray'\n\ninterface Options {\n mips?: boolean\n flipY?: boolean\n depthOrArrayLayers?: number\n}\n\ntype TextureSource =\n | ImageBitmap\n | HTMLVideoElement\n | HTMLCanvasElement\n | HTMLImageElement\n | OffscreenCanvas\n\nconst numMipLevels = (...sizes: number[]) => {\n const maxSize = Math.max(...sizes)\n return (1 + Math.log2(maxSize)) | 0\n}\n\nexport interface TextureSlice {\n source: GPUCopyExternalImageSource\n fakeMipmaps: boolean\n}\n\nfunction createCheckedMipmap(levels: Array<{ size: number; color: string }>) {\n const ctx = new OffscreenCanvas(0, 0).getContext('2d', { willReadFrequently: true })!\n\n return levels.map(({ size, color }, i) => {\n ctx.canvas.width = size\n ctx.canvas.height = size\n ctx.fillStyle = i & 1 ? '#000' : '#fff'\n ctx.fillRect(0, 0, size, size)\n ctx.fillStyle = color\n ctx.fillRect(0, 0, size / 2, size / 2)\n ctx.fillRect(size / 2, size / 2, size / 2, size / 2)\n\n ctx.fillStyle = i & 1 ? '#FFFFFF' : '#000000'\n ctx.font = `${size * 0.3}px serif`\n ctx.textAlign = 'center'\n ctx.textBaseline = 'middle'\n ;[\n { x: 0.25, y: 0.25 },\n { x: 0.25, y: 0.75 },\n { x: 0.75, y: 0.75 },\n { x: 0.75, y: 0.25 },\n ].forEach((p) => {\n ctx.fillText(i.toString(), p.x * size, p.y * size)\n })\n\n return ctx.getImageData(0, 0, size, size)\n })\n}\n\nexport function createTextureArray(\n device: GPUDevice,\n width: number,\n height: number,\n slices: number\n) {\n return device.createTexture({\n label: '2d array texture',\n format: 'rgba8unorm',\n mipLevelCount: 1 + Math.log2(2048),\n size: [width, height, slices],\n usage:\n GPUTextureUsage.TEXTURE_BINDING |\n GPUTextureUsage.COPY_DST |\n GPUTextureUsage.RENDER_ATTACHMENT,\n })\n}\n\n// adds texture ot texture array\nexport function attachSlice(\n device: GPUDevice,\n textue2dArray: GPUTexture,\n width: number,\n height: number,\n source: GPUCopyExternalImageSource,\n sliceIndex: number,\n options: Options = {}\n) {\n device.queue.copyExternalImageToTexture(\n { source },\n { texture: textue2dArray, origin: { z: sliceIndex }, mipLevel: 0 },\n { width, height }\n )\n\n // if (texSlice.fakeMipmaps) {\n // let mipLevel = 1, size = width\n // while ((size >>= 1) >= 1) {\n // const { data, width, height} = createCheckedImageData(size, mipLevel)\n // device.queue.writeTexture(\n // { texture: textue2dArray, origin: { z: sliceIndex }, mipLevel },\n // data,\n // { bytesPerRow: width * 4 },\n // { width, height },\n // );\n // mipLevel++\n // }\n // } else {\n // generateMipmapsArray(device, textue2dArray, {\n // baseArrayLayer: sliceIndex,\n // arrayLayerCount: 1,\n // });\n // }\n}\n\nexport function createTextureFromSource(\n device: GPUDevice,\n source: TextureSource,\n options: Options = {}\n) {\n const texture = device.createTexture({\n format: 'rgba8unorm',\n mipLevelCount: options.mips ? numMipLevels(source.width, source.height) : 1,\n size: [source.width, source.height],\n usage:\n GPUTextureUsage.TEXTURE_BINDING |\n GPUTextureUsage.COPY_DST |\n GPUTextureUsage.RENDER_ATTACHMENT,\n })\n copySourceToTexture(device, texture, source, options)\n return texture\n}\n\nfunction copySourceToTexture(\n device: GPUDevice,\n texture: GPUTexture,\n source: TextureSource,\n { flipY, depthOrArrayLayers }: Options = {}\n) {\n device.queue.copyExternalImageToTexture(\n { source, flipY },\n {\n texture,\n // premultipliedAlpha: true\n },\n { width: source.width, height: source.height, depthOrArrayLayers }\n )\n\n // if (texture.mipLevelCount > 1) {\n // generateMipmaps(device, texture);\n // }\n}\n\nexport async function loadImageBitmap(url: string) {\n const res = await fetch(url)\n const blob = await res.blob()\n return await createImageBitmap(blob, {\n colorSpaceConversion: 'none',\n premultiplyAlpha: 'premultiply',\n })\n}\n\nexport async function createTextureFromImage(device: GPUDevice, url: string, options: Options) {\n const imgBitmap = await loadImageBitmap(url)\n return createTextureFromSource(device, imgBitmap, options)\n}\n","import mat4 from 'utils/mat4'\nimport { pointer } from './pointer'\nimport { on_update_pick } from '../logic/index.zig'\n\nconst NUM_PIXELS = 1\n\nexport default class PickManager {\n private pickBuffer: GPUBuffer\n private pickTexture: GPUTexture\n private pickDepthTexture: GPUTexture\n private isPreviousPickDone = true\n\n constructor(device: GPUDevice) {\n this.pickBuffer = device.createBuffer({\n size: NUM_PIXELS * 4,\n usage: GPUBufferUsage.MAP_READ | GPUBufferUsage.COPY_DST,\n })\n\n this.pickTexture = device.createTexture({\n size: [1, 1],\n format: 'r32uint',\n usage: GPUTextureUsage.COPY_SRC | GPUTextureUsage.RENDER_ATTACHMENT,\n })\n\n this.pickDepthTexture = device.createTexture({\n size: [1, 1],\n format: 'depth24plus',\n usage: GPUTextureUsage.RENDER_ATTACHMENT,\n })\n }\n\n /**\n * Starts a picking render pass.\n * @param encoder The GPUCommandEncoder to use for the render pass.\n * @returns An object which contains render pass and a callback to end picking.\n */\n startPicking(encoder: GPUCommandEncoder): { pass: GPURenderPassEncoder; end: VoidFunction } {\n const descriptor: GPURenderPassDescriptor = {\n // describe which textures we want to raw to and how use them\n label: 'our render to canvas renderPass',\n colorAttachments: [\n {\n view: this.pickTexture.createView(),\n loadOp: 'clear',\n clearValue: [0, 0, 0, 1],\n storeOp: 'store',\n } as const,\n ],\n // depthStencilAttachment: {\n // view: this.pickDepthTexture.createView(), // placholder to calm down TS\n // depthLoadOp: 'clear',\n // depthClearValue: 1.0,\n // depthStoreOp: 'discard',\n // } as const,\n }\n\n const pass = encoder.beginRenderPass(descriptor)\n\n const width = 1\n const height = 1\n pass.setViewport(0, 0, width, height, 0, 1)\n // Set the scissor rectangle to clip rendering to the 1x1 area\n pass.setScissorRect(0, 0, width, height)\n\n const endPicking = () => {\n pass.end()\n\n if (this.isPreviousPickDone) {\n encoder.copyTextureToBuffer(\n {\n texture: this.pickTexture,\n origin: { x: 0, y: 0 },\n },\n {\n buffer: this.pickBuffer,\n },\n {\n width: NUM_PIXELS,\n }\n )\n }\n }\n\n return { pass, end: endPicking }\n }\n\n createMatrix(canvas: HTMLCanvasElement, canvasMatrix: Float32Array) {\n const tx = -(2 * (pointer.x / canvas.width) - 1)\n const ty = 2 * (pointer.y / canvas.height) - 1\n\n const pickMatrix = [\n mat4.scaling([canvas.width, canvas.height, 0]), // scale to 1px convers whole shader output\n mat4.translation([tx, ty, 0]),\n canvasMatrix,\n ].reduce(\n (accMatrix, rotationMatrix) => mat4.multiply(accMatrix, rotationMatrix),\n mat4.translation([-1, 1, 0]) // move (0,0) to the top left corner\n )\n\n return pickMatrix\n }\n\n async asyncPick() {\n if (!this.isPreviousPickDone) return\n this.isPreviousPickDone = false\n try {\n await this.pickBuffer.mapAsync(GPUMapMode.READ, 0, 4 * NUM_PIXELS)\n const [id] = new Uint32Array(this.pickBuffer.getMappedRange(0, 4 * NUM_PIXELS))\n on_update_pick(id)\n\n let i = 0\n while (i < pointer.afterPickEventsQueue.length) {\n // this is pretty stupid, because pointer.x, pointer.y were updated immediately\n // without waiting for this place right here\n const { requireNewPick, cb } = pointer.afterPickEventsQueue[i]\n if (requireNewPick && i > 0) break // we need to start new picking pass\n cb()\n i++\n }\n pointer.afterPickEventsQueue.splice(0, i) // remove processed events\n\n this.pickBuffer.unmap()\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (err) {\n /* ignorign errors when map fails because device was destroyed(so buffer too and was unmapped before mapAsync completed)*/\n }\n this.isPreviousPickDone = true\n }\n}\n","import * as Logic from '../logic/index.zig'\nimport clamp from '../utils/clamp'\n\nconst OUTSIDE_CANVAS = -1\n\nenum MouseMode {\n Pan,\n Zoom,\n None,\n}\n\nlet mouseMode = MouseMode.None\nlet panCameraStart: Point | null = null\n\nexport const camera = {\n x: 0,\n y: 0,\n zoom: 1,\n}\n\nexport const pointer = {\n x: 0,\n y: 0,\n afterPickEventsQueue: [] as Array<{ requireNewPick: boolean; cb: VoidFunction }>,\n /* this queue exists because wen mobiel device is touched we have to:\n 1) update pointer,\n 2) do picking,\n 3) record a click in order,\n so click has to wait after pick is done */\n}\n\nexport default function initMouseController(\n canvas: HTMLCanvasElement,\n onZoom: VoidFunction,\n onStartProcessing: VoidFunction\n) {\n pointer.x = OUTSIDE_CANVAS\n pointer.y = OUTSIDE_CANVAS\n\n function getZigAbsolutePointer(): [number, number] {\n return [\n (pointer.x - camera.x) / camera.zoom,\n (canvas.height - pointer.y - camera.y) / camera.zoom,\n ]\n }\n\n function updatePointer(e: MouseEvent) {\n const rect = canvas.getBoundingClientRect()\n const scale = canvas.width / rect.width\n pointer.x = (e.clientX - rect.left) * scale\n pointer.y = (e.clientY - rect.top) * scale\n }\n\n canvas.addEventListener('mouseleave', () => {\n onStartProcessing()\n canvas.style.cursor = 'default'\n\n const update = () => {\n pointer.x = OUTSIDE_CANVAS\n pointer.y = OUTSIDE_CANVAS\n Logic.on_pointer_leave()\n }\n if (pointer.afterPickEventsQueue.length > 0) {\n pointer.afterPickEventsQueue.push({\n requireNewPick: false,\n cb: update,\n })\n } else {\n update()\n }\n })\n\n canvas.addEventListener('mousemove', (e) => {\n if (panCameraStart) {\n updatePointer(e)\n\n camera.x = pointer.x - panCameraStart.x\n camera.y = -(pointer.y - panCameraStart.y)\n return\n }\n\n onStartProcessing()\n\n const move = () => {\n updatePointer(e)\n Logic.on_pointer_move(...getZigAbsolutePointer())\n }\n if (pointer.afterPickEventsQueue.length > 0) {\n pointer.afterPickEventsQueue.push({\n requireNewPick: false,\n cb: move,\n })\n } else {\n move()\n }\n })\n\n canvas.addEventListener('mousedown', (e) => {\n if (mouseMode === MouseMode.Pan) {\n updatePointer(e)\n panCameraStart = {\n x: pointer.x - camera.x,\n y: pointer.y + camera.y,\n }\n canvas.style.cursor = 'grabbing'\n return\n }\n panCameraStart = null\n\n onStartProcessing()\n\n updatePointer(e)\n pointer.afterPickEventsQueue.push({\n requireNewPick: true,\n cb: Logic.on_pointer_down.bind(null, ...getZigAbsolutePointer()),\n })\n })\n\n canvas.addEventListener('mouseup', () => {\n mouseMode = MouseMode.None\n panCameraStart = null\n canvas.style.cursor = 'default'\n\n onStartProcessing()\n\n if (pointer.afterPickEventsQueue.length > 0) {\n pointer.afterPickEventsQueue.push({\n requireNewPick: false,\n cb: Logic.on_pointer_up,\n })\n } else {\n Logic.on_pointer_up()\n }\n })\n\n /* zoom functionality shared between wheel and keyboard */\n function performZoom(zoomDelta: number, centerX: number, centerY: number) {\n const oldZoom = camera.zoom\n camera.zoom = clamp(camera.zoom + zoomDelta, 0.1, 20)\n onZoom()\n\n const zoomFactor = camera.zoom / oldZoom\n\n camera.x = centerX - (centerX - camera.x) * zoomFactor\n const realY = canvas.height - centerY\n camera.y = realY - (realY - camera.y) * zoomFactor\n }\n\n function zoom(delta: number) {\n const oldZoom = camera.zoom\n camera.zoom = clamp(camera.zoom - delta * 0.005, 0.1, 20)\n onZoom()\n const zoomFactor = camera.zoom / oldZoom\n camera.x = pointer.x - (pointer.x - camera.x) * zoomFactor\n const realY = canvas.height - pointer.y\n camera.y = realY - (realY - camera.y) * zoomFactor\n }\n\n /* panning , supports both scroll and touch, expect Safari */\n canvas.addEventListener('wheel', (event) => {\n updatePointer(event)\n event.preventDefault()\n if (mouseMode === MouseMode.Zoom) {\n const delta = Math.abs(event.deltaY) > Math.abs(event.deltaX) ? event.deltaY : -event.deltaX\n zoom(delta)\n } else {\n if (event.ctrlKey) {\n zoom(event.deltaY * camera.zoom)\n } else {\n camera.x -= event.deltaX\n camera.y += event.deltaY\n }\n }\n })\n // pointer.zoom = clamp(pointer.zoom + event.deltaY * 0.01, 0.1, 100)\n\n document.body.addEventListener('keydown', (event) => {\n switch (event.code) {\n case 'Space':\n event.preventDefault()\n if (mouseMode !== MouseMode.Pan) {\n canvas.style.cursor = 'grab'\n mouseMode = MouseMode.Pan\n }\n break\n case 'AltLeft':\n case 'AltRight':\n event.preventDefault()\n mouseMode = MouseMode.Zoom\n break\n case 'Escape':\n event.preventDefault()\n Logic.commit_changes()\n break\n case '=':\n case '+':\n // Zoom in with Ctrl/Cmd + Plus\n if (event.ctrlKey || event.metaKey) {\n event.preventDefault()\n const centerX = pointer.x !== OUTSIDE_CANVAS ? pointer.x : canvas.width / 2\n const centerY = pointer.y !== OUTSIDE_CANVAS ? pointer.y : canvas.height / 2\n performZoom(0.1, centerX, centerY)\n }\n break\n case '-':\n case '_':\n // Zoom out with Ctrl/Cmd/Shift + Minus\n if (event.ctrlKey || event.metaKey || event.shiftKey) {\n event.preventDefault()\n const centerX = pointer.x !== OUTSIDE_CANVAS ? pointer.x : canvas.width / 2\n const centerY = pointer.y !== OUTSIDE_CANVAS ? pointer.y : canvas.height / 2\n performZoom(-0.1, centerX, centerY)\n }\n break\n }\n })\n document.body.addEventListener('keyup', (event) => {\n if (event.code === 'Space' || event.key === 'Alt') {\n mouseMode = MouseMode.None\n }\n if (event.code === 'Space' && panCameraStart === null) {\n canvas.style.cursor = 'default'\n }\n })\n\n // The code below is from mozzila MDN docs, and it's a good base once we can test on mobile\n\n // function updateBackground(ev: TouchEvent) {\n // switch (ev.targetTouches.length) {\n // case 1:\n // console.log('single tap')\n // break\n // case 2:\n // console.log('Two simultaneous touches')\n // break\n // default:\n // console.log('More than two simultaneous touches')\n // }\n // }\n\n // const tpCache: Touch[] = []\n\n // canvas.addEventListener('touchstart', (event) => {\n // // If the user makes simultaneous touches, the browser will fire a\n // // separate touchstart event for each touch point. Thus if there are\n // // three simultaneous touches, the first touchstart event will have\n // // targetTouches length of one, the second event will have a length\n // // of two, and so on.\n // console.log(event.targetTouches.length)\n // event.preventDefault()\n // // Cache the touch points for later processing of 2-touch pinch/zoom\n // if (event.targetTouches.length === 2) {\n // for (const touch of event.targetTouches) {\n // tpCache.push(touch)\n // }\n // }\n // // if (logEvents) log('touchStart', event, true)\n // updateBackground(event)\n // })\n\n // canvas.addEventListener('touchmove', (ev) => {\n // // Note: if the user makes more than one \"simultaneous\" touches, most browsers\n // // fire at least one touchmove event and some will fire several touch moves.\n // // Consequently, an application might want to \"ignore\" some touch moves.\n // //\n // // This function sets the target element's border to \"dashed\" to visually\n // // indicate the target received a move event.\n // //\n // ev.preventDefault()\n // // if (logEvents) log('touchMove', ev, false)\n // // To avoid too much color flashing many touchmove events are started,\n // // don't update the background if two touch points are active\n // if (!(ev.touches.length === 2 && ev.targetTouches.length === 2)) updateBackground(ev)\n\n // // Set the target element's border to dashed to give a clear visual\n // // indication the element received a move event.\n // // ev.target.style.border = 'dashed'\n\n // // Check this event for 2-touch Move/Pinch/Zoom gesture\n // handlePinchZoom(ev)\n // })\n\n // function handlePinchZoom(ev: TouchEvent) {\n // if (ev.targetTouches.length === 2 && ev.changedTouches.length === 2) {\n // // Check if the two target touches are the same ones that started\n // // the 2-touch\n // const reverseTpCache = tpCache.slice().reverse()\n // const point1 = reverseTpCache.findIndex(\n // (tp) => tp.identifier === ev.targetTouches[0].identifier\n // )\n // const point2 = reverseTpCache.findIndex(\n // (tp) => tp.identifier === ev.targetTouches[1].identifier\n // )\n\n // if (point1 >= 0 && point2 >= 0) {\n // // Calculate the difference between the start and move coordinates\n // const diff1 = Math.abs(tpCache[point1].clientX - ev.targetTouches[0].clientX)\n // const diff2 = Math.abs(tpCache[point2].clientX - ev.targetTouches[1].clientX)\n\n // // This threshold is device dependent as well as application specific\n // const PINCH_THRESHOLD = (ev.target as HTMLCanvasElement).clientWidth / 10\n // if (diff1 >= PINCH_THRESHOLD && diff2 >= PINCH_THRESHOLD) {\n // // ev.target.style.background = 'green'\n // console.log('Pinch zoom detected')\n // }\n // } else {\n // // empty tpCache\n // tpCache.length = 0\n // }\n // }\n // }\n\n // function endHandler(ev: TouchEvent) {\n // ev.preventDefault()\n // // if (logEvents) log(ev.type, ev, false)\n // if (ev.targetTouches.length === 0) {\n // // Restore background and border to original values\n // // ev.target.style.background = 'white'\n // // ev.target.style.border = '1px solid black'\n // }\n // }\n\n // canvas.addEventListener('touchcancel', endHandler)\n // canvas.addEventListener('touchend', endHandler)\n}\n","import shaderCode from './shader.wgsl'\n\nconst INSTANCE_STRIDE =\n 4 * 3 /* positon */ + 1 /* color */ + 3 /* value of roudned corner for each of three positions */\n\nexport default function getProgram(\n device: GPUDevice,\n presentationFormat: GPUTextureFormat,\n matrixBuffer: GPUBuffer,\n buffersToDestroy: GPUBuffer[]\n) {\n const module = device.createShaderModule({\n label: 'draw triangle module',\n code: shaderCode,\n })\n\n const pipeline = device.createRenderPipeline({\n label: 'draw triangle pipeline',\n layout: 'auto',\n vertex: {\n module,\n entryPoint: 'vs',\n buffers: [\n {\n arrayStride: INSTANCE_STRIDE * 4, // The size in bytes for one instance's data\n stepMode: 'instance',\n attributes: [\n { shaderLocation: 0, offset: 0, format: 'float32x4' }, // position 0\n { shaderLocation: 1, offset: 16, format: 'float32x4' }, // position 1\n { shaderLocation: 2, offset: 16 + 16, format: 'float32x4' }, // position 2\n { shaderLocation: 3, offset: 16 + 16 + 16, format: 'unorm8x4' }, // color 'rgba8unorm'\n { shaderLocation: 4, offset: 16 + 16 + 16 + 4, format: 'float32x3' }, // rounded corner values\n ] as const,\n },\n ],\n },\n fragment: {\n module,\n entryPoint: 'fs',\n targets: [\n {\n format: presentationFormat,\n blend: {\n color: {\n srcFactor: 'one',\n dstFactor: 'one-minus-src-alpha',\n },\n alpha: {\n srcFactor: 'one',\n dstFactor: 'one-minus-src-alpha',\n },\n },\n },\n ],\n },\n multisample: {\n count: 4,\n },\n })\n\n // Cache bind group for this program (no texture needed)\n const cachedBindGroup = device.createBindGroup({\n layout: pipeline.getBindGroupLayout(0),\n entries: [{ binding: 0, resource: { buffer: matrixBuffer } }],\n })\n\n return function drawTriangle(pass: GPURenderPassEncoder, vertexData: DataView) {\n const numInstances = vertexData.byteLength / (4 * INSTANCE_STRIDE)\n\n const vertexBuffer = device.createBuffer({\n label: 'draw triangle - vertex buffer',\n size: vertexData.byteLength,\n usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(vertexBuffer, 0, vertexData)\n buffersToDestroy.push(vertexBuffer)\n\n pass.setPipeline(pipeline)\n pass.setVertexBuffer(0, vertexBuffer)\n pass.setBindGroup(0, cachedBindGroup)\n pass.draw(3, numInstances)\n }\n}\n","import shaderCode from \"./index.wgsl\"\n\nconst tileDim = 128\nconst batch = [4, 4]\n\nexport default function getProgram(device: GPUDevice) {\n const module = device.createShaderModule({\n label: \"blur shader module\",\n code: shaderCode,\n })\n\n const blurPipeline = device.createComputePipeline({\n layout: 'auto',\n compute: {\n module,\n entryPoint: 'main',\n },\n })\n\n return function renderBlur(\n texture: GPUTexture,\n commandEncoder: GPUCommandEncoder,\n ): GPUTexture {\n \n const textures = [0, 1].map(() => {\n return device.createTexture({\n size: {\n width: texture.width,\n height: texture.height,\n },\n format: 'rgba8unorm',\n usage:\n GPUTextureUsage.COPY_DST |\n GPUTextureUsage.STORAGE_BINDING |\n GPUTextureUsage.TEXTURE_BINDING,\n })\n })\n \n const buffer0 = (() => {\n const buffer = device.createBuffer({\n size: 4,\n mappedAtCreation: true,\n usage: GPUBufferUsage.UNIFORM,\n })\n new Uint32Array(buffer.getMappedRange())[0] = 0\n buffer.unmap()\n return buffer\n })()\n \n const buffer1 = (() => {\n const buffer = device.createBuffer({\n size: 4,\n mappedAtCreation: true,\n usage: GPUBufferUsage.UNIFORM,\n })\n new Uint32Array(buffer.getMappedRange())[0] = 1\n buffer.unmap()\n return buffer\n })()\n \n const blurParamsBuffer = device.createBuffer({\n size: 8,\n usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.UNIFORM,\n })\n\n const sampler = device.createSampler({\n magFilter: 'linear',\n minFilter: 'linear',\n })\n \n const computeConstants = device.createBindGroup({\n layout: blurPipeline.getBindGroupLayout(0),\n entries: [\n {\n binding: 0,\n resource: sampler,\n },\n {\n binding: 1,\n resource: {\n buffer: blurParamsBuffer,\n },\n },\n ],\n })\n \n const computeBindGroup0 = device.createBindGroup({\n layout: blurPipeline.getBindGroupLayout(1),\n entries: [\n {\n binding: 1,\n resource: texture.createView(),\n },\n {\n binding: 2,\n resource: textures[0].createView(),\n },\n {\n binding: 3,\n resource: {\n buffer: buffer0,\n },\n },\n ],\n })\n \n const computeBindGroup1 = device.createBindGroup({\n layout: blurPipeline.getBindGroupLayout(1),\n entries: [\n {\n binding: 1,\n resource: textures[0].createView(),\n },\n {\n binding: 2,\n resource: textures[1].createView(),\n },\n {\n binding: 3,\n resource: {\n buffer: buffer1,\n },\n },\n ],\n })\n \n const computeBindGroup2 = device.createBindGroup({\n layout: blurPipeline.getBindGroupLayout(1),\n entries: [\n {\n binding: 1,\n resource: textures[1].createView(),\n },\n {\n binding: 2,\n resource: textures[0].createView(),\n },\n {\n binding: 3,\n resource: {\n buffer: buffer0,\n },\n },\n ],\n })\n \n const settings = {\n filterSize: 15,\n iterations: 2,\n }\n\n // const blockDim = 128 - (15 - 1) = 114\n const blockDim = tileDim - (settings.filterSize - 1)\n device.queue.writeBuffer(\n blurParamsBuffer,\n 0,\n new Uint32Array([settings.filterSize, blockDim])\n )\n\n const computePass = commandEncoder.beginComputePass()\n computePass.setPipeline(blurPipeline)\n computePass.setBindGroup(0, computeConstants)\n\n computePass.setBindGroup(1, computeBindGroup0)\n computePass.dispatchWorkgroups(\n Math.ceil(texture.width / blockDim),\n Math.ceil(texture.height / batch[1])\n )\n\n computePass.setBindGroup(1, computeBindGroup1)\n computePass.dispatchWorkgroups(\n Math.ceil(texture.height / blockDim),\n Math.ceil(texture.width / batch[1])\n )\n\n for (let i = 0; i < settings.iterations - 1; ++i) {\n computePass.setBindGroup(1, computeBindGroup2)\n computePass.dispatchWorkgroups(\n Math.ceil(texture.width / blockDim), // 1200 / 114 = 11 ~ 10.52\n Math.ceil(texture.height / batch[1]) // 800 / 4 = 200\n )\n // exchange width with height!\n computePass.setBindGroup(1, computeBindGroup1)\n computePass.dispatchWorkgroups(\n Math.ceil(texture.height / blockDim),\n Math.ceil(texture.width / batch[1])\n )\n }\n\n computePass.end()\n\n return textures[1]\n }\n}\n","import shaderCode from './shader.wgsl'\n\nconst STRIDE = 4\nexport default function getProgram(\n device: GPUDevice,\n presentationFormat: GPUTextureFormat,\n matrixBuffer: GPUBuffer\n) {\n const module = device.createShaderModule({\n label: 'draw texture module',\n code: shaderCode,\n })\n\n const sampler = device.createSampler({\n minFilter: 'linear',\n magFilter: 'linear',\n })\n\n const pipeline = device.createRenderPipeline({\n label: 'draw texture pipeline',\n layout: 'auto',\n vertex: {\n module,\n entryPoint: 'vs',\n buffers: [\n {\n arrayStride: STRIDE * 4,\n attributes: [\n { shaderLocation: 0, offset: 0, format: 'float32x4' }, // destination(xy) and source (zw) positions\n ] as const,\n },\n ],\n },\n fragment: {\n module,\n entryPoint: 'fs',\n targets: [\n {\n format: presentationFormat,\n blend: {\n color: {\n srcFactor: 'one',\n dstFactor: 'one-minus-src-alpha',\n },\n alpha: {\n srcFactor: 'one',\n dstFactor: 'one-minus-src-alpha',\n },\n },\n },\n ],\n },\n multisample: {\n count: 4,\n },\n })\n\n // Cache bind groups per texture to avoid recreating them\n const bindGroupCache = new WeakMap<GPUTexture, GPUBindGroup>()\n\n return function drawTexture(\n pass: GPURenderPassEncoder,\n vertexData: DataView,\n texture: GPUTexture\n ) {\n const numVertices = vertexData.byteLength / (4 * STRIDE)\n\n const vertexBuffer = device.createBuffer({\n label: 'draw texture - vertex buffer',\n size: vertexData.byteLength,\n usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\n })\n\n device.queue.writeBuffer(vertexBuffer, 0, vertexData)\n\n // Get or create bind group for this texture\n let bindGroup = bindGroupCache.get(texture)\n if (!bindGroup) {\n bindGroup = device.createBindGroup({\n layout: pipeline.getBindGroupLayout(0),\n entries: [\n { binding: 0, resource: { buffer: matrixBuffer } },\n { binding: 1, resource: sampler },\n { binding: 2, resource: texture.createView() },\n ],\n })\n bindGroupCache.set(texture, bindGroup)\n }\n\n pass.setPipeline(pipeline)\n pass.setVertexBuffer(0, vertexBuffer)\n pass.setBindGroup(0, bindGroup)\n pass.draw(numVertices)\n }\n}\n","import shaderCode from './shader.wgsl'\n\nconst STRIDE = 4 + 1\n\nexport default function getProgram(device: GPUDevice, matrixBuffer: GPUBuffer) {\n const module = device.createShaderModule({\n label: 'pick texture module',\n code: shaderCode,\n })\n\n const sampler = device.createSampler({\n minFilter: 'linear',\n magFilter: 'linear',\n })\n\n const pipeline = device.createRenderPipeline({\n label: 'pick texture pipeline',\n layout: 'auto',\n vertex: {\n module,\n entryPoint: 'vs',\n buffers: [\n {\n arrayStride: STRIDE * 4,\n attributes: [\n { shaderLocation: 0, offset: 0, format: 'float32x4' }, // destination(xy) and source (zw) positions\n { shaderLocation: 1, offset: 16, format: 'uint32' }, // id\n ] as const,\n },\n ],\n },\n fragment: {\n module,\n entryPoint: 'fs',\n targets: [\n {\n // format: debugPresentationFormat,\n format: 'r32uint',\n },\n ],\n },\n })\n\n // Cache bind groups per texture to avoid recreating them\n const bindGroupCache = new WeakMap<GPUTexture, GPUBindGroup>()\n\n return function pickTexture(\n pass: GPURenderPassEncoder,\n vertexData: DataView,\n texture: GPUTexture\n ) {\n const numVertices = vertexData.byteLength / (4 * STRIDE)\n\n const vertexBuffer = device.createBuffer({\n label: 'pick texture - vertex buffer',\n size: vertexData.byteLength,\n usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(vertexBuffer, 0, vertexData)\n\n // Get or create bind group for this texture\n let bindGroup = bindGroupCache.get(texture)\n if (!bindGroup) {\n bindGroup = device.createBindGroup({\n layout: pipeline.getBindGroupLayout(0),\n entries: [\n { binding: 0, resource: { buffer: matrixBuffer } },\n { binding: 1, resource: sampler },\n { binding: 2, resource: texture.createView() },\n ],\n })\n bindGroupCache.set(texture, bindGroup)\n }\n\n pass.setPipeline(pipeline)\n pass.setVertexBuffer(0, vertexBuffer)\n pass.setBindGroup(0, bindGroup)\n pass.draw(numVertices)\n }\n}\n","import shaderCode from './shader.wgsl'\n\nconst INSTANCE_STRIDE =\n 4 * 3 /* positon */ + 1 /* id */ + 3 /* value of roudned corner for each of three positions */\n\nexport default function getProgram(device: GPUDevice, matrixBuffer: GPUBuffer) {\n const module = device.createShaderModule({\n label: 'pick triangle module',\n code: shaderCode,\n })\n\n const pipeline = device.createRenderPipeline({\n label: 'pick triangle pipeline',\n layout: 'auto',\n vertex: {\n module,\n entryPoint: 'vs',\n buffers: [\n {\n arrayStride: INSTANCE_STRIDE * 4,\n stepMode: 'instance',\n attributes: [\n { shaderLocation: 0, offset: 0, format: 'float32x4' }, // position 0\n { shaderLocation: 1, offset: 16, format: 'float32x4' }, // position 1\n { shaderLocation: 2, offset: 16 + 16, format: 'float32x4' }, // position 2\n { shaderLocation: 3, offset: 16 + 16 + 16, format: 'uint32' }, // id'\n { shaderLocation: 4, offset: 16 + 16 + 16 + 4, format: 'float32x3' }, // rounded corner values\n ] as const,\n },\n ],\n },\n fragment: {\n module,\n entryPoint: 'fs',\n targets: [\n {\n format: 'r32uint',\n },\n ],\n },\n })\n\n // Cache bind group for this program (no texture needed)\n let cachedBindGroup: GPUBindGroup | null = null\n\n return function pickTriangle(pass: GPURenderPassEncoder, vertexData: DataView) {\n const numInstances = vertexData.byteLength / (4 * INSTANCE_STRIDE)\n\n const vertexBuffer = device.createBuffer({\n label: 'pick triangle vertex buffer vertices',\n size: vertexData.byteLength,\n usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(vertexBuffer, 0, vertexData)\n\n // Get or create bind group for this program\n if (!cachedBindGroup) {\n cachedBindGroup = device.createBindGroup({\n layout: pipeline.getBindGroupLayout(0),\n entries: [{ binding: 0, resource: { buffer: matrixBuffer } }],\n })\n }\n\n pass.setPipeline(pipeline)\n pass.setVertexBuffer(0, vertexBuffer)\n pass.setBindGroup(0, cachedBindGroup)\n pass.draw(3, numInstances)\n }\n}\n","import shaderCode from './shader.wgsl'\n\nconst INSTANCE_STRIDE =\n 3 /*3 verticies*/ * 4 /*destination(xy) and texture coords(zw) */ + 1 /*color*/\n\nexport default function getProgram(\n device: GPUDevice,\n presentationFormat: GPUTextureFormat,\n matrixBuffer: GPUBuffer\n) {\n const module = device.createShaderModule({\n label: 'draw msdf module',\n code: shaderCode,\n })\n\n const sampler = device.createSampler({\n minFilter: 'linear',\n magFilter: 'linear',\n })\n\n const pipeline = device.createRenderPipeline({\n label: 'draw msdf pipeline',\n layout: 'auto',\n vertex: {\n module,\n entryPoint: 'vs',\n buffers: [\n {\n arrayStride: INSTANCE_STRIDE * 4,\n stepMode: 'instance',\n attributes: [\n { shaderLocation: 0, offset: 0, format: 'float32x4' }, // p0\n { shaderLocation: 1, offset: 16, format: 'float32x4' }, // p1\n { shaderLocation: 2, offset: 16 + 16, format: 'float32x4' }, // p2\n { shaderLocation: 3, offset: 16 + 16 + 16, format: 'unorm8x4' }, // color\n ] as const,\n },\n ],\n },\n fragment: {\n module,\n entryPoint: 'fs',\n targets: [\n {\n format: presentationFormat,\n blend: {\n color: {\n srcFactor: 'one',\n dstFactor: 'one-minus-src-alpha',\n },\n alpha: {\n srcFactor: 'one',\n dstFactor: 'one-minus-src-alpha',\n },\n },\n },\n ],\n },\n multisample: {\n count: 4,\n },\n })\n\n const bindGroupCache = new WeakMap<GPUTexture, GPUBindGroup>()\n\n return function drawMSDF(pass: GPURenderPassEncoder, vertexData: DataView, texture: GPUTexture) {\n const numInstances = vertexData.byteLength / (4 * INSTANCE_STRIDE)\n\n const vertexBuffer = device.createBuffer({\n label: 'draw msdf - vertex buffer',\n size: vertexData.byteLength,\n usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(vertexBuffer, 0, vertexData)\n\n // Get or create bind group for this texture\n let bindGroup = bindGroupCache.get(texture)\n if (!bindGroup) {\n bindGroup = device.createBindGroup({\n layout: pipeline.getBindGroupLayout(0),\n entries: [\n { binding: 0, resource: { buffer: matrixBuffer } },\n { binding: 1, resource: sampler },\n { binding: 2, resource: texture.createView() },\n ],\n })\n bindGroupCache.set(texture, bindGroup)\n }\n\n pass.setPipeline(pipeline)\n pass.setVertexBuffer(0, vertexBuffer)\n pass.setBindGroup(0, bindGroup)\n pass.draw(3, numInstances)\n }\n}\n","import getDrawTriangle from './drawTriangle/getProgram'\nimport getDrawBezier from './drawBezier/getProgram'\nimport getDraw3dModelTexture from './draw3dModelTexture/getProgram'\nimport getDraw3dModel from './draw3dModel/getProgram'\nimport getDraw3dModelLight from './draw3dModelLight/getProgram'\nimport getBlur from './blur/getProgram'\nimport getDrawtexture from './drawTexture/getProgram'\nimport getPickTexture from './pickTexture/getProgram'\nimport getPickTriangle from './pickTriangle/getProgram'\nimport getDrawMSDF from './drawMSDF/getProgram'\nimport getDrawShape from './drawShape/getProgram'\n\nexport let drawTriangle: ReturnType<typeof getDrawTriangle>\nexport let drawBezier: ReturnType<typeof getDrawBezier>\nexport let draw3dModel: ReturnType<typeof getDraw3dModel>\nexport let draw3dModelTexture: ReturnType<typeof getDraw3dModelTexture>\nexport let draw3dModelLight: ReturnType<typeof getDraw3dModelLight>\nexport let drawBlur: ReturnType<typeof getBlur>\nexport let drawTexture: ReturnType<typeof getDrawtexture>\nexport let pickTexture: ReturnType<typeof getPickTexture>\nexport let pickTriangle: ReturnType<typeof getPickTriangle>\nexport let drawMSDF: ReturnType<typeof getDrawMSDF>\nexport let drawShape: ReturnType<typeof getDrawShape>\n\nexport let canvasMatrixBuffer: GPUBuffer\nexport let pickCanvasMatrixBuffer: GPUBuffer\n\nexport default function initPrograms(device: GPUDevice, presentationFormat: GPUTextureFormat) {\n canvasMatrixBuffer = device.createBuffer({\n label: 'uniforms',\n size: 16 /*projection matrix*/ * 4,\n usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,\n })\n\n pickCanvasMatrixBuffer = device.createBuffer({\n label: 'uniforms',\n size: 16 /*projection matrix*/ * 4,\n usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,\n })\n\n const buffersToDestroy: GPUBuffer[] = []\n\n drawTriangle = getDrawTriangle(device, presentationFormat, canvasMatrixBuffer, buffersToDestroy)\n drawBezier = getDrawBezier(device, presentationFormat)\n draw3dModelTexture = getDraw3dModelTexture(device, presentationFormat)\n draw3dModel = getDraw3dModel(device, presentationFormat)\n draw3dModelLight = getDraw3dModelLight(device, presentationFormat)\n drawBlur = getBlur(device)\n drawTexture = getDrawtexture(device, presentationFormat, canvasMatrixBuffer)\n pickTexture = getPickTexture(device, pickCanvasMatrixBuffer)\n pickTriangle = getPickTriangle(device, pickCanvasMatrixBuffer)\n drawMSDF = getDrawMSDF(device, presentationFormat, canvasMatrixBuffer)\n drawShape = getDrawShape(device, presentationFormat, canvasMatrixBuffer, buffersToDestroy)\n\n return function cleanup() {\n buffersToDestroy.forEach((buffer) => buffer.destroy())\n }\n}\n","import shaderCode from \"./shader.wgsl\"\n\nexport default function getProgram(device: GPUDevice, presentationFormat: GPUTextureFormat) {\n const module = device.createShaderModule({\n label: \"bezier shader module\",\n code: shaderCode,\n })\n\n const pipeline = device.createRenderPipeline({\n label: 'bezier pipline',\n layout: 'auto',\n primitive: {\n topology: `triangle-strip`,\n },\n vertex: {\n module,\n entryPoint: 'vs',\n buffers: [\n {\n arrayStride: (1 /*t*/) * 4,\n attributes: [\n {shaderLocation: 0, offset: 0, format: 'float32'},\n ] as const,\n },\n {\n arrayStride: (1 /*dir*/) * 4,\n attributes: [\n {shaderLocation: 1, offset: 0, format: 'float32'},\n ] as const,\n },\n {\n arrayStride: (1 /*segmentIndex*/) * 4,\n attributes: [\n {shaderLocation: 2, offset: 0, format: 'uint32'},\n ] as const,\n },\n ],\n },\n fragment: {\n module,\n entryPoint: 'fs',\n targets: [{ format: presentationFormat }],\n },\n depthStencil: {\n depthWriteEnabled: false,\n depthCompare: 'always',\n format: 'depth24plus',\n },\n })\n\n return function renderBezierCurve(\n pass: GPURenderPassEncoder,\n matrix: Float32Array,\n pointsData: Float32Array,\n tData: Float32Array,\n dirData: Float32Array,\n segmentIndexData: Uint32Array,\n zoom: number,\n ) {\n // for each single segment we need to create a buffer OR more likely better is to combine\n // all of these data into one buffer!\n\n const storageBufferSize = (pointsData.length/*points*/) * 4\n const storageBuffer = device.createBuffer({\n label: 'storage points',\n size: storageBufferSize,\n usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST,\n })\n\n\n const uniformBufferSize = (16/*matrix*/ + 4/*zoom*/) * 4\n const uniformBuffer = device.createBuffer({\n label: 'uniforms',\n size: uniformBufferSize,\n usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,\n })\n\n const uniformValues = new Float32Array(uniformBufferSize / 4)\n\n // offsets to the various uniform values in float32 indices\n const kMatrixOffset = 0\n const kZoomOffset = 16\n\n const matrixValue = uniformValues.subarray(kMatrixOffset, kMatrixOffset + 16)\n const zoomValue = uniformValues.subarray(kZoomOffset, kZoomOffset + 1)\n\n const bindGroup = device.createBindGroup({\n label: 'bezier bind group for object',\n layout: pipeline.getBindGroupLayout(0),\n entries: [\n { binding: 0, resource: { buffer: uniformBuffer }},\n { binding: 1, resource: { buffer: storageBuffer }},\n ],\n })\n\n\n const tBuffer = device.createBuffer({\n label: 'bezier vertex buffer vertices',\n size: tData.byteLength,\n usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(tBuffer, 0, tData)\n\n const dirBuffer = device.createBuffer({\n label: 'bezier vertex buffer vertices',\n size: dirData.byteLength,\n usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(dirBuffer, 0, dirData)\n\n const segmentIndexBuffer = device.createBuffer({\n label: 'bezier vertex buffer vertices',\n size: segmentIndexData.byteLength,\n usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(segmentIndexBuffer, 0, segmentIndexData) // not sure if it should not be 1\n\n pass.setPipeline(pipeline)\n pass.setVertexBuffer(0, tBuffer) // index of the buffer in the pipline\n pass.setVertexBuffer(1, dirBuffer)\n pass.setVertexBuffer(2, segmentIndexBuffer)\n\n matrixValue.set(matrix)\n zoomValue.set(new Float32Array([zoom]))\n // p1, p2, p3, p4\n // t = 0, dir = 1\n // t = 0, dir = -1\n // t = 0.5, dir = 1\n // t = 0.5, dir = -1\n // t = 1, dir = 1\n // t = 1, dir = -1\n // change p1, p2, p3, p4\n\n // upload the uniform values to the uniform buffer\n device.queue.writeBuffer(uniformBuffer, 0, uniformValues)\n\n device.queue.writeBuffer(storageBuffer, 0, pointsData)\n\n pass.setBindGroup(0, bindGroup)\n pass.draw(tData.length)\n }\n}\n","import shaderCode from \"./shader.wgsl\"\n\nexport default function getProgram(device: GPUDevice, presentationFormat: GPUTextureFormat) {\n const module = device.createShaderModule({\n label: \"3d model texture shader module\",\n code: shaderCode,\n })\n\n const pipeline = device.createRenderPipeline({\n label: '3d model texture pipline',\n layout: 'auto',\n vertex: {\n module,\n entryPoint: 'vs',\n buffers: [\n {\n arrayStride: (3 + 2) * 4, // (3 + 2) floats, 4 bytes each\n attributes: [\n {shaderLocation: 0, offset: 0, format: 'float32x3'}, // position\n {shaderLocation: 1, offset: (3) * 4, format: 'float32x2'}, // texture coord\n ] as const,\n },\n ],\n },\n fragment: {\n module,\n entryPoint: 'fs',\n targets: [{ format: presentationFormat }],\n },\n depthStencil: {\n depthWriteEnabled: false,\n depthCompare: 'always',\n format: 'depth24plus',\n },\n })\n\n\n return function renderDraw3dModelTexture(\n pass: GPURenderPassEncoder,\n matrix: Float32Array,\n texture: GPUTexture,\n vertexData: Float32Array,\n indexData: Uint32Array,\n ) {\n const sampler = device.createSampler({\n magFilter: \"linear\",\n minFilter: 'linear',\n })\n\n const uniformBufferSize = (16) * 4\n const uniformBuffer = device.createBuffer({\n label: 'uniforms',\n size: uniformBufferSize,\n usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,\n })\n\n const uniformValues = new Float32Array(uniformBufferSize / 4)\n\n // offsets to the various uniform values in float32 indices\n const kMatrixOffset = 0\n\n const matrixValue = uniformValues.subarray(kMatrixOffset, kMatrixOffset + 16)\n\n const numVertices = indexData.length\n const vertexBuffer = device.createBuffer({\n label: '3d model texture vertex buffer vertices',\n size: vertexData.byteLength,\n usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(vertexBuffer, 0, vertexData)\n const indexBuffer = device.createBuffer({\n label: '3d model texture index buffer',\n size: indexData.byteLength,\n usage: GPUBufferUsage.INDEX | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(indexBuffer, 0, indexData)\n\n const bindGroup = device.createBindGroup({\n label: '3d model texture bind group for object',\n layout: pipeline.getBindGroupLayout(0),\n entries: [\n { binding: 0, resource: { buffer: uniformBuffer }},\n { binding: 1, resource: sampler },\n { binding: 2, resource: texture.createView() },\n ],\n })\n\n pass.setPipeline(pipeline)\n pass.setVertexBuffer(0, vertexBuffer)\n pass.setIndexBuffer(indexBuffer, 'uint32')\n\n matrixValue.set(matrix)\n\n device.queue.writeBuffer(uniformBuffer, 0, uniformValues)\n\n pass.setBindGroup(0, bindGroup)\n pass.drawIndexed(numVertices)\n }\n}\n","import shaderCode from \"./shader.wgsl\"\n\nexport default function getProgram(device: GPUDevice, presentationFormat: GPUTextureFormat) {\n const module = device.createShaderModule({\n label: \"3d model shader module\",\n code: shaderCode,\n })\n\n const pipeline = device.createRenderPipeline({\n label: '3d model pipline',\n layout: 'auto',\n vertex: {\n module,\n entryPoint: 'vs',\n buffers: [\n {\n // position + texture coords\n // arrayStride: (3) * 4, // (3) floats, 4 bytes each\n arrayStride: (3) * 4, // (3) floats, 4 bytes each\n attributes: [\n {shaderLocation: 0, offset: 0, format: 'float32x3'}, // position\n ] as const,\n },\n ],\n },\n fragment: {\n module,\n entryPoint: 'fs',\n targets: [{ format: presentationFormat }],\n },\n primitive: {\n cullMode: 'back',\n },\n depthStencil: {\n depthWriteEnabled: true,\n depthCompare: 'less',\n format: 'depth24plus',\n },\n })\n\n\n return function renderDraw3dModel(\n pass: GPURenderPassEncoder,\n matrix: Float32Array,\n vertexData: Float32Array,\n indexData: Uint32Array,\n ) {\n // matrix\n const uniformBufferSize = (16) * 4\n const uniformBuffer = device.createBuffer({\n label: 'uniforms',\n size: uniformBufferSize,\n usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,\n })\n\n const uniformValues = new Float32Array(uniformBufferSize / 4)\n\n // offsets to the various uniform values in float32 indices\n const kMatrixOffset = 0\n\n const matrixValue = uniformValues.subarray(kMatrixOffset, kMatrixOffset + 16)\n\n const numVertices = indexData.length\n const vertexBuffer = device.createBuffer({\n label: 'vertex buffer vertices',\n size: vertexData.byteLength,\n usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(vertexBuffer, 0, vertexData)\n const indexBuffer = device.createBuffer({\n label: 'index buffer',\n size: indexData.byteLength,\n usage: GPUBufferUsage.INDEX | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(indexBuffer, 0, indexData)\n\n const bindGroup = device.createBindGroup({\n label: 'bind group for object',\n layout: pipeline.getBindGroupLayout(0),\n entries: [\n { binding: 0, resource: { buffer: uniformBuffer }},\n ],\n })\n\n pass.setPipeline(pipeline)\n pass.setVertexBuffer(0, vertexBuffer)\n pass.setIndexBuffer(indexBuffer, 'uint32')\n\n matrixValue.set(matrix)\n\n // upload the uniform values to the uniform buffer\n device.queue.writeBuffer(uniformBuffer, 0, uniformValues)\n\n pass.setBindGroup(0, bindGroup)\n pass.drawIndexed(numVertices)\n }\n}\n","import shaderCode from \"./shader.wgsl\"\n\ninterface Uniforms {\n worldViewProjection: Float32Array,\n normalMatrix: Float32Array,\n lightColor: Float32Array,\n lightDirection: Float32Array\n}\n\nexport default function getProgram(device: GPUDevice, presentationFormat: GPUTextureFormat) {\n const module = device.createShaderModule({\n label: \"3d model light shader module\",\n code: shaderCode,\n })\n\n const pipeline = device.createRenderPipeline({\n label: '3d model light pipline',\n layout: 'auto',\n vertex: {\n module,\n entryPoint: 'vs',\n buffers: [\n {\n // position + texture coords\n // arrayStride: (3) * 4, // (3) floats, 4 bytes each\n arrayStride: (3 + 3) * 4, // (3) floats, 4 bytes each\n attributes: [\n {shaderLocation: 0, offset: 0, format: 'float32x3'}, // position\n {shaderLocation: 1, offset: 12, format: 'float32x3'}, // normal\n ] as const,\n },\n ],\n },\n fragment: {\n module,\n entryPoint: 'fs',\n targets: [{ format: presentationFormat }],\n },\n primitive: {\n cullMode: 'back',\n },\n depthStencil: {\n depthWriteEnabled: true,\n depthCompare: 'less',\n format: 'depth24plus',\n },\n })\n\n\n return function renderDraw3dModelLight(\n pass: GPURenderPassEncoder,\n uniform: Uniforms,\n vertexData: Float32Array,\n indexData: Uint32Array,\n ) {\n const {\n worldViewProjection,\n normalMatrix,\n lightColor,\n lightDirection,\n } = uniform\n // matrix\n const uniformBufferSize = (12 + 16 + 4 + 4) * 4\n const uniformBuffer = device.createBuffer({\n label: 'uniforms',\n size: uniformBufferSize,\n usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,\n })\n\n const uniformValues = new Float32Array(uniformBufferSize / 4)\n\n // offsets to the various uniform values in float32 indices\n const kNormalMatrixOffset = 0\n const kWorldViewProjectionOffset = 12\n const kColorOffset = 28\n const kLightDirectionOffset = 32\n\n const normalMatrixValue = uniformValues.subarray(kNormalMatrixOffset, kNormalMatrixOffset + 12)\n const worldViewProjectionValue = uniformValues.subarray(\n kWorldViewProjectionOffset, kWorldViewProjectionOffset + 16)\n const colorValue = uniformValues.subarray(kColorOffset, kColorOffset + 4)\n const lightDirectionValue =\n uniformValues.subarray(kLightDirectionOffset, kLightDirectionOffset + 3)\n\n const bindGroup = device.createBindGroup({\n label: 'bind group for object',\n layout: pipeline.getBindGroupLayout(0),\n entries: [\n { binding: 0, resource: { buffer: uniformBuffer }},\n ],\n })\n\n const numVertices = indexData.length\n const vertexBuffer = device.createBuffer({\n label: 'vertex buffer vertices',\n size: vertexData.byteLength,\n usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(vertexBuffer, 0, vertexData)\n const indexBuffer = device.createBuffer({\n label: 'index buffer',\n size: indexData.byteLength,\n usage: GPUBufferUsage.INDEX | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(indexBuffer, 0, indexData)\n\n pass.setPipeline(pipeline)\n pass.setVertexBuffer(0, vertexBuffer)\n pass.setIndexBuffer(indexBuffer, 'uint32')\n\n\n normalMatrixValue.set(normalMatrix)\n worldViewProjectionValue.set(worldViewProjection)\n colorValue.set(lightColor)\n lightDirectionValue.set(lightDirection)\n\n // upload the uniform values to the uniform buffer\n device.queue.writeBuffer(uniformBuffer, 0, uniformValues)\n\n pass.setBindGroup(0, bindGroup)\n pass.drawIndexed(numVertices)\n }\n}\n","import shaderCode from './shader.wgsl'\n\nexport default function getDrawShape(\n device: GPUDevice,\n presentationFormat: GPUTextureFormat,\n canvasMatrixBuffer: GPUBuffer,\n buffersToDestroy: GPUBuffer[]\n) {\n const shaderModule = device.createShaderModule({\n label: 'drawShape shader',\n code: shaderCode,\n })\n\n const uniformBufferSize =\n (1 /*stroke width*/ + 4 /*stroke color*/ + 4 /*fill color*/ + /*padding*/ 3) * 4\n\n const bindGroupLayout = device.createBindGroupLayout({\n label: 'drawShape bind group layout',\n entries: [\n {\n binding: 0,\n visibility: GPUShaderStage.VERTEX | GPUShaderStage.FRAGMENT,\n buffer: { type: 'uniform' },\n },\n {\n binding: 1,\n visibility: GPUShaderStage.FRAGMENT,\n buffer: { type: 'read-only-storage' },\n },\n {\n binding: 2,\n visibility: GPUShaderStage.VERTEX,\n buffer: { type: 'uniform' },\n },\n ],\n })\n\n const renderPipeline = device.createRenderPipeline({\n label: 'drawShape pipeline',\n layout: device.createPipelineLayout({\n bindGroupLayouts: [bindGroupLayout],\n }),\n vertex: {\n module: shaderModule,\n entryPoint: 'vs',\n buffers: [\n {\n arrayStride: 2 * 4, // position (2) + color (4)\n attributes: [\n {\n shaderLocation: 0,\n offset: 0,\n format: 'float32x2', // position\n },\n ],\n },\n ],\n },\n fragment: {\n module: shaderModule,\n entryPoint: 'fs',\n targets: [\n {\n format: presentationFormat,\n blend: {\n color: {\n srcFactor: 'src-alpha',\n dstFactor: 'one-minus-src-alpha',\n },\n alpha: {\n srcFactor: 'one',\n dstFactor: 'one-minus-src-alpha',\n },\n },\n },\n ],\n },\n multisample: {\n count: 4,\n },\n })\n\n return function drawShape(\n passEncoder: GPURenderPassEncoder,\n curvesDataView: DataView,\n boundingBoxDataView: DataView,\n uniformDataView: DataView\n ) {\n const boundBoxBuffer = device.createBuffer({\n label: 'drawShape vertex buffer',\n size: boundingBoxDataView.byteLength,\n usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(boundBoxBuffer, 0, boundingBoxDataView)\n buffersToDestroy.push(boundBoxBuffer)\n\n const curvesBuffer = device.createBuffer({\n label: 'drawShape curves buffer',\n size: curvesDataView.byteLength,\n usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(curvesBuffer, 0, curvesDataView)\n buffersToDestroy.push(curvesBuffer)\n\n const uniformBuffer = device.createBuffer({\n label: 'drawShape uniforms',\n size: uniformBufferSize,\n usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,\n })\n device.queue.writeBuffer(uniformBuffer, 0, uniformDataView)\n buffersToDestroy.push(uniformBuffer)\n\n passEncoder.setPipeline(renderPipeline)\n\n const bindGroup = device.createBindGroup({\n label: 'drawShape bind group',\n layout: bindGroupLayout,\n entries: [\n { binding: 0, resource: { buffer: uniformBuffer } },\n { binding: 1, resource: { buffer: curvesBuffer } },\n { binding: 2, resource: { buffer: canvasMatrixBuffer } },\n ],\n })\n\n passEncoder.setBindGroup(0, bindGroup)\n passEncoder.setVertexBuffer(0, boundBoxBuffer)\n passEncoder.draw(6) // Draw quad\n }\n}\n","import { canvasMatrixBuffer } from 'WebGPU/programs/initPrograms'\nimport mat4 from 'utils/mat4'\nimport { updateRenderPass } from 'run'\nimport * as Textures from 'textures'\nimport getMultisampleTexture from 'getMultisampleTexture'\n\nlet endCacheCallback: VoidFunction = () => {\n throw new Error('Cache not started')\n}\n\nexport function endCache() {\n endCacheCallback()\n}\n\nexport function startCache(\n device: GPUDevice,\n presentationFormat: GPUTextureFormat,\n currTextureId: number | null,\n boundingBox: BoundingBox,\n outputWidth: number,\n outputHeight: number\n): number {\n const width = boundingBox.max_x - boundingBox.min_x\n const height = boundingBox.max_y - boundingBox.min_y\n\n const texture = device.createTexture({\n label: 'texture cache',\n format: presentationFormat,\n usage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TEXTURE_BINDING,\n size: [outputWidth, outputHeight],\n })\n\n const encoder = device.createCommandEncoder()\n\n const multisampleTexture = getMultisampleTexture(\n device,\n outputWidth,\n outputHeight,\n presentationFormat\n )\n const descriptor: GPURenderPassDescriptor = {\n label: 'texture cache pass',\n colorAttachments: [\n {\n view: multisampleTexture.createView(),\n resolveTarget: texture.createView(),\n loadOp: 'clear',\n storeOp: 'store',\n },\n ],\n }\n\n const pass = encoder.beginRenderPass(descriptor)\n updateRenderPass(pass)\n const matrix = mat4.ortho(\n boundingBox.min_x, // left\n boundingBox.min_x + width, // right\n boundingBox.min_y + height, // bottom\n boundingBox.min_y, // top, yes top and bottom and reversed on purpose to make texture start at bottom-left corner\n 1, // near\n -1 // far\n )\n\n device.queue.writeBuffer(canvasMatrixBuffer, 0, matrix)\n\n endCacheCallback = () => {\n pass.end()\n const commandBuffer = encoder.finish()\n device.queue.submit([commandBuffer])\n }\n\n return Textures.setTexture(texture, currTextureId)\n}\n","import mat4 from 'utils/mat4'\nimport { camera } from 'WebGPU/pointer'\n\nexport default function getCanvasMatrix(canvas: HTMLCanvasElement) {\n const ortho = mat4.ortho(\n 0, // left\n canvas.width, // right\n 0, // bottom\n canvas.height, // top\n 1, // near\n -1 // far\n )\n // when we implement zoom, it might be actually easier to scale our controls/icons down and this matrix up\n // instead of implement zoom for every signle effect I guess\n const translated = mat4.translate(ortho, [camera.x, camera.y, 0])\n const matrix = mat4.scale(translated, [camera.zoom, camera.zoom, 1])\n\n return matrix\n}\n","let depthTexture: GPUTexture | undefined\n\nexport default function getDepthTexture(device: GPUDevice, width: number, height: number) {\n if (!depthTexture || depthTexture.width !== width || depthTexture.height !== height) {\n depthTexture?.destroy()\n depthTexture = device.createTexture({\n size: [width, height],\n format: 'depth24plus',\n usage: GPUTextureUsage.RENDER_ATTACHMENT,\n })\n }\n\n return depthTexture\n}\n","import getMultisampleTexture from './getMultisampleTexture'\nimport getDepthTexture from './getDepthTexture'\n\nexport default function getCanvasRenderDescriptor(context: GPUCanvasContext, device: GPUDevice) {\n // here we need to render that texture into canvas\n const canvasTexture = context.getCurrentTexture()\n\n const depthTexture = getDepthTexture(device, canvasTexture.width, canvasTexture.height)\n const multisampleTexture = getMultisampleTexture(\n device,\n canvasTexture.width,\n canvasTexture.height,\n canvasTexture.format\n )\n const descriptor: GPURenderPassDescriptor = {\n // describe which textures we want to raw to and how use them\n label: 'our render to canvas renderPass',\n colorAttachments: [\n {\n view: multisampleTexture.createView(),\n resolveTarget: canvasTexture.createView(), // resolveTarget is used to resolve multisample texture into single sample texture\n clearValue: [0, 0, 0, 1],\n loadOp: 'clear', // before rendering clear the texture to value \"clear\". Other option is \"load\" to load existing content of the texture into GPU so we can draw over it\n storeOp: 'store', // to store the result of what we draw, other option is \"discard\"\n },\n ],\n // depthStencilAttachment: {\n // view: depthTexture.createView(), // placholder to calm down TS\n // depthClearValue: 1.0,\n // depthLoadOp: 'clear',\n // depthStoreOp: 'discard',\n // },\n }\n\n return descriptor\n}\n","let multisampleTexture: GPUTexture | undefined\n\nexport default function getMultisampleTexture(\n device: GPUDevice,\n width: number,\n height: number,\n format: GPUTextureFormat\n) {\n if (\n !multisampleTexture ||\n multisampleTexture.width !== width ||\n multisampleTexture.height !== height\n ) {\n multisampleTexture?.destroy()\n multisampleTexture = device.createTexture({\n format: format,\n usage: GPUTextureUsage.RENDER_ATTACHMENT,\n size: [width, height],\n sampleCount: 4,\n })\n }\n\n return multisampleTexture\n}\n","import canvasSizeObserver from 'WebGPU/canvasSizeObserver'\nimport getDevice from 'WebGPU/getDevice'\nimport initPrograms from 'WebGPU/programs/initPrograms'\nimport runCreator from 'run'\nimport * as Logic from './logic/index.zig'\nimport initMouseController, { camera } from 'WebGPU/pointer'\nimport IconsPng from '../msdf/output/icons.png'\nimport IconsJson from '../msdf/output/icons.json'\nimport getDefaultPoints from 'utils/getDefaultPoints'\nimport * as Textures from 'textures'\nimport { startCache, endCache } from 'WebGPU/textureCache'\nimport debounce from 'utils/debounce'\nimport generatePreview from 'WebGPU/generatePreview'\n\nexport type SerializedInputAsset = {\n id?: number // not needed while loading project but useful for undo/redo to maintain selection\n points?: PointUV[]\n url: string\n textureId?: number\n}\n\nexport type SerializedOutputAsset = {\n id: number // not needed while loading project but useful for undo/redo to maintain selection\n points: PointUV[]\n url: string\n textureId: number\n}\n\nexport enum CreatorTool {\n None = 0,\n DrawShape = 1,\n}\n\nexport interface CreatorAPI {\n addImage: (url: string) => void\n resetAssets: (assets: SerializedInputAsset[], withSnapshot?: boolean) => void\n removeAsset: VoidFunction\n destroy: VoidFunction\n setTool: (tool: CreatorTool) => void\n}\n\nexport default async function initCreator(\n canvas: HTMLCanvasElement,\n uploadTexture: (url: string, onNewUrl: (newUrl: string) => void) => void,\n onAssetsUpdate: (assets: SerializedOutputAsset[]) => void,\n onAssetSelect: (assetId: number) => void,\n onProcessingUpdate: (inProgress: boolean) => void,\n onPreviewUpdate: (canvas: HTMLCanvasElement) => void\n): Promise<CreatorAPI> {\n let loadingTextures = 0\n let isMouseEventProcessing = false\n\n function updateProcessing() {\n onProcessingUpdate(loadingTextures > 0 || isMouseEventProcessing)\n }\n\n const device = await getDevice()\n Textures.init(device, (texLoadings) => {\n loadingTextures = texLoadings\n updateProcessing()\n })\n\n const projectWidth = canvas.clientWidth / 2\n const projectHeight = canvas.clientHeight / 2\n\n Logic.init_state(projectWidth, projectHeight, device.limits.maxTextureDimension2D)\n // rotation doesnt work\n const context = canvas.getContext('webgpu')\n if (!context) throw Error('WebGPU from canvas needs to be always provided')\n\n const presentationFormat = navigator.gpu.getPreferredCanvasFormat()\n context.configure({\n device,\n format: presentationFormat,\n // Specify we want both RENDER_ATTACHMENT and COPY_SRC since we\n // will copy out of the swapchain texture.\n })\n\n function updateRenderScale() {\n Logic.update_render_scale(canvas.width / (canvas.clientWidth * camera.zoom))\n }\n\n let wasInitialOffsetSet = false\n canvasSizeObserver(canvas, device, () => {\n if (wasInitialOffsetSet === false) {\n camera.x = (canvas.width - projectWidth) / 2\n camera.y = (canvas.height - projectHeight) / 2\n wasInitialOffsetSet = true\n }\n updateRenderScale()\n })\n\n const cleanupPrograms = initPrograms(device, presentationFormat)\n\n initMouseController(canvas, updateRenderScale, () => {\n isMouseEventProcessing = true\n updateProcessing()\n })\n\n\n const triggerGeneratePreview = debounce(() => {\n generatePreview(\n device,\n presentationFormat,\n canvas,\n projectWidth,\n projectHeight,\n capturePreview,\n onPreviewUpdate\n )\n }, 1000 * 5)\n\n\n let lastAssetsSnapshot: ZigAssetOutput[] = []\n Logic.connect_on_asset_update_callback((serializedData: ZigAssetOutput[]) => {\n lastAssetsSnapshot = serializedData\n newAssetsSnapshot()\n })\n\n function newAssetsSnapshot() {\n // this function is not part of Logic.connect_on_asset_update_callback\n // only because once we update a texture url, we have to notify about the assets update\n const serializedAssetsTextureUrl = [...lastAssetsSnapshot].map<SerializedOutputAsset>(\n (asset) => ({\n id: asset.id,\n textureId: asset.texture_id,\n points: [...asset.points].map((point) => ({\n x: point.x,\n y: point.y,\n u: point.u,\n v: point.v,\n })),\n url: Textures.getUrl(asset.texture_id),\n })\n )\n onAssetsUpdate(serializedAssetsTextureUrl)\n }\n\n Logic.connect_on_asset_selection_callback(onAssetSelect)\n\n Logic.connect_cache_callbacks((textureId, boundingBox, width, height) => {\n return startCache(device, presentationFormat, textureId, boundingBox, width, height)\n }, endCache)\n\n const addImage: CreatorAPI['addImage'] = (url) => {\n const textureId = Textures.add(url, (width, height, isNew) => {\n const points = getDefaultPoints(width, height, projectWidth, projectHeight)\n Logic.add_asset(0 /* no id yet, needs to be generated */, points, textureId)\n\n if (isNew) {\n uploadTexture(url, (newUrl) => {\n Textures.updateTextureUrl(textureId, newUrl)\n triggerGeneratePreview() // we do it in the callback because new texture might be not loaded yet from blob\n newAssetsSnapshot()\n })\n }\n })\n }\n\n Textures.add(IconsPng, (width, height) => {\n Logic.import_icons(\n IconsJson.chars.flatMap((char) => [\n char.id,\n char.x / width,\n char.y / height,\n char.width / width,\n char.height / height,\n char.width,\n char.height,\n ])\n )\n })\n\n const { stopRAF, capturePreview } = runCreator(\n canvas,\n context,\n device,\n cleanupPrograms,\n presentationFormat,\n () => {\n isMouseEventProcessing = false\n updateProcessing()\n }\n )\n\n const resetAssets: CreatorAPI['resetAssets'] = async (assets, withSnapshot = false) => {\n const results = await Promise.allSettled(\n assets.map<Promise<ZigAssetInput>>(\n (asset) =>\n new Promise((resolve, reject) => {\n if (asset.points) {\n return resolve({\n points: asset.points, // here it makes sense\n texture_id: asset.textureId || Textures.add(asset.url), // if we got points, so we have url on the server for sure\n id: asset.id || 0,\n })\n }\n\n const textureId = Textures.add(asset.url, (width, height, isNew) => {\n // we wait to add image once points are known. Other option was to add image first\n // with \"default\" points and then update it once texture is loaded.\n // However, that would cause issues with undo/redo since we would have history\n // snapshot with \"default\" points and then update it to the real points.\n if (isNew) {\n uploadTexture(asset.url, (newUrl) => {\n Textures.updateTextureUrl(textureId, newUrl)\n newAssetsSnapshot()\n })\n }\n\n return resolve({\n points: getDefaultPoints(width, height, projectWidth, projectHeight),\n texture_id: textureId, // if there is no points, then for sure there is no asset.textureId\n id: 0,\n })\n })\n })\n )\n )\n\n const serializedAssets = results\n .filter((result) => result.status === 'fulfilled')\n .map((result) => result.value)\n\n Logic.reset_assets(serializedAssets, withSnapshot)\n }\n\n return {\n addImage,\n removeAsset: Logic.remove_asset,\n resetAssets,\n destroy: () => {\n stopRAF()\n Logic.destroy_state()\n context.unconfigure()\n device.destroy()\n },\n setTool: Logic.set_tool,\n }\n}\n","export default function getLoadingTexture(device: GPUDevice): GPUTexture {\n const textureWidth = 5\n const textureHeight = 7\n const _ = [255, 0, 0, 255] // red\n const y = [255, 255, 0, 255] // yellow\n const b = [0, 0, 255, 255] // blue\n // prettier-ignore\n const textureData = new Uint8Array([\n b, _, _, _, _,\n _, y, y, y, _,\n _, y, _, _, _,\n _, y, y, _, _,\n _, y, _, _, _,\n _, y, _, _, _,\n _, _, _, _, _,\n ].flat())\n\n const texture = device.createTexture({\n label: 'yellow F on red',\n size: [textureWidth, textureHeight],\n format: 'rgba8unorm',\n usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST,\n })\n device.queue.writeTexture(\n { texture },\n textureData,\n { bytesPerRow: textureWidth * 4 },\n { width: textureWidth, height: textureHeight }\n )\n\n return texture\n}\n","import getCanvasRenderDescriptor from 'getCanvasRenderDescriptor'\nimport {\n drawTexture,\n drawTriangle,\n drawMSDF,\n pickTexture,\n pickTriangle,\n canvasMatrixBuffer,\n pickCanvasMatrixBuffer,\n drawShape,\n} from 'WebGPU/programs/initPrograms'\nimport getCanvasMatrix from 'getCanvasMatrix'\nimport PickManager from 'WebGPU/pick'\nimport { render_draw, render_pick, connect_web_gpu_programs } from 'logic/index.zig'\nimport { pointer } from 'WebGPU/pointer'\nimport * as Textures from 'textures'\n\nlet renderPass: GPURenderPassEncoder\nexport function updateRenderPass(newRenderPass: GPURenderPassEncoder) {\n renderPass = newRenderPass\n}\n\nexport default function runCreator(\n creatorCanvas: HTMLCanvasElement,\n context: GPUCanvasContext,\n device: GPUDevice,\n cleanupPrograms: VoidFunction,\n presentationFormat: GPUTextureFormat,\n onEmptyEvents: VoidFunction // call when there is no more events to process\n) {\n let pickPass: GPURenderPassEncoder\n\n const pickManager = new PickManager(device)\n // let time = 0\n // let total = 0\n // let samplesCount = 0\n\n connect_web_gpu_programs({\n draw_texture: (vertex_data, texture_id) => {\n drawTexture(renderPass, vertex_data.dataView, Textures.getTexture(texture_id))\n },\n draw_msdf: (vertex_data, texture_id) => {\n const dataView = vertex_data['*'].dataView\n drawMSDF(renderPass, dataView, Textures.getTexture(texture_id))\n },\n draw_triangle: (vertex_data) => {\n const dataView = vertex_data['*'].dataView\n drawTriangle(renderPass, dataView)\n /*\n samplesCount++\n total += performance.now() - time\n if (samplesCount % 100 === 0) {\n console.log('Average draw time:', total / samplesCount)\n }\n */\n },\n draw_shape: (curves_data, bound_box_data, uniform_data) => {\n const curvesDataView = curves_data['*'].dataView\n const boundBoxDataView = bound_box_data['*'].dataView\n drawShape(renderPass, curvesDataView, boundBoxDataView, uniform_data.dataView)\n\n /*\n samplesCount++\n total += performance.now() - time\n if (samplesCount % 100 === 0) {\n console.log('Average draw time:', total / samplesCount)\n }\n */\n },\n pick_texture: (vertex_data, texture_id) => {\n const dataView = vertex_data['*'].dataView\n // const uints = new Uint32Array(\n // dataView.buffer.slice(dataView.byteOffset, dataView.byteOffset + dataView.byteLength)\n // )\n // for (let i = 0; i < uints.length; i += 5) {\n // console.log('texture id', uints[i + 4])\n // }\n pickTexture(pickPass, dataView, Textures.getTexture(texture_id))\n },\n pick_triangle: (vertex_data) => {\n const dataView = vertex_data['*'].dataView\n pickTriangle(pickPass, dataView)\n },\n })\n\n let rafId = 0\n const lastPickPointer: Point = { x: 0, y: 0 }\n\n function draw(\n now: DOMHighResTimeStamp,\n preview?: { canvas: HTMLCanvasElement; ctx: GPUCanvasContext; onCapture: VoidFunction }\n ) {\n const encoder = device.createCommandEncoder()\n const canvasDescriptor = getCanvasRenderDescriptor(preview?.ctx || context, device)\n renderPass = encoder.beginRenderPass(canvasDescriptor)\n const canvasMatrix = getCanvasMatrix(preview?.canvas || creatorCanvas)\n device.queue.writeBuffer(canvasMatrixBuffer, 0, canvasMatrix)\n // time = performance.now()\n render_draw()\n renderPass.end()\n\n if (preview) {\n const commandBuffer = encoder.finish()\n device.queue.submit([commandBuffer])\n cleanupPrograms()\n preview.onCapture()\n return\n }\n\n if (pointer.afterPickEventsQueue.length === 0) {\n onEmptyEvents()\n }\n\n const needsUpdatePick =\n pointer.afterPickEventsQueue.length > 0 ||\n lastPickPointer.x !== pointer.x ||\n lastPickPointer.y !== pointer.y\n\n if (needsUpdatePick) {\n lastPickPointer.x = pointer.x\n lastPickPointer.y = pointer.y\n const pickMatrix = pickManager.createMatrix(creatorCanvas, canvasMatrix)\n device.queue.writeBuffer(pickCanvasMatrixBuffer, 0, pickMatrix)\n const pick = pickManager.startPicking(encoder)\n pickPass = pick.pass\n render_pick()\n pick.end()\n }\n\n const commandBuffer = encoder.finish()\n device.queue.submit([commandBuffer])\n cleanupPrograms()\n\n pickManager.asyncPick()\n\n rafId = requestAnimationFrame(draw)\n }\n\n rafId = requestAnimationFrame(draw)\n\n function stopRAF() {\n cancelAnimationFrame(rafId)\n }\n\n const capturePreview = (canvas: HTMLCanvasElement, ctx: GPUCanvasContext) =>\n new Promise<void>((resolve) => {\n stopRAF()\n draw(performance.now(), { canvas, ctx, onCapture: resolve })\n rafId = requestAnimationFrame(draw)\n })\n\n return {\n stopRAF,\n capturePreview,\n }\n}\n","export const STRAIGHT_LINE_HANDLE = { x: 1e11, y: 0 }\n","import { Node } from 'svg-parser'\nimport * as Logic from 'logic/index.zig'\nimport parsePathData from './parsePathData'\nimport parseRect from './parseRect'\nimport type { PathSegment } from './types'\nimport parseColor from './parseColor'\nimport parseEllipse from './parseEllipse'\n\nexport default function createShapes(node: Node, svgHeight: number): void {\n if (!('children' in node)) return\n\n node.children.forEach((child) => {\n if (typeof child !== 'string') {\n if ('properties' in child && typeof child.properties === 'object') {\n const props = child.properties\n const serializedProps: ShapeProps = {}\n if (props.fill) {\n const rgba = parseColor(props.fill as string)\n serializedProps.fill_color = rgba\n }\n let result: PathSegment[][] | undefined = undefined\n\n switch (child.tagName) {\n case 'path':\n if (typeof props?.d !== 'string') {\n throw Error(\"Path without 'd' property\")\n }\n result = parsePathData(props.d, svgHeight)\n break\n case 'rect':\n if (typeof props?.width !== 'number' || typeof props?.height !== 'number') {\n throw Error(\"Path without 'd' property\")\n }\n result = [parseRect(props.width, props.height, svgHeight)]\n break\n case 'ellipse':\n if (typeof props?.rx !== 'number' || typeof props?.ry !== 'number') {\n throw Error(\"Ellipse without 'rx' or 'ry' property\")\n }\n if (typeof props?.cx !== 'number' || typeof props?.cy !== 'number') {\n throw Error(\"Ellipse without 'cx' or 'cy' property\")\n }\n result = [parseEllipse(props.cx, props.cy, props.rx, props.ry, svgHeight)]\n }\n\n if (result) {\n Logic.add_shape(result, serializedProps)\n }\n }\n createShapes(child, svgHeight)\n }\n })\n}\n","// we use canvas to support ALL possible way of describing color in CSS\nexport default function parseCssColorToRgba(cssColor: string): [number, number, number, number] {\n // Create a temporary canvas element\n const canvas = new OffscreenCanvas(1, 1)\n const ctx = canvas.getContext('2d')!\n\n // Set the fillStyle to the CSS color and draw a 1x1 rectangle\n ctx.fillStyle = cssColor\n ctx.fillRect(0, 0, 1, 1)\n\n // Read the pixel data from the canvas\n const imageData = ctx.getImageData(0, 0, 1, 1)\n const [r, g, b, a] = imageData.data\n\n // Return normalized RGBA values (0-1 range)\n return [\n r / 255, // red\n g / 255, // green\n b / 255, // blue\n a / 255, // alpha\n ]\n}\n","import { BezierCurve } from './types'\n\ninterface Point {\n x: number\n y: number\n}\n\nexport default function parseEllipse(\n cx: number,\n cy: number,\n rx: number,\n ry: number,\n svgHeight: number\n): BezierCurve[] {\n // Convert center y-coordinate to Cartesian space\n const centerY = svgHeight - cy\n\n // Magic number for cubic Bezier approximation of a circle/ellipse\n // This creates a very close approximation using 4 cubic Bezier curves\n const kappa = 0.5522847498307936 // (4/3) * tan(π/8)\n\n // Calculate control point offsets\n const kx = kappa * rx\n const ky = kappa * ry\n\n // Define the 8 key points (4 corners + 4 control points for each quadrant)\n const rightPoint: Point = { x: cx + rx, y: centerY }\n const topPoint: Point = { x: cx, y: centerY + ry }\n const leftPoint: Point = { x: cx - rx, y: centerY }\n const bottomPoint: Point = { x: cx, y: centerY - ry }\n\n // Create four Bezier curves that form the ellipse\n const curves: BezierCurve[] = [\n // First quadrant: right to top\n [\n rightPoint,\n { x: cx + rx, y: centerY + ky }, // control point 1\n { x: cx + kx, y: centerY + ry }, // control point 2\n topPoint,\n ],\n\n // Second quadrant: top to left\n [\n topPoint,\n { x: cx - kx, y: centerY + ry }, // control point 1\n { x: cx - rx, y: centerY + ky }, // control point 2\n leftPoint,\n ],\n\n // Third quadrant: left to bottom\n [\n leftPoint,\n { x: cx - rx, y: centerY - ky }, // control point 1\n { x: cx - kx, y: centerY - ry }, // control point 2\n bottomPoint,\n ],\n\n // Fourth quadrant: bottom to right\n [\n bottomPoint,\n { x: cx + kx, y: centerY - ry }, // control point 1\n { x: cx + rx, y: centerY - ky }, // control point 2\n rightPoint,\n ],\n ]\n\n return curves\n}\n","import { STRAIGHT_LINE_HANDLE } from './const'\nimport { Line, BezierCurve, PathSegment } from './types'\n\ninterface PathCommand {\n command: string\n args: number[]\n}\n\nfunction getDataPathCommands(pathData: string): PathCommand[] {\n // Remove whitespace and split by command letters\n const commands: PathCommand[] = []\n const commandRegex = /([MmLlHhVvCcSsQqTtAaZz])\\s*([^MmLlHhVvCcSsQqTtAaZz]*)/g\n\n let match\n while ((match = commandRegex.exec(pathData)) !== null) {\n const command = match[1]\n const argsString = match[2].trim()\n\n // Parse numeric arguments\n const args: number[] = []\n if (argsString) {\n const numbers = argsString.match(/-?[0-9]*\\.?[0-9]+(?:[eE][-+]?[0-9]+)?/g)\n if (numbers) {\n args.push(...numbers.map(parseFloat))\n }\n }\n\n commands.push({ command, args })\n }\n\n return commands\n}\n\nfunction reflectY(y: number, svgHeight: number): number {\n return svgHeight - y\n}\n\nfunction commandsToSegments(commands: PathCommand[], svgHeight: number): PathSegment[][] {\n const allPaths: PathSegment[][] = []\n\n let currentSegments: PathSegment[] = []\n let currentPoint: Point = { x: 0, y: reflectY(0, svgHeight) }\n let pathStart: Point = { x: 0, y: reflectY(0, svgHeight) }\n let lastControlPoint: Point | null = null\n\n const finishCurrentPath = () => {\n if (currentSegments.length > 0) {\n allPaths.push([...currentSegments])\n currentSegments = []\n }\n }\n\n for (const { command, args } of commands) {\n switch (command.toLowerCase()) {\n case 'm': {\n // MoveTo - start a new sub-path if we have existing segments\n if (currentSegments.length > 0) {\n finishCurrentPath()\n }\n\n const isRelative = command === 'm'\n for (let i = 0; i < args.length; i += 2) {\n if (i === 0) {\n // First move is absolute for both M and m\n currentPoint = {\n x: isRelative ? currentPoint.x + args[i] : args[i],\n y: isRelative ? currentPoint.y - args[i + 1] : reflectY(args[i + 1], svgHeight),\n }\n pathStart = { ...currentPoint }\n } else {\n // Subsequent moves are treated as LineTo\n const newPoint = {\n x: args[i] + (isRelative ? currentPoint.x : 0),\n y: isRelative ? currentPoint.y - args[i + 1] : reflectY(args[i + 1], svgHeight),\n }\n const lineSegment: Line = [\n currentPoint,\n STRAIGHT_LINE_HANDLE,\n STRAIGHT_LINE_HANDLE,\n newPoint,\n ]\n currentSegments.push(lineSegment)\n currentPoint = newPoint\n }\n }\n lastControlPoint = null\n break\n }\n\n case 'l': {\n // LineTo\n const isRelative = command === 'l'\n for (let i = 0; i < args.length; i += 2) {\n const newPoint: Point = {\n x: args[i] + (isRelative ? currentPoint.x : 0),\n y: isRelative ? currentPoint.y - args[i + 1] : reflectY(args[i + 1], svgHeight),\n }\n const lineSegment: Line = [\n currentPoint,\n STRAIGHT_LINE_HANDLE,\n STRAIGHT_LINE_HANDLE,\n newPoint,\n ]\n currentSegments.push(lineSegment)\n currentPoint = newPoint\n }\n lastControlPoint = null\n break\n }\n\n case 'h': {\n // Horizontal LineTo\n const isRelative = command === 'h'\n for (const x of args) {\n const newPoint: Point = {\n x: x + (isRelative ? currentPoint.x : 0),\n y: currentPoint.y, // y stays the same for horizontal lines\n }\n const lineSegment: Line = [\n currentPoint,\n STRAIGHT_LINE_HANDLE,\n STRAIGHT_LINE_HANDLE,\n newPoint,\n ]\n currentSegments.push(lineSegment)\n currentPoint = newPoint\n }\n lastControlPoint = null\n break\n }\n\n case 'v': {\n // Vertical LineTo\n const isRelative = command === 'v'\n for (const y of args) {\n const newPoint: Point = {\n x: currentPoint.x, // x stays the same for vertical lines\n y: isRelative ? currentPoint.y - y : reflectY(y, svgHeight),\n }\n const lineSegment: Line = [\n currentPoint,\n STRAIGHT_LINE_HANDLE,\n STRAIGHT_LINE_HANDLE,\n newPoint,\n ]\n currentSegments.push(lineSegment)\n currentPoint = newPoint\n }\n lastControlPoint = null\n break\n }\n\n case 'c': {\n // Cubic Bezier\n const isRelative = command === 'c'\n for (let i = 0; i < args.length; i += 6) {\n const cp1: Point = {\n x: args[i] + (isRelative ? currentPoint.x : 0),\n y: isRelative ? currentPoint.y - args[i + 1] : reflectY(args[i + 1], svgHeight),\n }\n const cp2: Point = {\n x: args[i + 2] + (isRelative ? currentPoint.x : 0),\n y: isRelative ? currentPoint.y - args[i + 3] : reflectY(args[i + 3], svgHeight),\n }\n const endPoint: Point = {\n x: args[i + 4] + (isRelative ? currentPoint.x : 0),\n y: isRelative ? currentPoint.y - args[i + 5] : reflectY(args[i + 5], svgHeight),\n }\n\n const curveSegment: BezierCurve = [currentPoint, cp1, cp2, endPoint]\n currentSegments.push(curveSegment)\n currentPoint = endPoint\n lastControlPoint = cp2\n }\n break\n }\n\n case 's': {\n // Smooth Cubic Bezier\n const isRelative = command === 's'\n for (let i = 0; i < args.length; i += 4) {\n // First control point is reflection of last control point\n const cp1: Point = lastControlPoint\n ? {\n x: 2 * currentPoint.x - lastControlPoint.x,\n y: 2 * currentPoint.y - lastControlPoint.y,\n }\n : { ...currentPoint }\n\n const cp2: Point = {\n x: args[i] + (isRelative ? currentPoint.x : 0),\n y: isRelative ? currentPoint.y - args[i + 1] : reflectY(args[i + 1], svgHeight),\n }\n const endPoint: Point = {\n x: args[i + 2] + (isRelative ? currentPoint.x : 0),\n y: isRelative ? currentPoint.y - args[i + 3] : reflectY(args[i + 3], svgHeight),\n }\n\n const curveSegment: BezierCurve = [currentPoint, cp1, cp2, endPoint]\n currentSegments.push(curveSegment)\n currentPoint = endPoint\n lastControlPoint = cp2\n }\n break\n }\n\n case 'z': {\n // ClosePath - close current path and start a new one\n if (currentPoint.x !== pathStart.x || currentPoint.y !== pathStart.y) {\n const lineSegment: Line = [\n currentPoint,\n STRAIGHT_LINE_HANDLE,\n STRAIGHT_LINE_HANDLE,\n pathStart,\n ]\n currentSegments.push(lineSegment)\n }\n currentPoint = pathStart\n lastControlPoint = null\n\n // Finish the current path (this creates a new array)\n finishCurrentPath()\n break\n }\n\n // Note: Q, T, A commands not implemented yet (quadratic bezier and arc)\n default:\n console.warn(`SVG path command '${command}' not supported yet`)\n lastControlPoint = null\n }\n }\n\n // Finish any remaining path\n finishCurrentPath()\n\n return allPaths\n}\n\nexport default function parsePathData(dAttribute: string, svgHeight: number): PathSegment[][] {\n const commands = getDataPathCommands(dAttribute)\n const pathData = commandsToSegments(commands, svgHeight)\n\n return pathData\n}\n","import { STRAIGHT_LINE_HANDLE } from './const'\nimport { Line } from './types'\n\nexport default function parseRect(width: number, height: number, svgHeight: number): Line[] {\n // Define the four corners of the rectangle in Cartesian space\n const topLeft: Point = { x: 0, y: height }\n const topRight: Point = { x: width, y: height }\n const bottomRight: Point = { x: width, y: 0 }\n const bottomLeft: Point = { x: 0, y: 0 }\n\n // Create four lines that form the rectangle\n const lines: Line[] = [\n // Top edge: left to right\n [topLeft, STRAIGHT_LINE_HANDLE, STRAIGHT_LINE_HANDLE, topRight],\n\n // Right edge: top to bottom\n [topRight, STRAIGHT_LINE_HANDLE, STRAIGHT_LINE_HANDLE, bottomRight],\n\n // Bottom edge: right to left\n [bottomRight, STRAIGHT_LINE_HANDLE, STRAIGHT_LINE_HANDLE, bottomLeft],\n\n // Left edge: bottom to top\n [bottomLeft, STRAIGHT_LINE_HANDLE, STRAIGHT_LINE_HANDLE, topLeft],\n ]\n\n return lines\n}\n","import getLoadingTexture from 'loadingTexture'\nimport { parse, RootNode, ElementNode } from 'svg-parser'\nimport { createTextureFromSource } from 'WebGPU/getTexture'\nimport createShapes from 'shapes/createShape'\n\nlet device: GPUDevice\nlet textures: TextureSource[]\nlet loadingTexture: GPUTexture\nlet updateProcessing: () => void\nlet loadingTextures: number\n\nexport function init(\n _device: GPUDevice,\n _updateProcessing: (loadingTextures: number) => void\n): void {\n device = _device\n textures = []\n loadingTexture = getLoadingTexture(device)\n updateProcessing = () => _updateProcessing(loadingTextures)\n loadingTextures = 0\n}\n\nexport interface TextureSource {\n url: string\n texture?: GPUTexture\n hash?: string\n data?: Uint8ClampedArray // it's time consuming to obtain data from a GPUTexture later\n}\n\nexport function add(\n url: string,\n callback?: (width: number, height: number, isNew: boolean) => void\n): number {\n loadingTextures++\n updateProcessing()\n\n const sameUrl = textures.find((t) => t.url === url)\n if (sameUrl) {\n loadingTextures--\n updateProcessing()\n callback?.(sameUrl.texture!.width, sameUrl.texture!.height, false)\n return textures.indexOf(sameUrl)\n }\n\n const textureId = textures.length\n // we allow duplicates in textures array\n textures.push({ url })\n\n getImageWithDetails(url).then(([img, svgTree]) => {\n if (svgTree) {\n const svgRoot = svgTree.children[0] as ElementNode\n console.log(svgRoot)\n\n const svgHeight = svgRoot.properties?.height || img.naturalHeight\n if (!svgHeight || typeof svgHeight !== 'number') throw Error('SVG height is required')\n createShapes(svgRoot, svgHeight)\n return\n }\n const { ctx } = getImageData(img, img.naturalWidth, img.naturalHeight)\n const data = ctx.getImageData(0, 0, img.naturalWidth, img.naturalHeight).data\n const hash = hashImageData(data)\n\n const existingTexture = findSameTexture(data, hash)\n if (existingTexture !== null) {\n textures[textureId] = existingTexture\n } else {\n textures[textureId].texture = createTextureFromSource(device, img, { flipY: true })\n textures[textureId].data = data\n textures[textureId].hash = hash\n }\n\n callback?.(img.width, img.height, !existingTexture)\n\n loadingTextures--\n updateProcessing()\n })\n\n return textureId\n}\n\nexport function getTexture(textureId: number): GPUTexture {\n return textures[textureId].texture ?? loadingTexture\n}\n\nexport function setTexture(texture: GPUTexture, optionalId: number | null) {\n if (optionalId !== null) {\n textures[optionalId].texture?.destroy()\n }\n\n const id = optionalId ?? textures.length\n textures[id] = {\n url: 'cache',\n texture,\n }\n\n return id\n}\n\nexport function getUrl(textureId: number): string {\n return textures[textureId].url\n}\n\nfunction getImageData(img: CanvasImageSource, width: number, height: number) {\n const canvas = new OffscreenCanvas(width, height)\n const ctx = canvas.getContext('2d')!\n ctx.drawImage(img, 0, 0, width, height)\n return { canvas, ctx }\n}\n\n/**\n * A simple, non-cryptographic hash function (djb2) for raw pixel data.\n * @param data The Uint8ClampedArray from getImageData.\n * @returns A hash string.\n */\nfunction hashImageData(data: Uint8ClampedArray): string {\n let hash = 5381\n for (let i = 0; i < data.length; i++) {\n // Bitwise operations are fast\n hash = (hash << 5) + hash + data[i] /* hash * 33 + c */\n }\n return String(hash)\n}\n\nfunction findSameTexture(imgData: Uint8ClampedArray, hash: string): TextureSource | null {\n for (let i = 0; i < textures.length; i++) {\n const texture = textures[i]\n if (texture.hash === hash) {\n // if hashes match, perform the more expensive full pixel check\n if (imgData.length !== texture.data!.length) {\n return null\n }\n\n for (let i = 0; i < imgData.length; i++) {\n if (imgData[i] !== texture.data![i]) {\n return null\n }\n }\n return texture\n }\n }\n\n return null\n}\n\nexport function updateTextureUrl(textureId: number, url: string) {\n textures[textureId].url = url\n}\n\nasync function getImageWithDetails(url: string): Promise<[HTMLImageElement, RootNode | null]> {\n return Promise.all([\n new Promise<HTMLImageElement>((resolve) => {\n const img = new Image()\n img.src = url\n img.onload = () => resolve(img)\n }),\n new Promise<RootNode | null>((resolve) => {\n fetch(url)\n .then((response) => response.text())\n .then((text) => {\n if (text.includes('<svg')) {\n resolve(parse(text))\n } else {\n resolve(null)\n }\n })\n }),\n ])\n}\n","export default function clamp(value: number, min: number, max: number) {\n return Math.min(max, Math.max(min, value))\n}","// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nexport default function debounce(callback: Function, ms: number) {\n let timeoutId: number\n return (...args: unknown[]) => {\n window.clearTimeout(timeoutId)\n timeoutId = window.setTimeout(() => {\n callback(...args)\n }, ms)\n }\n}\n","import clamp from 'utils/clamp'\n\nexport default function getDefaultPoints(\n texWidth: number,\n texHeight: number,\n projectWidth: number,\n projectHeight: number\n): PointUV[] {\n const scale = getDefaultTextureScale(texWidth, texHeight, projectWidth, projectHeight)\n const scaledWidth = texWidth * scale\n const scaledHeight = texHeight * scale\n const paddingX = (projectWidth - scaledWidth) * 0.5\n const paddingY = (projectHeight - scaledHeight) * 0.5\n\n return [\n { x: paddingX, y: paddingY + scaledHeight, u: 0, v: 1 },\n { x: paddingX + scaledWidth, y: paddingY + scaledHeight, u: 1, v: 1 },\n { x: paddingX + scaledWidth, y: paddingY, u: 1, v: 0 },\n { x: paddingX, y: paddingY, u: 0, v: 0 },\n ]\n}\n\n/**\n * Returns visualy pleasant size of texture, to make sure it doesn't overflow canvas but also is not too small to manipulate\n */\nfunction getDefaultTextureScale(\n texWidth: number,\n texHeight: number,\n projectWidth: number,\n projectHeight: number\n) {\n const heightDiff = projectHeight - texHeight\n const widthDiff = projectWidth - texWidth\n\n if (heightDiff < widthDiff) {\n const height = clamp(texHeight, projectHeight * 0.2, projectHeight * 0.8)\n return height / texHeight\n }\n\n const width = clamp(texWidth, projectWidth * 0.2, projectWidth * 0.8)\n return width / texWidth\n}\n","\nconst vec3 = {\n cross(a: number[] | Float32Array, b: number[] | Float32Array, dst = new Float32Array(3)) {\n const t0 = a[1] * b[2] - a[2] * b[1]\n const t1 = a[2] * b[0] - a[0] * b[2]\n const t2 = a[0] * b[1] - a[1] * b[0]\n\n dst[0] = t0\n dst[1] = t1\n dst[2] = t2\n\n return dst\n },\n\n subtract(a: number[] | Float32Array, b: number[] | Float32Array, dst = new Float32Array(3)) {\n dst[0] = a[0] - b[0]\n dst[1] = a[1] - b[1]\n dst[2] = a[2] - b[2]\n\n return dst\n },\n\n normalize(v : number[] | Float32Array, dst = new Float32Array(3)) {\n const length = Math.sqrt(v[0] * v[0] + v[1] * v[1] + v[2] * v[2])\n // make sure we don't divide by 0.\n if (length > 0.00001) {\n dst[0] = v[0] / length\n dst[1] = v[1] / length\n dst[2] = v[2] / length\n } else {\n dst[0] = 0\n dst[1] = 0\n dst[2] = 0\n }\n\n return dst\n },\n}\n\nexport default vec3","import vec3 from \"./vec3\"\n\nconst mat4 = {\n projection(width: number, height: number, depth: number, dst: Float32Array) {\n // Note: This matrix flips the Y axis so that 0 is at the top.\n return mat4.ortho(0, width, height, 0, depth, -depth, dst)\n },\n\n perspective(fieldOfViewYInRadians: number, aspect: number, zNear: number, zFar: number, dst = new Float32Array(16)) {\n const f = Math.tan(Math.PI * 0.5 - 0.5 * fieldOfViewYInRadians)\n const rangeInv = 1 / (zNear - zFar)\n\n dst[0] = f / aspect\n dst[1] = 0\n dst[2] = 0\n dst[3] = 0\n\n dst[4] = 0\n dst[5] = f\n dst[6] = 0\n dst[7] = 0\n\n dst[8] = 0\n dst[9] = 0\n dst[10] = zFar * rangeInv\n dst[11] = -1\n\n dst[12] = 0\n dst[13] = 0\n dst[14] = zNear * zFar * rangeInv\n dst[15] = 0\n\n return dst\n },\n\n ortho(left: number, right: number, bottom: number, top: number, near: number, far: number, dst = new Float32Array(16)) {\n dst[0] = 2 / (right - left)\n dst[1] = 0\n dst[2] = 0\n dst[3] = 0\n\n dst[4] = 0\n dst[5] = 2 / (top - bottom)\n dst[6] = 0\n dst[7] = 0\n\n dst[8] = 0\n dst[9] = 0\n dst[10] = 1 / (near - far)\n dst[11] = 0\n\n dst[12] = (right + left) / (left - right)\n dst[13] = (top + bottom) / (bottom - top)\n dst[14] = near / (near - far)\n dst[15] = 1\n\n return dst\n },\n\n identity(dst = new Float32Array(16)) {\n dst[ 0] = 1; dst[ 1] = 0; dst[ 2] = 0; dst[ 3] = 0\n dst[ 4] = 0; dst[ 5] = 1; dst[ 6] = 0; dst[ 7] = 0\n dst[ 8] = 0; dst[ 9] = 0; dst[10] = 1; dst[11] = 0\n dst[12] = 0; dst[13] = 0; dst[14] = 0; dst[15] = 1\n return dst\n },\n\n multiply(a: Float32Array, b: Float32Array, dst = new Float32Array(16)) {\n const b00 = b[0 * 4 + 0]\n const b01 = b[0 * 4 + 1]\n const b02 = b[0 * 4 + 2]\n const b03 = b[0 * 4 + 3]\n const b10 = b[1 * 4 + 0]\n const b11 = b[1 * 4 + 1]\n const b12 = b[1 * 4 + 2]\n const b13 = b[1 * 4 + 3]\n const b20 = b[2 * 4 + 0]\n const b21 = b[2 * 4 + 1]\n const b22 = b[2 * 4 + 2]\n const b23 = b[2 * 4 + 3]\n const b30 = b[3 * 4 + 0]\n const b31 = b[3 * 4 + 1]\n const b32 = b[3 * 4 + 2]\n const b33 = b[3 * 4 + 3]\n const a00 = a[0 * 4 + 0]\n const a01 = a[0 * 4 + 1]\n const a02 = a[0 * 4 + 2]\n const a03 = a[0 * 4 + 3]\n const a10 = a[1 * 4 + 0]\n const a11 = a[1 * 4 + 1]\n const a12 = a[1 * 4 + 2]\n const a13 = a[1 * 4 + 3]\n const a20 = a[2 * 4 + 0]\n const a21 = a[2 * 4 + 1]\n const a22 = a[2 * 4 + 2]\n const a23 = a[2 * 4 + 3]\n const a30 = a[3 * 4 + 0]\n const a31 = a[3 * 4 + 1]\n const a32 = a[3 * 4 + 2]\n const a33 = a[3 * 4 + 3]\n\n dst[0] = b00 * a00 + b01 * a10 + b02 * a20 + b03 * a30\n dst[1] = b00 * a01 + b01 * a11 + b02 * a21 + b03 * a31\n dst[2] = b00 * a02 + b01 * a12 + b02 * a22 + b03 * a32\n dst[3] = b00 * a03 + b01 * a13 + b02 * a23 + b03 * a33\n\n dst[4] = b10 * a00 + b11 * a10 + b12 * a20 + b13 * a30\n dst[5] = b10 * a01 + b11 * a11 + b12 * a21 + b13 * a31\n dst[6] = b10 * a02 + b11 * a12 + b12 * a22 + b13 * a32\n dst[7] = b10 * a03 + b11 * a13 + b12 * a23 + b13 * a33\n\n dst[8] = b20 * a00 + b21 * a10 + b22 * a20 + b23 * a30\n dst[9] = b20 * a01 + b21 * a11 + b22 * a21 + b23 * a31\n dst[10] = b20 * a02 + b21 * a12 + b22 * a22 + b23 * a32\n dst[11] = b20 * a03 + b21 * a13 + b22 * a23 + b23 * a33\n\n dst[12] = b30 * a00 + b31 * a10 + b32 * a20 + b33 * a30\n dst[13] = b30 * a01 + b31 * a11 + b32 * a21 + b33 * a31\n dst[14] = b30 * a02 + b31 * a12 + b32 * a22 + b33 * a32\n dst[15] = b30 * a03 + b31 * a13 + b32 * a23 + b33 * a33\n\n return dst\n },\n\n cameraAim(eye: number[] | Float32Array, target: number[], up: number[], dst = new Float32Array(16)) {\n const zAxis = vec3.normalize(vec3.subtract(eye, target))\n const xAxis = vec3.normalize(vec3.cross(up, zAxis))\n const yAxis = vec3.normalize(vec3.cross(zAxis, xAxis))\n\n dst[ 0] = xAxis[0]; dst[ 1] = xAxis[1]; dst[ 2] = xAxis[2]; dst[ 3] = 0\n dst[ 4] = yAxis[0]; dst[ 5] = yAxis[1]; dst[ 6] = yAxis[2]; dst[ 7] = 0\n dst[ 8] = zAxis[0]; dst[ 9] = zAxis[1]; dst[10] = zAxis[2]; dst[11] = 0\n dst[12] = eye[0]; dst[13] = eye[1]; dst[14] = eye[2]; dst[15] = 1\n\n return dst\n },\n\n inverse(m: Float32Array, dst = new Float32Array(16)) {\n const m00 = m[0 * 4 + 0]\n const m01 = m[0 * 4 + 1]\n const m02 = m[0 * 4 + 2]\n const m03 = m[0 * 4 + 3]\n const m10 = m[1 * 4 + 0]\n const m11 = m[1 * 4 + 1]\n const m12 = m[1 * 4 + 2]\n const m13 = m[1 * 4 + 3]\n const m20 = m[2 * 4 + 0]\n const m21 = m[2 * 4 + 1]\n const m22 = m[2 * 4 + 2]\n const m23 = m[2 * 4 + 3]\n const m30 = m[3 * 4 + 0]\n const m31 = m[3 * 4 + 1]\n const m32 = m[3 * 4 + 2]\n const m33 = m[3 * 4 + 3]\n\n const tmp0 = m22 * m33\n const tmp1 = m32 * m23\n const tmp2 = m12 * m33\n const tmp3 = m32 * m13\n const tmp4 = m12 * m23\n const tmp5 = m22 * m13\n const tmp6 = m02 * m33\n const tmp7 = m32 * m03\n const tmp8 = m02 * m23\n const tmp9 = m22 * m03\n const tmp10 = m02 * m13\n const tmp11 = m12 * m03\n const tmp12 = m20 * m31\n const tmp13 = m30 * m21\n const tmp14 = m10 * m31\n const tmp15 = m30 * m11\n const tmp16 = m10 * m21\n const tmp17 = m20 * m11\n const tmp18 = m00 * m31\n const tmp19 = m30 * m01\n const tmp20 = m00 * m21\n const tmp21 = m20 * m01\n const tmp22 = m00 * m11\n const tmp23 = m10 * m01\n\n const t0 = (tmp0 * m11 + tmp3 * m21 + tmp4 * m31) -\n (tmp1 * m11 + tmp2 * m21 + tmp5 * m31)\n const t1 = (tmp1 * m01 + tmp6 * m21 + tmp9 * m31) -\n (tmp0 * m01 + tmp7 * m21 + tmp8 * m31)\n const t2 = (tmp2 * m01 + tmp7 * m11 + tmp10 * m31) -\n (tmp3 * m01 + tmp6 * m11 + tmp11 * m31)\n const t3 = (tmp5 * m01 + tmp8 * m11 + tmp11 * m21) -\n (tmp4 * m01 + tmp9 * m11 + tmp10 * m21)\n\n const d = 1 / (m00 * t0 + m10 * t1 + m20 * t2 + m30 * t3)\n\n dst[0] = d * t0\n dst[1] = d * t1\n dst[2] = d * t2\n dst[3] = d * t3\n\n dst[4] = d * ((tmp1 * m10 + tmp2 * m20 + tmp5 * m30) -\n (tmp0 * m10 + tmp3 * m20 + tmp4 * m30))\n dst[5] = d * ((tmp0 * m00 + tmp7 * m20 + tmp8 * m30) -\n (tmp1 * m00 + tmp6 * m20 + tmp9 * m30))\n dst[6] = d * ((tmp3 * m00 + tmp6 * m10 + tmp11 * m30) -\n (tmp2 * m00 + tmp7 * m10 + tmp10 * m30))\n dst[7] = d * ((tmp4 * m00 + tmp9 * m10 + tmp10 * m20) -\n (tmp5 * m00 + tmp8 * m10 + tmp11 * m20))\n\n dst[8] = d * ((tmp12 * m13 + tmp15 * m23 + tmp16 * m33) -\n (tmp13 * m13 + tmp14 * m23 + tmp17 * m33))\n dst[9] = d * ((tmp13 * m03 + tmp18 * m23 + tmp21 * m33) -\n (tmp12 * m03 + tmp19 * m23 + tmp20 * m33))\n dst[10] = d * ((tmp14 * m03 + tmp19 * m13 + tmp22 * m33) -\n (tmp15 * m03 + tmp18 * m13 + tmp23 * m33))\n dst[11] = d * ((tmp17 * m03 + tmp20 * m13 + tmp23 * m23) -\n (tmp16 * m03 + tmp21 * m13 + tmp22 * m23))\n\n dst[12] = d * ((tmp14 * m22 + tmp17 * m32 + tmp13 * m12) -\n (tmp16 * m32 + tmp12 * m12 + tmp15 * m22))\n dst[13] = d * ((tmp20 * m32 + tmp12 * m02 + tmp19 * m22) -\n (tmp18 * m22 + tmp21 * m32 + tmp13 * m02))\n dst[14] = d * ((tmp18 * m12 + tmp23 * m32 + tmp15 * m02) -\n (tmp22 * m32 + tmp14 * m02 + tmp19 * m12))\n dst[15] = d * ((tmp22 * m22 + tmp16 * m02 + tmp21 * m12) -\n (tmp20 * m12 + tmp23 * m22 + tmp17 * m02))\n return dst\n },\n\n transpose(m: Float32Array, dst = new Float32Array(16)) {\n dst[ 0] = m[ 0]; dst[ 1] = m[ 4]; dst[ 2] = m[ 8]; dst[ 3] = m[12]\n dst[ 4] = m[ 1]; dst[ 5] = m[ 5]; dst[ 6] = m[ 9]; dst[ 7] = m[13]\n dst[ 8] = m[ 2]; dst[ 9] = m[ 6]; dst[10] = m[10]; dst[11] = m[14]\n dst[12] = m[ 3]; dst[13] = m[ 7]; dst[14] = m[11]; dst[15] = m[15]\n\n return dst\n },\n\n aim(eye: Float32Array | number[], target: number[], up: number[], dst = new Float32Array(16)) {\n const zAxis = vec3.normalize(vec3.subtract(target, eye))\n const xAxis = vec3.normalize(vec3.cross(up, zAxis))\n const yAxis = vec3.normalize(vec3.cross(zAxis, xAxis))\n \n dst[ 0] = xAxis[0]; dst[ 1] = xAxis[1]; dst[ 2] = xAxis[2]; dst[ 3] = 0\n dst[ 4] = yAxis[0]; dst[ 5] = yAxis[1]; dst[ 6] = yAxis[2]; dst[ 7] = 0\n dst[ 8] = zAxis[0]; dst[ 9] = zAxis[1]; dst[10] = zAxis[2]; dst[11] = 0\n dst[12] = eye[0]; dst[13] = eye[1]; dst[14] = eye[2]; dst[15] = 1\n \n return dst\n },\n\n lookAt(eye: number[] | Float32Array, target: number[], up: number[], dst?: Float32Array) {\n return mat4.inverse(mat4.cameraAim(eye, target, up, dst), dst)\n },\n\n translation([tx, ty, tz]: number[], dst = new Float32Array(16)) {\n dst[ 0] = 1; dst[ 1] = 0; dst[ 2] = 0; dst[ 3] = 0\n dst[ 4] = 0; dst[ 5] = 1; dst[ 6] = 0; dst[ 7] = 0\n dst[ 8] = 0; dst[ 9] = 0; dst[10] = 1; dst[11] = 0\n dst[12] = tx; dst[13] = ty; dst[14] = tz; dst[15] = 1\n return dst\n },\n\n rotationX(angleInRadians: number, dst = new Float32Array(16)) {\n const c = Math.cos(angleInRadians)\n const s = Math.sin(angleInRadians)\n dst[ 0] = 1; dst[ 1] = 0; dst[ 2] = 0; dst[ 3] = 0\n dst[ 4] = 0; dst[ 5] = c; dst[ 6] = s; dst[ 7] = 0\n dst[ 8] = 0; dst[ 9] = -s; dst[10] = c; dst[11] = 0\n dst[12] = 0; dst[13] = 0; dst[14] = 0; dst[15] = 1\n return dst\n },\n\n rotationY(angleInRadians: number, dst = new Float32Array(16)) {\n const c = Math.cos(angleInRadians)\n const s = Math.sin(angleInRadians)\n dst[ 0] = c; dst[ 1] = 0; dst[ 2] = -s; dst[ 3] = 0\n dst[ 4] = 0; dst[ 5] = 1; dst[ 6] = 0; dst[ 7] = 0\n dst[ 8] = s; dst[ 9] = 0; dst[10] = c; dst[11] = 0\n dst[12] = 0; dst[13] = 0; dst[14] = 0; dst[15] = 1\n return dst\n },\n\n rotationZ(angleInRadians: number, dst = new Float32Array(16)) {\n const c = Math.cos(angleInRadians)\n const s = Math.sin(angleInRadians)\n dst[ 0] = c; dst[ 1] = s; dst[ 2] = 0; dst[ 3] = 0\n dst[ 4] = -s; dst[ 5] = c; dst[ 6] = 0; dst[ 7] = 0\n dst[ 8] = 0; dst[ 9] = 0; dst[10] = 1; dst[11] = 0\n dst[12] = 0; dst[13] = 0; dst[14] = 0; dst[15] = 1\n return dst\n },\n\n scaling([sx, sy, sz]: number[], dst = new Float32Array(16)) {\n dst[ 0] = sx; dst[ 1] = 0; dst[ 2] = 0; dst[ 3] = 0\n dst[ 4] = 0; dst[ 5] = sy; dst[ 6] = 0; dst[ 7] = 0\n dst[ 8] = 0; dst[ 9] = 0; dst[10] = sz; dst[11] = 0\n dst[12] = 0; dst[13] = 0; dst[14] = 0; dst[15] = 1\n return dst\n },\n\n translate(m: Float32Array, translation: number[], dst?: Float32Array) {\n return mat4.multiply(m, mat4.translation(translation), dst)\n },\n\n rotateX(m: Float32Array, angleInRadians: number, dst?: Float32Array) {\n return mat4.multiply(m, mat4.rotationX(angleInRadians), dst)\n },\n\n rotateY(m: Float32Array, angleInRadians: number, dst?: Float32Array) {\n return mat4.multiply(m, mat4.rotationY(angleInRadians), dst)\n },\n\n rotateZ(m: Float32Array, angleInRadians: number, dst?: Float32Array) {\n return mat4.multiply(m, mat4.rotationZ(angleInRadians), dst)\n },\n\n scale(m: Float32Array, scale: number[], dst?: Float32Array) {\n return mat4.multiply(m, mat4.scaling(scale), dst)\n },\n}\n\nexport default mat4","import { createEnvironment } from \"zigar-runtime\";\nimport 'zigar-runtime/accessors/all.js';\nimport 'zigar-runtime/accessors/bool.js';\nimport 'zigar-runtime/accessors/uint.js';\nimport 'zigar-runtime/features/allocator-methods.js';\nimport 'zigar-runtime/features/call-marshaling-inbound.js';\nimport 'zigar-runtime/features/call-marshaling-outbound.js';\nimport 'zigar-runtime/features/data-copying.js';\nimport 'zigar-runtime/features/int-conversion.js';\nimport 'zigar-runtime/features/memory-mapping.js';\nimport 'zigar-runtime/features/module-loading.js';\nimport 'zigar-runtime/features/view-management.js';\nimport 'zigar-runtime/features/write-protection.js';\nimport 'zigar-runtime/iterators/for-array.js';\nimport 'zigar-runtime/iterators/for-struct.js';\nimport 'zigar-runtime/members/all.js';\nimport 'zigar-runtime/members/base64.js';\nimport 'zigar-runtime/members/bool.js';\nimport 'zigar-runtime/members/clamped-array.js';\nimport 'zigar-runtime/members/data-view.js';\nimport 'zigar-runtime/members/float.js';\nimport 'zigar-runtime/members/object.js';\nimport 'zigar-runtime/members/primitive.js';\nimport 'zigar-runtime/members/string.js';\nimport 'zigar-runtime/members/to-json.js';\nimport 'zigar-runtime/members/type.js';\nimport 'zigar-runtime/members/typed-array.js';\nimport 'zigar-runtime/members/uint.js';\nimport 'zigar-runtime/members/value-of.js';\nimport 'zigar-runtime/members/void.js';\nimport 'zigar-runtime/structures/all.js';\nimport 'zigar-runtime/structures/arg-struct.js';\nimport 'zigar-runtime/structures/array.js';\nimport 'zigar-runtime/structures/array-like.js';\nimport 'zigar-runtime/structures/enum.js';\nimport 'zigar-runtime/structures/error-set.js';\nimport 'zigar-runtime/structures/error-union.js';\nimport 'zigar-runtime/structures/function.js';\nimport 'zigar-runtime/structures/optional.js';\nimport 'zigar-runtime/structures/pointer.js';\nimport 'zigar-runtime/structures/primitive.js';\nimport 'zigar-runtime/structures/slice.js';\nimport 'zigar-runtime/structures/struct.js';\nimport 'zigar-runtime/structures/struct-like.js';\nimport 'zigar-runtime/visitors/all.js';\nimport 'zigar-runtime/visitors/in-arg-struct.js';\nimport 'zigar-runtime/visitors/in-array.js';\nimport 'zigar-runtime/visitors/in-optional.js';\nimport 'zigar-runtime/visitors/in-struct.js';\nimport 'zigar-runtime/features/baseline.js';\nimport 'zigar-runtime/features/thunk-allocation.js';\nimport 'zigar-runtime/features/pointer-synchronization.js';\nimport 'zigar-runtime/features/js-allocator.js';\nimport 'zigar-runtime/features/object-linkage.js';\nimport 'zigar-runtime/accessors/int.js';\n\n// structure defaults\nconst s = {\n constructor: null,\n type: 0,\n flags: 0,\n signature: undefined,\n name: undefined,\n byteSize: 0,\n align: 0,\n instance: {\n members: [],\n template: null,\n },\n static: {\n members: [],\n template: null,\n },\n};\n\n// member defaults\nconst m = {\n type: 0,\n flags: 0,\n};\n\n// declare structure objects\nconst s0 = {}, s1 = {}, s2 = {}, s3 = {}, s4 = {}, s5 = {}, s6 = {}, s7 = {}, s8 = {}, s9 = {};\nconst s10 = {}, s11 = {}, s12 = {}, s13 = {}, s14 = {}, s15 = {}, s16 = {}, s17 = {}, s18 = {}, s19 = {};\nconst s20 = {}, s21 = {}, s22 = {}, s23 = {}, s24 = {}, s25 = {}, s26 = {}, s27 = {}, s28 = {}, s29 = {};\nconst s30 = {}, s31 = {}, s32 = {}, s33 = {}, s34 = {}, s35 = {}, s36 = {}, s37 = {}, s38 = {}, s39 = {};\nconst s40 = {}, s41 = {}, s42 = {}, s43 = {}, s44 = {}, s45 = {}, s46 = {}, s47 = {}, s48 = {}, s49 = {};\nconst s50 = {}, s51 = {}, s52 = {}, s53 = {}, s54 = {}, s55 = {}, s56 = {}, s57 = {}, s58 = {}, s59 = {};\nconst s60 = {}, s61 = {}, s62 = {}, s63 = {}, s64 = {}, s65 = {}, s66 = {}, s67 = {}, s68 = {}, s69 = {};\nconst s70 = {}, s71 = {}, s72 = {}, s73 = {}, s74 = {}, s75 = {}, s76 = {}, s77 = {}, s78 = {}, s79 = {};\nconst s80 = {}, s81 = {}, s82 = {}, s83 = {}, s84 = {}, s85 = {}, s86 = {}, s87 = {}, s88 = {}, s89 = {};\nconst s90 = {}, s91 = {}, s92 = {}, s93 = {}, s94 = {}, s95 = {}, s96 = {}, s97 = {}, s98 = {}, s99 = {};\nconst s100 = {}, s101 = {}, s102 = {}, s103 = {}, s104 = {}, s105 = {}, s106 = {}, s107 = {}, s108 = {}, s109 = {};\nconst s110 = {}, s111 = {}, s112 = {}, s113 = {}, s114 = {}, s115 = {}, s116 = {}, s117 = {}, s118 = {}, s119 = {};\nconst s120 = {}, s121 = {}, s122 = {}, s123 = {}, s124 = {}, s125 = {}, s126 = {}, s127 = {}, s128 = {}, s129 = {};\nconst s130 = {}, s131 = {}, s132 = {}, s133 = {}, s134 = {}, s135 = {}, s136 = {}, s137 = {}, s138 = {}, s139 = {};\nconst s140 = {}, s141 = {}, s142 = {}, s143 = {}, s144 = {}, s145 = {}, s146 = {}, s147 = {}, s148 = {}, s149 = {};\nconst s150 = {}, s151 = {}, s152 = {}, s153 = {}, s154 = {}, s155 = {}, s156 = {}, s157 = {}, s158 = {}, s159 = {};\nconst s160 = {}, s161 = {}, s162 = {}, s163 = {}, s164 = {}, s165 = {}, s166 = {}, s167 = {}, s168 = {}, s169 = {};\nconst s170 = {}, s171 = {}, s172 = {}, s173 = {}, s174 = {}, s175 = {}, s176 = {}, s177 = {}, s178 = {}, s179 = {};\nconst s180 = {}, s181 = {}, s182 = {}, s183 = {}, s184 = {}, s185 = {}, s186 = {}, s187 = {}, s188 = {}, s189 = {};\nconst s190 = {}, s191 = {}, s192 = {}, s193 = {}, s194 = {}, s195 = {}, s196 = {}, s197 = {}, s198 = {}, s199 = {};\nconst s200 = {}, s201 = {}, s202 = {}, s203 = {}, s204 = {}, s205 = {};\n\n// declare objects\nconst o0 = {}, o1 = {}, o2 = {}, o3 = {}, o4 = {}, o5 = {}, o6 = {}, o7 = {}, o8 = {}, o9 = {};\nconst o10 = {}, o11 = {}, o12 = {}, o13 = {}, o14 = {}, o15 = {}, o16 = {}, o17 = {}, o18 = {}, o19 = {};\nconst o20 = {}, o21 = {}, o22 = {}, o23 = {}, o24 = {}, o25 = {}, o26 = {}, o27 = {}, o28 = {}, o29 = {};\nconst o30 = {}, o31 = {}, o32 = {}, o33 = {}, o34 = {}, o35 = {}, o36 = {}, o37 = {}, o38 = {}, o39 = {};\nconst o40 = {}, o41 = {}, o42 = {}, o43 = {}, o44 = {}, o45 = {}, o46 = {}, o47 = {}, o48 = {}, o49 = {};\nconst o50 = {}, o51 = {}, o52 = {}, o53 = {}, o54 = {}, o55 = {}, o56 = {}, o57 = {}, o58 = {}, o59 = {};\nconst o60 = {}, o61 = {}, o62 = {}, o63 = {}, o64 = {}, o65 = {}, o66 = {}, o67 = {}, o68 = {}, o69 = {};\nconst o70 = {}, o71 = {}, o72 = {}, o73 = {}, o74 = {}, o75 = {}, o76 = {}, o77 = {}, o78 = {}, o79 = {};\nconst o80 = {}, o81 = {}, o82 = {}, o83 = {}, o84 = {}, o85 = {}, o86 = {}, o87 = {}, o88 = {}, o89 = {};\nconst o90 = {}, o91 = {}, o92 = {}, o93 = {}, o94 = {}, o95 = {}, o96 = {}, o97 = {}, o98 = {}, o99 = {};\nconst o100 = {}, o101 = {}, o102 = {}, o103 = {}, o104 = {}, o105 = {}, o106 = {}, o107 = {}, o108 = {}, o109 = {};\nconst o110 = {}, o111 = {}, o112 = {}, o113 = {}, o114 = {}, o115 = {}, o116 = {}, o117 = {}, o118 = {}, o119 = {};\nconst o120 = {}, o121 = {}, o122 = {}, o123 = {}, o124 = {}, o125 = {}, o126 = {}, o127 = {}, o128 = {}, o129 = {};\nconst o130 = {}, o131 = {}, o132 = {}, o133 = {}, o134 = {}, o135 = {}, o136 = {}, o137 = {}, o138 = {}, o139 = {};\nconst o140 = {}, o141 = {}, o142 = {}, o143 = {}, o144 = {}, o145 = {}, o146 = {}, o147 = {}, o148 = {}, o149 = {};\nconst o150 = {}, o151 = {}, o152 = {}, o153 = {}, o154 = {}, o155 = {}, o156 = {}, o157 = {}, o158 = {}, o159 = {};\nconst o160 = {}, o161 = {}, o162 = {}, o163 = {}, o164 = {}, o165 = {}, o166 = {}, o167 = {}, o168 = {}, o169 = {};\nconst o170 = {}, o171 = {}, o172 = {}, o173 = {}, o174 = {}, o175 = {}, o176 = {}, o177 = {}, o178 = {}, o179 = {};\nconst o180 = {}, o181 = {}, o182 = {}, o183 = {}, o184 = {}, o185 = {}, o186 = {}, o187 = {}, o188 = {}, o189 = {};\nconst o190 = {}, o191 = {}, o192 = {}, o193 = {}, o194 = {}, o195 = {}, o196 = {}, o197 = {}, o198 = {}, o199 = {};\nconst o200 = {}, o201 = {}, o202 = {}, o203 = {}, o204 = {}, o205 = {}, o206 = {}, o207 = {}, o208 = {}, o209 = {};\nconst o210 = {}, o211 = {};\n\n// define byte arrays\nconst U = i => new Uint8Array(i);\nconst a0 = U(0);\nconst a1 = U(8);\nconst a2 = U(16);\nconst a3 = U(64);\nconst a4 = U(48);\nconst a5 = U(52);\nconst a6 = U(20);\nconst a7 = U(64);\nconst a8 = U(24);\nconst a9 = U(72);\nconst a10 = U(16);\nconst a11 = U(1);\nconst a12 = U([ 1 ]);\nconst a13 = U([ 2 ]);\nconst a14 = U([ 3 ]);\nconst a15 = U([ 4 ]);\nconst a16 = U([ 5 ]);\nconst a17 = U(1);\nconst a18 = U(a12);\nconst a19 = U(a13);\nconst a20 = U(1);\nconst a21 = U(a12);\nconst a22 = U(a13);\nconst a23 = U(a14);\nconst a24 = U(a15);\nconst a25 = U(a16);\nconst a26 = U([ 6 ]);\nconst a27 = U(16);\nconst a28 = U([ 8, 0 ]);\nconst a29 = U(8);\nconst a30 = U(a28);\nconst a31 = U(a28);\nconst a32 = U(a28);\nconst a33 = U(a28);\nconst a34 = U(a28);\nconst a35 = U(a28);\nconst a36 = U(a28);\nconst a37 = U(a28);\nconst a38 = U(a28);\nconst a39 = U(a28);\nconst a40 = U(1);\nconst a41 = U(a12);\nconst a42 = U(a28);\nconst a43 = U([ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 63, 0, 0, 0, 0 ]);\nconst a44 = U([ 232, 3, 0, 0 ]);\n\n// fill in object properties\nconst $ = Object.assign;\n$(o0, {\n memory: { array: a0 },\n handle: 99,\n});\n$(o1, {\n memory: { array: a0 },\n handle: 100,\n});\n$(o2, {\n memory: { array: a0 },\n handle: 101,\n});\n$(o3, {\n memory: { array: a1 },\n});\n$(o4, {\n slots: {\n 0: o5, 2: o6, 3: o7, 4: o8,\n },\n});\n$(o5, {\n structure: s3,\n memory: { array: a0 },\n handle: 60,\n});\n$(o6, {\n structure: s5,\n memory: { array: a0 },\n handle: 61,\n});\n$(o7, {\n structure: s3,\n memory: { array: a0 },\n handle: 62,\n});\n$(o8, {\n structure: s7,\n memory: { array: a0 },\n handle: 63,\n});\n$(o9, {\n memory: { array: a0 },\n handle: 86,\n});\n$(o10, {\n memory: { array: a0 },\n handle: 87,\n});\n$(o11, {\n memory: { array: a2 },\n});\n$(o12, {\n slots: {\n 0: o13, 1: o14, 2: o15,\n },\n});\n$(o13, {\n structure: s10,\n memory: { array: a0 },\n handle: 60,\n});\n$(o14, {\n structure: s12,\n memory: { array: a0 },\n handle: 76,\n});\n$(o15, {\n structure: s12,\n memory: { array: a0 },\n handle: 61,\n});\n$(o16, {\n memory: { array: a0 },\n handle: 44,\n});\n$(o17, {\n memory: { array: a0 },\n handle: 45,\n});\n$(o18, {\n memory: { array: a3 },\n});\n$(o19, {\n memory: { array: a0 },\n handle: 25,\n});\n$(o20, {\n memory: { array: a0 },\n handle: 46,\n});\n$(o21, {\n memory: { array: a4 },\n});\n$(o22, {\n memory: { array: a0 },\n handle: 47,\n});\n$(o23, {\n memory: { array: a0 },\n handle: 48,\n});\n$(o24, {\n memory: { array: a5 },\n});\n$(o25, {\n memory: { array: a0 },\n handle: 49,\n});\n$(o26, {\n memory: { array: a0 },\n handle: 50,\n});\n$(o27, {\n memory: { array: a6 },\n});\n$(o28, {\n memory: { array: a0 },\n handle: 49,\n});\n$(o29, {\n memory: { array: a0 },\n handle: 51,\n});\n$(o30, {\n memory: { array: a7 },\n});\n$(o31, {\n memory: { array: a0 },\n handle: 25,\n});\n$(o32, {\n memory: { array: a0 },\n handle: 52,\n});\n$(o33, {\n memory: { array: a8 },\n handle: 264364,\n slots: {\n 0: o34, 1: o36, 2: o38, 3: o40, 4: o42, 5: o44,\n },\n});\n$(o34, {\n structure: s18,\n memory: { array: a8, offset: 0, length: 4 },\n slots: {\n 0: o35,\n },\n});\n$(o35, {\n structure: s17,\n memory: { array: a0 },\n});\n$(o36, {\n structure: s27,\n memory: { array: a8, offset: 4, length: 4 },\n slots: {\n 0: o37,\n },\n});\n$(o37, {\n structure: s26,\n memory: { array: a0 },\n});\n$(o38, {\n structure: s34,\n memory: { array: a8, offset: 8, length: 4 },\n slots: {\n 0: o39,\n },\n});\n$(o39, {\n structure: s33,\n memory: { array: a0 },\n});\n$(o40, {\n structure: s41,\n memory: { array: a8, offset: 12, length: 4 },\n slots: {\n 0: o41,\n },\n});\n$(o41, {\n structure: s40,\n memory: { array: a0 },\n});\n$(o42, {\n structure: s47,\n memory: { array: a8, offset: 16, length: 4 },\n slots: {\n 0: o43,\n },\n});\n$(o43, {\n structure: s46,\n memory: { array: a0 },\n});\n$(o44, {\n structure: s53,\n memory: { array: a8, offset: 20, length: 4 },\n slots: {\n 0: o45,\n },\n});\n$(o45, {\n structure: s52,\n memory: { array: a0 },\n});\n$(o46, {\n memory: { array: a0 },\n handle: 24,\n});\n$(o47, {\n memory: { array: a9 },\n});\n$(o48, {\n memory: { array: a0 },\n handle: 25,\n});\n$(o49, {\n memory: { array: a0 },\n handle: 26,\n});\n$(o50, {\n memory: { array: a0 },\n handle: 27,\n});\n$(o51, {\n memory: { array: a0 },\n handle: 35,\n});\n$(o52, {\n memory: { array: a0 },\n handle: 36,\n});\n$(o53, {\n memory: { array: a0 },\n handle: 27,\n});\n$(o54, {\n memory: { array: a10 },\n});\n$(o55, {\n memory: { array: a0 },\n handle: 28,\n});\n$(o56, {\n memory: { array: a0 },\n handle: 29,\n});\n$(o57, {\n memory: { array: a0 },\n handle: 39,\n});\n$(o58, {\n memory: { array: a0 },\n handle: 40,\n});\n$(o59, {\n memory: { array: a0 },\n handle: 30,\n});\n$(o60, {\n memory: { array: a0 },\n handle: 88,\n});\n$(o61, {\n memory: { array: a0 },\n handle: 89,\n});\n$(o62, {\n memory: { array: a0 },\n handle: 102,\n});\n$(o63, {\n memory: { array: a0 },\n handle: 103,\n});\n$(o64, {\n memory: { array: a0 },\n handle: 105,\n});\n$(o65, {\n slots: {\n 0: o66, 1: o67, 2: o68, 3: o69, 4: o70, 5: o71, 6: o72,\n },\n});\n$(o66, {\n structure: s99,\n memory: { array: a0 },\n handle: 98,\n});\n$(o67, {\n structure: s100,\n memory: { array: a11 },\n const: true,\n});\n$(o68, {\n structure: s100,\n memory: { array: a12 },\n const: true,\n});\n$(o69, {\n structure: s100,\n memory: { array: a13 },\n const: true,\n});\n$(o70, {\n structure: s100,\n memory: { array: a14 },\n const: true,\n});\n$(o71, {\n structure: s100,\n memory: { array: a15 },\n const: true,\n});\n$(o72, {\n structure: s100,\n memory: { array: a16 },\n const: true,\n});\n$(o73, {\n memory: { array: a0 },\n handle: 104,\n});\n$(o74, {\n slots: {\n 0: o75, 1: o76, 2: o77, 3: o78, 4: o79, 5: o80,\n },\n});\n$(o75, {\n structure: s93,\n memory: { array: a0 },\n handle: 95,\n});\n$(o76, {\n structure: s96,\n memory: { array: a0 },\n handle: 96,\n});\n$(o77, {\n structure: s102,\n memory: { array: a0 },\n handle: 97,\n});\n$(o78, {\n structure: s103,\n memory: { array: a17 },\n const: true,\n});\n$(o79, {\n structure: s103,\n memory: { array: a18 },\n const: true,\n});\n$(o80, {\n structure: s103,\n memory: { array: a19 },\n const: true,\n});\n$(o81, {\n memory: { array: a0 },\n handle: 90,\n});\n$(o82, {\n memory: { array: a0 },\n handle: 91,\n});\n$(o83, {\n memory: { array: a0 },\n handle: 92,\n});\n$(o84, {\n memory: { array: a0 },\n handle: 93,\n});\n$(o85, {\n memory: { array: a0 },\n handle: 94,\n});\n$(o86, {\n slots: {\n 0: o87, 1: o88, 2: o89, 3: o90, 4: o91, 5: o92, 6: o93, 7: o94, 8: o95, 9: o96,\n 10: o97, 11: o98, 12: o99, 13: o100, 14: o101, 15: o102,\n },\n});\n$(o87, {\n structure: s89,\n memory: { array: a0 },\n handle: 77,\n});\n$(o88, {\n structure: s91,\n memory: { array: a0 },\n handle: 78,\n});\n$(o89, {\n structure: s105,\n memory: { array: a0 },\n handle: 79,\n});\n$(o90, {\n structure: s107,\n memory: { array: a0 },\n handle: 80,\n});\n$(o91, {\n structure: s109,\n memory: { array: a0 },\n handle: 81,\n});\n$(o92, {\n structure: s109,\n memory: { array: a0 },\n handle: 82,\n});\n$(o93, {\n structure: s111,\n memory: { array: a0 },\n handle: 83,\n});\n$(o94, {\n structure: s111,\n memory: { array: a0 },\n handle: 84,\n});\n$(o95, {\n structure: s113,\n memory: { array: a0 },\n handle: 85,\n});\n$(o96, {\n structure: s114,\n memory: { array: a20 },\n const: true,\n});\n$(o97, {\n structure: s114,\n memory: { array: a21 },\n const: true,\n});\n$(o98, {\n structure: s114,\n memory: { array: a22 },\n const: true,\n});\n$(o99, {\n structure: s114,\n memory: { array: a23 },\n const: true,\n});\n$(o100, {\n structure: s114,\n memory: { array: a24 },\n const: true,\n});\n$(o101, {\n structure: s114,\n memory: { array: a25 },\n const: true,\n});\n$(o102, {\n structure: s114,\n memory: { array: a26 },\n const: true,\n});\n$(o103, {\n memory: { array: a0 },\n handle: 64,\n});\n$(o104, {\n memory: { array: a0 },\n handle: 65,\n});\n$(o105, {\n memory: { array: a0 },\n handle: 66,\n});\n$(o106, {\n memory: { array: a0 },\n handle: 67,\n});\n$(o107, {\n memory: { array: a0 },\n handle: 68,\n});\n$(o108, {\n memory: { array: a0 },\n handle: 69,\n});\n$(o109, {\n memory: { array: a0 },\n handle: 70,\n});\n$(o110, {\n memory: { array: a0 },\n handle: 71,\n});\n$(o111, {\n memory: { array: a27 },\n handle: 264388,\n slots: {\n 0: o112, 1: o114, 2: o116, 3: o118,\n },\n});\n$(o112, {\n structure: s117,\n memory: { array: a27, offset: 0, length: 4 },\n slots: {\n 0: o113,\n },\n});\n$(o113, {\n structure: s116,\n memory: { array: a0 },\n});\n$(o114, {\n structure: s121,\n memory: { array: a27, offset: 4, length: 4 },\n slots: {\n 0: o115,\n },\n});\n$(o115, {\n structure: s120,\n memory: { array: a0 },\n});\n$(o116, {\n structure: s124,\n memory: { array: a27, offset: 8, length: 4 },\n slots: {\n 0: o117,\n },\n});\n$(o117, {\n structure: s123,\n memory: { array: a0 },\n});\n$(o118, {\n structure: s127,\n memory: { array: a27, offset: 12, length: 4 },\n slots: {\n 0: o119,\n },\n});\n$(o119, {\n structure: s126,\n memory: { array: a0 },\n});\n$(o120, {\n slots: {\n 0: o121,\n },\n});\n$(o121, {\n structure: s131,\n memory: { array: a28 },\n const: true,\n});\n$(o122, {\n memory: { array: a0 },\n handle: 72,\n});\n$(o123, {\n memory: { array: a0 },\n handle: 72,\n});\n$(o124, {\n memory: { array: a0 },\n handle: 73,\n});\n$(o125, {\n memory: { array: a0 },\n handle: 73,\n});\n$(o126, {\n memory: { array: a0 },\n handle: 74,\n});\n$(o127, {\n memory: { array: a0 },\n handle: 74,\n});\n$(o128, {\n memory: { array: a0 },\n handle: 75,\n});\n$(o129, {\n memory: { array: a0 },\n handle: 75,\n});\n$(o130, {\n memory: { array: a29 },\n handle: 264168,\n slots: {\n 0: o131, 1: o133,\n },\n});\n$(o131, {\n structure: s83,\n memory: { array: a29, offset: 0, length: 4 },\n slots: {\n 0: o132,\n },\n});\n$(o132, {\n structure: s82,\n memory: { array: a0 },\n});\n$(o133, {\n structure: s129,\n memory: { array: a29, offset: 4, length: 4 },\n});\n$(o134, {\n slots: {\n 0: o135, 1: o137, 2: o139, 3: o141, 4: o142, 5: o143, 6: o144, 7: o145, 8: o146, 9: o147,\n },\n});\n$(o135, {\n structure: s130,\n memory: { array: a0 },\n slots: {\n 0: o136,\n },\n});\n$(o136, {\n structure: s131,\n});\n$(o137, {\n structure: s130,\n memory: { array: a0 },\n slots: {\n 0: o138,\n },\n});\n$(o138, {\n structure: s132,\n});\n$(o139, {\n structure: s130,\n memory: { array: a0 },\n slots: {\n 0: o140,\n },\n});\n$(o140, {\n structure: s128,\n});\n$(o141, {\n structure: s120,\n memory: { array: a0 },\n handle: 53,\n});\n$(o142, {\n structure: s123,\n memory: { array: a0 },\n handle: 54,\n});\n$(o143, {\n structure: s126,\n memory: { array: a0 },\n handle: 55,\n});\n$(o144, {\n structure: s135,\n memory: { array: a0 },\n handle: 56,\n});\n$(o145, {\n structure: s138,\n memory: { array: a0 },\n handle: 57,\n});\n$(o146, {\n structure: s141,\n memory: { array: a0 },\n handle: 58,\n});\n$(o147, {\n structure: s144,\n memory: { array: a0 },\n handle: 59,\n});\n$(o148, {\n memory: { array: a0 },\n handle: 31,\n});\n$(o149, {\n slots: {\n 0: o150,\n },\n});\n$(o150, {\n structure: s148,\n memory: { array: a30 },\n const: true,\n});\n$(o151, {\n memory: { array: a0 },\n handle: 32,\n});\n$(o152, {\n slots: {\n 0: o153,\n },\n});\n$(o153, {\n structure: s152,\n memory: { array: a31 },\n const: true,\n});\n$(o154, {\n memory: { array: a0 },\n handle: 33,\n});\n$(o155, {\n slots: {\n 0: o156,\n },\n});\n$(o156, {\n structure: s156,\n memory: { array: a32 },\n const: true,\n});\n$(o157, {\n memory: { array: a0 },\n handle: 34,\n});\n$(o158, {\n slots: {\n 0: o159,\n },\n});\n$(o159, {\n structure: s160,\n memory: { array: a33 },\n const: true,\n});\n$(o160, {\n memory: { array: a0 },\n handle: 37,\n});\n$(o161, {\n slots: {\n 0: o162,\n },\n});\n$(o162, {\n structure: s164,\n memory: { array: a34 },\n const: true,\n});\n$(o163, {\n memory: { array: a0 },\n handle: 34,\n});\n$(o164, {\n memory: { array: a0 },\n handle: 38,\n});\n$(o165, {\n slots: {\n 0: o166,\n },\n});\n$(o166, {\n structure: s170,\n memory: { array: a35 },\n const: true,\n});\n$(o167, {\n memory: { array: a0 },\n handle: 34,\n});\n$(o168, {\n slots: {\n 0: o169,\n },\n});\n$(o169, {\n structure: s174,\n memory: { array: a36 },\n const: true,\n});\n$(o170, {\n memory: { array: a0 },\n handle: 34,\n});\n$(o171, {\n slots: {\n 0: o172,\n },\n});\n$(o172, {\n structure: s178,\n memory: { array: a37 },\n const: true,\n});\n$(o173, {\n memory: { array: a0 },\n handle: 34,\n});\n$(o174, {\n slots: {\n 0: o175,\n },\n});\n$(o175, {\n structure: s182,\n memory: { array: a38 },\n const: true,\n});\n$(o176, {\n memory: { array: a0 },\n handle: 41,\n});\n$(o177, {\n memory: { array: a0 },\n handle: 25,\n});\n$(o178, {\n slots: {\n 0: o179,\n },\n});\n$(o179, {\n structure: s190,\n memory: { array: a39 },\n const: true,\n});\n$(o180, {\n slots: {\n 0: o181, 1: o182,\n },\n});\n$(o181, {\n structure: s192,\n memory: { array: a40 },\n const: true,\n});\n$(o182, {\n structure: s192,\n memory: { array: a41 },\n const: true,\n});\n$(o183, {\n memory: { array: a0 },\n handle: 42,\n});\n$(o184, {\n slots: {\n 0: o185,\n },\n});\n$(o185, {\n structure: s195,\n memory: { array: a42 },\n const: true,\n});\n$(o186, {\n memory: { array: a43 },\n});\n$(o187, {\n memory: { array: a0 },\n handle: 43,\n});\n$(o188, {\n slots: {\n 0: o189, 1: o190, 2: o191, 3: o192, 4: o193, 5: o194, 6: o195, 7: o196, 8: o197, 9: o198,\n 10: o199, 11: o200, 12: o201, 13: o202, 14: o203, 15: o204, 16: o205, 17: o206, 18: o207, 19: o208,\n 20: o209, 21: o210, 22: o211,\n },\n});\n$(o189, {\n structure: s57,\n memory: { array: a0 },\n handle: 2,\n});\n$(o190, {\n structure: s66,\n memory: { array: a0 },\n handle: 3,\n});\n$(o191, {\n structure: s71,\n memory: { array: a0 },\n handle: 4,\n});\n$(o192, {\n structure: s81,\n memory: { array: a0 },\n handle: 5,\n});\n$(o193, {\n structure: s15,\n memory: { array: a44 },\n const: true,\n});\n$(o194, {\n structure: s147,\n memory: { array: a0 },\n handle: 6,\n});\n$(o195, {\n structure: s151,\n memory: { array: a0 },\n handle: 7,\n});\n$(o196, {\n structure: s155,\n memory: { array: a0 },\n handle: 8,\n});\n$(o197, {\n structure: s159,\n memory: { array: a0 },\n handle: 9,\n});\n$(o198, {\n structure: s68,\n memory: { array: a0 },\n handle: 10,\n});\n$(o199, {\n structure: s163,\n memory: { array: a0 },\n handle: 11,\n});\n$(o200, {\n structure: s167,\n memory: { array: a0 },\n handle: 12,\n});\n$(o201, {\n structure: s169,\n memory: { array: a0 },\n handle: 13,\n});\n$(o202, {\n structure: s173,\n memory: { array: a0 },\n handle: 14,\n});\n$(o203, {\n structure: s177,\n memory: { array: a0 },\n handle: 15,\n});\n$(o204, {\n structure: s181,\n memory: { array: a0 },\n handle: 16,\n});\n$(o205, {\n structure: s78,\n memory: { array: a0 },\n handle: 17,\n});\n$(o206, {\n structure: s185,\n memory: { array: a0 },\n handle: 18,\n});\n$(o207, {\n structure: s78,\n memory: { array: a0 },\n handle: 19,\n});\n$(o208, {\n structure: s189,\n memory: { array: a0 },\n handle: 20,\n});\n$(o209, {\n structure: s194,\n memory: { array: a0 },\n handle: 21,\n});\n$(o210, {\n structure: s78,\n memory: { array: a0 },\n handle: 22,\n});\n$(o211, {\n structure: s204,\n memory: { array: a0 },\n handle: 23,\n});\n\n// fill in structure properties\n$(s0, {\n ...s,\n flags: 1,\n signature: 0xa310b7d01f11b8can,\n name: \"void\",\n align: 1,\n instance: {\n members: [\n {\n ...m,\n bitOffset: 0,\n bitSize: 0,\n byteSize: 0,\n structure: s0,\n },\n ],\n },\n});\n$(s1, {\n ...s,\n flags: 1,\n signature: 0x61e77abe97c52d51n,\n name: \"f32\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 4,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n structure: s1,\n },\n ],\n },\n});\n$(s2, {\n ...s,\n type: 12,\n flags: 10,\n signature: 0x207e329602a86755n,\n name: \"Arg(fn (Point, Point) Point)\",\n length: 2,\n byteSize: 24,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 64,\n byteSize: 8,\n slot: 0,\n name: \"retval\",\n structure: s8,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 64,\n bitSize: 64,\n byteSize: 8,\n slot: 1,\n name: \"0\",\n structure: s8,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 128,\n bitSize: 64,\n byteSize: 8,\n slot: 2,\n name: \"1\",\n structure: s8,\n },\n ],\n },\n});\n$(s3, {\n ...s,\n type: 14,\n signature: 0x8e48777d39cc425en,\n name: \"fn (Point, Point) Point\",\n length: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 192,\n byteSize: 24,\n structure: s2,\n },\n ],\n template: o0\n },\n});\n$(s4, {\n ...s,\n type: 12,\n flags: 10,\n signature: 0x61503e2c040eea30n,\n name: \"Arg(fn (Point, Point) f32)\",\n length: 2,\n byteSize: 20,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n name: \"retval\",\n structure: s1,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 32,\n bitSize: 64,\n byteSize: 8,\n slot: 1,\n name: \"0\",\n structure: s8,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 96,\n bitSize: 64,\n byteSize: 8,\n slot: 2,\n name: \"1\",\n structure: s8,\n },\n ],\n },\n});\n$(s5, {\n ...s,\n type: 14,\n signature: 0x18a1631fcf9c9650n,\n name: \"fn (Point, Point) f32\",\n length: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 160,\n byteSize: 20,\n structure: s4,\n },\n ],\n template: o1\n },\n});\n$(s6, {\n ...s,\n type: 12,\n flags: 10,\n signature: 0x8413fe22a0ec1c90n,\n name: \"Arg(fn (Point) Point)\",\n length: 1,\n byteSize: 16,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 64,\n byteSize: 8,\n slot: 0,\n name: \"retval\",\n structure: s8,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 64,\n bitSize: 64,\n byteSize: 8,\n slot: 1,\n name: \"0\",\n structure: s8,\n },\n ],\n },\n});\n$(s7, {\n ...s,\n type: 14,\n signature: 0x64ad1835b1055f17n,\n name: \"fn (Point) Point\",\n length: 1,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 128,\n byteSize: 16,\n structure: s6,\n },\n ],\n template: o2\n },\n});\n$(s8, {\n ...s,\n type: 2,\n flags: 16,\n signature: 0xc6238f223c317b90n,\n name: \"Point\",\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n name: \"x\",\n structure: s1,\n },\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 32,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"y\",\n structure: s1,\n },\n ],\n template: o3\n },\n static: {\n members: [\n {\n ...m,\n type: 5,\n flags: 18,\n slot: 0,\n name: \"mid\",\n structure: s3,\n },\n {\n ...m,\n type: 5,\n flags: 18,\n slot: 2,\n name: \"distance\",\n structure: s5,\n },\n {\n ...m,\n type: 5,\n flags: 18,\n slot: 3,\n name: \"diff\",\n structure: s3,\n },\n {\n ...m,\n type: 5,\n flags: 18,\n slot: 4,\n name: \"clone\",\n structure: s7,\n },\n ],\n template: o4\n },\n});\n$(s9, {\n ...s,\n type: 12,\n flags: 10,\n signature: 0x8d352bb77a26e612n,\n name: \"Arg(fn (PointUV, PointUV) Point)\",\n length: 2,\n byteSize: 40,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 64,\n byteSize: 8,\n slot: 0,\n name: \"retval\",\n structure: s8,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 64,\n bitSize: 128,\n byteSize: 16,\n slot: 1,\n name: \"0\",\n structure: s13,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 192,\n bitSize: 128,\n byteSize: 16,\n slot: 2,\n name: \"1\",\n structure: s13,\n },\n ],\n },\n});\n$(s10, {\n ...s,\n type: 14,\n signature: 0x0f1df05e0d01db92n,\n name: \"fn (PointUV, PointUV) Point\",\n length: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 320,\n byteSize: 40,\n structure: s9,\n },\n ],\n template: o9\n },\n});\n$(s11, {\n ...s,\n type: 12,\n flags: 10,\n signature: 0x9961a28ae296031fn,\n name: \"Arg(fn (PointUV, PointUV) f32)\",\n length: 2,\n byteSize: 36,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n name: \"retval\",\n structure: s1,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 32,\n bitSize: 128,\n byteSize: 16,\n slot: 1,\n name: \"0\",\n structure: s13,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 160,\n bitSize: 128,\n byteSize: 16,\n slot: 2,\n name: \"1\",\n structure: s13,\n },\n ],\n },\n});\n$(s12, {\n ...s,\n type: 14,\n signature: 0xb56a381f65765bdcn,\n name: \"fn (PointUV, PointUV) f32\",\n length: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 288,\n byteSize: 36,\n structure: s11,\n },\n ],\n template: o10\n },\n});\n$(s13, {\n ...s,\n type: 2,\n flags: 16,\n signature: 0x526f11b57045ab14n,\n name: \"PointUV\",\n byteSize: 16,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n name: \"x\",\n structure: s1,\n },\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 32,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"y\",\n structure: s1,\n },\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 64,\n bitSize: 32,\n byteSize: 4,\n slot: 2,\n name: \"u\",\n structure: s1,\n },\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 96,\n bitSize: 32,\n byteSize: 4,\n slot: 3,\n name: \"v\",\n structure: s1,\n },\n ],\n template: o11\n },\n static: {\n members: [\n {\n ...m,\n type: 5,\n flags: 18,\n slot: 0,\n name: \"mid\",\n structure: s10,\n },\n {\n ...m,\n type: 5,\n flags: 18,\n slot: 1,\n name: \"angle_to\",\n structure: s12,\n },\n {\n ...m,\n type: 5,\n flags: 18,\n slot: 2,\n name: \"distance\",\n structure: s12,\n },\n ],\n template: o12\n },\n});\n$(s14, {\n ...s,\n type: 1,\n flags: 10,\n signature: 0x3ee5e4424cbe9410n,\n name: \"[6]PointUV\",\n length: 6,\n byteSize: 96,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 128,\n byteSize: 16,\n structure: s13,\n },\n ],\n },\n});\n$(s15, {\n ...s,\n flags: 1,\n signature: 0x68598db431a811a3n,\n name: \"u32\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n structure: s15,\n },\n ],\n },\n});\n$(s16, {\n ...s,\n type: 12,\n flags: 10,\n signature: 0x20d5e187b003a7fen,\n name: \"Arg(fn ([6]PointUV, u32) void)\",\n length: 2,\n byteSize: 100,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 800,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n name: \"retval\",\n structure: s0,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 768,\n byteSize: 96,\n slot: 1,\n name: \"0\",\n structure: s14,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 768,\n bitSize: 32,\n byteSize: 4,\n slot: 2,\n name: \"1\",\n structure: s15,\n },\n ],\n },\n});\n$(s17, {\n ...s,\n type: 14,\n signature: 0x587e2b72fe4f7519n,\n name: \"fn ([6]PointUV, u32) void\",\n length: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 800,\n byteSize: 100,\n structure: s16,\n },\n ],\n template: o16\n },\n static: {\n members: [],\n template: o17\n },\n});\n$(s18, {\n ...s,\n type: 8,\n flags: 204,\n signature: 0x5ed530af4a7bcf1dn,\n name: \"*const fn ([6]PointUV, u32) void\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n structure: s17,\n },\n ],\n },\n});\n$(s19, {\n ...s,\n flags: 1,\n signature: 0x370ee22b85937307n,\n name: \"u8\",\n byteSize: 1,\n align: 1,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n bitOffset: 0,\n bitSize: 8,\n byteSize: 1,\n structure: s19,\n },\n ],\n },\n});\n$(s20, {\n ...s,\n type: 1,\n flags: 224,\n signature: 0x72a0d50910cc3369n,\n name: \"[4]u8\",\n length: 4,\n byteSize: 4,\n align: 1,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n bitSize: 8,\n byteSize: 1,\n structure: s19,\n },\n ],\n },\n});\n$(s21, {\n ...s,\n type: 1,\n flags: 64,\n signature: 0x965d25e134612060n,\n name: \"[3]f32\",\n length: 3,\n byteSize: 12,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 4,\n bitSize: 32,\n byteSize: 4,\n structure: s1,\n },\n ],\n },\n});\n$(s22, {\n ...s,\n type: 2,\n flags: 26,\n signature: 0x192d6f39fdd42e6en,\n name: \"DrawInstance\",\n byteSize: 64,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 128,\n byteSize: 16,\n slot: 0,\n name: \"p0\",\n structure: s13,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 128,\n bitSize: 128,\n byteSize: 16,\n slot: 1,\n name: \"p1\",\n structure: s13,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 256,\n bitSize: 128,\n byteSize: 16,\n slot: 2,\n name: \"p2\",\n structure: s13,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 384,\n bitSize: 32,\n byteSize: 4,\n slot: 3,\n name: \"color\",\n structure: s20,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 416,\n bitSize: 96,\n byteSize: 12,\n slot: 4,\n name: \"radius\",\n structure: s21,\n },\n ],\n template: o18\n },\n});\n$(s23, {\n ...s,\n type: 9,\n flags: 10,\n signature: 0x914ee09efb47cbf7n,\n name: \"[_]DrawInstance\",\n byteSize: 64,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 512,\n byteSize: 64,\n structure: s22,\n },\n ],\n },\n});\n$(s24, {\n ...s,\n type: 8,\n flags: 188,\n signature: 0x39778fa380da3875n,\n name: \"[]const DrawInstance\",\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 64,\n byteSize: 8,\n slot: 0,\n structure: s23,\n },\n ],\n },\n});\n$(s25, {\n ...s,\n type: 12,\n flags: 14,\n signature: 0x93ffc88e8c95765dn,\n name: \"Arg(fn ([]const DrawInstance) void)\",\n length: 1,\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 64,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n name: \"retval\",\n structure: s0,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 64,\n byteSize: 8,\n slot: 1,\n name: \"0\",\n structure: s24,\n },\n ],\n },\n});\n$(s26, {\n ...s,\n type: 14,\n signature: 0xe9f243b3e4ecde6cn,\n name: \"fn ([]const DrawInstance) void\",\n length: 1,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 64,\n byteSize: 8,\n structure: s25,\n },\n ],\n template: o19\n },\n static: {\n members: [],\n template: o20\n },\n});\n$(s27, {\n ...s,\n type: 8,\n flags: 204,\n signature: 0xffb0918139c04f1an,\n name: \"*const fn ([]const DrawInstance) void\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n structure: s26,\n },\n ],\n },\n});\n$(s28, {\n ...s,\n type: 9,\n flags: 10,\n signature: 0xc2e8551856512494n,\n name: \"[_]Point\",\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 64,\n byteSize: 8,\n structure: s8,\n },\n ],\n },\n});\n$(s29, {\n ...s,\n type: 8,\n flags: 188,\n signature: 0x04fa74127b6acc09n,\n name: \"[]const Point\",\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 64,\n byteSize: 8,\n slot: 0,\n structure: s28,\n },\n ],\n },\n});\n$(s30, {\n ...s,\n type: 1,\n flags: 64,\n signature: 0x55b5c2c225a6545bn,\n name: \"[4]f32\",\n length: 4,\n byteSize: 16,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 4,\n bitSize: 32,\n byteSize: 4,\n structure: s1,\n },\n ],\n },\n});\n$(s31, {\n ...s,\n type: 2,\n flags: 26,\n signature: 0x40db7c567416c304n,\n name: \"Uniform\",\n byteSize: 48,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n name: \"stroke_width\",\n structure: s1,\n },\n {\n ...m,\n type: 5,\n bitOffset: 32,\n bitSize: 96,\n byteSize: 12,\n slot: 1,\n name: \"padding\",\n structure: s21,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 128,\n bitSize: 128,\n byteSize: 16,\n slot: 2,\n name: \"fill_color\",\n structure: s30,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 256,\n bitSize: 128,\n byteSize: 16,\n slot: 3,\n name: \"stroke_color\",\n structure: s30,\n },\n ],\n template: o21\n },\n});\n$(s32, {\n ...s,\n type: 12,\n flags: 14,\n signature: 0x2e1c0405c0ec4674n,\n name: \"Arg(fn ([]const Point, []const Point, Uniform) void)\",\n length: 3,\n byteSize: 64,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 512,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n name: \"retval\",\n structure: s0,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 64,\n byteSize: 8,\n slot: 1,\n name: \"0\",\n structure: s29,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 64,\n bitSize: 64,\n byteSize: 8,\n slot: 2,\n name: \"1\",\n structure: s29,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 128,\n bitSize: 384,\n byteSize: 48,\n slot: 3,\n name: \"2\",\n structure: s31,\n },\n ],\n },\n});\n$(s33, {\n ...s,\n type: 14,\n signature: 0x154194cf2431a077n,\n name: \"fn ([]const Point, []const Point, Uniform) void\",\n length: 3,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 512,\n byteSize: 64,\n structure: s32,\n },\n ],\n template: o22\n },\n static: {\n members: [],\n template: o23\n },\n});\n$(s34, {\n ...s,\n type: 8,\n flags: 204,\n signature: 0xa85eca8385440e49n,\n name: \"*const fn ([]const Point, []const Point, Uniform) void\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n structure: s33,\n },\n ],\n },\n});\n$(s35, {\n ...s,\n type: 1,\n flags: 10,\n signature: 0x578493b95a018f7en,\n name: \"[3]PointUV\",\n length: 3,\n byteSize: 48,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 128,\n byteSize: 16,\n structure: s13,\n },\n ],\n },\n});\n$(s36, {\n ...s,\n type: 2,\n flags: 26,\n signature: 0xca530755a22a998en,\n name: \"DrawInstance\",\n byteSize: 52,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 384,\n byteSize: 48,\n slot: 0,\n name: \"points\",\n structure: s35,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 384,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"color\",\n structure: s20,\n },\n ],\n template: o24\n },\n});\n$(s37, {\n ...s,\n type: 9,\n flags: 10,\n signature: 0x27b89a18d30e0640n,\n name: \"[_]DrawInstance\",\n byteSize: 52,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 416,\n byteSize: 52,\n structure: s36,\n },\n ],\n },\n});\n$(s38, {\n ...s,\n type: 8,\n flags: 188,\n signature: 0x3afc30e1a57b269dn,\n name: \"[]const DrawInstance\",\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 64,\n byteSize: 8,\n slot: 0,\n structure: s37,\n },\n ],\n },\n});\n$(s39, {\n ...s,\n type: 12,\n flags: 14,\n signature: 0xd193affba67924f3n,\n name: \"Arg(fn ([]const DrawInstance, u32) void)\",\n length: 2,\n byteSize: 12,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 96,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n name: \"retval\",\n structure: s0,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 64,\n byteSize: 8,\n slot: 1,\n name: \"0\",\n structure: s38,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 64,\n bitSize: 32,\n byteSize: 4,\n slot: 2,\n name: \"1\",\n structure: s15,\n },\n ],\n },\n});\n$(s40, {\n ...s,\n type: 14,\n signature: 0xfaf2e98b5e6103a0n,\n name: \"fn ([]const DrawInstance, u32) void\",\n length: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 96,\n byteSize: 12,\n structure: s39,\n },\n ],\n template: o25\n },\n static: {\n members: [],\n template: o26\n },\n});\n$(s41, {\n ...s,\n type: 8,\n flags: 204,\n signature: 0xd75553fb178caa01n,\n name: \"*const fn ([]const DrawInstance, u32) void\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n structure: s40,\n },\n ],\n },\n});\n$(s42, {\n ...s,\n type: 2,\n flags: 26,\n signature: 0x51c81ec013b825c3n,\n name: \"PickVertex\",\n byteSize: 20,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 128,\n byteSize: 16,\n slot: 0,\n name: \"point\",\n structure: s13,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 128,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"id\",\n structure: s15,\n },\n ],\n template: o27\n },\n});\n$(s43, {\n ...s,\n type: 9,\n flags: 10,\n signature: 0x76ed8f1f33009424n,\n name: \"[_]PickVertex\",\n byteSize: 20,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 160,\n byteSize: 20,\n structure: s42,\n },\n ],\n },\n});\n$(s44, {\n ...s,\n type: 8,\n flags: 188,\n signature: 0x545dbe9066b56a76n,\n name: \"[]const PickVertex\",\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 64,\n byteSize: 8,\n slot: 0,\n structure: s43,\n },\n ],\n },\n});\n$(s45, {\n ...s,\n type: 12,\n flags: 14,\n signature: 0x31c024438eabbf73n,\n name: \"Arg(fn ([]const PickVertex, u32) void)\",\n length: 2,\n byteSize: 12,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 96,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n name: \"retval\",\n structure: s0,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 64,\n byteSize: 8,\n slot: 1,\n name: \"0\",\n structure: s44,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 64,\n bitSize: 32,\n byteSize: 4,\n slot: 2,\n name: \"1\",\n structure: s15,\n },\n ],\n },\n});\n$(s46, {\n ...s,\n type: 14,\n signature: 0xded0b6d1acc2290dn,\n name: \"fn ([]const PickVertex, u32) void\",\n length: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 96,\n byteSize: 12,\n structure: s45,\n },\n ],\n template: o28\n },\n static: {\n members: [],\n template: o29\n },\n});\n$(s47, {\n ...s,\n type: 8,\n flags: 204,\n signature: 0x187686ea5958f7abn,\n name: \"*const fn ([]const PickVertex, u32) void\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n structure: s46,\n },\n ],\n },\n});\n$(s48, {\n ...s,\n type: 2,\n flags: 26,\n signature: 0xfcafa76b343a3caan,\n name: \"PickInstance\",\n byteSize: 64,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 128,\n byteSize: 16,\n slot: 0,\n name: \"p0\",\n structure: s13,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 128,\n bitSize: 128,\n byteSize: 16,\n slot: 1,\n name: \"p1\",\n structure: s13,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 256,\n bitSize: 128,\n byteSize: 16,\n slot: 2,\n name: \"p2\",\n structure: s13,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 384,\n bitSize: 32,\n byteSize: 4,\n slot: 3,\n name: \"id\",\n structure: s15,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 416,\n bitSize: 96,\n byteSize: 12,\n slot: 4,\n name: \"radius\",\n structure: s21,\n },\n ],\n template: o30\n },\n});\n$(s49, {\n ...s,\n type: 9,\n flags: 10,\n signature: 0xe76a506318e15bf2n,\n name: \"[_]PickInstance\",\n byteSize: 64,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 512,\n byteSize: 64,\n structure: s48,\n },\n ],\n },\n});\n$(s50, {\n ...s,\n type: 8,\n flags: 188,\n signature: 0x22b542680e155723n,\n name: \"[]const PickInstance\",\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 64,\n byteSize: 8,\n slot: 0,\n structure: s49,\n },\n ],\n },\n});\n$(s51, {\n ...s,\n type: 12,\n flags: 14,\n signature: 0x601e644054b52458n,\n name: \"Arg(fn ([]const PickInstance) void)\",\n length: 1,\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 64,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n name: \"retval\",\n structure: s0,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 64,\n byteSize: 8,\n slot: 1,\n name: \"0\",\n structure: s50,\n },\n ],\n },\n});\n$(s52, {\n ...s,\n type: 14,\n signature: 0xaf76c83133419af9n,\n name: \"fn ([]const PickInstance) void\",\n length: 1,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 64,\n byteSize: 8,\n structure: s51,\n },\n ],\n template: o31\n },\n static: {\n members: [],\n template: o32\n },\n});\n$(s53, {\n ...s,\n type: 8,\n flags: 204,\n signature: 0xcf1430f10b87a1e6n,\n name: \"*const fn ([]const PickInstance) void\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n structure: s52,\n },\n ],\n },\n});\n$(s54, {\n ...s,\n type: 2,\n flags: 14,\n signature: 0xa7404041cce4d7e4n,\n name: \"WebGpuPrograms\",\n byteSize: 24,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n name: \"draw_texture\",\n structure: s18,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 32,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"draw_triangle\",\n structure: s27,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 64,\n bitSize: 32,\n byteSize: 4,\n slot: 2,\n name: \"draw_shape\",\n structure: s34,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 96,\n bitSize: 32,\n byteSize: 4,\n slot: 3,\n name: \"draw_msdf\",\n structure: s41,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 128,\n bitSize: 32,\n byteSize: 4,\n slot: 4,\n name: \"pick_texture\",\n structure: s47,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 160,\n bitSize: 32,\n byteSize: 4,\n slot: 5,\n name: \"pick_triangle\",\n structure: s53,\n },\n ],\n template: o33\n },\n});\n$(s55, {\n ...s,\n type: 8,\n flags: 204,\n signature: 0x4b97e7b342dc0e95n,\n name: \"*const WebGpuPrograms\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n structure: s54,\n },\n ],\n },\n});\n$(s56, {\n ...s,\n type: 12,\n flags: 14,\n signature: 0xc8c21ceda7f04e6en,\n name: \"Arg(fn (*const WebGpuPrograms) void)\",\n length: 1,\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 32,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n name: \"retval\",\n structure: s0,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"0\",\n structure: s55,\n },\n ],\n },\n});\n$(s57, {\n ...s,\n type: 14,\n signature: 0xc7d4865a224e46d2n,\n name: \"fn (*const WebGpuPrograms) void\",\n length: 1,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n structure: s56,\n },\n ],\n template: o46\n },\n});\n$(s58, {\n ...s,\n type: 1,\n flags: 10,\n signature: 0x009c896a0d8f3812n,\n name: \"[4]PointUV\",\n length: 4,\n byteSize: 64,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 128,\n byteSize: 16,\n structure: s13,\n },\n ],\n },\n});\n$(s59, {\n ...s,\n type: 2,\n flags: 10,\n signature: 0xf467acfa8faba0b0n,\n name: \"Serialized\",\n byteSize: 72,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 512,\n byteSize: 64,\n slot: 0,\n name: \"points\",\n structure: s58,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 512,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"texture_id\",\n structure: s15,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 544,\n bitSize: 32,\n byteSize: 4,\n slot: 2,\n name: \"id\",\n structure: s15,\n },\n ],\n template: o47\n },\n});\n$(s60, {\n ...s,\n type: 9,\n flags: 10,\n signature: 0xf4147de9f73841b8n,\n name: \"[_]Serialized\",\n byteSize: 72,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 576,\n byteSize: 72,\n structure: s59,\n },\n ],\n },\n});\n$(s61, {\n ...s,\n type: 8,\n flags: 188,\n signature: 0x6028753cdbfc756dn,\n name: \"[]const Serialized\",\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 64,\n byteSize: 8,\n slot: 0,\n structure: s60,\n },\n ],\n },\n});\n$(s62, {\n ...s,\n type: 12,\n flags: 14,\n signature: 0x5982668a5988d984n,\n name: \"Arg(fn ([]const Serialized) void)\",\n length: 1,\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 64,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n name: \"retval\",\n structure: s0,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 64,\n byteSize: 8,\n slot: 1,\n name: \"0\",\n structure: s61,\n },\n ],\n },\n});\n$(s63, {\n ...s,\n type: 14,\n signature: 0xb8beaa701eeeab6fn,\n name: \"fn ([]const Serialized) void\",\n length: 1,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 64,\n byteSize: 8,\n structure: s62,\n },\n ],\n template: o48\n },\n static: {\n members: [],\n template: o49\n },\n});\n$(s64, {\n ...s,\n type: 8,\n flags: 204,\n signature: 0x81bdb14af0e0d208n,\n name: \"*const fn ([]const Serialized) void\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n structure: s63,\n },\n ],\n },\n});\n$(s65, {\n ...s,\n type: 12,\n flags: 14,\n signature: 0x4b3fe0b344fb2b2dn,\n name: \"Arg(fn (*const fn ([]const Serialized) void) void)\",\n length: 1,\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 32,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n name: \"retval\",\n structure: s0,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"0\",\n structure: s64,\n },\n ],\n },\n});\n$(s66, {\n ...s,\n type: 14,\n signature: 0x2bc578db12d8c717n,\n name: \"fn (*const fn ([]const Serialized) void) void\",\n length: 1,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n structure: s65,\n },\n ],\n template: o50\n },\n});\n$(s67, {\n ...s,\n type: 12,\n signature: 0x6364608841bf263en,\n name: \"Arg(fn (u32) void)\",\n length: 1,\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 32,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n name: \"retval\",\n structure: s0,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"0\",\n structure: s15,\n },\n ],\n },\n});\n$(s68, {\n ...s,\n type: 14,\n signature: 0x956e45a1c96ff5e6n,\n name: \"fn (u32) void\",\n length: 1,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n structure: s67,\n },\n ],\n template: o51\n },\n static: {\n members: [],\n template: o52\n },\n});\n$(s69, {\n ...s,\n type: 8,\n flags: 204,\n signature: 0x139c4e15eb0a34d6n,\n name: \"*const fn (u32) void\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n structure: s68,\n },\n ],\n },\n});\n$(s70, {\n ...s,\n type: 12,\n flags: 14,\n signature: 0xfaa14a525ee0f8d4n,\n name: \"Arg(fn (*const fn (u32) void) void)\",\n length: 1,\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 32,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n name: \"retval\",\n structure: s0,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"0\",\n structure: s69,\n },\n ],\n },\n});\n$(s71, {\n ...s,\n type: 14,\n signature: 0x651c6f0337fe6099n,\n name: \"fn (*const fn (u32) void) void\",\n length: 1,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n structure: s70,\n },\n ],\n template: o53\n },\n});\n$(s72, {\n ...s,\n type: 7,\n flags: 17,\n signature: 0x6a0f688da3728775n,\n name: \"?u32\",\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n structure: s15,\n },\n {\n ...m,\n type: 3,\n flags: 8,\n bitOffset: 32,\n bitSize: 8,\n byteSize: 1,\n structure: s19,\n },\n ],\n },\n});\n$(s73, {\n ...s,\n type: 2,\n signature: 0x57847e8f0b7a3a1fn,\n name: \"BoundingBox\",\n byteSize: 16,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n name: \"min_x\",\n structure: s1,\n },\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 32,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"min_y\",\n structure: s1,\n },\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 64,\n bitSize: 32,\n byteSize: 4,\n slot: 2,\n name: \"max_x\",\n structure: s1,\n },\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 96,\n bitSize: 32,\n byteSize: 4,\n slot: 3,\n name: \"max_y\",\n structure: s1,\n },\n ],\n template: o54\n },\n});\n$(s74, {\n ...s,\n type: 12,\n flags: 10,\n signature: 0x147e6bb004780a90n,\n name: \"Arg(fn (?u32, BoundingBox, f32, f32) u32)\",\n length: 4,\n byteSize: 36,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n name: \"retval\",\n structure: s15,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 32,\n bitSize: 64,\n byteSize: 8,\n slot: 1,\n name: \"0\",\n structure: s72,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 96,\n bitSize: 128,\n byteSize: 16,\n slot: 2,\n name: \"1\",\n structure: s73,\n },\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 224,\n bitSize: 32,\n byteSize: 4,\n slot: 3,\n name: \"2\",\n structure: s1,\n },\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 256,\n bitSize: 32,\n byteSize: 4,\n slot: 4,\n name: \"3\",\n structure: s1,\n },\n ],\n },\n});\n$(s75, {\n ...s,\n type: 14,\n signature: 0xea27980e864495d8n,\n name: \"fn (?u32, BoundingBox, f32, f32) u32\",\n length: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 288,\n byteSize: 36,\n structure: s74,\n },\n ],\n template: o55\n },\n static: {\n members: [],\n template: o56\n },\n});\n$(s76, {\n ...s,\n type: 8,\n flags: 204,\n signature: 0x827a5e85f379e86cn,\n name: \"*const fn (?u32, BoundingBox, f32, f32) u32\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n structure: s75,\n },\n ],\n },\n});\n$(s77, {\n ...s,\n type: 12,\n signature: 0xfa22378c989ae19dn,\n name: \"Arg(fn () void)\",\n length: 0,\n align: 1,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 0,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n name: \"retval\",\n structure: s0,\n },\n ],\n },\n});\n$(s78, {\n ...s,\n type: 14,\n signature: 0xe3c3b022a28cd076n,\n name: \"fn () void\",\n length: 0,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 0,\n byteSize: 0,\n structure: s77,\n },\n ],\n template: o57\n },\n static: {\n members: [],\n template: o58\n },\n});\n$(s79, {\n ...s,\n type: 8,\n flags: 204,\n signature: 0xd7880dadce515974n,\n name: \"*const fn () void\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n structure: s78,\n },\n ],\n },\n});\n$(s80, {\n ...s,\n type: 12,\n flags: 14,\n signature: 0x8a236472578c7a3dn,\n name: \"Arg(fn (*const fn (?u32, BoundingBox, f32, f32) u32, *const fn () void) void)\",\n length: 2,\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 64,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n name: \"retval\",\n structure: s0,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"0\",\n structure: s76,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 32,\n bitSize: 32,\n byteSize: 4,\n slot: 2,\n name: \"1\",\n structure: s79,\n },\n ],\n },\n});\n$(s81, {\n ...s,\n type: 14,\n signature: 0x92a9e06d395eda27n,\n name: \"fn (*const fn (?u32, BoundingBox, f32, f32) u32, *const fn () void) void\",\n length: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 64,\n byteSize: 8,\n structure: s80,\n },\n ],\n template: o59\n },\n});\n$(s82, {\n ...s,\n type: 9,\n flags: 480,\n signature: 0x9b3f78f92307ba61n,\n name: \"anyopaque\",\n byteSize: undefined,\n align: undefined,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n bitSize: 8,\n byteSize: 1,\n structure: s19,\n },\n ],\n },\n});\n$(s83, {\n ...s,\n type: 8,\n flags: 332,\n signature: 0x4057fadddf1d8877n,\n name: \"*opaque\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n structure: s82,\n },\n ],\n },\n});\n$(s84, {\n ...s,\n type: 9,\n flags: 224,\n signature: 0x9b3f78f92307ba61n,\n name: \"[_]u8\",\n byteSize: 1,\n align: 1,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n bitSize: 8,\n byteSize: 1,\n structure: s19,\n },\n ],\n },\n});\n$(s85, {\n ...s,\n type: 8,\n flags: 44,\n signature: 0xdc4e40b42e2be1a4n,\n name: \"[*]u8\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n structure: s84,\n },\n ],\n },\n});\n$(s86, {\n ...s,\n flags: 17,\n signature: 0xad790f74c7d61933n,\n name: \"usize\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n structure: s86,\n },\n ],\n },\n});\n$(s87, {\n ...s,\n type: 7,\n flags: 15,\n signature: 0x46d9c68a3fe0a71cn,\n name: \"?[*]u8\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n structure: s85,\n },\n {\n ...m,\n type: 3,\n flags: 8,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n structure: s86,\n },\n ],\n },\n});\n$(s88, {\n ...s,\n type: 12,\n signature: 0xde13efb989eab233n,\n name: \"Arg(fn (Alignment) usize)\",\n length: 1,\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n name: \"retval\",\n structure: s86,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 32,\n bitSize: 5,\n byteSize: 1,\n slot: 1,\n name: \"0\",\n structure: s114,\n },\n ],\n },\n});\n$(s89, {\n ...s,\n type: 14,\n signature: 0x511f3836ff34e93an,\n name: \"fn (Alignment) usize\",\n length: 1,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 64,\n byteSize: 8,\n structure: s88,\n },\n ],\n template: o60\n },\n});\n$(s90, {\n ...s,\n type: 12,\n signature: 0x3d33381cd47940b4n,\n name: \"Arg(fn (usize) Alignment)\",\n length: 1,\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 32,\n bitSize: 5,\n byteSize: 1,\n slot: 0,\n name: \"retval\",\n structure: s114,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"0\",\n structure: s86,\n },\n ],\n },\n});\n$(s91, {\n ...s,\n type: 14,\n signature: 0x950458df9df4743bn,\n name: \"fn (usize) Alignment\",\n length: 1,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 64,\n byteSize: 8,\n structure: s90,\n },\n ],\n template: o61\n },\n});\n$(s92, {\n ...s,\n type: 12,\n signature: 0xa358945228ebaff3n,\n name: \"Arg(fn (Order) Order)\",\n length: 1,\n byteSize: 2,\n align: 1,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 0,\n bitSize: 2,\n byteSize: 1,\n slot: 0,\n name: \"retval\",\n structure: s103,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 8,\n bitSize: 2,\n byteSize: 1,\n slot: 1,\n name: \"0\",\n structure: s103,\n },\n ],\n },\n});\n$(s93, {\n ...s,\n type: 14,\n signature: 0x09217ef45d6a5583n,\n name: \"fn (Order) Order\",\n length: 1,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 16,\n byteSize: 2,\n structure: s92,\n },\n ],\n template: o62\n },\n});\n$(s94, {\n ...s,\n type: 7,\n flags: 17,\n signature: 0x45d6d2728e09761bn,\n name: \"?Order\",\n byteSize: 2,\n align: 1,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n bitOffset: 0,\n bitSize: 2,\n byteSize: 1,\n slot: 0,\n structure: s103,\n },\n {\n ...m,\n type: 3,\n flags: 8,\n bitOffset: 8,\n bitSize: 8,\n byteSize: 1,\n structure: s19,\n },\n ],\n },\n});\n$(s95, {\n ...s,\n type: 12,\n flags: 10,\n signature: 0x818dc2d151e5b733n,\n name: \"Arg(fn (Order) ?Order)\",\n length: 1,\n byteSize: 3,\n align: 1,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n slot: 0,\n name: \"retval\",\n structure: s94,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 16,\n bitSize: 2,\n byteSize: 1,\n slot: 1,\n name: \"0\",\n structure: s103,\n },\n ],\n },\n});\n$(s96, {\n ...s,\n type: 14,\n signature: 0x54ab34151663d188n,\n name: \"fn (Order) ?Order\",\n length: 1,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 24,\n byteSize: 3,\n structure: s95,\n },\n ],\n template: o63\n },\n});\n$(s97, {\n ...s,\n flags: 1,\n signature: 0x6eddab4b13ff06c5n,\n name: \"bool\",\n byteSize: 1,\n align: 1,\n instance: {\n members: [\n {\n ...m,\n type: 1,\n bitOffset: 0,\n bitSize: 1,\n byteSize: 1,\n structure: s97,\n },\n ],\n },\n});\n$(s98, {\n ...s,\n type: 12,\n signature: 0xb4bc84552cdf048fn,\n name: \"Arg(fn (CompareOperator) CompareOperator)\",\n length: 1,\n byteSize: 2,\n align: 1,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 0,\n bitSize: 3,\n byteSize: 1,\n slot: 0,\n name: \"retval\",\n structure: s100,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 8,\n bitSize: 3,\n byteSize: 1,\n slot: 1,\n name: \"0\",\n structure: s100,\n },\n ],\n },\n});\n$(s99, {\n ...s,\n type: 14,\n signature: 0x7614c9fef669bdabn,\n name: \"fn (CompareOperator) CompareOperator\",\n length: 1,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 16,\n byteSize: 2,\n structure: s98,\n },\n ],\n template: o64\n },\n});\n$(s100, {\n ...s,\n type: 6,\n flags: 1,\n signature: 0x89697612f8e25e90n,\n name: \"CompareOperator\",\n byteSize: 1,\n align: 1,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n bitOffset: 0,\n bitSize: 3,\n byteSize: 1,\n structure: s100,\n },\n ],\n },\n static: {\n members: [\n {\n ...m,\n type: 5,\n flags: 18,\n slot: 0,\n name: \"reverse\",\n structure: s99,\n },\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 1,\n name: \"lt\",\n structure: s100,\n },\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 2,\n name: \"lte\",\n structure: s100,\n },\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 3,\n name: \"eq\",\n structure: s100,\n },\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 4,\n name: \"gte\",\n structure: s100,\n },\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 5,\n name: \"gt\",\n structure: s100,\n },\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 6,\n name: \"neq\",\n structure: s100,\n },\n ],\n template: o65\n },\n});\n$(s101, {\n ...s,\n type: 12,\n signature: 0xacf11acba856b940n,\n name: \"Arg(fn (Order, CompareOperator) bool)\",\n length: 2,\n byteSize: 3,\n align: 1,\n instance: {\n members: [\n {\n ...m,\n type: 1,\n flags: 1,\n bitOffset: 0,\n bitSize: 1,\n byteSize: 1,\n slot: 0,\n name: \"retval\",\n structure: s97,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 8,\n bitSize: 2,\n byteSize: 1,\n slot: 1,\n name: \"0\",\n structure: s103,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 16,\n bitSize: 3,\n byteSize: 1,\n slot: 2,\n name: \"1\",\n structure: s100,\n },\n ],\n },\n});\n$(s102, {\n ...s,\n type: 14,\n signature: 0xf27159573848fb68n,\n name: \"fn (Order, CompareOperator) bool\",\n length: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 24,\n byteSize: 3,\n structure: s101,\n },\n ],\n template: o73\n },\n});\n$(s103, {\n ...s,\n type: 6,\n flags: 1,\n signature: 0x1aec8487f6280122n,\n name: \"Order\",\n byteSize: 1,\n align: 1,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n bitOffset: 0,\n bitSize: 2,\n byteSize: 1,\n structure: s103,\n },\n ],\n },\n static: {\n members: [\n {\n ...m,\n type: 5,\n flags: 18,\n slot: 0,\n name: \"invert\",\n structure: s93,\n },\n {\n ...m,\n type: 5,\n flags: 18,\n slot: 1,\n name: \"differ\",\n structure: s96,\n },\n {\n ...m,\n type: 5,\n flags: 18,\n slot: 2,\n name: \"compare\",\n structure: s102,\n },\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 3,\n name: \"gt\",\n structure: s103,\n },\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 4,\n name: \"lt\",\n structure: s103,\n },\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 5,\n name: \"eq\",\n structure: s103,\n },\n ],\n template: o74\n },\n});\n$(s104, {\n ...s,\n type: 12,\n signature: 0xf2ead49fdfa38e2bn,\n name: \"Arg(fn (Alignment, Alignment) Order)\",\n length: 2,\n byteSize: 3,\n align: 1,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 0,\n bitSize: 2,\n byteSize: 1,\n slot: 0,\n name: \"retval\",\n structure: s103,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 8,\n bitSize: 5,\n byteSize: 1,\n slot: 1,\n name: \"0\",\n structure: s114,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 16,\n bitSize: 5,\n byteSize: 1,\n slot: 2,\n name: \"1\",\n structure: s114,\n },\n ],\n },\n});\n$(s105, {\n ...s,\n type: 14,\n signature: 0xf13cee4b7fda58c4n,\n name: \"fn (Alignment, Alignment) Order\",\n length: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 24,\n byteSize: 3,\n structure: s104,\n },\n ],\n template: o81\n },\n});\n$(s106, {\n ...s,\n type: 12,\n signature: 0x05739b3b38be1fe7n,\n name: \"Arg(fn (Alignment, CompareOperator, Alignment) bool)\",\n length: 3,\n byteSize: 4,\n align: 1,\n instance: {\n members: [\n {\n ...m,\n type: 1,\n flags: 1,\n bitOffset: 0,\n bitSize: 1,\n byteSize: 1,\n slot: 0,\n name: \"retval\",\n structure: s97,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 8,\n bitSize: 5,\n byteSize: 1,\n slot: 1,\n name: \"0\",\n structure: s114,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 16,\n bitSize: 3,\n byteSize: 1,\n slot: 2,\n name: \"1\",\n structure: s100,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 24,\n bitSize: 5,\n byteSize: 1,\n slot: 3,\n name: \"2\",\n structure: s114,\n },\n ],\n },\n});\n$(s107, {\n ...s,\n type: 14,\n signature: 0x5fb140f1464d545dn,\n name: \"fn (Alignment, CompareOperator, Alignment) bool\",\n length: 3,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n structure: s106,\n },\n ],\n template: o82\n },\n});\n$(s108, {\n ...s,\n type: 12,\n signature: 0x19f9b9e423c9240bn,\n name: \"Arg(fn (Alignment, Alignment) Alignment)\",\n length: 2,\n byteSize: 3,\n align: 1,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 0,\n bitSize: 5,\n byteSize: 1,\n slot: 0,\n name: \"retval\",\n structure: s114,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 8,\n bitSize: 5,\n byteSize: 1,\n slot: 1,\n name: \"0\",\n structure: s114,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 16,\n bitSize: 5,\n byteSize: 1,\n slot: 2,\n name: \"1\",\n structure: s114,\n },\n ],\n },\n});\n$(s109, {\n ...s,\n type: 14,\n signature: 0x502383542de53673n,\n name: \"fn (Alignment, Alignment) Alignment\",\n length: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 24,\n byteSize: 3,\n structure: s108,\n },\n ],\n template: o83\n },\n});\n$(s110, {\n ...s,\n type: 12,\n signature: 0x84835b8f7162244fn,\n name: \"Arg(fn (Alignment, usize) usize)\",\n length: 2,\n byteSize: 12,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n name: \"retval\",\n structure: s86,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 64,\n bitSize: 5,\n byteSize: 1,\n slot: 1,\n name: \"0\",\n structure: s114,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 32,\n bitSize: 32,\n byteSize: 4,\n slot: 2,\n name: \"1\",\n structure: s86,\n },\n ],\n },\n});\n$(s111, {\n ...s,\n type: 14,\n signature: 0xf22d521b6289ec09n,\n name: \"fn (Alignment, usize) usize\",\n length: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 96,\n byteSize: 12,\n structure: s110,\n },\n ],\n template: o84\n },\n});\n$(s112, {\n ...s,\n type: 12,\n signature: 0x053c5d5cf40c778fn,\n name: \"Arg(fn (Alignment, usize) bool)\",\n length: 2,\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 1,\n flags: 1,\n bitOffset: 32,\n bitSize: 1,\n byteSize: 1,\n slot: 0,\n name: \"retval\",\n structure: s97,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 40,\n bitSize: 5,\n byteSize: 1,\n slot: 1,\n name: \"0\",\n structure: s114,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 2,\n name: \"1\",\n structure: s86,\n },\n ],\n },\n});\n$(s113, {\n ...s,\n type: 14,\n signature: 0xc152dfb87eadb0b4n,\n name: \"fn (Alignment, usize) bool\",\n length: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 64,\n byteSize: 8,\n structure: s112,\n },\n ],\n template: o85\n },\n});\n$(s114, {\n ...s,\n type: 6,\n flags: 17,\n signature: 0x585b7f21a11e5af0n,\n name: \"Alignment\",\n byteSize: 1,\n align: 1,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n bitOffset: 0,\n bitSize: 5,\n byteSize: 1,\n structure: s114,\n },\n ],\n },\n static: {\n members: [\n {\n ...m,\n type: 5,\n flags: 18,\n slot: 0,\n name: \"toByteUnits\",\n structure: s89,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 1,\n name: \"fromByteUnits\",\n structure: s91,\n },\n {\n ...m,\n type: 5,\n flags: 18,\n slot: 2,\n name: \"order\",\n structure: s105,\n },\n {\n ...m,\n type: 5,\n flags: 18,\n slot: 3,\n name: \"compare\",\n structure: s107,\n },\n {\n ...m,\n type: 5,\n flags: 18,\n slot: 4,\n name: \"max\",\n structure: s109,\n },\n {\n ...m,\n type: 5,\n flags: 18,\n slot: 5,\n name: \"min\",\n structure: s109,\n },\n {\n ...m,\n type: 5,\n flags: 18,\n slot: 6,\n name: \"forward\",\n structure: s111,\n },\n {\n ...m,\n type: 5,\n flags: 18,\n slot: 7,\n name: \"backward\",\n structure: s111,\n },\n {\n ...m,\n type: 5,\n flags: 18,\n slot: 8,\n name: \"check\",\n structure: s113,\n },\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 9,\n name: \"1\",\n structure: s114,\n },\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 10,\n name: \"2\",\n structure: s114,\n },\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 11,\n name: \"4\",\n structure: s114,\n },\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 12,\n name: \"8\",\n structure: s114,\n },\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 13,\n name: \"16\",\n structure: s114,\n },\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 14,\n name: \"32\",\n structure: s114,\n },\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 15,\n name: \"64\",\n structure: s114,\n },\n ],\n template: o86\n },\n});\n$(s115, {\n ...s,\n type: 12,\n flags: 14,\n signature: 0xe9635dad30c6baf7n,\n name: \"Arg(fn (*opaque, usize, Alignment, usize) ?[*]u8)\",\n length: 4,\n byteSize: 20,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n name: \"retval\",\n structure: s87,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 32,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"0\",\n structure: s83,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 64,\n bitSize: 32,\n byteSize: 4,\n slot: 2,\n name: \"1\",\n structure: s86,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 128,\n bitSize: 5,\n byteSize: 1,\n slot: 3,\n name: \"2\",\n structure: s114,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 96,\n bitSize: 32,\n byteSize: 4,\n slot: 4,\n name: \"3\",\n structure: s86,\n },\n ],\n },\n});\n$(s116, {\n ...s,\n type: 14,\n signature: 0xbed86186ab27c14cn,\n name: \"fn (*opaque, usize, Alignment, usize) ?[*]u8\",\n length: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 160,\n byteSize: 20,\n structure: s115,\n },\n ],\n template: o103\n },\n static: {\n members: [],\n template: o104\n },\n});\n$(s117, {\n ...s,\n type: 8,\n flags: 204,\n signature: 0x4e622a40d4cd5ff1n,\n name: \"*const fn (*opaque, usize, Alignment, usize) ?[*]u8\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n structure: s116,\n },\n ],\n },\n});\n$(s118, {\n ...s,\n type: 8,\n flags: 60,\n signature: 0x559135659a0a19ean,\n name: \"[]u8\",\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 64,\n byteSize: 8,\n slot: 0,\n structure: s84,\n },\n ],\n },\n});\n$(s119, {\n ...s,\n type: 12,\n flags: 14,\n signature: 0xcdf6dc4e0de8422cn,\n name: \"Arg(fn (*opaque, []u8, Alignment, usize, usize) bool)\",\n length: 5,\n byteSize: 24,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 1,\n flags: 1,\n bitOffset: 160,\n bitSize: 1,\n byteSize: 1,\n slot: 0,\n name: \"retval\",\n structure: s97,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"0\",\n structure: s83,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 32,\n bitSize: 64,\n byteSize: 8,\n slot: 2,\n name: \"1\",\n structure: s118,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 168,\n bitSize: 5,\n byteSize: 1,\n slot: 3,\n name: \"2\",\n structure: s114,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 96,\n bitSize: 32,\n byteSize: 4,\n slot: 4,\n name: \"3\",\n structure: s86,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 128,\n bitSize: 32,\n byteSize: 4,\n slot: 5,\n name: \"4\",\n structure: s86,\n },\n ],\n },\n});\n$(s120, {\n ...s,\n type: 14,\n signature: 0xb1911d4efbc4e934n,\n name: \"fn (*opaque, []u8, Alignment, usize, usize) bool\",\n length: 5,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 192,\n byteSize: 24,\n structure: s119,\n },\n ],\n template: o105\n },\n static: {\n members: [],\n template: o106\n },\n});\n$(s121, {\n ...s,\n type: 8,\n flags: 204,\n signature: 0x493ea89f26eed44an,\n name: \"*const fn (*opaque, []u8, Alignment, usize, usize) bool\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n structure: s120,\n },\n ],\n },\n});\n$(s122, {\n ...s,\n type: 12,\n flags: 14,\n signature: 0x9205d7e9600828c7n,\n name: \"Arg(fn (*opaque, []u8, Alignment, usize, usize) ?[*]u8)\",\n length: 5,\n byteSize: 28,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n name: \"retval\",\n structure: s87,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 32,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"0\",\n structure: s83,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 64,\n bitSize: 64,\n byteSize: 8,\n slot: 2,\n name: \"1\",\n structure: s118,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 192,\n bitSize: 5,\n byteSize: 1,\n slot: 3,\n name: \"2\",\n structure: s114,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 128,\n bitSize: 32,\n byteSize: 4,\n slot: 4,\n name: \"3\",\n structure: s86,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 160,\n bitSize: 32,\n byteSize: 4,\n slot: 5,\n name: \"4\",\n structure: s86,\n },\n ],\n },\n});\n$(s123, {\n ...s,\n type: 14,\n signature: 0xa62dc1e1ab682848n,\n name: \"fn (*opaque, []u8, Alignment, usize, usize) ?[*]u8\",\n length: 5,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 224,\n byteSize: 28,\n structure: s122,\n },\n ],\n template: o107\n },\n static: {\n members: [],\n template: o108\n },\n});\n$(s124, {\n ...s,\n type: 8,\n flags: 204,\n signature: 0x77acf15c3d1d71d3n,\n name: \"*const fn (*opaque, []u8, Alignment, usize, usize) ?[*]u8\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n structure: s123,\n },\n ],\n },\n});\n$(s125, {\n ...s,\n type: 12,\n flags: 14,\n signature: 0x904e42ce696930c2n,\n name: \"Arg(fn (*opaque, []u8, Alignment, usize) void)\",\n length: 4,\n byteSize: 20,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 128,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n name: \"retval\",\n structure: s0,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"0\",\n structure: s83,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 32,\n bitSize: 64,\n byteSize: 8,\n slot: 2,\n name: \"1\",\n structure: s118,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 128,\n bitSize: 5,\n byteSize: 1,\n slot: 3,\n name: \"2\",\n structure: s114,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 96,\n bitSize: 32,\n byteSize: 4,\n slot: 4,\n name: \"3\",\n structure: s86,\n },\n ],\n },\n});\n$(s126, {\n ...s,\n type: 14,\n signature: 0x6d484295c0c3632en,\n name: \"fn (*opaque, []u8, Alignment, usize) void\",\n length: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 160,\n byteSize: 20,\n structure: s125,\n },\n ],\n template: o109\n },\n static: {\n members: [],\n template: o110\n },\n});\n$(s127, {\n ...s,\n type: 8,\n flags: 204,\n signature: 0xa160bce25686afaen,\n name: \"*const fn (*opaque, []u8, Alignment, usize) void\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n structure: s126,\n },\n ],\n },\n});\n$(s128, {\n ...s,\n type: 2,\n flags: 14,\n signature: 0x82fdd6a3c2718ac5n,\n name: \"VTable\",\n byteSize: 16,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n name: \"alloc\",\n structure: s117,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 32,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"resize\",\n structure: s121,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 64,\n bitSize: 32,\n byteSize: 4,\n slot: 2,\n name: \"remap\",\n structure: s124,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 96,\n bitSize: 32,\n byteSize: 4,\n slot: 3,\n name: \"free\",\n structure: s127,\n },\n ],\n template: o111\n },\n});\n$(s129, {\n ...s,\n type: 8,\n flags: 204,\n signature: 0x032c51cdc1d57444n,\n name: \"*const VTable\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n structure: s128,\n },\n ],\n },\n});\n$(s130, {\n ...s,\n flags: 9,\n signature: 0x406b8a99e2cc9d59n,\n name: \"type\",\n align: 1,\n instance: {\n members: [\n {\n ...m,\n type: 6,\n bitOffset: 0,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n structure: s130,\n },\n ],\n },\n});\n$(s131, {\n ...s,\n type: 5,\n flags: 1,\n signature: 0x25c89e63075b428an,\n name: \"ES0\",\n byteSize: 2,\n align: 2,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n structure: s131,\n },\n ],\n },\n static: {\n members: [\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 0,\n name: \"OutOfMemory\",\n structure: s131,\n },\n ],\n template: o120\n },\n});\n$(s132, {\n ...s,\n flags: 1,\n signature: 0xcd90723bb6870a4dn,\n name: \"u5\",\n byteSize: 1,\n align: 1,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n bitOffset: 0,\n bitSize: 5,\n byteSize: 1,\n structure: s132,\n },\n ],\n },\n});\n$(s133, {\n ...s,\n type: 12,\n flags: 30,\n signature: 0xfbc5dcd792c9aee9n,\n name: \"Arg(fn (Allocator, usize, Alignment, usize) ?[*]u8)\",\n length: 3,\n byteSize: 24,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n name: \"retval\",\n structure: s87,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 32,\n bitSize: 64,\n byteSize: 8,\n slot: 1,\n name: \"0\",\n structure: s145,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 96,\n bitSize: 32,\n byteSize: 4,\n slot: 2,\n name: \"1\",\n structure: s86,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 160,\n bitSize: 5,\n byteSize: 1,\n slot: 3,\n name: \"2\",\n structure: s114,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 128,\n bitSize: 32,\n byteSize: 4,\n slot: 4,\n name: \"3\",\n structure: s86,\n },\n ],\n },\n});\n$(s134, {\n ...s,\n type: 14,\n signature: 0xa1c6c8ddb44e8aa1n,\n name: \"fn (Allocator, usize, Alignment, usize) ?[*]u8\",\n length: 3,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 192,\n byteSize: 24,\n structure: s133,\n },\n ],\n template: o122\n },\n});\n$(s135, {\n ...s,\n type: 14,\n signature: 0x3150e96a1cf4fb3en,\n name: \"fn (Allocator, usize, Alignment, usize) ?[*]u8\",\n length: 3,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 192,\n byteSize: 24,\n structure: s133,\n },\n ],\n template: o123\n },\n});\n$(s136, {\n ...s,\n type: 12,\n flags: 30,\n signature: 0x844b7d91572e5617n,\n name: \"Arg(fn (Allocator, []u8, Alignment, usize, usize) bool)\",\n length: 4,\n byteSize: 28,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 1,\n flags: 1,\n bitOffset: 192,\n bitSize: 1,\n byteSize: 1,\n slot: 0,\n name: \"retval\",\n structure: s97,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 64,\n byteSize: 8,\n slot: 1,\n name: \"0\",\n structure: s145,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 64,\n bitSize: 64,\n byteSize: 8,\n slot: 2,\n name: \"1\",\n structure: s118,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 200,\n bitSize: 5,\n byteSize: 1,\n slot: 3,\n name: \"2\",\n structure: s114,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 128,\n bitSize: 32,\n byteSize: 4,\n slot: 4,\n name: \"3\",\n structure: s86,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 160,\n bitSize: 32,\n byteSize: 4,\n slot: 5,\n name: \"4\",\n structure: s86,\n },\n ],\n },\n});\n$(s137, {\n ...s,\n type: 14,\n signature: 0xde63f52f14d5bc74n,\n name: \"fn (Allocator, []u8, Alignment, usize, usize) bool\",\n length: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 224,\n byteSize: 28,\n structure: s136,\n },\n ],\n template: o124\n },\n});\n$(s138, {\n ...s,\n type: 14,\n signature: 0xbacda0ec6bc94329n,\n name: \"fn (Allocator, []u8, Alignment, usize, usize) bool\",\n length: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 224,\n byteSize: 28,\n structure: s136,\n },\n ],\n template: o125\n },\n});\n$(s139, {\n ...s,\n type: 12,\n flags: 30,\n signature: 0xca4d0a4d3768c190n,\n name: \"Arg(fn (Allocator, []u8, Alignment, usize, usize) ?[*]u8)\",\n length: 4,\n byteSize: 32,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n name: \"retval\",\n structure: s87,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 32,\n bitSize: 64,\n byteSize: 8,\n slot: 1,\n name: \"0\",\n structure: s145,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 96,\n bitSize: 64,\n byteSize: 8,\n slot: 2,\n name: \"1\",\n structure: s118,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 224,\n bitSize: 5,\n byteSize: 1,\n slot: 3,\n name: \"2\",\n structure: s114,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 160,\n bitSize: 32,\n byteSize: 4,\n slot: 4,\n name: \"3\",\n structure: s86,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 192,\n bitSize: 32,\n byteSize: 4,\n slot: 5,\n name: \"4\",\n structure: s86,\n },\n ],\n },\n});\n$(s140, {\n ...s,\n type: 14,\n signature: 0x5694954bb4defd4fn,\n name: \"fn (Allocator, []u8, Alignment, usize, usize) ?[*]u8\",\n length: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 256,\n byteSize: 32,\n structure: s139,\n },\n ],\n template: o126\n },\n});\n$(s141, {\n ...s,\n type: 14,\n signature: 0xef3e466f3864f3f8n,\n name: \"fn (Allocator, []u8, Alignment, usize, usize) ?[*]u8\",\n length: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 256,\n byteSize: 32,\n structure: s139,\n },\n ],\n template: o127\n },\n});\n$(s142, {\n ...s,\n type: 12,\n flags: 30,\n signature: 0x8cbf4dbbc76d157cn,\n name: \"Arg(fn (Allocator, []u8, Alignment, usize) void)\",\n length: 3,\n byteSize: 24,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 160,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n name: \"retval\",\n structure: s0,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 64,\n byteSize: 8,\n slot: 1,\n name: \"0\",\n structure: s145,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 64,\n bitSize: 64,\n byteSize: 8,\n slot: 2,\n name: \"1\",\n structure: s118,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 160,\n bitSize: 5,\n byteSize: 1,\n slot: 3,\n name: \"2\",\n structure: s114,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 128,\n bitSize: 32,\n byteSize: 4,\n slot: 4,\n name: \"3\",\n structure: s86,\n },\n ],\n },\n});\n$(s143, {\n ...s,\n type: 14,\n signature: 0x0c1808e686843fafn,\n name: \"fn (Allocator, []u8, Alignment, usize) void\",\n length: 3,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 192,\n byteSize: 24,\n structure: s142,\n },\n ],\n template: o128\n },\n});\n$(s144, {\n ...s,\n type: 14,\n signature: 0x65e6caa57226340dn,\n name: \"fn (Allocator, []u8, Alignment, usize) void\",\n length: 3,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 192,\n byteSize: 24,\n structure: s142,\n },\n ],\n template: o129\n },\n});\n$(s145, {\n ...s,\n type: 2,\n flags: 270,\n signature: 0x792f7b78d636007fn,\n name: \"Allocator\",\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 0,\n name: \"ptr\",\n structure: s83,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 32,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"vtable\",\n structure: s129,\n },\n ],\n template: o130\n },\n static: {\n members: [\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 0,\n name: \"Error\",\n structure: s130,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 1,\n name: \"Log2Align\",\n structure: s130,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 2,\n name: \"VTable\",\n structure: s130,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 3,\n name: \"noResize\",\n structure: s120,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 4,\n name: \"noRemap\",\n structure: s123,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 5,\n name: \"noFree\",\n structure: s126,\n },\n {\n ...m,\n type: 5,\n flags: 18,\n slot: 6,\n name: \"rawAlloc\",\n structure: s134,\n },\n {\n ...m,\n type: 5,\n flags: 18,\n slot: 7,\n name: \"rawResize\",\n structure: s137,\n },\n {\n ...m,\n type: 5,\n flags: 18,\n slot: 8,\n name: \"rawRemap\",\n structure: s140,\n },\n {\n ...m,\n type: 5,\n flags: 18,\n slot: 9,\n name: \"rawFree\",\n structure: s143,\n },\n ],\n template: o134\n },\n});\n$(s146, {\n ...s,\n type: 12,\n flags: 30,\n signature: 0xd43be71134534ad3n,\n name: \"Arg(fn (Allocator, f32, f32, f32) void)\",\n length: 3,\n byteSize: 20,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 160,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n name: \"retval\",\n structure: s0,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 64,\n byteSize: 8,\n slot: 1,\n name: \"0\",\n structure: s145,\n },\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 64,\n bitSize: 32,\n byteSize: 4,\n slot: 2,\n name: \"1\",\n structure: s1,\n },\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 96,\n bitSize: 32,\n byteSize: 4,\n slot: 3,\n name: \"2\",\n structure: s1,\n },\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 128,\n bitSize: 32,\n byteSize: 4,\n slot: 4,\n name: \"3\",\n structure: s1,\n },\n ],\n },\n});\n$(s147, {\n ...s,\n type: 14,\n signature: 0x761bf1907c17c1a6n,\n name: \"fn (Allocator, f32, f32, f32) void\",\n length: 3,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 160,\n byteSize: 20,\n structure: s146,\n },\n ],\n template: o148\n },\n});\n$(s148, {\n ...s,\n type: 5,\n flags: 1,\n signature: 0x25c89e63075b428an,\n name: \"ES1\",\n byteSize: 2,\n align: 2,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n structure: s148,\n },\n ],\n },\n static: {\n members: [\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 0,\n name: \"OutOfMemory\",\n structure: s148,\n },\n ],\n template: o149\n },\n});\n$(s149, {\n ...s,\n type: 4,\n flags: 1,\n signature: 0x6b7a39b249c617e5n,\n name: \"ES1!void\",\n byteSize: 2,\n align: 2,\n instance: {\n members: [\n {\n ...m,\n bitOffset: 16,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n structure: s0,\n },\n {\n ...m,\n type: 3,\n flags: 8,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n structure: s148,\n },\n ],\n },\n});\n$(s150, {\n ...s,\n type: 12,\n flags: 42,\n signature: 0x5bb01020d75668f5n,\n name: \"Arg(fn (f32) ES1!void)\",\n length: 1,\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 32,\n bitSize: 16,\n byteSize: 2,\n slot: 0,\n name: \"retval\",\n structure: s149,\n },\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"0\",\n structure: s1,\n },\n ],\n },\n});\n$(s151, {\n ...s,\n type: 14,\n signature: 0x13f401b042d16a6cn,\n name: \"fn (f32) ES1!void\",\n length: 1,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 64,\n byteSize: 8,\n structure: s150,\n },\n ],\n template: o151\n },\n});\n$(s152, {\n ...s,\n type: 5,\n flags: 1,\n signature: 0x25c89e63075b428an,\n name: \"ES2\",\n byteSize: 2,\n align: 2,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n structure: s152,\n },\n ],\n },\n static: {\n members: [\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 0,\n name: \"OutOfMemory\",\n structure: s152,\n },\n ],\n template: o152\n },\n});\n$(s153, {\n ...s,\n type: 4,\n flags: 1,\n signature: 0x6b7a39b249c617e5n,\n name: \"ES2!void\",\n byteSize: 2,\n align: 2,\n instance: {\n members: [\n {\n ...m,\n bitOffset: 16,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n structure: s0,\n },\n {\n ...m,\n type: 3,\n flags: 8,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n structure: s152,\n },\n ],\n },\n});\n$(s154, {\n ...s,\n type: 12,\n flags: 42,\n signature: 0xe77c9ddd0c1696ddn,\n name: \"Arg(fn (u32, [4]PointUV, u32) ES2!void)\",\n length: 3,\n byteSize: 76,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 576,\n bitSize: 16,\n byteSize: 2,\n slot: 0,\n name: \"retval\",\n structure: s153,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"0\",\n structure: s15,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 32,\n bitSize: 512,\n byteSize: 64,\n slot: 2,\n name: \"1\",\n structure: s58,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 544,\n bitSize: 32,\n byteSize: 4,\n slot: 3,\n name: \"2\",\n structure: s15,\n },\n ],\n },\n});\n$(s155, {\n ...s,\n type: 14,\n signature: 0xa304643f09351c2an,\n name: \"fn (u32, [4]PointUV, u32) ES2!void\",\n length: 3,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 608,\n byteSize: 76,\n structure: s154,\n },\n ],\n template: o154\n },\n});\n$(s156, {\n ...s,\n type: 5,\n flags: 1,\n signature: 0x25c89e63075b428an,\n name: \"ES3\",\n byteSize: 2,\n align: 2,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n structure: s156,\n },\n ],\n },\n static: {\n members: [\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 0,\n name: \"OutOfMemory\",\n structure: s156,\n },\n ],\n template: o155\n },\n});\n$(s157, {\n ...s,\n type: 4,\n flags: 1,\n signature: 0x6b7a39b249c617e5n,\n name: \"ES3!void\",\n byteSize: 2,\n align: 2,\n instance: {\n members: [\n {\n ...m,\n bitOffset: 16,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n structure: s0,\n },\n {\n ...m,\n type: 3,\n flags: 8,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n structure: s156,\n },\n ],\n },\n});\n$(s158, {\n ...s,\n type: 12,\n flags: 42,\n signature: 0xd958a5eaf8a8097an,\n name: \"Arg(fn () ES3!void)\",\n length: 0,\n byteSize: 2,\n align: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n slot: 0,\n name: \"retval\",\n structure: s157,\n },\n ],\n },\n});\n$(s159, {\n ...s,\n type: 14,\n signature: 0x73c032fe09668bden,\n name: \"fn () ES3!void\",\n length: 0,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 16,\n byteSize: 2,\n structure: s158,\n },\n ],\n template: o157\n },\n});\n$(s160, {\n ...s,\n type: 5,\n flags: 1,\n signature: 0x25c89e63075b428an,\n name: \"ES4\",\n byteSize: 2,\n align: 2,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n structure: s160,\n },\n ],\n },\n static: {\n members: [\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 0,\n name: \"OutOfMemory\",\n structure: s160,\n },\n ],\n template: o158\n },\n});\n$(s161, {\n ...s,\n type: 4,\n flags: 1,\n signature: 0x6b7a39b249c617e5n,\n name: \"ES4!void\",\n byteSize: 2,\n align: 2,\n instance: {\n members: [\n {\n ...m,\n bitOffset: 16,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n structure: s0,\n },\n {\n ...m,\n type: 3,\n flags: 8,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n structure: s160,\n },\n ],\n },\n});\n$(s162, {\n ...s,\n type: 12,\n flags: 62,\n signature: 0x3fb768c112e58843n,\n name: \"Arg(fn (Allocator, f32, f32) ES4!void)\",\n length: 2,\n byteSize: 20,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 128,\n bitSize: 16,\n byteSize: 2,\n slot: 0,\n name: \"retval\",\n structure: s161,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 64,\n byteSize: 8,\n slot: 1,\n name: \"0\",\n structure: s145,\n },\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 64,\n bitSize: 32,\n byteSize: 4,\n slot: 2,\n name: \"1\",\n structure: s1,\n },\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 96,\n bitSize: 32,\n byteSize: 4,\n slot: 3,\n name: \"2\",\n structure: s1,\n },\n ],\n },\n});\n$(s163, {\n ...s,\n type: 14,\n signature: 0xf55fdf915ebb0439n,\n name: \"fn (Allocator, f32, f32) ES4!void\",\n length: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 160,\n byteSize: 20,\n structure: s162,\n },\n ],\n template: o160\n },\n});\n$(s164, {\n ...s,\n type: 5,\n flags: 1,\n signature: 0x25c89e63075b428an,\n name: \"ES5\",\n byteSize: 2,\n align: 2,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n structure: s164,\n },\n ],\n },\n static: {\n members: [\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 0,\n name: \"OutOfMemory\",\n structure: s164,\n },\n ],\n template: o161\n },\n});\n$(s165, {\n ...s,\n type: 4,\n flags: 1,\n signature: 0x6b7a39b249c617e5n,\n name: \"ES5!void\",\n byteSize: 2,\n align: 2,\n instance: {\n members: [\n {\n ...m,\n bitOffset: 16,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n structure: s0,\n },\n {\n ...m,\n type: 3,\n flags: 8,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n structure: s164,\n },\n ],\n },\n});\n$(s166, {\n ...s,\n type: 12,\n flags: 42,\n signature: 0xd958a5eaf8a8097an,\n name: \"Arg(fn () ES5!void)\",\n length: 0,\n byteSize: 2,\n align: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n slot: 0,\n name: \"retval\",\n structure: s165,\n },\n ],\n },\n});\n$(s167, {\n ...s,\n type: 14,\n signature: 0x73c032fe09668bden,\n name: \"fn () ES5!void\",\n length: 0,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 16,\n byteSize: 2,\n structure: s166,\n },\n ],\n template: o163\n },\n});\n$(s168, {\n ...s,\n type: 12,\n signature: 0xb1afac27f34003f4n,\n name: \"Arg(fn (f32, f32) void)\",\n length: 2,\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 64,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n name: \"retval\",\n structure: s0,\n },\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 0,\n bitSize: 32,\n byteSize: 4,\n slot: 1,\n name: \"0\",\n structure: s1,\n },\n {\n ...m,\n type: 4,\n flags: 1,\n bitOffset: 32,\n bitSize: 32,\n byteSize: 4,\n slot: 2,\n name: \"1\",\n structure: s1,\n },\n ],\n },\n});\n$(s169, {\n ...s,\n type: 14,\n signature: 0x63bac1760494db20n,\n name: \"fn (f32, f32) void\",\n length: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 64,\n byteSize: 8,\n structure: s168,\n },\n ],\n template: o164\n },\n});\n$(s170, {\n ...s,\n type: 5,\n flags: 1,\n signature: 0x25c89e63075b428an,\n name: \"ES6\",\n byteSize: 2,\n align: 2,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n structure: s170,\n },\n ],\n },\n static: {\n members: [\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 0,\n name: \"OutOfMemory\",\n structure: s170,\n },\n ],\n template: o165\n },\n});\n$(s171, {\n ...s,\n type: 4,\n flags: 1,\n signature: 0x6b7a39b249c617e5n,\n name: \"ES6!void\",\n byteSize: 2,\n align: 2,\n instance: {\n members: [\n {\n ...m,\n bitOffset: 16,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n structure: s0,\n },\n {\n ...m,\n type: 3,\n flags: 8,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n structure: s170,\n },\n ],\n },\n});\n$(s172, {\n ...s,\n type: 12,\n flags: 42,\n signature: 0xd958a5eaf8a8097an,\n name: \"Arg(fn () ES6!void)\",\n length: 0,\n byteSize: 2,\n align: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n slot: 0,\n name: \"retval\",\n structure: s171,\n },\n ],\n },\n});\n$(s173, {\n ...s,\n type: 14,\n signature: 0x73c032fe09668bden,\n name: \"fn () ES6!void\",\n length: 0,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 16,\n byteSize: 2,\n structure: s172,\n },\n ],\n template: o167\n },\n});\n$(s174, {\n ...s,\n type: 5,\n flags: 1,\n signature: 0x25c89e63075b428an,\n name: \"ES7\",\n byteSize: 2,\n align: 2,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n structure: s174,\n },\n ],\n },\n static: {\n members: [\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 0,\n name: \"OutOfMemory\",\n structure: s174,\n },\n ],\n template: o168\n },\n});\n$(s175, {\n ...s,\n type: 4,\n flags: 1,\n signature: 0x6b7a39b249c617e5n,\n name: \"ES7!void\",\n byteSize: 2,\n align: 2,\n instance: {\n members: [\n {\n ...m,\n bitOffset: 16,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n structure: s0,\n },\n {\n ...m,\n type: 3,\n flags: 8,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n structure: s174,\n },\n ],\n },\n});\n$(s176, {\n ...s,\n type: 12,\n flags: 42,\n signature: 0xd958a5eaf8a8097an,\n name: \"Arg(fn () ES7!void)\",\n length: 0,\n byteSize: 2,\n align: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n slot: 0,\n name: \"retval\",\n structure: s175,\n },\n ],\n },\n});\n$(s177, {\n ...s,\n type: 14,\n signature: 0x73c032fe09668bden,\n name: \"fn () ES7!void\",\n length: 0,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 16,\n byteSize: 2,\n structure: s176,\n },\n ],\n template: o170\n },\n});\n$(s178, {\n ...s,\n type: 5,\n flags: 1,\n signature: 0x25c89e63075b428an,\n name: \"ES8\",\n byteSize: 2,\n align: 2,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n structure: s178,\n },\n ],\n },\n static: {\n members: [\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 0,\n name: \"OutOfMemory\",\n structure: s178,\n },\n ],\n template: o171\n },\n});\n$(s179, {\n ...s,\n type: 4,\n flags: 1,\n signature: 0x6b7a39b249c617e5n,\n name: \"ES8!void\",\n byteSize: 2,\n align: 2,\n instance: {\n members: [\n {\n ...m,\n bitOffset: 16,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n structure: s0,\n },\n {\n ...m,\n type: 3,\n flags: 8,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n structure: s178,\n },\n ],\n },\n});\n$(s180, {\n ...s,\n type: 12,\n flags: 42,\n signature: 0xd958a5eaf8a8097an,\n name: \"Arg(fn () ES8!void)\",\n length: 0,\n byteSize: 2,\n align: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n slot: 0,\n name: \"retval\",\n structure: s179,\n },\n ],\n },\n});\n$(s181, {\n ...s,\n type: 14,\n signature: 0x73c032fe09668bden,\n name: \"fn () ES8!void\",\n length: 0,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 16,\n byteSize: 2,\n structure: s180,\n },\n ],\n template: o173\n },\n});\n$(s182, {\n ...s,\n type: 5,\n flags: 1,\n signature: 0x25c89e63075b428an,\n name: \"ES9\",\n byteSize: 2,\n align: 2,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n structure: s182,\n },\n ],\n },\n static: {\n members: [\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 0,\n name: \"OutOfMemory\",\n structure: s182,\n },\n ],\n template: o174\n },\n});\n$(s183, {\n ...s,\n type: 4,\n flags: 1,\n signature: 0x6b7a39b249c617e5n,\n name: \"ES9!void\",\n byteSize: 2,\n align: 2,\n instance: {\n members: [\n {\n ...m,\n bitOffset: 16,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n structure: s0,\n },\n {\n ...m,\n type: 3,\n flags: 8,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n structure: s182,\n },\n ],\n },\n});\n$(s184, {\n ...s,\n type: 12,\n flags: 46,\n signature: 0x5f0fe95343834fecn,\n name: \"Arg(fn ([]const Serialized, bool) ES9!void)\",\n length: 2,\n byteSize: 12,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 64,\n bitSize: 16,\n byteSize: 2,\n slot: 0,\n name: \"retval\",\n structure: s183,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 64,\n byteSize: 8,\n slot: 1,\n name: \"0\",\n structure: s61,\n },\n {\n ...m,\n type: 1,\n flags: 1,\n bitOffset: 80,\n bitSize: 1,\n byteSize: 1,\n slot: 2,\n name: \"1\",\n structure: s97,\n },\n ],\n },\n});\n$(s185, {\n ...s,\n type: 14,\n signature: 0x7dcebd98ea82b936n,\n name: \"fn ([]const Serialized, bool) ES9!void\",\n length: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 96,\n byteSize: 12,\n structure: s184,\n },\n ],\n template: o176\n },\n});\n$(s186, {\n ...s,\n type: 9,\n flags: 64,\n signature: 0x9212e6749825a514n,\n name: \"[_]f32\",\n byteSize: 4,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 4,\n bitSize: 32,\n byteSize: 4,\n structure: s1,\n },\n ],\n },\n});\n$(s187, {\n ...s,\n type: 8,\n flags: 188,\n signature: 0xfc4e3831fa228a2en,\n name: \"[]const f32\",\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 64,\n byteSize: 8,\n slot: 0,\n structure: s186,\n },\n ],\n },\n});\n$(s188, {\n ...s,\n type: 12,\n flags: 14,\n signature: 0x0292a02ab8f8020cn,\n name: \"Arg(fn ([]const f32) void)\",\n length: 1,\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n flags: 1,\n bitOffset: 64,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n name: \"retval\",\n structure: s0,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 64,\n byteSize: 8,\n slot: 1,\n name: \"0\",\n structure: s187,\n },\n ],\n },\n});\n$(s189, {\n ...s,\n type: 14,\n signature: 0x47389ea7e1d3d337n,\n name: \"fn ([]const f32) void\",\n length: 1,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 64,\n byteSize: 8,\n structure: s188,\n },\n ],\n template: o177\n },\n});\n$(s190, {\n ...s,\n type: 5,\n flags: 1,\n signature: 0x25c89e63075b428an,\n name: \"ES10\",\n byteSize: 2,\n align: 2,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n structure: s190,\n },\n ],\n },\n static: {\n members: [\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 0,\n name: \"OutOfMemory\",\n structure: s190,\n },\n ],\n template: o178\n },\n});\n$(s191, {\n ...s,\n type: 4,\n flags: 1,\n signature: 0x6b7a39b249c617e5n,\n name: \"ES10!void\",\n byteSize: 2,\n align: 2,\n instance: {\n members: [\n {\n ...m,\n bitOffset: 16,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n structure: s0,\n },\n {\n ...m,\n type: 3,\n flags: 8,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n structure: s190,\n },\n ],\n },\n});\n$(s192, {\n ...s,\n type: 6,\n flags: 1,\n signature: 0x9ebf0e3a55069528n,\n name: \"Tool\",\n byteSize: 1,\n align: 1,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n bitOffset: 0,\n bitSize: 1,\n byteSize: 1,\n structure: s192,\n },\n ],\n },\n static: {\n members: [\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 0,\n name: \"None\",\n structure: s192,\n },\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 1,\n name: \"DrawShape\",\n structure: s192,\n },\n ],\n template: o180\n },\n});\n$(s193, {\n ...s,\n type: 12,\n flags: 42,\n signature: 0x87df1d6f0819619en,\n name: \"Arg(fn (Tool) ES10!void)\",\n length: 1,\n byteSize: 4,\n align: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n slot: 0,\n name: \"retval\",\n structure: s191,\n },\n {\n ...m,\n type: 3,\n flags: 1,\n bitOffset: 16,\n bitSize: 1,\n byteSize: 1,\n slot: 1,\n name: \"0\",\n structure: s192,\n },\n ],\n },\n});\n$(s194, {\n ...s,\n type: 14,\n signature: 0xfd284c5d6ec70f46n,\n name: \"fn (Tool) ES10!void\",\n length: 1,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 32,\n byteSize: 4,\n structure: s193,\n },\n ],\n template: o183\n },\n});\n$(s195, {\n ...s,\n type: 5,\n flags: 1,\n signature: 0x25c89e63075b428an,\n name: \"ES11\",\n byteSize: 2,\n align: 2,\n instance: {\n members: [\n {\n ...m,\n type: 3,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n structure: s195,\n },\n ],\n },\n static: {\n members: [\n {\n ...m,\n type: 5,\n flags: 4,\n slot: 0,\n name: \"OutOfMemory\",\n structure: s195,\n },\n ],\n template: o184\n },\n});\n$(s196, {\n ...s,\n type: 4,\n flags: 1,\n signature: 0x6b7a39b249c617e5n,\n name: \"ES11!void\",\n byteSize: 2,\n align: 2,\n instance: {\n members: [\n {\n ...m,\n bitOffset: 16,\n bitSize: 0,\n byteSize: 0,\n slot: 0,\n structure: s0,\n },\n {\n ...m,\n type: 3,\n flags: 8,\n bitOffset: 0,\n bitSize: 16,\n byteSize: 2,\n structure: s195,\n },\n ],\n },\n});\n$(s197, {\n ...s,\n type: 1,\n flags: 10,\n signature: 0xdad9d201b8d5c9b5n,\n name: \"[4]Point\",\n length: 4,\n byteSize: 32,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 64,\n byteSize: 8,\n structure: s8,\n },\n ],\n },\n});\n$(s198, {\n ...s,\n type: 9,\n flags: 10,\n signature: 0x9b9c01002975271fn,\n name: \"[_][4]Point\",\n byteSize: 32,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 256,\n byteSize: 32,\n structure: s197,\n },\n ],\n },\n});\n$(s199, {\n ...s,\n type: 8,\n flags: 188,\n signature: 0x40bb9abc611262cen,\n name: \"[]const [4]Point\",\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 64,\n byteSize: 8,\n slot: 0,\n structure: s198,\n },\n ],\n },\n});\n$(s200, {\n ...s,\n type: 9,\n flags: 14,\n signature: 0x7a657b2cbd904362n,\n name: \"[_][]const [4]Point\",\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 64,\n byteSize: 8,\n structure: s199,\n },\n ],\n },\n});\n$(s201, {\n ...s,\n type: 8,\n flags: 188,\n signature: 0x4f4b1e60a039c441n,\n name: \"[]const []const [4]Point\",\n byteSize: 8,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 64,\n byteSize: 8,\n slot: 0,\n structure: s200,\n },\n ],\n },\n});\n$(s202, {\n ...s,\n type: 2,\n flags: 4106,\n signature: 0x19c171c6cb7748afn,\n name: \"ShapeProps\",\n byteSize: 36,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitOffset: 0,\n bitSize: 128,\n byteSize: 16,\n slot: 0,\n name: \"fill_color\",\n structure: s30,\n },\n {\n ...m,\n type: 5,\n bitOffset: 128,\n bitSize: 128,\n byteSize: 16,\n slot: 1,\n name: \"stroke_color\",\n structure: s30,\n },\n {\n ...m,\n type: 4,\n bitOffset: 256,\n bitSize: 32,\n byteSize: 4,\n slot: 2,\n name: \"stroke_width\",\n structure: s1,\n },\n ],\n template: o186\n },\n});\n$(s203, {\n ...s,\n type: 12,\n flags: 46,\n signature: 0xaee11af771b7adc0n,\n name: \"Arg(fn ([]const []const [4]Point, ShapeProps) ES11!void)\",\n length: 2,\n byteSize: 48,\n align: 4,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 352,\n bitSize: 16,\n byteSize: 2,\n slot: 0,\n name: \"retval\",\n structure: s196,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 0,\n bitSize: 64,\n byteSize: 8,\n slot: 1,\n name: \"0\",\n structure: s201,\n },\n {\n ...m,\n type: 5,\n flags: 1,\n bitOffset: 64,\n bitSize: 288,\n byteSize: 36,\n slot: 2,\n name: \"1\",\n structure: s202,\n },\n ],\n },\n});\n$(s204, {\n ...s,\n type: 14,\n signature: 0x185e378cc11e1cf5n,\n name: \"fn ([]const []const [4]Point, ShapeProps) ES11!void\",\n length: 2,\n instance: {\n members: [\n {\n ...m,\n type: 5,\n bitSize: 384,\n byteSize: 48,\n structure: s203,\n },\n ],\n template: o187\n },\n});\n$(s205, {\n ...s,\n type: 2,\n flags: 4096,\n signature: 0x239ab4f327f6ac1bn,\n name: \"index\",\n align: 1,\n static: {\n members: [\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 0,\n name: \"connect_web_gpu_programs\",\n structure: s57,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 1,\n name: \"connect_on_asset_update_callback\",\n structure: s66,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 2,\n name: \"connect_on_asset_selection_callback\",\n structure: s71,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 3,\n name: \"connect_cache_callbacks\",\n structure: s81,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 4,\n name: \"ASSET_ID_TRESHOLD\",\n structure: s15,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 5,\n name: \"init_state\",\n structure: s147,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 6,\n name: \"update_render_scale\",\n structure: s151,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 7,\n name: \"add_asset\",\n structure: s155,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 8,\n name: \"remove_asset\",\n structure: s159,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 9,\n name: \"on_update_pick\",\n structure: s68,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 10,\n name: \"on_pointer_down\",\n structure: s163,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 11,\n name: \"on_pointer_up\",\n structure: s167,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 12,\n name: \"on_pointer_move\",\n structure: s169,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 13,\n name: \"on_pointer_leave\",\n structure: s173,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 14,\n name: \"commit_changes\",\n structure: s177,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 15,\n name: \"render_draw\",\n structure: s181,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 16,\n name: \"render_pick\",\n structure: s78,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 17,\n name: \"reset_assets\",\n structure: s185,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 18,\n name: \"destroy_state\",\n structure: s78,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 19,\n name: \"import_icons\",\n structure: s189,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 20,\n name: \"set_tool\",\n structure: s194,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 21,\n name: \"stop_drawing_shape\",\n structure: s78,\n },\n {\n ...m,\n type: 5,\n flags: 2,\n slot: 22,\n name: \"add_shape\",\n structure: s204,\n },\n ],\n template: o188\n },\n});\nconst structures = [\n s0, s1, s2, s3, s4, s5, s6, s7, s8, s9,\n s10, s11, s12, s13, s14, s15, s16, s17, s18, s19,\n s20, s21, s22, s23, s24, s25, s26, s27, s28, s29,\n s30, s31, s32, s33, s34, s35, s36, s37, s38, s39,\n s40, s41, s42, s43, s44, s45, s46, s47, s48, s49,\n s50, s51, s52, s53, s54, s55, s56, s57, s58, s59,\n s60, s61, s62, s63, s64, s65, s66, s67, s68, s69,\n s70, s71, s72, s73, s74, s75, s76, s77, s78, s79,\n s80, s81, s82, s83, s84, s85, s86, s87, s88, s89,\n s90, s91, s92, s93, s94, s95, s96, s97, s98, s99,\n s100, s101, s102, s103, s104, s105, s106, s107, s108, s109,\n s110, s111, s112, s113, s114, s115, s116, s117, s118, s119,\n s120, s121, s122, s123, s124, s125, s126, s127, s128, s129,\n s130, s131, s132, s133, s134, s135, s136, s137, s138, s139,\n s140, s141, s142, s143, s144, s145, s146, s147, s148, s149,\n s150, s151, s152, s153, s154, s155, s156, s157, s158, s159,\n s160, s161, s162, s163, s164, s165, s166, s167, s168, s169,\n s170, s171, s172, s173, s174, s175, s176, s177, s178, s179,\n s180, s181, s182, s183, s184, s185, s186, s187, s188, s189,\n s190, s191, s192, s193, s194, s195, s196, s197, s198, s199,\n s200, s201, s202, s203, s204, s205,\n];\nconst root = s205;\nconst settings = {\n runtimeSafety: false,\n littleEndian: true,\n libc: false,\n};\n\n// create runtime environment\nconst env = createEnvironment();\n\n// recreate structures\nenv.recreateStructures(structures, settings);\n\n// initiate loading and compilation of WASM bytecodes\nconst source = (async () => {\n // index.zig\n const binaryString = atob(\"AGFzbQEAAAABiQInYAJ/fwBgBX9/f39/AGAEf39/fwF/YAN/f38AYAZ/f39/f38Bf2AEf399fQF/YAAAYAF/AGAEf319fQBgAX0Bf2ADf39/AX9gAAF/YAN/fX0Bf2ACfX0AYAF/AX9gAn9/AX1gAn9/AX9gBH9/f38AYAR/f35/AGAFf319fX8AYAV9fX19fQF9YAZ/f39/f38AYAJ9fQF9YAZ/f399f30AYAV/f399fQBgBn99fX19fwBgBH9/f30AYAF9AX1gAX8BfmAFf399fX8Bf2AHf39/f39/fwF/YAV/f39/fwF/YAV/fn5+fgBgAn98AGACfH8BfGABfAF/YAF8AX1gAn1/AX9gA3x8fAF8AoQBBgNlbnYGbWVtb3J5AgAFA2VudhlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAXAA1gIDZW52DV9kaXNwbGF5UGFuaWMAAANlbnYNX2hhbmRsZUpzQ2FsbAACA2VudhBfYWxsb2NhdGVKc1RodW5rABADZW52DF9mcmVlSnNUaHVuawAQA78DvQMGCwcHBwAICQoLBwwLDQsLCwYKBgAOBgoQEAABExQBAwMKCg4PBxAODgMHAw4OAQMDBwMLDg4HFRUVABYQAxcYAQoBAwMZGgAAFwMDBgMDAxYbDg4QDgAQDgoQEBAQEAQEAQIKBAQBAw8DAQccEBAREBAREBAQEBAQERAQEBEQEBACBAQBBwAHBwcHBwcHBwcHBwcHBwcGBwYGBgYGBgYGBgYGBgYGBhAREBEQERARChwQEREQERAREREQEBAQEBAAAwAAAAAAAAAAAAAAAAAAAAUdBQUFBQUFBQUFBQUFBQUFBB4EBAQEBAQEBAQEBAQEBAQEHgQEBAQEBAQEBAQEBAQEBAEVAQEBAQEBAQEBAQEBAQEBEBAQEBAQEAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEVAQEBAQEBAQEBAQEBAQEBAxEDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAIfAgICAgICAgICAgICAgICEBAQEBAQEAYQBwICBAQEBAEDCh8QEAcGCwIOBAQBICEiFiMbJCQlHxsmFhsbBggBfwFBgIAQCwe4AQoPZ2V0RmFjdG9yeVRodW5rAAUKaW5pdGlhbGl6ZQCbAxVhbGxvY2F0ZVNjcmF0Y2hNZW1vcnkAnAMRZnJlZVNjcmF0Y2hNZW1vcnkApQMIcnVuVGh1bmsApgMQcnVuVmFyaWFkaWNUaHVuawCnAw1jcmVhdGVKc1RodW5rAKgDDmRlc3Ryb3lKc1RodW5rAKkDC2ZsdXNoU3Rkb3V0AKsDE2dldE1vZHVsZUF0dHJpYnV0ZXMArAMIAQQJ8gQBAEEBC9UCAAYHCAkKCwwNDg8QERITFBUWFxgZGhtxcnN0dXZ3eHl6e3x9fn+AAYEBggGDAYQBtQG2AbcBuAG5AboBuwG8Ab0BY2RlhQGGAYcBiAFSKFMeqwGsAa0BrgGvAbABsQGyAb4BvwHAAcEBbFZXWF1eX2BhYsIBwwGZApoCmwKcAp0CngKfAllaW1yUA5UDlgOXA5gDmQOaA60DrwOwA7EDZmhpaokBiwGMAY0BjgGPAZABkQGSAZMBlAGVAZYBlwGYAZkBmgGcAZ0BngGfAaABoQGiAaMBpAGlAaYBpwGoAakBqgHEAcYBxwHIAckBygHLAcwBzQHOAc8B0AHRAdIB0wHUAdUB1wHYAdkB2gHbAdwB3QHeAd8B4AHhAeIB4wHkAeUB5gHoAekB6gHrAewB7QHuAe8B8AHxAfIB8wH0AfUB9gH3AfkB+gH7AfwB/QH+Af8BgAKBAoICgwKEAoUChgKHAogCigKLAowCjQKOAo8CkAKRApICkwKUApUClgKXApgCoAKiAqMCpAKlAqYCpwKoAqkCqgKrAqwCrQKuAq8CsAKxArICswK0ArUCtgK3ArgCuQK6ArsCvAK9Ar4CvwLAAsECwwLEAsUCxgLHAsgCyQLKAssCzALNAs4CzwLQAtEC0gLUAtUC1gLXAtgC2QLaAtsC3ALdAt4C3wLgAuEC4gLjAuQC5QLmAucC6ALpAuoC6wLsAu0C7gLvAvAC8QLyAvMC9AL1AvYC9wL4AvkC+gL7AvwC/QL+Av8CgAOBA4IDgwOFA4YDhwOIA4kDigOLA4wDjQOOA48DkAORA5IDkwOeA6ADogOkAwq3nwO9Aw4AQaizEEEAQYQJ/AsACwQAQQELCwBBACAANgK0sxALCwBBACAANgKosxALCwBBACAANgKwsxALFABBACABNgK8sxBBACAANgK4sxALPQBBAEIANwLMshBBACACOALIshBBACABOALE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ACgC0LIQIQ9BACEBAkACQANAAkACQAJAIAEgD0YNACABQQFqIRAgAiABQZQBbGoiASgCRCERIAEtAJABQQFxDQIgAEEgaiABQcQA/AoAACAAIBE2AmQgAEHoAGohEkFoIQEDQCABRQ0CIBIgDiABQcSNEGooAgBBBHRqIhMpAgA3AgAgEkEIaiATQQhqKQIANwIAIAFBBGohASASQRBqIRIMAAsLIABBACoCyLIQIhQ4ApQJIABBADYCkAkgACAUOAKMCSAAQQAqAsSyECIUOAKICSAAQQA2AoQJIAAgFDgCgAkgAEIANwP4CEEAIQEDQCABQQRGDQQgACAAQfgIaiABQQN0aikDADcD+AcCQAJAIAFBA0cNACAAQgA3A7AlIABBsCVqIRJBBCETDAELIAAgAEH4CGogAUEBaiITQQN0aikDADcDkAYgAEGQBmohEgsgAEHgCmogAUEHdGogAEH4B2ogEkEAKgLAshAiFCAUkkHsjBBDAAAAABBCIBMhAQwACwsgAEHoAGogEUEAKAK0sxAoAgARAAAgECEBDAELIAEoAnwhEyABLQCAASESIABByAFqIAFBxAD8CgAAIA0gAUHIAGpBNPwKAAAgDEECaiABQYMBai0AADoAACAMIAEvAIEBOwAAIAsgASkChAE3AgAgC0EIaiABQYwBaigCADYCACAAIBI6AMgCIAAgEzYCxAIgACARNgKMAgJAIBJFDQAgCSABKQJMNwIAIAggASkCXCIVNwIAIAcgFTcCACAGIAEpAmw3AgAgAEHgCmpBCGogCkEIaiISKQIANwMAIAlBCGogAUHUAGopAgA3AgAgCEEIaiABQeQAaikCACIVNwIAIAdBCGogFTcCACAGQQhqIAFB9ABqKQIANwIAIAAgCikCADcD4AogBUEIaiASKQIANwIAIAUgCikCADcCACAAQdgCaiAAQeAKakHgAPwKAAAgAEHYAmogE0EAKAK0sxAoAgARAAAgECEBDAELIABBuANqIABByAFqIABBGGpB9LIQQfyyEBAfIAAvAaQEIhYNAiAQIQEgAC0AoARFDQAgAEGoBGogAEG4A2pB6AD8CgAAIABBkAVqIABBuANqQegA/AoAACAAKAKoBCAAKAKsBCAEQQYgA0EAKAK0sxAoAggRAQAgECEBDAALC0EAIRYgAEHgCmpBCEEAKAK0sxAoAgQRAAACQEEALQCJsxBBAXENACAAIAApAxgiFzcChAYgAEKq1arVCjcC+AUgAEEANgKABgJAQQAoAuSyECIBQQAoAuiyEEYNACAAQZAGaiABEEwgAC0ApAdFDQAgAEGoB2ogAEGQBmpBPEEEIAAtAKAHQQFxG2pBwAD8CgAAQQAhAQNAIAFBwABGDQEgAEHoB2pBCGogAEGoB2ogAWoiEkEIaikCADcDACAAIBIpAgA3A+gHIABB+AdqIABB6AdqIABBqAdqIBJBEGogAUEwRhtBACoCwLIQIhRDAAAgQZRB8IwQIBRDAACgQJQQTSAAQfgFaiAAQfgHakECEEUaIAFBEGohAQwACwtBACESIABB+AhqQQAoAuiyEBBMAkACQCAALQCMCiIPDQBBqtWq1XohAQwBCyAAQZAKaiAAQfgIakE8QQQgAC0AiApBAXEbakHAAPwKAABBACEBAkADQCABQcAARg0BIABB0ApqQQhqIABBkApqIAFqIhJBCGopAgA3AwAgACASKQIANwPQCiAAQbAlaiAAQdAKaiAAQZAKaiASQRBqIAFBMEYbQQAqAsCyECIUQwAAIEGUQfSMECAUQwAAoECUEE0gAEH4BWogAEGwJWpBAhBFGiABQRBqIQEMAAsLQYCAgHhBf0EAKALkshAiEUEJRhshAkHkfiEBIABB4ApqIRIgAEHgJGpBCGohEANAAkACQCABRQ0AIBAgAUHojhBqKAIANgIAIAAgAUHgjhBqKQIAIhU3A+AkIABBgCVqIABBkApqIABB4CRqEE4gACAAKQOAJSIYNwPwJCAAIAApA4glNwP4JEGkjRBBqI0QIBWnIhMgEUYbIQ5BACoCwLIQIhlDAAAgQZQiGiEUIBNBCUcNASAAQZAlakEIakEAKALMsxA2AgAgAEEAKQLEsxA3A5AlIABBnCVqIABBkCVqQYHAAxBPIBlDAABAP5QgGEIgiKe+IBlDAADwQZQiFCAZQwAAoMCUkiIbQwAAAD+UIhyTkiEdIBinviAckyAZQ4/C9b2UkiEeAkACQCAALQCgJQ0AQwAAAAAhH0MAAAAAISBDAAAAACEhQwAAAAAhGUMAAAAAISJDAAAAACEcDAELIAAoApAlQXRqKAIAIAAoApwlQRxsaiITKgIYISIgEyoCFCEcIBMqAhAhISATKgIMIR8gEyoCCCEZIBMqAgQhIAsgHyAgkiEjQwAAgD8gGZMhH0MAAIA/ICEgGZKTISEgHiAcIBsgHJUiGZSSIRsgHSAiIBmUkiEcDAELIABB+AVqIABB4ApqQTQQRRpBAiESIBenQegAQQJBACAXQiCIpygCABECACIBIAI2AmQgASAhOAJgIAEgIDgCXCABIB04AlggASAeOAJUIAEgITgCUCABICM4AkwgASAdOAJIIAEgGzgCRCABIB84AkAgASAjOAI8IAEgHDgCOCABIBs4AjQgASACNgIwIAEgHzgCLCABICM4AiggASAcOAIkIAEgGzgCICABIB84AhwgASAgOAIYIAEgHDgCFCABIB44AhAgASAhOAIMIAEgIDgCCCABIB04AgQgASAeOAIADAILIBIgAEHwJGogAEH4JGogGiAUkiIZQaSNECAZQwAAAD+UEEIgEkGADWogAEHwJGogAEH4JGogFCAOIBRDAAAAP5QQQiASQYABaiESIAFBDGohAQwACwsCQCAAKAL8BSITRQ0AIAAoAvgFIBNBACgCtLMQKAIEEQAACyAPRQ0AIAEgEkEAQQAoArSzECgCDBEDAAtBAC0AibMQQQFxRQ0AEDciAUUNAEEALQCKsxAhDCAAIAApAxgiGDcCnAogAEEANgKYCiAAQqrVqtUKNwKQCiABKAIIIQIgASgCBCELQQAhEAJAA0AgECACRg0BIAsgEEEYbGoiAS0AFCEPIAEoAgQhEyABKAIAIREgACAYNwKECEEAIQEgAEEANgKACCAAQqrVqtUKNwL4B0EAKgLAshBDAACgQZQiGUMAAAA/lCEaIBEhEgNAAkACQAJAIBMgAUYNACAAIBIpAgAiFTcD0AogFae+IRQCQCABQQNxIg4OBAIAAAIACyAUQ/kCFVBeDQICQAJAIA5BAUcNACABQX9qIQ4MAQsgAUEBaiATcCEOCyAAQbAlaiARIA5BA3RqIABB0ApqQQAqAsCyEEMAAEBAlEHQjBBDAAAAABBCIABB+AdqIABBsCVqQQIQRRoMAQsCQCAPQQFxDQAgE0ECRg0AIBEgE0EDdGoiAUFwaioCACIUQ/kCFVBdRQ0AIAFBdGoqAgAhHCAAIAFBeGopAgAiFTcDgCUCQAJAIBRD+QIVUF5FDQAgAEK3h+mNBTcD+AVDt0O6USEUQwAAAAAhHAwBCyAAIBWnviIgIBSTICCSIhQ4AvgFIAAgFUIgiKe+IiAgHJMgIJIiHDgC/AULIABB+AhqIABBgCVqIABB+AVqQQAqAsCyEEMAAEBAlEHQjBBDAAAAABBCIABB+AdqIABB+AhqQQIQRRogAEHgCmogFCAakyAcIBqTIBkgGUHQjBAQSSAAQfgHaiAAQeAKakECEEUaCyAAQagHaiAAQfgHahBLIABBkApqIAAoAqgHIAAoAqwHEEUaIBBBAWohEAwDCyAAQZAGaiAUIBqTIBVCIIinviAakyAZIBlB0IwQEEkgAEH4B2ogAEGQBmpBAhBFGgsgEkEIaiESIAFBAWohAQwACwsLQQAhFgJAQQAtAISzEEUgDHJBAXENACAAQeAKakEAKgL8shBBACoCwLIQQwAAoEGUIhRDAAAAP5QiGZNBACoCgLMQIBmTIBQgFEHQjBAQSSAAQZAKaiAAQeAKakECEEUaCyAAQfgIaiAAQZAKahBLIAAoAvgIIAAoAvwIQQAoArSzECgCBBEAAAsgAEEIahApIABBsCZqJAAgFgusCAYMfwF+Bn8BfgJ/An0jAEHQEmsiACQAQQAoAsyyEEEAKALUshAiAUECdGpBqtWq1XogARshAiAAQdACaiEDIABBvAJqIQQgAEGoAmohBSAAQYACakEUaiEGIABBBGohB0EAKALQshAhCEEAIQkCQANAIAkgCEYNASAJQQFqIQogAiAJQZQBbGoiASgCRCELIAEpAjwhDCABKAIAIQ0CQCABLQCQAUEBcQ0AIAcgAUEEakE4/AoAACAAIAs2AkQgACAMNwI8IAAgDTYCACAAQcgAaiEBQWghCQJAA0AgCUUNASABQRBqIA02AgAgASAHIAlBxI0QaigCAEEEdGoiDikCADcCACABQQhqIA5BCGopAgA3AgAgCUEEaiEJIAFBFGohAQwACwsgAEHIAGpBBiALQQAoArSzECgCEBEDACAKIQkMAQsgCiEJIAEtAIABRQ0AIAEoAnwhDiABKAJIIQkgAEHwAWpBCGoiDyABQcwAaiIQQQhqKQIANwMAIABB4AFqQQhqIhEgAUHcAGoiEkEIaikCACITNwMAIABB0AFqQQhqIhQgEzcDACAAQcABakEIaiIVIAFB7ABqIgFBCGopAgA3AwAgACAQKQIANwPwASAAIBIpAgAiEzcD4AEgACATNwPQASAAIAEpAgA3A8ABIAAgDTYCkAIgACAJNgKMAiAAIAs2AogCIAAgDDcDgAIgBiAAKQPwATcCACAGQQhqIA8pAwA3AgAgACANNgKkAiAFQQhqIBEpAwA3AgAgBSAAKQPgATcCACAAIA02ArgCIARBCGogFCkDADcCACAEIAApA9ABNwIAIAAgDTYCzAIgA0EIaiAVKQMANwIAIAMgACkDwAE3AgAgACANNgL0AiAAIAk2AvACIAAgCzYC7AIgACAMNwLkAiAAIA02AuACIABBgAJqQQYgDkEAKAK0sxAoAhARAwAgCiEJDAALCyAAQfgCakEAKALoshAQTAJAIAAtAIwERQ0AIABBkARqIABB+AJqQTxBBCAALQCIBEEBcRtqQcAA/AoAACAAQYASakE8aiEHIABBqBJqIQ0gAEGUEmohCyAAQdAEaiEJQeR+IQEgAEHYEWohCgJAA0AgAUUNASAKIAFB6I4QaigCADYCACAAIAFB4I4QaikCADcD0BEgAEHwEWogAEGQBGogAEHQEWoQTiAAIAApA/ARNwPgESAAIAApA/gRNwPoESAAQYASaiAAQeARaiAAQegRakEAKgLAshAiFkMAACBBlCIXIBZDAADwQZQgFyAAKALQESIOQQlGGyIWkiAWQwAAAD+UEEMgCSAAQYASaiALIA0gDhBuIAlBwABqIABBgBJqIA0gByAOEG4gAUEMaiEBIAlBgAFqIQkMAAsLIABB0ARqQRpBACgCtLMQKAIUEQAACyAAQdASaiQAC8gBAQN/IwBBIGsiAyQAQQAoAqizECEEQQBBADYCqLMQIAFBAWohARBQAkACQANAIAFBf2oiAUUNASAAQcQAaigCACAAIABBwABqKAIAEAwhBSAAQcgAaiEAIAVB//8DcUUNAAwCCwtBACgC6LIQIQAgA0EQakEAKQLUshA3AwAgA0EAKQLMshA3AwggA0EYaiADQQhqIAAQLwJAIAMtABwNAEEAEDkiBUH//wNxDQELQQAgBDYCqLMQIAIQMSEFCyADQSBqJAAgBQtQABBQQeCaEEEAKAKMsxBBACgCrLMQEDZBAEGq1arVejYCjLMQQQBBADYCrLMQQcSzEBBvQQBCADcCyLMQQQBB6Ac2ApCzEEEAQQA2AuiyEAuQCwUDfwZ9An8Bfg5/IwBB8ABrIgIkAEEAQgA3AsSzEEEAQQApA+CaEDcC0LMQQQBBADYCzLMQQQAhAwNAAkACQAJAAkACQCADIAFPDQAgACADQQJ0aiIEQRhqKgIAIQUgBEEUaioCACEGIARBEGoqAgAhByAEQQxqKgIAIQggBEEIaioCACEJIARBBGoqAgAhCiAEKgIA/AEhC0EAKALEsxAhDEEAKALMsxANAgJAAkAgDA0AQQEhBAwBCyAMQXxqKAIArULQAH4iDSANQuQAgn1C5AB8QtAAgKchBAsgAkEANgIcIAJBACkC0LMQNwNoIAJB2ABqIAJB6ABqQgFBICAEZ2utQv//A4OGpyIEQQggBEEISxsiBEEPaiIOIARBAnRqIg8gBEEcbGpBfHEQLQJAIAIvAWANACACKAJYIhAgBDYCCCAQIBAgDkF8cWo2AgQgECAQIA9BfHFqNgIAIAIgEEEMaiIPNgIYIA9BACAE/AsAIAIgBK1C0AB+QuQAgKciETYCIEEAKALIsxBFDQJBACESQQAhEwJAQQAoAsSzECIURQ0AIBRBfGooAgAhEwsgFEF0aigCACEVIBRBeGooAgAhFkEAIRcDQCAXIBNGDQMgAkEoakEIaiIYIBUgF0EcbGoiBEEIaikCADcDACACQShqQRBqIhkgBEEQaikCADcDACACQShqQRhqIhogBEEYaigCADYCACACIAQpAgA3AygCQCAUIBdqLAAAQX9KDQAgFiAXQQJ0aigCACEbIAJB2ABqQQhqIAJBGGpBCGooAgA2AgAgAiACKQIYNwNYIAJB6ABqIAJB2ABqIBsQTyAQKAIIQX9qIgwgGxBwIg2ncSEEAkADQCAPIARqIg4sAABBf0oNASAEQQFqIAxxIQQMAAsLIA4gDUI5iKdBgAFyOgAAIBAoAgQgBEECdGogGzYCACAQKAIAIARBHGxqIgQgAikDKDcCACAEQQhqIBgpAwA3AgAgBEEQaiAZKQMANwIAIARBGGogGigCADYCACACIBFBf2oiETYCICACIBJBAWoiEjYCHCASQQAoAsizEEYNBAsgF0EBaiEXDAALCyACQQxqQcSzECALEE8gAkEBOgAUQQAoAsSzECIOQXRqKAIAIAIoAgwiD0EcbGohBEEBDQQgDkF4aigCACAPQQJ0aiEPDAMLIAJB8ABqJAAPC0EAQQA2AsizEEEAKQLEsxAhDUEAIAIpAxg3AsSzEEEAKALMsxAhBEEAIAJBGGpBCGoiDigCADYCzLMQIA4gBDYCACACIA03AxggAkEYahBvQQAoAsSzECEMCyALEHAhDQJAAkAgDA0AIA2nIQRBACEXQX8hGwwBCyAMQXxqKAIAIhdBf2oiGyANp3EhBAsgDEF4aiEaIAxBfGohGSANQjmIpyEYIBchDgJAAkADQCAMIARqIhAsAAAiD0UNASAORQ0BAkACQCAPQX9KDQAgGCAPQf8AcUcNACAaKAIAIARBAnRqIg8oAgAgC0cNASACQQE6ACggDEF0aigCACAEQRxsaiEEIAJBKGohDgwECyAXIBkoAgBHDQAgBCAXIA9BAUYbIRcLIA5Bf2ohDiAEQQFqIBtxIQQMAAsLIBkoAgAhDkEAQQAoAsyzEEF/ajYCzLMQIAwgF2ogECAXIA5JIg4bIBhBgAFyOgAAQQAoAsSzECIPQXhqKAIAIQwgD0F0aigCACEPQQBBACgCyLMQQQFqNgLIsxAgAkEAOgAoIA8gFyAEIA4bIg5BHGxqIQQgDCAOQQJ0aiEPIAJBKGohDgsgDi0AAEEBcQ0BCyAPIAs2AgALIAQgBTgCGCAEIAY4AhQgBCAHOAIQIAQgCDgCDCAEIAk4AgggBCAKOAIEIAQgCzYCACADQQdqIQMMAAsLIAEBfwJAEBMiAUH//wNxDQBBACAAQQFxOgCJsxALIAELCwBBAEEANgLoshALgAUFAn8BfgZ/A34BfyMAQbACayIDJABBAEEAKAKQsxAiBEEBajYCkLMQIANBACkD4JoQIgU3AqgBIANBADYCpAEgA0Kq1arVCjcCnAEgA0HoAWpBGGohBkEAIQcCQAJAA0AgByABRg0BIAAgB0EDdGoiCCgCBCEJIAgoAgAhCiADIAU3AuABQQAhCyADQQA2AtwBIANCqtWq1Qo3AtQBIAohCANAAkACQCAJRQ0AIAYgCEEYaikCACIMNwMAIANB6AFqQRBqIAhBEGopAgAiDTcDACADQegBakEIaiAIQQhqKQIAIg43AwAgA0GIAmpBCGogDjcDACADQYgCakEQaiANNwMAIANBiAJqQRhqIAw3AwAgAyAIKQIAIgw3A+gBIAMgDDcDiAIgA0HUAWogA0GIAmpBBBAlIg9B//8DcQ0FIAlBAUcNASAKIAYQKEMAACBBXUUNAUEBIQsMAQsgA0GwAWpBCGogA0HUAWpBCGopAgA3AwAgA0GwAWpBEGogA0HUAWpBEGooAgA2AgAgA0EAOwHIASADIAMpAtQBNwOwASADIAtBAXEiCDoArAIgAyAIOgDEASAHQQFqIQcgA0GcAWogA0GwAWoQQCIPQf//A3FFDQIMBAsgCEEgaiEIIAlBf2ohCQwACwsLIANBFGogA0GkAWopAgA3AgAgA0EcaiADQawBaigCADYCACADQQE6ANABIAMgAykCnAE3AgwgA0EgaiACQST8CgAAIANBxABqQQBB0AD8CwAgA0EBOgCYASADIAQ2AgggAyADLQDQAToAlAEgBCADQQhqECoiD0H//wNxDQBBACAENgLoshBBACEPCyADQbACaiQAIA8LQAECfwJAIAAgACgCBEEBahAdIgJB//8DcQ0AIAAgACgCBCIDQQFqNgIEIAAoAgAgA0EDdGogASkCADcCAAsgAgveAQEGfyMAQSBrIgIkAEEAIQMCQCAAKAIIIgQgAU8NACAEIQMDQEF/IANBAXYgA2pBCGoiBSAFIANJGyIDIAFJDQALIAJBCGogAEEMaiIFIAAoAgAiBiAEIAMQIgJAAkAgAigCCCIBRQ0AIAIoAgwhAyAAIAE2AgAMAQsgAkEUaiAFIAMQIyACLwEcIgMNASACKAIYIQMgAigCFCEBAkAgACgCBCIHRQ0AIAEgACgCACAHQQN0/AoAAAsgBSAGIAQQJCAAIAE2AgALIAAgAzYCCEEAIQMLIAJBIGokACADCwwAIAAgASkCADcCAAv0DQMMfwF+Dn0jAEGQAWsiBSQAIAVBADYCKCAFQqrVqtUKNwIgIAUgAikCADcCLCABKAIIIQYgASgCBCEHQQAhCAJAAkADQAJAAkACQAJAAkAgCCAGRg0AIAcgCEEYbGoiCSgCBCEKAkACQCADLQAEDQBBiIAQIQsMAQsgBEGIgBAgAygCACAIRhshCwsgCS0AFCEMIAkoAgAhDQJAIApBAksiDg0AIAstAAhFDQULIAVBADYCPCAFQqrVqtUKNwI0IAUgAikCADcCQEF/IQ8gDSEJAkADQCAKIA9BAWoiD0YNASAFQTRqIAkQHCEQIAlBCGohCSAQQf//A3FFDQAMCAsLIAxBAXENAyALLQAIRQ0CIAUgCykCADcDSCAORQ0BIAUgDSAKQQN0aiIJQXhqKQIAIhE3AlAgCUFwaioCACESIAlBdGoqAgAhEyAFQTRqIAVB0ABqEBwiEEH//wNxDQYCQAJAIBJD+QIVUF5FDQAgBUK3h+mNBTcDWAwBCyAFIBFCIIinviIUIBOTIBSSOAJcIAUgEae+IhMgEpMgE5I4AlgLIAVBNGogBUHYAGoQHCIQQf//A3ENBgwBCwJAAkAgBSgCJCIMRQ0AIAxBAnYhDSABKgI4IRVDAACAfyEWQwAAgP8hF0EAIQ8gBSgCICEIQwAAgP8hGEMAAIB/IRkDQCAPIA1GDQIgCCAPQQV0aiIJKgIEIRogCUEcaioCACEbIAVBEGogCUEYaioCACIcIAlBEGoiCioCACIdQwAAQECUkyAJQQhqIgsqAgAiHkMAAEBAlJIgCSoCACIfk0MAAEBAlCAfIB0gHiAekpOSQwAAwECUIB4gH5NDAABAQJQgBUH8AGoQICAfIBwQtQMhEyAfIBwQvgMhFCAFKAIQIRAgBSgCFCEJA0ACQAJAIAlFDQAgECoCACISQwAAAABeRQ0BIBJDAACAP11FDQEgEyASIB8gHiAdIBwQISISELUDIRMgFCASEL4DIRQMAQsgBUEIaiAbIAoqAgQiHUMAAEBAlJMgCyoCBCIcQwAAQECUkiAak0MAAEBAlCAaIB0gHCAckpOSQwAAwECUIBwgGpNDAABAQJQgBUE0ahAgIBogGxC1AyEfIBogGxC+AyEeIAUoAgghECAFKAIMIQkDQAJAAkAgCUUNACAQKgIAIhJDAAAAAF5FDQEgEkMAAIA/XUUNASAfIBIgGiAcIB0gGxAhIhIQtQMhHyAeIBIQvgMhHgwBCyAPQQFqIQ8gFyAfELUDIRcgGCATELUDIRggFiAeEL4DIRYgGSAUEL4DIRkMBAsgCUF/aiEJIBBBBGohEAwACwsgCUF/aiEJIBBBBGohEAwACwsLIABBAEHwAPwLAAwHCyAAQgA3AjwgACAVOAI4IAAgDDYCBCAAIAg2AgAgAEEAOwFsIABBxABqQQA2AgAgACAWIBVDAAAAP5QiEpMiEzgCNCAAIBkgEpMiFDgCMCAAIBIgF5IiHzgCLCAAIBQ4AiggACAfOAIkIAAgEiAYkiISOAIgIAAgHzgCHCAAIBI4AhggACATOAIUIAAgEjgCECAAIBM4AgwgACAUOAIIIABBAToAaCAAQdAAaiABQSBqKQIANwIAIAAgASkCGDcCSCAAIAEpAig3AlggAEHgAGogAUEwaikCADcCAAwGCyAFQTRqQciMEBAcIhBB//8DcQ0EIAVBNGogBUHIAGoQHCIQQf//A3ENBAsgBSAFKAI0IgkpAgA3AmggBSAJIAUoAjhBA3RqQXhqKQIANwJgIAVBNGogBUHgAGoQHCIQQf//A3ENAyAFQTRqQciMEBAcIhBB//8DcQ0DIAVBNGpByIwQEBwiEEH//wNxDQMgBUE0aiAFQegAahAcIhBB//8DcQ0DCyAFIAUpAkAiETcDcCAFQRhqIAVB8ABqIAUoAjQiCSAFKAI8IgogBSgCOCIQECICQAJAIAUoAhgiDUUNACAFKAIcIQ8MAQsgBUH8AGogBUHwAGogEBAjIAUvAYQBIhANAyAFKAJ8IQ0CQCAFKAKAASIPRQ0AIA0gCSAPQQN0/AoAAAsgBSARNwOIASAFQYgBaiAJIAoQJCANRQ0BCwJAIA9BBEkNACANQQhqIRBBACEJA0AgDyAJRg0BAkAgEEF4aiIKKgIAQ/kCFVBeRQ0AAkACQAJAIAlBA3FBf2oOAgEAAwsgECELIBBBcGoqAgBD+QIVUF4NAgwBCyAQKgIAQ/kCFVBeDQEgDSAJQQN0akF4aiELCyAKIAspAgA3AgALIBBBCGohECAJQQFqIQkMAAsLIAVBIGogDSAPECUiCUH//wNxRQ0AIAAgCTsBbAwDCyAIQQFqIQgMAAsLIAAgEDsBbAsgBUGQAWokAAuyAQEBfwJAAkACQAJAIAGLQ//m2y5dRQ0AIAKLQ//m2y5dDQEgBCADjCAClTgCAEEBIQUMAwsgAiAClCABQwAAgMCUIAOUkiIDQwAAAABdRQ0BC0EAIQUMAQsCQCADi0P/5tsuXUUNACAEIAKMIAEgAZKVOAIAQQEhBQwBCyAEIAKMIAORIgOTIAEgAZIiAZU4AgQgBCADIAKTIAGVOAIAQQIhBQsgACAFNgIEIAAgBDYCAAtFAQJ9IAAgAJQiBSAAlCAElEMAAIA/IACTIgQgBCAElCIGlCABlCAGIAJDAABAQJQgAJSUkiAEIAUgA0MAAEBAlJSUkpILwgECAX8BfiMAQRBrIgUkACAFIAEpAgAiBjcDAAJAAkAgBA0AIAUgAiADECRBACEBDAELAkAgA0UNACAFIARB/////wFLOgAMIARBgICAgAJPDQBBACEBAkAgBqcgAiADQQN0QQIgBEEDdCIDQQAgBkIgiKcoAggRBAAiAg0AQQAhAgwCCyACQarVqtV6IAMbIQIgBEH/////AXFBACADGyEBDAELQQAhAkEAIQELIAAgAjYCACAAIAE2AgQgBUEQaiQAC4UBAQF/IwBBMGsiAyQAIAMgASkCADcDCCADQRBqIANBCGogAhBrAkACQCADLwEUIgFFDQAgAyABOwEgIANBGGohAgwBCyADQQA7ASwgAyACNgIoIAMgAygCEDYCJCADQSRqIQILIAAgAikCADcCACAAQQhqIAJBCGooAgA2AgAgA0EwaiQACzgCAX8BfgJAIAJBA3QiA0UNACAAKQIAIgSnIAFBqtWq1XogAhsgA0ECQQAgBEIgiKcoAgwRAQALC4MBAQR/IwBBEGsiAyQAIAMgACgCBCIEIAJqIgUgBEkiBjoADCADIAY6AAsCQAJAIAUgBE8NAEEIIQQMAQsgACAFEB0iBEH//wNxDQAgACAAKAIEIgUgAmo2AgRBACEEIAJFDQAgACgCACAFQQN0aiABIAJBA3T8CgAACyADQRBqJAAgBAukAwICfwV9IwBB0AJrIgMkAEEAIQQCQAJAIAAtAIwBDQAgAkEBcUUNAQsgAyAAIAFBgIAQQYiAEBAfIAMvAWwiBA0AQQAhBCADLQBoRQ0AIANB8ABqIANB6AD8CgAAIABCADcCdCAAQoCAgPwDNwJkIABCgICA/IOAgMA/NwJUIABCgICAgICAgMA/NwJEIAAgAyoCfCIFOAJwIAAgAyoCeCIGOAJsIAAgBTgCYCAAIAMqAogBIgc4AlwgACADKgKMASIIOAJQIAAgBzgCTCAAIAg4AkAgACAGOAI8AkAgACoChAEiCUMAAAA0XUUNACAAECcaIAAqAoQBIQkLIAMgCDgC5AEgAyAHOALgASADIAU4AtwBIAMgBjgC2AEgACoCiAEhBSADQegBaiADQegA/AoAAEEAIQQgAEH8AGogA0HYAWogCSAFQQAoArizEBEFACECIAMoAnAgAygCdCADQfABakEGIANBqAFqQQAoArSzECgCCBEBAEEAKAK8sxARBgAgAEEAOgCMASAAQQE6AIABIAAgAjYCfAsgA0HQAmokACAEC6oBAgF/Bn0gAEE8aiIBIABBzABqECghAiABIABB7ABqECghAyAAKgKEASIEIAJBACoCwLIQIgWVELUDEL8DIQZBACoCwLMQIQIgBo0QvAMgAhC+AyEHIAAqAogBIQYCQCAEIAdDAAAAtJJeQQFzIAYgBiADIAWVELUDEL8DjRC8AyACEL4DIgJDAAAAtJJeQQFzciIBRQ0AIAAgAjgCiAEgACAHOAKEAQsgAQsaACAAKgIAIAEqAgCTIAAqAgQgASoCBJMQPwtGAQN/IAAoAgghASAAKAIEIQIgACgCACEDAkADQCABRQ0BIAEoAgAhACADIAEgASgCBEECQQAgAigCDBEBACAAIQEMAAsLC5gUAg9/AX4jAEEwayICJABBACgC0LIQIgNBAWohBAJAAkACQAJAAkACQAJAAkACQCADQRBJDQBBACgC2LIQIgVFDQEgBS0AAEECdEG4kBBqKAIAIANNDQELIAQQKyIEQf//A3ENAUEAKALYshAiBg0DQQAoAsyyECIHQQAoAtSyECIEQQJ0aiEIQQAoAtCyECEJAkAgBEUNACAHQarVqtV6IAQbIQUgCSEDIAghBANAIANFDQECQCAFKAIAIABHDQAgAkEBOgAkIAJBJGohAwwHCyADQX9qIQMgBUEEaiEFIARBlAFqIQQMAAsLQQAgCUEBajYC0LIQIAJBADoAKCAIIAlBlAFsaiEEIAcgCUECdGohBSACQShqIQMMBAsgBBArIgRB//8DcQ0AQQghBCADQf7///8ASw0AIAJBACkC3LIQNwMQIAJBGGogAkEQaiADZ0F/c0EfcUEBaiIEQQJ0QbiQEGooAgAgA00gBGoiAxAsIAN0QQRqEC0gAi8BICIEDQAgAigCGCEGAkAgAigCHEF8aiIERQ0AIAZBBGpB/wEgBPwLAAsgBiADOgAAQQAoAtiyECIERQ0BIAQQLiAGLQAAIQMMAQsgAkEEakHMshAgABAvIAItAAhFDQUgAkEBOgAMQQAoAsyyECIFQQAoAtSyECIDQQJ0akGq1arVeiADGyACKAIEIglBlAFsaiEEQQENBCAFQarVqtV6IAMbIAlBAnRqIQUMAwsgBkEEaiEEQQAoAtCyECEKQQAoAsyyECELQQAoAtSyECEFAkACQAJAAkBBAEEBQQIgA0H/AXEiA0ERSRsgA0EJSRsOAwACAQALIAVFDQJBACEMA0AgDCAKRg0DIAsgDEECdGooAgAQMCEFQX8gBigCAHRBf3MhDUEAIQkgDCEOA0ACQCAEIAUgDXFBAXRqIgMtAAAiCEH/AUcNACADIA46AAAgAyAJOgABIAxBAWohDAwCCwJAAkAgAy0AASIHQf8BcSAJQf8BcUkNACAJIQcMAQsgAyAOOgAAIAMgCToAASAIIQ4LIAdBAWohCSAFQQFqIQUMAAsLCyAFRQ0BQQAhDANAIAwgCkYNAiALIAxBAnRqKAIAEDAhBUF/IAYoAgB0QX9zIQ1BACEJIAwhDgNAAkAgBCAFIA1xQQN0aiIDKAIAIghBf0cNACADIA42AgAgAyAJNgIEIAxBAWohDAwCCwJAAkAgAygCBCIHIAlJDQAgCSEHDAELIAMgDjYCACADIAk2AgQgCCEOCyAHQQFqIQkgBUEBaiEFDAALCwsgBUUNAEEAIQwDQCAMIApGDQEgCyAMQQJ0aigCABAwIQVBfyAGKAIAdEF/cyENQQAhCSAMIQ4DQAJAIAQgBSANcUECdGoiAy8BACIIQf//A0cNACADIA47AQAgAyAJOwECIAxBAWohDAwCCwJAAkAgAy8BAiIHQf//A3EgCUH//wNxSQ0AIAkhBwwBCyADIA47AQAgAyAJOwECIAghDgsgB0EBaiEJIAVBAWohBQwACwsLQQAgBjYC2LIQC0EAIQkgBkEEaiEDIAAQMCEEAkACQAJAQQBBAUECIAYtAAAiBUERSRsgBUEJSRsOAwACAQALQQAhCUEAKALMshAiCkGq1arVekEAKALUshAiBRshDCAKIAVBAnRqIg9BqtWq1XogBRshEEF/IAYoAgB0QX9zIQ5BACgC0LIQIQsDQAJAIAMgBCAOcUEBdGoiDS8AACIHQf8BcSIIQf8BRw0AQQAgC0EBajYC0LIQIA0gCzoAACANIAk6AAEgAkEAOgAsIA8gC0GUAWxqIQQgCiALQQJ0aiEFIAJBLGohAwwECwJAIAwgCEECdGoiBSgCACAARw0AIAJBAToALCAQIAhBlAFsaiEEIAJBLGohAwwECwJAIAlB/wFxIAdBCHYiBU0NAEEAIAtBAWo2AtCyECANIAk6AAEgDSALOgAAQX8gBigCAHRBf3MhBgNAIAVBAWohCQJAIAMgBEEBaiIEIAZxQQF0aiIOLwAAIghB/wFxQf8BRw0AIA4gCToAASAOIAc6AAAgAkEAOgAsIBAgC0GUAWxqIQQgDCALQQJ0aiEFIAJBLGohAwwGCyAFQf8BcSENIAkhBSANIAhBCHYiCkkNACAOIAk6AAEgDiAHOgAAIAghByAKIQUMAAsLIAlBAWohCSAEQQFqIQQMAAsLQQAoAsyyECIKQarVqtV6QQAoAtSyECIFGyEMIAogBUECdGoiD0Gq1arVeiAFGyEQQX8gBigCAHRBf3MhDkEAKALQshAhCwNAAkAgAyAEIAlqIgggDnFBA3RqIg0pAgAiEaciB0F/Rw0AQQAgC0EBajYC0LIQIA0gCzYCACANIAk2AgQgAkEAOgAYIA8gC0GUAWxqIQQgCiALQQJ0aiEFIAJBGGohAwwDCwJAIAwgB0ECdGoiBSgCACAARw0AIAJBAToAGCAQIAdBlAFsaiEEIAJBGGohAwwDCwJAIAkgEUIgiKciBU0NAEEAIAtBAWo2AtCyECANIAk2AgQgDSALNgIAQX8gBigCAHRBf3MhDQNAQQAhBANAAkAgAyAIIARqQQFqIA1xQQN0aiIJKQIAIhGnIg5Bf0cNACAJIAc2AgAgCSAFIARqQQFqNgIEIAJBADoAGCAQIAtBlAFsaiEEIAwgC0ECdGohBSACQRhqIQMMBgsgBSAEQQFqIgRqIgZBf2ogEUIgiKciCkkNAAsgCSAHNgIAIAkgBjYCBCAIIARqIQggCiEFIA4hBwwACwsgCUEBaiEJDAALC0EAIQlBACgCzLIQIgpBqtWq1XpBACgC1LIQIgUbIQwgCiAFQQJ0aiIPQarVqtV6IAUbIRBBfyAGKAIAdEF/cyEOQQAoAtCyECELA0ACQCADIAQgDnFBAnRqIg0oAQAiB0H//wNxIghB//8DRw0AQQAgC0EBajYC0LIQIA0gCzsBACANIAk7AQIgAkEAOgAQIA8gC0GUAWxqIQQgCiALQQJ0aiEFIAJBEGohAwwCCwJAIAwgCEECdGoiBSgCACAARw0AIAJBAToAECAQIAhBlAFsaiEEIAJBEGohAwwCCwJAIAlB//8DcSAHQRB2IgVNDQBBACALQQFqNgLQshAgDSAJOwECIA0gCzsBAEF/IAYoAgB0QX9zIQYDQCAFQQFqIQkCQCADIARBAWoiBCAGcUECdGoiDigBACIIQf//A3FB//8DRw0AIA4gCTsBAiAOIAc7AQAgAkEAOgAQIBAgC0GUAWxqIQQgDCALQQJ0aiEFIAJBEGohAwwECyAFQf//A3EhDSAJIQUgDSAIQRB2IgpJDQAgDiAJOwECIA4gBzsBACAIIQcgCiEFDAALCyAJQQFqIQkgBEEBaiEEDAALCyADLQAAQQFxDQELIAUgADYCAAsgBCABQZQB/AoAAEEAIQQLIAJBMGokACAEC7ACAwN/AX4DfyMAQSBrIgEkAEEAIQICQEEAKALUshAiAyAATw0AA0BBfyADQQF2IANqQQFqIgIgAiADSRsiAyAASQ0ACyABQQApAtyyECIENwMAIAFBDGogASADQZgBbBAtIAEvARQiAg0AIAEoAgwhAAJAAkBBACgC0LIQIgUNACABIAQ3AxggAUEYakEAKALMshBBACgC1LIQQZgBbBBRDAELIABBACgCzLIQIgZBqtWq1XpBACgC1LIQIgcbIAVBAnT8CgAAIAAgA0ECdGogBiAHQQJ0akGq1arVeiAHGyAFQZQBbPwKAAAgASAENwMYIAFBGGpBACgCzLIQQQAoAtSyEEGYAWwQUUEAIAU2AtCyEAtBACADNgLUshBBACAANgLMshALIAFBIGokACACCyUAQQJBA0EAIABB/wFxIgBBEUkbIABBCUkbQQJ0QZibEGooAgALnAECAX8BfiMAQTBrIgMkACADIAEpAgA3AxgCQAJAAkACQEEBDQBBCCEBDAELIANBIGogA0EYaiACEEEgAykDICIEQiCIpyIBQf//A3FFDQELIAMgATsBCCADIQEMAQsgAyACNgIQIAMgBD4CDCADQQA7ARQgA0EMaiEBCyAAIAEpAgA3AgAgAEEIaiABQQhqKAIANgIAIANBMGokAAs4AQJ/IwBBEGsiASQAIAFBACkC3LIQNwMIIAFBCGogACAALQAAIgIQLCACdEEEahBRIAFBEGokAAv6AwIHfwJ+IwBBIGsiAyQAIAEoAgQhBCABKAIAIQUgASgCCCEGAkACQAJAAkACQAJAIAEoAgwiAUUNACABQQRqIQdBASABLQAAIgh0IQlBAEEBQQIgCEERSRsgCEEJSRsOAwECAwELIAZFDQNBACEBA0AgBCABRg0EAkAgBSgCACACRw0AIABBAToABCAAIAE2AgAMBgsgBUEEaiEFIAFBAWohAQwACwsgAyABNgIUIAMgBjYCECADIAQ2AgwgAyAFNgIIIANBGGogA0EIaiACIAEgByAJEDsCQAJAIAMtABwNAEIAIQpCACELDAELIAcgAygCGEEBdGoxAAAhCkKAgICAECELCyAAIAsgCoQ3AgAMAwsgAyABNgIUIAMgBjYCECADIAQ2AgwgAyAFNgIIIANBGGogA0EIaiACIAEgByAJEDwCQAJAIAMtABwNAEIAIQpCACELDAELIAcgAygCGEECdGozAQAhCkKAgICAECELCyAAIAsgCoQ3AgAMAgsgAyABNgIUIAMgBjYCECADIAQ2AgwgAyAFNgIIIANBGGogA0EIaiACIAEgByAJED0CQAJAIAMtABwNAEIAIQpCACELDAELIAcgAygCGEEDdGo1AgAhCkKAgICAECELCyAAIAsgCoQ3AgAMAQsgAEIANwIACyADQSBqJAALKgIBfwF+IwBBEGsiASQAIAEgADYCDCABQQxqELQBIQIgAUEQaiQAIAKnC70HAQ1/IwBB0AFrIgEkAEEAIQICQEEAKAKosxAiA0UNAEEAIQIgAUEANgIkIAFCqtWq1Qo3AhwgAUEAKQPgmhA3AihBACgCzLIQQQAoAtSyECIEQQJ0akGq1arVeiAEGyEFQQAoAtCyECEGIAFBKGohBwNAAkACQAJAIAIgBkYNACACQZQBbCEEIAJBAWoiCCECIAUgBGoiBC0AkAFBAXENAyAEKAJEIQkgBCgCACEKIAFBMGogBEEEakHAAPwKAAAgASgCJCILIQICQCALIAEoAiAiDE0NACABKAIcIQQMAwsDQEF/IAJBAXYgAmpBAWoiBCAEIAJJGyICIAxNDQALIAFBEGogByABKAIcIg0gCyACEDICQCABKAIQIgRFDQAgASgCFCECDAILIAFBwAFqIAcgAhAzIAEvAcgBIgINBCABKALEASECIAEoAsABIQQCQCAMRQ0AIAQgDSAMQcgAbPwKAAALIAcgDSALEDQMAQtBACEKQQAoAoyzECEGIAEoAhwhCQJAIAEoAiAiBUEAKAKssxAiB0cNACAGIQsCQANAIAogBUYNASABQfAAaiAJIApByABsIgJqQcgA/AoAACAGIAJqIQ1BsH8hAgJAA0AgAkEQaiIIRQ0BIAFB8ABqIAJqIgxB0ABqKgIAIAsgAmoiBEHQAGoqAgBcDQQgDEHUAGoqAgAgBEHUAGoqAgBcDQQgDEHYAGoqAgAgBEHYAGoqAgBcDQQgCCECIAxB3ABqKgIAIARB3ABqKgIAXA0EDAALCyABKAKwASANKAJARw0CIAtByABqIQsgCkEBaiEKIAEoArQBIA0oAkRHDQIMAAsLIAFBHGoQNSABIAEpAig3A8ABIAFBwAFqIAEoAhwgASgCJBA0QQAhAgwEC0HgmhAgBiAHEDYgASABKQIoNwO4ASABQQhqIAFBuAFqIAkgASgCJCAFEDICQAJAIAEoAggiDEUNACABKAIMIQQMAQsgAUHAAWogAUG4AWogBRAzIAEvAcgBIgINBCABKALAASEMAkAgASgCxAEiBEUNACAMIAkgBEHIAGz8CgAACyABQRxqEDULQQAhAkEAIAw2AoyzEEEAIAQ2AqyzECAAQQFxRQ0DAkAgBEUNACAMIAQgAxEAAAwEC0EAIQJBqtWq1XpBACADEQAADAMLIAEgBDYCHCABIAI2AiQLIAEgDEEBajYCICAEIAxByABsaiICIAFBMGpBwAD8CgAAIAIgCjYCRCACIAk2AkAgCCECDAALCyABQdABaiQAIAILwwECAX8CfiMAQRBrIgUkACAFIAEpAgAiBjcDAAJAAkAgBA0AIAUgAiADEDRBACEBDAELAkAgA0UNAEEAIQEgBSAErULIAH4iB0IgiKciBEEARzoADCAEDQACQCAGpyACIANByABsQQIgB6ciBEEAIAZCIIinKAIIEQQAIgINAEEAIQIMAgsCQCAEDQBBACEBQarVqtV6IQIMAgsgBEHIAG4hAQwBC0EAIQJBACEBCyAAIAI2AgAgACABNgIEIAVBEGokAAu1AQIBfwF+IwBBMGsiAyQAIAMgASkCADcDGCADIAKtQsgAfiIEQiCIpyIBQQBHOgAsAkACQAJAAkAgAUUNAEEIIQEMAQsgA0EgaiADQRhqIASnEEEgAykDICIEQiCIpyIBQf//A3FFDQELIAMgATsBCCADIQIMAQsgAyACNgIQIAMgBD4CDCADQQA7ARQgA0EMaiECCyAAIAIpAgA3AgAgAEEIaiACQQhqKAIANgIAIANBMGokAAs5AgF/AX4CQCACQcgAbCIDRQ0AIAApAgAiBKcgAUGq1arVeiACGyADQQJBACAEQiCIpygCDBEBAAsLNgEBfyMAQRBrIgEkACABIAApAgw3AwggAUEIaiAAKAIAIAAoAggQNCAAQgA3AgQgAUEQaiQACzkCAX8BfgJAIAJByABsIgNFDQAgACkCACIEpyABQarVqtV6IAIbIANBAkEAIARCIIinKAIMEQEACwsoAQJ/QQAhAAJAQQAoAuiyEBA4IgFFDQAgAUEAIAEtAJABGyEACyAAC3MBAn8jAEEgayIBJABBACECIAFBEGpBACkC1LIQNwMAIAFBACkCzLIQNwMIIAFBGGogAUEIaiAAEC8CQCABLQAcRQ0AIAEoAgggASgCECICQQJ0akGq1arVeiACGyABKAIYQZQBbGohAgsgAUEgaiQAIAILKQEBfwJAEBMiAUH//wNxDQBBACAANgLoshAgAEEAKAKwsxARBwALIAELvQEBBn9BACgCzLIQIgFBqtWq1XpBACgC1LIQIgIbIABBAnRqIQMgASACQQJ0aiEEIAAhAQJAA0AgAUEAKALQshBBf2oiBU8NASADIANBBGoiBigCADYCACABQQFqIQEgBiEDDAALC0EAIAUgAGsiASABIAVLGyEBIARBqtWq1XogAhsgAEGUAWxqIQMCQANAIAFFDQEgAyADQZQBaiIGQZQB/AoAACABQX9qIQEgBiEDDAALC0EAIAU2AtCyEAudAQEFfyABKAIAQarVqtV6IAEoAggbIQYgAhAwIQFBfyADKAIAdEF/cyEHQQAhAwNAAkACQCAEIAEgB3EiCEEBdGoiCS0AACIKQf8BRg0AIAktAAFB/wFxIANB/wFxTw0BCyAAQgA3AgAPCwJAIAYgCkECdGooAgAgAkcNACAAQQE6AAQgACAINgIADwsgA0EBaiEDIAFBAWohAQwACwugAQEFfyABKAIAQarVqtV6IAEoAggbIQYgAhAwIQFBfyADKAIAdEF/cyEHQQAhAwNAAkACQCAEIAEgB3EiCEECdGoiCS8BACIKQf//A0YNACAJLwECQf//A3EgA0H//wNxTw0BCyAAQgA3AgAPCwJAIAYgCkECdGooAgAgAkcNACAAQQE6AAQgACAINgIADwsgA0EBaiEDIAFBAWohAQwACwuQAQEFfyABKAIAQarVqtV6IAEoAggbIQYgAhAwIQdBfyADKAIAdEF/cyEIQQAhAQNAAkACQCAEIAcgAWogCHEiCUEDdGoiAygCACIKQX9GDQAgAygCBCABTw0BCyAAQgA3AgAPCwJAIAYgCkECdGooAgAgAkcNACAAQQE6AAQgACAJNgIADwsgAUEBaiEBDAALCwkAIAAgARAAAAtTAgF9AnxDAACAfyECAkAgAItDAACAf1sNACABi0MAAIB/Ww0AQwAAwH8hAiAAIABcDQAgASABXA0AIAC7IgMgAyABuyIEIASiEL0Dn7YhAgsgAgv4AwIIfwF+IwBBIGsiAiQAAkACQAJAAkACQAJAIAAoAggiAyAAKAIEIgRLDQAgAyEFA0BBfyAFQQF2IAVqQQJqIgYgBiAFSRsiBSAETQ0ACyAAKAIAIQcgA0UNASAAKAIQIQggACgCDCEJQQAhBiACIAWtQhh+IgpCIIinIgRBAEc6ABAgBA0BIAkgByADQRhsQQIgCqciBEEAIAgoAggRBAAiCEUNAgJAIAQNAEEAIQRBqtWq1XohBgwECyAEQRhuIQQgCCEGDAMLIAAoAgAhBgwDC0EAIQYLQQAhBAsCQCAGRQ0AIAAgBjYCACAAIAQ2AggMAQsgAiAAKQIMNwMIIAIgBa1CGH4iCkIgiKciBkEARzoAHAJAIAZFDQBBCCEGDAILIAJBEGogAkEIaiAKpxBBIAIpAxAiCkIgiKciBkH//wNxDQEgCqchBgJAIAAoAgQiBEUNACAGIAAoAgAgBEEYbPwKAAALAkAgA0EYbCIERQ0AIAApAgwiCqcgB0Gq1arVeiADGyAEQQJBACAKQiCIpygCDBEBAAsgACAFNgIIIAAgBjYCAAsgACAAKAIEIgVBAWo2AgQgBiAFQRhsaiIFQRBqIAFBEGopAgA3AgAgBUEIaiABQQhqKQIANwIAIAUgASkCADcCAEEAIQYLIAJBIGokACAGC1MBAX4CQCACDQAgAEL8////DzcCAA8LAkAgASkCACIDpyACQQJBACADQiCIpygCABECACICDQAgAEKAgICAgAE3AgAPCyAAIAI2AgAgAEEAOwEEC0kBAX8jAEHQAGsiBiQAIAYgASACIAMgBRBDIAAgBiAGQRRqIAZBKGoiAiAEEEQgAEHAAGogBiACIAZBPGogBBBEIAZB0ABqJAALpAICAX8HfSMAQfAAayIFJAAgAioCBCABKgIEkyACKgIAIAEqAgCTEFQiBhDAAyEHIAIqAgQhCCAFIANDAAAAP5QiAyAGQ9sPyT+SIgkQwAOUIgogCCADIAeUIgeSIgiSOAIcIAYQtwMhCyACKgIAIQwgBSADIAkQtwOUIgYgDCADIAuUIgOSIgmSOAIYIAUgCCAKkzgCFCAFIAkgBpM4AhAgBSABKgIEIAeTIgcgCpM4AgwgBSABKgIAIAOTIgMgBpM4AgggBSAHIAqSOAIEIAUgAyAGkjgCACAFQSBqQQAgBSAEEEogBUE0akEBIAUgBBBKIAVByABqQQIgBSAEEEogBUHcAGpBAyAFIAQQSiAAIAVBIGpB0AD8CgAAIAVB8ABqJAALkAEDA34DfQJ+IAEpAgAhBSADKQIAIQYgAykCCCEHIAMqAhAhCCACKgIQIQkgASoCECEKIAQoAAAhAyACKQIIIQsgAikCACEMIAAgASkCCDcCCCAAIAw3AhAgACALNwIYIAAgAzYCMCAAIAo4AjQgACAJOAI4IAAgCDgCPCAAIAc3AiggACAGNwIgIAAgBTcCAAu4AgEHfyMAQSBrIgMkACADIAAoAgQiBCACaiIFIARJIgY6ABQgAyAGOgATAkACQCAFIARPDQBBCCEGDAELAkAgACgCCCIHIAVPDQAgByEEA0BBfyAEQQF2IARqQQFqIgYgBiAESRsiBCAFSQ0ACyADQQhqIABBDGoiBSAAKAIAIgggByAEEEYCQAJAIAMoAggiBkUNACADKAIMIQQgACAGNgIADAELIANBFGogBSAEEEcgAy8BHCIGDQIgAygCGCEEIAMoAhQhBgJAIAAoAgQiCUUNACAGIAAoAgAgCUEGdPwKAAALIAUgCCAHEEggACAGNgIACyAAIAQ2AgggACgCBCIEIAJqIQULIAAgBTYCBEEAIQYgAkUNACAAKAIAIARBBnRqIAEgAkEGdPwKAAALIANBIGokACAGC78BAgF/AX4jAEEQayIFJAAgBSABKQIAIgY3AwACQAJAIAQNACAFIAIgAxBIQQAhAQwBCwJAIANFDQAgBSAEQf///x9LOgAMIARBgICAIE8NAEEAIQECQCAGpyACIANBBnRBAiAEQQZ0IgNBACAGQiCIpygCCBEEACICDQBBACECDAILIAJBqtWq1XogAxshAiAEQf///x9xQQAgAxshAQwBC0EAIQJBACEBCyAAIAI2AgAgACABNgIEIAVBEGokAAuyAQIBfwF+IwBBMGsiAyQAIAMgASkCADcDGCADIAJB////H0s6ACwCQAJAAkACQCACQYCAgCBJDQBBCCEBDAELIANBIGogA0EYaiACQQZ0EEEgAykDICIEQiCIpyIBQf//A3FFDQELIAMgATsBCCADIQIMAQsgAyACNgIQIAMgBD4CDCADQQA7ARQgA0EMaiECCyAAIAIpAgA3AgAgAEEIaiACQQhqKAIANgIAIANBMGokAAs4AgF/AX4CQCACQQZ0IgNFDQAgACkCACIEpyABQarVqtV6IAIbIANBAkEAIARCIIinKAIMEQEACwvLAQEBfyMAQfAAayIGJAAgBiABOAIYIAYgAjgCDCAGIAI4AgQgBiABOAIAIAYgAiAEkiICOAIcIAYgAjgCFCAGIAEgA5IiATgCECAGIAE4AgggBkEgakEAIAZDAAAAABBKIAZBNGpBASAGQwAAAAAQSiAGQcgAakECIAZDAAAAABBKIAZB3ABqQQMgBkMAAAAAEEogACAGQSBqIAZBNGogBkHIAGogBRBEIABBwABqIAZBIGogBkHIAGogBkHcAGogBRBEIAZB8ABqJAAL6AECAn8GfSMAQRBrIgQkACAEIAIgAUEDdGoiBSoCBCIGOAIEIAQgBSoCACIHOAIAIAQgAiABQX9qIgVBAyAFQQNJG0EDdGopAgA3AwggBCACIAFBAWpBA3FBA3RqEGwiCBC3AyEJIAQgBEEIahBsIgoQtwMhCyAIIAgQwAMgChDAA5IgCSALkhBUIgmTIggQwAMgCBC3AxBUIQggACADOAIQIAAgBjgCBCAAIAc4AgAgCEPbD0lAkhDAAyEIIAAgBiAJEMADIAMgCJUiA5SSOAIMIAAgByAJELcDIAOUkjgCCCAEQRBqJAALiAIDAX8BfgJ/IwBBMGsiAiQAIAIgASkCDCIDNwMQIAJBCGogAkEQaiABKAIAIAEoAgggASgCBBBGAkACQCACKAIIIgRFDQAgAigCDCEFIAEgAzcCDCABQQA2AgggAUKq1arVCjcCACAAQQA7AQggACAENgIAIAAgBTYCBAwBCyACQRxqIAJBEGogASgCBBBHAkAgAi8BJCIERQ0AIAAgBDsBCAwBCyACKAIcIQQCQCACKAIgIgVFDQAgBCABKAIAIAVBBnT8CgAACyACIAEpAgw3AyggAkEoaiABKAIAIAEoAggQSCABQgA3AgQgACAFNgIEIAAgBDYCACAAQQA7AQgLIAJBMGokAAveAQECfyMAQbABayICJABBACEDIAJBoAFqQQApAtSyEDcDACACQQApAsyyEDcDmAEgAkGoAWogAkGYAWogARAvAkACQCACLQCsAUUNACACQQRqIAIoApgBIAIoAqABIgNBAnRqQarVqtV6IAMbIAIoAqgBQZQBbGpBlAH8CgAAQQEhAwwBCyACQQRqQQBBlAH8CwAgAkECakEAOgAAIAJBADsBAAsgACACQQRqQZQB/AoAACAAIAM6AJQBIAAgAi8BADsAlQEgAEGXAWogAkECai0AADoAACACQbABaiQAC8ACAwF/B30BfyMAQfAAayIGJAAgAioCBCABKgIEkyACKgIAIAEqAgCTEFQiBxDAAyEIIAIqAgQhCSAGIANDAAAAP5QiAyAHQ9sPyT+SIgoQwAOUIgsgCSADIAiUIgiSIgmSOAIcIAcQtwMhDCACKgIAIQ0gBiADIAoQtwOUIgcgDSADIAyUIgOSIgqSOAIYIAYgCSALkzgCFCAGIAogB5M4AhAgBiABKgIEIAiTIgggC5M4AgwgBiABKgIAIAOTIgMgB5M4AgggBiAIIAuSOAIEIAYgAyAHkjgCACAGQSBqQQAgBiAFEEogBkE0aiICQQEgBiAFEEogBkHIAGoiAUECIAYgBRBKIAZB3ABqIg5BAyAGIAUQSiAAIAZBIGogAiABIAQQRCAAQcAAaiAGQSBqIAEgDiAEEEQgBkHwAGokAAuVBAIDfwd9IwBBwABrIgMkACADIAFBwAD8CgAAAkACQCACKAIAIgRBBU8NACADIAIoAgRBBHRqIgQgASACKAIIQQR0aiIFECghBiAEIAUQbCEHQQAqAsCyEEMAAPBBlCAGQ83MzD2UEL4DIQggBxDAAyEJIAEgAigCBEEEdGoiASoCBCIGIAkgCJSSIQkgBxC3AyEKIAEqAgAiByAKIAiUkiEIDAELAkAgBEEISw0AIAEgAigCCEEEdGoiASoCACEHIAMgAigCBEEEdGoiAioCACEIIAEqAgQhCSACKgIEIQogAiABECghCyACIAEQbCEGIAogCZJDAAAAP5QiCkEAKgLAshBDAADwQZQgC0MpXI89lBC+AyILIAYQwAOUIgyTIQkgCCAHkkMAAAA/lCIHIAsgBhC3A5QiC5MhCCAKIAySIQYgByALkiEHDAELIAEqAiQiBiABKgI0kkMAAAA/lCIJIAEqAgQgBpJDAAAAP5STIAEqAiAiBiABKgIwkkMAAAA/lCIIIAEqAgAgBpJDAAAAP5STEFQiB0PbD0k/kiIKEMADIQYgBxDAAyELIAZDzczMPZQgCUEAKgLAshAiDCALQwAAcEKUlJIiBpIhCSAKELcDQ83MzD2UIAggDCAHELcDQwAAcEKUlJIiB5IhCAsgACAJOAIMIAAgCDgCCCAAIAY4AgQgACAHOAIAIANBwABqJAALxwECAX4GfwJAIAEoAgQNACAAQgA3AgAPCyACEHAhAwJAAkAgASgCACIEDQBBACEFQX8hBgwBCyAEQXxqKAIAIgVBf2ohBgsgBEF4aiEHIAYgA6dxIQEgA0I5iKchCANAAkACQCAEIAFqLAAAIglFDQAgBUUNACAJQX9KDQEgCCAJQf8AcUcNASAHKAIAIAFBAnRqKAIAIAJHDQEgAEEBOgAEIAAgATYCAA8LIABCADcCAA8LIAVBf2ohBSABQQFqIAZxIQEMAAsLZwECfyMAQRBrIgAkACAAQQApAtyyEDcDCCAAQQhqQQAoAsyyEEEAKALUshBBmAFsEFFBAEIANwLMshBBAEEANgLUshACQEEAKALYshAiAUUNACABEC5BAEEANgLYshALIABBEGokAAsoAQF+AkAgAkUNACAAKQIAIgOnIAEgAkECQQAgA0IgiKcoAgwRAQALCy4AIAAgASoCBCACKgIEkkMAAAA/lDgCBCAAIAEqAgAgAioCAJJDAAAAP5Q4AgALIgAgACABKgIEIAIqAgSTOAIEIAAgASoCACACKgIAkzgCAAvcAgIEfwF9AkACQCABIAFcDQAgACAAWw0BCyAAIAGSDwsCQCABvCICQYCAgPwDRw0AIAAQVQ8LIAJBHnZBAnEiAyAAvCIEQR92ciEFAkACQAJAAkACQAJAAkACQCAEQf////8HcSIEDQBD2w9JQCEGIAUOBAICBwECCyACQf////8HcSICRQ0CIAJBgICA/AdHDQMgBEGAgID8B0cNBCAFQQJ0QfiaEGoqAgAPC0PbD0nADwsgAA8LQ9sPyT8gAJgPCwJAAkAgBEGAgID8B0YNACACQYCAgOgAaiAETw0BC0PbD8k/IACYDwsCQCADRQ0AQwAAAAAhBiAEQYCAgOgAaiACSQ0CCyAAIAGVixBVIQYMAQsgBUECdEGImxBqKgIAIQYMAQsCQAJAAkAgBQ4EAwABAgMLIAaMDwtD2w9JQCAGQy69uzOSkw8LIAZDLr27M5JD2w9JwJIPCyAGC54DBAF/AX0CfwN9IwBBEGsiASQAAkACQCAAiyICvCIDQYCAgOQESQ0AIABD2g/JPyAAmCAAIABcGyEADAELAkACQAJAAkAgA0GAgID3A0kNACADQYCA4PwDTw0CIANBgIDA+QNPDQEgAiACkkMAAIC/kiACQwAAAECSlSECQQAhBAwDC0EAIQQgACECIANBgICAzANPDQIgA0H///8DSw0DIAEgACAAlDgCDCABQQxqIQMMAwsgAkMAAIC/kiACQwAAgD+SlSECQQEhBAwBCwJAIANBgIDwgARJDQBDAACAvyAClSECQQMhBAwBCyACQwAAwL+SIAJDAADAP5RDAACAP5KVIQJBAiEECyACIAKUIgUgBZQiBiAGQ0cS2r2UQ5jKTL6SlCEHIAUgBiAGQyWsfD2UQw31ET6SlEOpqqo+kpQhBgJAIANBgICA9wNJDQAgBEECdCIDQZiQEGoqAgAgAiAHIAaSlCADQaiQEGoqAgCTIAKTkyICjCACIAC8QQBIGyEADAELIAIgAiAHIAaSlJMhAAsgAUEQaiQAIAALBwBBASAAdAsFACAAaAsZAEECIABBH3EiACABQR9xIgFJIAAgAUYbCxAAQRIgAEECc0EDcUEBdHYLSAECfyMAQRBrIgIkAEHUjBAhAwJAIAFBA3EiAUECRg0AIAJBAToADyACIAE6AA4gAkEOaiEDCyAAIAMvAAA7AAAgAkEQaiQACyEAQeD9jPQDIABBAnNBA3FBA3R2Qf8BcSABQQRzQQdxdgsTAEGokqcBIABBBHNBB3FBA2x2C2kAAkACQAJAAkACQAJAIAFBB3EOBgABAgUEAwALIABBH3EgAkEfcUkPCyAAQR9xIAJBH3FNDwsgAEEfcSACQR9xRg8LIABBH3EgAkEfcUcPCyAAQR9xIAJBH3FLDwsgAEEfcSACQR9xTwsWACAAQR9xIgAgAUEfcSIBIAAgAUsbCxYAIABBH3EiACABQR9xIgEgACABSRsLEgBBfyAAdCIAQX9zIAFqIABxCwoAQX8gAHQgAXELCwAgAWggAEEfcU8LBABBAAsEAEEACwIAC+kBAQl/IwBBEGsiBCQAIAQgAkEfcToAD0EBIAJ0IgUgAWohBgJAAkAgACgCCCICDQBBACEHIABBACAGEGciAkUNAQtBACAFayEIIAVBf2ohCQNAIAJBCGohCgNAAkAgCSAAKAIMIgUgCmoiB2ogCHEgB2sgBWoiCyABaiIFIAIoAgQiB0F4aiIMSw0AIAAgBTYCDCAKIAtqIQcMAwsCQCAAKAIAIAIgB0ECIAVBCGoiBUEAIAAoAgQoAgQRBABBAXFFDQAgAiAFNgIEDAELCyAAIAwgBhBnIgINAAtBACEHCyAEQRBqJAAgBwtYAAJAIAAoAgAgASACakEYaiICQQF2IAJqIgFBAkEAIAAoAgQoAgARAgAiAkUNACACQQA2AgAgAiABNgIEIAIgACgCCDYCACAAQQA2AgwgACACNgIICyACC3QBA39BACEGAkAgACgCCCIHRQ0AAkAgByAAKAIMIghqQQhqIAEgAmpGDQAgBCACTSEGDAELAkAgBCACSw0AIAAgBCACayAIajYCDEEBDwsgBygCBEF4aiAIayAEIAJrIgJJDQAgACAIIAJqNgIMQQEPCyAGCxgAIAFBACAAIAEgAiABIAQgARBoQQFxGwswAQJ/AkAgACgCCCIFRQ0AIAUgACgCDCIGakEIaiABIAJqRw0AIAAgBiACazYCDAsLaQIBfwF+IwBBIGsiAyQAIAMgASkCADcDCCADIAJB/////wFLOgAcAkACQCACQYCAgIACSQ0AQoCAgICAASEEDAELIANBEGogA0EIaiACQQN0EEEgAykDECEECyAAIAQ3AgAgA0EgaiQACxoAIAEqAgQgACoCBJMgASoCACAAKgIAkxBUC0YBAn0gACABKgIUIAIqAgAiAyABKgIMlCACKgIEIgQgASoCEJSSkjgCBCAAIAEqAgggAyABKgIAlCAEIAEqAgSUkpI4AgALiQEDA34DfQJ+IAEpAgAhBSADKQIAIQYgAykCCCEHIAMqAhAhCCACKgIQIQkgASoCECEKIAIpAgghCyACKQIAIQwgACABKQIINwIIIAAgDDcCECAAIAs3AhggACAENgIwIAAgCjgCNCAAIAk4AjggACAIOAI8IAAgBzcCKCAAIAY3AiAgACAFNwIAC10BAn8jAEEQayIBJAAgAUEAKQLQsxA3AwgCQCAAKAIAIgJFDQAgAUEIaiACQXRqIAJBfGooAgAiAiACQQV0akEPakF8cRBRIABBADYCCCAAQQA2AgALIAFBEGokAAspAgF/AX4jAEEQayIBJAAgASAANgIMIAFBDGoQtAEhAiABQRBqJAAgAgsOACABKAIAIAARBwBBAAsTACABKAIAIAEoAgQgABEAAEEAC9sBAQF/IwBBEGsiBCQAAkACQCACDQBBQCECA0ACQCACDQBBxJgQIQIMAwsCQCACQZi1EGooAgANACACQZi1EGogAzYCACAEQQA7AQQgBCACQaSSEGooAgA2AgAgBCECDAMLIAJBBGohAgwACwtBQCECA0ACQCACDQBBzJgQIQIMAgsCQCACQaSSEGooAgAgA0cNACACQZi1EGoiAigCACEDIAJBADYCACAEQQA7AQwgBCADNgIIIARBCGohAgwCCyACQQRqIQIMAAsLIAAgAikCADcCACAEQRBqJAALDgAgASgCACAAEQcAQQALaQIBfwJ9IwBBIGsiAiQAIAJBEGogAUEUaikCADcDACACIAEpAgQ3AwAgAiABKQIMNwMIIAIgASoCHCIDOAIYIAIgASoCICIEOAIcIAEgAiACQQhqIAMgBCAAEQUANgIAIAJBIGokAEEAC9sBAQF/IwBBEGsiBCQAAkACQCACDQBBQCECA0ACQCACDQBBxJgQIQIMAwsCQCACQdi1EGooAgANACACQdi1EGogAzYCACAEQQA7AQQgBCACQeSSEGooAgA2AgAgBCECDAMLIAJBBGohAgwACwtBQCECA0ACQCACDQBBzJgQIQIMAgsCQCACQeSSEGooAgAgA0cNACACQdi1EGoiAigCACEDIAJBADYCACAEQQA7AQwgBCADNgIIIARBCGohAgwCCyACQQRqIQIMAAsLIAAgAikCADcCACAEQRBqJAALEwAgASgCACABKAIEIAARAABBAAtWAgF/A30jAEEgayICJAAgAiABKQIANwMIIAIgASoCCCIDOAIQIAIgASoCDCIEOAIUIAIgASoCECIFOAIYIAJBCGogAyAEIAUgABEIACACQSBqJABBAAsTACABIAEqAgAgABEJADsBBEEAC1YBBH8jAEHQAGsiAiQAIAIgASgCACIDNgIIIAJBCGpBBGoiBCABQQRqQcAA/AoAACACIAEoAkQiBTYCTCABIAMgBCAFIAARCgA7AUggAkHQAGokAEEACw4AIAEgABELADsBAEEACw4AIAEoAgAgABEHAEEAC9sBAQF/IwBBEGsiBCQAAkACQCACDQBBQCECA0ACQCACDQBBxJgQIQIMAwsCQCACQZi0EGooAgANACACQZi0EGogAzYCACAEQQA7AQQgBCACQaiPEGooAgA2AgAgBCECDAMLIAJBBGohAgwACwtBQCECA0ACQCACDQBBzJgQIQIMAgsCQCACQaiPEGooAgAgA0cNACACQZi0EGoiAigCACEDIAJBADYCACAEQQA7AQwgBCADNgIIIARBCGohAgwCCyACQQRqIQIMAAsLIAAgAikCADcCACAEQRBqJAALSgIBfwJ9IwBBEGsiAiQAIAIgASkCADcDACACIAEqAggiAzgCCCACIAEqAgwiBDgCDCABIAIgAyAEIAARDAA7ARAgAkEQaiQAQQALEwAgASoCACABKgIEIAARDQBBAAsJACAAEQYAQQAL2wEBAX8jAEEQayIEJAACQAJAIAINAEFAIQIDQAJAIAINAEHEmBAhAgwDCwJAIAJB2LQQaigCAA0AIAJB2LQQaiADNgIAIARBADsBBCAEIAJB6I8QaigCADYCACAEIQIMAwsgAkEEaiECDAALC0FAIQIDQAJAIAINAEHMmBAhAgwCCwJAIAJB6I8QaigCACADRw0AIAJB2LQQaiICKAIAIQMgAkEANgIAIARBADsBDCAEIAM2AgggBEEIaiECDAILIAJBBGohAgwACwsgACACKQIANwIAIARBEGokAAsdACABIAEoAgAgASgCBCABLQAKIAARCgA7AQhBAAsxAQJ/IwBBEGsiAiQAIAIgAS0AAkEBcSIDOgAPIAEgAyAAEQ4AOwEAIAJBEGokAEEAC1MBBH8jAEEwayICJAAgAiABKAIEIgM2AgggAiABKAIAIgQ2AgQgAkEEakEIaiIFIAFBCGpBJPwKAAAgASAEIAMgBSAAEQoAOwEsIAJBMGokAEEACzoBAX8jAEEQayIEJAAgBCACQR9xIgI6AAwgACgCACABIAIgAyAAKAIEKAIAEQIAIQAgBEEQaiQAIAALPgEBfyMAQRBrIgYkACAGIANBH3EiAzoADCAAKAIAIAEgAiADIAQgBSAAKAIEKAIEEQQAIQAgBkEQaiQAIAALPgEBfyMAQRBrIgYkACAGIANBH3EiAzoADCAAKAIAIAEgAiADIAQgBSAAKAIEKAIIEQQAIQAgBkEQaiQAIAALOAEBfyMAQRBrIgUkACAFIANBH3EiAzoADCAAKAIAIAEgAiADIAQgACgCBCgCDBEBACAFQRBqJAALDgAgAEEAKALYsxAQigELVgEBfyMAQRBrIgIkACACIAA2AgwCQAJAAkACQCABIAJBDGpBBBCzAQ4EAAMBAgALIAJBEGokAA8LQbCLEEEiED4AC0GVixBBGhA+AAtB+ooQQRoQPgALDgAgAEEAKALcsxAQigELDgAgAEEAKALgsxAQigELDgAgAEEAKALksxAQigELDgAgAEEAKALosxAQigELDgAgAEEAKALssxAQigELDgAgAEEAKALwsxAQigELDgAgAEEAKAL0sxAQigELDgAgAEEAKAL4sxAQigELDgAgAEEAKAL8sxAQigELDgAgAEEAKAKAtBAQigELDgAgAEEAKAKEtBAQigELDgAgAEEAKAKItBAQigELDgAgAEEAKAKMtBAQigELDgAgAEEAKAKQtBAQigELDgAgAEEAKAKUtBAQigELDABBACgCmLQQEJsBCz4AAkACQAJAAkAgAEGq1arVekEAELMBDgQAAwECAAsPC0GwixBBIhA+AAtBlYsQQRoQPgALQfqKEEEaED4ACwwAQQAoApy0EBCbAQsMAEEAKAKgtBAQmwELDABBACgCpLQQEJsBCwwAQQAoAqi0EBCbAQsMAEEAKAKstBAQmwELDABBACgCsLQQEJsBCwwAQQAoArS0EBCbAQsMAEEAKAK4tBAQmwELDABBACgCvLQQEJsBCwwAQQAoAsC0EBCbAQsMAEEAKALEtBAQmwELDABBACgCyLQQEJsBCwwAQQAoAsy0EBCbAQsMAEEAKALQtBAQmwELDABBACgC1LQQEJsBC0ABAn8jAEEQayICJAAgAiABLQAQQR9xIgM6AAwgASABKAIEIAEoAgggAyABKAIMIAARAgA2AgAgAkEQaiQAQQAL2wEBAX8jAEEQayIEJAACQAJAIAINAEFAIQIDQAJAIAINAEHEmBAhAgwDCwJAIAJB3LoQaigCAA0AIAJB3LoQaiADNgIAIARBADsBBCAEIAJBxJgQaigCADYCACAEIQIMAwsgAkEEaiECDAALC0FAIQIDQAJAIAINAEHMmBAhAgwCCwJAIAJBxJgQaigCACADRw0AIAJB3LoQaiICKAIAIQMgAkEANgIAIARBADsBDCAEIAM2AgggBEEIaiECDAILIAJBBGohAgwACwsgACACKQIANwIAIARBEGokAAtNAQJ/IwBBEGsiAiQAIAIgAS0AFUEfcSIDOgAMIAEgASgCACAB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IQIMAgsCQCACQcSWEGooAgAgA0cNACACQdy4EGoiAigCACEDIAJBADYCACAEQQA7AQwgBCADNgIIIARBCGohAgwCCyACQQRqIQIMAAsLIAAgAikCADcCACAEQRBqJAALGAAgASgCACABKAIEIAEoAgggABEDAEEAC9sBAQF/IwBBEGsiBCQAAkACQCACDQBBQCECA0ACQCACDQBBxJgQIQIMAwsCQCACQZy5EGooAgANACACQZy5EGogAzYCACAEQQA7AQQgBCACQYSXEGooAgA2AgAgBCECDAMLIAJBBGohAgwACwtBQCECA0ACQCACDQBBzJgQIQIMAgsCQCACQYSXEGooAgAgA0cNACACQZy5EGoiAigCACEDIAJBADYCACAEQQA7AQwgBCADNgIIIARBCGohAgwCCyACQQRqIQIMAAsLIAAgAikCADcCACAEQRBqJAAL2wEBAX8jAEEQayIEJAACQAJAIAINAEFAIQIDQAJAIAINAEHEmBAhAgwDCwJAIAJB3LkQaigCAA0AIAJB3LkQaiADNgIAIARBADsBBCAEIAJBxJcQaigCADYCACAEIQIMAwsgAkEEaiECDAALC0FAIQIDQAJAIAINAEHMmBAhAgwCCwJAIAJBxJcQaigCACADRw0AIAJB3LkQaiICKAIAIQMgAkEANgIAIARBADsBDCAEIAM2AgggBEEIaiECDAILIAJBBGohAgwACwsgACACKQIANwIAIARBEGokAAvbAQEBfyMAQRBrIgQkAAJAAkAgAg0AQUAhAgNAAkAgAg0AQcSYECECDAMLAkAgAkGcuhBqKAIADQAgAkGcuhBqIAM2AgAgBEEAOwEEIAQgAkGEmBBqKAIANgIAIAQhAgwDCyACQQRqIQIMAAsLQUAhAgNAAkAgAg0AQcyYECECDAILAkAgAkGEmBBqKAIAIANHDQAgAkGcuhBqIgIoAgAhAyACQQA2AgAgBEEAOwEMIAQgAzYCCCAEQQhqIQIMAgsgAkEEaiECDAALCyAAIAIpAgA3AgAgBEEQaiQAC1wBBH8jAEEgayICJAAgAiABKQIENwMIIAIgASgCDCIDNgIQIAIgASgCECIENgIYIAIgAS0AFEEfcSIFOgAUIAEgAkEIaiADIAUgBCAAEQIANgIAIAJBIGokAEEAC3gBBn8jAEEgayICJAAgAiABKQIANwMAIAIgASgCDCIDNgIMIAIgASgCCCIENgIIIAIgASgCECIFNgIUIAIgASgCFCIGNgIYIAIgAS0AGUEfcSIHOgAQIAEgAiAEIAMgByAFIAYgABEEAEEBcToAGCACQSBqJABBAAt1AQZ/IwBBIGsiAiQAIAIgASkCBDcDACACIAEoAhAiAzYCDCACIAEoAgwiBDYCCCACIAEoAhQiBTYCFCACIAEoAhgiBjYCGCACIAEtABxBH3EiBzoAECABIAIgBCADIAcgBSAGIAARBAA2AgAgAkEgaiQAQQALZQEEfyMAQSBrIgIkACACIAEpAgA3AwggAiABKAIMIgM2AhQgAiABKAIIIgQ2AhAgAiABKAIQIgU2AhwgAiABLQAUQR9xIgE6ABggAkEIaiAEIAMgASAFIAARAQAgAkEgaiQAQQALawEBfyMAQTBrIgIkACACQRBqIAFBEGopAgA3AwAgAkEgaiABQSBqKQIANwMAIAIgASkCCDcDCCACIAEpAhg3AxggAkEoaiACQQhqIAJBCGpBEGogABEDACABIAIpAyg3AgAgAkEwaiQAQQALWwEBfyMAQSBrIgIkACACQQhqIAFBDGopAgA3AwAgAkEYaiABQRxqKQIANwMAIAIgASkCBDcDACACIAEpAhQ3AxAgASACIAJBEGogABEPADgCACACQSBqJABBAAsQACAAIAFBACgC2LQQEMUBC10BAX8jAEEQayIDJAAgAyABNgIMIAMgADYCCAJAAkACQAJAIAIgA0EIakEIELMBDgQAAwECAAsgA0EQaiQADwtBsIsQQSIQPgALQZWLEEEaED4AC0H6ihBBGhA+AAsQACAAIAFBACgC3LQQEMUBCxAAIAAgAUEAKALgtBAQxQELEAAgACABQQAoAuS0EBDFAQsQACAAIAFBACgC6LQQEMUBCxAAIAAgAUEAKALstBAQxQELEAAgACABQQAoAvC0EBDFAQsQACAAIAFBACgC9LQQEMUBCxAAIAAgAUEAKAL4tBAQxQELEAAgACABQQAoAvy0EBDFAQsQACAAIAFBACgCgLUQEMUBCxAAIAAgAUEAKAKEtRAQxQELEAAgACABQQAoAoi1EBDFAQsQACAAIAFBACgCjLUQEMUBCxAAIAAgAUEAKAKQtRAQxQELEAAgACABQQAoApS1EBDFAQt1AQF/IwBBMGsiBCQAIARBGGogAUEIaikCADcDACAEIAM4AiQgBCACOAIgIAQgASkCADcDECAEIAApAgA3AwggBEEANgIoIARBACgCmLUQIgE2AiwgBEEIaiAEQQhqQQhqIAIgAyABENYBIQEgBEEwaiQAIAELigEBAX8jAEEwayIFJAAgBUEgaiABQQhqKQIANwIAIAUgAzgCLCAFIAI4AiggBSABKQIANwIYIAUgACkCADcCEAJAAkACQAJAIAQgBUEMakEkELMBDgQAAwECAAsgBSgCDCEBIAVBMGokACABDwtBsIsQQSIQPgALQZWLEEEaED4AC0H6ihBBGhA+AAt1AQF/IwBBMGsiBCQAIARBGGogAUEIaikCADcDACAEIAM4AiQgBCACOAIgIAQgASkCADcDECAEIAApAgA3AwggBEEANgIoIARBACgCnLUQIgE2AiwgBEEIaiAEQQhqQQhqIAIgAyABENYBIQEgBEEwaiQAIAELdQEBfyMAQTBrIgQkACAEQRhqIAFBCGopAgA3AwAgBCADOAIkIAQgAjgCICAEIAEpAgA3AxAgBCAAKQIANwMIIARBADYCKCAEQQAoAqC1ECIBNgIsIARBCGogBEEIakEIaiACIAMgARDWASEBIARBMGokACABC3UBAX8jAEEwayIEJAAgBEEYaiABQQhqKQIANwMAIAQgAzgCJCAEIAI4AiAgBCABKQIANwMQIAQgACkCADcDCCAEQQA2AiggBEEAKAKktRAiATYCLCAEQQhqIARBCGpBCGogAiADIAEQ1gEhASAEQTBqJAAgAQt1AQF/IwBBMGsiBCQAIARBGGogAUEIaikCADcDACAEIAM4AiQgBCACOAIgIAQgASkCADcDECAEIAApAgA3AwggBEEANgIoIARBACgCqLUQIgE2AiwgBEEIaiAEQQhqQQhqIAIgAyABENYBIQEgBEEwaiQAIAELdQEBfyMAQTBrIgQkACAEQRhqIAFBCGopAgA3AwAgBCADOAIkIAQgAjgCICAEIAEpAgA3AxAgBCAAKQIANwMIIARBADYCKCAEQQAoAqy1ECIBNgIsIARBCGogBEEIakEIaiACIAMgARDWASEBIARBMGokACABC3UBAX8jAEEwayIEJAAgBEEYaiABQQhqKQIANwMAIAQgAzgCJCAEIAI4AiAgBCABKQIANwMQIAQgACkCADcDCCAEQQA2AiggBEEAKAKwtRAiATYCLCAEQQhqIARBCGpBCGogAiADIAEQ1gEhASAEQTBqJAAgAQt1AQF/IwBBMGsiBCQAIARBGGogAUEIaikCADcDACAEIAM4AiQgBCACOAIgIAQgASkCADcDECAEIAApAgA3AwggBEEANgIoIARBACgCtLUQIgE2AiwgBEEIaiAEQQhqQQhqIAIgAyABENYBIQEgBEEwaiQAIAELdQEBfyMAQTBrIgQkACAEQRhqIAFBCGopAgA3AwAgBCADOAIkIAQgAjgCICAEIAEpAgA3AxAgBCAAKQIANwMIIARBADYCKCAEQQAoAri1ECIBNgIsIARBCGogBEEIakEIaiACIAMgARDWASEBIARBMGokACABC3UBAX8jAEEwayIEJAAgBEEYaiABQQhqKQIANwMAIAQgAzgCJCAEIAI4AiAgBCABKQIANwMQIAQgACkCADcDCCAEQQA2AiggBEEAKAK8tRAiATYCLCAEQQhqIARBCGpBCGogAiADIAEQ1gEhASAEQTBqJAAgAQt1AQF/IwBBMGsiBCQAIARBGGogAUEIaikCADcDACAEIAM4AiQgBCACOAIgIAQgASkCADcDECAEIAApAgA3AwggBEEANgIoIARBACgCwLUQIgE2AiwgBEEIaiAEQQhqQQhqIAIgAyABENYBIQEgBEEwaiQAIAELdQEBfyMAQTBrIgQkACAEQRhqIAFBCGopAgA3AwAgBCADOAIkIAQgAjgCICAEIAEpAgA3AxAgBCAAKQIANwMIIARBADYCKCAEQQAoAsS1ECIBNgIsIARBCGogBEEIakEIaiACIAMgARDWASEBIARBMGokACABC3UBAX8jAEEwayIEJAAgBEEYaiABQQhqKQIANwMAIAQgAzgCJCAEIAI4AiAgBCABKQIANwMQIAQgACkCADcDCCAEQQA2AiggBEEAKALItRAiATYCLCAEQQhqIARBCGpBCGogAiADIAEQ1gEhASAEQTBqJAAgAQt1AQF/IwBBMGsiBCQAIARBGGogAUEIaikCADcDACAEIAM4AiQgBCACOAIgIAQgASkCADcDECAEIAApAgA3AwggBEEANgIoIARBACgCzLUQIgE2AiwgBEEIaiAEQQhqQQhqIAIgAyABENYBIQEgBEEwaiQAIAELdQEBfyMAQTBrIgQkACAEQRhqIAFBCGop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AzoACCAFIAM6AAwgACABIAIgAyAEQQAoApC3EBCJAiAFQRBqJAALOwEBfyMAQRBrIgUkACAFIANBH3EiAzoACCAFIAM6AAwgACABIAIgAyAEQQAoApS3EBCJAiAFQRBqJAALMQECfyMAQRBrIgIkACACIAEtAARBH3EiAzoADyABIAMgABEOADYCACACQRBqJABBAAsWACABIAEoAgAgABEOAEEfcToABEEAC0UBA38jAEEQayICJAAgAiABLQABQR9xIgM6AA8gAiABLQACQR9xIgQ6AA4gASADIAQgABEQAEEDcToAACACQRBqJABBAAtWAQR/IwBBEGsiAiQAIAIgAS0AAUEfcSIDOgAPIAIgAS0AAkEHcSIEOgAOIAIgAS0AA0EfcSIFOgANIAEgAyAEIAUgABEKAEEBcToAACACQRBqJABBAAtFAQN/IwBBEGsiAiQAIAIgAS0AAUEfcSIDOgAPIAIgAS0AAkEfcSIEOgAOIAEgAyAEIAAREABBH3E6AAAgAkEQaiQAQQALNgECfyMAQRBrIgIkACACIAEtAAhBH3EiAzoADCABIAMgASgCBCAAERAANgIAIAJBEGokAEEACzkBAn8jAEEQayICJAAgAiABLQAFQR9xIgM6AAwgASADIAEoAgAgABEQAEEBcToABCACQRBqJABBAAtMAQF/IwBB8ABrIgIkACACQQRqIABB4AD8CgAAIAIgATYCZCACQQA2AmggAkEAKAKctxAiADYCbCACQQRqIAEgABChAiACQfAAaiQAC2cBAX8jAEHwAGsiAyQAIANBDGogAEHgAPwKAAAgAyABNgJsAkACQAJAAkAgAiADQQxqQeQAELMBDgQAAwECAAsgA0HwAGokAA8LQbCLEEEiED4AC0GVixBBGhA+AAtB+ooQQRoQPgALTAEBfyMAQfAAayICJAAgAkEEaiAAQeAA/AoAACACIAE2AmQgAkEANgJoIAJBACgCoLcQIgA2AmwgAkEEaiABIAAQoQIgAkHwAGokAAtMAQF/IwBB8ABrIgIkACACQQRqIABB4AD8CgAAIAIgATYCZCACQQA2AmggAkEAKAKktxAiADYCbCACQQRqIAEgABChAiACQfAAaiQAC0wBAX8jAEHwAGsiAiQAIAJBBGogAEHgAPwKAAAgAiABNgJkIAJBADYCaCACQQAoAqi3ECIANgJsIAJBBGogASAAEKECIAJB8ABqJAALTAEBfyMAQfAAayICJAAgAkEEaiAAQeAA/AoAACACIAE2AmQgAkEANgJoIAJBACgCrLcQIgA2AmwgAkEEaiABIAAQoQIgAkHwAGokAAtMAQF/IwBB8ABrIgIkACACQQRqIABB4AD8CgAAIAIgATYCZCACQQA2AmggAkEAKAKwtxAiADYCbCACQQRqIAEgABChAiACQfAAaiQAC0wBAX8jAEHwAGsiAiQAIAJBBGogAEHgAPwKAAAgAiABNgJkIAJBADYCaCACQQAoArS3ECIANgJsIAJBBGogASAAEKECIAJB8ABqJAALTAEBfyMAQfAAayICJAAgAkEEaiAAQeAA/AoAACACIAE2AmQgAkEANgJoIAJBACgCuLcQIgA2AmwgAkEEaiABIAAQoQIgAkHwAGokAAtMAQF/IwBB8ABrIgIkACACQQRqIABB4AD8CgAAIAIgATYCZCACQQA2AmggAkEAKAK8txAiADYCbCACQQRqIAEgABChAiACQfAAaiQAC0wBAX8jAEHwAGsiAiQAIAJBBGogAEHgAPwKAAAgAiABNgJkIAJBADYCaCACQQAoAsC3ECIANgJsIAJBBGogASAAEKECIAJB8ABqJAALTAEBfyMAQfAAayICJAAgAkEEaiAAQeAA/AoAACACIAE2AmQgAkEANgJoIAJBACgCxLcQIgA2AmwgAkEEaiABIAAQoQIgAkHwAGokAAtMAQF/IwBB8ABrIgIkACACQQRqIABB4AD8CgAAIAIgATYCZCACQQA2AmggAkEAKALItxAiADYCbCACQQRqIAEgABChAiACQfAAaiQAC0wBAX8jAEHwAGsiAiQAIAJBBGogAEHgAPwKAAAgAiABNgJkIAJBADYCaCACQQAoAsy3ECIANgJsIAJBBGogASAAEKECIAJB8ABqJAALTAEBfyMAQfAAayICJAAgAkEEaiAAQeAA/AoAACACIAE2AmQgAkEANgJoIAJBACgC0LcQIgA2AmwgAkEEaiABIAAQoQIgAkHwAGokAAtMAQF/IwBB8ABrIgIkACACQQRqIABB4AD8CgAAIAIgATYCZCACQQA2AmggAkEAKALUtxAiADYCbCACQQRqIAEgABChAiACQfAAaiQAC0wBAX8jAEHwAGsiAiQAIAJBBGogAEHgAPwKAAAgAiABNgJkIAJBADYCaCACQQAoAti3ECIANgJsIAJBBGogASAAEKECIAJB8ABqJAALEAAgACABQQAoAty3EBDFAQsQACAAIAFBACgC4LcQEMUBCxAAIAAgAUEAKALktxAQxQELEAAgACABQQAoAui3EBDFAQsQACAAIAFBACgC7LcQEMUBCxAAIAAgAUEAKALwtxAQxQELEAAgACABQQAoAvS3EBDFAQsQACAAIAFBACgC+LcQEMUBCxAAIAAgAUEAKAL8txAQxQELEAAgACABQQAoAoC4EBDFAQsQACAAIAFBACgChLgQEMUBCxAAIAAgAUEAKAKIuBAQxQELEAAgACABQQAoAoy4EBDFAQsQACAAIAFBACgCkLgQEMUBCxAAIAAgAUEAKAKUuBAQxQELEAAgACABQQAoApi4EBDFAQtlAQJ/IwBB0ABrIgUkACAFQRhqIgYgBEEw/AoAACAFIAM2AhQgBSACNgIQIAUgATYCDCAFIAA2AgggBUEANgJIIAVBACgCnLgQIgQ2AkwgACABIAIgAyAGIAQQwgIgBUHQAGokAAt4AQF/IwBBwABrIgYkACAGQRBqIARBMPwKAAAgBiADNgIMIAYgAjYCCCAGIAE2AgQgBiAANgIAAkACQAJAAkAgBSAGQcAAELMBDgQAAwECAAsgBkHAAGokAA8LQbCLEEEiED4AC0GVixBBGhA+AAtB+ooQQRoQPgALZQECfyMAQdAAayIFJAAgBUEYaiIGIARBMPwKAAAgBSADNgIUIAUgAjYCECAFIAE2AgwgBSAANgIIIAVBADYCSCAFQQAoAqC4ECIENgJMIAAgASACIAMgBiAEEMICIAVB0ABqJAALZQECfyMAQdAAayIFJAAgBUEYaiIGIARBMPwKAAAgBSADNgIUIAUgAjYCECAFIAE2AgwgBSAANgIIIAVBADYCSCAFQQAoAqS4ECIENgJMIAAgASACIAMgBiAEEMICIAVB0ABqJAALZQECfyMAQdAAayIFJAAgBUEYaiIGIARBMPwKAAAgBSADNgIUIAUgAjYCECAFIAE2AgwgBSAANgIIIAVBADYCSCAFQQAoAqi4ECIENgJMIAAgASACIAMgBiAEEMICIAVB0ABqJAALZQECfyMAQdAAayIFJAAgBUEYaiIGIARBMPwKAAAgBSADNgIUIAUgAjYCECAFIAE2AgwgBSAANgIIIAVBADYCSCAFQQAoAqy4ECIENgJMIAAgASACIAMgBiAEEMICIAVB0ABqJAALZQECfyMAQdAAayIFJAAgBUEYaiIGIARBMPwKAAAgBSADNgIUIAUgAjYCECAFIAE2AgwgBSAANgIIIAVBADYCSCAFQQAoArC4ECIENgJMIAAgASACIAMgBiAEEMICIAVB0ABqJAALZQECfyMAQdAAayIFJAAgBUEYaiIGIARBMPwKAAAgBSADNgIUIAUgAjYCECAFIAE2AgwgBSAANgIIIAVBADYCSCAFQQAoArS4ECIENgJMIAAgASACIAMgBiAEEMICIAVB0ABqJAALZQECfyMAQdAAayIFJAAgBUEYaiIGIARBMPwKAAAgBSADNgIUIAUgAjYCECAFIAE2AgwgBSAANgIIIAVBADYCSCAFQQAoAri4ECIENgJMIAAgASACIAMgBiAEEMICIAVB0ABqJAALZQECfyMAQdAAayIFJAAgBUEYaiIGIARBMPwKAAAgBSADNgIUIAUgAjYCECAFIAE2AgwgBSAANgIIIAVBADYCSCAFQQAoAry4ECIENgJMIAAgASACIAMgBiAEEMICIAVB0ABqJAALZQECfyMAQdAAayIFJAAgBUEYaiIGIARBMPwKAAAgBSADNgIUIAUgAjYCECAFIAE2AgwgBSAANgIIIAVBADYCSCAFQQAoAsC4ECIENgJMIAAgASACIAMgBiAEEMICIAVB0ABqJAALZQECfyMAQdAAayIFJAAgBUEYaiIGIARBMPwKAAAgBSADNgIUIAUgAjYCECAFIAE2AgwgBSAANgIIIAVBADYCSCAFQQAoAsS4ECIENgJMIAAgASACIAMgBiAEEMICIAVB0ABqJAALZQECfyMAQdAAayIFJAAgBUEYaiIGIARBMPwKAAAgBSADNgIUIAUgAjYCECAFIAE2AgwgBSAANgIIIAVBADYCSCAFQQAoAsi4ECIENgJMIAAgASACIAMgBiAEEMICIAVB0ABqJAALZQECfyMAQdAAayIFJAAgBUEYaiIGIARBMPwKAAAgBSADNgIUIAUgAjYCECAFIAE2AgwgBSAANgIIIAVBADYCSCAFQQAoAsy4ECIENgJMIAAgASACIAMgBiAEEMICIAVB0ABqJAALZQECfyMAQdAAayIFJAAgBUEYaiIGIARBMPwKAAAgBSADNgIUIAUgAjYCECAFIAE2AgwgBSAANgIIIAVBADYCSCAFQQAoAtC4ECIENgJMIAAgASACIAMgBiAEEMICIAVB0ABqJAALZQECfyMAQdAAayIFJAAgBUEYaiIGIARBMPwKAAAgBSADNgIUIAUgAjYCECAFIAE2AgwgBSAANgIIIAVBADYCSCAFQQAoAtS4ECIENgJMIAAgASACIAMgBiAEEMICIAVB0ABqJAALZQECfyMAQdAAayIFJAAgBUEYaiIGIARBMPwKAAAgBSADNgIUIAUgAjYCECAFIAE2AgwgBSAANgIIIAVBADYCSCAFQQAoAti4ECIENgJMIAAgASACIAMgBiAEEMICIAVB0ABqJAALEgAgACABIAJBACgC3LgQENMCC2QBAX8jAEEQayIEJAAgBCACNgIMIAQgATYCCCAEIAA2AgQCQAJAAkACQCADIARBBGpBDBCzAQ4EAAMBAgALIARBEGokAA8LQbCLEEEiED4AC0GVixBBGhA+AAtB+ooQQRoQPgALEgAgACABIAJBACgC4LgQENMCCxIAIAAgASACQQAoAuS4EBDTAgsSACAAIAEgAkEAKALouBAQ0wILEgAgACABIAJBACgC7LgQENMCCxIAIAAgASACQQAoAvC4EBDTAgsSACAAIAEgAkEAKAL0uBAQ0wILEgAgACABIAJBACgC+LgQENMCCxIAIAAgASACQQAoAvy4EBDTAgsSACAAIAEgAkEAKAKAuRAQ0wILEgAgACABIAJBACgChLkQENMCCxIAIAAgASACQQAoAoi5EBDTAgsSACAAIAEgAkEAKAKMuRAQ0wILEgAgACABIAJBACgCkLkQENMCCxIAIAAgASACQQAoApS5EBDTAgsSACAAIAEgAkEAKAKYuRAQ0wILEgAgACABIAJBACgCnLkQENMCCxIAIAAgASACQQAoAqC5EBDTAgsSACAAIAEgAkEAKAKkuRAQ0wILEgAgACABIAJBACgCqLkQENMCCxIAIAAgASACQQAoAqy5EBDTAgsSACAAIAEgAkEAKAKwuRAQ0wILEgAgACABIAJBACgCtLkQENMCCxIAIAAgASACQQAoAri5EBDTAgsSACAAIAEgAkEAKAK8uRAQ0wILEgAgACABIAJBACgCwLkQENMCCxIAIAAgASACQQAoAsS5EBDTAgsSACAAIAEgAkEAKALIuRAQ0wILEgAgACABIAJBACgCzLkQENMCCxIAIAAgASACQQAoAtC5EBDTAgsSACAAIAEgAkEAKALUuRAQ0wILEgAgACABIAJBACgC2LkQENMCCxAAIAAgAUEAKALcuRAQxQELEAAgACABQQAoAuC5EBDFAQsQACAAIAFBACgC5LkQEMUBCxAAIAAgAUEAKALouRAQxQELEAAgACABQQAoAuy5EBDFAQsQACAAIAFBACgC8LkQEMUBCxAAIAAgAUEAKAL0uRAQxQELEAAgACABQQAoAvi5EBDFAQsQACAAIAFBACgC/LkQEMUBCxAAIAAgAUEAKAKAuhAQxQELEAAgACABQQAoAoS6EBDFAQsQACAAIAFBACgCiLoQEMUBCxAAIAAgAUEAKAKMuhAQxQELEAAgACABQQAoApC6EBDFAQsQACAAIAFBACgClLoQEMUBCxAAIAAgAUEAKAKYuhAQxQELPQEBfyMAQRBrIgQkACAEIAJBH3EiAjoACCAEIAI6AAwgACABIAIgA0EAKAKcuhAQhAMhAiAEQRBqJAAgAguAAQEBfyMAQSBrIgUkACAFIAE2AhQgBSAANgIQIAUgAzYCGCAFIAJBH3EiAToACCAFIAE6ABwCQAJAAkACQCAEIAVBDGpBFBCzAQ4EAAMBAgALIAUoAgwhASAFQSBqJAAgAQ8LQbCLEEEiED4AC0GVixBBGhA+AAtB+ooQQRoQPgALPQEBfyMAQRBrIgQkACAEIAJBH3EiAjoACCAEIAI6AAwgACABIAIgA0EAKAKguhAQhAMhAiAEQRBqJAAgAgs9AQF/IwBBEGsiBCQAIAQgAkEfcSICOgAIIAQgAjoADCAAIAEgAiADQQAoAqS6EBCEAyECIARBEGokACACCz0BAX8jAEEQayIEJAAgBCACQR9xIgI6AAggBCACOgAMIAAgASACIANBACgCqLoQEIQDIQIgBEEQaiQAIAILPQEBfyMAQRBrIgQkACAEIAJBH3EiAjoACCAEIAI6AAwgACABIAIgA0EAKAKsuhAQhAMhAiAEQRBqJAAgAgs9AQF/IwBBEGsiBCQAIAQgAkEfcSICOgAIIAQgAjoADCAAIAEgAiADQQAoArC6EBCEAyECIARBEGokACACCz0BAX8jAEEQayIEJAAgBCACQR9xIgI6AAggBCACOgAMIAAgASACIANBACgCtLoQEIQDIQIgBEEQaiQAIAILPQEBfyMAQRBrIgQkACAEIAJBH3EiAjoACCAEIAI6AAwgACABIAIgA0EAKAK4uhAQhAMhAiAEQRBqJAAgAgs9AQF/IwBBEGsiBCQAIAQgAkEfcSICOgAIIAQgAjoADCAAIAEgAiADQQAoAry6EBCEAyECIARBEGokACACCz0BAX8jAEEQayIEJAAgBCACQR9xIgI6AAggBCACOgAMIAAgASACIANBACgCwLoQEIQDIQIgBEEQaiQAIAILPQEBfyMAQRBrIgQkACAEIAJBH3EiAjoACCAEIAI6AAwgACABIAIgA0EAKALEuhAQhAMhAiAEQRBqJAAgAgs9AQF/IwBBEGsiBCQAIAQgAkEfcSICOgAIIAQgAjoADCAAIAEgAiADQQAoAsi6EBCEAyECIARBEGokACACCz0BAX8jAEEQayIEJAAgBCACQR9xIgI6AAggBCACOgAMIAAgASACIANBACgCzLoQEIQDIQIgBEEQaiQAIAILPQEBfyMAQRBrIgQkACAEIAJBH3EiAjoACCAEIAI6AAwgACABIAIgA0EAKALQuhAQhAMhAiAEQRBqJAAgAgs9AQF/IwBBEGsiBCQAIAQgAkEfcSICOgAIIAQgAjoADCAAIAEgAiADQQAoAtS6EBCEAyECIARBEGokACACCz0BAX8jAEEQayIEJAAgBCACQR9xIgI6AAggBCACOgAMIAAgASACIANBACgC2LoQEIQDIQIgBEEQaiQAIAILSAEBfyMAQSBrIgIkACACIAEpAgg3AwggAiABKQIQNwMQIAJBGGogAkEIaiACQRBqIAARAwAgASACKQMYNwIAIAJBIGokAEEACzsBAX8jAEEQayICJAAgAiABKQIENwMAIAIgASkCDDcDCCABIAIgAkEIaiAAEQ8AOAIAIAJBEGokAEEACzYBAX8jAEEQayICJAAgAiABKQIINwMAIAJBCGogAiAAEQAAIAEgAikDCDcCACACQRBqJABBAAs0AQJ/IwBBEGsiAiQAIAIgAS0AAUEDcSIDOgAPIAEgAyAAEQ4AQQNxOgAAIAJBEGokAEEACzsBAn8jAEEQayICJAAgAiABLQACQQNxIgM6AA0gAkEOaiADIAARAAAgASACLwEOOwAAIAJBEGokAEEAC0UBA38jAEEQayICJAAgAiABLQABQQNxIgM6AA8gAiABLQACQQdxIgQ6AA4gASADIAQgABEQAEEBcToAACACQRBqJABBAAs0AQJ/IwBBEGsiAiQAIAIgAS0AAUEHcSIDOgAPIAEgAyAAEQ4AQQdxOgAAIAJBEGokAEEACwsAQQBBAToAmLcQC0UCAX8BfiMAQRBrIgIkACACQQhqEJ0DIAIpAwgiA6cgACABQQEgAUEBSxtoQQAgA0IgiKcoAgARAgAhASACQRBqJAAgAQueAQMBfwF+AX8jAEEQayIBJAACQEEALQDouhANAEEAKQPgmhAiAqdBgIAEQQBBACACQiCIpygCABECACEDQQBBAToAhLsQQQBBgIAENgKAuxBBACADNgL8uhBBACACNwPwuhBBAEEBOgDouhBBAEHomhA2AuS6EEEAQfC6EDYC4LoQQQBBADYC+LoQCyAAQQApA+C6EDcCACABQRBqJAALMwEBfwJAIABBCGogASACIAAQnwMiBA0AIAAoAgAgASACIAMgACgCBCgCABECACEECyAEC50BAQd/IwBBEGsiBCQAIAQgAkEfcSIFOgALIAAoAgQhBiAAKAIAIQdBACEIQQAhCQJAAkACQCAFRQ0AIARBASACdCIJIAYgB2oiAmpBf2oiCiACSSIFOgAMIAUNASAKQQAgCWtxIAJrIQkLIAkgB2oiAiABaiIHIAAoAghLDQEgACAHNgIAIAYgAmohCAwBC0EAIQgLIARBEGokACAIC00BAX8CQCAAKAIMIgYgAUsNACAAKAIQIAZqIAFNDQAgAEEIaiABIAIgACAEIAAQoQMPCyAAKAIAIAEgAiADIAQgBSAAKAIEKAIEEQQAC2UBAX8CQAJAIAEgAmogACgCBCAAKAIAIgFqRg0AIAQgAk0hAgwBCyAEIAJrIQYCQCAEIAJLDQAgACAGIAFqNgIAQQEPC0EAIQIgASAGaiIEIAAoAghLDQAgACAENgIAQQEPCyACC00BAX8CQCAAKAIMIgYgAUsNACAAKAIQIAZqIAFNDQAgAEEIaiABIAIgACAEIAAQowMPCyAAKAIAIAEgAiADIAQgBSAAKAIEKAIIEQQACxkAIAFBACAAIAEgAiABIAQgARChA0EBcRsLWAEBfwJAAkAgACgCDCIFIAFLDQAgACgCECAFaiABTQ0AIAEgAmogBSAAKAIIIgFqRw0BIAAgASACazYCCA8LIAAoAgAgASACIAMgBCAAKAIEKAIMEQEACwtDAgF/AX4jAEEQayIDJAAgA0EIahCdAyADKQMIIgSnIAAgASACQQEgAkEBSxtoQQAgBEIgiKcoAgwRAQAgA0EQaiQACxoAIAEgAkGq1arVeiACGyAAERAAQf//A3FFCycAIAEgAkGq1arVeiACGyADQarVqtV6IAIbIAQgABECAEH//wNxRQudBAIIfwF+IwBBIGsiAiQAQQAhA0EALQCYtxAhBCACQQhqQQBBACABIAAREQACQAJAAkAgAi8BDA0AIAIoAgghAwwBCyAEQQFxRQ0BIAAgARACIQMLQQAtAJi3EEUNACADRQ0AAkACQAJAAkBBACgCnLMQIgVBACgCmLMQIgZLDQAgBSEAA0BBfyAAQQF2IABqQQhqIgQgBCAASRsiACAGTQ0AC0EAIQRBACgClLMQIQcgBUUNAUEAKAKksxAhBkEAKAKgsxAhCCACIABB/////wFLOgAYAkAgAEGAgICAAkkNAEEAIQQMAgtBACEEIAggByAFQQN0QQIgAEEDdCIJQQAgBigCCBEEACIGRQ0BIAZBqtWq1XogCRshBCAAQf////8BcUEAIAkbIQYMAgtBACgClLMQIQQMAgtBACEGCwJAIARFDQBBACAENgKUsxBBACAGNgKcsxAMAQsgAkEAKQKgsxA3AxAgAkEYaiACQRBqIAAQayACLwEcDQEgAigCGCEEAkBBACgCmLMQIgZFDQAgBEEAKAKUsxAgBkEDdPwKAAALAkAgBUEDdCIGRQ0AQQApAqCzECIKpyAHQarVqtV6IAUbIAZBAkEAIApCIIinKAIMEQEAC0EAIAA2ApyzEEEAIAQ2ApSzEAtBAEEAKAKYsxAiAEEBajYCmLMQIAQgAEEDdGogA61CIIYgAa2ENwIACyACQSBqJAAgAwvNAQEDfyMAQTBrIgIkAEEAIQNBAC0AmLcQIQQgAkEMakEAQQEgASAAEREAAkACQAJAIAIvARANACACKAIMIQMMAQsgBEEBcUUNASAAIAEQAyEDC0EALQCYtxBFDQAgA0UNAEEAKAKYsxAhAEEAKAKUsxAhBANAIABFDQECQCAEQQRqKAIAIAFHDQACQCAAQQFHDQAgAkEUahCqAwwDCyACQSBqEKoDIAQgAikDIDcCAAwCCyAAQX9qIQAgBEEIaiEEDAALCyACQTBqJAAgAwtVAgF/AX4CQEEAKAKYsxAiAQ0AIABCADcCACAAQQhqQQA2AgAPCyAAQQE6AAhBACgClLMQIAFBA3RqQXhqKQIAIQJBACABQX9qNgKYsxAgACACNwIACwIACwQAQQEL7wEBBH8jAEEQayIEJAAgBCACQR9xOgAPQQAhBQJAQX8gAUEEaiIGIAYgAUkbIgFBASACdCICIAEgAksbIgFBf2pnIgJFDQACQAJAQgFBICACa61C//8Dg4anIgZoQX1qIgJBDU8NACACQQJ0IgdBiLsQaiIBKAIAIgJFDQEgASAGIAJqQXxqKAIANgIAIAIhBQwCCyABQYOABGpBEHYQrgMhBQwBCwJAIAdBvLsQaiIBKAIAIgJB//8DcQ0AQQEQrgMiAkUNASABIAIgBmo2AgAgAiEFDAELIAEgAiAGajYCACACIQULIARBEGokACAFC1YBAn8CQEIBQSAgAEF/amdrrUL//wODhqciAWhBAnRB8LsQaiICKAIAIgBFDQAgAiABQRB0IABqQXxqKAIANgIAIAAPC0EAIAFAACIAQRB0IABBf0YbC9UBAQJ/IwBBEGsiBiQAIAYgA0EfcToAD0F/IARBBGoiByAHIARJGyIEQQEgA3QiAyAEIANLGyEEAkACQAJAQgFBICACQQRqIgIgAyACIANLGyIDQX9qZ2utQv//A4OGpyICaEF9akEMSw0AIARBf2pnIgMNAUEAIQMMAgtCAUEgIANBg4AEakEQdkF/amdrrUL//wODhqdCAUEgIARBg4AEakEQdkF/amdrrUL//wODhqdGIQMMAQsgAkIBQSAgA2utQv//A4OGp0YhAwsgBkEQaiQAIAMLGQAgAUEAIAQgBCACIAMgBCAEEK8DQQFxGwu2AQECfyMAQRBrIgUkACAFIANBH3E6AA8CQAJAQgFBICACQQRqIgJBASADdCIDIAIgA0sbIgNBf2pna61C//8Dg4anIgJoQX1qIgZBDU8NACAGQQJ0QYi7EGohAyABIAJqQXxqIQIMAQtCAUEgIANBg4AEakEQdkF/amdrrUL//wODhqciAmhBAnRB8LsQaiEDIAEgAkEQdGpBfGohAgsgAiADKAIANgIAIAMgATYCACAFQRBqJAALdQEBfiAAIAQgAX4gAiADfnwgA0IgiCICIAFCIIgiBH58IANC/////w+DIgMgAUL/////D4MiAX4iBUIgiCADIAR+fCIDQiCIfCADQv////8PgyACIAF+fCIBQiCIfDcDCCAAIAFCIIYgBUL/////D4OENwMAC8kBAwF/AX4Cf0EAIQICQAJAAkAgAb0iA0I0iKciBEH/D3EiBUUNACAFQf8PRw0BDAILIANC/////////weDUA0BIANCgICAgICAgICAf4NCACADIANCDIZ5pyICQQFqrYZC/////////weDIAJBP3FBMksbhEKAgICAgICA8D+EIQNBgnggAmshAgwBCyADQv////////+HgH+DQoCAgICAgIDwP4QhAyAEQf8PcUGCeGohAgsgAEEANgIMIAAgAjYCCCAAIAM3AwAL1AICA34CfwJAAkAgACAAYg0AIAC9IgJC////////////AINCgICAgICAgPj/AFoNACACQoCAgICAgICAgH+DIQNBCyACQgGGIgR5p2sgBEI1iKcgBEKAgICAgICAEFQbIQUCQCABQQBIDQACQEH+DyAFayABTg0AIANCgICAgICAgPj/AIS/DwsCQCAFIAFqIgZBAEoNACACIAFBP3GthiADhL8PCwJAIAVBAEoNACACQQEgBWuthkL/////////B4MgBq1CNIaEIAOEvw8LIAGtQjSGIAJ8vw8LQQAgAWshBkEAIAVrIAFIDQECQEFMIAVrIAFMDQAgA78PCyAFQQBKrUI0hiACQv////////8Hg4QgBkEBIAUgAWprIgEgBiABSBtBf2pBP3GtIgSIQgF8QgGIIAJ6IARRrUJ/hYMgA4S/IQALIAAPCyACIAatQjSGfb8LJwACQCAAIABcDQACQCABIAFbDQAgAA8LIAEgACAAIAFdGyEBCyABC2gCAX4BfwJAAkAgAL1C////////////AIMiAUI0iKciAkH/D0YNACACDQECQCABUEUNAEGAgICAeA8LQY14IAF5p2sPC0GAgICAeEH/////ByABQoCAgICAgID4/wBWGw8LIAJBgXhqC54DAwN/AX0BfCMAQRBrIgEkAAJAAkAgALwiAkH/////B3EiA0Han6T6A0sNAEMAAIA/IQQgA0GAgIDMA0kNASAAuxC4AyEEDAELAkACQAJAAkAgA0HSp+2DBEkNACADQdbjiIcETw0CIANB39u/hQRNDQFEGC1EVPshGcBEGC1EVPshGUAg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IA8gBygCALeiOQMAIAdBfGohByAJQXhqIQkgCEF/aiEIIA9EAAAAAAAAcD6iIQ8MAAsLIAVBkANqIAlBA3RqIA85AwAgCkEIaiEKIAlBAWohCQwACwsgAiAPOQMAIAJBCGohAiAIQX9qIQggCUEEaiEJIAdBAWohBwwACwvvAQMCfwF9AnwCQAJAAkACQAJAIAC8IgFB/////wdxIgJBgIDwlwRNDQAgAkGAgID8B0sNAyABQYCAgJgESA0BIABDAAAAf5QPCyACQYGAgJgDSQ0BDAMLIAFBAE4NAkMAAAAADwsgAEMAAIA/kiEACyAADwsgAEMAAEBJkiIDvEEIaiICQQ9xQQN0QcCxEGorAwAiBCAAIANDAABAyZKTuyIFRAAAAAC+v84/okQAAAAAQy7mP6AgBCAFoiIEoqAgBUQAAADAybKDP6JEAAAAgDRrrD+gIAUgBaIgBKKioCACQQR2Qf8Haq1CNIa/orYLmAUDA38CfAF+IwBBMGsiAyQAAkACQAJAIAC9Qv///////////wCDQv/////////3/wBWDQAgAb1C////////////AINCgICAgICAgPj/AFQNAQsgACABoiACoCECDAELIAK9Qv///////////wCDQv/////////3/wBWDQACQAJAIABEAAAAAAAAAABhDQAgAUQAAAAAAAAAAGINAQsgACABoiACoCECDAELAkAgAkQAAAAAAAAAAGINACAAIAGiIQIMAQsgAyAAELMDIAMrAwAhACADKAIIIQQgA0EQaiABELMDIAMrAxAhASADKAIYIQUgA0EgaiACELMDIAMrAyAhAgJAAkAgBSAEaiIEIAMoAihrIgVB6wBIDQAgAr1CgICAgICAgICAf4NCgICAgICAgAiEvyEGDAELIAJBACAFaxC0AyEGCyAAIABEAAAAAgAAoEGiIgIgACACoaAiAqEiByABIAFEAAAAAgAAoEGiIgAgASAAoaAiAKEiAaIgByAAoiACIAGioCIBIAIgAKIiAiACIAGgIgChoKAhAQJAIAAgBqAiAkQAAAAAAAAAAGINACACIAEgBBC0A6AhAgwBCwJAIAEgASAGIAIgAKEiB6EgACACIAehoaAiBqAiACAGoSIHoSAGIAAgB6GhoCIBRAAAAAAAAAAAYQ0AIAC9IginQQFxDQAgCEIBhCABvSAIhUI+iH2/IQALIAIgAKAhAQJAIAIQtgMgBGpBgnhODQAgACABIAKhIgahIAIgBiABoaCgIgJEAAAAAAAAAABhDQAgAb0iCEIBg1AgCEI0iKdB/w9xQQAgBGtHRg0AIAggAr0gCIVCPohCAoN9QgF8vyEBCyABIAQQtAMhAgsgA0EwaiQAIAILJwACQCAAIABcDQACQCABIAFbDQAgAA8LIAAgASAAIAFdGyEBCyABC5wCAgJ/An0CQAJAAkAgALwiAUGAgIAETg0AQwAAgP9DAADAfyAAQwAAAABbIgIbIQMgAg0CIAFBAEgNAiAAQwAAAEyUvCEBQeh+IQIMAQsgACEDIAFB////+wdLDQFBgX8hAkMAAAAAIQMgAUGAgID8A0YNAQsgAUGN9qsCaiIBQf///wNxQfOJ1PkDar5DAACAv5IiACAAIABDAAAAP5SUIgOTvEGAYHG+IgRDALC4P5QgACAEkyADkyAAIABDAAAAQJKVIgAgAyAAIACUIgAgACAAlCIAQ+7pkT6UQ6qqKj+SlCAAIABDJp54PpRDE87MPpKUkpKUkiIAQwCwuD+UIAAgBJJD1Jo4uZSSkiACIAFBF3ZqspIhAwsgAwuZAwIDfwF8IwBBEGsiASQAAkACQCAAvCICQf////8HcSIDQdqfpPoDSw0AIANBgICAzANJDQEgALsQuQMhAAwBCwJAAkACQAJAIANB0qftgwRJDQAgA0HW44iHBE8NAyAAuyEEIANB4Nu/hQRPDQEgAkF/Sg0CIARE0iEzf3zZEkCgELgDIQAMBAsgALshBAJAIANB5JfbgARJDQBEGC1EVPshCcBEGC1EVPshCUAgAkF/ShsgBKCaELkDIQAMBAsCQCACQX9KDQAgBEQYLURU+yH5P6AQuAOMIQAMBAsgBEQYLURU+yH5v6AQuAMhAAwDC0QYLURU+yEZwEQYLURU+yEZQCACQX9KGyAEoBC5AyEADAILIARE0iEzf3zZEsCgELgDjCEADAELAkAgA0H////7B0sNACAAIAFBCGoQugMhAyABKwMIIQQCQAJAAkACQCADQQNxDgQAAQIDAAsgBBC5AyEADAQLIAQQuAMhAAwDCyAEmhC5AyEADAILIAQQuAOMIQAMAQsgACAAkyEACyABQRBqJAAgAAsLuDMCAEGAgBALwDIAAAAAAAAAAAAAAAAAAAAAAAAAAGoAAABrAAAAbAAAAG0AAAAAAIA/AACAPwAAgD8AAIA/AAAAAAAAAAAAAAAAAACAPwAAAEBPdXRPZk1lbW9yeQBtYXhfeQBtaW5feQBzaGFwZXMuYm91bmRpbmdfYm94LkJvdW5kaW5nQm94AGltYWdlcy5QaWNrVmVydGV4AGluZGV4AG1heABtYXhfeABtaW5feAByZW5kZXJfZHJhdwB2AHUAaW52ZXJ0AHNsb3QAU2VsZWN0ZWQgc2hhcGUgYXNzZXQgc2hvdWxkIGJlIHByZXNlbnQgYXQgdGhpcyBwb2ludAB0eXBlcy5Qb2ludABtZW0uQWxpZ25tZW50AGx0AGd0AHJlbW92ZV9hc3NldABhZGRfYXNzZXQAYml0T2Zmc2V0AHJhZGl1cwBwb2ludHMAdG9CeXRlVW5pdHMAZnJvbUJ5dGVVbml0cwByZXNldF9hc3NldHMAc2hhcGVzLnNoYXBlcy5TaGFwZVByb3BzAGltcG9ydF9pY29ucwBjb25uZWN0X3dlYl9ncHVfcHJvZ3JhbXMAaW5kZXguV2ViR3B1UHJvZ3JhbXMAY29ubmVjdF9jYWNoZV9jYWxsYmFja3MAZmxhZ3MAY29tbWl0X2NoYW5nZXMAcHRyAG1hdGguQ29tcGFyZU9wZXJhdG9yAG1lbS5BbGxvY2F0b3IARXJyb3IAZmlsbF9jb2xvcgBzdHJva2VfY29sb3IAZGlmZmVyAG9yZGVyAG1hdGguT3JkZXIAbmVxAG9uX3BvaW50ZXJfdXAAcmVtYXAAcmF3UmVtYXAAbm9SZW1hcABhbmdsZV90bwBvbl9wb2ludGVyX2Rvd24AbWluAGFsaWduAExvZzJBbGlnbgBzaGFwZXMuc2hhcGVzLlVuaWZvcm0Ac2V0X3Rvb2wAaW5kZXguVG9vbABTZWxlY3RlZCBzaGFwZSBhc3NldCBzaG91bGQgYmUgcHJlc2VudCB3aGVuIGFjdGl2ZV9wYXRoX2luZGV4IGlzIG5vdCBudWxsAHJldHZhbAByZW5kZXJfcGljawBvbl91cGRhdGVfcGljawBjaGVjawBjb25uZWN0X29uX2Fzc2V0X3NlbGVjdGlvbl9jYWxsYmFjawBjb25uZWN0X29uX2Fzc2V0X3VwZGF0ZV9jYWxsYmFjawBsZW5ndGgAc3Ryb2tlX3dpZHRoAHBhZGRpbmcAZGlmZgBkcmF3X21zZGYAcmVzaXplAHJhd1Jlc2l6ZQBub1Jlc2l6ZQBiaXRTaXplAGJ5dGVTaXplAG9uX3BvaW50ZXJfbW92ZQBvbl9wb2ludGVyX2xlYXZlAGx0ZQBndGUAZGVzdHJveV9zdGF0ZQBpbml0X3N0YXRlAHJldmVyc2UAZHJhd190ZXh0dXJlAHBpY2tfdGV4dHVyZQBzdHJ1Y3R1cmUAc2lnbmF0dXJlAGNvbXBhcmUAdHlwZQBkcmF3X3NoYXBlAHN0b3BfZHJhd2luZ19zaGFwZQBhZGRfc2hhcGUARHJhd1NoYXBlAGNsb25lAE5vbmUAbmFtZQBkcmF3X3RyaWFuZ2xlAHBpY2tfdHJpYW5nbGUAdnRhYmxlAG1lbS5BbGxvY2F0b3IuVlRhYmxlAHVwZGF0ZV9yZW5kZXJfc2NhbGUAZnJlZQByYXdGcmVlAG5vRnJlZQBtc2RmLkRyYXdJbnN0YW5jZQB0cmlhbmdsZS5EcmF3SW5zdGFuY2UAdHJpYW5nbGUuUGlja0luc3RhbmNlAGRpc3RhbmNlAGZvcndhcmQAYmFja3dhcmQAbWlkAHRleHR1cmVfaWQAaW1hZ2VzLlNlcmlhbGl6ZWQASmF2YVNjcmlwdCBmdW5jdGlvbiBmYWlsZWQATXVsdGl0aHJlYWRpbmcgbm90IGVuYWJsZWQAUHJvbWlzZSBlbmNvdW50ZXJlZCBpbiBtYWluIHRocmVhZABhbGxvYwByYXdBbGxvYwB0eXBlcy5Qb2ludFVWAEFTU0VUX0lEX1RSRVNIT0xEADgAMTYANjQAMwBwMgAzMgBwMQBwMABBdHRlbXB0aW5nIHRvIGFkZCBwb2ludCB0byBhbHJlYWR5IGNsb3NlZCBwYXRoIQC3Q7pRAAAAAAAA//8AAAAAbgAAAG8AAABwAAAAcQAAAB4eHv9/f3///wAA/wD/AP8AAAAAEAAAAAAAAAASAAAAAAAAABkAAAAAAAAADgAAAAAAAAAWAAAA6AMAAP////8AAAD/AAAAAAEAAAACAAAAAgAAAAMAAAAAAAAAAQAAAAAAAAABAAAAAQAAAAAAAAADAAAAAgAAAAEAAAAAAAAAAgAAAAEAAAACAAAAAwAAAAIAAAABAAAAAwAAAAIAAAADAAAABAAAAAMAAAAAAAAABAAA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\");\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n await new Promise(r => setTimeout(r, 0));\n return bytes.buffer;\n})();\nenv.loadModule(source, {\"memoryInitial\":5,\"tableInitial\":342,\"multithreaded\":false});\nenv.linkVariables(false);\n\n// export root namespace and its methods and constants\nconst { constructor: v0 } = root;\nconst v1 = env.getSpecialExports();\nconst {\n connect_web_gpu_programs: v2,\n connect_on_asset_update_callback: v3,\n connect_on_asset_selection_callback: v4,\n connect_cache_callbacks: v5,\n ASSET_ID_TRESHOLD: v6,\n init_state: v7,\n update_render_scale: v8,\n add_asset: v9,\n remove_asset: v10,\n on_update_pick: v11,\n on_pointer_down: v12,\n on_pointer_up: v13,\n on_pointer_move: v14,\n on_pointer_leave: v15,\n commit_changes: v16,\n render_draw: v17,\n render_pick: v18,\n reset_assets: v19,\n destroy_state: v20,\n import_icons: v21,\n set_tool: v22,\n stop_drawing_shape: v23,\n add_shape: v24,\n} = v0;\nexport {\n v0 as default,\n v1 as __zigar,\n v2 as connect_web_gpu_programs,\n v3 as connect_on_asset_update_callback,\n v4 as connect_on_asset_selection_callback,\n v5 as connect_cache_callbacks,\n v6 as ASSET_ID_TRESHOLD,\n v7 as init_state,\n v8 as update_render_scale,\n v9 as add_asset,\n v10 as remove_asset,\n v11 as on_update_pick,\n v12 as on_pointer_down,\n v13 as on_pointer_up,\n v14 as on_pointer_move,\n v15 as on_pointer_leave,\n v16 as commit_changes,\n v17 as render_draw,\n v18 as render_pick,\n v19 as reset_assets,\n v20 as destroy_state,\n v21 as import_icons,\n v22 as set_tool,\n v23 as stop_drawing_shape,\n v24 as add_shape,\n};\nawait v1.init();","import { memberNames, MemberType } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport '../symbols.js';\nimport { defineProperty, defineValue } from '../utils.js';\n\n// handle retrieval of accessors\n\nvar all = mixin({\n init() {\n this.accessorCache = new Map();\n },\n getAccessor(access, member) {\n const { type, bitSize, bitOffset, byteSize } = member;\n const names = [];\n const unaligned = (byteSize === undefined) && (bitSize & 0x07 || bitOffset & 0x07);\n if (unaligned) {\n names.push('Unaligned');\n }\n let name = memberNames[type];\n if (bitSize > 32 && (type === MemberType.Int || type === MemberType.Uint)) {\n if (bitSize <= 64) {\n name = `Big${name}`;\n } else {\n name = `Jumbo${name}`;\n }\n }\n names.push(name, `${(type === MemberType.Bool && byteSize) ? byteSize * 8 : bitSize}`);\n if (unaligned) {\n names.push(`@${bitOffset}`);\n }\n const accessorName = access + names.join('');\n // see if it's a built-in method of DataView\n let accessor = DataView.prototype[accessorName];\n if (accessor) {\n return accessor;\n }\n // check cache\n accessor = this.accessorCache.get(accessorName);\n if (accessor) {\n return accessor;\n }\n while (names.length > 0) {\n const handlerName = `getAccessor${names.join('')}`;\n if (accessor = this[handlerName]?.(access, member)) {\n break;\n }\n names.pop();\n }\n if (!accessor) {\n throw new Error(`No accessor available: ${accessorName}`);\n }\n defineProperty(accessor, 'name', defineValue(accessorName));\n this.accessorCache.set(accessorName, accessor);\n return accessor;\n },\n});\n\nexport { all as default };\n","import { MemberType } from '../constants.js';\nimport { mixin } from '../environment.js';\n\n// handles bools, including implicit ones in optional pointers, where an address\n// of zero would be treated as boolean false\n\nvar bool = mixin({\n getAccessorBool(access, member) {\n const { byteSize } = member;\n const bitSize = byteSize * 8;\n const f = this.getAccessor(access, { type: MemberType.Uint, bitSize, byteSize });\n if (access === 'get') {\n return function(offset, littleEndian) {\n return !!f.call(this, offset, littleEndian);\n }\n } else {\n const zero = (bitSize <= 32) ? 0 : 0n;\n const one = (bitSize <= 32) ? 1 : 1n;\n return function(offset, value, littleEndian) {\n f.call(this, offset, value ? one : zero, littleEndian);\n }\n }\n }\n});\n\nexport { bool as default };\n","import { MemberType } from '../constants.js';\nimport { mixin } from '../environment.js';\n\n// handle non-standard ints 32-bit or smaller\n\nvar int = mixin({\n getAccessorInt(access, member) {\n const { bitSize, byteSize } = member;\n if (byteSize) {\n const f = this.getAccessor(access, { type: MemberType.Uint, bitSize: byteSize * 8, byteSize });\n const signMask = 2 ** (bitSize - 1);\n const valueMask = signMask - 1;\n if (access === 'get') {\n return function(offset, littleEndian) {\n const n = f.call(this, offset, littleEndian);\n return (n & valueMask) - (n & signMask);\n };\n } else {\n return function(offset, value, littleEndian) {\n const n = (value < 0) ? signMask | (value & valueMask) : value & valueMask;\n f.call(this, offset, n, littleEndian);\n };\n }\n }\n }\n});\n\nexport { int as default };\n","import { mixin } from '../environment.js';\n\n// handle non-standard uints 32-bit or smaller\n\nvar uint = mixin({\n getAccessorUint(access, member) {\n const { bitSize, byteSize } = member;\n if (byteSize) {\n const f = this.getAccessor(access, { ...member, bitSize: byteSize * 8 });\n const valueMask = (2 ** bitSize) - 1;\n if (access === 'get') {\n return function(offset, littleEndian) {\n const n = f.call(this, offset, littleEndian);\n return n & valueMask;\n };\n } else {\n return function(offset, value, littleEndian) {\n const n = value & valueMask;\n f.call(this, offset, n, littleEndian);\n };\n }\n }\n }\n});\n\nexport { uint as default };\n","const StructureType = {\n Primitive: 0,\n Array: 1,\n Struct: 2,\n Union: 3,\n ErrorUnion: 4,\n ErrorSet: 5,\n Enum: 6,\n Optional: 7,\n Pointer: 8,\n Slice: 9,\n Vector: 10,\n Opaque: 11,\n ArgStruct: 12,\n VariadicStruct: 13,\n Function: 14,\n};\nconst structureNames = Object.keys(StructureType);\nconst StructureFlag = {\n HasValue: 0x0001,\n HasObject: 0x0002,\n HasPointer: 0x0004,\n HasSlot: 0x0008,\n};\nconst PrimitiveFlag = {\n IsSize: 0x0010,\n};\nconst ArrayFlag = {\n HasSentinel: 0x0010,\n IsString: 0x0020,\n IsTypedArray: 0x0040,\n IsClampedArray: 0x0080,\n};\nconst StructFlag = {\n IsExtern: 0x0010,\n IsPacked: 0x0020,\n IsIterator: 0x0040,\n IsTuple: 0x0080,\n\n IsAllocator: 0x0100,\n IsPromise: 0x0200,\n IsGenerator: 0x0400,\n IsAbortSignal: 0x0800,\n\n IsOptional: 0x1000,\n IsReader: 0x2000,\n IsWriter: 0x4000,\n};\nconst UnionFlag = {\n HasSelector: 0x0010,\n HasTag: 0x0020,\n HasInaccessible: 0x0040,\n IsExtern: 0x0080,\n\n IsPacked: 0x0100,\n IsIterator: 0x0200,\n};\nconst EnumFlag = {\n IsOpenEnded: 0x0010,\n IsIterator: 0x0020,\n};\nconst OptionalFlag = {\n HasSelector: 0x0010,\n};\nconst PointerFlag = {\n HasLength: 0x0010,\n IsMultiple: 0x0020,\n IsSingle: 0x0040,\n IsConst: 0x0080,\n\n IsNullable: 0x0100,\n};\nconst SliceFlag = {\n HasSentinel: 0x0010,\n IsString: 0x0020,\n IsTypedArray: 0x0040,\n IsClampedArray: 0x0080,\n\n IsOpaque: 0x0100,\n};\nconst ErrorSetFlag = {\n IsGlobal: 0x0010,\n};\nconst OpaqueFlag = {\n IsIterator: 0x0010,\n};\nconst VectorFlag = {\n IsTypedArray: 0x0010,\n IsClampedArray: 0x0020,\n};\nconst ArgStructFlag = {\n HasOptions: 0x0010,\n IsThrowing: 0x0020,\n IsAsync: 0x0040,\n};\n\nconst MemberType = {\n Void: 0,\n Bool: 1,\n Int: 2,\n Uint: 3,\n Float: 4,\n Object: 5,\n Type: 6,\n Literal: 7,\n Null: 8,\n Undefined: 9,\n Unsupported: 10,\n};\nconst memberNames = Object.keys(MemberType);\nconst MemberFlag = {\n IsRequired: 0x0001,\n IsReadOnly: 0x0002,\n IsPartOfSet: 0x0004,\n IsSelector: 0x0008,\n IsMethod: 0x0010,\n IsSentinel: 0x0020,\n IsBackingInt: 0x0040,\n IsString: 0x0080,\n};\n\nconst CallResult = {\n OK: 0,\n Failure: 1,\n Deadlock: 2,\n Disabled: 3,\n};\n\nconst ModuleAttribute = {\n LittleEndian: 0x0001,\n RuntimeSafety: 0x0002,\n LibC: 0x0004,\n};\n\nconst VisitorFlag = {\n IsInactive: 0x0001,\n IsImmutable: 0x0002,\n\n IgnoreUncreated: 0x0004,\n IgnoreInactive: 0x0008,\n IgnoreArguments: 0x0010,\n IgnoreRetval: 0x0020,\n};\n\nexport { ArgStructFlag, ArrayFlag, CallResult, EnumFlag, ErrorSetFlag, MemberFlag, MemberType, ModuleAttribute, OpaqueFlag, OptionalFlag, PointerFlag, PrimitiveFlag, SliceFlag, StructFlag, StructureFlag, StructureType, UnionFlag, VectorFlag, VisitorFlag, memberNames, structureNames };\n","import { defineProperty, defineValue } from './utils.js';\n\nconst cls = {\n name: '',\n mixins: [],\n};\n\nfunction reset() {\n cls.name = '';\n cls.mixins = [];\n}\n\nfunction name(s) {\n cls.name = s;\n}\n\nfunction mixin(object) {\n if (!cls.mixins.includes(object)) {\n cls.mixins.push(object);\n }\n return object;\n}\n\nfunction defineEnvironment() {\n return defineClass(cls.name, cls.mixins);\n}\n\nfunction defineClass(name, mixins) {\n const initFunctions = [];\n const constructor = function() {\n for (const init of initFunctions) {\n init.call(this);\n }\n };\n const { prototype } = constructor;\n defineProperty(constructor, 'name', defineValue(name));\n for (const mixin of mixins) {\n for (let [ name, object ] of Object.entries(mixin)) {\n if (name === 'init') {\n initFunctions.push(object);\n } else {\n if (typeof(object) === 'function') ; else {\n let current = prototype[name];\n if (current !== undefined) {\n if (current?.constructor === Object) {\n object = Object.assign({ ...current }, object);\n } else if (current !== object) {\n throw new Error(`Duplicate property: ${name}`);\n }\n }\n }\n defineProperty(prototype, name, defineValue(object));\n }\n }\n }\n return constructor;\n}\n\nexport { defineClass, defineEnvironment, mixin, name, reset };\n","import { StructureType, memberNames } from './constants.js';\nimport { TYPED_ARRAY, UPDATE } from './symbols.js';\nimport { getPrimitiveName, defineProperty } from './utils.js';\n\nclass MustBeOverridden extends Error {\n constructor() {\n super(`Method must be overridden`);\n }\n}\n\nclass InvalidIntConversion extends SyntaxError {\n constructor(arg) {\n super(`Cannot convert ${arg} to an Int`);\n }\n}\n\nclass Unsupported extends TypeError {\n constructor() {\n super(`Unsupported`);\n }\n}\n\nclass NoInitializer extends TypeError {\n constructor(structure) {\n const { name } = structure;\n super(`An initializer must be provided to the constructor of ${name}, even when the intended value is undefined`);\n }\n}\n\nclass BufferSizeMismatch extends TypeError {\n constructor(structure, dv, target = null) {\n const { name, type, byteSize } = structure;\n const actual = dv.byteLength;\n const s = (byteSize !== 1) ? 's' : '';\n let msg;\n if (type === StructureType.Slice && !target) {\n msg = `${name} has elements that are ${byteSize} byte${s} in length, received ${actual}`;\n } else {\n const total = (type === StructureType.Slice) ? target.length * byteSize : byteSize;\n msg = `${name} has ${total} byte${s}, received ${actual}`;\n }\n super(msg);\n }\n}\n\nclass BufferExpected extends TypeError {\n constructor(structure) {\n const { type, byteSize, typedArray } = structure;\n const s = (byteSize !== 1) ? 's' : '';\n const acceptable = [ 'ArrayBuffer', 'DataView' ].map(addArticle);\n if (typedArray) {\n acceptable.push(addArticle(typedArray.name));\n }\n let msg;\n if (type === StructureType.Slice) {\n msg = `Expecting ${formatList(acceptable)} that can accommodate items ${byteSize} byte${s} in length`;\n } else {\n msg = `Expecting ${formatList(acceptable)} that is ${byteSize} byte${s} in length`;\n }\n super(msg);\n }\n}\n\nclass EnumExpected extends TypeError {\n constructor(structure, arg) {\n const { name } = structure;\n let msg;\n if (typeof(arg) === 'number' || typeof(arg) === 'bigint') {\n msg = `Value given does not correspond to an item of enum ${name}: ${arg}`;\n } else {\n msg = `Enum item of the type ${name} expected, received ${arg}`;\n }\n super(msg);\n }\n}\n\nclass ErrorExpected extends TypeError {\n constructor(structure, arg) {\n const { name } = structure;\n const type = typeof(arg);\n let msg;\n if (type === 'string' || type === 'number' || isErrorJSON(arg)) {\n if (isErrorJSON(arg)) {\n arg = `{ error: ${JSON.stringify(arg.error)} }`;\n }\n msg = `Error ${type} does not corresponds to any error in error set ${name}: ${arg}`;\n } else {\n msg = `Error of the type ${name} expected, received ${arg}`;\n }\n super(msg);\n }\n}\n\nclass NotInErrorSet extends TypeError {\n constructor(structure) {\n const { name } = structure;\n super(`Error given is not a part of error set ${name}`);\n }\n}\n\nclass InvalidType extends TypeError {\n constructor(structure) {\n const { name } = structure;\n super(`Object of specific type expected: ${name}`);\n }\n}\n\nclass MultipleUnionInitializers extends TypeError {\n constructor(structure) {\n const { name } = structure;\n super(`Only one property of ${name} can be given a value`);\n }\n}\n\nclass InactiveUnionProperty extends TypeError {\n constructor(structure, name, currentName) {\n super(`Accessing property ${name} when ${currentName} is active`);\n }\n}\n\nclass MissingUnionInitializer extends TypeError {\n constructor(structure, arg, exclusion) {\n const { name, instance: { members } } = structure;\n const missing = members.slice(0, exclusion ? -1 : undefined).map(m => m.name);\n super(`${name} needs an initializer for one of its union properties: ${missing.join(', ')}`);\n }\n}\n\nclass InvalidInitializer extends TypeError {\n constructor(structure, expected, arg) {\n const { name } = structure;\n const acceptable = [];\n if (Array.isArray(expected)) {\n for (const type of expected) {\n acceptable.push(addArticle(type));\n }\n } else {\n acceptable.push(addArticle(expected));\n }\n const received = getDescription(arg);\n super(`${name} expects ${formatList(acceptable)} as argument, received ${received}`);\n }\n}\n\nclass InvalidArrayInitializer extends InvalidInitializer {\n constructor(structure, arg, shapeless = false) {\n const { instance: { members: [ member ] }, type, constructor } = structure;\n const acceptable = [];\n const primitive = getPrimitiveName(member);\n if (primitive) {\n let object;\n switch (member.structure?.type) {\n case StructureType.Enum: object = 'enum item'; break;\n case StructureType.ErrorSet: object = 'error'; break;\n default: object = primitive;\n }\n acceptable.push(`array of ${object}s`);\n } else {\n acceptable.push(`array of objects`);\n }\n if (constructor[TYPED_ARRAY]) {\n acceptable.push(constructor[TYPED_ARRAY].name);\n }\n if (type === StructureType.Slice && shapeless) {\n acceptable.push(`length`);\n }\n super(structure, acceptable.join(' or '), arg);\n }\n}\n\nclass ArrayLengthMismatch extends TypeError {\n constructor(structure, target, arg) {\n const { name, length, instance: { members: [ member ] } } = structure;\n const { structure: { constructor: elementConstructor} } = member;\n const { length: argLength, constructor: argConstructor } = arg;\n // get length from object whech it's a slice\n const actualLength = target?.length ?? length;\n const s = (actualLength !== 1) ? 's' : '';\n let received;\n if (argConstructor === elementConstructor) {\n received = `only a single one`;\n } else if (argConstructor.child === elementConstructor) {\n received = `a slice/array that has ${argLength}`;\n } else {\n received = `${argLength} initializer${argLength > 1 ? 's' : ''}`;\n }\n super(`${name} has ${actualLength} element${s}, received ${received}`);\n }\n}\n\nclass InvalidSliceLength extends TypeError {\n constructor(length, max) {\n if (length < 0) {\n super(`Length of slice cannot be negative`);\n } else {\n super(`Length of slice can be ${max} or less, received ${length}`);\n }\n }\n}\n\nclass MissingInitializers extends TypeError {\n constructor(structure, missing) {\n const { name } = structure;\n super(`Missing initializers for ${name}: ${missing.join(', ')}`);\n }\n}\n\nclass NoProperty extends TypeError {\n constructor(structure, propName) {\n const { name, instance: { members } } = structure;\n const member = members.find(m => m.name === propName);\n let msg;\n if (member) {\n msg = `Comptime value cannot be changed: ${propName}`;\n } else {\n msg = `${name} does not have a property with that name: ${propName}`;\n }\n super(msg);\n }\n}\n\nclass ArgumentCountMismatch extends Error {\n constructor(expected, received, variadic = false) {\n super();\n const updateText = (argOffset) => {\n expected -= argOffset;\n received -= argOffset;\n const s = (expected !== 1) ? 's' : '';\n const p = (variadic) ? 'at least ' : '';\n this.message = `Expecting ${p}${expected} argument${s}, received ${received}`;\n this.stack = adjustStack(this.stack, 'new Arg(');\n };\n updateText(0);\n defineProperty(this, UPDATE, { value: updateText, enumerable: false });\n }\n}\n\nclass UndefinedArgument extends Error {\n constructor() {\n super(`Undefined argument`);\n }\n}\n\nclass NoCastingToPointer extends TypeError {\n constructor() {\n super(`Non-slice pointers can only be created with the help of the new operator`);\n }\n}\n\nclass NoCastingToFunction extends TypeError {\n constructor() {\n super(`Casting to function is not allowed`);\n }\n}\n\nclass ConstantConstraint extends TypeError {\n constructor(structure, pointer) {\n const { name: target } = structure;\n const { constructor: { name } } = pointer;\n super(`Conversion of ${name} to ${target} requires an explicit cast`);\n }\n}\n\nclass MisplacedSentinel extends TypeError {\n constructor(structure, value, index, length) {\n const { name } = structure;\n super(`${name} expects the sentinel value ${value} at ${length - 1}, found at ${index}`);\n }\n}\n\nclass MissingSentinel extends TypeError {\n constructor(structure, value, length) {\n const { name } = structure;\n super(`${name} expects the sentinel value ${value} at ${length - 1}`);\n }\n}\n\nclass AlignmentConflict extends TypeError {\n constructor(align1, align2) {\n super(`Unable to simultaneously align memory to ${align2}-byte and ${align1}-byte boundary`);\n }\n}\n\nclass AssigningToConstant extends TypeError {\n constructor(pointer) {\n const { constructor: { name } } = pointer;\n super(`${name} cannot be modified`);\n }\n}\n\nclass TypeMismatch extends TypeError {\n constructor(expected, arg) {\n const received = getDescription(arg);\n super(`Expected ${addArticle(expected)}, received ${received}`);\n }\n}\n\nclass InaccessiblePointer extends TypeError {\n constructor() {\n super(`Pointers within an untagged union are not accessible`);\n }\n}\n\nclass NullPointer extends TypeError {\n constructor() {\n super(`Null pointer`);\n }\n}\n\nclass PreviouslyFreed extends TypeError {\n constructor(arg) {\n super(`Object has been freed already: ${arg.constructor.name}`);\n }\n}\n\nclass InvalidPointerTarget extends TypeError {\n constructor(structure, arg) {\n const { name } = structure;\n let target;\n if (arg != null) {\n const noun = (arg instanceof Object && arg.constructor !== Object) ? `${arg.constructor.name} object`: typeof(arg);\n const a = article(noun);\n target = `${a} ${noun}`;\n } else {\n target = arg + '';\n }\n super(`${name} cannot point to ${target}`);\n }\n}\n\nclass ZigMemoryTargetRequired extends TypeError {\n constructor() {\n super(`Pointers in Zig memory cannot point to garbage-collected object`);\n }\n}\n\nclass Overflow extends TypeError {\n constructor(member, value) {\n const { type, bitSize } = member;\n const name = (bitSize > 32 ? 'Big' : '') + memberNames[type] + bitSize;\n super(`${name} cannot represent the value given: ${value}`);\n }\n}\n\nclass OutOfBound extends RangeError {\n constructor(member, index) {\n const { name } = member;\n super(`Index exceeds the size of ${name ?? 'array'}: ${index}`);\n }\n}\n\nclass NotUndefined extends TypeError {\n constructor(member) {\n const { name } = member;\n const rvalue = (name !== undefined) ? `Property ${name}` : `Element`;\n super(`${rvalue} can only be undefined`);\n }\n}\n\nclass NotOnByteBoundary extends TypeError {\n constructor(member) {\n const { name, structure: { name: struct } } = member;\n super(`Unable to create ${struct} as it is not situated on a byte boundary: ${name}`);\n }\n}\n\nclass ReadOnly extends TypeError {\n constructor() {\n super(`Unable to modify read-only object`);\n }\n}\n\nclass ReadOnlyTarget extends TypeError {\n constructor(structure) {\n const { name } = structure;\n super(`${name} cannot point to a read-only object`);\n }\n}\n\nclass AccessingOpaque extends TypeError {\n constructor(structure) {\n const { name } = structure;\n super(`Unable to access opaque structure ${name}`);\n }\n}\n\nclass CreatingOpaque extends TypeError {\n constructor(structure) {\n const { name } = structure;\n super(`Unable to create instance of ${name}, as it is opaque`);\n }\n}\n\nclass InvalidVariadicArgument extends TypeError {\n constructor() {\n super(`Arguments passed to variadic function must be casted to a Zig type`);\n }\n}\n\nclass UnexpectedGenerator extends TypeError {\n constructor() {\n super(`Unexpected async generator`);\n }\n}\n\nclass ZigError extends Error {\n constructor(error, remove = 0) {\n if (error instanceof Error) {\n super(error.message);\n error.stack = adjustStack(this.stack, remove);\n return error;\n } else {\n super(error ?? 'Error encountered in Zig code');\n }\n }\n}\n\nclass Exit extends ZigError {\n constructor(code) {\n super('Program exited');\n this.code = code;\n }\n}\n\nfunction adjustArgumentError(err, argIndex) {\n const updateText = (argOffset) => {\n argIndex -= argOffset;\n err.message = `args[${argIndex}]: ${err.message}`;\n err.stack = adjustStack(err.stack, 'new Arg(');\n };\n updateText(0);\n defineProperty(err, UPDATE, { value: updateText, enumerable: false });\n return err;\n}\n\nfunction adjustStack(stack, search) {\n if (typeof(stack) === 'string') {\n const lines = stack.split('\\n');\n const index = lines.findIndex(s => s.includes(search));\n if (index !== -1) {\n lines.splice(1, index);\n stack = lines.join('\\n');\n }\n }\n return stack;\n}\n\nfunction replaceRangeError(member, index, err) {\n if (err instanceof RangeError && !(err instanceof OutOfBound)) {\n err = new OutOfBound(member, index);\n }\n return err;\n}\n\nfunction throwReadOnly() {\n throw new ReadOnly();\n}\n\nfunction checkInefficientAccess(context, access, len) {\n if (context.bytes === undefined) {\n context.bytes = context.calls = 0;\n }\n context.bytes += len;\n context.calls++;\n if (context.calls === 100) {\n const bytesPerCall = context.bytes / context.calls;\n if (bytesPerCall < 8) {\n const s = bytesPerCall !== 1 ? 's' : '';\n const action = (access === 'read') ? 'reading' : 'writing';\n const name = (access === 'read') ? 'Reader' : 'Writer';\n throw new Error(`Inefficient ${access} access. Each call is only ${action} ${bytesPerCall} byte${s}. Please use std.io.Buffered${name}.`);\n }\n }\n}\n\nfunction deanimalizeErrorName(name) {\n // deal with snake_case first\n let s = name.replace(/_/g, ' ');\n // then camelCase, using a try block in case Unicode regex fails\n try {\n s = s.replace(/(\\p{Uppercase}+)(\\p{Lowercase}*)/gu, (m0, m1, m2) => {\n if (m1.length === 1) {\n return ` ${m1.toLocaleLowerCase()}${m2}`;\n } else {\n if (m2) {\n return m0;\n } else {\n return ` ${m1}`;\n }\n }\n }).trimStart();\n } catch (err) {\n }\n return s.charAt(0).toLocaleUpperCase() + s.substring(1);\n}\n\nfunction isErrorJSON(arg) {\n return typeof(arg) === 'object' && typeof(arg.error) === 'string' && Object.keys(arg).length === 1 ;\n}\n\nfunction getDescription(arg) {\n const type = typeof(arg);\n let s;\n if (type === 'object') {\n s = (arg) ? Object.prototype.toString.call(arg) : 'null';\n } else {\n s = type;\n }\n return addArticle(s);\n}\n\nfunction addArticle(noun) {\n return `${article(noun)} ${noun}`;\n}\n\nfunction article(noun) {\n return /^\\W*[aeiou]/i.test(noun) ? 'an' : 'a';\n}\n\nfunction formatList(list, conj = 'or') {\n const sep = ` ${conj} `;\n if (list.length > 2) {\n return list.slice(0, -1).join(', ') + sep + list[list.length - 1];\n } else {\n return list.join(sep);\n }\n}\n\nexport { AccessingOpaque, AlignmentConflict, ArgumentCountMismatch, ArrayLengthMismatch, AssigningToConstant, BufferExpected, BufferSizeMismatch, ConstantConstraint, CreatingOpaque, EnumExpected, ErrorExpected, Exit, InaccessiblePointer, InactiveUnionProperty, InvalidArrayInitializer, InvalidInitializer, InvalidIntConversion, InvalidPointerTarget, InvalidSliceLength, InvalidType, InvalidVariadicArgument, MisplacedSentinel, MissingInitializers, MissingSentinel, MissingUnionInitializer, MultipleUnionInitializers, MustBeOverridden, NoCastingToFunction, NoCastingToPointer, NoInitializer, NoProperty, NotInErrorSet, NotOnByteBoundary, NotUndefined, NullPointer, OutOfBound, Overflow, PreviouslyFreed, ReadOnly, ReadOnlyTarget, TypeMismatch, UndefinedArgument, UnexpectedGenerator, Unsupported, ZigError, ZigMemoryTargetRequired, addArticle, adjustArgumentError, article, checkInefficientAccess, deanimalizeErrorName, formatList, getDescription, isErrorJSON, replaceRangeError, throwReadOnly };\n","import { StructureType } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { TypeMismatch, PreviouslyFreed } from '../errors.js';\nimport { ZIG, MEMORY, TYPE, ALIGN } from '../symbols.js';\nimport { usizeInvalid, encodeText } from '../utils.js';\n\nvar allocatorMethods = mixin({\n defineAlloc() {\n return {\n value(len, align = 1) {\n const lz = Math.clz32(align); \n if (align !== 1 << (31 - lz)) {\n throw new Error(`Invalid alignment: ${align}`);\n }\n const ptrAlign = 31 - lz;\n const { vtable: { alloc }, ptr } = this;\n const slicePtr = alloc(ptr, len, ptrAlign, 0);\n if (!slicePtr) {\n throw new Error('Out of memory');\n }\n // alloc returns a [*]u8, which has a initial length of 1\n slicePtr.length = len;\n const dv = slicePtr['*'][MEMORY];\n // attach alignment so we can find it again\n dv[ZIG].align = align;\n return dv;\n }\n };\n },\n defineFree() {\n const thisEnv = this;\n return {\n value(arg) {\n const { dv, align } = getMemory(arg);\n const zig = dv?.[ZIG];\n if (!zig) {\n throw new TypeMismatch('object containing allocated Zig memory', arg);\n }\n const { address } = zig;\n if (address === usizeInvalid) {\n throw new PreviouslyFreed(arg);\n }\n const { vtable: { free }, ptr } = this;\n const ptrAlign = 31 - Math.clz32(align); \n free(ptr, dv, ptrAlign, 0);\n thisEnv.releaseZigView(dv);\n }\n };\n },\n defineDupe() {\n const copy = this.getCopyFunction();\n return {\n value(arg) {\n const { dv: src, align, constructor } = getMemory(arg);\n if (!src) {\n throw new TypeMismatch('string, DataView, typed array, or Zig object', arg);\n }\n const dest = this.alloc(src.byteLength, align);\n copy(dest, src);\n return (constructor) ? constructor(dest) : dest;\n }\n };\n }\n});\n\nfunction getMemory(arg) {\n let dv, align = 1, constructor = null;\n if (arg instanceof DataView) {\n dv = arg;\n const zigMemoryAlign = dv?.[ZIG]?.align;\n if (zigMemoryAlign) {\n align = zigMemoryAlign;\n }\n } else if (arg instanceof ArrayBuffer) {\n dv = new DataView(arg);\n } else if (arg) {\n if (arg[MEMORY]) {\n if (arg.constructor[TYPE] === StructureType.Pointer) {\n arg = arg['*'];\n }\n dv = arg[MEMORY];\n constructor = arg.constructor;\n align = constructor[ALIGN];\n } else {\n if (typeof(arg) === 'string') {\n arg = encodeText(arg);\n }\n const { buffer, byteOffset, byteLength, BYTES_PER_ELEMENT } = arg;\n if (buffer && byteOffset !== undefined && byteLength !== undefined) {\n dv = new DataView(buffer, byteOffset, byteLength);\n align = BYTES_PER_ELEMENT;\n }\n }\n }\n return { dv, align, constructor };\n}\n\nexport { allocatorMethods as default };\n","import { structureNames } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { MEMORY, SLOTS, TYPE, ALIGN, SIZE, ENVIRONMENT } from '../symbols.js';\n\nvar baseline = mixin({\n init() {\n this.variables = [];\n },\n getSpecialExports() {\n const check = (v) => {\n if (v === undefined) throw new Error('Not a Zig type');\n return v;\n };\n return {\n init: (...args) => this.initialize?.(...args),\n abandon: () => this.abandonModule?.(),\n connect: (console) => this.consoleObject = console,\n sizeOf: (T) => check(T?.[SIZE]),\n alignOf: (T) => check(T?.[ALIGN]),\n typeOf: (T) => structureNamesLC[check(T?.[TYPE])],\n };\n },\n recreateStructures(structures, settings) {\n Object.assign(this, settings);\n const insertObjects = (dest, placeholders) => {\n for (const [ slot, placeholder ] of Object.entries(placeholders)) {\n dest[slot] = createObject(placeholder);\n }\n return dest;\n };\n // empty arrays aren't replicated\n const getBuffer = a => (a.length) ? a.buffer : new ArrayBuffer(0);\n const createObject = (placeholder) => {\n const { memory, structure, actual } = placeholder;\n if (memory) {\n if (actual) {\n return actual;\n } else {\n const { array, offset, length } = memory;\n const dv = this.obtainView(getBuffer(array), offset, length);\n const { handle, const: isConst } = placeholder;\n const constructor = structure?.constructor;\n const object = placeholder.actual = constructor.call(ENVIRONMENT, dv);\n if (isConst) {\n this.makeReadOnly(object);\n }\n if (placeholder.slots) {\n insertObjects(object[SLOTS], placeholder.slots);\n }\n if (handle) {\n // need to replace dataview with one pointing to Zig memory later,\n // when the VM is up and running\n this.variables.push({ handle, object });\n }\n return object;\n }\n } else {\n return structure;\n }\n };\n const objectPlaceholders = new Map();\n for (const structure of structures) {\n // recreate the actual template using the provided placeholder\n for (const scope of [ structure.instance, structure.static ]) {\n if (scope.template) {\n const { slots, memory, handle } = scope.template;\n const object = scope.template = {};\n if (memory) {\n const { array, offset, length } = memory;\n object[MEMORY] = this.obtainView(getBuffer(array), offset, length);\n if (handle) {\n this.variables.push({ handle, object });\n }\n }\n if (slots) {\n // defer creation of objects until shapes of structures are finalized\n const realSlots = object[SLOTS] = {};\n objectPlaceholders.set(realSlots, slots);\n }\n }\n }\n this.defineStructure(structure);\n }\n // insert objects into template slots\n for (const [ slots, placeholders ] of objectPlaceholders) {\n insertObjects(slots, placeholders);\n }\n // add static members, methods, etc.\n for (const structure of structures) {\n this.finalizeStructure(structure);\n }\n },\n});\n\nconst structureNamesLC = structureNames.map(name => name.replace(/([a-z])([A-Z])/g, '$1 $2').toLowerCase());\n\nexport { baseline as default };\n","import { CallResult, StructureType, StructFlag, MemberType } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { UnexpectedGenerator } from '../errors.js';\nimport { MEMORY, ZIG, ALLOCATOR, VISIT, THROWING, RETURN, YIELD } from '../symbols.js';\n\nvar callMarshalingInbound = mixin({\n init() {\n this.jsFunctionThunkMap = new Map();\n this.jsFunctionCallerMap = new Map();\n this.jsFunctionControllerMap = new Map();\n this.jsFunctionIdMap = new WeakMap();\n this.jsFunctionNextId = 1;\n },\n getFunctionId(fn) {\n let id = this.jsFunctionIdMap.get(fn);\n if (id === undefined) {\n id = this.jsFunctionNextId++;\n this.jsFunctionIdMap.set(fn, id);\n }\n return id;\n },\n getFunctionThunk(fn, jsThunkController) {\n const id = this.getFunctionId(fn);\n let dv = this.jsFunctionThunkMap.get(id);\n if (dv === undefined) {\n const controllerAddress = this.getViewAddress(jsThunkController[MEMORY]);\n const thunkAddress = this.createJsThunk(controllerAddress, id);\n if (!thunkAddress) {\n throw new Error('Unable to create function thunk');\n }\n dv = this.obtainZigView(thunkAddress, 0);\n this.jsFunctionThunkMap.set(id, dv);\n this.jsFunctionControllerMap.set(id, jsThunkController);\n }\n return dv;\n },\n createInboundCaller(fn, ArgStruct) {\n const handler = (dv, futexHandle) => {\n let result = CallResult.OK;\n let awaiting = false;\n try {\n const argStruct = ArgStruct(dv);\n if (VISIT in argStruct) {\n // reset pointers in arg so we don't pick up old pointers\n // objects in stack memory really shouldn't be cached\n argStruct[VISIT]('reset');\n const context = this.startContext();\n this.updatePointerTargets(context, argStruct, true);\n this.updateShadowTargets(context);\n this.endContext();\n }\n const onError = function(err) {\n try {\n // if the error is not part of the error set returned by the function,\n // the following will throw\n if (ArgStruct[THROWING] && err instanceof Error) {\n argStruct[RETURN](err);\n } else {\n throw err;\n }\n } catch (_) {\n result = CallResult.Failure;\n console.error(err);\n }\n };\n const onReturn = function(value) {\n try {\n // [RETURN] defaults to the setter of retval; if the function accepts a promise,\n // it'd invoke the callback\n argStruct[RETURN](value);\n } catch (err) {\n result = CallResult.Failure;\n console.error(err);\n }\n };\n try {\n const retval = fn(...argStruct);\n const hasCallback = argStruct.hasOwnProperty(RETURN);\n if (retval?.[Symbol.toStringTag] === 'Promise') {\n // we can handle a promise when the Zig caller is able to wait or\n // it's receiving the result through a callback\n if (futexHandle || hasCallback) {\n const promise = retval.then(onReturn, onError);\n if (futexHandle) {\n promise.then(() => this.finalizeAsyncCall(futexHandle, result));\n }\n awaiting = true;\n result = CallResult.OK;\n } else {\n result = CallResult.Deadlock;\n }\n } else if (retval?.[Symbol.asyncIterator]) {\n if (argStruct.hasOwnProperty(YIELD)) {\n this.pipeContents(retval, argStruct);\n result = CallResult.OK;\n } else {\n throw new UnexpectedGenerator();\n }\n } else if (retval != undefined || !hasCallback) {\n onReturn(retval);\n }\n } catch (err) {\n onError(err);\n }\n } catch(err) {\n console.error(err);\n result = CallResult.Failure;\n }\n if (futexHandle && !awaiting) {\n this.finalizeAsyncCall(futexHandle, result);\n }\n return result;\n };\n const id = this.getFunctionId(fn);\n this.jsFunctionCallerMap.set(id, handler);\n return function(...args) {\n return fn(...args);\n };\n },\n defineArgIterator(members) {\n const thisEnv = this;\n const allocatorTotal = members.filter(({ structure: s }) => {\n return (s.type === StructureType.Struct) && (s.flags & StructFlag.IsAllocator);\n }).length;\n return {\n value() {\n let options;\n let allocatorCount = 0, callbackCount = 0, signalCount = 0;\n const args = [];\n for (const [ srcIndex, { structure, type } ] of members.entries()) {\n // error unions will throw on access, in which case we pass the error as the argument\n try {\n let arg = this[srcIndex];\n if (type === MemberType.Object && arg?.[MEMORY]?.[ZIG]) {\n // create copy in JS memory\n arg = new arg.constructor(arg);\n }\n let optName, opt;\n if (structure.type === StructureType.Struct) {\n if (structure.flags & StructFlag.IsAllocator) {\n optName = (allocatorTotal === 1) ? `allocator` : `allocator${++allocatorCount}`;\n opt = this[ALLOCATOR] = arg;\n } else if (structure.flags & StructFlag.IsPromise) {\n optName = 'callback';\n if (++callbackCount === 1) {\n opt = thisEnv.createPromiseCallback(this, arg);\n }\n } else if (structure.flags & StructFlag.IsGenerator) {\n optName = 'callback';\n if (++callbackCount === 1) {\n opt = thisEnv.createGeneratorCallback(this, arg);\n }\n } else if (structure.flags & StructFlag.IsAbortSignal) {\n optName = 'signal';\n if (++signalCount === 1) {\n opt = thisEnv.createInboundSignal(arg);\n }\n }\n }\n if (optName !== undefined) {\n if (opt !== undefined) {\n options ||= {};\n options[optName] = opt;\n }\n } else {\n // just a regular argument\n args.push(arg);\n }\n } catch (err) {\n args.push(err);\n }\n }\n if (options) {\n args.push(options);\n }\n return args[Symbol.iterator]();\n }\n };\n },\n handleJsCall(id, argAddress, argSize, futexHandle = 0) {\n const dv = this.obtainZigView(argAddress, argSize, false);\n const caller = this.jsFunctionCallerMap.get(id);\n return (caller) ? caller(dv, futexHandle) : CallResult.Failure;\n },\n releaseFunction(id) {\n const thunk = this.jsFunctionThunkMap.get(id);\n const controller = this.jsFunctionControllerMap.get(id);\n if (thunk && controller) {\n const controllerAddress = this.getViewAddress(controller[MEMORY]);\n const thunkAddress = this.getViewAddress(thunk);\n this.destroyJsThunk(controllerAddress, thunkAddress);\n this.releaseZigView(thunk);\n if (id) {\n this.jsFunctionThunkMap.delete(id);\n this.jsFunctionCallerMap.delete(id);\n this.jsFunctionControllerMap.delete(id);\n }\n }\n },\n freeFunction(func) {\n this.releaseFunction(this.getFunctionId(func));\n },\n ...({\n exports: {\n handleJsCall: { argType: 'iiii', returnType: 'i' },\n releaseFunction: { argType: 'i' },\n },\n imports: {\n createJsThunk: { argType: 'ii', returnType: 'i' },\n destroyJsThunk: { argType: 'ii', returnType: 'i' },\n finalizeAsyncCall: { argType: 'ii' },\n },\n } ),\n});\n\nexport { callMarshalingInbound as default };\n","import { StructureType, StructFlag, MemberType } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { ZigError, UndefinedArgument, adjustArgumentError, Exit } from '../errors.js';\nimport { ATTRIBUTES, MEMORY, FINALIZE, COPY, STRING_RETVAL, RETURN, PROMISE, GENERATOR, SETTERS, VISIT, ALLOCATOR } from '../symbols.js';\n\nvar callMarshalingOutbound = mixin({\n createOutboundCaller(thunk, ArgStruct) {\n const thisEnv = this;\n const self = function (...args) {\n {\n if (!thisEnv.runThunk) {\n return thisEnv.initPromise.then(() => {\n return self(...args);\n });\n }\n }\n // `this` is present when running a promise and generator callback received from a inbound call\n // it's going to be the argument struct of that call\n const argStruct = new ArgStruct(args, this?.[ALLOCATOR]);\n {\n try {\n return thisEnv.invokeThunk(thunk, self, argStruct);\n } catch (err) {\n // do nothing when exit code is 0\n if (err instanceof Exit && err.code === 0) {\n return;\n }\n throw err;\n }\n }\n };\n return self;\n },\n copyArguments(argStruct, argList, members, options, argAlloc) {\n let destIndex = 0, srcIndex = 0;\n let allocatorCount = 0;\n const setters = argStruct[SETTERS];\n for (const { type, structure } of members) {\n let arg, promise, generator, signal;\n if (structure.type === StructureType.Struct) {\n if (structure.flags & StructFlag.IsAllocator) {\n // use programmer-supplied allocator if found in options object, handling rare scenarios\n // where a function uses multiple allocators\n const allocator = (++allocatorCount === 1)\n ? options?.['allocator'] ?? options?.['allocator1']\n : options?.[`allocator${allocatorCount}`];\n // otherwise use default allocator which allocates relocatable memory from JS engine\n arg = allocator ?? this.createDefaultAllocator(argStruct, structure);\n } else if (structure.flags & StructFlag.IsPromise) {\n promise ||= this.createPromise(structure, argStruct, options?.['callback']);\n arg = promise;\n } else if (structure.flags & StructFlag.IsGenerator) {\n generator ||= this.createGenerator(structure, argStruct, options?.['callback']);\n arg = generator;\n } else if (structure.flags & StructFlag.IsAbortSignal) {\n // create an Int32Array with one element, hooking it up to the programmer-supplied\n // AbortSignal object if found\n signal ||= this.createSignal(structure, options?.['signal']);\n arg = signal;\n } else if (structure.flags & StructFlag.IsReader) {\n arg = this.createReader(argList[srcIndex++]);\n } else if (structure.flags & StructFlag.IsWriter) {\n arg = this.createWriter(argList[srcIndex++]);\n }\n }\n if (arg === undefined) {\n // just a regular argument\n arg = argList[srcIndex++];\n // only void has the value of undefined\n if (arg === undefined && type !== MemberType.Void) {\n throw new UndefinedArgument();\n }\n }\n try {\n const set = setters[destIndex++];\n set.call(argStruct, arg, argAlloc);\n } catch (err) {\n throw adjustArgumentError(err, destIndex - 1);\n }\n }\n },\n invokeThunk(thunk, fn, argStruct) {\n const context = this.startContext();\n const attrs = argStruct[ATTRIBUTES];\n const thunkAddress = this.getViewAddress(thunk[MEMORY]);\n const fnAddress = this.getViewAddress(fn[MEMORY]);\n const isAsync = FINALIZE in argStruct;\n const hasPointers = VISIT in argStruct;\n if (hasPointers) {\n this.updatePointerAddresses(context, argStruct);\n }\n // return address of shadow for argumnet struct\n const argAddress = this.getShadowAddress(context, argStruct, null, false)\n ;\n // get address of attributes if function variadic\n const attrAddress = (attrs) ? this.getShadowAddress(context, attrs) : 0\n ;\n this.updateShadows(context);\n const finalize = () => {\n this.updateShadowTargets(context);\n // create objects that pointers point to\n if (hasPointers) {\n this.updatePointerTargets(context, argStruct);\n }\n if (this.libc) {\n this.flushStdout?.();\n }\n this.flushConsole?.();\n this.endContext();\n };\n if (isAsync) {\n argStruct[FINALIZE] = finalize;\n }\n const success = (attrs)\n ? this.runVariadicThunk(thunkAddress, fnAddress, argAddress, attrAddress, attrs.length)\n : this.runThunk(thunkAddress, fnAddress, argAddress);\n if (!success) {\n finalize();\n throw new ZigError();\n }\n {\n // copy retval from shadow view\n argStruct[COPY]?.(this.findShadowView(argStruct[MEMORY]));\n }\n if (isAsync) {\n let retval = null;\n // if a function has returned a value or failed synchronmously, the promise is resolved immediately\n try {\n retval = argStruct.retval;\n } catch (err) {\n retval = new ZigError(err, 1);\n }\n if (retval != null) {\n if (fn[STRING_RETVAL] && retval) {\n retval = retval.string;\n }\n argStruct[RETURN](retval);\n } else if (fn[STRING_RETVAL]) {\n // so the promise or generator knows that a string is wanted \n argStruct[STRING_RETVAL] = true;\n }\n // this would be undefined if a callback function is used instead\n return argStruct[PROMISE] ?? argStruct[GENERATOR];\n } else {\n finalize();\n try {\n const { retval } = argStruct;\n return (fn[STRING_RETVAL] && retval) ? retval.string : retval;\n } catch (err) {\n throw new ZigError(err, 1);\n }\n }\n },\n ...({\n imports: {\n runThunk: { argType: 'iii', returnType: 'b' },\n runVariadicThunk: { argType: 'iiiii', returnType: 'b' },\n },\n } ),\n});\n\nexport { callMarshalingOutbound as default };\n","import { MemberType } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { MEMORY, ZIG, RESTORE } from '../symbols.js';\nimport { empty } from '../utils.js';\n\nvar dataCopying = mixin({\n init() {\n const int8 = { type: MemberType.Int, bitSize: 8, byteSize: 1 };\n const int16 = { type: MemberType.Int, bitSize: 16, byteSize: 2 };\n const int32 = { type: MemberType.Int, bitSize: 32, byteSize: 4 };\n const getInt8 = this.getAccessor('get', int8);\n const setInt8 = this.getAccessor('set', int8);\n const getInt16 = this.getAccessor('get', int16);\n const setInt16 = this.getAccessor('set', int16);\n const getInt32 = this.getAccessor('get', int32);\n const setInt32 = this.getAccessor('set', int32);\n this.copiers = {\n 0: empty,\n 1: function(dest, src) {\n setInt8.call(dest, 0, getInt8.call(src, 0));\n },\n 2: function(dest, src) {\n setInt16.call(dest, 0, getInt16.call(src, 0, true), true);\n\n },\n 4: function(dest, src) {\n setInt32.call(dest, 0, getInt32.call(src, 0, true), true);\n },\n 8: function(dest, src) {\n setInt32.call(dest, 0, getInt32.call(src, 0, true), true);\n setInt32.call(dest, 4, getInt32.call(src, 4, true), true);\n },\n 16: function(dest, src) {\n setInt32.call(dest, 0, getInt32.call(src, 0, true), true);\n setInt32.call(dest, 4, getInt32.call(src, 4, true), true);\n setInt32.call(dest, 8, getInt32.call(src, 8, true), true);\n setInt32.call(dest, 12, getInt32.call(src, 12, true), true);\n },\n 'any': function(dest, src) {\n let i = 0, len = dest.byteLength;\n while (i + 4 <= len) {\n setInt32.call(dest, i, getInt32.call(src, i, true), true);\n i += 4;\n }\n while (i + 1 <= len) {\n setInt8.call(dest, i, getInt8.call(src, i));\n i++;\n }\n },\n };\n this.resetters = {\n 0: empty,\n 1: function(dest, offset) {\n setInt8.call(dest, offset, 0);\n },\n 2: function(dest, offset) {\n setInt16.call(dest, offset, 0, true);\n\n },\n 4: function(dest, offset) {\n setInt32.call(dest, offset, 0, true);\n },\n 8: function(dest, offset) {\n setInt32.call(dest, offset + 0, 0, true);\n setInt32.call(dest, offset + 4, 0, true);\n },\n 16: function(dest, offset) {\n setInt32.call(dest, offset + 0, 0, true);\n setInt32.call(dest, offset + 4, 0, true);\n setInt32.call(dest, offset + 8, 0, true);\n setInt32.call(dest, offset + 12, 0, true);\n },\n any: function(dest, offset, len) {\n let i = offset;\n while (i + 4 <= len) {\n setInt32.call(dest, i, 0, true);\n i += 4;\n }\n while (i + 1 <= len) {\n setInt8.call(dest, i, 0);\n i++;\n }\n },\n };\n },\n defineCopier(size, multiple) {\n const copy = this.getCopyFunction(size, multiple);\n return {\n value(target) {\n {\n this[RESTORE]?.();\n target[RESTORE]?.();\n }\n const src = target[MEMORY];\n const dest = this[MEMORY];\n copy(dest, src);\n },\n };\n },\n defineResetter(offset, size) {\n const reset = this.getResetFunction(size);\n return {\n value() {\n {\n this[RESTORE]?.();\n }\n const dest = this[MEMORY];\n reset(dest, offset, size);\n }\n };\n },\n getCopyFunction(size, multiple = false) {\n const f = !multiple ? this.copiers[size] : undefined;\n return f ?? this.copiers.any;\n },\n getResetFunction(size) {\n return this.resetters[size] ?? this.resetters.any;\n },\n ...({\n defineRetvalCopier({ byteSize, bitOffset }) {\n if (byteSize > 0) {\n const thisEnv = this;\n const offset = bitOffset >> 3;\n const copy = this.getCopyFunction(byteSize);\n return {\n value(shadowDV) {\n const dv = this[MEMORY];\n const { address } = shadowDV[ZIG];\n const src = new DataView(thisEnv.memory.buffer, address + offset, byteSize);\n const dest = new DataView(dv.buffer, dv.byteOffset + offset, byteSize);\n copy(dest, src);\n }\n };\n }\n },\n copyExternBytes(dst, address, len) {\n const { memory } = this;\n const src = new DataView(memory.buffer, address, len);\n const copy = this.getCopyFunction(len);\n copy(dst, src);\n },\n } )\n});\n\nexport { dataCopying as default };\n","import { PrimitiveFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { InvalidIntConversion } from '../errors.js';\n\nvar intConversion = mixin({\n addIntConversion(getAccessor) {\n return function (access, member) {\n const accessor = getAccessor.call(this, access, member);\n const { flags, bitSize } = member;\n if (access === 'set') {\n return (bitSize > 32)\n ? function(offset, value, littleEndian) {\n accessor.call(this, offset, BigInt(value), littleEndian);\n }\n : function(offset, value, littleEndian) {\n const number = Number(value);\n if (!isFinite(number)) {\n throw new InvalidIntConversion(value)\n }\n accessor.call(this, offset, number, littleEndian);\n };\n } else {\n const { flags: structureFlags } = member.structure;\n if ((structureFlags & PrimitiveFlag.IsSize) && bitSize > 32) {\n const max = BigInt(Number.MAX_SAFE_INTEGER);\n const min = BigInt(Number.MIN_SAFE_INTEGER);\n return function(offset, littleEndian) {\n const bigint = accessor.call(this, offset, littleEndian);\n return (min <= bigint && bigint <= max) ? Number(bigint) : bigint;\n };\n }\n }\n return accessor;\n };\n },\n});\n\nexport { intConversion as default };\n","import { mixin } from '../environment.js';\nimport { MEMORY, RESET } from '../symbols.js';\nimport { usizeMax, usize } from '../utils.js';\n\nvar jsAllocator = mixin({\n init() {\n this.defaultAllocator = null;\n this.allocatorVtable = null;\n this.allocatorContextMap = new Map();\n this.nextAllocatorContextId = usize(0x1000);\n },\n createDefaultAllocator(args, structure) {\n let allocator = this.defaultAllocator;\n if (!allocator) {\n allocator = this.defaultAllocator = this.createJsAllocator(args, structure, false);\n }\n return allocator;\n },\n createJsAllocator(args, structure, resettable) {\n const { constructor: Allocator } = structure;\n let vtable = this.allocatorVtable;\n if (!vtable) { \n const { noResize, noRemap } = Allocator;\n vtable = this.allocatorVtable = {\n alloc: this.allocateHostMemory.bind(this),\n free: this.freeHostMemory.bind(this),\n resize: noResize,\n };\n if (noRemap) {\n vtable.remap = noRemap;\n }\n this.destructors.push(() => this.freeFunction(vtable.alloc));\n this.destructors.push(() => this.freeFunction(vtable.free));\n }\n let contextId = usizeMax;\n if (resettable) {\n // create list used to clean memory allocated for generator\n const list = [];\n contextId = this.nextAllocatorContextId++;\n this.allocatorContextMap.set(contextId, list);\n args[RESET] = (done) => {\n for (const { address, len } of list) {\n const entry = this.unregisterMemory(address, len);\n {\n if (entry) {\n this.freeShadowMemory(entry.shadowDV);\n }\n }\n if (done) {\n this.allocatorContextMap.delete(contextId);\n }\n }\n list.splice(0);\n };\n }\n const ptr = this.obtainZigView(contextId, 0);\n return new Allocator({ ptr, vtable });\n },\n allocateHostMemory(ptr, len, ptrAlign) {\n // see if we're dealing with a resettable allocator\n const contextId = this.getViewAddress(ptr['*'][MEMORY]);\n const list = (contextId != usizeMax) ? this.allocatorContextMap.get(contextId) : null;\n const align = 1 << ptrAlign;\n const targetDV = this.allocateJSMemory(len, align);\n {\n try {\n const shadowDV = this.allocateShadowMemory(len, align);\n const address = this.getViewAddress(shadowDV);\n this.registerMemory(address, len, align, true, targetDV, shadowDV);\n // save address and len if resettable\n list?.push({ address, len });\n return shadowDV;\n } catch (err) {\n return null;\n }\n }\n },\n freeHostMemory(ptr, buf, ptrAlign) {\n const dv = buf['*'][MEMORY];\n const address = this.getViewAddress(dv);\n const len = dv.byteLength;\n const entry = this.unregisterMemory(address, len);\n {\n if (entry) {\n this.freeShadowMemory(entry.shadowDV);\n }\n }\n },\n});\n\nexport { jsAllocator as default };\n","import { mixin } from '../environment.js';\nimport { AlignmentConflict } from '../errors.js';\nimport { MEMORY, ZIG, ALIGN } from '../symbols.js';\nimport { isInvalidAddress, usizeMax, usizeMin, adjustAddress, usizeInvalid, alignForward, isMisaligned, findSortedIndex } from '../utils.js';\n\nvar memoryMapping = mixin({\n init() {\n this.isMemoryMapping = true;\n this.memoryList = [];\n this.contextCount = 0;\n },\n startContext() {\n ++this.contextCount;\n return { shadowList: [] };\n },\n endContext() {\n if (--this.contextCount === 0) {\n for (const { shadowDV } of this.memoryList) {\n if (shadowDV) {\n this.freeShadowMemory(shadowDV);\n }\n }\n this.memoryList.splice(0);\n }\n },\n getShadowAddress(context, target, cluster, writable) {\n const targetDV = target[MEMORY];\n if (cluster) {\n if (cluster.address === undefined) {\n const { start, end, targets } = cluster;\n // look for largest align\n let maxAlign = 0, maxAlignOffset;\n for (const target of targets) {\n const dv = target[MEMORY];\n const offset = dv.byteOffset;\n const align = target.constructor[ALIGN] ?? dv[ALIGN];\n if (maxAlign === undefined || align > maxAlign) {\n maxAlign = align;\n maxAlignOffset = offset;\n }\n }\n // ensure the shadow buffer is large enough to accommodate necessary adjustments\n const len = end - start;\n const unalignedDV = this.allocateShadowMemory(len + maxAlign, 1);\n const unalignedAddress = this.getViewAddress(unalignedDV);\n const maxAlignAddress = alignForward(adjustAddress(unalignedAddress, maxAlignOffset - start), maxAlign);\n const address = adjustAddress(maxAlignAddress, start - maxAlignOffset);\n // make sure that other pointers are correctly aligned also\n for (const target of targets) {\n const dv = target[MEMORY];\n const offset = dv.byteOffset;\n if (offset !== maxAlignOffset) {\n const align = target.constructor[ALIGN] ?? dv[ALIGN];\n if (isMisaligned(adjustAddress(address, offset - start), align)) {\n throw new AlignmentConflict(align, maxAlign);\n }\n }\n }\n const shadowOffset = unalignedDV.byteOffset + Number(address - unalignedAddress);\n const shadowDV = new DataView(unalignedDV.buffer, shadowOffset, len);\n {\n // attach Zig memory info to aligned data view so it gets freed correctly\n shadowDV[ZIG] = { address, len, align: 1, unalignedAddress, type: MemoryType.Scratch };\n }\n const clusterDV = new DataView(targetDV.buffer, Number(start), len);\n const entry = this.registerMemory(address, len, 1, writable, clusterDV, shadowDV);\n context.shadowList.push(entry);\n cluster.address = address;\n }\n return adjustAddress(cluster.address, targetDV.byteOffset - cluster.start);\n } else {\n const align = target.constructor[ALIGN] ?? targetDV[ALIGN];\n const len = targetDV.byteLength;\n const shadowDV = this.allocateShadowMemory(len, align);\n const address = this.getViewAddress(shadowDV);\n const entry = this.registerMemory(address, len, 1, writable, targetDV, shadowDV);\n context.shadowList.push(entry);\n return address;\n }\n },\n updateShadows(context) {\n const copy = this.getCopyFunction();\n for (let { targetDV, shadowDV } of context.shadowList) {\n {\n shadowDV = this.restoreView(shadowDV);\n }\n copy(shadowDV, targetDV);\n }\n },\n updateShadowTargets(context) {\n const copy = this.getCopyFunction();\n for (let { targetDV, shadowDV, writable } of context.shadowList) {\n if (writable) {\n {\n shadowDV = this.restoreView(shadowDV);\n }\n copy(targetDV, shadowDV);\n }\n }\n },\n registerMemory(address, len, align, writable, targetDV, shadowDV) {\n const index = findMemoryIndex(this.memoryList, address);\n let entry = this.memoryList[index - 1];\n if (entry?.address === address && entry.len === len) {\n entry.writable ||= writable;\n } else {\n entry = { address, len, align, writable, targetDV, shadowDV };\n this.memoryList.splice(index, 0, entry);\n }\n return entry;\n },\n unregisterMemory(address, len) {\n const index = findMemoryIndex(this.memoryList, address);\n const entry = this.memoryList[index - 1];\n if (entry?.address === address && entry.len === len) {\n this.memoryList.splice(index - 1, 1);\n return entry;\n }\n },\n findMemory(context, address, count, size) {\n let len = count * (size ?? 0);\n const index = findMemoryIndex(this.memoryList, address);\n const entry = this.memoryList[index - 1];\n let dv;\n if (entry?.address === address && entry.len === len) {\n dv = entry.targetDV;\n } else if (entry?.address <= address && adjustAddress(address, len) <= adjustAddress(entry.address, entry.len)) {\n const offset = Number(address - entry.address);\n const isOpaque = size === undefined;\n const { targetDV } = entry;\n if (isOpaque) {\n len = targetDV.byteLength - offset;\n }\n dv = this.obtainView(targetDV.buffer, targetDV.byteOffset + offset, len);\n if (isOpaque) {\n // opaque structure--need to save the alignment\n dv[ALIGN] = entry.align;\n }\n }\n if (!dv) {\n // not found in any of the buffers we've seen--assume it's Zig memory\n dv = this.obtainZigView(address, len);\n } else {\n let { targetDV, shadowDV } = entry;\n if (shadowDV && context && !context.shadowList.includes(entry)) {\n {\n shadowDV = this.restoreView(shadowDV);\n }\n const copy = this.getCopyFunction();\n copy(targetDV, shadowDV);\n }\n }\n return dv;\n },\n findShadowView(dv) {\n for (const { shadowDV, targetDV } of this.memoryList) {\n if (targetDV === dv) {\n return shadowDV;\n }\n }\n },\n releaseZigView(dv) {\n const zig = dv[ZIG];\n const address = zig?.address;\n if (address && address !== usizeInvalid) {\n // set address to invalid to avoid double free\n zig.address = usizeInvalid;\n }\n },\n getViewAddress(dv) {\n const zig = dv[ZIG];\n if (zig) {\n return zig.address;\n } else {\n const address = this.getBufferAddress(dv.buffer);\n return adjustAddress(address, dv.byteOffset);\n }\n },\n ...({\n imports: {\n allocateScratchMemory: { argType: 'ii', returnType: 'i' },\n freeScratchMemory: { argType: 'iii' },\n },\n exports: {\n getViewAddress: { argType: 'v', returnType: 'i' },\n },\n usizeMaxBuffer: new ArrayBuffer(0),\n\n allocateShadowMemory(len, align) {\n const address = (len) ? this.allocateScratchMemory(len, align) : 0;\n if (!address && len) {\n throw new Error('Out of memory');\n }\n const dv = this.obtainZigView(address, len);\n const zig = dv?.[ZIG];\n if (zig) {\n zig.align = align;\n }\n return dv;\n },\n freeShadowMemory(dv) {\n const { address, unalignedAddress, len, align } = dv[ZIG];\n if (len) {\n this.freeScratchMemory(unalignedAddress ?? address, len, align);\n }\n this.releaseZigView(dv);\n },\n obtainZigView(address, len, cache = true) {\n if (isInvalidAddress(address)) {\n address = (len > 0) ? 0 : usizeMax;\n }\n if (!address && len) {\n return null;\n }\n let { buffer } = this.memory;\n if (address === usizeMax) {\n buffer = this.usizeMaxBuffer;\n address = usizeMin;\n len = 0;\n }\n let dv;\n if (cache) {\n dv = this.obtainView(buffer, address, len);\n } else {\n // don't attach the view to the buffer so that it'd get garbage-collected\n dv = new DataView(buffer, address, len);\n dv[ZIG] = { address, len };\n }\n return dv;\n },\n getTargetAddress(context, target, cluster, writable) {\n const dv = target[MEMORY];\n if (dv[ZIG]) {\n return this.getViewAddress(dv);\n } else if (dv.byteLength === 0) {\n // it's a null pointer/empty slice\n return 0;\n }\n // JS buffers always need shadowing\n return this.getShadowAddress(context, target, cluster, writable);\n },\n getBufferAddress(buffer) {\n return 0;\n },\n } ),\n});\n\nfunction findMemoryIndex(array, address) {\n return findSortedIndex(array, address, m => m.address);\n}\n\nconst MemoryType = {\n Normal: 0,\n Scratch: 1,\n};\n\nexport { MemoryType, memoryMapping as default };\n","import { mixin } from '../environment.js';\nimport { decodeText, empty, defineProperty, defineValue } from '../utils.js';\n\nvar moduleLoading = mixin({\n init() {\n this.abandoned = false;\n this.destructors = [];\n {\n this.nextValueIndex = 1;\n this.valueMap = new Map();\n this.valueIndices = new Map();\n this.options = null;\n this.executable = null;\n this.memory = null;\n this.table = null;\n this.initialTableLength = 0;\n this.exportedFunctions = null;\n }\n },\n abandonModule() {\n if (!this.abandoned) {\n for (const destructor of this.destructors.reverse()) {\n destructor();\n }\n this.abandoned = true;\n }\n },\n ...({\n imports: {\n initialize: { argType: '' },\n },\n exports: {\n displayPanic: { argType: 'ii' },\n },\n\n async initialize(wasi) {\n this.setCustomWASI?.(wasi);\n await this.initPromise;\n },\n getObjectIndex(object) {\n if (object != null) {\n let index = this.valueIndices.get(object);\n if (index === undefined) {\n index = this.nextValueIndex++;\n this.valueIndices.set(object, index);\n this.valueMap.set(index, object);\n }\n return index;\n } else {\n return 0;\n }\n },\n fromWebAssembly(type, arg) {\n switch (type) {\n case 'v':\n case 's': return this.valueMap.get(arg);\n case 'i': return arg;\n case 'b': return !!arg;\n }\n },\n toWebAssembly(type, arg) {\n switch (type) {\n case 'v':\n case 's': return this.getObjectIndex(arg);\n case 'i': return arg;\n case 'b': return arg ? 1 : 0;\n }\n },\n exportFunction(fn, argType = '', returnType = '', name) {\n if (!fn) {\n return () => {};\n }\n return (...args) => {\n args = args.map((arg, i) => this.fromWebAssembly(argType.charAt(i), arg));\n const retval = fn.apply(this, args);\n const retval2 = this.toWebAssembly(returnType, retval);\n return retval2;\n };\n },\n importFunction(fn, argType = '', returnType = '') {\n return (...args) => {\n args = args.map((arg, i) => this.toWebAssembly(argType.charAt(i), arg));\n const retval = fn.apply(this, args);\n return this.fromWebAssembly(returnType, retval);\n };\n },\n exportFunctions() {\n const imports = {};\n for (const [ name, { argType, returnType, alias } ] of Object.entries(this.exports)) {\n const fn = this[alias ?? name];\n if (fn) {\n imports[`_${name}`] = this.exportFunction(fn, argType, returnType, name);\n }\n }\n return imports;\n },\n importFunctions(exports) {\n for (const [ name, { argType, returnType } ] of Object.entries(this.imports)) {\n const fn = exports[name];\n if (fn) {\n defineProperty(this, name, defineValue(this.importFunction(fn, argType, returnType)));\n this.destructors.push(() => this[name] = throwError);\n }\n }\n },\n async instantiateWebAssembly(source, options) {\n const {\n memoryInitial,\n memoryMax,\n tableInitial,\n multithreaded,\n } = this.options = options;\n const res = await source;\n const suffix = (res[Symbol.toStringTag] === 'Response') ? 'Streaming' : '';\n const w = WebAssembly;\n const f = w['compile' + suffix];\n const executable = this.executable = await f(res);\n const functions = this.exportFunctions();\n const env = {}, wasi = {}, wasiPreview = {};\n const exports = this.exportedModules = { env, wasi, wasi_snapshot_preview1: wasiPreview };\n for (const { module, name, kind } of w.Module.imports(executable)) {\n if (kind === 'function') {\n if (module === 'env') {\n env[name] = functions[name] ?? empty;\n } else if (module === 'wasi_snapshot_preview1') {\n wasiPreview[name] = this.getWASIHandler(name);\n } else if (module === 'wasi') {\n wasi[name] = this.getThreadHandler?.(name) ?? empty;\n }\n }\n }\n this.memory = env.memory = new w.Memory({\n initial: memoryInitial,\n maximum: memoryMax,\n shared: multithreaded,\n });\n this.table = env.__indirect_function_table = new w.Table({\n initial: tableInitial,\n element: 'anyfunc',\n shared: multithreaded,\n });\n this.initialTableLength = tableInitial;\n return w.instantiate(executable, exports);\n },\n loadModule(source, options) {\n return this.initPromise = (async () => {\n const instance = await this.instantiateWebAssembly(source, options);\n const { exports } = instance;\n this.importFunctions(exports);\n if (this.customWASI) {\n // use a proxy to attach the memory object to the list of exports\n const exportsPlusMemory = { ...exports, memory: this.memory };\n const instanceProxy = new Proxy(instance, {\n get(inst, name) {\n return (name === 'exports') ? exportsPlusMemory : inst[name];\n }\n });\n this.customWASI.initialize?.(instanceProxy);\n }\n this.initialize();\n })();\n },\n displayPanic(address, len) {\n const array = new Uint8Array(this.memory.buffer, address, len);\n const msg = decodeText(array);\n console.error(`Zig panic: ${msg}`);\n },\n } ),\n});\n\nconst throwError = () => { throw new Error(`Module was abandoned`) };\n\nexport { moduleLoading as default };\n","import { VisitorFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { MEMORY, CACHE, VISIT, UPDATE, SLOTS } from '../symbols.js';\n\nvar objectLinkage = mixin({\n linkVariables(writeBack) {\n {\n // linkage occurs when WASM compilation is complete and functions have been imported\n if (!this.memory) {\n this.initPromise = this.initPromise.then(() => this.linkVariables(writeBack));\n return;\n }\n }\n const copy = this.getCopyFunction();\n for (const { object, handle } of this.variables) {\n const jsDV = object[MEMORY];\n // objects in WebAssembly have fixed addresses so the handle is the address\n // for native code module, locations of objects in memory can change depending on\n // where the shared library is loaded\n const address = handle ;\n let zigDV = object[MEMORY] = this.obtainZigView(address, jsDV.byteLength);\n if (writeBack) {\n copy(zigDV, jsDV);\n }\n object.constructor[CACHE]?.save?.(zigDV, object);\n this.destructors.push(() => {\n {\n zigDV = this.restoreView(object[MEMORY]);\n }\n const jsDV = object[MEMORY] = this.allocateMemory(zigDV.bytelength);\n copy(jsDV, zigDV);\n });\n const linkChildren = (object) => {\n const slots = object[SLOTS];\n if (slots) {\n const parentOffset = zigDV.byteOffset;\n for (const child of Object.values(slots)) {\n if (child) {\n const childDV = child[MEMORY];\n if (childDV.buffer === jsDV.buffer) {\n const offset = parentOffset + childDV.byteOffset - jsDV.byteOffset;\n child[MEMORY] = this.obtainView(zigDV.buffer, offset, childDV.byteLength);\n child.constructor[CACHE]?.save?.(zigDV, child);\n linkChildren(child);\n }\n }\n }\n }\n };\n linkChildren(object);\n // update pointer targets\n object[VISIT]?.(function() { this[UPDATE](); }, VisitorFlag.IgnoreInactive);\n }\n },\n ...({\n imports: {\n recreateAddress: { argType: 'i', returnType: 'i' },\n },\n } ),\n });\n\nexport { objectLinkage as default };\n","import { VisitorFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { MEMORY, VISIT, ADDRESS, LENGTH, POINTER, SLOTS, UPDATE, ZIG } from '../symbols.js';\nimport { findSortedIndex } from '../utils.js';\n\nvar pointerSynchronization = mixin({\n updatePointerAddresses(context, object) {\n // first, collect all the pointers\n const pointerMap = new Map();\n const bufferMap = new Map();\n const potentialClusters = [];\n const callback = function(flags) {\n // bypass proxy\n const pointer = this[POINTER];\n if (pointerMap.get(pointer) === undefined) {\n const target = pointer[SLOTS][0];\n if (target) {\n const writable = !pointer.constructor.const;\n const entry = { target, writable };\n // only targets in JS memory need updating\n const dv = target[MEMORY];\n if (!dv[ZIG]) {\n pointerMap.set(pointer, target);\n // see if the buffer is shared with other objects\n const other = bufferMap.get(dv.buffer);\n if (other) {\n const array = Array.isArray(other) ? other : [ other ];\n const index = findSortedIndex(array, dv.byteOffset, e => e.target[MEMORY].byteOffset);\n array.splice(index, 0, entry);\n if (!Array.isArray(other)) {\n bufferMap.set(dv.buffer, array);\n potentialClusters.push(array);\n }\n } else {\n bufferMap.set(dv.buffer, entry);\n }\n // scan pointers in target\n target[VISIT]?.(callback, 0);\n } else {\n // in Zig memory--no need to update\n pointerMap.set(pointer, null);\n }\n }\n }\n };\n const flags = VisitorFlag.IgnoreRetval | VisitorFlag.IgnoreInactive;\n object[VISIT](callback, flags);\n // find targets that overlap each other\n const clusters = this.findTargetClusters(potentialClusters);\n const clusterMap = new Map();\n for (const cluster of clusters) {\n for (const target of cluster.targets) {\n clusterMap.set(target, cluster);\n }\n }\n // process the pointers\n for (const [ pointer, target ] of pointerMap) {\n if (target) {\n const cluster = clusterMap.get(target);\n const writable = cluster?.writable ?? !pointer.constructor.const;\n pointer[ADDRESS] = this.getTargetAddress(context, target, cluster, writable);\n if (LENGTH in pointer) {\n pointer[LENGTH] = target.length;\n }\n }\n }\n },\n updatePointerTargets(context, object, inbound = false) {\n const pointerMap = new Map();\n const callback = function(flags) {\n // bypass proxy\n const pointer = this[POINTER];\n if (!pointerMap.get(pointer)) {\n pointerMap.set(pointer, true);\n const currentTarget = pointer[SLOTS][0];\n const newTarget = (!currentTarget || !(flags & VisitorFlag.IsImmutable))\n ? pointer[UPDATE](context, true, !(flags & VisitorFlag.IsInactive))\n : currentTarget;\n const targetFlags = (pointer.constructor.const) ? VisitorFlag.IsImmutable : 0;\n if (!(targetFlags & VisitorFlag.IsImmutable)) {\n // update targets of pointers in original target if it's in JS memory\n // pointers in Zig memory are updated on access so we don't need to do it here\n // (and they should never point to reloctable memory)\n if (currentTarget && !currentTarget[MEMORY][ZIG]) {\n currentTarget[VISIT]?.(callback, targetFlags);\n }\n }\n if (newTarget !== currentTarget) {\n // acquire targets of pointers in new target if it;s in JS memory\n if (newTarget && !newTarget[MEMORY][ZIG]) {\n newTarget?.[VISIT]?.(callback, targetFlags);\n }\n }\n }\n };\n const flags = (inbound) ? VisitorFlag.IgnoreRetval : 0;\n object[VISIT](callback, flags);\n },\n findTargetClusters(potentialClusters) {\n const clusters = [];\n for (const entries of potentialClusters) {\n let prevTarget = null, prevStart = 0, prevEnd = 0;\n let currentCluster = null;\n for (const { target, writable } of entries) {\n const dv = target[MEMORY];\n const { byteOffset: start, byteLength } = dv;\n const end = start + byteLength;\n let forward = true;\n if (prevTarget) {\n if (prevEnd > start) {\n // the previous target overlaps this one\n if (!currentCluster) {\n currentCluster = {\n targets: [ prevTarget ],\n start: prevStart,\n end: prevEnd,\n address: undefined,\n misaligned: undefined,\n writable,\n };\n clusters.push(currentCluster);\n } else {\n currentCluster.writable ||= writable;\n }\n currentCluster.targets.push(target);\n if (end > prevEnd) {\n // set cluster end offset to include this one\n currentCluster.end = end;\n } else {\n // the previous target contains this one\n forward = false;\n }\n } else {\n currentCluster = null;\n }\n }\n if (forward) {\n prevTarget = target;\n prevStart = start;\n prevEnd = end;\n }\n }\n }\n return clusters;\n },\n});\n\nexport { pointerSynchronization as default };\n","import { mixin } from '../environment.js';\nimport { empty } from '../utils.js';\n\nvar thunkAllocation = mixin({\n ...({\n exports: {\n allocateJsThunk: { argType: 'ii', returnType: 'i' },\n freeJsThunk: { argType: 'ii', returnType: 'i' },\n },\n init() {\n this.thunkSources = [];\n this.thunkMap = new Map();\n },\n addJsThunkSource() {\n const {\n memoryInitial,\n memoryMax,\n tableInitial,\n multithreaded,\n } = this.options;\n const w = WebAssembly;\n const env = {}, wasi = {}, wasiPreview = {};\n const imports = { env, wasi, wasi_snapshot_preview1: wasiPreview };\n for (const { module, name, kind } of w.Module.imports(this.executable)) {\n if (kind === 'function') {\n if (module === 'env') {\n env[name] = empty;\n } else if (module === 'wasi_snapshot_preview1') {\n wasiPreview[name] = empty;\n }\n }\n }\n env.memory = new w.Memory({\n initial: memoryInitial,\n maximum: memoryMax,\n shared: multithreaded,\n });\n const table = env.__indirect_function_table = new w.Table({\n initial: tableInitial,\n element: 'anyfunc',\n });\n const { exports } = new w.Instance(this.executable, imports);\n const { createJsThunk, destroyJsThunk } = exports;\n const source = {\n thunkCount: 0,\n createJsThunk,\n destroyJsThunk,\n table,\n };\n this.thunkSources.unshift(source);\n return source;\n },\n allocateJsThunk(controllerAddress, funcId) {\n let source, sourceAddress = 0;\n for (source of this.thunkSources) {\n sourceAddress = source.createJsThunk(controllerAddress, funcId);\n break;\n }\n if (!sourceAddress) {\n source = this.addJsThunkSource();\n sourceAddress = source.createJsThunk(controllerAddress, funcId);\n }\n // sourceAddress is an index into the function table of the source instance\n // we need to get the function object and place it into the main instance's\n // function table\n const thunkObject = source.table.get(sourceAddress);\n let thunkAddress = 0;\n for (let i = this.table.length - 1; i >= this.initialTableLength; i--) {\n if (!this.table.get(i)) {\n thunkAddress = i;\n break;\n }\n }\n if (!thunkAddress) {\n thunkAddress = this.table.length;\n this.table.grow(8);\n }\n this.table.set(thunkAddress, thunkObject);\n source.thunkCount++;\n // remember where the object is from\n this.thunkMap.set(thunkObject, { source, sourceAddress });\n return thunkAddress;\n },\n freeJsThunk(controllerAddress, thunkAddress) {\n let fnId = 0;\n const thunkObject = this.table.get(thunkAddress);\n this.table.set(thunkAddress, null);\n const entry = this.thunkMap.get(thunkObject);\n if (entry) {\n const { source, sourceAddress } = entry;\n fnId = source.destroyJsThunk(controllerAddress, sourceAddress);\n if (--source.thunkCount === 0) {\n const index = this.thunkSources.indexOf(source);\n if (index !== -1) {\n this.thunkSources.splice(index, 1);\n }\n }\n this.thunkMap.delete(thunkObject);\n }\n return fnId;\n },\n } ),\n});\n\nexport { thunkAllocation as default };\n","import { StructureType } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { BufferSizeMismatch, ArrayLengthMismatch, BufferExpected } from '../errors.js';\nimport { MEMORY, CONST_TARGET, CACHE, PROXY, ZIG, SENTINEL, SHAPE, COPY, TYPED_ARRAY } from '../symbols.js';\nimport { usizeInvalid, isCompatibleInstanceOf, findElements } from '../utils.js';\n\nvar viewManagement = mixin({\n init() {\n this.viewMap = new WeakMap();\n },\n extractView(structure, arg, onError = throwError) {\n const { type, byteSize, constructor } = structure;\n let dv;\n // not using instanceof just in case we're getting objects created in other contexts\n const tag = arg?.[Symbol.toStringTag];\n if (tag) {\n if (tag === 'DataView') {\n // capture relationship between the view and its buffer\n dv = this.registerView(arg);\n } else if (tag === 'ArrayBuffer') {\n dv = this.obtainView(arg, 0, arg.byteLength);\n } else if ((tag && tag === constructor[TYPED_ARRAY]?.name) || (tag === 'Uint8ClampedArray' && constructor[TYPED_ARRAY] === Uint8Array)) {\n dv = this.obtainView(arg.buffer, arg.byteOffset, arg.byteLength);\n } else ;\n }\n if (!dv) {\n const memory = arg?.[MEMORY];\n if (memory) {\n // arg a Zig data object\n const { constructor, instance: { members: [ member ] } } = structure;\n if (isCompatibleInstanceOf(arg, constructor)) {\n // same type, no problem\n return memory;\n } else {\n if (isArrayLike(type)) {\n // make sure the arg has the same type of elements\n const { byteSize: elementSize, structure: { constructor: Child } } = member;\n const number = findElements(arg, Child);\n if (number !== undefined) {\n if (type === StructureType.Slice || number * elementSize === byteSize) {\n return memory;\n } else {\n throw new ArrayLengthMismatch(structure, null, arg);\n }\n }\n }\n }\n }\n }\n if (dv) {\n if (byteSize !== undefined) {\n checkDataViewSize(dv, structure);\n }\n } else {\n onError?.(structure, arg);\n }\n return dv;\n },\n assignView(target, dv, structure, copy, allocator) {\n const { byteSize, type } = structure;\n const elementSize = byteSize ?? 1;\n if (!target[MEMORY]) {\n if (byteSize !== undefined) {\n checkDataViewSize(dv, structure);\n }\n const len = dv.byteLength / elementSize;\n const source = { [MEMORY]: dv };\n target.constructor[SENTINEL]?.validateData?.(source, len);\n if (allocator) {\n // need to copy when target object is in Zig memory\n copy = true;\n }\n target[SHAPE](copy ? null : dv, len, allocator);\n if (copy) {\n target[COPY](source);\n }\n } else {\n const byteLength = (type === StructureType.Slice) ? elementSize * target.length : elementSize;\n if (dv.byteLength !== byteLength) {\n throw new BufferSizeMismatch(structure, dv, target);\n }\n const source = { [MEMORY]: dv };\n target.constructor[SENTINEL]?.validateData?.(source, target.length);\n target[COPY](source);\n }\n },\n findViewAt(buffer, offset, len) {\n let entry = this.viewMap.get(buffer);\n let existing;\n if (entry) {\n if (entry instanceof DataView) {\n // only one view created thus far--see if that's the matching one\n if (entry.byteOffset === offset && entry.byteLength === len) {\n existing = entry;\n entry = null;\n } else {\n // no, need to replace the entry with a hash keyed by `offset:len`\n const prev = entry;\n const prevKey = `${prev.byteOffset}:${prev.byteLength}`;\n entry = new Map([ [ prevKey, prev ] ]);\n this.viewMap.set(buffer, entry);\n }\n } else {\n existing = entry.get(`${offset}:${len}`);\n }\n }\n {\n if (existing?.[ZIG]?.address === usizeInvalid) {\n // view was of previously freed memory\n existing = null;\n }\n }\n return { existing, entry };\n },\n obtainView(buffer, offset, len) {\n const { existing, entry } = this.findViewAt(buffer, offset, len);\n let dv;\n if (existing) {\n return existing;\n }\n dv = new DataView(buffer, offset, len);\n if (entry) {\n entry.set(`${offset}:${len}`, dv);\n } else {\n // just one view of this buffer for now\n this.viewMap.set(buffer, dv);\n }\n {\n if (buffer === this.memory?.buffer || buffer === this.usizeMaxBuffer) {\n dv[ZIG] = { address: offset, len };\n }\n return dv;\n }\n },\n registerView(dv) {\n if (!dv[ZIG]) {\n const { buffer, byteOffset, byteLength } = dv;\n const { existing, entry } = this.findViewAt(buffer, byteOffset, byteLength);\n if (existing) {\n // return existing view instead of this one\n return existing;\n } else if (entry) {\n entry.set(`${byteOffset}:${byteLength}`, dv);\n } else {\n this.viewMap.set(buffer, dv);\n }\n }\n return dv;\n },\n allocateMemory(len, align = 0, allocator = null) {\n return allocator?.alloc?.(len, align) ?? this.allocateJSMemory(len, align);\n },\n ...({\n allocateJSMemory(len, align) {\n // alignment doesn't matter since memory always needs to be shadowed\n return this.obtainView(new ArrayBuffer(len), 0, len);\n },\n restoreView(dv) {\n const zig = dv?.[ZIG];\n if (zig?.len > 0 && dv.buffer.byteLength === 0) {\n dv = this.obtainZigView(zig.address, zig.len);\n if (zig.align) {\n dv[ZIG].align = zig.align;\n }\n }\n return dv;\n },\n defineRestorer() {\n const thisEnv = this;\n return {\n value() {\n const dv = this[MEMORY];\n const newDV = thisEnv.restoreView(dv);\n if (dv !== newDV) {\n const target = this[CONST_TARGET] ?? this;\n target[MEMORY] = newDV;\n // pointers are referenced by their proxies in the cache\n target.constructor[CACHE]?.save?.(newDV, target[PROXY] ?? target);\n return true;\n } else {\n return false;\n }\n },\n }\n },\n } ),\n});\n\nfunction checkDataViewSize(dv, structure) {\n const { byteSize, type } = structure;\n const isSizeMatching = type === StructureType.Slice\n ? dv.byteLength % byteSize === 0\n : dv.byteLength === byteSize;\n if (!isSizeMatching) {\n throw new BufferSizeMismatch(structure, dv);\n }\n}\n\nfunction isArrayLike(type) {\n return type === StructureType.Array || type === StructureType.Vector || type === StructureType.Slice;\n}\n\nfunction throwError(structure) {\n throw new BufferExpected(structure);\n}\n\nexport { checkDataViewSize, viewManagement as default };\n","import { mixin } from '../environment.js';\nimport { throwReadOnly } from '../errors.js';\nimport { POINTER, ARRAY, CONST_TARGET } from '../symbols.js';\n\nvar writeProtection = mixin({\n makeReadOnly(object) {\n protect(object);\n }\n});\n\nconst gp = Object.getOwnPropertyDescriptors;\nconst df = Object.defineProperty;\n\nfunction protect(object) {\n const pointer = object[POINTER];\n if (pointer) {\n protectProperties(pointer, [ 'length' ]);\n } else {\n const array = object[ARRAY];\n if (array) {\n protectProperties(array);\n protectElements(array);\n } else {\n protectProperties(object);\n }\n }\n}\n\nfunction protectProperties(object, exclude = []) {\n const descriptors = gp(object.constructor.prototype);\n for (const [ name, descriptor ] of Object.entries(descriptors)) {\n if (descriptor.set && !exclude.includes(name)) {\n descriptor.set = throwReadOnly;\n df(object, name, descriptor);\n }\n }\n df(object, CONST_TARGET, { value: object });\n}\n\nfunction protectElements(array) {\n df(array, 'set', { value: throwReadOnly });\n const get = array.get;\n const getReadOnly = function(index) {\n const element = get.call(this, index);\n if (element?.[CONST_TARGET] === null) {\n protect(element);\n }\n return element;\n };\n df(array, 'get', { value: getReadOnly });\n}\n\nexport { writeProtection as default };\n","import { defineEnvironment } from './environment.js';\n\nfunction createEnvironment() {\n // define Environment class, incorporating methods and properties in imported mixins\n const Env = defineEnvironment();\n return new Env();\n}\n\nexport { createEnvironment };\n","import { mixin } from '../environment.js';\nimport { ARRAY } from '../symbols.js';\nimport { defineValue, getErrorHandler } from '../utils.js';\n\nvar forArray = mixin({\n defineArrayEntries() {\n return defineValue(getArrayEntries);\n },\n defineArrayIterator() {\n return defineValue(getArrayIterator);\n }\n});\n\nfunction getArrayIterator() {\n const self = this[ARRAY] ?? this;\n const length = this.length;\n let index = 0;\n return {\n next() {\n let value, done;\n if (index < length) {\n const current = index++;\n value = self.get(current);\n done = false;\n } else {\n done = true;\n }\n return { value, done };\n },\n };\n}\n\nfunction getArrayEntriesIterator(options) {\n const handleError = getErrorHandler(options);\n const self = this[ARRAY] ?? this;\n const length = this.length;\n let index = 0;\n return {\n next() {\n let value, done;\n if (index < length) {\n const current = index++;\n value = [ current, handleError(() => self.get(current)) ];\n done = false;\n } else {\n done = true;\n }\n return { value, done };\n },\n };\n}\n\nfunction getArrayEntries(options) {\n return {\n [Symbol.iterator]: getArrayEntriesIterator.bind(this, options),\n length: this.length,\n };\n}\n\nexport { forArray as default };\n","import { mixin } from '../environment.js';\nimport { PROPS } from '../symbols.js';\nimport { defineValue, getErrorHandler } from '../utils.js';\n\nvar forStruct = mixin({\n defineStructEntries() {\n return defineValue(getStructEntries);\n },\n defineStructIterator() {\n return defineValue(getStructIterator);\n }\n});\n\nfunction getStructEntries(options) {\n return {\n [Symbol.iterator]: getStructEntriesIterator.bind(this, options),\n length: this[PROPS].length,\n };\n}\n\nfunction getStructIterator(options) {\n const entries = getStructEntries.call(this, options);\n return entries[Symbol.iterator]();\n}\n\nfunction getStructEntriesIterator(options) {\n const handleError = getErrorHandler(options);\n const self = this;\n const props = this[PROPS];\n let index = 0;\n return {\n next() {\n let value, done;\n if (index < props.length) {\n const current = props[index++];\n value = [ current, handleError(() => self[current]) ];\n done = false;\n } else {\n done = true;\n }\n return { value, done };\n },\n };\n}\n\nexport { forStruct as default };\n","import { memberNames, structureNames } from '../constants.js';\nimport { mixin } from '../environment.js';\n\nvar all = mixin({\n defineMember(member, applyTransform = true) {\n if (!member) {\n return {};\n }\n const { type, structure } = member;\n const handleName = `defineMember${memberNames[type]}`;\n const f = this[handleName];\n const descriptor = f.call(this, member);\n if (applyTransform) {\n if (structure) {\n // we use int/uint getters to access underlying values of enums and error sets;\n // the transform functions put wrapper functions around the accessors that\n // perform item lookup\n const { type } = structure;\n const handleName = `transformDescriptor${structureNames[type]}`;\n const f = this[handleName];\n if (f) {\n return f.call(this, descriptor, member);\n }\n }\n }\n return descriptor;\n },\n});\n\nfunction bindSlot(slot, { get, set }) {\n if (slot !== undefined) {\n return {\n get: function() {\n return get.call(this, slot);\n },\n set: (set)\n ? function(arg, allocator) {\n return set.call(this, slot, arg, allocator);\n }\n : undefined,\n };\n } else {\n // array accessors\n return { get, set };\n }\n}\n\nexport { bindSlot, all as default };\n","import { mixin } from '../environment.js';\nimport { TypeMismatch } from '../errors.js';\nimport { markAsSpecial, decodeBase64, encodeBase64 } from '../utils.js';\n\nvar base64 = mixin({\n defineBase64(structure) {\n const thisEnv = this;\n return markAsSpecial({\n get() {\n return encodeBase64(this.dataView);\n },\n set(str, allocator) {\n if (typeof(str) !== 'string') {\n throw new TypeMismatch('string', str);\n }\n const dv = decodeBase64(str);\n thisEnv.assignView(this, dv, structure, false, allocator);\n }\n });\n },\n});\n\nexport { base64 as default };\n","import { mixin } from '../environment.js';\n\nvar bool = mixin({\n defineMemberBool(member) {\n return this.defineMemberUsing(member, this.getAccessor);\n },\n});\n\nexport { bool as default };\n","import { mixin } from '../environment.js';\nimport { TypeMismatch } from '../errors.js';\nimport { markAsSpecial } from '../utils.js';\n\nvar clampedArray = mixin({\n defineClampedArray(structure) {\n const thisEnv = this;\n const ClampedArray = Uint8ClampedArray;\n return markAsSpecial({\n get() {\n const ta = this.typedArray;\n return new ClampedArray(ta.buffer, ta.byteOffset, ta.length);\n },\n set(ta, allocator) {\n if (ta?.[Symbol.toStringTag] !== ClampedArray.name) {\n throw new TypeMismatch(ClampedArray.name, ta);\n }\n const dv = new DataView(ta.buffer, ta.byteOffset, ta.byteLength);\n thisEnv.assignView(this, dv, structure, true, allocator);\n },\n });\n },\n});\n\nexport { clampedArray as default };\n","import { mixin } from '../environment.js';\nimport { TypeMismatch } from '../errors.js';\nimport { RESTORE, MEMORY } from '../symbols.js';\nimport { markAsSpecial } from '../utils.js';\n\nvar dataView = mixin({\n defineDataView(structure) {\n const thisEnv = this;\n return markAsSpecial({\n get() {\n {\n this[RESTORE]?.();\n }\n const dv = this[MEMORY];\n return dv;\n },\n set(dv, allocator) {\n if (dv?.[Symbol.toStringTag] !== 'DataView') {\n throw new TypeMismatch('DataView', dv);\n }\n thisEnv.assignView(this, dv, structure, true, allocator);\n },\n });\n },\n});\n\nexport { dataView as default };\n","import { mixin } from '../environment.js';\n\nvar float = mixin({\n defineMemberFloat(member) {\n return this.defineMemberUsing(member, this.getAccessor);\n },\n});\n\nexport { float as default };\n","import { MemberFlag, StructureFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { throwReadOnly } from '../errors.js';\nimport { SLOTS, VIVIFICATE, INITIALIZE } from '../symbols.js';\nimport { bindSlot } from './all.js';\n\nvar object = mixin({\n defineMemberObject(member) {\n return bindSlot(member.slot, {\n get: (member.flags & MemberFlag.IsString)\n ? getString\n : (member.structure.flags & StructureFlag.HasValue) ? getValue : getObject,\n set: (member.flags & MemberFlag.IsReadOnly) ? throwReadOnly : setValue,\n });\n }\n});\n\nfunction getValue(slot) {\n return getObject.call(this, slot).$;\n}\n\nfunction getObject(slot) {\n return this[SLOTS][slot] ?? this[VIVIFICATE](slot);\n}\n\nfunction getString(slot) {\n const retval = getObject.call(this, slot).$;\n return (retval) ? retval.string : retval;\n}\n\nfunction setValue(slot, value, allocator) {\n const object = getObject.call(this, slot);\n object[INITIALIZE](value, allocator);\n}\n\nexport { object as default };\n","import { mixin } from '../environment.js';\nimport { replaceRangeError } from '../errors.js';\nimport { MEMORY, RESTORE } from '../symbols.js';\n\nvar primitive = mixin({\n ...({\n defineMemberUsing(member, getAccessor) {\n const { littleEndian } = this;\n const { bitOffset, byteSize } = member;\n const getter = getAccessor.call(this, 'get', member);\n const setter = getAccessor.call(this, 'set', member);\n if (bitOffset !== undefined) {\n const offset = bitOffset >> 3;\n return {\n get: function getValue() {\n try {\n return getter.call(this[MEMORY], offset, littleEndian);\n } catch (err) {\n if (err instanceof TypeError && this[RESTORE]?.()) {\n return getter.call(this[MEMORY], offset, littleEndian);\n } else {\n throw err;\n }\n }\n },\n set: function setValue(value) {\n try {\n return setter.call(this[MEMORY], offset, value, littleEndian);\n } catch (err) {\n if (err instanceof TypeError && this[RESTORE]?.()) {\n return setter.call(this[MEMORY], offset, value, littleEndian);\n } else {\n throw err;\n }\n }\n }\n }\n } else {\n return {\n get: function getElement(index) {\n try {\n return getter.call(this[MEMORY], index * byteSize, littleEndian);\n } catch (err) {\n if (err instanceof TypeError && this[RESTORE]?.()) {\n return getter.call(this[MEMORY], index * byteSize, littleEndian);\n } else {\n throw replaceRangeError(member, index, err);\n }\n }\n },\n set: function setElement(index, value) {\n try {\n return setter.call(this[MEMORY], index * byteSize, value, littleEndian);\n } catch (err) {\n if (err instanceof TypeError && this[RESTORE]?.()) {\n return setter.call(this[MEMORY], index * byteSize, value, littleEndian);\n } else {\n throw replaceRangeError(member, index, err);\n }\n }\n },\n }\n }\n },\n } ),\n});\n\nexport { primitive as default };\n","import { mixin } from '../environment.js';\nimport { TypeMismatch } from '../errors.js';\nimport { SENTINEL } from '../symbols.js';\nimport { markAsSpecial, encodeText, decodeText } from '../utils.js';\n\nvar string = mixin({\n defineString(structure) {\n const thisEnv = this;\n const { byteSize } = structure.instance.members[0];\n const encoding = `utf-${byteSize * 8}`;\n return markAsSpecial({\n get() {\n let str = decodeText(this.typedArray, encoding);\n const sentinelValue = this.constructor[SENTINEL]?.value;\n if (sentinelValue !== undefined && str.charCodeAt(str.length - 1) === sentinelValue) {\n str = str.slice(0, -1);\n }\n return str;\n },\n set(str, allocator) {\n if (typeof(str) !== 'string') {\n throw new TypeMismatch('string', str);\n }\n const sentinelValue = this.constructor[SENTINEL]?.value;\n if (sentinelValue !== undefined && str.charCodeAt(str.length - 1) !== sentinelValue) {\n str += String.fromCharCode(sentinelValue);\n }\n const ta = encodeText(str, encoding);\n const dv = new DataView(ta.buffer);\n thisEnv.assignView(this, dv, structure, false, allocator);\n },\n });\n },\n});\n\nexport { string as default };\n","import { mixin } from '../environment.js';\nimport { normalizeObject } from './value-of.js';\n\nvar toJson = mixin({\n defineToJSON() {\n return {\n value() {\n return normalizeObject(this, true);\n },\n };\n },\n});\n\nexport { toJson as default };\n","import { mixin } from '../environment.js';\nimport { throwReadOnly } from '../errors.js';\nimport { SLOTS } from '../symbols.js';\nimport { bindSlot } from './all.js';\n\nvar type = mixin({\n defineMemberType(member, env) {\n const { slot } = member;\n return bindSlot(slot, {\n get(slot) {\n // unsupported types will have undefined structure\n const structure = this[SLOTS][slot];\n return structure?.constructor;\n },\n set: throwReadOnly,\n });\n }\n});\n\nexport { type as default };\n","import { mixin } from '../environment.js';\nimport { TypeMismatch } from '../errors.js';\nimport { markAsSpecial } from '../utils.js';\n\nvar typedArray = mixin({\n defineTypedArray(structure) {\n const thisEnv = this;\n const TypedArray = this.getTypedArray(structure); // (from mixin \"structures/all\")\n return markAsSpecial({\n get() {\n const dv = this.dataView;\n const length = dv.byteLength / TypedArray.BYTES_PER_ELEMENT;\n return new TypedArray(dv.buffer, dv.byteOffset, length);\n },\n set(ta, allocator) {\n if (ta?.[Symbol.toStringTag] !== TypedArray.name) {\n throw new TypeMismatch(TypedArray.name, ta);\n }\n const dv = new DataView(ta.buffer, ta.byteOffset, ta.byteLength);\n thisEnv.assignView(this, dv, structure, true, allocator);\n },\n });\n },\n});\n\nexport { typedArray as default };\n","import { mixin } from '../environment.js';\n\nvar uint = mixin({\n defineMemberUint(member) {\n let getAccessor = this.getAccessor;\n if (this.runtimeSafety) {\n getAccessor = this.addRuntimeCheck(getAccessor);\n }\n getAccessor = this.addIntConversion(getAccessor);\n return this.defineMemberUsing(member, getAccessor);\n },\n});\n\nexport { uint as default };\n","import { StructureType, StructFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { TYPE, ENTRIES, FLAGS } from '../symbols.js';\nimport { getErrorHandler } from '../utils.js';\n\nvar valueOf = mixin({\n defineValueOf() {\n return {\n value() {\n return normalizeObject(this, false);\n },\n };\n },\n});\n\nconst INT_MAX = BigInt(Number.MAX_SAFE_INTEGER);\nconst INT_MIN = BigInt(Number.MIN_SAFE_INTEGER);\n\nfunction normalizeObject(object, forJSON) {\n const options = { error: (forJSON) ? 'return' : 'throw' };\n const handleError = getErrorHandler(options);\n const resultMap = new Map();\n const process = function(value) {\n // handle type (i.e. constructor) like a struct\n const type = (typeof(value) === 'function') ? StructureType.Struct : value?.constructor?.[TYPE];\n if (type === undefined) {\n if (forJSON) {\n if (typeof(value) === 'bigint' && INT_MIN <= value && value <= INT_MAX) {\n return Number(value);\n } else if (value instanceof Error) {\n return { error: value.message };\n }\n }\n return value;\n }\n let result = resultMap.get(value);\n if (result === undefined) {\n let entries;\n switch (type) {\n case StructureType.Struct:\n entries = value[ENTRIES](options);\n result = (value.constructor[FLAGS] & StructFlag.IsTuple) ? [] : {};\n break;\n case StructureType.Union:\n entries = value[ENTRIES](options);\n result = {};\n break;\n case StructureType.Array:\n case StructureType.Vector:\n case StructureType.Slice:\n entries = value[ENTRIES]();\n result = [];\n break;\n case StructureType.Pointer:\n try {\n result = value['*'];\n } catch (err) {\n result = Symbol.for('inaccessible');\n }\n break;\n case StructureType.Enum:\n result = handleError(() => String(value));\n break;\n case StructureType.Opaque:\n result = {};\n break;\n default:\n result = handleError(() => value.$);\n }\n result = process(result);\n resultMap.set(value, result);\n if (entries) {\n for (const [ key, child ] of entries) {\n result[key] = process(child);\n }\n }\n }\n return result;\n };\n return process(object);\n}\n\nexport { valueOf as default, normalizeObject };\n","import { mixin } from '../environment.js';\nimport { NotUndefined, OutOfBound } from '../errors.js';\n\nvar _void = mixin({\n defineMemberVoid(member, env) {\n const { bitOffset } = member;\n return {\n get() {\n return undefined;\n },\n set: (bitOffset !== undefined)\n ? function(value) {\n if (value !== undefined) {\n throw new NotUndefined(member);\n }\n }\n : function(index, value) {\n if (value !== undefined) {\n throw new NotUndefined(member);\n }\n if (index < 0 || index >= this.length) {\n throw new OutOfBound(member, index);\n }\n },\n };\n }\n});\n\nexport { _void as default };\n","import { StructureType, MemberType, MemberFlag, structureNames, StructureFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { NoProperty, MissingInitializers, NoInitializer } from '../errors.js';\nimport { KEYS, SETTERS, MEMORY, COPY, SLOTS, CACHE, RESTORE, PROPS, ENTRIES, TYPED_ARRAY, FLAGS, TYPE, SIZE, ALIGN, ENVIRONMENT, SIGNATURE, STRING_RETVAL, SHAPE, INITIALIZE, CAST, RESTRICT, FINALIZE, UPDATE, CONST_TARGET } from '../symbols.js';\nimport { ObjectCache, defineProperty, defineValue, defineProperties } from '../utils.js';\n\nvar all = mixin({\n defineStructure(structure) {\n const {\n type,\n byteSize,\n } = structure;\n const handlerName = `define${structureNames[type]}`;\n const f = this[handlerName];\n // default discriptors\n const keys = [];\n const setters = {};\n const descriptors = {\n dataView: this.defineDataView(structure),\n base64: this.defineBase64(structure),\n toJSON: this.defineToJSON(),\n valueOf: this.defineValueOf(),\n [CONST_TARGET]: { value: null },\n [SETTERS]: defineValue(setters),\n [KEYS]: defineValue(keys),\n // add memory copier (from mixin \"memory/copying\")\n [COPY]: this.defineCopier(byteSize),\n ...({\n // add method for recoverng from array detachment\n [RESTORE]: this.defineRestorer(),\n } ),\n };\n const constructor = structure.constructor = f.call(this, structure, descriptors);\n for (const [ name, descriptor ] of Object.entries(descriptors)) {\n const s = descriptor?.set;\n if (s && !setters[name] && name !== '$') {\n setters[name] = s;\n keys.push(name);\n }\n }\n defineProperties(constructor.prototype, descriptors);\n return constructor;\n },\n finalizeStructure(structure) {\n const {\n name,\n type,\n constructor,\n align,\n byteSize,\n flags,\n signature,\n static: { members, template },\n } = structure;\n const props = [];\n const staticDescriptors = {\n name: defineValue(name),\n toJSON: this.defineToJSON(),\n valueOf: this.defineValueOf(),\n [SIGNATURE]: defineValue(signature),\n [ENVIRONMENT]: defineValue(this),\n [ALIGN]: defineValue(align),\n [SIZE]: defineValue(byteSize),\n [TYPE]: defineValue(type),\n [FLAGS]: defineValue(flags),\n [PROPS]: defineValue(props),\n [TYPED_ARRAY]: defineValue(this.getTypedArray(structure)),\n [Symbol.iterator]: this.defineStructIterator(),\n [ENTRIES]: this.defineStructEntries(),\n [PROPS]: defineValue(props),\n };\n const descriptors = {\n [Symbol.toStringTag]: defineValue(name),\n };\n for (const member of members) {\n const { name, slot, flags } = member;\n if (member.structure.type === StructureType.Function) {\n let fn = template[SLOTS][slot];\n if (flags & MemberFlag.IsString) {\n fn[STRING_RETVAL] = true;\n }\n staticDescriptors[name] = defineValue(fn);\n // provide a name if one isn't assigned yet\n if (!fn.name) {\n defineProperty(fn, 'name', defineValue(name));\n }\n // see if it's a getter or setter\n const [ accessorType, propName ] = /^(get|set)\\s+([\\s\\S]+)/.exec(name)?.slice(1) ?? [];\n const argRequired = (accessorType === 'get') ? 0 : 1;\n if (accessorType && fn.length === argRequired) {\n staticDescriptors[propName] ||= {};\n const descriptor = staticDescriptors[propName];\n descriptor[accessorType] = fn;\n }\n // see if it's a method\n if (member.flags & MemberFlag.IsMethod) {\n const method = function(...args) {\n try {\n return fn(this, ...args);\n } catch (err) {\n // adjust argument index/count\n err[UPDATE]?.(1);\n throw err;\n }\n };\n defineProperties(method, {\n name: defineValue(name),\n length: defineValue(fn.length - 1),\n });\n descriptors[name] = defineValue(method);\n if (accessorType && method.length === argRequired) {\n const descriptor = descriptors[propName] ||= {};\n descriptor[accessorType] = method;\n }\n }\n } else {\n staticDescriptors[name] = this.defineMember(member);\n props.push(name);\n }\n }\n // static variable/constants are stored in slots\n staticDescriptors[SLOTS] = (props.length > 0) && defineValue(template[SLOTS]);\n const handlerName = `finalize${structureNames[type]}`;\n const f = this[handlerName];\n if (f?.call(this, structure, staticDescriptors, descriptors) !== false) {\n defineProperties(constructor.prototype, descriptors);\n defineProperties(constructor, staticDescriptors);\n }\n },\n createConstructor(structure, handlers = {}) {\n const {\n type,\n byteSize,\n align,\n flags,\n instance: { members, template },\n } = structure;\n const { onCastError } = handlers;\n // comptime fields are stored in the instance template's slots\n let comptimeFieldSlots;\n if (template?.[SLOTS]) {\n const comptimeMembers = members.filter(m => m.flags & MemberFlag.IsReadOnly);\n if (comptimeMembers.length > 0) {\n comptimeFieldSlots = comptimeMembers.map(m => m.slot);\n }\n }\n const cache = new ObjectCache();\n const thisEnv = this;\n const constructor = function(arg, options = {}) {\n const {\n allocator,\n } = options;\n const creating = this instanceof constructor;\n let self, dv;\n if (creating) {\n if (arguments.length === 0) {\n throw new NoInitializer(structure);\n }\n self = this;\n if (flags & StructureFlag.HasSlot) {\n self[SLOTS] = {};\n }\n if (SHAPE in self) {\n // provided by defineStructureSlice(); the slice is different from other structures\n // as it does not have a zig size; memory is allocated by the slice initializer\n // based on the argument given\n self[INITIALIZE](arg, allocator);\n dv = self[MEMORY];\n } else {\n // don't use allocator to create storage for pointer\n const a = (type !== StructureType.Pointer) ? allocator : null;\n self[MEMORY] = dv = thisEnv.allocateMemory(byteSize, align, a);\n }\n } else {\n if (CAST in constructor) {\n // casting from number, string, etc.\n self = constructor[CAST].call(this, arg, options);\n if (self !== false) {\n return self;\n }\n }\n // look for buffer\n dv = thisEnv.extractView(structure, arg, onCastError);\n if (self = cache.find(dv)) {\n return self;\n }\n self = Object.create(constructor.prototype);\n if (SHAPE in self) {\n thisEnv.assignView(self, dv, structure, false, false);\n } else {\n self[MEMORY] = dv;\n }\n if (flags & StructureFlag.HasSlot) {\n self[SLOTS] = {};\n }\n }\n if (comptimeFieldSlots) {\n for (const slot of comptimeFieldSlots) {\n self[SLOTS][slot] = template[SLOTS][slot];\n }\n }\n self[RESTRICT]?.();\n if (creating) {\n // initialize object unless that's done already\n if (!(SHAPE in self)) {\n self[INITIALIZE](arg, allocator);\n }\n }\n if (FINALIZE in self) {\n self = self[FINALIZE]();\n }\n return cache.save(dv, self);\n };\n defineProperty(constructor, CACHE, defineValue(cache));\n {\n if (template?.[MEMORY]) {\n defineProperty(template, RESTORE, this.defineRestorer());\n }\n }\n return constructor;\n },\n createApplier(structure) {\n const { instance: { template } } = structure;\n return function(arg, allocator) {\n const argKeys = Object.keys(arg);\n const keys = this[KEYS];\n const setters = this[SETTERS];\n // don't accept unknown props\n for (const key of argKeys) {\n if (!(key in setters)) {\n throw new NoProperty(structure, key);\n }\n }\n // checking each name so that we would see inenumerable initializers as well\n let normalCount = 0;\n let normalFound = 0;\n let normalMissing = 0;\n let specialFound = 0;\n for (const key of keys) {\n const set = setters[key];\n if (set.special) {\n if (key in arg) {\n specialFound++;\n }\n } else {\n normalCount++;\n if (key in arg) {\n normalFound++;\n } else if (set.required) {\n normalMissing++;\n }\n }\n }\n if (normalMissing !== 0 && specialFound === 0) {\n const missing = keys.filter(k => setters[k].required && !(k in arg));\n throw new MissingInitializers(structure, missing);\n }\n if (specialFound + normalFound > argKeys.length) {\n // some props aren't enumerable\n for (const key of keys) {\n if (key in arg) {\n if (!argKeys.includes(key)) {\n argKeys.push(key);\n }\n }\n }\n }\n // apply default values unless all properties are initialized\n if (normalFound < normalCount && specialFound === 0) {\n if (template) {\n if (template[MEMORY]) {\n this[COPY](template);\n }\n }\n }\n for (const key of argKeys) {\n const set = setters[key];\n set.call(this, arg[key], allocator);\n }\n return argKeys.length;\n };\n },\n getTypedArray(structure) {\n const { type, instance } = structure;\n if (type !== undefined && instance) {\n const [ member ] = instance.members;\n switch (type) {\n case StructureType.Enum:\n case StructureType.ErrorSet:\n case StructureType.Primitive: {\n const { byteSize, type } = member;\n const intType = (type === MemberType.Float)\n ? 'Float'\n : (type === MemberType.Int) ? 'Int' : 'Uint';\n const prefix = (byteSize > 4 && type !== MemberType.Float) ? 'Big' : '';\n const arrayName = prefix + intType + (byteSize * 8) + 'Array';\n return globalThis[arrayName];\n } case StructureType.Array:\n case StructureType.Slice:\n case StructureType.Vector:\n return this.getTypedArray(member.structure);\n }\n }\n },\n});\n\nexport { all as default };\n","import { ArgStructFlag, StructureFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { ArgumentCountMismatch } from '../errors.js';\nimport { THROWING, VIVIFICATE, VISIT, RETURN, ALLOCATOR, COPY, MEMORY, SLOTS, FINALIZE } from '../symbols.js';\nimport { defineValue } from '../utils.js';\n\nvar argStruct = mixin({\n defineArgStruct(structure, descriptors) {\n const {\n flags,\n byteSize,\n align,\n length,\n instance: { members },\n } = structure;\n const thisEnv = this;\n const argMembers = members.slice(1);\n const constructor = function(args, argAlloc) {\n const creating = this instanceof constructor;\n let self, dv;\n if (creating) {\n self = this;\n dv = thisEnv.allocateMemory(byteSize, align);\n } else {\n self = Object.create(constructor.prototype);\n dv = args;\n }\n self[MEMORY] = dv;\n if (flags & StructureFlag.HasSlot) {\n self[SLOTS] = {};\n }\n if (creating) {\n let options;\n if (flags & ArgStructFlag.HasOptions) {\n if (args.length === length + 1) {\n options = args.pop();\n }\n }\n // length holds the minimum number of arguments\n if (args.length !== length) {\n throw new ArgumentCountMismatch(length, args.length);\n }\n if (flags & ArgStructFlag.IsAsync) {\n self[FINALIZE] = null;\n }\n thisEnv.copyArguments(self, args, argMembers, options, argAlloc);\n } else {\n return self;\n }\n };\n for (const member of members) {\n descriptors[member.name] = this.defineMember(member);\n }\n const retvalSetter = descriptors.retval.set;\n descriptors.length = defineValue(argMembers.length);\n descriptors[VIVIFICATE] = (flags & StructureFlag.HasObject) && this.defineVivificatorStruct(structure);\n descriptors[VISIT] = (flags & StructureFlag.HasPointer) && this.defineVisitorArgStruct(members);\n descriptors[RETURN] = defineValue(function(value) {\n // pass allocator associated with argument to setter\n retvalSetter.call(this, value, this[ALLOCATOR]);\n });\n descriptors[Symbol.iterator] = this.defineArgIterator?.(argMembers);\n {\n descriptors[COPY] = this.defineRetvalCopier(members[0]);\n }\n return constructor;\n },\n finalizeArgStruct(structure, staticDescriptors) {\n const { flags } = structure;\n staticDescriptors[THROWING] = defineValue(!!(flags & ArgStructFlag.IsThrowing));\n },\n});\n\nexport { argStruct as default };\n","import { mixin } from '../environment.js';\nimport { PROXY, ARRAY, RESTORE, MEMORY, SLOTS, PARENT } from '../symbols.js';\nimport { defineProperties } from '../utils.js';\n\nvar arrayLike = mixin({\n defineFinalizerArray({ get, set }) {\n return {\n value() {\n const value = new Proxy(this, proxyHandlers);\n defineProperties(this, {\n [PROXY]: { value },\n get: { value: get.bind(this) },\n set: set && { value: set.bind(this) },\n });\n return value;\n },\n };\n },\n defineVivificatorArray(structure) {\n const { instance: { members: [ member ]} } = structure;\n const { byteSize, structure: elementStructure } = member;\n const thisEnv = this;\n const value = function getChild(index) {\n const { constructor } = elementStructure;\n {\n this[RESTORE]?.();\n }\n const dv = this[MEMORY];\n const parentOffset = dv.byteOffset;\n const offset = parentOffset + byteSize * index;\n const childDV = thisEnv.obtainView(dv.buffer, offset, byteSize);\n const object = this[SLOTS][index] = constructor.call(PARENT, childDV);\n return object;\n };\n return { value };\n },\n});\n\nconst proxyHandlers = {\n get(array, name) {\n const index = (typeof(name) === 'symbol') ? 0 : name|0;\n if (index !== 0 || index == name) {\n return array.get(index);\n } else if (name === ARRAY) {\n return array;\n } else {\n return array[name];\n }\n },\n set(array, name, value) {\n const index = (typeof(name) === 'symbol') ? 0 : name|0;\n if (index !== 0 || index == name) {\n array.set(index, value);\n } else {\n array[name] = value;\n }\n return true;\n },\n deleteProperty(array, name) {\n const index = (typeof(name) === 'symbol') ? 0 : name|0;\n if (index !== 0 || index == name) {\n return false;\n } else {\n delete array[name];\n return true;\n }\n },\n has(array, name) {\n const index = (typeof(name) === 'symbol') ? 0 : name|0;\n if (index !== 0 || index == name) {\n return (index >= 0 && index < array.length);\n } else {\n return array[name];\n }\n },\n ownKeys(array) {\n const keys = [];\n for (let i = 0, len = array.length; i < len; i++) {\n keys.push(`${i}`);\n }\n keys.push('length', PROXY);\n return keys;\n },\n getOwnPropertyDescriptor(array, name) {\n const index = (typeof(name) === 'symbol') ? 0 : name|0;\n if (index !== 0 || index == name) {\n if (index >= 0 && index < array.length) {\n return { value: array.get(index), enumerable: true, writable: true, configurable: true };\n }\n } else {\n return Object.getOwnPropertyDescriptor(array, name);\n }\n },\n};\n\nexport { arrayLike as default };\n","import { ArrayFlag, StructureFlag, VisitorFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { ArrayLengthMismatch, InvalidArrayInitializer } from '../errors.js';\nimport { SENTINEL, ENTRIES, INITIALIZE, FINALIZE, VIVIFICATE, VISIT, COPY } from '../symbols.js';\nimport { defineValue, getProxy, isCompatibleInstanceOf, transformIterable } from '../utils.js';\n\nvar array = mixin({\n defineArray(structure, descriptors) {\n const {\n length,\n instance: { members: [ member ] },\n flags,\n } = structure;\n const propApplier = this.createApplier(structure);\n const descriptor = this.defineMember(member);\n const { set } = descriptor;\n const constructor = this.createConstructor(structure);\n const initializer = function(arg, allocator) {\n if (isCompatibleInstanceOf(arg, constructor)) {\n this[COPY](arg);\n if (flags & StructureFlag.HasPointer) {\n this[VISIT]('copy', VisitorFlag.Vivificate, arg);\n }\n } else {\n if (typeof(arg) === 'string' && flags & ArrayFlag.IsString) {\n arg = { string: arg };\n }\n if (arg?.[Symbol.iterator]) {\n arg = transformIterable(arg);\n if (arg.length !== length) {\n throw new ArrayLengthMismatch(structure, this, arg);\n }\n let i = 0;\n for (const value of arg) {\n set.call(this, i++, value, allocator);\n }\n } else if (arg && typeof(arg) === 'object') {\n if (propApplier.call(this, arg) === 0) {\n throw new InvalidArrayInitializer(structure, arg);\n }\n } else if (arg !== undefined) {\n throw new InvalidArrayInitializer(structure, arg);\n }\n }\n };\n descriptors.$ = { get: getProxy, set: initializer };\n descriptors.length = defineValue(length);\n descriptors.entries = descriptors[ENTRIES] = this.defineArrayEntries();\n if (flags & ArrayFlag.IsTypedArray) {\n descriptors.typedArray = this.defineTypedArray(structure);\n if (flags & ArrayFlag.IsString) {\n descriptors.string = this.defineString(structure);\n }\n if (flags & ArrayFlag.IsClampedArray) {\n descriptors.clampedArray = this.defineClampedArray(structure);\n }\n }\n descriptors[Symbol.iterator] = this.defineArrayIterator();\n descriptors[INITIALIZE] = defineValue(initializer);\n descriptors[FINALIZE] = this.defineFinalizerArray(descriptor);\n descriptors[VIVIFICATE] = (flags & StructureFlag.HasObject) && this.defineVivificatorArray(structure);\n descriptors[VISIT] = (flags & StructureFlag.HasPointer) && this.defineVisitorArray();\n return constructor;\n },\n finalizeArray(structure, staticDescriptors) {\n const {\n flags,\n instance: { members: [ member ] },\n } = structure;\n staticDescriptors.child = defineValue(member.structure.constructor);\n staticDescriptors[SENTINEL] = (flags & ArrayFlag.HasSentinel) && this.defineSentinel(structure);\n },\n});\n\nexport { array as default };\n","import { MemberType, MemberFlag, EnumFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { InvalidInitializer, EnumExpected } from '../errors.js';\nimport { SLOTS, NAME, CAST, TAG, TYPED_ARRAY, INITIALIZE } from '../symbols.js';\nimport { defineProperty, defineValue, toString } from '../utils.js';\n\nvar _enum = mixin({\n defineEnum(structure, descriptors) {\n const {\n instance: {\n members: [ member ],\n },\n } = structure;\n const descriptor = this.defineMember(member);\n const { get, set } = descriptor;\n const { get: getNumber } = this.defineMember(member, false);\n const propApplier = this.createApplier(structure);\n const expected = [ 'string', 'number', 'tagged union' ];\n const initializer = function(arg) {\n if (arg && typeof(arg) === 'object') {\n if (propApplier.call(this, arg) === 0) {\n throw new InvalidInitializer(structure, expected, arg);\n }\n } else if (arg !== undefined) {\n set.call(this, arg);\n }\n };\n const constructor = this.createConstructor(structure, {\n onCastError(structure, arg) {\n throw new InvalidInitializer(structure, expected, arg);\n }\n });\n descriptors.$ = descriptor;\n descriptors.toString = defineValue(toString);\n descriptors[Symbol.toPrimitive] = {\n value(hint) {\n switch (hint) {\n case 'string':\n case 'default':\n return this.$[NAME];\n default:\n return getNumber.call(this);\n }\n },\n };\n descriptors[INITIALIZE] = defineValue(initializer);\n return constructor;\n },\n finalizeEnum(structure, staticDescriptors) {\n const {\n flags,\n constructor,\n instance: { members: [ member ] },\n static: { members, template },\n } = structure;\n const items = template[SLOTS];\n // obtain getter/setter for accessing int values directly\n const { get, set } = this.defineMember(member, false);\n const itemsByIndex = {};\n for (const { name, flags, slot } of members) {\n if (flags & MemberFlag.IsPartOfSet) {\n const item = items[slot];\n // attach name to item so tagged union code can quickly find it\n defineProperty(item, NAME, defineValue(name));\n const index = get.call(item);\n // make item available by name \n staticDescriptors[name] = { value: item, writable: false };\n itemsByIndex[index] = item;\n }\n }\n // add cast handler allowing strings, numbers, and tagged union to be casted into enums\n staticDescriptors[CAST] = {\n value(arg) {\n if (typeof(arg) === 'string') {\n return constructor[arg];\n } else if(typeof(arg) === 'number' || typeof(arg) === 'bigint') {\n let item = itemsByIndex[arg];\n if (!item) {\n if (flags & EnumFlag.IsOpenEnded) {\n // create the item on-the-fly when enum is non-exhaustive\n item = new constructor(undefined);\n // write the value into memory\n set.call(item, arg);\n // attach the new item to the enum set\n const name = `${arg}`;\n defineProperty(item, NAME, defineValue(name));\n defineProperty(constructor, name, defineValue(item));\n itemsByIndex[arg] = item;\n }\n }\n return item;\n } else if (arg instanceof constructor) {\n return arg;\n } else if (arg?.[TAG] instanceof constructor) {\n // a tagged union, return the active tag\n return arg[TAG];\n } else {\n return false;\n }\n }\n };\n staticDescriptors[TYPED_ARRAY] = defineValue(this.getTypedArray(structure));\n },\n transformDescriptorEnum(descriptor, member) {\n const { type, structure } = member;\n if (type === MemberType.Object) {\n return descriptor;\n }\n const findEnum = function(value) {\n const { constructor } = structure;\n // the enumeration constructor returns the object for the int value\n const item = constructor(value);\n if (!item) {\n throw new EnumExpected(structure, value);\n }\n return item\n };\n const { get, set } = descriptor;\n return {\n get: (get.length === 0)\n ? function getEnum() {\n const value = get.call(this);\n return findEnum(value);\n }\n : function getEnumElement(index) {\n const value = get.call(this, index);\n return findEnum(value);\n },\n set: (set.length === 1)\n ? function setEnum(value) {\n const item = findEnum(value);\n // call Symbol.toPrimitive directly as enum can be bigint or number\n value = item[Symbol.toPrimitive]();\n set.call(this, value);\n }\n : function setEnumElement(index, value) {\n const item = findEnum(value);\n set.call(this, index, item[Symbol.toPrimitive]());\n },\n };\n },\n});\n\nexport { _enum as default };\n","import { MemberType, ErrorSetFlag, StructureType } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { isErrorJSON, InvalidInitializer, deanimalizeErrorName, NotInErrorSet, ErrorExpected } from '../errors.js';\nimport { SLOTS, PROPS, CAST, CLASS, INITIALIZE } from '../symbols.js';\nimport { defineValue, defineProperties, defineProperty } from '../utils.js';\n\nvar errorSet = mixin({\n init() {\n this.ZigError = null,\n this.globalItemsByIndex = {};\n this.globalErrorSet = null;\n },\n defineErrorSet(structure, descriptors) {\n const {\n instance: { members: [ member ] },\n byteSize,\n flags,\n } = structure;\n if (!this.ZigError) {\n // create anyerror set\n this.ZigError = class Error extends ZigErrorBase {};\n const ae = {\n type: StructureType.ErrorSet,\n flags: ErrorSetFlag.IsGlobal,\n byteSize,\n name: 'anyerror',\n instance: { members: [ member ] },\n static: { members: [], template: { SLOTS: {} } },\n };\n const es = this.defineStructure(ae);\n this.finalizeStructure(ae);\n this.globalErrorSet = es;\n }\n if (this.globalErrorSet && (flags & ErrorSetFlag.IsGlobal)) {\n return this.globalErrorSet;\n }\n const descriptor = this.defineMember(member);\n const { set } = descriptor;\n const expected = [ 'string', 'number' ];\n const propApplier = this.createApplier(structure);\n const initializer = function(arg) {\n if (arg instanceof constructor[CLASS]) {\n set.call(this, arg);\n } else if (arg && typeof(arg) === 'object' && !isErrorJSON(arg)) {\n if (propApplier.call(this, arg) === 0) {\n throw new InvalidInitializer(structure, expected, arg);\n }\n } else if (arg !== undefined) {\n set.call(this, arg);\n }\n };\n const constructor = this.createConstructor(structure, {\n onCastError(structure, arg) {\n throw new InvalidInitializer(structure, expected, arg);\n }\n });\n descriptors.$ = descriptor;\n descriptors[INITIALIZE] = defineValue(initializer);\n return constructor;\n },\n finalizeErrorSet(structure, staticDescriptors) {\n const {\n constructor,\n flags,\n instance: { members: [ member ] },\n static: { members, template },\n } = structure;\n if (this.globalErrorSet && (flags & ErrorSetFlag.IsGlobal)) {\n // already finalized\n return false;\n }\n const items = template?.[SLOTS] ?? {};\n const itemsByIndex = (flags & ErrorSetFlag.IsGlobal) ? this.globalItemsByIndex : {};\n // obtain getter/setter for accessing int values directly\n const { get } = this.defineMember(member, false);\n for (const { name, slot } of members) {\n const item = items[slot];\n // unlike enums, error objects in an error-set aren't instances of the error-set class\n // they're instance of a superclass of JavaScript's Error; here we need to extract the\n // error number from the error-set instance and create the error object, if hasn't been\n // created already for an earlier set\n const number = get.call(item);\n let error = this.globalItemsByIndex[number];\n const inGlobalSet = !!error;\n if (!error) {\n error = new this.ZigError(name, number);\n }\n // make the error object available by name\n const descriptor = defineValue(error);\n staticDescriptors[name] = descriptor;\n // make it available by error.toString() as well, so that the in operator can be used\n // to see if an error is in a set; note that the text will be prefixed with \"Error: \"\n // so it's not the same as error.message\n const stringified = `${error}`;\n staticDescriptors[stringified] = descriptor;\n itemsByIndex[number] = error;\n // add to global set\n if (!inGlobalSet) { \n defineProperties(this.globalErrorSet, {\n [name]: descriptor,\n [stringified]: descriptor,\n });\n this.globalErrorSet[PROPS].push(name);\n this.globalItemsByIndex[number] = error;\n }\n }\n // add cast handler allowing strings, numbers, and JSON object to be casted into error set\n staticDescriptors[CAST] = {\n value(arg) {\n if (typeof(arg) === 'number') {\n return itemsByIndex[arg];\n } else if (typeof(arg) === 'string') {\n return constructor[arg];\n } else if (arg instanceof constructor[CLASS]) {\n return itemsByIndex[Number(arg)];\n } else if (isErrorJSON(arg)) {\n return constructor[`Error: ${arg.error}`];\n } else if (arg instanceof Error) {\n return constructor[`${arg}`];\n } else {\n return false;\n }\n }\n };\n staticDescriptors[CLASS] = defineValue(this.ZigError);\n },\n transformDescriptorErrorSet(descriptor, member) {\n const { type, structure } = member;\n if (type === MemberType.Object) {\n return descriptor;\n }\n const findError = (value) => {\n const { constructor, flags } = structure;\n const item = constructor(value);\n if (!item) {\n if (flags & ErrorSetFlag.IsGlobal) {\n if (typeof(value) === 'number') {\n const newItem = new this.ZigError(`Unknown error: ${value}`, value);\n this.globalItemsByIndex[value] = newItem;\n defineProperty(this.globalErrorSet, `${newItem}`, defineValue(newItem));\n return newItem;\n }\n }\n if (value instanceof Error) {\n throw new NotInErrorSet(structure);\n } else {\n throw new ErrorExpected(structure, value);\n }\n }\n return item\n };\n const { get, set } = descriptor;\n return {\n get: (get.length === 0)\n ? function getError() {\n const value = get.call(this);\n return findError(value);\n }\n : function getErrorElement(index) {\n const value = get.call(this, index);\n return findError(value);\n },\n set: (set.length === 1)\n ? function setError(value) {\n const item = findError(value);\n value = Number(item);\n set.call(this, value);\n }\n : function setError(index, value) {\n const item = findError(value);\n value = Number(item);\n set.call(this, index, value);\n },\n };\n },\n});\n\nclass ZigErrorBase extends Error {\n constructor(name, number) {\n super(deanimalizeErrorName(name));\n this.number = number;\n this.stack = undefined;\n }\n\n [Symbol.toPrimitive](hint) {\n switch (hint) {\n case 'string':\n case 'default':\n return Error.prototype.toString.call(this, hint);\n default:\n return this.number;\n }\n }\n\n toJSON() {\n return { error: this.message };\n }\n}\n\nexport { errorSet as default };\n","import { MemberType, StructureFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { NotInErrorSet, isErrorJSON } from '../errors.js';\nimport { INITIALIZE, VIVIFICATE, RESET, VISIT, COPY, CLASS } from '../symbols.js';\nimport { defineValue, isCompatibleInstanceOf } from '../utils.js';\n\nvar errorUnion = mixin({\n defineErrorUnion(structure, descriptors) {\n const {\n instance: { members: [ valueMember, errorMember ] },\n flags,\n } = structure;\n const { get: getValue, set: setValue } = this.defineMember(valueMember);\n const { get: getError, set: setError } = this.defineMember(errorMember);\n const { get: getErrorNumber, set: setErrorNumber } = this.defineMember(errorMember, false);\n const get = function() {\n const errNum = getErrorNumber.call(this);\n if (errNum) {\n throw getError.call(this);\n } else {\n return getValue.call(this);\n }\n };\n const isValueVoid = valueMember.type === MemberType.Void;\n const ErrorSet = errorMember.structure.constructor;\n const clearValue = function() {\n this[RESET]();\n this[VISIT]?.('clear');\n };\n const propApplier = this.createApplier(structure);\n const initializer = function(arg, allocator) {\n if (isCompatibleInstanceOf(arg, constructor)) {\n this[COPY](arg);\n if (flags & StructureFlag.HasPointer) {\n if (!getErrorNumber.call(this)) {\n this[VISIT]('copy', 0, arg);\n }\n }\n } else if (arg instanceof ErrorSet[CLASS] && ErrorSet(arg)) {\n setError.call(this, arg);\n clearValue.call(this);\n } else if (arg !== undefined || isValueVoid) {\n try {\n // call setValue() first, in case it throws\n setValue.call(this, arg, allocator);\n setErrorNumber.call(this, 0);\n } catch (err) {\n if (arg instanceof Error) {\n const match = ErrorSet(arg) ?? ErrorSet.Unexpected;\n if (match) {\n setError.call(this, match);\n clearValue.call(this);\n } else {\n // we gave setValue a chance to see if the error is actually an acceptable value\n // now is time to throw an error\n throw new NotInErrorSet(errorMember.structure);\n }\n } else if (isErrorJSON(arg)) {\n // setValue() failed because the argument actually is an error as JSON\n setError.call(this, arg);\n clearValue.call(this);\n } else if (arg && typeof(arg) === 'object') {\n // maybe the argument contains a special property like `dataView` or `base64`\n if (propApplier.call(this, arg) === 0) {\n // propApplier() found zero prop, so it's time to throw\n throw err;\n }\n } else {\n throw err;\n }\n }\n }\n };\n const { bitOffset, byteSize } = valueMember;\n const constructor = this.createConstructor(structure);\n descriptors.$ = { get, set: initializer };\n descriptors[INITIALIZE] = defineValue(initializer);\n descriptors[VIVIFICATE] = (flags & StructureFlag.HasObject) && this.defineVivificatorStruct(structure);\n // for clear value after error union is set to an an error (from mixin \"features/data-copying\")\n descriptors[RESET] = this.defineResetter(bitOffset / 8, byteSize);\n // for operating on pointers contained in the error union\n descriptors[VISIT] = (flags & StructureFlag.HasPointer) && this.defineVisitorErrorUnion(valueMember, getErrorNumber);\n return constructor;\n },\n});\n\nexport { errorUnion as default };\n","import { StructureType } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { NoInitializer, TypeMismatch, Unsupported, NoCastingToFunction } from '../errors.js';\nimport { TYPE, ENVIRONMENT, MEMORY } from '../symbols.js';\nimport { ObjectCache, defineValue, getSelf, defineProperties } from '../utils.js';\n\nvar _function = mixin({\n defineFunction(structure, descriptors) {\n const {\n instance: { members: [ member ], template: thunk },\n static: { template: jsThunkController },\n } = structure;\n const cache = new ObjectCache();\n const { structure: { constructor: ArgStruct } } = member;\n const thisEnv = this;\n const constructor = function(arg) {\n const creating = this instanceof constructor;\n let dv;\n if (creating) {\n // creating a Zig function object from a JavaScript function\n if (arguments.length === 0) {\n throw new NoInitializer(structure);\n }\n if (typeof(arg) !== 'function') {\n throw new TypeMismatch('function', arg);\n }\n if (ArgStruct[TYPE] === StructureType.VariadicStruct || !jsThunkController) {\n throw new Unsupported();\n }\n // create an inbound thunk for function (from mixin \"features/call-marshaling-inbound\")\n dv = thisEnv.getFunctionThunk(arg, jsThunkController);\n } else {\n if (this !== ENVIRONMENT) {\n // casting from buffer to function is allowed only if request comes from the runtime\n throw new NoCastingToFunction();\n }\n // casting a memory pointing to Zig binary\n dv = arg;\n }\n let existing;\n if (existing = cache.find(dv)) {\n return existing;\n }\n const argCount = ArgStruct.prototype.length;\n const self = (creating)\n ? thisEnv.createInboundCaller(arg, ArgStruct)\n : thisEnv.createOutboundCaller(thunk, ArgStruct);\n defineProperties(self, {\n length: defineValue(argCount),\n name: defineValue(creating ? arg.name : ''),\n });\n // make self an instance of this function type\n Object.setPrototypeOf(self, constructor.prototype);\n self[MEMORY] = dv;\n cache.save(dv, self);\n return self;\n };\n // make function type a superclass of Function\n Object.setPrototypeOf(constructor.prototype, Function.prototype);\n descriptors.valueOf = descriptors.toJSON = defineValue(getSelf);\n return constructor;\n },\n finalizeFunction(structure, staticDescriptors, descriptors) {\n // don't change the tag of functions\n descriptors[Symbol.toStringTag] = undefined;\n },\n});\n\nexport { _function as default };\n","import { MemberType, OptionalFlag, StructureFlag, VisitorFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { INITIALIZE, RESET, VIVIFICATE, VISIT, COPY } from '../symbols.js';\nimport { defineValue, isCompatibleInstanceOf } from '../utils.js';\n\nvar optional = mixin({\n defineOptional(structure, descriptors) {\n const {\n instance: { members: [ valueMember, presentMember ] },\n flags,\n } = structure;\n const { get: getValue, set: setValue } = this.defineMember(valueMember);\n const { get: getPresent, set: setPresent } = this.defineMember(presentMember);\n const get = function() {\n const present = getPresent.call(this);\n if (present) {\n return getValue.call(this);\n } else {\n this[VISIT]?.('clear');\n return null;\n }\n };\n const isValueVoid = valueMember.type === MemberType.Void;\n const initializer = function(arg, allocator) {\n if (isCompatibleInstanceOf(arg, constructor)) {\n this[COPY](arg);\n if (flags & StructureFlag.HasPointer) {\n // don't bother copying pointers when it's empty\n if (getPresent.call(this)) {\n this[VISIT]('copy', VisitorFlag.Vivificate, arg);\n }\n }\n } else if (arg === null) {\n setPresent.call(this, 0);\n this[RESET]?.();\n // clear references so objects can be garbage-collected\n this[VISIT]?.('clear');\n } else if (arg !== undefined || isValueVoid) {\n // call setValue() first, in case it throws\n setValue.call(this, arg, allocator);\n if (flags & OptionalFlag.HasSelector) {\n setPresent.call(this, 1);\n } else if (flags & StructureFlag.HasPointer) {\n // since setValue() wouldn't write address into memory when the target is in\n // JS memory, we need to use setPresent() in order to write something\n // non-zero there so that we know the field is populated\n if (!getPresent.call(this)) {\n setPresent.call(this, 13);\n }\n }\n }\n };\n const constructor = structure.constructor = this.createConstructor(structure);\n const { bitOffset, byteSize } = valueMember;\n descriptors.$ = { get, set: initializer };\n // we need to clear the value portion when there's a separate bool indicating whether a value\n // is present; for optional pointers, the bool overlaps the usize holding the address; setting\n // it to false automatically clears the address\n descriptors[INITIALIZE] = defineValue(initializer);\n descriptors[RESET] = (flags & OptionalFlag.HasSelector) && this.defineResetter(bitOffset / 8, byteSize);\n descriptors[VIVIFICATE] = (flags & StructureFlag.HasObject) && this.defineVivificatorStruct(structure);\n descriptors[VISIT] = (flags & StructureFlag.HasPointer) && this.defineVisitorOptional(valueMember, getPresent);\n return constructor;\n },\n});\n\nexport { optional as default };\n","import { PointerFlag, StructureType, MemberType, PrimitiveFlag, SliceFlag, StructureFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { NoCastingToPointer, throwReadOnly, NullPointer, ConstantConstraint, ReadOnlyTarget, InvalidPointerTarget, PreviouslyFreed, InvalidSliceLength, ZigMemoryTargetRequired } from '../errors.js';\nimport { CAST, ENVIRONMENT, PARENT, LAST_LENGTH, TARGET, INITIALIZE, FINALIZE, MEMORY, SLOTS, PROXY, UPDATE, ADDRESS, LENGTH, VISIT, LAST_ADDRESS, MAX_LENGTH, POINTER, TYPE, RESTORE, CONST_TARGET, SETTERS, TYPED_ARRAY, ZIG, SENTINEL, SIZE } from '../symbols.js';\nimport { defineValue, getProxy, isCompatibleType, isCompatibleInstanceOf, usizeInvalid, findElements } from '../utils.js';\n\nvar pointer = mixin({\n definePointer(structure, descriptors) {\n const {\n flags,\n byteSize,\n instance: { members: [ member ] },\n } = structure;\n const { structure: targetStructure } = member;\n const {\n type: targetType,\n flags: targetFlags,\n byteSize: targetSize = 1\n } = targetStructure;\n // length for slice can be zero or undefined\n const addressSize = (flags & PointerFlag.HasLength) ? byteSize / 2 : byteSize;\n const { get: readAddress, set: writeAddress } = this.defineMember({\n type: MemberType.Uint,\n bitOffset: 0,\n bitSize: addressSize * 8,\n byteSize: addressSize,\n structure: { byteSize: addressSize },\n });\n const { get: readLength, set: writeLength } = (flags & PointerFlag.HasLength) ? this.defineMember({\n type: MemberType.Uint,\n bitOffset: addressSize * 8,\n bitSize: addressSize * 8,\n byteSize: addressSize,\n structure: {\n flags: PrimitiveFlag.IsSize,\n byteSize: addressSize\n },\n }) : {};\n const updateTarget = function(context, all = true, active = true) {\n if (all || this[MEMORY][ZIG]) {\n if (active) {\n const Target = constructor.child;\n const address = readAddress.call(this);\n const length = (flags & PointerFlag.HasLength)\n ? readLength.call(this)\n : (targetType === StructureType.Slice && targetFlags & SliceFlag.HasSentinel)\n ? thisEnv.findSentinel(address, Target[SENTINEL].bytes) + 1\n : 1;\n if (address !== this[LAST_ADDRESS] || length !== this[LAST_LENGTH]) {\n const dv = thisEnv.findMemory(context, address, length, Target[SIZE]);\n const newTarget = (dv) ? Target.call(ENVIRONMENT, dv) : null;\n this[SLOTS][0] = newTarget;\n this[LAST_ADDRESS] = address;\n this[LAST_LENGTH] = length;\n if (flags & PointerFlag.HasLength) {\n this[MAX_LENGTH] = null;\n }\n return newTarget;\n }\n } else {\n return this[SLOTS][0] = undefined;\n }\n }\n return this[SLOTS][0];\n };\n const setAddress = function(address) {\n writeAddress.call(this, address);\n this[LAST_ADDRESS] = address;\n };\n const sentinelCount = (targetFlags & SliceFlag.HasSentinel) ? 1 : 0;\n const setLength = (flags & PointerFlag.HasLength || targetFlags & SliceFlag.HasSentinel)\n ? function(length) {\n writeLength?.call?.(this, length - sentinelCount);\n this[LAST_LENGTH] = length;\n }\n : null;\n const getTargetObject = function() {\n const pointer = this[POINTER] ?? this;\n const empty = !pointer[SLOTS][0];\n const target = updateTarget.call(pointer, null, empty);\n if (!target) {\n if (flags & PointerFlag.IsNullable) {\n return null;\n }\n throw new NullPointer();\n }\n return (flags & PointerFlag.IsConst) ? getConstProxy(target) : target;\n };\n const setTargetObject = function(arg) {\n if (arg === undefined) {\n return;\n }\n const pointer = this[POINTER] ?? this;\n if (arg) {\n const zig = arg[MEMORY][ZIG];\n if (zig) {\n // the target sits in Zig memory--apply the change immediately\n const { address, js } = zig;\n setAddress.call(this, address);\n setLength?.call?.(this, arg.length);\n if (js) {\n // remove the fake Zig memory attributes now that we've bypassed the check\n arg[MEMORY][ZIG] = undefined;\n }\n } else {\n if (pointer[MEMORY][ZIG]) {\n throw new ZigMemoryTargetRequired();\n }\n }\n } else if (pointer[MEMORY][ZIG]) {\n setAddress.call(this, 0);\n setLength?.call?.(this, 0);\n }\n pointer[SLOTS][0] = arg ?? null;\n if (flags & PointerFlag.HasLength) {\n pointer[MAX_LENGTH] = null;\n }\n };\n const getTarget = (targetFlags & StructureFlag.HasValue)\n ? function() {\n const target = getTargetObject.call(this);\n return target.$;\n }\n : getTargetObject;\n const setTarget = (flags & PointerFlag.IsConst)\n ? throwReadOnly\n : function(value) {\n const target = getTargetObject.call(this);\n return target.$ = value;\n };\n const getTargetLength = function() {\n const target = getTargetObject.call(this);\n return (target) ? target.length : 0;\n };\n const setTargetLength = function(len) {\n len = len | 0;\n const target = getTargetObject.call(this);\n if (target) {\n if (target.length === len) {\n return;\n }\n } else {\n if (len !== 0) {\n throw new InvalidSliceLength(len, 0);\n }\n return;\n }\n {\n target[RESTORE]?.();\n }\n const dv = target[MEMORY];\n const zig = dv[ZIG];\n // determine the maximum length\n let max;\n if (!zig) {\n if (flags & PointerFlag.HasLength) {\n this[MAX_LENGTH] ||= target.length;\n max = this[MAX_LENGTH];\n } else {\n const bytesAvailable = dv.buffer.byteLength - dv.byteOffset;\n max = (bytesAvailable / targetSize) | 0;\n }\n }\n if (len < 0 || len > max) {\n throw new InvalidSliceLength(len, max);\n }\n const byteLength = len * targetSize;\n const newDV = (zig)\n ? thisEnv.obtainZigView(zig.address, byteLength)\n : thisEnv.obtainView(dv.buffer, dv.byteOffset, byteLength);\n const Target = targetStructure.constructor;\n this[SLOTS][0] = Target.call(ENVIRONMENT, newDV);\n setLength?.call?.(this, len);\n };\n const thisEnv = this;\n const initializer = function(arg, allocator) {\n const Target = targetStructure.constructor;\n if (isPointerOf(arg, Target)) {\n // initialize with the other pointer'structure target\n if (!(flags & PointerFlag.IsConst) && arg.constructor.const) {\n throw new ConstantConstraint(structure, arg);\n }\n arg = arg[SLOTS][0];\n } else if (flags & PointerFlag.IsMultiple) {\n if (isCompatiblePointer(arg, Target, flags)) {\n arg = Target(arg[SLOTS][0][MEMORY]);\n }\n } else if (targetType === StructureType.Slice && (targetFlags & SliceFlag.IsOpaque) && arg) {\n if (arg.constructor[TYPE] === StructureType.Pointer) {\n arg = arg[TARGET]?.[MEMORY];\n } else if (arg[MEMORY]) {\n arg = arg[MEMORY];\n } else if (arg?.buffer instanceof ArrayBuffer) {\n if (!(arg instanceof Uint8Array || arg instanceof DataView)) {\n const { byteOffset, byteLength } = arg;\n if (byteOffset !== undefined && byteLength !== undefined) {\n arg = new DataView(arg.buffer, byteOffset, byteLength);\n }\n }\n }\n }\n if (arg instanceof Target) {\n {\n arg[RESTORE]?.();\n }\n const constTarget = arg[CONST_TARGET];\n if (constTarget) {\n if (flags & PointerFlag.IsConst) {\n arg = constTarget;\n } else {\n throw new ReadOnlyTarget(structure);\n }\n }\n } else if (isCompatibleInstanceOf(arg, Target)) {\n // compatible object from a different module\n arg = Target.call(ENVIRONMENT, arg[MEMORY]);\n } else if (flags & PointerFlag.IsSingle && flags & PointerFlag.IsMultiple && arg instanceof Target.child) {\n // C pointer\n arg = Target(arg[MEMORY]);\n } else if (isCompatibleBuffer(arg, Target)) {\n // autocast to target type\n const dv = thisEnv.extractView(targetStructure, arg);\n arg = Target(dv);\n } else if (arg != undefined && !arg[MEMORY]) {\n if (flags & PointerFlag.IsSingle && flags & PointerFlag.IsMultiple) {\n // C pointer\n if (typeof(arg) === 'object' && !arg[Symbol.iterator]) {\n let single = true;\n // make sure the object doesn't contain special props for the slice\n const propSetters = Target.prototype[SETTERS];\n for (const key of Object.keys(arg)) {\n const set = propSetters[key];\n if (set?.special) {\n single = false;\n break;\n }\n }\n if (single) {\n arg = [ arg ];\n }\n }\n }\n if (TYPED_ARRAY in Target && arg?.buffer && arg[Symbol.iterator]) {\n throw new InvalidPointerTarget(structure, arg);\n }\n // autovivificate target object\n const autoObj = new Target(arg, { allocator });\n arg = autoObj;\n } else if (arg !== undefined) {\n if (!(flags & PointerFlag.IsNullable) || arg !== null) {\n throw new InvalidPointerTarget(structure, arg);\n }\n }\n const zig = arg?.[MEMORY]?.[ZIG];\n if (zig?.address === usizeInvalid) {\n throw new PreviouslyFreed(arg);\n }\n this[TARGET] = arg;\n };\n const constructor = this.createConstructor(structure);\n descriptors['*'] = { get: getTarget, set: setTarget };\n descriptors.$ = { get: getProxy, set: initializer };\n descriptors.length = { get: getTargetLength, set: setTargetLength };\n descriptors.slice = (targetType === StructureType.Slice) && {\n value(begin, end) {\n const newTarget = this[TARGET].slice(begin, end);\n return new constructor(newTarget);\n }\n };\n descriptors.subarray = (targetType === StructureType.Slice) && {\n value(begin, end, options) {\n const newTarget = this[TARGET].subarray(begin, end, options);\n return new constructor(newTarget);\n }\n };\n descriptors[Symbol.toPrimitive] = (targetType === StructureType.Primitive) && {\n value(hint) {\n return this[TARGET][Symbol.toPrimitive](hint);\n }\n };\n descriptors[INITIALIZE] = defineValue(initializer);\n descriptors[FINALIZE] = {\n value() {\n const handlers = (targetType !== StructureType.Pointer) ? proxyHandlers : {};\n let self;\n if (targetType === StructureType.Function) {\n // use an empty function as object so the proxy's apply() method is triggered\n self = function() {};\n self[MEMORY] = this[MEMORY];\n self[SLOTS] = this[SLOTS];\n Object.setPrototypeOf(self, constructor.prototype);\n } else {\n self = this;\n }\n const proxy = new Proxy(self, handlers);\n // hide the proxy so console wouldn't display a recursive structure\n Object.defineProperty(self, PROXY, { value: proxy });\n return proxy;\n }\n };\n descriptors[TARGET] = { get: getTargetObject, set: setTargetObject };\n descriptors[UPDATE] = defineValue(updateTarget);\n descriptors[ADDRESS] = { set: setAddress };\n descriptors[LENGTH] = { set: setLength };\n descriptors[VISIT] = this.defineVisitor();\n descriptors[LAST_ADDRESS] = defineValue(0);\n descriptors[LAST_LENGTH] = defineValue(0);\n descriptors[MAX_LENGTH] = (flags & PointerFlag.HasLength) && defineValue(null);\n // disable these so the target's properties are returned instead through auto-dereferencing\n descriptors.dataView = descriptors.base64 = undefined;\n return constructor;\n },\n finalizePointer(structure, staticDescriptors) {\n const {\n flags,\n constructor,\n instance: { members: [ member ] },\n } = structure;\n const { structure: targetStructure } = member;\n const { type: targetType, constructor: Target } = targetStructure;\n staticDescriptors.child = (Target) ? defineValue(Target) : {\n // deal with self-referencing pointer\n get() { return targetStructure.constructor }\n };\n staticDescriptors.const = defineValue(!!(flags & PointerFlag.IsConst));\n staticDescriptors[CAST] = {\n value(arg, options) {\n if (this === ENVIRONMENT || this === PARENT || arg instanceof constructor) {\n // casting from buffer to pointer is allowed only if request comes from the runtime\n // casting from writable to read-only is also allowed\n return false;\n } else if (isPointerOf(arg, Target)) {\n // const/non-const casting\n return new constructor(Target(arg['*']), options);\n } else if (isCompatiblePointer(arg, Target, flags)) {\n // casting between C/multi/slice pointers\n return new constructor(arg);\n } else if (targetType === StructureType.Slice) {\n // allow casting to slice through constructor of its pointer\n return new constructor(Target(arg), options);\n } else {\n throw new NoCastingToPointer(structure);\n }\n }\n };\n }\n});\n\nfunction isPointerOf(arg, Target) {\n return isCompatibleType(arg?.constructor?.child, Target) && arg['*'];\n}\n\nfunction isCompatiblePointer(arg, Target, flags) {\n if (flags & PointerFlag.IsMultiple) {\n if (arg?.constructor?.child?.child === Target.child && arg['*']) {\n return true;\n } else if (flags & PointerFlag.IsSingle && isPointerOf(arg, Target.child)) {\n // C pointer\n return true;\n }\n }\n return false;\n}\n\nconst constProxies = new WeakMap();\n\nfunction getConstProxy(target) {\n let proxy = constProxies.get(target);\n if (!proxy) {\n const pointer = target[POINTER];\n if (pointer) {\n proxy = new Proxy(pointer, readOnlyProxyHandlers);\n } else {\n proxy = new Proxy(target, constTargetProxyHandlers);\n }\n constProxies.set(target, proxy);\n }\n return proxy;\n}\n\nconst proxyHandlers = {\n get(pointer, name) {\n if (name === POINTER) {\n return pointer;\n } else if (name in pointer) {\n return pointer[name];\n } else {\n const target = pointer[TARGET];\n return target[name];\n }\n },\n set(pointer, name, value) {\n if (name in pointer) {\n pointer[name] = value;\n } else {\n const target = pointer[TARGET];\n target[name] = value;\n }\n return true;\n },\n deleteProperty(pointer, name) {\n if (name in pointer) {\n delete pointer[name];\n } else {\n const target = pointer[TARGET];\n delete target[name];\n }\n return true;\n },\n has(pointer, name) {\n if (name in pointer) {\n return true;\n } else {\n const target = pointer[TARGET];\n return name in target;\n }\n },\n apply(pointer, thisArg, args) {\n const f = pointer['*'];\n return f.apply(thisArg, args);\n },\n};\n\nconst readOnlyProxyHandlers = {\n ...proxyHandlers,\n set(pointer, name, value) {\n if (name in pointer) {\n throwReadOnly();\n } else {\n const target = pointer[TARGET];\n target[name] = value;\n }\n return true;\n },\n};\n\nconst constTargetProxyHandlers = {\n get(target, name) {\n if (name === CONST_TARGET) {\n return target;\n } else {\n const value = target[name];\n if (value?.[MEMORY]) {\n return getConstProxy(value);\n } else {\n return value;\n }\n }\n },\n set(target, name, value) {\n throwReadOnly();\n }\n};\n\nfunction isCompatibleBuffer(arg, constructor) {\n // TODO: merge this with extractView in mixin \"view-management\"\n const tag = arg?.[Symbol.toStringTag];\n if (tag) {\n const typedArray = constructor[TYPED_ARRAY];\n if (typedArray) {\n switch (tag) {\n case typedArray.name:\n case 'DataView':\n return true;\n case 'ArrayBuffer':\n return typedArray === Uint8Array || typedArray === Int8Array;\n case 'Uint8ClampedArray':\n return typedArray === Uint8Array;\n }\n }\n if (constructor.child) {\n if (findElements(arg, constructor.child) !== undefined) {\n return true;\n }\n }\n }\n return false;\n}\n\nexport { pointer as default };\n","import { mixin } from '../environment.js';\nimport { InvalidInitializer } from '../errors.js';\nimport { BIT_SIZE, PRIMITIVE, INITIALIZE, COPY } from '../symbols.js';\nimport { defineValue, isCompatibleInstanceOf, getPrimitiveName } from '../utils.js';\n\nvar primitive = mixin({\n definePrimitive(structure, descriptors) {\n const {\n instance: { members: [ member ] },\n } = structure;\n const propApplier = this.createApplier(structure);\n const { get, set } = this.defineMember(member);\n const initializer = function(arg) {\n if (isCompatibleInstanceOf(arg, constructor)) {\n this[COPY](arg);\n } else {\n if (arg && typeof(arg) === 'object') {\n if (propApplier.call(this, arg) === 0) {\n const type = getPrimitiveName(member);\n throw new InvalidInitializer(structure, type, arg);\n }\n } else if (arg !== undefined) {\n set.call(this, arg);\n }\n }\n };\n const constructor = this.createConstructor(structure);\n descriptors.$ = { get, set: initializer };\n descriptors[INITIALIZE] = defineValue(initializer);\n descriptors[Symbol.toPrimitive] = defineValue(get);\n return constructor;\n },\n finalizePrimitive(structure, staticDescriptors) {\n const {\n instance: { members: [ member ] },\n } = structure;\n staticDescriptors[BIT_SIZE] = defineValue(member.bitSize);\n staticDescriptors[PRIMITIVE] = defineValue(member.type);\n },\n});\n\nexport { primitive as default };\n","import { SliceFlag, StructureFlag, VisitorFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { InvalidArrayInitializer, ArrayLengthMismatch } from '../errors.js';\nimport { SENTINEL, ENTRIES, COPY, MEMORY, SHAPE, INITIALIZE, FINALIZE, VIVIFICATE, VISIT, LENGTH } from '../symbols.js';\nimport { defineValue, getProxy, isCompatibleInstanceOf, transformIterable } from '../utils.js';\n\nvar slice = mixin({\n defineSlice(structure, descriptors) {\n const {\n align,\n flags,\n byteSize,\n name,\n instance: {\n members: [ member ],\n },\n } = structure;\n const { byteSize: elementSize, structure: elementStructure } = member;\n const thisEnv = this;\n const shapeDefiner = function(dv, length, allocator) {\n if (!dv) {\n dv = thisEnv.allocateMemory(length * elementSize, align, allocator);\n }\n this[MEMORY] = dv;\n this[LENGTH] = length;\n };\n const shapeChecker = function(arg, length) {\n if (length !== this[LENGTH]) {\n throw new ArrayLengthMismatch(structure, this, arg);\n }\n };\n const descriptor = this.defineMember(member);\n const { set } = descriptor;\n // the initializer behave differently depending on whether it's called by the\n // constructor or by a member setter (i.e. after object's shape has been established)\n const propApplier = this.createApplier(structure);\n const initializer = function(arg, allocator) {\n if (isCompatibleInstanceOf(arg, constructor)) {\n if (!this[MEMORY]) {\n shapeDefiner.call(this, null, arg.length, allocator);\n } else {\n shapeChecker.call(this, arg, arg.length);\n }\n this[COPY](arg);\n if (flags & StructureFlag.HasPointer) {\n this[VISIT]('copy', VisitorFlag.Vivificate, arg);\n }\n } else if (typeof(arg) === 'string' && flags & SliceFlag.IsString) {\n initializer.call(this, { string: arg }, allocator);\n } else if (arg?.[Symbol.iterator]) {\n arg = transformIterable(arg);\n if (!this[MEMORY]) {\n shapeDefiner.call(this, null, arg.length, allocator);\n } else {\n shapeChecker.call(this, arg, arg.length);\n }\n let i = 0;\n for (const value of arg) {\n constructor[SENTINEL]?.validateValue(value, i, arg.length);\n set.call(this, i++, value, allocator);\n }\n } else if (typeof(arg) === 'number') {\n if (!this[MEMORY] && arg >= 0 && isFinite(arg)) {\n shapeDefiner.call(this, null, arg, allocator);\n } else {\n throw new InvalidArrayInitializer(structure, arg, !this[MEMORY]);\n }\n } else if (arg && typeof(arg) === 'object') {\n if (propApplier.call(this, arg, allocator) === 0) {\n throw new InvalidArrayInitializer(structure, arg);\n }\n } else if (arg !== undefined) {\n throw new InvalidArrayInitializer(structure, arg);\n }\n };\n const getSubArrayView = function(begin, end) {\n const length = this[LENGTH];\n const dv = this[MEMORY];\n begin = (begin === undefined) ? 0 : adjustIndex(begin, length);\n end = (end === undefined) ? length : adjustIndex(end, length);\n const offset = begin * elementSize;\n const len = (end * elementSize) - offset;\n return thisEnv.obtainView(dv.buffer, dv.byteOffset + offset, len);\n };\n const constructor = this.createConstructor(structure);\n descriptors.$ = { get: getProxy, set: initializer };\n descriptors.length = { get: getLength };\n if (flags & SliceFlag.IsTypedArray) {\n descriptors.typedArray = this.defineTypedArray(structure);\n if (flags & SliceFlag.IsString) {\n descriptors.string = this.defineString(structure);\n }\n if (flags & SliceFlag.IsClampedArray) {\n descriptors.clampedArray = this.defineClampedArray(structure);\n }\n }\n descriptors.entries = descriptors[ENTRIES] = this.defineArrayEntries();\n descriptors.subarray = {\n value(begin, end) {\n const dv = getSubArrayView.call(this, begin, end);\n return constructor(dv);\n },\n };\n descriptors.slice = {\n value(begin, end, options = {}) {\n const {\n zig = false\n } = options;\n const dv1 = getSubArrayView.call(this, begin, end);\n const dv2 = thisEnv.allocateMemory(dv1.byteLength, align, zig);\n const slice = constructor(dv2);\n slice[COPY]({ [MEMORY]: dv1 });\n return slice;\n },\n };\n descriptors[Symbol.iterator] = this.defineArrayIterator();\n descriptors[SHAPE] = defineValue(shapeDefiner);\n descriptors[COPY] = this.defineCopier(byteSize, true);\n descriptors[INITIALIZE] = defineValue(initializer);\n descriptors[FINALIZE] = this.defineFinalizerArray(descriptor);\n descriptors[VIVIFICATE] = (flags & StructureFlag.HasObject) && this.defineVivificatorArray(structure);\n descriptors[VISIT] = (flags & StructureFlag.HasPointer) && this.defineVisitorArray();\n return constructor;\n },\n finalizeSlice(structure, staticDescriptors) {\n const {\n flags,\n instance: { members: [ member ] },\n } = structure;\n staticDescriptors.child = defineValue(member.structure.constructor);\n staticDescriptors[SENTINEL] = (flags & SliceFlag.HasSentinel) && this.defineSentinel(structure);\n },\n});\n\nfunction getLength() {\n return this[LENGTH];\n}\n\nfunction adjustIndex(index, len) {\n index = index | 0;\n if (index < 0) {\n index = len + index;\n if (index < 0) {\n index = 0;\n }\n } else {\n if (index > len) {\n index = len;\n }\n }\n return index;\n}\n\nexport { slice as default };\n","import { MemberType } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { NotOnByteBoundary } from '../errors.js';\nimport { RESTORE, MEMORY, SLOTS, PARENT } from '../symbols.js';\n\nvar structLike = mixin({\n defineVivificatorStruct(structure) {\n const { instance: { members } } = structure;\n const objectMembers = {};\n for (const member of members.filter(m => m.type === MemberType.Object)) {\n objectMembers[member.slot] = member;\n }\n const thisEnv = this;\n return {\n value(slot) {\n const member = objectMembers[slot];\n const { bitOffset, byteSize, structure: { constructor } } = member;\n {\n this[RESTORE]?.();\n }\n const dv = this[MEMORY];\n const parentOffset = dv.byteOffset;\n const offset = parentOffset + (bitOffset >> 3);\n let len = byteSize;\n if (len === undefined) {\n if (bitOffset & 7) {\n throw new NotOnByteBoundary(member);\n }\n len = member.bitSize >> 3;\n }\n const childDV = thisEnv.obtainView(dv.buffer, offset, len);\n const object = this[SLOTS][slot] = constructor.call(PARENT, childDV);\n return object;\n }\n };\n },\n});\n\nexport { structLike as default };\n","import { MemberFlag, StructFlag, StructureFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { InvalidInitializer } from '../errors.js';\nimport { SETTERS, KEYS, INITIALIZE, VIVIFICATE, VISIT, ENTRIES, PROPS, COPY } from '../symbols.js';\nimport { getSelf, defineValue, isCompatibleInstanceOf } from '../utils.js';\n\nvar struct = mixin({\n defineStruct(structure, descriptors) {\n const {\n flags,\n length,\n instance: { members },\n } = structure;\n const backingIntMember = members.find(m => m.flags & MemberFlag.IsBackingInt);\n const backingInt = backingIntMember && this.defineMember(backingIntMember);\n const propApplier = this.createApplier(structure);\n const initializer = function(arg, allocator) {\n if (isCompatibleInstanceOf(arg, constructor)) {\n this[COPY](arg);\n if (flags & StructureFlag.HasPointer) {\n this[VISIT]('copy', 0, arg);\n }\n } else if (arg && typeof(arg) === 'object') {\n propApplier.call(this, arg, allocator);\n } else if ((typeof(arg) === 'number' || typeof(arg) === 'bigint') && backingInt) {\n backingInt.set.call(this, arg);\n } else if (arg !== undefined) {\n throw new InvalidInitializer(structure, 'object', arg);\n }\n };\n const constructor = this.createConstructor(structure);\n // add descriptors of struct field\n const setters = descriptors[SETTERS].value;\n const keys = descriptors[KEYS].value;\n const props = [];\n for (const member of members.filter(m => !!m.name)) {\n const { name, flags } = member;\n const { set } = descriptors[name] = this.defineMember(member);\n if (set) {\n if (flags & MemberFlag.IsRequired) {\n set.required = true;\n }\n setters[name] = set;\n keys.push(name);\n }\n props.push(name);\n }\n descriptors.$ = { get: getSelf, set: initializer };\n // add length and entries if struct is a tuple\n descriptors.length = defineValue(length);\n descriptors.entries = (flags & StructFlag.IsTuple) && this.defineVectorEntries();\n // allow conversion of packed struct to number when there's a backing int\n descriptors[Symbol.toPrimitive] = backingInt && {\n value(hint) {\n return (hint === 'string')\n ? Object.prototype.toString.call(this)\n : backingInt.get.call(this);\n }\n };\n // add iterator\n descriptors[Symbol.iterator] = (flags & StructFlag.IsIterator)\n ? this.defineZigIterator()\n : (flags & StructFlag.IsTuple)\n ? this.defineVectorIterator()\n : this.defineStructIterator();\n descriptors[INITIALIZE] = defineValue(initializer);\n // for creating complex fields on access\n descriptors[VIVIFICATE] = (flags & StructureFlag.HasObject) && this.defineVivificatorStruct(structure);\n // for operating on pointers contained in the struct\n descriptors[VISIT] = (flags & StructureFlag.HasPointer) && this.defineVisitorStruct(members);\n descriptors[ENTRIES] = (flags & StructFlag.IsTuple) ? this.defineVectorEntries() : this.defineStructEntries();\n descriptors[PROPS] = defineValue(props);\n if (flags & StructFlag.IsAllocator) {\n descriptors.alloc = this.defineAlloc();\n descriptors.free = this.defineFree();\n descriptors.dupe = this.defineDupe();\n }\n return constructor;\n }\n});\n\nexport { struct as default };\n","const dict = globalThis[Symbol.for('ZIGAR')] ||= {};\n\nfunction __symbol(name) {\n return dict[name] ||= Symbol(name);\n}\n\nfunction symbol(name) {\n return /*@__PURE__*/ __symbol(name);\n}\n\nconst MEMORY = symbol('memory');\nconst SLOTS = symbol('slots');\nconst PARENT = symbol('parent');\nconst ZIG = symbol('zig');\nconst NAME = symbol('name');\nconst TYPE = symbol('type');\nconst FLAGS = symbol('flags');\nconst CLASS = symbol('class');\nconst TAG = symbol('tag');\nconst PROPS = symbol('props');\nconst POINTER = symbol('pointer');\nconst SENTINEL = symbol('sentinel');\nconst ARRAY = symbol('array');\nconst ITEMS = symbol('items');\nconst TARGET = symbol('target');\nconst ENTRIES = symbol('entries');\nconst MAX_LENGTH = symbol('max length');\nconst KEYS = symbol('keys');\nconst ADDRESS = symbol('address');\nconst LENGTH = symbol('length');\nconst LAST_ADDRESS = symbol('last address');\nconst LAST_LENGTH = symbol('last length');\nconst PROXY = symbol('proxy');\nconst CACHE = symbol('cache');\nconst SIZE = symbol('size');\nconst BIT_SIZE = symbol('bit size');\nconst ALIGN = symbol('align');\nconst CONST_TARGET = symbol('const target');\nconst ENVIRONMENT = symbol('environment');\nconst ATTRIBUTES = symbol('attributes');\nconst PRIMITIVE = symbol('primitive');\nconst GETTERS = symbol('getters');\nconst SETTERS = symbol('setters');\nconst TYPED_ARRAY = symbol('typed array');\nconst THROWING = symbol('throwing');\nconst PROMISE = symbol('promise');\nconst GENERATOR = symbol('generator');\nconst ALLOCATOR = symbol('allocator');\nconst FALLBACK = symbol('fallback');\nconst SIGNATURE = symbol('signature');\nconst STRING_RETVAL = symbol('string retval');\n\nconst UPDATE = symbol('update');\nconst RESTORE = symbol('restore');\nconst RESET = symbol('reset');\nconst VIVIFICATE = symbol('vivificate');\nconst VISIT = symbol('visit');\nconst COPY = symbol('copy');\nconst SHAPE = symbol('shape');\nconst INITIALIZE = symbol('initialize');\nconst RESTRICT = symbol('restrict');\nconst FINALIZE = symbol('finalize');\nconst CAST = symbol('cast');\nconst RETURN = symbol('return');\nconst YIELD = symbol('yield');\n\nexport { ADDRESS, ALIGN, ALLOCATOR, ARRAY, ATTRIBUTES, BIT_SIZE, CACHE, CAST, CLASS, CONST_TARGET, COPY, ENTRIES, ENVIRONMENT, FALLBACK, FINALIZE, FLAGS, GENERATOR, GETTERS, INITIALIZE, ITEMS, KEYS, LAST_ADDRESS, LAST_LENGTH, LENGTH, MAX_LENGTH, MEMORY, NAME, PARENT, POINTER, PRIMITIVE, PROMISE, PROPS, PROXY, RESET, RESTORE, RESTRICT, RETURN, SENTINEL, SETTERS, SHAPE, SIGNATURE, SIZE, SLOTS, STRING_RETVAL, TAG, TARGET, THROWING, TYPE, TYPED_ARRAY, UPDATE, VISIT, VIVIFICATE, YIELD, ZIG };\n","import { MemberType } from './constants.js';\nimport { SIGNATURE, ENVIRONMENT, LENGTH, PROXY } from './symbols.js';\n\nfunction defineProperty(object, name, descriptor) {\n if (descriptor) {\n const {\n set,\n get,\n value,\n enumerable,\n configurable = true,\n writable = true,\n } = descriptor;\n Object.defineProperty(object, name, (get || set)\n ? { get, set, configurable, enumerable }\n : { value, configurable, enumerable, writable }\n );\n }\n return object;\n}\n\nfunction defineProperties(object, descriptors) {\n for (const [ name, descriptor ] of Object.entries(descriptors)) {\n defineProperty(object, name, descriptor);\n }\n for (const symbol of Object.getOwnPropertySymbols(descriptors)) {\n const descriptor = descriptors[symbol];\n defineProperty(object, symbol, descriptor);\n }\n return object;\n}\n\nfunction defineValue(value) {\n return (value !== undefined) ? { value } : undefined;\n}\n\nfunction getErrorHandler(options) {\n return (options?.error === 'return')\n ? (cb) => {\n try {\n return cb();\n } catch (err) {\n return err;\n }\n }\n : (cb) => cb();\n}\n\nfunction getPrimitiveName({ type, bitSize }) {\n switch (type) {\n case MemberType.Bool: return 'boolean';\n case MemberType.Int:\n case MemberType.Uint:\n if (bitSize > 32) {\n return 'bigint';\n }\n case MemberType.Float: return 'number';\n }\n}\n\nfunction decodeText(arrays, encoding = 'utf-8') {\n const decoder = decoders[encoding] ||= new TextDecoder(encoding);\n let array;\n if (Array.isArray(arrays)) {\n if (arrays.length === 1) {\n array = arrays[0];\n } else {\n let len = 0;\n for (const a of arrays) {\n len += a.length;\n }\n const { constructor } = arrays[0];\n array = new constructor(len);\n let offset = 0;\n for (const a of arrays) {\n array.set(a, offset);\n offset += a.length;\n }\n }\n } else {\n array = arrays;\n }\n if (array.buffer[Symbol.toStringTag] === 'SharedArrayBuffer') {\n array = new array.constructor(array);\n }\n return decoder.decode(array);\n}\n\nfunction encodeText(text, encoding = 'utf-8') {\n switch (encoding) {\n case 'utf-16': {\n const { length } = text;\n const ta = new Uint16Array(length);\n for (let i = 0; i < length; i++) {\n ta[i] = text.charCodeAt(i);\n }\n return ta;\n }\n default: {\n const encoder = encoders[encoding] ||= new TextEncoder();\n return encoder.encode(text);\n }\n }\n}\n\nfunction encodeBase64(dv) {\n const ta = new Uint8Array(dv.buffer, dv.byteOffset, dv.byteLength);\n const bstr = String.fromCharCode.apply(null, ta);\n return btoa(bstr);\n}\n\nfunction decodeBase64(str) {\n const bstr = atob(str);\n const ta = new Uint8Array(bstr.length);\n for (let i = 0; i < ta.byteLength; i++) {\n ta[i] = bstr.charCodeAt(i);\n }\n return new DataView(ta.buffer);\n}\n\nconst decoders = {};\nconst encoders = {};\n\nfunction findSortedIndex(array, value, cb) {\n let low = 0;\n let high = array.length;\n if (high === 0) {\n return 0;\n }\n while (low < high) {\n const mid = Math.floor((low + high) / 2);\n const value2 = cb(array[mid]);\n if (value2 <= value) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n}\n\nconst isMisaligned = function(address, align) {\n return (align) ? !!(address & (align - 1)) : false;\n }\n;\n\nconst alignForward = function(address, align) {\n return (address + (align - 1)) & ~(align - 1);\n }\n;\n\nconst usizeMin = 0;\nconst usizeMax = 0xFFFF_FFFF;\nconst usizeInvalid = -1;\n\nconst usize = function(arg) {\n return Number(arg);\n }\n;\n\nconst isInvalidAddress = function(address) {\n return address === 0xaaaa_aaaa || address === -1431655766;\n }\n;\n\nconst adjustAddress = function(address, addend) {\n return address + addend;\n }\n;\n\nfunction transformIterable(arg) {\n if (typeof(arg.length) === 'number') {\n // it's an array of sort\n return arg;\n }\n const iterator = arg[Symbol.iterator]();\n const first = iterator.next();\n const length = first.value?.length;\n if (typeof(length) === 'number' && Object.keys(first.value).join() === 'length') {\n // return generator with length attached\n return Object.assign((function*() {\n let result;\n while (!(result = iterator.next()).done) {\n yield result.value;\n }\n })(), { length });\n } else {\n const array = [];\n let result = first;\n while (!result.done) {\n array.push(result.value);\n result = iterator.next();\n }\n return array;\n }\n}\n\nfunction findElements(arg, Child) {\n // casting to a array/slice\n const { constructor: Arg } = arg;\n if (Arg === Child) {\n // matching object\n return 1;\n } else if (Arg.child === Child) {\n // matching slice/array\n return arg.length;\n }\n}\n\nfunction findObjects(structures, SLOTS) {\n const list = [];\n const found = new Map();\n const find = (object) => {\n if (!object || found.get(object)) {\n return;\n }\n found.set(object, true);\n list.push(object);\n if (object[SLOTS]) {\n for (const child of Object.values(object[SLOTS])) {\n find(child);\n }\n }\n };\n for (const structure of structures) {\n find(structure.instance.template);\n find(structure.static.template);\n }\n return list;\n}\n\nfunction isCompatibleType(TypeA, TypeB) {\n return (TypeA === TypeB)\n || ((TypeA?.[SIGNATURE] === TypeB[SIGNATURE]) && (TypeA?.[ENVIRONMENT] !== TypeB?.[ENVIRONMENT]));\n}\n\nfunction isCompatibleInstanceOf(object, Type) {\n return (object instanceof Type) || isCompatibleType(object?.constructor, Type);\n}\n\nfunction markAsSpecial({ get, set }) {\n get.special = set.special = true;\n return { get, set };\n}\n\nfunction getSelf() {\n return this;\n}\n\nfunction getLength() {\n return this[LENGTH];\n}\n\nfunction getProxy() {\n return this[PROXY];\n}\n\nfunction toString() {\n return String(this);\n}\n\nfunction always() {\n return true;\n}\n\nfunction never() {\n return false;\n}\n\nfunction empty() {}\n\nclass ObjectCache {\n map = new WeakMap();\n\n find(dv) {\n return this.map.get(dv);\n }\n\n save(dv, object) {\n this.map.set(dv, object);\n return object;\n }\n}\n\nexport { ObjectCache, adjustAddress, alignForward, always, decodeBase64, decodeText, defineProperties, defineProperty, defineValue, empty, encodeBase64, encodeText, findElements, findObjects, findSortedIndex, getErrorHandler, getLength, getPrimitiveName, getProxy, getSelf, isCompatibleInstanceOf, isCompatibleType, isInvalidAddress, isMisaligned, markAsSpecial, never, toString, transformIterable, usize, usizeInvalid, usizeMax, usizeMin };\n","import { VisitorFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { ZigMemoryTargetRequired } from '../errors.js';\nimport { SLOTS, LAST_ADDRESS, MEMORY, ZIG, VIVIFICATE, VISIT } from '../symbols.js';\n\nvar all = mixin({\n defineVisitor() {\n return {\n value(cb, flags, src) {\n let fn;\n if (typeof(cb) === 'string') {\n fn = builtinVisitors[cb];\n } else {\n fn = cb;\n }\n fn.call(this, flags, src);\n }\n };\n },\n});\n\nfunction visitChild(slot, cb, flags, src) {\n let child = this[SLOTS][slot];\n if (!child) {\n if (!(flags & VisitorFlag.IgnoreUncreated)) {\n child = this[VIVIFICATE](slot);\n } else {\n return;\n }\n }\n let srcChild;\n if (src) {\n srcChild = src[SLOTS][slot];\n if (!srcChild) {\n return;\n }\n }\n child[VISIT](cb, flags, srcChild);\n}\n\nconst builtinVisitors = {\n copy(flags, src) {\n const target = src[SLOTS][0];\n if (this[MEMORY][ZIG]) {\n if (target && !target[MEMORY][ZIG]) {\n throw new ZigMemoryTargetRequired();\n }\n }\n this[SLOTS][0] = target;\n },\n clear(flags) {\n if (flags & VisitorFlag.IsInactive) {\n this[SLOTS][0] = undefined;\n }\n },\n reset() {\n this[SLOTS][0] = undefined;\n this[LAST_ADDRESS] = undefined;\n },\n};\n\nexport { all as default, visitChild };\n","import { StructureFlag, VisitorFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { visitChild } from './all.js';\n\nvar inArgStruct = mixin({\n defineVisitorArgStruct(members) {\n const argSlots = [];\n let rvSlot = undefined;\n for (const [ index, { slot, structure } ] of members.entries()) {\n if (structure.flags & StructureFlag.HasPointer) {\n if (index === 0) {\n rvSlot = slot;\n } else {\n argSlots.push(slot);\n }\n }\n }\n return {\n value(cb, flags, src) {\n if (!(flags & VisitorFlag.IgnoreArguments) && argSlots.length > 0) {\n for (const slot of argSlots) {\n visitChild.call(this, slot, cb, flags | VisitorFlag.IsImmutable, src);\n }\n }\n if (!(flags & VisitorFlag.IgnoreRetval) && rvSlot !== undefined) {\n visitChild.call(this, rvSlot, cb, flags, src);\n }\n }\n };\n }\n});\n\nexport { inArgStruct as default };\n","import { mixin } from '../environment.js';\nimport { visitChild } from './all.js';\n\nvar inArray = mixin({\n defineVisitorArray() {\n return {\n value(cb, flags, src) {\n for (let slot = 0, len = this.length; slot < len; slot++) {\n visitChild.call(this, slot, cb, flags, src);\n }\n }\n };\n },\n});\n\nexport { inArray as default };\n","import { VisitorFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { visitChild } from './all.js';\n\nvar inOptional = mixin({\n defineVisitorOptional(valueMember, getPresent) {\n const { slot } = valueMember;\n return {\n value(cb, flags, src) {\n if (!getPresent.call(this)) {\n flags |= VisitorFlag.IsInactive;\n }\n if (!(flags & VisitorFlag.IsInactive) || !(flags & VisitorFlag.IgnoreInactive)) {\n visitChild.call(this, slot, cb, flags, src);\n }\n }\n };\n }\n});\n\nexport { inOptional as default };\n","import { StructureFlag } from '../constants.js';\nimport { mixin } from '../environment.js';\nimport { visitChild } from './all.js';\n\nvar inStruct = mixin({\n defineVisitorStruct(members) {\n const slots = members.filter(m => m.structure?.flags & StructureFlag.HasPointer).map(m => m.slot);\n return {\n value(cb, flags, src) {\n for (const slot of slots) {\n visitChild.call(this, slot, cb, flags, src);\n }\n }\n };\n }\n});\n\nexport { inStruct as default };\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var scriptUrl;\nif (typeof import.meta.url === \"string\") scriptUrl = import.meta.url\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","// startup\n// Load entry module and return exports\n// This entry module used 'module' so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(8156);\n"],"names":["webpackQueues","webpackExports","webpackError","resolveQueue","validNameCharacters","whitespace","quotemark","parse","source","header","stack","state","metadata","currentElement","root","error","message","ref","search","options","offsetLine","offsetColumn","originalLines","split","start","lineRanges","map","line","i","end","length","range","rangeContains","index","getLocation","column","character","startIndex","indexOf","d","getLocator","locate","before","slice","beforeLine","exec","replace","after","snippet","str","result","Error","test","neutral","text","children","push","type","value","tag","char","comment","cdata","closingTag","attribute","element","tagName","getName","properties","getAttribute","name","selfClosing","allowSpaces","pop","escaped","getQuotedAttributeValue","getUnquotedAttributeValue","isNaN","trim","updateCanvasSize","canvas","width","height","device","Math","max","min","limits","maxTextureDimension2D","canvasSizeObserver","callback","observer","ResizeObserver","entries","entry","target","devicePixelContentBoxSize","inlineSize","contentBoxSize","devicePixelRatio","blockSize","observe","box","clientWidth","clientHeight","generatePreview","presentationFormat","creatorCanvas","projectWidth","projectHeight","capturePreview","onPreviewUpdate","size","previewCanvas","document","createElement","previewContext","getContext","configure","format","cameraCopy","scale","x","y","zoom","then","unconfigure","getDevice","navigator","gpu","adapter","requestAdapter","requestDevice","lost","info","console","reason","numMipLevels","sizes","maxSize","log2","createTextureFromSource","texture","createTexture","mipLevelCount","mips","usage","GPUTextureUsage","TEXTURE_BINDING","COPY_DST","RENDER_ATTACHMENT","flipY","depthOrArrayLayers","queue","copyExternalImageToTexture","copySourceToTexture","NUM_PIXELS","PickManager","constructor","isPreviousPickDone","this","pickBuffer","createBuffer","GPUBufferUsage","MAP_READ","pickTexture","COPY_SRC","pickDepthTexture","startPicking","encoder","descriptor","label","colorAttachments","view","createView","loadOp","clearValue","storeOp","pass","beginRenderPass","setViewport","setScissorRect","copyTextureToBuffer","origin","buffer","createMatrix","canvasMatrix","tx","ty","scaling","translation","reduce","accMatrix","rotationMatrix","multiply","asyncPick","mapAsync","GPUMapMode","READ","id","Uint32Array","getMappedRange","afterPickEventsQueue","requireNewPick","cb","splice","unmap","err","OUTSIDE_CANVAS","MouseMode","mouseMode","None","panCameraStart","camera","pointer","initMouseController","onZoom","onStartProcessing","getZigAbsolutePointer","updatePointer","e","rect","getBoundingClientRect","clientX","left","clientY","top","performZoom","zoomDelta","centerX","centerY","oldZoom","zoomFactor","realY","delta","addEventListener","style","cursor","update","move","Pan","bind","event","preventDefault","Zoom","abs","deltaY","deltaX","ctrlKey","body","code","metaKey","shiftKey","key","INSTANCE_STRIDE","tileDim","batch","STRIDE","drawTriangle","drawBezier","draw3dModel","draw3dModelTexture","draw3dModelLight","drawBlur","drawTexture","pickTriangle","drawMSDF","drawShape","canvasMatrixBuffer","pickCanvasMatrixBuffer","initPrograms","UNIFORM","buffersToDestroy","matrixBuffer","module","createShaderModule","pipeline","createRenderPipeline","layout","vertex","entryPoint","buffers","arrayStride","stepMode","attributes","shaderLocation","offset","fragment","targets","blend","color","srcFactor","dstFactor","alpha","multisample","count","cachedBindGroup","createBindGroup","getBindGroupLayout","binding","resource","vertexData","numInstances","byteLength","vertexBuffer","VERTEX","writeBuffer","setPipeline","setVertexBuffer","setBindGroup","draw","primitive","topology","depthStencil","depthWriteEnabled","depthCompare","matrix","pointsData","tData","dirData","segmentIndexData","storageBufferSize","storageBuffer","STORAGE","uniformBuffer","uniformValues","Float32Array","uniformBufferSize","matrixValue","subarray","kMatrixOffset","zoomValue","kZoomOffset","bindGroup","tBuffer","dirBuffer","segmentIndexBuffer","set","indexData","sampler","createSampler","magFilter","minFilter","numVertices","indexBuffer","INDEX","setIndexBuffer","drawIndexed","cullMode","uniform","worldViewProjection","normalMatrix","lightColor","lightDirection","normalMatrixValue","kNormalMatrixOffset","worldViewProjectionValue","kWorldViewProjectionOffset","colorValue","kColorOffset","lightDirectionValue","kLightDirectionOffset","blurPipeline","createComputePipeline","compute","commandEncoder","textures","STORAGE_BINDING","buffer0","mappedAtCreation","buffer1","blurParamsBuffer","computeConstants","computeBindGroup0","computeBindGroup1","computeBindGroup2","blockDim","computePass","beginComputePass","dispatchWorkgroups","ceil","settings","bindGroupCache","WeakMap","get","shaderModule","bindGroupLayout","createBindGroupLayout","visibility","GPUShaderStage","FRAGMENT","renderPipeline","createPipelineLayout","bindGroupLayouts","passEncoder","curvesDataView","boundingBoxDataView","uniformDataView","boundBoxBuffer","curvesBuffer","getDrawShape","forEach","destroy","endCacheCallback","endCache","startCache","currTextureId","boundingBox","outputWidth","outputHeight","max_x","min_x","max_y","min_y","createCommandEncoder","resolveTarget","ortho","commandBuffer","finish","submit","getCanvasMatrix","translated","translate","depthTexture","getCanvasRenderDescriptor","context","canvasTexture","getCurrentTexture","getDepthTexture","getMultisampleTexture","multisampleTexture","sampleCount","CreatorTool","initCreator","uploadTexture","onAssetsUpdate","onAssetSelect","onProcessingUpdate","loadingTextures","isMouseEventProcessing","updateProcessing","texLoadings","getPreferredCanvasFormat","updateRenderScale","wasInitialOffsetSet","cleanupPrograms","triggerGeneratePreview","lastAssetsSnapshot","newAssetsSnapshot","serializedAssetsTextureUrl","asset","textureId","texture_id","points","point","u","v","url","serializedData","flatMap","stopRAF","addImage","isNew","newUrl","removeAsset","resetAssets","assets","withSnapshot","serializedAssets","Promise","allSettled","resolve","reject","filter","status","setTool","getLoadingTexture","_","textureData","Uint8Array","flat","writeTexture","bytesPerRow","textureWidth","renderPass","updateRenderPass","newRenderPass","runCreator","onEmptyEvents","pickPass","pickManager","draw_texture","vertex_data","dataView","draw_msdf","draw_triangle","draw_shape","curves_data","bound_box_data","uniform_data","boundBoxDataView","pick_texture","pick_triangle","rafId","lastPickPointer","now","preview","canvasDescriptor","ctx","onCapture","pickMatrix","pick","requestAnimationFrame","cancelAnimationFrame","performance","STRAIGHT_LINE_HANDLE","createShapes","node","svgHeight","child","props","serializedProps","fill","rgba","fill_color","rx","ry","cx","cy","parseCssColorToRgba","cssColor","OffscreenCanvas","fillStyle","fillRect","imageData","getImageData","r","g","b","a","data","parseEllipse","kappa","kx","ky","rightPoint","topPoint","leftPoint","bottomPoint","reflectY","parsePathData","dAttribute","commands","pathData","commandRegex","match","command","argsString","args","numbers","parseFloat","getDataPathCommands","allPaths","currentSegments","currentPoint","pathStart","lastControlPoint","finishCurrentPath","toLowerCase","isRelative","newPoint","lineSegment","cp1","cp2","endPoint","curveSegment","warn","commandsToSegments","parseRect","topLeft","topRight","bottomRight","bottomLeft","loadingTexture","init","_device","_updateProcessing","add","sameUrl","find","t","getImageWithDetails","img","svgTree","svgRoot","log","naturalHeight","naturalWidth","hash","hashImageData","existingTexture","findSameTexture","getTexture","setTexture","optionalId","getUrl","drawImage","String","imgData","updateTextureUrl","all","Image","src","onload","fetch","response","includes","clamp","debounce","ms","timeoutId","window","clearTimeout","setTimeout","getDefaultPoints","texWidth","texHeight","getDefaultTextureScale","scaledWidth","scaledHeight","paddingX","paddingY","cross","dst","t0","t1","t2","subtract","normalize","sqrt","mat4","projection","depth","perspective","fieldOfViewYInRadians","aspect","zNear","zFar","f","tan","PI","rangeInv","right","bottom","near","far","identity","b00","b01","b02","b03","b10","b11","b12","b13","b20","b21","b22","b23","b30","b31","b32","b33","a00","a01","a02","a03","a10","a11","a12","a13","a20","a21","a22","a23","a30","a31","a32","a33","cameraAim","eye","up","zAxis","xAxis","yAxis","inverse","m","m00","m01","m02","m03","m10","m11","m12","m13","m20","m21","m22","m23","m30","m31","m32","m33","tmp0","tmp1","tmp2","tmp3","tmp4","tmp5","tmp6","tmp7","tmp8","tmp9","tmp10","tmp11","tmp12","tmp13","tmp14","tmp15","tmp16","tmp17","tmp18","tmp19","tmp20","tmp21","tmp22","tmp23","t3","transpose","aim","lookAt","tz","rotationX","angleInRadians","c","cos","s","sin","rotationY","rotationZ","sx","sy","sz","rotateX","rotateY","rotateZ","flags","signature","undefined","byteSize","align","instance","members","template","static","s0","s1","s2","s3","s4","s5","s6","s7","s8","s9","s10","s11","s12","s13","s14","s15","s16","s17","s18","s19","s20","s21","s22","s23","s24","s25","s26","s27","s28","s29","s30","s31","s32","s33","s34","s35","s36","s37","s38","s39","s40","s41","s42","s43","s44","s45","s46","s47","s48","s49","s50","s51","s52","s53","s54","s55","s56","s57","s58","s59","s60","s61","s62","s63","s64","s65","s66","s67","s68","s69","s70","s71","s72","s73","s74","s75","s76","s77","s78","s79","s80","s81","s82","s83","s84","s85","s86","s87","s88","s89","s90","s91","s92","s93","s94","s95","s96","s97","s98","s99","s100","s101","s102","s103","s104","s105","s106","s107","s108","s109","s110","s111","s112","s113","s114","s115","s116","s117","s118","s119","s120","s121","s122","s123","s124","s125","s126","s127","s128","s129","s130","s131","s132","s133","s134","s135","s136","s137","s138","s139","s140","s141","s142","s143","s144","s145","s146","s147","s148","s149","s150","s151","s152","s153","s154","s155","s156","s157","s158","s159","s160","s161","s162","s163","s164","s165","s166","s167","s168","s169","s170","s171","s172","s173","s174","s175","s176","s177","s178","s179","s180","s181","s182","s183","s184","s185","s186","s187","s188","s189","s190","s191","s192","s193","s194","s195","s196","s197","s198","s199","s200","s201","s202","s203","s204","s205","o0","o1","o2","o3","o4","o5","o6","o7","o8","o9","o10","o11","o12","o13","o14","o15","o16","o17","o18","o19","o20","o21","o22","o23","o24","o25","o26","o27","o28","o29","o30","o31","o32","o33","o34","o35","o36","o37","o38","o39","o40","o41","o42","o43","o44","o45","o46","o47","o48","o49","o50","o51","o52","o53","o54","o55","o56","o57","o58","o59","o60","o61","o62","o63","o64","o65","o66","o67","o68","o69","o70","o71","o72","o73","o74","o75","o76","o77","o78","o79","o80","o81","o82","o83","o84","o85","o86","o87","o88","o89","o90","o91","o92","o93","o94","o95","o96","o97","o98","o99","o100","o101","o102","o103","o104","o105","o106","o107","o108","o109","o110","o111","o112","o113","o114","o115","o116","o117","o118","o119","o120","o121","o122","o123","o124","o125","o126","o127","o128","o129","o130","o131","o132","o133","o134","o135","o136","o137","o138","o139","o140","o141","o142","o143","o144","o145","o146","o147","o148","o149","o150","o151","o152","o153","o154","o155","o156","o157","o158","o159","o160","o161","o162","o163","o164","o165","o166","o167","o168","o169","o170","o171","o172","o173","o174","o175","o176","o177","o178","o179","o180","o181","o182","o183","o184","o185","o186","o187","o188","o189","o190","o191","o192","o193","o194","o195","o196","o197","o198","o199","o200","o201","o202","o203","o204","o205","o206","o207","o208","o209","o210","o211","U","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","a14","a15","a16","a17","a18","a19","a24","a25","a26","a27","a28","a29","a34","a35","a36","a37","a38","a39","a40","a41","a42","a43","a44","$","Object","assign","memory","array","handle","slots","structure","const","bitOffset","bitSize","slot","structures","runtimeSafety","littleEndian","libc","env","recreateStructures","binaryString","atob","bytes","charCodeAt","loadModule","linkVariables","v0","v1","getSpecialExports","connect_web_gpu_programs","v2","connect_on_asset_update_callback","v3","connect_on_asset_selection_callback","v4","connect_cache_callbacks","v5","ASSET_ID_TRESHOLD","v6","init_state","v7","update_render_scale","v8","add_asset","v9","remove_asset","v10","on_update_pick","v11","on_pointer_down","v12","on_pointer_up","v13","on_pointer_move","v14","on_pointer_leave","v15","commit_changes","v16","render_draw","v17","render_pick","v18","reset_assets","v19","destroy_state","v20","import_icons","v21","set_tool","v22","stop_drawing_shape","v23","add_shape","v24","accessorCache","Map","getAccessor","access","member","names","unaligned","Int","Uint","Bool","accessorName","join","accessor","DataView","prototype","handlerName","getAccessorBool","call","zero","one","getAccessorInt","signMask","valueMask","n","getAccessorUint","StructureType","Primitive","Array","Struct","Union","ErrorUnion","ErrorSet","Enum","Optional","Pointer","Slice","Vector","Opaque","ArgStruct","VariadicStruct","Function","structureNames","keys","StructureFlag","HasValue","HasObject","HasPointer","HasSlot","PrimitiveFlag","IsSize","ArrayFlag","HasSentinel","IsString","IsTypedArray","IsClampedArray","StructFlag","IsExtern","IsPacked","IsIterator","IsTuple","IsAllocator","IsPromise","IsGenerator","IsAbortSignal","IsOptional","IsReader","IsWriter","EnumFlag","IsOpenEnded","OptionalFlag","HasSelector","PointerFlag","HasLength","IsMultiple","IsSingle","IsConst","IsNullable","SliceFlag","IsOpaque","ErrorSetFlag","IsGlobal","ArgStructFlag","HasOptions","IsThrowing","IsAsync","MemberType","Void","Float","Type","Literal","Null","Undefined","Unsupported","memberNames","MemberFlag","IsRequired","IsReadOnly","IsPartOfSet","IsSelector","IsMethod","IsSentinel","IsBackingInt","CallResult","OK","Failure","Deadlock","Disabled","VisitorFlag","IsInactive","IsImmutable","IgnoreUncreated","IgnoreInactive","IgnoreArguments","IgnoreRetval","cls","mixins","mixin","object","defineEnvironment","initFunctions","current","defineClass","InvalidIntConversion","SyntaxError","arg","super","TypeError","NoInitializer","BufferSizeMismatch","dv","actual","msg","BufferExpected","typedArray","acceptable","addArticle","formatList","EnumExpected","ErrorExpected","isErrorJSON","JSON","stringify","NotInErrorSet","InvalidInitializer","expected","isArray","received","getDescription","InvalidArrayInitializer","shapeless","ArrayLengthMismatch","elementConstructor","argLength","argConstructor","actualLength","InvalidSliceLength","MissingInitializers","missing","NoProperty","propName","ArgumentCountMismatch","variadic","updateText","argOffset","p","adjustStack","enumerable","UndefinedArgument","NoCastingToPointer","NoCastingToFunction","ConstantConstraint","AlignmentConflict","align1","align2","TypeMismatch","NullPointer","PreviouslyFreed","InvalidPointerTarget","noun","article","ZigMemoryTargetRequired","OutOfBound","RangeError","NotUndefined","NotOnByteBoundary","struct","ReadOnly","ReadOnlyTarget","UnexpectedGenerator","ZigError","remove","Exit","adjustArgumentError","argIndex","lines","findIndex","replaceRangeError","throwReadOnly","deanimalizeErrorName","m0","m1","m2","toLocaleLowerCase","trimStart","charAt","toLocaleUpperCase","substring","toString","list","conj","sep","getMemory","zigMemoryAlign","ArrayBuffer","byteOffset","BYTES_PER_ELEMENT","defineAlloc","len","lz","clz32","ptrAlign","vtable","alloc","ptr","slicePtr","defineFree","thisEnv","zig","address","free","releaseZigView","defineDupe","copy","getCopyFunction","dest","variables","check","initialize","abandon","abandonModule","connect","consoleObject","sizeOf","T","alignOf","typeOf","structureNamesLC","insertObjects","placeholders","placeholder","createObject","getBuffer","obtainView","isConst","makeReadOnly","objectPlaceholders","scope","realSlots","defineStructure","finalizeStructure","jsFunctionThunkMap","jsFunctionCallerMap","jsFunctionControllerMap","jsFunctionIdMap","jsFunctionNextId","getFunctionId","fn","getFunctionThunk","jsThunkController","controllerAddress","getViewAddress","thunkAddress","createJsThunk","obtainZigView","createInboundCaller","futexHandle","awaiting","argStruct","startContext","updatePointerTargets","updateShadowTargets","endContext","onError","onReturn","retval","hasCallback","hasOwnProperty","Symbol","toStringTag","promise","finalizeAsyncCall","asyncIterator","pipeContents","defineArgIterator","allocatorTotal","allocatorCount","callbackCount","signalCount","srcIndex","optName","opt","createPromiseCallback","createGeneratorCallback","createInboundSignal","iterator","handleJsCall","argAddress","argSize","caller","releaseFunction","thunk","controller","destroyJsThunk","delete","freeFunction","func","exports","argType","returnType","imports","createOutboundCaller","self","runThunk","initPromise","invokeThunk","copyArguments","argList","argAlloc","destIndex","setters","generator","signal","createDefaultAllocator","createPromise","createGenerator","createSignal","createReader","createWriter","attrs","fnAddress","isAsync","hasPointers","updatePointerAddresses","getShadowAddress","attrAddress","updateShadows","finalize","flushStdout","flushConsole","runVariadicThunk","findShadowView","string","int8","int16","int32","getInt8","setInt8","getInt16","setInt16","getInt32","setInt32","copiers","resetters","any","defineCopier","multiple","defineResetter","reset","getResetFunction","defineRetvalCopier","shadowDV","copyExternBytes","addIntConversion","BigInt","number","Number","isFinite","structureFlags","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","bigint","defaultAllocator","allocatorVtable","allocatorContextMap","nextAllocatorContextId","allocator","createJsAllocator","resettable","Allocator","noResize","noRemap","allocateHostMemory","freeHostMemory","resize","remap","destructors","contextId","done","unregisterMemory","freeShadowMemory","targetDV","allocateJSMemory","allocateShadowMemory","registerMemory","buf","findMemoryIndex","isMemoryMapping","memoryList","contextCount","shadowList","cluster","writable","maxAlignOffset","maxAlign","unalignedDV","unalignedAddress","maxAlignAddress","shadowOffset","MemoryType","Scratch","clusterDV","restoreView","findMemory","isOpaque","getBufferAddress","allocateScratchMemory","freeScratchMemory","usizeMaxBuffer","cache","getTargetAddress","Normal","abandoned","nextValueIndex","valueMap","valueIndices","executable","table","initialTableLength","exportedFunctions","destructor","reverse","displayPanic","wasi","setCustomWASI","getObjectIndex","fromWebAssembly","toWebAssembly","exportFunction","apply","importFunction","exportFunctions","alias","importFunctions","throwError","instantiateWebAssembly","memoryInitial","memoryMax","tableInitial","multithreaded","res","suffix","w","WebAssembly","functions","wasiPreview","exportedModules","wasi_snapshot_preview1","kind","Module","getWASIHandler","getThreadHandler","Memory","initial","maximum","shared","__indirect_function_table","Table","instantiate","customWASI","exportsPlusMemory","instanceProxy","Proxy","inst","writeBack","jsDV","zigDV","save","allocateMemory","bytelength","linkChildren","parentOffset","values","childDV","recreateAddress","pointerMap","bufferMap","potentialClusters","other","clusters","findTargetClusters","clusterMap","inbound","currentTarget","newTarget","targetFlags","prevTarget","prevStart","prevEnd","currentCluster","forward","misaligned","allocateJsThunk","freeJsThunk","thunkSources","thunkMap","addJsThunkSource","Instance","thunkCount","unshift","funcId","sourceAddress","thunkObject","grow","fnId","checkDataViewSize","viewMap","extractView","registerView","isArrayLike","elementSize","Child","assignView","validateData","findViewAt","existing","prev","prevKey","defineRestorer","newDV","protect","gp","getOwnPropertyDescriptors","df","defineProperty","protectProperties","protectElements","exclude","descriptors","createEnvironment","getArrayIterator","next","getArrayEntriesIterator","handleError","getArrayEntries","defineArrayEntries","defineArrayIterator","getStructEntries","getStructEntriesIterator","getStructIterator","defineStructEntries","defineStructIterator","bindSlot","defineMember","applyTransform","defineBase64","defineMemberBool","defineMemberUsing","defineClampedArray","ClampedArray","Uint8ClampedArray","ta","defineDataView","defineMemberFloat","getValue","getObject","getString","setValue","defineMemberObject","getter","setter","defineString","encoding","sentinelValue","fromCharCode","defineToJSON","defineMemberType","defineTypedArray","TypedArray","getTypedArray","defineMemberUint","addRuntimeCheck","defineValueOf","normalizeObject","INT_MAX","INT_MIN","forJSON","resultMap","process","for","defineMemberVoid","base64","toJSON","valueOf","staticDescriptors","accessorType","argRequired","method","createConstructor","handlers","onCastError","comptimeFieldSlots","comptimeMembers","creating","arguments","create","createApplier","argKeys","normalCount","normalFound","normalMissing","specialFound","special","required","k","intType","prefix","globalThis","defineArgStruct","argMembers","retvalSetter","defineVivificatorStruct","defineVisitorArgStruct","finalizeArgStruct","defineFinalizerArray","proxyHandlers","defineVivificatorArray","elementStructure","deleteProperty","has","ownKeys","getOwnPropertyDescriptor","configurable","defineArray","propApplier","initializer","Vivificate","clampedArray","defineVisitorArray","finalizeArray","defineSentinel","defineEnum","getNumber","toPrimitive","hint","finalizeEnum","items","itemsByIndex","item","transformDescriptorEnum","findEnum","globalItemsByIndex","globalErrorSet","defineErrorSet","ZigErrorBase","ae","SLOTS","es","finalizeErrorSet","inGlobalSet","stringified","transformDescriptorErrorSet","findError","newItem","defineErrorUnion","valueMember","errorMember","getError","setError","getErrorNumber","setErrorNumber","isValueVoid","Unexpected","defineVisitorErrorUnion","defineFunction","argCount","setPrototypeOf","finalizeFunction","defineOptional","presentMember","getPresent","setPresent","defineVisitorOptional","isPointerOf","Target","isCompatiblePointer","definePointer","targetStructure","targetType","targetSize","addressSize","readAddress","writeAddress","readLength","writeLength","updateTarget","active","findSentinel","setAddress","sentinelCount","setLength","getTargetObject","empty","getConstProxy","getTarget","setTarget","constTarget","Int8Array","isCompatibleBuffer","single","propSetters","begin","proxy","js","defineVisitor","finalizePointer","constProxies","readOnlyProxyHandlers","constTargetProxyHandlers","thisArg","definePrimitive","finalizePrimitive","getLength","adjustIndex","defineSlice","shapeDefiner","shapeChecker","validateValue","getSubArrayView","dv1","dv2","finalizeSlice","objectMembers","defineStruct","backingIntMember","backingInt","defineVectorEntries","defineZigIterator","defineVectorIterator","defineVisitorStruct","dupe","dict","__symbol","symbol","MEMORY","PARENT","ZIG","NAME","TYPE","FLAGS","CLASS","TAG","PROPS","POINTER","SENTINEL","ARRAY","TARGET","ENTRIES","MAX_LENGTH","KEYS","ADDRESS","LENGTH","LAST_ADDRESS","LAST_LENGTH","PROXY","CACHE","SIZE","BIT_SIZE","ALIGN","CONST_TARGET","ENVIRONMENT","ATTRIBUTES","PRIMITIVE","SETTERS","TYPED_ARRAY","THROWING","PROMISE","GENERATOR","ALLOCATOR","SIGNATURE","STRING_RETVAL","UPDATE","RESTORE","RESET","VIVIFICATE","VISIT","COPY","SHAPE","INITIALIZE","RESTRICT","FINALIZE","CAST","RETURN","YIELD","defineProperties","getOwnPropertySymbols","defineValue","getErrorHandler","getPrimitiveName","decodeText","arrays","decoder","decoders","TextDecoder","decode","encodeText","Uint16Array","encoders","TextEncoder","encode","encodeBase64","bstr","btoa","decodeBase64","findSortedIndex","low","high","mid","floor","isMisaligned","alignForward","usizeMin","usizeMax","usizeInvalid","usize","isInvalidAddress","adjustAddress","addend","transformIterable","first","findElements","Arg","isCompatibleType","TypeA","TypeB","isCompatibleInstanceOf","markAsSpecial","getSelf","getProxy","ObjectCache","visitChild","srcChild","builtinVisitors","clear","argSlots","rvSlot","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","hasAwait","currentDeps","outerResolve","depQueues","Set","rej","deps","dep","obj","ret","wrapDeps","getResult","fnQueue","q","definition","o","prop","scriptUrl","__webpack_exports__"],"sourceRoot":""}
|