@bsv/sdk 1.9.1 → 1.9.3

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 (44) hide show
  1. package/dist/cjs/package.json +1 -1
  2. package/dist/cjs/src/kvstore/GlobalKVStore.js +116 -98
  3. package/dist/cjs/src/kvstore/GlobalKVStore.js.map +1 -1
  4. package/dist/cjs/src/kvstore/types.js.map +1 -1
  5. package/dist/cjs/src/overlay-tools/index.js +1 -0
  6. package/dist/cjs/src/overlay-tools/index.js.map +1 -1
  7. package/dist/cjs/src/overlay-tools/withDoubleSpendRetry.js +55 -0
  8. package/dist/cjs/src/overlay-tools/withDoubleSpendRetry.js.map +1 -0
  9. package/dist/cjs/src/registry/RegistryClient.js +144 -25
  10. package/dist/cjs/src/registry/RegistryClient.js.map +1 -1
  11. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  12. package/dist/esm/src/kvstore/GlobalKVStore.js +117 -99
  13. package/dist/esm/src/kvstore/GlobalKVStore.js.map +1 -1
  14. package/dist/esm/src/kvstore/types.js.map +1 -1
  15. package/dist/esm/src/overlay-tools/index.js +1 -0
  16. package/dist/esm/src/overlay-tools/index.js.map +1 -1
  17. package/dist/esm/src/overlay-tools/withDoubleSpendRetry.js +48 -0
  18. package/dist/esm/src/overlay-tools/withDoubleSpendRetry.js.map +1 -0
  19. package/dist/esm/src/registry/RegistryClient.js +148 -26
  20. package/dist/esm/src/registry/RegistryClient.js.map +1 -1
  21. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  22. package/dist/types/src/kvstore/GlobalKVStore.d.ts.map +1 -1
  23. package/dist/types/src/kvstore/types.d.ts +2 -0
  24. package/dist/types/src/kvstore/types.d.ts.map +1 -1
  25. package/dist/types/src/overlay-tools/index.d.ts +1 -0
  26. package/dist/types/src/overlay-tools/index.d.ts.map +1 -1
  27. package/dist/types/src/overlay-tools/withDoubleSpendRetry.d.ts +14 -0
  28. package/dist/types/src/overlay-tools/withDoubleSpendRetry.d.ts.map +1 -0
  29. package/dist/types/src/registry/RegistryClient.d.ts +31 -5
  30. package/dist/types/src/registry/RegistryClient.d.ts.map +1 -1
  31. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  32. package/dist/umd/bundle.js +3 -3
  33. package/dist/umd/bundle.js.map +1 -1
  34. package/docs/reference/kvstore.md +9 -0
  35. package/docs/reference/overlay-tools.md +32 -0
  36. package/docs/reference/registry.md +34 -9
  37. package/package.json +1 -1
  38. package/src/kvstore/GlobalKVStore.ts +134 -114
  39. package/src/kvstore/__tests/GlobalKVStore.test.ts +11 -1
  40. package/src/kvstore/types.ts +2 -0
  41. package/src/overlay-tools/index.ts +1 -0
  42. package/src/overlay-tools/withDoubleSpendRetry.ts +71 -0
  43. package/src/registry/RegistryClient.ts +180 -36
  44. package/src/registry/__tests/RegistryClient.test.ts +211 -54
@@ -1,6 +1,6 @@
1
1
  import Transaction from '../transaction/Transaction.js';
2
2
  import * as Utils from '../primitives/utils.js';
3
- import { TopicBroadcaster, LookupResolver } from '../overlay-tools/index.js';
3
+ import { TopicBroadcaster, LookupResolver, withDoubleSpendRetry } from '../overlay-tools/index.js';
4
4
  import { PushDrop } from '../script/index.js';
5
5
  import WalletClient from '../wallet/WalletClient.js';
6
6
  import { Beef } from '../transaction/Beef.js';
@@ -19,6 +19,7 @@ const DEFAULT_CONFIG = {
19
19
  topics: ['tm_kvstore'],
20
20
  networkPreset: 'mainnet',
21
21
  acceptDelayedBroadcast: false,
22
+ overlayBroadcast: false,
22
23
  tokenSetDescription: '',
23
24
  tokenUpdateDescription: '',
24
25
  tokenRemovalDescription: '' // Will be set dynamically
@@ -126,10 +127,7 @@ export class GlobalKVStore {
126
127
  const tokenAmount = options.tokenAmount ?? this.config.tokenAmount;
127
128
  const tags = options.tags ?? [];
128
129
  try {
129
- // Check for existing token to spend
130
- const existingEntries = await this.queryOverlay({ key, controller }, { includeToken: true });
131
- const existingToken = existingEntries.length > 0 ? existingEntries[0].token : undefined;
132
- // Create PushDrop locking script
130
+ // Create PushDrop locking script (reusable across retries)
133
131
  const pushdrop = new PushDrop(this.wallet, this.config.originator);
134
132
  const lockingScriptFields = [
135
133
  Utils.toArray(JSON.stringify(protocolID), 'utf8'),
@@ -142,70 +140,79 @@ export class GlobalKVStore {
142
140
  lockingScriptFields.push(Utils.toArray(JSON.stringify(tags), 'utf8'));
143
141
  }
144
142
  const lockingScript = await pushdrop.lock(lockingScriptFields, protocolID ?? this.config.protocolID, Utils.toUTF8(Utils.toArray(key, 'utf8')), 'anyone', true);
145
- let inputs = [];
146
- let inputBEEF;
147
- if (existingToken != null) {
148
- inputs = [{
149
- outpoint: `${existingToken.txid}.${existingToken.outputIndex}`,
150
- unlockingScriptLength: 74,
151
- inputDescription: 'Previous KVStore token'
152
- }];
153
- inputBEEF = existingToken.beef;
154
- }
155
- if (inputs.length > 0) {
156
- // Update existing token
157
- const { signableTransaction } = await this.wallet.createAction({
158
- description: tokenUpdateDescription,
159
- inputBEEF: inputBEEF?.toBinary(),
160
- inputs,
161
- outputs: [{
162
- satoshis: tokenAmount ?? this.config.tokenAmount,
163
- lockingScript: lockingScript.toHex(),
164
- outputDescription: 'KVStore token'
165
- }],
166
- options: {
167
- acceptDelayedBroadcast: this.config.acceptDelayedBroadcast,
168
- randomizeOutputs: false
143
+ // Wrap entire operation in double-spend retry, including overlay query
144
+ const outpoint = await withDoubleSpendRetry(async () => {
145
+ // Re-query overlay on each attempt to get fresh token state
146
+ const existingEntries = await this.queryOverlay({ key, controller }, { includeToken: true });
147
+ const existingToken = existingEntries.length > 0 ? existingEntries[0].token : undefined;
148
+ if (existingToken != null) {
149
+ // Update existing token
150
+ const inputs = [{
151
+ outpoint: `${existingToken.txid}.${existingToken.outputIndex}`,
152
+ unlockingScriptLength: 74,
153
+ inputDescription: 'Previous KVStore token'
154
+ }];
155
+ const inputBEEF = existingToken.beef;
156
+ const { signableTransaction } = await this.wallet.createAction({
157
+ description: tokenUpdateDescription,
158
+ inputBEEF: inputBEEF.toBinary(),
159
+ inputs,
160
+ outputs: [{
161
+ satoshis: tokenAmount ?? this.config.tokenAmount,
162
+ lockingScript: lockingScript.toHex(),
163
+ outputDescription: 'KVStore token'
164
+ }],
165
+ options: {
166
+ acceptDelayedBroadcast: this.config.acceptDelayedBroadcast,
167
+ noSend: this.config.overlayBroadcast,
168
+ randomizeOutputs: false
169
+ }
170
+ }, this.config.originator);
171
+ if (signableTransaction == null) {
172
+ throw new Error('Unable to create update transaction');
169
173
  }
170
- }, this.config.originator);
171
- if (signableTransaction == null) {
172
- throw new Error('Unable to create update transaction');
173
- }
174
- const tx = Transaction.fromAtomicBEEF(signableTransaction.tx);
175
- const unlocker = pushdrop.unlock(this.config.protocolID, key, 'anyone');
176
- const unlockingScript = await unlocker.sign(tx, 0);
177
- const { tx: finalTx } = await this.wallet.signAction({
178
- reference: signableTransaction.reference,
179
- spends: { 0: { unlockingScript: unlockingScript.toHex() } }
180
- }, this.config.originator);
181
- if (finalTx == null) {
182
- throw new Error('Unable to finalize update transaction');
174
+ const tx = Transaction.fromAtomicBEEF(signableTransaction.tx);
175
+ const unlocker = pushdrop.unlock(this.config.protocolID, key, 'anyone');
176
+ const unlockingScript = await unlocker.sign(tx, 0);
177
+ const { tx: finalTx } = await this.wallet.signAction({
178
+ reference: signableTransaction.reference,
179
+ spends: { 0: { unlockingScript: unlockingScript.toHex() } },
180
+ options: {
181
+ acceptDelayedBroadcast: this.config.acceptDelayedBroadcast,
182
+ noSend: this.config.overlayBroadcast
183
+ }
184
+ }, this.config.originator);
185
+ if (finalTx == null) {
186
+ throw new Error('Unable to finalize update transaction');
187
+ }
188
+ const transaction = Transaction.fromAtomicBEEF(finalTx);
189
+ await this.submitToOverlay(transaction);
190
+ return `${transaction.id('hex')}.0`;
183
191
  }
184
- const transaction = Transaction.fromAtomicBEEF(finalTx);
185
- await this.submitToOverlay(transaction);
186
- return `${transaction.id('hex')}.0`;
187
- }
188
- else {
189
- // Create new token
190
- const { tx } = await this.wallet.createAction({
191
- description: tokenSetDescription,
192
- outputs: [{
193
- satoshis: tokenAmount ?? this.config.tokenAmount,
194
- lockingScript: lockingScript.toHex(),
195
- outputDescription: 'KVStore token'
196
- }],
197
- options: {
198
- acceptDelayedBroadcast: this.config.acceptDelayedBroadcast,
199
- randomizeOutputs: false
192
+ else {
193
+ // Create new token
194
+ const { tx } = await this.wallet.createAction({
195
+ description: tokenSetDescription,
196
+ outputs: [{
197
+ satoshis: tokenAmount ?? this.config.tokenAmount,
198
+ lockingScript: lockingScript.toHex(),
199
+ outputDescription: 'KVStore token'
200
+ }],
201
+ options: {
202
+ acceptDelayedBroadcast: this.config.acceptDelayedBroadcast,
203
+ noSend: this.config.overlayBroadcast,
204
+ randomizeOutputs: false
205
+ }
206
+ }, this.config.originator);
207
+ if (tx == null) {
208
+ throw new Error('Failed to create transaction');
200
209
  }
201
- }, this.config.originator);
202
- if (tx == null) {
203
- throw new Error('Failed to create transaction');
210
+ const transaction = Transaction.fromAtomicBEEF(tx);
211
+ await this.submitToOverlay(transaction);
212
+ return `${transaction.id('hex')}.0`;
204
213
  }
205
- const transaction = Transaction.fromAtomicBEEF(tx);
206
- await this.submitToOverlay(transaction);
207
- return `${transaction.id('hex')}.0`;
208
- }
214
+ }, this.topicBroadcaster);
215
+ return outpoint;
209
216
  }
210
217
  finally {
211
218
  if (lockQueue.length > 0) {
@@ -234,42 +241,53 @@ export class GlobalKVStore {
234
241
  const protocolID = options.protocolID ?? this.config.protocolID;
235
242
  const tokenRemovalDescription = (options.tokenRemovalDescription != null && options.tokenRemovalDescription !== '') ? options.tokenRemovalDescription : `Remove KVStore value for ${key}`;
236
243
  try {
237
- const existingEntries = await this.queryOverlay({ key, controller }, { includeToken: true });
238
- if (existingEntries.length === 0 || existingEntries[0].token == null) {
239
- throw new Error('The item did not exist, no item was deleted.');
240
- }
241
- const existingToken = existingEntries[0].token;
242
- const inputs = [{
243
- outpoint: `${existingToken.txid}.${existingToken.outputIndex}`,
244
- unlockingScriptLength: 74,
245
- inputDescription: 'KVStore token to remove'
246
- }];
247
244
  const pushdrop = new PushDrop(this.wallet, this.config.originator);
248
- const { signableTransaction } = await this.wallet.createAction({
249
- description: tokenRemovalDescription,
250
- inputBEEF: existingToken.beef.toBinary(),
251
- inputs,
252
- outputs,
253
- options: {
254
- acceptDelayedBroadcast: this.config.acceptDelayedBroadcast
245
+ // Remove token with double-spend retry
246
+ const txid = await withDoubleSpendRetry(async () => {
247
+ // Re-query overlay on each attempt to get fresh token state
248
+ const existingEntries = await this.queryOverlay({ key, controller }, { includeToken: true });
249
+ if (existingEntries.length === 0 || existingEntries[0].token == null) {
250
+ throw new Error('The item did not exist, no item was deleted.');
255
251
  }
256
- }, this.config.originator);
257
- if (signableTransaction == null) {
258
- throw new Error('Unable to create removal transaction');
259
- }
260
- const tx = Transaction.fromAtomicBEEF(signableTransaction.tx);
261
- const unlocker = pushdrop.unlock(protocolID ?? this.config.protocolID, key, 'anyone');
262
- const unlockingScript = await unlocker.sign(tx, 0);
263
- const { tx: finalTx } = await this.wallet.signAction({
264
- reference: signableTransaction.reference,
265
- spends: { 0: { unlockingScript: unlockingScript.toHex() } }
266
- }, this.config.originator);
267
- if (finalTx == null) {
268
- throw new Error('Unable to finalize removal transaction');
269
- }
270
- const transaction = Transaction.fromAtomicBEEF(finalTx);
271
- await this.submitToOverlay(transaction);
272
- return transaction.id('hex');
252
+ const existingToken = existingEntries[0].token;
253
+ const inputs = [{
254
+ outpoint: `${existingToken.txid}.${existingToken.outputIndex}`,
255
+ unlockingScriptLength: 74,
256
+ inputDescription: 'KVStore token to remove'
257
+ }];
258
+ const { signableTransaction } = await this.wallet.createAction({
259
+ description: tokenRemovalDescription,
260
+ inputBEEF: existingToken.beef.toBinary(),
261
+ inputs,
262
+ outputs,
263
+ options: {
264
+ acceptDelayedBroadcast: this.config.acceptDelayedBroadcast,
265
+ randomizeOutputs: false,
266
+ noSend: this.config.overlayBroadcast
267
+ }
268
+ }, this.config.originator);
269
+ if (signableTransaction == null) {
270
+ throw new Error('Unable to create removal transaction');
271
+ }
272
+ const tx = Transaction.fromAtomicBEEF(signableTransaction.tx);
273
+ const unlocker = pushdrop.unlock(protocolID ?? this.config.protocolID, key, 'anyone');
274
+ const unlockingScript = await unlocker.sign(tx, 0);
275
+ const { tx: finalTx } = await this.wallet.signAction({
276
+ reference: signableTransaction.reference,
277
+ spends: { 0: { unlockingScript: unlockingScript.toHex() } },
278
+ options: {
279
+ acceptDelayedBroadcast: this.config.acceptDelayedBroadcast,
280
+ noSend: this.config.overlayBroadcast
281
+ }
282
+ }, this.config.originator);
283
+ if (finalTx == null) {
284
+ throw new Error('Unable to finalize removal transaction');
285
+ }
286
+ const transaction = Transaction.fromAtomicBEEF(finalTx);
287
+ await this.submitToOverlay(transaction);
288
+ return transaction.id('hex');
289
+ }, this.topicBroadcaster);
290
+ return txid;
273
291
  }
274
292
  finally {
275
293
  if (lockQueue.length > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"GlobalKVStore.js","sourceRoot":"","sources":["../../../../src/kvstore/GlobalKVStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GlobalKVStore.js","sourceRoot":"","sources":["../../../../src/kvstore/GlobalKVStore.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/kvstore/types.ts"],"names":[],"mappings":"AAoHA,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,UAAU,EAAE,CAAC;IACb,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;IACR,UAAU,EAAE,CAAC;IACb,IAAI,EAAE,CAAC;IACP,SAAS,EAAE,CAAC,CAAC,4DAA4D;CAC1E,CAAA"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/kvstore/types.ts"],"names":[],"mappings":"AAsHA,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,UAAU,EAAE,CAAC;IACb,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;IACR,UAAU,EAAE,CAAC;IACb,IAAI,EAAE,CAAC;IACP,SAAS,EAAE,CAAC,CAAC,4DAA4D;CAC1E,CAAA"}
@@ -1,5 +1,6 @@
1
1
  export * from './LookupResolver.js';
2
2
  export * from './SHIPBroadcaster.js';
3
+ export * from './withDoubleSpendRetry.js';
3
4
  export { default as OverlayAdminTokenTemplate } from './OverlayAdminTokenTemplate.js';
4
5
  export { default as LookupResolver } from './LookupResolver.js';
5
6
  // For intuitive clarity, we name this the Topic Broadcaster.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/overlay-tools/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,sBAAsB,CAAA;AACpC,OAAO,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,gCAAgC,CAAA;AACrF,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAE/D,6DAA6D;AAC7D,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAClE,sDAAsD;AACtD,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACjE,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,sBAAsB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/overlay-tools/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,sBAAsB,CAAA;AACpC,cAAc,2BAA2B,CAAA;AACzC,OAAO,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,gCAAgC,CAAA;AACrF,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAE/D,6DAA6D;AAC7D,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAClE,sDAAsD;AACtD,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACjE,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,sBAAsB,CAAA"}
@@ -0,0 +1,48 @@
1
+ import Transaction from '../transaction/Transaction.js';
2
+ /**
3
+ * Maximum number of retry attempts for double-spend resolution
4
+ */
5
+ const MAX_DOUBLE_SPEND_RETRIES = 5;
6
+ /**
7
+ * Executes an operation with automatic retry logic for double-spend errors.
8
+ * When a double-spend is detected, broadcasts the competing transaction to
9
+ * update the overlay with missing state, then retries the operation.
10
+ *
11
+ * @param operation - The async operation to execute (e.g., createAction + signAction)
12
+ * @param broadcaster - The TopicBroadcaster to use for syncing missing state
13
+ * @param maxRetries - Maximum number of retry attempts (default: MAX_DOUBLE_SPEND_RETRIES)
14
+ * @returns The result of the successful operation
15
+ * @throws If max retries exceeded or non-double-spend error occurs
16
+ */
17
+ export async function withDoubleSpendRetry(operation, broadcaster, maxRetries = MAX_DOUBLE_SPEND_RETRIES) {
18
+ let attempts = 0;
19
+ while (attempts < maxRetries) {
20
+ attempts++;
21
+ try {
22
+ return await operation();
23
+ }
24
+ catch (error) {
25
+ // Only handle double-spend errors on non-final attempts
26
+ if (attempts < maxRetries && error.name === 'WERR_REVIEW_ACTIONS') {
27
+ const reviewError = error;
28
+ // Check if any action in the batch has a double-spend
29
+ const doubleSpendResult = reviewError.reviewActionResults.find((result) => result.status === 'doubleSpend');
30
+ if (doubleSpendResult?.competingBeef != null &&
31
+ doubleSpendResult?.competingTxs != null &&
32
+ doubleSpendResult?.competingTxs.length > 0) {
33
+ const competingTx = Transaction.fromBEEF(doubleSpendResult.competingBeef, doubleSpendResult.competingTxs[0]);
34
+ // Recursively handle double-spend errors during broadcast
35
+ // The broadcast itself might fail if the competing tx depends on another missing tx
36
+ await withDoubleSpendRetry(async () => await broadcaster.broadcast(competingTx), broadcaster, maxRetries - attempts // Reduce max retries based on attempts already used
37
+ );
38
+ continue;
39
+ }
40
+ }
41
+ // Non-double-spend error or max retries exceeded - rethrow
42
+ throw error;
43
+ }
44
+ }
45
+ // This should never be reached, but TypeScript requires it
46
+ throw new Error('Unexpected end of retry loop');
47
+ }
48
+ //# sourceMappingURL=withDoubleSpendRetry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"withDoubleSpendRetry.js","sourceRoot":"","sources":["../../../../src/overlay-tools/withDoubleSpendRetry.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,+BAA+B,CAAA;AAKvD;;GAEG;AACH,MAAM,wBAAwB,GAAG,CAAC,CAAA;AAElC;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,SAA2B,EAC3B,WAA6B,EAC7B,aAAqB,wBAAwB;IAE7C,IAAI,QAAQ,GAAG,CAAC,CAAA;IAEhB,OAAO,QAAQ,GAAG,UAAU,EAAE;QAC5B,QAAQ,EAAE,CAAA;QAEV,IAAI;YACF,OAAO,MAAM,SAAS,EAAE,CAAA;SACzB;QAAC,OAAO,KAAK,EAAE;YACd,wDAAwD;YACxD,IAAI,QAAQ,GAAG,UAAU,IAAI,KAAK,CAAC,IAAI,KAAK,qBAAqB,EAAE;gBACjE,MAAM,WAAW,GAAG,KAA4B,CAAA;gBAEhD,sDAAsD;gBACtD,MAAM,iBAAiB,GAAG,WAAW,CAAC,mBAAmB,CAAC,IAAI,CAC5D,CAAC,MAA0B,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,aAAa,CAChE,CAAA;gBAED,IAAI,iBAAiB,EAAE,aAAa,IAAI,IAAI;oBAC1C,iBAAiB,EAAE,YAAY,IAAI,IAAI;oBACvC,iBAAiB,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC5C,MAAM,WAAW,GAAG,WAAW,CAAC,QAAQ,CACtC,iBAAiB,CAAC,aAAa,EAC/B,iBAAiB,CAAC,YAAY,CAAC,CAAC,CAAC,CAClC,CAAA;oBAED,0DAA0D;oBAC1D,oFAAoF;oBACpF,MAAM,oBAAoB,CACxB,KAAK,IAAI,EAAE,CAAC,MAAM,WAAW,CAAC,SAAS,CAAC,WAAW,CAAC,EACpD,WAAW,EACX,UAAU,GAAG,QAAQ,CAAC,oDAAoD;qBAC3E,CAAA;oBAED,SAAQ;iBACT;aACF;YAED,2DAA2D;YAC3D,MAAM,KAAK,CAAA;SACZ;KACF;IAED,2DAA2D;IAC3D,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;AACjD,CAAC"}