@resourcexjs/core 2.4.1 → 2.5.0

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.d.ts CHANGED
@@ -14,27 +14,45 @@ declare class ManifestError extends ResourceXError {
14
14
  declare class ContentError extends ResourceXError {
15
15
  constructor(message: string);
16
16
  }
17
+ declare class DefinitionError extends ResourceXError {
18
+ constructor(message: string);
19
+ }
17
20
  /**
18
- * RXL - ResourceX Locator
21
+ * RXD - ResourceX Definition
19
22
  *
20
- * Format: [domain/path/]name[.type][@version]
23
+ * The content of resource.json file.
24
+ * Contains all metadata for a resource in development.
21
25
  */
22
- interface RXL {
23
- readonly domain?: string;
24
- readonly path?: string;
26
+ interface RXD {
25
27
  readonly name: string;
26
- readonly type?: string;
27
- readonly version?: string;
28
- toString(): string;
28
+ readonly type: string;
29
+ readonly version: string;
30
+ readonly domain: string;
31
+ readonly path?: string;
32
+ readonly description?: string;
33
+ readonly author?: string;
34
+ readonly license?: string;
35
+ readonly keywords?: string[];
36
+ readonly repository?: string;
37
+ readonly [key: string]: unknown;
29
38
  }
30
39
  /**
31
- * Parse a resource locator string into RXL object.
40
+ * RXL - ResourceX Locator
32
41
  *
33
- * Format: [domain/path/]name[.type][@version]
42
+ * Unique identifier for a resource (pure data object).
43
+ * Format: domain/[path/]name.type@version
34
44
  */
35
- declare function parseRXL(locator: string): RXL;
45
+ interface RXL {
46
+ readonly domain: string;
47
+ readonly path?: string;
48
+ readonly name: string;
49
+ readonly type: string;
50
+ readonly version: string;
51
+ }
36
52
  /**
37
53
  * RXM - ResourceX Manifest
54
+ *
55
+ * Resource metadata stored within the resource (pure data object).
38
56
  */
39
57
  interface RXM {
40
58
  readonly domain: string;
@@ -42,102 +60,98 @@ interface RXM {
42
60
  readonly name: string;
43
61
  readonly type: string;
44
62
  readonly version: string;
45
- toLocator(): string;
46
- toJSON(): ManifestData;
47
- }
48
- interface ManifestData {
49
- domain?: string;
50
- path?: string;
51
- name?: string;
52
- type?: string;
53
- version?: string;
54
- }
55
- /**
56
- * Create a manifest from data object.
57
- */
58
- declare function createRXM(data: ManifestData): RXM;
59
- /**
60
- * PathNode - Tree structure node for package file hierarchy.
61
- */
62
- interface PathNode {
63
- /** File or directory name */
64
- name: string;
65
- /** Node type */
66
- type: "file" | "directory";
67
- /** Children nodes (only for directories) */
68
- children?: PathNode[];
63
+ readonly files?: string[];
69
64
  }
70
65
  /**
71
66
  * RXA - ResourceX Archive
72
67
  *
73
68
  * Archive container (tar.gz format) for storage and transfer.
74
- * Use extract() to get RXP for file access.
75
69
  */
76
70
  interface RXA {
77
71
  /** Content as a readable stream (tar.gz format) */
78
72
  readonly stream: ReadableStream<Uint8Array>;
79
73
  /** Get raw archive buffer (tar.gz format) */
80
74
  buffer(): Promise<Buffer>;
81
- /** Extract archive to package for file access */
82
- extract(): Promise<RXP>;
83
75
  }
84
76
  /**
85
- * RXP - ResourceX Package
77
+ * RXR - ResourceX Resource
86
78
  *
87
- * Extracted package for runtime file access.
88
- * Created from RXA.extract(), can pack back with pack().
79
+ * Complete resource object combining locator, manifest, and archive.
89
80
  */
90
- interface RXP {
91
- /** Get flat list of all file paths */
92
- paths(): string[];
93
- /** Get tree structure of files and directories */
94
- tree(): PathNode[];
95
- /** Read a specific file from the package */
96
- file(path: string): Promise<Buffer>;
97
- /** Read all files from the package */
98
- files(): Promise<Map<string, Buffer>>;
99
- /** Pack back to archive */
100
- pack(): Promise<RXA>;
81
+ interface RXR {
82
+ readonly locator: RXL;
83
+ readonly manifest: RXM;
84
+ readonly archive: RXA;
101
85
  }
102
86
  /**
103
- * Input type for createRXA.
104
- * - Files record: { 'path/to/file': content }
105
- * - Buffer: { buffer: tarGzBuffer }
87
+ * Parse and validate a resource definition (resource.json content).
88
+ *
89
+ * @param input - The raw JSON object to parse
90
+ * @returns A validated RXD object
91
+ * @throws DefinitionError if validation fails
106
92
  */
107
- type RXAInput = Record<string, Buffer | Uint8Array | string> | {
108
- buffer: Buffer
109
- };
93
+ declare function define(input: unknown): RXD;
110
94
  /**
111
- * Create RXA from files or existing buffer.
112
- *
113
- * @example
114
- * ```typescript
115
- * // Single file
116
- * const archive = await createRXA({ 'content': Buffer.from('Hello') });
117
- *
118
- * // Multiple files
119
- * const archive = await createRXA({
120
- * 'index.ts': Buffer.from('1'),
121
- * 'styles.css': Buffer.from('body {}'),
122
- * });
123
- *
124
- * // From existing tar.gz buffer
125
- * const archive = await createRXA({ buffer: existingTarGzBuffer });
126
- *
127
- * // Extract to package
128
- * const pkg = await archive.extract();
129
- * const paths = pkg.paths();
130
- * const content = await pkg.file('index.ts');
131
- * ```
95
+ * Create RXM from RXD.
96
+ * Extracts only the core metadata fields (pure data object).
97
+ *
98
+ * @param rxd - Resource definition
99
+ * @returns RXM manifest object
132
100
  */
133
- declare function createRXA(input: RXAInput): Promise<RXA>;
101
+ declare function manifest(rxd: RXD): RXM;
134
102
  /**
135
- * RXR (ResourceX Resource) - Complete resource object.
136
- * A pure data transfer object combining locator, manifest, and archive.
103
+ * Create RXA from files.
104
+ *
105
+ * @param files - Record of file paths to Buffer contents
106
+ * @returns RXA archive object
137
107
  */
138
- interface RXR {
139
- locator: RXL;
140
- manifest: RXM;
141
- archive: RXA;
142
- }
143
- export { parseRXL, createRXM, createRXA, ResourceXError, RXR, RXP, RXM, RXL, RXAInput, RXA, PathNode, ManifestError, ManifestData, LocatorError, ContentError };
108
+ declare function archive(files: Record<string, Buffer>): Promise<RXA>;
109
+ /**
110
+ * Create RXL from RXM.
111
+ *
112
+ * @param rxm - Resource manifest
113
+ * @returns RXL locator object (pure data)
114
+ */
115
+ declare function locate(rxm: RXM): RXL;
116
+ /**
117
+ * Create RXR from RXM and RXA.
118
+ *
119
+ * @param rxm - Resource manifest
120
+ * @param rxa - Resource archive
121
+ * @returns RXR resource object
122
+ */
123
+ declare function resource(rxm: RXM, rxa: RXA): RXR;
124
+ /**
125
+ * Extract files from RXA.
126
+ *
127
+ * @param rxa - Resource archive
128
+ * @returns Record of file paths to Buffer contents
129
+ */
130
+ declare function extract(rxa: RXA): Promise<Record<string, Buffer>>;
131
+ /**
132
+ * Format RXL to locator string.
133
+ *
134
+ * Format: domain/[path/]name.type@version
135
+ *
136
+ * @param rxl - Resource locator
137
+ * @returns Locator string
138
+ */
139
+ declare function format(rxl: RXL): string;
140
+ /**
141
+ * Parse locator string to RXL.
142
+ *
143
+ * Format: domain/[path/]name.type@version
144
+ *
145
+ * @param locator - Locator string
146
+ * @returns RXL object
147
+ * @throws LocatorError if parsing fails
148
+ */
149
+ declare function parse(locator: string): RXL;
150
+ /**
151
+ * Wrap existing tar.gz buffer as RXA.
152
+ *
153
+ * @param buffer - Existing tar.gz buffer
154
+ * @returns RXA archive object
155
+ */
156
+ declare function wrap(buffer: Buffer): RXA;
157
+ export { wrap, resource, parse, manifest, locate, format, extract, define, archive, ResourceXError, RXR, RXM, RXL, RXD, RXA, ManifestError, LocatorError, DefinitionError, ContentError };
package/dist/index.js CHANGED
@@ -28,135 +28,55 @@ class ContentError extends ResourceXError {
28
28
  this.name = "ContentError";
29
29
  }
30
30
  }
31
- // src/locator/parseRXL.ts
32
- class RXLImpl {
33
- domain;
34
- path;
35
- name;
36
- type;
37
- version;
38
- constructor(parts) {
39
- this.domain = parts.domain;
40
- this.path = parts.path;
41
- this.name = parts.name;
42
- this.type = parts.type;
43
- this.version = parts.version;
44
- }
45
- toString() {
46
- let result = "";
47
- if (this.domain) {
48
- result += this.domain + "/";
49
- if (this.path) {
50
- result += this.path + "/";
51
- }
52
- }
53
- result += this.name;
54
- if (this.type) {
55
- result += "." + this.type;
56
- }
57
- if (this.version) {
58
- result += "@" + this.version;
59
- }
60
- return result;
31
+
32
+ class DefinitionError extends ResourceXError {
33
+ constructor(message) {
34
+ super(message);
35
+ this.name = "DefinitionError";
61
36
  }
62
37
  }
63
- function isDomain(str) {
64
- if (str === "localhost")
65
- return true;
66
- return str.includes(".");
67
- }
68
- function parseRXL(locator) {
69
- let remaining = locator;
70
- let version;
71
- let type;
72
- let domain;
73
- let path;
74
- let name;
75
- const atIndex = remaining.indexOf("@");
76
- if (atIndex !== -1) {
77
- version = remaining.slice(atIndex + 1);
78
- remaining = remaining.slice(0, atIndex);
38
+ // src/primitives/define.ts
39
+ function define(input) {
40
+ if (input === null || typeof input !== "object") {
41
+ throw new DefinitionError("definition must be an object");
79
42
  }
80
- const segments = remaining.split("/");
81
- if (segments.length > 1 && isDomain(segments[0])) {
82
- domain = segments[0];
83
- const lastSegment = segments[segments.length - 1];
84
- if (segments.length > 2) {
85
- path = segments.slice(1, -1).join("/");
86
- }
87
- remaining = lastSegment;
88
- } else {
89
- remaining = segments.join("/");
43
+ const obj = input;
44
+ if (!obj.name || typeof obj.name !== "string") {
45
+ throw new DefinitionError("name is required");
90
46
  }
91
- const dotIndex = remaining.lastIndexOf(".");
92
- if (dotIndex !== -1) {
93
- type = remaining.slice(dotIndex + 1);
94
- name = remaining.slice(0, dotIndex);
95
- } else {
96
- name = remaining;
47
+ if (!obj.type || typeof obj.type !== "string") {
48
+ throw new DefinitionError("type is required");
97
49
  }
98
- return new RXLImpl({ domain, path, name, type, version });
99
- }
100
- // src/manifest/createRXM.ts
101
- class RXMImpl {
102
- domain;
103
- path;
104
- name;
105
- type;
106
- version;
107
- constructor(data) {
108
- this.domain = data.domain;
109
- this.path = data.path;
110
- this.name = data.name;
111
- this.type = data.type;
112
- this.version = data.version;
113
- }
114
- toLocator() {
115
- let result = this.domain + "/";
116
- if (this.path) {
117
- result += this.path + "/";
118
- }
119
- result += this.name;
120
- result += "." + this.type;
121
- result += "@" + this.version;
122
- return result;
123
- }
124
- toJSON() {
125
- const json = {
126
- domain: this.domain,
127
- name: this.name,
128
- type: this.type,
129
- version: this.version
130
- };
131
- if (this.path !== undefined) {
132
- json.path = this.path;
133
- }
134
- return json;
50
+ if (!obj.version || typeof obj.version !== "string") {
51
+ throw new DefinitionError("version is required");
135
52
  }
53
+ const rxd = {
54
+ ...obj,
55
+ name: obj.name,
56
+ type: obj.type,
57
+ version: obj.version,
58
+ domain: typeof obj.domain === "string" ? obj.domain : "localhost",
59
+ path: typeof obj.path === "string" ? obj.path : undefined,
60
+ description: typeof obj.description === "string" ? obj.description : undefined,
61
+ author: typeof obj.author === "string" ? obj.author : undefined,
62
+ license: typeof obj.license === "string" ? obj.license : undefined,
63
+ keywords: Array.isArray(obj.keywords) ? obj.keywords : undefined,
64
+ repository: typeof obj.repository === "string" ? obj.repository : undefined
65
+ };
66
+ return rxd;
136
67
  }
137
- function createRXM(data) {
138
- if (!data.domain) {
139
- throw new ManifestError("domain is required");
140
- }
141
- if (!data.name) {
142
- throw new ManifestError("name is required");
143
- }
144
- if (!data.type) {
145
- throw new ManifestError("type is required");
146
- }
147
- if (!data.version) {
148
- throw new ManifestError("version is required");
149
- }
150
- return new RXMImpl({
151
- domain: data.domain,
152
- path: data.path,
153
- name: data.name,
154
- type: data.type,
155
- version: data.version
156
- });
68
+ // src/primitives/manifest.ts
69
+ function manifest(rxd) {
70
+ return {
71
+ domain: rxd.domain,
72
+ path: rxd.path,
73
+ name: rxd.name,
74
+ type: rxd.type,
75
+ version: rxd.version
76
+ };
157
77
  }
158
- // src/archive/createRXA.ts
159
- import { gzip, gunzip } from "node:zlib";
78
+ // src/primitives/archive.ts
79
+ import { gzip } from "node:zlib";
160
80
  import { promisify } from "node:util";
161
81
 
162
82
  // ../../node_modules/.bun/modern-tar@0.7.3/node_modules/modern-tar/dist/unpacker-BpPBxY8N.js
@@ -1136,85 +1056,131 @@ async function unpackTar(archive, options = {}) {
1136
1056
  return results;
1137
1057
  }
1138
1058
 
1139
- // src/archive/createRXA.ts
1059
+ // src/primitives/archive.ts
1140
1060
  var gzipAsync = promisify(gzip);
1141
- var gunzipAsync = promisify(gunzip);
1142
1061
 
1143
- class RXPImpl {
1144
- _files;
1145
- _pathsCache = null;
1146
- _treeCache = null;
1147
- constructor(files) {
1148
- this._files = files;
1149
- }
1150
- paths() {
1151
- if (this._pathsCache) {
1152
- return this._pathsCache;
1153
- }
1154
- this._pathsCache = Array.from(this._files.keys()).sort();
1155
- return this._pathsCache;
1062
+ class RXAImpl {
1063
+ _buffer;
1064
+ constructor(buffer) {
1065
+ this._buffer = buffer;
1156
1066
  }
1157
- tree() {
1158
- if (this._treeCache) {
1159
- return this._treeCache;
1160
- }
1161
- const root = new Map;
1162
- for (const path of this._files.keys()) {
1163
- const parts = path.split("/");
1164
- let currentLevel = root;
1165
- for (let i = 0;i < parts.length; i++) {
1166
- const part = parts[i];
1167
- const isFile = i === parts.length - 1;
1168
- if (!currentLevel.has(part)) {
1169
- const treeNode2 = {
1170
- node: {
1171
- name: part,
1172
- type: isFile ? "file" : "directory",
1173
- children: isFile ? undefined : []
1174
- },
1175
- children: new Map
1176
- };
1177
- currentLevel.set(part, treeNode2);
1178
- }
1179
- const treeNode = currentLevel.get(part);
1180
- if (!isFile) {
1181
- currentLevel = treeNode.children;
1182
- }
1067
+ get stream() {
1068
+ const buffer = this._buffer;
1069
+ return new ReadableStream({
1070
+ start(controller) {
1071
+ controller.enqueue(new Uint8Array(buffer));
1072
+ controller.close();
1183
1073
  }
1184
- }
1185
- const convertToPathNodes = (level) => {
1186
- return Array.from(level.values()).map((treeNode) => {
1187
- if (treeNode.node.type === "directory" && treeNode.children.size > 0) {
1188
- treeNode.node.children = convertToPathNodes(treeNode.children);
1189
- }
1190
- return treeNode.node;
1191
- });
1192
- };
1193
- this._treeCache = convertToPathNodes(root);
1194
- return this._treeCache;
1074
+ });
1075
+ }
1076
+ async buffer() {
1077
+ return this._buffer;
1195
1078
  }
1196
- async file(path) {
1197
- const content = this._files.get(path);
1198
- if (!content) {
1199
- throw new ContentError(`file not found: ${path}`);
1079
+ }
1080
+ async function archive(files) {
1081
+ const entries = Object.entries(files).map(([name, content]) => {
1082
+ return {
1083
+ header: { name, size: content.length, type: "file" },
1084
+ body: new Uint8Array(content)
1085
+ };
1086
+ });
1087
+ const tarBuffer = await packTar(entries);
1088
+ const gzipBuffer = await gzipAsync(Buffer.from(tarBuffer));
1089
+ return new RXAImpl(gzipBuffer);
1090
+ }
1091
+ // src/primitives/locate.ts
1092
+ function locate(rxm) {
1093
+ return {
1094
+ domain: rxm.domain,
1095
+ path: rxm.path,
1096
+ name: rxm.name,
1097
+ type: rxm.type,
1098
+ version: rxm.version
1099
+ };
1100
+ }
1101
+ // src/primitives/resource.ts
1102
+ function resource(rxm, rxa) {
1103
+ const rxl = locate(rxm);
1104
+ return {
1105
+ locator: rxl,
1106
+ manifest: rxm,
1107
+ archive: rxa
1108
+ };
1109
+ }
1110
+ // src/primitives/extract.ts
1111
+ import { gunzip } from "node:zlib";
1112
+ import { promisify as promisify2 } from "node:util";
1113
+ var gunzipAsync = promisify2(gunzip);
1114
+ async function extract(rxa) {
1115
+ const buffer = await rxa.buffer();
1116
+ const tarBuffer = await gunzipAsync(buffer);
1117
+ const entries = await unpackTar(tarBuffer);
1118
+ const files = {};
1119
+ for (const entry of entries) {
1120
+ if ((entry.header.type === "file" || entry.header.type === undefined) && entry.data) {
1121
+ files[entry.header.name] = Buffer.from(entry.data);
1200
1122
  }
1201
- return content;
1202
1123
  }
1203
- async files() {
1204
- return new Map(this._files);
1124
+ return files;
1125
+ }
1126
+ // src/primitives/format.ts
1127
+ function format(rxl) {
1128
+ let result = rxl.domain + "/";
1129
+ if (rxl.path) {
1130
+ result += rxl.path + "/";
1205
1131
  }
1206
- async pack() {
1207
- const filesRecord = {};
1208
- for (const [path, content] of this._files) {
1209
- filesRecord[path] = content;
1210
- }
1211
- return createRXA(filesRecord);
1132
+ result += rxl.name;
1133
+ result += "." + rxl.type;
1134
+ result += "@" + rxl.version;
1135
+ return result;
1136
+ }
1137
+ // src/primitives/parse.ts
1138
+ function parse(locator) {
1139
+ if (!locator || typeof locator !== "string") {
1140
+ throw new LocatorError("locator must be a non-empty string", locator);
1141
+ }
1142
+ const atIndex = locator.lastIndexOf("@");
1143
+ if (atIndex === -1) {
1144
+ throw new LocatorError("locator must contain version (@)", locator);
1212
1145
  }
1146
+ const version = locator.slice(atIndex + 1);
1147
+ const beforeVersion = locator.slice(0, atIndex);
1148
+ if (!version) {
1149
+ throw new LocatorError("version is required", locator);
1150
+ }
1151
+ const dotIndex = beforeVersion.lastIndexOf(".");
1152
+ if (dotIndex === -1) {
1153
+ throw new LocatorError("locator must contain type (.)", locator);
1154
+ }
1155
+ const type = beforeVersion.slice(dotIndex + 1);
1156
+ const beforeType = beforeVersion.slice(0, dotIndex);
1157
+ if (!type) {
1158
+ throw new LocatorError("type is required", locator);
1159
+ }
1160
+ const parts = beforeType.split("/");
1161
+ if (parts.length < 2) {
1162
+ throw new LocatorError("locator must contain domain", locator);
1163
+ }
1164
+ const domain = parts[0];
1165
+ const name = parts[parts.length - 1];
1166
+ const path = parts.length > 2 ? parts.slice(1, -1).join("/") : undefined;
1167
+ if (!domain) {
1168
+ throw new LocatorError("domain is required", locator);
1169
+ }
1170
+ if (!name) {
1171
+ throw new LocatorError("name is required", locator);
1172
+ }
1173
+ return {
1174
+ domain,
1175
+ path,
1176
+ name,
1177
+ type,
1178
+ version
1179
+ };
1213
1180
  }
1214
-
1215
- class RXAImpl {
1181
+ // src/primitives/wrap.ts
1182
+ class RXAImpl2 {
1216
1183
  _buffer;
1217
- _rxpCache = null;
1218
1184
  constructor(buffer) {
1219
1185
  this._buffer = buffer;
1220
1186
  }
@@ -1230,49 +1196,25 @@ class RXAImpl {
1230
1196
  async buffer() {
1231
1197
  return this._buffer;
1232
1198
  }
1233
- async extract() {
1234
- if (this._rxpCache) {
1235
- return this._rxpCache;
1236
- }
1237
- const tarBuffer = await gunzipAsync(this._buffer);
1238
- const entries = await unpackTar(tarBuffer);
1239
- const filesMap = new Map;
1240
- for (const entry of entries) {
1241
- if ((entry.header.type === "file" || entry.header.type === undefined) && entry.data) {
1242
- filesMap.set(entry.header.name, Buffer.from(entry.data));
1243
- }
1244
- }
1245
- this._rxpCache = new RXPImpl(filesMap);
1246
- return this._rxpCache;
1247
- }
1248
1199
  }
1249
- function isBufferInput(input) {
1250
- return "buffer" in input && Buffer.isBuffer(input.buffer);
1251
- }
1252
- async function createRXA(input) {
1253
- if (isBufferInput(input)) {
1254
- return new RXAImpl(input.buffer);
1255
- }
1256
- const entries = Object.entries(input).map(([name, content]) => {
1257
- const body = typeof content === "string" ? content : content instanceof Uint8Array ? content : new Uint8Array(content);
1258
- const size = typeof content === "string" ? Buffer.byteLength(content) : content.length;
1259
- return {
1260
- header: { name, size, type: "file" },
1261
- body
1262
- };
1263
- });
1264
- const tarBuffer = await packTar(entries);
1265
- const gzipBuffer = await gzipAsync(Buffer.from(tarBuffer));
1266
- return new RXAImpl(gzipBuffer);
1200
+ function wrap(buffer) {
1201
+ return new RXAImpl2(buffer);
1267
1202
  }
1268
1203
  export {
1269
- parseRXL,
1270
- createRXM,
1271
- createRXA,
1204
+ wrap,
1205
+ resource,
1206
+ parse,
1207
+ manifest,
1208
+ locate,
1209
+ format,
1210
+ extract,
1211
+ define,
1212
+ archive,
1272
1213
  ResourceXError,
1273
1214
  ManifestError,
1274
1215
  LocatorError,
1216
+ DefinitionError,
1275
1217
  ContentError
1276
1218
  };
1277
1219
 
1278
- //# debugId=AFABB314B72836D164756E2164756E21
1220
+ //# debugId=467D5F5D80C42E4F64756E2164756E21
package/dist/index.js.map CHANGED
@@ -1,15 +1,21 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/errors.ts", "../src/locator/parseRXL.ts", "../src/manifest/createRXM.ts", "../src/archive/createRXA.ts", "../../../node_modules/.bun/modern-tar@0.7.3/node_modules/modern-tar/dist/unpacker-BpPBxY8N.js", "../../../node_modules/.bun/modern-tar@0.7.3/node_modules/modern-tar/dist/web/index.js"],
3
+ "sources": ["../src/errors.ts", "../src/primitives/define.ts", "../src/primitives/manifest.ts", "../src/primitives/archive.ts", "../../../node_modules/.bun/modern-tar@0.7.3/node_modules/modern-tar/dist/unpacker-BpPBxY8N.js", "../../../node_modules/.bun/modern-tar@0.7.3/node_modules/modern-tar/dist/web/index.js", "../src/primitives/locate.ts", "../src/primitives/resource.ts", "../src/primitives/extract.ts", "../src/primitives/format.ts", "../src/primitives/parse.ts", "../src/primitives/wrap.ts"],
4
4
  "sourcesContent": [
5
- "/**\n * ResourceX Error hierarchy\n */\n\nexport class ResourceXError extends Error {\n constructor(message: string, options?: ErrorOptions) {\n super(message, options);\n this.name = \"ResourceXError\";\n }\n}\n\nexport class LocatorError extends ResourceXError {\n constructor(\n message: string,\n public readonly locator?: string\n ) {\n super(message);\n this.name = \"LocatorError\";\n }\n}\n\nexport class ManifestError extends ResourceXError {\n constructor(message: string) {\n super(message);\n this.name = \"ManifestError\";\n }\n}\n\nexport class ContentError extends ResourceXError {\n constructor(message: string) {\n super(message);\n this.name = \"ContentError\";\n }\n}\n",
6
- "import type { RXL } from \"./types.js\";\n\nclass RXLImpl implements RXL {\n readonly domain?: string;\n readonly path?: string;\n readonly name: string;\n readonly type?: string;\n readonly version?: string;\n\n constructor(parts: {\n domain?: string;\n path?: string;\n name: string;\n type?: string;\n version?: string;\n }) {\n this.domain = parts.domain;\n this.path = parts.path;\n this.name = parts.name;\n this.type = parts.type;\n this.version = parts.version;\n }\n\n toString(): string {\n let result = \"\";\n if (this.domain) {\n result += this.domain + \"/\";\n if (this.path) {\n result += this.path + \"/\";\n }\n }\n result += this.name;\n if (this.type) {\n result += \".\" + this.type;\n }\n if (this.version) {\n result += \"@\" + this.version;\n }\n return result;\n }\n}\n\nfunction isDomain(str: string): boolean {\n if (str === \"localhost\") return true;\n return str.includes(\".\");\n}\n\n/**\n * Parse a resource locator string into RXL object.\n *\n * Format: [domain/path/]name[.type][@version]\n */\nexport function parseRXL(locator: string): RXL {\n let remaining = locator;\n let version: string | undefined;\n let type: string | undefined;\n let domain: string | undefined;\n let path: string | undefined;\n let name: string;\n\n // 1. Extract version (after @)\n const atIndex = remaining.indexOf(\"@\");\n if (atIndex !== -1) {\n version = remaining.slice(atIndex + 1);\n remaining = remaining.slice(0, atIndex);\n }\n\n // 2. Split by / to get segments\n const segments = remaining.split(\"/\");\n\n // 3. Handle domain and path\n if (segments.length > 1 && isDomain(segments[0])) {\n domain = segments[0];\n const lastSegment = segments[segments.length - 1];\n if (segments.length > 2) {\n path = segments.slice(1, -1).join(\"/\");\n }\n remaining = lastSegment;\n } else {\n remaining = segments.join(\"/\");\n }\n\n // 4. Extract type (after last .)\n const dotIndex = remaining.lastIndexOf(\".\");\n if (dotIndex !== -1) {\n type = remaining.slice(dotIndex + 1);\n name = remaining.slice(0, dotIndex);\n } else {\n name = remaining;\n }\n\n return new RXLImpl({ domain, path, name, type, version });\n}\n",
7
- "import type { RXM, ManifestData } from \"./types.js\";\nimport { ManifestError } from \"~/errors.js\";\n\nclass RXMImpl implements RXM {\n readonly domain: string;\n readonly path?: string;\n readonly name: string;\n readonly type: string;\n readonly version: string;\n\n constructor(data: {\n domain: string;\n path?: string;\n name: string;\n type: string;\n version: string;\n }) {\n this.domain = data.domain;\n this.path = data.path;\n this.name = data.name;\n this.type = data.type;\n this.version = data.version;\n }\n\n toLocator(): string {\n let result = this.domain + \"/\";\n if (this.path) {\n result += this.path + \"/\";\n }\n result += this.name;\n result += \".\" + this.type;\n result += \"@\" + this.version;\n return result;\n }\n\n toJSON(): ManifestData {\n const json: ManifestData = {\n domain: this.domain,\n name: this.name,\n type: this.type,\n version: this.version,\n };\n if (this.path !== undefined) {\n json.path = this.path;\n }\n return json;\n }\n}\n\n/**\n * Create a manifest from data object.\n */\nexport function createRXM(data: ManifestData): RXM {\n if (!data.domain) {\n throw new ManifestError(\"domain is required\");\n }\n if (!data.name) {\n throw new ManifestError(\"name is required\");\n }\n if (!data.type) {\n throw new ManifestError(\"type is required\");\n }\n if (!data.version) {\n throw new ManifestError(\"version is required\");\n }\n\n return new RXMImpl({\n domain: data.domain,\n path: data.path,\n name: data.name,\n type: data.type,\n version: data.version,\n });\n}\n",
8
- "import { gzip, gunzip } from \"node:zlib\";\nimport { promisify } from \"node:util\";\nimport { packTar, unpackTar } from \"modern-tar\";\nimport type { RXA, RXP, RXAInput, PathNode } from \"./types.js\";\nimport { ContentError } from \"~/errors.js\";\n\nconst gzipAsync = promisify(gzip);\nconst gunzipAsync = promisify(gunzip);\n\n/**\n * RXP Implementation - Extracted package for file access.\n */\nclass RXPImpl implements RXP {\n private readonly _files: Map<string, Buffer>;\n private _pathsCache: string[] | null = null;\n private _treeCache: PathNode[] | null = null;\n\n constructor(files: Map<string, Buffer>) {\n this._files = files;\n }\n\n paths(): string[] {\n if (this._pathsCache) {\n return this._pathsCache;\n }\n this._pathsCache = Array.from(this._files.keys()).sort();\n return this._pathsCache;\n }\n\n tree(): PathNode[] {\n if (this._treeCache) {\n return this._treeCache;\n }\n\n // Use a nested map structure for building the tree\n interface TreeNode {\n node: PathNode;\n children: Map<string, TreeNode>;\n }\n\n const root = new Map<string, TreeNode>();\n\n for (const path of this._files.keys()) {\n const parts = path.split(\"/\");\n let currentLevel = root;\n\n for (let i = 0; i < parts.length; i++) {\n const part = parts[i];\n const isFile = i === parts.length - 1;\n\n if (!currentLevel.has(part)) {\n const treeNode: TreeNode = {\n node: {\n name: part,\n type: isFile ? \"file\" : \"directory\",\n children: isFile ? undefined : [],\n },\n children: new Map(),\n };\n currentLevel.set(part, treeNode);\n }\n\n const treeNode = currentLevel.get(part)!;\n if (!isFile) {\n currentLevel = treeNode.children;\n }\n }\n }\n\n // Convert nested map structure to PathNode array\n const convertToPathNodes = (level: Map<string, TreeNode>): PathNode[] => {\n return Array.from(level.values()).map((treeNode) => {\n if (treeNode.node.type === \"directory\" && treeNode.children.size > 0) {\n treeNode.node.children = convertToPathNodes(treeNode.children);\n }\n return treeNode.node;\n });\n };\n\n this._treeCache = convertToPathNodes(root);\n return this._treeCache;\n }\n\n async file(path: string): Promise<Buffer> {\n const content = this._files.get(path);\n if (!content) {\n throw new ContentError(`file not found: ${path}`);\n }\n return content;\n }\n\n async files(): Promise<Map<string, Buffer>> {\n return new Map(this._files);\n }\n\n async pack(): Promise<RXA> {\n const filesRecord: Record<string, Buffer> = {};\n for (const [path, content] of this._files) {\n filesRecord[path] = content;\n }\n return createRXA(filesRecord);\n }\n}\n\n/**\n * RXA Implementation - Archive container.\n */\nclass RXAImpl implements RXA {\n private readonly _buffer: Buffer;\n private _rxpCache: RXP | null = null;\n\n constructor(buffer: Buffer) {\n this._buffer = buffer;\n }\n\n get stream(): ReadableStream<Uint8Array> {\n const buffer = this._buffer;\n return new ReadableStream({\n start(controller) {\n controller.enqueue(new Uint8Array(buffer));\n controller.close();\n },\n });\n }\n\n async buffer(): Promise<Buffer> {\n return this._buffer;\n }\n\n async extract(): Promise<RXP> {\n if (this._rxpCache) {\n return this._rxpCache;\n }\n\n // Decompress gzip\n const tarBuffer = await gunzipAsync(this._buffer);\n\n // Unpack tar\n const entries = await unpackTar(tarBuffer);\n\n const filesMap = new Map<string, Buffer>();\n for (const entry of entries) {\n if ((entry.header.type === \"file\" || entry.header.type === undefined) && entry.data) {\n filesMap.set(entry.header.name, Buffer.from(entry.data));\n }\n }\n\n this._rxpCache = new RXPImpl(filesMap);\n return this._rxpCache;\n }\n}\n\n/**\n * Check if input is a buffer input.\n */\nfunction isBufferInput(input: RXAInput): input is { buffer: Buffer } {\n return \"buffer\" in input && Buffer.isBuffer(input.buffer);\n}\n\n/**\n * Create RXA from files or existing buffer.\n *\n * @example\n * ```typescript\n * // Single file\n * const archive = await createRXA({ 'content': Buffer.from('Hello') });\n *\n * // Multiple files\n * const archive = await createRXA({\n * 'index.ts': Buffer.from('export default 1'),\n * 'styles.css': Buffer.from('body {}'),\n * });\n *\n * // From existing tar.gz buffer\n * const archive = await createRXA({ buffer: existingTarGzBuffer });\n *\n * // Extract to package\n * const pkg = await archive.extract();\n * const paths = pkg.paths();\n * const content = await pkg.file('index.ts');\n * ```\n */\nexport async function createRXA(input: RXAInput): Promise<RXA> {\n // If buffer provided, use it directly\n if (isBufferInput(input)) {\n return new RXAImpl(input.buffer);\n }\n\n // Otherwise, pack files into tar.gz\n const entries = Object.entries(input).map(([name, content]) => {\n const body =\n typeof content === \"string\"\n ? content\n : content instanceof Uint8Array\n ? content\n : new Uint8Array(content);\n\n const size = typeof content === \"string\" ? Buffer.byteLength(content) : content.length;\n\n return {\n header: { name, size, type: \"file\" as const },\n body,\n };\n });\n\n // Pack to tar\n const tarBuffer = await packTar(entries);\n\n // Compress with gzip\n const gzipBuffer = await gzipAsync(Buffer.from(tarBuffer));\n\n return new RXAImpl(gzipBuffer);\n}\n",
5
+ "/**\n * ResourceX Error hierarchy\n */\n\nexport class ResourceXError extends Error {\n constructor(message: string, options?: ErrorOptions) {\n super(message, options);\n this.name = \"ResourceXError\";\n }\n}\n\nexport class LocatorError extends ResourceXError {\n constructor(\n message: string,\n public readonly locator?: string\n ) {\n super(message);\n this.name = \"LocatorError\";\n }\n}\n\nexport class ManifestError extends ResourceXError {\n constructor(message: string) {\n super(message);\n this.name = \"ManifestError\";\n }\n}\n\nexport class ContentError extends ResourceXError {\n constructor(message: string) {\n super(message);\n this.name = \"ContentError\";\n }\n}\n\nexport class DefinitionError extends ResourceXError {\n constructor(message: string) {\n super(message);\n this.name = \"DefinitionError\";\n }\n}\n",
6
+ "import type { RXD } from \"~/types/index.js\";\nimport { DefinitionError } from \"~/errors.js\";\n\n/**\n * Parse and validate a resource definition (resource.json content).\n *\n * @param input - The raw JSON object to parse\n * @returns A validated RXD object\n * @throws DefinitionError if validation fails\n */\nexport function define(input: unknown): RXD {\n if (input === null || typeof input !== \"object\") {\n throw new DefinitionError(\"definition must be an object\");\n }\n\n const obj = input as Record<string, unknown>;\n\n if (!obj.name || typeof obj.name !== \"string\") {\n throw new DefinitionError(\"name is required\");\n }\n\n if (!obj.type || typeof obj.type !== \"string\") {\n throw new DefinitionError(\"type is required\");\n }\n\n if (!obj.version || typeof obj.version !== \"string\") {\n throw new DefinitionError(\"version is required\");\n }\n\n // Build RXD with defaults\n const rxd: RXD = {\n ...obj,\n name: obj.name,\n type: obj.type,\n version: obj.version,\n domain: typeof obj.domain === \"string\" ? obj.domain : \"localhost\",\n path: typeof obj.path === \"string\" ? obj.path : undefined,\n description: typeof obj.description === \"string\" ? obj.description : undefined,\n author: typeof obj.author === \"string\" ? obj.author : undefined,\n license: typeof obj.license === \"string\" ? obj.license : undefined,\n keywords: Array.isArray(obj.keywords) ? obj.keywords : undefined,\n repository: typeof obj.repository === \"string\" ? obj.repository : undefined,\n };\n\n return rxd;\n}\n",
7
+ "import type { RXD, RXM } from \"~/types/index.js\";\n\n/**\n * Create RXM from RXD.\n * Extracts only the core metadata fields (pure data object).\n *\n * @param rxd - Resource definition\n * @returns RXM manifest object\n */\nexport function manifest(rxd: RXD): RXM {\n return {\n domain: rxd.domain,\n path: rxd.path,\n name: rxd.name,\n type: rxd.type,\n version: rxd.version,\n };\n}\n",
8
+ "import { gzip } from \"node:zlib\";\nimport { promisify } from \"node:util\";\nimport { packTar } from \"modern-tar\";\nimport type { RXA } from \"~/types/index.js\";\n\nconst gzipAsync = promisify(gzip);\n\n/**\n * RXA Implementation for primitives\n */\nclass RXAImpl implements RXA {\n private readonly _buffer: Buffer;\n\n constructor(buffer: Buffer) {\n this._buffer = buffer;\n }\n\n get stream(): ReadableStream<Uint8Array> {\n const buffer = this._buffer;\n return new ReadableStream({\n start(controller) {\n controller.enqueue(new Uint8Array(buffer));\n controller.close();\n },\n });\n }\n\n async buffer(): Promise<Buffer> {\n return this._buffer;\n }\n}\n\n/**\n * Create RXA from files.\n *\n * @param files - Record of file paths to Buffer contents\n * @returns RXA archive object\n */\nexport async function archive(files: Record<string, Buffer>): Promise<RXA> {\n const entries = Object.entries(files).map(([name, content]) => {\n return {\n header: { name, size: content.length, type: \"file\" as const },\n body: new Uint8Array(content),\n };\n });\n\n // Pack to tar\n const tarBuffer = await packTar(entries);\n\n // Compress with gzip\n const gzipBuffer = await gzipAsync(Buffer.from(tarBuffer));\n\n return new RXAImpl(gzipBuffer);\n}\n",
9
9
  "//#region src/tar/constants.ts\nconst BLOCK_SIZE = 512;\nconst BLOCK_SIZE_MASK = 511;\nconst DEFAULT_FILE_MODE = 420;\nconst DEFAULT_DIR_MODE = 493;\nconst USTAR_NAME_OFFSET = 0;\nconst USTAR_NAME_SIZE = 100;\nconst USTAR_MODE_OFFSET = 100;\nconst USTAR_MODE_SIZE = 8;\nconst USTAR_UID_OFFSET = 108;\nconst USTAR_UID_SIZE = 8;\nconst USTAR_GID_OFFSET = 116;\nconst USTAR_GID_SIZE = 8;\nconst USTAR_SIZE_OFFSET = 124;\nconst USTAR_SIZE_SIZE = 12;\nconst USTAR_MTIME_OFFSET = 136;\nconst USTAR_MTIME_SIZE = 12;\nconst USTAR_CHECKSUM_OFFSET = 148;\nconst USTAR_CHECKSUM_SIZE = 8;\nconst USTAR_TYPEFLAG_OFFSET = 156;\nconst USTAR_TYPEFLAG_SIZE = 1;\nconst USTAR_LINKNAME_OFFSET = 157;\nconst USTAR_LINKNAME_SIZE = 100;\nconst USTAR_MAGIC_OFFSET = 257;\nconst USTAR_MAGIC_SIZE = 6;\nconst USTAR_VERSION_OFFSET = 263;\nconst USTAR_VERSION_SIZE = 2;\nconst USTAR_UNAME_OFFSET = 265;\nconst USTAR_UNAME_SIZE = 32;\nconst USTAR_GNAME_OFFSET = 297;\nconst USTAR_GNAME_SIZE = 32;\nconst USTAR_PREFIX_OFFSET = 345;\nconst USTAR_PREFIX_SIZE = 155;\nconst USTAR_VERSION = \"00\";\nconst USTAR_MAX_UID_GID = 2097151;\nconst USTAR_MAX_SIZE = 8589934591;\nconst FILE = \"file\";\nconst LINK = \"link\";\nconst SYMLINK = \"symlink\";\nconst DIRECTORY = \"directory\";\nconst TYPEFLAG = {\n\tfile: \"0\",\n\tlink: \"1\",\n\tsymlink: \"2\",\n\t\"character-device\": \"3\",\n\t\"block-device\": \"4\",\n\tdirectory: \"5\",\n\tfifo: \"6\",\n\t\"pax-header\": \"x\",\n\t\"pax-global-header\": \"g\",\n\t\"gnu-long-name\": \"L\",\n\t\"gnu-long-link-name\": \"K\"\n};\nconst FLAGTYPE = {\n\t\"0\": FILE,\n\t\"1\": LINK,\n\t\"2\": SYMLINK,\n\t\"3\": \"character-device\",\n\t\"4\": \"block-device\",\n\t\"5\": DIRECTORY,\n\t\"6\": \"fifo\",\n\tx: \"pax-header\",\n\tg: \"pax-global-header\",\n\tL: \"gnu-long-name\",\n\tK: \"gnu-long-link-name\"\n};\nconst ZERO_BLOCK = new Uint8Array(BLOCK_SIZE);\nconst EMPTY = new Uint8Array(0);\n\n//#endregion\n//#region src/tar/encoding.ts\nconst encoder = new TextEncoder();\nconst decoder = new TextDecoder();\nfunction writeString(view, offset, size, value) {\n\tif (value) encoder.encodeInto(value, view.subarray(offset, offset + size));\n}\nfunction writeOctal(view, offset, size, value) {\n\tif (value === void 0) return;\n\tconst octalString = value.toString(8).padStart(size - 1, \"0\");\n\tencoder.encodeInto(octalString, view.subarray(offset, offset + size - 1));\n}\nfunction readString(view, offset, size) {\n\tconst end = view.indexOf(0, offset);\n\tconst sliceEnd = end === -1 || end > offset + size ? offset + size : end;\n\treturn decoder.decode(view.subarray(offset, sliceEnd));\n}\nfunction readOctal(view, offset, size) {\n\tlet value = 0;\n\tconst end = offset + size;\n\tfor (let i = offset; i < end; i++) {\n\t\tconst charCode = view[i];\n\t\tif (charCode === 0) break;\n\t\tif (charCode === 32) continue;\n\t\tvalue = value * 8 + (charCode - 48);\n\t}\n\treturn value;\n}\nfunction readNumeric(view, offset, size) {\n\tif (view[offset] & 128) {\n\t\tlet result = 0;\n\t\tresult = view[offset] & 127;\n\t\tfor (let i = 1; i < size; i++) result = result * 256 + view[offset + i];\n\t\tif (!Number.isSafeInteger(result)) throw new Error(\"TAR number too large\");\n\t\treturn result;\n\t}\n\treturn readOctal(view, offset, size);\n}\n\n//#endregion\n//#region src/tar/body.ts\nconst isBodyless = (header) => header.type === DIRECTORY || header.type === SYMLINK || header.type === LINK;\nasync function normalizeBody(body) {\n\tif (body === null || body === void 0) return EMPTY;\n\tif (body instanceof Uint8Array) return body;\n\tif (typeof body === \"string\") return encoder.encode(body);\n\tif (body instanceof ArrayBuffer) return new Uint8Array(body);\n\tif (body instanceof Blob) return new Uint8Array(await body.arrayBuffer());\n\tthrow new TypeError(\"Unsupported content type for entry body.\");\n}\n\n//#endregion\n//#region src/tar/options.ts\nfunction transformHeader(header, options) {\n\tconst { strip, filter, map } = options;\n\tif (!strip && !filter && !map) return header;\n\tconst h = { ...header };\n\tif (strip && strip > 0) {\n\t\tconst components = h.name.split(\"/\").filter(Boolean);\n\t\tif (strip >= components.length) return null;\n\t\tconst newName = components.slice(strip).join(\"/\");\n\t\th.name = h.type === DIRECTORY && !newName.endsWith(\"/\") ? `${newName}/` : newName;\n\t\tif (h.linkname?.startsWith(\"/\")) {\n\t\t\tconst linkComponents = h.linkname.split(\"/\").filter(Boolean);\n\t\t\th.linkname = strip >= linkComponents.length ? \"/\" : `/${linkComponents.slice(strip).join(\"/\")}`;\n\t\t}\n\t}\n\tif (filter?.(h) === false) return null;\n\tconst result = map ? map(h) : h;\n\tif (result && (!result.name || !result.name.trim() || result.name === \".\" || result.name === \"/\")) return null;\n\treturn result;\n}\n\n//#endregion\n//#region src/tar/checksum.ts\nconst CHECKSUM_SPACE = 32;\nconst ASCII_ZERO = 48;\nfunction validateChecksum(block) {\n\tconst stored = readOctal(block, USTAR_CHECKSUM_OFFSET, USTAR_CHECKSUM_SIZE);\n\tlet sum = 0;\n\tfor (let i = 0; i < block.length; i++) if (i >= USTAR_CHECKSUM_OFFSET && i < USTAR_CHECKSUM_OFFSET + USTAR_CHECKSUM_SIZE) sum += CHECKSUM_SPACE;\n\telse sum += block[i];\n\treturn stored === sum;\n}\nfunction writeChecksum(block) {\n\tblock.fill(CHECKSUM_SPACE, USTAR_CHECKSUM_OFFSET, USTAR_CHECKSUM_OFFSET + USTAR_CHECKSUM_SIZE);\n\tlet checksum = 0;\n\tfor (const byte of block) checksum += byte;\n\tfor (let i = USTAR_CHECKSUM_OFFSET + 6 - 1; i >= USTAR_CHECKSUM_OFFSET; i--) {\n\t\tblock[i] = (checksum & 7) + ASCII_ZERO;\n\t\tchecksum >>= 3;\n\t}\n\tblock[USTAR_CHECKSUM_OFFSET + 6] = 0;\n\tblock[USTAR_CHECKSUM_OFFSET + 7] = CHECKSUM_SPACE;\n}\n\n//#endregion\n//#region src/tar/pax.ts\nfunction generatePax(header) {\n\tconst paxRecords = {};\n\tif (header.name.length > USTAR_NAME_SIZE) {\n\t\tif (findUstarSplit(header.name) === null) paxRecords.path = header.name;\n\t}\n\tif (header.linkname && header.linkname.length > USTAR_NAME_SIZE) paxRecords.linkpath = header.linkname;\n\tif (header.uname && header.uname.length > USTAR_UNAME_SIZE) paxRecords.uname = header.uname;\n\tif (header.gname && header.gname.length > USTAR_GNAME_SIZE) paxRecords.gname = header.gname;\n\tif (header.uid != null && header.uid > USTAR_MAX_UID_GID) paxRecords.uid = String(header.uid);\n\tif (header.gid != null && header.gid > USTAR_MAX_UID_GID) paxRecords.gid = String(header.gid);\n\tif (header.size != null && header.size > USTAR_MAX_SIZE) paxRecords.size = String(header.size);\n\tif (header.pax) Object.assign(paxRecords, header.pax);\n\tconst paxEntries = Object.entries(paxRecords);\n\tif (paxEntries.length === 0) return null;\n\tconst paxBody = encoder.encode(paxEntries.map(([key, value]) => {\n\t\tconst record = `${key}=${value}\\n`;\n\t\tconst partLength = encoder.encode(record).length + 1;\n\t\tlet totalLength = partLength + String(partLength).length;\n\t\ttotalLength = partLength + String(totalLength).length;\n\t\treturn `${totalLength} ${record}`;\n\t}).join(\"\"));\n\treturn {\n\t\tpaxHeader: createTarHeader({\n\t\t\tname: decoder.decode(encoder.encode(`PaxHeader/${header.name}`).slice(0, 100)),\n\t\t\tsize: paxBody.length,\n\t\t\ttype: \"pax-header\",\n\t\t\tmode: 420,\n\t\t\tmtime: header.mtime,\n\t\t\tuname: header.uname,\n\t\t\tgname: header.gname,\n\t\t\tuid: header.uid,\n\t\t\tgid: header.gid\n\t\t}),\n\t\tpaxBody\n\t};\n}\nfunction findUstarSplit(path) {\n\tif (path.length <= USTAR_NAME_SIZE) return null;\n\tconst minSlashIndex = path.length - USTAR_NAME_SIZE - 1;\n\tconst slashIndex = path.lastIndexOf(\"/\", USTAR_PREFIX_SIZE);\n\tif (slashIndex > 0 && slashIndex >= minSlashIndex) return {\n\t\tprefix: path.slice(0, slashIndex),\n\t\tname: path.slice(slashIndex + 1)\n\t};\n\treturn null;\n}\n\n//#endregion\n//#region src/tar/header.ts\nfunction createTarHeader(header) {\n\tconst view = new Uint8Array(BLOCK_SIZE);\n\tconst size = isBodyless(header) ? 0 : header.size ?? 0;\n\tlet name = header.name;\n\tlet prefix = \"\";\n\tif (!header.pax?.path) {\n\t\tconst split = findUstarSplit(name);\n\t\tif (split) {\n\t\t\tname = split.name;\n\t\t\tprefix = split.prefix;\n\t\t}\n\t}\n\twriteString(view, USTAR_NAME_OFFSET, USTAR_NAME_SIZE, name);\n\twriteOctal(view, USTAR_MODE_OFFSET, USTAR_MODE_SIZE, header.mode ?? (header.type === DIRECTORY ? DEFAULT_DIR_MODE : DEFAULT_FILE_MODE));\n\twriteOctal(view, USTAR_UID_OFFSET, USTAR_UID_SIZE, header.uid ?? 0);\n\twriteOctal(view, USTAR_GID_OFFSET, USTAR_GID_SIZE, header.gid ?? 0);\n\twriteOctal(view, USTAR_SIZE_OFFSET, USTAR_SIZE_SIZE, size);\n\twriteOctal(view, USTAR_MTIME_OFFSET, USTAR_MTIME_SIZE, Math.floor((header.mtime?.getTime() ?? Date.now()) / 1e3));\n\twriteString(view, USTAR_TYPEFLAG_OFFSET, USTAR_TYPEFLAG_SIZE, TYPEFLAG[header.type ?? FILE]);\n\twriteString(view, USTAR_LINKNAME_OFFSET, USTAR_LINKNAME_SIZE, header.linkname);\n\twriteString(view, USTAR_MAGIC_OFFSET, USTAR_MAGIC_SIZE, \"ustar\\0\");\n\twriteString(view, USTAR_VERSION_OFFSET, USTAR_VERSION_SIZE, USTAR_VERSION);\n\twriteString(view, USTAR_UNAME_OFFSET, USTAR_UNAME_SIZE, header.uname);\n\twriteString(view, USTAR_GNAME_OFFSET, USTAR_GNAME_SIZE, header.gname);\n\twriteString(view, USTAR_PREFIX_OFFSET, USTAR_PREFIX_SIZE, prefix);\n\twriteChecksum(view);\n\treturn view;\n}\nfunction parseUstarHeader(block, strict) {\n\tif (strict && !validateChecksum(block)) throw new Error(\"Invalid tar header checksum.\");\n\tconst typeflag = readString(block, USTAR_TYPEFLAG_OFFSET, USTAR_TYPEFLAG_SIZE);\n\tconst header = {\n\t\tname: readString(block, USTAR_NAME_OFFSET, USTAR_NAME_SIZE),\n\t\tmode: readOctal(block, USTAR_MODE_OFFSET, USTAR_MODE_SIZE),\n\t\tuid: readNumeric(block, USTAR_UID_OFFSET, USTAR_UID_SIZE),\n\t\tgid: readNumeric(block, USTAR_GID_OFFSET, USTAR_GID_SIZE),\n\t\tsize: readNumeric(block, USTAR_SIZE_OFFSET, USTAR_SIZE_SIZE),\n\t\tmtime: /* @__PURE__ */ new Date(readNumeric(block, USTAR_MTIME_OFFSET, USTAR_MTIME_SIZE) * 1e3),\n\t\ttype: FLAGTYPE[typeflag] || FILE,\n\t\tlinkname: readString(block, USTAR_LINKNAME_OFFSET, USTAR_LINKNAME_SIZE)\n\t};\n\tconst magic = readString(block, USTAR_MAGIC_OFFSET, USTAR_MAGIC_SIZE);\n\tif (magic.trim() === \"ustar\") {\n\t\theader.uname = readString(block, USTAR_UNAME_OFFSET, USTAR_UNAME_SIZE);\n\t\theader.gname = readString(block, USTAR_GNAME_OFFSET, USTAR_GNAME_SIZE);\n\t}\n\tif (magic === \"ustar\") header.prefix = readString(block, USTAR_PREFIX_OFFSET, USTAR_PREFIX_SIZE);\n\treturn header;\n}\nconst PAX_MAPPING = {\n\tpath: [\"name\", (v) => v],\n\tlinkpath: [\"linkname\", (v) => v],\n\tsize: [\"size\", (v) => parseInt(v, 10)],\n\tmtime: [\"mtime\", parseFloat],\n\tuid: [\"uid\", (v) => parseInt(v, 10)],\n\tgid: [\"gid\", (v) => parseInt(v, 10)],\n\tuname: [\"uname\", (v) => v],\n\tgname: [\"gname\", (v) => v]\n};\nfunction parsePax(buffer) {\n\tconst decoder$1 = new TextDecoder(\"utf-8\");\n\tconst overrides = {};\n\tconst pax = {};\n\tlet offset = 0;\n\twhile (offset < buffer.length) {\n\t\tconst spaceIndex = buffer.indexOf(32, offset);\n\t\tif (spaceIndex === -1) break;\n\t\tconst length = parseInt(decoder$1.decode(buffer.subarray(offset, spaceIndex)), 10);\n\t\tif (Number.isNaN(length) || length === 0) break;\n\t\tconst recordEnd = offset + length;\n\t\tconst [key, value] = decoder$1.decode(buffer.subarray(spaceIndex + 1, recordEnd - 1)).split(\"=\", 2);\n\t\tif (key && value !== void 0) {\n\t\t\tpax[key] = value;\n\t\t\tconst mapping = PAX_MAPPING[key];\n\t\t\tif (mapping) {\n\t\t\t\tconst [targetKey, parser] = mapping;\n\t\t\t\tconst parsedValue = parser(value);\n\t\t\t\tif (typeof parsedValue === \"string\" || !Number.isNaN(parsedValue)) overrides[targetKey] = parsedValue;\n\t\t\t}\n\t\t}\n\t\toffset = recordEnd;\n\t}\n\tif (Object.keys(pax).length > 0) overrides.pax = pax;\n\treturn overrides;\n}\nfunction applyOverrides(header, overrides) {\n\tif (overrides.name !== void 0) header.name = overrides.name;\n\tif (overrides.linkname !== void 0) header.linkname = overrides.linkname;\n\tif (overrides.size !== void 0) header.size = overrides.size;\n\tif (overrides.mtime !== void 0) header.mtime = /* @__PURE__ */ new Date(overrides.mtime * 1e3);\n\tif (overrides.uid !== void 0) header.uid = overrides.uid;\n\tif (overrides.gid !== void 0) header.gid = overrides.gid;\n\tif (overrides.uname !== void 0) header.uname = overrides.uname;\n\tif (overrides.gname !== void 0) header.gname = overrides.gname;\n\tif (overrides.pax) header.pax = Object.assign({}, header.pax ?? {}, overrides.pax);\n}\nfunction getMetaParser(type) {\n\tswitch (type) {\n\t\tcase \"pax-global-header\":\n\t\tcase \"pax-header\": return parsePax;\n\t\tcase \"gnu-long-name\": return (data) => ({ name: readString(data, 0, data.length) });\n\t\tcase \"gnu-long-link-name\": return (data) => ({ linkname: readString(data, 0, data.length) });\n\t\tdefault: return;\n\t}\n}\nfunction getHeaderBlocks(header) {\n\tconst base = createTarHeader(header);\n\tconst pax = generatePax(header);\n\tif (!pax) return [base];\n\tconst paxPadding = -pax.paxBody.length & BLOCK_SIZE_MASK;\n\tconst paddingBlocks = paxPadding > 0 ? [ZERO_BLOCK.subarray(0, paxPadding)] : [];\n\treturn [\n\t\tpax.paxHeader,\n\t\tpax.paxBody,\n\t\t...paddingBlocks,\n\t\tbase\n\t];\n}\n\n//#endregion\n//#region src/tar/packer.ts\nconst EOF_BUFFER = new Uint8Array(BLOCK_SIZE * 2);\nfunction createTarPacker(onData, onError, onFinalize) {\n\tlet currentHeader = null;\n\tlet bytesWritten = 0;\n\tlet finalized = false;\n\treturn {\n\t\tadd(header) {\n\t\t\tif (finalized) {\n\t\t\t\tconst error = /* @__PURE__ */ new Error(\"No new tar entries after finalize.\");\n\t\t\t\tonError(error);\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tif (currentHeader !== null) {\n\t\t\t\tconst error = /* @__PURE__ */ new Error(\"Previous entry must be completed before adding a new one\");\n\t\t\t\tonError(error);\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tconst size = isBodyless(header) ? 0 : header.size ?? 0;\n\t\t\t\tconst headerBlocks = getHeaderBlocks({\n\t\t\t\t\t...header,\n\t\t\t\t\tsize\n\t\t\t\t});\n\t\t\t\tfor (const block of headerBlocks) onData(block);\n\t\t\t\tcurrentHeader = {\n\t\t\t\t\t...header,\n\t\t\t\t\tsize\n\t\t\t\t};\n\t\t\t\tbytesWritten = 0;\n\t\t\t} catch (error) {\n\t\t\t\tonError(error);\n\t\t\t}\n\t\t},\n\t\twrite(chunk) {\n\t\t\tif (!currentHeader) {\n\t\t\t\tconst error = /* @__PURE__ */ new Error(\"No active tar entry.\");\n\t\t\t\tonError(error);\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tif (finalized) {\n\t\t\t\tconst error = /* @__PURE__ */ new Error(\"Cannot write data after finalize.\");\n\t\t\t\tonError(error);\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tconst newTotal = bytesWritten + chunk.length;\n\t\t\tif (newTotal > currentHeader.size) {\n\t\t\t\tconst error = /* @__PURE__ */ new Error(`\"${currentHeader.name}\" exceeds given size of ${currentHeader.size} bytes.`);\n\t\t\t\tonError(error);\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tbytesWritten = newTotal;\n\t\t\t\tonData(chunk);\n\t\t\t} catch (error) {\n\t\t\t\tonError(error);\n\t\t\t}\n\t\t},\n\t\tendEntry() {\n\t\t\tif (!currentHeader) {\n\t\t\t\tconst error = /* @__PURE__ */ new Error(\"No active entry to end.\");\n\t\t\t\tonError(error);\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tif (finalized) {\n\t\t\t\tconst error = /* @__PURE__ */ new Error(\"Cannot end entry after finalize.\");\n\t\t\t\tonError(error);\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tif (bytesWritten !== currentHeader.size) {\n\t\t\t\t\tconst error = /* @__PURE__ */ new Error(`Size mismatch for \"${currentHeader.name}\".`);\n\t\t\t\t\tonError(error);\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t\tconst paddingSize = -currentHeader.size & BLOCK_SIZE_MASK;\n\t\t\t\tif (paddingSize > 0) onData(new Uint8Array(paddingSize));\n\t\t\t\tcurrentHeader = null;\n\t\t\t\tbytesWritten = 0;\n\t\t\t} catch (error) {\n\t\t\t\tonError(error);\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t},\n\t\tfinalize() {\n\t\t\tif (finalized) {\n\t\t\t\tconst error = /* @__PURE__ */ new Error(\"Archive has already been finalized\");\n\t\t\t\tonError(error);\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tif (currentHeader !== null) {\n\t\t\t\tconst error = /* @__PURE__ */ new Error(\"Cannot finalize while an entry is still active\");\n\t\t\t\tonError(error);\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tonData(EOF_BUFFER);\n\t\t\t\tfinalized = true;\n\t\t\t\tif (onFinalize) onFinalize();\n\t\t\t} catch (error) {\n\t\t\t\tonError(error);\n\t\t\t}\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/tar/chunk-queue.ts\nconst INITIAL_CAPACITY = 256;\nfunction createChunkQueue() {\n\tlet chunks = new Array(INITIAL_CAPACITY);\n\tlet capacityMask = chunks.length - 1;\n\tlet head = 0;\n\tlet tail = 0;\n\tlet totalAvailable = 0;\n\tconst consumeFromHead = (count) => {\n\t\tconst chunk = chunks[head];\n\t\tif (count === chunk.length) {\n\t\t\tchunks[head] = EMPTY;\n\t\t\thead = head + 1 & capacityMask;\n\t\t} else chunks[head] = chunk.subarray(count);\n\t\ttotalAvailable -= count;\n\t\tif (totalAvailable === 0 && chunks.length > INITIAL_CAPACITY) {\n\t\t\tchunks = new Array(INITIAL_CAPACITY);\n\t\t\tcapacityMask = INITIAL_CAPACITY - 1;\n\t\t\thead = 0;\n\t\t\ttail = 0;\n\t\t}\n\t};\n\tfunction pull(bytes, callback) {\n\t\tif (callback) {\n\t\t\tlet fed = 0;\n\t\t\tlet remaining$1 = Math.min(bytes, totalAvailable);\n\t\t\twhile (remaining$1 > 0) {\n\t\t\t\tconst chunk = chunks[head];\n\t\t\t\tconst toFeed = Math.min(remaining$1, chunk.length);\n\t\t\t\tconst segment = toFeed === chunk.length ? chunk : chunk.subarray(0, toFeed);\n\t\t\t\tconsumeFromHead(toFeed);\n\t\t\t\tremaining$1 -= toFeed;\n\t\t\t\tfed += toFeed;\n\t\t\t\tif (!callback(segment)) break;\n\t\t\t}\n\t\t\treturn fed;\n\t\t}\n\t\tif (totalAvailable < bytes) return null;\n\t\tif (bytes === 0) return EMPTY;\n\t\tconst firstChunk = chunks[head];\n\t\tif (firstChunk.length >= bytes) {\n\t\t\tconst view = firstChunk.length === bytes ? firstChunk : firstChunk.subarray(0, bytes);\n\t\t\tconsumeFromHead(bytes);\n\t\t\treturn view;\n\t\t}\n\t\tconst result = new Uint8Array(bytes);\n\t\tlet copied = 0;\n\t\tlet remaining = bytes;\n\t\twhile (remaining > 0) {\n\t\t\tconst chunk = chunks[head];\n\t\t\tconst toCopy = Math.min(remaining, chunk.length);\n\t\t\tresult.set(toCopy === chunk.length ? chunk : chunk.subarray(0, toCopy), copied);\n\t\t\tcopied += toCopy;\n\t\t\tremaining -= toCopy;\n\t\t\tconsumeFromHead(toCopy);\n\t\t}\n\t\treturn result;\n\t}\n\treturn {\n\t\tpush: (chunk) => {\n\t\t\tif (chunk.length === 0) return;\n\t\t\tlet nextTail = tail + 1 & capacityMask;\n\t\t\tif (nextTail === head) {\n\t\t\t\tconst oldLen = chunks.length;\n\t\t\t\tconst newLen = oldLen * 2;\n\t\t\t\tconst newChunks = new Array(newLen);\n\t\t\t\tconst count = tail - head + oldLen & oldLen - 1;\n\t\t\t\tif (head < tail) for (let i = 0; i < count; i++) newChunks[i] = chunks[head + i];\n\t\t\t\telse if (count > 0) {\n\t\t\t\t\tconst firstPart = oldLen - head;\n\t\t\t\t\tfor (let i = 0; i < firstPart; i++) newChunks[i] = chunks[head + i];\n\t\t\t\t\tfor (let i = 0; i < tail; i++) newChunks[firstPart + i] = chunks[i];\n\t\t\t\t}\n\t\t\t\tchunks = newChunks;\n\t\t\t\tcapacityMask = newLen - 1;\n\t\t\t\thead = 0;\n\t\t\t\ttail = count;\n\t\t\t\tnextTail = tail + 1 & capacityMask;\n\t\t\t}\n\t\t\tchunks[tail] = chunk;\n\t\t\ttail = nextTail;\n\t\t\ttotalAvailable += chunk.length;\n\t\t},\n\t\tavailable: () => totalAvailable,\n\t\tpeek: (bytes) => {\n\t\t\tif (totalAvailable < bytes) return null;\n\t\t\tif (bytes === 0) return EMPTY;\n\t\t\tconst firstChunk = chunks[head];\n\t\t\tif (firstChunk.length >= bytes) return firstChunk.length === bytes ? firstChunk : firstChunk.subarray(0, bytes);\n\t\t\tconst result = new Uint8Array(bytes);\n\t\t\tlet copied = 0;\n\t\t\tlet index = head;\n\t\t\twhile (copied < bytes) {\n\t\t\t\tconst chunk = chunks[index];\n\t\t\t\tconst toCopy = Math.min(bytes - copied, chunk.length);\n\t\t\t\tif (toCopy === chunk.length) result.set(chunk, copied);\n\t\t\t\telse result.set(chunk.subarray(0, toCopy), copied);\n\t\t\t\tcopied += toCopy;\n\t\t\t\tindex = index + 1 & capacityMask;\n\t\t\t}\n\t\t\treturn result;\n\t\t},\n\t\tdiscard: (bytes) => {\n\t\t\tif (bytes > totalAvailable) throw new Error(\"Too many bytes consumed\");\n\t\t\tif (bytes === 0) return;\n\t\t\tlet remaining = bytes;\n\t\t\twhile (remaining > 0) {\n\t\t\t\tconst chunk = chunks[head];\n\t\t\t\tconst toConsume = Math.min(remaining, chunk.length);\n\t\t\t\tconsumeFromHead(toConsume);\n\t\t\t\tremaining -= toConsume;\n\t\t\t}\n\t\t},\n\t\tpull\n\t};\n}\n\n//#endregion\n//#region src/tar/unpacker.ts\nconst STATE_HEADER = 0;\nconst STATE_BODY = 1;\nconst truncateErr = /* @__PURE__ */ new Error(\"Tar archive is truncated.\");\nfunction createUnpacker(options = {}) {\n\tconst strict = options.strict ?? false;\n\tconst { available, peek, push, discard, pull } = createChunkQueue();\n\tlet state = STATE_HEADER;\n\tlet ended = false;\n\tlet done = false;\n\tlet eof = false;\n\tlet currentEntry = null;\n\tconst paxGlobals = {};\n\tlet nextEntryOverrides = {};\n\tconst unpacker = {\n\t\tisEntryActive: () => state === STATE_BODY,\n\t\tisBodyComplete: () => !currentEntry || currentEntry.remaining === 0,\n\t\twrite(chunk) {\n\t\t\tif (ended) throw new Error(\"Archive already ended.\");\n\t\t\tpush(chunk);\n\t\t},\n\t\tend() {\n\t\t\tended = true;\n\t\t},\n\t\treadHeader() {\n\t\t\tif (state !== STATE_HEADER) throw new Error(\"Cannot read header while an entry is active\");\n\t\t\tif (done) return void 0;\n\t\t\twhile (!done) {\n\t\t\t\tif (available() < BLOCK_SIZE) {\n\t\t\t\t\tif (ended) {\n\t\t\t\t\t\tif (available() > 0 && strict) throw truncateErr;\n\t\t\t\t\t\tdone = true;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tconst headerBlock = peek(BLOCK_SIZE);\n\t\t\t\tif (isZeroBlock(headerBlock)) {\n\t\t\t\t\tif (available() < BLOCK_SIZE * 2) {\n\t\t\t\t\t\tif (ended) {\n\t\t\t\t\t\t\tif (strict) throw truncateErr;\n\t\t\t\t\t\t\tdone = true;\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t\tif (isZeroBlock(peek(BLOCK_SIZE * 2).subarray(BLOCK_SIZE))) {\n\t\t\t\t\t\tdiscard(BLOCK_SIZE * 2);\n\t\t\t\t\t\tdone = true;\n\t\t\t\t\t\teof = true;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tif (strict) throw new Error(\"Invalid tar header.\");\n\t\t\t\t\tdiscard(BLOCK_SIZE);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tlet internalHeader;\n\t\t\t\ttry {\n\t\t\t\t\tinternalHeader = parseUstarHeader(headerBlock, strict);\n\t\t\t\t} catch (err) {\n\t\t\t\t\tif (strict) throw err;\n\t\t\t\t\tdiscard(BLOCK_SIZE);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst metaParser = getMetaParser(internalHeader.type);\n\t\t\t\tif (metaParser) {\n\t\t\t\t\tconst paddedSize = internalHeader.size + BLOCK_SIZE_MASK & ~BLOCK_SIZE_MASK;\n\t\t\t\t\tif (available() < BLOCK_SIZE + paddedSize) {\n\t\t\t\t\t\tif (ended && strict) throw truncateErr;\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t\tdiscard(BLOCK_SIZE);\n\t\t\t\t\tconst overrides = metaParser(pull(paddedSize).subarray(0, internalHeader.size));\n\t\t\t\t\tconst target = internalHeader.type === \"pax-global-header\" ? paxGlobals : nextEntryOverrides;\n\t\t\t\t\tfor (const key in overrides) target[key] = overrides[key];\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tdiscard(BLOCK_SIZE);\n\t\t\t\tconst header = internalHeader;\n\t\t\t\tif (internalHeader.prefix) header.name = `${internalHeader.prefix}/${header.name}`;\n\t\t\t\tapplyOverrides(header, paxGlobals);\n\t\t\t\tapplyOverrides(header, nextEntryOverrides);\n\t\t\t\tnextEntryOverrides = {};\n\t\t\t\tcurrentEntry = {\n\t\t\t\t\theader,\n\t\t\t\t\tremaining: header.size,\n\t\t\t\t\tpadding: -header.size & BLOCK_SIZE_MASK\n\t\t\t\t};\n\t\t\t\tstate = STATE_BODY;\n\t\t\t\treturn header;\n\t\t\t}\n\t\t},\n\t\tstreamBody(callback) {\n\t\t\tif (state !== STATE_BODY || !currentEntry || currentEntry.remaining === 0) return 0;\n\t\t\tconst bytesToFeed = Math.min(currentEntry.remaining, available());\n\t\t\tif (bytesToFeed === 0) return 0;\n\t\t\tconst fed = pull(bytesToFeed, callback);\n\t\t\tcurrentEntry.remaining -= fed;\n\t\t\treturn fed;\n\t\t},\n\t\tskipPadding() {\n\t\t\tif (state !== STATE_BODY || !currentEntry) return true;\n\t\t\tif (currentEntry.remaining > 0) throw new Error(\"Body not fully consumed\");\n\t\t\tif (available() < currentEntry.padding) return false;\n\t\t\tdiscard(currentEntry.padding);\n\t\t\tcurrentEntry = null;\n\t\t\tstate = STATE_HEADER;\n\t\t\treturn true;\n\t\t},\n\t\tskipEntry() {\n\t\t\tif (state !== STATE_BODY || !currentEntry) return true;\n\t\t\tconst toDiscard = Math.min(currentEntry.remaining, available());\n\t\t\tif (toDiscard > 0) {\n\t\t\t\tdiscard(toDiscard);\n\t\t\t\tcurrentEntry.remaining -= toDiscard;\n\t\t\t}\n\t\t\tif (currentEntry.remaining > 0) return false;\n\t\t\treturn unpacker.skipPadding();\n\t\t},\n\t\tvalidateEOF() {\n\t\t\tif (strict) {\n\t\t\t\tif (!eof) throw truncateErr;\n\t\t\t\tif (available() > 0) {\n\t\t\t\t\tif (pull(available()).some((byte) => byte !== 0)) throw new Error(\"Invalid EOF.\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\treturn unpacker;\n}\nfunction isZeroBlock(block) {\n\tif (block.byteOffset % 8 === 0) {\n\t\tconst view = new BigUint64Array(block.buffer, block.byteOffset, block.length / 8);\n\t\tfor (let i = 0; i < view.length; i++) if (view[i] !== 0n) return false;\n\t\treturn true;\n\t}\n\tfor (let i = 0; i < block.length; i++) if (block[i] !== 0) return false;\n\treturn true;\n}\n\n//#endregion\nexport { normalizeBody as a, LINK as c, isBodyless as i, SYMLINK as l, createTarPacker as n, DIRECTORY as o, transformHeader as r, FILE as s, createUnpacker as t };",
10
- "import { a as normalizeBody, i as isBodyless, n as createTarPacker$1, r as transformHeader, t as createUnpacker } from \"../unpacker-BpPBxY8N.js\";\n\n//#region src/web/compression.ts\nfunction createGzipEncoder() {\n\treturn new CompressionStream(\"gzip\");\n}\nfunction createGzipDecoder() {\n\treturn new DecompressionStream(\"gzip\");\n}\n\n//#endregion\n//#region src/web/pack.ts\nfunction createTarPacker() {\n\tlet streamController;\n\tlet packer;\n\treturn {\n\t\treadable: new ReadableStream({ start(controller) {\n\t\t\tstreamController = controller;\n\t\t\tpacker = createTarPacker$1(controller.enqueue.bind(controller), controller.error.bind(controller), controller.close.bind(controller));\n\t\t} }),\n\t\tcontroller: {\n\t\t\tadd(header) {\n\t\t\t\tconst bodyless = isBodyless(header);\n\t\t\t\tconst h = { ...header };\n\t\t\t\tif (bodyless) h.size = 0;\n\t\t\t\tpacker.add(h);\n\t\t\t\tif (bodyless) packer.endEntry();\n\t\t\t\treturn new WritableStream({\n\t\t\t\t\twrite(chunk) {\n\t\t\t\t\t\tpacker.write(chunk);\n\t\t\t\t\t},\n\t\t\t\t\tclose() {\n\t\t\t\t\t\tif (!bodyless) packer.endEntry();\n\t\t\t\t\t},\n\t\t\t\t\tabort(reason) {\n\t\t\t\t\t\tstreamController.error(reason);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\tfinalize() {\n\t\t\t\tpacker.finalize();\n\t\t\t},\n\t\t\terror(err) {\n\t\t\t\tstreamController.error(err);\n\t\t\t}\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/web/stream-utils.ts\nasync function streamToBuffer(stream) {\n\tconst chunks = [];\n\tconst reader = stream.getReader();\n\tlet totalLength = 0;\n\ttry {\n\t\twhile (true) {\n\t\t\tconst { done, value } = await reader.read();\n\t\t\tif (done) break;\n\t\t\tchunks.push(value);\n\t\t\ttotalLength += value.length;\n\t\t}\n\t\tconst result = new Uint8Array(totalLength);\n\t\tlet offset = 0;\n\t\tfor (const chunk of chunks) {\n\t\t\tresult.set(chunk, offset);\n\t\t\toffset += chunk.length;\n\t\t}\n\t\treturn result;\n\t} finally {\n\t\treader.releaseLock();\n\t}\n}\nconst drain = (stream) => stream.pipeTo(new WritableStream());\n\n//#endregion\n//#region src/web/unpack.ts\nfunction createTarDecoder(options = {}) {\n\tconst unpacker = createUnpacker(options);\n\tlet bodyController = null;\n\tlet pumping = false;\n\tconst pump = (controller) => {\n\t\tif (pumping) return;\n\t\tpumping = true;\n\t\ttry {\n\t\t\twhile (true) if (unpacker.isEntryActive()) {\n\t\t\t\tif (bodyController) {\n\t\t\t\t\tif (unpacker.streamBody((c) => (bodyController.enqueue(c), true)) === 0 && !unpacker.isBodyComplete()) break;\n\t\t\t\t} else if (!unpacker.skipEntry()) break;\n\t\t\t\tif (unpacker.isBodyComplete()) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tbodyController?.close();\n\t\t\t\t\t} catch {}\n\t\t\t\t\tbodyController = null;\n\t\t\t\t\tif (!unpacker.skipPadding()) break;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst header = unpacker.readHeader();\n\t\t\t\tif (header === null || header === void 0) break;\n\t\t\t\tcontroller.enqueue({\n\t\t\t\t\theader,\n\t\t\t\t\tbody: new ReadableStream({\n\t\t\t\t\t\tstart(c) {\n\t\t\t\t\t\t\tif (header.size === 0) c.close();\n\t\t\t\t\t\t\telse bodyController = c;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tpull: () => pump(controller),\n\t\t\t\t\t\tcancel() {\n\t\t\t\t\t\t\tbodyController = null;\n\t\t\t\t\t\t\tpump(controller);\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t});\n\t\t\t}\n\t\t} catch (error) {\n\t\t\ttry {\n\t\t\t\tbodyController?.error(error);\n\t\t\t} catch {}\n\t\t\tbodyController = null;\n\t\t\tthrow error;\n\t\t} finally {\n\t\t\tpumping = false;\n\t\t}\n\t};\n\treturn new TransformStream({\n\t\ttransform(chunk, controller) {\n\t\t\ttry {\n\t\t\t\tunpacker.write(chunk);\n\t\t\t\tpump(controller);\n\t\t\t} catch (error) {\n\t\t\t\ttry {\n\t\t\t\t\tbodyController?.error(error);\n\t\t\t\t} catch {}\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t},\n\t\tflush(controller) {\n\t\t\ttry {\n\t\t\t\tunpacker.end();\n\t\t\t\tpump(controller);\n\t\t\t\tunpacker.validateEOF();\n\t\t\t\tif (unpacker.isEntryActive() && !unpacker.isBodyComplete()) try {\n\t\t\t\t\tbodyController?.close();\n\t\t\t\t} catch {}\n\t\t\t} catch (error) {\n\t\t\t\ttry {\n\t\t\t\t\tbodyController?.error(error);\n\t\t\t\t} catch {}\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\t}, void 0, { highWaterMark: 1 });\n}\n\n//#endregion\n//#region src/web/helpers.ts\nasync function packTar(entries) {\n\tconst { readable, controller } = createTarPacker();\n\tawait (async () => {\n\t\tfor (const entry of entries) {\n\t\t\tconst entryStream = controller.add(entry.header);\n\t\t\tconst body = \"body\" in entry ? entry.body : entry.data;\n\t\t\tif (!body) {\n\t\t\t\tawait entryStream.close();\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (body instanceof ReadableStream) await body.pipeTo(entryStream);\n\t\t\telse if (body instanceof Blob) await body.stream().pipeTo(entryStream);\n\t\t\telse try {\n\t\t\t\tconst chunk = await normalizeBody(body);\n\t\t\t\tif (chunk.length > 0) {\n\t\t\t\t\tconst writer = entryStream.getWriter();\n\t\t\t\t\tawait writer.write(chunk);\n\t\t\t\t\tawait writer.close();\n\t\t\t\t} else await entryStream.close();\n\t\t\t} catch {\n\t\t\t\tthrow new TypeError(`Unsupported content type for entry \"${entry.header.name}\".`);\n\t\t\t}\n\t\t}\n\t})().then(() => controller.finalize()).catch((err) => controller.error(err));\n\treturn new Uint8Array(await streamToBuffer(readable));\n}\nasync function unpackTar(archive, options = {}) {\n\tconst sourceStream = archive instanceof ReadableStream ? archive : new ReadableStream({ start(controller) {\n\t\tcontroller.enqueue(archive instanceof Uint8Array ? archive : new Uint8Array(archive));\n\t\tcontroller.close();\n\t} });\n\tconst results = [];\n\tconst entryStream = sourceStream.pipeThrough(createTarDecoder(options));\n\tfor await (const entry of entryStream) {\n\t\tlet processedHeader;\n\t\ttry {\n\t\t\tprocessedHeader = transformHeader(entry.header, options);\n\t\t} catch (error) {\n\t\t\tawait entry.body.cancel();\n\t\t\tthrow error;\n\t\t}\n\t\tif (processedHeader === null) {\n\t\t\tawait drain(entry.body);\n\t\t\tcontinue;\n\t\t}\n\t\tif (isBodyless(processedHeader)) {\n\t\t\tawait drain(entry.body);\n\t\t\tresults.push({ header: processedHeader });\n\t\t} else results.push({\n\t\t\theader: processedHeader,\n\t\t\tdata: await streamToBuffer(entry.body)\n\t\t});\n\t}\n\treturn results;\n}\n\n//#endregion\nexport { createGzipDecoder, createGzipEncoder, createTarDecoder, createTarPacker, packTar, unpackTar };"
10
+ "import { a as normalizeBody, i as isBodyless, n as createTarPacker$1, r as transformHeader, t as createUnpacker } from \"../unpacker-BpPBxY8N.js\";\n\n//#region src/web/compression.ts\nfunction createGzipEncoder() {\n\treturn new CompressionStream(\"gzip\");\n}\nfunction createGzipDecoder() {\n\treturn new DecompressionStream(\"gzip\");\n}\n\n//#endregion\n//#region src/web/pack.ts\nfunction createTarPacker() {\n\tlet streamController;\n\tlet packer;\n\treturn {\n\t\treadable: new ReadableStream({ start(controller) {\n\t\t\tstreamController = controller;\n\t\t\tpacker = createTarPacker$1(controller.enqueue.bind(controller), controller.error.bind(controller), controller.close.bind(controller));\n\t\t} }),\n\t\tcontroller: {\n\t\t\tadd(header) {\n\t\t\t\tconst bodyless = isBodyless(header);\n\t\t\t\tconst h = { ...header };\n\t\t\t\tif (bodyless) h.size = 0;\n\t\t\t\tpacker.add(h);\n\t\t\t\tif (bodyless) packer.endEntry();\n\t\t\t\treturn new WritableStream({\n\t\t\t\t\twrite(chunk) {\n\t\t\t\t\t\tpacker.write(chunk);\n\t\t\t\t\t},\n\t\t\t\t\tclose() {\n\t\t\t\t\t\tif (!bodyless) packer.endEntry();\n\t\t\t\t\t},\n\t\t\t\t\tabort(reason) {\n\t\t\t\t\t\tstreamController.error(reason);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\tfinalize() {\n\t\t\t\tpacker.finalize();\n\t\t\t},\n\t\t\terror(err) {\n\t\t\t\tstreamController.error(err);\n\t\t\t}\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/web/stream-utils.ts\nasync function streamToBuffer(stream) {\n\tconst chunks = [];\n\tconst reader = stream.getReader();\n\tlet totalLength = 0;\n\ttry {\n\t\twhile (true) {\n\t\t\tconst { done, value } = await reader.read();\n\t\t\tif (done) break;\n\t\t\tchunks.push(value);\n\t\t\ttotalLength += value.length;\n\t\t}\n\t\tconst result = new Uint8Array(totalLength);\n\t\tlet offset = 0;\n\t\tfor (const chunk of chunks) {\n\t\t\tresult.set(chunk, offset);\n\t\t\toffset += chunk.length;\n\t\t}\n\t\treturn result;\n\t} finally {\n\t\treader.releaseLock();\n\t}\n}\nconst drain = (stream) => stream.pipeTo(new WritableStream());\n\n//#endregion\n//#region src/web/unpack.ts\nfunction createTarDecoder(options = {}) {\n\tconst unpacker = createUnpacker(options);\n\tlet bodyController = null;\n\tlet pumping = false;\n\tconst pump = (controller) => {\n\t\tif (pumping) return;\n\t\tpumping = true;\n\t\ttry {\n\t\t\twhile (true) if (unpacker.isEntryActive()) {\n\t\t\t\tif (bodyController) {\n\t\t\t\t\tif (unpacker.streamBody((c) => (bodyController.enqueue(c), true)) === 0 && !unpacker.isBodyComplete()) break;\n\t\t\t\t} else if (!unpacker.skipEntry()) break;\n\t\t\t\tif (unpacker.isBodyComplete()) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tbodyController?.close();\n\t\t\t\t\t} catch {}\n\t\t\t\t\tbodyController = null;\n\t\t\t\t\tif (!unpacker.skipPadding()) break;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst header = unpacker.readHeader();\n\t\t\t\tif (header === null || header === void 0) break;\n\t\t\t\tcontroller.enqueue({\n\t\t\t\t\theader,\n\t\t\t\t\tbody: new ReadableStream({\n\t\t\t\t\t\tstart(c) {\n\t\t\t\t\t\t\tif (header.size === 0) c.close();\n\t\t\t\t\t\t\telse bodyController = c;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tpull: () => pump(controller),\n\t\t\t\t\t\tcancel() {\n\t\t\t\t\t\t\tbodyController = null;\n\t\t\t\t\t\t\tpump(controller);\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t});\n\t\t\t}\n\t\t} catch (error) {\n\t\t\ttry {\n\t\t\t\tbodyController?.error(error);\n\t\t\t} catch {}\n\t\t\tbodyController = null;\n\t\t\tthrow error;\n\t\t} finally {\n\t\t\tpumping = false;\n\t\t}\n\t};\n\treturn new TransformStream({\n\t\ttransform(chunk, controller) {\n\t\t\ttry {\n\t\t\t\tunpacker.write(chunk);\n\t\t\t\tpump(controller);\n\t\t\t} catch (error) {\n\t\t\t\ttry {\n\t\t\t\t\tbodyController?.error(error);\n\t\t\t\t} catch {}\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t},\n\t\tflush(controller) {\n\t\t\ttry {\n\t\t\t\tunpacker.end();\n\t\t\t\tpump(controller);\n\t\t\t\tunpacker.validateEOF();\n\t\t\t\tif (unpacker.isEntryActive() && !unpacker.isBodyComplete()) try {\n\t\t\t\t\tbodyController?.close();\n\t\t\t\t} catch {}\n\t\t\t} catch (error) {\n\t\t\t\ttry {\n\t\t\t\t\tbodyController?.error(error);\n\t\t\t\t} catch {}\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\t}, void 0, { highWaterMark: 1 });\n}\n\n//#endregion\n//#region src/web/helpers.ts\nasync function packTar(entries) {\n\tconst { readable, controller } = createTarPacker();\n\tawait (async () => {\n\t\tfor (const entry of entries) {\n\t\t\tconst entryStream = controller.add(entry.header);\n\t\t\tconst body = \"body\" in entry ? entry.body : entry.data;\n\t\t\tif (!body) {\n\t\t\t\tawait entryStream.close();\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (body instanceof ReadableStream) await body.pipeTo(entryStream);\n\t\t\telse if (body instanceof Blob) await body.stream().pipeTo(entryStream);\n\t\t\telse try {\n\t\t\t\tconst chunk = await normalizeBody(body);\n\t\t\t\tif (chunk.length > 0) {\n\t\t\t\t\tconst writer = entryStream.getWriter();\n\t\t\t\t\tawait writer.write(chunk);\n\t\t\t\t\tawait writer.close();\n\t\t\t\t} else await entryStream.close();\n\t\t\t} catch {\n\t\t\t\tthrow new TypeError(`Unsupported content type for entry \"${entry.header.name}\".`);\n\t\t\t}\n\t\t}\n\t})().then(() => controller.finalize()).catch((err) => controller.error(err));\n\treturn new Uint8Array(await streamToBuffer(readable));\n}\nasync function unpackTar(archive, options = {}) {\n\tconst sourceStream = archive instanceof ReadableStream ? archive : new ReadableStream({ start(controller) {\n\t\tcontroller.enqueue(archive instanceof Uint8Array ? archive : new Uint8Array(archive));\n\t\tcontroller.close();\n\t} });\n\tconst results = [];\n\tconst entryStream = sourceStream.pipeThrough(createTarDecoder(options));\n\tfor await (const entry of entryStream) {\n\t\tlet processedHeader;\n\t\ttry {\n\t\t\tprocessedHeader = transformHeader(entry.header, options);\n\t\t} catch (error) {\n\t\t\tawait entry.body.cancel();\n\t\t\tthrow error;\n\t\t}\n\t\tif (processedHeader === null) {\n\t\t\tawait drain(entry.body);\n\t\t\tcontinue;\n\t\t}\n\t\tif (isBodyless(processedHeader)) {\n\t\t\tawait drain(entry.body);\n\t\t\tresults.push({ header: processedHeader });\n\t\t} else results.push({\n\t\t\theader: processedHeader,\n\t\t\tdata: await streamToBuffer(entry.body)\n\t\t});\n\t}\n\treturn results;\n}\n\n//#endregion\nexport { createGzipDecoder, createGzipEncoder, createTarDecoder, createTarPacker, packTar, unpackTar };",
11
+ "import type { RXM, RXL } from \"~/types/index.js\";\n\n/**\n * Create RXL from RXM.\n *\n * @param rxm - Resource manifest\n * @returns RXL locator object (pure data)\n */\nexport function locate(rxm: RXM): RXL {\n return {\n domain: rxm.domain,\n path: rxm.path,\n name: rxm.name,\n type: rxm.type,\n version: rxm.version,\n };\n}\n",
12
+ "import type { RXM, RXA, RXR } from \"~/types/index.js\";\nimport { locate } from \"./locate.js\";\n\n/**\n * Create RXR from RXM and RXA.\n *\n * @param rxm - Resource manifest\n * @param rxa - Resource archive\n * @returns RXR resource object\n */\nexport function resource(rxm: RXM, rxa: RXA): RXR {\n const rxl = locate(rxm);\n\n return {\n locator: rxl,\n manifest: rxm,\n archive: rxa,\n };\n}\n",
13
+ "import { gunzip } from \"node:zlib\";\nimport { promisify } from \"node:util\";\nimport { unpackTar } from \"modern-tar\";\nimport type { RXA } from \"~/types/index.js\";\n\nconst gunzipAsync = promisify(gunzip);\n\n/**\n * Extract files from RXA.\n *\n * @param rxa - Resource archive\n * @returns Record of file paths to Buffer contents\n */\nexport async function extract(rxa: RXA): Promise<Record<string, Buffer>> {\n const buffer = await rxa.buffer();\n\n // Decompress gzip\n const tarBuffer = await gunzipAsync(buffer);\n\n // Unpack tar\n const entries = await unpackTar(tarBuffer);\n\n const files: Record<string, Buffer> = {};\n for (const entry of entries) {\n if ((entry.header.type === \"file\" || entry.header.type === undefined) && entry.data) {\n files[entry.header.name] = Buffer.from(entry.data);\n }\n }\n\n return files;\n}\n",
14
+ "import type { RXL } from \"~/types/index.js\";\n\n/**\n * Format RXL to locator string.\n *\n * Format: domain/[path/]name.type@version\n *\n * @param rxl - Resource locator\n * @returns Locator string\n */\nexport function format(rxl: RXL): string {\n let result = rxl.domain + \"/\";\n if (rxl.path) {\n result += rxl.path + \"/\";\n }\n result += rxl.name;\n result += \".\" + rxl.type;\n result += \"@\" + rxl.version;\n return result;\n}\n",
15
+ "import type { RXL } from \"~/types/index.js\";\nimport { LocatorError } from \"~/errors.js\";\n\n/**\n * Parse locator string to RXL.\n *\n * Format: domain/[path/]name.type@version\n *\n * @param locator - Locator string\n * @returns RXL object\n * @throws LocatorError if parsing fails\n */\nexport function parse(locator: string): RXL {\n if (!locator || typeof locator !== \"string\") {\n throw new LocatorError(\"locator must be a non-empty string\", locator);\n }\n\n // Split by @ to get version\n const atIndex = locator.lastIndexOf(\"@\");\n if (atIndex === -1) {\n throw new LocatorError(\"locator must contain version (@)\", locator);\n }\n\n const version = locator.slice(atIndex + 1);\n const beforeVersion = locator.slice(0, atIndex);\n\n if (!version) {\n throw new LocatorError(\"version is required\", locator);\n }\n\n // Split by . to get type (last dot before @)\n const dotIndex = beforeVersion.lastIndexOf(\".\");\n if (dotIndex === -1) {\n throw new LocatorError(\"locator must contain type (.)\", locator);\n }\n\n const type = beforeVersion.slice(dotIndex + 1);\n const beforeType = beforeVersion.slice(0, dotIndex);\n\n if (!type) {\n throw new LocatorError(\"type is required\", locator);\n }\n\n // Split by / to get domain, path, name\n const parts = beforeType.split(\"/\");\n\n if (parts.length < 2) {\n throw new LocatorError(\"locator must contain domain\", locator);\n }\n\n const domain = parts[0];\n const name = parts[parts.length - 1];\n const path = parts.length > 2 ? parts.slice(1, -1).join(\"/\") : undefined;\n\n if (!domain) {\n throw new LocatorError(\"domain is required\", locator);\n }\n\n if (!name) {\n throw new LocatorError(\"name is required\", locator);\n }\n\n return {\n domain,\n path,\n name,\n type,\n version,\n };\n}\n",
16
+ "import type { RXA } from \"~/types/index.js\";\n\n/**\n * RXA Implementation for wrap\n */\nclass RXAImpl implements RXA {\n private readonly _buffer: Buffer;\n\n constructor(buffer: Buffer) {\n this._buffer = buffer;\n }\n\n get stream(): ReadableStream<Uint8Array> {\n const buffer = this._buffer;\n return new ReadableStream({\n start(controller) {\n controller.enqueue(new Uint8Array(buffer));\n controller.close();\n },\n });\n }\n\n async buffer(): Promise<Buffer> {\n return this._buffer;\n }\n}\n\n/**\n * Wrap existing tar.gz buffer as RXA.\n *\n * @param buffer - Existing tar.gz buffer\n * @returns RXA archive object\n */\nexport function wrap(buffer: Buffer): RXA {\n return new RXAImpl(buffer);\n}\n"
11
17
  ],
12
- "mappings": "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",
13
- "debugId": "AFABB314B72836D164756E2164756E21",
18
+ "mappings": ";AAIO,MAAM,uBAAuB,MAAM;AAAA,EACxC,WAAW,CAAC,SAAiB,SAAwB;AAAA,IACnD,MAAM,SAAS,OAAO;AAAA,IACtB,KAAK,OAAO;AAAA;AAEhB;AAAA;AAEO,MAAM,qBAAqB,eAAe;AAAA,EAG7B;AAAA,EAFlB,WAAW,CACT,SACgB,SAChB;AAAA,IACA,MAAM,OAAO;AAAA,IAFG;AAAA,IAGhB,KAAK,OAAO;AAAA;AAEhB;AAAA;AAEO,MAAM,sBAAsB,eAAe;AAAA,EAChD,WAAW,CAAC,SAAiB;AAAA,IAC3B,MAAM,OAAO;AAAA,IACb,KAAK,OAAO;AAAA;AAEhB;AAAA;AAEO,MAAM,qBAAqB,eAAe;AAAA,EAC/C,WAAW,CAAC,SAAiB;AAAA,IAC3B,MAAM,OAAO;AAAA,IACb,KAAK,OAAO;AAAA;AAEhB;AAAA;AAEO,MAAM,wBAAwB,eAAe;AAAA,EAClD,WAAW,CAAC,SAAiB;AAAA,IAC3B,MAAM,OAAO;AAAA,IACb,KAAK,OAAO;AAAA;AAEhB;;AC9BO,SAAS,MAAM,CAAC,OAAqB;AAAA,EAC1C,IAAI,UAAU,QAAQ,OAAO,UAAU,UAAU;AAAA,IAC/C,MAAM,IAAI,gBAAgB,8BAA8B;AAAA,EAC1D;AAAA,EAEA,MAAM,MAAM;AAAA,EAEZ,IAAI,CAAC,IAAI,QAAQ,OAAO,IAAI,SAAS,UAAU;AAAA,IAC7C,MAAM,IAAI,gBAAgB,kBAAkB;AAAA,EAC9C;AAAA,EAEA,IAAI,CAAC,IAAI,QAAQ,OAAO,IAAI,SAAS,UAAU;AAAA,IAC7C,MAAM,IAAI,gBAAgB,kBAAkB;AAAA,EAC9C;AAAA,EAEA,IAAI,CAAC,IAAI,WAAW,OAAO,IAAI,YAAY,UAAU;AAAA,IACnD,MAAM,IAAI,gBAAgB,qBAAqB;AAAA,EACjD;AAAA,EAGA,MAAM,MAAW;AAAA,OACZ;AAAA,IACH,MAAM,IAAI;AAAA,IACV,MAAM,IAAI;AAAA,IACV,SAAS,IAAI;AAAA,IACb,QAAQ,OAAO,IAAI,WAAW,WAAW,IAAI,SAAS;AAAA,IACtD,MAAM,OAAO,IAAI,SAAS,WAAW,IAAI,OAAO;AAAA,IAChD,aAAa,OAAO,IAAI,gBAAgB,WAAW,IAAI,cAAc;AAAA,IACrE,QAAQ,OAAO,IAAI,WAAW,WAAW,IAAI,SAAS;AAAA,IACtD,SAAS,OAAO,IAAI,YAAY,WAAW,IAAI,UAAU;AAAA,IACzD,UAAU,MAAM,QAAQ,IAAI,QAAQ,IAAI,IAAI,WAAW;AAAA,IACvD,YAAY,OAAO,IAAI,eAAe,WAAW,IAAI,aAAa;AAAA,EACpE;AAAA,EAEA,OAAO;AAAA;;ACnCF,SAAS,QAAQ,CAAC,KAAe;AAAA,EACtC,OAAO;AAAA,IACL,QAAQ,IAAI;AAAA,IACZ,MAAM,IAAI;AAAA,IACV,MAAM,IAAI;AAAA,IACV,MAAM,IAAI;AAAA,IACV,SAAS,IAAI;AAAA,EACf;AAAA;;AChBF;AACA;;;ACAA,IAAM,aAAa;AACnB,IAAM,kBAAkB;AACxB,IAAM,oBAAoB;AAC1B,IAAM,mBAAmB;AACzB,IAAM,oBAAoB;AAC1B,IAAM,kBAAkB;AACxB,IAAM,oBAAoB;AAC1B,IAAM,kBAAkB;AACxB,IAAM,mBAAmB;AACzB,IAAM,iBAAiB;AACvB,IAAM,mBAAmB;AACzB,IAAM,iBAAiB;AACvB,IAAM,oBAAoB;AAC1B,IAAM,kBAAkB;AACxB,IAAM,qBAAqB;AAC3B,IAAM,mBAAmB;AACzB,IAAM,wBAAwB;AAC9B,IAAM,sBAAsB;AAC5B,IAAM,wBAAwB;AAC9B,IAAM,sBAAsB;AAC5B,IAAM,wBAAwB;AAC9B,IAAM,sBAAsB;AAC5B,IAAM,qBAAqB;AAC3B,IAAM,mBAAmB;AACzB,IAAM,uBAAuB;AAC7B,IAAM,qBAAqB;AAC3B,IAAM,qBAAqB;AAC3B,IAAM,mBAAmB;AACzB,IAAM,qBAAqB;AAC3B,IAAM,mBAAmB;AACzB,IAAM,sBAAsB;AAC5B,IAAM,oBAAoB;AAC1B,IAAM,gBAAgB;AACtB,IAAM,oBAAoB;AAC1B,IAAM,iBAAiB;AACvB,IAAM,OAAO;AACb,IAAM,OAAO;AACb,IAAM,UAAU;AAChB,IAAM,YAAY;AAClB,IAAM,WAAW;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,SAAS;AAAA,EACT,oBAAoB;AAAA,EACpB,gBAAgB;AAAA,EAChB,WAAW;AAAA,EACX,MAAM;AAAA,EACN,cAAc;AAAA,EACd,qBAAqB;AAAA,EACrB,iBAAiB;AAAA,EACjB,sBAAsB;AACvB;AACA,IAAM,WAAW;AAAA,EAChB,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AACJ;AACA,IAAM,aAAa,IAAI,WAAW,UAAU;AAC5C,IAAM,QAAQ,IAAI,WAAW,CAAC;AAI9B,IAAM,UAAU,IAAI;AACpB,IAAM,UAAU,IAAI;AACpB,SAAS,WAAW,CAAC,MAAM,QAAQ,MAAM,OAAO;AAAA,EAC/C,IAAI;AAAA,IAAO,QAAQ,WAAW,OAAO,KAAK,SAAS,QAAQ,SAAS,IAAI,CAAC;AAAA;AAE1E,SAAS,UAAU,CAAC,MAAM,QAAQ,MAAM,OAAO;AAAA,EAC9C,IAAI,UAAe;AAAA,IAAG;AAAA,EACtB,MAAM,cAAc,MAAM,SAAS,CAAC,EAAE,SAAS,OAAO,GAAG,GAAG;AAAA,EAC5D,QAAQ,WAAW,aAAa,KAAK,SAAS,QAAQ,SAAS,OAAO,CAAC,CAAC;AAAA;AAEzE,SAAS,UAAU,CAAC,MAAM,QAAQ,MAAM;AAAA,EACvC,MAAM,MAAM,KAAK,QAAQ,GAAG,MAAM;AAAA,EAClC,MAAM,WAAW,QAAQ,MAAM,MAAM,SAAS,OAAO,SAAS,OAAO;AAAA,EACrE,OAAO,QAAQ,OAAO,KAAK,SAAS,QAAQ,QAAQ,CAAC;AAAA;AAEtD,SAAS,SAAS,CAAC,MAAM,QAAQ,MAAM;AAAA,EACtC,IAAI,QAAQ;AAAA,EACZ,MAAM,MAAM,SAAS;AAAA,EACrB,SAAS,IAAI,OAAQ,IAAI,KAAK,KAAK;AAAA,IAClC,MAAM,WAAW,KAAK;AAAA,IACtB,IAAI,aAAa;AAAA,MAAG;AAAA,IACpB,IAAI,aAAa;AAAA,MAAI;AAAA,IACrB,QAAQ,QAAQ,KAAK,WAAW;AAAA,EACjC;AAAA,EACA,OAAO;AAAA;AAER,SAAS,WAAW,CAAC,MAAM,QAAQ,MAAM;AAAA,EACxC,IAAI,KAAK,UAAU,KAAK;AAAA,IACvB,IAAI,SAAS;AAAA,IACb,SAAS,KAAK,UAAU;AAAA,IACxB,SAAS,IAAI,EAAG,IAAI,MAAM;AAAA,MAAK,SAAS,SAAS,MAAM,KAAK,SAAS;AAAA,IACrE,IAAI,CAAC,OAAO,cAAc,MAAM;AAAA,MAAG,MAAM,IAAI,MAAM,sBAAsB;AAAA,IACzE,OAAO;AAAA,EACR;AAAA,EACA,OAAO,UAAU,MAAM,QAAQ,IAAI;AAAA;AAKpC,IAAM,aAAa,CAAC,WAAW,OAAO,SAAS,aAAa,OAAO,SAAS,WAAW,OAAO,SAAS;AACvG,eAAe,aAAa,CAAC,MAAM;AAAA,EAClC,IAAI,SAAS,QAAQ,SAAc;AAAA,IAAG,OAAO;AAAA,EAC7C,IAAI,gBAAgB;AAAA,IAAY,OAAO;AAAA,EACvC,IAAI,OAAO,SAAS;AAAA,IAAU,OAAO,QAAQ,OAAO,IAAI;AAAA,EACxD,IAAI,gBAAgB;AAAA,IAAa,OAAO,IAAI,WAAW,IAAI;AAAA,EAC3D,IAAI,gBAAgB;AAAA,IAAM,OAAO,IAAI,WAAW,MAAM,KAAK,YAAY,CAAC;AAAA,EACxE,MAAM,IAAI,UAAU,0CAA0C;AAAA;AAK/D,SAAS,eAAe,CAAC,QAAQ,SAAS;AAAA,EACzC,QAAQ,OAAO,QAAQ,QAAQ;AAAA,EAC/B,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;AAAA,IAAK,OAAO;AAAA,EACtC,MAAM,IAAI,KAAK,OAAO;AAAA,EACtB,IAAI,SAAS,QAAQ,GAAG;AAAA,IACvB,MAAM,aAAa,EAAE,KAAK,MAAM,GAAG,EAAE,OAAO,OAAO;AAAA,IACnD,IAAI,SAAS,WAAW;AAAA,MAAQ,OAAO;AAAA,IACvC,MAAM,UAAU,WAAW,MAAM,KAAK,EAAE,KAAK,GAAG;AAAA,IAChD,EAAE,OAAO,EAAE,SAAS,aAAa,CAAC,QAAQ,SAAS,GAAG,IAAI,GAAG,aAAa;AAAA,IAC1E,IAAI,EAAE,UAAU,WAAW,GAAG,GAAG;AAAA,MAChC,MAAM,iBAAiB,EAAE,SAAS,MAAM,GAAG,EAAE,OAAO,OAAO;AAAA,MAC3D,EAAE,WAAW,SAAS,eAAe,SAAS,MAAM,IAAI,eAAe,MAAM,KAAK,EAAE,KAAK,GAAG;AAAA,IAC7F;AAAA,EACD;AAAA,EACA,IAAI,SAAS,CAAC,MAAM;AAAA,IAAO,OAAO;AAAA,EAClC,MAAM,SAAS,MAAM,IAAI,CAAC,IAAI;AAAA,EAC9B,IAAI,WAAW,CAAC,OAAO,QAAQ,CAAC,OAAO,KAAK,KAAK,KAAK,OAAO,SAAS,OAAO,OAAO,SAAS;AAAA,IAAM,OAAO;AAAA,EAC1G,OAAO;AAAA;AAKR,IAAM,iBAAiB;AACvB,IAAM,aAAa;AACnB,SAAS,gBAAgB,CAAC,OAAO;AAAA,EAChC,MAAM,SAAS,UAAU,OAAO,uBAAuB,mBAAmB;AAAA,EAC1E,IAAI,MAAM;AAAA,EACV,SAAS,IAAI,EAAG,IAAI,MAAM,QAAQ;AAAA,IAAK,IAAI,KAAK,yBAAyB,IAAI,wBAAwB;AAAA,MAAqB,OAAO;AAAA,IAC5H;AAAA,aAAO,MAAM;AAAA,EAClB,OAAO,WAAW;AAAA;AAEnB,SAAS,aAAa,CAAC,OAAO;AAAA,EAC7B,MAAM,KAAK,gBAAgB,uBAAuB,wBAAwB,mBAAmB;AAAA,EAC7F,IAAI,WAAW;AAAA,EACf,WAAW,QAAQ;AAAA,IAAO,YAAY;AAAA,EACtC,SAAS,IAAI,wBAAwB,IAAI,EAAG,KAAK,uBAAuB,KAAK;AAAA,IAC5E,MAAM,MAAM,WAAW,KAAK;AAAA,IAC5B,aAAa;AAAA,EACd;AAAA,EACA,MAAM,wBAAwB,KAAK;AAAA,EACnC,MAAM,wBAAwB,KAAK;AAAA;AAKpC,SAAS,WAAW,CAAC,QAAQ;AAAA,EAC5B,MAAM,aAAa,CAAC;AAAA,EACpB,IAAI,OAAO,KAAK,SAAS,iBAAiB;AAAA,IACzC,IAAI,eAAe,OAAO,IAAI,MAAM;AAAA,MAAM,WAAW,OAAO,OAAO;AAAA,EACpE;AAAA,EACA,IAAI,OAAO,YAAY,OAAO,SAAS,SAAS;AAAA,IAAiB,WAAW,WAAW,OAAO;AAAA,EAC9F,IAAI,OAAO,SAAS,OAAO,MAAM,SAAS;AAAA,IAAkB,WAAW,QAAQ,OAAO;AAAA,EACtF,IAAI,OAAO,SAAS,OAAO,MAAM,SAAS;AAAA,IAAkB,WAAW,QAAQ,OAAO;AAAA,EACtF,IAAI,OAAO,OAAO,QAAQ,OAAO,MAAM;AAAA,IAAmB,WAAW,MAAM,OAAO,OAAO,GAAG;AAAA,EAC5F,IAAI,OAAO,OAAO,QAAQ,OAAO,MAAM;AAAA,IAAmB,WAAW,MAAM,OAAO,OAAO,GAAG;AAAA,EAC5F,IAAI,OAAO,QAAQ,QAAQ,OAAO,OAAO;AAAA,IAAgB,WAAW,OAAO,OAAO,OAAO,IAAI;AAAA,EAC7F,IAAI,OAAO;AAAA,IAAK,OAAO,OAAO,YAAY,OAAO,GAAG;AAAA,EACpD,MAAM,aAAa,OAAO,QAAQ,UAAU;AAAA,EAC5C,IAAI,WAAW,WAAW;AAAA,IAAG,OAAO;AAAA,EACpC,MAAM,UAAU,QAAQ,OAAO,WAAW,IAAI,EAAE,KAAK,WAAW;AAAA,IAC/D,MAAM,SAAS,GAAG,OAAO;AAAA;AAAA,IACzB,MAAM,aAAa,QAAQ,OAAO,MAAM,EAAE,SAAS;AAAA,IACnD,IAAI,cAAc,aAAa,OAAO,UAAU,EAAE;AAAA,IAClD,cAAc,aAAa,OAAO,WAAW,EAAE;AAAA,IAC/C,OAAO,GAAG,eAAe;AAAA,GACzB,EAAE,KAAK,EAAE,CAAC;AAAA,EACX,OAAO;AAAA,IACN,WAAW,gBAAgB;AAAA,MAC1B,MAAM,QAAQ,OAAO,QAAQ,OAAO,aAAa,OAAO,MAAM,EAAE,MAAM,GAAG,GAAG,CAAC;AAAA,MAC7E,MAAM,QAAQ;AAAA,MACd,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO,OAAO;AAAA,MACd,OAAO,OAAO;AAAA,MACd,OAAO,OAAO;AAAA,MACd,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO;AAAA,IACb,CAAC;AAAA,IACD;AAAA,EACD;AAAA;AAED,SAAS,cAAc,CAAC,MAAM;AAAA,EAC7B,IAAI,KAAK,UAAU;AAAA,IAAiB,OAAO;AAAA,EAC3C,MAAM,gBAAgB,KAAK,SAAS,kBAAkB;AAAA,EACtD,MAAM,aAAa,KAAK,YAAY,KAAK,iBAAiB;AAAA,EAC1D,IAAI,aAAa,KAAK,cAAc;AAAA,IAAe,OAAO;AAAA,MACzD,QAAQ,KAAK,MAAM,GAAG,UAAU;AAAA,MAChC,MAAM,KAAK,MAAM,aAAa,CAAC;AAAA,IAChC;AAAA,EACA,OAAO;AAAA;AAKR,SAAS,eAAe,CAAC,QAAQ;AAAA,EAChC,MAAM,OAAO,IAAI,WAAW,UAAU;AAAA,EACtC,MAAM,OAAO,WAAW,MAAM,IAAI,IAAI,OAAO,QAAQ;AAAA,EACrD,IAAI,OAAO,OAAO;AAAA,EAClB,IAAI,SAAS;AAAA,EACb,IAAI,CAAC,OAAO,KAAK,MAAM;AAAA,IACtB,MAAM,QAAQ,eAAe,IAAI;AAAA,IACjC,IAAI,OAAO;AAAA,MACV,OAAO,MAAM;AAAA,MACb,SAAS,MAAM;AAAA,IAChB;AAAA,EACD;AAAA,EACA,YAAY,MAAM,mBAAmB,iBAAiB,IAAI;AAAA,EAC1D,WAAW,MAAM,mBAAmB,iBAAiB,OAAO,SAAS,OAAO,SAAS,YAAY,mBAAmB,kBAAkB;AAAA,EACtI,WAAW,MAAM,kBAAkB,gBAAgB,OAAO,OAAO,CAAC;AAAA,EAClE,WAAW,MAAM,kBAAkB,gBAAgB,OAAO,OAAO,CAAC;AAAA,EAClE,WAAW,MAAM,mBAAmB,iBAAiB,IAAI;AAAA,EACzD,WAAW,MAAM,oBAAoB,kBAAkB,KAAK,OAAO,OAAO,OAAO,QAAQ,KAAK,KAAK,IAAI,KAAK,IAAG,CAAC;AAAA,EAChH,YAAY,MAAM,uBAAuB,qBAAqB,SAAS,OAAO,QAAQ,KAAK;AAAA,EAC3F,YAAY,MAAM,uBAAuB,qBAAqB,OAAO,QAAQ;AAAA,EAC7E,YAAY,MAAM,oBAAoB,kBAAkB,WAAS;AAAA,EACjE,YAAY,MAAM,sBAAsB,oBAAoB,aAAa;AAAA,EACzE,YAAY,MAAM,oBAAoB,kBAAkB,OAAO,KAAK;AAAA,EACpE,YAAY,MAAM,oBAAoB,kBAAkB,OAAO,KAAK;AAAA,EACpE,YAAY,MAAM,qBAAqB,mBAAmB,MAAM;AAAA,EAChE,cAAc,IAAI;AAAA,EAClB,OAAO;AAAA;AAER,SAAS,gBAAgB,CAAC,OAAO,QAAQ;AAAA,EACxC,IAAI,UAAU,CAAC,iBAAiB,KAAK;AAAA,IAAG,MAAM,IAAI,MAAM,8BAA8B;AAAA,EACtF,MAAM,WAAW,WAAW,OAAO,uBAAuB,mBAAmB;AAAA,EAC7E,MAAM,SAAS;AAAA,IACd,MAAM,WAAW,OAAO,mBAAmB,eAAe;AAAA,IAC1D,MAAM,UAAU,OAAO,mBAAmB,eAAe;AAAA,IACzD,KAAK,YAAY,OAAO,kBAAkB,cAAc;AAAA,IACxD,KAAK,YAAY,OAAO,kBAAkB,cAAc;AAAA,IACxD,MAAM,YAAY,OAAO,mBAAmB,eAAe;AAAA,IAC3D,uBAAuB,IAAI,KAAK,YAAY,OAAO,oBAAoB,gBAAgB,IAAI,IAAG;AAAA,IAC9F,MAAM,SAAS,aAAa;AAAA,IAC5B,UAAU,WAAW,OAAO,uBAAuB,mBAAmB;AAAA,EACvE;AAAA,EACA,MAAM,QAAQ,WAAW,OAAO,oBAAoB,gBAAgB;AAAA,EACpE,IAAI,MAAM,KAAK,MAAM,SAAS;AAAA,IAC7B,OAAO,QAAQ,WAAW,OAAO,oBAAoB,gBAAgB;AAAA,IACrE,OAAO,QAAQ,WAAW,OAAO,oBAAoB,gBAAgB;AAAA,EACtE;AAAA,EACA,IAAI,UAAU;AAAA,IAAS,OAAO,SAAS,WAAW,OAAO,qBAAqB,iBAAiB;AAAA,EAC/F,OAAO;AAAA;AAER,IAAM,cAAc;AAAA,EACnB,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;AAAA,EACvB,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC;AAAA,EAC/B,MAAM,CAAC,QAAQ,CAAC,MAAM,SAAS,GAAG,EAAE,CAAC;AAAA,EACrC,OAAO,CAAC,SAAS,UAAU;AAAA,EAC3B,KAAK,CAAC,OAAO,CAAC,MAAM,SAAS,GAAG,EAAE,CAAC;AAAA,EACnC,KAAK,CAAC,OAAO,CAAC,MAAM,SAAS,GAAG,EAAE,CAAC;AAAA,EACnC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC;AAAA,EACzB,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC;AAC1B;AACA,SAAS,QAAQ,CAAC,QAAQ;AAAA,EACzB,MAAM,YAAY,IAAI,YAAY,OAAO;AAAA,EACzC,MAAM,YAAY,CAAC;AAAA,EACnB,MAAM,MAAM,CAAC;AAAA,EACb,IAAI,SAAS;AAAA,EACb,OAAO,SAAS,OAAO,QAAQ;AAAA,IAC9B,MAAM,aAAa,OAAO,QAAQ,IAAI,MAAM;AAAA,IAC5C,IAAI,eAAe;AAAA,MAAI;AAAA,IACvB,MAAM,SAAS,SAAS,UAAU,OAAO,OAAO,SAAS,QAAQ,UAAU,CAAC,GAAG,EAAE;AAAA,IACjF,IAAI,OAAO,MAAM,MAAM,KAAK,WAAW;AAAA,MAAG;AAAA,IAC1C,MAAM,YAAY,SAAS;AAAA,IAC3B,OAAO,KAAK,SAAS,UAAU,OAAO,OAAO,SAAS,aAAa,GAAG,YAAY,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC;AAAA,IAClG,IAAI,OAAO,UAAe,WAAG;AAAA,MAC5B,IAAI,OAAO;AAAA,MACX,MAAM,UAAU,YAAY;AAAA,MAC5B,IAAI,SAAS;AAAA,QACZ,OAAO,WAAW,UAAU;AAAA,QAC5B,MAAM,cAAc,OAAO,KAAK;AAAA,QAChC,IAAI,OAAO,gBAAgB,YAAY,CAAC,OAAO,MAAM,WAAW;AAAA,UAAG,UAAU,aAAa;AAAA,MAC3F;AAAA,IACD;AAAA,IACA,SAAS;AAAA,EACV;AAAA,EACA,IAAI,OAAO,KAAK,GAAG,EAAE,SAAS;AAAA,IAAG,UAAU,MAAM;AAAA,EACjD,OAAO;AAAA;AAER,SAAS,cAAc,CAAC,QAAQ,WAAW;AAAA,EAC1C,IAAI,UAAU,SAAc;AAAA,IAAG,OAAO,OAAO,UAAU;AAAA,EACvD,IAAI,UAAU,aAAkB;AAAA,IAAG,OAAO,WAAW,UAAU;AAAA,EAC/D,IAAI,UAAU,SAAc;AAAA,IAAG,OAAO,OAAO,UAAU;AAAA,EACvD,IAAI,UAAU,UAAe;AAAA,IAAG,OAAO,wBAAwB,IAAI,KAAK,UAAU,QAAQ,IAAG;AAAA,EAC7F,IAAI,UAAU,QAAa;AAAA,IAAG,OAAO,MAAM,UAAU;AAAA,EACrD,IAAI,UAAU,QAAa;AAAA,IAAG,OAAO,MAAM,UAAU;AAAA,EACrD,IAAI,UAAU,UAAe;AAAA,IAAG,OAAO,QAAQ,UAAU;AAAA,EACzD,IAAI,UAAU,UAAe;AAAA,IAAG,OAAO,QAAQ,UAAU;AAAA,EACzD,IAAI,UAAU;AAAA,IAAK,OAAO,MAAM,OAAO,OAAO,CAAC,GAAG,OAAO,OAAO,CAAC,GAAG,UAAU,GAAG;AAAA;AAElF,SAAS,aAAa,CAAC,MAAM;AAAA,EAC5B,QAAQ;AAAA,SACF;AAAA,SACA;AAAA,MAAc,OAAO;AAAA,SACrB;AAAA,MAAiB,OAAO,CAAC,UAAU,EAAE,MAAM,WAAW,MAAM,GAAG,KAAK,MAAM,EAAE;AAAA,SAC5E;AAAA,MAAsB,OAAO,CAAC,UAAU,EAAE,UAAU,WAAW,MAAM,GAAG,KAAK,MAAM,EAAE;AAAA;AAAA,MACjF;AAAA;AAAA;AAGX,SAAS,eAAe,CAAC,QAAQ;AAAA,EAChC,MAAM,OAAO,gBAAgB,MAAM;AAAA,EACnC,MAAM,MAAM,YAAY,MAAM;AAAA,EAC9B,IAAI,CAAC;AAAA,IAAK,OAAO,CAAC,IAAI;AAAA,EACtB,MAAM,aAAa,CAAC,IAAI,QAAQ,SAAS;AAAA,EACzC,MAAM,gBAAgB,aAAa,IAAI,CAAC,WAAW,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC;AAAA,EAC/E,OAAO;AAAA,IACN,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,GAAG;AAAA,IACH;AAAA,EACD;AAAA;AAKD,IAAM,aAAa,IAAI,WAAW,aAAa,CAAC;AAChD,SAAS,eAAe,CAAC,QAAQ,SAAS,YAAY;AAAA,EACrD,IAAI,gBAAgB;AAAA,EACpB,IAAI,eAAe;AAAA,EACnB,IAAI,YAAY;AAAA,EAChB,OAAO;AAAA,IACN,GAAG,CAAC,QAAQ;AAAA,MACX,IAAI,WAAW;AAAA,QACd,MAAM,wBAAwB,IAAI,MAAM,oCAAoC;AAAA,QAC5E,QAAQ,KAAK;AAAA,QACb,MAAM;AAAA,MACP;AAAA,MACA,IAAI,kBAAkB,MAAM;AAAA,QAC3B,MAAM,wBAAwB,IAAI,MAAM,0DAA0D;AAAA,QAClG,QAAQ,KAAK;AAAA,QACb,MAAM;AAAA,MACP;AAAA,MACA,IAAI;AAAA,QACH,MAAM,OAAO,WAAW,MAAM,IAAI,IAAI,OAAO,QAAQ;AAAA,QACrD,MAAM,eAAe,gBAAgB;AAAA,aACjC;AAAA,UACH;AAAA,QACD,CAAC;AAAA,QACD,WAAW,SAAS;AAAA,UAAc,OAAO,KAAK;AAAA,QAC9C,gBAAgB;AAAA,aACZ;AAAA,UACH;AAAA,QACD;AAAA,QACA,eAAe;AAAA,QACd,OAAO,OAAO;AAAA,QACf,QAAQ,KAAK;AAAA;AAAA;AAAA,IAGf,KAAK,CAAC,OAAO;AAAA,MACZ,IAAI,CAAC,eAAe;AAAA,QACnB,MAAM,wBAAwB,IAAI,MAAM,sBAAsB;AAAA,QAC9D,QAAQ,KAAK;AAAA,QACb,MAAM;AAAA,MACP;AAAA,MACA,IAAI,WAAW;AAAA,QACd,MAAM,wBAAwB,IAAI,MAAM,mCAAmC;AAAA,QAC3E,QAAQ,KAAK;AAAA,QACb,MAAM;AAAA,MACP;AAAA,MACA,MAAM,WAAW,eAAe,MAAM;AAAA,MACtC,IAAI,WAAW,cAAc,MAAM;AAAA,QAClC,MAAM,wBAAwB,IAAI,MAAM,IAAI,cAAc,+BAA+B,cAAc,aAAa;AAAA,QACpH,QAAQ,KAAK;AAAA,QACb,MAAM;AAAA,MACP;AAAA,MACA,IAAI;AAAA,QACH,eAAe;AAAA,QACf,OAAO,KAAK;AAAA,QACX,OAAO,OAAO;AAAA,QACf,QAAQ,KAAK;AAAA;AAAA;AAAA,IAGf,QAAQ,GAAG;AAAA,MACV,IAAI,CAAC,eAAe;AAAA,QACnB,MAAM,wBAAwB,IAAI,MAAM,yBAAyB;AAAA,QACjE,QAAQ,KAAK;AAAA,QACb,MAAM;AAAA,MACP;AAAA,MACA,IAAI,WAAW;AAAA,QACd,MAAM,wBAAwB,IAAI,MAAM,kCAAkC;AAAA,QAC1E,QAAQ,KAAK;AAAA,QACb,MAAM;AAAA,MACP;AAAA,MACA,IAAI;AAAA,QACH,IAAI,iBAAiB,cAAc,MAAM;AAAA,UACxC,MAAM,wBAAwB,IAAI,MAAM,sBAAsB,cAAc,QAAQ;AAAA,UACpF,QAAQ,KAAK;AAAA,UACb,MAAM;AAAA,QACP;AAAA,QACA,MAAM,cAAc,CAAC,cAAc,OAAO;AAAA,QAC1C,IAAI,cAAc;AAAA,UAAG,OAAO,IAAI,WAAW,WAAW,CAAC;AAAA,QACvD,gBAAgB;AAAA,QAChB,eAAe;AAAA,QACd,OAAO,OAAO;AAAA,QACf,QAAQ,KAAK;AAAA,QACb,MAAM;AAAA;AAAA;AAAA,IAGR,QAAQ,GAAG;AAAA,MACV,IAAI,WAAW;AAAA,QACd,MAAM,wBAAwB,IAAI,MAAM,oCAAoC;AAAA,QAC5E,QAAQ,KAAK;AAAA,QACb,MAAM;AAAA,MACP;AAAA,MACA,IAAI,kBAAkB,MAAM;AAAA,QAC3B,MAAM,wBAAwB,IAAI,MAAM,gDAAgD;AAAA,QACxF,QAAQ,KAAK;AAAA,QACb,MAAM;AAAA,MACP;AAAA,MACA,IAAI;AAAA,QACH,OAAO,UAAU;AAAA,QACjB,YAAY;AAAA,QACZ,IAAI;AAAA,UAAY,WAAW;AAAA,QAC1B,OAAO,OAAO;AAAA,QACf,QAAQ,KAAK;AAAA;AAAA;AAAA,EAGhB;AAAA;AAKD,IAAM,mBAAmB;AACzB,SAAS,gBAAgB,GAAG;AAAA,EAC3B,IAAI,SAAS,IAAI,MAAM,gBAAgB;AAAA,EACvC,IAAI,eAAe,OAAO,SAAS;AAAA,EACnC,IAAI,OAAO;AAAA,EACX,IAAI,OAAO;AAAA,EACX,IAAI,iBAAiB;AAAA,EACrB,MAAM,kBAAkB,CAAC,UAAU;AAAA,IAClC,MAAM,QAAQ,OAAO;AAAA,IACrB,IAAI,UAAU,MAAM,QAAQ;AAAA,MAC3B,OAAO,QAAQ;AAAA,MACf,OAAO,OAAO,IAAI;AAAA,IACnB,EAAO;AAAA,aAAO,QAAQ,MAAM,SAAS,KAAK;AAAA,IAC1C,kBAAkB;AAAA,IAClB,IAAI,mBAAmB,KAAK,OAAO,SAAS,kBAAkB;AAAA,MAC7D,SAAS,IAAI,MAAM,gBAAgB;AAAA,MACnC,eAAe,mBAAmB;AAAA,MAClC,OAAO;AAAA,MACP,OAAO;AAAA,IACR;AAAA;AAAA,EAED,SAAS,IAAI,CAAC,OAAO,UAAU;AAAA,IAC9B,IAAI,UAAU;AAAA,MACb,IAAI,MAAM;AAAA,MACV,IAAI,cAAc,KAAK,IAAI,OAAO,cAAc;AAAA,MAChD,OAAO,cAAc,GAAG;AAAA,QACvB,MAAM,QAAQ,OAAO;AAAA,QACrB,MAAM,SAAS,KAAK,IAAI,aAAa,MAAM,MAAM;AAAA,QACjD,MAAM,UAAU,WAAW,MAAM,SAAS,QAAQ,MAAM,SAAS,GAAG,MAAM;AAAA,QAC1E,gBAAgB,MAAM;AAAA,QACtB,eAAe;AAAA,QACf,OAAO;AAAA,QACP,IAAI,CAAC,SAAS,OAAO;AAAA,UAAG;AAAA,MACzB;AAAA,MACA,OAAO;AAAA,IACR;AAAA,IACA,IAAI,iBAAiB;AAAA,MAAO,OAAO;AAAA,IACnC,IAAI,UAAU;AAAA,MAAG,OAAO;AAAA,IACxB,MAAM,aAAa,OAAO;AAAA,IAC1B,IAAI,WAAW,UAAU,OAAO;AAAA,MAC/B,MAAM,OAAO,WAAW,WAAW,QAAQ,aAAa,WAAW,SAAS,GAAG,KAAK;AAAA,MACpF,gBAAgB,KAAK;AAAA,MACrB,OAAO;AAAA,IACR;AAAA,IACA,MAAM,SAAS,IAAI,WAAW,KAAK;AAAA,IACnC,IAAI,SAAS;AAAA,IACb,IAAI,YAAY;AAAA,IAChB,OAAO,YAAY,GAAG;AAAA,MACrB,MAAM,QAAQ,OAAO;AAAA,MACrB,MAAM,SAAS,KAAK,IAAI,WAAW,MAAM,MAAM;AAAA,MAC/C,OAAO,IAAI,WAAW,MAAM,SAAS,QAAQ,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM;AAAA,MAC9E,UAAU;AAAA,MACV,aAAa;AAAA,MACb,gBAAgB,MAAM;AAAA,IACvB;AAAA,IACA,OAAO;AAAA;AAAA,EAER,OAAO;AAAA,IACN,MAAM,CAAC,UAAU;AAAA,MAChB,IAAI,MAAM,WAAW;AAAA,QAAG;AAAA,MACxB,IAAI,WAAW,OAAO,IAAI;AAAA,MAC1B,IAAI,aAAa,MAAM;AAAA,QACtB,MAAM,SAAS,OAAO;AAAA,QACtB,MAAM,SAAS,SAAS;AAAA,QACxB,MAAM,YAAY,IAAI,MAAM,MAAM;AAAA,QAClC,MAAM,QAAQ,OAAO,OAAO,SAAS,SAAS;AAAA,QAC9C,IAAI,OAAO;AAAA,UAAM,SAAS,IAAI,EAAG,IAAI,OAAO;AAAA,YAAK,UAAU,KAAK,OAAO,OAAO;AAAA,QACzE,SAAI,QAAQ,GAAG;AAAA,UACnB,MAAM,YAAY,SAAS;AAAA,UAC3B,SAAS,IAAI,EAAG,IAAI,WAAW;AAAA,YAAK,UAAU,KAAK,OAAO,OAAO;AAAA,UACjE,SAAS,IAAI,EAAG,IAAI,MAAM;AAAA,YAAK,UAAU,YAAY,KAAK,OAAO;AAAA,QAClE;AAAA,QACA,SAAS;AAAA,QACT,eAAe,SAAS;AAAA,QACxB,OAAO;AAAA,QACP,OAAO;AAAA,QACP,WAAW,OAAO,IAAI;AAAA,MACvB;AAAA,MACA,OAAO,QAAQ;AAAA,MACf,OAAO;AAAA,MACP,kBAAkB,MAAM;AAAA;AAAA,IAEzB,WAAW,MAAM;AAAA,IACjB,MAAM,CAAC,UAAU;AAAA,MAChB,IAAI,iBAAiB;AAAA,QAAO,OAAO;AAAA,MACnC,IAAI,UAAU;AAAA,QAAG,OAAO;AAAA,MACxB,MAAM,aAAa,OAAO;AAAA,MAC1B,IAAI,WAAW,UAAU;AAAA,QAAO,OAAO,WAAW,WAAW,QAAQ,aAAa,WAAW,SAAS,GAAG,KAAK;AAAA,MAC9G,MAAM,SAAS,IAAI,WAAW,KAAK;AAAA,MACnC,IAAI,SAAS;AAAA,MACb,IAAI,QAAQ;AAAA,MACZ,OAAO,SAAS,OAAO;AAAA,QACtB,MAAM,QAAQ,OAAO;AAAA,QACrB,MAAM,SAAS,KAAK,IAAI,QAAQ,QAAQ,MAAM,MAAM;AAAA,QACpD,IAAI,WAAW,MAAM;AAAA,UAAQ,OAAO,IAAI,OAAO,MAAM;AAAA,QAChD;AAAA,iBAAO,IAAI,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM;AAAA,QACjD,UAAU;AAAA,QACV,QAAQ,QAAQ,IAAI;AAAA,MACrB;AAAA,MACA,OAAO;AAAA;AAAA,IAER,SAAS,CAAC,UAAU;AAAA,MACnB,IAAI,QAAQ;AAAA,QAAgB,MAAM,IAAI,MAAM,yBAAyB;AAAA,MACrE,IAAI,UAAU;AAAA,QAAG;AAAA,MACjB,IAAI,YAAY;AAAA,MAChB,OAAO,YAAY,GAAG;AAAA,QACrB,MAAM,QAAQ,OAAO;AAAA,QACrB,MAAM,YAAY,KAAK,IAAI,WAAW,MAAM,MAAM;AAAA,QAClD,gBAAgB,SAAS;AAAA,QACzB,aAAa;AAAA,MACd;AAAA;AAAA,IAED;AAAA,EACD;AAAA;AAKD,IAAM,eAAe;AACrB,IAAM,aAAa;AACnB,IAAM,8BAA8B,IAAI,MAAM,2BAA2B;AACzE,SAAS,cAAc,CAAC,UAAU,CAAC,GAAG;AAAA,EACrC,MAAM,SAAS,QAAQ,UAAU;AAAA,EACjC,QAAQ,WAAW,MAAM,MAAM,SAAS,SAAS,iBAAiB;AAAA,EAClE,IAAI,QAAQ;AAAA,EACZ,IAAI,QAAQ;AAAA,EACZ,IAAI,OAAO;AAAA,EACX,IAAI,MAAM;AAAA,EACV,IAAI,eAAe;AAAA,EACnB,MAAM,aAAa,CAAC;AAAA,EACpB,IAAI,qBAAqB,CAAC;AAAA,EAC1B,MAAM,WAAW;AAAA,IAChB,eAAe,MAAM,UAAU;AAAA,IAC/B,gBAAgB,MAAM,CAAC,gBAAgB,aAAa,cAAc;AAAA,IAClE,KAAK,CAAC,OAAO;AAAA,MACZ,IAAI;AAAA,QAAO,MAAM,IAAI,MAAM,wBAAwB;AAAA,MACnD,KAAK,KAAK;AAAA;AAAA,IAEX,GAAG,GAAG;AAAA,MACL,QAAQ;AAAA;AAAA,IAET,UAAU,GAAG;AAAA,MACZ,IAAI,UAAU;AAAA,QAAc,MAAM,IAAI,MAAM,6CAA6C;AAAA,MACzF,IAAI;AAAA,QAAM;AAAA,MACV,OAAO,CAAC,MAAM;AAAA,QACb,IAAI,UAAU,IAAI,YAAY;AAAA,UAC7B,IAAI,OAAO;AAAA,YACV,IAAI,UAAU,IAAI,KAAK;AAAA,cAAQ,MAAM;AAAA,YACrC,OAAO;AAAA,YACP;AAAA,UACD;AAAA,UACA,OAAO;AAAA,QACR;AAAA,QACA,MAAM,cAAc,KAAK,UAAU;AAAA,QACnC,IAAI,YAAY,WAAW,GAAG;AAAA,UAC7B,IAAI,UAAU,IAAI,aAAa,GAAG;AAAA,YACjC,IAAI,OAAO;AAAA,cACV,IAAI;AAAA,gBAAQ,MAAM;AAAA,cAClB,OAAO;AAAA,cACP;AAAA,YACD;AAAA,YACA,OAAO;AAAA,UACR;AAAA,UACA,IAAI,YAAY,KAAK,aAAa,CAAC,EAAE,SAAS,UAAU,CAAC,GAAG;AAAA,YAC3D,QAAQ,aAAa,CAAC;AAAA,YACtB,OAAO;AAAA,YACP,MAAM;AAAA,YACN;AAAA,UACD;AAAA,UACA,IAAI;AAAA,YAAQ,MAAM,IAAI,MAAM,qBAAqB;AAAA,UACjD,QAAQ,UAAU;AAAA,UAClB;AAAA,QACD;AAAA,QACA,IAAI;AAAA,QACJ,IAAI;AAAA,UACH,iBAAiB,iBAAiB,aAAa,MAAM;AAAA,UACpD,OAAO,KAAK;AAAA,UACb,IAAI;AAAA,YAAQ,MAAM;AAAA,UAClB,QAAQ,UAAU;AAAA,UAClB;AAAA;AAAA,QAED,MAAM,aAAa,cAAc,eAAe,IAAI;AAAA,QACpD,IAAI,YAAY;AAAA,UACf,MAAM,aAAa,eAAe,OAAO,kBAAkB,CAAC;AAAA,UAC5D,IAAI,UAAU,IAAI,aAAa,YAAY;AAAA,YAC1C,IAAI,SAAS;AAAA,cAAQ,MAAM;AAAA,YAC3B,OAAO;AAAA,UACR;AAAA,UACA,QAAQ,UAAU;AAAA,UAClB,MAAM,YAAY,WAAW,KAAK,UAAU,EAAE,SAAS,GAAG,eAAe,IAAI,CAAC;AAAA,UAC9E,MAAM,SAAS,eAAe,SAAS,sBAAsB,aAAa;AAAA,UAC1E,WAAW,OAAO;AAAA,YAAW,OAAO,OAAO,UAAU;AAAA,UACrD;AAAA,QACD;AAAA,QACA,QAAQ,UAAU;AAAA,QAClB,MAAM,SAAS;AAAA,QACf,IAAI,eAAe;AAAA,UAAQ,OAAO,OAAO,GAAG,eAAe,UAAU,OAAO;AAAA,QAC5E,eAAe,QAAQ,UAAU;AAAA,QACjC,eAAe,QAAQ,kBAAkB;AAAA,QACzC,qBAAqB,CAAC;AAAA,QACtB,eAAe;AAAA,UACd;AAAA,UACA,WAAW,OAAO;AAAA,UAClB,SAAS,CAAC,OAAO,OAAO;AAAA,QACzB;AAAA,QACA,QAAQ;AAAA,QACR,OAAO;AAAA,MACR;AAAA;AAAA,IAED,UAAU,CAAC,UAAU;AAAA,MACpB,IAAI,UAAU,cAAc,CAAC,gBAAgB,aAAa,cAAc;AAAA,QAAG,OAAO;AAAA,MAClF,MAAM,cAAc,KAAK,IAAI,aAAa,WAAW,UAAU,CAAC;AAAA,MAChE,IAAI,gBAAgB;AAAA,QAAG,OAAO;AAAA,MAC9B,MAAM,MAAM,KAAK,aAAa,QAAQ;AAAA,MACtC,aAAa,aAAa;AAAA,MAC1B,OAAO;AAAA;AAAA,IAER,WAAW,GAAG;AAAA,MACb,IAAI,UAAU,cAAc,CAAC;AAAA,QAAc,OAAO;AAAA,MAClD,IAAI,aAAa,YAAY;AAAA,QAAG,MAAM,IAAI,MAAM,yBAAyB;AAAA,MACzE,IAAI,UAAU,IAAI,aAAa;AAAA,QAAS,OAAO;AAAA,MAC/C,QAAQ,aAAa,OAAO;AAAA,MAC5B,eAAe;AAAA,MACf,QAAQ;AAAA,MACR,OAAO;AAAA;AAAA,IAER,SAAS,GAAG;AAAA,MACX,IAAI,UAAU,cAAc,CAAC;AAAA,QAAc,OAAO;AAAA,MAClD,MAAM,YAAY,KAAK,IAAI,aAAa,WAAW,UAAU,CAAC;AAAA,MAC9D,IAAI,YAAY,GAAG;AAAA,QAClB,QAAQ,SAAS;AAAA,QACjB,aAAa,aAAa;AAAA,MAC3B;AAAA,MACA,IAAI,aAAa,YAAY;AAAA,QAAG,OAAO;AAAA,MACvC,OAAO,SAAS,YAAY;AAAA;AAAA,IAE7B,WAAW,GAAG;AAAA,MACb,IAAI,QAAQ;AAAA,QACX,IAAI,CAAC;AAAA,UAAK,MAAM;AAAA,QAChB,IAAI,UAAU,IAAI,GAAG;AAAA,UACpB,IAAI,KAAK,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,SAAS,CAAC;AAAA,YAAG,MAAM,IAAI,MAAM,cAAc;AAAA,QACjF;AAAA,MACD;AAAA;AAAA,EAEF;AAAA,EACA,OAAO;AAAA;AAER,SAAS,WAAW,CAAC,OAAO;AAAA,EAC3B,IAAI,MAAM,aAAa,MAAM,GAAG;AAAA,IAC/B,MAAM,OAAO,IAAI,eAAe,MAAM,QAAQ,MAAM,YAAY,MAAM,SAAS,CAAC;AAAA,IAChF,SAAS,IAAI,EAAG,IAAI,KAAK,QAAQ;AAAA,MAAK,IAAI,KAAK,OAAO;AAAA,QAAI,OAAO;AAAA,IACjE,OAAO;AAAA,EACR;AAAA,EACA,SAAS,IAAI,EAAG,IAAI,MAAM,QAAQ;AAAA,IAAK,IAAI,MAAM,OAAO;AAAA,MAAG,OAAO;AAAA,EAClE,OAAO;AAAA;;;AC9qBR,SAAS,gBAAe,GAAG;AAAA,EAC1B,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,OAAO;AAAA,IACN,UAAU,IAAI,eAAe,EAAE,KAAK,CAAC,YAAY;AAAA,MAChD,mBAAmB;AAAA,MACnB,SAAS,gBAAkB,WAAW,QAAQ,KAAK,UAAU,GAAG,WAAW,MAAM,KAAK,UAAU,GAAG,WAAW,MAAM,KAAK,UAAU,CAAC;AAAA,MACnI,CAAC;AAAA,IACH,YAAY;AAAA,MACX,GAAG,CAAC,QAAQ;AAAA,QACX,MAAM,WAAW,WAAW,MAAM;AAAA,QAClC,MAAM,IAAI,KAAK,OAAO;AAAA,QACtB,IAAI;AAAA,UAAU,EAAE,OAAO;AAAA,QACvB,OAAO,IAAI,CAAC;AAAA,QACZ,IAAI;AAAA,UAAU,OAAO,SAAS;AAAA,QAC9B,OAAO,IAAI,eAAe;AAAA,UACzB,KAAK,CAAC,OAAO;AAAA,YACZ,OAAO,MAAM,KAAK;AAAA;AAAA,UAEnB,KAAK,GAAG;AAAA,YACP,IAAI,CAAC;AAAA,cAAU,OAAO,SAAS;AAAA;AAAA,UAEhC,KAAK,CAAC,QAAQ;AAAA,YACb,iBAAiB,MAAM,MAAM;AAAA;AAAA,QAE/B,CAAC;AAAA;AAAA,MAEF,QAAQ,GAAG;AAAA,QACV,OAAO,SAAS;AAAA;AAAA,MAEjB,KAAK,CAAC,KAAK;AAAA,QACV,iBAAiB,MAAM,GAAG;AAAA;AAAA,IAE5B;AAAA,EACD;AAAA;AAKD,eAAe,cAAc,CAAC,QAAQ;AAAA,EACrC,MAAM,SAAS,CAAC;AAAA,EAChB,MAAM,SAAS,OAAO,UAAU;AAAA,EAChC,IAAI,cAAc;AAAA,EAClB,IAAI;AAAA,IACH,OAAO,MAAM;AAAA,MACZ,QAAQ,MAAM,UAAU,MAAM,OAAO,KAAK;AAAA,MAC1C,IAAI;AAAA,QAAM;AAAA,MACV,OAAO,KAAK,KAAK;AAAA,MACjB,eAAe,MAAM;AAAA,IACtB;AAAA,IACA,MAAM,SAAS,IAAI,WAAW,WAAW;AAAA,IACzC,IAAI,SAAS;AAAA,IACb,WAAW,SAAS,QAAQ;AAAA,MAC3B,OAAO,IAAI,OAAO,MAAM;AAAA,MACxB,UAAU,MAAM;AAAA,IACjB;AAAA,IACA,OAAO;AAAA,YACN;AAAA,IACD,OAAO,YAAY;AAAA;AAAA;AAGrB,IAAM,QAAQ,CAAC,WAAW,OAAO,OAAO,IAAI,cAAgB;AAI5D,SAAS,gBAAgB,CAAC,UAAU,CAAC,GAAG;AAAA,EACvC,MAAM,WAAW,eAAe,OAAO;AAAA,EACvC,IAAI,iBAAiB;AAAA,EACrB,IAAI,UAAU;AAAA,EACd,MAAM,OAAO,CAAC,eAAe;AAAA,IAC5B,IAAI;AAAA,MAAS;AAAA,IACb,UAAU;AAAA,IACV,IAAI;AAAA,MACH,OAAO;AAAA,QAAM,IAAI,SAAS,cAAc,GAAG;AAAA,UAC1C,IAAI,gBAAgB;AAAA,YACnB,IAAI,SAAS,WAAW,CAAC,OAAO,eAAe,QAAQ,CAAC,GAAG,KAAK,MAAM,KAAK,CAAC,SAAS,eAAe;AAAA,cAAG;AAAA,UACxG,EAAO,SAAI,CAAC,SAAS,UAAU;AAAA,YAAG;AAAA,UAClC,IAAI,SAAS,eAAe,GAAG;AAAA,YAC9B,IAAI;AAAA,cACH,gBAAgB,MAAM;AAAA,cACrB,MAAM;AAAA,YACR,iBAAiB;AAAA,YACjB,IAAI,CAAC,SAAS,YAAY;AAAA,cAAG;AAAA,UAC9B;AAAA,QACD,EAAO;AAAA,UACN,MAAM,SAAS,SAAS,WAAW;AAAA,UACnC,IAAI,WAAW,QAAQ,WAAgB;AAAA,YAAG;AAAA,UAC1C,WAAW,QAAQ;AAAA,YAClB;AAAA,YACA,MAAM,IAAI,eAAe;AAAA,cACxB,KAAK,CAAC,GAAG;AAAA,gBACR,IAAI,OAAO,SAAS;AAAA,kBAAG,EAAE,MAAM;AAAA,gBAC1B;AAAA,mCAAiB;AAAA;AAAA,cAEvB,MAAM,MAAM,KAAK,UAAU;AAAA,cAC3B,MAAM,GAAG;AAAA,gBACR,iBAAiB;AAAA,gBACjB,KAAK,UAAU;AAAA;AAAA,YAEjB,CAAC;AAAA,UACF,CAAC;AAAA;AAAA,MAED,OAAO,OAAO;AAAA,MACf,IAAI;AAAA,QACH,gBAAgB,MAAM,KAAK;AAAA,QAC1B,MAAM;AAAA,MACR,iBAAiB;AAAA,MACjB,MAAM;AAAA,cACL;AAAA,MACD,UAAU;AAAA;AAAA;AAAA,EAGZ,OAAO,IAAI,gBAAgB;AAAA,IAC1B,SAAS,CAAC,OAAO,YAAY;AAAA,MAC5B,IAAI;AAAA,QACH,SAAS,MAAM,KAAK;AAAA,QACpB,KAAK,UAAU;AAAA,QACd,OAAO,OAAO;AAAA,QACf,IAAI;AAAA,UACH,gBAAgB,MAAM,KAAK;AAAA,UAC1B,MAAM;AAAA,QACR,MAAM;AAAA;AAAA;AAAA,IAGR,KAAK,CAAC,YAAY;AAAA,MACjB,IAAI;AAAA,QACH,SAAS,IAAI;AAAA,QACb,KAAK,UAAU;AAAA,QACf,SAAS,YAAY;AAAA,QACrB,IAAI,SAAS,cAAc,KAAK,CAAC,SAAS,eAAe;AAAA,UAAG,IAAI;AAAA,YAC/D,gBAAgB,MAAM;AAAA,YACrB,MAAM;AAAA,QACP,OAAO,OAAO;AAAA,QACf,IAAI;AAAA,UACH,gBAAgB,MAAM,KAAK;AAAA,UAC1B,MAAM;AAAA,QACR,MAAM;AAAA;AAAA;AAAA,EAGT,GAAQ,WAAG,EAAE,eAAe,EAAE,CAAC;AAAA;AAKhC,eAAe,OAAO,CAAC,SAAS;AAAA,EAC/B,QAAQ,UAAU,eAAe,iBAAgB;AAAA,EACjD,OAAO,YAAY;AAAA,IAClB,WAAW,SAAS,SAAS;AAAA,MAC5B,MAAM,cAAc,WAAW,IAAI,MAAM,MAAM;AAAA,MAC/C,MAAM,OAAO,UAAU,QAAQ,MAAM,OAAO,MAAM;AAAA,MAClD,IAAI,CAAC,MAAM;AAAA,QACV,MAAM,YAAY,MAAM;AAAA,QACxB;AAAA,MACD;AAAA,MACA,IAAI,gBAAgB;AAAA,QAAgB,MAAM,KAAK,OAAO,WAAW;AAAA,MAC5D,SAAI,gBAAgB;AAAA,QAAM,MAAM,KAAK,OAAO,EAAE,OAAO,WAAW;AAAA,MAChE;AAAA,YAAI;AAAA,UACR,MAAM,QAAQ,MAAM,cAAc,IAAI;AAAA,UACtC,IAAI,MAAM,SAAS,GAAG;AAAA,YACrB,MAAM,SAAS,YAAY,UAAU;AAAA,YACrC,MAAM,OAAO,MAAM,KAAK;AAAA,YACxB,MAAM,OAAO,MAAM;AAAA,UACpB,EAAO;AAAA,kBAAM,YAAY,MAAM;AAAA,UAC9B,MAAM;AAAA,UACP,MAAM,IAAI,UAAU,uCAAuC,MAAM,OAAO,QAAQ;AAAA;AAAA,IAElF;AAAA,KACE,EAAE,KAAK,MAAM,WAAW,SAAS,CAAC,EAAE,MAAM,CAAC,QAAQ,WAAW,MAAM,GAAG,CAAC;AAAA,EAC3E,OAAO,IAAI,WAAW,MAAM,eAAe,QAAQ,CAAC;AAAA;AAErD,eAAe,SAAS,CAAC,SAAS,UAAU,CAAC,GAAG;AAAA,EAC/C,MAAM,eAAe,mBAAmB,iBAAiB,UAAU,IAAI,eAAe,EAAE,KAAK,CAAC,YAAY;AAAA,IACzG,WAAW,QAAQ,mBAAmB,aAAa,UAAU,IAAI,WAAW,OAAO,CAAC;AAAA,IACpF,WAAW,MAAM;AAAA,IAChB,CAAC;AAAA,EACH,MAAM,UAAU,CAAC;AAAA,EACjB,MAAM,cAAc,aAAa,YAAY,iBAAiB,OAAO,CAAC;AAAA,EACtE,iBAAiB,SAAS,aAAa;AAAA,IACtC,IAAI;AAAA,IACJ,IAAI;AAAA,MACH,kBAAkB,gBAAgB,MAAM,QAAQ,OAAO;AAAA,MACtD,OAAO,OAAO;AAAA,MACf,MAAM,MAAM,KAAK,OAAO;AAAA,MACxB,MAAM;AAAA;AAAA,IAEP,IAAI,oBAAoB,MAAM;AAAA,MAC7B,MAAM,MAAM,MAAM,IAAI;AAAA,MACtB;AAAA,IACD;AAAA,IACA,IAAI,WAAW,eAAe,GAAG;AAAA,MAChC,MAAM,MAAM,MAAM,IAAI;AAAA,MACtB,QAAQ,KAAK,EAAE,QAAQ,gBAAgB,CAAC;AAAA,IACzC,EAAO;AAAA,cAAQ,KAAK;AAAA,QACnB,QAAQ;AAAA,QACR,MAAM,MAAM,eAAe,MAAM,IAAI;AAAA,MACtC,CAAC;AAAA,EACF;AAAA,EACA,OAAO;AAAA;;;AF5MR,IAAM,YAAY,UAAU,IAAI;AAAA;AAKhC,MAAM,QAAuB;AAAA,EACV;AAAA,EAEjB,WAAW,CAAC,QAAgB;AAAA,IAC1B,KAAK,UAAU;AAAA;AAAA,MAGb,MAAM,GAA+B;AAAA,IACvC,MAAM,SAAS,KAAK;AAAA,IACpB,OAAO,IAAI,eAAe;AAAA,MACxB,KAAK,CAAC,YAAY;AAAA,QAChB,WAAW,QAAQ,IAAI,WAAW,MAAM,CAAC;AAAA,QACzC,WAAW,MAAM;AAAA;AAAA,IAErB,CAAC;AAAA;AAAA,OAGG,OAAM,GAAoB;AAAA,IAC9B,OAAO,KAAK;AAAA;AAEhB;AAQA,eAAsB,OAAO,CAAC,OAA6C;AAAA,EACzE,MAAM,UAAU,OAAO,QAAQ,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa;AAAA,IAC7D,OAAO;AAAA,MACL,QAAQ,EAAE,MAAM,MAAM,QAAQ,QAAQ,MAAM,OAAgB;AAAA,MAC5D,MAAM,IAAI,WAAW,OAAO;AAAA,IAC9B;AAAA,GACD;AAAA,EAGD,MAAM,YAAY,MAAM,QAAQ,OAAO;AAAA,EAGvC,MAAM,aAAa,MAAM,UAAU,OAAO,KAAK,SAAS,CAAC;AAAA,EAEzD,OAAO,IAAI,QAAQ,UAAU;AAAA;;AG5CxB,SAAS,MAAM,CAAC,KAAe;AAAA,EACpC,OAAO;AAAA,IACL,QAAQ,IAAI;AAAA,IACZ,MAAM,IAAI;AAAA,IACV,MAAM,IAAI;AAAA,IACV,MAAM,IAAI;AAAA,IACV,SAAS,IAAI;AAAA,EACf;AAAA;;ACLK,SAAS,QAAQ,CAAC,KAAU,KAAe;AAAA,EAChD,MAAM,MAAM,OAAO,GAAG;AAAA,EAEtB,OAAO;AAAA,IACL,SAAS;AAAA,IACT,UAAU;AAAA,IACV,SAAS;AAAA,EACX;AAAA;;ACjBF;AACA,sBAAS;AAIT,IAAM,cAAc,WAAU,MAAM;AAQpC,eAAsB,OAAO,CAAC,KAA2C;AAAA,EACvE,MAAM,SAAS,MAAM,IAAI,OAAO;AAAA,EAGhC,MAAM,YAAY,MAAM,YAAY,MAAM;AAAA,EAG1C,MAAM,UAAU,MAAM,UAAU,SAAS;AAAA,EAEzC,MAAM,QAAgC,CAAC;AAAA,EACvC,WAAW,SAAS,SAAS;AAAA,IAC3B,KAAK,MAAM,OAAO,SAAS,UAAU,MAAM,OAAO,SAAS,cAAc,MAAM,MAAM;AAAA,MACnF,MAAM,MAAM,OAAO,QAAQ,OAAO,KAAK,MAAM,IAAI;AAAA,IACnD;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;;ACnBF,SAAS,MAAM,CAAC,KAAkB;AAAA,EACvC,IAAI,SAAS,IAAI,SAAS;AAAA,EAC1B,IAAI,IAAI,MAAM;AAAA,IACZ,UAAU,IAAI,OAAO;AAAA,EACvB;AAAA,EACA,UAAU,IAAI;AAAA,EACd,UAAU,MAAM,IAAI;AAAA,EACpB,UAAU,MAAM,IAAI;AAAA,EACpB,OAAO;AAAA;;ACNF,SAAS,KAAK,CAAC,SAAsB;AAAA,EAC1C,IAAI,CAAC,WAAW,OAAO,YAAY,UAAU;AAAA,IAC3C,MAAM,IAAI,aAAa,sCAAsC,OAAO;AAAA,EACtE;AAAA,EAGA,MAAM,UAAU,QAAQ,YAAY,GAAG;AAAA,EACvC,IAAI,YAAY,IAAI;AAAA,IAClB,MAAM,IAAI,aAAa,oCAAoC,OAAO;AAAA,EACpE;AAAA,EAEA,MAAM,UAAU,QAAQ,MAAM,UAAU,CAAC;AAAA,EACzC,MAAM,gBAAgB,QAAQ,MAAM,GAAG,OAAO;AAAA,EAE9C,IAAI,CAAC,SAAS;AAAA,IACZ,MAAM,IAAI,aAAa,uBAAuB,OAAO;AAAA,EACvD;AAAA,EAGA,MAAM,WAAW,cAAc,YAAY,GAAG;AAAA,EAC9C,IAAI,aAAa,IAAI;AAAA,IACnB,MAAM,IAAI,aAAa,iCAAiC,OAAO;AAAA,EACjE;AAAA,EAEA,MAAM,OAAO,cAAc,MAAM,WAAW,CAAC;AAAA,EAC7C,MAAM,aAAa,cAAc,MAAM,GAAG,QAAQ;AAAA,EAElD,IAAI,CAAC,MAAM;AAAA,IACT,MAAM,IAAI,aAAa,oBAAoB,OAAO;AAAA,EACpD;AAAA,EAGA,MAAM,QAAQ,WAAW,MAAM,GAAG;AAAA,EAElC,IAAI,MAAM,SAAS,GAAG;AAAA,IACpB,MAAM,IAAI,aAAa,+BAA+B,OAAO;AAAA,EAC/D;AAAA,EAEA,MAAM,SAAS,MAAM;AAAA,EACrB,MAAM,OAAO,MAAM,MAAM,SAAS;AAAA,EAClC,MAAM,OAAO,MAAM,SAAS,IAAI,MAAM,MAAM,GAAG,EAAE,EAAE,KAAK,GAAG,IAAI;AAAA,EAE/D,IAAI,CAAC,QAAQ;AAAA,IACX,MAAM,IAAI,aAAa,sBAAsB,OAAO;AAAA,EACtD;AAAA,EAEA,IAAI,CAAC,MAAM;AAAA,IACT,MAAM,IAAI,aAAa,oBAAoB,OAAO;AAAA,EACpD;AAAA,EAEA,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA;;AC/DF,MAAM,SAAuB;AAAA,EACV;AAAA,EAEjB,WAAW,CAAC,QAAgB;AAAA,IAC1B,KAAK,UAAU;AAAA;AAAA,MAGb,MAAM,GAA+B;AAAA,IACvC,MAAM,SAAS,KAAK;AAAA,IACpB,OAAO,IAAI,eAAe;AAAA,MACxB,KAAK,CAAC,YAAY;AAAA,QAChB,WAAW,QAAQ,IAAI,WAAW,MAAM,CAAC;AAAA,QACzC,WAAW,MAAM;AAAA;AAAA,IAErB,CAAC;AAAA;AAAA,OAGG,OAAM,GAAoB;AAAA,IAC9B,OAAO,KAAK;AAAA;AAEhB;AAQO,SAAS,IAAI,CAAC,QAAqB;AAAA,EACxC,OAAO,IAAI,SAAQ,MAAM;AAAA;",
19
+ "debugId": "467D5F5D80C42E4F64756E2164756E21",
14
20
  "names": []
15
21
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@resourcexjs/core",
3
- "version": "2.4.1",
3
+ "version": "2.5.0",
4
4
  "description": "ResourceX Core - Resource management layer",
5
5
  "keywords": [
6
6
  "resourcex",