@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.
- package/dist/api-auth.d.ts +1 -0
- package/dist/api-auth.d.ts.map +1 -1
- package/dist/api-auth.js.map +1 -1
- package/dist/api.d.ts +3 -0
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +3 -0
- package/dist/api.js.map +1 -1
- package/dist/app.d.ts +14 -2
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +64 -8
- package/dist/app.js.map +1 -1
- package/dist/bootstrap.d.ts +19 -0
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +87 -4
- package/dist/bootstrap.js.map +1 -1
- package/dist/client.d.ts +1 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +7 -0
- package/dist/client.js.map +1 -1
- package/dist/enclave-main.d.ts.map +1 -1
- package/dist/enclave-main.js +0 -2
- package/dist/enclave-main.js.map +1 -1
- package/dist/mcp/durable-state.d.ts +2 -1
- package/dist/mcp/durable-state.d.ts.map +1 -1
- package/dist/mcp/durable-state.js +35 -1
- package/dist/mcp/durable-state.js.map +1 -1
- package/dist/pdpp/bootstrap.d.ts.map +1 -1
- package/dist/pdpp/bootstrap.js +1 -0
- package/dist/pdpp/bootstrap.js.map +1 -1
- package/dist/pdpp/records-bootstrap.d.ts +47 -1
- package/dist/pdpp/records-bootstrap.d.ts.map +1 -1
- package/dist/pdpp/records-bootstrap.js +78 -2
- package/dist/pdpp/records-bootstrap.js.map +1 -1
- package/dist/pdpp/replica-authorization.d.ts +35 -0
- package/dist/pdpp/replica-authorization.d.ts.map +1 -0
- package/dist/pdpp/replica-authorization.js +234 -0
- package/dist/pdpp/replica-authorization.js.map +1 -0
- package/dist/pending-blob-deletions.d.ts +1 -0
- package/dist/pending-blob-deletions.d.ts.map +1 -1
- package/dist/pending-blob-deletions.js +8 -4
- package/dist/pending-blob-deletions.js.map +1 -1
- package/dist/routes/data.d.ts.map +1 -1
- package/dist/routes/data.js +5 -0
- package/dist/routes/data.js.map +1 -1
- package/dist/routes/mcp.d.ts +18 -2
- package/dist/routes/mcp.d.ts.map +1 -1
- package/dist/routes/mcp.js +111 -11
- package/dist/routes/mcp.js.map +1 -1
- package/dist/routes/oura.d.ts +6 -0
- package/dist/routes/oura.d.ts.map +1 -0
- package/dist/routes/oura.js +272 -0
- package/dist/routes/oura.js.map +1 -0
- package/dist/routes/pdpp-auth-query-keys.d.ts +7 -0
- package/dist/routes/pdpp-auth-query-keys.d.ts.map +1 -0
- package/dist/routes/pdpp-auth-query-keys.js +25 -0
- package/dist/routes/pdpp-auth-query-keys.js.map +1 -0
- package/dist/routes/pdpp-auth.d.ts +3 -1
- package/dist/routes/pdpp-auth.d.ts.map +1 -1
- package/dist/routes/pdpp-auth.js +126 -45
- package/dist/routes/pdpp-auth.js.map +1 -1
- package/dist/routes/pdpp-blobs.d.ts +13 -1
- package/dist/routes/pdpp-blobs.d.ts.map +1 -1
- package/dist/routes/pdpp-blobs.js +100 -65
- package/dist/routes/pdpp-blobs.js.map +1 -1
- package/dist/routes/pdpp-connections.d.ts.map +1 -1
- package/dist/routes/pdpp-connections.js +24 -1
- package/dist/routes/pdpp-connections.js.map +1 -1
- package/dist/routes/pdpp-instance-bindings.d.ts +3 -0
- package/dist/routes/pdpp-instance-bindings.d.ts.map +1 -1
- package/dist/routes/pdpp-instance-bindings.js +63 -0
- package/dist/routes/pdpp-instance-bindings.js.map +1 -1
- package/dist/routes/pdpp-record-query.d.ts +19 -0
- package/dist/routes/pdpp-record-query.d.ts.map +1 -0
- package/dist/routes/pdpp-record-query.js +51 -0
- package/dist/routes/pdpp-record-query.js.map +1 -0
- package/dist/routes/pdpp-records.d.ts +12 -1
- package/dist/routes/pdpp-records.d.ts.map +1 -1
- package/dist/routes/pdpp-records.js +120 -233
- package/dist/routes/pdpp-records.js.map +1 -1
- package/dist/routes/pdpp-replica-quarantine-fixture.d.ts +65 -0
- package/dist/routes/pdpp-replica-quarantine-fixture.d.ts.map +1 -0
- package/dist/routes/pdpp-replica-quarantine-fixture.js +389 -0
- package/dist/routes/pdpp-replica-quarantine-fixture.js.map +1 -0
- package/dist/storage/claude-method-transition.d.ts +12 -0
- package/dist/storage/claude-method-transition.d.ts.map +1 -0
- package/dist/storage/claude-method-transition.js +139 -0
- package/dist/storage/claude-method-transition.js.map +1 -0
- package/dist/storage/import-operations.d.ts +16 -0
- package/dist/storage/import-operations.d.ts.map +1 -1
- package/dist/storage/import-operations.js +54 -1
- package/dist/storage/import-operations.js.map +1 -1
- package/dist/storage/index-schema.d.ts +1 -1
- package/dist/storage/index-schema.d.ts.map +1 -1
- package/dist/storage/index-schema.js +22 -5
- package/dist/storage/index-schema.js.map +1 -1
- package/dist/storage/legacy-scope-authority.d.ts.map +1 -1
- package/dist/storage/legacy-scope-authority.js +83 -11
- package/dist/storage/legacy-scope-authority.js.map +1 -1
- package/dist/storage/node-data-storage.d.ts.map +1 -1
- package/dist/storage/node-data-storage.js +58 -2
- package/dist/storage/node-data-storage.js.map +1 -1
- package/dist/storage/pdpp-binary-chunks.d.ts +120 -0
- package/dist/storage/pdpp-binary-chunks.d.ts.map +1 -0
- package/dist/storage/pdpp-binary-chunks.js +480 -0
- package/dist/storage/pdpp-binary-chunks.js.map +1 -0
- package/dist/storage/pdpp-records-sqlite-store.d.ts +96 -15
- package/dist/storage/pdpp-records-sqlite-store.d.ts.map +1 -1
- package/dist/storage/pdpp-records-sqlite-store.js +616 -211
- package/dist/storage/pdpp-records-sqlite-store.js.map +1 -1
- package/dist/storage/pdpp-replica-canonical-port.d.ts +202 -0
- package/dist/storage/pdpp-replica-canonical-port.d.ts.map +1 -0
- package/dist/storage/pdpp-replica-canonical-port.js +451 -0
- package/dist/storage/pdpp-replica-canonical-port.js.map +1 -0
- package/dist/storage/pdpp-replica-coordinator-state.d.ts +16 -0
- package/dist/storage/pdpp-replica-coordinator-state.d.ts.map +1 -0
- package/dist/storage/pdpp-replica-coordinator-state.js +25 -0
- package/dist/storage/pdpp-replica-coordinator-state.js.map +1 -0
- package/dist/storage/pdpp-replica-copies.d.ts +81 -0
- package/dist/storage/pdpp-replica-copies.d.ts.map +1 -0
- package/dist/storage/pdpp-replica-copies.js +59 -0
- package/dist/storage/pdpp-replica-copies.js.map +1 -0
- package/dist/storage/pdpp-replica-reconciler.d.ts +96 -0
- package/dist/storage/pdpp-replica-reconciler.d.ts.map +1 -0
- package/dist/storage/pdpp-replica-reconciler.js +710 -0
- package/dist/storage/pdpp-replica-reconciler.js.map +1 -0
- package/dist/storage/pdpp-replica-sql.d.ts +13 -0
- package/dist/storage/pdpp-replica-sql.d.ts.map +1 -0
- package/dist/storage/pdpp-replica-sql.js +43 -0
- package/dist/storage/pdpp-replica-sql.js.map +1 -0
- package/dist/storage/pdpp-replica-staging.d.ts +36 -0
- package/dist/storage/pdpp-replica-staging.d.ts.map +1 -0
- package/dist/storage/pdpp-replica-staging.js +202 -0
- package/dist/storage/pdpp-replica-staging.js.map +1 -0
- package/dist/storage/pdpp-replica-visibility-view.d.ts +64 -0
- package/dist/storage/pdpp-replica-visibility-view.d.ts.map +1 -0
- package/dist/storage/pdpp-replica-visibility-view.js +1397 -0
- package/dist/storage/pdpp-replica-visibility-view.js.map +1 -0
- package/dist/storage/pdpp-replica-writer-identity.d.ts +64 -0
- package/dist/storage/pdpp-replica-writer-identity.d.ts.map +1 -0
- package/dist/storage/pdpp-replica-writer-identity.js +81 -0
- package/dist/storage/pdpp-replica-writer-identity.js.map +1 -0
- package/dist/storage/pdpp-replication-door.d.ts +60 -0
- package/dist/storage/pdpp-replication-door.d.ts.map +1 -0
- package/dist/storage/pdpp-replication-door.js +203 -0
- package/dist/storage/pdpp-replication-door.js.map +1 -0
- package/dist/storage/pdpp-replication-host.d.ts +67 -0
- package/dist/storage/pdpp-replication-host.d.ts.map +1 -0
- package/dist/storage/pdpp-replication-host.js +159 -0
- package/dist/storage/pdpp-replication-host.js.map +1 -0
- package/dist/storage/pdpp-replication-memory.fixture.d.ts +2 -0
- package/dist/storage/pdpp-replication-memory.fixture.d.ts.map +1 -0
- package/dist/storage/pdpp-replication-memory.fixture.js +267 -0
- package/dist/storage/pdpp-replication-memory.fixture.js.map +1 -0
- package/dist/storage/pdpp-replication-preparation.d.ts +3 -0
- package/dist/storage/pdpp-replication-preparation.d.ts.map +1 -0
- package/dist/storage/pdpp-replication-preparation.js +3 -0
- package/dist/storage/pdpp-replication-preparation.js.map +1 -0
- package/dist/storage/pdpp-replication-promotion-memory.fixture.d.ts +2 -0
- package/dist/storage/pdpp-replication-promotion-memory.fixture.d.ts.map +1 -0
- package/dist/storage/pdpp-replication-promotion-memory.fixture.js +65 -0
- package/dist/storage/pdpp-replication-promotion-memory.fixture.js.map +1 -0
- package/dist/storage/pdpp-replication-receiver.d.ts +230 -0
- package/dist/storage/pdpp-replication-receiver.d.ts.map +1 -0
- package/dist/storage/pdpp-replication-receiver.js +950 -0
- package/dist/storage/pdpp-replication-receiver.js.map +1 -0
- package/dist/storage/pdpp-replication-sqlite.d.ts +95 -0
- package/dist/storage/pdpp-replication-sqlite.d.ts.map +1 -0
- package/dist/storage/pdpp-replication-sqlite.js +615 -0
- package/dist/storage/pdpp-replication-sqlite.js.map +1 -0
- package/dist/storage/pdpp-replication-transport.d.ts +39 -0
- package/dist/storage/pdpp-replication-transport.d.ts.map +1 -0
- package/dist/storage/pdpp-replication-transport.js +196 -0
- package/dist/storage/pdpp-replication-transport.js.map +1 -0
- package/dist/storage/schema-versions.d.ts +5 -0
- package/dist/storage/schema-versions.d.ts.map +1 -0
- package/dist/storage/schema-versions.js +26 -0
- package/dist/storage/schema-versions.js.map +1 -0
- package/dist/storage/strava-method-transition.d.ts +18 -0
- package/dist/storage/strava-method-transition.d.ts.map +1 -0
- package/dist/storage/strava-method-transition.js +209 -0
- package/dist/storage/strava-method-transition.js.map +1 -0
- package/dist/ui/ps-lite-debug.js +154947 -124896
- 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"}
|