@spine-event-engine/proto-tools 2.0.0-snapshot.2

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.
Files changed (73) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +102 -0
  3. package/REFERENCE.md +80 -0
  4. package/bin/spine-proto.mjs +2 -0
  5. package/dist/src/cli/spine-proto-bootstrap.d.ts +4 -0
  6. package/dist/src/cli/spine-proto-bootstrap.d.ts.map +1 -0
  7. package/dist/src/cli/spine-proto-bootstrap.js +52 -0
  8. package/dist/src/cli/spine-proto-bootstrap.js.map +1 -0
  9. package/dist/src/cli/spine-proto.d.ts +3 -0
  10. package/dist/src/cli/spine-proto.d.ts.map +1 -0
  11. package/dist/src/cli/spine-proto.js +32 -0
  12. package/dist/src/cli/spine-proto.js.map +1 -0
  13. package/dist/src/generation/authored-interface-provider.d.ts +28 -0
  14. package/dist/src/generation/authored-interface-provider.d.ts.map +1 -0
  15. package/dist/src/generation/authored-interface-provider.js +244 -0
  16. package/dist/src/generation/authored-interface-provider.js.map +1 -0
  17. package/dist/src/generation/generated-source-policy.d.ts +21 -0
  18. package/dist/src/generation/generated-source-policy.d.ts.map +1 -0
  19. package/dist/src/generation/generated-source-policy.js +126 -0
  20. package/dist/src/generation/generated-source-policy.js.map +1 -0
  21. package/dist/src/generation/generation-reuse.mjs +84 -0
  22. package/dist/src/generation/generator.d.ts +195 -0
  23. package/dist/src/generation/generator.d.ts.map +1 -0
  24. package/dist/src/generation/generator.js +566 -0
  25. package/dist/src/generation/generator.js.map +1 -0
  26. package/dist/src/generation/handler-generator.d.ts +7 -0
  27. package/dist/src/generation/handler-generator.d.ts.map +1 -0
  28. package/dist/src/generation/handler-generator.js +55 -0
  29. package/dist/src/generation/handler-generator.js.map +1 -0
  30. package/dist/src/generation/interface-generator.d.ts +21 -0
  31. package/dist/src/generation/interface-generator.d.ts.map +1 -0
  32. package/dist/src/generation/interface-generator.js +277 -0
  33. package/dist/src/generation/interface-generator.js.map +1 -0
  34. package/dist/src/generation/interface-provider.d.ts +30 -0
  35. package/dist/src/generation/interface-provider.d.ts.map +1 -0
  36. package/dist/src/generation/interface-provider.js +15 -0
  37. package/dist/src/generation/interface-provider.js.map +1 -0
  38. package/dist/src/generation/rejection-generator.d.ts +9 -0
  39. package/dist/src/generation/rejection-generator.d.ts.map +1 -0
  40. package/dist/src/generation/rejection-generator.js +62 -0
  41. package/dist/src/generation/rejection-generator.js.map +1 -0
  42. package/dist/src/generation/source-view.d.ts +103 -0
  43. package/dist/src/generation/source-view.d.ts.map +1 -0
  44. package/dist/src/generation/source-view.js +298 -0
  45. package/dist/src/generation/source-view.js.map +1 -0
  46. package/dist/src/index.d.ts +139 -0
  47. package/dist/src/index.d.ts.map +1 -0
  48. package/dist/src/index.js +546 -0
  49. package/dist/src/index.js.map +1 -0
  50. package/dist/src/io/atomic-manifest.d.ts +32 -0
  51. package/dist/src/io/atomic-manifest.d.ts.map +1 -0
  52. package/dist/src/io/atomic-manifest.js +56 -0
  53. package/dist/src/io/atomic-manifest.js.map +1 -0
  54. package/dist/src/io/manifest-reader.d.ts +8 -0
  55. package/dist/src/io/manifest-reader.d.ts.map +1 -0
  56. package/dist/src/io/manifest-reader.js +19 -0
  57. package/dist/src/io/manifest-reader.js.map +1 -0
  58. package/dist/src/model/model-graph.d.ts +68 -0
  59. package/dist/src/model/model-graph.d.ts.map +1 -0
  60. package/dist/src/model/model-graph.js +220 -0
  61. package/dist/src/model/model-graph.js.map +1 -0
  62. package/dist/src/model/npm-package-name.d.ts +7 -0
  63. package/dist/src/model/npm-package-name.d.ts.map +1 -0
  64. package/dist/src/model/npm-package-name.js +33 -0
  65. package/dist/src/model/npm-package-name.js.map +1 -0
  66. package/dist/src/model/registry-dependency.d.ts +10 -0
  67. package/dist/src/model/registry-dependency.d.ts.map +1 -0
  68. package/dist/src/model/registry-dependency.js +66 -0
  69. package/dist/src/model/registry-dependency.js.map +1 -0
  70. package/dist/tsconfig.tsbuildinfo +1 -0
  71. package/package.json +51 -0
  72. package/scripts/clean-dist.mjs +7 -0
  73. package/scripts/copy-runtime-modules.mjs +23 -0
@@ -0,0 +1,298 @@
1
+ /*
2
+ * Copyright 2026, CodeMatters. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
5
+ * in compliance with the License. You may obtain a copy of the License at
6
+ *
7
+ * https://www.apache.org/licenses/LICENSE-2.0
8
+ *
9
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
10
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
11
+ * or implied. See the License for the specific language governing permissions and limitations under
12
+ * the License.
13
+ */
14
+ import { createHash } from "node:crypto";
15
+ import { closeSync, constants, existsSync, fstatSync, lstatSync, openSync, realpathSync, readFileSync, readdirSync, writeFileSync, } from "node:fs";
16
+ import { basename, dirname, join, relative, resolve, sep } from "node:path";
17
+ import ts from "typescript";
18
+ const maximumSourceViewDepth = 32;
19
+ const maximumSourceViewEntries = 10_000;
20
+ const recordFileName = ".spine-source-view-publication.json";
21
+ const recordFormat = 1;
22
+ const maximumRecordBytes = 16 * 1024;
23
+ const nonRegularInputDiagnostic = "spine-proto: source view contains non-regular TypeScript input";
24
+ /**
25
+ * Race-safe reads for files owned by a compiler source view.
26
+ */
27
+ export const SourceViewInputs = Object.freeze({
28
+ // prettier-ignore
29
+ /**
30
+ * Opens without following the final symlink or waiting on a special file,
31
+ * validates the opened descriptor, and reads that immutable file identity.
32
+ *
33
+ * @param path Source or configuration path.
34
+ * @returns Exact file bytes.
35
+ */
36
+ read(path) {
37
+ let descriptor;
38
+ try {
39
+ descriptor = openSync(path, constants.O_RDONLY | constants.O_NONBLOCK | constants.O_NOFOLLOW);
40
+ if (!fstatSync(descriptor).isFile())
41
+ throw new Error(nonRegularInputDiagnostic);
42
+ return readFileSync(descriptor);
43
+ }
44
+ catch (error) {
45
+ if (error instanceof Error && error.message === nonRegularInputDiagnostic)
46
+ throw error;
47
+ throw new Error(nonRegularInputDiagnostic, { cause: error });
48
+ }
49
+ finally {
50
+ if (descriptor !== undefined)
51
+ closeSync(descriptor);
52
+ }
53
+ },
54
+ });
55
+ function projectConfig(root) {
56
+ const configPath = join(root, "tsconfig.json");
57
+ if (!existsSync(configPath))
58
+ return undefined;
59
+ const texts = new Map();
60
+ const host = {
61
+ ...ts.sys,
62
+ readFile: (path) => {
63
+ const text = SourceViewInputs.read(path).toString("utf8");
64
+ texts.set(resolve(path), text);
65
+ return text;
66
+ },
67
+ };
68
+ const source = ts.readJsonConfigFile(configPath, host.readFile);
69
+ const parsed = ts.parseJsonSourceFileConfigFileContent(source, host, root, undefined, configPath, undefined, undefined, new Map());
70
+ if (parsed.errors.some((diagnostic) => diagnostic.code !== 18002 && diagnostic.code !== 18003))
71
+ throw new Error("spine-proto: source view has invalid tsconfig.json");
72
+ const extended = source
73
+ .extendedSourceFiles ?? [];
74
+ const files = [source.fileName, ...extended]
75
+ .map((file) => resolve(file))
76
+ .filter((file, index, values) => values.indexOf(file) === index)
77
+ .sort();
78
+ for (const file of files)
79
+ if (!texts.has(file))
80
+ texts.set(file, SourceViewInputs.read(file).toString("utf8"));
81
+ return Object.freeze({
82
+ allowJs: parsed.options.allowJs === true,
83
+ configFiles: Object.freeze(files),
84
+ });
85
+ }
86
+ function hashFile(hash, category, file) {
87
+ const content = SourceViewInputs.read(file);
88
+ hash.update(`${String(category.length)}:${category}${String(file.length)}:${file}${String(content.length)}:`);
89
+ hash.update(content);
90
+ }
91
+ function inventoryDigest(files, configs = []) {
92
+ const hash = createHash("sha256");
93
+ for (const file of files)
94
+ hashFile(hash, "source", file);
95
+ for (const config of configs)
96
+ hashFile(hash, "config", config);
97
+ return hash.digest("hex");
98
+ }
99
+ function sourceInventory(root, generated) {
100
+ const generatedDirectory = dirname(generated);
101
+ const generatedName = basename(generated);
102
+ const excluded = [generated, "dist"];
103
+ const siblingStage = join(generatedDirectory, `.${generatedName}.stage-`);
104
+ const siblingRootTransaction = join(generatedDirectory, `.${generatedName}-`);
105
+ const siblingBackup = join(generatedDirectory, `.${generatedName}.`);
106
+ const config = projectConfig(root);
107
+ const inputs = collectAuthored(root, [...excluded, siblingStage, siblingRootTransaction, siblingBackup], config?.allowJs);
108
+ const authoredFiles = Object.freeze(inputs.authoredFiles);
109
+ const compilerFiles = Object.freeze(inputs.compilerFiles);
110
+ return Object.freeze({
111
+ authoredFiles,
112
+ compilerFiles,
113
+ digest: inventoryDigest(compilerFiles, config?.configFiles),
114
+ });
115
+ }
116
+ /**
117
+ * Checks that the immutable authored-source inventory is current before publication.
118
+ *
119
+ * @param sourceView Compiler input snapshot captured before generation.
120
+ */
121
+ export function assertSourceViewCurrent(sourceView) {
122
+ try {
123
+ const generated = relative(sourceView.packageRoot, sourceView.liveGeneratedRoot);
124
+ const current = sourceInventory(sourceView.packageRoot, generated);
125
+ if (current.digest === sourceView.inventoryDigest)
126
+ return;
127
+ }
128
+ catch {
129
+ // Report one stable transaction diagnostic for every inventory mutation.
130
+ }
131
+ throw new Error("spine-proto: authored interface source view changed during generation");
132
+ }
133
+ /**
134
+ * Writes the fixed internal source-view handoff for an outer generation stage.
135
+ *
136
+ * @param stageRoot Outer staged model package root.
137
+ * @param sourceView Captured live-authored/staged-generated source view.
138
+ */
139
+ export function writeViewRecord(stageRoot, sourceView) {
140
+ writeFileSync(join(stageRoot, recordFileName), `${JSON.stringify({
141
+ formatVersion: recordFormat,
142
+ inventoryDigest: sourceView.inventoryDigest,
143
+ liveGeneratedRoot: sourceView.liveGeneratedRoot,
144
+ livePackageRoot: sourceView.packageRoot,
145
+ })}\n`, "utf8");
146
+ }
147
+ /**
148
+ * Reads one bounded root-transaction source-view handoff.
149
+ *
150
+ * @param stageRoot Outer staged model package root.
151
+ * @param expectedLivePackageRoot Canonical selected live model package root.
152
+ * @param expectedLiveGeneratedRoot Canonical selected live generated root.
153
+ * @returns Validated immutable internal handoff.
154
+ */
155
+ export function readViewRecord(stageRoot, expectedLivePackageRoot, expectedLiveGeneratedRoot) {
156
+ const recordPath = join(stageRoot, recordFileName);
157
+ const stagePath = resolve(stageRoot);
158
+ const candidate = resolve(recordPath);
159
+ let stage;
160
+ let regular = false;
161
+ try {
162
+ stage = realpathSync(stagePath);
163
+ regular = lstatSync(candidate).isFile();
164
+ }
165
+ catch {
166
+ throw new Error("spine-proto: invalid source-view publication record");
167
+ }
168
+ if (!candidate.startsWith(`${stagePath}/`) || !regular)
169
+ throw new Error("spine-proto: invalid source-view publication record");
170
+ const canonicalRecord = realpathSync(candidate);
171
+ if (!canonicalRecord.startsWith(`${stage}/`))
172
+ throw new Error("spine-proto: invalid source-view publication record");
173
+ let descriptor;
174
+ let raw;
175
+ try {
176
+ descriptor = openSync(canonicalRecord, constants.O_RDONLY | constants.O_NONBLOCK | constants.O_NOFOLLOW);
177
+ const metadata = fstatSync(descriptor);
178
+ if (!metadata.isFile() || metadata.size > maximumRecordBytes)
179
+ throw new Error("spine-proto: invalid source-view publication record");
180
+ raw = JSON.parse(readFileSync(descriptor).toString("utf8"));
181
+ }
182
+ catch {
183
+ throw new Error("spine-proto: invalid source-view publication record");
184
+ }
185
+ finally {
186
+ if (descriptor !== undefined)
187
+ closeSync(descriptor);
188
+ }
189
+ if (raw === null || typeof raw !== "object")
190
+ throw new Error("spine-proto: invalid source-view publication record");
191
+ const record = raw;
192
+ const livePackageRoot = realpathSync(expectedLivePackageRoot);
193
+ const expectedGeneratedRelative = relative(resolve(expectedLivePackageRoot), resolve(expectedLiveGeneratedRoot));
194
+ const liveGeneratedRoot = resolve(livePackageRoot, expectedGeneratedRelative);
195
+ if (record.formatVersion !== recordFormat ||
196
+ record.livePackageRoot !== livePackageRoot ||
197
+ record.liveGeneratedRoot !== liveGeneratedRoot ||
198
+ expectedGeneratedRelative === "" ||
199
+ expectedGeneratedRelative.startsWith("..") ||
200
+ typeof record.inventoryDigest !== "string" ||
201
+ !/^[a-f0-9]{64}$/u.test(record.inventoryDigest) ||
202
+ Object.keys(record).sort().join(",") !==
203
+ "formatVersion,inventoryDigest,liveGeneratedRoot,livePackageRoot")
204
+ throw new Error("spine-proto: invalid source-view publication record");
205
+ return Object.freeze({
206
+ formatVersion: recordFormat,
207
+ inventoryDigest: record.inventoryDigest,
208
+ liveGeneratedRoot,
209
+ livePackageRoot,
210
+ });
211
+ }
212
+ /**
213
+ * Rejects a changed live source/configuration inventory captured in a handoff.
214
+ *
215
+ * @param record Validated internal root-transaction handoff.
216
+ */
217
+ export function assertViewRecordCurrent(record) {
218
+ try {
219
+ const generated = relative(record.livePackageRoot, record.liveGeneratedRoot);
220
+ if (sourceInventory(record.livePackageRoot, generated).digest === record.inventoryDigest)
221
+ return;
222
+ }
223
+ catch {
224
+ // Report one stable transaction diagnostic for every inventory mutation.
225
+ }
226
+ throw new Error("spine-proto: authored interface source view changed during generation");
227
+ }
228
+ function collectAuthored(root, excluded, allowJs = false) {
229
+ const authoredFiles = [];
230
+ const compilerFiles = [];
231
+ const pending = [{ path: root, depth: 0 }];
232
+ let entries = 0;
233
+ while (pending.length > 0) {
234
+ const current = pending.pop();
235
+ if (current === undefined)
236
+ continue;
237
+ if (current.depth > maximumSourceViewDepth)
238
+ throw new Error("spine-proto: source view exceeds bounded traversal");
239
+ for (const name of readdirSync(current.path).sort().reverse()) {
240
+ entries += 1;
241
+ if (entries > maximumSourceViewEntries)
242
+ throw new Error("spine-proto: source view exceeds bounded traversal");
243
+ const path = join(current.path, name);
244
+ const relativePath = relative(root, path);
245
+ if (excluded.some((entry) => relativePath === entry ||
246
+ relativePath.startsWith(`${entry}${sep}`) ||
247
+ relativePath.startsWith(`${entry}-`) ||
248
+ ((entry.endsWith(".") || entry.endsWith("-")) && relativePath.startsWith(entry))))
249
+ continue;
250
+ const entry = lstatSync(path);
251
+ const isTypeScript = [".cts", ".mts", ".ts", ".tsx"].some((extension) => name.endsWith(extension));
252
+ const isAllowedJavaScript = allowJs && [".cjs", ".js", ".jsx", ".mjs"].some((extension) => name.endsWith(extension));
253
+ const isCompilerInput = isTypeScript || isAllowedJavaScript;
254
+ if (entry.isSymbolicLink()) {
255
+ if (isCompilerInput)
256
+ throw new Error(nonRegularInputDiagnostic);
257
+ continue;
258
+ }
259
+ if (entry.isDirectory())
260
+ pending.push({ path, depth: current.depth + 1 });
261
+ else if (isCompilerInput) {
262
+ if (!entry.isFile())
263
+ throw new Error(nonRegularInputDiagnostic);
264
+ compilerFiles.push(path);
265
+ if (isTypeScript &&
266
+ ![".d.cts", ".d.mts", ".d.ts"].some((extension) => name.endsWith(extension)))
267
+ authoredFiles.push(path);
268
+ }
269
+ }
270
+ }
271
+ return Object.freeze({
272
+ authoredFiles: Object.freeze(authoredFiles.sort()),
273
+ compilerFiles: Object.freeze(compilerFiles.sort()),
274
+ });
275
+ }
276
+ /**
277
+ * Creates a live-authored/staged-generated compiler source view.
278
+ *
279
+ * @param packageRoot Model package root.
280
+ * @param generatedRoot Configured live generated root.
281
+ * @param stagedGeneratedRoot Generated tree inside the current stage.
282
+ * @returns Authored compiler candidates and the staged generated redirect root.
283
+ */
284
+ export function modelSourceView(packageRoot, generatedRoot, stagedGeneratedRoot) {
285
+ const root = realpathSync(resolve(packageRoot));
286
+ const generated = generatedRoot.replaceAll("\\", "/");
287
+ const liveGeneratedRoot = resolve(root, generated);
288
+ const inventory = sourceInventory(root, generated);
289
+ return Object.freeze({
290
+ authoredFiles: inventory.authoredFiles,
291
+ compilerFiles: inventory.compilerFiles,
292
+ inventoryDigest: inventory.digest,
293
+ packageRoot: root,
294
+ liveGeneratedRoot,
295
+ stagedGeneratedRoot: resolve(stagedGeneratedRoot),
296
+ });
297
+ }
298
+ //# sourceMappingURL=source-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-view.js","sourceRoot":"","sources":["../../../src/generation/source-view.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,139 @@
1
+ /**
2
+ * Published manifest JSON revision.
3
+ */
4
+ export declare const manifestFormatVersion = 2;
5
+ /**
6
+ * Configures an independently published Proto model package.
7
+ */
8
+ export interface ModelConfig {
9
+ /**
10
+ * Declares the version of this configuration contract.
11
+ */
12
+ readonly formatVersion: 1;
13
+ /**
14
+ * Selects an independently published model package.
15
+ */
16
+ readonly mode: "model";
17
+ /**
18
+ * Names the owning npm package.
19
+ */
20
+ readonly packageName: string;
21
+ /**
22
+ * Locates the package-contained canonical Proto sources.
23
+ */
24
+ readonly protoRoot: string;
25
+ /**
26
+ * Locates the package-contained generated TypeScript files.
27
+ */
28
+ readonly generatedRoot: string;
29
+ /**
30
+ * Names the generated import subpath root.
31
+ */
32
+ readonly exportRoot: string;
33
+ /**
34
+ * Lists direct model packages from the npm registry.
35
+ */
36
+ readonly dependencies: readonly string[];
37
+ /**
38
+ * Names the generated model-module export.
39
+ */
40
+ readonly moduleExport: string;
41
+ }
42
+ /**
43
+ * Configures an application that composes published Proto model packages.
44
+ */
45
+ export interface ApplicationConfig {
46
+ /**
47
+ * Declares the version of this configuration contract.
48
+ */
49
+ readonly formatVersion: 1;
50
+ /**
51
+ * Selects application model composition.
52
+ */
53
+ readonly mode: "application";
54
+ /**
55
+ * Lists direct model packages from the npm registry.
56
+ */
57
+ readonly modelPackages: readonly string[];
58
+ /**
59
+ * Locates the generated package registry source file.
60
+ */
61
+ readonly registryOutput: string;
62
+ }
63
+ /**
64
+ * Version-one model or application configuration selected by mode.
65
+ */
66
+ export type SpineProtoConfig = ModelConfig | ApplicationConfig;
67
+ /**
68
+ * Describes the Proto sources and generated exports owned by a model package.
69
+ */
70
+ export interface ProtoManifest {
71
+ /**
72
+ * Declares the version of this manifest contract.
73
+ */
74
+ readonly formatVersion: 2;
75
+ /**
76
+ * Stores the opaque identifier shared with the generated-root marker.
77
+ */
78
+ readonly generationId: string;
79
+ /**
80
+ * Names the package that owns every listed Proto source.
81
+ */
82
+ readonly packageName: string;
83
+ /**
84
+ * States the declared version from the owning package.json file.
85
+ */
86
+ readonly packageVersion: string;
87
+ /**
88
+ * Lists canonical package-relative Proto paths owned by the package.
89
+ */
90
+ readonly protoFiles: readonly string[];
91
+ /**
92
+ * Maps each Proto path to its generated package-relative import subpath.
93
+ */
94
+ readonly generatedExports: Readonly<Record<string, string>>;
95
+ /**
96
+ * Lists direct model-package dependencies.
97
+ */
98
+ readonly dependencies: readonly string[];
99
+ /**
100
+ * Names the generated ProtoModule export.
101
+ */
102
+ readonly moduleExport: string;
103
+ }
104
+ /**
105
+ * Provides access to the versioned Proto package configuration.
106
+ */
107
+ export declare const ProtoConfig: Readonly<{
108
+ /**
109
+ * Reads and validates `spine-proto.json` at a package root.
110
+ *
111
+ * @param packageRoot The package root that contains the configuration.
112
+ * @returns The validated model or application configuration.
113
+ */
114
+ read(packageRoot: string): SpineProtoConfig;
115
+ }>;
116
+ /**
117
+ * Provides access to deterministic Proto package manifests.
118
+ */
119
+ export declare const ProtoManifest: Readonly<{
120
+ /**
121
+ * Reads and validates a package manifest.
122
+ *
123
+ * @param packageRoot The package root that owns the manifest.
124
+ * @param manifestPath The optional manifest path within the package root.
125
+ * @returns The validated manifest.
126
+ */
127
+ read(packageRoot: string, manifestPath?: string): ProtoManifest;
128
+ /**
129
+ * Creates a manifest from package-owned Proto paths. Without a supplied generation ID,
130
+ * a fresh random ID is assigned for a new generated-root marker lifecycle.
131
+ *
132
+ * @param packageRoot The model package root.
133
+ * @param ownedProtoFiles Optional explicit package-relative Proto paths.
134
+ * @param generationId Optional generation ID; a random ID is used when omitted.
135
+ * @returns The created manifest.
136
+ */
137
+ create(packageRoot: string, ownedProtoFiles?: readonly string[], generationId?: string): ProtoManifest;
138
+ }>;
139
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AA8BA;;GAEG;AACH,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAiEvC;;GAEG;AACH,MAAM,WAAW,WAAW;IAG1B;;OAEG;IACH,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;IAE1B;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAEvB;;OAEG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAE/B;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAEzC;;OAEG;IACH,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAGhC;;OAEG;IACH,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;IAE1B;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAE7B;;OAEG;IACH,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAE1C;;OAEG;IACH,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG,iBAAiB,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,aAAa;IAG5B;;OAEG;IACH,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;IAE1B;;OAEG;IACH,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAE9B;;OAEG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B;;OAEG;IACH,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAEhC;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IAEvC;;OAEG;IACH,QAAQ,CAAC,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAE5D;;OAEG;IACH,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAEzC;;OAEG;IACH,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAumBD;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,QAAQ,CAAC;IAGjC;;;;;OAKG;IACH,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,gBAAgB,CAAC;CAC7C,CAYC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,QAAQ,CAAC;IAGnC;;;;;;OAMG;IACH,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC;IAEhE;;;;;;;;OAQG;IACH,MAAM,CACJ,WAAW,EAAE,MAAM,EACnB,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,EACnC,YAAY,CAAC,EAAE,MAAM,GACpB,aAAa,CAAC;CAClB,CA2CC,CAAC"}