virtual-machine 0.3.0 → 0.3.1

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.
@@ -97,26 +97,6 @@ function handleError(f, args) {
97
97
  function isLikeNone(x) {
98
98
  return x === void 0 || x === null;
99
99
  }
100
- function makeClosure(arg0, arg1, dtor, f) {
101
- const state = { a: arg0, b: arg1, cnt: 1, dtor };
102
- const real = (...args) => {
103
- state.cnt++;
104
- try {
105
- return f(state.a, state.b, ...args);
106
- } finally {
107
- real._wbg_cb_unref();
108
- }
109
- };
110
- real._wbg_cb_unref = () => {
111
- if (--state.cnt === 0) {
112
- state.dtor(state.a, state.b);
113
- state.a = 0;
114
- CLOSURE_DTORS.unregister(state);
115
- }
116
- };
117
- CLOSURE_DTORS.register(real, state, state);
118
- return real;
119
- }
120
100
  function makeMutClosure(arg0, arg1, dtor, f) {
121
101
  const state = { a: arg0, b: arg1, cnt: 1, dtor };
122
102
  const real = (...args) => {
@@ -206,17 +186,8 @@ if (!("encodeInto" in cachedTextEncoder)) {
206
186
  };
207
187
  }
208
188
  var WASM_VECTOR_LEN = 0;
209
- function wasm_bindgen__convert__closures_____invoke__he00a4f55faf9050f(arg0, arg1) {
210
- wasm.wasm_bindgen__convert__closures_____invoke__he00a4f55faf9050f(arg0, arg1);
211
- }
212
- function wasm_bindgen__convert__closures_____invoke__h260170fb96639bcf(arg0, arg1, arg2) {
213
- wasm.wasm_bindgen__convert__closures_____invoke__h260170fb96639bcf(arg0, arg1, arg2);
214
- }
215
- function wasm_bindgen__convert__closures_____invoke__hd159192dfee36a06(arg0, arg1) {
216
- wasm.wasm_bindgen__convert__closures_____invoke__hd159192dfee36a06(arg0, arg1);
217
- }
218
- function wasm_bindgen__convert__closures_____invoke__hedae94b906f728f2(arg0, arg1, arg2) {
219
- wasm.wasm_bindgen__convert__closures_____invoke__hedae94b906f728f2(arg0, arg1, arg2);
189
+ function wasm_bindgen__convert__closures_____invoke__hfbd40044a7a1ae85(arg0, arg1, arg2) {
190
+ wasm.wasm_bindgen__convert__closures_____invoke__hfbd40044a7a1ae85(arg0, arg1, arg2);
220
191
  }
221
192
  var __wbindgen_enum_WorkerType = ["classic", "module"];
222
193
  var WasmVmFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => {
@@ -254,20 +225,20 @@ var WasmVm = class _WasmVm {
254
225
  wasm.__wbg_wasmvm_free(ptr, 0);
255
226
  }
256
227
  /**
257
- * Enable VirtIO GPU device for graphics rendering.
228
+ * Enable D1 Display device for graphics rendering.
258
229
  *
259
- * The GPU device allows the kernel to render to a framebuffer which can
230
+ * The display device allows the kernel to render to a framebuffer which can
260
231
  * then be displayed in a Canvas element. Use `get_gpu_frame()` to retrieve
261
232
  * the rendered frame pixels.
262
233
  *
263
234
  * # Arguments
264
- * * `width` - Display width in pixels (default 800 if 0)
265
- * * `height` - Display height in pixels (default 600 if 0)
266
- * @param {number} width
267
- * @param {number} height
235
+ * * `width` - Display width in pixels (ignored, uses 1024x768)
236
+ * * `height` - Display height in pixels (ignored, uses 1024x768)
237
+ * @param {number} _width
238
+ * @param {number} _height
268
239
  */
269
- enable_gpu(width, height) {
270
- wasm.wasmvm_enable_gpu(this.__wbg_ptr, width, height);
240
+ enable_gpu(_width, _height) {
241
+ wasm.wasmvm_enable_gpu(this.__wbg_ptr, _width, _height);
271
242
  }
272
243
  /**
273
244
  * Get a byte from the UART output buffer, if available.
@@ -326,7 +297,7 @@ var WasmVm = class _WasmVm {
326
297
  * Get GPU frame data as RGBA pixels.
327
298
  * Returns a Uint8Array of pixel data, or null if no frame is available.
328
299
  *
329
- * The frame data is in RGBA format with 4 bytes per pixel (800x600 = 1,920,000 bytes).
300
+ * The frame data is in RGBA format with 4 bytes per pixel (1024×768 = 3,145,728 bytes).
330
301
  *
331
302
  * This reads from a fixed framebuffer address in guest memory (0x8100_0000).
332
303
  * The kernel GPU driver writes pixels there, and we read them here.
@@ -393,7 +364,7 @@ var WasmVm = class _WasmVm {
393
364
  }
394
365
  /**
395
366
  * Get the current network connection status.
396
- * This checks the actual connection state by seeing if an IP was assigned.
367
+ * This checks the actual connection state by seeing if D1 EMAC is enabled.
397
368
  * @returns {NetworkStatus}
398
369
  */
399
370
  network_status() {
@@ -462,6 +433,24 @@ var WasmVm = class _WasmVm {
462
433
  const ret = wasm.wasmvm_send_mouse_event(this.__wbg_ptr, x, y, buttons);
463
434
  return ret !== 0;
464
435
  }
436
+ /**
437
+ * Send a touch event to the D1 GT911 touchscreen controller.
438
+ *
439
+ * # Arguments
440
+ * * `x` - X position (0 to display width)
441
+ * * `y` - Y position (0 to display height)
442
+ * * `pressed` - true for touch down/move, false for touch up
443
+ *
444
+ * Returns true if the event was sent successfully.
445
+ * @param {number} x
446
+ * @param {number} y
447
+ * @param {boolean} pressed
448
+ * @returns {boolean}
449
+ */
450
+ send_touch_event(x, y, pressed) {
451
+ const ret = wasm.wasmvm_send_touch_event(this.__wbg_ptr, x, y, pressed);
452
+ return ret !== 0;
453
+ }
465
454
  /**
466
455
  * Get the total disk capacity from attached VirtIO block devices.
467
456
  * Returns total bytes across all block devices.
@@ -531,6 +520,30 @@ var WasmVm = class _WasmVm {
531
520
  throw takeFromExternrefTable0(ret[0]);
532
521
  }
533
522
  }
523
+ /**
524
+ * Get a direct zero-copy view into the framebuffer in SharedArrayBuffer.
525
+ *
526
+ * This eliminates all memory copies by creating a Uint8Array view directly
527
+ * into the SharedArrayBuffer at the framebuffer offset. The browser can
528
+ * pass this directly to WebGPU's writeTexture for zero-copy rendering.
529
+ *
530
+ * Returns None if SharedArrayBuffer is not available (single-threaded mode).
531
+ * @returns {Uint8Array | undefined}
532
+ */
533
+ get_framebuffer_view() {
534
+ const ret = wasm.wasmvm_get_framebuffer_view(this.__wbg_ptr);
535
+ return ret;
536
+ }
537
+ /**
538
+ * Get the current frame version from kernel memory.
539
+ * Returns a u32 that increments each time the kernel flushes dirty pixels.
540
+ * Browser can compare this to skip fetching unchanged frames.
541
+ * @returns {number}
542
+ */
543
+ get_gpu_frame_version() {
544
+ const ret = wasm.wasmvm_get_gpu_frame_version(this.__wbg_ptr);
545
+ return ret >>> 0;
546
+ }
534
547
  /**
535
548
  * Inject a network packet to be received by the guest.
536
549
  * Called from JavaScript when the native WebTransport addon receives a packet.
@@ -704,7 +717,7 @@ var WasmVm = class _WasmVm {
704
717
  return ret !== 0;
705
718
  }
706
719
  /**
707
- * Load a disk image and attach it as a VirtIO block device.
720
+ * Load a disk image and attach it as a D1 MMC device.
708
721
  * This should be called before starting execution if the kernel needs a filesystem.
709
722
  * @param {Uint8Array} disk_image
710
723
  */
@@ -762,6 +775,22 @@ var WorkerState = class {
762
775
  const ret = wasm.workerstate_step_count(this.__wbg_ptr);
763
776
  return BigInt.asUintN(64, ret);
764
777
  }
778
+ /**
779
+ * Check if MSIP is pending for this hart (for debugging).
780
+ * @returns {boolean}
781
+ */
782
+ is_msip_pending() {
783
+ const ret = wasm.workerstate_is_msip_pending(this.__wbg_ptr);
784
+ return ret !== 0;
785
+ }
786
+ /**
787
+ * Check if timer is pending for this hart (for debugging).
788
+ * @returns {boolean}
789
+ */
790
+ is_timer_pending() {
791
+ const ret = wasm.workerstate_is_timer_pending(this.__wbg_ptr);
792
+ return ret !== 0;
793
+ }
765
794
  /**
766
795
  * Create a new worker state for a secondary hart.
767
796
  * @param {number} hart_id
@@ -774,6 +803,14 @@ var WorkerState = class {
774
803
  WorkerStateFinalization.register(this, this.__wbg_ptr, this);
775
804
  return this;
776
805
  }
806
+ /**
807
+ * Get the a0 register value (for debugging hart ID passing).
808
+ * @returns {bigint}
809
+ */
810
+ get_a0() {
811
+ const ret = wasm.workerstate_get_a0(this.__wbg_ptr);
812
+ return BigInt.asUintN(64, ret);
813
+ }
777
814
  /**
778
815
  * Get the hart ID.
779
816
  * @returns {number}
@@ -804,7 +841,13 @@ var WorkerStepResult = Object.freeze({
804
841
  * Fatal error occurred
805
842
  */
806
843
  Error: 3,
807
- "3": "Error"
844
+ "3": "Error",
845
+ /**
846
+ * WFI executed - worker should yield to prevent busy loop
847
+ * TypeScript should add a small delay before calling step_batch again
848
+ */
849
+ Wfi: 4,
850
+ "4": "Wfi"
808
851
  });
809
852
  function worker_check_interrupts(hart_id, shared_mem) {
810
853
  const ret = wasm.worker_check_interrupts(hart_id, shared_mem);
@@ -854,20 +897,10 @@ function __wbg_get_imports() {
854
897
  getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);
855
898
  getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);
856
899
  };
857
- imports.wbg.__wbg___wbindgen_is_function_8d400b8b1af978cd = function(arg0) {
858
- const ret = typeof arg0 === "function";
859
- return ret;
860
- };
861
900
  imports.wbg.__wbg___wbindgen_is_undefined_f6b95eab589e0269 = function(arg0) {
862
901
  const ret = arg0 === void 0;
863
902
  return ret;
864
903
  };
865
- imports.wbg.__wbg___wbindgen_number_get_9619185a74197f95 = function(arg0, arg1) {
866
- const obj = arg1;
867
- const ret = typeof obj === "number" ? obj : void 0;
868
- getDataViewMemory0().setFloat64(arg0 + 8 * 1, isLikeNone(ret) ? 0 : ret, true);
869
- getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true);
870
- };
871
904
  imports.wbg.__wbg___wbindgen_string_get_a2a31e16edf96e42 = function(arg0, arg1) {
872
905
  const obj = arg1;
873
906
  const ret = typeof obj === "string" ? obj : void 0;
@@ -879,9 +912,6 @@ function __wbg_get_imports() {
879
912
  imports.wbg.__wbg___wbindgen_throw_dd24417ed36fc46e = function(arg0, arg1) {
880
913
  throw new Error(getStringFromWasm0(arg0, arg1));
881
914
  };
882
- imports.wbg.__wbg__wbg_cb_unref_87dfb5aaa0cbcea7 = function(arg0) {
883
- arg0._wbg_cb_unref();
884
- };
885
915
  imports.wbg.__wbg_add_e0e7f4f1ce6560fb = function() {
886
916
  return handleError(function(arg0, arg1, arg2) {
887
917
  const ret = Atomics.add(arg0, arg1 >>> 0, arg2);
@@ -898,24 +928,12 @@ function __wbg_get_imports() {
898
928
  const ret = arg0.byteLength;
899
929
  return ret;
900
930
  };
901
- imports.wbg.__wbg_call_3020136f7a2d6e44 = function() {
902
- return handleError(function(arg0, arg1, arg2) {
903
- const ret = arg0.call(arg1, arg2);
904
- return ret;
905
- }, arguments);
906
- };
907
931
  imports.wbg.__wbg_call_abb4ff46ce38be40 = function() {
908
932
  return handleError(function(arg0, arg1) {
909
933
  const ret = arg0.call(arg1);
910
934
  return ret;
911
935
  }, arguments);
912
936
  };
913
- imports.wbg.__wbg_call_c8baa5c5e72d274e = function() {
914
- return handleError(function(arg0, arg1, arg2, arg3) {
915
- const ret = arg0.call(arg1, arg2, arg3);
916
- return ret;
917
- }, arguments);
918
- };
919
937
  imports.wbg.__wbg_compareExchange_a2a167681b69cf6f = function() {
920
938
  return handleError(function(arg0, arg1, arg2, arg3) {
921
939
  const ret = Atomics.compareExchange(arg0, arg1 >>> 0, arg2, arg3);
@@ -926,10 +944,6 @@ function __wbg_get_imports() {
926
944
  const ret = arg0.data;
927
945
  return ret;
928
946
  };
929
- imports.wbg.__wbg_datagrams_05d12f8029dbc662 = function(arg0) {
930
- const ret = arg0.datagrams;
931
- return ret;
932
- };
933
947
  imports.wbg.__wbg_error_7534b8e9a36f1ab4 = function(arg0, arg1) {
934
948
  let deferred0_0;
935
949
  let deferred0_1;
@@ -954,24 +968,6 @@ function __wbg_get_imports() {
954
968
  const ret = arg0.fill(arg1, arg2 >>> 0, arg3 >>> 0);
955
969
  return ret;
956
970
  };
957
- imports.wbg.__wbg_getReader_b6676f6d8b326942 = function(arg0) {
958
- const ret = arg0.getReader();
959
- return ret;
960
- };
961
- imports.wbg.__wbg_getUint16_cb7a6e659d68e5a6 = function(arg0, arg1, arg2) {
962
- const ret = arg0.getUint16(arg1 >>> 0, arg2 !== 0);
963
- return ret;
964
- };
965
- imports.wbg.__wbg_getUint8_f42915a9262518eb = function(arg0, arg1) {
966
- const ret = arg0.getUint8(arg1 >>> 0);
967
- return ret;
968
- };
969
- imports.wbg.__wbg_getWriter_bbffb7cf601bec61 = function() {
970
- return handleError(function(arg0) {
971
- const ret = arg0.getWriter();
972
- return ret;
973
- }, arguments);
974
- };
975
971
  imports.wbg.__wbg_get_af9dab7e9603ea93 = function() {
976
972
  return handleError(function(arg0, arg1) {
977
973
  const ret = Reflect.get(arg0, arg1);
@@ -1063,22 +1059,26 @@ function __wbg_get_imports() {
1063
1059
  return ret;
1064
1060
  }, arguments);
1065
1061
  };
1066
- imports.wbg.__wbg_new_with_options_661ae023a99756d4 = function() {
1067
- return handleError(function(arg0, arg1, arg2) {
1068
- const ret = new WebTransport(getStringFromWasm0(arg0, arg1), arg2);
1069
- return ret;
1070
- }, arguments);
1071
- };
1072
1062
  imports.wbg.__wbg_new_with_shared_array_buffer_f801846979192910 = function(arg0, arg1, arg2) {
1073
1063
  const ret = new DataView(arg0, arg1 >>> 0, arg2 >>> 0);
1074
1064
  return ret;
1075
1065
  };
1066
+ imports.wbg.__wbg_notify_65c8811cd7c0cdea = function() {
1067
+ return handleError(function(arg0, arg1, arg2) {
1068
+ const ret = Atomics.notify(arg0, arg1 >>> 0, arg2 >>> 0);
1069
+ return ret;
1070
+ }, arguments);
1071
+ };
1076
1072
  imports.wbg.__wbg_notify_f7e901980222d3e0 = function() {
1077
1073
  return handleError(function(arg0, arg1) {
1078
1074
  const ret = Atomics.notify(arg0, arg1 >>> 0);
1079
1075
  return ret;
1080
1076
  }, arguments);
1081
1077
  };
1078
+ imports.wbg.__wbg_now_69d776cd24f5215b = function() {
1079
+ const ret = Date.now();
1080
+ return ret;
1081
+ };
1082
1082
  imports.wbg.__wbg_or_eb11de0669782b52 = function() {
1083
1083
  return handleError(function(arg0, arg1, arg2) {
1084
1084
  const ret = Atomics.or(arg0, arg1 >>> 0, arg2);
@@ -1097,39 +1097,6 @@ function __wbg_get_imports() {
1097
1097
  const ret = arg0.push(arg1);
1098
1098
  return ret;
1099
1099
  };
1100
- imports.wbg.__wbg_queueMicrotask_9b549dfce8865860 = function(arg0) {
1101
- const ret = arg0.queueMicrotask;
1102
- return ret;
1103
- };
1104
- imports.wbg.__wbg_queueMicrotask_fca69f5bfad613a5 = function(arg0) {
1105
- queueMicrotask(arg0);
1106
- };
1107
- imports.wbg.__wbg_random_cc1f9237d866d212 = function() {
1108
- const ret = Math.random();
1109
- return ret;
1110
- };
1111
- imports.wbg.__wbg_read_39c4b35efcd03c25 = function(arg0) {
1112
- const ret = arg0.read();
1113
- return ret;
1114
- };
1115
- imports.wbg.__wbg_readable_91b7193a7ae57e51 = function(arg0) {
1116
- const ret = arg0.readable;
1117
- return ret;
1118
- };
1119
- imports.wbg.__wbg_ready_a3e887a4174c582b = function(arg0) {
1120
- const ret = arg0.ready;
1121
- return ret;
1122
- };
1123
- imports.wbg.__wbg_resolve_fd5bfbaa4ce36e1e = function(arg0) {
1124
- const ret = Promise.resolve(arg0);
1125
- return ret;
1126
- };
1127
- imports.wbg.__wbg_setUint16_ff3205ca61800a91 = function(arg0, arg1, arg2, arg3) {
1128
- arg0.setUint16(arg1 >>> 0, arg2, arg3 !== 0);
1129
- };
1130
- imports.wbg.__wbg_setUint8_71dd48d3e18e4e40 = function(arg0, arg1, arg2) {
1131
- arg0.setUint8(arg1 >>> 0, arg2);
1132
- };
1133
1100
  imports.wbg.__wbg_set_169e13b608078b7b = function(arg0, arg1, arg2) {
1134
1101
  arg0.set(getArrayU8FromWasm0(arg1, arg2));
1135
1102
  };
@@ -1139,9 +1106,6 @@ function __wbg_get_imports() {
1139
1106
  return ret;
1140
1107
  }, arguments);
1141
1108
  };
1142
- imports.wbg.__wbg_set_algorithm_f5b9d6dae15e63e3 = function(arg0, arg1, arg2) {
1143
- arg0.algorithm = getStringFromWasm0(arg1, arg2);
1144
- };
1145
1109
  imports.wbg.__wbg_set_bc3a432bdcd60886 = function(arg0, arg1, arg2) {
1146
1110
  arg0.set(arg1, arg2 >>> 0);
1147
1111
  };
@@ -1154,15 +1118,9 @@ function __wbg_get_imports() {
1154
1118
  imports.wbg.__wbg_set_onmessage_deb94985de696ac7 = function(arg0, arg1) {
1155
1119
  arg0.onmessage = arg1;
1156
1120
  };
1157
- imports.wbg.__wbg_set_server_certificate_hashes_d12c95e03a45bcd5 = function(arg0, arg1) {
1158
- arg0.serverCertificateHashes = arg1;
1159
- };
1160
1121
  imports.wbg.__wbg_set_type_c2eb2929316959f4 = function(arg0, arg1) {
1161
1122
  arg0.type = __wbindgen_enum_WorkerType[arg1];
1162
1123
  };
1163
- imports.wbg.__wbg_set_value_3371f9dc48a34104 = function(arg0, arg1) {
1164
- arg0.value = arg1;
1165
- };
1166
1124
  imports.wbg.__wbg_stack_0ed75d68575b0f3c = function(arg0, arg1) {
1167
1125
  const ret = arg1.stack;
1168
1126
  const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
@@ -1199,14 +1157,6 @@ function __wbg_get_imports() {
1199
1157
  imports.wbg.__wbg_terminate_08a1236dd2e69da0 = function(arg0) {
1200
1158
  arg0.terminate();
1201
1159
  };
1202
- imports.wbg.__wbg_then_429f7caf1026411d = function(arg0, arg1, arg2) {
1203
- const ret = arg0.then(arg1, arg2);
1204
- return ret;
1205
- };
1206
- imports.wbg.__wbg_then_4f95312d68691235 = function(arg0, arg1) {
1207
- const ret = arg0.then(arg1);
1208
- return ret;
1209
- };
1210
1160
  imports.wbg.__wbg_wait_ceb109d0011d6567 = function() {
1211
1161
  return handleError(function(arg0, arg1, arg2, arg3) {
1212
1162
  const ret = Atomics.wait(arg0, arg1 >>> 0, arg2, arg3);
@@ -1216,14 +1166,6 @@ function __wbg_get_imports() {
1216
1166
  imports.wbg.__wbg_warn_6e567d0d926ff881 = function(arg0) {
1217
1167
  console.warn(arg0);
1218
1168
  };
1219
- imports.wbg.__wbg_writable_523e68bd72433329 = function(arg0) {
1220
- const ret = arg0.writable;
1221
- return ret;
1222
- };
1223
- imports.wbg.__wbg_write_0823b42435137c02 = function(arg0, arg1) {
1224
- const ret = arg0.write(arg1);
1225
- return ret;
1226
- };
1227
1169
  imports.wbg.__wbg_xor_5e9be92d2e01a692 = function() {
1228
1170
  return handleError(function(arg0, arg1, arg2) {
1229
1171
  const ret = Atomics.xor(arg0, arg1 >>> 0, arg2);
@@ -1234,26 +1176,14 @@ function __wbg_get_imports() {
1234
1176
  const ret = getStringFromWasm0(arg0, arg1);
1235
1177
  return ret;
1236
1178
  };
1237
- imports.wbg.__wbindgen_cast_32327f67251393a4 = function(arg0, arg1) {
1238
- const ret = makeMutClosure(arg0, arg1, wasm.wasm_bindgen__closure__destroy__h2f2b52f94c430d4b, wasm_bindgen__convert__closures_____invoke__he00a4f55faf9050f);
1239
- return ret;
1240
- };
1241
- imports.wbg.__wbindgen_cast_3d2491109ac86f9d = function(arg0, arg1) {
1242
- const ret = makeMutClosure(arg0, arg1, wasm.wasm_bindgen__closure__destroy__h612f8e24953b61d5, wasm_bindgen__convert__closures_____invoke__h260170fb96639bcf);
1243
- return ret;
1244
- };
1245
- imports.wbg.__wbindgen_cast_bbd4dd9b33de0f05 = function(arg0, arg1) {
1246
- const ret = makeClosure(arg0, arg1, wasm.wasm_bindgen__closure__destroy__h2f2b52f94c430d4b, wasm_bindgen__convert__closures_____invoke__hd159192dfee36a06);
1247
- return ret;
1248
- };
1249
- imports.wbg.__wbindgen_cast_bda31cc20c54b248 = function(arg0, arg1) {
1250
- const ret = makeMutClosure(arg0, arg1, wasm.wasm_bindgen__closure__destroy__h2f2b52f94c430d4b, wasm_bindgen__convert__closures_____invoke__hedae94b906f728f2);
1251
- return ret;
1252
- };
1253
1179
  imports.wbg.__wbindgen_cast_d6cd19b81560fd6e = function(arg0) {
1254
1180
  const ret = arg0;
1255
1181
  return ret;
1256
1182
  };
1183
+ imports.wbg.__wbindgen_cast_e7641268fcb75979 = function(arg0, arg1) {
1184
+ const ret = makeMutClosure(arg0, arg1, wasm.wasm_bindgen__closure__destroy__h4b145e497aa7828d, wasm_bindgen__convert__closures_____invoke__hfbd40044a7a1ae85);
1185
+ return ret;
1186
+ };
1257
1187
  imports.wbg.__wbindgen_init_externref_table = function() {
1258
1188
  const table = wasm.__wbindgen_externrefs;
1259
1189
  const offset = table.grow(4);