@untangle-code/context-artifacts 0.0.0-stage → 0.1.1
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/LICENSE +661 -0
- package/NOTICE +90 -0
- package/README.md +247 -2
- package/THIRD_PARTY_LICENSES.md +24 -0
- package/dist/adapters/asyncapi.d.ts +20 -0
- package/dist/adapters/asyncapi.d.ts.map +1 -0
- package/dist/adapters/asyncapi.js +95 -0
- package/dist/adapters/asyncapi.js.map +1 -0
- package/dist/adapters/docker.d.ts +43 -0
- package/dist/adapters/docker.d.ts.map +1 -0
- package/dist/adapters/docker.js +97 -0
- package/dist/adapters/docker.js.map +1 -0
- package/dist/adapters/kubernetes.d.ts +22 -0
- package/dist/adapters/kubernetes.d.ts.map +1 -0
- package/dist/adapters/kubernetes.js +56 -0
- package/dist/adapters/kubernetes.js.map +1 -0
- package/dist/adapters/markdown.d.ts +35 -0
- package/dist/adapters/markdown.d.ts.map +1 -0
- package/dist/adapters/markdown.js +36 -0
- package/dist/adapters/markdown.js.map +1 -0
- package/dist/adapters/openapi.d.ts +21 -0
- package/dist/adapters/openapi.d.ts.map +1 -0
- package/dist/adapters/openapi.js +101 -0
- package/dist/adapters/openapi.js.map +1 -0
- package/dist/adapters/protobuf.d.ts +34 -0
- package/dist/adapters/protobuf.d.ts.map +1 -0
- package/dist/adapters/protobuf.js +221 -0
- package/dist/adapters/protobuf.js.map +1 -0
- package/dist/adapters/shared.d.ts +65 -0
- package/dist/adapters/shared.d.ts.map +1 -0
- package/dist/adapters/shared.js +95 -0
- package/dist/adapters/shared.js.map +1 -0
- package/dist/adapters/sql.d.ts +104 -0
- package/dist/adapters/sql.d.ts.map +1 -0
- package/dist/adapters/sql.js +427 -0
- package/dist/adapters/sql.js.map +1 -0
- package/dist/adapters/terraform.d.ts +40 -0
- package/dist/adapters/terraform.d.ts.map +1 -0
- package/dist/adapters/terraform.js +186 -0
- package/dist/adapters/terraform.js.map +1 -0
- package/dist/adapters/text.d.ts +24 -0
- package/dist/adapters/text.d.ts.map +1 -0
- package/dist/adapters/text.js +31 -0
- package/dist/adapters/text.js.map +1 -0
- package/dist/config-validation.d.ts +18 -0
- package/dist/config-validation.d.ts.map +1 -0
- package/dist/config-validation.js +30 -0
- package/dist/config-validation.js.map +1 -0
- package/dist/coverage.d.ts +114 -0
- package/dist/coverage.d.ts.map +1 -0
- package/dist/coverage.js +0 -0
- package/dist/coverage.js.map +1 -0
- package/dist/ids.d.ts +12 -0
- package/dist/ids.d.ts.map +1 -0
- package/dist/ids.js +42 -0
- package/dist/ids.js.map +1 -0
- package/dist/index.d.ts +55 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/registry.d.ts +51 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +86 -0
- package/dist/registry.js.map +1 -0
- package/dist/staleness.d.ts +44 -0
- package/dist/staleness.d.ts.map +1 -0
- package/dist/staleness.js +35 -0
- package/dist/staleness.js.map +1 -0
- package/dist/text/delimiter-balance.d.ts +95 -0
- package/dist/text/delimiter-balance.d.ts.map +1 -0
- package/dist/text/delimiter-balance.js +209 -0
- package/dist/text/delimiter-balance.js.map +1 -0
- package/dist/text/line-index.d.ts +61 -0
- package/dist/text/line-index.d.ts.map +1 -0
- package/dist/text/line-index.js +75 -0
- package/dist/text/line-index.js.map +1 -0
- package/dist/text/yaml-lite.d.ts +73 -0
- package/dist/text/yaml-lite.d.ts.map +1 -0
- package/dist/text/yaml-lite.js +486 -0
- package/dist/text/yaml-lite.js.map +1 -0
- package/package.json +61 -3
- package/src/adapters/__golden__/adr-0001-sections.json +68 -0
- package/src/adapters/__golden__/app-compose-services.json +24 -0
- package/src/adapters/__golden__/app-image-stages.json +24 -0
- package/src/adapters/__golden__/infra-main-sections.json +46 -0
- package/src/adapters/__golden__/orders-events-operations.json +24 -0
- package/src/adapters/__golden__/orders-proto-sections.json +57 -0
- package/src/adapters/__golden__/orders-schema-statements.json +68 -0
- package/src/adapters/__golden__/users-api-operations.json +46 -0
- package/src/adapters/__golden__/web-manifests-resources.json +24 -0
- package/src/adapters/asyncapi.ts +147 -0
- package/src/adapters/docker.ts +170 -0
- package/src/adapters/kubernetes.ts +103 -0
- package/src/adapters/markdown.ts +88 -0
- package/src/adapters/openapi.ts +156 -0
- package/src/adapters/protobuf.ts +286 -0
- package/src/adapters/shared.ts +151 -0
- package/src/adapters/sql.ts +555 -0
- package/src/adapters/terraform.ts +261 -0
- package/src/adapters/text.ts +72 -0
- package/src/config-validation.ts +41 -0
- package/src/coverage.ts +336 -0
- package/src/ids.ts +57 -0
- package/src/index.ts +105 -0
- package/src/registry.ts +155 -0
- package/src/staleness.ts +69 -0
- package/src/text/delimiter-balance.ts +295 -0
- package/src/text/line-index.ts +108 -0
- package/src/text/yaml-lite.ts +565 -0
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Line-oriented byte indexing shared by every format adapter.
|
|
3
|
+
*
|
|
4
|
+
* Every adapter in this package chunks by *line range* (headings, top-level
|
|
5
|
+
* SQL statements, brace-delimited blocks, YAML documents, …), never by raw
|
|
6
|
+
* character offset, so a single small utility converts a 1-based inclusive
|
|
7
|
+
* line span into the byte-accurate `SourceRange` domain requires
|
|
8
|
+
* (`startLine`/`endLine` 1-based inclusive, `startByte`/`endByte` 0-based
|
|
9
|
+
* half-open — see `packages/domain/src/types/common.ts`).
|
|
10
|
+
*
|
|
11
|
+
* Splitting only ever happens right after a `\n` (0x0A, single ASCII byte,
|
|
12
|
+
* never a UTF-8 continuation byte), so every line boundary this module
|
|
13
|
+
* produces is automatically a safe UTF-8 boundary — no separate multi-byte
|
|
14
|
+
* safety check is needed the way the chunker package needs one for
|
|
15
|
+
* mid-line token-boundary splits.
|
|
16
|
+
*/
|
|
17
|
+
import type { SourceRange } from "@untangle-code/domain";
|
|
18
|
+
export interface LineIndex {
|
|
19
|
+
readonly buffer: Buffer;
|
|
20
|
+
/**
|
|
21
|
+
* Byte offset of the start of each line (0-based), one entry per line,
|
|
22
|
+
* PLUS one trailing sentinel equal to `buffer.length` — so
|
|
23
|
+
* `lineStarts[lineCount]` is always a valid "end of file" byte offset.
|
|
24
|
+
*/
|
|
25
|
+
readonly lineStarts: number[];
|
|
26
|
+
readonly lineCount: number;
|
|
27
|
+
}
|
|
28
|
+
/** Builds a `LineIndex` from full document content (a decoded UTF-8 string). */
|
|
29
|
+
export declare function buildLineIndex(content: string): LineIndex;
|
|
30
|
+
/**
|
|
31
|
+
* 1-based line number containing byte offset `byteOffset` (clamped into
|
|
32
|
+
* `[0, buffer.length]`). Binary search over `lineStarts` (sorted ascending,
|
|
33
|
+
* one entry per line plus the EOF sentinel — see {@link LineIndex}), used by
|
|
34
|
+
* any scanner that tracks byte offsets directly (e.g. the SQL adapter's
|
|
35
|
+
* per-statement spans) and needs the matching 1-based line number without
|
|
36
|
+
* re-walking the buffer from the start.
|
|
37
|
+
*/
|
|
38
|
+
export declare function lineNumberForByte(index: LineIndex, byteOffset: number): number;
|
|
39
|
+
/**
|
|
40
|
+
* Builds a `SourceRange` for the 1-based inclusive line span
|
|
41
|
+
* `[startLine, endLine]`. `endByte` is the byte offset of the start of the
|
|
42
|
+
* line AFTER `endLine` (or end-of-file for the last line), so two chunks
|
|
43
|
+
* built from adjacent line spans (`endLine` of one === `startLine - 1` of
|
|
44
|
+
* the next) are byte-adjacent with no gap and no overlap.
|
|
45
|
+
*/
|
|
46
|
+
export declare function rangeForLines(index: LineIndex, startLine: number, endLine: number): SourceRange;
|
|
47
|
+
/** Decodes the UTF-8 bytes `[startByte, endByte)` as a string. */
|
|
48
|
+
export declare function sliceBytes(index: LineIndex, startByte: number, endByte: number): string;
|
|
49
|
+
/** Convenience: raw content of the 1-based inclusive line span. */
|
|
50
|
+
export declare function sliceLines(index: LineIndex, startLine: number, endLine: number): string;
|
|
51
|
+
/**
|
|
52
|
+
* Splits content into physical lines WITHOUT their line terminator, plus a
|
|
53
|
+
* `LineIndex` for range/byte lookups. Adapters that scan line-by-line
|
|
54
|
+
* (Markdown headings, Dockerfile `FROM`, brace-block scanners, …) use this
|
|
55
|
+
* once per document.
|
|
56
|
+
*/
|
|
57
|
+
export declare function splitLines(content: string): {
|
|
58
|
+
lines: string[];
|
|
59
|
+
index: LineIndex;
|
|
60
|
+
};
|
|
61
|
+
//# sourceMappingURL=line-index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"line-index.d.ts","sourceRoot":"","sources":["../../src/text/line-index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,gFAAgF;AAChF,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAWzD;AAOD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAa9E;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,WAAW,CAI/F;AAED,kEAAkE;AAClE,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEvF;AAED,mEAAmE;AACnE,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAGvF;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,SAAS,CAAA;CAAE,CAMjF"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/** Builds a `LineIndex` from full document content (a decoded UTF-8 string). */
|
|
2
|
+
export function buildLineIndex(content) {
|
|
3
|
+
const buffer = Buffer.from(content, "utf8");
|
|
4
|
+
const lineStarts = [0];
|
|
5
|
+
for (let i = 0; i < buffer.length; i += 1) {
|
|
6
|
+
if (buffer[i] === 0x0a) {
|
|
7
|
+
lineStarts.push(i + 1);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
const lineCount = lineStarts.length;
|
|
11
|
+
lineStarts.push(buffer.length);
|
|
12
|
+
return { buffer, lineStarts, lineCount };
|
|
13
|
+
}
|
|
14
|
+
function lineStartByte(index, line) {
|
|
15
|
+
const clamped = Math.min(Math.max(line, 1), index.lineStarts.length);
|
|
16
|
+
return index.lineStarts[clamped - 1] ?? index.buffer.length;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* 1-based line number containing byte offset `byteOffset` (clamped into
|
|
20
|
+
* `[0, buffer.length]`). Binary search over `lineStarts` (sorted ascending,
|
|
21
|
+
* one entry per line plus the EOF sentinel — see {@link LineIndex}), used by
|
|
22
|
+
* any scanner that tracks byte offsets directly (e.g. the SQL adapter's
|
|
23
|
+
* per-statement spans) and needs the matching 1-based line number without
|
|
24
|
+
* re-walking the buffer from the start.
|
|
25
|
+
*/
|
|
26
|
+
export function lineNumberForByte(index, byteOffset) {
|
|
27
|
+
const target = Math.min(Math.max(byteOffset, 0), index.buffer.length);
|
|
28
|
+
let low = 0;
|
|
29
|
+
let high = index.lineCount - 1;
|
|
30
|
+
while (low < high) {
|
|
31
|
+
const mid = Math.ceil((low + high) / 2);
|
|
32
|
+
if ((index.lineStarts[mid] ?? 0) <= target) {
|
|
33
|
+
low = mid;
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
high = mid - 1;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return low + 1;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Builds a `SourceRange` for the 1-based inclusive line span
|
|
43
|
+
* `[startLine, endLine]`. `endByte` is the byte offset of the start of the
|
|
44
|
+
* line AFTER `endLine` (or end-of-file for the last line), so two chunks
|
|
45
|
+
* built from adjacent line spans (`endLine` of one === `startLine - 1` of
|
|
46
|
+
* the next) are byte-adjacent with no gap and no overlap.
|
|
47
|
+
*/
|
|
48
|
+
export function rangeForLines(index, startLine, endLine) {
|
|
49
|
+
const startByte = lineStartByte(index, startLine);
|
|
50
|
+
const endByte = lineStartByte(index, endLine + 1);
|
|
51
|
+
return { startLine, endLine, startByte, endByte };
|
|
52
|
+
}
|
|
53
|
+
/** Decodes the UTF-8 bytes `[startByte, endByte)` as a string. */
|
|
54
|
+
export function sliceBytes(index, startByte, endByte) {
|
|
55
|
+
return index.buffer.toString("utf8", startByte, endByte);
|
|
56
|
+
}
|
|
57
|
+
/** Convenience: raw content of the 1-based inclusive line span. */
|
|
58
|
+
export function sliceLines(index, startLine, endLine) {
|
|
59
|
+
const range = rangeForLines(index, startLine, endLine);
|
|
60
|
+
return sliceBytes(index, range.startByte, range.endByte);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Splits content into physical lines WITHOUT their line terminator, plus a
|
|
64
|
+
* `LineIndex` for range/byte lookups. Adapters that scan line-by-line
|
|
65
|
+
* (Markdown headings, Dockerfile `FROM`, brace-block scanners, …) use this
|
|
66
|
+
* once per document.
|
|
67
|
+
*/
|
|
68
|
+
export function splitLines(content) {
|
|
69
|
+
const index = buildLineIndex(content);
|
|
70
|
+
// `\r\n` and `\n` both split correctly here; a trailing `\r` (if any) is
|
|
71
|
+
// stripped so heading/keyword regexes don't have to account for it.
|
|
72
|
+
const lines = content.split("\n").map((line) => (line.endsWith("\r") ? line.slice(0, -1) : line));
|
|
73
|
+
return { lines, index };
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=line-index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"line-index.js","sourceRoot":"","sources":["../../src/text/line-index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Minimal block-style YAML subset parser.
|
|
3
|
+
*
|
|
4
|
+
* No YAML/JSON library is added here deliberately (see README
|
|
5
|
+
* "Entscheidungen"): this package's assigned paths cannot touch the
|
|
6
|
+
* workspace root lockfile, so pulling in an external dependency mid-wave
|
|
7
|
+
* would require an edit no other agent could safely race against. Instead
|
|
8
|
+
* this module implements exactly the YAML subset OpenAPI/AsyncAPI/
|
|
9
|
+
* Kubernetes/Compose documents actually use in practice: block mappings
|
|
10
|
+
* and sequences via indentation, single-line flow collections (`{a: 1}`,
|
|
11
|
+
* `[a, b]`), plain/single/double-quoted scalars, `|`/`>` block scalars,
|
|
12
|
+
* `#` comments, and `---`/`...` document separators. NOT supported:
|
|
13
|
+
* anchors/aliases, tags, multi-line flow collections, complex mapping
|
|
14
|
+
* keys. A document using one of those fails to parse — `parseYamlNode`
|
|
15
|
+
* throws `YamlParseError`, which every adapter using this module catches
|
|
16
|
+
* and turns into a visible degrade (architecture.md §22.2: "Parserfehler
|
|
17
|
+
* degradieren auf Textanalyse"), never a crash.
|
|
18
|
+
*/
|
|
19
|
+
export type YamlScalarValue = string | number | boolean | null;
|
|
20
|
+
export interface YamlScalarNode {
|
|
21
|
+
kind: "scalar";
|
|
22
|
+
startLine: number;
|
|
23
|
+
endLine: number;
|
|
24
|
+
value: YamlScalarValue;
|
|
25
|
+
}
|
|
26
|
+
export interface YamlMapEntry {
|
|
27
|
+
key: string;
|
|
28
|
+
keyLine: number;
|
|
29
|
+
value: YamlNode;
|
|
30
|
+
}
|
|
31
|
+
export interface YamlMapNode {
|
|
32
|
+
kind: "map";
|
|
33
|
+
startLine: number;
|
|
34
|
+
endLine: number;
|
|
35
|
+
entries: YamlMapEntry[];
|
|
36
|
+
}
|
|
37
|
+
export interface YamlSeqNode {
|
|
38
|
+
kind: "seq";
|
|
39
|
+
startLine: number;
|
|
40
|
+
endLine: number;
|
|
41
|
+
items: YamlNode[];
|
|
42
|
+
}
|
|
43
|
+
export type YamlNode = YamlScalarNode | YamlMapNode | YamlSeqNode;
|
|
44
|
+
export declare class YamlParseError extends Error {
|
|
45
|
+
readonly line: number;
|
|
46
|
+
constructor(message: string, line: number);
|
|
47
|
+
}
|
|
48
|
+
/** One `---`-separated document within a (possibly multi-document) YAML file. */
|
|
49
|
+
export interface YamlDocumentSpan {
|
|
50
|
+
startLine: number;
|
|
51
|
+
endLine: number;
|
|
52
|
+
text: string;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Splits raw content into `---`-separated document spans (Kubernetes
|
|
56
|
+
* manifests, spec.md §19 "je Dokument eine Ressource"). A leading `---` is
|
|
57
|
+
* just the start of the first document, not an empty document before it. A
|
|
58
|
+
* trailing `...` end-marker line is treated the same as `---` for the
|
|
59
|
+
* purpose of ending a document.
|
|
60
|
+
*/
|
|
61
|
+
export declare function splitYamlDocuments(content: string): YamlDocumentSpan[];
|
|
62
|
+
/**
|
|
63
|
+
* Parses one YAML document's full text (e.g. one `splitYamlDocuments()`
|
|
64
|
+
* span) into a `YamlNode` tree. Line numbers on every node are 1-based
|
|
65
|
+
* WITHIN `text` — add `lineOffset` (a span's `startLine - 1`) yourself when
|
|
66
|
+
* mapping back to the original multi-document file. Returns `null` for a
|
|
67
|
+
* document that is empty or comments-only. Throws `YamlParseError` (never
|
|
68
|
+
* any other error type) on anything outside the supported subset.
|
|
69
|
+
*/
|
|
70
|
+
export declare function parseYamlNode(text: string, lineOffset?: number): YamlNode | null;
|
|
71
|
+
export declare function mapGet(node: YamlNode | null | undefined, key: string): YamlNode | undefined;
|
|
72
|
+
export declare function scalarString(node: YamlNode | null | undefined): string | undefined;
|
|
73
|
+
//# sourceMappingURL=yaml-lite.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"yaml-lite.d.ts","sourceRoot":"","sources":["../../src/text/yaml-lite.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;AAE/D,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,eAAe,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,QAAQ,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,KAAK,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,KAAK,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB;AAED,MAAM,MAAM,QAAQ,GAAG,cAAc,GAAG,WAAW,GAAG,WAAW,CAAC;AAElE,qBAAa,cAAe,SAAQ,KAAK;aAGrB,IAAI,EAAE,MAAM;gBAD5B,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,MAAM;CAK/B;AAED,iFAAiF;AACjF,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAkBtE;AAsbD;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,SAAI,GAAG,QAAQ,GAAG,IAAI,CAY3E;AAID,wBAAgB,MAAM,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAG3F;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAKlF"}
|