@quereus/sync 4.5.0 → 4.7.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.
- package/README.md +14 -6
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/metadata/column-version.d.ts.map +1 -1
- package/dist/src/metadata/column-version.js +8 -9
- package/dist/src/metadata/column-version.js.map +1 -1
- package/dist/src/metadata/keys.d.ts +99 -39
- package/dist/src/metadata/keys.d.ts.map +1 -1
- package/dist/src/metadata/keys.js +213 -158
- package/dist/src/metadata/keys.js.map +1 -1
- package/dist/src/metadata/pk-identity.d.ts +19 -14
- package/dist/src/metadata/pk-identity.d.ts.map +1 -1
- package/dist/src/metadata/pk-identity.js +21 -28
- package/dist/src/metadata/pk-identity.js.map +1 -1
- package/dist/src/metadata/schema-migration.d.ts +33 -10
- package/dist/src/metadata/schema-migration.d.ts.map +1 -1
- package/dist/src/metadata/schema-migration.js +77 -18
- package/dist/src/metadata/schema-migration.js.map +1 -1
- package/dist/src/sync/change-applicator.d.ts +19 -3
- package/dist/src/sync/change-applicator.d.ts.map +1 -1
- package/dist/src/sync/change-applicator.js +253 -63
- package/dist/src/sync/change-applicator.js.map +1 -1
- package/dist/src/sync/maintenance.d.ts +8 -5
- package/dist/src/sync/maintenance.d.ts.map +1 -1
- package/dist/src/sync/maintenance.js +7 -4
- package/dist/src/sync/maintenance.js.map +1 -1
- package/dist/src/sync/manager.d.ts +46 -1
- package/dist/src/sync/manager.d.ts.map +1 -1
- package/dist/src/sync/protocol.d.ts +42 -3
- package/dist/src/sync/protocol.d.ts.map +1 -1
- package/dist/src/sync/protocol.js +40 -0
- package/dist/src/sync/protocol.js.map +1 -1
- package/dist/src/sync/snapshot-identity.d.ts.map +1 -1
- package/dist/src/sync/snapshot-identity.js +1 -9
- package/dist/src/sync/snapshot-identity.js.map +1 -1
- package/dist/src/sync/snapshot-stream.d.ts +11 -0
- package/dist/src/sync/snapshot-stream.d.ts.map +1 -1
- package/dist/src/sync/snapshot-stream.js +134 -67
- package/dist/src/sync/snapshot-stream.js.map +1 -1
- package/dist/src/sync/snapshot.d.ts.map +1 -1
- package/dist/src/sync/snapshot.js +15 -30
- package/dist/src/sync/snapshot.js.map +1 -1
- package/dist/src/sync/store-adapter.d.ts +5 -4
- package/dist/src/sync/store-adapter.d.ts.map +1 -1
- package/dist/src/sync/store-adapter.js +328 -108
- package/dist/src/sync/store-adapter.js.map +1 -1
- package/dist/src/sync/sync-manager-impl.d.ts +37 -4
- package/dist/src/sync/sync-manager-impl.d.ts.map +1 -1
- package/dist/src/sync/sync-manager-impl.js +110 -56
- package/dist/src/sync/sync-manager-impl.js.map +1 -1
- package/dist/src/sync/wire.d.ts +6 -0
- package/dist/src/sync/wire.d.ts.map +1 -1
- package/dist/src/sync/wire.js +3 -0
- package/dist/src/sync/wire.js.map +1 -1
- package/package.json +7 -7
|
@@ -8,7 +8,8 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import { compareHLC, maxHLC, assertWithinDrift } from '../clock/hlc.js';
|
|
10
10
|
import { siteIdEquals } from '../clock/site.js';
|
|
11
|
-
import { encodePkIdentity, RAW_PK_KEYING } from '../metadata/keys.js';
|
|
11
|
+
import { encodePkIdentity, joinKeyParts, RAW_PK_KEYING } from '../metadata/keys.js';
|
|
12
|
+
import { migrationObjectKind, sortMigrationsByHLC, toSchemaChange } from './protocol.js';
|
|
12
13
|
import { toError, deleteRowVersionsAndLogEntries } from './sync-context.js';
|
|
13
14
|
import { admitGroup } from './admission.js';
|
|
14
15
|
/** Stable `schema.table` map key for batch deltas and diversion groups. */
|
|
@@ -16,27 +17,100 @@ function tableKey(schema, table) {
|
|
|
16
17
|
return `${schema}.${table}`;
|
|
17
18
|
}
|
|
18
19
|
/**
|
|
19
|
-
*
|
|
20
|
-
* table
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
20
|
+
* Per-table verdict on what this batch's schema migrations leave behind, keyed
|
|
21
|
+
* `schema.table`. Names no kept migration mentions are absent from the map; the read
|
|
22
|
+
* sites fall back to the current basis for those.
|
|
23
|
+
*
|
|
24
|
+
* The verdict is needed at Phase 1, before any DDL executes at Phase 2, so it is
|
|
25
|
+
* SIMULATED: seed each mentioned name with whether the receiver has it NOW
|
|
26
|
+
* (`isPresentLocally`), then replay the three existence-changing migration kinds in
|
|
27
|
+
* HLC order — `migrations` arrives already ordered by {@link orderMigrationsByHLC},
|
|
28
|
+
* the same order Phase 2 replays them in — applying the same decision each kind's
|
|
29
|
+
* {@link decideSchemaChange} arm will reach against the catalog.
|
|
30
|
+
*
|
|
31
|
+
* Both halves of that are load-bearing:
|
|
32
|
+
*
|
|
33
|
+
* - Seeding from local presence is what keeps this verdict and the catalog-based one
|
|
34
|
+
* in `decideRenameTable` from disagreeing. A `rename_table` moves the name only when
|
|
35
|
+
* the receiver still HAS the old one; a rename it declines (the old name was dropped
|
|
36
|
+
* here, or `fromTable` is missing) leaves the new name as absent as it really will
|
|
37
|
+
* be, so the batch's rows for that name take the normal unknown-table route instead
|
|
38
|
+
* of reaching a table that does not exist and throwing the whole batch away.
|
|
39
|
+
* - Replaying only the KEPT migrations (Phase 1a drops the HLC-dominated ones) is what
|
|
40
|
+
* makes the seed meaningful: a dominated migration means the receiver already
|
|
41
|
+
* processed that fact, so its effect — and anything it did LATER, like dropping the
|
|
42
|
+
* table again — is already in the seeded presence. Replaying it a second time would
|
|
43
|
+
* resurrect a state the receiver has since moved past.
|
|
44
|
+
*
|
|
45
|
+
* The simulation tracks WHICH table ends up at each name, not merely whether one does:
|
|
46
|
+
* {@link BatchTableFate.historyName} follows the table, the sync bookkeeping does not.
|
|
47
|
+
* That is what separates the two ways a name is vacated and refilled — a `drop_table`
|
|
48
|
+
* destroys its occupant, so anything arriving afterwards is a stranger to the
|
|
49
|
+
* bookkeeping left behind, while a rename-away followed by a rename BACK returns the
|
|
50
|
+
* very table the bookkeeping describes.
|
|
24
51
|
*/
|
|
25
|
-
function
|
|
26
|
-
const
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
52
|
+
function computeBatchTableFates(migrations, isPresentLocally) {
|
|
53
|
+
const fates = new Map();
|
|
54
|
+
const fateOf = (schema, table) => {
|
|
55
|
+
const key = tableKey(schema, table);
|
|
56
|
+
let fate = fates.get(key);
|
|
57
|
+
if (!fate) {
|
|
58
|
+
// A table the receiver already holds has its bookkeeping under its own name.
|
|
59
|
+
//
|
|
60
|
+
// NOTE: the seed reads the `getTableSchema` basis oracle while Phase 2 decides
|
|
61
|
+
// the DDL against `db.schemaManager` directly. The shipped wiring makes them the
|
|
62
|
+
// same answer; a host whose oracle deliberately hides a table the catalog has
|
|
63
|
+
// would make this simulation predict a decline the store adapter then executes,
|
|
64
|
+
// and the batch's rows for that name would be held rather than applied (the
|
|
65
|
+
// drain recovers them on the next sweep). If a narrowing oracle ever ships,
|
|
66
|
+
// give the simulation a catalog-presence input of its own.
|
|
67
|
+
const present = isPresentLocally(schema, table);
|
|
68
|
+
fate = { present, historyName: present ? key : undefined };
|
|
69
|
+
fates.set(key, fate);
|
|
70
|
+
}
|
|
71
|
+
return fate;
|
|
72
|
+
};
|
|
73
|
+
for (const migration of migrations) {
|
|
74
|
+
switch (migration.type) {
|
|
75
|
+
case 'create_table': {
|
|
76
|
+
const fate = fateOf(migration.schema, migration.table);
|
|
77
|
+
// Already present ⇒ `decideSchemaChange` converges without executing, so the
|
|
78
|
+
// local table, its rows and its bookkeeping all survive untouched; only an
|
|
79
|
+
// absent → present transition leaves a genuinely empty table with no history.
|
|
80
|
+
if (!fate.present) {
|
|
81
|
+
fate.present = true;
|
|
82
|
+
fate.historyName = undefined;
|
|
83
|
+
}
|
|
84
|
+
break;
|
|
85
|
+
}
|
|
86
|
+
case 'drop_table': {
|
|
87
|
+
const fate = fateOf(migration.schema, migration.table);
|
|
88
|
+
fate.present = false;
|
|
89
|
+
fate.historyName = undefined;
|
|
90
|
+
break;
|
|
33
91
|
}
|
|
34
|
-
|
|
35
|
-
|
|
92
|
+
case 'rename_table': {
|
|
93
|
+
// Mirrors `decideRenameTable`: no `fromTable` (an omitting peer) is
|
|
94
|
+
// undecidable and converges without applying, so neither name moves.
|
|
95
|
+
if (migration.fromTable === undefined)
|
|
96
|
+
break;
|
|
97
|
+
const from = fateOf(migration.schema, migration.fromTable);
|
|
98
|
+
const to = fateOf(migration.schema, migration.table);
|
|
99
|
+
// Old absent ⇒ the receiver declines (a local drop won, or the rename
|
|
100
|
+
// already happened here). Both present ⇒ `decideRenameTable` throws a
|
|
101
|
+
// collision and the whole admission unit aborts; predict no movement.
|
|
102
|
+
if (!from.present || to.present)
|
|
103
|
+
break;
|
|
104
|
+
to.present = true;
|
|
105
|
+
// The table moves; its bookkeeping stays where it was filed.
|
|
106
|
+
to.historyName = from.historyName;
|
|
107
|
+
from.present = false;
|
|
108
|
+
from.historyName = undefined;
|
|
109
|
+
break;
|
|
36
110
|
}
|
|
37
111
|
}
|
|
38
112
|
}
|
|
39
|
-
return
|
|
113
|
+
return fates;
|
|
40
114
|
}
|
|
41
115
|
/**
|
|
42
116
|
* Apply change sets from a remote peer.
|
|
@@ -46,9 +120,25 @@ function computeBatchTableDelta(changes) {
|
|
|
46
120
|
* 2. Apply data to store via callback
|
|
47
121
|
* 3. Commit CRDT metadata (+ durable quarantine of diverted changes)
|
|
48
122
|
*
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
123
|
+
* ORDER-INDEPENDENT: `changes` may arrive in any order and produces the same
|
|
124
|
+
* committed state as the HLC-ordered array. Callers need not (and do not) preserve
|
|
125
|
+
* timestamp order — the coordinator's `onBeforeApplyChanges` approval hook returns a
|
|
126
|
+
* caller-supplied array, and the REST/WebSocket ingress accepts an arbitrary array
|
|
127
|
+
* from any client. Everything whose outcome depends on order is re-derived from the
|
|
128
|
+
* HLCs here rather than from arrival position: resolution and
|
|
129
|
+
* {@link reconcileInBatchDeletes} already compare HLCs, the store apply list is sorted
|
|
130
|
+
* by {@link orderDataChangesByHLC}, the DDL list by {@link orderMigrationsByHLC}, and
|
|
131
|
+
* the emitted payload by {@link emitRemoteChanges}. Everything else (the counters, the
|
|
132
|
+
* quarantine holds, the watermark max) is order-insensitive by construction. The
|
|
133
|
+
* guarantee covers committed STATE, not the event stream: `onConflictResolved` fires
|
|
134
|
+
* from the resolve loop in arrival order, and an `onUnknownTable` event reports the
|
|
135
|
+
* FIRST changeset that referenced the table as the straggler origin, so a reordered
|
|
136
|
+
* batch can name a different relayer — telemetry only, never a stored fact.
|
|
137
|
+
*
|
|
138
|
+
* Unknown-table disposition: a change referencing a table the batch leaves absent — not
|
|
139
|
+
* in the local basis and not created by this batch's schema steps (a retired-table
|
|
140
|
+
* straggler delta — see `docs/migration.md` § 4 Contract) — is **diverted** during
|
|
141
|
+
* resolution — never resolved, applied, or recorded as CRDT
|
|
52
142
|
* metadata, so the change log stays clean (no survivor-HLC pollution). Diverted
|
|
53
143
|
* changes are held (durably, idempotently — `quarantine`, or `store-and-forward`
|
|
54
144
|
* which additionally marks them forwardable) or ignored per
|
|
@@ -58,7 +148,6 @@ export async function applyChanges(ctx, changes) {
|
|
|
58
148
|
let applied = 0;
|
|
59
149
|
let skipped = 0;
|
|
60
150
|
let conflicts = 0;
|
|
61
|
-
const dataChangesToApply = [];
|
|
62
151
|
const schemaChangesToApply = [];
|
|
63
152
|
const appliedChanges = [];
|
|
64
153
|
const resolvedDataChanges = [];
|
|
@@ -70,7 +159,6 @@ export async function applyChanges(ctx, changes) {
|
|
|
70
159
|
// Out-of-basis straggler changes diverted out of the resolve/apply/metadata
|
|
71
160
|
// path, grouped per table for disposition + telemetry.
|
|
72
161
|
const unknownByTable = new Map();
|
|
73
|
-
const { created: batchCreated, dropped: batchDropped } = computeBatchTableDelta(changes);
|
|
74
162
|
// Pre-commit drift validation: reject a batch whose maximum fact HLC is beyond the
|
|
75
163
|
// drift bound BEFORE any resolution, data write, or CRDT metadata commit — so a peer
|
|
76
164
|
// with a badly-wrong clock cannot land far-future LWW winners that then beat every
|
|
@@ -89,31 +177,44 @@ export async function applyChanges(ctx, changes) {
|
|
|
89
177
|
throw error;
|
|
90
178
|
}
|
|
91
179
|
}
|
|
92
|
-
// PHASE
|
|
180
|
+
// PHASE 1a: Schema migrations, batch-wide and HLC-ordered (DDL before DML — the
|
|
181
|
+
// whole batch's schema changes run before any of its data, see admitGroup). Two
|
|
182
|
+
// migrations for ONE table are order-dependent (a `drop_table` replayed after the
|
|
183
|
+
// `create_table` that should follow it leaves the table absent), and `applyChanges`
|
|
184
|
+
// does not trust arrival order, so sort by HLC rather than walking the changesets in
|
|
185
|
+
// receipt order. For a well-ordered batch the sort is a no-op: per-table HLC order
|
|
186
|
+
// IS schemaVersion order (the origin assigns versions monotonically as it ticks).
|
|
187
|
+
// It also pins the `migration.schemaVersion ?? getCurrentVersion() + 1` fallback
|
|
188
|
+
// below, which reads storage that no migration in this batch has written yet.
|
|
189
|
+
for (const migration of orderMigrationsByHLC(changes)) {
|
|
190
|
+
// NOTE: the `??` fallback reads storage no migration in this batch has written
|
|
191
|
+
// yet, so two migrations of ONE object that BOTH omit `schemaVersion` compute
|
|
192
|
+
// the SAME version and collapse onto one `sm:` key (the later, max-HLC, wins).
|
|
193
|
+
// Unreachable today — `SchemaMigration.schemaVersion` is required, and
|
|
194
|
+
// `collectSchemaMigrations` always carries the stored value; if a wire format
|
|
195
|
+
// ever makes it optional in practice, assign in-batch versions here instead.
|
|
196
|
+
const kind = migrationObjectKind(migration.type);
|
|
197
|
+
const schemaVersion = migration.schemaVersion ??
|
|
198
|
+
(await ctx.schemaMigrations.getCurrentVersion(migration.schema, kind, migration.table)) + 1;
|
|
199
|
+
const existingMigration = await ctx.schemaMigrations.getMigration(migration.schema, kind, migration.table, schemaVersion);
|
|
200
|
+
if (existingMigration) {
|
|
201
|
+
if (compareHLC(migration.hlc, existingMigration.hlc) <= 0) {
|
|
202
|
+
skipped++;
|
|
203
|
+
continue;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
schemaChangesToApply.push(toSchemaChange(migration));
|
|
207
|
+
pendingSchemaMigrations.push({ migration, schemaVersion });
|
|
208
|
+
applied++;
|
|
209
|
+
}
|
|
210
|
+
// What the batch's schema steps leave behind, simulated over the migrations Phase 1a
|
|
211
|
+
// actually KEPT and seeded from what the receiver has now — so the verdict below
|
|
212
|
+
// agrees with the catalog the DDL will be decided against.
|
|
213
|
+
const batchFates = computeBatchTableFates(pendingSchemaMigrations.map(({ migration }) => migration), (schema, table) => ctx.isTableInBasis(schema, table));
|
|
214
|
+
// PHASE 1b: Resolve all data changes (no writes yet). The clock watermark is merged
|
|
93
215
|
// once after a successful admission (see admitGroup below), not per changeset —
|
|
94
216
|
// resolution reads stored versions via compareHLC, never the live clock.
|
|
95
217
|
for (const changeSet of changes) {
|
|
96
|
-
// Process schema migrations first (DDL before DML)
|
|
97
|
-
for (const migration of changeSet.schemaMigrations) {
|
|
98
|
-
const schemaVersion = migration.schemaVersion ??
|
|
99
|
-
(await ctx.schemaMigrations.getCurrentVersion(migration.schema, migration.table)) + 1;
|
|
100
|
-
const existingMigration = await ctx.schemaMigrations.getMigration(migration.schema, migration.table, schemaVersion);
|
|
101
|
-
if (existingMigration) {
|
|
102
|
-
if (compareHLC(migration.hlc, existingMigration.hlc) <= 0) {
|
|
103
|
-
skipped++;
|
|
104
|
-
continue;
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
schemaChangesToApply.push({
|
|
108
|
-
type: migration.type,
|
|
109
|
-
schema: migration.schema,
|
|
110
|
-
table: migration.table,
|
|
111
|
-
ddl: migration.ddl,
|
|
112
|
-
});
|
|
113
|
-
pendingSchemaMigrations.push({ migration, schemaVersion });
|
|
114
|
-
applied++;
|
|
115
|
-
}
|
|
116
|
-
// Resolve data changes
|
|
117
218
|
for (const change of changeSet.changes) {
|
|
118
219
|
// Self-origin echo skip BEFORE unknown-table detection, so a self-change
|
|
119
220
|
// to a retired table is skipped (counted), never quarantined. resolveChange
|
|
@@ -122,13 +223,16 @@ export async function applyChanges(ctx, changes) {
|
|
|
122
223
|
skipped++;
|
|
123
224
|
continue;
|
|
124
225
|
}
|
|
125
|
-
// Structural unknown-table detection:
|
|
126
|
-
//
|
|
226
|
+
// Structural unknown-table detection: a table this batch creates or drops is
|
|
227
|
+
// known iff the batch's schema steps leave it PRESENT (its last create/drop
|
|
228
|
+
// step in timestamp order is a create_table); one the batch does not touch
|
|
229
|
+
// falls back to the current basis. Diverted changes never reach
|
|
127
230
|
// resolveChange / dataChangesToApply / commitChangeMetadata, so no CRDT
|
|
128
231
|
// metadata is written for a table the receiver does not have.
|
|
129
232
|
const key = tableKey(change.schema, change.table);
|
|
130
233
|
const inBasis = ctx.isTableInBasis(change.schema, change.table);
|
|
131
|
-
const
|
|
234
|
+
const fate = batchFates.get(key);
|
|
235
|
+
const known = fate ? fate.present : inBasis;
|
|
132
236
|
if (!known) {
|
|
133
237
|
let group = unknownByTable.get(key);
|
|
134
238
|
if (!group) {
|
|
@@ -143,7 +247,30 @@ export async function applyChanges(ctx, changes) {
|
|
|
143
247
|
// — and, being locally fresh, no local metadata to resolve against either.
|
|
144
248
|
// Resolve it read-free rather than throwing from the keying resolver;
|
|
145
249
|
// Phase 3's metadata commit runs after the DDL, when the keying resolves.
|
|
146
|
-
|
|
250
|
+
//
|
|
251
|
+
// A table this batch leaves under a name whose stranded bookkeeping describes
|
|
252
|
+
// some OTHER table counts as fresh too, even when the receiver already has the
|
|
253
|
+
// name: dropping or renaming a table does not move its cell versions and
|
|
254
|
+
// tombstones, so resolving these rows against them would let a stale tombstone
|
|
255
|
+
// silently discard them under the default `allowResurrection: false`. That is
|
|
256
|
+
// `fate.historyName !== key` — a drop-then-re-create, or a swap that renames a
|
|
257
|
+
// different table into the vacated name. A RE-DELIVERED drop/re-create batch —
|
|
258
|
+
// every schema step dominated, no local schema changed, the local table already
|
|
259
|
+
// the post-re-create incarnation — keeps `historyName === key` and resolves
|
|
260
|
+
// normally against that incarnation's own metadata, and so does a name renamed
|
|
261
|
+
// AWAY and BACK in one batch: the same table returns to its own bookkeeping.
|
|
262
|
+
// (The broader question of a re-created table INHERITING that bookkeeping —
|
|
263
|
+
// purge policy, relays, retention horizon — is tracked separately; this only
|
|
264
|
+
// stops the in-batch recreate consulting it.)
|
|
265
|
+
//
|
|
266
|
+
// NOTE: `!inBasis` still resolves read-free for a table that arrives under a
|
|
267
|
+
// name the receiver does NOT currently have, including by rename. That name may
|
|
268
|
+
// carry metadata stranded by an earlier incarnation, which the arriving table's
|
|
269
|
+
// rows then skip. Unavoidable today — an out-of-basis name has no schema and so
|
|
270
|
+
// no resolvable pk keying — and the same for `create_table`; if the stranded
|
|
271
|
+
// bookkeeping is ever purged or re-keyed on drop/rename
|
|
272
|
+
// (`bug-sync-recreated-table-inherits-dropped-table-metadata`), narrow this.
|
|
273
|
+
const freshLocalTable = !inBasis || (fate !== undefined && fate.historyName !== key);
|
|
147
274
|
const resolved = await resolveChange(ctx, change, freshLocalTable);
|
|
148
275
|
if (freshLocalTable)
|
|
149
276
|
resolved.freshLocalTable = true;
|
|
@@ -164,9 +291,6 @@ export async function applyChanges(ctx, changes) {
|
|
|
164
291
|
applied++;
|
|
165
292
|
appliedChanges.push({ change: resolved.change, siteId: dataResolutions[i].siteId });
|
|
166
293
|
resolvedDataChanges.push(resolved);
|
|
167
|
-
if (resolved.dataChange) {
|
|
168
|
-
dataChangesToApply.push(resolved.dataChange);
|
|
169
|
-
}
|
|
170
294
|
}
|
|
171
295
|
else if (resolved.outcome === 'skipped') {
|
|
172
296
|
skipped++;
|
|
@@ -175,6 +299,7 @@ export async function applyChanges(ctx, changes) {
|
|
|
175
299
|
conflicts++;
|
|
176
300
|
}
|
|
177
301
|
}
|
|
302
|
+
const dataChangesToApply = orderDataChangesByHLC(resolvedDataChanges);
|
|
178
303
|
const disposition = ctx.config.unknownTableDisposition;
|
|
179
304
|
// Single receive timestamp for every quarantine entry this apply (GC horizon).
|
|
180
305
|
const receivedAt = Date.now();
|
|
@@ -191,8 +316,12 @@ export async function applyChanges(ctx, changes) {
|
|
|
191
316
|
await commitChangeMetadata(ctx, resolvedDataChanges);
|
|
192
317
|
// Commit schema migration metadata
|
|
193
318
|
for (const { migration, schemaVersion } of pendingSchemaMigrations) {
|
|
194
|
-
await ctx.schemaMigrations.recordMigration(migration.schema, migration.table, {
|
|
319
|
+
await ctx.schemaMigrations.recordMigration(migration.schema, migrationObjectKind(migration.type), migration.table, {
|
|
195
320
|
type: migration.type,
|
|
321
|
+
// Carry the rename's old name into local storage, or this
|
|
322
|
+
// receiver's own re-relay/snapshot would ship the rename
|
|
323
|
+
// without it — undecidable downstream.
|
|
324
|
+
...(migration.fromTable !== undefined ? { fromTable: migration.fromTable } : {}),
|
|
196
325
|
ddl: migration.ddl,
|
|
197
326
|
hlc: migration.hlc,
|
|
198
327
|
schemaVersion,
|
|
@@ -230,22 +359,28 @@ export async function applyChanges(ctx, changes) {
|
|
|
230
359
|
// Emit remote change events (grouped by the relaying changeset's siteId).
|
|
231
360
|
emitRemoteChanges(ctx, appliedChanges);
|
|
232
361
|
// Reactive low-latency drain (sync-drain-reappear-inbound-ddl): every APPLIED
|
|
233
|
-
//
|
|
362
|
+
// migration that makes a NAME exist — a `create_table`, or a `rename_table` moving a
|
|
363
|
+
// table onto that name — may have revived a previously-retired table that has held
|
|
234
364
|
// out-of-basis changes waiting on it. Replay them NOW — as a SEPARATE post-commit
|
|
235
365
|
// apply unit, after the admitting batch above has fully committed (fresh data lands
|
|
236
366
|
// first, held changes LWW-resolve against it) — instead of waiting up to one
|
|
237
367
|
// periodic-sweep interval. Only applied migrations are in `pendingSchemaMigrations`
|
|
238
368
|
// (an HLC-dominated create_table `continue`s before being pushed), so a losing
|
|
239
|
-
// create never triggers a drain. A
|
|
240
|
-
//
|
|
369
|
+
// create never triggers a drain. A batch whose schema steps leave the table ABSENT
|
|
370
|
+
// (a trailing drop_table) has its key skipped to avoid a wasted scoped
|
|
371
|
+
// `quarantine.list` — a drop-then-create batch leaves it PRESENT and does drain.
|
|
372
|
+
// A migration the simulation never modelled has no fate entry (only a
|
|
373
|
+
// `rename_table` with no `fromTable`, which returns before reaching `fateOf`): fall
|
|
374
|
+
// back to the basis, read HERE — post-DDL — so it is the exact post-batch answer.
|
|
241
375
|
// Advisory: `drainReappearedTables` logs + swallows any failure, so a drain throw
|
|
242
376
|
// never turns this successful apply into an error.
|
|
243
377
|
const reappeared = new Map();
|
|
244
378
|
for (const { migration } of pendingSchemaMigrations) {
|
|
245
|
-
if (migration.type !== 'create_table')
|
|
379
|
+
if (migration.type !== 'create_table' && migration.type !== 'rename_table')
|
|
246
380
|
continue;
|
|
247
381
|
const key = tableKey(migration.schema, migration.table);
|
|
248
|
-
|
|
382
|
+
const fate = batchFates.get(key);
|
|
383
|
+
if (!(fate ? fate.present : ctx.isTableInBasis(migration.schema, migration.table)))
|
|
249
384
|
continue;
|
|
250
385
|
if (!reappeared.has(key))
|
|
251
386
|
reappeared.set(key, { schema: migration.schema, table: migration.table });
|
|
@@ -275,18 +410,63 @@ export async function applyChanges(ctx, changes) {
|
|
|
275
410
|
...(unknownTableCount > 0 ? { unknownTable: unknownTableCount } : {}),
|
|
276
411
|
};
|
|
277
412
|
}
|
|
413
|
+
/**
|
|
414
|
+
* Order one reconciled batch's store operations by HLC.
|
|
415
|
+
*
|
|
416
|
+
* {@link DataChangeToApply} carries no timestamp, so the store adapter replays each
|
|
417
|
+
* row group in ARRIVAL order (`buildRowOp` in store-adapter.ts) while resolution and
|
|
418
|
+
* {@link reconcileInBatchDeletes} decide by HLC. `applyChanges` takes whatever
|
|
419
|
+
* transaction array its caller hands it — the coordinator's approval hook and the
|
|
420
|
+
* REST/WebSocket ingress neither preserve nor produce timestamp order — so arrival
|
|
421
|
+
* order is not trustworthy. Sorting here, in the one place that still holds the HLCs,
|
|
422
|
+
* makes the table contents follow the same rule as the metadata whatever order the
|
|
423
|
+
* batch arrived in, without threading an HLC through the whole store seam.
|
|
424
|
+
*
|
|
425
|
+
* A GLOBAL sort suffices: the adapter groups by table, then by row, so only the
|
|
426
|
+
* relative order WITHIN one row group is load-bearing. `compareHLC` is a total order
|
|
427
|
+
* over `(wallTime, counter, siteId, opSeq)` and `Array.prototype.sort` is stable, so
|
|
428
|
+
* equal HLCs — the same fact — keep arrival order.
|
|
429
|
+
*
|
|
430
|
+
* It also lands the resurrection case right: {@link reconcileInBatchDeletes} already
|
|
431
|
+
* skipped every column change at or below the winning delete's HLC, so the only column
|
|
432
|
+
* ops left for that row are strictly later than the delete — the sort puts the delete
|
|
433
|
+
* first and `buildRowOp` rebuilds the row from primary key + nulls, which is what the
|
|
434
|
+
* metadata says happened.
|
|
435
|
+
*/
|
|
436
|
+
function orderDataChangesByHLC(applied) {
|
|
437
|
+
const withOps = applied.filter((resolved) => resolved.dataChange !== undefined);
|
|
438
|
+
withOps.sort((a, b) => compareHLC(a.change.hlc, b.change.hlc));
|
|
439
|
+
return withOps.map(resolved => resolved.dataChange);
|
|
440
|
+
}
|
|
441
|
+
/**
|
|
442
|
+
* Flatten a batch's schema migrations into one HLC-ordered list.
|
|
443
|
+
*
|
|
444
|
+
* Same reason as {@link orderDataChangesByHLC}: the DDL list reaches the store adapter
|
|
445
|
+
* as a plain array replayed in order, so arrival order across changesets must not
|
|
446
|
+
* decide which runs first. Ordering itself is {@link sortMigrationsByHLC}.
|
|
447
|
+
*/
|
|
448
|
+
function orderMigrationsByHLC(changes) {
|
|
449
|
+
return sortMigrationsByHLC(changes.flatMap(changeSet => [...changeSet.schemaMigrations]));
|
|
450
|
+
}
|
|
278
451
|
/**
|
|
279
452
|
* Emit `onRemoteChange` for applied changes, grouped by a per-change origin site
|
|
280
453
|
* id. Shared by the wire apply (grouping by the relaying changeset's `siteId`) and
|
|
281
454
|
* the drain path (grouping by each held change's original origin `hlc.siteId`), so
|
|
282
455
|
* downstream reactivity — MV maintenance, `Database.watch`, UI — fires identically
|
|
283
456
|
* on a revival as on a fresh remote apply. No-op for an empty set.
|
|
457
|
+
*
|
|
458
|
+
* The payload is HLC-ordered for the same reason the store apply list is
|
|
459
|
+
* ({@link orderDataChangesByHLC}): it is built from the same reconciled list, so a
|
|
460
|
+
* reordered batch would otherwise hand a listener the batch's facts in an order that
|
|
461
|
+
* contradicts the state just committed. Ordering is per emitted event, and the sort is
|
|
462
|
+
* a total order, so each site's slice stays HLC-ordered too.
|
|
284
463
|
*/
|
|
285
464
|
function emitRemoteChanges(ctx, entries) {
|
|
286
465
|
if (entries.length === 0)
|
|
287
466
|
return;
|
|
467
|
+
const ordered = [...entries].sort((a, b) => compareHLC(a.change.hlc, b.change.hlc));
|
|
288
468
|
const changesBySite = new Map();
|
|
289
|
-
for (const { change, siteId } of
|
|
469
|
+
for (const { change, siteId } of ordered) {
|
|
290
470
|
const siteKey = Array.from(siteId).join(',');
|
|
291
471
|
const siteChanges = changesBySite.get(siteKey);
|
|
292
472
|
if (siteChanges) {
|
|
@@ -307,6 +487,10 @@ function emitRemoteChanges(ctx, entries) {
|
|
|
307
487
|
});
|
|
308
488
|
}
|
|
309
489
|
}
|
|
490
|
+
// NOTE: this file is 1204 lines (`wc -l`), second-largest in the package. The drain
|
|
491
|
+
// block below (`drainHeldChanges` → `drainReappearedTables`) shares only `resolveChange`,
|
|
492
|
+
// `reconcileInBatchDeletes`, `commitChangeMetadata`, and `admitGroup` with the wire-apply
|
|
493
|
+
// half above, so it is the natural seam if the file keeps growing.
|
|
310
494
|
/**
|
|
311
495
|
* Replay held out-of-basis changes (`quarantine` + forwardable `store-and-forward`
|
|
312
496
|
* entries) into tables that have since reappeared in the local basis — the revival
|
|
@@ -366,7 +550,6 @@ async function drainTableGroup(ctx, group) {
|
|
|
366
550
|
if (columns === undefined)
|
|
367
551
|
return 0;
|
|
368
552
|
const columnSet = new Set(columns);
|
|
369
|
-
const dataChangesToApply = [];
|
|
370
553
|
const resolvedDataChanges = [];
|
|
371
554
|
const appliedEntries = [];
|
|
372
555
|
let applied = 0;
|
|
@@ -393,8 +576,6 @@ async function drainTableGroup(ctx, group) {
|
|
|
393
576
|
if (resolved.outcome === 'applied') {
|
|
394
577
|
applied++;
|
|
395
578
|
resolvedDataChanges.push(resolved);
|
|
396
|
-
if (resolved.dataChange)
|
|
397
|
-
dataChangesToApply.push(resolved.dataChange);
|
|
398
579
|
// Group revival events by the held change's ORIGINAL origin (its HLC
|
|
399
580
|
// siteId) — a held change carries no relaying changeset.
|
|
400
581
|
appliedEntries.push({ change: resolved.change, siteId: resolved.change.hlc.siteId });
|
|
@@ -403,6 +584,10 @@ async function drainTableGroup(ctx, group) {
|
|
|
403
584
|
skipped++;
|
|
404
585
|
}
|
|
405
586
|
}
|
|
587
|
+
// Held entries already come back HLC-ordered (`buildQuarantineKey` puts the HLC
|
|
588
|
+
// bytes first), so this is order-preserving today — it pins the same contract
|
|
589
|
+
// applyChanges states rather than fixing a live inversion here.
|
|
590
|
+
const dataChangesToApply = orderDataChangesByHLC(resolvedDataChanges);
|
|
406
591
|
// One admission unit: data first → CRDT metadata + held-entry deletes second.
|
|
407
592
|
// No watermarkHLC — these HLCs were already merged into the local clock at the
|
|
408
593
|
// original receive (applyChanges merges the batch maxHLC even for diverted
|
|
@@ -707,10 +892,15 @@ export async function commitChangeMetadata(ctx, resolvedChanges) {
|
|
|
707
892
|
* collapse runs post-DDL with the resolved keying; for a fresh table with
|
|
708
893
|
* collation-variant pk spellings in ONE batch the two groupings can disagree, an
|
|
709
894
|
* edge accepted here.)
|
|
895
|
+
*
|
|
896
|
+
* Components are length-prefixed ({@link joinKeyParts}), not punctuation-joined, for
|
|
897
|
+
* the same reason the on-disk keys are: a table name may contain `:` or `.` and a pk
|
|
898
|
+
* identity contains both, so a `{schema}.{table}:{identity}` join would let two rows
|
|
899
|
+
* of DIFFERENT tables collapse onto one winner and silently drop a change.
|
|
710
900
|
*/
|
|
711
901
|
function rowIdentityKey(ctx, change, freshLocalTable) {
|
|
712
902
|
const keying = freshLocalTable ? RAW_PK_KEYING : ctx.getPkKeying(change.schema, change.table);
|
|
713
|
-
return
|
|
903
|
+
return joinKeyParts(change.schema, change.table, encodePkIdentity(change.pk, keying));
|
|
714
904
|
}
|
|
715
905
|
/** Stable per-pk key for collapsing repeated delete entries within one batch. */
|
|
716
906
|
function deleteKey(ctx, change) {
|
|
@@ -718,7 +908,7 @@ function deleteKey(ctx, change) {
|
|
|
718
908
|
}
|
|
719
909
|
/** Stable per-(pk, column) key for collapsing repeated column entries within one batch. */
|
|
720
910
|
function columnKey(ctx, change) {
|
|
721
|
-
return `column:${rowIdentityKey(ctx, change)}
|
|
911
|
+
return `column:${rowIdentityKey(ctx, change)}${joinKeyParts(change.column)}`;
|
|
722
912
|
}
|
|
723
913
|
/** Keep the max-HLC resolved change per key, collapsing in-batch repeats to one winner. */
|
|
724
914
|
function keepMaxHLC(winners, key, resolved) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"change-applicator.js","sourceRoot":"","sources":["../../../src/sync/change-applicator.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,YAAY,EAAe,MAAM,kBAAkB,CAAC;AAG7D,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAYtE,OAAO,EAAE,OAAO,EAAE,8BAA8B,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAgD5C,2EAA2E;AAC3E,SAAS,QAAQ,CAAC,MAAc,EAAE,KAAa;IAC9C,OAAO,GAAG,MAAM,IAAI,KAAK,EAAE,CAAC;AAC7B,CAAC;AAED;;;;;;GAMG;AACH,SAAS,sBAAsB,CAAC,OAAoB;IACnD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,KAAK,MAAM,SAAS,IAAI,OAAO,EAAE,CAAC;QACjC,KAAK,MAAM,SAAS,IAAI,SAAS,CAAC,gBAAgB,EAAE,CAAC;YACpD,MAAM,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;YACxD,IAAI,SAAS,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;gBACvC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAClB,CAAC;iBAAM,IAAI,SAAS,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC5C,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAClB,CAAC;QACF,CAAC;IACF,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAC7B,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CACjC,GAAgB,EAChB,OAAoB;IAEpB,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,MAAM,kBAAkB,GAAwB,EAAE,CAAC;IACnD,MAAM,oBAAoB,GAA0B,EAAE,CAAC;IACvD,MAAM,cAAc,GAA8C,EAAE,CAAC;IACrE,MAAM,mBAAmB,GAAqB,EAAE,CAAC;IACjD,6EAA6E;IAC7E,2EAA2E;IAC3E,4DAA4D;IAC5D,MAAM,eAAe,GAAwD,EAAE,CAAC;IAChF,MAAM,uBAAuB,GAGxB,EAAE,CAAC;IACR,4EAA4E;IAC5E,uDAAuD;IACvD,MAAM,cAAc,GAAG,IAAI,GAAG,EAA6B,CAAC;IAE5D,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAEzF,mFAAmF;IACnF,qFAAqF;IACrF,mFAAmF;IACnF,qFAAqF;IACrF,mFAAmF;IACnF,qFAAqF;IACrF,+EAA+E;IAC/E,oFAAoF;IACpF,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvD,IAAI,YAAY,EAAE,CAAC;QAClB,IAAI,CAAC;YACJ,iBAAiB,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC9D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,GAAG,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC/E,MAAM,KAAK,CAAC;QACb,CAAC;IACF,CAAC;IAED,8EAA8E;IAC9E,gFAAgF;IAChF,yEAAyE;IACzE,KAAK,MAAM,SAAS,IAAI,OAAO,EAAE,CAAC;QACjC,mDAAmD;QACnD,KAAK,MAAM,SAAS,IAAI,SAAS,CAAC,gBAAgB,EAAE,CAAC;YACpD,MAAM,aAAa,GAAG,SAAS,CAAC,aAAa;gBAC5C,CAAC,MAAM,GAAG,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;YAEvF,MAAM,iBAAiB,GAAG,MAAM,GAAG,CAAC,gBAAgB,CAAC,YAAY,CAChE,SAAS,CAAC,MAAM,EAChB,SAAS,CAAC,KAAK,EACf,aAAa,CACb,CAAC;YAEF,IAAI,iBAAiB,EAAE,CAAC;gBACvB,IAAI,UAAU,CAAC,SAAS,CAAC,GAAG,EAAE,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC3D,OAAO,EAAE,CAAC;oBACV,SAAS;gBACV,CAAC;YACF,CAAC;YAED,oBAAoB,CAAC,IAAI,CAAC;gBACzB,IAAI,EAAE,SAAS,CAAC,IAAI;gBACpB,MAAM,EAAE,SAAS,CAAC,MAAM;gBACxB,KAAK,EAAE,SAAS,CAAC,KAAK;gBACtB,GAAG,EAAE,SAAS,CAAC,GAAG;aAClB,CAAC,CAAC;YACH,uBAAuB,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,CAAC;YAC3D,OAAO,EAAE,CAAC;QACX,CAAC;QAED,uBAAuB;QACvB,KAAK,MAAM,MAAM,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;YACxC,yEAAyE;YACzE,4EAA4E;YAC5E,mDAAmD;YACnD,IAAI,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC;gBACtD,OAAO,EAAE,CAAC;gBACV,SAAS;YACV,CAAC;YAED,yEAAyE;YACzE,0EAA0E;YAC1E,wEAAwE;YACxE,8DAA8D;YAC9D,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YAClD,MAAM,OAAO,GAAG,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YAChE,MAAM,KAAK,GAAG,CAAC,OAAO,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC3E,IAAI,CAAC,KAAK,EAAE,CAAC;gBACZ,IAAI,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACpC,IAAI,CAAC,KAAK,EAAE,CAAC;oBACZ,KAAK,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;oBAC9F,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBAChC,CAAC;gBACD,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC3B,SAAS;YACV,CAAC;YAED,uEAAuE;YACvE,0EAA0E;YAC1E,2EAA2E;YAC3E,sEAAsE;YACtE,0EAA0E;YAC1E,MAAM,eAAe,GAAG,CAAC,OAAO,CAAC;YAEjC,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC;YACnE,IAAI,eAAe;gBAAE,QAAQ,CAAC,eAAe,GAAG,IAAI,CAAC;YACrD,eAAe,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;QAC9D,CAAC;IACF,CAAC;IAED,uEAAuE;IACvE,4EAA4E;IAC5E,2EAA2E;IAC3E,0EAA0E;IAC1E,uEAAuE;IACvE,8EAA8E;IAC9E,oBAAoB;IACpB,MAAM,UAAU,GAAG,uBAAuB,CAAC,GAAG,EAAE,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC9F,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5C,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,QAAQ,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YACpC,OAAO,EAAE,CAAC;YACV,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YACpF,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACnC,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;gBACzB,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YAC9C,CAAC;QACF,CAAC;aAAM,IAAI,QAAQ,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC3C,OAAO,EAAE,CAAC;QACX,CAAC;aAAM,CAAC;YACP,SAAS,EAAE,CAAC;QACb,CAAC;IACF,CAAC;IAED,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,uBAAuB,CAAC;IACvD,+EAA+E;IAC/E,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE9B,+EAA+E;IAC/E,+EAA+E;IAC/E,8EAA8E;IAC9E,6EAA6E;IAC7E,2EAA2E;IAC3E,MAAM,UAAU,CAAC,GAAG,EAAE;QACrB,WAAW,EAAE,kBAAkB;QAC/B,aAAa,EAAE,oBAAoB;QACnC,YAAY,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;QAC9B,cAAc,EAAE,KAAK,IAAI,EAAE;YAC1B,MAAM,oBAAoB,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;YAErD,mCAAmC;YACnC,KAAK,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,IAAI,uBAAuB,EAAE,CAAC;gBACpE,MAAM,GAAG,CAAC,gBAAgB,CAAC,eAAe,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,EAAE;oBAC7E,IAAI,EAAE,SAAS,CAAC,IAAI;oBACpB,GAAG,EAAE,SAAS,CAAC,GAAG;oBAClB,GAAG,EAAE,SAAS,CAAC,GAAG;oBAClB,aAAa;iBACb,CAAC,CAAC;YACJ,CAAC;YAED,uEAAuE;YACvE,uEAAuE;YACvE,iEAAiE;YACjE,sEAAsE;YACtE,sEAAsE;YACtE,sEAAsE;YACtE,kBAAkB;YAClB,IAAI,CAAC,WAAW,KAAK,YAAY,IAAI,WAAW,KAAK,mBAAmB,CAAC,IAAI,cAAc,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;gBACtG,MAAM,WAAW,GAAG,WAAW,KAAK,mBAAmB,CAAC;gBACxD,MAAM,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;gBAC9B,KAAK,MAAM,KAAK,IAAI,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC;oBAC7C,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;wBACpC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;oBAC7D,CAAC;gBACF,CAAC;gBACD,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YACtB,CAAC;YAED,2EAA2E;YAC3E,0EAA0E;YAC1E,uEAAuE;YACvE,MAAM,4BAA4B,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QACzD,CAAC;QACD,yEAAyE;QACzE,yEAAyE;QACzE,6EAA6E;QAC7E,wEAAwE;QACxE,2CAA2C;QAC3C,YAAY;KACZ,CAAC,CAAC;IAEH,0EAA0E;IAC1E,iBAAiB,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAEvC,8EAA8E;IAC9E,yEAAyE;IACzE,kFAAkF;IAClF,oFAAoF;IACpF,6EAA6E;IAC7E,oFAAoF;IACpF,+EAA+E;IAC/E,kFAAkF;IAClF,4EAA4E;IAC5E,kFAAkF;IAClF,mDAAmD;IACnD,MAAM,UAAU,GAAG,IAAI,GAAG,EAA6C,CAAC;IACxE,KAAK,MAAM,EAAE,SAAS,EAAE,IAAI,uBAAuB,EAAE,CAAC;QACrD,IAAI,SAAS,CAAC,IAAI,KAAK,cAAc;YAAE,SAAS;QAChD,MAAM,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;QACxD,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QACpC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC;IACrG,CAAC;IACD,MAAM,qBAAqB,CAAC,GAAG,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAE3D,gFAAgF;IAChF,2EAA2E;IAC3E,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAC1B,KAAK,MAAM,KAAK,IAAI,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC;QAC7C,iBAAiB,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAC1C,GAAG,CAAC,kBAAkB,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACrF,GAAG,CAAC,UAAU,CAAC,gBAAgB,CAAC;YAC/B,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,WAAW;YACX,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM;YACjC,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,4DAA4D;YAC5D,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAE;SACjD,CAAC,CAAC;IACJ,CAAC;IAED,OAAO;QACN,OAAO;QACP,OAAO;QACP,SAAS;QACT,YAAY,EAAE,OAAO,CAAC,MAAM;QAC5B,GAAG,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACrE,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAS,iBAAiB,CACzB,GAAgB,EAChB,OAAkD;IAElD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAEjC,MAAM,aAAa,GAAG,IAAI,GAAG,EAAoB,CAAC;IAClD,KAAK,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,OAAO,EAAE,CAAC;QAC1C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7C,MAAM,WAAW,GAAG,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,WAAW,EAAE,CAAC;YACjB,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC;aAAM,CAAC;YACP,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QACtC,CAAC;IACF,CAAC;IAED,MAAM,SAAS,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;IACvC,KAAK,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,IAAI,aAAa,EAAE,CAAC;QACpD,MAAM,WAAW,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QACnE,GAAG,CAAC,UAAU,CAAC,gBAAgB,CAAC;YAC/B,MAAM,EAAE,WAAW;YACnB,aAAa,EAAE,MAAM,CAAC,UAAU,EAAE;YAClC,OAAO,EAAE,WAAW;YACpB,SAAS;SACT,CAAC,CAAC;IACJ,CAAC;AACF,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACrC,GAAgB,EAChB,MAAe,EACf,KAAc;IAEd,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACtD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAEhC,4EAA4E;IAC5E,MAAM,MAAM,GAAG,IAAI,GAAG,EAAgE,CAAC;IACvF,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QAClD,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,KAAK,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;YACpE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACxB,CAAC;QACD,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QACrC,YAAY,IAAI,MAAM,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,YAAY,CAAC;AACrB,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,eAAe,CAC7B,GAAgB,EAChB,KAA2D;IAE3D,8EAA8E;IAC9E,4EAA4E;IAC5E,MAAM,OAAO,GAAG,GAAG,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACnE,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,CAAC,CAAC;IACpC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;IAEnC,MAAM,kBAAkB,GAAwB,EAAE,CAAC;IACnD,MAAM,mBAAmB,GAAqB,EAAE,CAAC;IACjD,MAAM,cAAc,GAA8C,EAAE,CAAC;IACrE,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,MAAM,WAAW,GAAqB,EAAE,CAAC;IACzC,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QACpC,8EAA8E;QAC9E,4EAA4E;QAC5E,6EAA6E;QAC7E,8EAA8E;QAC9E,yDAAyD;QACzD,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/D,OAAO,EAAE,CAAC;YACV,SAAS;QACV,CAAC;QAED,8EAA8E;QAC9E,2EAA2E;QAC3E,WAAW,CAAC,IAAI,CAAC,MAAM,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,gFAAgF;IAChF,+EAA+E;IAC/E,yCAAyC;IACzC,KAAK,MAAM,QAAQ,IAAI,uBAAuB,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,CAAC;QAClE,IAAI,QAAQ,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YACpC,OAAO,EAAE,CAAC;YACV,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACnC,IAAI,QAAQ,CAAC,UAAU;gBAAE,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YACtE,qEAAqE;YACrE,yDAAyD;YACzD,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QACtF,CAAC;aAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACX,CAAC;IACF,CAAC;IAED,8EAA8E;IAC9E,+EAA+E;IAC/E,2EAA2E;IAC3E,mFAAmF;IACnF,MAAM,UAAU,CAAC,GAAG,EAAE;QACrB,WAAW,EAAE,kBAAkB;QAC/B,aAAa,EAAE,EAAE;QACjB,YAAY,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;QAC9B,cAAc,EAAE,KAAK,IAAI,EAAE;YAC1B,MAAM,oBAAoB,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;YACrD,4EAA4E;YAC5E,6EAA6E;YAC7E,4EAA4E;YAC5E,4EAA4E;YAC5E,yEAAyE;YACzE,8EAA8E;YAC9E,MAAM,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;YAC9B,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBACpC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACvC,CAAC;YACD,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACtB,CAAC;KACD,CAAC,CAAC;IAEH,6EAA6E;IAC7E,iFAAiF;IACjF,iBAAiB,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IACvC,GAAG,CAAC,UAAU,CAAC,sBAAsB,CAAC;QACrC,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM;QAC7B,OAAO;QACP,OAAO;KACP,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;AAC7B,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAC1C,GAAgB,EAChB,MAAwD;IAExD,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAE/D,kFAAkF;IAClF,mFAAmF;IACnF,mFAAmF;IACnF,mFAAmF;IACnF,oCAAoC;IACpC,KAAK,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,MAAM,EAAE,CAAC;QACxC,IAAI,CAAC;YACJ,MAAM,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CACX,2CAA2C,MAAM,IAAI,KAAK,GAAG;kBAC1D,6DAA6D;kBAC7D,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC9D,CAAC;QACH,CAAC;IACF,CAAC;AACF,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAClC,GAAgB,EAChB,MAAc,EACd,eAAe,GAAG,KAAK;IAEvB,gEAAgE;IAChE,IAAI,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC;QACtD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IACvC,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,iBAAiB,GAAG,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,YAAY,CACxF,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,EAAE,CACT,CAAC;QAEF,IAAI,iBAAiB,IAAI,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7E,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;QACvC,CAAC;QAED,OAAO;YACN,OAAO,EAAE,SAAS;YAClB,MAAM;YACN,YAAY,EAAE,iBAAiB,IAAI,SAAS;YAC5C,UAAU,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,EAAE,EAAE,MAAM,CAAC,EAAE;aACb;SACD,CAAC;IACH,CAAC;SAAM,CAAC;QACP,+EAA+E;QAC/E,MAAM,YAAY,GAAG,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,cAAc,CAAC,gBAAgB,CAC3F,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,EAAE,EACT,MAAM,CAAC,MAAM,CACb,CAAC;QAEF,0EAA0E;QAC1E,8EAA8E;QAC9E,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,KAAK,SAAS;YAChD,CAAC,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,QAAQ,EAAE,gBAAgB,EAAE,MAAM,CAAC,UAAU,EAAE;YAC1E,CAAC,CAAC,SAAS,CAAC;QAEb,IAAI,YAAY,EAAE,CAAC;YAClB,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,gBAAgB;gBAC7C,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC;oBAC7B,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,EAAE,EAAE,MAAM,CAAC,EAAE;oBACb,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,UAAU,EAAE,YAAY,CAAC,KAAK;oBAC9B,QAAQ,EAAE,YAAY,CAAC,GAAG;oBAC1B,WAAW,EAAE,MAAM,CAAC,KAAK;oBACzB,SAAS,EAAE,MAAM,CAAC,GAAG;oBACrB,GAAG,WAAW;iBACd,CAAC,KAAK,QAAQ;gBACf,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAEhD,IAAI,CAAC,UAAU,EAAE,CAAC;gBACjB,GAAG,CAAC,UAAU,CAAC,oBAAoB,CAAC;oBACnC,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,EAAE,EAAE,MAAM,CAAC,EAAE;oBACb,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,UAAU,EAAE,YAAY,CAAC,KAAK;oBAC9B,WAAW,EAAE,MAAM,CAAC,KAAK;oBACzB,MAAM,EAAE,OAAO;oBACf,UAAU,EAAE,YAAY,CAAC,GAAG;oBAC5B,GAAG,WAAW;iBACd,CAAC,CAAC;gBACH,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;YACxC,CAAC;QACF,CAAC;QAED,6DAA6D;QAC7D,MAAM,SAAS,GAAG,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,oBAAoB,CACpF,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,EAAE,EACT,MAAM,CAAC,GAAG,EACV,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAC5B,CAAC;QAEF,IAAI,SAAS,EAAE,CAAC;YACf,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;QACvC,CAAC;QAED,IAAI,YAAY,EAAE,CAAC;YAClB,GAAG,CAAC,UAAU,CAAC,oBAAoB,CAAC;gBACnC,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,EAAE,EAAE,MAAM,CAAC,EAAE;gBACb,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,UAAU,EAAE,YAAY,CAAC,KAAK;gBAC9B,WAAW,EAAE,MAAM,CAAC,KAAK;gBACzB,MAAM,EAAE,QAAQ;gBAChB,UAAU,EAAE,MAAM,CAAC,GAAG;gBACtB,GAAG,WAAW;aACd,CAAC,CAAC;QACJ,CAAC;QAED,OAAO;YACN,OAAO,EAAE,SAAS;YAClB,MAAM;YACN,gBAAgB,EAAE,YAAY,IAAI,SAAS;YAC3C,UAAU,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,EAAE,EAAE,MAAM,CAAC,EAAE;gBACb,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE;aAC1C;SACD,CAAC;IACH,CAAC;AACF,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,SAAS,uBAAuB,CAC/B,GAAgB,EAChB,QAA0B;IAE1B,6EAA6E;IAC7E,2EAA2E;IAC3E,8DAA8D;IAC9D,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAA0B,CAAC;IAC7D,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC9B,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ;YAAE,SAAS;QAC5E,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;QACrE,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAChE,kBAAkB,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACpC,CAAC;IACF,CAAC;IACD,IAAI,kBAAkB,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC;IAEnD,OAAO,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;QAC3B,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAChF,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;QAChG,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAC1B,IAAI,GAAG,CAAC,MAAM,CAAC,iBAAiB,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACzF,CAAC,MAAM,CAAC,WAAW,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC5D,0EAA0E;YAC1E,uEAAuE;YACvE,4EAA4E;YAC5E,4EAA4E;YAC5E,4EAA4E;YAC5E,OAAO,EAAE,GAAG,KAAK,EAAE,0BAA0B,EAAE,IAAI,EAAE,CAAC;QACvD,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;IACrD,CAAC,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACzC,GAAgB,EAChB,eAAiC;IAEjC,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAEzC,gFAAgF;IAChF,oFAAoF;IACpF,kCAAkC;IAClC,MAAM,aAAa,GAAG,IAAI,GAAG,EAA0B,CAAC;IACxD,MAAM,aAAa,GAAG,IAAI,GAAG,EAA0B,CAAC;IACxD,KAAK,MAAM,QAAQ,IAAI,eAAe,EAAE,CAAC;QACxC,IAAI,QAAQ,CAAC,OAAO,KAAK,SAAS;YAAE,SAAS;QAC7C,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC/B,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC9B,UAAU,CAAC,aAAa,EAAE,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;QAC7D,CAAC;aAAM,CAAC;YACP,UAAU,CAAC,aAAa,EAAE,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;QAC7D,CAAC;IACF,CAAC;IAED,MAAM,KAAK,GAAG,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IAC7B,KAAK,MAAM,QAAQ,IAAI,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC;QAC/C,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC/B,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ;YAAE,SAAS,CAAC,qCAAqC;QAC7E,oBAAoB,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;IACjE,CAAC;IACD,KAAK,MAAM,QAAQ,IAAI,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC;QAC/C,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC/B,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ;YAAE,SAAS,CAAC,qCAAqC;QAC7E,oBAAoB,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,gBAAgB,EAAE,QAAQ,CAAC,0BAA0B,CAAC,CAAC;IAC1G,CAAC;IACD,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;IAEpB,iFAAiF;IACjF,kFAAkF;IAClF,mFAAmF;IACnF,mFAAmF;IACnF,mFAAmF;IACnF,gFAAgF;IAChF,6EAA6E;IAC7E,gFAAgF;IAChF,kBAAkB;IAClB,KAAK,MAAM,QAAQ,IAAI,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC;QAC/C,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC/B,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ;YAAE,SAAS;QACvC,MAAM,YAAY,GAAG,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;QACpC,MAAM,8BAA8B,CAAC,GAAG,EAAE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE;YAC/F,WAAW,EAAE,QAAQ,CAAC,WAAW;SACjC,CAAC,CAAC;QACH,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;AACF,CAAC;AAED,0FAA0F;AAC1F,0FAA0F;AAC1F,+FAA+F;AAE/F;;;;;;;;GAQG;AACH,SAAS,cAAc,CAAC,GAAgB,EAAE,MAAc,EAAE,eAAyB;IAClF,MAAM,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9F,OAAO,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,IAAI,gBAAgB,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC;AAClF,CAAC;AAED,iFAAiF;AACjF,SAAS,SAAS,CAAC,GAAgB,EAAE,MAAmB;IACvD,OAAO,UAAU,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC;AAChD,CAAC;AAED,2FAA2F;AAC3F,SAAS,SAAS,CAAC,GAAgB,EAAE,MAAoB;IACxD,OAAO,UAAU,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;AACjE,CAAC;AAED,2FAA2F;AAC3F,SAAS,UAAU,CAClB,OAAoC,EACpC,GAAW,EACX,QAAwB;IAExB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,CAAC,IAAI,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAC5B,CAAC;AACF,CAAC;AAED,8FAA8F;AAC9F,SAAS,oBAAoB,CAC5B,GAAgB,EAChB,KAAiB,EACjB,MAAmB,EACnB,YAAmC;IAEnC,oFAAoF;IACpF,mFAAmF;IACnF,0CAA0C;IAC1C,IAAI,YAAY,EAAE,CAAC;QAClB,GAAG,CAAC,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,YAAY,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;IAC3G,CAAC;IACD,kFAAkF;IAClF,iFAAiF;IACjF,6EAA6E;IAC7E,6CAA6C;IAC7C,GAAG,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC7G,GAAG,CAAC,SAAS,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;AAC9F,CAAC;AAED,4FAA4F;AAC5F,SAAS,oBAAoB,CAC5B,GAAgB,EAChB,KAAiB,EACjB,MAAoB,EACpB,gBAA2C,EAC3C,0BAA0B,GAAG,KAAK;IAElC,+EAA+E;IAC/E,8EAA8E;IAC9E,+EAA+E;IAC/E,IAAI,gBAAgB,EAAE,CAAC;QACtB,GAAG,CAAC,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAC9H,CAAC;IACD,6EAA6E;IAC7E,iFAAiF;IACjF,+EAA+E;IAC/E,gFAAgF;IAChF,gFAAgF;IAChF,8EAA8E;IAC9E,MAAM,KAAK,GAAG,gBAAgB,IAAI,CAAC,0BAA0B;QAC5D,CAAC,CAAC,EAAE,QAAQ,EAAE,gBAAgB,CAAC,GAAG,EAAE,UAAU,EAAE,gBAAgB,CAAC,KAAK,EAAE;QACxE,CAAC,CAAC,SAAS,CAAC;IACb,GAAG,CAAC,cAAc,CAAC,qBAAqB,CACvC,KAAK,EACL,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,EAAE,EACT,MAAM,CAAC,MAAM,EACb,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,GAAG,KAAK,EAAE,CAClD,CAAC;IACF,GAAG,CAAC,SAAS,CAAC,uBAAuB,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;AACjH,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,KAAK,UAAU,4BAA4B,CAC1C,GAAgB,EAChB,cAAyD;IAEzD,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IACxC,IAAI,CAAC;QACJ,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;QACjD,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO,CAAC,gDAAgD;QAE/E,gFAAgF;QAChF,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC1C,KAAK,MAAM,EAAE,MAAM,EAAE,IAAI,cAAc,EAAE,CAAC;YACzC,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC;YAC7D,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC/B,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,KAAK,iBAAiB;gBAAE,SAAS;YAC5D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC7B,IAAI,GAAG,KAAK,SAAS,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,GAAG,GAAG;gBAAE,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC3F,CAAC;QACD,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO;QAE/B,MAAM,KAAK,GAAG,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;QAC7B,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,OAAO,EAAE,CAAC;YACnC,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;YAChC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,yBAAyB,IAAI,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YAC3E,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,yBAAyB,IAAI,CAAC,CAAC,EAAE,CAAC;gBACtD,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,GAAG,MAAM,EAAE,yBAAyB,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC9E,KAAK,GAAG,IAAI,CAAC;YACd,CAAC;QACF,CAAC;QACD,IAAI,KAAK;YAAE,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;IAChC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,CACX,gGAAgG;cAC7F,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC9D,CAAC;IACH,CAAC;AACF,CAAC"}
|
|
1
|
+
{"version":3,"file":"change-applicator.js","sourceRoot":"","sources":["../../../src/sync/change-applicator.ts"],"names":[],"mappings":"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"}
|