@origintrail-official/dkg-agent 10.0.7 → 10.0.9

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 (120) hide show
  1. package/dist/chain-reconciler.d.ts +32 -4
  2. package/dist/chain-reconciler.d.ts.map +1 -1
  3. package/dist/chain-reconciler.js +129 -21
  4. package/dist/chain-reconciler.js.map +1 -1
  5. package/dist/context-graph-public-meta-proof.d.ts +17 -0
  6. package/dist/context-graph-public-meta-proof.d.ts.map +1 -0
  7. package/dist/context-graph-public-meta-proof.js +103 -0
  8. package/dist/context-graph-public-meta-proof.js.map +1 -0
  9. package/dist/context-graph-public-meta-repair.d.ts +19 -0
  10. package/dist/context-graph-public-meta-repair.d.ts.map +1 -0
  11. package/dist/context-graph-public-meta-repair.js +100 -0
  12. package/dist/context-graph-public-meta-repair.js.map +1 -0
  13. package/dist/curator-meta-refresh.d.ts.map +1 -1
  14. package/dist/curator-meta-refresh.js +10 -2
  15. package/dist/curator-meta-refresh.js.map +1 -1
  16. package/dist/dkg-agent-base.d.ts +13 -0
  17. package/dist/dkg-agent-base.d.ts.map +1 -1
  18. package/dist/dkg-agent-base.js +13 -0
  19. package/dist/dkg-agent-base.js.map +1 -1
  20. package/dist/dkg-agent-cg-resolve.d.ts +1 -1
  21. package/dist/dkg-agent-cg-resolve.d.ts.map +1 -1
  22. package/dist/dkg-agent-cg-resolve.js +14 -1
  23. package/dist/dkg-agent-cg-resolve.js.map +1 -1
  24. package/dist/dkg-agent-context-graph.d.ts.map +1 -1
  25. package/dist/dkg-agent-context-graph.js +10 -2
  26. package/dist/dkg-agent-context-graph.js.map +1 -1
  27. package/dist/dkg-agent-crypto.d.ts +8 -1
  28. package/dist/dkg-agent-crypto.d.ts.map +1 -1
  29. package/dist/dkg-agent-crypto.js +14 -8
  30. package/dist/dkg-agent-crypto.js.map +1 -1
  31. package/dist/dkg-agent-lifecycle.d.ts +26 -11
  32. package/dist/dkg-agent-lifecycle.d.ts.map +1 -1
  33. package/dist/dkg-agent-lifecycle.js +155 -17
  34. package/dist/dkg-agent-lifecycle.js.map +1 -1
  35. package/dist/dkg-agent-publish.d.ts +32 -0
  36. package/dist/dkg-agent-publish.d.ts.map +1 -1
  37. package/dist/dkg-agent-publish.js +64 -2
  38. package/dist/dkg-agent-publish.js.map +1 -1
  39. package/dist/dkg-agent-swm-host.d.ts +19 -2
  40. package/dist/dkg-agent-swm-host.d.ts.map +1 -1
  41. package/dist/dkg-agent-swm-host.js +210 -13
  42. package/dist/dkg-agent-swm-host.js.map +1 -1
  43. package/dist/dkg-agent-swm-substrate.d.ts.map +1 -1
  44. package/dist/dkg-agent-swm-substrate.js +8 -0
  45. package/dist/dkg-agent-swm-substrate.js.map +1 -1
  46. package/dist/dkg-agent-types.d.ts +9 -0
  47. package/dist/dkg-agent-types.d.ts.map +1 -1
  48. package/dist/dkg-agent-types.js.map +1 -1
  49. package/dist/dkg-agent.d.ts.map +1 -1
  50. package/dist/dkg-agent.js +17 -3
  51. package/dist/dkg-agent.js.map +1 -1
  52. package/dist/finalized-assertion-author.d.ts +47 -0
  53. package/dist/finalized-assertion-author.d.ts.map +1 -0
  54. package/dist/finalized-assertion-author.js +89 -0
  55. package/dist/finalized-assertion-author.js.map +1 -0
  56. package/dist/ka-identity.d.ts +10 -0
  57. package/dist/ka-identity.d.ts.map +1 -1
  58. package/dist/ka-identity.js +16 -0
  59. package/dist/ka-identity.js.map +1 -1
  60. package/dist/reconcile-cursor.d.ts +8 -0
  61. package/dist/reconcile-cursor.d.ts.map +1 -1
  62. package/dist/reconcile-cursor.js +6 -1
  63. package/dist/reconcile-cursor.js.map +1 -1
  64. package/dist/rootless-lifecycle-graph.d.ts +19 -0
  65. package/dist/rootless-lifecycle-graph.d.ts.map +1 -0
  66. package/dist/rootless-lifecycle-graph.js +30 -0
  67. package/dist/rootless-lifecycle-graph.js.map +1 -0
  68. package/dist/sync/auth/request-build.d.ts +8 -0
  69. package/dist/sync/auth/request-build.d.ts.map +1 -1
  70. package/dist/sync/auth/request-build.js +7 -2
  71. package/dist/sync/auth/request-build.js.map +1 -1
  72. package/dist/sync/checkpoint/state.d.ts +14 -1
  73. package/dist/sync/checkpoint/state.d.ts.map +1 -1
  74. package/dist/sync/checkpoint/state.js +48 -2
  75. package/dist/sync/checkpoint/state.js.map +1 -1
  76. package/dist/sync/durable-integrity.d.ts.map +1 -1
  77. package/dist/sync/durable-integrity.js +56 -2
  78. package/dist/sync/durable-integrity.js.map +1 -1
  79. package/dist/sync/error-tags.d.ts.map +1 -1
  80. package/dist/sync/error-tags.js +8 -0
  81. package/dist/sync/error-tags.js.map +1 -1
  82. package/dist/sync/exact-assets.d.ts +16 -0
  83. package/dist/sync/exact-assets.d.ts.map +1 -0
  84. package/dist/sync/exact-assets.js +57 -0
  85. package/dist/sync/exact-assets.js.map +1 -0
  86. package/dist/sync/requester/durable-sync.d.ts +12 -1
  87. package/dist/sync/requester/durable-sync.d.ts.map +1 -1
  88. package/dist/sync/requester/durable-sync.js +38 -6
  89. package/dist/sync/requester/durable-sync.js.map +1 -1
  90. package/dist/sync/requester/graph-scoped-materialization.d.ts +10 -3
  91. package/dist/sync/requester/graph-scoped-materialization.d.ts.map +1 -1
  92. package/dist/sync/requester/graph-scoped-materialization.js +34 -25
  93. package/dist/sync/requester/graph-scoped-materialization.js.map +1 -1
  94. package/dist/sync/requester/page-fetch.d.ts +3 -1
  95. package/dist/sync/requester/page-fetch.d.ts.map +1 -1
  96. package/dist/sync/requester/page-fetch.js +118 -23
  97. package/dist/sync/requester/page-fetch.js.map +1 -1
  98. package/dist/sync/requester/shared-memory-sync.d.ts +14 -0
  99. package/dist/sync/requester/shared-memory-sync.d.ts.map +1 -1
  100. package/dist/sync/requester/shared-memory-sync.js +169 -2
  101. package/dist/sync/requester/shared-memory-sync.js.map +1 -1
  102. package/dist/sync/requester/swm-snapshot-materializer.d.ts +87 -0
  103. package/dist/sync/requester/swm-snapshot-materializer.d.ts.map +1 -0
  104. package/dist/sync/requester/swm-snapshot-materializer.js +130 -0
  105. package/dist/sync/requester/swm-snapshot-materializer.js.map +1 -0
  106. package/dist/sync/responder/graph-plan.d.ts +69 -0
  107. package/dist/sync/responder/graph-plan.d.ts.map +1 -1
  108. package/dist/sync/responder/graph-plan.js +696 -149
  109. package/dist/sync/responder/graph-plan.js.map +1 -1
  110. package/dist/sync/responder/snapshot-budget.d.ts +9 -0
  111. package/dist/sync/responder/snapshot-budget.d.ts.map +1 -1
  112. package/dist/sync/responder/snapshot-budget.js +7 -5
  113. package/dist/sync/responder/snapshot-budget.js.map +1 -1
  114. package/dist/sync/responder/snapshot-cache.d.ts.map +1 -1
  115. package/dist/sync/responder/snapshot-cache.js +11 -1
  116. package/dist/sync/responder/snapshot-cache.js.map +1 -1
  117. package/dist/sync/responder/sync-handler.d.ts.map +1 -1
  118. package/dist/sync/responder/sync-handler.js +29 -4
  119. package/dist/sync/responder/sync-handler.js.map +1 -1
  120. package/package.json +7 -7
@@ -42,9 +42,16 @@ export type OrdinalOutcome = {
42
42
  blockNumber: number;
43
43
  } | {
44
44
  status: 'pending';
45
+ recovery?: OrdinalRecoveryTarget;
45
46
  } | {
46
47
  status: 'skip';
47
48
  };
49
+ export interface OrdinalRecoveryTarget {
50
+ ordinal: number;
51
+ ual: string;
52
+ kaId: string;
53
+ reason: 'no-swm' | 'verified-vm-metadata-pending';
54
+ }
48
55
  export interface ChainReconcilerDeps {
49
56
  /** Chain-head ordinal for the CG (`getContextGraphKCCount`). */
50
57
  getKCCount: (onChainCgId: bigint) => Promise<number>;
@@ -63,6 +70,21 @@ export interface ChainReconcilerDeps {
63
70
  * (reorg-safe without a per-ordinal registration-block lookup).
64
71
  */
65
72
  reconcileOrdinal: (localCgId: string, onChainCgId: bigint, ordinal: number, headBlock: number | undefined) => Promise<OrdinalOutcome>;
73
+ /** Maximum ordinals attempted before yielding the global VM worker. */
74
+ maxOrdinalsPerPass?: number;
75
+ /** Maximum ordinal reconciliations allowed to run concurrently in one pass. */
76
+ maxOrdinalConcurrency?: number;
77
+ /**
78
+ * Fetch one exact batch containing only locally-missing KAs, then re-run
79
+ * local verification for those ordinals. Undefined preserves scan-only
80
+ * behavior for callers/tests that do not provide network recovery.
81
+ */
82
+ recoverPendingOrdinals?: (localCgId: string, onChainCgId: bigint, targets: readonly OrdinalRecoveryTarget[], headBlock: number | undefined) => Promise<ReadonlyMap<number, OrdinalOutcome>>;
83
+ /**
84
+ * Revalidate the local-CG -> on-chain-CG binding between ordinals. An active
85
+ * pass must stop when discovery repairs a stale/reused chain id.
86
+ */
87
+ isTargetCurrent?: (localCgId: string, onChainCgId: bigint) => boolean | Promise<boolean>;
66
88
  /** Persist the watermark. Called ONLY when it actually moves. */
67
89
  persistWatermark: (localCgId: string, watermark: number) => void;
68
90
  /** Confirmation depth (blocks) before a completed ordinal advances the watermark. */
@@ -74,12 +96,18 @@ export interface ReconcileResult {
74
96
  watermark: number;
75
97
  reconciled: number;
76
98
  pending: number;
99
+ processed: number;
100
+ /** True when another bounded slice should be queued immediately. */
101
+ hasMore: boolean;
102
+ /** True when this pass stopped because its captured chain binding changed. */
103
+ staleTarget: boolean;
77
104
  }
78
105
  /**
79
- * One sweep pass for a single CG: reconcile every ordinal in `[watermark, head)`
80
- * (skipping ones already completed and held in the cursor), then advance the
81
- * contiguous, confirmation-depth-buried watermark. Persists the watermark only
82
- * if it moved. Mutates `state` in place (the agent owns one `CursorState` per CG).
106
+ * One bounded sweep slice for a single CG: reconcile up to
107
+ * `maxOrdinalsPerPass` ordinals in `[watermark, head)` (skipping ones already
108
+ * completed and held in the cursor), then advance the contiguous,
109
+ * confirmation-depth-buried watermark. Persists the watermark only if it
110
+ * moved. Mutates `state` in place (the agent owns one `CursorState` per CG).
83
111
  */
84
112
  export declare function reconcileContextGraph(deps: ChainReconcilerDeps, state: CursorState, localCgId: string, onChainCgId: bigint): Promise<ReconcileResult>;
85
113
  export interface VmReconcileDispatcherOptions {
@@ -1 +1 @@
1
- {"version":3,"file":"chain-reconciler.d.ts","sourceRoot":"","sources":["../src/chain-reconciler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chain-reconciler.d.ts","sourceRoot":"","sources":["../src/chain-reconciler.ts"],"names":[],"mappings":"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"}
@@ -25,10 +25,11 @@
25
25
  import { recordCompletion, absorbConfirmed, ordinalsToReconcile, } from './reconcile-cursor.js';
26
26
  import { VmReconcileQueueClosedError, VmReconcileQueueFullError, } from './vm-reconcile-service.js';
27
27
  /**
28
- * One sweep pass for a single CG: reconcile every ordinal in `[watermark, head)`
29
- * (skipping ones already completed and held in the cursor), then advance the
30
- * contiguous, confirmation-depth-buried watermark. Persists the watermark only
31
- * if it moved. Mutates `state` in place (the agent owns one `CursorState` per CG).
28
+ * One bounded sweep slice for a single CG: reconcile up to
29
+ * `maxOrdinalsPerPass` ordinals in `[watermark, head)` (skipping ones already
30
+ * completed and held in the cursor), then advance the contiguous,
31
+ * confirmation-depth-buried watermark. Persists the watermark only if it
32
+ * moved. Mutates `state` in place (the agent owns one `CursorState` per CG).
32
33
  */
33
34
  export async function reconcileContextGraph(deps, state, localCgId, onChainCgId) {
34
35
  const head = await deps.getKCCount(onChainCgId);
@@ -38,7 +39,16 @@ export async function reconcileContextGraph(deps, state, localCgId, onChainCgId)
38
39
  // work. A watermark ahead of the observed head is surfaced by the caller as
39
40
  // an evidence mismatch, but is equally non-actionable in this pass.
40
41
  if (before >= head) {
41
- return { head, watermark: before, reconciled: 0, pending: 0 };
42
+ state.scanOrdinal = before;
43
+ return {
44
+ head,
45
+ watermark: before,
46
+ reconciled: 0,
47
+ pending: 0,
48
+ processed: 0,
49
+ hasMore: false,
50
+ staleTarget: false,
51
+ };
42
52
  }
43
53
  // Keep transient head-fetch failures distinct from truly head-less chains.
44
54
  // A thrown head read means the chain is temporarily unavailable; skip
@@ -59,34 +69,132 @@ export async function reconcileContextGraph(deps, state, localCgId, onChainCgId)
59
69
  if (headBlock !== undefined)
60
70
  absorbConfirmed(state, headBlock, deps.confirmationDepth);
61
71
  let reconciled = 0;
62
- let pending = 0;
63
- const ordinals = ordinalsToReconcile(state, head);
72
+ let processed = 0;
73
+ let staleTarget = false;
74
+ const outstandingBefore = ordinalsToReconcile(state, head);
75
+ const configuredLimit = deps.maxOrdinalsPerPass;
76
+ const passLimit = configuredLimit === undefined
77
+ ? Number.POSITIVE_INFINITY
78
+ : Math.max(1, Math.floor(configuredLimit));
79
+ const scanStart = Math.max(state.watermark, state.scanOrdinal);
80
+ let candidates = outstandingBefore.filter((ordinal) => ordinal >= scanStart);
81
+ if (candidates.length === 0 && outstandingBefore.length > 0) {
82
+ // A prior slice reached the observed head. A later periodic pass starts a
83
+ // fresh cycle from the first still-missing contiguous gap.
84
+ state.scanOrdinal = state.watermark;
85
+ candidates = outstandingBefore;
86
+ }
87
+ const ordinals = candidates.slice(0, passLimit);
88
+ const hasUnvisitedCandidates = candidates.length > ordinals.length;
64
89
  if (headUnavailable) {
65
- pending = ordinals.length;
90
+ state.scanOrdinal = state.watermark;
66
91
  }
67
92
  else {
68
- for (const ordinal of ordinals) {
69
- const outcome = await deps.reconcileOrdinal(localCgId, onChainCgId, ordinal, headBlock);
70
- if (outcome.status === 'reconciled' || outcome.status === 'already') {
71
- reconciled += 1;
72
- // With a known head, apply the reorg-depth gate; otherwise (no chain
73
- // head) absorb as soon as contiguous (depth 0) using the registration
74
- // block as a self-consistent head.
75
- recordCompletion(state, { ordinal, blockNumber: outcome.blockNumber }, headBlock ?? outcome.blockNumber, headBlock !== undefined ? deps.confirmationDepth : 0);
93
+ const configuredConcurrency = deps.maxOrdinalConcurrency;
94
+ const ordinalConcurrency = configuredConcurrency === undefined
95
+ ? 1
96
+ : Math.max(1, Math.floor(configuredConcurrency));
97
+ const outcomes = new Map();
98
+ let nextOrdinalIndex = 0;
99
+ let workerFailed = false;
100
+ let workerError;
101
+ const runOrdinalWorker = async () => {
102
+ // Contain failures instead of racing them: a thrown ordinal must not
103
+ // leave sibling workers running past this pass's lifetime (their network
104
+ // and store side effects would overlap the caller's retry). The first
105
+ // error stops dispatch across all workers, every in-flight ordinal is
106
+ // drained, and only then does the pass reject with that error.
107
+ try {
108
+ while (!staleTarget && !workerFailed) {
109
+ const index = nextOrdinalIndex;
110
+ nextOrdinalIndex += 1;
111
+ if (index >= ordinals.length)
112
+ return;
113
+ if (deps.isTargetCurrent && !(await deps.isTargetCurrent(localCgId, onChainCgId))) {
114
+ staleTarget = true;
115
+ return;
116
+ }
117
+ const ordinal = ordinals[index];
118
+ const outcome = await deps.reconcileOrdinal(localCgId, onChainCgId, ordinal, headBlock);
119
+ processed += 1;
120
+ if (deps.isTargetCurrent && !(await deps.isTargetCurrent(localCgId, onChainCgId))) {
121
+ staleTarget = true;
122
+ return;
123
+ }
124
+ outcomes.set(ordinal, outcome);
125
+ }
126
+ }
127
+ catch (error) {
128
+ if (!workerFailed) {
129
+ workerFailed = true;
130
+ workerError = error;
131
+ }
132
+ }
133
+ };
134
+ const workerCount = Math.min(ordinalConcurrency, ordinals.length);
135
+ await Promise.all(Array.from({ length: workerCount }, () => runOrdinalWorker()));
136
+ if (workerFailed)
137
+ throw workerError;
138
+ const recoveryTargets = ordinals
139
+ .map((ordinal) => outcomes.get(ordinal))
140
+ .filter((outcome) => outcome?.status === 'pending' && outcome.recovery !== undefined)
141
+ .map((outcome) => outcome.recovery);
142
+ if (!staleTarget && recoveryTargets.length > 0 && deps.recoverPendingOrdinals) {
143
+ const recovered = await deps.recoverPendingOrdinals(localCgId, onChainCgId, recoveryTargets, headBlock);
144
+ // Recovery is the longest await in the pass; the binding can be repaired
145
+ // while it runs. Outcomes recovered under the old binding must never
146
+ // advance or persist cursor state for the rebound CG, so re-check before
147
+ // merging and treat staleness exactly like staleness during ordinal work.
148
+ if (deps.isTargetCurrent && !(await deps.isTargetCurrent(localCgId, onChainCgId))) {
149
+ staleTarget = true;
76
150
  }
77
151
  else {
78
- pending += 1;
152
+ for (const [ordinal, outcome] of recovered)
153
+ outcomes.set(ordinal, outcome);
79
154
  }
80
155
  }
156
+ // Cursor state is deliberately updated in ordinal order even though chain
157
+ // reads, store verification, and independent per-KA materializations ran in
158
+ // parallel. This preserves the contiguous-watermark contract and makes the
159
+ // observable result deterministic.
160
+ if (!staleTarget)
161
+ for (const ordinal of ordinals) {
162
+ const outcome = outcomes.get(ordinal);
163
+ if (!outcome)
164
+ continue;
165
+ if (outcome.status === 'reconciled' || outcome.status === 'already') {
166
+ reconciled += 1;
167
+ // With a known head, apply the reorg-depth gate; otherwise (no chain
168
+ // head) absorb as soon as contiguous (depth 0) using the registration
169
+ // block as a self-consistent head.
170
+ recordCompletion(state, { ordinal, blockNumber: outcome.blockNumber }, headBlock ?? outcome.blockNumber, headBlock !== undefined ? deps.confirmationDepth : 0);
171
+ }
172
+ }
81
173
  }
174
+ if (staleTarget || headUnavailable || !hasUnvisitedCandidates) {
175
+ state.scanOrdinal = state.watermark;
176
+ }
177
+ else if (ordinals.length > 0) {
178
+ state.scanOrdinal = ordinals[ordinals.length - 1] + 1;
179
+ }
180
+ const pending = ordinalsToReconcile(state, head).length;
181
+ const hasMore = !headUnavailable && !staleTarget && hasUnvisitedCandidates;
82
182
  if (state.watermark !== before) {
83
183
  deps.persistWatermark(localCgId, state.watermark);
84
- deps.log(`reconcile ${localCgId}: watermark ${before} -> ${state.watermark} (head=${head}, reconciled=${reconciled}, pending=${pending})`);
184
+ deps.log(`reconcile ${localCgId}: watermark ${before} -> ${state.watermark} (head=${head}, processed=${processed}, reconciled=${reconciled}, pending=${pending})`);
85
185
  }
86
186
  else if (reconciled > 0 || pending > 0) {
87
- deps.log(`reconcile ${localCgId}: watermark held at ${state.watermark} (head=${head}, reconciled=${reconciled}, pending=${pending}${headUnavailable ? ', headUnavailable' : ''})`);
88
- }
89
- return { head, watermark: state.watermark, reconciled, pending };
187
+ deps.log(`reconcile ${localCgId}: watermark held at ${state.watermark} (head=${head}, processed=${processed}, reconciled=${reconciled}, pending=${pending}${headUnavailable ? ', headUnavailable' : ''})`);
188
+ }
189
+ return {
190
+ head,
191
+ watermark: state.watermark,
192
+ reconciled,
193
+ pending,
194
+ processed,
195
+ hasMore,
196
+ staleTarget,
197
+ };
90
198
  }
91
199
  function vmReconcileSourceRank(source) {
92
200
  if (source === 'manual')
@@ -1 +1 @@
1
- {"version":3,"file":"chain-reconciler.js","sourceRoot":"","sources":["../src/chain-reconciler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAEL,gBAAgB,EAChB,eAAe,EACf,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,2BAA2B,EAC3B,yBAAyB,GAE1B,MAAM,2BAA2B,CAAC;AAuDnC;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,IAAyB,EACzB,KAAkB,EAClB,SAAiB,EACjB,WAAmB;IAEnB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;IAE/B,0EAA0E;IAC1E,6EAA6E;IAC7E,4EAA4E;IAC5E,oEAAoE;IACpE,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;QACnB,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IAChE,CAAC;IAED,2EAA2E;IAC3E,sEAAsE;IACtE,0EAA0E;IAC1E,iDAAiD;IACjD,IAAI,SAA6B,CAAC;IAClC,IAAI,eAAe,GAAG,KAAK,CAAC;IAC5B,IAAI,CAAC;QACH,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;IACxC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,eAAe,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,GAAG,CAAC,aAAa,SAAS,6CAA6C,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACnI,CAAC;IAED,0EAA0E;IAC1E,0EAA0E;IAC1E,oEAAoE;IACpE,IAAI,SAAS,KAAK,SAAS;QAAE,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAEvF,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,MAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAClD,IAAI,eAAe,EAAE,CAAC;QACpB,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC;IAC5B,CAAC;SAAM,CAAC;QACN,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;YACxF,IAAI,OAAO,CAAC,MAAM,KAAK,YAAY,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBACpE,UAAU,IAAI,CAAC,CAAC;gBAChB,qEAAqE;gBACrE,sEAAsE;gBACtE,mCAAmC;gBACnC,gBAAgB,CACd,KAAK,EACL,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,EAC7C,SAAS,IAAI,OAAO,CAAC,WAAW,EAChC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CACrD,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,OAAO,IAAI,CAAC,CAAC;YACf,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;QAC/B,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QAClD,IAAI,CAAC,GAAG,CAAC,aAAa,SAAS,eAAe,MAAM,OAAO,KAAK,CAAC,SAAS,UAAU,IAAI,gBAAgB,UAAU,aAAa,OAAO,GAAG,CAAC,CAAC;IAC7I,CAAC;SAAM,IAAI,UAAU,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QACzC,IAAI,CAAC,GAAG,CAAC,aAAa,SAAS,uBAAuB,KAAK,CAAC,SAAS,UAAU,IAAI,gBAAgB,UAAU,aAAa,OAAO,GAAG,eAAe,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACrL,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;AACnE,CAAC;AA4CD,SAAS,qBAAqB,CAAC,MAAyB;IACtD,IAAI,MAAM,KAAK,QAAQ;QAAE,OAAO,CAAC,CAAC;IAClC,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,CAAC,CAAC;IAChC,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,OAAO,qBAAqB;IAeb;IACA;IAfX,MAAM,GAAG,CAAC,CAAC;IACX,MAAM,GAAG,CAAC,CAAC;IACX,QAAQ,GAAG,CAAC,CAAC;IACb,eAAe,GAAG,CAAC,CAAC;IACpB,MAAM,GAAG,KAAK,CAAC;IACN,MAAM,GAAG,IAAI,GAAG,EAAuC,CAAC;IACxD,OAAO,GAAsC,EAAE,CAAC;IAChD,WAAW,GAAG,IAAI,GAAG,EAAc,CAAC;IACpC,cAAc,GAAG,IAAI,GAAG,EAA2B,CAAC;IACpD,WAAW,CAAS;IACpB,UAAU,CAAS;IACnB,kBAAkB,CAAS;IAE5C,YACmB,GAA2D,EAC3D,SAAgD,EACjE,UAAwC,EAAE;QAFzB,QAAG,GAAH,GAAG,CAAwD;QAC3D,cAAS,GAAT,SAAS,CAAuC;QAGjE,MAAM,EACJ,WAAW,GAAG,CAAC,EACf,UAAU,GAAG,GAAG,EAChB,kBAAkB,GAAG,CAAC,GACvB,GAAG,OAAO,CAAC;QACZ,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;YAC1D,MAAM,IAAI,KAAK,CAAC,iEAAiE,WAAW,EAAE,CAAC,CAAC;QAClG,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;YACxD,MAAM,IAAI,KAAK,CAAC,gEAAgE,UAAU,EAAE,CAAC,CAAC;QAChG,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,kBAAkB,GAAG,CAAC,EAAE,CAAC;YACxE,MAAM,IAAI,KAAK,CAAC,wEAAwE,kBAAkB,EAAE,CAAC,CAAC;QAChH,CAAC;QACD,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;IAC/C,CAAC;IAED,uFAAuF;IACvF,WAAW,CAAC,GAAW;QACrB,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,KAAK,cAAc;YAAE,OAAO;QAC1D,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACtD,CAAC;IAED,iFAAiF;IACjF,eAAe,CAAC,GAAW;QACzB,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC1D,CAAC;IAED;;;;;OAKG;IACH,kBAAkB,CAAC,GAAW;QAC5B,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QACrD,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,8EAA8E;IAC9E,aAAa,CAAC,GAAW;QACvB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED,+EAA+E;IAC/E,QAAQ,CAAC,GAAW,EAAE,MAAyB;QAC7C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACjC,CAAC;IAED,UAAU,CAAC,GAAW;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnC,OAAO,OAAO,CAAC,KAAK,EAAE,MAAM,IAAI,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,QAAQ,CAAC,CAAC;IACrE,CAAC;IAED,aAAa,CAAC,GAAW;QACvB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC;IAC/C,CAAC;IAED,QAAQ;QACN,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;IAC3E,CAAC;IAED,4EAA4E;IAC5E,KAAK;QACH,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,MAAM,KAAK,GAAG,IAAI,2BAA2B,EAAE,CAAC;YAChD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACxC,IAAI,KAAK,EAAE,OAAO,KAAK,IAAI;oBAAE,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC;gBACvD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC;YACD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBACvC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;oBACnB,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC7B,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC;gBAC7B,CAAC;gBACD,IAAI,CAAC,KAAK,CAAC,MAAM;oBAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC3C,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;YAClC,CAAC;YACD,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;YAChB,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC5B,CAAC;QACD,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;IAED,6EAA6E;IAC7E,WAAW,CAAC,GAAY;QACtB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;YACpD,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;gBACnC,IAAI,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;oBACpB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;gBACxC,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACvB,CAAC,CAAC,CAAC;QACL,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QACrE,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IACvE,CAAC;IAEO,QAAQ,CAAC,GAAW;QAC1B,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,KAAK,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;YAC1B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC9B,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,uBAAuB,CAAC,GAAW;QACzC,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,QAAQ;YAAE,OAAO,IAAI,CAAC;QACnD,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;IACvC,CAAC;IAEO,KAAK,CAAC,GAAW,EAAE,MAAyB;QAClD,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,2BAA2B,EAAE,CAAC,CAAC;QAC1E,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAEjC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACtC,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAC/B,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,yEAAyE;YACzE,wEAAwE;YACxE,sEAAsE;YACtE,4DAA4D;YAC5D,IAAI,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC5D,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;YAC9B,CAAC;YACD,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACnB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;gBACvC,OAAO,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;YAChC,CAAC;YACD,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YACpD,IAAI,CAAC,QAAQ;gBAAE,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,yBAAyB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;YACrF,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAC1B,OAAO,QAAQ,CAAC,OAAO,CAAC;QAC1B,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO;gBAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACpD,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,yBAAyB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QACxE,CAAC;QACD,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAEO,gBAAgB,CACtB,GAAW,EACX,MAAyB;QAEzB,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU;YAAE,OAAO,SAAS,CAAC;QACrD,IAAI,WAAgC,CAAC;QACrC,IAAI,UAAqC,CAAC;QAC1C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACjD,WAAW,GAAG,OAAO,CAAC;YACtB,UAAU,GAAG,MAAM,CAAC;QACtB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;QACjB,OAAO;YACL,GAAG;YACH,MAAM;YACN,SAAS,EAAE,MAAM,KAAK,QAAQ;YAC9B,iBAAiB,EAAE,MAAM,KAAK,UAAU;YACxC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;YACzB,OAAO;YACP,OAAO,EAAE,WAAW;YACpB,MAAM,EAAE,UAAU;SACnB,CAAC;IACJ,CAAC;IAEO,WAAW;QACjB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACzB,MAAM,aAAa,GAAG,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;kBACnD,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACtC,OAAO,aAAa,IAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;QAClD,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,SAAS,CAAC,IAAgC,EAAE,MAAyB;QAC3E,IAAI,CAAC,SAAS,KAAK,MAAM,KAAK,QAAQ,CAAC;QACvC,IAAI,CAAC,iBAAiB,KAAK,MAAM,KAAK,UAAU,CAAC;QACjD,IAAI,qBAAqB,CAAC,MAAM,CAAC,GAAG,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACvE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACvB,CAAC;IACH,CAAC;IAEO,QAAQ;QACd,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QAChD,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACpD,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC;YACrF,IAAI,eAAe,IAAI,CAAC;gBAAE,KAAK,GAAG,eAAe,CAAC;QACpD,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI;YAAE,OAAO,SAAS,CAAC;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,KAAK,EAAE,OAAO,KAAK,IAAI;YAAE,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC;QACvD,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;QACjB,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU;YAAE,IAAI,CAAC,eAAe,IAAI,CAAC,CAAC;;YACrD,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,kBAAkB;QACxB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QACnD,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO,EAAE,CAAC;QAClD,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;IAEO,qBAAqB,CAAC,GAAW;QACvC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChC,KAAK,MAAM,OAAO,IAAI,OAAO;YAAE,OAAO,EAAE,CAAC;IAC3C,CAAC;IAEO,KAAK;QACX,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjF,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC7B,IAAI,CAAC,IAAI;gBAAE,OAAO;YAClB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACtC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;YACpB,IAAI,IAAI,CAAC,iBAAiB;gBAAE,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC;YACjD,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;YACjB,IAAI,OAAgB,CAAC;YACrB,KAAK,OAAO,CAAC,OAAO,EAAE;iBACnB,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;iBAC3C,IAAI,CACH,CAAC,MAAM,EAAE,EAAE;gBACT,mEAAmE;gBACnE,+CAA+C;gBAC/C,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC;gBACrB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACvB,CAAC,EACD,CAAC,KAAK,EAAE,EAAE;gBACR,OAAO,GAAG,KAAK,CAAC;gBAChB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;oBACnB,KAAK,CAAC,IAAI,GAAG,cAAc,CAAC;oBAC5B,IAAI,CAAC;wBACH,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;oBAClC,CAAC;oBAAC,MAAM,CAAC;wBACP,uDAAuD;oBACzD,CAAC;gBACH,CAAC;gBACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC,CACF;iBACA,OAAO,CAAC,GAAG,EAAE;gBACZ,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;gBACjB,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;gBACzB,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;gBAChC,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC;gBAC3B,IACE,QAAQ;uBACL,KAAK,CAAC,IAAI,KAAK,cAAc;uBAC7B,QAAQ,CAAC,MAAM,KAAK,MAAM;uBAC1B,CAAC,QAAQ,CAAC,iBAAiB,EAC9B,CAAC;oBACD,kEAAkE;oBAClE,gEAAgE;oBAChE,iEAAiE;oBACjE,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;oBACjB,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAC3B,CAAC;qBAAM,IAAI,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;oBACpC,KAAK,CAAC,OAAO,GAAG,QAAQ,CAAC;oBACzB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAC5B,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,CAAC;qBAAM,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBAC/C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC/B,CAAC;gBACD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC1B,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvC,CAAC,CAAC,CAAC;QACP,CAAC;IACH,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,YAAY;IAEM;IADZ,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;IAClD,YAA6B,MAAM,IAAI;QAAV,QAAG,GAAH,GAAG,CAAO;IAAG,CAAC;IAE3C,GAAG,CAAC,GAAW;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED,GAAG,CAAC,GAAW;QACb,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO;QAC/B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAC/B,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YAC7C,IAAI,MAAM,KAAK,SAAS;gBAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED,cAAc,CAAC,MAAc,EAAE,MAAe;QAC5C,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACnC,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;gBAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"chain-reconciler.js","sourceRoot":"","sources":["../src/chain-reconciler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAEL,gBAAgB,EAChB,eAAe,EACf,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,2BAA2B,EAC3B,yBAAyB,GAE1B,MAAM,2BAA2B,CAAC;AAuFnC;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,IAAyB,EACzB,KAAkB,EAClB,SAAiB,EACjB,WAAmB;IAEnB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;IAE/B,0EAA0E;IAC1E,6EAA6E;IAC7E,4EAA4E;IAC5E,oEAAoE;IACpE,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;QACnB,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC;QAC3B,OAAO;YACL,IAAI;YACJ,SAAS,EAAE,MAAM;YACjB,UAAU,EAAE,CAAC;YACb,OAAO,EAAE,CAAC;YACV,SAAS,EAAE,CAAC;YACZ,OAAO,EAAE,KAAK;YACd,WAAW,EAAE,KAAK;SACnB,CAAC;IACJ,CAAC;IAED,2EAA2E;IAC3E,sEAAsE;IACtE,0EAA0E;IAC1E,iDAAiD;IACjD,IAAI,SAA6B,CAAC;IAClC,IAAI,eAAe,GAAG,KAAK,CAAC;IAC5B,IAAI,CAAC;QACH,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;IACxC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,eAAe,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,GAAG,CAAC,aAAa,SAAS,6CAA6C,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACnI,CAAC;IAED,0EAA0E;IAC1E,0EAA0E;IAC1E,oEAAoE;IACpE,IAAI,SAAS,KAAK,SAAS;QAAE,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAEvF,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,MAAM,iBAAiB,GAAG,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC3D,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC;IAChD,MAAM,SAAS,GAAG,eAAe,KAAK,SAAS;QAC7C,CAAC,CAAC,MAAM,CAAC,iBAAiB;QAC1B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IAC/D,IAAI,UAAU,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,IAAI,SAAS,CAAC,CAAC;IAC7E,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5D,0EAA0E;QAC1E,2DAA2D;QAC3D,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC;QACpC,UAAU,GAAG,iBAAiB,CAAC;IACjC,CAAC;IACD,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAChD,MAAM,sBAAsB,GAAG,UAAU,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;IACnE,IAAI,eAAe,EAAE,CAAC;QACpB,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC;IACtC,CAAC;SAAM,CAAC;QACN,MAAM,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC;QACzD,MAAM,kBAAkB,GAAG,qBAAqB,KAAK,SAAS;YAC5D,CAAC,CAAC,CAAC;YACH,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA0B,CAAC;QACnD,IAAI,gBAAgB,GAAG,CAAC,CAAC;QACzB,IAAI,YAAY,GAAG,KAAK,CAAC;QACzB,IAAI,WAAoB,CAAC;QAEzB,MAAM,gBAAgB,GAAG,KAAK,IAAmB,EAAE;YACjD,qEAAqE;YACrE,yEAAyE;YACzE,sEAAsE;YACtE,sEAAsE;YACtE,+DAA+D;YAC/D,IAAI,CAAC;gBACH,OAAO,CAAC,WAAW,IAAI,CAAC,YAAY,EAAE,CAAC;oBACrC,MAAM,KAAK,GAAG,gBAAgB,CAAC;oBAC/B,gBAAgB,IAAI,CAAC,CAAC;oBACtB,IAAI,KAAK,IAAI,QAAQ,CAAC,MAAM;wBAAE,OAAO;oBAErC,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC;wBAClF,WAAW,GAAG,IAAI,CAAC;wBACnB,OAAO;oBACT,CAAC;oBACD,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAE,CAAC;oBACjC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;oBACxF,SAAS,IAAI,CAAC,CAAC;oBACf,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC;wBAClF,WAAW,GAAG,IAAI,CAAC;wBACnB,OAAO;oBACT,CAAC;oBACD,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBACjC,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClB,YAAY,GAAG,IAAI,CAAC;oBACpB,WAAW,GAAG,KAAK,CAAC;gBACtB,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QAClE,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;QACjF,IAAI,YAAY;YAAE,MAAM,WAAW,CAAC;QAEpC,MAAM,eAAe,GAAG,QAAQ;aAC7B,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;aACvC,MAAM,CAAC,CAAC,OAAO,EAA6D,EAAE,CAC7E,OAAO,EAAE,MAAM,KAAK,SAAS,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,CAChE;aACA,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAS,CAAC,CAAC;QACvC,IAAI,CAAC,WAAW,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC9E,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,sBAAsB,CACjD,SAAS,EACT,WAAW,EACX,eAAe,EACf,SAAS,CACV,CAAC;YACF,yEAAyE;YACzE,qEAAqE;YACrE,yEAAyE;YACzE,0EAA0E;YAC1E,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC;gBAClF,WAAW,GAAG,IAAI,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACN,KAAK,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,SAAS;oBAAE,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC7E,CAAC;QACH,CAAC;QAED,0EAA0E;QAC1E,4EAA4E;QAC5E,2EAA2E;QAC3E,mCAAmC;QACnC,IAAI,CAAC,WAAW;YAAE,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBACjD,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACtC,IAAI,CAAC,OAAO;oBAAE,SAAS;gBACvB,IAAI,OAAO,CAAC,MAAM,KAAK,YAAY,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oBACpE,UAAU,IAAI,CAAC,CAAC;oBAChB,qEAAqE;oBACrE,sEAAsE;oBACtE,mCAAmC;oBACnC,gBAAgB,CACd,KAAK,EACL,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,EAC7C,SAAS,IAAI,OAAO,CAAC,WAAW,EAChC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CACrD,CAAC;gBACJ,CAAC;YACH,CAAC;IACH,CAAC;IAED,IAAI,WAAW,IAAI,eAAe,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9D,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC;IACtC,CAAC;SAAM,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,KAAK,CAAC,WAAW,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAE,GAAG,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,OAAO,GAAG,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC;IACxD,MAAM,OAAO,GAAG,CAAC,eAAe,IAAI,CAAC,WAAW,IAAI,sBAAsB,CAAC;IAE3E,IAAI,KAAK,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;QAC/B,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QAClD,IAAI,CAAC,GAAG,CAAC,aAAa,SAAS,eAAe,MAAM,OAAO,KAAK,CAAC,SAAS,UAAU,IAAI,eAAe,SAAS,gBAAgB,UAAU,aAAa,OAAO,GAAG,CAAC,CAAC;IACrK,CAAC;SAAM,IAAI,UAAU,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QACzC,IAAI,CAAC,GAAG,CAAC,aAAa,SAAS,uBAAuB,KAAK,CAAC,SAAS,UAAU,IAAI,eAAe,SAAS,gBAAgB,UAAU,aAAa,OAAO,GAAG,eAAe,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC7M,CAAC;IAED,OAAO;QACL,IAAI;QACJ,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,UAAU;QACV,OAAO;QACP,SAAS;QACT,OAAO;QACP,WAAW;KACZ,CAAC;AACJ,CAAC;AA4CD,SAAS,qBAAqB,CAAC,MAAyB;IACtD,IAAI,MAAM,KAAK,QAAQ;QAAE,OAAO,CAAC,CAAC;IAClC,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,CAAC,CAAC;IAChC,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,OAAO,qBAAqB;IAeb;IACA;IAfX,MAAM,GAAG,CAAC,CAAC;IACX,MAAM,GAAG,CAAC,CAAC;IACX,QAAQ,GAAG,CAAC,CAAC;IACb,eAAe,GAAG,CAAC,CAAC;IACpB,MAAM,GAAG,KAAK,CAAC;IACN,MAAM,GAAG,IAAI,GAAG,EAAuC,CAAC;IACxD,OAAO,GAAsC,EAAE,CAAC;IAChD,WAAW,GAAG,IAAI,GAAG,EAAc,CAAC;IACpC,cAAc,GAAG,IAAI,GAAG,EAA2B,CAAC;IACpD,WAAW,CAAS;IACpB,UAAU,CAAS;IACnB,kBAAkB,CAAS;IAE5C,YACmB,GAA2D,EAC3D,SAAgD,EACjE,UAAwC,EAAE;QAFzB,QAAG,GAAH,GAAG,CAAwD;QAC3D,cAAS,GAAT,SAAS,CAAuC;QAGjE,MAAM,EACJ,WAAW,GAAG,CAAC,EACf,UAAU,GAAG,GAAG,EAChB,kBAAkB,GAAG,CAAC,GACvB,GAAG,OAAO,CAAC;QACZ,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;YAC1D,MAAM,IAAI,KAAK,CAAC,iEAAiE,WAAW,EAAE,CAAC,CAAC;QAClG,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;YACxD,MAAM,IAAI,KAAK,CAAC,gEAAgE,UAAU,EAAE,CAAC,CAAC;QAChG,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,kBAAkB,GAAG,CAAC,EAAE,CAAC;YACxE,MAAM,IAAI,KAAK,CAAC,wEAAwE,kBAAkB,EAAE,CAAC,CAAC;QAChH,CAAC;QACD,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;IAC/C,CAAC;IAED,uFAAuF;IACvF,WAAW,CAAC,GAAW;QACrB,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,KAAK,cAAc;YAAE,OAAO;QAC1D,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACtD,CAAC;IAED,iFAAiF;IACjF,eAAe,CAAC,GAAW;QACzB,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC1D,CAAC;IAED;;;;;OAKG;IACH,kBAAkB,CAAC,GAAW;QAC5B,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QACrD,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,8EAA8E;IAC9E,aAAa,CAAC,GAAW;QACvB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED,+EAA+E;IAC/E,QAAQ,CAAC,GAAW,EAAE,MAAyB;QAC7C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACjC,CAAC;IAED,UAAU,CAAC,GAAW;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnC,OAAO,OAAO,CAAC,KAAK,EAAE,MAAM,IAAI,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,QAAQ,CAAC,CAAC;IACrE,CAAC;IAED,aAAa,CAAC,GAAW;QACvB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC;IAC/C,CAAC;IAED,QAAQ;QACN,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;IAC3E,CAAC;IAED,4EAA4E;IAC5E,KAAK;QACH,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,MAAM,KAAK,GAAG,IAAI,2BAA2B,EAAE,CAAC;YAChD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACxC,IAAI,KAAK,EAAE,OAAO,KAAK,IAAI;oBAAE,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC;gBACvD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC;YACD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBACvC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;oBACnB,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC7B,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC;gBAC7B,CAAC;gBACD,IAAI,CAAC,KAAK,CAAC,MAAM;oBAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC3C,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;YAClC,CAAC;YACD,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;YAChB,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC5B,CAAC;QACD,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;IAED,6EAA6E;IAC7E,WAAW,CAAC,GAAY;QACtB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;YACpD,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;gBACnC,IAAI,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;oBACpB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;gBACxC,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACvB,CAAC,CAAC,CAAC;QACL,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QACrE,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IACvE,CAAC;IAEO,QAAQ,CAAC,GAAW;QAC1B,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,KAAK,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;YAC1B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC9B,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,uBAAuB,CAAC,GAAW;QACzC,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,QAAQ;YAAE,OAAO,IAAI,CAAC;QACnD,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;IACvC,CAAC;IAEO,KAAK,CAAC,GAAW,EAAE,MAAyB;QAClD,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,2BAA2B,EAAE,CAAC,CAAC;QAC1E,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAEjC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACtC,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAC/B,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,yEAAyE;YACzE,wEAAwE;YACxE,sEAAsE;YACtE,4DAA4D;YAC5D,IAAI,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC5D,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;YAC9B,CAAC;YACD,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACnB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;gBACvC,OAAO,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;YAChC,CAAC;YACD,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YACpD,IAAI,CAAC,QAAQ;gBAAE,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,yBAAyB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;YACrF,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAC1B,OAAO,QAAQ,CAAC,OAAO,CAAC;QAC1B,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO;gBAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACpD,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,yBAAyB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QACxE,CAAC;QACD,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAEO,gBAAgB,CACtB,GAAW,EACX,MAAyB;QAEzB,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU;YAAE,OAAO,SAAS,CAAC;QACrD,IAAI,WAAgC,CAAC;QACrC,IAAI,UAAqC,CAAC;QAC1C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACjD,WAAW,GAAG,OAAO,CAAC;YACtB,UAAU,GAAG,MAAM,CAAC;QACtB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;QACjB,OAAO;YACL,GAAG;YACH,MAAM;YACN,SAAS,EAAE,MAAM,KAAK,QAAQ;YAC9B,iBAAiB,EAAE,MAAM,KAAK,UAAU;YACxC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;YACzB,OAAO;YACP,OAAO,EAAE,WAAW;YACpB,MAAM,EAAE,UAAU;SACnB,CAAC;IACJ,CAAC;IAEO,WAAW;QACjB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACzB,MAAM,aAAa,GAAG,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;kBACnD,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACtC,OAAO,aAAa,IAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;QAClD,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,SAAS,CAAC,IAAgC,EAAE,MAAyB;QAC3E,IAAI,CAAC,SAAS,KAAK,MAAM,KAAK,QAAQ,CAAC;QACvC,IAAI,CAAC,iBAAiB,KAAK,MAAM,KAAK,UAAU,CAAC;QACjD,IAAI,qBAAqB,CAAC,MAAM,CAAC,GAAG,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACvE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACvB,CAAC;IACH,CAAC;IAEO,QAAQ;QACd,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QAChD,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACpD,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC;YACrF,IAAI,eAAe,IAAI,CAAC;gBAAE,KAAK,GAAG,eAAe,CAAC;QACpD,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI;YAAE,OAAO,SAAS,CAAC;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,KAAK,EAAE,OAAO,KAAK,IAAI;YAAE,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC;QACvD,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;QACjB,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU;YAAE,IAAI,CAAC,eAAe,IAAI,CAAC,CAAC;;YACrD,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,kBAAkB;QACxB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QACnD,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO,EAAE,CAAC;QAClD,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;IAEO,qBAAqB,CAAC,GAAW;QACvC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChC,KAAK,MAAM,OAAO,IAAI,OAAO;YAAE,OAAO,EAAE,CAAC;IAC3C,CAAC;IAEO,KAAK;QACX,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjF,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC7B,IAAI,CAAC,IAAI;gBAAE,OAAO;YAClB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACtC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;YACpB,IAAI,IAAI,CAAC,iBAAiB;gBAAE,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC;YACjD,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;YACjB,IAAI,OAAgB,CAAC;YACrB,KAAK,OAAO,CAAC,OAAO,EAAE;iBACnB,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;iBAC3C,IAAI,CACH,CAAC,MAAM,EAAE,EAAE;gBACT,mEAAmE;gBACnE,+CAA+C;gBAC/C,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC;gBACrB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACvB,CAAC,EACD,CAAC,KAAK,EAAE,EAAE;gBACR,OAAO,GAAG,KAAK,CAAC;gBAChB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;oBACnB,KAAK,CAAC,IAAI,GAAG,cAAc,CAAC;oBAC5B,IAAI,CAAC;wBACH,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;oBAClC,CAAC;oBAAC,MAAM,CAAC;wBACP,uDAAuD;oBACzD,CAAC;gBACH,CAAC;gBACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC,CACF;iBACA,OAAO,CAAC,GAAG,EAAE;gBACZ,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;gBACjB,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;gBACzB,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;gBAChC,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC;gBAC3B,IACE,QAAQ;uBACL,KAAK,CAAC,IAAI,KAAK,cAAc;uBAC7B,QAAQ,CAAC,MAAM,KAAK,MAAM;uBAC1B,CAAC,QAAQ,CAAC,iBAAiB,EAC9B,CAAC;oBACD,kEAAkE;oBAClE,gEAAgE;oBAChE,iEAAiE;oBACjE,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;oBACjB,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAC3B,CAAC;qBAAM,IAAI,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;oBACpC,KAAK,CAAC,OAAO,GAAG,QAAQ,CAAC;oBACzB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAC5B,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,CAAC;qBAAM,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBAC/C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC/B,CAAC;gBACD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC1B,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvC,CAAC,CAAC,CAAC;QACP,CAAC;IACH,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,YAAY;IAEM;IADZ,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;IAClD,YAA6B,MAAM,IAAI;QAAV,QAAG,GAAH,GAAG,CAAO;IAAG,CAAC;IAE3C,GAAG,CAAC,GAAW;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED,GAAG,CAAC,GAAW;QACb,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO;QAC/B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAC/B,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YAC7C,IAAI,MAAM,KAAK,SAAS;gBAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED,cAAc,CAAC,MAAc,EAAE,MAAe;QAC5C,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACnC,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;gBAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,17 @@
1
+ import type { Quad } from '@origintrail-official/dkg-storage';
2
+ /**
3
+ * Materialize the canonical root `_meta` facts required to prove that a
4
+ * Context Graph is publicly readable.
5
+ *
6
+ * Keep writers on the same requirement model as snapshot and store-side
7
+ * validators. Public graph definitions remain in ONTOLOGY for discovery, but
8
+ * these two facts are duplicated into the graph's own `_meta` partition so a
9
+ * late subscriber can authenticate the control snapshot before admitting SWM
10
+ * data.
11
+ */
12
+ export declare function buildAuthoritativePublicMetaQuads(contextGraphId: string): Quad[];
13
+ /** Evaluate a fetched root `_meta` snapshot against the canonical public proof. */
14
+ export declare function hasAuthoritativePublicMetaDefinition(contextGraphId: string, quads: readonly Quad[]): boolean;
15
+ /** Build the store-side ASK query from the canonical public proof model. */
16
+ export declare function buildAuthoritativePublicMetaAskQuery(contextGraphId: string): string;
17
+ //# sourceMappingURL=context-graph-public-meta-proof.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-graph-public-meta-proof.d.ts","sourceRoot":"","sources":["../src/context-graph-public-meta-proof.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mCAAmC,CAAC;AAkC9D;;;;;;;;;GASG;AACH,wBAAgB,iCAAiC,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,EAAE,CAWhF;AAeD,mFAAmF;AACnF,wBAAgB,oCAAoC,CAClD,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,SAAS,IAAI,EAAE,GACrB,OAAO,CAgBT;AAgBD,4EAA4E;AAC5E,wBAAgB,oCAAoC,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAuBnF"}
@@ -0,0 +1,103 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ import { DKG_ONTOLOGY, assertSafeIri, contextGraphDataGraphUri, contextGraphMetaGraphUri, sparqlString, } from '@origintrail-official/dkg-core';
3
+ import { stripLiteral } from './dkg-agent-utils.js';
4
+ /**
5
+ * Canonical facts that prove a root metadata snapshot explicitly declares a
6
+ * public Context Graph. Snapshot evaluation and store-side ASK queries are
7
+ * rendered from the same model so public authority cannot drift between sync
8
+ * admission paths.
9
+ */
10
+ const PUBLIC_ACCESS_POLICY_REQUIREMENT = {
11
+ predicate: DKG_ONTOLOGY.DKG_ACCESS_POLICY,
12
+ variable: 'accessPolicy',
13
+ object: { kind: 'normalized-literal', value: 'public' },
14
+ };
15
+ const AUTHORITATIVE_PUBLIC_META_REQUIREMENTS = [
16
+ {
17
+ predicate: DKG_ONTOLOGY.RDF_TYPE,
18
+ variable: 'contextGraphType',
19
+ object: { kind: 'iri', value: DKG_ONTOLOGY.DKG_CONTEXT_GRAPH },
20
+ },
21
+ PUBLIC_ACCESS_POLICY_REQUIREMENT,
22
+ ];
23
+ /**
24
+ * Materialize the canonical root `_meta` facts required to prove that a
25
+ * Context Graph is publicly readable.
26
+ *
27
+ * Keep writers on the same requirement model as snapshot and store-side
28
+ * validators. Public graph definitions remain in ONTOLOGY for discovery, but
29
+ * these two facts are duplicated into the graph's own `_meta` partition so a
30
+ * late subscriber can authenticate the control snapshot before admitting SWM
31
+ * data.
32
+ */
33
+ export function buildAuthoritativePublicMetaQuads(contextGraphId) {
34
+ const graph = contextGraphMetaGraphUri(contextGraphId);
35
+ const subject = contextGraphDataGraphUri(contextGraphId);
36
+ return AUTHORITATIVE_PUBLIC_META_REQUIREMENTS.map((requirement) => ({
37
+ subject,
38
+ predicate: requirement.predicate,
39
+ object: requirement.object.kind === 'iri'
40
+ ? requirement.object.value
41
+ : `"${requirement.object.value}"`,
42
+ graph,
43
+ }));
44
+ }
45
+ function matchesRequirementObject(value, requirement) {
46
+ switch (requirement.kind) {
47
+ case 'iri':
48
+ return value === requirement.value;
49
+ case 'normalized-literal':
50
+ return value.startsWith('"')
51
+ && stripLiteral(value).trim().toLowerCase() === requirement.value;
52
+ }
53
+ }
54
+ /** Evaluate a fetched root `_meta` snapshot against the canonical public proof. */
55
+ export function hasAuthoritativePublicMetaDefinition(contextGraphId, quads) {
56
+ const metaGraph = contextGraphMetaGraphUri(contextGraphId);
57
+ const contextGraphUri = contextGraphDataGraphUri(contextGraphId);
58
+ const hasRequiredFacts = AUTHORITATIVE_PUBLIC_META_REQUIREMENTS.every((requirement) => quads.some((quad) => (quad.graph === metaGraph
59
+ && quad.subject === contextGraphUri
60
+ && quad.predicate === requirement.predicate
61
+ && matchesRequirementObject(quad.object, requirement.object))));
62
+ const hasConflictingPolicy = quads.some((quad) => (quad.graph === metaGraph
63
+ && quad.subject === contextGraphUri
64
+ && quad.predicate === PUBLIC_ACCESS_POLICY_REQUIREMENT.predicate
65
+ && !matchesRequirementObject(quad.object, PUBLIC_ACCESS_POLICY_REQUIREMENT.object)));
66
+ return hasRequiredFacts && !hasConflictingPolicy;
67
+ }
68
+ function renderRequirement(contextGraphUri, requirement) {
69
+ const subject = `<${assertSafeIri(contextGraphUri)}>`;
70
+ const predicate = `<${assertSafeIri(requirement.predicate)}>`;
71
+ if (requirement.object.kind === 'iri') {
72
+ return `${subject} ${predicate} <${assertSafeIri(requirement.object.value)}> .`;
73
+ }
74
+ const variable = `?${requirement.variable}`;
75
+ return `${subject} ${predicate} ${variable} .\n` +
76
+ ` FILTER(isLiteral(${variable}) && LCASE(REPLACE(STR(${variable}), "^\\\\s+|\\\\s+$", "")) = ${sparqlString(requirement.object.value)})`;
77
+ }
78
+ /** Build the store-side ASK query from the canonical public proof model. */
79
+ export function buildAuthoritativePublicMetaAskQuery(contextGraphId) {
80
+ const metaGraph = contextGraphMetaGraphUri(contextGraphId);
81
+ const contextGraphUri = contextGraphDataGraphUri(contextGraphId);
82
+ const requirements = AUTHORITATIVE_PUBLIC_META_REQUIREMENTS
83
+ .map((requirement) => ` ${renderRequirement(contextGraphUri, requirement)}`)
84
+ .join('\n');
85
+ const accessPolicyPredicate = assertSafeIri(PUBLIC_ACCESS_POLICY_REQUIREMENT.predicate);
86
+ const publicPolicy = PUBLIC_ACCESS_POLICY_REQUIREMENT.object;
87
+ if (publicPolicy.kind !== 'normalized-literal') {
88
+ throw new Error('Public access policy proof must use a normalized literal');
89
+ }
90
+ return `ASK WHERE {
91
+ GRAPH <${assertSafeIri(metaGraph)}> {
92
+ ${requirements}
93
+ FILTER NOT EXISTS {
94
+ <${assertSafeIri(contextGraphUri)}> <${accessPolicyPredicate}> ?conflictingAccessPolicy .
95
+ FILTER(
96
+ !isLiteral(?conflictingAccessPolicy) ||
97
+ LCASE(REPLACE(STR(?conflictingAccessPolicy), "^\\\\s+|\\\\s+$", "")) != ${sparqlString(publicPolicy.value)}
98
+ )
99
+ }
100
+ }
101
+ }`;
102
+ }
103
+ //# sourceMappingURL=context-graph-public-meta-proof.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-graph-public-meta-proof.js","sourceRoot":"","sources":["../src/context-graph-public-meta-proof.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { TripleStore } from '@origintrail-official/dkg-storage';
2
+ export interface PublicMetaRepairResult {
3
+ candidates: number;
4
+ repairedGraphs: number;
5
+ insertedTriples: number;
6
+ conflictingGraphs: string[];
7
+ }
8
+ /**
9
+ * Backfill the canonical public proof for graphs created by this exact peer.
10
+ *
11
+ * Older builds wrote public definitions only to ONTOLOGY even though the sync
12
+ * admission contract requires `rdf:type` and `accessPolicy="public"` in the
13
+ * root `_meta` graph. Only creator-owned ontology rows are eligible: a
14
+ * subscriber must never promote a network-discovered definition into an
15
+ * authoritative control snapshot. Existing non-public `_meta` policy is a
16
+ * hard conflict and is left untouched.
17
+ */
18
+ export declare function repairCreatorPublicMetaProjections(store: TripleStore, peerId: string): Promise<PublicMetaRepairResult>;
19
+ //# sourceMappingURL=context-graph-public-meta-repair.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-graph-public-meta-repair.d.ts","sourceRoot":"","sources":["../src/context-graph-public-meta-repair.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAQ,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAM3E,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED;;;;;;;;;GASG;AACH,wBAAsB,kCAAkC,CACtD,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,sBAAsB,CAAC,CA+FjC"}
@@ -0,0 +1,100 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ import { DKG_ONTOLOGY, SYSTEM_CONTEXT_GRAPHS, assertSafeIri, contextGraphDataGraphUri, contextGraphMetaGraphUri, } from '@origintrail-official/dkg-core';
3
+ import { buildAuthoritativePublicMetaQuads } from './context-graph-public-meta-proof.js';
4
+ import { stripLiteral } from './dkg-agent-utils.js';
5
+ const CONTEXT_GRAPH_URI_PREFIX = 'did:dkg:context-graph:';
6
+ /**
7
+ * Backfill the canonical public proof for graphs created by this exact peer.
8
+ *
9
+ * Older builds wrote public definitions only to ONTOLOGY even though the sync
10
+ * admission contract requires `rdf:type` and `accessPolicy="public"` in the
11
+ * root `_meta` graph. Only creator-owned ontology rows are eligible: a
12
+ * subscriber must never promote a network-discovered definition into an
13
+ * authoritative control snapshot. Existing non-public `_meta` policy is a
14
+ * hard conflict and is left untouched.
15
+ */
16
+ export async function repairCreatorPublicMetaProjections(store, peerId) {
17
+ const ontologyGraph = assertSafeIri(contextGraphDataGraphUri(SYSTEM_CONTEXT_GRAPHS.ONTOLOGY));
18
+ const creatorDid = assertSafeIri(`did:dkg:agent:${peerId}`);
19
+ const candidatesResult = await store.query(`
20
+ SELECT DISTINCT ?contextGraph WHERE {
21
+ GRAPH <${ontologyGraph}> {
22
+ ?contextGraph <${DKG_ONTOLOGY.RDF_TYPE}> <${DKG_ONTOLOGY.DKG_CONTEXT_GRAPH}> ;
23
+ <${DKG_ONTOLOGY.DKG_CREATOR}> <${creatorDid}> ;
24
+ <${DKG_ONTOLOGY.DKG_ACCESS_POLICY}> ?accessPolicy .
25
+ FILTER(
26
+ isLiteral(?accessPolicy) &&
27
+ LCASE(REPLACE(STR(?accessPolicy), "^\\\\s+|\\\\s+$", "")) = "public"
28
+ )
29
+ FILTER NOT EXISTS {
30
+ ?contextGraph <${DKG_ONTOLOGY.DKG_CREATOR}> ?conflictingCreator .
31
+ FILTER(?conflictingCreator != <${creatorDid}>)
32
+ }
33
+ FILTER NOT EXISTS {
34
+ ?contextGraph <${DKG_ONTOLOGY.DKG_ACCESS_POLICY}> ?conflictingAccessPolicy .
35
+ FILTER(
36
+ !isLiteral(?conflictingAccessPolicy) ||
37
+ LCASE(REPLACE(STR(?conflictingAccessPolicy), "^\\\\s+|\\\\s+$", "")) != "public"
38
+ )
39
+ }
40
+ }
41
+ }
42
+ `);
43
+ const candidateSubjects = candidatesResult.type === 'bindings'
44
+ ? [...new Set(candidatesResult.bindings
45
+ .map((row) => row['contextGraph'])
46
+ .filter((value) => Boolean(value)))]
47
+ : [];
48
+ const inserts = [];
49
+ const conflictingGraphs = [];
50
+ let repairedGraphs = 0;
51
+ for (const subject of candidateSubjects) {
52
+ if (!subject.startsWith(CONTEXT_GRAPH_URI_PREFIX))
53
+ continue;
54
+ const contextGraphId = subject.slice(CONTEXT_GRAPH_URI_PREFIX.length);
55
+ if (!contextGraphId || contextGraphDataGraphUri(contextGraphId) !== subject)
56
+ continue;
57
+ const metaGraph = assertSafeIri(contextGraphMetaGraphUri(contextGraphId));
58
+ const existingResult = await store.query(`
59
+ SELECT ?predicate ?object WHERE {
60
+ GRAPH <${metaGraph}> {
61
+ <${assertSafeIri(subject)}> ?predicate ?object .
62
+ FILTER(?predicate IN (
63
+ <${DKG_ONTOLOGY.RDF_TYPE}>,
64
+ <${DKG_ONTOLOGY.DKG_ACCESS_POLICY}>
65
+ ))
66
+ }
67
+ }
68
+ `);
69
+ const existing = existingResult.type === 'bindings'
70
+ ? existingResult.bindings
71
+ : [];
72
+ const policies = existing
73
+ .filter((row) => row['predicate'] === DKG_ONTOLOGY.DKG_ACCESS_POLICY)
74
+ .map((row) => row['object']);
75
+ const hasConflictingPolicy = policies.some((value) => (!value?.startsWith('"') || stripLiteral(value).trim().toLowerCase() !== 'public'));
76
+ if (hasConflictingPolicy) {
77
+ conflictingGraphs.push(contextGraphId);
78
+ continue;
79
+ }
80
+ const hasType = existing.some((row) => (row['predicate'] === DKG_ONTOLOGY.RDF_TYPE &&
81
+ row['object'] === DKG_ONTOLOGY.DKG_CONTEXT_GRAPH));
82
+ const hasPublicPolicy = policies.some((value) => (value?.startsWith('"') && stripLiteral(value).trim().toLowerCase() === 'public'));
83
+ const missing = buildAuthoritativePublicMetaQuads(contextGraphId).filter((quad) => (quad.predicate === DKG_ONTOLOGY.RDF_TYPE ? !hasType : !hasPublicPolicy));
84
+ if (missing.length === 0)
85
+ continue;
86
+ inserts.push(...missing);
87
+ repairedGraphs += 1;
88
+ }
89
+ if (inserts.length > 0) {
90
+ await store.insert(inserts, { source: 'agent.publicMetaRepair' });
91
+ await store.flush?.();
92
+ }
93
+ return {
94
+ candidates: candidateSubjects.length,
95
+ repairedGraphs,
96
+ insertedTriples: inserts.length,
97
+ conflictingGraphs,
98
+ };
99
+ }
100
+ //# sourceMappingURL=context-graph-public-meta-repair.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-graph-public-meta-repair.js","sourceRoot":"","sources":["../src/context-graph-public-meta-repair.ts"],"names":[],"mappings":"AAAA,sCAAsC;AAEtC,OAAO,EACL,YAAY,EACZ,qBAAqB,EACrB,aAAa,EACb,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAE,iCAAiC,EAAE,MAAM,sCAAsC,CAAC;AACzF,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,MAAM,wBAAwB,GAAG,wBAAwB,CAAC;AAS1D;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,kCAAkC,CACtD,KAAkB,EAClB,MAAc;IAEd,MAAM,aAAa,GAAG,aAAa,CACjC,wBAAwB,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CACzD,CAAC;IACF,MAAM,UAAU,GAAG,aAAa,CAAC,iBAAiB,MAAM,EAAE,CAAC,CAAC;IAC5D,MAAM,gBAAgB,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC;;eAE9B,aAAa;yBACH,YAAY,CAAC,QAAQ,MAAM,YAAY,CAAC,iBAAiB;aACrE,YAAY,CAAC,WAAW,MAAM,UAAU;aACxC,YAAY,CAAC,iBAAiB;;;;;;2BAMhB,YAAY,CAAC,WAAW;2CACR,UAAU;;;2BAG1B,YAAY,CAAC,iBAAiB;;;;;;;;GAQtD,CAAC,CAAC;IACH,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,IAAI,KAAK,UAAU;QAC5D,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAAC,QAAQ;iBAClC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;iBACjC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACzD,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,OAAO,GAAW,EAAE,CAAC;IAC3B,MAAM,iBAAiB,GAAa,EAAE,CAAC;IACvC,IAAI,cAAc,GAAG,CAAC,CAAC;IAEvB,KAAK,MAAM,OAAO,IAAI,iBAAiB,EAAE,CAAC;QACxC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,wBAAwB,CAAC;YAAE,SAAS;QAC5D,MAAM,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;QACtE,IAAI,CAAC,cAAc,IAAI,wBAAwB,CAAC,cAAc,CAAC,KAAK,OAAO;YAAE,SAAS;QACtF,MAAM,SAAS,GAAG,aAAa,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAC,CAAC;QAC1E,MAAM,cAAc,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC;;iBAE5B,SAAS;aACb,aAAa,CAAC,OAAO,CAAC;;eAEpB,YAAY,CAAC,QAAQ;eACrB,YAAY,CAAC,iBAAiB;;;;KAIxC,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,KAAK,UAAU;YACjD,CAAC,CAAC,cAAc,CAAC,QAAQ;YACzB,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,QAAQ,GAAG,QAAQ;aACtB,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,YAAY,CAAC,iBAAiB,CAAC;aACpE,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC/B,MAAM,oBAAoB,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CACpD,CAAC,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,QAAQ,CACjF,CAAC,CAAC;QACH,IAAI,oBAAoB,EAAE,CAAC;YACzB,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACvC,SAAS;QACX,CAAC;QAED,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CACrC,GAAG,CAAC,WAAW,CAAC,KAAK,YAAY,CAAC,QAAQ;YAC1C,GAAG,CAAC,QAAQ,CAAC,KAAK,YAAY,CAAC,iBAAiB,CACjD,CAAC,CAAC;QACH,MAAM,eAAe,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAC/C,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,QAAQ,CAChF,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,iCAAiC,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACjF,IAAI,CAAC,SAAS,KAAK,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,eAAe,CACvE,CAAC,CAAC;QACH,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QACnC,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;QACzB,cAAc,IAAI,CAAC,CAAC;IACtB,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,wBAAwB,EAAE,CAAC,CAAC;QAClE,MAAM,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;IACxB,CAAC;IAED,OAAO;QACL,UAAU,EAAE,iBAAiB,CAAC,MAAM;QACpC,cAAc;QACd,eAAe,EAAE,OAAO,CAAC,MAAM;QAC/B,iBAAiB;KAClB,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"curator-meta-refresh.d.ts","sourceRoot":"","sources":["../src/curator-meta-refresh.ts"],"names":[],"mappings":"AAqBA,OAAO,EAEL,KAAK,mCAAmC,EACzC,MAAM,uCAAuC,CAAC;AAO/C,MAAM,WAAW,yBAAyB;IACxC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,4EAA4E;IAC5E,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,8EAA8E;IAC9E,WAAW,CAAC,EAAE,mCAAmC,CAAC;CACnD;AAwiBD;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,MAAM,EACtB,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,OAAO,CAAC,CAoBlB"}
1
+ {"version":3,"file":"curator-meta-refresh.d.ts","sourceRoot":"","sources":["../src/curator-meta-refresh.ts"],"names":[],"mappings":"AAqBA,OAAO,EAEL,KAAK,mCAAmC,EACzC,MAAM,uCAAuC,CAAC;AAQ/C,MAAM,WAAW,yBAAyB;IACxC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,4EAA4E;IAC5E,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,8EAA8E;IAC9E,WAAW,CAAC,EAAE,mCAAmC,CAAC;CACnD;AAkjBD;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,MAAM,EACtB,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,OAAO,CAAC,CAoBlB"}