@grida/canvas-wasm 0.0.52 → 0.0.53

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/dist/index.js CHANGED
@@ -35,9 +35,9 @@ var require_grida_canvas_wasm = __commonJS({
35
35
  var createGridaCanvas2 = (() => {
36
36
  var _a;
37
37
  var _scriptName = typeof document != "undefined" ? (_a = document.currentScript) == null ? void 0 : _a.src : void 0;
38
- return function(moduleArg = {}) {
38
+ return async function(moduleArg = {}) {
39
39
  var moduleRtn;
40
- var Module = Object.assign({}, moduleArg);
40
+ var Module = moduleArg;
41
41
  var readyPromiseResolve, readyPromiseReject;
42
42
  var readyPromise = new Promise((resolve, reject) => {
43
43
  readyPromiseResolve = resolve;
@@ -45,7 +45,6 @@ var require_grida_canvas_wasm = __commonJS({
45
45
  });
46
46
  var ENVIRONMENT_IS_WEB = true;
47
47
  var ENVIRONMENT_IS_WORKER = false;
48
- var moduleOverrides = Object.assign({}, Module);
49
48
  var arguments_ = [];
50
49
  var thisProgram = "./this.program";
51
50
  var quit_ = (status, toThrow) => {
@@ -58,7 +57,7 @@ var require_grida_canvas_wasm = __commonJS({
58
57
  }
59
58
  return scriptDirectory + path;
60
59
  }
61
- var read_, readAsync, readBinary;
60
+ var readAsync, readBinary;
62
61
  if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {
63
62
  if (ENVIRONMENT_IS_WORKER) {
64
63
  scriptDirectory = self.location.href;
@@ -71,70 +70,40 @@ var require_grida_canvas_wasm = __commonJS({
71
70
  if (scriptDirectory.startsWith("blob:")) {
72
71
  scriptDirectory = "";
73
72
  } else {
74
- scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, "").lastIndexOf("/") + 1);
73
+ scriptDirectory = scriptDirectory.slice(0, scriptDirectory.replace(/[?#].*/, "").lastIndexOf("/") + 1);
75
74
  }
76
75
  {
77
- read_ = (url) => {
78
- var xhr = new XMLHttpRequest();
79
- xhr.open("GET", url, false);
80
- xhr.send(null);
81
- return xhr.responseText;
82
- };
83
- if (ENVIRONMENT_IS_WORKER) {
84
- readBinary = (url) => {
85
- var xhr = new XMLHttpRequest();
86
- xhr.open("GET", url, false);
87
- xhr.responseType = "arraybuffer";
88
- xhr.send(null);
89
- return new Uint8Array(xhr.response);
90
- };
91
- }
92
- readAsync = (url, onload, onerror) => {
93
- var xhr = new XMLHttpRequest();
94
- xhr.open("GET", url, true);
95
- xhr.responseType = "arraybuffer";
96
- xhr.onload = () => {
97
- if (xhr.status == 200 || xhr.status == 0 && xhr.response) {
98
- onload(xhr.response);
99
- return;
100
- }
101
- onerror();
102
- };
103
- xhr.onerror = onerror;
104
- xhr.send(null);
76
+ readAsync = async (url) => {
77
+ var response = await fetch(url, { credentials: "same-origin" });
78
+ if (response.ok) {
79
+ return response.arrayBuffer();
80
+ }
81
+ throw new Error(response.status + " : " + response.url);
105
82
  };
106
83
  }
107
84
  } else {
108
85
  }
109
- var out = Module["print"] || console.log.bind(console);
110
- var err = Module["printErr"] || console.error.bind(console);
111
- Object.assign(Module, moduleOverrides);
112
- moduleOverrides = null;
113
- if (Module["arguments"]) arguments_ = Module["arguments"];
114
- if (Module["thisProgram"]) thisProgram = Module["thisProgram"];
115
- if (Module["quit"]) quit_ = Module["quit"];
86
+ var out = console.log.bind(console);
87
+ var err = console.error.bind(console);
116
88
  var wasmBinary;
117
- if (Module["wasmBinary"]) wasmBinary = Module["wasmBinary"];
118
89
  var wasmMemory;
119
90
  var ABORT = false;
120
91
  var EXITSTATUS;
121
- var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;
92
+ var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAP64, HEAPU64, HEAPF64;
93
+ var runtimeInitialized = false;
122
94
  function updateMemoryViews() {
123
95
  var b = wasmMemory.buffer;
124
- Module["HEAP8"] = HEAP8 = new Int8Array(b);
125
- Module["HEAP16"] = HEAP16 = new Int16Array(b);
96
+ HEAP8 = new Int8Array(b);
97
+ HEAP16 = new Int16Array(b);
126
98
  Module["HEAPU8"] = HEAPU8 = new Uint8Array(b);
127
99
  Module["HEAPU16"] = HEAPU16 = new Uint16Array(b);
128
100
  Module["HEAP32"] = HEAP32 = new Int32Array(b);
129
101
  Module["HEAPU32"] = HEAPU32 = new Uint32Array(b);
130
102
  Module["HEAPF32"] = HEAPF32 = new Float32Array(b);
131
- Module["HEAPF64"] = HEAPF64 = new Float64Array(b);
103
+ HEAPF64 = new Float64Array(b);
104
+ HEAP64 = new BigInt64Array(b);
105
+ HEAPU64 = new BigUint64Array(b);
132
106
  }
133
- var __ATPRERUN__ = [];
134
- var __ATINIT__ = [];
135
- var __ATMAIN__ = [];
136
- var __ATPOSTRUN__ = [];
137
- var runtimeInitialized = false;
138
107
  function preRun() {
139
108
  if (Module["preRun"]) {
140
109
  if (typeof Module["preRun"] == "function") Module["preRun"] = [Module["preRun"]];
@@ -142,17 +111,16 @@ var require_grida_canvas_wasm = __commonJS({
142
111
  addOnPreRun(Module["preRun"].shift());
143
112
  }
144
113
  }
145
- callRuntimeCallbacks(__ATPRERUN__);
114
+ callRuntimeCallbacks(onPreRuns);
146
115
  }
147
116
  function initRuntime() {
148
117
  runtimeInitialized = true;
149
- if (!Module["noFSInit"] && !FS.init.initialized) FS.init();
150
- FS.ignorePermissions = false;
118
+ if (!Module["noFSInit"] && !FS.initialized) FS.init();
151
119
  TTY.init();
152
- callRuntimeCallbacks(__ATINIT__);
120
+ wasmExports["hg"]();
121
+ FS.ignorePermissions = false;
153
122
  }
154
123
  function preMain() {
155
- callRuntimeCallbacks(__ATMAIN__);
156
124
  }
157
125
  function postRun() {
158
126
  if (Module["postRun"]) {
@@ -161,19 +129,9 @@ var require_grida_canvas_wasm = __commonJS({
161
129
  addOnPostRun(Module["postRun"].shift());
162
130
  }
163
131
  }
164
- callRuntimeCallbacks(__ATPOSTRUN__);
165
- }
166
- function addOnPreRun(cb) {
167
- __ATPRERUN__.unshift(cb);
168
- }
169
- function addOnInit(cb) {
170
- __ATINIT__.unshift(cb);
171
- }
172
- function addOnPostRun(cb) {
173
- __ATPOSTRUN__.unshift(cb);
132
+ callRuntimeCallbacks(onPostRuns);
174
133
  }
175
134
  var runDependencies = 0;
176
- var runDependencyWatcher = null;
177
135
  var dependenciesFulfilled = null;
178
136
  function getUniqueRunDependency(id) {
179
137
  return id;
@@ -188,10 +146,6 @@ var require_grida_canvas_wasm = __commonJS({
188
146
  runDependencies--;
189
147
  (_a2 = Module["monitorRunDependencies"]) == null ? void 0 : _a2.call(Module, runDependencies);
190
148
  if (runDependencies == 0) {
191
- if (runDependencyWatcher !== null) {
192
- clearInterval(runDependencyWatcher);
193
- runDependencyWatcher = null;
194
- }
195
149
  if (dependenciesFulfilled) {
196
150
  var callback = dependenciesFulfilled;
197
151
  dependenciesFulfilled = null;
@@ -205,22 +159,15 @@ var require_grida_canvas_wasm = __commonJS({
205
159
  what = "Aborted(" + what + ")";
206
160
  err(what);
207
161
  ABORT = true;
208
- EXITSTATUS = 1;
209
162
  what += ". Build with -sASSERTIONS for more info.";
210
163
  var e = new WebAssembly.RuntimeError(what);
211
164
  readyPromiseReject(e);
212
165
  throw e;
213
166
  }
214
- var dataURIPrefix = "data:application/octet-stream;base64,";
215
- var isDataURI = (filename) => filename.startsWith(dataURIPrefix);
167
+ var wasmBinaryFile;
216
168
  function findWasmBinary() {
217
- var f = "grida_canvas_wasm.wasm";
218
- if (!isDataURI(f)) {
219
- return locateFile(f);
220
- }
221
- return f;
169
+ return locateFile("grida_canvas_wasm.wasm");
222
170
  }
223
- var wasmBinaryFile;
224
171
  function getBinarySync(file) {
225
172
  if (file == wasmBinaryFile && wasmBinary) {
226
173
  return new Uint8Array(wasmBinary);
@@ -230,81 +177,90 @@ var require_grida_canvas_wasm = __commonJS({
230
177
  }
231
178
  throw "both async and sync fetching of the wasm failed";
232
179
  }
233
- function getBinaryPromise(binaryFile) {
234
- if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) {
235
- if (typeof fetch == "function") {
236
- return fetch(binaryFile, { credentials: "same-origin" }).then((response) => {
237
- if (!response["ok"]) {
238
- throw `failed to load wasm binary file at '${binaryFile}'`;
239
- }
240
- return response["arrayBuffer"]();
241
- }).catch(() => getBinarySync(binaryFile));
180
+ async function getWasmBinary(binaryFile) {
181
+ if (!wasmBinary) {
182
+ try {
183
+ var response = await readAsync(binaryFile);
184
+ return new Uint8Array(response);
185
+ } catch {
242
186
  }
243
187
  }
244
- return Promise.resolve().then(() => getBinarySync(binaryFile));
188
+ return getBinarySync(binaryFile);
245
189
  }
246
- function instantiateArrayBuffer(binaryFile, imports, receiver) {
247
- return getBinaryPromise(binaryFile).then((binary) => WebAssembly.instantiate(binary, imports)).then(receiver, (reason) => {
190
+ async function instantiateArrayBuffer(binaryFile, imports) {
191
+ try {
192
+ var binary = await getWasmBinary(binaryFile);
193
+ var instance = await WebAssembly.instantiate(binary, imports);
194
+ return instance;
195
+ } catch (reason) {
248
196
  err(`failed to asynchronously prepare wasm: ${reason}`);
249
197
  abort(reason);
250
- });
198
+ }
251
199
  }
252
- function instantiateAsync(binary, binaryFile, imports, callback) {
253
- if (!binary && typeof WebAssembly.instantiateStreaming == "function" && !isDataURI(binaryFile) && typeof fetch == "function") {
254
- return fetch(binaryFile, { credentials: "same-origin" }).then((response) => {
255
- var result = WebAssembly.instantiateStreaming(response, imports);
256
- return result.then(callback, function(reason) {
257
- err(`wasm streaming compile failed: ${reason}`);
258
- err("falling back to ArrayBuffer instantiation");
259
- return instantiateArrayBuffer(binaryFile, imports, callback);
260
- });
261
- });
200
+ async function instantiateAsync(binary, binaryFile, imports) {
201
+ if (!binary && typeof WebAssembly.instantiateStreaming == "function") {
202
+ try {
203
+ var response = fetch(binaryFile, { credentials: "same-origin" });
204
+ var instantiationResult = await WebAssembly.instantiateStreaming(response, imports);
205
+ return instantiationResult;
206
+ } catch (reason) {
207
+ err(`wasm streaming compile failed: ${reason}`);
208
+ err("falling back to ArrayBuffer instantiation");
209
+ }
262
210
  }
263
- return instantiateArrayBuffer(binaryFile, imports, callback);
211
+ return instantiateArrayBuffer(binaryFile, imports);
264
212
  }
265
213
  function getWasmImports() {
266
- return { "a": wasmImports };
214
+ return { a: wasmImports };
267
215
  }
268
- function createWasm() {
269
- var info = getWasmImports();
216
+ async function createWasm() {
270
217
  function receiveInstance(instance, module3) {
271
218
  wasmExports = instance.exports;
272
- wasmMemory = wasmExports["ag"];
219
+ wasmMemory = wasmExports["gg"];
273
220
  updateMemoryViews();
274
- wasmTable = wasmExports["cg"];
275
- addOnInit(wasmExports["bg"]);
221
+ wasmTable = wasmExports["ig"];
276
222
  removeRunDependency("wasm-instantiate");
277
223
  return wasmExports;
278
224
  }
279
225
  addRunDependency("wasm-instantiate");
280
- function receiveInstantiationResult(result) {
281
- receiveInstance(result["instance"]);
226
+ function receiveInstantiationResult(result2) {
227
+ return receiveInstance(result2["instance"]);
282
228
  }
229
+ var info = getWasmImports();
283
230
  if (Module["instantiateWasm"]) {
284
- try {
285
- return Module["instantiateWasm"](info, receiveInstance);
286
- } catch (e) {
287
- err(`Module.instantiateWasm callback failed with error: ${e}`);
288
- readyPromiseReject(e);
289
- }
231
+ return new Promise((resolve, reject) => {
232
+ Module["instantiateWasm"](info, (mod, inst) => {
233
+ resolve(receiveInstance(mod, inst));
234
+ });
235
+ });
236
+ }
237
+ wasmBinaryFile ??= findWasmBinary();
238
+ try {
239
+ var result = await instantiateAsync(wasmBinary, wasmBinaryFile, info);
240
+ var exports3 = receiveInstantiationResult(result);
241
+ return exports3;
242
+ } catch (e) {
243
+ readyPromiseReject(e);
244
+ return Promise.reject(e);
290
245
  }
291
- if (!wasmBinaryFile) wasmBinaryFile = findWasmBinary();
292
- instantiateAsync(wasmBinary, wasmBinaryFile, info, receiveInstantiationResult).catch(readyPromiseReject);
293
- return {};
294
246
  }
295
- var tempDouble;
296
- var tempI64;
297
- function ExitStatus(status) {
298
- this.name = "ExitStatus";
299
- this.message = `Program terminated with exit(${status})`;
300
- this.status = status;
247
+ class ExitStatus {
248
+ name = "ExitStatus";
249
+ constructor(status) {
250
+ this.message = `Program terminated with exit(${status})`;
251
+ this.status = status;
252
+ }
301
253
  }
302
254
  var callRuntimeCallbacks = (callbacks) => {
303
255
  while (callbacks.length > 0) {
304
256
  callbacks.shift()(Module);
305
257
  }
306
258
  };
307
- var noExitRuntime = Module["noExitRuntime"] || true;
259
+ var onPostRuns = [];
260
+ var addOnPostRun = (cb) => onPostRuns.push(cb);
261
+ var onPreRuns = [];
262
+ var addOnPreRun = (cb) => onPreRuns.push(cb);
263
+ var noExitRuntime = true;
308
264
  var stackRestore = (val) => __emscripten_stack_restore(val);
309
265
  var stackSave = () => _emscripten_stack_get_current();
310
266
  var exceptionCaught = [];
@@ -317,8 +273,8 @@ var require_grida_canvas_wasm = __commonJS({
317
273
  }
318
274
  info.set_rethrown(false);
319
275
  exceptionCaught.push(info);
320
- ___cxa_increment_exception_refcount(info.excPtr);
321
- return info.get_exception_ptr();
276
+ ___cxa_increment_exception_refcount(ptr);
277
+ return ___cxa_get_exception_ptr(ptr);
322
278
  };
323
279
  var exceptionLast = 0;
324
280
  var ___cxa_end_catch = () => {
@@ -369,22 +325,7 @@ var require_grida_canvas_wasm = __commonJS({
369
325
  get_adjusted_ptr() {
370
326
  return HEAPU32[this.ptr + 16 >> 2];
371
327
  }
372
- get_exception_ptr() {
373
- var isPointer = ___cxa_is_pointer_type(this.get_type());
374
- if (isPointer) {
375
- return HEAPU32[this.excPtr >> 2];
376
- }
377
- var adjusted = this.get_adjusted_ptr();
378
- if (adjusted !== 0) return adjusted;
379
- return this.excPtr;
380
- }
381
328
  }
382
- var ___resumeException = (ptr) => {
383
- if (!exceptionLast) {
384
- exceptionLast = ptr;
385
- }
386
- throw exceptionLast;
387
- };
388
329
  var setTempRet0 = (val) => __emscripten_tempret_set(val);
389
330
  var findMatchingCatch = (args) => {
390
331
  var thrown = exceptionLast;
@@ -399,8 +340,7 @@ var require_grida_canvas_wasm = __commonJS({
399
340
  setTempRet0(0);
400
341
  return thrown;
401
342
  }
402
- for (var arg in args) {
403
- var caughtType = args[arg];
343
+ for (var caughtType of args) {
404
344
  if (caughtType === 0 || caughtType === thrownType) {
405
345
  break;
406
346
  }
@@ -439,11 +379,17 @@ var require_grida_canvas_wasm = __commonJS({
439
379
  throw exceptionLast;
440
380
  };
441
381
  var ___cxa_uncaught_exceptions = () => uncaughtExceptionCount;
442
- function syscallGetVarargI() {
382
+ var ___resumeException = (ptr) => {
383
+ if (!exceptionLast) {
384
+ exceptionLast = ptr;
385
+ }
386
+ throw exceptionLast;
387
+ };
388
+ var syscallGetVarargI = () => {
443
389
  var ret = HEAP32[+SYSCALLS.varargs >> 2];
444
390
  SYSCALLS.varargs += 4;
445
391
  return ret;
446
- }
392
+ };
447
393
  var syscallGetVarargP = syscallGetVarargI;
448
394
  var PATH = { isAbs: (path) => path.charAt(0) === "/", splitPath: (filename) => {
449
395
  var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;
@@ -469,7 +415,7 @@ var require_grida_canvas_wasm = __commonJS({
469
415
  }
470
416
  return parts;
471
417
  }, normalize: (path) => {
472
- var isAbsolute = PATH.isAbs(path), trailingSlash = path.substr(-1) === "/";
418
+ var isAbsolute = PATH.isAbs(path), trailingSlash = path.slice(-1) === "/";
473
419
  path = PATH.normalizeArray(path.split("/").filter((p) => !!p), !isAbsolute).join("/");
474
420
  if (!path && !isAbsolute) {
475
421
  path = ".";
@@ -484,23 +430,14 @@ var require_grida_canvas_wasm = __commonJS({
484
430
  return ".";
485
431
  }
486
432
  if (dir) {
487
- dir = dir.substr(0, dir.length - 1);
433
+ dir = dir.slice(0, -1);
488
434
  }
489
435
  return root + dir;
490
- }, basename: (path) => {
491
- if (path === "/") return "/";
492
- path = PATH.normalize(path);
493
- path = path.replace(/\/$/, "");
494
- var lastSlash = path.lastIndexOf("/");
495
- if (lastSlash === -1) return path;
496
- return path.substr(lastSlash + 1);
497
- }, join: (...paths) => PATH.normalize(paths.join("/")), join2: (l, r) => PATH.normalize(l + "/" + r) };
498
- var initRandomFill = () => {
499
- if (typeof crypto == "object" && typeof crypto["getRandomValues"] == "function") {
500
- return (view) => crypto.getRandomValues(view);
501
- } else abort("initRandomDevice");
502
- };
503
- var randomFill = (view) => (randomFill = initRandomFill())(view);
436
+ }, basename: (path) => path && path.match(/([^\/]+|\/)\/*$/)[1], join: (...paths) => PATH.normalize(paths.join("/")), join2: (l, r) => PATH.normalize(l + "/" + r) };
437
+ var initRandomFill = () => (view) => crypto.getRandomValues(view);
438
+ var randomFill = (view) => {
439
+ (randomFill = initRandomFill())(view);
440
+ };
504
441
  var PATH_FS = { resolve: (...args) => {
505
442
  var resolvedPath = "", resolvedAbsolute = false;
506
443
  for (var i2 = args.length - 1; i2 >= -1 && !resolvedAbsolute; i2--) {
@@ -516,8 +453,8 @@ var require_grida_canvas_wasm = __commonJS({
516
453
  resolvedPath = PATH.normalizeArray(resolvedPath.split("/").filter((p) => !!p), !resolvedAbsolute).join("/");
517
454
  return (resolvedAbsolute ? "/" : "") + resolvedPath || ".";
518
455
  }, relative: (from, to) => {
519
- from = PATH_FS.resolve(from).substr(1);
520
- to = PATH_FS.resolve(to).substr(1);
456
+ from = PATH_FS.resolve(from).slice(1);
457
+ to = PATH_FS.resolve(to).slice(1);
521
458
  function trim(arr) {
522
459
  var start = 0;
523
460
  for (; start < arr.length; start++) {
@@ -547,8 +484,8 @@ var require_grida_canvas_wasm = __commonJS({
547
484
  outputParts = outputParts.concat(toParts.slice(samePartsLength));
548
485
  return outputParts.join("/");
549
486
  } };
550
- var UTF8Decoder = typeof TextDecoder != "undefined" ? new TextDecoder("utf8") : void 0;
551
- var UTF8ArrayToString = (heapOrArray, idx, maxBytesToRead) => {
487
+ var UTF8Decoder = typeof TextDecoder != "undefined" ? new TextDecoder() : void 0;
488
+ var UTF8ArrayToString = (heapOrArray, idx = 0, maxBytesToRead = NaN) => {
552
489
  var endIdx = idx + maxBytesToRead;
553
490
  var endPtr = idx;
554
491
  while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr;
@@ -633,13 +570,13 @@ var require_grida_canvas_wasm = __commonJS({
633
570
  heap[outIdx] = 0;
634
571
  return outIdx - startIdx;
635
572
  };
636
- function intArrayFromString(stringy, dontAddNull, length) {
573
+ var intArrayFromString = (stringy, dontAddNull, length) => {
637
574
  var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1;
638
575
  var u8array = new Array(len);
639
576
  var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length);
640
577
  if (dontAddNull) u8array.length = numBytesWritten;
641
578
  return u8array;
642
- }
579
+ };
643
580
  var FS_stdin_getChar = () => {
644
581
  if (!FS_stdin_getChar_buffer.length) {
645
582
  var result = null;
@@ -648,11 +585,7 @@ var require_grida_canvas_wasm = __commonJS({
648
585
  if (result !== null) {
649
586
  result += "\n";
650
587
  }
651
- } else if (typeof readline == "function") {
652
- result = readline();
653
- if (result !== null) {
654
- result += "\n";
655
- }
588
+ } else {
656
589
  }
657
590
  if (!result) {
658
591
  return null;
@@ -697,7 +630,7 @@ var require_grida_canvas_wasm = __commonJS({
697
630
  buffer[offset + i2] = result;
698
631
  }
699
632
  if (bytesRead) {
700
- stream.node.timestamp = Date.now();
633
+ stream.node.atime = Date.now();
701
634
  }
702
635
  return bytesRead;
703
636
  }, write(stream, buffer, offset, length, pos) {
@@ -712,21 +645,22 @@ var require_grida_canvas_wasm = __commonJS({
712
645
  throw new FS.ErrnoError(29);
713
646
  }
714
647
  if (length) {
715
- stream.node.timestamp = Date.now();
648
+ stream.node.mtime = stream.node.ctime = Date.now();
716
649
  }
717
650
  return i2;
718
651
  } }, default_tty_ops: { get_char(tty) {
719
652
  return FS_stdin_getChar();
720
653
  }, put_char(tty, val) {
721
654
  if (val === null || val === 10) {
722
- out(UTF8ArrayToString(tty.output, 0));
655
+ out(UTF8ArrayToString(tty.output));
723
656
  tty.output = [];
724
657
  } else {
725
658
  if (val != 0) tty.output.push(val);
726
659
  }
727
660
  }, fsync(tty) {
728
- if (tty.output && tty.output.length > 0) {
729
- out(UTF8ArrayToString(tty.output, 0));
661
+ var _a2;
662
+ if (((_a2 = tty.output) == null ? void 0 : _a2.length) > 0) {
663
+ out(UTF8ArrayToString(tty.output));
730
664
  tty.output = [];
731
665
  }
732
666
  }, ioctl_tcgets(tty) {
@@ -737,35 +671,33 @@ var require_grida_canvas_wasm = __commonJS({
737
671
  return [24, 80];
738
672
  } }, default_tty1_ops: { put_char(tty, val) {
739
673
  if (val === null || val === 10) {
740
- err(UTF8ArrayToString(tty.output, 0));
674
+ err(UTF8ArrayToString(tty.output));
741
675
  tty.output = [];
742
676
  } else {
743
677
  if (val != 0) tty.output.push(val);
744
678
  }
745
679
  }, fsync(tty) {
746
- if (tty.output && tty.output.length > 0) {
747
- err(UTF8ArrayToString(tty.output, 0));
680
+ var _a2;
681
+ if (((_a2 = tty.output) == null ? void 0 : _a2.length) > 0) {
682
+ err(UTF8ArrayToString(tty.output));
748
683
  tty.output = [];
749
684
  }
750
685
  } } };
751
- var zeroMemory = (address, size) => {
752
- HEAPU8.fill(0, address, address + size);
753
- return address;
754
- };
686
+ var zeroMemory = (ptr, size) => HEAPU8.fill(0, ptr, ptr + size);
755
687
  var alignMemory = (size, alignment) => Math.ceil(size / alignment) * alignment;
756
688
  var mmapAlloc = (size) => {
757
689
  size = alignMemory(size, 65536);
758
690
  var ptr = _emscripten_builtin_memalign(65536, size);
759
- if (!ptr) return 0;
760
- return zeroMemory(ptr, size);
691
+ if (ptr) zeroMemory(ptr, size);
692
+ return ptr;
761
693
  };
762
694
  var MEMFS = { ops_table: null, mount(mount) {
763
- return MEMFS.createNode(null, "/", 16384 | 511, 0);
695
+ return MEMFS.createNode(null, "/", 16895, 0);
764
696
  }, createNode(parent, name, mode, dev) {
765
697
  if (FS.isBlkdev(mode) || FS.isFIFO(mode)) {
766
698
  throw new FS.ErrnoError(63);
767
699
  }
768
- MEMFS.ops_table ||= { dir: { node: { getattr: MEMFS.node_ops.getattr, setattr: MEMFS.node_ops.setattr, lookup: MEMFS.node_ops.lookup, mknod: MEMFS.node_ops.mknod, rename: MEMFS.node_ops.rename, unlink: MEMFS.node_ops.unlink, rmdir: MEMFS.node_ops.rmdir, readdir: MEMFS.node_ops.readdir, symlink: MEMFS.node_ops.symlink }, stream: { llseek: MEMFS.stream_ops.llseek } }, file: { node: { getattr: MEMFS.node_ops.getattr, setattr: MEMFS.node_ops.setattr }, stream: { llseek: MEMFS.stream_ops.llseek, read: MEMFS.stream_ops.read, write: MEMFS.stream_ops.write, allocate: MEMFS.stream_ops.allocate, mmap: MEMFS.stream_ops.mmap, msync: MEMFS.stream_ops.msync } }, link: { node: { getattr: MEMFS.node_ops.getattr, setattr: MEMFS.node_ops.setattr, readlink: MEMFS.node_ops.readlink }, stream: {} }, chrdev: { node: { getattr: MEMFS.node_ops.getattr, setattr: MEMFS.node_ops.setattr }, stream: FS.chrdev_stream_ops } };
700
+ MEMFS.ops_table ||= { dir: { node: { getattr: MEMFS.node_ops.getattr, setattr: MEMFS.node_ops.setattr, lookup: MEMFS.node_ops.lookup, mknod: MEMFS.node_ops.mknod, rename: MEMFS.node_ops.rename, unlink: MEMFS.node_ops.unlink, rmdir: MEMFS.node_ops.rmdir, readdir: MEMFS.node_ops.readdir, symlink: MEMFS.node_ops.symlink }, stream: { llseek: MEMFS.stream_ops.llseek } }, file: { node: { getattr: MEMFS.node_ops.getattr, setattr: MEMFS.node_ops.setattr }, stream: { llseek: MEMFS.stream_ops.llseek, read: MEMFS.stream_ops.read, write: MEMFS.stream_ops.write, mmap: MEMFS.stream_ops.mmap, msync: MEMFS.stream_ops.msync } }, link: { node: { getattr: MEMFS.node_ops.getattr, setattr: MEMFS.node_ops.setattr, readlink: MEMFS.node_ops.readlink }, stream: {} }, chrdev: { node: { getattr: MEMFS.node_ops.getattr, setattr: MEMFS.node_ops.setattr }, stream: FS.chrdev_stream_ops } };
769
701
  var node = FS.createNode(parent, name, mode, dev);
770
702
  if (FS.isDir(node.mode)) {
771
703
  node.node_ops = MEMFS.ops_table.dir.node;
@@ -783,10 +715,10 @@ var require_grida_canvas_wasm = __commonJS({
783
715
  node.node_ops = MEMFS.ops_table.chrdev.node;
784
716
  node.stream_ops = MEMFS.ops_table.chrdev.stream;
785
717
  }
786
- node.timestamp = Date.now();
718
+ node.atime = node.mtime = node.ctime = Date.now();
787
719
  if (parent) {
788
720
  parent.contents[name] = node;
789
- parent.timestamp = node.timestamp;
721
+ parent.atime = parent.mtime = parent.ctime = node.atime;
790
722
  }
791
723
  return node;
792
724
  }, getFileDataAsTypedArray(node) {
@@ -833,61 +765,55 @@ var require_grida_canvas_wasm = __commonJS({
833
765
  } else {
834
766
  attr.size = 0;
835
767
  }
836
- attr.atime = new Date(node.timestamp);
837
- attr.mtime = new Date(node.timestamp);
838
- attr.ctime = new Date(node.timestamp);
768
+ attr.atime = new Date(node.atime);
769
+ attr.mtime = new Date(node.mtime);
770
+ attr.ctime = new Date(node.ctime);
839
771
  attr.blksize = 4096;
840
772
  attr.blocks = Math.ceil(attr.size / attr.blksize);
841
773
  return attr;
842
774
  }, setattr(node, attr) {
843
- if (attr.mode !== void 0) {
844
- node.mode = attr.mode;
845
- }
846
- if (attr.timestamp !== void 0) {
847
- node.timestamp = attr.timestamp;
775
+ for (const key of ["mode", "atime", "mtime", "ctime"]) {
776
+ if (attr[key] != null) {
777
+ node[key] = attr[key];
778
+ }
848
779
  }
849
780
  if (attr.size !== void 0) {
850
781
  MEMFS.resizeFileStorage(node, attr.size);
851
782
  }
852
783
  }, lookup(parent, name) {
853
- throw FS.genericErrors[44];
784
+ throw MEMFS.doesNotExistError;
854
785
  }, mknod(parent, name, mode, dev) {
855
786
  return MEMFS.createNode(parent, name, mode, dev);
856
787
  }, rename(old_node, new_dir, new_name) {
857
- if (FS.isDir(old_node.mode)) {
858
- var new_node;
859
- try {
860
- new_node = FS.lookupNode(new_dir, new_name);
861
- } catch (e) {
862
- }
863
- if (new_node) {
788
+ var new_node;
789
+ try {
790
+ new_node = FS.lookupNode(new_dir, new_name);
791
+ } catch (e) {
792
+ }
793
+ if (new_node) {
794
+ if (FS.isDir(old_node.mode)) {
864
795
  for (var i2 in new_node.contents) {
865
796
  throw new FS.ErrnoError(55);
866
797
  }
867
798
  }
799
+ FS.hashRemoveNode(new_node);
868
800
  }
869
801
  delete old_node.parent.contents[old_node.name];
870
- old_node.parent.timestamp = Date.now();
871
- old_node.name = new_name;
872
802
  new_dir.contents[new_name] = old_node;
873
- new_dir.timestamp = old_node.parent.timestamp;
874
- old_node.parent = new_dir;
803
+ old_node.name = new_name;
804
+ new_dir.ctime = new_dir.mtime = old_node.parent.ctime = old_node.parent.mtime = Date.now();
875
805
  }, unlink(parent, name) {
876
806
  delete parent.contents[name];
877
- parent.timestamp = Date.now();
807
+ parent.ctime = parent.mtime = Date.now();
878
808
  }, rmdir(parent, name) {
879
809
  var node = FS.lookupNode(parent, name);
880
810
  for (var i2 in node.contents) {
881
811
  throw new FS.ErrnoError(55);
882
812
  }
883
813
  delete parent.contents[name];
884
- parent.timestamp = Date.now();
814
+ parent.ctime = parent.mtime = Date.now();
885
815
  }, readdir(node) {
886
- var entries = [".", ".."];
887
- for (var key of Object.keys(node.contents)) {
888
- entries.push(key);
889
- }
890
- return entries;
816
+ return [".", "..", ...Object.keys(node.contents)];
891
817
  }, symlink(parent, newname, oldpath) {
892
818
  var node = MEMFS.createNode(parent, newname, 511 | 40960, 0);
893
819
  node.link = oldpath;
@@ -913,7 +839,7 @@ var require_grida_canvas_wasm = __commonJS({
913
839
  }
914
840
  if (!length) return 0;
915
841
  var node = stream.node;
916
- node.timestamp = Date.now();
842
+ node.mtime = node.ctime = Date.now();
917
843
  if (buffer.subarray && (!node.contents || node.contents.subarray)) {
918
844
  if (canOwn) {
919
845
  node.contents = buffer.subarray(offset, offset + length);
@@ -951,9 +877,6 @@ var require_grida_canvas_wasm = __commonJS({
951
877
  throw new FS.ErrnoError(28);
952
878
  }
953
879
  return position;
954
- }, allocate(stream, offset, length) {
955
- MEMFS.expandFileStorage(stream.node, offset + length);
956
- stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length);
957
880
  }, mmap(stream, length, position, prot, flags) {
958
881
  if (!FS.isFile(stream.node.mode)) {
959
882
  throw new FS.ErrnoError(43);
@@ -961,47 +884,39 @@ var require_grida_canvas_wasm = __commonJS({
961
884
  var ptr;
962
885
  var allocated;
963
886
  var contents = stream.node.contents;
964
- if (!(flags & 2) && contents.buffer === HEAP8.buffer) {
887
+ if (!(flags & 2) && contents && contents.buffer === HEAP8.buffer) {
965
888
  allocated = false;
966
889
  ptr = contents.byteOffset;
967
890
  } else {
968
- if (position > 0 || position + length < contents.length) {
969
- if (contents.subarray) {
970
- contents = contents.subarray(position, position + length);
971
- } else {
972
- contents = Array.prototype.slice.call(contents, position, position + length);
973
- }
974
- }
975
891
  allocated = true;
976
892
  ptr = mmapAlloc(length);
977
893
  if (!ptr) {
978
894
  throw new FS.ErrnoError(48);
979
895
  }
980
- HEAP8.set(contents, ptr);
896
+ if (contents) {
897
+ if (position > 0 || position + length < contents.length) {
898
+ if (contents.subarray) {
899
+ contents = contents.subarray(position, position + length);
900
+ } else {
901
+ contents = Array.prototype.slice.call(contents, position, position + length);
902
+ }
903
+ }
904
+ HEAP8.set(contents, ptr);
905
+ }
981
906
  }
982
907
  return { ptr, allocated };
983
908
  }, msync(stream, buffer, offset, length, mmapFlags) {
984
909
  MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false);
985
910
  return 0;
986
911
  } } };
987
- var asyncLoad = (url, onload, onerror, noRunDep) => {
988
- var dep = !noRunDep ? getUniqueRunDependency(`al ${url}`) : "";
989
- readAsync(url, (arrayBuffer) => {
990
- onload(new Uint8Array(arrayBuffer));
991
- if (dep) removeRunDependency(dep);
992
- }, (event) => {
993
- if (onerror) {
994
- onerror();
995
- } else {
996
- throw `Loading data file "${url}" failed.`;
997
- }
998
- });
999
- if (dep) addRunDependency(dep);
912
+ var asyncLoad = async (url) => {
913
+ var arrayBuffer = await readAsync(url);
914
+ return new Uint8Array(arrayBuffer);
1000
915
  };
1001
916
  var FS_createDataFile = (parent, name, fileData, canRead, canWrite, canOwn) => {
1002
917
  FS.createDataFile(parent, name, fileData, canRead, canWrite, canOwn);
1003
918
  };
1004
- var preloadPlugins = Module["preloadPlugins"] || [];
919
+ var preloadPlugins = [];
1005
920
  var FS_handledByPreloadPlugin = (byteArray, fullname, finish, onerror) => {
1006
921
  if (typeof Browser != "undefined") Browser.init();
1007
922
  var handled = false;
@@ -1036,13 +951,13 @@ var require_grida_canvas_wasm = __commonJS({
1036
951
  }
1037
952
  addRunDependency(dep);
1038
953
  if (typeof url == "string") {
1039
- asyncLoad(url, processData, onerror);
954
+ asyncLoad(url).then(processData, onerror);
1040
955
  } else {
1041
956
  processData(url);
1042
957
  }
1043
958
  };
1044
959
  var FS_modeStringToFlags = (str) => {
1045
- var flagModes = { "r": 0, "r+": 2, "w": 512 | 64 | 1, "w+": 512 | 64 | 2, "a": 1024 | 64 | 1, "a+": 1024 | 64 | 2 };
960
+ var flagModes = { r: 0, "r+": 2, w: 512 | 64 | 1, "w+": 512 | 64 | 2, a: 1024 | 64 | 1, "a+": 1024 | 64 | 2 };
1046
961
  var flags = flagModes[str];
1047
962
  if (typeof flags == "undefined") {
1048
963
  throw new Error(`Unknown file open mode: ${str}`);
@@ -1055,15 +970,13 @@ var require_grida_canvas_wasm = __commonJS({
1055
970
  if (canWrite) mode |= 146;
1056
971
  return mode;
1057
972
  };
1058
- var FS = { root: null, mounts: [], devices: {}, streams: [], nextInode: 1, nameTable: null, currentPath: "/", initialized: false, ignorePermissions: true, ErrnoError: class {
973
+ var FS = { root: null, mounts: [], devices: {}, streams: [], nextInode: 1, nameTable: null, currentPath: "/", initialized: false, ignorePermissions: true, filesystems: null, syncFSRequests: 0, readFiles: {}, ErrnoError: class {
974
+ name = "ErrnoError";
1059
975
  constructor(errno) {
1060
- this.name = "ErrnoError";
1061
976
  this.errno = errno;
1062
977
  }
1063
- }, genericErrors: {}, filesystems: null, syncFSRequests: 0, FSStream: class {
1064
- constructor() {
1065
- this.shared = {};
1066
- }
978
+ }, FSStream: class {
979
+ shared = {};
1067
980
  get object() {
1068
981
  return this.node;
1069
982
  }
@@ -1092,21 +1005,22 @@ var require_grida_canvas_wasm = __commonJS({
1092
1005
  this.shared.position = val;
1093
1006
  }
1094
1007
  }, FSNode: class {
1008
+ node_ops = {};
1009
+ stream_ops = {};
1010
+ readMode = 292 | 73;
1011
+ writeMode = 146;
1012
+ mounted = null;
1095
1013
  constructor(parent, name, mode, rdev) {
1096
1014
  if (!parent) {
1097
1015
  parent = this;
1098
1016
  }
1099
1017
  this.parent = parent;
1100
1018
  this.mount = parent.mount;
1101
- this.mounted = null;
1102
1019
  this.id = FS.nextInode++;
1103
1020
  this.name = name;
1104
1021
  this.mode = mode;
1105
- this.node_ops = {};
1106
- this.stream_ops = {};
1107
1022
  this.rdev = rdev;
1108
- this.readMode = 292 | 73;
1109
- this.writeMode = 146;
1023
+ this.atime = this.mtime = this.ctime = Date.now();
1110
1024
  }
1111
1025
  get read() {
1112
1026
  return (this.mode & this.readMode) === this.readMode;
@@ -1127,42 +1041,62 @@ var require_grida_canvas_wasm = __commonJS({
1127
1041
  return FS.isChrdev(this.mode);
1128
1042
  }
1129
1043
  }, lookupPath(path, opts = {}) {
1130
- path = PATH_FS.resolve(path);
1131
- if (!path) return { path: "", node: null };
1132
- var defaults = { follow_mount: true, recurse_count: 0 };
1133
- opts = Object.assign(defaults, opts);
1134
- if (opts.recurse_count > 8) {
1135
- throw new FS.ErrnoError(32);
1136
- }
1137
- var parts = path.split("/").filter((p) => !!p);
1138
- var current = FS.root;
1139
- var current_path = "/";
1140
- for (var i2 = 0; i2 < parts.length; i2++) {
1141
- var islast = i2 === parts.length - 1;
1142
- if (islast && opts.parent) {
1143
- break;
1144
- }
1145
- current = FS.lookupNode(current, parts[i2]);
1146
- current_path = PATH.join2(current_path, parts[i2]);
1147
- if (FS.isMountpoint(current)) {
1148
- if (!islast || islast && opts.follow_mount) {
1044
+ if (!path) {
1045
+ throw new FS.ErrnoError(44);
1046
+ }
1047
+ opts.follow_mount ??= true;
1048
+ if (!PATH.isAbs(path)) {
1049
+ path = FS.cwd() + "/" + path;
1050
+ }
1051
+ linkloop: for (var nlinks = 0; nlinks < 40; nlinks++) {
1052
+ var parts = path.split("/").filter((p) => !!p);
1053
+ var current = FS.root;
1054
+ var current_path = "/";
1055
+ for (var i2 = 0; i2 < parts.length; i2++) {
1056
+ var islast = i2 === parts.length - 1;
1057
+ if (islast && opts.parent) {
1058
+ break;
1059
+ }
1060
+ if (parts[i2] === ".") {
1061
+ continue;
1062
+ }
1063
+ if (parts[i2] === "..") {
1064
+ current_path = PATH.dirname(current_path);
1065
+ if (FS.isRoot(current)) {
1066
+ path = current_path + "/" + parts.slice(i2 + 1).join("/");
1067
+ continue linkloop;
1068
+ } else {
1069
+ current = current.parent;
1070
+ }
1071
+ continue;
1072
+ }
1073
+ current_path = PATH.join2(current_path, parts[i2]);
1074
+ try {
1075
+ current = FS.lookupNode(current, parts[i2]);
1076
+ } catch (e) {
1077
+ if ((e == null ? void 0 : e.errno) === 44 && islast && opts.noent_okay) {
1078
+ return { path: current_path };
1079
+ }
1080
+ throw e;
1081
+ }
1082
+ if (FS.isMountpoint(current) && (!islast || opts.follow_mount)) {
1149
1083
  current = current.mounted.root;
1150
1084
  }
1151
- }
1152
- if (!islast || opts.follow) {
1153
- var count = 0;
1154
- while (FS.isLink(current.mode)) {
1155
- var link = FS.readlink(current_path);
1156
- current_path = PATH_FS.resolve(PATH.dirname(current_path), link);
1157
- var lookup = FS.lookupPath(current_path, { recurse_count: opts.recurse_count + 1 });
1158
- current = lookup.node;
1159
- if (count++ > 40) {
1160
- throw new FS.ErrnoError(32);
1085
+ if (FS.isLink(current.mode) && (!islast || opts.follow)) {
1086
+ if (!current.node_ops.readlink) {
1087
+ throw new FS.ErrnoError(52);
1161
1088
  }
1089
+ var link = current.node_ops.readlink(current);
1090
+ if (!PATH.isAbs(link)) {
1091
+ link = PATH.dirname(current_path) + "/" + link;
1092
+ }
1093
+ path = link + "/" + parts.slice(i2 + 1).join("/");
1094
+ continue linkloop;
1162
1095
  }
1163
1096
  }
1097
+ return { path: current_path, node: current };
1164
1098
  }
1165
- return { path: current_path, node: current };
1099
+ throw new FS.ErrnoError(32);
1166
1100
  }, getPath(node) {
1167
1101
  var path;
1168
1102
  while (true) {
@@ -1260,6 +1194,9 @@ var require_grida_canvas_wasm = __commonJS({
1260
1194
  if (!dir.node_ops.lookup) return 2;
1261
1195
  return 0;
1262
1196
  }, mayCreate(dir, name) {
1197
+ if (!FS.isDir(dir.mode)) {
1198
+ return 54;
1199
+ }
1263
1200
  try {
1264
1201
  var node = FS.lookupNode(dir, name);
1265
1202
  return 20;
@@ -1297,11 +1234,16 @@ var require_grida_canvas_wasm = __commonJS({
1297
1234
  if (FS.isLink(node.mode)) {
1298
1235
  return 32;
1299
1236
  } else if (FS.isDir(node.mode)) {
1300
- if (FS.flagsToPermissionString(flags) !== "r" || flags & 512) {
1237
+ if (FS.flagsToPermissionString(flags) !== "r" || flags & (512 | 64)) {
1301
1238
  return 31;
1302
1239
  }
1303
1240
  }
1304
1241
  return FS.nodePermissions(node, FS.flagsToPermissionString(flags));
1242
+ }, checkOpExists(op, err2) {
1243
+ if (!op) {
1244
+ throw new FS.ErrnoError(err2);
1245
+ }
1246
+ return op;
1305
1247
  }, MAX_OPEN_FDS: 4096, nextfd() {
1306
1248
  for (var fd = 0; fd <= FS.MAX_OPEN_FDS; fd++) {
1307
1249
  if (!FS.streams[fd]) {
@@ -1330,6 +1272,12 @@ var require_grida_canvas_wasm = __commonJS({
1330
1272
  var stream = FS.createStream(origStream, fd);
1331
1273
  (_b = (_a2 = stream.stream_ops) == null ? void 0 : _a2.dup) == null ? void 0 : _b.call(_a2, stream);
1332
1274
  return stream;
1275
+ }, doSetAttr(stream, node, attr) {
1276
+ var setattr = stream == null ? void 0 : stream.stream_ops.setattr;
1277
+ var arg = setattr ? stream : node;
1278
+ setattr ??= node.node_ops.setattr;
1279
+ FS.checkOpExists(setattr, 63);
1280
+ setattr(arg, attr);
1333
1281
  }, chrdev_stream_ops: { open(stream) {
1334
1282
  var _a2, _b;
1335
1283
  var device = FS.getDevice(stream.node.rdev);
@@ -1438,9 +1386,12 @@ var require_grida_canvas_wasm = __commonJS({
1438
1386
  var lookup = FS.lookupPath(path, { parent: true });
1439
1387
  var parent = lookup.node;
1440
1388
  var name = PATH.basename(path);
1441
- if (!name || name === "." || name === "..") {
1389
+ if (!name) {
1442
1390
  throw new FS.ErrnoError(28);
1443
1391
  }
1392
+ if (name === "." || name === "..") {
1393
+ throw new FS.ErrnoError(20);
1394
+ }
1444
1395
  var errCode = FS.mayCreate(parent, name);
1445
1396
  if (errCode) {
1446
1397
  throw new FS.ErrnoError(errCode);
@@ -1449,22 +1400,31 @@ var require_grida_canvas_wasm = __commonJS({
1449
1400
  throw new FS.ErrnoError(63);
1450
1401
  }
1451
1402
  return parent.node_ops.mknod(parent, name, mode, dev);
1452
- }, create(path, mode) {
1453
- mode = mode !== void 0 ? mode : 438;
1403
+ }, statfs(path) {
1404
+ return FS.statfsNode(FS.lookupPath(path, { follow: true }).node);
1405
+ }, statfsStream(stream) {
1406
+ return FS.statfsNode(stream.node);
1407
+ }, statfsNode(node) {
1408
+ var rtn = { bsize: 4096, frsize: 4096, blocks: 1e6, bfree: 5e5, bavail: 5e5, files: FS.nextInode, ffree: FS.nextInode - 1, fsid: 42, flags: 2, namelen: 255 };
1409
+ if (node.node_ops.statfs) {
1410
+ Object.assign(rtn, node.node_ops.statfs(node.mount.opts.root));
1411
+ }
1412
+ return rtn;
1413
+ }, create(path, mode = 438) {
1454
1414
  mode &= 4095;
1455
1415
  mode |= 32768;
1456
1416
  return FS.mknod(path, mode, 0);
1457
- }, mkdir(path, mode) {
1458
- mode = mode !== void 0 ? mode : 511;
1417
+ }, mkdir(path, mode = 511) {
1459
1418
  mode &= 511 | 512;
1460
1419
  mode |= 16384;
1461
1420
  return FS.mknod(path, mode, 0);
1462
1421
  }, mkdirTree(path, mode) {
1463
1422
  var dirs = path.split("/");
1464
1423
  var d = "";
1465
- for (var i2 = 0; i2 < dirs.length; ++i2) {
1466
- if (!dirs[i2]) continue;
1467
- d += "/" + dirs[i2];
1424
+ for (var dir of dirs) {
1425
+ if (!dir) continue;
1426
+ if (d || PATH.isAbs(path)) d += "/";
1427
+ d += dir;
1468
1428
  try {
1469
1429
  FS.mkdir(d, mode);
1470
1430
  } catch (e) {
@@ -1551,6 +1511,7 @@ var require_grida_canvas_wasm = __commonJS({
1551
1511
  FS.hashRemoveNode(old_node);
1552
1512
  try {
1553
1513
  old_dir.node_ops.rename(old_node, new_dir, new_name);
1514
+ old_node.parent = new_dir;
1554
1515
  } catch (e) {
1555
1516
  throw e;
1556
1517
  } finally {
@@ -1576,10 +1537,8 @@ var require_grida_canvas_wasm = __commonJS({
1576
1537
  }, readdir(path) {
1577
1538
  var lookup = FS.lookupPath(path, { follow: true });
1578
1539
  var node = lookup.node;
1579
- if (!node.node_ops.readdir) {
1580
- throw new FS.ErrnoError(54);
1581
- }
1582
- return node.node_ops.readdir(node);
1540
+ var readdir = FS.checkOpExists(node.node_ops.readdir, 54);
1541
+ return readdir(node);
1583
1542
  }, unlink(path) {
1584
1543
  var lookup = FS.lookupPath(path, { parent: true });
1585
1544
  var parent = lookup.node;
@@ -1609,19 +1568,24 @@ var require_grida_canvas_wasm = __commonJS({
1609
1568
  if (!link.node_ops.readlink) {
1610
1569
  throw new FS.ErrnoError(28);
1611
1570
  }
1612
- return PATH_FS.resolve(FS.getPath(link.parent), link.node_ops.readlink(link));
1571
+ return link.node_ops.readlink(link);
1613
1572
  }, stat(path, dontFollow) {
1614
1573
  var lookup = FS.lookupPath(path, { follow: !dontFollow });
1615
1574
  var node = lookup.node;
1616
- if (!node) {
1617
- throw new FS.ErrnoError(44);
1618
- }
1619
- if (!node.node_ops.getattr) {
1620
- throw new FS.ErrnoError(63);
1621
- }
1622
- return node.node_ops.getattr(node);
1575
+ var getattr = FS.checkOpExists(node.node_ops.getattr, 63);
1576
+ return getattr(node);
1577
+ }, fstat(fd) {
1578
+ var stream = FS.getStreamChecked(fd);
1579
+ var node = stream.node;
1580
+ var getattr = stream.stream_ops.getattr;
1581
+ var arg = getattr ? stream : node;
1582
+ getattr ??= node.node_ops.getattr;
1583
+ FS.checkOpExists(getattr, 63);
1584
+ return getattr(arg);
1623
1585
  }, lstat(path) {
1624
1586
  return FS.stat(path, true);
1587
+ }, doChmod(stream, node, mode, dontFollow) {
1588
+ FS.doSetAttr(stream, node, { mode: mode & 4095 | node.mode & ~4095, ctime: Date.now(), dontFollow });
1625
1589
  }, chmod(path, mode, dontFollow) {
1626
1590
  var node;
1627
1591
  if (typeof path == "string") {
@@ -1630,15 +1594,14 @@ var require_grida_canvas_wasm = __commonJS({
1630
1594
  } else {
1631
1595
  node = path;
1632
1596
  }
1633
- if (!node.node_ops.setattr) {
1634
- throw new FS.ErrnoError(63);
1635
- }
1636
- node.node_ops.setattr(node, { mode: mode & 4095 | node.mode & ~4095, timestamp: Date.now() });
1597
+ FS.doChmod(null, node, mode, dontFollow);
1637
1598
  }, lchmod(path, mode) {
1638
1599
  FS.chmod(path, mode, true);
1639
1600
  }, fchmod(fd, mode) {
1640
1601
  var stream = FS.getStreamChecked(fd);
1641
- FS.chmod(stream.node, mode);
1602
+ FS.doChmod(stream, stream.node, mode, false);
1603
+ }, doChown(stream, node, dontFollow) {
1604
+ FS.doSetAttr(stream, node, { timestamp: Date.now(), dontFollow });
1642
1605
  }, chown(path, uid, gid, dontFollow) {
1643
1606
  var node;
1644
1607
  if (typeof path == "string") {
@@ -1647,15 +1610,24 @@ var require_grida_canvas_wasm = __commonJS({
1647
1610
  } else {
1648
1611
  node = path;
1649
1612
  }
1650
- if (!node.node_ops.setattr) {
1651
- throw new FS.ErrnoError(63);
1652
- }
1653
- node.node_ops.setattr(node, { timestamp: Date.now() });
1613
+ FS.doChown(null, node, dontFollow);
1654
1614
  }, lchown(path, uid, gid) {
1655
1615
  FS.chown(path, uid, gid, true);
1656
1616
  }, fchown(fd, uid, gid) {
1657
1617
  var stream = FS.getStreamChecked(fd);
1658
- FS.chown(stream.node, uid, gid);
1618
+ FS.doChown(stream, stream.node, false);
1619
+ }, doTruncate(stream, node, len) {
1620
+ if (FS.isDir(node.mode)) {
1621
+ throw new FS.ErrnoError(31);
1622
+ }
1623
+ if (!FS.isFile(node.mode)) {
1624
+ throw new FS.ErrnoError(28);
1625
+ }
1626
+ var errCode = FS.nodePermissions(node, "w");
1627
+ if (errCode) {
1628
+ throw new FS.ErrnoError(errCode);
1629
+ }
1630
+ FS.doSetAttr(stream, node, { size: len, timestamp: Date.now() });
1659
1631
  }, truncate(path, len) {
1660
1632
  if (len < 0) {
1661
1633
  throw new FS.ErrnoError(28);
@@ -1667,51 +1639,37 @@ var require_grida_canvas_wasm = __commonJS({
1667
1639
  } else {
1668
1640
  node = path;
1669
1641
  }
1670
- if (!node.node_ops.setattr) {
1671
- throw new FS.ErrnoError(63);
1672
- }
1673
- if (FS.isDir(node.mode)) {
1674
- throw new FS.ErrnoError(31);
1675
- }
1676
- if (!FS.isFile(node.mode)) {
1677
- throw new FS.ErrnoError(28);
1678
- }
1679
- var errCode = FS.nodePermissions(node, "w");
1680
- if (errCode) {
1681
- throw new FS.ErrnoError(errCode);
1682
- }
1683
- node.node_ops.setattr(node, { size: len, timestamp: Date.now() });
1642
+ FS.doTruncate(null, node, len);
1684
1643
  }, ftruncate(fd, len) {
1685
1644
  var stream = FS.getStreamChecked(fd);
1686
- if ((stream.flags & 2097155) === 0) {
1645
+ if (len < 0 || (stream.flags & 2097155) === 0) {
1687
1646
  throw new FS.ErrnoError(28);
1688
1647
  }
1689
- FS.truncate(stream.node, len);
1648
+ FS.doTruncate(stream, stream.node, len);
1690
1649
  }, utime(path, atime, mtime) {
1691
1650
  var lookup = FS.lookupPath(path, { follow: true });
1692
1651
  var node = lookup.node;
1693
- node.node_ops.setattr(node, { timestamp: Math.max(atime, mtime) });
1694
- }, open(path, flags, mode) {
1652
+ var setattr = FS.checkOpExists(node.node_ops.setattr, 63);
1653
+ setattr(node, { atime, mtime });
1654
+ }, open(path, flags, mode = 438) {
1695
1655
  if (path === "") {
1696
1656
  throw new FS.ErrnoError(44);
1697
1657
  }
1698
1658
  flags = typeof flags == "string" ? FS_modeStringToFlags(flags) : flags;
1699
- mode = typeof mode == "undefined" ? 438 : mode;
1700
1659
  if (flags & 64) {
1701
1660
  mode = mode & 4095 | 32768;
1702
1661
  } else {
1703
1662
  mode = 0;
1704
1663
  }
1705
1664
  var node;
1665
+ var isDirPath;
1706
1666
  if (typeof path == "object") {
1707
1667
  node = path;
1708
1668
  } else {
1709
- path = PATH.normalize(path);
1710
- try {
1711
- var lookup = FS.lookupPath(path, { follow: !(flags & 131072) });
1712
- node = lookup.node;
1713
- } catch (e) {
1714
- }
1669
+ isDirPath = path.endsWith("/");
1670
+ var lookup = FS.lookupPath(path, { follow: !(flags & 131072), noent_okay: true });
1671
+ node = lookup.node;
1672
+ path = lookup.path;
1715
1673
  }
1716
1674
  var created = false;
1717
1675
  if (flags & 64) {
@@ -1719,8 +1677,10 @@ var require_grida_canvas_wasm = __commonJS({
1719
1677
  if (flags & 128) {
1720
1678
  throw new FS.ErrnoError(20);
1721
1679
  }
1680
+ } else if (isDirPath) {
1681
+ throw new FS.ErrnoError(31);
1722
1682
  } else {
1723
- node = FS.mknod(path, mode, 0);
1683
+ node = FS.mknod(path, mode | 511, 0);
1724
1684
  created = true;
1725
1685
  }
1726
1686
  }
@@ -1747,8 +1707,10 @@ var require_grida_canvas_wasm = __commonJS({
1747
1707
  if (stream.stream_ops.open) {
1748
1708
  stream.stream_ops.open(stream);
1749
1709
  }
1710
+ if (created) {
1711
+ FS.chmod(node, mode & 511);
1712
+ }
1750
1713
  if (Module["logReadFiles"] && !(flags & 1)) {
1751
- if (!FS.readFiles) FS.readFiles = {};
1752
1714
  if (!(path in FS.readFiles)) {
1753
1715
  FS.readFiles[path] = 1;
1754
1716
  }
@@ -1837,23 +1799,6 @@ var require_grida_canvas_wasm = __commonJS({
1837
1799
  var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn);
1838
1800
  if (!seeking) stream.position += bytesWritten;
1839
1801
  return bytesWritten;
1840
- }, allocate(stream, offset, length) {
1841
- if (FS.isClosed(stream)) {
1842
- throw new FS.ErrnoError(8);
1843
- }
1844
- if (offset < 0 || length <= 0) {
1845
- throw new FS.ErrnoError(28);
1846
- }
1847
- if ((stream.flags & 2097155) === 0) {
1848
- throw new FS.ErrnoError(8);
1849
- }
1850
- if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) {
1851
- throw new FS.ErrnoError(43);
1852
- }
1853
- if (!stream.stream_ops.allocate) {
1854
- throw new FS.ErrnoError(138);
1855
- }
1856
- stream.stream_ops.allocate(stream, offset, length);
1857
1802
  }, mmap(stream, length, position, prot, flags) {
1858
1803
  if ((prot & 2) !== 0 && (flags & 2) === 0 && (stream.flags & 2097155) !== 2) {
1859
1804
  throw new FS.ErrnoError(2);
@@ -1864,6 +1809,9 @@ var require_grida_canvas_wasm = __commonJS({
1864
1809
  if (!stream.stream_ops.mmap) {
1865
1810
  throw new FS.ErrnoError(43);
1866
1811
  }
1812
+ if (!length) {
1813
+ throw new FS.ErrnoError(28);
1814
+ }
1867
1815
  return stream.stream_ops.mmap(stream, length, position, prot, flags);
1868
1816
  }, msync(stream, buffer, offset, length, mmapFlags) {
1869
1817
  if (!stream.stream_ops.msync) {
@@ -1888,7 +1836,7 @@ var require_grida_canvas_wasm = __commonJS({
1888
1836
  var buf = new Uint8Array(length);
1889
1837
  FS.read(stream, buf, 0, length, 0);
1890
1838
  if (opts.encoding === "utf8") {
1891
- ret = UTF8ArrayToString(buf, 0);
1839
+ ret = UTF8ArrayToString(buf);
1892
1840
  } else if (opts.encoding === "binary") {
1893
1841
  ret = buf;
1894
1842
  }
@@ -1926,7 +1874,7 @@ var require_grida_canvas_wasm = __commonJS({
1926
1874
  FS.mkdir("/home/web_user");
1927
1875
  }, createDefaultDevices() {
1928
1876
  FS.mkdir("/dev");
1929
- FS.registerDevice(FS.makedev(1, 3), { read: () => 0, write: (stream, buffer, offset, length, pos) => length });
1877
+ FS.registerDevice(FS.makedev(1, 3), { read: () => 0, write: (stream, buffer, offset, length, pos) => length, llseek: () => 0 });
1930
1878
  FS.mkdev("/dev/null", FS.makedev(1, 3));
1931
1879
  TTY.register(FS.makedev(5, 0), TTY.default_tty_ops);
1932
1880
  TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops);
@@ -1935,7 +1883,8 @@ var require_grida_canvas_wasm = __commonJS({
1935
1883
  var randomBuffer = new Uint8Array(1024), randomLeft = 0;
1936
1884
  var randomByte = () => {
1937
1885
  if (randomLeft === 0) {
1938
- randomLeft = randomFill(randomBuffer).byteLength;
1886
+ randomFill(randomBuffer);
1887
+ randomLeft = randomBuffer.byteLength;
1939
1888
  }
1940
1889
  return randomBuffer[--randomLeft];
1941
1890
  };
@@ -1948,29 +1897,32 @@ var require_grida_canvas_wasm = __commonJS({
1948
1897
  var proc_self = FS.mkdir("/proc/self");
1949
1898
  FS.mkdir("/proc/self/fd");
1950
1899
  FS.mount({ mount() {
1951
- var node = FS.createNode(proc_self, "fd", 16384 | 511, 73);
1900
+ var node = FS.createNode(proc_self, "fd", 16895, 73);
1901
+ node.stream_ops = { llseek: MEMFS.stream_ops.llseek };
1952
1902
  node.node_ops = { lookup(parent, name) {
1953
1903
  var fd = +name;
1954
1904
  var stream = FS.getStreamChecked(fd);
1955
- var ret = { parent: null, mount: { mountpoint: "fake" }, node_ops: { readlink: () => stream.path } };
1905
+ var ret = { parent: null, mount: { mountpoint: "fake" }, node_ops: { readlink: () => stream.path }, id: fd + 1 };
1956
1906
  ret.parent = ret;
1957
1907
  return ret;
1908
+ }, readdir() {
1909
+ return Array.from(FS.streams.entries()).filter(([k, v]) => v).map(([k, v]) => k.toString());
1958
1910
  } };
1959
1911
  return node;
1960
1912
  } }, {}, "/proc/self/fd");
1961
- }, createStandardStreams() {
1962
- if (Module["stdin"]) {
1963
- FS.createDevice("/dev", "stdin", Module["stdin"]);
1913
+ }, createStandardStreams(input, output, error) {
1914
+ if (input) {
1915
+ FS.createDevice("/dev", "stdin", input);
1964
1916
  } else {
1965
1917
  FS.symlink("/dev/tty", "/dev/stdin");
1966
1918
  }
1967
- if (Module["stdout"]) {
1968
- FS.createDevice("/dev", "stdout", null, Module["stdout"]);
1919
+ if (output) {
1920
+ FS.createDevice("/dev", "stdout", null, output);
1969
1921
  } else {
1970
1922
  FS.symlink("/dev/tty", "/dev/stdout");
1971
1923
  }
1972
- if (Module["stderr"]) {
1973
- FS.createDevice("/dev", "stderr", null, Module["stderr"]);
1924
+ if (error) {
1925
+ FS.createDevice("/dev", "stderr", null, error);
1974
1926
  } else {
1975
1927
  FS.symlink("/dev/tty1", "/dev/stderr");
1976
1928
  }
@@ -1978,30 +1930,24 @@ var require_grida_canvas_wasm = __commonJS({
1978
1930
  var stdout = FS.open("/dev/stdout", 1);
1979
1931
  var stderr = FS.open("/dev/stderr", 1);
1980
1932
  }, staticInit() {
1981
- [44].forEach((code) => {
1982
- FS.genericErrors[code] = new FS.ErrnoError(code);
1983
- FS.genericErrors[code].stack = "<generic error, no stack>";
1984
- });
1985
1933
  FS.nameTable = new Array(4096);
1986
1934
  FS.mount(MEMFS, {}, "/");
1987
1935
  FS.createDefaultDirectories();
1988
1936
  FS.createDefaultDevices();
1989
1937
  FS.createSpecialDirectories();
1990
- FS.filesystems = { "MEMFS": MEMFS };
1938
+ FS.filesystems = { MEMFS };
1991
1939
  }, init(input, output, error) {
1992
- FS.init.initialized = true;
1993
- Module["stdin"] = input || Module["stdin"];
1994
- Module["stdout"] = output || Module["stdout"];
1995
- Module["stderr"] = error || Module["stderr"];
1996
- FS.createStandardStreams();
1940
+ FS.initialized = true;
1941
+ input ??= Module["stdin"];
1942
+ output ??= Module["stdout"];
1943
+ error ??= Module["stderr"];
1944
+ FS.createStandardStreams(input, output, error);
1997
1945
  }, quit() {
1998
- FS.init.initialized = false;
1999
- for (var i2 = 0; i2 < FS.streams.length; i2++) {
2000
- var stream = FS.streams[i2];
2001
- if (!stream) {
2002
- continue;
1946
+ FS.initialized = false;
1947
+ for (var stream of FS.streams) {
1948
+ if (stream) {
1949
+ FS.close(stream);
2003
1950
  }
2004
- FS.close(stream);
2005
1951
  }
2006
1952
  }, findObject(path, dontResolveLastLink) {
2007
1953
  var ret = FS.analyzePath(path, dontResolveLastLink);
@@ -2042,6 +1988,7 @@ var require_grida_canvas_wasm = __commonJS({
2042
1988
  try {
2043
1989
  FS.mkdir(current);
2044
1990
  } catch (e) {
1991
+ if (e.errno != 20) throw e;
2045
1992
  }
2046
1993
  parent = current;
2047
1994
  }
@@ -2073,7 +2020,7 @@ var require_grida_canvas_wasm = __commonJS({
2073
2020
  }, createDevice(parent, name, input, output) {
2074
2021
  var path = PATH.join2(typeof parent == "string" ? parent : FS.getPath(parent), name);
2075
2022
  var mode = FS_getMode(!!input, !!output);
2076
- if (!FS.createDevice.major) FS.createDevice.major = 64;
2023
+ FS.createDevice.major ??= 64;
2077
2024
  var dev = FS.makedev(FS.createDevice.major++, 0);
2078
2025
  FS.registerDevice(dev, { open(stream) {
2079
2026
  stream.seekable = false;
@@ -2099,7 +2046,7 @@ var require_grida_canvas_wasm = __commonJS({
2099
2046
  buffer[offset + i2] = result;
2100
2047
  }
2101
2048
  if (bytesRead) {
2102
- stream.node.timestamp = Date.now();
2049
+ stream.node.atime = Date.now();
2103
2050
  }
2104
2051
  return bytesRead;
2105
2052
  }, write(stream, buffer, offset, length, pos) {
@@ -2111,7 +2058,7 @@ var require_grida_canvas_wasm = __commonJS({
2111
2058
  }
2112
2059
  }
2113
2060
  if (length) {
2114
- stream.node.timestamp = Date.now();
2061
+ stream.node.mtime = stream.node.ctime = Date.now();
2115
2062
  }
2116
2063
  return i2;
2117
2064
  } });
@@ -2120,22 +2067,18 @@ var require_grida_canvas_wasm = __commonJS({
2120
2067
  if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true;
2121
2068
  if (typeof XMLHttpRequest != "undefined") {
2122
2069
  throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");
2123
- } else if (read_) {
2070
+ } else {
2124
2071
  try {
2125
- obj.contents = intArrayFromString(read_(obj.url), true);
2072
+ obj.contents = readBinary(obj.url);
2126
2073
  obj.usedBytes = obj.contents.length;
2127
2074
  } catch (e) {
2128
2075
  throw new FS.ErrnoError(29);
2129
2076
  }
2130
- } else {
2131
- throw new Error("Cannot load without read() or XMLHttpRequest.");
2132
2077
  }
2133
2078
  }, createLazyFile(parent, name, url, canRead, canWrite) {
2134
2079
  class LazyUint8Array {
2135
- constructor() {
2136
- this.lengthKnown = false;
2137
- this.chunks = [];
2138
- }
2080
+ lengthKnown = false;
2081
+ chunks = [];
2139
2082
  get(idx) {
2140
2083
  if (idx > this.length - 1 || idx < 0) {
2141
2084
  return void 0;
@@ -2284,29 +2227,39 @@ var require_grida_canvas_wasm = __commonJS({
2284
2227
  }
2285
2228
  return dir;
2286
2229
  }
2287
- return PATH.join2(dir, path);
2288
- }, doStat(func, path, buf) {
2289
- var stat = func(path);
2230
+ return dir + "/" + path;
2231
+ }, writeStat(buf, stat) {
2290
2232
  HEAP32[buf >> 2] = stat.dev;
2291
2233
  HEAP32[buf + 4 >> 2] = stat.mode;
2292
2234
  HEAPU32[buf + 8 >> 2] = stat.nlink;
2293
2235
  HEAP32[buf + 12 >> 2] = stat.uid;
2294
2236
  HEAP32[buf + 16 >> 2] = stat.gid;
2295
2237
  HEAP32[buf + 20 >> 2] = stat.rdev;
2296
- tempI64 = [stat.size >>> 0, (tempDouble = stat.size, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[buf + 24 >> 2] = tempI64[0], HEAP32[buf + 28 >> 2] = tempI64[1];
2238
+ HEAP64[buf + 24 >> 3] = BigInt(stat.size);
2297
2239
  HEAP32[buf + 32 >> 2] = 4096;
2298
2240
  HEAP32[buf + 36 >> 2] = stat.blocks;
2299
2241
  var atime = stat.atime.getTime();
2300
2242
  var mtime = stat.mtime.getTime();
2301
2243
  var ctime = stat.ctime.getTime();
2302
- tempI64 = [Math.floor(atime / 1e3) >>> 0, (tempDouble = Math.floor(atime / 1e3), +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[buf + 40 >> 2] = tempI64[0], HEAP32[buf + 44 >> 2] = tempI64[1];
2303
- HEAPU32[buf + 48 >> 2] = atime % 1e3 * 1e3;
2304
- tempI64 = [Math.floor(mtime / 1e3) >>> 0, (tempDouble = Math.floor(mtime / 1e3), +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[buf + 56 >> 2] = tempI64[0], HEAP32[buf + 60 >> 2] = tempI64[1];
2305
- HEAPU32[buf + 64 >> 2] = mtime % 1e3 * 1e3;
2306
- tempI64 = [Math.floor(ctime / 1e3) >>> 0, (tempDouble = Math.floor(ctime / 1e3), +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[buf + 72 >> 2] = tempI64[0], HEAP32[buf + 76 >> 2] = tempI64[1];
2307
- HEAPU32[buf + 80 >> 2] = ctime % 1e3 * 1e3;
2308
- tempI64 = [stat.ino >>> 0, (tempDouble = stat.ino, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[buf + 88 >> 2] = tempI64[0], HEAP32[buf + 92 >> 2] = tempI64[1];
2244
+ HEAP64[buf + 40 >> 3] = BigInt(Math.floor(atime / 1e3));
2245
+ HEAPU32[buf + 48 >> 2] = atime % 1e3 * 1e3 * 1e3;
2246
+ HEAP64[buf + 56 >> 3] = BigInt(Math.floor(mtime / 1e3));
2247
+ HEAPU32[buf + 64 >> 2] = mtime % 1e3 * 1e3 * 1e3;
2248
+ HEAP64[buf + 72 >> 3] = BigInt(Math.floor(ctime / 1e3));
2249
+ HEAPU32[buf + 80 >> 2] = ctime % 1e3 * 1e3 * 1e3;
2250
+ HEAP64[buf + 88 >> 3] = BigInt(stat.ino);
2309
2251
  return 0;
2252
+ }, writeStatFs(buf, stats) {
2253
+ HEAP32[buf + 4 >> 2] = stats.bsize;
2254
+ HEAP32[buf + 40 >> 2] = stats.bsize;
2255
+ HEAP32[buf + 8 >> 2] = stats.blocks;
2256
+ HEAP32[buf + 12 >> 2] = stats.bfree;
2257
+ HEAP32[buf + 16 >> 2] = stats.bavail;
2258
+ HEAP32[buf + 20 >> 2] = stats.files;
2259
+ HEAP32[buf + 24 >> 2] = stats.ffree;
2260
+ HEAP32[buf + 28 >> 2] = stats.fsid;
2261
+ HEAP32[buf + 44 >> 2] = stats.flags;
2262
+ HEAP32[buf + 36 >> 2] = stats.namelen;
2310
2263
  }, doMsync(addr, stream, len, flags, offset) {
2311
2264
  if (!FS.isFile(stream.node.mode)) {
2312
2265
  throw new FS.ErrnoError(43);
@@ -2368,8 +2321,7 @@ var require_grida_canvas_wasm = __commonJS({
2368
2321
  }
2369
2322
  function ___syscall_fstat64(fd, buf) {
2370
2323
  try {
2371
- var stream = SYSCALLS.getStreamFromFD(fd);
2372
- return SYSCALLS.doStat(FS.stat, stream.path, buf);
2324
+ return SYSCALLS.writeStat(buf, FS.fstat(fd));
2373
2325
  } catch (e) {
2374
2326
  if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
2375
2327
  return -e.errno;
@@ -2481,7 +2433,7 @@ var require_grida_canvas_wasm = __commonJS({
2481
2433
  function ___syscall_lstat64(path, buf) {
2482
2434
  try {
2483
2435
  path = SYSCALLS.getStr(path);
2484
- return SYSCALLS.doStat(FS.lstat, path, buf);
2436
+ return SYSCALLS.writeStat(buf, FS.lstat(path));
2485
2437
  } catch (e) {
2486
2438
  if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
2487
2439
  return -e.errno;
@@ -2494,7 +2446,7 @@ var require_grida_canvas_wasm = __commonJS({
2494
2446
  var allowEmpty = flags & 4096;
2495
2447
  flags = flags & ~6400;
2496
2448
  path = SYSCALLS.calculateAt(dirfd, path, allowEmpty);
2497
- return SYSCALLS.doStat(nofollow ? FS.lstat : FS.stat, path, buf);
2449
+ return SYSCALLS.writeStat(buf, nofollow ? FS.lstat(path) : FS.stat(path));
2498
2450
  } catch (e) {
2499
2451
  if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
2500
2452
  return -e.errno;
@@ -2515,24 +2467,21 @@ var require_grida_canvas_wasm = __commonJS({
2515
2467
  function ___syscall_stat64(path, buf) {
2516
2468
  try {
2517
2469
  path = SYSCALLS.getStr(path);
2518
- return SYSCALLS.doStat(FS.stat, path, buf);
2470
+ return SYSCALLS.writeStat(buf, FS.stat(path));
2519
2471
  } catch (e) {
2520
2472
  if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
2521
2473
  return -e.errno;
2522
2474
  }
2523
2475
  }
2524
- var __abort_js = () => {
2525
- abort("");
2526
- };
2527
- var nowIsMonotonic = 1;
2528
- var __emscripten_get_now_is_monotonic = () => nowIsMonotonic;
2529
- var __emscripten_memcpy_js = (dest, src, num) => HEAPU8.copyWithin(dest, src, src + num);
2476
+ var __abort_js = () => abort("");
2530
2477
  var __emscripten_throw_longjmp = () => {
2531
2478
  throw Infinity;
2532
2479
  };
2533
- var convertI32PairToI53Checked = (lo, hi) => hi + 2097152 >>> 0 < 4194305 - !!lo ? (lo >>> 0) + hi * 4294967296 : NaN;
2534
- function __gmtime_js(time_low, time_high, tmPtr) {
2535
- var time = convertI32PairToI53Checked(time_low, time_high);
2480
+ var INT53_MAX = 9007199254740992;
2481
+ var INT53_MIN = -9007199254740992;
2482
+ var bigintToI53Checked = (num) => num < INT53_MIN || num > INT53_MAX ? NaN : Number(num);
2483
+ function __gmtime_js(time, tmPtr) {
2484
+ time = bigintToI53Checked(time);
2536
2485
  var date = new Date(time * 1e3);
2537
2486
  HEAP32[tmPtr >> 2] = date.getUTCSeconds();
2538
2487
  HEAP32[tmPtr + 4 >> 2] = date.getUTCMinutes();
@@ -2545,8 +2494,8 @@ var require_grida_canvas_wasm = __commonJS({
2545
2494
  var yday = (date.getTime() - start) / (1e3 * 60 * 60 * 24) | 0;
2546
2495
  HEAP32[tmPtr + 28 >> 2] = yday;
2547
2496
  }
2548
- function __mmap_js(len, prot, flags, fd, offset_low, offset_high, allocated, addr) {
2549
- var offset = convertI32PairToI53Checked(offset_low, offset_high);
2497
+ function __mmap_js(len, prot, flags, fd, offset, allocated, addr) {
2498
+ offset = bigintToI53Checked(offset);
2550
2499
  try {
2551
2500
  if (isNaN(offset)) return 61;
2552
2501
  var stream = SYSCALLS.getStreamFromFD(fd);
@@ -2560,8 +2509,8 @@ var require_grida_canvas_wasm = __commonJS({
2560
2509
  return -e.errno;
2561
2510
  }
2562
2511
  }
2563
- function __munmap_js(addr, len, prot, flags, fd, offset_low, offset_high) {
2564
- var offset = convertI32PairToI53Checked(offset_low, offset_high);
2512
+ function __munmap_js(addr, len, prot, flags, fd, offset) {
2513
+ offset = bigintToI53Checked(offset);
2565
2514
  try {
2566
2515
  var stream = SYSCALLS.getStreamFromFD(fd);
2567
2516
  if (prot & 2) {
@@ -2581,9 +2530,15 @@ var require_grida_canvas_wasm = __commonJS({
2581
2530
  var stdTimezoneOffset = Math.max(winterOffset, summerOffset);
2582
2531
  HEAPU32[timezone >> 2] = stdTimezoneOffset * 60;
2583
2532
  HEAP32[daylight >> 2] = Number(winterOffset != summerOffset);
2584
- var extractZone = (date) => date.toLocaleTimeString(void 0, { hour12: false, timeZoneName: "short" }).split(" ")[1];
2585
- var winterName = extractZone(winter);
2586
- var summerName = extractZone(summer);
2533
+ var extractZone = (timezoneOffset) => {
2534
+ var sign = timezoneOffset >= 0 ? "-" : "+";
2535
+ var absOffset = Math.abs(timezoneOffset);
2536
+ var hours = String(Math.floor(absOffset / 60)).padStart(2, "0");
2537
+ var minutes = String(absOffset % 60).padStart(2, "0");
2538
+ return `UTC${sign}${hours}${minutes}`;
2539
+ };
2540
+ var winterName = extractZone(winterOffset);
2541
+ var summerName = extractZone(summerOffset);
2587
2542
  if (summerOffset < winterOffset) {
2588
2543
  stringToUTF8(winterName, std_name, 17);
2589
2544
  stringToUTF8(summerName, dst_name, 17);
@@ -2592,9 +2547,28 @@ var require_grida_canvas_wasm = __commonJS({
2592
2547
  stringToUTF8(summerName, std_name, 17);
2593
2548
  }
2594
2549
  };
2550
+ var _emscripten_get_now = () => performance.now();
2595
2551
  var _emscripten_date_now = () => Date.now();
2596
- var _emscripten_get_now;
2597
- _emscripten_get_now = () => performance.now();
2552
+ var nowIsMonotonic = 1;
2553
+ var checkWasiClock = (clock_id) => clock_id >= 0 && clock_id <= 3;
2554
+ function _clock_time_get(clk_id, ignored_precision, ptime) {
2555
+ ignored_precision = bigintToI53Checked(ignored_precision);
2556
+ if (!checkWasiClock(clk_id)) {
2557
+ return 28;
2558
+ }
2559
+ var now;
2560
+ if (clk_id === 0) {
2561
+ now = _emscripten_date_now();
2562
+ } else if (nowIsMonotonic) {
2563
+ now = _emscripten_get_now();
2564
+ } else {
2565
+ return 52;
2566
+ }
2567
+ var nsec = Math.round(now * 1e3 * 1e3);
2568
+ HEAP64[ptime >> 3] = BigInt(nsec);
2569
+ return 0;
2570
+ }
2571
+ var GLctx;
2598
2572
  var webgl_enable_ANGLE_instanced_arrays = (ctx) => {
2599
2573
  var ext = ctx.getExtension("ANGLE_instanced_arrays");
2600
2574
  if (ext) {
@@ -2623,12 +2597,15 @@ var require_grida_canvas_wasm = __commonJS({
2623
2597
  };
2624
2598
  var webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance = (ctx) => !!(ctx.dibvbi = ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"));
2625
2599
  var webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance = (ctx) => !!(ctx.mdibvbi = ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"));
2600
+ var webgl_enable_EXT_polygon_offset_clamp = (ctx) => !!(ctx.extPolygonOffsetClamp = ctx.getExtension("EXT_polygon_offset_clamp"));
2601
+ var webgl_enable_EXT_clip_control = (ctx) => !!(ctx.extClipControl = ctx.getExtension("EXT_clip_control"));
2602
+ var webgl_enable_WEBGL_polygon_mode = (ctx) => !!(ctx.webglPolygonMode = ctx.getExtension("WEBGL_polygon_mode"));
2626
2603
  var webgl_enable_WEBGL_multi_draw = (ctx) => !!(ctx.multiDrawWebgl = ctx.getExtension("WEBGL_multi_draw"));
2627
2604
  var getEmscriptenSupportedExtensions = (ctx) => {
2628
- var supportedExtensions = ["ANGLE_instanced_arrays", "EXT_blend_minmax", "EXT_disjoint_timer_query", "EXT_frag_depth", "EXT_shader_texture_lod", "EXT_sRGB", "OES_element_index_uint", "OES_fbo_render_mipmap", "OES_standard_derivatives", "OES_texture_float", "OES_texture_half_float", "OES_texture_half_float_linear", "OES_vertex_array_object", "WEBGL_color_buffer_float", "WEBGL_depth_texture", "WEBGL_draw_buffers", "EXT_color_buffer_float", "EXT_conservative_depth", "EXT_disjoint_timer_query_webgl2", "EXT_texture_norm16", "NV_shader_noperspective_interpolation", "WEBGL_clip_cull_distance", "EXT_color_buffer_half_float", "EXT_depth_clamp", "EXT_float_blend", "EXT_texture_compression_bptc", "EXT_texture_compression_rgtc", "EXT_texture_filter_anisotropic", "KHR_parallel_shader_compile", "OES_texture_float_linear", "WEBGL_blend_func_extended", "WEBGL_compressed_texture_astc", "WEBGL_compressed_texture_etc", "WEBGL_compressed_texture_etc1", "WEBGL_compressed_texture_s3tc", "WEBGL_compressed_texture_s3tc_srgb", "WEBGL_debug_renderer_info", "WEBGL_debug_shaders", "WEBGL_lose_context", "WEBGL_multi_draw"];
2605
+ var supportedExtensions = ["ANGLE_instanced_arrays", "EXT_blend_minmax", "EXT_disjoint_timer_query", "EXT_frag_depth", "EXT_shader_texture_lod", "EXT_sRGB", "OES_element_index_uint", "OES_fbo_render_mipmap", "OES_standard_derivatives", "OES_texture_float", "OES_texture_half_float", "OES_texture_half_float_linear", "OES_vertex_array_object", "WEBGL_color_buffer_float", "WEBGL_depth_texture", "WEBGL_draw_buffers", "EXT_color_buffer_float", "EXT_conservative_depth", "EXT_disjoint_timer_query_webgl2", "EXT_texture_norm16", "NV_shader_noperspective_interpolation", "WEBGL_clip_cull_distance", "EXT_clip_control", "EXT_color_buffer_half_float", "EXT_depth_clamp", "EXT_float_blend", "EXT_polygon_offset_clamp", "EXT_texture_compression_bptc", "EXT_texture_compression_rgtc", "EXT_texture_filter_anisotropic", "KHR_parallel_shader_compile", "OES_texture_float_linear", "WEBGL_blend_func_extended", "WEBGL_compressed_texture_astc", "WEBGL_compressed_texture_etc", "WEBGL_compressed_texture_etc1", "WEBGL_compressed_texture_s3tc", "WEBGL_compressed_texture_s3tc_srgb", "WEBGL_debug_renderer_info", "WEBGL_debug_shaders", "WEBGL_lose_context", "WEBGL_multi_draw", "WEBGL_polygon_mode"];
2629
2606
  return (ctx.getSupportedExtensions() || []).filter((ext) => supportedExtensions.includes(ext));
2630
2607
  };
2631
- var GL = { counter: 1, buffers: [], programs: [], framebuffers: [], renderbuffers: [], textures: [], shaders: [], vaos: [], contexts: [], offscreenCanvases: {}, queries: [], samplers: [], transformFeedbacks: [], syncs: [], stringCache: {}, stringiCache: {}, unpackAlignment: 4, recordError: (errorCode) => {
2608
+ var GL = { counter: 1, buffers: [], programs: [], framebuffers: [], renderbuffers: [], textures: [], shaders: [], vaos: [], contexts: [], offscreenCanvases: {}, queries: [], samplers: [], transformFeedbacks: [], syncs: [], stringCache: {}, stringiCache: {}, unpackAlignment: 4, unpackRowLength: 0, recordError: (errorCode) => {
2632
2609
  if (!GL.lastError) {
2633
2610
  GL.lastError = errorCode;
2634
2611
  }
@@ -2683,16 +2660,17 @@ var require_grida_canvas_wasm = __commonJS({
2683
2660
  }, makeContextCurrent: (contextHandle) => {
2684
2661
  var _a2;
2685
2662
  GL.currentContext = GL.contexts[contextHandle];
2686
- Module.ctx = GLctx = (_a2 = GL.currentContext) == null ? void 0 : _a2.GLctx;
2663
+ Module["ctx"] = GLctx = (_a2 = GL.currentContext) == null ? void 0 : _a2.GLctx;
2687
2664
  return !(contextHandle && !GLctx);
2688
2665
  }, getContext: (contextHandle) => GL.contexts[contextHandle], deleteContext: (contextHandle) => {
2666
+ var _a2;
2689
2667
  if (GL.currentContext === GL.contexts[contextHandle]) {
2690
2668
  GL.currentContext = null;
2691
2669
  }
2692
2670
  if (typeof JSEvents == "object") {
2693
2671
  JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);
2694
2672
  }
2695
- if (GL.contexts[contextHandle] && GL.contexts[contextHandle].GLctx.canvas) {
2673
+ if ((_a2 = GL.contexts[contextHandle]) == null ? void 0 : _a2.GLctx.canvas) {
2696
2674
  GL.contexts[contextHandle].GLctx.canvas.GLctxObject = void 0;
2697
2675
  }
2698
2676
  GL.contexts[contextHandle] = null;
@@ -2701,6 +2679,10 @@ var require_grida_canvas_wasm = __commonJS({
2701
2679
  if (context.initExtensionsDone) return;
2702
2680
  context.initExtensionsDone = true;
2703
2681
  var GLctx2 = context.GLctx;
2682
+ webgl_enable_WEBGL_multi_draw(GLctx2);
2683
+ webgl_enable_EXT_polygon_offset_clamp(GLctx2);
2684
+ webgl_enable_EXT_clip_control(GLctx2);
2685
+ webgl_enable_WEBGL_polygon_mode(GLctx2);
2704
2686
  webgl_enable_ANGLE_instanced_arrays(GLctx2);
2705
2687
  webgl_enable_OES_vertex_array_object(GLctx2);
2706
2688
  webgl_enable_WEBGL_draw_buffers(GLctx2);
@@ -2712,7 +2694,6 @@ var require_grida_canvas_wasm = __commonJS({
2712
2694
  if (context.version < 2 || !GLctx2.disjointTimerQueryExt) {
2713
2695
  GLctx2.disjointTimerQueryExt = GLctx2.getExtension("EXT_disjoint_timer_query");
2714
2696
  }
2715
- webgl_enable_WEBGL_multi_draw(GLctx2);
2716
2697
  getEmscriptenSupportedExtensions(GLctx2).forEach((ext) => {
2717
2698
  if (!ext.includes("lose_context") && !ext.includes("debug")) {
2718
2699
  GLctx2.getExtension(ext);
@@ -2838,12 +2819,15 @@ var require_grida_canvas_wasm = __commonJS({
2838
2819
  var _emscripten_glClearDepthf = _glClearDepthf;
2839
2820
  var _glClearStencil = (x0) => GLctx.clearStencil(x0);
2840
2821
  var _emscripten_glClearStencil = _glClearStencil;
2841
- var convertI32PairToI53 = (lo, hi) => (lo >>> 0) + hi * 4294967296;
2842
- var _glClientWaitSync = (sync, flags, timeout_low, timeout_high) => {
2843
- var timeout = convertI32PairToI53(timeout_low, timeout_high);
2822
+ var _glClientWaitSync = (sync, flags, timeout) => {
2823
+ timeout = Number(timeout);
2844
2824
  return GLctx.clientWaitSync(GL.syncs[sync], flags, timeout);
2845
2825
  };
2846
2826
  var _emscripten_glClientWaitSync = _glClientWaitSync;
2827
+ var _glClipControlEXT = (origin, depth) => {
2828
+ GLctx.extClipControl["clipControlEXT"](origin, depth);
2829
+ };
2830
+ var _emscripten_glClipControlEXT = _glClipControlEXT;
2847
2831
  var _glColorMask = (red, green, blue, alpha) => {
2848
2832
  GLctx.colorMask(!!red, !!green, !!blue, !!alpha);
2849
2833
  };
@@ -2861,7 +2845,7 @@ var require_grida_canvas_wasm = __commonJS({
2861
2845
  GLctx.compressedTexImage2D(target, level, internalFormat, width, height, border, HEAPU8, data, imageSize);
2862
2846
  return;
2863
2847
  }
2864
- GLctx.compressedTexImage2D(target, level, internalFormat, width, height, border, data ? HEAPU8.subarray(data, data + imageSize) : null);
2848
+ GLctx.compressedTexImage2D(target, level, internalFormat, width, height, border, HEAPU8.subarray(data, data + imageSize));
2865
2849
  };
2866
2850
  var _emscripten_glCompressedTexImage2D = _glCompressedTexImage2D;
2867
2851
  var _glCompressedTexImage3D = (target, level, internalFormat, width, height, depth, border, imageSize, data) => {
@@ -2881,7 +2865,7 @@ var require_grida_canvas_wasm = __commonJS({
2881
2865
  GLctx.compressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, HEAPU8, data, imageSize);
2882
2866
  return;
2883
2867
  }
2884
- GLctx.compressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, data ? HEAPU8.subarray(data, data + imageSize) : null);
2868
+ GLctx.compressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, HEAPU8.subarray(data, data + imageSize));
2885
2869
  };
2886
2870
  var _emscripten_glCompressedTexSubImage2D = _glCompressedTexSubImage2D;
2887
2871
  var _glCompressedTexSubImage3D = (target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data) => {
@@ -3230,13 +3214,9 @@ var require_grida_canvas_wasm = __commonJS({
3230
3214
  if (type) HEAP32[type >> 2] = info.type;
3231
3215
  }
3232
3216
  };
3233
- var _glGetActiveAttrib = (program, index, bufSize, length, size, type, name) => {
3234
- __glGetActiveAttribOrUniform("getActiveAttrib", program, index, bufSize, length, size, type, name);
3235
- };
3217
+ var _glGetActiveAttrib = (program, index, bufSize, length, size, type, name) => __glGetActiveAttribOrUniform("getActiveAttrib", program, index, bufSize, length, size, type, name);
3236
3218
  var _emscripten_glGetActiveAttrib = _glGetActiveAttrib;
3237
- var _glGetActiveUniform = (program, index, bufSize, length, size, type, name) => {
3238
- __glGetActiveAttribOrUniform("getActiveUniform", program, index, bufSize, length, size, type, name);
3239
- };
3219
+ var _glGetActiveUniform = (program, index, bufSize, length, size, type, name) => __glGetActiveAttribOrUniform("getActiveUniform", program, index, bufSize, length, size, type, name);
3240
3220
  var _emscripten_glGetActiveUniform = _glGetActiveUniform;
3241
3221
  var _glGetActiveUniformBlockName = (program, uniformBlockIndex, bufSize, length, uniformBlockName) => {
3242
3222
  program = GL.programs[program];
@@ -3314,7 +3294,7 @@ var require_grida_canvas_wasm = __commonJS({
3314
3294
  var lower = HEAPU32[ptr >> 2];
3315
3295
  HEAPU32[ptr + 4 >> 2] = (num - lower) / 4294967296;
3316
3296
  };
3317
- var webglGetExtensions = function $webglGetExtensions() {
3297
+ var webglGetExtensions = () => {
3318
3298
  var exts = getEmscriptenSupportedExtensions(GLctx);
3319
3299
  exts = exts.concat(exts.map((e) => "GL_" + e));
3320
3300
  return exts;
@@ -3589,21 +3569,24 @@ var require_grida_canvas_wasm = __commonJS({
3589
3569
  HEAP32[p >> 2] = log.length + 1;
3590
3570
  } else if (pname == 35719) {
3591
3571
  if (!program.maxUniformLength) {
3592
- for (var i2 = 0; i2 < GLctx.getProgramParameter(program, 35718); ++i2) {
3572
+ var numActiveUniforms = GLctx.getProgramParameter(program, 35718);
3573
+ for (var i2 = 0; i2 < numActiveUniforms; ++i2) {
3593
3574
  program.maxUniformLength = Math.max(program.maxUniformLength, GLctx.getActiveUniform(program, i2).name.length + 1);
3594
3575
  }
3595
3576
  }
3596
3577
  HEAP32[p >> 2] = program.maxUniformLength;
3597
3578
  } else if (pname == 35722) {
3598
3579
  if (!program.maxAttributeLength) {
3599
- for (var i2 = 0; i2 < GLctx.getProgramParameter(program, 35721); ++i2) {
3580
+ var numActiveAttributes = GLctx.getProgramParameter(program, 35721);
3581
+ for (var i2 = 0; i2 < numActiveAttributes; ++i2) {
3600
3582
  program.maxAttributeLength = Math.max(program.maxAttributeLength, GLctx.getActiveAttrib(program, i2).name.length + 1);
3601
3583
  }
3602
3584
  }
3603
3585
  HEAP32[p >> 2] = program.maxAttributeLength;
3604
3586
  } else if (pname == 35381) {
3605
3587
  if (!program.maxUniformBlockNameLength) {
3606
- for (var i2 = 0; i2 < GLctx.getProgramParameter(program, 35382); ++i2) {
3588
+ var numActiveUniformBlocks = GLctx.getProgramParameter(program, 35382);
3589
+ for (var i2 = 0; i2 < numActiveUniformBlocks; ++i2) {
3607
3590
  program.maxUniformBlockNameLength = Math.max(program.maxUniformBlockNameLength, GLctx.getActiveUniformBlockName(program, i2).length + 1);
3608
3591
  }
3609
3592
  }
@@ -3774,11 +3757,9 @@ var require_grida_canvas_wasm = __commonJS({
3774
3757
  ret = s ? stringToNewUTF8(s) : 0;
3775
3758
  break;
3776
3759
  case 7938:
3777
- var glVersion = GLctx.getParameter(7938);
3778
- if (GL.currentContext.version >= 2) glVersion = `OpenGL ES 3.0 (${glVersion})`;
3779
- else {
3780
- glVersion = `OpenGL ES 2.0 (${glVersion})`;
3781
- }
3760
+ var webGLVersion = GLctx.getParameter(7938);
3761
+ var glVersion = `OpenGL ES 2.0 (${webGLVersion})`;
3762
+ if (GL.currentContext.version >= 2) glVersion = `OpenGL ES 3.0 (${webGLVersion})`;
3782
3763
  ret = stringToNewUTF8(glVersion);
3783
3764
  break;
3784
3765
  case 35724:
@@ -3902,7 +3883,8 @@ var require_grida_canvas_wasm = __commonJS({
3902
3883
  if (!uniformLocsById) {
3903
3884
  program.uniformLocsById = uniformLocsById = {};
3904
3885
  program.uniformArrayNamesById = {};
3905
- for (i2 = 0; i2 < GLctx.getProgramParameter(program, 35718); ++i2) {
3886
+ var numActiveUniforms = GLctx.getProgramParameter(program, 35718);
3887
+ for (i2 = 0; i2 < numActiveUniforms; ++i2) {
3906
3888
  var u = GLctx.getActiveUniform(program, i2);
3907
3889
  var nm = u.name;
3908
3890
  var sz = u.size;
@@ -4161,12 +4143,22 @@ var require_grida_canvas_wasm = __commonJS({
4161
4143
  var _glPixelStorei = (pname, param) => {
4162
4144
  if (pname == 3317) {
4163
4145
  GL.unpackAlignment = param;
4146
+ } else if (pname == 3314) {
4147
+ GL.unpackRowLength = param;
4164
4148
  }
4165
4149
  GLctx.pixelStorei(pname, param);
4166
4150
  };
4167
4151
  var _emscripten_glPixelStorei = _glPixelStorei;
4152
+ var _glPolygonModeWEBGL = (face, mode) => {
4153
+ GLctx.webglPolygonMode["polygonModeWEBGL"](face, mode);
4154
+ };
4155
+ var _emscripten_glPolygonModeWEBGL = _glPolygonModeWEBGL;
4168
4156
  var _glPolygonOffset = (x0, x1) => GLctx.polygonOffset(x0, x1);
4169
4157
  var _emscripten_glPolygonOffset = _glPolygonOffset;
4158
+ var _glPolygonOffsetClampEXT = (factor, units, clamp) => {
4159
+ GLctx.extPolygonOffsetClamp["polygonOffsetClampEXT"](factor, units, clamp);
4160
+ };
4161
+ var _emscripten_glPolygonOffsetClampEXT = _glPolygonOffsetClampEXT;
4170
4162
  var _glProgramBinary = (program, binaryFormat, binary, length) => {
4171
4163
  GL.recordError(1280);
4172
4164
  };
@@ -4181,12 +4173,12 @@ var require_grida_canvas_wasm = __commonJS({
4181
4173
  var _emscripten_glQueryCounterEXT = _glQueryCounterEXT;
4182
4174
  var _glReadBuffer = (x0) => GLctx.readBuffer(x0);
4183
4175
  var _emscripten_glReadBuffer = _glReadBuffer;
4184
- var computeUnpackAlignedImageSize = (width, height, sizePerPixel, alignment) => {
4176
+ var computeUnpackAlignedImageSize = (width, height, sizePerPixel) => {
4185
4177
  function roundedToNextMultipleOf(x, y) {
4186
4178
  return x + y - 1 & -y;
4187
4179
  }
4188
- var plainRowSize = width * sizePerPixel;
4189
- var alignedRowSize = roundedToNextMultipleOf(plainRowSize, alignment);
4180
+ var plainRowSize = (GL.unpackRowLength || width) * sizePerPixel;
4181
+ var alignedRowSize = roundedToNextMultipleOf(plainRowSize, GL.unpackAlignment);
4190
4182
  return height * alignedRowSize;
4191
4183
  };
4192
4184
  var colorChannelsInGlTextureFormat = (format) => {
@@ -4207,7 +4199,7 @@ var require_grida_canvas_wasm = __commonJS({
4207
4199
  var emscriptenWebGLGetTexPixelData = (type, format, width, height, pixels, internalFormat) => {
4208
4200
  var heap = heapObjectForWebGLType(type);
4209
4201
  var sizePerPixel = colorChannelsInGlTextureFormat(format) * heap.BYTES_PER_ELEMENT;
4210
- var bytes = computeUnpackAlignedImageSize(width, height, sizePerPixel, GL.unpackAlignment);
4202
+ var bytes = computeUnpackAlignedImageSize(width, height, sizePerPixel);
4211
4203
  return heap.subarray(toTypedArrayIndex(pixels, heap), toTypedArrayIndex(pixels + bytes, heap));
4212
4204
  };
4213
4205
  var _glReadPixels = (x, y, width, height, format, type, pixels) => {
@@ -4423,8 +4415,9 @@ var require_grida_canvas_wasm = __commonJS({
4423
4415
  return;
4424
4416
  }
4425
4417
  if (count <= 144) {
4426
- var view = miniTempWebGLFloatBuffers[2 * count];
4427
- for (var i2 = 0; i2 < 2 * count; i2 += 2) {
4418
+ count *= 2;
4419
+ var view = miniTempWebGLFloatBuffers[count];
4420
+ for (var i2 = 0; i2 < count; i2 += 2) {
4428
4421
  view[i2] = HEAPF32[value + 4 * i2 >> 2];
4429
4422
  view[i2 + 1] = HEAPF32[value + (4 * i2 + 4) >> 2];
4430
4423
  }
@@ -4444,8 +4437,9 @@ var require_grida_canvas_wasm = __commonJS({
4444
4437
  return;
4445
4438
  }
4446
4439
  if (count <= 144) {
4447
- var view = miniTempWebGLIntBuffers[2 * count];
4448
- for (var i2 = 0; i2 < 2 * count; i2 += 2) {
4440
+ count *= 2;
4441
+ var view = miniTempWebGLIntBuffers[count];
4442
+ for (var i2 = 0; i2 < count; i2 += 2) {
4449
4443
  view[i2] = HEAP32[value + 4 * i2 >> 2];
4450
4444
  view[i2 + 1] = HEAP32[value + (4 * i2 + 4) >> 2];
4451
4445
  }
@@ -4473,8 +4467,9 @@ var require_grida_canvas_wasm = __commonJS({
4473
4467
  return;
4474
4468
  }
4475
4469
  if (count <= 96) {
4476
- var view = miniTempWebGLFloatBuffers[3 * count];
4477
- for (var i2 = 0; i2 < 3 * count; i2 += 3) {
4470
+ count *= 3;
4471
+ var view = miniTempWebGLFloatBuffers[count];
4472
+ for (var i2 = 0; i2 < count; i2 += 3) {
4478
4473
  view[i2] = HEAPF32[value + 4 * i2 >> 2];
4479
4474
  view[i2 + 1] = HEAPF32[value + (4 * i2 + 4) >> 2];
4480
4475
  view[i2 + 2] = HEAPF32[value + (4 * i2 + 8) >> 2];
@@ -4495,8 +4490,9 @@ var require_grida_canvas_wasm = __commonJS({
4495
4490
  return;
4496
4491
  }
4497
4492
  if (count <= 96) {
4498
- var view = miniTempWebGLIntBuffers[3 * count];
4499
- for (var i2 = 0; i2 < 3 * count; i2 += 3) {
4493
+ count *= 3;
4494
+ var view = miniTempWebGLIntBuffers[count];
4495
+ for (var i2 = 0; i2 < count; i2 += 3) {
4500
4496
  view[i2] = HEAP32[value + 4 * i2 >> 2];
4501
4497
  view[i2 + 1] = HEAP32[value + (4 * i2 + 4) >> 2];
4502
4498
  view[i2 + 2] = HEAP32[value + (4 * i2 + 8) >> 2];
@@ -4528,7 +4524,8 @@ var require_grida_canvas_wasm = __commonJS({
4528
4524
  var view = miniTempWebGLFloatBuffers[4 * count];
4529
4525
  var heap = HEAPF32;
4530
4526
  value = value >> 2;
4531
- for (var i2 = 0; i2 < 4 * count; i2 += 4) {
4527
+ count *= 4;
4528
+ for (var i2 = 0; i2 < count; i2 += 4) {
4532
4529
  var dst = value + i2;
4533
4530
  view[i2] = heap[dst];
4534
4531
  view[i2 + 1] = heap[dst + 1];
@@ -4551,8 +4548,9 @@ var require_grida_canvas_wasm = __commonJS({
4551
4548
  return;
4552
4549
  }
4553
4550
  if (count <= 72) {
4554
- var view = miniTempWebGLIntBuffers[4 * count];
4555
- for (var i2 = 0; i2 < 4 * count; i2 += 4) {
4551
+ count *= 4;
4552
+ var view = miniTempWebGLIntBuffers[count];
4553
+ for (var i2 = 0; i2 < count; i2 += 4) {
4556
4554
  view[i2] = HEAP32[value + 4 * i2 >> 2];
4557
4555
  view[i2 + 1] = HEAP32[value + (4 * i2 + 4) >> 2];
4558
4556
  view[i2 + 2] = HEAP32[value + (4 * i2 + 8) >> 2];
@@ -4583,8 +4581,9 @@ var require_grida_canvas_wasm = __commonJS({
4583
4581
  return;
4584
4582
  }
4585
4583
  if (count <= 72) {
4586
- var view = miniTempWebGLFloatBuffers[4 * count];
4587
- for (var i2 = 0; i2 < 4 * count; i2 += 4) {
4584
+ count *= 4;
4585
+ var view = miniTempWebGLFloatBuffers[count];
4586
+ for (var i2 = 0; i2 < count; i2 += 4) {
4588
4587
  view[i2] = HEAPF32[value + 4 * i2 >> 2];
4589
4588
  view[i2 + 1] = HEAPF32[value + (4 * i2 + 4) >> 2];
4590
4589
  view[i2 + 2] = HEAPF32[value + (4 * i2 + 8) >> 2];
@@ -4610,8 +4609,9 @@ var require_grida_canvas_wasm = __commonJS({
4610
4609
  return;
4611
4610
  }
4612
4611
  if (count <= 32) {
4613
- var view = miniTempWebGLFloatBuffers[9 * count];
4614
- for (var i2 = 0; i2 < 9 * count; i2 += 9) {
4612
+ count *= 9;
4613
+ var view = miniTempWebGLFloatBuffers[count];
4614
+ for (var i2 = 0; i2 < count; i2 += 9) {
4615
4615
  view[i2] = HEAPF32[value + 4 * i2 >> 2];
4616
4616
  view[i2 + 1] = HEAPF32[value + (4 * i2 + 4) >> 2];
4617
4617
  view[i2 + 2] = HEAPF32[value + (4 * i2 + 8) >> 2];
@@ -4645,7 +4645,8 @@ var require_grida_canvas_wasm = __commonJS({
4645
4645
  var view = miniTempWebGLFloatBuffers[16 * count];
4646
4646
  var heap = HEAPF32;
4647
4647
  value = value >> 2;
4648
- for (var i2 = 0; i2 < 16 * count; i2 += 16) {
4648
+ count *= 16;
4649
+ for (var i2 = 0; i2 < count; i2 += 16) {
4649
4650
  var dst = value + i2;
4650
4651
  view[i2] = heap[dst];
4651
4652
  view[i2 + 1] = heap[dst + 1];
@@ -4746,8 +4747,8 @@ var require_grida_canvas_wasm = __commonJS({
4746
4747
  var _emscripten_glVertexAttribPointer = _glVertexAttribPointer;
4747
4748
  var _glViewport = (x0, x1, x2, x3) => GLctx.viewport(x0, x1, x2, x3);
4748
4749
  var _emscripten_glViewport = _glViewport;
4749
- var _glWaitSync = (sync, flags, timeout_low, timeout_high) => {
4750
- var timeout = convertI32PairToI53(timeout_low, timeout_high);
4750
+ var _glWaitSync = (sync, flags, timeout) => {
4751
+ timeout = Number(timeout);
4751
4752
  GLctx.waitSync(GL.syncs[sync], flags, timeout);
4752
4753
  };
4753
4754
  var _emscripten_glWaitSync = _glWaitSync;
@@ -4756,7 +4757,6 @@ var require_grida_canvas_wasm = __commonJS({
4756
4757
  var getWasmTableEntry = (funcPtr) => {
4757
4758
  var func = wasmTableMirror[funcPtr];
4758
4759
  if (!func) {
4759
- if (funcPtr >= wasmTableMirror.length) wasmTableMirror.length = funcPtr + 1;
4760
4760
  wasmTableMirror[funcPtr] = func = wasmTable.get(funcPtr);
4761
4761
  }
4762
4762
  return func;
@@ -4772,7 +4772,7 @@ var require_grida_canvas_wasm = __commonJS({
4772
4772
  var getHeapMax = () => 2147483648;
4773
4773
  var growMemory = (size) => {
4774
4774
  var b = wasmMemory.buffer;
4775
- var pages = (size - b.byteLength + 65535) / 65536;
4775
+ var pages = (size - b.byteLength + 65535) / 65536 | 0;
4776
4776
  try {
4777
4777
  wasmMemory.grow(pages);
4778
4778
  updateMemoryViews();
@@ -4787,11 +4787,10 @@ var require_grida_canvas_wasm = __commonJS({
4787
4787
  if (requestedSize > maxHeapSize) {
4788
4788
  return false;
4789
4789
  }
4790
- var alignUp = (x, multiple) => x + (multiple - x % multiple) % multiple;
4791
4790
  for (var cutDown = 1; cutDown <= 4; cutDown *= 2) {
4792
4791
  var overGrownHeapSize = oldSize * (1 + 0.2 / cutDown);
4793
4792
  overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296);
4794
- var newSize = Math.min(maxHeapSize, alignUp(Math.max(requestedSize, overGrownHeapSize), 65536));
4793
+ var newSize = Math.min(maxHeapSize, alignMemory(Math.max(requestedSize, overGrownHeapSize), 65536));
4795
4794
  var replacement = growMemory(newSize);
4796
4795
  if (replacement) {
4797
4796
  return true;
@@ -4804,7 +4803,7 @@ var require_grida_canvas_wasm = __commonJS({
4804
4803
  var getEnvStrings = () => {
4805
4804
  if (!getEnvStrings.strings) {
4806
4805
  var lang = (typeof navigator == "object" && navigator.languages && navigator.languages[0] || "C").replace("-", "_") + ".UTF-8";
4807
- var env = { "USER": "web_user", "LOGNAME": "web_user", "PATH": "/", "PWD": "/", "HOME": "/home/web_user", "LANG": lang, "_": getExecutableName() };
4806
+ var env = { USER: "web_user", LOGNAME: "web_user", PATH: "/", PWD: "/", HOME: "/home/web_user", LANG: lang, _: getExecutableName() };
4808
4807
  for (var x in ENV) {
4809
4808
  if (ENV[x] === void 0) delete env[x];
4810
4809
  else env[x] = ENV[x];
@@ -4817,27 +4816,24 @@ var require_grida_canvas_wasm = __commonJS({
4817
4816
  }
4818
4817
  return getEnvStrings.strings;
4819
4818
  };
4820
- var stringToAscii = (str, buffer) => {
4821
- for (var i2 = 0; i2 < str.length; ++i2) {
4822
- HEAP8[buffer++] = str.charCodeAt(i2);
4823
- }
4824
- HEAP8[buffer] = 0;
4825
- };
4826
4819
  var _environ_get = (__environ, environ_buf) => {
4827
4820
  var bufSize = 0;
4828
- getEnvStrings().forEach((string, i2) => {
4821
+ var envp = 0;
4822
+ for (var string of getEnvStrings()) {
4829
4823
  var ptr = environ_buf + bufSize;
4830
- HEAPU32[__environ + i2 * 4 >> 2] = ptr;
4831
- stringToAscii(string, ptr);
4832
- bufSize += string.length + 1;
4833
- });
4824
+ HEAPU32[__environ + envp >> 2] = ptr;
4825
+ bufSize += stringToUTF8(string, ptr, Infinity) + 1;
4826
+ envp += 4;
4827
+ }
4834
4828
  return 0;
4835
4829
  };
4836
4830
  var _environ_sizes_get = (penviron_count, penviron_buf_size) => {
4837
4831
  var strings = getEnvStrings();
4838
4832
  HEAPU32[penviron_count >> 2] = strings.length;
4839
4833
  var bufSize = 0;
4840
- strings.forEach((string) => bufSize += string.length + 1);
4834
+ for (var string of strings) {
4835
+ bufSize += lengthBytesUTF8(string) + 1;
4836
+ }
4841
4837
  HEAPU32[penviron_buf_size >> 2] = bufSize;
4842
4838
  return 0;
4843
4839
  };
@@ -4883,8 +4879,8 @@ var require_grida_canvas_wasm = __commonJS({
4883
4879
  }
4884
4880
  return ret;
4885
4881
  };
4886
- function _fd_pread(fd, iov, iovcnt, offset_low, offset_high, pnum) {
4887
- var offset = convertI32PairToI53Checked(offset_low, offset_high);
4882
+ function _fd_pread(fd, iov, iovcnt, offset, pnum) {
4883
+ offset = bigintToI53Checked(offset);
4888
4884
  try {
4889
4885
  if (isNaN(offset)) return 61;
4890
4886
  var stream = SYSCALLS.getStreamFromFD(fd);
@@ -4907,13 +4903,13 @@ var require_grida_canvas_wasm = __commonJS({
4907
4903
  return e.errno;
4908
4904
  }
4909
4905
  }
4910
- function _fd_seek(fd, offset_low, offset_high, whence, newOffset) {
4911
- var offset = convertI32PairToI53Checked(offset_low, offset_high);
4906
+ function _fd_seek(fd, offset, whence, newOffset) {
4907
+ offset = bigintToI53Checked(offset);
4912
4908
  try {
4913
4909
  if (isNaN(offset)) return 61;
4914
4910
  var stream = SYSCALLS.getStreamFromFD(fd);
4915
4911
  FS.llseek(stream, offset, whence);
4916
- tempI64 = [stream.position >>> 0, (tempDouble = stream.position, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[newOffset >> 2] = tempI64[0], HEAP32[newOffset + 4 >> 2] = tempI64[1];
4912
+ HEAP64[newOffset >> 3] = BigInt(stream.position);
4917
4913
  if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null;
4918
4914
  return 0;
4919
4915
  } catch (e) {
@@ -4930,6 +4926,9 @@ var require_grida_canvas_wasm = __commonJS({
4930
4926
  var curr = FS.write(stream, HEAP8, ptr, len, offset);
4931
4927
  if (curr < 0) return -1;
4932
4928
  ret += curr;
4929
+ if (curr < len) {
4930
+ break;
4931
+ }
4933
4932
  if (typeof offset != "undefined") {
4934
4933
  offset += curr;
4935
4934
  }
@@ -4947,166 +4946,16 @@ var require_grida_canvas_wasm = __commonJS({
4947
4946
  return e.errno;
4948
4947
  }
4949
4948
  }
4950
- var _getentropy = (buffer, size) => {
4951
- randomFill(HEAPU8.subarray(buffer, buffer + size));
4952
- return 0;
4953
- };
4954
4949
  var _llvm_eh_typeid_for = (type) => type;
4955
- var isLeapYear = (year) => year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);
4956
- var arraySum = (array, index) => {
4957
- var sum = 0;
4958
- for (var i2 = 0; i2 <= index; sum += array[i2++]) {
4959
- }
4960
- return sum;
4961
- };
4962
- var MONTH_DAYS_LEAP = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
4963
- var MONTH_DAYS_REGULAR = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
4964
- var addDays = (date, days) => {
4965
- var newDate = new Date(date.getTime());
4966
- while (days > 0) {
4967
- var leap = isLeapYear(newDate.getFullYear());
4968
- var currentMonth = newDate.getMonth();
4969
- var daysInCurrentMonth = (leap ? MONTH_DAYS_LEAP : MONTH_DAYS_REGULAR)[currentMonth];
4970
- if (days > daysInCurrentMonth - newDate.getDate()) {
4971
- days -= daysInCurrentMonth - newDate.getDate() + 1;
4972
- newDate.setDate(1);
4973
- if (currentMonth < 11) {
4974
- newDate.setMonth(currentMonth + 1);
4975
- } else {
4976
- newDate.setMonth(0);
4977
- newDate.setFullYear(newDate.getFullYear() + 1);
4978
- }
4979
- } else {
4980
- newDate.setDate(newDate.getDate() + days);
4981
- return newDate;
4982
- }
4983
- }
4984
- return newDate;
4985
- };
4986
- var writeArrayToMemory = (array, buffer) => {
4987
- HEAP8.set(array, buffer);
4988
- };
4989
- var _strftime = (s, maxsize, format, tm) => {
4990
- var tm_zone = HEAPU32[tm + 40 >> 2];
4991
- var date = { tm_sec: HEAP32[tm >> 2], tm_min: HEAP32[tm + 4 >> 2], tm_hour: HEAP32[tm + 8 >> 2], tm_mday: HEAP32[tm + 12 >> 2], tm_mon: HEAP32[tm + 16 >> 2], tm_year: HEAP32[tm + 20 >> 2], tm_wday: HEAP32[tm + 24 >> 2], tm_yday: HEAP32[tm + 28 >> 2], tm_isdst: HEAP32[tm + 32 >> 2], tm_gmtoff: HEAP32[tm + 36 >> 2], tm_zone: tm_zone ? UTF8ToString(tm_zone) : "" };
4992
- var pattern = UTF8ToString(format);
4993
- var EXPANSION_RULES_1 = { "%c": "%a %b %d %H:%M:%S %Y", "%D": "%m/%d/%y", "%F": "%Y-%m-%d", "%h": "%b", "%r": "%I:%M:%S %p", "%R": "%H:%M", "%T": "%H:%M:%S", "%x": "%m/%d/%y", "%X": "%H:%M:%S", "%Ec": "%c", "%EC": "%C", "%Ex": "%m/%d/%y", "%EX": "%H:%M:%S", "%Ey": "%y", "%EY": "%Y", "%Od": "%d", "%Oe": "%e", "%OH": "%H", "%OI": "%I", "%Om": "%m", "%OM": "%M", "%OS": "%S", "%Ou": "%u", "%OU": "%U", "%OV": "%V", "%Ow": "%w", "%OW": "%W", "%Oy": "%y" };
4994
- for (var rule in EXPANSION_RULES_1) {
4995
- pattern = pattern.replace(new RegExp(rule, "g"), EXPANSION_RULES_1[rule]);
4996
- }
4997
- var WEEKDAYS = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
4998
- var MONTHS = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
4999
- function leadingSomething(value, digits, character) {
5000
- var str = typeof value == "number" ? value.toString() : value || "";
5001
- while (str.length < digits) {
5002
- str = character[0] + str;
5003
- }
5004
- return str;
5005
- }
5006
- function leadingNulls(value, digits) {
5007
- return leadingSomething(value, digits, "0");
5008
- }
5009
- function compareByDay(date1, date2) {
5010
- function sgn(value) {
5011
- return value < 0 ? -1 : value > 0 ? 1 : 0;
5012
- }
5013
- var compare;
5014
- if ((compare = sgn(date1.getFullYear() - date2.getFullYear())) === 0) {
5015
- if ((compare = sgn(date1.getMonth() - date2.getMonth())) === 0) {
5016
- compare = sgn(date1.getDate() - date2.getDate());
5017
- }
5018
- }
5019
- return compare;
5020
- }
5021
- function getFirstWeekStartDate(janFourth) {
5022
- switch (janFourth.getDay()) {
5023
- case 0:
5024
- return new Date(janFourth.getFullYear() - 1, 11, 29);
5025
- case 1:
5026
- return janFourth;
5027
- case 2:
5028
- return new Date(janFourth.getFullYear(), 0, 3);
5029
- case 3:
5030
- return new Date(janFourth.getFullYear(), 0, 2);
5031
- case 4:
5032
- return new Date(janFourth.getFullYear(), 0, 1);
5033
- case 5:
5034
- return new Date(janFourth.getFullYear() - 1, 11, 31);
5035
- case 6:
5036
- return new Date(janFourth.getFullYear() - 1, 11, 30);
5037
- }
5038
- }
5039
- function getWeekBasedYear(date2) {
5040
- var thisDate = addDays(new Date(date2.tm_year + 1900, 0, 1), date2.tm_yday);
5041
- var janFourthThisYear = new Date(thisDate.getFullYear(), 0, 4);
5042
- var janFourthNextYear = new Date(thisDate.getFullYear() + 1, 0, 4);
5043
- var firstWeekStartThisYear = getFirstWeekStartDate(janFourthThisYear);
5044
- var firstWeekStartNextYear = getFirstWeekStartDate(janFourthNextYear);
5045
- if (compareByDay(firstWeekStartThisYear, thisDate) <= 0) {
5046
- if (compareByDay(firstWeekStartNextYear, thisDate) <= 0) {
5047
- return thisDate.getFullYear() + 1;
5048
- }
5049
- return thisDate.getFullYear();
5050
- }
5051
- return thisDate.getFullYear() - 1;
5052
- }
5053
- var EXPANSION_RULES_2 = { "%a": (date2) => WEEKDAYS[date2.tm_wday].substring(0, 3), "%A": (date2) => WEEKDAYS[date2.tm_wday], "%b": (date2) => MONTHS[date2.tm_mon].substring(0, 3), "%B": (date2) => MONTHS[date2.tm_mon], "%C": (date2) => {
5054
- var year = date2.tm_year + 1900;
5055
- return leadingNulls(year / 100 | 0, 2);
5056
- }, "%d": (date2) => leadingNulls(date2.tm_mday, 2), "%e": (date2) => leadingSomething(date2.tm_mday, 2, " "), "%g": (date2) => getWeekBasedYear(date2).toString().substring(2), "%G": getWeekBasedYear, "%H": (date2) => leadingNulls(date2.tm_hour, 2), "%I": (date2) => {
5057
- var twelveHour = date2.tm_hour;
5058
- if (twelveHour == 0) twelveHour = 12;
5059
- else if (twelveHour > 12) twelveHour -= 12;
5060
- return leadingNulls(twelveHour, 2);
5061
- }, "%j": (date2) => leadingNulls(date2.tm_mday + arraySum(isLeapYear(date2.tm_year + 1900) ? MONTH_DAYS_LEAP : MONTH_DAYS_REGULAR, date2.tm_mon - 1), 3), "%m": (date2) => leadingNulls(date2.tm_mon + 1, 2), "%M": (date2) => leadingNulls(date2.tm_min, 2), "%n": () => "\n", "%p": (date2) => {
5062
- if (date2.tm_hour >= 0 && date2.tm_hour < 12) {
5063
- return "AM";
5064
- }
5065
- return "PM";
5066
- }, "%S": (date2) => leadingNulls(date2.tm_sec, 2), "%t": () => " ", "%u": (date2) => date2.tm_wday || 7, "%U": (date2) => {
5067
- var days = date2.tm_yday + 7 - date2.tm_wday;
5068
- return leadingNulls(Math.floor(days / 7), 2);
5069
- }, "%V": (date2) => {
5070
- var val = Math.floor((date2.tm_yday + 7 - (date2.tm_wday + 6) % 7) / 7);
5071
- if ((date2.tm_wday + 371 - date2.tm_yday - 2) % 7 <= 2) {
5072
- val++;
5073
- }
5074
- if (!val) {
5075
- val = 52;
5076
- var dec31 = (date2.tm_wday + 7 - date2.tm_yday - 1) % 7;
5077
- if (dec31 == 4 || dec31 == 5 && isLeapYear(date2.tm_year % 400 - 1)) {
5078
- val++;
5079
- }
5080
- } else if (val == 53) {
5081
- var jan1 = (date2.tm_wday + 371 - date2.tm_yday) % 7;
5082
- if (jan1 != 4 && (jan1 != 3 || !isLeapYear(date2.tm_year))) val = 1;
5083
- }
5084
- return leadingNulls(val, 2);
5085
- }, "%w": (date2) => date2.tm_wday, "%W": (date2) => {
5086
- var days = date2.tm_yday + 7 - (date2.tm_wday + 6) % 7;
5087
- return leadingNulls(Math.floor(days / 7), 2);
5088
- }, "%y": (date2) => (date2.tm_year + 1900).toString().substring(2), "%Y": (date2) => date2.tm_year + 1900, "%z": (date2) => {
5089
- var off = date2.tm_gmtoff;
5090
- var ahead = off >= 0;
5091
- off = Math.abs(off) / 60;
5092
- off = off / 60 * 100 + off % 60;
5093
- return (ahead ? "+" : "-") + String("0000" + off).slice(-4);
5094
- }, "%Z": (date2) => date2.tm_zone, "%%": () => "%" };
5095
- pattern = pattern.replace(/%%/g, "\0\0");
5096
- for (var rule in EXPANSION_RULES_2) {
5097
- if (pattern.includes(rule)) {
5098
- pattern = pattern.replace(new RegExp(rule, "g"), EXPANSION_RULES_2[rule](date));
5099
- }
5100
- }
5101
- pattern = pattern.replace(/\0\0/g, "%");
5102
- var bytes = intArrayFromString(pattern, false);
5103
- if (bytes.length > maxsize) {
4950
+ function _random_get(buffer, size) {
4951
+ try {
4952
+ randomFill(HEAPU8.subarray(buffer, buffer + size));
5104
4953
  return 0;
4954
+ } catch (e) {
4955
+ if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
4956
+ return e.errno;
5105
4957
  }
5106
- writeArrayToMemory(bytes, s);
5107
- return bytes.length - 1;
5108
- };
5109
- var _strftime_l = (s, maxsize, format, tm, loc) => _strftime(s, maxsize, format, tm);
4958
+ }
5110
4959
  var handleException = (e) => {
5111
4960
  if (e instanceof ExitStatus || e == "unwind") {
5112
4961
  return EXITSTATUS;
@@ -5122,76 +4971,80 @@ var require_grida_canvas_wasm = __commonJS({
5122
4971
  };
5123
4972
  FS.createPreloadedFile = FS_createPreloadedFile;
5124
4973
  FS.staticInit();
5125
- var GLctx;
5126
- for (var i = 0; i < 32; ++i) tempFixedLengthArray.push(new Array(i));
4974
+ MEMFS.doesNotExistError = new FS.ErrnoError(44);
4975
+ MEMFS.doesNotExistError.stack = "<generic error, no stack>";
4976
+ for (let i2 = 0; i2 < 32; ++i2) tempFixedLengthArray.push(new Array(i2));
5127
4977
  var miniTempWebGLFloatBuffersStorage = new Float32Array(288);
5128
- for (var i = 0; i < 288; ++i) {
4978
+ for (var i = 0; i <= 288; ++i) {
5129
4979
  miniTempWebGLFloatBuffers[i] = miniTempWebGLFloatBuffersStorage.subarray(0, i);
5130
4980
  }
5131
4981
  var miniTempWebGLIntBuffersStorage = new Int32Array(288);
5132
- for (var i = 0; i < 288; ++i) {
4982
+ for (var i = 0; i <= 288; ++i) {
5133
4983
  miniTempWebGLIntBuffers[i] = miniTempWebGLIntBuffersStorage.subarray(0, i);
5134
4984
  }
5135
- var wasmImports = { x: ___cxa_begin_catch, y: ___cxa_end_catch, a: ___cxa_find_matching_catch_2, m: ___cxa_find_matching_catch_3, B: ___cxa_find_matching_catch_4, W: ___cxa_rethrow, u: ___cxa_throw, sb: ___cxa_uncaught_exceptions, d: ___resumeException, Z: ___syscall_fcntl64, Ab: ___syscall_fstat64, wb: ___syscall_getcwd, Cb: ___syscall_ioctl, xb: ___syscall_lstat64, yb: ___syscall_newfstatat, Y: ___syscall_openat, zb: ___syscall_stat64, Gb: __abort_js, Db: __emscripten_get_now_is_monotonic, Fb: __emscripten_memcpy_js, tb: __emscripten_throw_longjmp, jb: __gmtime_js, hb: __mmap_js, ib: __munmap_js, vb: __tzset_js, Eb: _emscripten_date_now, M: _emscripten_get_now, Df: _emscripten_glActiveTexture, Ef: _emscripten_glAttachShader, fe: _emscripten_glBeginQuery, $d: _emscripten_glBeginQueryEXT, Mc: _emscripten_glBeginTransformFeedback, Ff: _emscripten_glBindAttribLocation, Gf: _emscripten_glBindBuffer, Jc: _emscripten_glBindBufferBase, Kc: _emscripten_glBindBufferRange, Ee: _emscripten_glBindFramebuffer, Fe: _emscripten_glBindRenderbuffer, le: _emscripten_glBindSampler, Hf: _emscripten_glBindTexture, Zb: _emscripten_glBindTransformFeedback, _e: _emscripten_glBindVertexArray, bf: _emscripten_glBindVertexArrayOES, If: _emscripten_glBlendColor, Jf: _emscripten_glBlendEquation, Nd: _emscripten_glBlendEquationSeparate, Kf: _emscripten_glBlendFunc, Md: _emscripten_glBlendFuncSeparate, xe: _emscripten_glBlitFramebuffer, Lf: _emscripten_glBufferData, Mf: _emscripten_glBufferSubData, Ge: _emscripten_glCheckFramebufferStatus, Nf: _emscripten_glClear, mc: _emscripten_glClearBufferfi, nc: _emscripten_glClearBufferfv, pc: _emscripten_glClearBufferiv, oc: _emscripten_glClearBufferuiv, Of: _emscripten_glClearColor, Ld: _emscripten_glClearDepthf, Pf: _emscripten_glClearStencil, ue: _emscripten_glClientWaitSync, Qf: _emscripten_glColorMask, Rf: _emscripten_glCompileShader, Sf: _emscripten_glCompressedTexImage2D, Yc: _emscripten_glCompressedTexImage3D, Tf: _emscripten_glCompressedTexSubImage2D, Xc: _emscripten_glCompressedTexSubImage3D, we: _emscripten_glCopyBufferSubData, Kd: _emscripten_glCopyTexImage2D, Uf: _emscripten_glCopyTexSubImage2D, Zc: _emscripten_glCopyTexSubImage3D, Vf: _emscripten_glCreateProgram, Wf: _emscripten_glCreateShader, Xf: _emscripten_glCullFace, Yf: _emscripten_glDeleteBuffers, He: _emscripten_glDeleteFramebuffers, Zf: _emscripten_glDeleteProgram, ge: _emscripten_glDeleteQueries, ae: _emscripten_glDeleteQueriesEXT, Ie: _emscripten_glDeleteRenderbuffers, me: _emscripten_glDeleteSamplers, _f: _emscripten_glDeleteShader, ve: _emscripten_glDeleteSync, $f: _emscripten_glDeleteTextures, Yb: _emscripten_glDeleteTransformFeedbacks, $e: _emscripten_glDeleteVertexArrays, cf: _emscripten_glDeleteVertexArraysOES, Jd: _emscripten_glDepthFunc, ca: _emscripten_glDepthMask, Id: _emscripten_glDepthRangef, Hd: _emscripten_glDetachShader, da: _emscripten_glDisable, ea: _emscripten_glDisableVertexAttribArray, fa: _emscripten_glDrawArrays, Ye: _emscripten_glDrawArraysInstanced, Qd: _emscripten_glDrawArraysInstancedANGLE, Lb: _emscripten_glDrawArraysInstancedARB, Ve: _emscripten_glDrawArraysInstancedBaseInstanceWEBGL, cd: _emscripten_glDrawArraysInstancedEXT, Mb: _emscripten_glDrawArraysInstancedNV, Te: _emscripten_glDrawBuffers, ad: _emscripten_glDrawBuffersEXT, Rd: _emscripten_glDrawBuffersWEBGL, ga: _emscripten_glDrawElements, Ze: _emscripten_glDrawElementsInstanced, Pd: _emscripten_glDrawElementsInstancedANGLE, Jb: _emscripten_glDrawElementsInstancedARB, We: _emscripten_glDrawElementsInstancedBaseVertexBaseInstanceWEBGL, Kb: _emscripten_glDrawElementsInstancedEXT, bd: _emscripten_glDrawElementsInstancedNV, Ne: _emscripten_glDrawRangeElements, ha: _emscripten_glEnable, ia: _emscripten_glEnableVertexAttribArray, he: _emscripten_glEndQuery, be: _emscripten_glEndQueryEXT, Lc: _emscripten_glEndTransformFeedback, re: _emscripten_glFenceSync, ja: _emscripten_glFinish, ka: _emscripten_glFlush, Je: _emscripten_glFramebufferRenderbuffer, Ke: _emscripten_glFramebufferTexture2D, Pc: _emscripten_glFramebufferTextureLayer, la: _emscripten_glFrontFace, ma: _emscripten_glGenBuffers, Le: _emscripten_glGenFramebuffers, ie: _emscripten_glGenQueries, ce: _emscripten_glGenQueriesEXT, Me: _emscripten_glGenRenderbuffers, ne: _emscripten_glGenSamplers, na: _emscripten_glGenTextures, Xb: _emscripten_glGenTransformFeedbacks, Xe: _emscripten_glGenVertexArrays, df: _emscripten_glGenVertexArraysOES, ze: _emscripten_glGenerateMipmap, Gd: _emscripten_glGetActiveAttrib, Fd: _emscripten_glGetActiveUniform, hc: _emscripten_glGetActiveUniformBlockName, ic: _emscripten_glGetActiveUniformBlockiv, kc: _emscripten_glGetActiveUniformsiv, Ed: _emscripten_glGetAttachedShaders, Dd: _emscripten_glGetAttribLocation, Cd: _emscripten_glGetBooleanv, cc: _emscripten_glGetBufferParameteri64v, oa: _emscripten_glGetBufferParameteriv, pa: _emscripten_glGetError, qa: _emscripten_glGetFloatv, yc: _emscripten_glGetFragDataLocation, Be: _emscripten_glGetFramebufferAttachmentParameteriv, dc: _emscripten_glGetInteger64i_v, fc: _emscripten_glGetInteger64v, Nc: _emscripten_glGetIntegeri_v, ra: _emscripten_glGetIntegerv, Pb: _emscripten_glGetInternalformativ, Tb: _emscripten_glGetProgramBinary, sa: _emscripten_glGetProgramInfoLog, ta: _emscripten_glGetProgramiv, Yd: _emscripten_glGetQueryObjecti64vEXT, Td: _emscripten_glGetQueryObjectivEXT, Zd: _emscripten_glGetQueryObjectui64vEXT, je: _emscripten_glGetQueryObjectuiv, de: _emscripten_glGetQueryObjectuivEXT, ke: _emscripten_glGetQueryiv, ee: _emscripten_glGetQueryivEXT, Ce: _emscripten_glGetRenderbufferParameteriv, _b: _emscripten_glGetSamplerParameterfv, $b: _emscripten_glGetSamplerParameteriv, ua: _emscripten_glGetShaderInfoLog, Vd: _emscripten_glGetShaderPrecisionFormat, Bd: _emscripten_glGetShaderSource, va: _emscripten_glGetShaderiv, wa: _emscripten_glGetString, af: _emscripten_glGetStringi, ec: _emscripten_glGetSynciv, Ad: _emscripten_glGetTexParameterfv, zd: _emscripten_glGetTexParameteriv, Hc: _emscripten_glGetTransformFeedbackVarying, jc: _emscripten_glGetUniformBlockIndex, lc: _emscripten_glGetUniformIndices, xa: _emscripten_glGetUniformLocation, yd: _emscripten_glGetUniformfv, xd: _emscripten_glGetUniformiv, zc: _emscripten_glGetUniformuiv, Gc: _emscripten_glGetVertexAttribIiv, Fc: _emscripten_glGetVertexAttribIuiv, ud: _emscripten_glGetVertexAttribPointerv, wd: _emscripten_glGetVertexAttribfv, vd: _emscripten_glGetVertexAttribiv, td: _emscripten_glHint, Wd: _emscripten_glInvalidateFramebuffer, Xd: _emscripten_glInvalidateSubFramebuffer, sd: _emscripten_glIsBuffer, rd: _emscripten_glIsEnabled, qd: _emscripten_glIsFramebuffer, pd: _emscripten_glIsProgram, Wc: _emscripten_glIsQuery, Ud: _emscripten_glIsQueryEXT, od: _emscripten_glIsRenderbuffer, bc: _emscripten_glIsSampler, nd: _emscripten_glIsShader, se: _emscripten_glIsSync, ya: _emscripten_glIsTexture, Wb: _emscripten_glIsTransformFeedback, Oc: _emscripten_glIsVertexArray, Sd: _emscripten_glIsVertexArrayOES, za: _emscripten_glLineWidth, Aa: _emscripten_glLinkProgram, Re: _emscripten_glMultiDrawArraysInstancedBaseInstanceWEBGL, Se: _emscripten_glMultiDrawElementsInstancedBaseVertexBaseInstanceWEBGL, Vb: _emscripten_glPauseTransformFeedback, Ba: _emscripten_glPixelStorei, md: _emscripten_glPolygonOffset, Sb: _emscripten_glProgramBinary, Rb: _emscripten_glProgramParameteri, _d: _emscripten_glQueryCounterEXT, Ue: _emscripten_glReadBuffer, Ca: _emscripten_glReadPixels, ld: _emscripten_glReleaseShaderCompiler, De: _emscripten_glRenderbufferStorage, ye: _emscripten_glRenderbufferStorageMultisample, Ub: _emscripten_glResumeTransformFeedback, kd: _emscripten_glSampleCoverage, oe: _emscripten_glSamplerParameterf, ac: _emscripten_glSamplerParameterfv, pe: _emscripten_glSamplerParameteri, qe: _emscripten_glSamplerParameteriv, Da: _emscripten_glScissor, jd: _emscripten_glShaderBinary, Ea: _emscripten_glShaderSource, Fa: _emscripten_glStencilFunc, Ga: _emscripten_glStencilFuncSeparate, Ha: _emscripten_glStencilMask, Ia: _emscripten_glStencilMaskSeparate, Ja: _emscripten_glStencilOp, Ka: _emscripten_glStencilOpSeparate, La: _emscripten_glTexImage2D, $c: _emscripten_glTexImage3D, Ma: _emscripten_glTexParameterf, Na: _emscripten_glTexParameterfv, Oa: _emscripten_glTexParameteri, Pa: _emscripten_glTexParameteriv, Oe: _emscripten_glTexStorage2D, Qb: _emscripten_glTexStorage3D, Qa: _emscripten_glTexSubImage2D, _c: _emscripten_glTexSubImage3D, Ic: _emscripten_glTransformFeedbackVaryings, Ra: _emscripten_glUniform1f, Sa: _emscripten_glUniform1fv, zf: _emscripten_glUniform1i, Af: _emscripten_glUniform1iv, xc: _emscripten_glUniform1ui, tc: _emscripten_glUniform1uiv, Bf: _emscripten_glUniform2f, Cf: _emscripten_glUniform2fv, yf: _emscripten_glUniform2i, xf: _emscripten_glUniform2iv, wc: _emscripten_glUniform2ui, sc: _emscripten_glUniform2uiv, wf: _emscripten_glUniform3f, vf: _emscripten_glUniform3fv, uf: _emscripten_glUniform3i, tf: _emscripten_glUniform3iv, vc: _emscripten_glUniform3ui, rc: _emscripten_glUniform3uiv, sf: _emscripten_glUniform4f, rf: _emscripten_glUniform4fv, ef: _emscripten_glUniform4i, ff: _emscripten_glUniform4iv, uc: _emscripten_glUniform4ui, qc: _emscripten_glUniform4uiv, gc: _emscripten_glUniformBlockBinding, gf: _emscripten_glUniformMatrix2fv, Vc: _emscripten_glUniformMatrix2x3fv, Tc: _emscripten_glUniformMatrix2x4fv, hf: _emscripten_glUniformMatrix3fv, Uc: _emscripten_glUniformMatrix3x2fv, Rc: _emscripten_glUniformMatrix3x4fv, jf: _emscripten_glUniformMatrix4fv, Sc: _emscripten_glUniformMatrix4x2fv, Qc: _emscripten_glUniformMatrix4x3fv, kf: _emscripten_glUseProgram, id: _emscripten_glValidateProgram, lf: _emscripten_glVertexAttrib1f, hd: _emscripten_glVertexAttrib1fv, gd: _emscripten_glVertexAttrib2f, mf: _emscripten_glVertexAttrib2fv, fd: _emscripten_glVertexAttrib3f, nf: _emscripten_glVertexAttrib3fv, ed: _emscripten_glVertexAttrib4f, of: _emscripten_glVertexAttrib4fv, Pe: _emscripten_glVertexAttribDivisor, Od: _emscripten_glVertexAttribDivisorANGLE, Nb: _emscripten_glVertexAttribDivisorARB, dd: _emscripten_glVertexAttribDivisorEXT, Ob: _emscripten_glVertexAttribDivisorNV, Ec: _emscripten_glVertexAttribI4i, Cc: _emscripten_glVertexAttribI4iv, Dc: _emscripten_glVertexAttribI4ui, Bc: _emscripten_glVertexAttribI4uiv, Qe: _emscripten_glVertexAttribIPointer, pf: _emscripten_glVertexAttribPointer, qf: _emscripten_glViewport, te: _emscripten_glWaitSync, bb: _emscripten_request_animation_frame_loop, ub: _emscripten_resize_heap, Hb: _environ_get, Ib: _environ_sizes_get, Va: _exit, O: _fd_close, gb: _fd_pread, Bb: _fd_read, kb: _fd_seek, L: _fd_write, R: _getentropy, Ta: _glGetIntegerv, P: _glGetString, Ua: _glGetStringi, U: invoke_diii, db: invoke_fi, _a: invoke_fif, V: invoke_fiii, $a: invoke_fiiiif, o: invoke_i, Ae: invoke_if, ab: invoke_iffiiiiiiii, e: invoke_ii, w: invoke_iif, f: invoke_iii, Xa: invoke_iiif, g: invoke_iiii, j: invoke_iiiii, rb: invoke_iiiiid, F: invoke_iiiiii, r: invoke_iiiiiii, I: invoke_iiiiiiii, Q: invoke_iiiiiiiiii, $: invoke_iiiiiiiiiii, K: invoke_iiiiiiiiiiii, fb: invoke_j, nb: invoke_ji, mb: invoke_jii, eb: invoke_jiiii, n: invoke_v, b: invoke_vi, ba: invoke_vid, C: invoke_vif, E: invoke_viff, A: invoke_vifff, s: invoke_vifffff, _: invoke_viffffffffffffffffffff, Ac: invoke_viffi, c: invoke_vii, H: invoke_viif, X: invoke_viiff, t: invoke_viifff, aa: invoke_viiffff, qb: invoke_viiffiii, q: invoke_viifii, h: invoke_viii, G: invoke_viiif, S: invoke_viiifi, v: invoke_viiifif, i: invoke_viiii, k: invoke_viiiii, Ya: invoke_viiiiiffiifff, Za: invoke_viiiiiffiifi, l: invoke_viiiiii, T: invoke_viiiiiiff, p: invoke_viiiiiii, D: invoke_viiiiiiii, Wa: invoke_viiiiiiiii, z: invoke_viiiiiiiiii, cb: invoke_viiiiiiiiiii, J: invoke_viiiiiiiiiiiiiii, ob: invoke_viij, lb: invoke_viiji, N: _llvm_eh_typeid_for, pb: _strftime_l };
5136
- var wasmExports = createWasm();
5137
- var ___wasm_call_ctors = () => (___wasm_call_ctors = wasmExports["bg"])();
5138
- var _allocate = Module["_allocate"] = (a0) => (_allocate = Module["_allocate"] = wasmExports["dg"])(a0);
5139
- var _deallocate = Module["_deallocate"] = (a0, a1) => (_deallocate = Module["_deallocate"] = wasmExports["eg"])(a0, a1);
5140
- var _init = Module["_init"] = (a0, a1, a2) => (_init = Module["_init"] = wasmExports["fg"])(a0, a1, a2);
5141
- var _tick = Module["_tick"] = (a0, a1) => (_tick = Module["_tick"] = wasmExports["gg"])(a0, a1);
5142
- var _resize_surface = Module["_resize_surface"] = (a0, a1, a2) => (_resize_surface = Module["_resize_surface"] = wasmExports["hg"])(a0, a1, a2);
5143
- var _redraw = Module["_redraw"] = (a0) => (_redraw = Module["_redraw"] = wasmExports["ig"])(a0);
5144
- var _load_scene_json = Module["_load_scene_json"] = (a0, a1, a2) => (_load_scene_json = Module["_load_scene_json"] = wasmExports["jg"])(a0, a1, a2);
5145
- var _load_dummy_scene = Module["_load_dummy_scene"] = (a0) => (_load_dummy_scene = Module["_load_dummy_scene"] = wasmExports["kg"])(a0);
5146
- var _load_benchmark_scene = Module["_load_benchmark_scene"] = (a0, a1, a2) => (_load_benchmark_scene = Module["_load_benchmark_scene"] = wasmExports["lg"])(a0, a1, a2);
5147
- var _pointer_move = Module["_pointer_move"] = (a0, a1, a2) => (_pointer_move = Module["_pointer_move"] = wasmExports["mg"])(a0, a1, a2);
5148
- var _add_font = Module["_add_font"] = (a0, a1, a2, a3, a4) => (_add_font = Module["_add_font"] = wasmExports["ng"])(a0, a1, a2, a3, a4);
5149
- var _add_image = Module["_add_image"] = (a0, a1, a2) => (_add_image = Module["_add_image"] = wasmExports["og"])(a0, a1, a2);
5150
- var _has_missing_fonts = Module["_has_missing_fonts"] = (a0) => (_has_missing_fonts = Module["_has_missing_fonts"] = wasmExports["pg"])(a0);
5151
- var _list_missing_fonts = Module["_list_missing_fonts"] = (a0) => (_list_missing_fonts = Module["_list_missing_fonts"] = wasmExports["qg"])(a0);
5152
- var _list_available_fonts = Module["_list_available_fonts"] = (a0) => (_list_available_fonts = Module["_list_available_fonts"] = wasmExports["rg"])(a0);
5153
- var _set_default_fallback_fonts = Module["_set_default_fallback_fonts"] = (a0, a1, a2) => (_set_default_fallback_fonts = Module["_set_default_fallback_fonts"] = wasmExports["sg"])(a0, a1, a2);
5154
- var _get_default_fallback_fonts = Module["_get_default_fallback_fonts"] = (a0) => (_get_default_fallback_fonts = Module["_get_default_fallback_fonts"] = wasmExports["tg"])(a0);
5155
- var _command = Module["_command"] = (a0, a1, a2, a3) => (_command = Module["_command"] = wasmExports["ug"])(a0, a1, a2, a3);
5156
- var _set_main_camera_transform = Module["_set_main_camera_transform"] = (a0, a1, a2, a3, a4, a5, a6) => (_set_main_camera_transform = Module["_set_main_camera_transform"] = wasmExports["vg"])(a0, a1, a2, a3, a4, a5, a6);
5157
- var _get_node_id_from_point = Module["_get_node_id_from_point"] = (a0, a1, a2) => (_get_node_id_from_point = Module["_get_node_id_from_point"] = wasmExports["wg"])(a0, a1, a2);
5158
- var _get_node_ids_from_point = Module["_get_node_ids_from_point"] = (a0, a1, a2) => (_get_node_ids_from_point = Module["_get_node_ids_from_point"] = wasmExports["xg"])(a0, a1, a2);
5159
- var _get_node_ids_from_envelope = Module["_get_node_ids_from_envelope"] = (a0, a1, a2, a3, a4) => (_get_node_ids_from_envelope = Module["_get_node_ids_from_envelope"] = wasmExports["yg"])(a0, a1, a2, a3, a4);
5160
- var _get_node_absolute_bounding_box = Module["_get_node_absolute_bounding_box"] = (a0, a1, a2) => (_get_node_absolute_bounding_box = Module["_get_node_absolute_bounding_box"] = wasmExports["zg"])(a0, a1, a2);
5161
- var _export_node_as = Module["_export_node_as"] = (a0, a1, a2, a3, a4) => (_export_node_as = Module["_export_node_as"] = wasmExports["Ag"])(a0, a1, a2, a3, a4);
5162
- var _to_vector_network = Module["_to_vector_network"] = (a0, a1, a2) => (_to_vector_network = Module["_to_vector_network"] = wasmExports["Bg"])(a0, a1, a2);
5163
- var _set_debug = Module["_set_debug"] = (a0, a1) => (_set_debug = Module["_set_debug"] = wasmExports["Cg"])(a0, a1);
5164
- var _toggle_debug = Module["_toggle_debug"] = (a0) => (_toggle_debug = Module["_toggle_debug"] = wasmExports["Dg"])(a0);
5165
- var _set_verbose = Module["_set_verbose"] = (a0, a1) => (_set_verbose = Module["_set_verbose"] = wasmExports["Eg"])(a0, a1);
5166
- var _devtools_rendering_set_show_ruler = Module["_devtools_rendering_set_show_ruler"] = (a0, a1) => (_devtools_rendering_set_show_ruler = Module["_devtools_rendering_set_show_ruler"] = wasmExports["Fg"])(a0, a1);
5167
- var _highlight_strokes = Module["_highlight_strokes"] = (a0, a1, a2) => (_highlight_strokes = Module["_highlight_strokes"] = wasmExports["Gg"])(a0, a1, a2);
5168
- var _devtools_rendering_set_show_tiles = Module["_devtools_rendering_set_show_tiles"] = (a0, a1) => (_devtools_rendering_set_show_tiles = Module["_devtools_rendering_set_show_tiles"] = wasmExports["Hg"])(a0, a1);
5169
- var _runtime_renderer_set_cache_tile = Module["_runtime_renderer_set_cache_tile"] = (a0, a1) => (_runtime_renderer_set_cache_tile = Module["_runtime_renderer_set_cache_tile"] = wasmExports["Ig"])(a0, a1);
5170
- var _devtools_rendering_set_show_fps_meter = Module["_devtools_rendering_set_show_fps_meter"] = (a0, a1) => (_devtools_rendering_set_show_fps_meter = Module["_devtools_rendering_set_show_fps_meter"] = wasmExports["Jg"])(a0, a1);
5171
- var _devtools_rendering_set_show_stats = Module["_devtools_rendering_set_show_stats"] = (a0, a1) => (_devtools_rendering_set_show_stats = Module["_devtools_rendering_set_show_stats"] = wasmExports["Kg"])(a0, a1);
5172
- var _devtools_rendering_set_show_hit_testing = Module["_devtools_rendering_set_show_hit_testing"] = (a0, a1) => (_devtools_rendering_set_show_hit_testing = Module["_devtools_rendering_set_show_hit_testing"] = wasmExports["Lg"])(a0, a1);
5173
- var _main = Module["_main"] = (a0, a1) => (_main = Module["_main"] = wasmExports["Mg"])(a0, a1);
5174
- var _malloc = (a0) => (_malloc = wasmExports["Ng"])(a0);
5175
- var _htonl = (a0) => (_htonl = wasmExports["htonl"])(a0);
5176
- var _htons = (a0) => (_htons = wasmExports["htons"])(a0);
5177
- var _emscripten_builtin_memalign = (a0, a1) => (_emscripten_builtin_memalign = wasmExports["Og"])(a0, a1);
5178
- var _ntohs = (a0) => (_ntohs = wasmExports["ntohs"])(a0);
5179
- var _setThrew = (a0, a1) => (_setThrew = wasmExports["Pg"])(a0, a1);
5180
- var __emscripten_tempret_set = (a0) => (__emscripten_tempret_set = wasmExports["Qg"])(a0);
5181
- var __emscripten_stack_restore = (a0) => (__emscripten_stack_restore = wasmExports["Rg"])(a0);
5182
- var __emscripten_stack_alloc = (a0) => (__emscripten_stack_alloc = wasmExports["Sg"])(a0);
5183
- var _emscripten_stack_get_current = () => (_emscripten_stack_get_current = wasmExports["Tg"])();
5184
- var ___cxa_free_exception = (a0) => (___cxa_free_exception = wasmExports["__cxa_free_exception"])(a0);
5185
- var ___cxa_decrement_exception_refcount = (a0) => (___cxa_decrement_exception_refcount = wasmExports["Ug"])(a0);
5186
- var ___cxa_increment_exception_refcount = (a0) => (___cxa_increment_exception_refcount = wasmExports["Vg"])(a0);
5187
- var ___cxa_can_catch = (a0, a1, a2) => (___cxa_can_catch = wasmExports["Wg"])(a0, a1, a2);
5188
- var ___cxa_is_pointer_type = (a0) => (___cxa_is_pointer_type = wasmExports["Xg"])(a0);
5189
- var dynCall_viij = Module["dynCall_viij"] = (a0, a1, a2, a3, a4) => (dynCall_viij = Module["dynCall_viij"] = wasmExports["Yg"])(a0, a1, a2, a3, a4);
5190
- var dynCall_ji = Module["dynCall_ji"] = (a0, a1) => (dynCall_ji = Module["dynCall_ji"] = wasmExports["Zg"])(a0, a1);
5191
- var dynCall_jii = Module["dynCall_jii"] = (a0, a1, a2) => (dynCall_jii = Module["dynCall_jii"] = wasmExports["_g"])(a0, a1, a2);
5192
- var dynCall_viiji = Module["dynCall_viiji"] = (a0, a1, a2, a3, a4, a5) => (dynCall_viiji = Module["dynCall_viiji"] = wasmExports["$g"])(a0, a1, a2, a3, a4, a5);
5193
- var dynCall_j = Module["dynCall_j"] = (a0) => (dynCall_j = Module["dynCall_j"] = wasmExports["ah"])(a0);
5194
- var dynCall_jiiii = Module["dynCall_jiiii"] = (a0, a1, a2, a3, a4) => (dynCall_jiiii = Module["dynCall_jiiii"] = wasmExports["bh"])(a0, a1, a2, a3, a4);
4985
+ {
4986
+ if (Module["noExitRuntime"]) noExitRuntime = Module["noExitRuntime"];
4987
+ if (Module["preloadPlugins"]) preloadPlugins = Module["preloadPlugins"];
4988
+ if (Module["print"]) out = Module["print"];
4989
+ if (Module["printErr"]) err = Module["printErr"];
4990
+ if (Module["wasmBinary"]) wasmBinary = Module["wasmBinary"];
4991
+ if (Module["arguments"]) arguments_ = Module["arguments"];
4992
+ if (Module["thisProgram"]) thisProgram = Module["thisProgram"];
4993
+ }
4994
+ Module["UTF8ToString"] = UTF8ToString;
4995
+ Module["stringToUTF8"] = stringToUTF8;
4996
+ Module["lengthBytesUTF8"] = lengthBytesUTF8;
4997
+ Module["GL"] = GL;
4998
+ var wasmImports = { w: ___cxa_begin_catch, z: ___cxa_end_catch, a: ___cxa_find_matching_catch_2, m: ___cxa_find_matching_catch_3, O: ___cxa_find_matching_catch_4, Z: ___cxa_rethrow, x: ___cxa_throw, hb: ___cxa_uncaught_exceptions, d: ___resumeException, $: ___syscall_fcntl64, vb: ___syscall_fstat64, rb: ___syscall_getcwd, xb: ___syscall_ioctl, sb: ___syscall_lstat64, tb: ___syscall_newfstatat, _: ___syscall_openat, ub: ___syscall_stat64, Ab: __abort_js, jb: __emscripten_throw_longjmp, ob: __gmtime_js, mb: __mmap_js, nb: __munmap_js, Bb: __tzset_js, zb: _clock_time_get, yb: _emscripten_date_now, P: _emscripten_get_now, Gf: _emscripten_glActiveTexture, Hf: _emscripten_glAttachShader, ie: _emscripten_glBeginQuery, ce: _emscripten_glBeginQueryEXT, Ic: _emscripten_glBeginTransformFeedback, If: _emscripten_glBindAttribLocation, Jf: _emscripten_glBindBuffer, Fc: _emscripten_glBindBufferBase, Gc: _emscripten_glBindBufferRange, Ge: _emscripten_glBindFramebuffer, He: _emscripten_glBindRenderbuffer, oe: _emscripten_glBindSampler, Kf: _emscripten_glBindTexture, Ub: _emscripten_glBindTransformFeedback, bf: _emscripten_glBindVertexArray, ef: _emscripten_glBindVertexArrayOES, Lf: _emscripten_glBlendColor, Mf: _emscripten_glBlendEquation, Md: _emscripten_glBlendEquationSeparate, Nf: _emscripten_glBlendFunc, Ld: _emscripten_glBlendFuncSeparate, Ae: _emscripten_glBlitFramebuffer, Of: _emscripten_glBufferData, Pf: _emscripten_glBufferSubData, Ie: _emscripten_glCheckFramebufferStatus, Qf: _emscripten_glClear, ic: _emscripten_glClearBufferfi, jc: _emscripten_glClearBufferfv, lc: _emscripten_glClearBufferiv, kc: _emscripten_glClearBufferuiv, Rf: _emscripten_glClearColor, Kd: _emscripten_glClearDepthf, Sf: _emscripten_glClearStencil, xe: _emscripten_glClientWaitSync, bd: _emscripten_glClipControlEXT, Tf: _emscripten_glColorMask, Uf: _emscripten_glCompileShader, Vf: _emscripten_glCompressedTexImage2D, Uc: _emscripten_glCompressedTexImage3D, Wf: _emscripten_glCompressedTexSubImage2D, Tc: _emscripten_glCompressedTexSubImage3D, ze: _emscripten_glCopyBufferSubData, Jd: _emscripten_glCopyTexImage2D, Xf: _emscripten_glCopyTexSubImage2D, Vc: _emscripten_glCopyTexSubImage3D, Yf: _emscripten_glCreateProgram, Zf: _emscripten_glCreateShader, _f: _emscripten_glCullFace, $f: _emscripten_glDeleteBuffers, Je: _emscripten_glDeleteFramebuffers, ag: _emscripten_glDeleteProgram, je: _emscripten_glDeleteQueries, de: _emscripten_glDeleteQueriesEXT, Ke: _emscripten_glDeleteRenderbuffers, pe: _emscripten_glDeleteSamplers, bg: _emscripten_glDeleteShader, ye: _emscripten_glDeleteSync, cg: _emscripten_glDeleteTextures, Tb: _emscripten_glDeleteTransformFeedbacks, cf: _emscripten_glDeleteVertexArrays, ff: _emscripten_glDeleteVertexArraysOES, Id: _emscripten_glDepthFunc, dg: _emscripten_glDepthMask, Hd: _emscripten_glDepthRangef, Gd: _emscripten_glDetachShader, eg: _emscripten_glDisable, fg: _emscripten_glDisableVertexAttribArray, fa: _emscripten_glDrawArrays, $e: _emscripten_glDrawArraysInstanced, Pd: _emscripten_glDrawArraysInstancedANGLE, Gb: _emscripten_glDrawArraysInstancedARB, Ye: _emscripten_glDrawArraysInstancedBaseInstanceWEBGL, _c: _emscripten_glDrawArraysInstancedEXT, Hb: _emscripten_glDrawArraysInstancedNV, We: _emscripten_glDrawBuffers, Yc: _emscripten_glDrawBuffersEXT, Qd: _emscripten_glDrawBuffersWEBGL, ga: _emscripten_glDrawElements, af: _emscripten_glDrawElementsInstanced, Od: _emscripten_glDrawElementsInstancedANGLE, Eb: _emscripten_glDrawElementsInstancedARB, Ze: _emscripten_glDrawElementsInstancedBaseVertexBaseInstanceWEBGL, Fb: _emscripten_glDrawElementsInstancedEXT, Zc: _emscripten_glDrawElementsInstancedNV, Pe: _emscripten_glDrawRangeElements, ha: _emscripten_glEnable, ia: _emscripten_glEnableVertexAttribArray, ke: _emscripten_glEndQuery, ee: _emscripten_glEndQueryEXT, Hc: _emscripten_glEndTransformFeedback, ue: _emscripten_glFenceSync, ja: _emscripten_glFinish, ka: _emscripten_glFlush, Le: _emscripten_glFramebufferRenderbuffer, Me: _emscripten_glFramebufferTexture2D, Lc: _emscripten_glFramebufferTextureLayer, la: _emscripten_glFrontFace, ma: _emscripten_glGenBuffers, Ne: _emscripten_glGenFramebuffers, le: _emscripten_glGenQueries, fe: _emscripten_glGenQueriesEXT, Oe: _emscripten_glGenRenderbuffers, qe: _emscripten_glGenSamplers, na: _emscripten_glGenTextures, Sb: _emscripten_glGenTransformFeedbacks, _e: _emscripten_glGenVertexArrays, gf: _emscripten_glGenVertexArraysOES, Ce: _emscripten_glGenerateMipmap, Fd: _emscripten_glGetActiveAttrib, Ed: _emscripten_glGetActiveUniform, dc: _emscripten_glGetActiveUniformBlockName, ec: _emscripten_glGetActiveUniformBlockiv, gc: _emscripten_glGetActiveUniformsiv, Dd: _emscripten_glGetAttachedShaders, Cd: _emscripten_glGetAttribLocation, Bd: _emscripten_glGetBooleanv, Zb: _emscripten_glGetBufferParameteri64v, oa: _emscripten_glGetBufferParameteriv, pa: _emscripten_glGetError, qa: _emscripten_glGetFloatv, uc: _emscripten_glGetFragDataLocation, De: _emscripten_glGetFramebufferAttachmentParameteriv, _b: _emscripten_glGetInteger64i_v, ac: _emscripten_glGetInteger64v, Jc: _emscripten_glGetIntegeri_v, ra: _emscripten_glGetIntegerv, Kb: _emscripten_glGetInternalformativ, Ob: _emscripten_glGetProgramBinary, sa: _emscripten_glGetProgramInfoLog, ta: _emscripten_glGetProgramiv, $d: _emscripten_glGetQueryObjecti64vEXT, Sd: _emscripten_glGetQueryObjectivEXT, ae: _emscripten_glGetQueryObjectui64vEXT, me: _emscripten_glGetQueryObjectuiv, ge: _emscripten_glGetQueryObjectuivEXT, ne: _emscripten_glGetQueryiv, he: _emscripten_glGetQueryivEXT, Ee: _emscripten_glGetRenderbufferParameteriv, Vb: _emscripten_glGetSamplerParameterfv, Wb: _emscripten_glGetSamplerParameteriv, ua: _emscripten_glGetShaderInfoLog, Yd: _emscripten_glGetShaderPrecisionFormat, Ad: _emscripten_glGetShaderSource, va: _emscripten_glGetShaderiv, wa: _emscripten_glGetString, df: _emscripten_glGetStringi, $b: _emscripten_glGetSynciv, zd: _emscripten_glGetTexParameterfv, yd: _emscripten_glGetTexParameteriv, Dc: _emscripten_glGetTransformFeedbackVarying, fc: _emscripten_glGetUniformBlockIndex, hc: _emscripten_glGetUniformIndices, xa: _emscripten_glGetUniformLocation, xd: _emscripten_glGetUniformfv, wd: _emscripten_glGetUniformiv, vc: _emscripten_glGetUniformuiv, Cc: _emscripten_glGetVertexAttribIiv, Bc: _emscripten_glGetVertexAttribIuiv, td: _emscripten_glGetVertexAttribPointerv, vd: _emscripten_glGetVertexAttribfv, ud: _emscripten_glGetVertexAttribiv, sd: _emscripten_glHint, Zd: _emscripten_glInvalidateFramebuffer, _d: _emscripten_glInvalidateSubFramebuffer, rd: _emscripten_glIsBuffer, qd: _emscripten_glIsEnabled, pd: _emscripten_glIsFramebuffer, od: _emscripten_glIsProgram, Sc: _emscripten_glIsQuery, Td: _emscripten_glIsQueryEXT, nd: _emscripten_glIsRenderbuffer, Yb: _emscripten_glIsSampler, md: _emscripten_glIsShader, ve: _emscripten_glIsSync, ya: _emscripten_glIsTexture, Rb: _emscripten_glIsTransformFeedback, Kc: _emscripten_glIsVertexArray, Rd: _emscripten_glIsVertexArrayOES, za: _emscripten_glLineWidth, Aa: _emscripten_glLinkProgram, Ue: _emscripten_glMultiDrawArraysInstancedBaseInstanceWEBGL, Ve: _emscripten_glMultiDrawElementsInstancedBaseVertexBaseInstanceWEBGL, Qb: _emscripten_glPauseTransformFeedback, Ba: _emscripten_glPixelStorei, ad: _emscripten_glPolygonModeWEBGL, ld: _emscripten_glPolygonOffset, cd: _emscripten_glPolygonOffsetClampEXT, Nb: _emscripten_glProgramBinary, Mb: _emscripten_glProgramParameteri, be: _emscripten_glQueryCounterEXT, Xe: _emscripten_glReadBuffer, Ca: _emscripten_glReadPixels, kd: _emscripten_glReleaseShaderCompiler, Fe: _emscripten_glRenderbufferStorage, Be: _emscripten_glRenderbufferStorageMultisample, Pb: _emscripten_glResumeTransformFeedback, jd: _emscripten_glSampleCoverage, re: _emscripten_glSamplerParameterf, Xb: _emscripten_glSamplerParameterfv, se: _emscripten_glSamplerParameteri, te: _emscripten_glSamplerParameteriv, Da: _emscripten_glScissor, id: _emscripten_glShaderBinary, Ea: _emscripten_glShaderSource, Fa: _emscripten_glStencilFunc, Ga: _emscripten_glStencilFuncSeparate, Ha: _emscripten_glStencilMask, Ia: _emscripten_glStencilMaskSeparate, Ja: _emscripten_glStencilOp, Ka: _emscripten_glStencilOpSeparate, La: _emscripten_glTexImage2D, Xc: _emscripten_glTexImage3D, Ma: _emscripten_glTexParameterf, Na: _emscripten_glTexParameterfv, Oa: _emscripten_glTexParameteri, Pa: _emscripten_glTexParameteriv, Re: _emscripten_glTexStorage2D, Lb: _emscripten_glTexStorage3D, Qa: _emscripten_glTexSubImage2D, Wc: _emscripten_glTexSubImage3D, Ec: _emscripten_glTransformFeedbackVaryings, Ra: _emscripten_glUniform1f, Sa: _emscripten_glUniform1fv, Cf: _emscripten_glUniform1i, Df: _emscripten_glUniform1iv, tc: _emscripten_glUniform1ui, pc: _emscripten_glUniform1uiv, Ef: _emscripten_glUniform2f, Ff: _emscripten_glUniform2fv, Bf: _emscripten_glUniform2i, Af: _emscripten_glUniform2iv, sc: _emscripten_glUniform2ui, oc: _emscripten_glUniform2uiv, zf: _emscripten_glUniform3f, yf: _emscripten_glUniform3fv, xf: _emscripten_glUniform3i, wf: _emscripten_glUniform3iv, rc: _emscripten_glUniform3ui, nc: _emscripten_glUniform3uiv, vf: _emscripten_glUniform4f, uf: _emscripten_glUniform4fv, hf: _emscripten_glUniform4i, jf: _emscripten_glUniform4iv, qc: _emscripten_glUniform4ui, mc: _emscripten_glUniform4uiv, bc: _emscripten_glUniformBlockBinding, kf: _emscripten_glUniformMatrix2fv, Rc: _emscripten_glUniformMatrix2x3fv, Pc: _emscripten_glUniformMatrix2x4fv, lf: _emscripten_glUniformMatrix3fv, Qc: _emscripten_glUniformMatrix3x2fv, Nc: _emscripten_glUniformMatrix3x4fv, mf: _emscripten_glUniformMatrix4fv, Oc: _emscripten_glUniformMatrix4x2fv, Mc: _emscripten_glUniformMatrix4x3fv, nf: _emscripten_glUseProgram, hd: _emscripten_glValidateProgram, of: _emscripten_glVertexAttrib1f, gd: _emscripten_glVertexAttrib1fv, fd: _emscripten_glVertexAttrib2f, pf: _emscripten_glVertexAttrib2fv, ed: _emscripten_glVertexAttrib3f, qf: _emscripten_glVertexAttrib3fv, dd: _emscripten_glVertexAttrib4f, rf: _emscripten_glVertexAttrib4fv, Se: _emscripten_glVertexAttribDivisor, Nd: _emscripten_glVertexAttribDivisorANGLE, Ib: _emscripten_glVertexAttribDivisorARB, $c: _emscripten_glVertexAttribDivisorEXT, Jb: _emscripten_glVertexAttribDivisorNV, Ac: _emscripten_glVertexAttribI4i, yc: _emscripten_glVertexAttribI4iv, zc: _emscripten_glVertexAttribI4ui, wc: _emscripten_glVertexAttribI4uiv, Te: _emscripten_glVertexAttribIPointer, sf: _emscripten_glVertexAttribPointer, tf: _emscripten_glViewport, we: _emscripten_glWaitSync, db: _emscripten_request_animation_frame_loop, kb: _emscripten_resize_heap, Cb: _environ_get, Db: _environ_sizes_get, Va: _exit, Q: _fd_close, lb: _fd_pread, wb: _fd_read, pb: _fd_seek, M: _fd_write, Ta: _glGetIntegerv, S: _glGetString, Ua: _glGetStringi, Wd: invoke_dd, Vd: invoke_ddd, Xd: invoke_dddd, X: invoke_diii, Ud: invoke_fff, ca: invoke_fi, _a: invoke_fif, Y: invoke_fiii, $a: invoke_fiiiif, p: invoke_i, cc: invoke_if, ab: invoke_iffiiiiiiii, f: invoke_ii, y: invoke_iif, g: invoke_iii, Xa: invoke_iiif, h: invoke_iiii, k: invoke_iiiii, gb: invoke_iiiiid, L: invoke_iiiiii, s: invoke_iiiiiii, H: invoke_iiiiiiii, T: invoke_iiiiiiiiii, aa: invoke_iiiiiiiiiii, J: invoke_iiiiiiiiiiii, ib: invoke_j, bb: invoke_ji, o: invoke_jii, K: invoke_jiiii, n: invoke_v, b: invoke_vi, ea: invoke_vid, E: invoke_vif, C: invoke_viff, B: invoke_vifff, t: invoke_vifffff, U: invoke_viffffffffffffffffffff, fb: invoke_viffi, c: invoke_vii, F: invoke_viif, W: invoke_viiff, u: invoke_viifff, V: invoke_viiffff, xc: invoke_viiffiii, r: invoke_viifii, e: invoke_viii, D: invoke_viiif, da: invoke_viiifi, v: invoke_viiifif, i: invoke_viiii, j: invoke_viiiii, Ya: invoke_viiiiiffiifff, Za: invoke_viiiiiffiifi, l: invoke_viiiiii, ba: invoke_viiiiiiff, q: invoke_viiiiiii, G: invoke_viiiiiiii, Wa: invoke_viiiiiiiii, A: invoke_viiiiiiiiii, eb: invoke_viiiiiiiiiii, I: invoke_viiiiiiiiiiiiiii, cb: invoke_viij, Qe: invoke_viiji, N: invoke_vijjjj, R: _llvm_eh_typeid_for, qb: _random_get };
4999
+ var wasmExports = await createWasm();
5000
+ var ___wasm_call_ctors = wasmExports["hg"];
5001
+ var _allocate = Module["_allocate"] = wasmExports["jg"];
5002
+ var _deallocate = Module["_deallocate"] = wasmExports["kg"];
5003
+ var _init = Module["_init"] = wasmExports["lg"];
5004
+ var _tick = Module["_tick"] = wasmExports["mg"];
5005
+ var _resize_surface = Module["_resize_surface"] = wasmExports["ng"];
5006
+ var _redraw = Module["_redraw"] = wasmExports["og"];
5007
+ var _load_scene_json = Module["_load_scene_json"] = wasmExports["pg"];
5008
+ var _load_dummy_scene = Module["_load_dummy_scene"] = wasmExports["qg"];
5009
+ var _load_benchmark_scene = Module["_load_benchmark_scene"] = wasmExports["rg"];
5010
+ var _pointer_move = Module["_pointer_move"] = wasmExports["sg"];
5011
+ var _add_font = Module["_add_font"] = wasmExports["tg"];
5012
+ var _add_image = Module["_add_image"] = wasmExports["ug"];
5013
+ var _has_missing_fonts = Module["_has_missing_fonts"] = wasmExports["vg"];
5014
+ var _list_missing_fonts = Module["_list_missing_fonts"] = wasmExports["wg"];
5015
+ var _list_available_fonts = Module["_list_available_fonts"] = wasmExports["xg"];
5016
+ var _set_default_fallback_fonts = Module["_set_default_fallback_fonts"] = wasmExports["yg"];
5017
+ var _get_default_fallback_fonts = Module["_get_default_fallback_fonts"] = wasmExports["zg"];
5018
+ var _command = Module["_command"] = wasmExports["Ag"];
5019
+ var _set_main_camera_transform = Module["_set_main_camera_transform"] = wasmExports["Bg"];
5020
+ var _get_node_id_from_point = Module["_get_node_id_from_point"] = wasmExports["Cg"];
5021
+ var _get_node_ids_from_point = Module["_get_node_ids_from_point"] = wasmExports["Dg"];
5022
+ var _get_node_ids_from_envelope = Module["_get_node_ids_from_envelope"] = wasmExports["Eg"];
5023
+ var _get_node_absolute_bounding_box = Module["_get_node_absolute_bounding_box"] = wasmExports["Fg"];
5024
+ var _export_node_as = Module["_export_node_as"] = wasmExports["Gg"];
5025
+ var _to_vector_network = Module["_to_vector_network"] = wasmExports["Hg"];
5026
+ var _set_debug = Module["_set_debug"] = wasmExports["Ig"];
5027
+ var _toggle_debug = Module["_toggle_debug"] = wasmExports["Jg"];
5028
+ var _set_verbose = Module["_set_verbose"] = wasmExports["Kg"];
5029
+ var _devtools_rendering_set_show_ruler = Module["_devtools_rendering_set_show_ruler"] = wasmExports["Lg"];
5030
+ var _highlight_strokes = Module["_highlight_strokes"] = wasmExports["Mg"];
5031
+ var _devtools_rendering_set_show_tiles = Module["_devtools_rendering_set_show_tiles"] = wasmExports["Ng"];
5032
+ var _runtime_renderer_set_cache_tile = Module["_runtime_renderer_set_cache_tile"] = wasmExports["Og"];
5033
+ var _devtools_rendering_set_show_fps_meter = Module["_devtools_rendering_set_show_fps_meter"] = wasmExports["Pg"];
5034
+ var _devtools_rendering_set_show_stats = Module["_devtools_rendering_set_show_stats"] = wasmExports["Qg"];
5035
+ var _devtools_rendering_set_show_hit_testing = Module["_devtools_rendering_set_show_hit_testing"] = wasmExports["Rg"];
5036
+ var _main = Module["_main"] = wasmExports["Sg"];
5037
+ var _malloc = wasmExports["Tg"];
5038
+ var _emscripten_builtin_memalign = wasmExports["Ug"];
5039
+ var _setThrew = wasmExports["Vg"];
5040
+ var __emscripten_tempret_set = wasmExports["Wg"];
5041
+ var __emscripten_stack_restore = wasmExports["Xg"];
5042
+ var __emscripten_stack_alloc = wasmExports["Yg"];
5043
+ var _emscripten_stack_get_current = wasmExports["Zg"];
5044
+ var ___cxa_decrement_exception_refcount = wasmExports["_g"];
5045
+ var ___cxa_increment_exception_refcount = wasmExports["$g"];
5046
+ var ___cxa_can_catch = wasmExports["ah"];
5047
+ var ___cxa_get_exception_ptr = wasmExports["bh"];
5195
5048
  function invoke_vii(index, a1, a2) {
5196
5049
  var sp = stackSave();
5197
5050
  try {
@@ -5302,60 +5155,91 @@ var require_grida_canvas_wasm = __commonJS({
5302
5155
  _setThrew(1, 0);
5303
5156
  }
5304
5157
  }
5305
- function invoke_viiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8) {
5158
+ function invoke_iiiii(index, a1, a2, a3, a4) {
5306
5159
  var sp = stackSave();
5307
5160
  try {
5308
- getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8);
5161
+ return getWasmTableEntry(index)(a1, a2, a3, a4);
5309
5162
  } catch (e) {
5310
5163
  stackRestore(sp);
5311
5164
  if (e !== e + 0) throw e;
5312
5165
  _setThrew(1, 0);
5313
5166
  }
5314
5167
  }
5315
- function invoke_iiiii(index, a1, a2, a3, a4) {
5168
+ function invoke_iif(index, a1, a2) {
5316
5169
  var sp = stackSave();
5317
5170
  try {
5318
- return getWasmTableEntry(index)(a1, a2, a3, a4);
5171
+ return getWasmTableEntry(index)(a1, a2);
5319
5172
  } catch (e) {
5320
5173
  stackRestore(sp);
5321
5174
  if (e !== e + 0) throw e;
5322
5175
  _setThrew(1, 0);
5323
5176
  }
5324
5177
  }
5325
- function invoke_v(index) {
5178
+ function invoke_i(index) {
5326
5179
  var sp = stackSave();
5327
5180
  try {
5328
- getWasmTableEntry(index)();
5181
+ return getWasmTableEntry(index)();
5329
5182
  } catch (e) {
5330
5183
  stackRestore(sp);
5331
5184
  if (e !== e + 0) throw e;
5332
5185
  _setThrew(1, 0);
5333
5186
  }
5334
5187
  }
5335
- function invoke_i(index) {
5188
+ function invoke_jii(index, a1, a2) {
5336
5189
  var sp = stackSave();
5337
5190
  try {
5338
- return getWasmTableEntry(index)();
5191
+ return getWasmTableEntry(index)(a1, a2);
5339
5192
  } catch (e) {
5340
5193
  stackRestore(sp);
5341
5194
  if (e !== e + 0) throw e;
5342
5195
  _setThrew(1, 0);
5196
+ return 0n;
5343
5197
  }
5344
5198
  }
5345
- function invoke_iif(index, a1, a2) {
5199
+ function invoke_viiji(index, a1, a2, a3, a4) {
5346
5200
  var sp = stackSave();
5347
5201
  try {
5348
- return getWasmTableEntry(index)(a1, a2);
5202
+ getWasmTableEntry(index)(a1, a2, a3, a4);
5349
5203
  } catch (e) {
5350
5204
  stackRestore(sp);
5351
5205
  if (e !== e + 0) throw e;
5352
5206
  _setThrew(1, 0);
5353
5207
  }
5354
5208
  }
5355
- function invoke_if(index, a1) {
5209
+ function invoke_viiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8) {
5356
5210
  var sp = stackSave();
5357
5211
  try {
5358
- return getWasmTableEntry(index)(a1);
5212
+ getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8);
5213
+ } catch (e) {
5214
+ stackRestore(sp);
5215
+ if (e !== e + 0) throw e;
5216
+ _setThrew(1, 0);
5217
+ }
5218
+ }
5219
+ function invoke_viiifi(index, a1, a2, a3, a4, a5) {
5220
+ var sp = stackSave();
5221
+ try {
5222
+ getWasmTableEntry(index)(a1, a2, a3, a4, a5);
5223
+ } catch (e) {
5224
+ stackRestore(sp);
5225
+ if (e !== e + 0) throw e;
5226
+ _setThrew(1, 0);
5227
+ }
5228
+ }
5229
+ function invoke_viifii(index, a1, a2, a3, a4, a5) {
5230
+ var sp = stackSave();
5231
+ try {
5232
+ getWasmTableEntry(index)(a1, a2, a3, a4, a5);
5233
+ } catch (e) {
5234
+ stackRestore(sp);
5235
+ if (e !== e + 0) throw e;
5236
+ _setThrew(1, 0);
5237
+ }
5238
+ }
5239
+ function invoke_v(index) {
5240
+ var sp = stackSave();
5241
+ try {
5242
+ getWasmTableEntry(index)();
5359
5243
  } catch (e) {
5360
5244
  stackRestore(sp);
5361
5245
  if (e !== e + 0) throw e;
@@ -5402,70 +5286,80 @@ var require_grida_canvas_wasm = __commonJS({
5402
5286
  _setThrew(1, 0);
5403
5287
  }
5404
5288
  }
5405
- function invoke_viiffff(index, a1, a2, a3, a4, a5, a6) {
5289
+ function invoke_vifff(index, a1, a2, a3, a4) {
5406
5290
  var sp = stackSave();
5407
5291
  try {
5408
- getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6);
5292
+ getWasmTableEntry(index)(a1, a2, a3, a4);
5409
5293
  } catch (e) {
5410
5294
  stackRestore(sp);
5411
5295
  if (e !== e + 0) throw e;
5412
5296
  _setThrew(1, 0);
5413
5297
  }
5414
5298
  }
5415
- function invoke_viifii(index, a1, a2, a3, a4, a5) {
5299
+ function invoke_fi(index, a1) {
5416
5300
  var sp = stackSave();
5417
5301
  try {
5418
- getWasmTableEntry(index)(a1, a2, a3, a4, a5);
5302
+ return getWasmTableEntry(index)(a1);
5419
5303
  } catch (e) {
5420
5304
  stackRestore(sp);
5421
5305
  if (e !== e + 0) throw e;
5422
5306
  _setThrew(1, 0);
5423
5307
  }
5424
5308
  }
5425
- function invoke_iiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {
5309
+ function invoke_viiffiii(index, a1, a2, a3, a4, a5, a6, a7) {
5426
5310
  var sp = stackSave();
5427
5311
  try {
5428
- return getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);
5312
+ getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7);
5429
5313
  } catch (e) {
5430
5314
  stackRestore(sp);
5431
5315
  if (e !== e + 0) throw e;
5432
5316
  _setThrew(1, 0);
5433
5317
  }
5434
5318
  }
5435
- function invoke_vif(index, a1, a2) {
5319
+ function invoke_viiiiiiff(index, a1, a2, a3, a4, a5, a6, a7, a8) {
5436
5320
  var sp = stackSave();
5437
5321
  try {
5438
- getWasmTableEntry(index)(a1, a2);
5322
+ getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8);
5439
5323
  } catch (e) {
5440
5324
  stackRestore(sp);
5441
5325
  if (e !== e + 0) throw e;
5442
5326
  _setThrew(1, 0);
5443
5327
  }
5444
5328
  }
5445
- function invoke_viifff(index, a1, a2, a3, a4, a5) {
5329
+ function invoke_if(index, a1) {
5446
5330
  var sp = stackSave();
5447
5331
  try {
5448
- getWasmTableEntry(index)(a1, a2, a3, a4, a5);
5332
+ return getWasmTableEntry(index)(a1);
5449
5333
  } catch (e) {
5450
5334
  stackRestore(sp);
5451
5335
  if (e !== e + 0) throw e;
5452
5336
  _setThrew(1, 0);
5453
5337
  }
5454
5338
  }
5455
- function invoke_viffffffffffffffffffff(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21) {
5339
+ function invoke_iiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {
5456
5340
  var sp = stackSave();
5457
5341
  try {
5458
- getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21);
5342
+ return getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);
5459
5343
  } catch (e) {
5460
5344
  stackRestore(sp);
5461
5345
  if (e !== e + 0) throw e;
5462
5346
  _setThrew(1, 0);
5463
5347
  }
5464
5348
  }
5465
- function invoke_viffi(index, a1, a2, a3, a4) {
5349
+ function invoke_vif(index, a1, a2) {
5466
5350
  var sp = stackSave();
5467
5351
  try {
5468
- getWasmTableEntry(index)(a1, a2, a3, a4);
5352
+ getWasmTableEntry(index)(a1, a2);
5353
+ } catch (e) {
5354
+ stackRestore(sp);
5355
+ if (e !== e + 0) throw e;
5356
+ _setThrew(1, 0);
5357
+ }
5358
+ }
5359
+ function invoke_viifff(index, a1, a2, a3, a4, a5) {
5360
+ var sp = stackSave();
5361
+ try {
5362
+ getWasmTableEntry(index)(a1, a2, a3, a4, a5);
5469
5363
  } catch (e) {
5470
5364
  stackRestore(sp);
5471
5365
  if (e !== e + 0) throw e;
@@ -5492,7 +5386,7 @@ var require_grida_canvas_wasm = __commonJS({
5492
5386
  _setThrew(1, 0);
5493
5387
  }
5494
5388
  }
5495
- function invoke_vifff(index, a1, a2, a3, a4) {
5389
+ function invoke_viiff(index, a1, a2, a3, a4) {
5496
5390
  var sp = stackSave();
5497
5391
  try {
5498
5392
  getWasmTableEntry(index)(a1, a2, a3, a4);
@@ -5502,7 +5396,7 @@ var require_grida_canvas_wasm = __commonJS({
5502
5396
  _setThrew(1, 0);
5503
5397
  }
5504
5398
  }
5505
- function invoke_viiff(index, a1, a2, a3, a4) {
5399
+ function invoke_viffi(index, a1, a2, a3, a4) {
5506
5400
  var sp = stackSave();
5507
5401
  try {
5508
5402
  getWasmTableEntry(index)(a1, a2, a3, a4);
@@ -5512,80 +5406,81 @@ var require_grida_canvas_wasm = __commonJS({
5512
5406
  _setThrew(1, 0);
5513
5407
  }
5514
5408
  }
5515
- function invoke_viiffiii(index, a1, a2, a3, a4, a5, a6, a7) {
5409
+ function invoke_viiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) {
5516
5410
  var sp = stackSave();
5517
5411
  try {
5518
- getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7);
5412
+ getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11);
5519
5413
  } catch (e) {
5520
5414
  stackRestore(sp);
5521
5415
  if (e !== e + 0) throw e;
5522
5416
  _setThrew(1, 0);
5523
5417
  }
5524
5418
  }
5525
- function invoke_viiiiiiff(index, a1, a2, a3, a4, a5, a6, a7, a8) {
5419
+ function invoke_viiffff(index, a1, a2, a3, a4, a5, a6) {
5526
5420
  var sp = stackSave();
5527
5421
  try {
5528
- getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8);
5422
+ getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6);
5529
5423
  } catch (e) {
5530
5424
  stackRestore(sp);
5531
5425
  if (e !== e + 0) throw e;
5532
5426
  _setThrew(1, 0);
5533
5427
  }
5534
5428
  }
5535
- function invoke_fi(index, a1) {
5429
+ function invoke_viffffffffffffffffffff(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21) {
5536
5430
  var sp = stackSave();
5537
5431
  try {
5538
- return getWasmTableEntry(index)(a1);
5432
+ getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21);
5539
5433
  } catch (e) {
5540
5434
  stackRestore(sp);
5541
5435
  if (e !== e + 0) throw e;
5542
5436
  _setThrew(1, 0);
5543
5437
  }
5544
5438
  }
5545
- function invoke_viiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) {
5439
+ function invoke_viij(index, a1, a2, a3) {
5546
5440
  var sp = stackSave();
5547
5441
  try {
5548
- getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11);
5442
+ getWasmTableEntry(index)(a1, a2, a3);
5549
5443
  } catch (e) {
5550
5444
  stackRestore(sp);
5551
5445
  if (e !== e + 0) throw e;
5552
5446
  _setThrew(1, 0);
5553
5447
  }
5554
5448
  }
5555
- function invoke_iffiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {
5449
+ function invoke_ji(index, a1) {
5556
5450
  var sp = stackSave();
5557
5451
  try {
5558
- return getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);
5452
+ return getWasmTableEntry(index)(a1);
5559
5453
  } catch (e) {
5560
5454
  stackRestore(sp);
5561
5455
  if (e !== e + 0) throw e;
5562
5456
  _setThrew(1, 0);
5457
+ return 0n;
5563
5458
  }
5564
5459
  }
5565
- function invoke_fiiiif(index, a1, a2, a3, a4, a5) {
5460
+ function invoke_iffiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {
5566
5461
  var sp = stackSave();
5567
5462
  try {
5568
- return getWasmTableEntry(index)(a1, a2, a3, a4, a5);
5463
+ return getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);
5569
5464
  } catch (e) {
5570
5465
  stackRestore(sp);
5571
5466
  if (e !== e + 0) throw e;
5572
5467
  _setThrew(1, 0);
5573
5468
  }
5574
5469
  }
5575
- function invoke_fif(index, a1, a2) {
5470
+ function invoke_fiiiif(index, a1, a2, a3, a4, a5) {
5576
5471
  var sp = stackSave();
5577
5472
  try {
5578
- return getWasmTableEntry(index)(a1, a2);
5473
+ return getWasmTableEntry(index)(a1, a2, a3, a4, a5);
5579
5474
  } catch (e) {
5580
5475
  stackRestore(sp);
5581
5476
  if (e !== e + 0) throw e;
5582
5477
  _setThrew(1, 0);
5583
5478
  }
5584
5479
  }
5585
- function invoke_viiifi(index, a1, a2, a3, a4, a5) {
5480
+ function invoke_fif(index, a1, a2) {
5586
5481
  var sp = stackSave();
5587
5482
  try {
5588
- getWasmTableEntry(index)(a1, a2, a3, a4, a5);
5483
+ return getWasmTableEntry(index)(a1, a2);
5589
5484
  } catch (e) {
5590
5485
  stackRestore(sp);
5591
5486
  if (e !== e + 0) throw e;
@@ -5662,17 +5557,17 @@ var require_grida_canvas_wasm = __commonJS({
5662
5557
  _setThrew(1, 0);
5663
5558
  }
5664
5559
  }
5665
- function invoke_iiiiid(index, a1, a2, a3, a4, a5) {
5560
+ function invoke_vijjjj(index, a1, a2, a3, a4, a5) {
5666
5561
  var sp = stackSave();
5667
5562
  try {
5668
- return getWasmTableEntry(index)(a1, a2, a3, a4, a5);
5563
+ getWasmTableEntry(index)(a1, a2, a3, a4, a5);
5669
5564
  } catch (e) {
5670
5565
  stackRestore(sp);
5671
5566
  if (e !== e + 0) throw e;
5672
5567
  _setThrew(1, 0);
5673
5568
  }
5674
5569
  }
5675
- function invoke_fiii(index, a1, a2, a3) {
5570
+ function invoke_dddd(index, a1, a2, a3) {
5676
5571
  var sp = stackSave();
5677
5572
  try {
5678
5573
  return getWasmTableEntry(index)(a1, a2, a3);
@@ -5682,115 +5577,118 @@ var require_grida_canvas_wasm = __commonJS({
5682
5577
  _setThrew(1, 0);
5683
5578
  }
5684
5579
  }
5685
- function invoke_diii(index, a1, a2, a3) {
5580
+ function invoke_dd(index, a1) {
5686
5581
  var sp = stackSave();
5687
5582
  try {
5688
- return getWasmTableEntry(index)(a1, a2, a3);
5583
+ return getWasmTableEntry(index)(a1);
5689
5584
  } catch (e) {
5690
5585
  stackRestore(sp);
5691
5586
  if (e !== e + 0) throw e;
5692
5587
  _setThrew(1, 0);
5693
5588
  }
5694
5589
  }
5695
- function invoke_iiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) {
5590
+ function invoke_ddd(index, a1, a2) {
5696
5591
  var sp = stackSave();
5697
5592
  try {
5698
- return getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11);
5593
+ return getWasmTableEntry(index)(a1, a2);
5699
5594
  } catch (e) {
5700
5595
  stackRestore(sp);
5701
5596
  if (e !== e + 0) throw e;
5702
5597
  _setThrew(1, 0);
5703
5598
  }
5704
5599
  }
5705
- function invoke_viiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {
5600
+ function invoke_fff(index, a1, a2) {
5706
5601
  var sp = stackSave();
5707
5602
  try {
5708
- getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);
5603
+ return getWasmTableEntry(index)(a1, a2);
5709
5604
  } catch (e) {
5710
5605
  stackRestore(sp);
5711
5606
  if (e !== e + 0) throw e;
5712
5607
  _setThrew(1, 0);
5713
5608
  }
5714
5609
  }
5715
- function invoke_viiiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) {
5610
+ function invoke_j(index) {
5716
5611
  var sp = stackSave();
5717
5612
  try {
5718
- getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15);
5613
+ return getWasmTableEntry(index)();
5719
5614
  } catch (e) {
5720
5615
  stackRestore(sp);
5721
5616
  if (e !== e + 0) throw e;
5722
5617
  _setThrew(1, 0);
5618
+ return 0n;
5723
5619
  }
5724
5620
  }
5725
- function invoke_viij(index, a1, a2, a3, a4) {
5621
+ function invoke_iiiiid(index, a1, a2, a3, a4, a5) {
5726
5622
  var sp = stackSave();
5727
5623
  try {
5728
- dynCall_viij(index, a1, a2, a3, a4);
5624
+ return getWasmTableEntry(index)(a1, a2, a3, a4, a5);
5729
5625
  } catch (e) {
5730
5626
  stackRestore(sp);
5731
5627
  if (e !== e + 0) throw e;
5732
5628
  _setThrew(1, 0);
5733
5629
  }
5734
5630
  }
5735
- function invoke_ji(index, a1) {
5631
+ function invoke_jiiii(index, a1, a2, a3, a4) {
5736
5632
  var sp = stackSave();
5737
5633
  try {
5738
- return dynCall_ji(index, a1);
5634
+ return getWasmTableEntry(index)(a1, a2, a3, a4);
5739
5635
  } catch (e) {
5740
5636
  stackRestore(sp);
5741
5637
  if (e !== e + 0) throw e;
5742
5638
  _setThrew(1, 0);
5639
+ return 0n;
5743
5640
  }
5744
5641
  }
5745
- function invoke_jii(index, a1, a2) {
5642
+ function invoke_fiii(index, a1, a2, a3) {
5746
5643
  var sp = stackSave();
5747
5644
  try {
5748
- return dynCall_jii(index, a1, a2);
5645
+ return getWasmTableEntry(index)(a1, a2, a3);
5749
5646
  } catch (e) {
5750
5647
  stackRestore(sp);
5751
5648
  if (e !== e + 0) throw e;
5752
5649
  _setThrew(1, 0);
5753
5650
  }
5754
5651
  }
5755
- function invoke_viiji(index, a1, a2, a3, a4, a5) {
5652
+ function invoke_diii(index, a1, a2, a3) {
5756
5653
  var sp = stackSave();
5757
5654
  try {
5758
- dynCall_viiji(index, a1, a2, a3, a4, a5);
5655
+ return getWasmTableEntry(index)(a1, a2, a3);
5759
5656
  } catch (e) {
5760
5657
  stackRestore(sp);
5761
5658
  if (e !== e + 0) throw e;
5762
5659
  _setThrew(1, 0);
5763
5660
  }
5764
5661
  }
5765
- function invoke_j(index) {
5662
+ function invoke_iiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) {
5766
5663
  var sp = stackSave();
5767
5664
  try {
5768
- return dynCall_j(index);
5665
+ return getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11);
5769
5666
  } catch (e) {
5770
5667
  stackRestore(sp);
5771
5668
  if (e !== e + 0) throw e;
5772
5669
  _setThrew(1, 0);
5773
5670
  }
5774
5671
  }
5775
- function invoke_jiiii(index, a1, a2, a3, a4) {
5672
+ function invoke_viiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {
5776
5673
  var sp = stackSave();
5777
5674
  try {
5778
- return dynCall_jiiii(index, a1, a2, a3, a4);
5675
+ getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);
5676
+ } catch (e) {
5677
+ stackRestore(sp);
5678
+ if (e !== e + 0) throw e;
5679
+ _setThrew(1, 0);
5680
+ }
5681
+ }
5682
+ function invoke_viiiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) {
5683
+ var sp = stackSave();
5684
+ try {
5685
+ getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15);
5779
5686
  } catch (e) {
5780
5687
  stackRestore(sp);
5781
5688
  if (e !== e + 0) throw e;
5782
5689
  _setThrew(1, 0);
5783
5690
  }
5784
5691
  }
5785
- Module["UTF8ToString"] = UTF8ToString;
5786
- Module["stringToUTF8"] = stringToUTF8;
5787
- Module["lengthBytesUTF8"] = lengthBytesUTF8;
5788
- Module["GL"] = GL;
5789
- var calledRun;
5790
- dependenciesFulfilled = function runCaller() {
5791
- if (!calledRun) run();
5792
- if (!calledRun) dependenciesFulfilled = runCaller;
5793
- };
5794
5692
  function callMain(args = []) {
5795
5693
  var entryFunction = _main;
5796
5694
  args.unshift(thisProgram);
@@ -5812,52 +5710,54 @@ var require_grida_canvas_wasm = __commonJS({
5812
5710
  }
5813
5711
  function run(args = arguments_) {
5814
5712
  if (runDependencies > 0) {
5713
+ dependenciesFulfilled = run;
5815
5714
  return;
5816
5715
  }
5817
5716
  preRun();
5818
5717
  if (runDependencies > 0) {
5718
+ dependenciesFulfilled = run;
5819
5719
  return;
5820
5720
  }
5821
5721
  function doRun() {
5822
- if (calledRun) return;
5823
- calledRun = true;
5722
+ var _a2;
5824
5723
  Module["calledRun"] = true;
5825
5724
  if (ABORT) return;
5826
5725
  initRuntime();
5827
5726
  preMain();
5828
5727
  readyPromiseResolve(Module);
5829
- if (Module["onRuntimeInitialized"]) Module["onRuntimeInitialized"]();
5830
- if (shouldRunNow) callMain(args);
5728
+ (_a2 = Module["onRuntimeInitialized"]) == null ? void 0 : _a2.call(Module);
5729
+ var noInitialRun = Module["noInitialRun"] || false;
5730
+ if (!noInitialRun) callMain(args);
5831
5731
  postRun();
5832
5732
  }
5833
5733
  if (Module["setStatus"]) {
5834
5734
  Module["setStatus"]("Running...");
5835
- setTimeout(function() {
5836
- setTimeout(function() {
5837
- Module["setStatus"]("");
5838
- }, 1);
5735
+ setTimeout(() => {
5736
+ setTimeout(() => Module["setStatus"](""), 1);
5839
5737
  doRun();
5840
5738
  }, 1);
5841
5739
  } else {
5842
5740
  doRun();
5843
5741
  }
5844
5742
  }
5845
- if (Module["preInit"]) {
5846
- if (typeof Module["preInit"] == "function") Module["preInit"] = [Module["preInit"]];
5847
- while (Module["preInit"].length > 0) {
5848
- Module["preInit"].pop()();
5743
+ function preInit() {
5744
+ if (Module["preInit"]) {
5745
+ if (typeof Module["preInit"] == "function") Module["preInit"] = [Module["preInit"]];
5746
+ while (Module["preInit"].length > 0) {
5747
+ Module["preInit"].shift()();
5748
+ }
5849
5749
  }
5850
5750
  }
5851
- var shouldRunNow = true;
5852
- if (Module["noInitialRun"]) shouldRunNow = false;
5751
+ preInit();
5853
5752
  run();
5854
5753
  moduleRtn = readyPromise;
5855
5754
  return moduleRtn;
5856
5755
  };
5857
5756
  })();
5858
- if (typeof exports2 === "object" && typeof module2 === "object")
5757
+ if (typeof exports2 === "object" && typeof module2 === "object") {
5859
5758
  module2.exports = createGridaCanvas2;
5860
- else if (typeof define === "function" && define["amd"])
5759
+ module2.exports.default = createGridaCanvas2;
5760
+ } else if (typeof define === "function" && define["amd"])
5861
5761
  define([], () => createGridaCanvas2);
5862
5762
  }
5863
5763
  });
@@ -5872,7 +5772,7 @@ module.exports = __toCommonJS(index_exports);
5872
5772
  var import_grida_canvas_wasm = __toESM(require_grida_canvas_wasm());
5873
5773
 
5874
5774
  // package.json
5875
- var version = "0.0.51";
5775
+ var version = "0.0.53";
5876
5776
 
5877
5777
  // lib/index.ts
5878
5778
  async function init(opts) {