@better-t-stack/template-generator 3.17.1 → 3.19.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/fs-writer.d.mts +23 -4
- package/dist/fs-writer.d.mts.map +1 -1
- package/dist/fs-writer.mjs +47 -16
- package/dist/fs-writer.mjs.map +1 -1
- package/dist/index.d.mts +35 -5
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +23162 -23045
- package/dist/index.mjs.map +1 -1
- package/dist/{types-CSDwmt8U.d.mts → types-zSU486rU.d.mts} +14 -7
- package/dist/types-zSU486rU.d.mts.map +1 -0
- package/package.json +3 -2
- package/dist/types-CSDwmt8U.d.mts.map +0 -1
package/dist/fs-writer.d.mts
CHANGED
|
@@ -1,8 +1,27 @@
|
|
|
1
|
-
import { a as VirtualFileTree } from "./types-
|
|
1
|
+
import { a as VirtualFileTree } from "./types-zSU486rU.mjs";
|
|
2
|
+
import * as better_result0 from "better-result";
|
|
3
|
+
import { Result } from "better-result";
|
|
2
4
|
|
|
3
5
|
//#region src/fs-writer.d.ts
|
|
4
|
-
declare
|
|
5
|
-
|
|
6
|
+
declare const FileWriteError_base: better_result0.TaggedErrorClass<"FileWriteError", {
|
|
7
|
+
message: string;
|
|
8
|
+
path?: string;
|
|
9
|
+
cause?: unknown;
|
|
10
|
+
}>;
|
|
11
|
+
/**
|
|
12
|
+
* Error class for filesystem write failures
|
|
13
|
+
*/
|
|
14
|
+
declare class FileWriteError extends FileWriteError_base {}
|
|
15
|
+
/**
|
|
16
|
+
* Writes a virtual file tree to the filesystem.
|
|
17
|
+
* Returns a Result type for type-safe error handling.
|
|
18
|
+
*/
|
|
19
|
+
declare function writeTree(tree: VirtualFileTree, destDir: string): Promise<Result<void, FileWriteError>>;
|
|
20
|
+
/**
|
|
21
|
+
* Writes selected files from a virtual file tree to the filesystem.
|
|
22
|
+
* Returns a Result with the list of written file paths.
|
|
23
|
+
*/
|
|
24
|
+
declare function writeSelected(tree: VirtualFileTree, destDir: string, filter: (filePath: string) => boolean): Promise<Result<string[], FileWriteError>>;
|
|
6
25
|
//#endregion
|
|
7
|
-
export {
|
|
26
|
+
export { FileWriteError, writeSelected, writeTree };
|
|
8
27
|
//# sourceMappingURL=fs-writer.d.mts.map
|
package/dist/fs-writer.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fs-writer.d.mts","names":[],"sources":["../src/fs-writer.ts"],"sourcesContent":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fs-writer.d.mts","names":[],"sources":["../src/fs-writer.ts"],"sourcesContent":[],"mappings":";;;;;cAI2F,qBAAA,cAAA,CAAA;;;EAAA,KAAA,CAAA,EAAA,OAAA;AAS3F,CAAA,CAAA;AAUA;;;AAGW,cAbE,cAAA,SAAuB,mBAAA,CAazB;;AA8CX;;;AAIW,iBArDW,SAAA,CAqDX,IAAA,EApDH,eAoDG,EAAA,OAAA,EAAA,MAAA,CAAA,EAlDR,OAkDQ,CAlDA,MAkDA,CAAA,IAAA,EAlDa,cAkDb,CAAA,CAAA;;;;;iBAJW,aAAA,OACd,0EAGL,QAAQ,iBAAiB"}
|
package/dist/fs-writer.mjs
CHANGED
|
@@ -1,13 +1,33 @@
|
|
|
1
1
|
import { t as getBinaryTemplatesRoot } from "./template-reader-DOXCnctl.mjs";
|
|
2
|
+
import { Result, TaggedError } from "better-result";
|
|
2
3
|
import { dirname, join } from "pathe";
|
|
3
4
|
import * as fs from "node:fs/promises";
|
|
4
5
|
|
|
5
6
|
//#region src/fs-writer.ts
|
|
6
7
|
const BINARY_FILE_MARKER = "[Binary file]";
|
|
7
|
-
|
|
8
|
-
|
|
8
|
+
/**
|
|
9
|
+
* Error class for filesystem write failures
|
|
10
|
+
*/
|
|
11
|
+
var FileWriteError = class extends TaggedError("FileWriteError")() {};
|
|
12
|
+
/**
|
|
13
|
+
* Writes a virtual file tree to the filesystem.
|
|
14
|
+
* Returns a Result type for type-safe error handling.
|
|
15
|
+
*/
|
|
16
|
+
async function writeTree(tree, destDir) {
|
|
17
|
+
return Result.tryPromise({
|
|
18
|
+
try: async () => {
|
|
19
|
+
for (const child of tree.root.children) await writeNodeInternal(child, destDir, "");
|
|
20
|
+
},
|
|
21
|
+
catch: (e) => {
|
|
22
|
+
if (FileWriteError.is(e)) return e;
|
|
23
|
+
return new FileWriteError({
|
|
24
|
+
message: e instanceof Error ? e.message : String(e),
|
|
25
|
+
cause: e
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
});
|
|
9
29
|
}
|
|
10
|
-
async function
|
|
30
|
+
async function writeNodeInternal(node, baseDir, relativePath) {
|
|
11
31
|
const fullPath = join(baseDir, relativePath, node.name);
|
|
12
32
|
const nodePath = relativePath ? join(relativePath, node.name) : node.name;
|
|
13
33
|
if (node.type === "file") {
|
|
@@ -17,15 +37,30 @@ async function writeNode(node, baseDir, relativePath) {
|
|
|
17
37
|
else if (fileNode.content !== BINARY_FILE_MARKER) await fs.writeFile(fullPath, fileNode.content, "utf-8");
|
|
18
38
|
} else {
|
|
19
39
|
await fs.mkdir(fullPath, { recursive: true });
|
|
20
|
-
for (const child of node.children) await
|
|
40
|
+
for (const child of node.children) await writeNodeInternal(child, baseDir, nodePath);
|
|
21
41
|
}
|
|
22
42
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
43
|
+
/**
|
|
44
|
+
* Writes selected files from a virtual file tree to the filesystem.
|
|
45
|
+
* Returns a Result with the list of written file paths.
|
|
46
|
+
*/
|
|
47
|
+
async function writeSelected(tree, destDir, filter) {
|
|
48
|
+
return Result.tryPromise({
|
|
49
|
+
try: async () => {
|
|
50
|
+
const writtenFiles = [];
|
|
51
|
+
await writeSelectedNodeInternal(tree.root, destDir, "", filter, writtenFiles);
|
|
52
|
+
return writtenFiles;
|
|
53
|
+
},
|
|
54
|
+
catch: (e) => {
|
|
55
|
+
if (FileWriteError.is(e)) return e;
|
|
56
|
+
return new FileWriteError({
|
|
57
|
+
message: e instanceof Error ? e.message : String(e),
|
|
58
|
+
cause: e
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
});
|
|
27
62
|
}
|
|
28
|
-
async function
|
|
63
|
+
async function writeSelectedNodeInternal(node, baseDir, relativePath, filter, writtenFiles) {
|
|
29
64
|
const nodePath = relativePath ? `${relativePath}/${node.name}` : node.name;
|
|
30
65
|
if (node.type === "file") {
|
|
31
66
|
if (filter(nodePath)) {
|
|
@@ -35,17 +70,13 @@ async function writeSelectedNode(node, baseDir, relativePath, filter, writtenFil
|
|
|
35
70
|
else if (fileNode.content !== BINARY_FILE_MARKER) await fs.writeFile(join(baseDir, nodePath), fileNode.content, "utf-8");
|
|
36
71
|
writtenFiles.push(nodePath);
|
|
37
72
|
}
|
|
38
|
-
} else for (const child of node.children) await
|
|
73
|
+
} else for (const child of node.children) await writeSelectedNodeInternal(child, baseDir, nodePath, filter, writtenFiles);
|
|
39
74
|
}
|
|
40
75
|
async function copyBinaryFile(templatePath, destPath) {
|
|
41
76
|
const sourcePath = join(getBinaryTemplatesRoot(), templatePath);
|
|
42
|
-
|
|
43
|
-
await fs.copyFile(sourcePath, destPath);
|
|
44
|
-
} catch (error) {
|
|
45
|
-
console.warn(`Failed to copy binary file: ${templatePath}`, error);
|
|
46
|
-
}
|
|
77
|
+
await fs.copyFile(sourcePath, destPath);
|
|
47
78
|
}
|
|
48
79
|
|
|
49
80
|
//#endregion
|
|
50
|
-
export {
|
|
81
|
+
export { FileWriteError, writeSelected, writeTree };
|
|
51
82
|
//# sourceMappingURL=fs-writer.mjs.map
|
package/dist/fs-writer.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fs-writer.mjs","names":["writtenFiles: string[]"],"sources":["../src/fs-writer.ts"],"sourcesContent":["import * as fs from \"node:fs/promises\";\nimport { join, dirname } from \"pathe\";\n\nimport type { VirtualFileTree, VirtualNode, VirtualFile, VirtualDirectory } from \"./types\";\n\nimport { getBinaryTemplatesRoot } from \"./core/template-reader\";\n\nconst BINARY_FILE_MARKER = \"[Binary file]\";\n\nexport async function
|
|
1
|
+
{"version":3,"file":"fs-writer.mjs","names":["writtenFiles: string[]"],"sources":["../src/fs-writer.ts"],"sourcesContent":["import { Result, TaggedError } from \"better-result\";\nimport * as fs from \"node:fs/promises\";\nimport { join, dirname } from \"pathe\";\n\nimport type { VirtualFileTree, VirtualNode, VirtualFile, VirtualDirectory } from \"./types\";\n\nimport { getBinaryTemplatesRoot } from \"./core/template-reader\";\n\nconst BINARY_FILE_MARKER = \"[Binary file]\";\n\n/**\n * Error class for filesystem write failures\n */\nexport class FileWriteError extends TaggedError(\"FileWriteError\")<{\n message: string;\n path?: string;\n cause?: unknown;\n}>() {}\n\n/**\n * Writes a virtual file tree to the filesystem.\n * Returns a Result type for type-safe error handling.\n */\nexport async function writeTree(\n tree: VirtualFileTree,\n destDir: string,\n): Promise<Result<void, FileWriteError>> {\n return Result.tryPromise({\n try: async () => {\n for (const child of tree.root.children) {\n await writeNodeInternal(child, destDir, \"\");\n }\n },\n catch: (e) => {\n if (FileWriteError.is(e)) return e;\n return new FileWriteError({\n message: e instanceof Error ? e.message : String(e),\n cause: e,\n });\n },\n });\n}\n\nasync function writeNodeInternal(\n node: VirtualNode,\n baseDir: string,\n relativePath: string,\n): Promise<void> {\n const fullPath = join(baseDir, relativePath, node.name);\n const nodePath = relativePath ? join(relativePath, node.name) : node.name;\n\n if (node.type === \"file\") {\n const fileNode = node as VirtualFile;\n await fs.mkdir(dirname(fullPath), { recursive: true });\n\n if (fileNode.content === BINARY_FILE_MARKER && fileNode.sourcePath) {\n await copyBinaryFile(fileNode.sourcePath, fullPath);\n } else if (fileNode.content !== BINARY_FILE_MARKER) {\n await fs.writeFile(fullPath, fileNode.content, \"utf-8\");\n }\n } else {\n await fs.mkdir(fullPath, { recursive: true });\n for (const child of (node as VirtualDirectory).children) {\n await writeNodeInternal(child, baseDir, nodePath);\n }\n }\n}\n\n/**\n * Writes selected files from a virtual file tree to the filesystem.\n * Returns a Result with the list of written file paths.\n */\nexport async function writeSelected(\n tree: VirtualFileTree,\n destDir: string,\n filter: (filePath: string) => boolean,\n): Promise<Result<string[], FileWriteError>> {\n return Result.tryPromise({\n try: async () => {\n const writtenFiles: string[] = [];\n await writeSelectedNodeInternal(tree.root, destDir, \"\", filter, writtenFiles);\n return writtenFiles;\n },\n catch: (e) => {\n if (FileWriteError.is(e)) return e;\n return new FileWriteError({\n message: e instanceof Error ? e.message : String(e),\n cause: e,\n });\n },\n });\n}\n\nasync function writeSelectedNodeInternal(\n node: VirtualNode,\n baseDir: string,\n relativePath: string,\n filter: (filePath: string) => boolean,\n writtenFiles: string[],\n): Promise<void> {\n const nodePath = relativePath ? `${relativePath}/${node.name}` : node.name;\n\n if (node.type === \"file\") {\n if (filter(nodePath)) {\n const fileNode = node as VirtualFile;\n await fs.mkdir(dirname(join(baseDir, nodePath)), { recursive: true });\n\n if (fileNode.content === BINARY_FILE_MARKER && fileNode.sourcePath) {\n await copyBinaryFile(fileNode.sourcePath, join(baseDir, nodePath));\n } else if (fileNode.content !== BINARY_FILE_MARKER) {\n await fs.writeFile(join(baseDir, nodePath), fileNode.content, \"utf-8\");\n }\n writtenFiles.push(nodePath);\n }\n } else {\n for (const child of (node as VirtualDirectory).children) {\n await writeSelectedNodeInternal(child, baseDir, nodePath, filter, writtenFiles);\n }\n }\n}\n\nasync function copyBinaryFile(templatePath: string, destPath: string): Promise<void> {\n const templatesRoot = getBinaryTemplatesRoot();\n const sourcePath = join(templatesRoot, templatePath);\n // Let errors propagate - they'll be caught by the Result wrapper\n await fs.copyFile(sourcePath, destPath);\n}\n"],"mappings":";;;;;;AAQA,MAAM,qBAAqB;;;;AAK3B,IAAa,iBAAb,cAAoC,YAAY,iBAAiB,EAI7D,CAAC;;;;;AAML,eAAsB,UACpB,MACA,SACuC;AACvC,QAAO,OAAO,WAAW;EACvB,KAAK,YAAY;AACf,QAAK,MAAM,SAAS,KAAK,KAAK,SAC5B,OAAM,kBAAkB,OAAO,SAAS,GAAG;;EAG/C,QAAQ,MAAM;AACZ,OAAI,eAAe,GAAG,EAAE,CAAE,QAAO;AACjC,UAAO,IAAI,eAAe;IACxB,SAAS,aAAa,QAAQ,EAAE,UAAU,OAAO,EAAE;IACnD,OAAO;IACR,CAAC;;EAEL,CAAC;;AAGJ,eAAe,kBACb,MACA,SACA,cACe;CACf,MAAM,WAAW,KAAK,SAAS,cAAc,KAAK,KAAK;CACvD,MAAM,WAAW,eAAe,KAAK,cAAc,KAAK,KAAK,GAAG,KAAK;AAErE,KAAI,KAAK,SAAS,QAAQ;EACxB,MAAM,WAAW;AACjB,QAAM,GAAG,MAAM,QAAQ,SAAS,EAAE,EAAE,WAAW,MAAM,CAAC;AAEtD,MAAI,SAAS,YAAY,sBAAsB,SAAS,WACtD,OAAM,eAAe,SAAS,YAAY,SAAS;WAC1C,SAAS,YAAY,mBAC9B,OAAM,GAAG,UAAU,UAAU,SAAS,SAAS,QAAQ;QAEpD;AACL,QAAM,GAAG,MAAM,UAAU,EAAE,WAAW,MAAM,CAAC;AAC7C,OAAK,MAAM,SAAU,KAA0B,SAC7C,OAAM,kBAAkB,OAAO,SAAS,SAAS;;;;;;;AASvD,eAAsB,cACpB,MACA,SACA,QAC2C;AAC3C,QAAO,OAAO,WAAW;EACvB,KAAK,YAAY;GACf,MAAMA,eAAyB,EAAE;AACjC,SAAM,0BAA0B,KAAK,MAAM,SAAS,IAAI,QAAQ,aAAa;AAC7E,UAAO;;EAET,QAAQ,MAAM;AACZ,OAAI,eAAe,GAAG,EAAE,CAAE,QAAO;AACjC,UAAO,IAAI,eAAe;IACxB,SAAS,aAAa,QAAQ,EAAE,UAAU,OAAO,EAAE;IACnD,OAAO;IACR,CAAC;;EAEL,CAAC;;AAGJ,eAAe,0BACb,MACA,SACA,cACA,QACA,cACe;CACf,MAAM,WAAW,eAAe,GAAG,aAAa,GAAG,KAAK,SAAS,KAAK;AAEtE,KAAI,KAAK,SAAS,QAChB;MAAI,OAAO,SAAS,EAAE;GACpB,MAAM,WAAW;AACjB,SAAM,GAAG,MAAM,QAAQ,KAAK,SAAS,SAAS,CAAC,EAAE,EAAE,WAAW,MAAM,CAAC;AAErE,OAAI,SAAS,YAAY,sBAAsB,SAAS,WACtD,OAAM,eAAe,SAAS,YAAY,KAAK,SAAS,SAAS,CAAC;YACzD,SAAS,YAAY,mBAC9B,OAAM,GAAG,UAAU,KAAK,SAAS,SAAS,EAAE,SAAS,SAAS,QAAQ;AAExE,gBAAa,KAAK,SAAS;;OAG7B,MAAK,MAAM,SAAU,KAA0B,SAC7C,OAAM,0BAA0B,OAAO,SAAS,UAAU,QAAQ,aAAa;;AAKrF,eAAe,eAAe,cAAsB,UAAiC;CAEnF,MAAM,aAAa,KADG,wBAAwB,EACP,aAAa;AAEpD,OAAM,GAAG,SAAS,YAAY,SAAS"}
|
package/dist/index.d.mts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { a as VirtualFileTree, i as VirtualFile, n as
|
|
1
|
+
import { a as VirtualFileTree, i as VirtualFile, n as GeneratorOptions, o as VirtualNode, r as VirtualDirectory, t as GeneratorError } from "./types-zSU486rU.mjs";
|
|
2
|
+
import { Result } from "better-result";
|
|
2
3
|
import * as memfs0 from "memfs";
|
|
3
4
|
import Handlebars from "handlebars";
|
|
4
5
|
import { ProjectConfig } from "@better-t-stack/types";
|
|
@@ -42,8 +43,34 @@ declare function processFileContent(filePath: string, content: string, context:
|
|
|
42
43
|
//#region src/template-handlers/utils.d.ts
|
|
43
44
|
type TemplateData = Map<string, string>;
|
|
44
45
|
//#endregion
|
|
46
|
+
//#region src/template-handlers/addons.d.ts
|
|
47
|
+
declare function processAddonTemplates(vfs: VirtualFileSystem, templates: TemplateData, config: ProjectConfig): Promise<void>;
|
|
48
|
+
//#endregion
|
|
45
49
|
//#region src/generator.d.ts
|
|
46
|
-
|
|
50
|
+
/**
|
|
51
|
+
* Generates a virtual project file tree from templates and configuration.
|
|
52
|
+
* Returns a Result type for type-safe error handling.
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* ```typescript
|
|
56
|
+
* const result = await generate(options);
|
|
57
|
+
* result.match({
|
|
58
|
+
* ok: (tree) => console.log(`Generated ${tree.fileCount} files`),
|
|
59
|
+
* err: (error) => console.error(`Failed: ${error.message}`),
|
|
60
|
+
* });
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
63
|
+
declare function generate(options: GeneratorOptions): Promise<Result<VirtualFileTree, GeneratorError>>;
|
|
64
|
+
//#endregion
|
|
65
|
+
//#region src/processors/addons-deps.d.ts
|
|
66
|
+
declare function processAddonsDeps(vfs: VirtualFileSystem, config: ProjectConfig): void;
|
|
67
|
+
//#endregion
|
|
68
|
+
//#region src/bts-config.d.ts
|
|
69
|
+
/**
|
|
70
|
+
* Writes the BTS configuration file to the VFS (for new project creation).
|
|
71
|
+
* This is browser-safe as it only writes to VFS, not the real filesystem.
|
|
72
|
+
*/
|
|
73
|
+
declare function writeBtsConfigToVfs(vfs: VirtualFileSystem, projectConfig: ProjectConfig, version: string, reproducibleCommand?: string): void;
|
|
47
74
|
//#endregion
|
|
48
75
|
//#region src/templates.generated.d.ts
|
|
49
76
|
declare const EMBEDDED_TEMPLATES: Map<string, string>;
|
|
@@ -83,8 +110,8 @@ declare const dependencyVersionMap: {
|
|
|
83
110
|
readonly "@vite-pwa/assets-generator": "^1.0.0";
|
|
84
111
|
readonly "@tauri-apps/cli": "^2.4.0";
|
|
85
112
|
readonly "@biomejs/biome": "^2.2.0";
|
|
86
|
-
readonly oxlint: "^1.
|
|
87
|
-
readonly oxfmt: "^0.
|
|
113
|
+
readonly oxlint: "^1.41.0";
|
|
114
|
+
readonly oxfmt: "^0.26.0";
|
|
88
115
|
readonly husky: "^9.1.7";
|
|
89
116
|
readonly lefthook: "^2.0.13";
|
|
90
117
|
readonly "lint-staged": "^16.1.2";
|
|
@@ -159,5 +186,8 @@ declare const dependencyVersionMap: {
|
|
|
159
186
|
};
|
|
160
187
|
type AvailableDependencies = keyof typeof dependencyVersionMap;
|
|
161
188
|
//#endregion
|
|
162
|
-
|
|
189
|
+
//#region src/utils/reproducible-command.d.ts
|
|
190
|
+
declare function generateReproducibleCommand(config: ProjectConfig): string;
|
|
191
|
+
//#endregion
|
|
192
|
+
export { type AvailableDependencies, EMBEDDED_TEMPLATES, GeneratorError, GeneratorOptions, Handlebars, TEMPLATE_COUNT, type TemplateData, VirtualDirectory, VirtualFile, VirtualFileSystem, VirtualFileTree, VirtualNode, dependencyVersionMap, generate, generateReproducibleCommand, isBinaryFile, processAddonTemplates, processAddonsDeps, processFileContent, processTemplateString, transformFilename, writeBtsConfigToVfs };
|
|
163
193
|
//# sourceMappingURL=index.d.mts.map
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/core/virtual-fs.ts","../src/core/template-processor.ts","../src/template-handlers/utils.ts","../src/generator.ts","../src/templates.generated.ts","../src/utils/add-deps.ts"],"sourcesContent":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/core/virtual-fs.ts","../src/core/template-processor.ts","../src/template-handlers/utils.ts","../src/template-handlers/addons.ts","../src/generator.ts","../src/processors/addons-deps.ts","../src/bts-config.ts","../src/templates.generated.ts","../src/utils/add-deps.ts","../src/utils/reproducible-command.ts"],"sourcesContent":[],"mappings":";;;;;;;cAOa,iBAAA;;;;;;EAAA,QAAA,CAAA,QAAA,EAAA,MAAiB,CAAA,EAAA,MAAA,GAAA,SAAA;EA6Ea,MAAA,CAAA,IAAA,EAAA,MAAA,CAAA,EAAA,OAAA;EAkCX,UAAA,CAAA,QAAA,EAAA,MAAA,CAAA,EAAA,OAAA;EAAgB,eAcrC,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,OAAA;EAAA,KAGJ,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,IAAA;EAAA,UAAA,CAAA,QAAA,EAAA,MAAA,CAAA,EAAA,OAAA;;2CAnDoC;;ECzE3B,WAAA,CAAA,CAAA,EAAA,MAAA,EAAA;EAIA,iBAAY,CAAA,CAAA,EAAA,MAAA,EAAA;EAIZ,YAAA,CAAA,CAAA,EAAA,MAAiB;EAUjB,iBAAA,CAAA,CAAA,EAAkB,MAAA;6BDyFF;;eAAgB,MAAA,CAcrC;EE9HC,KAAA,CAAA,CAAA,EF8HD,MAAA,CAGJ,GEjIoB;;;;ECAL,QAAA,aAAA;;;;iBFKN,qBAAA,2BAAgD;iBAIhD,YAAA;iBAIA,iBAAA;iBAUA,kBAAA,6CAGL;;;KC1BC,YAAA,GAAe;;;iBCAL,qBAAA,MACf,8BACM,sBACH,gBACP;;;;;AHHH;;;;;;;;;ACIA;AAIA;AAIgB,iBG8BM,QAAA,CH9BW,OAAA,EG+BtB,gBH/BsB,CAAA,EGgC9B,OHhC8B,CGgCtB,MHhCsB,CGgCf,eHhCe,EGgCE,cHhCF,CAAA,CAAA;;;iBIJjB,iBAAA,MAAuB,2BAA2B;;;;;;;iBCLlD,mBAAA,MACT,kCACU;;;cCTJ,oBAAoB;cA+9xBpB,cAAA;;;cCr9xBA;;;ERNA,SAAA,mBAAiB,EAAA,QAAA;EA6Ea,SAAA,eAAA,EAAA,SAAA;EAkCX,SAAA,oBAAA,EAAA,SAAA;EAAgB,SAcrC,6BAAA,EAAA,SAAA;EAAA,SAGJ,mBAAA,EAAA,UAAA;EAAA,SAAA,aAAA,EAAA,SAAA;;;;EC5HS,SAAA,MAAA,EAAA,QAAqB;EAIrB,SAAA,0BAAY,EAAA,QAAA;EAIZ,SAAA,EAAA,EAAA,SAAiB;EAUjB,SAAA,WAAA,EAAkB,SAAA;;;;ECvBtB,SAAA,gBAAY,EAAG,QAAG;;;;ECAR,SAAA,yBAAqB,EAAA,QAAA;EACpC,SAAA,wBAAA,EAAA,QAAA;EACM,SAAA,gCAAA,EAAA,QAAA;EACH,SAAA,oBAAA,EAAA,QAAA;EACP,SAAA,6BAAA,EAAA,QAAA;EAAO,SAAA,QAAA,EAAA,SAAA;;;;ECuCY,SAAA,gBAAQ,EAAA,QAAA;EACnB,SAAA,MAAA,EAAA,SAAA;EACO,SAAA,KAAA,EAAA,SAAA;EAAiB,SAAA,KAAA,EAAA,QAAA;EAAxB,SAAA,QAAA,EAAA,SAAA;EAAR,SAAA,aAAA,EAAA,SAAA;EAAO,SAAA,GAAA,EAAA,SAAA;;;;ECpCM,SAAA,gBAAiB,EAAA,QAAM;;;;ECLvB,SAAA,mBAAmB,EAAA,QAC5B;;;;ECRM,SAAA,gBA69xBX,EAAA,QA79xB+B;EA+9xBpB,SAAA,aAAc,EAAA,SAAA;;;;ECr9xBd,SAAA,EAAA,EAAA,QAAA;EA8ID,SAAA,gBAAqB,EAAA,QAAA;;;;ECzJjB,SAAA,kBAAA,EAAA,QAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KDyJ/B,qBAAA,gBAAqC;;;iBCzJjC,2BAAA,SAAoC"}
|