@gjsify/v8 0.4.0 → 0.4.4

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/package.json CHANGED
@@ -1,38 +1,41 @@
1
1
  {
2
- "name": "@gjsify/v8",
3
- "version": "0.4.0",
4
- "description": "Node.js v8 module for Gjs",
5
- "type": "module",
6
- "module": "lib/esm/index.js",
7
- "types": "lib/types/index.d.ts",
8
- "exports": {
9
- ".": {
10
- "types": "./lib/types/index.d.ts",
11
- "default": "./lib/esm/index.js"
2
+ "name": "@gjsify/v8",
3
+ "version": "0.4.4",
4
+ "description": "Node.js v8 module for Gjs",
5
+ "type": "module",
6
+ "module": "lib/esm/index.js",
7
+ "types": "lib/types/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./lib/types/index.d.ts",
11
+ "default": "./lib/esm/index.js"
12
+ }
13
+ },
14
+ "files": [
15
+ "lib"
16
+ ],
17
+ "scripts": {
18
+ "clear": "rm -rf lib tsconfig.tsbuildinfo tsconfig.types.tsbuildinfo test.gjs.mjs test.node.mjs || exit 0",
19
+ "check": "tsc --noEmit",
20
+ "build": "gjsify run build:gjsify && gjsify run build:types",
21
+ "build:gjsify": "gjsify build --library 'src/**/*.{ts,js}' --exclude 'src/**/*.spec.{mts,ts}' 'src/test.{mts,ts}'",
22
+ "build:types": "tsc",
23
+ "build:test": "gjsify run build:test:gjs && gjsify run build:test:node",
24
+ "build:test:gjs": "gjsify build src/test.mts --app gjs --outfile test.gjs.mjs",
25
+ "build:test:node": "gjsify build src/test.mts --app node --outfile test.node.mjs",
26
+ "test": "gjsify run build:gjsify && gjsify run build:test && gjsify run test:node && gjsify run test:gjs",
27
+ "test:gjs": "gjsify run test.gjs.mjs",
28
+ "test:node": "node test.node.mjs"
29
+ },
30
+ "keywords": [
31
+ "gjs",
32
+ "node",
33
+ "v8"
34
+ ],
35
+ "devDependencies": {
36
+ "@gjsify/cli": "^0.4.4",
37
+ "@gjsify/unit": "^0.4.4",
38
+ "@types/node": "^25.6.2",
39
+ "typescript": "^6.0.3"
12
40
  }
13
- },
14
- "scripts": {
15
- "clear": "rm -rf lib tsconfig.tsbuildinfo tsconfig.types.tsbuildinfo test.gjs.mjs test.node.mjs || exit 0",
16
- "check": "tsc --noEmit",
17
- "build": "yarn build:gjsify && yarn build:types",
18
- "build:gjsify": "gjsify build --library 'src/**/*.{ts,js}' --exclude 'src/**/*.spec.{mts,ts}' 'src/test.{mts,ts}'",
19
- "build:types": "tsc",
20
- "build:test": "yarn build:test:gjs && yarn build:test:node",
21
- "build:test:gjs": "gjsify build src/test.mts --app gjs --outfile test.gjs.mjs",
22
- "build:test:node": "gjsify build src/test.mts --app node --outfile test.node.mjs",
23
- "test": "yarn build:gjsify && yarn build:test && yarn test:node && yarn test:gjs",
24
- "test:gjs": "gjsify run test.gjs.mjs",
25
- "test:node": "node test.node.mjs"
26
- },
27
- "keywords": [
28
- "gjs",
29
- "node",
30
- "v8"
31
- ],
32
- "devDependencies": {
33
- "@gjsify/cli": "^0.4.0",
34
- "@gjsify/unit": "^0.4.0",
35
- "@types/node": "^25.6.2",
36
- "typescript": "^6.0.3"
37
- }
38
- }
41
+ }
package/src/heap.ts DELETED
@@ -1,53 +0,0 @@
1
- // Reference: Node.js lib/v8.js (getHeapStatistics)
2
- // Reimplemented for GJS using /proc/self/status (Linux)
3
-
4
- import GLib from '@girs/glib-2.0';
5
-
6
- function readProcStatus(): Map<string, number> {
7
- const map = new Map<string, number>();
8
- try {
9
- const [ok, contents] = GLib.file_get_contents('/proc/self/status');
10
- if (!ok || !contents) return map;
11
- const text = new TextDecoder().decode(contents as unknown as Uint8Array);
12
- for (const line of text.split('\n')) {
13
- const m = /^(\w+):\s+(\d+)(\s+kB)?/.exec(line);
14
- if (m) map.set(m[1], parseInt(m[2]) * (m[3] ? 1024 : 1));
15
- }
16
- } catch { /* /proc not available on non-Linux */ }
17
- return map;
18
- }
19
-
20
- export function getHeapStatistics(): {
21
- total_heap_size: number;
22
- total_heap_size_executable: number;
23
- total_physical_size: number;
24
- total_available_size: number;
25
- used_heap_size: number;
26
- heap_size_limit: number;
27
- malloced_memory: number;
28
- peak_malloced_memory: number;
29
- does_zap_garbage: number;
30
- number_of_native_contexts: number;
31
- number_of_detached_contexts: number;
32
- total_global_handles_size: number;
33
- used_global_handles_size: number;
34
- external_memory: number;
35
- } {
36
- const proc = readProcStatus();
37
- return {
38
- total_heap_size: proc.get('VmSize') ?? 0,
39
- total_heap_size_executable: 0,
40
- total_physical_size: proc.get('VmRSS') ?? 0,
41
- total_available_size: 0,
42
- used_heap_size: proc.get('VmRSS') ?? 0,
43
- heap_size_limit: 0,
44
- malloced_memory: proc.get('VmData') ?? 0,
45
- peak_malloced_memory: proc.get('VmPeak') ?? 0,
46
- does_zap_garbage: 0,
47
- number_of_native_contexts: 0,
48
- number_of_detached_contexts: 0,
49
- total_global_handles_size: 0,
50
- used_global_handles_size: 0,
51
- external_memory: 0,
52
- };
53
- }
package/src/index.spec.ts DELETED
@@ -1,270 +0,0 @@
1
- // Ported from refs/node-test/parallel/test-v8-stats.js,
2
- // refs/node-test/parallel/test-v8-serdes.js,
3
- // refs/node-test/parallel/test-v8-deserialize-buffer.js
4
- // Original: MIT, Node.js contributors.
5
- // Rewritten for @gjsify/unit — behavior preserved, assertion dialect adapted.
6
-
7
- import { describe, it, expect } from '@gjsify/unit';
8
- import {
9
- getHeapStatistics,
10
- getHeapCodeStatistics,
11
- getHeapSpaceStatistics,
12
- serialize,
13
- deserialize,
14
- Serializer,
15
- Deserializer,
16
- DefaultSerializer,
17
- DefaultDeserializer,
18
- isStringOneByteRepresentation,
19
- GCProfiler,
20
- startCpuProfile,
21
- } from 'node:v8';
22
-
23
- export default async () => {
24
- await describe('v8.getHeapStatistics', async () => {
25
- await it('returns an object with all 14 required fields', async () => {
26
- const stats = getHeapStatistics();
27
- const fields = [
28
- 'total_heap_size',
29
- 'total_heap_size_executable',
30
- 'total_physical_size',
31
- 'total_available_size',
32
- 'used_heap_size',
33
- 'heap_size_limit',
34
- 'malloced_memory',
35
- 'peak_malloced_memory',
36
- 'does_zap_garbage',
37
- 'number_of_native_contexts',
38
- 'number_of_detached_contexts',
39
- 'total_global_handles_size',
40
- 'used_global_handles_size',
41
- 'external_memory',
42
- ];
43
- for (const field of fields) {
44
- expect(typeof (stats as any)[field]).toBe('number');
45
- }
46
- });
47
-
48
- await it('used_heap_size is a positive number on Linux (via /proc)', async () => {
49
- const stats = getHeapStatistics();
50
- expect(stats.used_heap_size).toBeGreaterThan(0);
51
- });
52
- });
53
-
54
- await describe('v8.getHeapCodeStatistics', async () => {
55
- await it('returns object with 4 numeric fields', async () => {
56
- const stats = getHeapCodeStatistics() as any;
57
- expect(typeof stats.code_and_metadata_size).toBe('number');
58
- expect(typeof stats.bytecode_and_metadata_size).toBe('number');
59
- expect(typeof stats.external_script_source_size).toBe('number');
60
- expect(typeof stats.cpu_profiler_metadata_size).toBe('number');
61
- });
62
- });
63
-
64
- await describe('v8.getHeapSpaceStatistics', async () => {
65
- await it('returns an array', async () => {
66
- expect(Array.isArray(getHeapSpaceStatistics())).toBe(true);
67
- });
68
- });
69
-
70
- await describe('v8.serialize / v8.deserialize round-trips', async () => {
71
- await it('null', async () => {
72
- expect(deserialize(serialize(null))).toBe(null);
73
- });
74
-
75
- await it('undefined', async () => {
76
- expect(deserialize(serialize(undefined))).toBe(undefined);
77
- });
78
-
79
- await it('boolean true', async () => {
80
- expect(deserialize(serialize(true))).toBe(true);
81
- });
82
-
83
- await it('boolean false', async () => {
84
- expect(deserialize(serialize(false))).toBe(false);
85
- });
86
-
87
- await it('integer', async () => {
88
- expect(deserialize(serialize(42))).toBe(42);
89
- });
90
-
91
- await it('negative integer', async () => {
92
- expect(deserialize(serialize(-7))).toBe(-7);
93
- });
94
-
95
- await it('float', async () => {
96
- expect(deserialize(serialize(3.14))).toBe(3.14);
97
- });
98
-
99
- await it('ASCII string', async () => {
100
- expect(deserialize(serialize('hello'))).toBe('hello');
101
- });
102
-
103
- await it('Unicode string', async () => {
104
- expect(deserialize(serialize('héllo wörld'))).toBe('héllo wörld');
105
- });
106
-
107
- await it('Date', async () => {
108
- const d = new Date('2020-01-01T00:00:00Z');
109
- const result = deserialize(serialize(d)) as Date;
110
- expect(result instanceof Date).toBe(true);
111
- expect(result.getTime()).toBe(d.getTime());
112
- });
113
-
114
- await it('plain object', async () => {
115
- const obj = { a: 1, b: 'two', c: true };
116
- const result = deserialize(serialize(obj)) as typeof obj;
117
- expect(result.a).toBe(1);
118
- expect(result.b).toBe('two');
119
- expect(result.c).toBe(true);
120
- });
121
-
122
- await it('array', async () => {
123
- const arr = [1, 'two', null, true];
124
- const result = deserialize(serialize(arr)) as typeof arr;
125
- expect(result[0]).toBe(1);
126
- expect(result[1]).toBe('two');
127
- expect(result[2]).toBe(null);
128
- expect(result[3]).toBe(true);
129
- });
130
-
131
- await it('Uint8Array', async () => {
132
- const ta = new Uint8Array([1, 2, 3]);
133
- const result = deserialize(serialize(ta)) as Uint8Array;
134
- expect(result instanceof Uint8Array).toBe(true);
135
- expect(result[0]).toBe(1);
136
- expect(result[1]).toBe(2);
137
- expect(result[2]).toBe(3);
138
- });
139
-
140
- await it('Int32Array', async () => {
141
- const ta = new Int32Array([-1, 0, 1]);
142
- const result = deserialize(serialize(ta)) as Int32Array;
143
- expect(result instanceof Int32Array).toBe(true);
144
- expect(result[0]).toBe(-1);
145
- expect(result[2]).toBe(1);
146
- });
147
-
148
- await it('Float64Array', async () => {
149
- const ta = new Float64Array([1.1, 2.2, 3.3]);
150
- const result = deserialize(serialize(ta)) as Float64Array;
151
- expect(result instanceof Float64Array).toBe(true);
152
- expect(Math.abs(result[0] - 1.1) < 1e-9).toBe(true);
153
- });
154
-
155
- await it('Buffer', async () => {
156
- const buf = Buffer.from([10, 20, 30]);
157
- const result = deserialize(serialize(buf)) as Buffer;
158
- expect(Buffer.isBuffer(result)).toBe(true);
159
- expect(result[0]).toBe(10);
160
- expect(result[2]).toBe(30);
161
- });
162
-
163
- await it('BigInt', async () => {
164
- const big = 9007199254740993n;
165
- expect(deserialize(serialize(big))).toBe(big);
166
- });
167
-
168
- await it('negative BigInt', async () => {
169
- expect(deserialize(serialize(-42n))).toBe(-42n);
170
- });
171
-
172
- await it('circular object produces backref on deserialize', async () => {
173
- const obj: any = { a: 1 };
174
- obj.self = obj;
175
- const result = deserialize(serialize(obj)) as any;
176
- expect(result.a).toBe(1);
177
- expect(result.self).toBe(result);
178
- });
179
- });
180
-
181
- await describe('v8.Serializer / Deserializer classes', async () => {
182
- await it('Serializer can write header + value → Buffer', async () => {
183
- const s = new Serializer();
184
- s.writeHeader();
185
- s.writeValue(42);
186
- const buf = s.releaseBuffer();
187
- expect(Buffer.isBuffer(buf)).toBe(true);
188
- expect(buf.length).toBeGreaterThan(0);
189
- });
190
-
191
- await it('Deserializer can read header + value', async () => {
192
- const s = new Serializer();
193
- s.writeHeader();
194
- s.writeValue('test');
195
- const buf = s.releaseBuffer();
196
-
197
- const d = new Deserializer(buf);
198
- d.readHeader();
199
- expect(d.readValue()).toBe('test');
200
- });
201
-
202
- await it('getWireFormatVersion returns 15', async () => {
203
- const s = new Serializer();
204
- s.writeHeader();
205
- s.writeValue(null);
206
- const buf = s.releaseBuffer();
207
- const d = new Deserializer(buf);
208
- d.readHeader();
209
- expect(d.getWireFormatVersion()).toBe(15);
210
- });
211
- });
212
-
213
- await describe('v8.DefaultSerializer / DefaultDeserializer', async () => {
214
- await it('TypedArray host-object round-trip', async () => {
215
- const original = new Uint32Array([100, 200, 300]);
216
- const s = new DefaultSerializer();
217
- s.writeHeader();
218
- s.writeValue(original);
219
- const buf = s.releaseBuffer();
220
-
221
- const d = new DefaultDeserializer(buf);
222
- d.readHeader();
223
- const result = d.readValue() as Uint32Array;
224
- expect(result instanceof Uint32Array).toBe(true);
225
- expect(result[0]).toBe(100);
226
- expect(result[1]).toBe(200);
227
- expect(result[2]).toBe(300);
228
- });
229
- });
230
-
231
- await describe('v8.isStringOneByteRepresentation', async () => {
232
- await it('ASCII string returns true', async () => {
233
- expect(isStringOneByteRepresentation('hello')).toBe(true);
234
- });
235
-
236
- await it('string with ü (>255 codepoint) returns false', async () => {
237
- // ü = U+00FC (fits in Latin-1), 日 = U+65E5 (does not)
238
- expect(isStringOneByteRepresentation('日本語')).toBe(false);
239
- });
240
-
241
- await it('empty string returns true', async () => {
242
- expect(isStringOneByteRepresentation('')).toBe(true);
243
- });
244
- });
245
-
246
- await describe('v8.GCProfiler', async () => {
247
- await it('start/stop returns defined object with version and timing', async () => {
248
- const profiler = new GCProfiler();
249
- profiler.start();
250
- const stats = profiler.stop() as any;
251
- expect(stats).toBeDefined();
252
- expect(stats.version).toBe(1);
253
- expect(typeof stats.startTime).toBe('number');
254
- expect(typeof stats.endTime).toBe('number');
255
- });
256
-
257
- await it('stop without start returns undefined', async () => {
258
- const profiler = new GCProfiler();
259
- expect(profiler.stop()).toBe(undefined);
260
- });
261
- });
262
-
263
- await describe('v8.startCpuProfile', async () => {
264
- await it('returns an object with a stop() method that does not throw', async () => {
265
- const handle = startCpuProfile();
266
- expect(typeof handle.stop).toBe('function');
267
- expect(() => handle.stop()).not.toThrow();
268
- });
269
- });
270
- };
package/src/index.ts DELETED
@@ -1,118 +0,0 @@
1
- // Reference: Node.js lib/v8.js
2
- // Reimplemented for GJS — heap stats via /proc/self/status, serialization via V8 wire format
3
-
4
- import { getHeapStatistics } from './heap.js';
5
- import {
6
- Serializer, Deserializer, DefaultSerializer, DefaultDeserializer,
7
- } from './serdes.js';
8
-
9
- export { getHeapStatistics };
10
- export { Serializer, Deserializer, DefaultSerializer, DefaultDeserializer };
11
-
12
- export function serialize(value: unknown): Buffer {
13
- const ser = new DefaultSerializer();
14
- ser.writeHeader();
15
- ser.writeValue(value);
16
- return ser.releaseBuffer();
17
- }
18
-
19
- export function deserialize(buffer: NodeJS.ArrayBufferView | ArrayBuffer): unknown {
20
- const des = new DefaultDeserializer(buffer);
21
- des.readHeader();
22
- return des.readValue();
23
- }
24
-
25
- // ─── Stubs — no GJS equivalent ────────────────────────────────────────────────
26
-
27
- export interface HeapSpaceInfo {
28
- space_name: string;
29
- space_size: number;
30
- space_used_size: number;
31
- space_available_size: number;
32
- physical_space_size: number;
33
- }
34
-
35
- export function getHeapSpaceStatistics(): HeapSpaceInfo[] { return []; }
36
-
37
- export function getHeapCodeStatistics(): {
38
- code_and_metadata_size: number;
39
- bytecode_and_metadata_size: number;
40
- external_script_source_size: number;
41
- cpu_profiler_metadata_size: number;
42
- } {
43
- return {
44
- code_and_metadata_size: 0,
45
- bytecode_and_metadata_size: 0,
46
- external_script_source_size: 0,
47
- cpu_profiler_metadata_size: 0,
48
- };
49
- }
50
-
51
- export function setFlagsFromString(_flags: string): void {}
52
-
53
- export function getHeapSnapshot(_options?: object): null { return null; }
54
-
55
- export function writeHeapSnapshot(_filename?: string): string { return ''; }
56
-
57
- export function isStringOneByteRepresentation(content: string): boolean {
58
- for (let i = 0; i < content.length; i++) {
59
- if (content.charCodeAt(i) > 255) return false;
60
- }
61
- return true;
62
- }
63
-
64
- // ─── GCProfiler ───────────────────────────────────────────────────────────────
65
-
66
- export class GCProfiler {
67
- #running = false;
68
- #startTime = 0;
69
-
70
- start(): void {
71
- if (this.#running) return;
72
- this.#running = true;
73
- this.#startTime = Date.now();
74
- }
75
-
76
- stop(): { version: number; startTime: number; endTime: number; stats: never[] } | undefined {
77
- if (!this.#running) return undefined;
78
- this.#running = false;
79
- try {
80
- const system = (globalThis as any).imports?.system;
81
- if (typeof system?.gc === 'function') system.gc();
82
- } catch { /* ignore */ }
83
- return { version: 1, startTime: this.#startTime, endTime: Date.now(), stats: [] };
84
- }
85
-
86
- [Symbol.dispose](): void { this.stop(); }
87
- }
88
-
89
- // ─── SyncCPUProfileHandle / startCpuProfile ───────────────────────────────────
90
-
91
- export class SyncCPUProfileHandle {
92
- stop(): undefined { return undefined; }
93
- [Symbol.dispose](): void { this.stop(); }
94
- }
95
-
96
- export function startCpuProfile(): SyncCPUProfileHandle {
97
- return new SyncCPUProfileHandle();
98
- }
99
-
100
- // ─── default export ───────────────────────────────────────────────────────────
101
-
102
- export default {
103
- getHeapStatistics,
104
- getHeapSpaceStatistics,
105
- getHeapCodeStatistics,
106
- setFlagsFromString,
107
- getHeapSnapshot,
108
- writeHeapSnapshot,
109
- serialize,
110
- deserialize,
111
- isStringOneByteRepresentation,
112
- Serializer,
113
- Deserializer,
114
- DefaultSerializer,
115
- DefaultDeserializer,
116
- GCProfiler,
117
- startCpuProfile,
118
- };
package/src/serdes.ts DELETED
@@ -1,609 +0,0 @@
1
- // Reference: Node.js lib/v8.js (Serializer/Deserializer/DefaultSerializer/DefaultDeserializer)
2
- // Reimplemented for GJS — V8 wire format v15 in pure TypeScript
3
-
4
- import { Buffer } from 'node:buffer';
5
-
6
- const WIRE_VERSION = 15;
7
-
8
- // Tag bytes matching V8 ValueSerializer::Tag enum
9
- const kVersion = 0xFF;
10
- const kUndefined = 0x5F; // '_'
11
- const kNull = 0x30; // '0'
12
- const kTrue = 0x54; // 'T'
13
- const kFalse = 0x46; // 'F'
14
- const kInt32 = 0x49; // 'I' — ZigZag varint
15
- const kUint32 = 0x55; // 'U' — varint
16
- const kDouble = 0x4E; // 'N' — 8 bytes LE
17
- const kBigInt = 0x5A; // 'Z'
18
- const kOneByteString = 0x22; // '"' — Latin1, varint len + bytes
19
- const kUtf8String = 0x63; // 'c' — UTF-8, varint len + bytes
20
- const kDate = 0x44; // 'D' — float64 ms
21
- const kRegExp = 0x52; // 'R'
22
- const kBeginJSObject = 0x6F; // 'o'
23
- const kEndJSObject = 0x7B; // '{' + varint property count
24
- const kBeginDenseArray = 0x41; // 'A'
25
- const kEndDenseArray = 0x24; // '$' + varint spare + varint length
26
- const kArrayBuffer = 0x42; // 'B'
27
- const kObjectReference = 0x5E; // '^' — backref, varint index
28
- const kHostObject = 0x5C; // '\' — host object (TypedArray/DataView/Buffer)
29
-
30
- // ─── varint helpers ───────────────────────────────────────────────────────────
31
-
32
- function writeVarint(buf: number[], n: number): void {
33
- n = n >>> 0;
34
- while (n >= 0x80) {
35
- buf.push((n & 0x7F) | 0x80);
36
- n >>>= 7;
37
- }
38
- buf.push(n);
39
- }
40
-
41
- function readVarint(buf: Buffer, pos: number): [number, number] {
42
- let result = 0, shift = 0, byte: number;
43
- do {
44
- if (pos >= buf.length) throw new Error('Unexpected end of buffer reading varint');
45
- byte = buf[pos++];
46
- result |= (byte & 0x7F) << shift;
47
- shift += 7;
48
- } while (byte & 0x80);
49
- return [result >>> 0, pos];
50
- }
51
-
52
- function zigZagEncode(n: number): number {
53
- return n >= 0 ? n * 2 : -n * 2 - 1;
54
- }
55
-
56
- function zigZagDecode(n: number): number {
57
- return (n & 1) ? -(n >>> 1) - 1 : n >>> 1;
58
- }
59
-
60
- function writeFloat64(buf: number[], d: number): void {
61
- const tmp = new DataView(new ArrayBuffer(8));
62
- tmp.setFloat64(0, d, true /* LE */);
63
- for (let i = 0; i < 8; i++) buf.push(tmp.getUint8(i));
64
- }
65
-
66
- function readFloat64(buf: Buffer, pos: number): [number, number] {
67
- if (pos + 8 > buf.length) throw new Error('ReadDouble() failed');
68
- const view = new DataView(buf.buffer, buf.byteOffset + pos, 8);
69
- return [view.getFloat64(0, true), pos + 8];
70
- }
71
-
72
- function isOneByte(s: string): boolean {
73
- for (let i = 0; i < s.length; i++) {
74
- if (s.charCodeAt(i) > 0xFF) return false;
75
- }
76
- return true;
77
- }
78
-
79
- // ─── TypedArray type index (matching Node.js DefaultSerializer) ───────────────
80
-
81
- function typedArrayToIndex(abView: NodeJS.ArrayBufferView): number {
82
- const tag = Object.prototype.toString.call(abView);
83
- if (tag === '[object Int8Array]') return 0;
84
- if (tag === '[object Uint8Array]') return 1;
85
- if (tag === '[object Uint8ClampedArray]') return 2;
86
- if (tag === '[object Int16Array]') return 3;
87
- if (tag === '[object Uint16Array]') return 4;
88
- if (tag === '[object Int32Array]') return 5;
89
- if (tag === '[object Uint32Array]') return 6;
90
- if (tag === '[object Float32Array]') return 7;
91
- if (tag === '[object Float64Array]') return 8;
92
- if (tag === '[object DataView]') return 9;
93
- // index 10 = Buffer (FastBuffer)
94
- if (tag === '[object BigInt64Array]') return 11;
95
- if (tag === '[object BigUint64Array]') return 12;
96
- return -1;
97
- }
98
-
99
- type TypedArrayCtor = new (buffer: ArrayBuffer, byteOffset: number, length: number) => NodeJS.ArrayBufferView;
100
-
101
- function indexToTypedArray(index: number): TypedArrayCtor | undefined {
102
- switch (index) {
103
- case 0: return Int8Array as unknown as TypedArrayCtor;
104
- case 1: return Uint8Array as unknown as TypedArrayCtor;
105
- case 2: return Uint8ClampedArray as unknown as TypedArrayCtor;
106
- case 3: return Int16Array as unknown as TypedArrayCtor;
107
- case 4: return Uint16Array as unknown as TypedArrayCtor;
108
- case 5: return Int32Array as unknown as TypedArrayCtor;
109
- case 6: return Uint32Array as unknown as TypedArrayCtor;
110
- case 7: return Float32Array as unknown as TypedArrayCtor;
111
- case 8: return Float64Array as unknown as TypedArrayCtor;
112
- case 9: return DataView as unknown as TypedArrayCtor;
113
- case 10: return Buffer as unknown as TypedArrayCtor;
114
- case 11: return BigInt64Array as unknown as TypedArrayCtor;
115
- case 12: return BigUint64Array as unknown as TypedArrayCtor;
116
- }
117
- return undefined;
118
- }
119
-
120
- // ─── Serializer ───────────────────────────────────────────────────────────────
121
-
122
- export class Serializer {
123
- protected _bytes: number[] = [];
124
- protected _seen: object[] = [];
125
- protected _treatAbvAsHostObjects = false;
126
- _getDataCloneError: ErrorConstructor = Error;
127
-
128
- writeHeader(): void {
129
- this._bytes.push(kVersion);
130
- writeVarint(this._bytes, WIRE_VERSION);
131
- }
132
-
133
- writeValue(value: unknown): void {
134
- // Check backref for objects/arrays/TypedArrays
135
- if (value !== null && value !== undefined && typeof value === 'object') {
136
- const idx = this._seen.indexOf(value as object);
137
- if (idx !== -1) {
138
- this._bytes.push(kObjectReference);
139
- writeVarint(this._bytes, idx);
140
- return;
141
- }
142
- }
143
-
144
- if (value === undefined) {
145
- this._bytes.push(kUndefined);
146
- } else if (value === null) {
147
- this._bytes.push(kNull);
148
- } else if (value === true) {
149
- this._bytes.push(kTrue);
150
- } else if (value === false) {
151
- this._bytes.push(kFalse);
152
- } else if (typeof value === 'number') {
153
- if (Number.isInteger(value) && value >= -(2 ** 31) && value <= 2 ** 32 - 1) {
154
- if (value >= 0) {
155
- this._bytes.push(kUint32);
156
- writeVarint(this._bytes, value);
157
- } else {
158
- this._bytes.push(kInt32);
159
- writeVarint(this._bytes, zigZagEncode(value));
160
- }
161
- } else {
162
- this._bytes.push(kDouble);
163
- writeFloat64(this._bytes, value);
164
- }
165
- } else if (typeof value === 'bigint') {
166
- this._writeBigInt(value);
167
- } else if (typeof value === 'string') {
168
- this._writeString(value);
169
- } else if (typeof value === 'object') {
170
- const obj = value as object;
171
-
172
- if (value instanceof Date) {
173
- this._seen.push(obj);
174
- this._bytes.push(kDate);
175
- writeFloat64(this._bytes, (value as Date).getTime());
176
-
177
- } else if (value instanceof RegExp) {
178
- this._seen.push(obj);
179
- this._bytes.push(kRegExp);
180
- this._writeString((value as RegExp).source);
181
- writeVarint(this._bytes, regExpFlagsToInt(value as RegExp));
182
-
183
- } else if (value instanceof ArrayBuffer) {
184
- this._seen.push(obj);
185
- const bytes = new Uint8Array(value as ArrayBuffer);
186
- this._bytes.push(kArrayBuffer);
187
- writeVarint(this._bytes, bytes.length);
188
- for (let i = 0; i < bytes.length; i++) this._bytes.push(bytes[i]);
189
-
190
- } else if (this._treatAbvAsHostObjects &&
191
- (ArrayBuffer.isView(value) || Buffer.isBuffer(value))) {
192
- this._seen.push(obj);
193
- this._bytes.push(kHostObject);
194
- this._writeHostObject(obj as NodeJS.ArrayBufferView);
195
-
196
- } else if (Array.isArray(value)) {
197
- this._seen.push(obj);
198
- const arr = value as unknown[];
199
- this._bytes.push(kBeginDenseArray);
200
- writeVarint(this._bytes, arr.length);
201
- for (let i = 0; i < arr.length; i++) this.writeValue(arr[i]);
202
- this._bytes.push(kEndDenseArray);
203
- writeVarint(this._bytes, 0); // spare properties count
204
- writeVarint(this._bytes, arr.length);
205
-
206
- } else {
207
- this._seen.push(obj);
208
- this._bytes.push(kBeginJSObject);
209
- const keys = Object.keys(obj);
210
- for (const key of keys) {
211
- this._writeString(key);
212
- this.writeValue((obj as Record<string, unknown>)[key]);
213
- }
214
- this._bytes.push(kEndJSObject);
215
- writeVarint(this._bytes, keys.length);
216
- }
217
- } else {
218
- throw new (this._getDataCloneError)(
219
- `${String(value)} could not be cloned.`
220
- );
221
- }
222
- }
223
-
224
- releaseBuffer(): Buffer {
225
- const result = Buffer.from(this._bytes);
226
- this._bytes = [];
227
- this._seen = [];
228
- return result;
229
- }
230
-
231
- writeUint32(n: number): void {
232
- writeVarint(this._bytes, n >>> 0);
233
- }
234
-
235
- writeUint64(hi: number, lo: number): void {
236
- writeVarint(this._bytes, hi >>> 0);
237
- writeVarint(this._bytes, lo >>> 0);
238
- }
239
-
240
- writeDouble(d: number): void {
241
- writeFloat64(this._bytes, d);
242
- }
243
-
244
- writeRawBytes(source: NodeJS.ArrayBufferView): void {
245
- if (!ArrayBuffer.isView(source)) {
246
- throw new TypeError('source must be a TypedArray or a DataView');
247
- }
248
- const bytes = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);
249
- for (let i = 0; i < bytes.length; i++) this._bytes.push(bytes[i]);
250
- }
251
-
252
- _writeHostObject(_obj: object): void {
253
- throw new (this._getDataCloneError)(
254
- `Unserializable host object: ${Object.prototype.toString.call(_obj)}`
255
- );
256
- }
257
-
258
- _setTreatArrayBufferViewsAsHostObjects(flag: boolean): void {
259
- this._treatAbvAsHostObjects = flag;
260
- }
261
-
262
- private _writeString(s: string): void {
263
- if (isOneByte(s)) {
264
- this._bytes.push(kOneByteString);
265
- writeVarint(this._bytes, s.length);
266
- for (let i = 0; i < s.length; i++) this._bytes.push(s.charCodeAt(i) & 0xFF);
267
- } else {
268
- const encoded = new TextEncoder().encode(s);
269
- this._bytes.push(kUtf8String);
270
- writeVarint(this._bytes, encoded.length);
271
- for (let i = 0; i < encoded.length; i++) this._bytes.push(encoded[i]);
272
- }
273
- }
274
-
275
- private _writeBigInt(n: bigint): void {
276
- this._bytes.push(kBigInt);
277
- const negative = n < 0n;
278
- const abs = negative ? -n : n;
279
- // Encode as little-endian 64-bit words
280
- const words: number[] = [];
281
- let remaining = abs;
282
- while (remaining > 0n) {
283
- words.push(Number(remaining & 0xFFFFFFFFn));
284
- words.push(Number((remaining >> 32n) & 0xFFFFFFFFn));
285
- remaining >>= 64n;
286
- }
287
- // bitfield: bits 0 = negative, bits 1+ = word count (as pairs of u32)
288
- const wordCount = words.length; // already in u32s
289
- const bitfield = ((wordCount) << 1) | (negative ? 1 : 0);
290
- writeVarint(this._bytes, bitfield);
291
- for (const w of words) {
292
- // write as 4 bytes LE
293
- this._bytes.push(w & 0xFF);
294
- this._bytes.push((w >> 8) & 0xFF);
295
- this._bytes.push((w >> 16) & 0xFF);
296
- this._bytes.push((w >> 24) & 0xFF);
297
- }
298
- if (words.length === 0) {
299
- // Zero bigint — bitfield already encodes 0 words
300
- }
301
- }
302
- }
303
-
304
- // ─── Deserializer ─────────────────────────────────────────────────────────────
305
-
306
- export class Deserializer {
307
- protected _pos = 0;
308
- protected _wireVersion = 0;
309
- protected _seen: unknown[] = [];
310
- readonly buffer: Buffer;
311
-
312
- constructor(buffer: NodeJS.ArrayBufferView | ArrayBuffer) {
313
- if (!ArrayBuffer.isView(buffer) && !(buffer instanceof ArrayBuffer)) {
314
- throw new TypeError('buffer must be a TypedArray or a DataView');
315
- }
316
- if (buffer instanceof ArrayBuffer) {
317
- this.buffer = Buffer.from(buffer);
318
- } else {
319
- this.buffer = Buffer.from(
320
- (buffer as NodeJS.ArrayBufferView).buffer,
321
- (buffer as NodeJS.ArrayBufferView).byteOffset,
322
- (buffer as NodeJS.ArrayBufferView).byteLength,
323
- );
324
- }
325
- }
326
-
327
- readHeader(): boolean {
328
- if (this.buffer[this._pos] !== kVersion) {
329
- throw new Error('ReadHeader() failed');
330
- }
331
- this._pos++;
332
- const [ver, pos] = readVarint(this.buffer, this._pos);
333
- this._wireVersion = ver;
334
- this._pos = pos;
335
- return true;
336
- }
337
-
338
- getWireFormatVersion(): number {
339
- return this._wireVersion;
340
- }
341
-
342
- readValue(): unknown {
343
- if (this._pos >= this.buffer.length) {
344
- throw new Error('Unexpected end of buffer');
345
- }
346
- const tag = this.buffer[this._pos++];
347
-
348
- switch (tag) {
349
- case kUndefined: return undefined;
350
- case kNull: return null;
351
- case kTrue: return true;
352
- case kFalse: return false;
353
-
354
- case kInt32: {
355
- const [n, p] = readVarint(this.buffer, this._pos);
356
- this._pos = p;
357
- return zigZagDecode(n);
358
- }
359
-
360
- case kUint32: {
361
- const [n, p] = readVarint(this.buffer, this._pos);
362
- this._pos = p;
363
- return n >>> 0;
364
- }
365
-
366
- case kDouble: {
367
- const [d, p] = readFloat64(this.buffer, this._pos);
368
- this._pos = p;
369
- return d;
370
- }
371
-
372
- case kBigInt: {
373
- return this._readBigInt();
374
- }
375
-
376
- case kOneByteString: {
377
- const [len, p] = readVarint(this.buffer, this._pos);
378
- this._pos = p;
379
- let s = '';
380
- for (let i = 0; i < len; i++) s += String.fromCharCode(this.buffer[this._pos++]);
381
- return s;
382
- }
383
-
384
- case kUtf8String: {
385
- const [len, p] = readVarint(this.buffer, this._pos);
386
- this._pos = p;
387
- const bytes = this.buffer.slice(this._pos, this._pos + len);
388
- this._pos += len;
389
- return new TextDecoder().decode(bytes);
390
- }
391
-
392
- case kDate: {
393
- const [ms, p] = readFloat64(this.buffer, this._pos);
394
- this._pos = p;
395
- const d = new Date(ms);
396
- this._seen.push(d);
397
- return d;
398
- }
399
-
400
- case kRegExp: {
401
- const source = this.readValue() as string;
402
- const [flagBits, p] = readVarint(this.buffer, this._pos);
403
- this._pos = p;
404
- const flags = intToRegExpFlags(flagBits);
405
- const re = new RegExp(source, flags);
406
- this._seen.push(re);
407
- return re;
408
- }
409
-
410
- case kArrayBuffer: {
411
- const [byteLen, p] = readVarint(this.buffer, this._pos);
412
- this._pos = p;
413
- const ab = new ArrayBuffer(byteLen);
414
- const view = new Uint8Array(ab);
415
- for (let i = 0; i < byteLen; i++) view[i] = this.buffer[this._pos++];
416
- this._seen.push(ab);
417
- return ab;
418
- }
419
-
420
- case kObjectReference: {
421
- const [idx, p] = readVarint(this.buffer, this._pos);
422
- this._pos = p;
423
- if (idx >= this._seen.length) throw new Error('Invalid object reference');
424
- return this._seen[idx];
425
- }
426
-
427
- case kBeginDenseArray: {
428
- const [len, p] = readVarint(this.buffer, this._pos);
429
- this._pos = p;
430
- const arr: unknown[] = new Array(len);
431
- this._seen.push(arr);
432
- for (let i = 0; i < len; i++) arr[i] = this.readValue();
433
- // read kEndDenseArray tag
434
- if (this.buffer[this._pos] !== kEndDenseArray) throw new Error('Expected kEndDenseArray');
435
- this._pos++;
436
- // spare properties count (varint)
437
- const [, p2] = readVarint(this.buffer, this._pos);
438
- this._pos = p2;
439
- // length (varint, should match)
440
- const [, p3] = readVarint(this.buffer, this._pos);
441
- this._pos = p3;
442
- return arr;
443
- }
444
-
445
- case kBeginJSObject: {
446
- const obj: Record<string, unknown> = {};
447
- this._seen.push(obj);
448
- while (this.buffer[this._pos] !== kEndJSObject) {
449
- const key = this.readValue() as string;
450
- obj[key] = this.readValue();
451
- }
452
- this._pos++; // consume kEndJSObject
453
- // property count varint
454
- const [, p] = readVarint(this.buffer, this._pos);
455
- this._pos = p;
456
- return obj;
457
- }
458
-
459
- case kHostObject: {
460
- const obj = this._readHostObject();
461
- if (obj !== null && obj !== undefined) this._seen.push(obj);
462
- return obj;
463
- }
464
-
465
- default:
466
- throw new Error(`Unknown tag 0x${tag.toString(16).padStart(2, '0')} at position ${this._pos - 1}`);
467
- }
468
- }
469
-
470
- readUint32(): number {
471
- const [n, p] = readVarint(this.buffer, this._pos);
472
- this._pos = p;
473
- return n >>> 0;
474
- }
475
-
476
- readUint64(): [number, number] {
477
- const [hi, p1] = readVarint(this.buffer, this._pos);
478
- const [lo, p2] = readVarint(this.buffer, p1);
479
- this._pos = p2;
480
- return [hi >>> 0, lo >>> 0];
481
- }
482
-
483
- readDouble(): number {
484
- const [d, p] = readFloat64(this.buffer, this._pos);
485
- this._pos = p;
486
- return d;
487
- }
488
-
489
- // Returns the byte offset within this.buffer where the raw bytes start.
490
- // Callers use: new FastBuffer(this.buffer.buffer, this.buffer.byteOffset + offset, length)
491
- _readRawBytes(length: number): number {
492
- const offset = this._pos;
493
- this._pos += length;
494
- if (this._pos > this.buffer.length) throw new Error('Unexpected end of buffer reading raw bytes');
495
- return offset;
496
- }
497
-
498
- // readRawBytes is patched on the prototype below (as in Node.js) to return a Buffer slice
499
- readRawBytes(length: number): Buffer {
500
- const offset = this._readRawBytes(length);
501
- return Buffer.from(this.buffer.buffer, this.buffer.byteOffset + offset, length);
502
- }
503
-
504
- _readHostObject(): unknown {
505
- throw new Error('No host object deserializer installed');
506
- }
507
-
508
- private _readBigInt(): bigint {
509
- const [bitfield, p] = readVarint(this.buffer, this._pos);
510
- this._pos = p;
511
- const negative = (bitfield & 1) === 1;
512
- const u32Count = (bitfield >> 1);
513
- let result = 0n;
514
- for (let i = 0; i < u32Count; i++) {
515
- const lo = this.buffer[this._pos] |
516
- (this.buffer[this._pos + 1] << 8) |
517
- (this.buffer[this._pos + 2] << 16) |
518
- (this.buffer[this._pos + 3] << 24);
519
- this._pos += 4;
520
- result |= BigInt(lo >>> 0) << BigInt(i * 32);
521
- }
522
- return negative ? -result : result;
523
- }
524
- }
525
-
526
- // ─── RegExp flags encoding ────────────────────────────────────────────────────
527
-
528
- // Matches V8's RegExpFlags enum bit layout
529
- function regExpFlagsToInt(re: RegExp): number {
530
- let flags = 0;
531
- if (re.global) flags |= 1 << 0;
532
- if (re.ignoreCase) flags |= 1 << 1;
533
- if (re.multiline) flags |= 1 << 2;
534
- if (re.sticky) flags |= 1 << 3;
535
- if (re.unicode) flags |= 1 << 4;
536
- if (re.dotAll) flags |= 1 << 5;
537
- if (re.hasIndices) flags |= 1 << 6;
538
- if (re.unicodeSets) flags |= 1 << 7;
539
- return flags;
540
- }
541
-
542
- function intToRegExpFlags(bits: number): string {
543
- let flags = '';
544
- if (bits & (1 << 0)) flags += 'g';
545
- if (bits & (1 << 1)) flags += 'i';
546
- if (bits & (1 << 2)) flags += 'm';
547
- if (bits & (1 << 3)) flags += 'y';
548
- if (bits & (1 << 4)) flags += 'u';
549
- if (bits & (1 << 5)) flags += 's';
550
- if (bits & (1 << 6)) flags += 'd';
551
- if (bits & (1 << 7)) flags += 'v';
552
- return flags;
553
- }
554
-
555
- // ─── DefaultSerializer / DefaultDeserializer ─────────────────────────────────
556
-
557
- export class DefaultSerializer extends Serializer {
558
- constructor() {
559
- super();
560
- this._setTreatArrayBufferViewsAsHostObjects(true);
561
- }
562
-
563
- override _writeHostObject(abView: NodeJS.ArrayBufferView): void {
564
- let typeIndex: number;
565
- if (Buffer.isBuffer(abView)) {
566
- typeIndex = 10; // FastBuffer / Buffer
567
- } else {
568
- typeIndex = typedArrayToIndex(abView);
569
- if (typeIndex === -1) {
570
- throw new (this._getDataCloneError)(
571
- `Unserializable host object: ${Object.prototype.toString.call(abView)}`
572
- );
573
- }
574
- }
575
- this.writeUint32(typeIndex);
576
- this.writeUint32(abView.byteLength);
577
- this.writeRawBytes(new Uint8Array(abView.buffer, abView.byteOffset, abView.byteLength));
578
- }
579
- }
580
-
581
- export class DefaultDeserializer extends Deserializer {
582
- override _readHostObject(): NodeJS.ArrayBufferView {
583
- const typeIndex = this.readUint32();
584
- const byteLength = this.readUint32();
585
- const byteOffset = this._readRawBytes(byteLength);
586
-
587
- if (typeIndex === 10) {
588
- // Buffer
589
- const b = Buffer.allocUnsafe(byteLength);
590
- this.buffer.copy(b, 0, this.buffer.byteOffset + byteOffset, this.buffer.byteOffset + byteOffset + byteLength);
591
- return b;
592
- }
593
-
594
- const Ctor = indexToTypedArray(typeIndex);
595
- if (!Ctor) throw new Error(`Unknown TypedArray type index ${typeIndex}`);
596
-
597
- const bytesPerElement = (Ctor as unknown as { BYTES_PER_ELEMENT?: number }).BYTES_PER_ELEMENT ?? 1;
598
- const elementCount = byteLength / bytesPerElement;
599
- const absoluteOffset = this.buffer.byteOffset + byteOffset;
600
-
601
- if (absoluteOffset % bytesPerElement === 0) {
602
- return new Ctor(this.buffer.buffer as ArrayBuffer, absoluteOffset, elementCount);
603
- }
604
- // Unaligned — copy to aligned buffer
605
- const copy = Buffer.allocUnsafe(byteLength);
606
- this.buffer.copy(copy, 0, this.buffer.byteOffset + byteOffset, this.buffer.byteOffset + byteOffset + byteLength);
607
- return new Ctor(copy.buffer as ArrayBuffer, copy.byteOffset, elementCount);
608
- }
609
- }
package/src/test.mts DELETED
@@ -1,3 +0,0 @@
1
- import { run } from '@gjsify/unit';
2
- import testSuite from './index.spec.js';
3
- run({ testSuite });
package/tsconfig.json DELETED
@@ -1,29 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "module": "ESNext",
4
- "target": "ESNext",
5
- "moduleResolution": "bundler",
6
- "types": [
7
- "node"
8
- ],
9
- "experimentalDecorators": true,
10
- "emitDeclarationOnly": true,
11
- "declaration": true,
12
- "allowImportingTsExtensions": true,
13
- "outDir": "lib",
14
- "rootDir": "src",
15
- "declarationDir": "lib/types",
16
- "composite": true,
17
- "skipLibCheck": true,
18
- "allowJs": true,
19
- "checkJs": false,
20
- "strict": false
21
- },
22
- "include": [
23
- "src/**/*.ts"
24
- ],
25
- "exclude": [
26
- "src/test.ts",
27
- "src/test.mts"
28
- ]
29
- }
@@ -1 +0,0 @@
1
- {"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/typescript/lib/lib.es2023.d.ts","../../../node_modules/typescript/lib/lib.es2024.d.ts","../../../node_modules/typescript/lib/lib.es2025.d.ts","../../../node_modules/typescript/lib/lib.esnext.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/typescript/lib/lib.dom.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../../node_modules/typescript/lib/lib.scripthost.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2023.array.d.ts","../../../node_modules/typescript/lib/lib.es2023.collection.d.ts","../../../node_modules/typescript/lib/lib.es2023.intl.d.ts","../../../node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","../../../node_modules/typescript/lib/lib.es2024.collection.d.ts","../../../node_modules/typescript/lib/lib.es2024.object.d.ts","../../../node_modules/typescript/lib/lib.es2024.promise.d.ts","../../../node_modules/typescript/lib/lib.es2024.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2024.string.d.ts","../../../node_modules/typescript/lib/lib.es2025.collection.d.ts","../../../node_modules/typescript/lib/lib.es2025.float16.d.ts","../../../node_modules/typescript/lib/lib.es2025.intl.d.ts","../../../node_modules/typescript/lib/lib.es2025.iterator.d.ts","../../../node_modules/typescript/lib/lib.es2025.promise.d.ts","../../../node_modules/typescript/lib/lib.es2025.regexp.d.ts","../../../node_modules/typescript/lib/lib.esnext.array.d.ts","../../../node_modules/typescript/lib/lib.esnext.collection.d.ts","../../../node_modules/typescript/lib/lib.esnext.date.d.ts","../../../node_modules/typescript/lib/lib.esnext.decorators.d.ts","../../../node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../../node_modules/typescript/lib/lib.esnext.error.d.ts","../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.esnext.temporal.d.ts","../../../node_modules/typescript/lib/lib.esnext.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/typescript/lib/lib.esnext.full.d.ts","../../../node_modules/@girs/glib-2.0/glib-2.0-ambient.d.ts","../../../node_modules/@girs/glib-2.0/glib-2.0-import.d.ts","../../../node_modules/@girs/gjs/gettext.d.ts","../../../node_modules/@girs/gobject-2.0/gobject-2.0-ambient.d.ts","../../../node_modules/@girs/gobject-2.0/gobject-2.0-import.d.ts","../../../node_modules/@girs/gobject-2.0/gobject-2.0.d.ts","../../../node_modules/@girs/gobject-2.0/index.d.ts","../../../node_modules/@girs/gjs/system.d.ts","../../../node_modules/@girs/cairo-1.0/cairo-1.0-ambient.d.ts","../../../node_modules/@girs/cairo-1.0/cairo-1.0-import.d.ts","../../../node_modules/@girs/cairo-1.0/cairo-1.0.d.ts","../../../node_modules/@girs/cairo-1.0/index.d.ts","../../../node_modules/@girs/gjs/cairo.d.ts","../../../node_modules/@girs/gjs/console.d.ts","../../../node_modules/@girs/gjs/gi.d.ts","../../../node_modules/@girs/gjs/gjs-ambient.d.ts","../../../node_modules/@girs/gjs/gjs.d.ts","../../../node_modules/@girs/gjs/index.d.ts","../../../node_modules/@girs/glib-2.0/glib-2.0.d.ts","../../../node_modules/@girs/glib-2.0/index.d.ts","./src/heap.ts","../../gjs/unit/lib/types/spy.d.ts","../../gjs/unit/lib/types/index.d.ts","./src/index.spec.ts","./src/serdes.ts","./src/index.ts","../../../node_modules/@types/node/compatibility/iterators.d.ts","../../../node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../node_modules/@types/node/web-globals/blob.d.ts","../../../node_modules/@types/node/web-globals/console.d.ts","../../../node_modules/@types/node/web-globals/crypto.d.ts","../../../node_modules/@types/node/web-globals/domexception.d.ts","../../../node_modules/@types/node/web-globals/encoding.d.ts","../../../node_modules/@types/node/web-globals/events.d.ts","../../../node_modules/undici-types/utility.d.ts","../../../node_modules/undici-types/header.d.ts","../../../node_modules/undici-types/readable.d.ts","../../../node_modules/undici-types/fetch.d.ts","../../../node_modules/undici-types/formdata.d.ts","../../../node_modules/undici-types/connector.d.ts","../../../node_modules/undici-types/client-stats.d.ts","../../../node_modules/undici-types/client.d.ts","../../../node_modules/undici-types/errors.d.ts","../../../node_modules/undici-types/dispatcher.d.ts","../../../node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/undici-types/global-origin.d.ts","../../../node_modules/undici-types/pool-stats.d.ts","../../../node_modules/undici-types/pool.d.ts","../../../node_modules/undici-types/handlers.d.ts","../../../node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/undici-types/round-robin-pool.d.ts","../../../node_modules/undici-types/h2c-client.d.ts","../../../node_modules/undici-types/agent.d.ts","../../../node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/undici-types/mock-call-history.d.ts","../../../node_modules/undici-types/mock-agent.d.ts","../../../node_modules/undici-types/mock-client.d.ts","../../../node_modules/undici-types/mock-pool.d.ts","../../../node_modules/undici-types/snapshot-agent.d.ts","../../../node_modules/undici-types/mock-errors.d.ts","../../../node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/undici-types/retry-handler.d.ts","../../../node_modules/undici-types/retry-agent.d.ts","../../../node_modules/undici-types/api.d.ts","../../../node_modules/undici-types/cache-interceptor.d.ts","../../../node_modules/undici-types/interceptors.d.ts","../../../node_modules/undici-types/util.d.ts","../../../node_modules/undici-types/cookies.d.ts","../../../node_modules/undici-types/patch.d.ts","../../../node_modules/undici-types/websocket.d.ts","../../../node_modules/undici-types/eventsource.d.ts","../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/undici-types/content-type.d.ts","../../../node_modules/undici-types/cache.d.ts","../../../node_modules/undici-types/index.d.ts","../../../node_modules/@types/node/web-globals/fetch.d.ts","../../../node_modules/@types/node/web-globals/importmeta.d.ts","../../../node_modules/@types/node/web-globals/messaging.d.ts","../../../node_modules/@types/node/web-globals/navigator.d.ts","../../../node_modules/@types/node/web-globals/performance.d.ts","../../../node_modules/@types/node/web-globals/storage.d.ts","../../../node_modules/@types/node/web-globals/streams.d.ts","../../../node_modules/@types/node/web-globals/timers.d.ts","../../../node_modules/@types/node/web-globals/url.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/inspector.generated.d.ts","../../../node_modules/@types/node/inspector/promises.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/buffer/index.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/path/posix.d.ts","../../../node_modules/@types/node/path/win32.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/quic.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/readline/promises.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/sea.d.ts","../../../node_modules/@types/node/sqlite.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/test/reporters.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/util/types.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/index.d.ts"],"fileIdsList":[[102,105,109,122,185,188,193,197,200,202,203,204,217],[105,109,122,185,188,193,197,200,202,203,204,217],[100,109,111,113,122,185,188,193,197,200,202,203,204,217],[103,104,109,122,185,188,193,197,200,202,203,204,217],[100,105,109,122,185,188,193,197,200,202,203,204,217],[109,122,185,188,193,197,200,202,203,204,217],[96,101,106,107,108,122,185,188,193,197,200,202,203,204,217],[96,100,101,106,109,113,122,185,188,193,197,200,202,203,204,217],[109,110,122,185,188,193,197,200,202,203,204,217],[100,109,122,185,188,193,197,200,202,203,204,217],[94,109,113,122,185,188,193,197,200,202,203,204,217],[109,113,122,185,188,193,197,200,202,203,204,217],[100,109,111,122,185,188,193,197,200,202,203,204,217],[95,109,112,122,185,188,193,197,200,202,203,204,217],[97,100,109,122,185,188,193,197,200,202,203,204,217],[109,111,113,122,185,188,193,197,200,202,203,204,217],[98,99,109,122,185,188,193,197,200,202,203,204,217],[109,122,182,183,185,188,193,197,200,202,203,204,217],[109,122,184,185,188,193,197,200,202,203,204,217],[109,185,188,193,197,200,202,203,204,217],[109,122,185,188,193,197,200,202,203,204,217,225],[109,122,185,186,188,191,193,196,197,200,202,203,204,206,217,222,234],[109,122,185,186,187,188,193,196,197,200,202,203,204,217],[109,122,185,188,193,197,200,202,203,204,217,235],[109,122,185,188,189,190,193,197,200,202,203,204,208,217],[109,122,185,188,190,193,197,200,202,203,204,217,222,231],[109,122,185,188,191,193,196,197,200,202,203,204,206,217],[109,122,184,185,188,192,193,197,200,202,203,204,217],[109,122,185,188,193,194,197,200,202,203,204,217],[109,122,185,188,193,195,196,197,200,202,203,204,217],[109,122,184,185,188,193,196,197,200,202,203,204,217],[109,122,185,188,193,196,197,198,200,202,203,204,217,222,234],[109,122,185,188,193,196,197,198,200,202,203,204,217,222,225],[109,122,172,185,188,193,196,197,199,200,202,203,204,206,217,222,234],[109,122,185,188,193,196,197,199,200,202,203,204,206,217,222,231,234],[109,122,185,188,193,197,199,200,201,202,203,204,217,222,231,234],[109,120,121,122,123,124,125,126,127,128,129,130,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241],[109,122,185,188,193,196,197,200,202,203,204,217],[109,122,185,188,193,197,200,202,204,217],[109,122,185,188,193,197,200,202,203,204,205,217,234],[109,122,185,188,193,196,197,200,202,203,204,206,217,222],[109,122,185,188,193,197,200,202,203,204,208,217],[109,122,185,188,193,197,200,202,203,204,209,217],[109,122,185,188,193,196,197,200,202,203,204,212,217],[109,122,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241],[109,122,185,188,193,197,200,202,203,204,214,217],[109,122,185,188,193,197,200,202,203,204,215,217],[109,122,185,188,190,193,197,200,202,203,204,206,217,225],[109,122,185,188,193,196,197,200,202,203,204,217,218],[109,122,185,188,193,197,200,202,203,204,217,219,235,238],[109,122,185,188,193,196,197,200,202,203,204,217,222,224,225],[109,122,185,188,193,197,200,202,203,204,217,223,225],[109,122,185,188,193,197,200,202,203,204,217,225,235],[109,122,185,188,193,197,200,202,203,204,217,226],[109,122,182,185,188,193,197,200,202,203,204,217,222,228,234],[109,122,185,188,193,197,200,202,203,204,217,222,227],[109,122,185,188,193,196,197,200,202,203,204,217,229,230],[109,122,185,188,193,197,200,202,203,204,217,229,230],[109,122,185,188,190,193,197,200,202,203,204,206,217,222,231],[109,122,185,188,193,197,200,202,203,204,217,232],[109,122,185,188,193,197,200,202,203,204,206,217,233],[109,122,185,188,193,197,199,200,202,203,204,215,217,234],[109,122,185,188,193,197,200,202,203,204,217,235,236],[109,122,185,188,190,193,197,200,202,203,204,217,236],[109,122,185,188,193,197,200,202,203,204,217,222,237],[109,122,185,188,193,197,200,202,203,204,205,217,238],[109,122,185,188,193,197,200,202,203,204,217,239],[109,122,185,188,190,193,197,200,202,203,204,217],[109,122,172,185,188,193,197,200,202,203,204,217],[109,122,185,188,193,197,200,202,203,204,217,234],[109,122,185,188,193,197,200,202,203,204,217,240],[109,122,185,188,193,197,200,202,203,204,212,217],[109,122,185,188,193,197,200,202,203,204,217,230],[109,122,172,185,188,193,196,197,198,200,202,203,204,212,217,222,225,234,237,238,240],[109,122,185,188,193,197,200,202,203,204,217,222,241],[109,122,137,140,143,144,185,188,193,197,200,202,203,204,217,234],[109,122,140,185,188,193,197,200,202,203,204,217,222,234],[109,122,140,144,185,188,193,197,200,202,203,204,217,234],[109,122,185,188,193,197,200,202,203,204,217,222],[109,122,134,185,188,193,197,200,202,203,204,217],[109,122,138,185,188,193,197,200,202,203,204,217],[109,122,136,137,140,185,188,193,197,200,202,203,204,217,234],[109,122,185,188,193,197,200,202,203,204,206,217,231],[109,122,185,188,193,197,200,202,203,204,217,242],[109,122,134,185,188,193,197,200,202,203,204,217,242],[109,122,136,140,185,188,193,197,200,202,203,204,206,217,234],[109,122,131,132,133,135,139,185,188,193,196,197,200,202,203,204,217,222,234],[109,122,140,149,157,185,188,193,197,200,202,203,204,217],[109,122,132,138,185,188,193,197,200,202,203,204,217],[109,122,140,166,167,185,188,193,197,200,202,203,204,217],[109,122,132,135,140,185,188,193,197,200,202,203,204,217,225,234,242],[109,122,140,185,188,193,197,200,202,203,204,217],[109,122,136,140,185,188,193,197,200,202,203,204,217,234],[109,122,131,185,188,193,197,200,202,203,204,217],[109,122,134,135,136,138,139,140,141,142,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,167,168,169,170,171,185,188,193,197,200,202,203,204,217],[109,122,140,159,162,185,188,193,197,200,202,203,204,217],[109,122,140,149,150,151,185,188,193,197,200,202,203,204,217],[109,122,138,140,150,152,185,188,193,197,200,202,203,204,217],[109,122,139,185,188,193,197,200,202,203,204,217],[109,122,132,134,140,185,188,193,197,200,202,203,204,217],[109,122,140,144,150,152,185,188,193,197,200,202,203,204,217],[109,122,144,185,188,193,197,200,202,203,204,217],[109,122,138,140,143,185,188,193,197,200,202,203,204,217,234],[109,122,132,136,140,149,185,188,193,197,200,202,203,204,217],[109,122,140,159,185,188,193,197,200,202,203,204,217],[109,122,152,185,188,193,197,200,202,203,204,217],[109,122,134,140,166,185,188,193,197,200,202,203,204,217,225,240,242],[109,111,115,122,185,188,193,197,200,202,203,204,217],[109,116,122,185,188,193,197,200,202,203,204,217,237],[109,114,118,122,185,188,193,197,200,202,203,204,217]],"fileInfos":[{"version":"bcd24271a113971ba9eb71ff8cb01bc6b0f872a85c23fdbe5d93065b375933cd","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f88bedbeb09c6f5a6645cb24c7c55f1aa22d19ae96c8e6959cbd8b85a707bc6","impliedFormat":1},{"version":"7fe93b39b810eadd916be8db880dd7f0f7012a5cc6ffb62de8f62a2117fa6f1f","impliedFormat":1},{"version":"bb0074cc08b84a2374af33d8bf044b80851ccc9e719a5e202eacf40db2c31600","impliedFormat":1},{"version":"1a7daebe4f45fb03d9ec53d60008fbf9ac45a697fdc89e4ce218bc94b94f94d6","impliedFormat":1},{"version":"f94b133a3cb14a288803be545ac2683e0d0ff6661bcd37e31aaaec54fc382aed","impliedFormat":1},{"version":"f59d0650799f8782fd74cf73c19223730c6d1b9198671b1c5b3a38e1188b5953","impliedFormat":1},{"version":"8a15b4607d9a499e2dbeed9ec0d3c0d7372c850b2d5f1fb259e8f6d41d468a84","impliedFormat":1},{"version":"26e0fe14baee4e127f4365d1ae0b276f400562e45e19e35fd2d4c296684715e6","impliedFormat":1},{"version":"1e9332c23e9a907175e0ffc6a49e236f97b48838cc8aec9ce7e4cec21e544b65","impliedFormat":1},{"version":"3753fbc1113dc511214802a2342280a8b284ab9094f6420e7aa171e868679f91","impliedFormat":1},{"version":"999ca32883495a866aa5737fe1babc764a469e4cde6ee6b136a4b9ae68853e4b","impliedFormat":1},{"version":"17f13ecb98cbc39243f2eee1f16d45cd8ec4706b03ee314f1915f1a8b42f6984","impliedFormat":1},{"version":"d6b1eba8496bdd0eed6fc8a685768fe01b2da4a0388b5fe7df558290bffcf32f","affectsGlobalScope":true,"impliedFormat":1},{"version":"7f57fc4404ff020bc45b9c620aff2b40f700b95fe31164024c453a5e3c163c54","impliedFormat":1},{"version":"7f57fc4404ff020bc45b9c620aff2b40f700b95fe31164024c453a5e3c163c54","impliedFormat":1},{"version":"2a2de5b9459b3fc44decd9ce6100b72f1b002ef523126c1d3d8b2a4a63d74d78","affectsGlobalScope":true,"impliedFormat":1},{"version":"f13f4b465c99041e912db5c44129a94588e1aafee35a50eab51044833f50b4ee","affectsGlobalScope":true,"impliedFormat":1},{"version":"eadcffda2aa84802c73938e589b9e58248d74c59cb7fcbca6474e3435ac15504","affectsGlobalScope":true,"impliedFormat":1},{"version":"105ba8ff7ba746404fe1a2e189d1d3d2e0eb29a08c18dded791af02f29fb4711","affectsGlobalScope":true,"impliedFormat":1},{"version":"00343ca5b2e3d48fa5df1db6e32ea2a59afab09590274a6cccb1dbae82e60c7c","affectsGlobalScope":true,"impliedFormat":1},{"version":"ebd9f816d4002697cb2864bea1f0b70a103124e18a8cd9645eeccc09bdf80ab4","affectsGlobalScope":true,"impliedFormat":1},{"version":"2c1afac30a01772cd2a9a298a7ce7706b5892e447bb46bdbeef720f7b5da77ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"7b0225f483e4fa685625ebe43dd584bb7973bbd84e66a6ba7bbe175ee1048b4f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c0a4b8ac6ce74679c1da2b3795296f5896e31c38e888469a8e0f99dc3305de60","affectsGlobalScope":true,"impliedFormat":1},{"version":"3084a7b5f569088e0146533a00830e206565de65cae2239509168b11434cd84f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5079c53f0f141a0698faa903e76cb41cd664e3efb01cc17a5c46ec2eb0bef42","affectsGlobalScope":true,"impliedFormat":1},{"version":"32cafbc484dea6b0ab62cf8473182bbcb23020d70845b406f80b7526f38ae862","affectsGlobalScope":true,"impliedFormat":1},{"version":"fca4cdcb6d6c5ef18a869003d02c9f0fd95df8cfaf6eb431cd3376bc034cad36","affectsGlobalScope":true,"impliedFormat":1},{"version":"b93ec88115de9a9dc1b602291b85baf825c85666bf25985cc5f698073892b467","affectsGlobalScope":true,"impliedFormat":1},{"version":"f5c06dcc3fe849fcb297c247865a161f995cc29de7aa823afdd75aaaddc1419b","affectsGlobalScope":true,"impliedFormat":1},{"version":"b77e16112127a4b169ef0b8c3a4d730edf459c5f25fe52d5e436a6919206c4d7","affectsGlobalScope":true,"impliedFormat":1},{"version":"fbffd9337146eff822c7c00acbb78b01ea7ea23987f6c961eba689349e744f8c","affectsGlobalScope":true,"impliedFormat":1},{"version":"a995c0e49b721312f74fdfb89e4ba29bd9824c770bbb4021d74d2bf560e4c6bd","affectsGlobalScope":true,"impliedFormat":1},{"version":"c7b3542146734342e440a84b213384bfa188835537ddbda50d30766f0593aff9","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce6180fa19b1cccd07ee7f7dbb9a367ac19c0ed160573e4686425060b6df7f57","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f02e2476bccb9dbe21280d6090f0df17d2f66b74711489415a8aa4df73c9675","affectsGlobalScope":true,"impliedFormat":1},{"version":"45e3ab34c1c013c8ab2dc1ba4c80c780744b13b5676800ae2e3be27ae862c40c","affectsGlobalScope":true,"impliedFormat":1},{"version":"805c86f6cca8d7702a62a844856dbaa2a3fd2abef0536e65d48732441dde5b5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e42e397f1a5a77994f0185fd1466520691456c772d06bf843e5084ceb879a0ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"f4c2b41f90c95b1c532ecc874bd3c111865793b23aebcc1c3cbbabcd5d76ffb0","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab26191cfad5b66afa11b8bf935ef1cd88fabfcb28d30b2dfa6fad877d050332","affectsGlobalScope":true,"impliedFormat":1},{"version":"2088bc26531e38fb05eedac2951480db5309f6be3fa4a08d2221abb0f5b4200d","affectsGlobalScope":true,"impliedFormat":1},{"version":"cb9d366c425fea79716a8fb3af0d78e6b22ebbab3bd64d25063b42dc9f531c1e","affectsGlobalScope":true,"impliedFormat":1},{"version":"500934a8089c26d57ebdb688fc9757389bb6207a3c8f0674d68efa900d2abb34","affectsGlobalScope":true,"impliedFormat":1},{"version":"689da16f46e647cef0d64b0def88910e818a5877ca5379ede156ca3afb780ac3","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc21cc8b6fee4f4c2440d08035b7ea3c06b3511314c8bab6bef7a92de58a2593","affectsGlobalScope":true,"impliedFormat":1},{"version":"7ca53d13d2957003abb47922a71866ba7cb2068f8d154877c596d63c359fed25","affectsGlobalScope":true,"impliedFormat":1},{"version":"54725f8c4df3d900cb4dac84b64689ce29548da0b4e9b7c2de61d41c79293611","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5594bc3076ac29e6c1ebda77939bc4c8833de72f654b6e376862c0473199323","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f3eb332c2d73e729f3364fcc0c2b375e72a121e8157d25a82d67a138c83a95c","affectsGlobalScope":true,"impliedFormat":1},{"version":"6f4427f9642ce8d500970e4e69d1397f64072ab73b97e476b4002a646ac743b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"48915f327cd1dea4d7bd358d9dc7732f58f9e1626a29cc0c05c8c692419d9bb7","affectsGlobalScope":true,"impliedFormat":1},{"version":"b7bf9377723203b5a6a4b920164df22d56a43f593269ba6ae1fdc97774b68855","affectsGlobalScope":true,"impliedFormat":1},{"version":"db9709688f82c9e5f65a119c64d835f906efe5f559d08b11642d56eb85b79357","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b25b8c874acd1a4cf8444c3617e037d444d19080ac9f634b405583fd10ce1f7","affectsGlobalScope":true,"impliedFormat":1},{"version":"37be57d7c90cf1f8112ee2636a068d8fd181289f82b744160ec56a7dc158a9f5","affectsGlobalScope":true,"impliedFormat":1},{"version":"a917a49ac94cd26b754ab84e113369a75d1a47a710661d7cd25e961cc797065f","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d3261badeb7843d157ef3e6f5d1427d0eeb0af0cf9df84a62cfd29fd47ac86e","affectsGlobalScope":true,"impliedFormat":1},{"version":"195daca651dde22f2167ac0d0a05e215308119a3100f5e6268e8317d05a92526","affectsGlobalScope":true,"impliedFormat":1},{"version":"8b11e4285cd2bb164a4dc09248bdec69e9842517db4ca47c1ba913011e44ff2f","affectsGlobalScope":true,"impliedFormat":1},{"version":"0508571a52475e245b02bc50fa1394065a0a3d05277fbf5120c3784b85651799","affectsGlobalScope":true,"impliedFormat":1},{"version":"8f9af488f510c3015af3cc8c267a9e9d96c4dd38a1fdff0e11dc5a544711415b","affectsGlobalScope":true,"impliedFormat":1},{"version":"fc611fea8d30ea72c6bbfb599c9b4d393ce22e2f5bfef2172534781e7d138104","affectsGlobalScope":true,"impliedFormat":1},{"version":"0bd714129fca875f7d4c477a1a392200b0bcd13fb2e80928cd334b63830ea047","affectsGlobalScope":true,"impliedFormat":1},{"version":"e2c9037ae6cd2c52d80ceef0b3c5ffdb488627d71529cf4f63776daf11161c9a","affectsGlobalScope":true,"impliedFormat":1},{"version":"135d5cf4d345f59f1a9caadfafcd858d3d9cc68290db616cc85797224448cccc","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc238c3f81c2984751932b6aab223cd5b830e0ac6cad76389e5e9d2ffc03287d","affectsGlobalScope":true,"impliedFormat":1},{"version":"4a07f9b76d361f572620927e5735b77d6d2101c23cdd94383eb5b706e7b36357","affectsGlobalScope":true,"impliedFormat":1},{"version":"7c4e8dc6ab834cc6baa0227e030606d29e3e8449a9f67cdf5605ea5493c4db29","affectsGlobalScope":true,"impliedFormat":1},{"version":"de7ba0fd02e06cd9a5bd4ab441ed0e122735786e67dde1e849cced1cd8b46b78","affectsGlobalScope":true,"impliedFormat":1},{"version":"6148e4e88d720a06855071c3db02069434142a8332cf9c182cda551adedf3156","affectsGlobalScope":true,"impliedFormat":1},{"version":"d63dba625b108316a40c95a4425f8d4294e0deeccfd6c7e59d819efa19e23409","affectsGlobalScope":true,"impliedFormat":1},{"version":"0568d6befee03dd435bed4fc25c4e46865b24bdcb8c563fdc21f580a2c301904","affectsGlobalScope":true,"impliedFormat":1},{"version":"30d62269b05b584741f19a5369852d5d34895aa2ac4fd948956f886d15f9cc0d","affectsGlobalScope":true,"impliedFormat":1},{"version":"f128dae7c44d8f35ee42e0a437000a57c9f06cc04f8b4fb42eebf44954d53dc8","affectsGlobalScope":true,"impliedFormat":1},{"version":"ffbe6d7b295306b2ba88030f65b74c107d8d99bdcf596ea99c62a02f606108b0","affectsGlobalScope":true,"impliedFormat":1},{"version":"996fb27b15277369c68a4ba46ed138b4e9e839a02fb4ec756f7997629242fd9f","affectsGlobalScope":true,"impliedFormat":1},{"version":"79b712591b270d4778c89706ca2cfc56ddb8c3f895840e477388f1710dc5eda9","affectsGlobalScope":true,"impliedFormat":1},{"version":"20884846cef428b992b9bd032e70a4ef88e349263f63aeddf04dda837a7dba26","affectsGlobalScope":true,"impliedFormat":1},{"version":"5fcab789c73a97cd43828ee3cc94a61264cf24d4c44472ce64ced0e0f148bdb2","affectsGlobalScope":true,"impliedFormat":1},{"version":"db59a81f070c1880ad645b2c0275022baa6a0c4f0acdc58d29d349c6efcf0903","affectsGlobalScope":true,"impliedFormat":1},{"version":"673294292640f5722b700e7d814e17aaf7d93f83a48a2c9b38f33cbc940ad8b0","affectsGlobalScope":true,"impliedFormat":1},{"version":"d786b48f934cbca483b3c6d0a798cb43bbb4ada283e76fb22c28e53ae05b9e69","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ecb8e347cb6b2a8927c09b86263663289418df375f5e68e11a0ae683776978f","affectsGlobalScope":true,"impliedFormat":1},{"version":"142efd4ce210576f777dc34df121777be89eda476942d6d6663b03dcb53be3ff","affectsGlobalScope":true,"impliedFormat":1},{"version":"379bc41580c2d774f82e828c70308f24a005b490c25ba34d679d84bcf05c3d9d","affectsGlobalScope":true,"impliedFormat":1},{"version":"ed484fb2aa8a1a23d0277056ec3336e0a0b52f9b8d6a961f338a642faf43235d","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ffedae1d1c2d53fdbca1c96d3c7dda544281f7d262f99b6880634f8fd8d9820","affectsGlobalScope":true,"impliedFormat":1},{"version":"83a730b125d477dd264df8ba479afab27a3dae7152b005c214ab94dc7ee44fd3","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ce14b81c5cc821994aa8ec1d42b220dd41b27fcc06373bce3958af7421b77d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3a048b3e9302ef9a34ef4ebb9aecfb28b66abb3bce577206a79fee559c230da","affectsGlobalScope":true,"impliedFormat":1},{"version":"ef4a897cd2a3f91000c10264e400b3667c7e51e1b7365f03b62e8081dc53bde6","impliedFormat":1},{"version":"2aed5de224f5094280addfaf59e82b362b3680083917cfa7f066c4b89cc58b74","impliedFormat":99},{"version":"86ecf772256f9205f72c768dc9b47d27b4254a64a1dd94f61c8c2f29219c24e1","affectsGlobalScope":true,"impliedFormat":99},{"version":"4936d25ba31379ce4e3d4289f6c0ea936510e111f823ec377015de6ba7047adf","impliedFormat":99},{"version":"1ffa53902f87f288dbaebc1dd9c754a0f0f1c4af2733fc7e173022209e7d4ef8","impliedFormat":99},{"version":"d7801240a49920afb07e1a83597b05a26e5e3758163a70448ba14df3f7ab5286","affectsGlobalScope":true,"impliedFormat":99},{"version":"6da820ee582c593971e71a933dbf54d72b47984bb11f888d225c7a8476e74790","impliedFormat":99},{"version":"048a292f9fb06d0aab8c52cabd81bc820c70d68500530afe1867c08e431d4e46","impliedFormat":99},{"version":"e2f9944677cba1c7f636dde67d7ca77982da3b52134c617bd86d3a4d8607b498","impliedFormat":99},{"version":"ceaf67c6cb2df4f38f466bd3709a72199d1d98377dcf215bf760b2a383fc73a8","impliedFormat":99},{"version":"c5f89dedf8e238012d580d16ee2286bf0681f1389f14d419c87711070430995c","affectsGlobalScope":true,"impliedFormat":99},{"version":"dc996a90baa100126e6014b2f55022930e1a44621ec68eb163f322714b7596bc","impliedFormat":99},{"version":"cdd5245a59183386c7b465ad56e2353a0a1b49c32733520ec5c0eeb718781012","impliedFormat":99},{"version":"35c6737b37a2c92e67a14ba7692f3216df6c140c28133835768f7c66cb15fa88","impliedFormat":99},{"version":"7b607f4711c496c7c4f57abddfc7b9912059e1f264417ff8f4280b65f756bf4d","impliedFormat":99},{"version":"17122ddf1e2ff9f0538a06af6edc8d2666d7e1a428239e86358afc09ac7a8779","impliedFormat":99},{"version":"2cc6a5c34041442caa16aff0686d41595296248c7c33bfac5b94cd4fe8ae20de","impliedFormat":99},{"version":"8384e3ab082eecd9d0faa07ddf7e9ff3879bfac60216e47328f799600e47ea80","affectsGlobalScope":true,"impliedFormat":99},{"version":"715e7c015d2f3f4de0da107d9be2db02b52cea3d2d446ad11d2e732848d8e3e7","impliedFormat":99},{"version":"f62bcd0d626998f4b14a5e4bf6c65abf4dfeaa042243dd57e4e92125fd602ed6","impliedFormat":99},{"version":"9462f849ff8d50a61639f09a8e369f7584c623a8cbcf9d99c6b81aacbca91fd2","impliedFormat":99},{"version":"c68b306615ff15907194c9bcaaafa794a2d2d4b2f8abe6f12b0b1b237fb8f54e","signature":"14a1a8aaa4ab65b070cb5f20d56c05ef8526b3f437c45a317448f3a2c65375af"},"cda120f78df4c624c7fb1bd8e17343a39bfbede803f38312fb8e51fa818e1a7a","d9e135cc1dcf9f798edb9665b777dcad812d980a467b6ed11ce1d1bb9f017176",{"version":"62281c9e4d04a66c7db9db8eaf19d2ed3a9ab7b2adf0ad8a7d195e351cb3a5a9","signature":"fefaf643ad02c05059e06244a8291c4cb3a2693ec928c843599c25d00ee9f574"},{"version":"e24c45f9ef67810c82b7ffa2fca6dd70c26508062a23872b4a5ddc39dadff452","signature":"ea384449d268314b35c0f43c9d7e95b56a1b323a78505b3db5f92730360752ca"},{"version":"8f9fff1eaf1dac285c9263148a42090a7a7ce31326bf52dd9d3843d0fe9cb0b0","signature":"ff0e50ee3b075a8e8466ee2aaa1259702336ee549e32251f1f6a3e7f8ac59191"},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"0ccdaa19852d25ecd84eec365c3bfa16e7859cadecf6e9ca6d0dbbbee439743f","affectsGlobalScope":true,"impliedFormat":1},{"version":"cc2110f7decca6bfb9392e30421cfa1436479e4a6756e8fec6cbc22625d4f881","affectsGlobalScope":true,"impliedFormat":1},{"version":"096116f8fedc1765d5bd6ef360c257b4a9048e5415054b3bf3c41b07f8951b0b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5e01375c9e124a83b52ee4b3244ed1a4d214a6cfb54ac73e164a823a4a7860a","affectsGlobalScope":true,"impliedFormat":1},{"version":"f90ae2bbce1505e67f2f6502392e318f5714bae82d2d969185c4a6cecc8af2fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b58e207b93a8f1c88bbf2a95ddc686ac83962b13830fe8ad3f404ffc7051fb4","affectsGlobalScope":true,"impliedFormat":1},{"version":"1fefabcb2b06736a66d2904074d56268753654805e829989a46a0161cd8412c5","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"c18a99f01eb788d849ad032b31cafd49de0b19e083fe775370834c5675d7df8e","affectsGlobalScope":true,"impliedFormat":1},{"version":"5247874c2a23b9a62d178ae84f2db6a1d54e6c9a2e7e057e178cc5eea13757fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","impliedFormat":1},{"version":"156a859e21ef3244d13afeeba4e49760a6afa035c149dda52f0c45ea8903b338","impliedFormat":1},{"version":"10ec5e82144dfac6f04fa5d1d6c11763b3e4dbbac6d99101427219ab3e2ae887","impliedFormat":1},{"version":"615754924717c0b1e293e083b83503c0a872717ad5aa60ed7f1a699eb1b4ea5c","impliedFormat":1},{"version":"074de5b2fdead0165a2757e3aaef20f27a6347b1c36adea27d51456795b37682","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"4137ebf04166f3a325f056aa56101adc75e9dceb30404a1844eb8604d89770e2","impliedFormat":1},{"version":"ccab02f3920fc75c01174c47fcf67882a11daf16baf9e81701d0a94636e94556","impliedFormat":1},{"version":"3e11fce78ad8c0e1d1db4ba5f0652285509be3acdd519529bc8fcef85f7dafd9","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"9c32412007b5662fd34a8eb04292fb5314ec370d7016d1c2fb8aa193c807fe22","impliedFormat":1},{"version":"7fd1b31fd35876b0aa650811c25ec2c97a3c6387e5473eb18004bed86cdd76b6","impliedFormat":1},{"version":"4d327f7d72ad0918275cea3eee49a6a8dc8114ae1d5b7f3f5d0774de75f7439a","impliedFormat":1},{"version":"6ebe8ebb8659aaa9d1acbf3710d7dae3e923e97610238b9511c25dc39023a166","impliedFormat":1},{"version":"e85d7f8068f6a26710bff0cc8c0fc5e47f71089c3780fbede05857331d2ddec9","impliedFormat":1},{"version":"7befaf0e76b5671be1d47b77fcc65f2b0aad91cc26529df1904f4a7c46d216e9","impliedFormat":1},{"version":"0a60a292b89ca7218b8616f78e5bbd1c96b87e048849469cccb4355e98af959a","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"5b03a034c72146b61573aab280f295b015b9168470f2df05f6080a2122f9b4df","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"249b9cab7f5d628b71308c7d9bb0a808b50b091e640ba3ed6e2d0516f4a8d91d","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"8aee8b6d4f9f62cf3776cda1305fb18763e2aade7e13cea5bbe699112df85214","impliedFormat":1},{"version":"98498b101803bb3dde9f76a56e65c14b75db1cc8bec5f4db72be541570f74fc5","impliedFormat":1},{"version":"1cc2a09e1a61a5222d4174ab358a9f9de5e906afe79dbf7363d871a7edda3955","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"b64d4d1c5f877f9c666e98e833f0205edb9384acc46e98a1fef344f64d6aba44","impliedFormat":1},{"version":"adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","impliedFormat":1},{"version":"12950411eeab8563b349cb7959543d92d8d02c289ed893d78499a19becb5a8cc","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"c9381908473a1c92cb8c516b184e75f4d226dad95c3a85a5af35f670064d9a2f","impliedFormat":1},{"version":"c3f5289820990ab66b70c7fb5b63cb674001009ff84b13de40619619a9c8175f","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3275d55fac10b799c9546804126239baf020d220136163f763b55a74e50e750","affectsGlobalScope":true,"impliedFormat":1},{"version":"fa68a0a3b7cb32c00e39ee3cd31f8f15b80cac97dce51b6ee7fc14a1e8deb30b","affectsGlobalScope":true,"impliedFormat":1},{"version":"1cf059eaf468efcc649f8cf6075d3cb98e9a35a0fe9c44419ec3d2f5428d7123","affectsGlobalScope":true,"impliedFormat":1},{"version":"6c36e755bced82df7fb6ce8169265d0a7bb046ab4e2cb6d0da0cb72b22033e89","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"7a93de4ff8a63bafe62ba86b89af1df0ccb5e40bb85b0c67d6bbcfdcf96bf3d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"90e85f9bc549dfe2b5749b45fe734144e96cd5d04b38eae244028794e142a77e","affectsGlobalScope":true,"impliedFormat":1},{"version":"e0a5deeb610b2a50a6350bd23df6490036a1773a8a71d70f2f9549ab009e67ee","affectsGlobalScope":true,"impliedFormat":1},{"version":"d2ae155afe8a01cc0ae612d99117cf8ef16692ba7c4366590156fdec1bcf2d8c","impliedFormat":1},{"version":"3f5e5d9be35913db9fea42a63f3df0b7e3c8703b97670a2125587b4dbbd56d7c","impliedFormat":1},{"version":"8caeb65fdc3bfe0d13f86f67324fcb2d858ed1c55f1f0cce892eb1acfb9f3239","impliedFormat":1},{"version":"57c23df0b5f7a8e26363a3849b0bc7763f6b241207157c8e40089d1df4116f35","affectsGlobalScope":true,"impliedFormat":1},{"version":"3b8bc0c17b54081b0878673989216229e575d67a10874e84566a21025a2461ee","impliedFormat":1},{"version":"5b0db5a58b73498792a29bfebc333438e61906fef75da898b410e24e52229e6f","impliedFormat":1},{"version":"dbe055b2b29a7bab2c1ca8f259436306adb43f469dca7e639a02cd3695d3f621","impliedFormat":1},{"version":"1678b04557dca52feab73cc67610918a7f5e25bfdba3e7fa081acd625d93106d","impliedFormat":1},{"version":"e3905f6902f0b69e5eefc230daa69fdd4ab707a973ec2d086d65af1b3ea47ef0","impliedFormat":1},{"version":"2ea729503db9793f2691162fec3dd1118cab62e96d025f8eeb376d43ec293395","impliedFormat":1},{"version":"9ec87fea42b92894b0f209931a880789d43c3397d09dd99c631ae40a2f7071d1","impliedFormat":1},{"version":"c68e88cdfadfb6c8ba5fc38e58a3a166b0beae77b1f05b7d921150a32a5ffb8d","impliedFormat":1},{"version":"2bc7aa4fba46df0bd495425a7c8201437a7d465f83854fac859df2d67f664df3","impliedFormat":1},{"version":"41d17e1ad9a002feb11c8cdd2777e5bbc0cdb1e3f595d237e4dded0b6949983b","impliedFormat":1},{"version":"07e4e61e946a9c15045539ecd5f5d2d02e7aab6fa82567826857e09cf0f37c2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"1c4714ccc29149efb8777a1da0b04b8d2258f5d13ddbf4cd3c3d361fb531ac86","impliedFormat":1},{"version":"3ff275f84f89f8a7c0543da838f9da9614201abc4ce74c533029825adfb4433d","impliedFormat":1},{"version":"0eb5d0cbf09de5d34542b977fd6a933bb2e0817bffe8e1a541b2f1ad1b9af1ff","impliedFormat":1},{"version":"10deca769dfed888051b1808d6746f8883a490a707f8bdf9367079146987d6d0","impliedFormat":1},{"version":"2c2bdaa1d8ead9f68628d6d9d250e46ee8e81aa4898b4769a36956ae15e060fe","impliedFormat":1},{"version":"c32c840c62d8bd7aeb3147aa6754cd2d922b990a6b6634530cb2ebdce5adc8e9","impliedFormat":1},{"version":"e1c1a0b4d1ead0de9eca52203aeb1f771f21e6238d6fcd15aa56ac2a02f1b7bf","impliedFormat":1},{"version":"82b91e4e42e6c41bc7fc1b6c2dc5eba6a2ba98375eb1f210e6ff6bba2d54177e","impliedFormat":1},{"version":"6fe28249ac0c7bc19a79aa9264baf00efbd080e868dbe1d3052033ad1c64f206","affectsGlobalScope":true,"impliedFormat":1},{"version":"cbed824fec91efefc7bbdcb8b43d1a531fdbebd0e2ef19481501ff365a93cb70","impliedFormat":1},{"version":"8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","impliedFormat":1},{"version":"d0716593b3f2b0451bcf0c24cfa86dec2235c325c89f201934248b7c742715fc","impliedFormat":1},{"version":"ec501101c2a96133a6c695f934c8f6642149cc728571b29cbb7b770984c1088e","impliedFormat":1},{"version":"b214ebcf76c51b115453f69729ee8aa7b7f8eccdae2a922b568a45c2d7ff52f7","impliedFormat":1},{"version":"429c9cdfa7d126255779efd7e6d9057ced2d69c81859bbab32073bad52e9ba76","impliedFormat":1},{"version":"2991bca2cc0f0628a278df2a2ccdb8d6cbcb700f3761abbed62bba137d5b1790","impliedFormat":1},{"version":"ce8653341224f8b45ff46d2a06f2cacb96f841f768a886c9d8dd8ec0878b11bd","affectsGlobalScope":true,"impliedFormat":1},{"version":"230763250f20449fa7b3c9273e1967adb0023dc890d4be1553faca658ee65971","impliedFormat":1},{"version":"c3e9078b60cb329d1221f5878e88cecfa3e74460550e605a58fcfb41a66029ff","impliedFormat":1},{"version":"a74edb3bab7394a9dbde529d60632be590def2f5f01024dbd85441587fbfbbe0","impliedFormat":1},{"version":"0ea59f7d3e51440baa64f429253759b106cfcbaf51e474cae606e02265b37cf8","impliedFormat":1},{"version":"bc18a1991ba681f03e13285fa1d7b99b03b67ee671b7bc936254467177543890","impliedFormat":1},{"version":"00049ccc87f3f37726db03c01ca68fe74fd9c0109b68c29eb9923ebec2c76b13","impliedFormat":1},{"version":"fa94bbf532b7af8f394b95fa310980d6e20bd2d4c871c6a6cb9f70f03750a44b","impliedFormat":1},{"version":"68d3f35108e2608b1f2f28b36d19d7055f31c4465cc5692cbd06c716a9fe7973","impliedFormat":1},{"version":"a6d543044570fbeed13a7f9925a868081cd2b14ef59cdd9da6ae76d41cab03d3","affectsGlobalScope":true,"impliedFormat":1},{"version":"7fa2214bb0d64701bc6f9ce8cde2fd2ff8c571e0b23065fa04a8a5a6beb91511","impliedFormat":1},{"version":"f1c93e046fb3d9b7f8249629f4b63dc068dd839b824dd0aa39a5e68476dc9420","impliedFormat":1},{"version":"016b29bf4926b80255a108c53a1451717350059da04fcae64d1075f5e93bbb39","impliedFormat":1},{"version":"841983e39bd4cbb463be385e92fda11057cab368bf27100a801c492f1d86cbaa","impliedFormat":1},{"version":"6f5383b3df1cdf4ff1aa7fb0850f77042b5786b5e65ec9a9b6be56ebfe4d9036","impliedFormat":1},{"version":"62fc21ed9ccbd83bd1166de277a4b5daaa8d15b5fa614c75610d20f3b73fba87","impliedFormat":1},{"version":"e4156ddb25aa0e3b5303d372f26957b36778f0f6bbd4326359269873295e3058","affectsGlobalScope":true,"impliedFormat":1},{"version":"cc1b433a84cae05ddc5672d4823170af78606ad21ecef60dbc4570190cbf1357","impliedFormat":1},{"version":"9d3821bc75c59577e52643324cec92fc2145642e8d17cf7ee07a3181f21d985d","impliedFormat":1},{"version":"7f78cfb2b343838612c192cb251746e3a7c62ac7675726a47e130d9b213f6580","impliedFormat":1},{"version":"201db9cf1687fab1adf5282fcba861f382b32303dc4f67c89d59655e78a25461","impliedFormat":1},{"version":"c77fb31bc17fd241d3922a9f88c59e3361cdf76d1328ba9412fc6bf7310b638d","impliedFormat":1},{"version":"0a20eaf2e4b1e3c1e1f87f7bccb0c936375b23b022baeea750519b7c9bc6ce83","impliedFormat":1},{"version":"b484ec11ba00e3a2235562a41898d55372ccabe607986c6fa4f4aba72093749f","impliedFormat":1},{"version":"a16b91b27bd6b706c687c88cbc8a7d4ee98e5ed6043026d6b84bda923c0aed67","impliedFormat":1},{"version":"694b812e0ed11285e8822cf8131e3ce7083a500b3b1d185fff9ed1089677bd0a","impliedFormat":1},{"version":"99ab6d0d660ce4d21efb52288a39fd35bb3f556980ec5463b1ae8f304a3bbc85","impliedFormat":1},{"version":"6eeded8c7e352be6e0efb83f4935ec752513c4d22043b52522b90849a49a3a11","impliedFormat":1},{"version":"6c1ad90050ffbb151cacc68e2d06ea1a26a945659391e32651f5d42b86fd7f2c","impliedFormat":1},{"version":"55cdbeebe76a1fa18bbd7e7bf73350a2173926bd3085bb050cf5a5397025ee4e","impliedFormat":1}],"root":[114,[117,119]],"options":{"allowImportingTsExtensions":true,"allowJs":true,"checkJs":false,"composite":true,"declaration":true,"declarationDir":"./lib/types","emitDeclarationOnly":true,"experimentalDecorators":true,"module":99,"outDir":"./lib","rootDir":"./src","skipLibCheck":true,"strict":false,"target":99},"referencedMap":[[102,1],[103,2],[104,3],[105,4],[106,5],[107,6],[96,6],[108,6],[109,7],[110,8],[111,9],[101,10],[94,11],[95,12],[112,13],[113,14],[97,15],[98,10],[99,16],[100,17],[182,18],[183,18],[184,19],[122,20],[185,21],[186,22],[187,23],[120,6],[188,24],[189,25],[190,26],[191,27],[192,28],[193,29],[194,29],[195,30],[196,31],[197,32],[198,33],[123,6],[121,6],[199,34],[200,35],[201,36],[242,37],[202,38],[203,39],[204,38],[205,40],[206,41],[208,42],[209,43],[210,43],[211,43],[212,44],[213,45],[214,46],[215,47],[216,48],[217,49],[218,49],[219,50],[220,6],[221,6],[222,51],[223,52],[224,51],[225,53],[226,54],[227,55],[228,56],[229,57],[230,58],[231,59],[232,60],[233,61],[234,62],[235,63],[236,64],[237,65],[238,66],[239,67],[124,38],[125,6],[126,6],[127,68],[128,6],[129,24],[130,6],[173,69],[174,70],[175,71],[176,71],[177,72],[178,6],[179,21],[180,73],[181,70],[240,74],[241,75],[207,6],[91,6],[92,6],[16,6],[14,6],[15,6],[20,6],[19,6],[2,6],[21,6],[22,6],[23,6],[24,6],[25,6],[26,6],[27,6],[28,6],[3,6],[29,6],[30,6],[4,6],[31,6],[35,6],[32,6],[33,6],[34,6],[36,6],[37,6],[38,6],[5,6],[39,6],[40,6],[41,6],[42,6],[6,6],[46,6],[43,6],[44,6],[45,6],[47,6],[7,6],[48,6],[53,6],[54,6],[49,6],[50,6],[51,6],[52,6],[8,6],[58,6],[55,6],[56,6],[57,6],[59,6],[9,6],[60,6],[61,6],[62,6],[64,6],[63,6],[65,6],[66,6],[10,6],[67,6],[68,6],[69,6],[11,6],[70,6],[71,6],[72,6],[73,6],[74,6],[75,6],[12,6],[76,6],[77,6],[78,6],[79,6],[80,6],[1,6],[81,6],[82,6],[13,6],[83,6],[84,6],[85,6],[86,6],[93,6],[87,6],[88,6],[89,6],[90,6],[18,6],[17,6],[149,76],[161,77],[146,78],[162,79],[171,80],[137,81],[138,82],[136,83],[170,84],[165,85],[169,86],[140,87],[158,88],[139,89],[168,90],[134,91],[135,85],[141,92],[142,6],[148,93],[145,92],[132,94],[172,95],[163,96],[152,97],[151,92],[153,98],[156,99],[150,100],[154,101],[166,84],[143,102],[144,103],[157,104],[133,79],[160,105],[159,92],[147,103],[155,106],[164,6],[131,6],[167,107],[116,108],[115,6],[114,12],[117,109],[119,110],[118,6]],"latestChangedDtsFile":"./lib/types/index.d.ts","version":"6.0.3"}