effect-grammar 0.0.2 → 0.1.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.
Files changed (59) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +123 -64
  3. package/dist/combinators.d.ts +64 -27
  4. package/dist/combinators.d.ts.map +1 -1
  5. package/dist/combinators.js +73 -91
  6. package/dist/combinators.js.map +1 -1
  7. package/dist/core.d.ts +85 -0
  8. package/dist/core.d.ts.map +1 -0
  9. package/dist/core.js +34 -0
  10. package/dist/core.js.map +1 -0
  11. package/dist/errors.d.ts +19 -0
  12. package/dist/errors.d.ts.map +1 -0
  13. package/dist/errors.js +27 -0
  14. package/dist/errors.js.map +1 -0
  15. package/dist/grammar.d.ts +7 -190
  16. package/dist/grammar.d.ts.map +1 -1
  17. package/dist/grammar.js +7 -494
  18. package/dist/grammar.js.map +1 -1
  19. package/dist/index.d.ts +7 -6
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +6 -6
  22. package/dist/index.js.map +1 -1
  23. package/dist/parse.d.ts +5 -0
  24. package/dist/parse.d.ts.map +1 -0
  25. package/dist/parse.js +157 -0
  26. package/dist/parse.js.map +1 -0
  27. package/dist/print.d.ts +5 -0
  28. package/dist/print.d.ts.map +1 -0
  29. package/dist/print.js +121 -0
  30. package/dist/print.js.map +1 -0
  31. package/dist/render.d.ts +5 -0
  32. package/dist/render.d.ts.map +1 -0
  33. package/dist/render.js +64 -0
  34. package/dist/render.js.map +1 -0
  35. package/dist/schema.d.ts +6 -0
  36. package/dist/schema.d.ts.map +1 -0
  37. package/dist/schema.js +9 -0
  38. package/dist/schema.js.map +1 -0
  39. package/package.json +22 -21
  40. package/dist/error.d.ts +0 -28
  41. package/dist/error.d.ts.map +0 -1
  42. package/dist/error.js +0 -52
  43. package/dist/error.js.map +0 -1
  44. package/dist/parser.d.ts +0 -6
  45. package/dist/parser.d.ts.map +0 -1
  46. package/dist/parser.js +0 -6
  47. package/dist/parser.js.map +0 -1
  48. package/dist/run.d.ts +0 -6
  49. package/dist/run.d.ts.map +0 -1
  50. package/dist/run.js +0 -11
  51. package/dist/run.js.map +0 -1
  52. package/dist/state.d.ts +0 -51
  53. package/dist/state.d.ts.map +0 -1
  54. package/dist/state.js +0 -114
  55. package/dist/state.js.map +0 -1
  56. package/dist/stream.d.ts +0 -18
  57. package/dist/stream.d.ts.map +0 -1
  58. package/dist/stream.js +0 -38
  59. package/dist/stream.js.map +0 -1
package/dist/run.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAEvC,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AACxE,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAExD,yFAAyF;AACzF,MAAM,CAAC,MAAM,KAAK,GAAG,CAAO,KAAa,EAAE,CAAkC,EAAE,EAAE,CAC/E,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAA;IAC3C,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAClB,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,KAAK,CAAC;IACxC,qDAAqD;IACrD,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAC9D,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACpF,CAAA;AACH,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA"}
package/dist/state.d.ts DELETED
@@ -1,51 +0,0 @@
1
- import { Context, Effect, Option, Pull, Ref } from "effect";
2
- import { ParseError, UpstreamError } from "./error.ts";
3
- /**
4
- * The cursor a parser runs against. The same shape backs whole-string parsing
5
- * (`makeStringState`: buffer pre-filled, `done` from the start) and streaming
6
- * parsing (`makeStreamState`: `fill` pulls chunks from upstream on demand).
7
- *
8
- * Positions are absolute and monotonic. `base` is the absolute position of
9
- * `buffer[0]`; `release` drops consumed input before `pos`, which is only
10
- * done at points where no backtrack can reach it.
11
- */
12
- export interface ParseStateShape {
13
- readonly buffer: Ref.Ref<string>;
14
- readonly pos: Ref.Ref<number>;
15
- readonly base: Ref.Ref<number>;
16
- readonly fill: Effect.Effect<void, UpstreamError>;
17
- readonly done: Ref.Ref<boolean>;
18
- }
19
- declare const ParseState_base: Context.ServiceClass<ParseState, "ParseState", ParseStateShape>;
20
- export declare class ParseState extends ParseState_base {
21
- }
22
- export declare const makeStringState: (input: string) => Effect.Effect<ParseStateShape>;
23
- export declare const makeStreamState: <E>(pull: Pull.Pull<ReadonlyArray<string>, E>) => Effect.Effect<ParseStateShape>;
24
- export declare const getPos: Effect.Effect<number, never, ParseState>;
25
- export declare const seek: (p: number) => Effect.Effect<undefined, never, ParseState>;
26
- /** The character at the cursor, or `undefined` at end of input. Pulls upstream if needed. */
27
- export declare const peek: Effect.Effect<string | undefined, UpstreamError, ParseState>;
28
- /** Whether the cursor is at end of input. Pulls upstream until a chunk arrives or it ends. */
29
- export declare const isEof: Effect.Effect<boolean, UpstreamError, ParseState>;
30
- /**
31
- * Whether the input at the cursor starts with `s`. Pulls at most until `s`
32
- * is decided — bounded by the length of `s`.
33
- */
34
- export declare const startsWith: (s: string) => Effect.Effect<boolean, UpstreamError, ParseState>;
35
- /**
36
- * Match `re` at the cursor. Streaming caveat: while upstream is alive, a
37
- * match that reaches the end of the buffer may extend (maximal munch), and a
38
- * failed match may succeed after more input — so this pulls until the match
39
- * stabilizes. At a choice point over a long stream, prefer `literal`/`char`
40
- * alternatives, which decide within bounded input.
41
- */
42
- export declare const matchRegex: (re: RegExp) => Effect.Effect<Option.Option<string>, UpstreamError, ParseState>;
43
- /**
44
- * Drop buffered input before the cursor. Only call where no backtrack can
45
- * reach before `pos` (e.g. between top-level elements of a stream) — `seek`
46
- * before the released point defects.
47
- */
48
- export declare const release: Effect.Effect<void, never, ParseState>;
49
- export declare const failHere: (expected: string) => Effect.Effect<never, ParseError | UpstreamError, ParseState>;
50
- export {};
51
- //# sourceMappingURL=state.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAA;AAE3D,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAEtD;;;;;;;;GAQG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IAChC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IAC7B,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,CAAA;IACjD,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;CAChC;;AAED,qBAAa,UAAW,SAAQ,eAA4D;CAAG;AAE/F,eAAO,MAAM,eAAe,UAAW,MAAM,KAAG,MAAM,CAAC,MAAM,CAAC,eAAe,CASzE,CAAA;AAEJ,eAAO,MAAM,eAAe,GAAI,CAAC,QACzB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,KACxC,MAAM,CAAC,MAAM,CAAC,eAAe,CAkB5B,CAAA;AAEJ,eAAO,MAAM,MAAM,0CAAwD,CAAA;AAE3E,eAAO,MAAM,IAAI,MAAO,MAAM,gDAS1B,CAAA;AAQJ,6FAA6F;AAC7F,eAAO,MAAM,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,EAAE,aAAa,EAAE,UAAU,CAU7E,CAAA;AAED,8FAA8F;AAC9F,eAAO,MAAM,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,aAAa,EAAE,UAAU,CAGnE,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,UAAU,MAAO,MAAM,KAAG,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,aAAa,EAAE,UAAU,CAUnF,CAAA;AAEJ;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,OACjB,MAAM,KACT,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,aAAa,EAAE,UAAU,CAc7D,CAAA;AAEJ;;;;GAIG;AACH,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,CAQzD,CAAA;AAEF,eAAO,MAAM,QAAQ,aAAc,MAAM,iEAIrC,CAAA"}
package/dist/state.js DELETED
@@ -1,114 +0,0 @@
1
- import { Context, Effect, Option, Pull, Ref } from "effect";
2
- import { ParseError, UpstreamError } from "./error.js";
3
- export class ParseState extends Context.Service()("ParseState") {
4
- }
5
- export const makeStringState = (input) => Effect.gen(function* () {
6
- return {
7
- buffer: yield* Ref.make(input),
8
- pos: yield* Ref.make(0),
9
- base: yield* Ref.make(0),
10
- fill: Effect.void,
11
- done: yield* Ref.make(true),
12
- };
13
- });
14
- export const makeStreamState = (pull) => Effect.gen(function* () {
15
- const buffer = yield* Ref.make("");
16
- const done = yield* Ref.make(false);
17
- const next = pull.pipe(Pull.catchDone(() => Effect.succeed(undefined)), Effect.mapError((cause) => new UpstreamError({ cause })));
18
- const fill = Effect.gen(function* () {
19
- if (yield* Ref.get(done))
20
- return;
21
- const chunk = yield* next;
22
- if (chunk === undefined) {
23
- yield* Ref.set(done, true);
24
- }
25
- else {
26
- yield* Ref.update(buffer, (b) => b + chunk.join(""));
27
- }
28
- });
29
- return { buffer, pos: yield* Ref.make(0), base: yield* Ref.make(0), fill, done };
30
- });
31
- export const getPos = Effect.flatMap(ParseState, ({ pos }) => Ref.get(pos));
32
- export const seek = (p) => Effect.gen(function* () {
33
- const { pos, base } = yield* ParseState;
34
- if (p < (yield* Ref.get(base))) {
35
- return yield* Effect.die(new Error(`cannot rewind to position ${p}: input before it was released`));
36
- }
37
- yield* Ref.set(pos, p);
38
- });
39
- /** The buffered, not-yet-consumed input. */
40
- const remaining = Effect.gen(function* () {
41
- const { buffer, pos, base } = yield* ParseState;
42
- return (yield* Ref.get(buffer)).slice((yield* Ref.get(pos)) - (yield* Ref.get(base)));
43
- });
44
- /** The character at the cursor, or `undefined` at end of input. Pulls upstream if needed. */
45
- export const peek = Effect.gen(function* () {
46
- const { fill, done } = yield* ParseState;
47
- let rest = yield* remaining;
48
- while (rest.length === 0 && !(yield* Ref.get(done))) {
49
- yield* fill;
50
- rest = yield* remaining;
51
- }
52
- return rest[0];
53
- });
54
- /** Whether the cursor is at end of input. Pulls upstream until a chunk arrives or it ends. */
55
- export const isEof = Effect.map(peek, (c) => c === undefined);
56
- /**
57
- * Whether the input at the cursor starts with `s`. Pulls at most until `s`
58
- * is decided — bounded by the length of `s`.
59
- */
60
- export const startsWith = (s) => Effect.gen(function* () {
61
- const { fill, done } = yield* ParseState;
62
- while (true) {
63
- const rest = yield* remaining;
64
- if (rest.length >= s.length)
65
- return rest.startsWith(s);
66
- if (!s.startsWith(rest))
67
- return false;
68
- if (yield* Ref.get(done))
69
- return false;
70
- yield* fill;
71
- }
72
- });
73
- /**
74
- * Match `re` at the cursor. Streaming caveat: while upstream is alive, a
75
- * match that reaches the end of the buffer may extend (maximal munch), and a
76
- * failed match may succeed after more input — so this pulls until the match
77
- * stabilizes. At a choice point over a long stream, prefer `literal`/`char`
78
- * alternatives, which decide within bounded input.
79
- */
80
- export const matchRegex = (re) => Effect.gen(function* () {
81
- const { fill, done } = yield* ParseState;
82
- while (true) {
83
- const rest = yield* remaining;
84
- // Reset so /g and /y do not carry lastIndex across matches or fills.
85
- re.lastIndex = 0;
86
- const m = re.exec(rest);
87
- const matched = m !== null && m.index === 0;
88
- const exhausted = yield* Ref.get(done);
89
- if (matched && (m[0].length < rest.length || exhausted))
90
- return Option.some(m[0]);
91
- if (exhausted)
92
- return Option.none();
93
- yield* fill;
94
- }
95
- });
96
- /**
97
- * Drop buffered input before the cursor. Only call where no backtrack can
98
- * reach before `pos` (e.g. between top-level elements of a stream) — `seek`
99
- * before the released point defects.
100
- */
101
- export const release = Effect.gen(function* () {
102
- const { buffer, pos, base } = yield* ParseState;
103
- const p = yield* Ref.get(pos);
104
- const b = yield* Ref.get(base);
105
- if (p > b) {
106
- yield* Ref.update(buffer, (buf) => buf.slice(p - b));
107
- yield* Ref.set(base, p);
108
- }
109
- });
110
- export const failHere = (expected) => Effect.gen(function* () {
111
- const pos = yield* getPos;
112
- return yield* new ParseError({ pos, expected, found: yield* peek });
113
- });
114
- //# sourceMappingURL=state.js.map
package/dist/state.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"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"}
package/dist/stream.d.ts DELETED
@@ -1,18 +0,0 @@
1
- import { Effect, Scope, Stream } from "effect";
2
- import { UpstreamError } from "./error.ts";
3
- import { ParseState } from "./state.ts";
4
- /**
5
- * Run a parser once over a stream of chunks, pulling input on demand. The
6
- * parser sees one continuous input; chunk boundaries are invisible to it.
7
- * Upstream failures surface as `UpstreamError`.
8
- */
9
- export declare const parseStream: <A, E, E2, R2>(input: Stream.Stream<string, E2, R2>, p: Effect.Effect<A, E, ParseState>) => Effect.Effect<A, E | UpstreamError, Exclude<R2, Scope.Scope>>;
10
- /**
11
- * Parse a stream of chunks into a stream of values: run `element` repeatedly
12
- * until end of input, emitting each value as soon as it parses. Consumed
13
- * input is released between elements, so memory stays bounded by one
14
- * element (unless an `attempt` inside the element holds more). Each element
15
- * must consume input — a zero-width element is a defect.
16
- */
17
- export declare const streamElements: <A, E, E2, R2>(input: Stream.Stream<string, E2, R2>, element: Effect.Effect<A, E, ParseState>) => Stream.Stream<A, E | UpstreamError, Exclude<R2, Scope.Scope>>;
18
- //# sourceMappingURL=stream.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../src/stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAU,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAEtD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,EAAkC,UAAU,EAAW,MAAM,YAAY,CAAA;AAEhF;;;;GAIG;AACH,eAAO,MAAM,WAAW,GAAI,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,SAC/B,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,KACjC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,KACjC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,aAAa,EAAE,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,CAO5D,CAAA;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,GAAI,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,SAClC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,WAC3B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,KACvC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,aAAa,EAAE,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,CAqB5D,CAAA"}
package/dist/stream.js DELETED
@@ -1,38 +0,0 @@
1
- import { Effect, Option, Scope, Stream } from "effect";
2
- import { UpstreamError } from "./error.js";
3
- import { getPos, isEof, makeStreamState, ParseState, release } from "./state.js";
4
- /**
5
- * Run a parser once over a stream of chunks, pulling input on demand. The
6
- * parser sees one continuous input; chunk boundaries are invisible to it.
7
- * Upstream failures surface as `UpstreamError`.
8
- */
9
- export const parseStream = (input, p) => Effect.scoped(Effect.gen(function* () {
10
- const pull = yield* Stream.toPull(input);
11
- const state = yield* makeStreamState(pull);
12
- return yield* p.pipe(Effect.provideService(ParseState, state));
13
- }));
14
- /**
15
- * Parse a stream of chunks into a stream of values: run `element` repeatedly
16
- * until end of input, emitting each value as soon as it parses. Consumed
17
- * input is released between elements, so memory stays bounded by one
18
- * element (unless an `attempt` inside the element holds more). Each element
19
- * must consume input — a zero-width element is a defect.
20
- */
21
- export const streamElements = (input, element) => Stream.unwrap(Effect.gen(function* () {
22
- const pull = yield* Stream.toPull(input);
23
- const state = yield* makeStreamState(pull);
24
- const withState = (eff) => eff.pipe(Effect.provideService(ParseState, state));
25
- const step = Effect.gen(function* () {
26
- if (yield* withState(isEof))
27
- return [[], Option.none()];
28
- const mark = yield* withState(getPos);
29
- const a = yield* withState(element);
30
- if ((yield* withState(getPos)) === mark) {
31
- return yield* Effect.die(new Error("streamElements: element parser succeeded without consuming input"));
32
- }
33
- yield* withState(release);
34
- return [[a], Option.some(undefined)];
35
- });
36
- return Stream.paginate(undefined, () => step);
37
- }));
38
- //# sourceMappingURL=stream.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stream.js","sourceRoot":"","sources":["../src/stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAEtD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEhF;;;;GAIG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,KAAoC,EACpC,CAAkC,EAC6B,EAAE,CACjE,MAAM,CAAC,MAAM,CACX,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACxC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;IAC1C,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAA;AAChE,CAAC,CAAC,CACH,CAAA;AAEH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,KAAoC,EACpC,OAAwC,EACuB,EAAE,CACjE,MAAM,CAAC,MAAM,CACX,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACxC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;IAC1C,MAAM,SAAS,GAAG,CAAQ,GAAqC,EAAE,EAAE,CACjE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAA;IACpD,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC/B,IAAI,KAAK,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC;YAAE,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE,CAAU,CAAA;QAChE,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;QACrC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;QACnC,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACxC,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CACtB,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAC9E,CAAA;QACH,CAAC;QACD,KAAK,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;QACzB,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAU,CAAA;IAC/C,CAAC,CAAC,CAAA;IACF,OAAO,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;AAC/C,CAAC,CAAC,CACH,CAAA"}