@opendatalabs/personal-server-ts-server 1.34.2 → 1.35.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.
Files changed (183) hide show
  1. package/dist/api-auth.d.ts +1 -0
  2. package/dist/api-auth.d.ts.map +1 -1
  3. package/dist/api-auth.js.map +1 -1
  4. package/dist/api.d.ts +3 -0
  5. package/dist/api.d.ts.map +1 -1
  6. package/dist/api.js +3 -0
  7. package/dist/api.js.map +1 -1
  8. package/dist/app.d.ts +14 -2
  9. package/dist/app.d.ts.map +1 -1
  10. package/dist/app.js +64 -8
  11. package/dist/app.js.map +1 -1
  12. package/dist/bootstrap.d.ts +19 -0
  13. package/dist/bootstrap.d.ts.map +1 -1
  14. package/dist/bootstrap.js +87 -4
  15. package/dist/bootstrap.js.map +1 -1
  16. package/dist/client.d.ts +1 -1
  17. package/dist/client.d.ts.map +1 -1
  18. package/dist/client.js +7 -0
  19. package/dist/client.js.map +1 -1
  20. package/dist/enclave-main.d.ts.map +1 -1
  21. package/dist/enclave-main.js +0 -2
  22. package/dist/enclave-main.js.map +1 -1
  23. package/dist/mcp/durable-state.d.ts +2 -1
  24. package/dist/mcp/durable-state.d.ts.map +1 -1
  25. package/dist/mcp/durable-state.js +35 -1
  26. package/dist/mcp/durable-state.js.map +1 -1
  27. package/dist/pdpp/bootstrap.d.ts.map +1 -1
  28. package/dist/pdpp/bootstrap.js +1 -0
  29. package/dist/pdpp/bootstrap.js.map +1 -1
  30. package/dist/pdpp/records-bootstrap.d.ts +47 -1
  31. package/dist/pdpp/records-bootstrap.d.ts.map +1 -1
  32. package/dist/pdpp/records-bootstrap.js +78 -2
  33. package/dist/pdpp/records-bootstrap.js.map +1 -1
  34. package/dist/pdpp/replica-authorization.d.ts +35 -0
  35. package/dist/pdpp/replica-authorization.d.ts.map +1 -0
  36. package/dist/pdpp/replica-authorization.js +234 -0
  37. package/dist/pdpp/replica-authorization.js.map +1 -0
  38. package/dist/pending-blob-deletions.d.ts +1 -0
  39. package/dist/pending-blob-deletions.d.ts.map +1 -1
  40. package/dist/pending-blob-deletions.js +8 -4
  41. package/dist/pending-blob-deletions.js.map +1 -1
  42. package/dist/routes/data.d.ts.map +1 -1
  43. package/dist/routes/data.js +5 -0
  44. package/dist/routes/data.js.map +1 -1
  45. package/dist/routes/mcp.d.ts +18 -2
  46. package/dist/routes/mcp.d.ts.map +1 -1
  47. package/dist/routes/mcp.js +111 -11
  48. package/dist/routes/mcp.js.map +1 -1
  49. package/dist/routes/oura.d.ts +6 -0
  50. package/dist/routes/oura.d.ts.map +1 -0
  51. package/dist/routes/oura.js +272 -0
  52. package/dist/routes/oura.js.map +1 -0
  53. package/dist/routes/pdpp-auth-query-keys.d.ts +7 -0
  54. package/dist/routes/pdpp-auth-query-keys.d.ts.map +1 -0
  55. package/dist/routes/pdpp-auth-query-keys.js +25 -0
  56. package/dist/routes/pdpp-auth-query-keys.js.map +1 -0
  57. package/dist/routes/pdpp-auth.d.ts +3 -1
  58. package/dist/routes/pdpp-auth.d.ts.map +1 -1
  59. package/dist/routes/pdpp-auth.js +126 -45
  60. package/dist/routes/pdpp-auth.js.map +1 -1
  61. package/dist/routes/pdpp-blobs.d.ts +13 -1
  62. package/dist/routes/pdpp-blobs.d.ts.map +1 -1
  63. package/dist/routes/pdpp-blobs.js +100 -65
  64. package/dist/routes/pdpp-blobs.js.map +1 -1
  65. package/dist/routes/pdpp-connections.d.ts.map +1 -1
  66. package/dist/routes/pdpp-connections.js +24 -1
  67. package/dist/routes/pdpp-connections.js.map +1 -1
  68. package/dist/routes/pdpp-instance-bindings.d.ts +3 -0
  69. package/dist/routes/pdpp-instance-bindings.d.ts.map +1 -1
  70. package/dist/routes/pdpp-instance-bindings.js +63 -0
  71. package/dist/routes/pdpp-instance-bindings.js.map +1 -1
  72. package/dist/routes/pdpp-record-query.d.ts +19 -0
  73. package/dist/routes/pdpp-record-query.d.ts.map +1 -0
  74. package/dist/routes/pdpp-record-query.js +51 -0
  75. package/dist/routes/pdpp-record-query.js.map +1 -0
  76. package/dist/routes/pdpp-records.d.ts +12 -1
  77. package/dist/routes/pdpp-records.d.ts.map +1 -1
  78. package/dist/routes/pdpp-records.js +120 -233
  79. package/dist/routes/pdpp-records.js.map +1 -1
  80. package/dist/routes/pdpp-replica-quarantine-fixture.d.ts +65 -0
  81. package/dist/routes/pdpp-replica-quarantine-fixture.d.ts.map +1 -0
  82. package/dist/routes/pdpp-replica-quarantine-fixture.js +389 -0
  83. package/dist/routes/pdpp-replica-quarantine-fixture.js.map +1 -0
  84. package/dist/storage/claude-method-transition.d.ts +12 -0
  85. package/dist/storage/claude-method-transition.d.ts.map +1 -0
  86. package/dist/storage/claude-method-transition.js +139 -0
  87. package/dist/storage/claude-method-transition.js.map +1 -0
  88. package/dist/storage/import-operations.d.ts +16 -0
  89. package/dist/storage/import-operations.d.ts.map +1 -1
  90. package/dist/storage/import-operations.js +54 -1
  91. package/dist/storage/import-operations.js.map +1 -1
  92. package/dist/storage/index-schema.d.ts +1 -1
  93. package/dist/storage/index-schema.d.ts.map +1 -1
  94. package/dist/storage/index-schema.js +22 -5
  95. package/dist/storage/index-schema.js.map +1 -1
  96. package/dist/storage/legacy-scope-authority.d.ts.map +1 -1
  97. package/dist/storage/legacy-scope-authority.js +83 -11
  98. package/dist/storage/legacy-scope-authority.js.map +1 -1
  99. package/dist/storage/node-data-storage.d.ts.map +1 -1
  100. package/dist/storage/node-data-storage.js +58 -2
  101. package/dist/storage/node-data-storage.js.map +1 -1
  102. package/dist/storage/pdpp-binary-chunks.d.ts +120 -0
  103. package/dist/storage/pdpp-binary-chunks.d.ts.map +1 -0
  104. package/dist/storage/pdpp-binary-chunks.js +480 -0
  105. package/dist/storage/pdpp-binary-chunks.js.map +1 -0
  106. package/dist/storage/pdpp-records-sqlite-store.d.ts +96 -15
  107. package/dist/storage/pdpp-records-sqlite-store.d.ts.map +1 -1
  108. package/dist/storage/pdpp-records-sqlite-store.js +616 -211
  109. package/dist/storage/pdpp-records-sqlite-store.js.map +1 -1
  110. package/dist/storage/pdpp-replica-canonical-port.d.ts +202 -0
  111. package/dist/storage/pdpp-replica-canonical-port.d.ts.map +1 -0
  112. package/dist/storage/pdpp-replica-canonical-port.js +451 -0
  113. package/dist/storage/pdpp-replica-canonical-port.js.map +1 -0
  114. package/dist/storage/pdpp-replica-coordinator-state.d.ts +16 -0
  115. package/dist/storage/pdpp-replica-coordinator-state.d.ts.map +1 -0
  116. package/dist/storage/pdpp-replica-coordinator-state.js +25 -0
  117. package/dist/storage/pdpp-replica-coordinator-state.js.map +1 -0
  118. package/dist/storage/pdpp-replica-copies.d.ts +81 -0
  119. package/dist/storage/pdpp-replica-copies.d.ts.map +1 -0
  120. package/dist/storage/pdpp-replica-copies.js +59 -0
  121. package/dist/storage/pdpp-replica-copies.js.map +1 -0
  122. package/dist/storage/pdpp-replica-reconciler.d.ts +96 -0
  123. package/dist/storage/pdpp-replica-reconciler.d.ts.map +1 -0
  124. package/dist/storage/pdpp-replica-reconciler.js +710 -0
  125. package/dist/storage/pdpp-replica-reconciler.js.map +1 -0
  126. package/dist/storage/pdpp-replica-sql.d.ts +13 -0
  127. package/dist/storage/pdpp-replica-sql.d.ts.map +1 -0
  128. package/dist/storage/pdpp-replica-sql.js +43 -0
  129. package/dist/storage/pdpp-replica-sql.js.map +1 -0
  130. package/dist/storage/pdpp-replica-staging.d.ts +36 -0
  131. package/dist/storage/pdpp-replica-staging.d.ts.map +1 -0
  132. package/dist/storage/pdpp-replica-staging.js +202 -0
  133. package/dist/storage/pdpp-replica-staging.js.map +1 -0
  134. package/dist/storage/pdpp-replica-visibility-view.d.ts +64 -0
  135. package/dist/storage/pdpp-replica-visibility-view.d.ts.map +1 -0
  136. package/dist/storage/pdpp-replica-visibility-view.js +1397 -0
  137. package/dist/storage/pdpp-replica-visibility-view.js.map +1 -0
  138. package/dist/storage/pdpp-replica-writer-identity.d.ts +64 -0
  139. package/dist/storage/pdpp-replica-writer-identity.d.ts.map +1 -0
  140. package/dist/storage/pdpp-replica-writer-identity.js +81 -0
  141. package/dist/storage/pdpp-replica-writer-identity.js.map +1 -0
  142. package/dist/storage/pdpp-replication-door.d.ts +60 -0
  143. package/dist/storage/pdpp-replication-door.d.ts.map +1 -0
  144. package/dist/storage/pdpp-replication-door.js +203 -0
  145. package/dist/storage/pdpp-replication-door.js.map +1 -0
  146. package/dist/storage/pdpp-replication-host.d.ts +67 -0
  147. package/dist/storage/pdpp-replication-host.d.ts.map +1 -0
  148. package/dist/storage/pdpp-replication-host.js +159 -0
  149. package/dist/storage/pdpp-replication-host.js.map +1 -0
  150. package/dist/storage/pdpp-replication-memory.fixture.d.ts +2 -0
  151. package/dist/storage/pdpp-replication-memory.fixture.d.ts.map +1 -0
  152. package/dist/storage/pdpp-replication-memory.fixture.js +267 -0
  153. package/dist/storage/pdpp-replication-memory.fixture.js.map +1 -0
  154. package/dist/storage/pdpp-replication-preparation.d.ts +3 -0
  155. package/dist/storage/pdpp-replication-preparation.d.ts.map +1 -0
  156. package/dist/storage/pdpp-replication-preparation.js +3 -0
  157. package/dist/storage/pdpp-replication-preparation.js.map +1 -0
  158. package/dist/storage/pdpp-replication-promotion-memory.fixture.d.ts +2 -0
  159. package/dist/storage/pdpp-replication-promotion-memory.fixture.d.ts.map +1 -0
  160. package/dist/storage/pdpp-replication-promotion-memory.fixture.js +65 -0
  161. package/dist/storage/pdpp-replication-promotion-memory.fixture.js.map +1 -0
  162. package/dist/storage/pdpp-replication-receiver.d.ts +230 -0
  163. package/dist/storage/pdpp-replication-receiver.d.ts.map +1 -0
  164. package/dist/storage/pdpp-replication-receiver.js +950 -0
  165. package/dist/storage/pdpp-replication-receiver.js.map +1 -0
  166. package/dist/storage/pdpp-replication-sqlite.d.ts +95 -0
  167. package/dist/storage/pdpp-replication-sqlite.d.ts.map +1 -0
  168. package/dist/storage/pdpp-replication-sqlite.js +615 -0
  169. package/dist/storage/pdpp-replication-sqlite.js.map +1 -0
  170. package/dist/storage/pdpp-replication-transport.d.ts +39 -0
  171. package/dist/storage/pdpp-replication-transport.d.ts.map +1 -0
  172. package/dist/storage/pdpp-replication-transport.js +196 -0
  173. package/dist/storage/pdpp-replication-transport.js.map +1 -0
  174. package/dist/storage/schema-versions.d.ts +5 -0
  175. package/dist/storage/schema-versions.d.ts.map +1 -0
  176. package/dist/storage/schema-versions.js +26 -0
  177. package/dist/storage/schema-versions.js.map +1 -0
  178. package/dist/storage/strava-method-transition.d.ts +18 -0
  179. package/dist/storage/strava-method-transition.d.ts.map +1 -0
  180. package/dist/storage/strava-method-transition.js +209 -0
  181. package/dist/storage/strava-method-transition.js.map +1 -0
  182. package/dist/ui/ps-lite-debug.js +154947 -124896
  183. package/package.json +3 -3
@@ -0,0 +1,59 @@
1
+ import { perform, runEffectSync, } from "@opendatalabs/personal-server-ts-core/replication/effects";
2
+ import { replicaCopies, REPLICA_COPY_MIGRATION, } from "@opendatalabs/personal-server-ts-core/replication/copies";
3
+ import { nodeReplicaContext } from "./pdpp-replica-sql.js";
4
+ /**
5
+ * Batch-copy retention, finalized-fact history and batch disposition
6
+ * (contract v3.1, replica-copy-promotion-contract-1021-v3.md) on Node. The
7
+ * transitions are core's (`core/replication/copies.ts`), shared with PS-Lite;
8
+ * this binds them to one better-sqlite3 connection. Every transition is one
9
+ * SQLite transaction and idempotent under replay.
10
+ */
11
+ export { REPLICA_COPY_MIGRATION, ReplicaCopyRefused, } from "@opendatalabs/personal-server-ts-core/replication/copies";
12
+ export { REPLICA_REFETCH_BUDGET } from "@opendatalabs/personal-server-ts-core/replication/copy-promotion";
13
+ export function createReplicaCopies(deps) {
14
+ const { db } = deps;
15
+ const context = nodeReplicaContext(db);
16
+ const run = (effect) => runEffectSync(effect, context);
17
+ const copies = replicaCopies({
18
+ owner: deps.owner,
19
+ importEnvelope: (envelope, blobs, id) => perform(() => deps.importEnvelope(envelope, blobs, id)),
20
+ quarantineConnection: (instance) => perform(() => deps.quarantineConnection(instance)),
21
+ preview: {
22
+ show: (id, envelope, blobsJson) => perform(() => deps.preview.show(id, envelope, blobsJson)),
23
+ hide: (id, state) => perform(() => deps.preview.hide(id, state)),
24
+ },
25
+ releaseBytes: (id, blobIds) => perform(() => deps.releaseBytes(id, blobIds)),
26
+ // A nested better-sqlite3 transaction is a savepoint.
27
+ savepoint: (effect) => perform(() => db.transaction(() => run(effect))()),
28
+ now: deps.now,
29
+ });
30
+ const immediate = (effect) => db.transaction(() => run(effect)).immediate();
31
+ return {
32
+ REPLICA_COPY_MIGRATION,
33
+ decide: (id, refetch) => run(copies.decide(id, refetch)),
34
+ disposition: (id) => run(copies.disposition(id)),
35
+ copies: (id) => run(copies.copies(id)),
36
+ /**
37
+ * Retain one valid copy (contract §3 "Stage copy", amendment C), then
38
+ * decide and apply the quarantine set. Returns the copy key and decision.
39
+ * An input failing a validity check is recorded as a reject only.
40
+ */
41
+ stage: (copy, refetch) => immediate(copies.stage(copy, refetch)),
42
+ /**
43
+ * Append a verified finalized fact for one registered slot (F2). A fact
44
+ * from another owner is refused (a diagnostic, never a fact). Returns
45
+ * true when it is new.
46
+ */
47
+ recordFact: (input) => run(copies.recordFact(input)),
48
+ /** Apply a non-promoting decision's durable effects (coordinator step). */
49
+ apply(id, decision) {
50
+ immediate(copies.apply(id, decision));
51
+ },
52
+ terminate(id, reason) {
53
+ immediate(copies.terminate(id, reason));
54
+ },
55
+ /** Promote one copy (contract §3, amendments E and F). */
56
+ promote: (input) => immediate(copies.promote(input)),
57
+ };
58
+ }
59
+ //# sourceMappingURL=pdpp-replica-copies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pdpp-replica-copies.js","sourceRoot":"","sources":["../../src/storage/pdpp-replica-copies.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,96 @@
1
+ import type { Database } from "better-sqlite3";
2
+ import { type ReplicaOperation, type RecordOperation } from "@opendatalabs/personal-server-ts-core/replication/envelope";
3
+ import { type MergeContext, type ReplicaMergePlan } from "@opendatalabs/personal-server-ts-core/replication/merge-plan";
4
+ /**
5
+ * Durable state of the incremental reconciler. Replica tables only, created
6
+ * by the receiver, so a database that never enabled replication has none.
7
+ * - state: how far each retained table has been ingested (rowid frontiers).
8
+ * - bindings, equivocations: per-connection facts that `connectionFromFacts`
9
+ * needs, kept as retained evidence arrives instead of re-read from it.
10
+ * - connections: the last committed decision per connection, so a change is
11
+ * expanded to the connection's keys once, not on every import.
12
+ * - blockers: keys with an unresolved issue; a completion of their stream
13
+ * cannot be available.
14
+ * - dependencies: the operation ids each stream's retained completions pin,
15
+ * so an operation that arrives, or gains a variant, re-queues them.
16
+ * - queue: work not yet reconciled. `background` marks entries of a paged
17
+ * pass that an import does not have to finish.
18
+ */
19
+ export declare const RECONCILE_MIGRATION: string;
20
+ /** Work one bounded call may load: retained operations and their JSON bytes. */
21
+ export interface ReplicaReconcilePage {
22
+ operations: number;
23
+ bytes: number;
24
+ }
25
+ /** Cumulative retained evidence the reconciler loaded. For bounds tests. */
26
+ export interface ReplicaReconcileStats {
27
+ operations: number;
28
+ bytes: number;
29
+ entries: number;
30
+ }
31
+ type Binding = {
32
+ source_id: string | null;
33
+ method: string | null;
34
+ generation: number;
35
+ deleted_at: string | null;
36
+ };
37
+ type Upsert = Extract<ReplicaOperation, {
38
+ kind: "upsert";
39
+ }>;
40
+ /**
41
+ * Incremental reconcile of retained history into the canonical tables.
42
+ *
43
+ * The canonical result equals a reconcile of the full retained set: a
44
+ * connection's eligibility comes from `connectionFromFacts` over facts kept
45
+ * as evidence arrives, and each key is planned by `planReplicaMerge` over the
46
+ * connection's unique lifecycle and that key's operations only. Evidence
47
+ * marks the keys, connections and completions it can change. A connection
48
+ * whose decision changed is expanded to all of its keys and completions.
49
+ *
50
+ * The receiver supplies the canonical effects; this module decides which
51
+ * work exists and does it in bounded pages.
52
+ */
53
+ export declare function createReplicaReconciler(deps: {
54
+ db: Database;
55
+ owner: string;
56
+ declarations: () => MergeContext["declarations"];
57
+ effects: {
58
+ binding(instance: string): Binding | undefined;
59
+ write(instance: string, stream: string, key: string, operation: RecordOperation | null): void;
60
+ quarantineKey(instance: string, generation: number, stream: string, recordKey: string): void;
61
+ quarantineConnection(instance: string): boolean;
62
+ isRecordQuarantined(instance: string, stream: string, key: string): boolean;
63
+ verifiedBlobs(blobs: Upsert["blobs"]): Set<string>;
64
+ persistBlobs(operation: Upsert): void;
65
+ markBindingConflict(input: {
66
+ connectionId: string;
67
+ reason: "source_binding_conflict" | "local_mapping_conflict";
68
+ evidence: unknown;
69
+ }): boolean;
70
+ };
71
+ }): {
72
+ /** Mark what an imported envelope can change, retained duplicates included. */
73
+ touch(operations: readonly ReplicaOperation[]): void;
74
+ touchBlobs: (blobIds: readonly string[]) => void;
75
+ /** Mark one key, e.g. a local write that completes a conflict. */
76
+ touchKey(instance: string, stream: string, recordKey: string): void;
77
+ /** Mark a connection whose quarantine fact changed outside a reconcile. */
78
+ touchConnection(instance: string): void;
79
+ /**
80
+ * Queue a full pass: every connection, expanded to all its keys and
81
+ * completions. Needed when declarations or validators change.
82
+ */
83
+ beginPass(): void;
84
+ drain: (input: {
85
+ background: boolean;
86
+ page?: ReplicaReconcilePage;
87
+ }) => {
88
+ plan: ReplicaMergePlan;
89
+ complete: boolean;
90
+ explaining: ReplicaOperation[];
91
+ };
92
+ queued: () => boolean;
93
+ stats: () => ReplicaReconcileStats;
94
+ };
95
+ export {};
96
+ //# sourceMappingURL=pdpp-replica-reconciler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pdpp-replica-reconciler.d.ts","sourceRoot":"","sources":["../../src/storage/pdpp-replica-reconciler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAa,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAGL,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACrB,MAAM,4DAA4D,CAAC;AACpE,OAAO,EAIL,KAAK,YAAY,EAEjB,KAAK,gBAAgB,EACtB,MAAM,8DAA8D,CAAC;AActE;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,mBAAmB,QAgB/B,CAAC;AAkBF,gFAAgF;AAChF,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AACD,4EAA4E;AAC5E,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,KAAK,OAAO,GAAG;IACb,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC;AACF,KAAK,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,CAAC;AA+B5D;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE;IAC5C,EAAE,EAAE,QAAQ,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,YAAY,CAAC,cAAc,CAAC,CAAC;IACjD,OAAO,EAAE;QACP,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;QAC/C,KAAK,CACH,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,eAAe,GAAG,IAAI,GAChC,IAAI,CAAC;QACR,aAAa,CACX,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,IAAI,CAAC;QACR,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QAChD,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;QAC5E,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACnD,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACtC,mBAAmB,CAAC,KAAK,EAAE;YACzB,YAAY,EAAE,MAAM,CAAC;YACrB,MAAM,EAAE,yBAAyB,GAAG,wBAAwB,CAAC;YAC7D,QAAQ,EAAE,OAAO,CAAC;SACnB,GAAG,OAAO,CAAC;KACb,CAAC;CACH;IAi3BG,+EAA+E;sBAC7D,SAAS,gBAAgB,EAAE;0BAlwBlB,SAAS,MAAM,EAAE;IAuwB5C,kEAAkE;uBAC/C,MAAM,UAAU,MAAM,aAAa,MAAM;IAI5D,2EAA2E;8BACjD,MAAM;IAGhC;;;OAGG;;mBAxFiB;QAAE,UAAU,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,oBAAoB,CAAA;KAAE,KAAG;QAC3E,IAAI,EAAE,gBAAgB,CAAC;QACvB,QAAQ,EAAE,OAAO,CAAC;QAClB,UAAU,EAAE,gBAAgB,EAAE,CAAC;KAChC;kBA6DkB,OAAO;iBAsCb,qBAAqB;EAEnC"}