@harperfast/harper 5.3.0 → 5.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (231) hide show
  1. package/bin/copyDb.ts +5 -1
  2. package/bin/deployRenderer.ts +3 -0
  3. package/components/Application.ts +66 -22
  4. package/components/DESIGN.md +89 -36
  5. package/components/componentLoader.ts +2 -0
  6. package/components/deploymentRecorder.ts +18 -1
  7. package/components/installFingerprint.ts +123 -0
  8. package/components/mcp/DESIGN.md +4 -4
  9. package/components/operations.js +29 -0
  10. package/config/DESIGN.md +5 -5
  11. package/dataLayer/DESIGN.md +37 -22
  12. package/dataLayer/backupRepository.ts +248 -0
  13. package/dataLayer/restoreMarker.ts +30 -75
  14. package/dataLayer/rocksdbBackup.ts +253 -110
  15. package/dist/bin/copyDb.js +3 -0
  16. package/dist/bin/copyDb.js.map +1 -1
  17. package/dist/bin/deployRenderer.js +3 -0
  18. package/dist/bin/deployRenderer.js.map +1 -1
  19. package/dist/components/Application.d.ts +5 -0
  20. package/dist/components/Application.js +51 -19
  21. package/dist/components/Application.js.map +1 -1
  22. package/dist/components/componentLoader.js +2 -0
  23. package/dist/components/componentLoader.js.map +1 -1
  24. package/dist/components/deploymentRecorder.js +18 -1
  25. package/dist/components/deploymentRecorder.js.map +1 -1
  26. package/dist/components/installFingerprint.d.ts +39 -0
  27. package/dist/components/installFingerprint.js +113 -0
  28. package/dist/components/installFingerprint.js.map +1 -0
  29. package/dist/components/operations.d.ts +2 -0
  30. package/dist/components/operations.js +31 -0
  31. package/dist/components/operations.js.map +1 -1
  32. package/dist/dataLayer/backupRepository.d.ts +33 -0
  33. package/dist/dataLayer/backupRepository.js +232 -0
  34. package/dist/dataLayer/backupRepository.js.map +1 -0
  35. package/dist/dataLayer/restoreMarker.d.ts +4 -1
  36. package/dist/dataLayer/restoreMarker.js +29 -68
  37. package/dist/dataLayer/restoreMarker.js.map +1 -1
  38. package/dist/dataLayer/rocksdbBackup.js +221 -112
  39. package/dist/dataLayer/rocksdbBackup.js.map +1 -1
  40. package/dist/index.d.ts +1 -0
  41. package/dist/index.js.map +1 -1
  42. package/dist/json/systemSchema.json +14 -0
  43. package/dist/resources/DatabaseTransaction.d.ts +140 -11
  44. package/dist/resources/DatabaseTransaction.js +1055 -464
  45. package/dist/resources/DatabaseTransaction.js.map +1 -1
  46. package/dist/resources/IterableEventQueue.d.ts +2 -1
  47. package/dist/resources/IterableEventQueue.js +16 -8
  48. package/dist/resources/IterableEventQueue.js.map +1 -1
  49. package/dist/resources/LMDBTransaction.d.ts +13 -2
  50. package/dist/resources/LMDBTransaction.js +219 -93
  51. package/dist/resources/LMDBTransaction.js.map +1 -1
  52. package/dist/resources/RecordEncoder.js +2 -3
  53. package/dist/resources/RecordEncoder.js.map +1 -1
  54. package/dist/resources/Resource.js +5 -6
  55. package/dist/resources/Resource.js.map +1 -1
  56. package/dist/resources/ResourceInterface.d.ts +3 -1
  57. package/dist/resources/ResourceInterface.js.map +1 -1
  58. package/dist/resources/RocksIndexStore.d.ts +2 -1
  59. package/dist/resources/RocksIndexStore.js +3 -0
  60. package/dist/resources/RocksIndexStore.js.map +1 -1
  61. package/dist/resources/Table.js +116 -12
  62. package/dist/resources/Table.js.map +1 -1
  63. package/dist/resources/analytics/write.js +6 -2
  64. package/dist/resources/analytics/write.js.map +1 -1
  65. package/dist/resources/auditStore.d.ts +71 -17
  66. package/dist/resources/auditStore.js +248 -64
  67. package/dist/resources/auditStore.js.map +1 -1
  68. package/dist/resources/branchDatabase.js +2 -0
  69. package/dist/resources/branchDatabase.js.map +1 -1
  70. package/dist/resources/databases.js +8 -2
  71. package/dist/resources/databases.js.map +1 -1
  72. package/dist/resources/indexes/fullTextNativeBinding.d.ts +6 -2
  73. package/dist/resources/indexes/fullTextNativeBinding.js +12 -2
  74. package/dist/resources/indexes/fullTextNativeBinding.js.map +1 -1
  75. package/dist/resources/indexes/fullTextQueryIndex.d.ts +4 -0
  76. package/dist/resources/indexes/fullTextQueryIndex.js +207 -10
  77. package/dist/resources/indexes/fullTextQueryIndex.js.map +1 -1
  78. package/dist/resources/models/Models.d.ts +11 -0
  79. package/dist/resources/models/Models.js +95 -4
  80. package/dist/resources/models/Models.js.map +1 -1
  81. package/dist/resources/models/backendRegistry.d.ts +8 -0
  82. package/dist/resources/models/backendRegistry.js +15 -1
  83. package/dist/resources/models/backendRegistry.js.map +1 -1
  84. package/dist/resources/models/bootstrap.d.ts +2 -0
  85. package/dist/resources/models/bootstrap.js +6 -0
  86. package/dist/resources/models/bootstrap.js.map +1 -1
  87. package/dist/resources/models/calibration.d.ts +88 -0
  88. package/dist/resources/models/calibration.js +244 -0
  89. package/dist/resources/models/calibration.js.map +1 -0
  90. package/dist/resources/models/calibrationStore.d.ts +163 -0
  91. package/dist/resources/models/calibrationStore.js +986 -0
  92. package/dist/resources/models/calibrationStore.js.map +1 -0
  93. package/dist/resources/models/decisionStore.d.ts +24 -0
  94. package/dist/resources/models/decisionStore.js +45 -0
  95. package/dist/resources/models/decisionStore.js.map +1 -1
  96. package/dist/resources/models/generativeDecision.js +44 -15
  97. package/dist/resources/models/generativeDecision.js.map +1 -1
  98. package/dist/resources/models/types.d.ts +7 -0
  99. package/dist/resources/recordLock.d.ts +8 -5
  100. package/dist/resources/recordLock.js +6 -4
  101. package/dist/resources/recordLock.js.map +1 -1
  102. package/dist/resources/replayLogs.js +8 -1
  103. package/dist/resources/replayLogs.js.map +1 -1
  104. package/dist/resources/scheduler/engine.d.ts +4 -0
  105. package/dist/resources/scheduler/engine.js +30 -2
  106. package/dist/resources/scheduler/engine.js.map +1 -1
  107. package/dist/resources/search.d.ts +16 -4
  108. package/dist/resources/search.js +117 -13
  109. package/dist/resources/search.js.map +1 -1
  110. package/dist/resources/transaction.js +85 -5
  111. package/dist/resources/transaction.js.map +1 -1
  112. package/dist/resources/transactionBroadcast.d.ts +8 -0
  113. package/dist/resources/transactionBroadcast.js +65 -0
  114. package/dist/resources/transactionBroadcast.js.map +1 -1
  115. package/dist/security/keys.d.ts +1 -1
  116. package/dist/security/keys.js +170 -120
  117. package/dist/security/keys.js.map +1 -1
  118. package/dist/server/http.js +10 -0
  119. package/dist/server/http.js.map +1 -1
  120. package/dist/server/serverHelpers/Request.js +11 -2
  121. package/dist/server/serverHelpers/Request.js.map +1 -1
  122. package/dist/server/serverHelpers/contentTypes.js +8 -3
  123. package/dist/server/serverHelpers/contentTypes.js.map +1 -1
  124. package/dist/server/serverHelpers/uwsServer.js +38 -7
  125. package/dist/server/serverHelpers/uwsServer.js.map +1 -1
  126. package/dist/server/threads/manageThreads.d.ts +3 -3
  127. package/dist/server/threads/manageThreads.js +15 -13
  128. package/dist/server/threads/manageThreads.js.map +1 -1
  129. package/dist/server/threads/threadServer.d.ts +3 -0
  130. package/dist/server/threads/threadServer.js +24 -6
  131. package/dist/server/threads/threadServer.js.map +1 -1
  132. package/dist/upgrade/directives/5-3-0.js +9 -3
  133. package/dist/upgrade/directives/5-3-0.js.map +1 -1
  134. package/dist/utility/durableFile.d.ts +36 -0
  135. package/dist/utility/durableFile.js +106 -0
  136. package/dist/utility/durableFile.js.map +1 -0
  137. package/dist/utility/errors/hdbError.d.ts +4 -0
  138. package/dist/utility/errors/hdbError.js +10 -1
  139. package/dist/utility/errors/hdbError.js.map +1 -1
  140. package/dist/utility/globalSchema.d.ts +9 -0
  141. package/dist/utility/hdbTerms.d.ts +1 -0
  142. package/dist/utility/hdbTerms.js +1 -0
  143. package/dist/utility/hdbTerms.js.map +1 -1
  144. package/dist/validation/configValidator.js +29 -0
  145. package/dist/validation/configValidator.js.map +1 -1
  146. package/index.ts +7 -0
  147. package/json/systemSchema.json +14 -0
  148. package/npm-shrinkwrap.json +22 -22
  149. package/package.json +2 -2
  150. package/resources/DESIGN.md +57 -272
  151. package/resources/DatabaseTransaction.ts +708 -87
  152. package/resources/FULL_TEXT.md +6 -2
  153. package/resources/IterableEventQueue.ts +14 -7
  154. package/resources/LMDBTransaction.ts +212 -84
  155. package/resources/RecordEncoder.ts +2 -3
  156. package/resources/Resource.ts +5 -6
  157. package/resources/ResourceInterface.ts +3 -1
  158. package/resources/RocksIndexStore.ts +5 -0
  159. package/resources/Table.ts +118 -15
  160. package/resources/analytics/write.ts +6 -2
  161. package/resources/audit-retention.md +203 -0
  162. package/resources/auditStore.ts +306 -84
  163. package/resources/branchDatabase.ts +2 -0
  164. package/resources/databases.ts +6 -2
  165. package/resources/indexes/DESIGN.md +120 -177
  166. package/resources/indexes/fullTextNativeBinding.ts +22 -3
  167. package/resources/indexes/fullTextQueryIndex.ts +274 -11
  168. package/resources/models/DESIGN.md +11 -3
  169. package/resources/models/Models.ts +127 -4
  170. package/resources/models/backendRegistry.ts +17 -0
  171. package/resources/models/bootstrap.ts +9 -1
  172. package/resources/models/calibration.ts +298 -0
  173. package/resources/models/calibrationStore.ts +1167 -0
  174. package/resources/models/decisionStore.ts +57 -0
  175. package/resources/models/generativeDecision.ts +54 -16
  176. package/resources/models/types.ts +6 -0
  177. package/resources/record-locks.md +155 -141
  178. package/resources/recordLock.ts +12 -6
  179. package/resources/replayLogs.ts +9 -2
  180. package/resources/scheduler/DESIGN.md +4 -3
  181. package/resources/scheduler/engine.ts +35 -2
  182. package/resources/search.ts +154 -16
  183. package/resources/transaction.ts +50 -5
  184. package/resources/transactionBroadcast.ts +69 -0
  185. package/security/DESIGN.md +9 -30
  186. package/security/keys.ts +175 -127
  187. package/server/DESIGN.md +70 -36
  188. package/server/http.ts +10 -0
  189. package/server/serverHelpers/Request.ts +10 -2
  190. package/server/serverHelpers/contentTypes.ts +5 -3
  191. package/server/serverHelpers/uwsServer.ts +34 -7
  192. package/server/threads/manageThreads.js +16 -14
  193. package/server/threads/threadServer.js +24 -6
  194. package/studio/web/assets/{Chat-CNEKMllJ.js → Chat-4LMxI0yB.js} +1 -1
  195. package/studio/web/assets/{FloatingChat-CEnWhHeR.js → FloatingChat-kWHApEtF.js} +3 -3
  196. package/studio/web/assets/{SearchDialog-CwhJdEdY.js → SearchDialog-B7ymna97.js} +1 -1
  197. package/studio/web/assets/{apiToken-DC5vsaaO.js → apiToken-CE3AAt9f.js} +1 -1
  198. package/studio/web/assets/{applications-DQZxDy0x.js → applications-DdN7CqsB.js} +1 -1
  199. package/studio/web/assets/{cssMode-Dz2DxF4e.js → cssMode-BpySZUSt.js} +1 -1
  200. package/studio/web/assets/{editor-B3mjd3tz.js → editor-myLCVv9C.js} +1 -1
  201. package/studio/web/assets/{html-BsRGM7tp.js → html-DGNYO55O.js} +1 -1
  202. package/studio/web/assets/{htmlMode-tUKJaA3o.js → htmlMode-BUgpQr41.js} +1 -1
  203. package/studio/web/assets/{index-BuqFjN5K.js → index-FN4KC9va.js} +39 -39
  204. package/studio/web/assets/index-QLZw6xrU.css +1 -0
  205. package/studio/web/assets/{index.lazy-CcpfQFY_.js → index.lazy-DZFuaumG.js} +1 -1
  206. package/studio/web/assets/{javascript-BZ_uRGHl.js → javascript-DiBzh4pj.js} +1 -1
  207. package/studio/web/assets/{jsonMode-DgB-aFMj.js → jsonMode-Bm312nmu.js} +1 -1
  208. package/studio/web/assets/{languageServices-BleuBw17.js → languageServices-Dz2K9rZN.js} +1 -1
  209. package/studio/web/assets/{lspLanguageFeatures-ByVYLSsQ.js → lspLanguageFeatures-CNu1L5xn.js} +1 -1
  210. package/studio/web/assets/{notifications-TuzN0IMi.js → notifications--nwFLGmM.js} +1 -1
  211. package/studio/web/assets/{notifications-D1Nf-Edn.js → notifications-BelKw5bR.js} +1 -1
  212. package/studio/web/assets/{profile-D7C7Lupz.js → profile-AU5FjOBx.js} +1 -1
  213. package/studio/web/assets/{regions-nGQCm-v8.js → regions-C0sTSEHH.js} +1 -1
  214. package/studio/web/assets/{register-C3x9Ze6P.js → register-DyNR2rGk.js} +2 -2
  215. package/studio/web/assets/{setComponentFile-DpjrRqeG.js → setComponentFile-BkWx8AN3.js} +1 -1
  216. package/studio/web/assets/{setup-CGiKLZ9e.js → setup-D6LZS78d.js} +2 -2
  217. package/studio/web/assets/{status-CGJwrNPH.js → status-BCWnn70o.js} +1 -1
  218. package/studio/web/assets/{toggleHighContrast-C-Ne6P7T.js → toggleHighContrast-pyeGJ6W1.js} +1 -1
  219. package/studio/web/assets/{tsMode-CSreYTys.js → tsMode-CGV3iaWC.js} +1 -1
  220. package/studio/web/assets/{typescript-MnxBk89W.js → typescript-Ci7Khvwo.js} +1 -1
  221. package/studio/web/assets/{useEntityRestURL-TNrh77-s.js → useEntityRestURL-DNiz3aZ0.js} +1 -1
  222. package/studio/web/assets/{workers-BfZlUNVI.js → workers-byzxjbqy.js} +1 -1
  223. package/studio/web/assets/{xml-BHd6qGH7.js → xml-DGnHQ3CX.js} +1 -1
  224. package/studio/web/assets/{yaml-C53R8OQq.js → yaml-BUoTnPWb.js} +1 -1
  225. package/studio/web/index.html +2 -2
  226. package/upgrade/directives/5-3-0.ts +10 -3
  227. package/utility/durableFile.ts +96 -0
  228. package/utility/errors/hdbError.ts +9 -0
  229. package/utility/hdbTerms.ts +1 -0
  230. package/validation/configValidator.ts +31 -0
  231. package/studio/web/assets/index-72cEH474.css +0 -1
@@ -63,6 +63,15 @@ class LMDBTransaction extends DatabaseTransaction_1.DatabaseTransaction {
63
63
  renewIdleTimeout() {
64
64
  this.timeout = Math.max(txnExpiration, this.timeoutBudget ?? 0);
65
65
  }
66
+ markNativeCommitSubmitted() {
67
+ super.markNativeCommitSubmitted();
68
+ this.timeout = Math.max(this.timeout || 0, txnExpiration, this.timeoutBudget ?? 0);
69
+ trackedTxns.add(this);
70
+ }
71
+ nativeCommitAttemptEnded() {
72
+ if (!this.readTxn)
73
+ trackedTxns.delete(this);
74
+ }
66
75
  getReadTxn() {
67
76
  // used optimistically
68
77
  this.readTxnRefCount = (this.readTxnRefCount || 0) + 1;
@@ -79,6 +88,7 @@ class LMDBTransaction extends DatabaseTransaction_1.DatabaseTransaction {
79
88
  // Get a read transaction from lmdb-js; make sure we do this first, as it can fail, we don't want to leave the transaction in a bad state with readTxnsUsed > 0
80
89
  this.readTxn = this.db.useReadTransaction();
81
90
  this.readTxnsUsed = 1;
91
+ this.baseReadRefConsumed = false;
82
92
  if (this.readTxn.openTimer)
83
93
  this.readTxn.openTimer = 0;
84
94
  trackedTxns.add(this);
@@ -106,8 +116,12 @@ class LMDBTransaction extends DatabaseTransaction_1.DatabaseTransaction {
106
116
  this.readTxn.done();
107
117
  }
108
118
  if (--this.readTxnsUsed === 0) {
109
- trackedTxns.delete(this);
119
+ // A submitted write remains monitor-visible after its separate read snapshot is released.
120
+ // nativeCommitAttemptEnded() removes this enrollment once the outcome is known.
121
+ if (!this.nativeCommitSubmitted)
122
+ trackedTxns.delete(this);
110
123
  this.readTxn = null;
124
+ this.completeDeferredContextRelease();
111
125
  }
112
126
  }
113
127
  disregardReadTxn() {
@@ -116,14 +130,16 @@ class LMDBTransaction extends DatabaseTransaction_1.DatabaseTransaction {
116
130
  }
117
131
  }
118
132
  addWrite(operation) {
119
- if (this.timedOut)
133
+ if (this.timedOut || this.postSubmitPoisoned)
120
134
  throw (0, DatabaseTransaction_1.transactionOpenTooLongError)();
121
- if (this.open === exports.TRANSACTION_STATE.CLOSED) {
122
- throw new Error('Can not use a transaction that is no longer open');
123
- }
135
+ if (this.disconnected)
136
+ throw (0, DatabaseTransaction_1.requestAbortedError)();
124
137
  if (this.open === exports.TRANSACTION_STATE.LINGERING) {
125
138
  // if the transaction is lingering, it is already committed, so we need to commit the write immediately
126
139
  const immediateTxn = new ImmediateTransaction(this.db);
140
+ // The throwaway owns this write, so it owns the request's cancellation too: this settled chain
141
+ // would neither refuse on its behalf nor ever release a subscription taken for it.
142
+ immediateTxn.requestSignal = (this.root ?? this).requestSignal;
127
143
  immediateTxn.addWrite(operation);
128
144
  const result = immediateTxn.commit({});
129
145
  // Nothing may be sent back to this throwaway: the write is already committed, and its
@@ -137,6 +153,10 @@ class LMDBTransaction extends DatabaseTransaction_1.DatabaseTransaction {
137
153
  }
138
154
  return result;
139
155
  }
156
+ this.admitRequestWrite();
157
+ if (this.open === exports.TRANSACTION_STATE.CLOSED) {
158
+ throw new Error('Can not use a transaction that is no longer open');
159
+ }
140
160
  this.linkWrite(operation);
141
161
  this.writes.push(operation); // standard path, add to current transaction
142
162
  (this.ownedWrites ??= new WeakSet()).add(operation);
@@ -151,9 +171,21 @@ class LMDBTransaction extends DatabaseTransaction_1.DatabaseTransaction {
151
171
  /**
152
172
  * Resolves with information on the timestamp and success of the commit
153
173
  */
154
- commit(options = {}) {
155
- if (this.timedOut)
156
- throw (0, DatabaseTransaction_1.transactionOpenTooLongError)();
174
+ performCommit(options = {}) {
175
+ const next = this.next;
176
+ let result;
177
+ try {
178
+ result = this.performCommitAttempt(options);
179
+ }
180
+ catch (error) {
181
+ this.abortCommitFailure(error, next);
182
+ }
183
+ if (typeof result?.then === 'function')
184
+ return result.catch((error) => this.abortCommitFailure(error, next));
185
+ return result;
186
+ }
187
+ /** Preserve the synchronous empty-commit path while the outer method funnels every failure once. */
188
+ performCommitAttempt(options = {}) {
157
189
  options = options || {};
158
190
  let txnTime = this.timestamp;
159
191
  if (!txnTime)
@@ -163,88 +195,86 @@ class LMDBTransaction extends DatabaseTransaction_1.DatabaseTransaction {
163
195
  const retries = options.retries || 0;
164
196
  // now validate
165
197
  if (this.validated < this.writes.length) {
166
- try {
167
- const start = this.validated;
168
- // record the number of writes that have been validated so if we re-execute
169
- // and the number is increased we can validate the new entries
170
- this.validated = this.writes.length;
171
- for (let i = start; i < this.validated; i++) {
172
- const write = this.writes[i];
173
- try {
174
- if (write)
175
- (0, DatabaseTransaction_1.validateWrite)(write, this.timestamp, this);
176
- }
177
- finally {
178
- (0, DatabaseTransaction_1.closeWriteInstance)(write);
179
- }
198
+ const start = this.validated;
199
+ // record the number of writes that have been validated so if we re-execute
200
+ // and the number is increased we can validate the new entries
201
+ this.validated = this.writes.length;
202
+ for (let i = start; i < this.validated; i++) {
203
+ const write = this.writes[i];
204
+ try {
205
+ if (write)
206
+ (0, DatabaseTransaction_1.validateWrite)(write, this.timestamp, this);
180
207
  }
181
- let hasBefore;
182
- for (let i = start; i < this.validated; i++) {
183
- const write = this.writes[i];
184
- if (!write)
185
- continue;
186
- if (write.before || write.beforeIntermediate) {
187
- hasBefore = true;
188
- }
208
+ finally {
209
+ (0, DatabaseTransaction_1.closeWriteInstance)(write);
210
+ }
211
+ }
212
+ let hasBefore;
213
+ for (let i = start; i < this.validated; i++) {
214
+ const write = this.writes[i];
215
+ if (!write)
216
+ continue;
217
+ if (write.before || write.beforeIntermediate) {
218
+ hasBefore = true;
189
219
  }
190
- // Now we need to let any "before" actions execute. These are calls to the sources,
191
- // and we want to follow the order of the source sequence so that later, more canonical
192
- // source writes will finish (with right to refuse/abort) before proceeeding to less
193
- // canonical sources.
194
- if (hasBefore) {
195
- // see `committing` in DatabaseTransaction (issue #2062)
196
- this.setCommitPhase(true);
197
- const stagedWrites = this.writes.length;
198
- return (async () => {
199
- try {
200
- for (let phase = 0; phase < 2; phase++) {
201
- let completion;
202
- for (let i = start; i < this.validated; i++) {
203
- const write = this.writes[i];
204
- if (!write)
205
- continue;
206
- const before = write[phase === 0 ? 'before' : 'beforeIntermediate'];
207
- if (before) {
208
- const nextCompletion = before();
209
- if (completion) {
210
- if (completion.push)
211
- completion.push(nextCompletion);
212
- else
213
- completion = [completion, nextCompletion];
214
- }
220
+ }
221
+ // Now we need to let any "before" actions execute. These are calls to the sources,
222
+ // and we want to follow the order of the source sequence so that later, more canonical
223
+ // source writes will finish (with right to refuse/abort) before proceeeding to less
224
+ // canonical sources.
225
+ if (hasBefore) {
226
+ // see `committing` in DatabaseTransaction (issue #2062)
227
+ this.setCommitPhase(true);
228
+ const stagedWrites = this.writes.length;
229
+ return (async () => {
230
+ try {
231
+ for (let phase = 0; phase < 2; phase++) {
232
+ let completion;
233
+ for (let i = start; i < this.validated; i++) {
234
+ const write = this.writes[i];
235
+ if (!write)
236
+ continue;
237
+ const before = write[phase === 0 ? 'before' : 'beforeIntermediate'];
238
+ if (before) {
239
+ const nextCompletion = before();
240
+ if (completion) {
241
+ if (completion.push)
242
+ completion.push(nextCompletion);
215
243
  else
216
- completion = nextCompletion;
244
+ completion = [completion, nextCompletion];
217
245
  }
246
+ else
247
+ completion = nextCompletion;
218
248
  }
219
- if (completion)
220
- await (completion.push ? Promise.all(completion) : completion);
221
249
  }
250
+ if (completion)
251
+ await (completion.push ? Promise.all(completion) : completion);
222
252
  }
223
- catch (error) {
224
- this.setCommitPhase(false);
225
- this.abort();
226
- throw error;
227
- }
253
+ }
254
+ finally {
228
255
  this.setCommitPhase(false);
229
- // aborted underneath us while parked above — see DatabaseTransaction's twin guard
256
+ }
257
+ // aborted underneath us while parked above — see DatabaseTransaction's twin guard. A chain
258
+ // poisoned after one of its stores submitted rides the cascade instead (abortAndPoison).
259
+ if (!this.poisonedMidCommit) {
230
260
  if (this.timedOut)
231
261
  throw (0, DatabaseTransaction_1.transactionOpenTooLongError)();
232
- if (stagedWrites > 0 && this.writes.length === 0 && this.open === exports.TRANSACTION_STATE.CLOSED)
233
- throw new hdbError_ts_1.ServerError('Transaction was aborted while its commit was waiting on pre-commit work', 500);
234
- return this.commit(options);
235
- })();
236
- }
237
- }
238
- catch (error) {
239
- this.abort();
240
- throw error;
262
+ if (this.disconnected)
263
+ throw (0, DatabaseTransaction_1.requestAbortedError)();
264
+ }
265
+ if (stagedWrites > 0 && this.writes.length === 0 && this.open === exports.TRANSACTION_STATE.CLOSED)
266
+ throw new hdbError_ts_1.ServerError('Transaction was aborted while its commit was waiting on pre-commit work', 500);
267
+ return this.commit({ ...options, continuation: true });
268
+ })();
241
269
  }
242
270
  }
243
271
  if (!retries && this.writes.some((write) => write))
244
272
  this.renewChainForNativeCommit();
245
273
  // release the read snapshot so we don't keep it open longer than necessary
246
- if (!retries)
274
+ if (!retries && !this.baseReadRefConsumed) {
275
+ this.baseReadRefConsumed = true;
247
276
  this.doneReadTxn();
277
+ }
248
278
  this.open = options?.doneWriting ? exports.TRANSACTION_STATE.LINGERING : exports.TRANSACTION_STATE.OPEN;
249
279
  let resolution;
250
280
  const completions = [];
@@ -298,6 +328,7 @@ class LMDBTransaction extends DatabaseTransaction_1.DatabaseTransaction {
298
328
  if (db?.retryRisk)
299
329
  db.retryRisk *= 0.99; // gradually decay the retry risk
300
330
  if (this.writes.length + (db?.retryRisk || 0) < MAX_OPTIMISTIC_SIZE >> retries) {
331
+ this.markNativeCommitSubmitted();
301
332
  nextCondition();
302
333
  if (commitCompletions) {
303
334
  if (resolution) {
@@ -312,6 +343,7 @@ class LMDBTransaction extends DatabaseTransaction_1.DatabaseTransaction {
312
343
  else {
313
344
  // if it is too big to expect optimistic writes to work, or we have done too many retries we use
314
345
  // a real LMDB transaction to get exclusive access to reading and writing
346
+ this.markNativeCommitSubmitted();
315
347
  const transactionResolution = this.writes[0].store.transaction(() => {
316
348
  for (const write of this.writes) {
317
349
  // we load latest data while in the transaction
@@ -327,17 +359,19 @@ class LMDBTransaction extends DatabaseTransaction_1.DatabaseTransaction {
327
359
  return resolution.then((resolution) => {
328
360
  if (resolution) {
329
361
  if (this.next) {
330
- completions.push(this.next.commit(options));
362
+ completions.push(this.next.commit({ ...options, continuation: true }));
331
363
  }
332
364
  if (options?.flush) {
333
- completions.push(this.writes[0].store.flushed);
365
+ const store = this.writes[0]?.store;
366
+ if (store)
367
+ completions.push(store.flushed);
334
368
  }
335
369
  if (this.replicatedConfirmation) {
336
370
  // if we want to wait for replication confirmation, we need to track the transaction times
337
371
  // and when replication notifications come in, we count the number of confirms until we reach the desired number
338
- const databaseName = this.writes[0].store.rootStore.databaseName;
372
+ const databaseName = this.writes[0]?.store.rootStore.databaseName;
339
373
  const lastEntry = this.lastConfirmableEntry();
340
- if (confirmReplication && lastEntry)
374
+ if (confirmReplication && databaseName && lastEntry)
341
375
  completions.push(confirmReplication(databaseName, lastEntry.localTime, this.replicatedConfirmation));
342
376
  }
343
377
  // commit succeeded; clean up files for any writes whose commit-handler took an early-return,
@@ -369,7 +403,8 @@ class LMDBTransaction extends DatabaseTransaction_1.DatabaseTransaction {
369
403
  options.retries = retries + 1;
370
404
  else
371
405
  options = { retries: 1 };
372
- return this.commit(options); // try again
406
+ // A continuation: a poison that landed mid-commit must not abandon the retry ladder.
407
+ return this.commit({ ...options, continuation: true }); // try again
373
408
  }
374
409
  });
375
410
  }
@@ -378,7 +413,7 @@ class LMDBTransaction extends DatabaseTransaction_1.DatabaseTransaction {
378
413
  };
379
414
  if (this.next) {
380
415
  // now run any other transactions
381
- const nextResolution = this.next?.commit(options);
416
+ const nextResolution = this.next?.commit({ ...options, continuation: true });
382
417
  if (nextResolution?.then)
383
418
  return nextResolution?.then((nextResolution) => ({
384
419
  txnTime,
@@ -388,20 +423,86 @@ class LMDBTransaction extends DatabaseTransaction_1.DatabaseTransaction {
388
423
  }
389
424
  return txnResolution;
390
425
  }
391
- abort() {
392
- while (this.readTxnsUsed > 0)
393
- this.doneReadTxn(); // release the read snapshot when we abort, we assume we don't need it
394
- this.open = exports.TRANSACTION_STATE.CLOSED;
395
- this.drainCompletions();
396
- // any blobs that were pre-saved as part of these writes will never be referenced; schedule deletion
397
- // (retaining any fileId the current on-disk record still references — an aborted write may carry an
398
- // already-saved blob shared with the surviving record; see harper-pro#406).
399
- for (const write of this.writes) {
400
- if (write?.savedBlobs)
401
- (0, blob_ts_1.cleanupUnusedBlobs)(write.savedBlobs, (0, blob_ts_1.collectRetainedFileIds)(write.store.getEntry(write.key)?.value));
426
+ abortCommitFailure(error, next) {
427
+ const nextWasAttached = Boolean(next && this.next === next);
428
+ try {
429
+ this.abort(true);
430
+ }
431
+ catch (abortError) {
432
+ harperLogger.debug?.('aborting LMDB transaction after a failed commit', abortError);
433
+ }
434
+ // A detached pre-submit child has no other cleanup path. A submitted child owns an unknown native
435
+ // outcome and will clean itself when its own commit promise settles.
436
+ if (next && !nextWasAttached && !next.nativeCommitSubmitted) {
437
+ try {
438
+ next.abort(true);
439
+ }
440
+ catch (abortError) {
441
+ harperLogger.debug?.('aborting a detached LMDB transaction after a failed commit', abortError);
442
+ }
443
+ }
444
+ throw error;
445
+ }
446
+ /**
447
+ * Force-release the retained read snapshot without touching staged writes. The base class's
448
+ * version acts on `this.transaction`; LMDB's snapshot lives on `this.readTxn`, so the monitor
449
+ * would otherwise have nothing that can reclaim a handle abort(true) retained.
450
+ */
451
+ releaseReadTxn() {
452
+ while (this.readTxn && this.readTxnsUsed > 0)
453
+ this.doneReadTxn();
454
+ this.completeDeferredContextRelease();
455
+ }
456
+ abort(retainReadTransaction = false, cascade = true) {
457
+ const next = cascade ? this.next : undefined;
458
+ if (cascade && !retainReadTransaction)
459
+ this.next = null;
460
+ try {
461
+ const hasOpenReadIterator = retainReadTransaction &&
462
+ this.readTxn &&
463
+ (this.readTxnsUsed > 1 || (this.baseReadRefConsumed && this.readTxnsUsed > 0));
464
+ if (hasOpenReadIterator) {
465
+ if (!this.baseReadRefConsumed) {
466
+ this.doneReadTxn();
467
+ this.baseReadRefConsumed = true;
468
+ }
469
+ }
470
+ else {
471
+ while (this.readTxnsUsed > 0)
472
+ this.doneReadTxn(); // release the read snapshot when we abort, we assume we don't need it
473
+ }
474
+ this.open = exports.TRANSACTION_STATE.CLOSED;
475
+ this.drainCompletions();
476
+ // Any blobs that were pre-saved as part of these writes will never be referenced; schedule deletion
477
+ // (retaining any fileId the current on-disk record still references — an aborted write may carry an
478
+ // already-saved blob shared with the surviving record; see harper-pro#406).
479
+ for (const write of this.writes) {
480
+ if (write?.savedBlobs)
481
+ (0, blob_ts_1.cleanupUnusedBlobs)(write.savedBlobs, (0, blob_ts_1.collectRetainedFileIds)(write.store.getEntry(write.key)?.value));
482
+ }
483
+ }
484
+ finally {
485
+ try {
486
+ this.open = exports.TRANSACTION_STATE.CLOSED;
487
+ this.endScopeOwnership();
488
+ this.clearWrites();
489
+ this.releaseContext(!this.timedOut && !this.disconnected);
490
+ if (!this.root)
491
+ this.releaseRequestAbortListener();
492
+ }
493
+ finally {
494
+ // Same guard as DatabaseTransaction.abort(): a child whose native commit is outstanding owns
495
+ // its own cleanup, and clearing its writes here would unlink blobs that commit still references.
496
+ if (next && !(next.nativeCommitSubmitted && next.commitsInFlight)) {
497
+ try {
498
+ next.abort(retainReadTransaction);
499
+ }
500
+ catch (error) {
501
+ harperLogger.debug?.('cleaning up a chained LMDB transaction during abort', error);
502
+ }
503
+ }
504
+ }
402
505
  }
403
- // reset the transaction
404
- this.clearWrites();
405
506
  }
406
507
  save(..._args) {
407
508
  // noop for LMDB
@@ -415,6 +516,7 @@ class ImmediateTransaction extends LMDBTransaction {
415
516
  this.db = db;
416
517
  }
417
518
  save(..._args) {
519
+ this.admitRequestWrite(); // a deferred save reaches here without passing through addWrite()
418
520
  return this.commit();
419
521
  }
420
522
  // @ts-expect-error accessor overriding property
@@ -438,6 +540,30 @@ function startMonitoringTxns() {
438
540
  const commitChainHead = txn.commitChainHead ?? txn;
439
541
  if (txn.timeout <= 0) {
440
542
  const url = txn.getContext()?.url;
543
+ if ((0, DatabaseTransaction_1.deferForCommitInFlight)(txn, url, txnExpiration))
544
+ continue;
545
+ if (txn.open === exports.TRANSACTION_STATE.CLOSED &&
546
+ !txn.commitAttemptDoomedByPoison() &&
547
+ (0, DatabaseTransaction_1.shouldSpareCommitPhase)(txn, checkedCommitPhaseChains)) {
548
+ harperLogger.warn?.(`Transaction has been in its commit phase past the open-transaction limit, waiting on pre-commit work; letting it complete, from table: ${txn.db?.name + (url ? ' path: ' + url : '')}`);
549
+ txn.timeout = Math.max(txnExpiration, txn.timeoutBudget ?? 0);
550
+ continue;
551
+ }
552
+ if (txn.open === exports.TRANSACTION_STATE.CLOSED) {
553
+ // Only reachable through abort(true), which retained the snapshot for read iterators
554
+ // that own it. Nothing else here can reclaim it: the branches below would re-enter
555
+ // commit() on a poisoned transaction every tick, throw on its own poison check, and
556
+ // re-arm the timer — pinning an LMDB read snapshot, which blocks free-page reuse and
557
+ // grows the data file, for the life of the process. Close the owning iterators first so
558
+ // the reference comes back through doneReadTxn(), and force the release if it does not.
559
+ const closedIterators = txn.closeOwnedReadIterators();
560
+ if (closedIterators > 0 || txn.readTxn)
561
+ harperLogger.warn?.(`Read iterators held a closed transaction's snapshot past the open-transaction limit; ${txn.readTxn ? 'releasing it' : `closed ${closedIterators} abandoned iterator(s)`}, from table: ${txn.db?.name + (url ? ' path: ' + url : '')}`);
562
+ if (txn.readTxn)
563
+ txn.releaseReadTxn();
564
+ trackedTxns.delete(txn);
565
+ continue;
566
+ }
441
567
  if ((0, DatabaseTransaction_1.shouldSpareCommitPhase)(txn, checkedCommitPhaseChains)) {
442
568
  // see DatabaseTransaction's monitor (issue #2062)
443
569
  harperLogger.warn?.(`Transaction has been in its commit phase past the open-transaction limit, waiting on pre-commit work (e.g. a large blob write); letting it complete, from table: ${txn.db?.name + (url ? ' path: ' + url : '')}`, ...(txn.startedFrom ? [`was started from ${txn.startedFrom.resourceName}.${txn.startedFrom.method}`] : []));
@@ -1 +1 @@
1
- {"version":3,"file":"LMDBTransaction.js","sourceRoot":"","sources":["../../resources/LMDBTransaction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LMDBTransaction.js","sourceRoot":"","sources":["../../resources/LMDBTransaction.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BA,0DAEC;AA+iBD,4CAKC;AAllBD,+DAW+B;AAC/B,uCAAuE;AACvE,+DAA4D;AAC5D,uEAAwE;AACxE,kFAAoE;AAEpE,uDAAyE;AAGzE,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAChC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAuB,CAAC;AACtC,QAAA,iBAAiB,GAAG;IAChC,MAAM,EAAE,CAAC,EAAE,uIAAuI;IAClJ,IAAI,EAAE,CAAC,EAAE,+DAA+D;IACxE,SAAS,EAAE,CAAC,EAAE,6EAA6E;CAC3F,CAAC;AACF,IAAI,kBAAkB,CAAC;AACvB,SAAgB,uBAAuB,CAAC,QAAQ;IAC/C,kBAAkB,GAAG,QAAQ,CAAC;AAC/B,CAAC;AAED,MAAa,eAAgB,SAAQ,yCAAmB;IACvD,iBAAiB,GAAG,KAAK,CAAC;IAC1B,QAAQ,CAAU;IAClB,MAAM,GAAuB,EAAE,CAAC,CAAC,wDAAwD;IACzF,SAAS,GAAG,CAAC,CAAC;IACd,UAAU,GAAG,CAAC,CAAC;IAIf,IAAI,GAAG,yBAAiB,CAAC,IAAI,CAAC;IAE9B,gBAAgB;QACf,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC;IACjE,CAAC;IAES,yBAAyB;QAClC,KAAK,CAAC,yBAAyB,EAAE,CAAC;QAClC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC;QACnF,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAES,wBAAwB;QACjC,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED,UAAU;QACT,sBAAsB;QACtB,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACvD,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,IAAK,IAAI,CAAC,OAAe,CAAC,SAAS;gBAAG,IAAI,CAAC,OAAe,CAAC,SAAS,GAAG,CAAC,CAAC;YACzE,OAAO,IAAI,CAAC,OAAO,CAAC;QACrB,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,yBAAiB,CAAC,IAAI;YAAE,OAAO,CAAC,+IAA+I;QAEjM,+JAA+J;QAC/J,IAAI,CAAC,OAAO,GAAI,IAAI,CAAC,EAAU,CAAC,kBAAkB,EAAE,CAAC;QAErD,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;QACjC,IAAK,IAAI,CAAC,OAAe,CAAC,SAAS;YAAG,IAAI,CAAC,OAAe,CAAC,SAAS,GAAG,CAAC,CAAC;QACzE,WAAW,CAAC,GAAG,CAAC,IAAW,CAAC,CAAC;QAC7B,OAAO,IAAI,CAAC,OAAO,CAAC;IACrB,CAAC;IAED,yFAAyF;IACzF,4FAA4F;IAC5F,2FAA2F;IAC3F,oFAAoF;IACpF,UAAU,CAAC,gBAA0B;QACpC,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,OAAe,CAAC,GAAG,EAAE,CAAC;YAC5B,IAAI,CAAC,YAAY,EAAE,CAAC;QACrB,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC;IACrB,CAAC;IAED,WAAW;QACV,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAC1B,IAAI,IAAI,CAAC,OAAO,YAAY,wBAAgB,EAAE,CAAC;YAC9C,mCAAmC;QACpC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,OAAe,CAAC,IAAI,EAAE,CAAC;QAC9B,CAAC;QACD,IAAI,EAAE,IAAI,CAAC,YAAY,KAAK,CAAC,EAAE,CAAC;YAC/B,0FAA0F;YAC1F,gFAAgF;YAChF,IAAI,CAAC,IAAI,CAAC,qBAAqB;gBAAE,WAAW,CAAC,MAAM,CAAC,IAAW,CAAC,CAAC;YACjE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,8BAA8B,EAAE,CAAC;QACvC,CAAC;IACF,CAAC;IAED,gBAAgB;QACf,IAAI,EAAE,IAAI,CAAC,eAAe,KAAK,CAAC,IAAI,IAAI,CAAC,YAAY,KAAK,CAAC,EAAE,CAAC;YAC7D,IAAI,CAAC,WAAW,EAAE,CAAC;QACpB,CAAC;IACF,CAAC;IAED,QAAQ,CAAC,SAA2B;QACnC,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,kBAAkB;YAAE,MAAM,IAAA,iDAA2B,GAAE,CAAC;QAClF,IAAI,IAAI,CAAC,YAAY;YAAE,MAAM,IAAA,yCAAmB,GAAE,CAAC;QACnD,IAAI,IAAI,CAAC,IAAI,KAAK,yBAAiB,CAAC,SAAS,EAAE,CAAC;YAC/C,uGAAuG;YACvG,MAAM,YAAY,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACvD,+FAA+F;YAC/F,mFAAmF;YACnF,YAAY,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,aAAa,CAAC;YAC/D,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YACjC,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,EAAE,CAAQ,CAAC;YAC9C,sFAAsF;YACtF,mCAAmC;YACnC,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC;YAC/B,IAAI,MAAM,EAAE,IAAI,EAAE,CAAC;gBAClB,SAAS,CAAC,OAAO,GAAG,MAAM,CAAC;YAC5B,CAAC;iBAAM,CAAC;gBACP,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC;YAC3B,CAAC;YACD,OAAO,MAAM,CAAC;QACf,CAAC;QACD,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,IAAI,KAAK,yBAAiB,CAAC,MAAM,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,4CAA4C;QACzE,CAAC,IAAI,CAAC,WAAW,KAAK,IAAI,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACpD,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED,WAAW,CAAC,SAA2B;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,KAAK,GAAG,CAAC,CAAC;YAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;QAC1C,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACO,aAAa,CAAC,UAAyB,EAAE;QAClD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,IAAI,MAAM,CAAC;QACX,IAAI,CAAC;YACJ,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAC7C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACtC,CAAC;QACD,IAAI,OAAO,MAAM,EAAE,IAAI,KAAK,UAAU;YAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;QAC7G,OAAO,MAAM,CAAC;IACf,CAAC;IAED,oGAAoG;IAC5F,oBAAoB,CAAC,UAAyB,EAAE;QACvD,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;QACxB,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;QAC7B,IAAI,CAAC,OAAO;YAAE,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,IAAA,uCAAoB,GAAE,CAAC;QACrF,IAAI,CAAC,OAAO,CAAC,SAAS;YAAE,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC;QACpD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC;QACrC,eAAe;QACf,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACzC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;YAC7B,2EAA2E;YAC3E,8DAA8D;YAC9D,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YACpC,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAC7B,IAAI,CAAC;oBACJ,IAAI,KAAK;wBAAE,IAAA,mCAAa,EAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;gBACvD,CAAC;wBAAS,CAAC;oBACV,IAAA,wCAAkB,EAAC,KAAK,CAAC,CAAC;gBAC3B,CAAC;YACF,CAAC;YACD,IAAI,SAAS,CAAC;YACd,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAC7B,IAAI,CAAC,KAAK;oBAAE,SAAS;gBACrB,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,kBAAkB,EAAE,CAAC;oBAC9C,SAAS,GAAG,IAAI,CAAC;gBAClB,CAAC;YACF,CAAC;YACD,mFAAmF;YACnF,uFAAuF;YACvF,oFAAoF;YACpF,qBAAqB;YACrB,IAAI,SAAS,EAAE,CAAC;gBACf,wDAAwD;gBACxD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;gBAC1B,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;gBACxC,OAAO,CAAC,KAAK,IAAI,EAAE;oBAClB,IAAI,CAAC;wBACJ,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;4BACxC,IAAI,UAAU,CAAC;4BACf,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;gCAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gCAC7B,IAAI,CAAC,KAAK;oCAAE,SAAS;gCACrB,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC;gCACpE,IAAI,MAAM,EAAE,CAAC;oCACZ,MAAM,cAAc,GAAG,MAAM,EAAE,CAAC;oCAChC,IAAI,UAAU,EAAE,CAAC;wCAChB,IAAI,UAAU,CAAC,IAAI;4CAAE,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;;4CAChD,UAAU,GAAG,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;oCAChD,CAAC;;wCAAM,UAAU,GAAG,cAAc,CAAC;gCACpC,CAAC;4BACF,CAAC;4BACD,IAAI,UAAU;gCAAE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;wBAChF,CAAC;oBACF,CAAC;4BAAS,CAAC;wBACV,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;oBAC5B,CAAC;oBACD,2FAA2F;oBAC3F,yFAAyF;oBACzF,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;wBAC7B,IAAI,IAAI,CAAC,QAAQ;4BAAE,MAAM,IAAA,iDAA2B,GAAE,CAAC;wBACvD,IAAI,IAAI,CAAC,YAAY;4BAAE,MAAM,IAAA,yCAAmB,GAAE,CAAC;oBACpD,CAAC;oBACD,IAAI,YAAY,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,yBAAiB,CAAC,MAAM;wBACzF,MAAM,IAAI,yBAAW,CAAC,yEAAyE,EAAE,GAAG,CAAC,CAAC;oBACvG,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;gBACxD,CAAC,CAAC,EAAE,CAAC;YACN,CAAC;QACF,CAAC;QACD,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC;YAAE,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACrF,2EAA2E;QAC3E,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3C,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;YAChC,IAAI,CAAC,WAAW,EAAE,CAAC;QACpB,CAAC;QACD,IAAI,CAAC,IAAI,GAAG,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,yBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC,yBAAiB,CAAC,IAAI,CAAC;QACxF,IAAI,UAAU,CAAC;QACf,MAAM,WAAW,GAAG,EAAE,CAAC;QACvB,IAAI,iBAAkC,CAAC;QACvC,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,6BAA6B;QACjF,MAAM,OAAO,GAAG,CAAC,KAAK,EAAE,EAAE;YACzB,IAAI,UAAU,CAAC;YACf,IAAI,CAAC;gBACJ,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAC1D,CAAC;oBAAS,CAAC;gBACV,IAAA,wCAAkB,EAAC,KAAK,CAAC,CAAC;YAC3B,CAAC;YACD,IAAI,OAAO,UAAU,EAAE,IAAI,KAAK,UAAU,EAAE,CAAC;gBAC5C,4FAA4F;gBAC5F,wFAAwF;gBACxF,+EAA+E;gBAC/E,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;gBACrC,CAAC,iBAAiB,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC7C,CAAC;QACF,CAAC,CAAC;QACF,wGAAwG;QACxG,MAAM,aAAa,GAAG,GAAG,EAAE;YAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;YACxC,IAAI,KAAK,EAAE,CAAC;gBACX,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;oBACf,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;wBACjC,4FAA4F;wBAC5F,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAC/C,CAAC;oBAED,MAAM,mBAAmB,GAAI,KAAK,CAAC,KAAa,CAAC,SAAS,CACzD,KAAK,CAAC,GAAG,EACT,KAAK,CAAC,KAAK,EAAE,OAAO,IAAI,IAAI,EAC5B,aAAa,CACb,CAAC;oBACF,UAAU,GAAG,UAAU,IAAI,mBAAmB,CAAC;gBAChD,CAAC;qBAAM,CAAC;oBACP,aAAa,EAAE,CAAC;gBACjB,CAAC;YACF,CAAC;iBAAM,CAAC;gBACP,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBACjC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAChB,CAAC;YACF,CAAC;QACF,CAAC,CAAC;QAEF,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACnB,kCAAkC;QAClC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,iHAAiH;YACjH,4GAA4G;YAC5G,qEAAqE;YACrE,IAAI,EAAE,EAAE,SAAS;gBAAE,EAAE,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,iCAAiC;YAC1E,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,SAAS,IAAI,CAAC,CAAC,GAAG,mBAAmB,IAAI,OAAO,EAAE,CAAC;gBAChF,IAAI,CAAC,yBAAyB,EAAE,CAAC;gBACjC,aAAa,EAAE,CAAC;gBAChB,IAAI,iBAAiB,EAAE,CAAC;oBACvB,IAAI,UAAU,EAAE,CAAC;wBAChB,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAC3D,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CACpD,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACP,iEAAiE;wBACjE,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;oBAC9D,CAAC;gBACF,CAAC;YACF,CAAC;iBAAM,CAAC;gBACP,gGAAgG;gBAChG,yEAAyE;gBACzE,IAAI,CAAC,yBAAyB,EAAE,CAAC;gBACjC,MAAM,qBAAqB,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;oBACnE,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;wBACjC,+CAA+C;wBAC/C,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;wBAC9C,OAAO,CAAC,KAAK,CAAC,CAAC;oBAChB,CAAC;oBACD,OAAO,IAAI,CAAC,CAAC,0BAA0B;gBACxC,CAAC,CAAC,CAAC;gBACH,UAAU,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CACrD,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CACpF,CAAC;YACH,CAAC;QACF,CAAC;QAED,IAAI,UAAU,EAAE,CAAC;YAChB,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE;gBACrC,IAAI,UAAU,EAAE,CAAC;oBAChB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;wBACf,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;oBACxE,CAAC;oBACD,IAAI,OAAO,EAAE,KAAK,EAAE,CAAC;wBACpB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;wBACpC,IAAI,KAAK;4BAAE,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBAC5C,CAAC;oBACD,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;wBACjC,0FAA0F;wBAC1F,gHAAgH;wBAChH,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC;wBAClE,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;wBAC9C,IAAI,kBAAkB,IAAI,YAAY,IAAI,SAAS;4BAClD,WAAW,CAAC,IAAI,CACf,kBAAkB,CAAC,YAAY,EAAG,SAAiB,CAAC,SAAS,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAC3F,CAAC;oBACJ,CAAC;oBACD,6FAA6F;oBAC7F,uFAAuF;oBACvF,yFAAyF;oBACzF,mFAAmF;oBACnF,uEAAuE;oBACvE,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;wBACjC,IAAI,KAAK,EAAE,UAAU,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;4BAC5F,IAAA,4BAAkB,EAAC,KAAK,CAAC,UAAU,EAAE,IAAA,gCAAsB,EAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;oBACvG,CAAC;oBACD,kFAAkF;oBAClF,IAAI,CAAC,WAAW,EAAE,CAAC;oBACnB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;oBACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;oBACjB,OAAO,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;wBACzC,OAAO;4BACN,OAAO;yBACP,CAAC;oBACH,CAAC,CAAC,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACP,0GAA0G;oBAC1G,0BAA0B;oBAC1B,IAAI,EAAE,EAAE,CAAC;wBACR,EAAE,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,mBAAmB,GAAG,CAAC,CAAC;oBAC9D,CAAC;oBACD,IAAI,OAAO;wBAAE,OAAO,CAAC,OAAO,GAAG,OAAO,GAAG,CAAC,CAAC;;wBACtC,OAAO,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;oBAC9B,qFAAqF;oBACrF,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,YAAY;gBACrE,CAAC;YACF,CAAC,CAAC,CAAC;QACJ,CAAC;QACD,MAAM,aAAa,GAAqB;YACvC,OAAO;SACP,CAAC;QACF,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,iCAAiC;YACjC,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,GAAG,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7E,IAAK,cAAsB,EAAE,IAAI;gBAChC,OAAQ,cAAsB,EAAE,IAAI,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;oBACzD,OAAO;oBACP,IAAI,EAAE,cAAc;iBACpB,CAAC,CAAC,CAAC;YACL,aAAa,CAAC,IAAI,GAAG,cAAqB,CAAC;QAC5C,CAAC;QACD,OAAO,aAAa,CAAC;IACtB,CAAC;IAEO,kBAAkB,CAAC,KAAK,EAAE,IAAqC;QACtE,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAC5D,IAAI,CAAC;YACJ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;QAAC,OAAO,UAAU,EAAE,CAAC;YACrB,YAAY,CAAC,KAAK,EAAE,CAAC,iDAAiD,EAAE,UAAU,CAAC,CAAC;QACrF,CAAC;QACD,kGAAkG;QAClG,qEAAqE;QACrE,IAAI,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC7D,IAAI,CAAC;gBACJ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC;YAAC,OAAO,UAAU,EAAE,CAAC;gBACrB,YAAY,CAAC,KAAK,EAAE,CAAC,4DAA4D,EAAE,UAAU,CAAC,CAAC;YAChG,CAAC;QACF,CAAC;QACD,MAAM,KAAK,CAAC;IACb,CAAC;IACD;;;;OAIG;IACH,cAAc;QACb,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC;YAAE,IAAI,CAAC,WAAW,EAAE,CAAC;QACjE,IAAI,CAAC,8BAA8B,EAAE,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,qBAAqB,GAAG,KAAK,EAAE,OAAO,GAAG,IAAI;QAClD,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7C,IAAI,OAAO,IAAI,CAAC,qBAAqB;YAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACxD,IAAI,CAAC;YACJ,MAAM,mBAAmB,GACxB,qBAAqB;gBACrB,IAAI,CAAC,OAAO;gBACZ,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC;YAChF,IAAI,mBAAmB,EAAE,CAAC;gBACzB,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;oBAC/B,IAAI,CAAC,WAAW,EAAE,CAAC;oBACnB,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;gBACjC,CAAC;YACF,CAAC;iBAAM,CAAC;gBACP,OAAO,IAAI,CAAC,YAAY,GAAG,CAAC;oBAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,sEAAsE;YACzH,CAAC;YACD,IAAI,CAAC,IAAI,GAAG,yBAAiB,CAAC,MAAM,CAAC;YACrC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,oGAAoG;YACpG,oGAAoG;YACpG,4EAA4E;YAC5E,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBACjC,IAAI,KAAK,EAAE,UAAU;oBACpB,IAAA,4BAAkB,EAAC,KAAK,CAAC,UAAU,EAAE,IAAA,gCAAsB,EAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;YACvG,CAAC;QACF,CAAC;gBAAS,CAAC;YACV,IAAI,CAAC;gBACJ,IAAI,CAAC,IAAI,GAAG,yBAAiB,CAAC,MAAM,CAAC;gBACrC,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACzB,IAAI,CAAC,WAAW,EAAE,CAAC;gBACnB,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAC1D,IAAI,CAAC,IAAI,CAAC,IAAI;oBAAE,IAAI,CAAC,2BAA2B,EAAE,CAAC;YACpD,CAAC;oBAAS,CAAC;gBACV,6FAA6F;gBAC7F,iGAAiG;gBACjG,IAAI,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;oBACnE,IAAI,CAAC;wBACJ,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;oBACnC,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBAChB,YAAY,CAAC,KAAK,EAAE,CAAC,qDAAqD,EAAE,KAAK,CAAC,CAAC;oBACpF,CAAC;gBACF,CAAC;YACF,CAAC;QACF,CAAC;IACF,CAAC;IACD,IAAI,CAAC,GAAG,KAAY;QACnB,gBAAgB;IACjB,CAAC;CACD;AAtbD,0CAsbC;AAED,MAAa,oBAAqB,SAAQ,eAAe;IACxD,WAAW,GAAG,IAAI,CAAC;IACnB,YAAY,EAAoB;QAC/B,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACd,CAAC;IACD,IAAI,CAAC,GAAG,KAAY;QACnB,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,kEAAkE;QAC5F,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IACtB,CAAC;IACD,gDAAgD;IAChD,IAAI,SAAS;QACZ,OAAO,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,IAAA,uCAAoB,GAAE,CAAC,CAAC;IACtE,CAAC;IACD,IAAI,SAAS,CAAC,KAAa;QAC1B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IACzB,CAAC;IACD,UAAU;QACT,OAAO,CAAC,mCAAmC;IAC5C,CAAC;CACD;AApBD,oDAoBC;AAED,IAAI,aAAa,GAAG,KAAK,CAAC;AAC1B,IAAI,KAAK,CAAC;AAEV,SAAS,mBAAmB;IAC3B,KAAK,GAAG,WAAW,CAAC;QACnB,MAAM,wBAAwB,GAAG,IAAI,GAAG,EAAuB,CAAC;QAChE,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;YAC/B,MAAM,eAAe,GAAG,GAAG,CAAC,eAAe,IAAI,GAAG,CAAC;YACnD,IAAI,GAAG,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC;gBACtB,MAAM,GAAG,GAAI,GAAG,CAAC,UAAU,EAAU,EAAE,GAAG,CAAC;gBAC3C,IAAI,IAAA,4CAAsB,EAAC,GAAG,EAAE,GAAG,EAAE,aAAa,CAAC;oBAAE,SAAS;gBAC9D,IACC,GAAG,CAAC,IAAI,KAAK,yBAAiB,CAAC,MAAM;oBACrC,CAAC,GAAG,CAAC,2BAA2B,EAAE;oBAClC,IAAA,4CAAsB,EAAC,GAAG,EAAE,wBAAwB,CAAC,EACpD,CAAC;oBACF,YAAY,CAAC,IAAI,EAAE,CAClB,0IACE,GAAG,CAAC,EAAU,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CACpD,EAAE,CACF,CAAC;oBACF,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC;oBAC9D,SAAS;gBACV,CAAC;gBACD,IAAI,GAAG,CAAC,IAAI,KAAK,yBAAiB,CAAC,MAAM,EAAE,CAAC;oBAC3C,qFAAqF;oBACrF,mFAAmF;oBACnF,oFAAoF;oBACpF,qFAAqF;oBACrF,wFAAwF;oBACxF,wFAAwF;oBACxF,MAAM,eAAe,GAAG,GAAG,CAAC,uBAAuB,EAAE,CAAC;oBACtD,IAAI,eAAe,GAAG,CAAC,IAAI,GAAG,CAAC,OAAO;wBACrC,YAAY,CAAC,IAAI,EAAE,CAClB,wFACC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,eAAe,wBACzD,iBAAkB,GAAG,CAAC,EAAU,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CACvE,CAAC;oBACH,IAAI,GAAG,CAAC,OAAO;wBAAE,GAAG,CAAC,cAAc,EAAE,CAAC;oBACtC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBACxB,SAAS;gBACV,CAAC;gBACD,IAAI,IAAA,4CAAsB,EAAC,GAAG,EAAE,wBAAwB,CAAC,EAAE,CAAC;oBAC3D,kDAAkD;oBAClD,YAAY,CAAC,IAAI,EAAE,CAClB,oKACE,GAAG,CAAC,EAAU,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CACpD,EAAE,EACF,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,oBAAoB,GAAG,CAAC,WAAW,CAAC,YAAY,IAAI,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAC1G,CAAC;oBACF,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC;gBAC/D,CAAC;qBAAM,IAAI,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;oBACxE,wFAAwF;oBACxF,iFAAiF;oBACjF,wFAAwF;oBACxF,mFAAmF;oBACnF,2FAA2F;oBAC3F,4FAA4F;oBAC5F,6FAA6F;oBAC7F,qDAAqD;oBACrD,YAAY,CAAC,KAAK,CACjB,8GACE,GAAG,CAAC,EAAU,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CACpD,EAAE,CACF,CAAC;oBACF,IAAI,CAAC;wBACJ,eAAe,CAAC,iBAAiB,EAAE,CAAC;oBACrC,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBAChB,YAAY,CAAC,KAAK,EAAE,CAAC,yCAAyC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;oBAChF,CAAC;gBACF,CAAC;qBAAM,CAAC;oBACP,2FAA2F;oBAC3F,6FAA6F;oBAC7F,0EAA0E;oBAC1E,IAAI,CAAC;wBACJ,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;wBAC5B,IAAK,MAAc,EAAE,IAAI,EAAE,CAAC;4BAC1B,MAAc,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gCAC/B,YAAY,CAAC,KAAK,EAAE,CAAC,2CAA2C,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;4BAClF,CAAC,CAAC,CAAC;wBACJ,CAAC;oBACF,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBAChB,YAAY,CAAC,KAAK,EAAE,CAAC,2CAA2C,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;oBAClF,CAAC;oBACD,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC;gBAC/D,CAAC;YACF,CAAC;iBAAM,CAAC;gBACP,GAAG,CAAC,OAAO,IAAI,aAAa,CAAC;YAC9B,CAAC;QACF,CAAC;IACF,CAAC,EAAE,aAAa,CAAC,CAAC,KAAK,EAAE,CAAC;AAC3B,CAAC;AAED,mBAAmB,EAAE,CAAC;AAEtB,SAAgB,gBAAgB,CAAC,EAAE;IAClC,aAAa,CAAC,KAAK,CAAC,CAAC;IACrB,aAAa,GAAG,EAAE,CAAC;IACnB,mBAAmB,EAAE,CAAC;IACtB,OAAO,WAAW,CAAC;AACpB,CAAC"}
@@ -945,10 +945,9 @@ function recordUpdater(store, tableId, auditStore) {
945
945
  extendedType |= auditStore_ts_1.HAS_ADDITIONAL_AUDIT_REFS;
946
946
  }
947
947
  if (options?.localOnly) {
948
- // Mark this write as local-only: set the bit in BOTH the persisted record metadata
949
- // (so the full-copy send loop, which reads entry.metadataFlags, skips it) AND the audit
950
- // entry's extendedType (so the audit-forward send path skips it by bitmask without decode).
951
948
  metadataInNextEncoding |= auditStore_ts_1.LOCAL_ONLY;
949
+ }
950
+ if (options?.localOnly || options?.auditLocalOnly) {
952
951
  extendedType |= auditStore_ts_1.LOCAL_ONLY;
953
952
  }
954
953
  if (previousResidencyId !== residencyId) {