hodl-wallet 2.2.0 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/README.md +10 -10
  2. package/dist/app/format.d.ts +3 -1
  3. package/dist/app/format.js +11 -5
  4. package/dist/app/format.js.map +1 -1
  5. package/dist/app/history.d.ts +48 -0
  6. package/dist/app/history.js +115 -0
  7. package/dist/app/history.js.map +1 -0
  8. package/dist/app/index.d.ts +7 -3
  9. package/dist/app/index.js +3 -1
  10. package/dist/app/index.js.map +1 -1
  11. package/dist/app/menu.d.ts +1 -0
  12. package/dist/app/menu.js +22 -7
  13. package/dist/app/menu.js.map +1 -1
  14. package/dist/app/output.d.ts +3 -1
  15. package/dist/app/output.js +30 -4
  16. package/dist/app/output.js.map +1 -1
  17. package/dist/app/session.d.ts +20 -0
  18. package/dist/app/swap.d.ts +5 -0
  19. package/dist/app/swap.js +274 -0
  20. package/dist/app/swap.js.map +1 -0
  21. package/dist/app/ui.d.ts +13 -0
  22. package/dist/app/ui.js.map +1 -1
  23. package/dist/browser-core.d.ts +5 -1
  24. package/dist/browser-core.js +4 -1
  25. package/dist/browser-core.js.map +1 -1
  26. package/dist/config.d.ts +11 -0
  27. package/dist/config.js +12 -0
  28. package/dist/config.js.map +1 -0
  29. package/dist/hodl-file.d.ts +31 -0
  30. package/dist/hodl-file.js +78 -0
  31. package/dist/hodl-file.js.map +1 -0
  32. package/dist/network/abis/erc20.d.ts +35 -13
  33. package/dist/network/abis/erc20.js +6 -26
  34. package/dist/network/abis/erc20.js.map +1 -1
  35. package/dist/network/arb.d.ts +5 -0
  36. package/dist/network/arb.js +5 -0
  37. package/dist/network/arb.js.map +1 -1
  38. package/dist/network/avax.d.ts +6 -0
  39. package/dist/network/avax.js +6 -0
  40. package/dist/network/avax.js.map +1 -1
  41. package/dist/network/bsc.d.ts +6 -0
  42. package/dist/network/bsc.js +6 -0
  43. package/dist/network/bsc.js.map +1 -1
  44. package/dist/network/eth.d.ts +6 -0
  45. package/dist/network/eth.js +6 -0
  46. package/dist/network/eth.js.map +1 -1
  47. package/dist/network/ftm.d.ts +6 -0
  48. package/dist/network/ftm.js +6 -0
  49. package/dist/network/ftm.js.map +1 -1
  50. package/dist/network/lib/BitcoinNetwork.d.ts +3 -1
  51. package/dist/network/lib/BitcoinNetwork.js +58 -13
  52. package/dist/network/lib/BitcoinNetwork.js.map +1 -1
  53. package/dist/network/lib/Web3Network.d.ts +10 -4
  54. package/dist/network/lib/Web3Network.js +141 -73
  55. package/dist/network/lib/Web3Network.js.map +1 -1
  56. package/dist/network/op.d.ts +5 -0
  57. package/dist/network/op.js +5 -0
  58. package/dist/network/op.js.map +1 -1
  59. package/dist/network/pol.d.ts +6 -0
  60. package/dist/network/pol.js +6 -0
  61. package/dist/network/pol.js.map +1 -1
  62. package/dist/network/types.d.ts +35 -0
  63. package/dist/network-registry.d.ts +6 -1
  64. package/dist/network-registry.js +28 -0
  65. package/dist/network-registry.js.map +1 -1
  66. package/dist/node-session.d.ts +3 -1
  67. package/dist/node-session.js +26 -77
  68. package/dist/node-session.js.map +1 -1
  69. package/dist/persist.d.ts +10 -9
  70. package/dist/persist.js +56 -101
  71. package/dist/persist.js.map +1 -1
  72. package/dist/request.d.ts +7 -0
  73. package/dist/request.js +26 -0
  74. package/dist/request.js.map +1 -0
  75. package/dist/swap/bitcoin.d.ts +1 -1
  76. package/dist/swap/bitcoin.js +7 -6
  77. package/dist/swap/bitcoin.js.map +1 -1
  78. package/dist/swap/chain.js +25 -40
  79. package/dist/swap/chain.js.map +1 -1
  80. package/dist/swap/config.d.ts +12 -0
  81. package/dist/swap/config.js +6 -0
  82. package/dist/swap/config.js.map +1 -1
  83. package/dist/swap/http.d.ts +2 -1
  84. package/dist/swap/http.js +8 -4
  85. package/dist/swap/http.js.map +1 -1
  86. package/dist/swap/providers.d.ts +15 -0
  87. package/dist/swap/providers.js +187 -1
  88. package/dist/swap/providers.js.map +1 -1
  89. package/dist/swap/routes.d.ts +28 -0
  90. package/dist/swap/routes.js +5 -3
  91. package/dist/swap/routes.js.map +1 -1
  92. package/dist/swap/service.d.ts +2 -1
  93. package/dist/swap/service.js +16 -5
  94. package/dist/swap/service.js.map +1 -1
  95. package/dist/swap/types.d.ts +3 -1
  96. package/dist/swap/types.js.map +1 -1
  97. package/dist/transfer-service.js +1 -2
  98. package/dist/transfer-service.js.map +1 -1
  99. package/dist/ui-inquirer.d.ts +8 -1
  100. package/dist/ui-inquirer.js +45 -10
  101. package/dist/ui-inquirer.js.map +1 -1
  102. package/dist/wallet-store.d.ts +2 -1
  103. package/package.json +13 -14
  104. package/dist/swap/ui.d.ts +0 -3
  105. package/dist/swap/ui.js +0 -257
  106. package/dist/swap/ui.js.map +0 -1
@@ -2,19 +2,15 @@ import fs from 'fs';
2
2
  import os from 'os';
3
3
  import path from 'path';
4
4
  import Persist from './persist.js';
5
+ import { walletConfig } from './config.js';
5
6
  import { TransferService } from './transfer-service.js';
6
- import { NetworkRegistry, networkStorageName } from './network-registry.js';
7
+ import { NetworkRegistry, byRecentUse, isNetworkUsageEntry, networkStorageName, recordNetworkUse } from './network-registry.js';
7
8
  import { SwapService } from './swap/service.js';
8
9
  import { routeForNetwork } from './swap/routes.js';
9
- import { startSwapMenu } from './swap/ui.js';
10
10
  import { errorMessage } from './app/format.js';
11
11
  import { showError } from './app/output.js';
12
- function isNetworkUsageEntry(value) {
13
- return (typeof value === 'object' &&
14
- value !== null &&
15
- !Array.isArray(value) &&
16
- typeof value.count === 'number');
17
- }
12
+ import { swapMenu } from './app/swap.js';
13
+ import { isTransferSnapshot, recentTransferRows, recordedTransferKeys, rescanTransfers, sentTransfers } from './app/history.js';
18
14
  async function askEncryptionKey(ui) {
19
15
  return ui.password({ message: 'Password:' });
20
16
  }
@@ -91,43 +87,10 @@ export class NodeSession {
91
87
  }
92
88
  /** Most recently used first. */
93
89
  networks() {
94
- return new NetworkRegistry().list().sort((a, b) => {
95
- const aUsage = this.networkUsage[networkStorageName(a)];
96
- const bUsage = this.networkUsage[networkStorageName(b)];
97
- // Handle old format (number) vs new format (object)
98
- const aLastUsed = typeof aUsage === 'object' ? aUsage.lastUsed || 0 : 0;
99
- const bLastUsed = typeof bUsage === 'object' ? bUsage.lastUsed || 0 : 0;
100
- // If neither has lastUsed timestamp, sort by old count format
101
- if (aLastUsed === 0 && bLastUsed === 0) {
102
- const aCount = typeof aUsage === 'number' ? aUsage : (aUsage?.count || 0);
103
- const bCount = typeof bUsage === 'number' ? bUsage : (bUsage?.count || 0);
104
- return bCount - aCount;
105
- }
106
- return bLastUsed - aLastUsed;
107
- });
90
+ return byRecentUse(new NetworkRegistry().list(), this.networkUsage);
108
91
  }
109
92
  async selectNetwork(selectedNetwork) {
110
- // Update usage info for the selected network
111
- // Handle migration from old format (number) to new format (object)
112
- const currentUsage = this.networkUsage[networkStorageName(selectedNetwork)];
113
- if (!currentUsage || typeof currentUsage === 'number' || typeof currentUsage !== 'object' || currentUsage === null || Array.isArray(currentUsage)) {
114
- // Old format (number), doesn't exist, or corrupted data - create new object
115
- this.networkUsage[networkStorageName(selectedNetwork)] = {
116
- count: typeof currentUsage === 'number' ? currentUsage + 1 : 1,
117
- lastUsed: Date.now()
118
- };
119
- }
120
- else if (isNetworkUsageEntry(currentUsage)) {
121
- // New format (object) - update values
122
- currentUsage.count = (currentUsage.count || 0) + 1;
123
- currentUsage.lastUsed = Date.now();
124
- }
125
- else {
126
- this.networkUsage[networkStorageName(selectedNetwork)] = {
127
- count: 1,
128
- lastUsed: Date.now()
129
- };
130
- }
93
+ recordNetworkUse(this.networkUsage, selectedNetwork);
131
94
  await this.db.set('networkUsage', this.networkUsage);
132
95
  this.selectedNetwork = selectedNetwork;
133
96
  this.networkInstance = new selectedNetwork.NetworkClass(selectedNetwork);
@@ -195,38 +158,24 @@ export class NodeSession {
195
158
  }
196
159
  async sentTransfers() {
197
160
  const address = await this.address();
198
- const history = await this.db.values('transactions', address, this.selectedNetwork.nativeToken) || [];
199
- const legacyHistoryKey = this.selectedNetwork.id === 'op'
200
- ? 'OP'
201
- : this.selectedNetwork.id === 'arb'
202
- ? 'ARB'
203
- : null;
204
- if (legacyHistoryKey) {
205
- const legacyHistory = await this.db.values('transactions', address, legacyHistoryKey) || [];
206
- history.push(...legacyHistory);
207
- history.sort((a, b) => a.timestamp.localeCompare(b.timestamp));
208
- }
209
- const transfers = await this.transferService().list();
210
- for (const transfer of transfers.filter(item => item.from === address)) {
211
- const existing = history.find(item => item.hash === transfer.transactionHash);
212
- if (existing)
213
- existing.status = transfer.status;
214
- else
215
- history.push({
216
- timestamp: transfer.createdAt, recipient: transfer.to, token: transfer.asset,
217
- amount: transfer.amount, hash: transfer.transactionHash, status: transfer.status
218
- });
161
+ const recorded = [];
162
+ for (const key of recordedTransferKeys(this.selectedNetwork)) {
163
+ recorded.push(...await this.db.values('transactions', address, key));
219
164
  }
220
- history.sort((a, b) => a.timestamp.localeCompare(b.timestamp));
221
- const sent = [];
222
- for (const tx of history) {
223
- sent.push({
224
- timestamp: tx.timestamp, recipient: tx.recipient, contact: await this.contactName(tx.recipient),
225
- token: tx.token, amount: tx.amount, balance: tx.balance, status: tx.status,
226
- url: this.selectedNetwork.explorer + tx.hash
227
- });
228
- }
229
- return sent;
165
+ return sentTransfers(this.selectedNetwork, address, recorded, await this.transferService().list(), recipient => this.contactName(recipient));
166
+ }
167
+ /** Saved under `chainTransfers`, then the address and the network's storage name. */
168
+ async recentTransfers() {
169
+ const address = await this.address();
170
+ // Deepbase reads a missing key as null.
171
+ const saved = await this.db.get('chainTransfers', address, this.storageNetworkName) ?? undefined;
172
+ if (saved !== undefined && !isTransferSnapshot(saved))
173
+ throw new Error('Invalid saved transfers.');
174
+ const { snapshot, error } = await rescanTransfers(saved, cursor => this.network.recentTransfers(address, walletConfig.history.recentTransfers, cursor));
175
+ if (!error && snapshot)
176
+ await this.db.set('chainTransfers', address, this.storageNetworkName, snapshot);
177
+ const transfers = await recentTransferRows(this.selectedNetwork, snapshot?.transfers ?? [], contact => this.contactName(contact));
178
+ return { transfers, ...(error ? { error } : {}) };
230
179
  }
231
180
  importActions() {
232
181
  return [{ name: 'Import HODL File', run: ui => this.importHODLFile(ui) }];
@@ -235,7 +184,7 @@ export class NodeSession {
235
184
  return [{ name: 'Export HODL File', run: ui => this.exportHODLFile(ui) }];
236
185
  }
237
186
  menuActions() {
238
- return routeForNetwork(this.selectedNetwork.id) ? [{ name: 'Swap', run: () => this.swapFunds() }] : [];
187
+ return routeForNetwork(this.selectedNetwork.id) ? [{ name: 'Swap', run: ui => this.swapFunds(ui) }] : [];
239
188
  }
240
189
  async close() {
241
190
  try {
@@ -306,11 +255,11 @@ export class NodeSession {
306
255
  await this.db.add('transactions', address, this.selectedNetwork.nativeToken, transaction);
307
256
  }
308
257
  }
309
- async swapFunds() {
258
+ async swapFunds(ui) {
310
259
  const route = routeForNetwork(this.selectedNetwork.id);
311
260
  if (!route)
312
261
  throw new Error('No swap route for the selected network.');
313
- await startSwapMenu(new SwapService(this.db, { routeId: route.id }));
262
+ await swapMenu(ui, new SwapService(this.db, { routeId: route.id }));
314
263
  }
315
264
  securePersistFile() {
316
265
  const persistPath = path.join(this.hodlDir, 'persist.json');
@@ -1 +1 @@
1
- {"version":3,"file":"node-session.js","sourceRoot":"","sources":["../node-session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"node-session.js","sourceRoot":"","sources":["../node-session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEhI,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,eAAe,EAAE,aAAa,EAAyB,MAAM,kBAAkB,CAAC;AAiBvJ,KAAK,UAAU,gBAAgB,CAAC,EAAM;IAClC,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;AACjD,CAAC;AAED,qGAAqG;AACrG,MAAM,OAAO,WAAW;IACX,YAAY,GAAwB,EAAE,cAAc,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,CAAC;IAC9G,SAAS,CAAe;IACxB,QAAQ,CAAe;IAExB,EAAE,CAAU;IACZ,eAAe,CAAgB;IAC/B,eAAe,CAAsB;IACrC,YAAY,CAAe;IAClB,eAAe,CAAU;IACzB,WAAW,CAAc;IACzB,OAAO,CAAS;IAEjC,YAAY,aAAqB,EAAE,WAAwB;QACvD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1B,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC5D,CAAC;QACD,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAE7B,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC;QACzE,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC;YACD,IAAI,CAAC,EAAE,GAAG,IAAI,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;QAC5D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YAC3B,MAAM,KAAK,CAAC;QAChB,CAAC;QAED,IAAI,CAAC,eAAe,GAAG,IAAsC,CAAC;QAC9D,IAAI,CAAC,eAAe,GAAG,IAAgC,CAAC;QACxD,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACrC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;IACxC,CAAC;IAED,IAAI,MAAM,KAAoB,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;IAC5D,IAAI,OAAO,KAA0B,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;IAEnE,KAAK,CAAC,OAAO;QACT,MAAM,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC7B,CAAC;IAED,iBAAiB;QACb,OAAO,IAAI,CAAC,eAAe,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,KAAK;QACP,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;QAEhE,uCAAuC;QACvC,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QACvB,KAAK,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;YACjE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC5B,qCAAqC;gBACrC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG;oBAC7B,KAAK,EAAE,KAAK;oBACZ,QAAQ,EAAE,CAAC;iBACd,CAAC;YACN,CAAC;iBAAM,IAAI,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpC,mBAAmB;gBACnB,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG;oBAC7B,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,CAAC;iBAChC,CAAC;YACN,CAAC;YACD,4DAA4D;QAChE,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QACvC,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACvD,CAAC;QACD,iCAAiC;QACjC,MAAM,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,gCAAgC;IAChC,QAAQ;QACJ,OAAO,WAAW,CAAC,IAAI,eAAe,EAAE,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,eAA8B;QAC9C,gBAAgB,CAAC,IAAI,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;QACrD,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAErD,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;QACzE,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC;IACrD,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,OAA6B;QAClD,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,OAAO;QACX,CAAC;QAED,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACrE,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QACpD,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,UAAU;QACpB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAE5E,OAAO,OAAO,IAAI,IAAI,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,OAAO;QACT,OAAO,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC5E,CAAC;IAEO,KAAK,CAAC,WAAW;QACrB,OAAO,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,WAAW;QACb,OAAO,OAAO,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,UAAU;QACZ,OAAO,OAAO,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAC3B,SAAS,EACT,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,EAC7B,SAAS,CACZ,KAAK,QAAQ,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,IAAgB;QAChC,IAAI,IAAI,KAAK,mBAAmB,EAAE,CAAC;YAC/B,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAE,CAAC,CAAC,CAAC;QAC/F,CAAC;aAAM,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC3B,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;QAC9D,CAAC;aAAM,CAAC;YACJ,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9E,CAAC;IACL,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,QAAgB;QACjC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QACjE,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC/B,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,UAAkB;QACrC,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,KAAK,CAAC,cAAc;QAChB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACxC,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAC1B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAC1C,MAAM,OAAO,GAAG;YACZ,OAAO,EAAE,MAAM,IAAI,CAAC,OAAO,EAAE;YAC7B,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACpC,CAAC;QACF,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACpC,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,aAAa;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,KAAK,CAAC,aAAa;QACf,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAuB,EAAE,CAAC;QACxC,KAAK,MAAM,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;YAC3D,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,cAAc,EAAE,OAAO,EAAE,GAAG,CAAuB,CAAC,CAAC;QAC/F,CAAC;QACD,OAAO,aAAa,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,EAAE,EAC7F,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,qFAAqF;IACrF,KAAK,CAAC,eAAe;QACjB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACrC,wCAAwC;QACxC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,gBAAgB,EAAE,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,SAAS,CAAC;QACjG,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QACnG,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,MAAM,eAAe,CAAC,KAAK,EACnD,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,eAAgB,CAAC,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC;QACpG,IAAI,CAAC,KAAK,IAAI,QAAQ;YAAE,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,gBAAgB,EAAE,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;QACxG,MAAM,SAAS,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,eAAe,EAAE,QAAQ,EAAE,SAAS,IAAI,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;QAClI,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IACtD,CAAC;IAED,aAAa;QACT,OAAO,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,aAAa;QACT,OAAO,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,WAAW;QACP,OAAO,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7G,CAAC;IAED,KAAK,CAAC,KAAK;QACP,IAAI,CAAC;YACD,MAAM,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;QAC5B,CAAC;gBAAS,CAAC;YACP,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;QAC/B,CAAC;IACL,CAAC;IAED,IAAY,kBAAkB,KAAa,OAAO,kBAAkB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAErF,eAAe;QACnB,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5E,CAAC;IAEO,YAAY;QAChB,OAAO;YACH,OAAO,EAAE,KAAK,IAAgC,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,EAAE,CAAC;iBACjF,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;iBACtE,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;gBACd,SAAS,EAAE,QAAQ,CAAC,SAAU,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK;gBACtE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM;aACnD,CAAC,CAAC;YACP,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;gBAC7B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gBACjH,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;YACxD,CAAC;YACD,IAAI,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC;gBACpD,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK;aACtG,CAAC;YACF,MAAM,EAAE,KAAK,EAAE,MAAsB,EAAE,KAAoB,EAAyB,EAAE;gBAClF,MAAM,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;gBACtF,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;gBACpG,OAAO;oBACH,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;oBACrF,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO;oBAClD,GAAG,EAAE,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,MAAM,CAAC,eAAe;iBAC9D,CAAC;YACN,CAAC;SACJ,CAAC;IACN,CAAC;IAEO,YAAY;QAChB,OAAO;YACH,IAAI,EAAE,KAAK,IAAwB,EAAE;gBACjC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;gBACjF,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAA0B,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YACtG,CAAC;YACD,GAAG,EAAE,KAAK,EAAC,OAAO,EAAC,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,kBAAkB,EAAE,OAAO,CAA+B,CAAA,EAAE,IAAI;YACzH,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,kBAAkB,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;YAC/G,MAAM,EAAE,KAAK,EAAC,OAAO,EAAC,EAAE,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;YAC5F,KAAK,EAAE,KAAK,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;SACvD,CAAC;IACN,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,OAAe;QACrC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAC3B,SAAiB,EACjB,KAAa,EACb,MAAc,EACd,IAAY,EACZ,OAAe;QAEf,MAAM,WAAW,GAAG;YAChB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,SAAS;YACT,KAAK;YACL,MAAM;YACN,IAAI;YACJ,OAAO;SACV,CAAC;QACF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,cAAc,EAAE,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,WAAW,CAAuB,IAAI,EAAE,CAAC;QAC5H,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,cAAc,EAAE,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QAC9F,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,EAAM;QAC1B,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QACvE,MAAM,QAAQ,CAAC,EAAE,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACxE,CAAC;IAEO,iBAAiB;QACrB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAC5D,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAC7B,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QACrC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,EAAM;QAC/B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACrC,MAAM,eAAe,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QAC7D,IAAI,QAAQ,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC;YAC1B,OAAO,EAAE,mCAAmC;YAC5C,OAAO,EAAE,eAAe;SAC3B,CAAC,CAAC;QAEH,QAAQ,IAAI,OAAO,CAAC;QAEpB,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC,EAAE,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,aAAa,CAAC,EAAE,CAAC;YAC1C,SAAS,CAAC,EAAE,EAAE,6BAA6B,EAAE,4BAA4B,CAAC,CAAC;YAC3E,OAAO;QACX,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;QACjC,IAAI,CAAC;YACD,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;YAC3D,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;QAC9C,CAAC;gBAAS,CAAC;YACP,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;QAED,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,oBAAoB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,kBAAkB,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACtG,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,EAAM;QAC/B,yCAAyC;QACzC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QACjC,IAAI,SAAS,GAAa,EAAE,CAAC;QAE7B,IAAI,CAAC;YACD,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YACzC,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;QAC7D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;QACnE,CAAC;QAED,6CAA6C;QAC7C,MAAM,WAAW,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACvC,IAAI,EAAE,IAAI;YACV,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC;SACrC,CAAC,CAAC,CAAC;QAEJ,oDAAoD;QACpD,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,YAAY,CAAC;YACnC,OAAO,EAAE,iBAAiB;YAC1B,MAAM,EAAE,KAAK,CAAC,EAAE;gBACZ,MAAM,eAAe,GAAG,WAAW;qBAC9B,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;qBAClI,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;oBACX,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,KAAK,EAAE,KAAK,CAAC,KAAK;iBACrB,CAAC,CAAC,CAAC;gBAER,mEAAmE;gBACnE,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,GAAG,eAAe,CAAC,CAAC;YAC/D,CAAC;SACJ,CAAC,CAAC;QAEH,2CAA2C;QAC3C,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACtC,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,yBAAyB;QACzB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9B,SAAS,CAAC,EAAE,EAAE,gCAAgC,CAAC,CAAC;YAChD,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3B,SAAS,CAAC,EAAE,EAAE,iBAAiB,CAAC,CAAC;YACjC,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,MAAM,aAAa,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACxD,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,aAAa,CAAC,EAAE,CAAC;YAC1C,SAAS,CAAC,EAAE,EAAE,wBAAwB,EAAE,6DAA6D,CAAC,CAAC;YACvG,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC,EAAE,CAAC,CAAC;QAEjD,IAAI,YAAqB,CAAC;QAE1B,IAAI,CAAC;YACD,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;YAC7D,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAChC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;YACxC,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;YACpC,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,SAAS,CAAC,EAAE,EAAE,6BAA6B,EAAE,4BAA4B,CAAC,CAAC;YAC3E,OAAO,KAAK,CAAC;QACjB,CAAC;gBAAS,CAAC;YACP,OAAO,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;QAC7C,CAAC;IACL,CAAC;CACJ"}
package/dist/persist.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import Deepbase from 'deepbase';
2
+ import type { ConnectResult } from 'deepbase';
2
3
  import type { WalletStore } from './wallet-store.js';
3
4
  type PersistOptions = {
4
5
  path: string;
@@ -7,31 +8,31 @@ type PersistOptions = {
7
8
  type EncryptionKey = string | Buffer;
8
9
  declare class Persist extends Deepbase implements WalletStore {
9
10
  private readonly encryptionKey;
10
- private readonly memoryKey;
11
+ private readonly legacy;
11
12
  private disposed;
12
13
  private readonly storagePath;
13
14
  constructor(opts: PersistOptions);
15
+ /** Opens the profile, rejecting a wrong password, and rewrites one saved before the encrypted document format. */
16
+ connect(): Promise<ConnectResult>;
14
17
  flush(): Promise<void>;
15
18
  /** Whether the password is the one this profile is encrypted with. */
16
19
  matchesPassword(password: string): boolean;
17
20
  dispose(): Promise<void>;
18
21
  static clearSensitiveData(value: unknown): void;
22
+ /** A .HODL file in the current format, v3. */
19
23
  static encrypt(obj: unknown, encryptionKey: EncryptionKey): string;
24
+ private static isLegacyProfile;
25
+ /** Whether the text is a v2 or v3 .HODL file. */
20
26
  static isCurrentFormat(encryptedData: string): boolean;
21
- /** Only the current format. Profiles saved before it are read with decryptProfile. */
27
+ /** A v2 or v3 .HODL file. Profiles saved before v2 are read with decryptProfile. */
22
28
  static decrypt(encryptedData: string, encryptionKey: EncryptionKey): unknown;
23
- /** The stored profile, migrating one saved in the legacy format; it is rewritten as v2 on the next save. */
29
+ private static fileKey;
30
+ /** A profile saved as a v2 or older string, before the encrypted document format. */
24
31
  static decryptProfile(encryptedData: string, encryptionKey: EncryptionKey): unknown;
25
32
  static decryptLegacy(encryptedData: string, encryptionKey: EncryptionKey): unknown;
26
33
  static evpBytesToKey(password: Buffer, salt: Buffer, keyLen: number, ivLen: number): {
27
34
  key: Buffer;
28
35
  iv: Buffer;
29
36
  };
30
- private static transformSecrets;
31
- private static isSensitivePath;
32
- private static isRecord;
33
- private static isSealedSecret;
34
- private static sealSecret;
35
- private static unsealSecret;
36
37
  }
37
38
  export default Persist;
package/dist/persist.js CHANGED
@@ -1,34 +1,55 @@
1
1
  import Deepbase from 'deepbase';
2
+ import { encryptedDocument } from 'deepbase/plugins/encryption';
2
3
  import crypto from 'node:crypto';
3
4
  import fs from 'node:fs';
4
5
  import path from 'node:path';
5
- import { clearSensitiveData, isSensitiveField } from './sensitive-data.js';
6
+ import { HODL_FILE_IV_BYTES, HODL_FILE_KEY_BYTES, HODL_FILE_SALT_BYTES, HODL_FILE_SCRYPT, formatHodlFile, hodlFileHeader, isHodlFile, parseHodlFile, scryptMemory } from './hodl-file.js';
7
+ import { clearSensitiveData } from './sensitive-data.js';
6
8
  const ALGORITHM = 'aes-256-gcm';
7
9
  const KEY_LENGTH = 32;
8
- const IV_LENGTH = 12;
9
- const SALT_LENGTH = 16;
10
- const SEALED_SECRET_VERSION = 1;
11
10
  class Persist extends Deepbase {
12
11
  encryptionKey;
13
- memoryKey;
12
+ legacy;
14
13
  disposed = false;
15
14
  storagePath;
16
15
  constructor(opts) {
17
16
  const encryptionKey = Buffer.from(opts.encryptionKey, 'utf8');
18
- const memoryKey = crypto.randomBytes(KEY_LENGTH);
17
+ const legacy = {};
19
18
  opts.encryptionKey = '';
20
19
  super({
21
20
  name: 'persist',
22
21
  path: opts.path,
23
- stringify: (obj) => Persist.encrypt(obj, encryptionKey),
24
- parse: (encryptedData) => Persist.decryptProfile(encryptedData, encryptionKey),
25
- encodeForMemory: (value, path) => Persist.transformSecrets(value, path, secret => Persist.sealSecret(secret, memoryKey)),
26
- decodeFromMemory: (value, path) => Persist.transformSecrets(value, path, secret => Persist.unsealSecret(secret, memoryKey))
22
+ parse: (text) => {
23
+ if (!Persist.isLegacyProfile(text))
24
+ return JSON.parse(text);
25
+ legacy.profile = Persist.decryptProfile(text, encryptionKey);
26
+ return {};
27
+ }
27
28
  });
29
+ this.use(encryptedDocument({ password: encryptionKey }));
28
30
  this.encryptionKey = encryptionKey;
29
- this.memoryKey = memoryKey;
31
+ this.legacy = legacy;
30
32
  this.storagePath = opts.path;
31
33
  }
34
+ /** Opens the profile, rejecting a wrong password, and rewrites one saved before the encrypted document format. */
35
+ async connect() {
36
+ const result = await super.connect();
37
+ const { profile } = this.legacy;
38
+ delete this.legacy.profile;
39
+ if (profile === undefined) {
40
+ clearSensitiveData(await this.get());
41
+ }
42
+ else {
43
+ try {
44
+ await this.set(profile);
45
+ await this.flush();
46
+ }
47
+ finally {
48
+ clearSensitiveData(profile);
49
+ }
50
+ }
51
+ return result;
52
+ }
32
53
  async flush() {
33
54
  const descriptor = fs.openSync(path.join(this.storagePath, 'persist.json'), 'r');
34
55
  try {
@@ -65,54 +86,53 @@ class Persist extends Deepbase {
65
86
  }
66
87
  finally {
67
88
  this.encryptionKey.fill(0);
68
- this.memoryKey.fill(0);
69
89
  this.disposed = true;
70
90
  }
71
91
  }
72
92
  static clearSensitiveData(value) {
73
93
  clearSensitiveData(value);
74
94
  }
95
+ /** A .HODL file in the current format, v3. */
75
96
  static encrypt(obj, encryptionKey) {
76
- const salt = crypto.randomBytes(SALT_LENGTH);
77
- const iv = crypto.randomBytes(IV_LENGTH);
78
- const key = crypto.scryptSync(encryptionKey, salt, KEY_LENGTH);
97
+ const salt = crypto.randomBytes(HODL_FILE_SALT_BYTES);
98
+ const iv = crypto.randomBytes(HODL_FILE_IV_BYTES);
99
+ const header = hodlFileHeader(salt);
100
+ const key = Persist.fileKey(encryptionKey, salt, HODL_FILE_SCRYPT);
79
101
  let serialized;
80
102
  try {
81
103
  serialized = Buffer.from(JSON.stringify(obj), 'utf8');
82
104
  const cipher = crypto.createCipheriv(ALGORITHM, key, iv);
105
+ cipher.setAAD(Buffer.from(header, 'utf8'));
83
106
  const encrypted = Buffer.concat([
84
107
  cipher.update(serialized),
85
108
  cipher.final()
86
109
  ]);
87
- const authTag = cipher.getAuthTag();
88
- return `v2:${salt.toString('hex')}:${iv.toString('hex')}:${authTag.toString('hex')}:${encrypted.toString('hex')}`;
110
+ return formatHodlFile(header, iv, cipher.getAuthTag(), encrypted);
89
111
  }
90
112
  finally {
91
113
  key.fill(0);
92
114
  serialized?.fill(0);
93
115
  }
94
116
  }
117
+ static isLegacyProfile(text) {
118
+ return /^v\d+:/.test(text);
119
+ }
120
+ /** Whether the text is a v2 or v3 .HODL file. */
95
121
  static isCurrentFormat(encryptedData) {
96
- const parts = encryptedData.split(':');
97
- return parts[0] === 'v2' && parts.length === 5;
122
+ return isHodlFile(encryptedData);
98
123
  }
99
- /** Only the current format. Profiles saved before it are read with decryptProfile. */
124
+ /** A v2 or v3 .HODL file. Profiles saved before v2 are read with decryptProfile. */
100
125
  static decrypt(encryptedData, encryptionKey) {
101
- if (!Persist.isCurrentFormat(encryptedData)) {
102
- throw new Error('Unsupported encrypted payload format');
103
- }
104
- const [, saltHex, ivHex, authTagHex, encryptedHex] = encryptedData.split(':');
105
- const salt = Buffer.from(saltHex, 'hex');
106
- const iv = Buffer.from(ivHex, 'hex');
107
- const authTag = Buffer.from(authTagHex, 'hex');
108
- const encrypted = Buffer.from(encryptedHex, 'hex');
109
- const key = crypto.scryptSync(encryptionKey, salt, KEY_LENGTH);
126
+ const file = parseHodlFile(encryptedData);
127
+ const key = Persist.fileKey(encryptionKey, file.salt, file.cost);
110
128
  let decrypted;
111
129
  try {
112
- const decipher = crypto.createDecipheriv(ALGORITHM, key, iv);
113
- decipher.setAuthTag(authTag);
130
+ const decipher = crypto.createDecipheriv(ALGORITHM, key, file.iv);
131
+ if (file.additionalData)
132
+ decipher.setAAD(file.additionalData);
133
+ decipher.setAuthTag(file.tag);
114
134
  decrypted = Buffer.concat([
115
- decipher.update(encrypted),
135
+ decipher.update(file.ciphertext),
116
136
  decipher.final()
117
137
  ]);
118
138
  return JSON.parse(decrypted.toString('utf8'));
@@ -122,7 +142,10 @@ class Persist extends Deepbase {
122
142
  decrypted?.fill(0);
123
143
  }
124
144
  }
125
- /** The stored profile, migrating one saved in the legacy format; it is rewritten as v2 on the next save. */
145
+ static fileKey(encryptionKey, salt, cost) {
146
+ return crypto.scryptSync(encryptionKey, salt, HODL_FILE_KEY_BYTES, { ...cost, maxmem: scryptMemory(cost) });
147
+ }
148
+ /** A profile saved as a v2 or older string, before the encrypted document format. */
126
149
  static decryptProfile(encryptedData, encryptionKey) {
127
150
  return Persist.isCurrentFormat(encryptedData)
128
151
  ? Persist.decrypt(encryptedData, encryptionKey)
@@ -170,74 +193,6 @@ class Persist extends Deepbase {
170
193
  iv: derived.subarray(keyLen, keyLen + ivLen)
171
194
  };
172
195
  }
173
- static transformSecrets(value, path, transform) {
174
- if (Persist.isSensitivePath(path)) {
175
- return transform(value);
176
- }
177
- if (Array.isArray(value)) {
178
- return value.map((item, index) => Persist.transformSecrets(item, [...path, String(index)], transform));
179
- }
180
- if (Persist.isRecord(value)) {
181
- return Object.fromEntries(Object.entries(value).map(([key, item]) => [
182
- key,
183
- Persist.transformSecrets(item, [...path, key], transform)
184
- ]));
185
- }
186
- return value;
187
- }
188
- static isSensitivePath(path) {
189
- const field = path.at(-1);
190
- return field !== undefined && isSensitiveField(field);
191
- }
192
- static isRecord(value) {
193
- return typeof value === 'object' && value !== null && !Array.isArray(value);
194
- }
195
- static isSealedSecret(value) {
196
- if (!Persist.isRecord(value)) {
197
- return false;
198
- }
199
- return (value.__hodlSealed === SEALED_SECRET_VERSION &&
200
- typeof value.iv === 'string' &&
201
- typeof value.authTag === 'string' &&
202
- typeof value.ciphertext === 'string');
203
- }
204
- static sealSecret(secret, memoryKey) {
205
- if (typeof secret !== 'string') {
206
- throw new TypeError('Sensitive values must be strings before entering memory');
207
- }
208
- const iv = crypto.randomBytes(IV_LENGTH);
209
- const cipher = crypto.createCipheriv(ALGORITHM, memoryKey, iv);
210
- const plaintext = Buffer.from(secret, 'utf8');
211
- try {
212
- const ciphertext = Buffer.concat([cipher.update(plaintext), cipher.final()]);
213
- return {
214
- __hodlSealed: SEALED_SECRET_VERSION,
215
- iv: iv.toString('hex'),
216
- authTag: cipher.getAuthTag().toString('hex'),
217
- ciphertext: ciphertext.toString('hex')
218
- };
219
- }
220
- finally {
221
- plaintext.fill(0);
222
- }
223
- }
224
- static unsealSecret(secret, memoryKey) {
225
- if (!Persist.isSealedSecret(secret)) {
226
- throw new TypeError('Sensitive value is not sealed in memory');
227
- }
228
- const iv = Buffer.from(secret.iv, 'hex');
229
- const authTag = Buffer.from(secret.authTag, 'hex');
230
- const ciphertext = Buffer.from(secret.ciphertext, 'hex');
231
- const decipher = crypto.createDecipheriv(ALGORITHM, memoryKey, iv);
232
- decipher.setAuthTag(authTag);
233
- const plaintext = Buffer.concat([decipher.update(ciphertext), decipher.final()]);
234
- try {
235
- return plaintext.toString('utf8');
236
- }
237
- finally {
238
- plaintext.fill(0);
239
- }
240
- }
241
196
  }
242
197
  export default Persist;
243
198
  //# sourceMappingURL=persist.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"persist.js","sourceRoot":"","sources":["../persist.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"persist.js","sourceRoot":"","sources":["../persist.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /** A request that got no HTTP response: the host was unreachable, refused it, or did not answer in time. */
2
+ export declare class NetworkError extends Error {
3
+ }
4
+ /** fetch, naming the host when no response arrives; fetch reports that as a bare TypeError. */
5
+ export declare function request(input: string | URL | Request, init?: RequestInit): Promise<Response>;
6
+ /** What to show for an error: a network failure among its causes outranks the wrappers that describe the request. */
7
+ export declare function errorMessage(error: unknown): string;
@@ -0,0 +1,26 @@
1
+ /** A request that got no HTTP response: the host was unreachable, refused it, or did not answer in time. */
2
+ export class NetworkError extends Error {
3
+ }
4
+ /** fetch, naming the host when no response arrives; fetch reports that as a bare TypeError. */
5
+ export async function request(input, init) {
6
+ try {
7
+ return await fetch(input, init);
8
+ }
9
+ catch (error) {
10
+ const host = new URL(input instanceof Request ? input.url : input).host;
11
+ if (error instanceof Error && error.name === 'TimeoutError')
12
+ throw new NetworkError(`${host} did not respond in time.`, { cause: error });
13
+ if (error instanceof TypeError)
14
+ throw new NetworkError(`Could not reach ${host}.`, { cause: error });
15
+ throw error;
16
+ }
17
+ }
18
+ /** What to show for an error: a network failure among its causes outranks the wrappers that describe the request. */
19
+ export function errorMessage(error) {
20
+ for (let cause = error; cause instanceof Error; cause = cause.cause) {
21
+ if (cause instanceof NetworkError)
22
+ return cause.message;
23
+ }
24
+ return error instanceof Error ? error.message : String(error);
25
+ }
26
+ //# sourceMappingURL=request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request.js","sourceRoot":"","sources":["../request.ts"],"names":[],"mappings":"AAAA,4GAA4G;AAC5G,MAAM,OAAO,YAAa,SAAQ,KAAK;CAAG;AAE1C,+FAA+F;AAC/F,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,KAA6B,EAAE,IAAkB;IAC3E,IAAI,CAAC;QACD,OAAO,MAAM,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,YAAY,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;QACxE,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc;YAAE,MAAM,IAAI,YAAY,CAAC,GAAG,IAAI,2BAA2B,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1I,IAAI,KAAK,YAAY,SAAS;YAAE,MAAM,IAAI,YAAY,CAAC,mBAAmB,IAAI,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QACrG,MAAM,KAAK,CAAC;IAChB,CAAC;AACL,CAAC;AAED,qHAAqH;AACrH,MAAM,UAAU,YAAY,CAAC,KAAc;IACvC,KAAK,IAAI,KAAK,GAAG,KAAK,EAAE,KAAK,YAAY,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;QAClE,IAAI,KAAK,YAAY,YAAY;YAAE,OAAO,KAAK,CAAC,OAAO,CAAC;IAC5D,CAAC;IACD,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAClE,CAAC"}
@@ -2,7 +2,7 @@ import type { WalletAccount } from '../network/types.js';
2
2
  import { BitcoinPayments } from './chain.js';
3
3
  import type { ChainReceipt, FundingEstimate, ProviderQuote, SwapChain, SwapInput, SwapPlan, SwapQuote, SwapStep } from './types.js';
4
4
  type Output = {
5
- script: Buffer;
5
+ script: Uint8Array;
6
6
  value: number;
7
7
  };
8
8
  export declare function bitcoinMemoOutputs(memo?: string): Output[];