@atomicfinance/bitcoin-wallet-provider 3.4.0 → 3.4.2

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.
@@ -1 +1 @@
1
- @atomicfinance/bitcoin-wallet-provider:build: cache hit, replaying output 2a1d9fb6eac6736e
1
+ @atomicfinance/bitcoin-wallet-provider:build: cache hit, replaying output 498578ecbb0d1588
@@ -1 +1 @@
1
- @atomicfinance/bitcoin-wallet-provider:test: cache hit, replaying output 8e90e2b2b7a1831f
1
+ @atomicfinance/bitcoin-wallet-provider:test: cache hit, replaying output 95d6a19992ba399b
package/CHANGELOG.md CHANGED
@@ -1,5 +1,25 @@
1
1
  # @atomicfinance/bitcoin-wallet-provider
2
2
 
3
+ ## 3.4.2
4
+
5
+ ### Patch Changes
6
+
7
+ - e701ba6: Bump node-dlc- to 0.23.1 and add node-dlc batch tx builder validation tests
8
+ - Updated dependencies [e701ba6]
9
+ - @atomicfinance/types@3.4.2
10
+ - @atomicfinance/bitcoin-utils@3.4.2
11
+ - @atomicfinance/provider@3.4.2
12
+
13
+ ## 3.4.1
14
+
15
+ ### Patch Changes
16
+
17
+ - 9781efe: Add getInputsForDualFunding functionality and bump @node-dlc
18
+ - Updated dependencies [9781efe]
19
+ - @atomicfinance/bitcoin-utils@3.4.1
20
+ - @atomicfinance/types@3.4.1
21
+ - @atomicfinance/provider@3.4.1
22
+
3
23
  ## 3.4.0
4
24
 
5
25
  ### Minor Changes
@@ -110,10 +110,14 @@ declare const _default: <T extends Constructor<Provider>>(superclass: T) => {
110
110
  getTotalFees(transactions: SendOptions[], max: boolean): Promise<any>;
111
111
  getInputsForAmount(_targets: bT.OutputTarget[], feePerByte?: number, fixedInputs?: bT.Input[], numAddressPerCall?: number, sweep?: boolean): Promise<{
112
112
  inputs: bT.UTXO[];
113
- change: any;
113
+ change: CoinSelectTarget;
114
114
  outputs: CoinSelectTarget[];
115
115
  fee: number;
116
116
  }>;
117
+ getInputsForDualFunding(collaterals: number[], feePerByte?: number, fixedInputs?: bT.Input[], numAddressPerCall?: number): Promise<{
118
+ inputs: import("@node-dlc/core").UTXO[];
119
+ fee: bigint;
120
+ }>;
117
121
  client: import("@atomicfinance/types").IClient;
118
122
  setClient(client?: import("@atomicfinance/types").IClient): void;
119
123
  getMethod(method: string, requestor?: any): (...args: any[]) => any;
@@ -27,6 +27,7 @@ const bitcoin_utils_1 = require("@atomicfinance/bitcoin-utils");
27
27
  const errors_1 = require("@atomicfinance/errors");
28
28
  const types_1 = require("@atomicfinance/types");
29
29
  const utils_1 = require("@atomicfinance/utils");
30
+ const core_1 = require("@node-dlc/core");
30
31
  const bitcoin = __importStar(require("bitcoinjs-lib"));
31
32
  const memoizee_1 = __importDefault(require("memoizee"));
32
33
  const ADDRESS_GAP = 30;
@@ -498,6 +499,93 @@ exports.default = (superclass) => {
498
499
  }
499
500
  throw new errors_1.InsufficientBalanceError('Not enough balance');
500
501
  }
502
+ async getInputsForDualFunding(collaterals, feePerByte, fixedInputs = [], numAddressPerCall = 100) {
503
+ let addressIndex = 0;
504
+ let changeAddresses = [];
505
+ let externalAddresses = [];
506
+ const addressCountMap = {
507
+ change: 0,
508
+ nonChange: 0,
509
+ };
510
+ const feePerBytePromise = this.getMethod('getFeePerByte')();
511
+ let utxos = [];
512
+ while (addressCountMap.change < ADDRESS_GAP ||
513
+ addressCountMap.nonChange < ADDRESS_GAP) {
514
+ let addrList = [];
515
+ if (addressCountMap.change < ADDRESS_GAP) {
516
+ // Scanning for change addr
517
+ changeAddresses = await this.getAddresses(addressIndex, numAddressPerCall, true);
518
+ addrList = addrList.concat(changeAddresses);
519
+ }
520
+ else {
521
+ changeAddresses = [];
522
+ }
523
+ if (addressCountMap.nonChange < ADDRESS_GAP) {
524
+ // Scanning for non change addr
525
+ externalAddresses = await this.getAddresses(addressIndex, numAddressPerCall, false);
526
+ addrList = addrList.concat(externalAddresses);
527
+ }
528
+ const fixedUtxos = [];
529
+ if (fixedInputs.length > 0) {
530
+ for (const input of fixedInputs) {
531
+ const txHex = await this.getMethod('getRawTransactionByHash')(input.txid);
532
+ const tx = bitcoin_utils_1.decodeRawTransaction(txHex, this._network);
533
+ const value = new types_1.BigNumber(tx.vout[input.vout].value)
534
+ .times(1e8)
535
+ .toNumber();
536
+ const address = tx.vout[input.vout].scriptPubKey.addresses[0];
537
+ const walletAddress = await this.getWalletAddress(address);
538
+ const utxo = {
539
+ ...input,
540
+ value,
541
+ address,
542
+ derivationPath: walletAddress.derivationPath,
543
+ };
544
+ fixedUtxos.push(utxo);
545
+ }
546
+ }
547
+ if (fixedUtxos.length === 0) {
548
+ const _utxos = await this.getMethod('getUnspentTransactions')(addrList);
549
+ utxos.push(..._utxos.map((utxo) => {
550
+ const addr = addrList.find((a) => a.address === utxo.address);
551
+ return {
552
+ ...utxo,
553
+ derivationPath: addr.derivationPath,
554
+ };
555
+ }));
556
+ }
557
+ else {
558
+ utxos = fixedUtxos;
559
+ }
560
+ const transactionCounts = await this.getMethod('getAddressTransactionCounts')(addrList);
561
+ if (!feePerByte)
562
+ feePerByte = await feePerBytePromise;
563
+ const minRelayFee = await this.getMethod('getMinRelayFee')();
564
+ if (feePerByte < minRelayFee) {
565
+ throw new Error(`Fee supplied (${feePerByte} sat/b) too low. Minimum relay fee is ${minRelayFee} sat/b`);
566
+ }
567
+ const { fee, inputs } = core_1.dualFundingCoinSelect(utxos, collaterals.map((c) => BigInt(c)), BigInt(feePerByte));
568
+ if (inputs.length > 0) {
569
+ return {
570
+ inputs,
571
+ fee,
572
+ };
573
+ }
574
+ for (const address of addrList) {
575
+ const isUsed = transactionCounts[address.address];
576
+ const isChangeAddress = changeAddresses.find((a) => address.address === a.address);
577
+ const key = isChangeAddress ? 'change' : 'nonChange';
578
+ if (isUsed) {
579
+ addressCountMap[key] = 0;
580
+ }
581
+ else {
582
+ addressCountMap[key]++;
583
+ }
584
+ }
585
+ addressIndex += numAddressPerCall;
586
+ }
587
+ throw new errors_1.InsufficientBalanceError('Not enough balance for dual funding');
588
+ }
501
589
  }
502
590
  return BitcoinWalletProvider;
503
591
  };
@@ -1 +1 @@
1
- {"version":3,"file":"BitcoinWalletProvider.js","sourceRoot":"","sources":["../lib/BitcoinWalletProvider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gEAKsC;AACtC,kDAAiE;AAEjE,gDAQ8B;AAC9B,gDAAuD;AAEvD,uDAAyC;AAEzC,wDAA+B;AAE/B,MAAM,WAAW,GAAG,EAAE,CAAC;AACvB,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAC5B,MAAM,cAAc,GAAG,CAAC,CAAC;AACzB,MAAM,2BAA2B,GAAG,CAAC,CAAC;AAMtC,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IAC3B,iEAAQ,CAAA;IACR,6DAAM,CAAA;IACN,qFAAkB,CAAA;AACpB,CAAC,EAJW,iBAAiB,GAAjB,yBAAiB,KAAjB,yBAAiB,QAI5B;AAcD,kBAAe,CAAkC,UAAa,EAAE,EAAE;IAChE,MAAe,qBACb,SAAQ,UAAU;QAWlB,YAAY,GAAG,IAAW;YACxB,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAiC,CAAC;YACxD,MAAM,EACJ,OAAO,EACP,kBAAkB,EAClB,WAAW,GAAG,eAAE,CAAC,WAAW,CAAC,MAAM,EACnC,YAAY,GAAG,CAAC,EAChB,kBAAkB,GAAG,CAAC,GACvB,GAAG,OAAO,CAAC;YACZ,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,eAAE,CAAC,WAAW,CAAC,CAAC;YACnD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;gBACvC,MAAM,IAAI,KAAK,CAAC,8BAA8B,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;aACzE;YAED,KAAK,CAAC,OAAO,CAAC,CAAC;YAEf,IAAI,CAAC,mBAAmB,GAAG,kBAAkB,CAAC;YAC9C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;YACxB,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;YAChC,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;YAClC,IAAI,CAAC,mBAAmB,GAAG,kBAAkB,CAAC;YAC9C,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;YAC3B,IAAI,CAAC,yBAAyB,GAAG,EAAE,CAAC;YACpC,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;QACpC,CAAC;QA0BD,kBAAkB;YAChB,OAAO,IAAI,CAAC,gBAAgB,CAAC;QAC/B,CAAC;QAED,KAAK,CAAC,kBAAkB,CAAC,eAAgC;YACvD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,wBAAwB,CACjD,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAChC,CAAC;YACF,IAAI,eAAe,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,EAAE;gBACvE,MAAM,IAAI,KAAK,CACb,sBAAsB,OAAO,CAAC,cAAc,iBAAiB,CAC9D,CAAC;aACH;YACD,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;QAC1C,CAAC;QAED,oBAAoB,CAAC,YAA2B;YAC9C,MAAM,OAAO,GAAsB,EAAE,CAAC;YAEtC,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;gBAC1B,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;oBACvC,OAAO,CAAC,IAAI,CAAC;wBACX,OAAO,EAAE,uBAAe,CAAC,EAAE,CAAC,EAAE,CAAC;wBAC/B,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE;qBAC3B,CAAC,CAAC;iBACJ;gBAED,IAAI,EAAE,CAAC,IAAI,EAAE;oBACX,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;wBAC1C,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS;wBAC5B,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC;qBAC5B,CAAC,CAAC;oBACH,OAAO,CAAC,IAAI,CAAC;wBACX,KAAK,EAAE,CAAC;wBACR,MAAM,EAAE,YAAY;qBACrB,CAAC,CAAC;iBACJ;YACH,CAAC,CAAC,CAAC;YAEH,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,KAAK,CAAC,gBAAgB,CAAC,MAAuB,EAAE,UAAkB;YAChE,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC;QACtD,CAAC;QAED,KAAK,CAAC,qBAAqB,CAAC,OAA0B;YACpD,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QACzC,CAAC;QAED,KAAK,CAAC,gBAAgB,CACpB,YAA+B,EAC/B,UAAmB;YAEnB,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAC/C,YAAY,EACZ,UAAU,CACX,CAAC;YACF,MAAM,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,CAAC;YAChD,OAAO,0CAA0B,CAC/B,oCAAoB,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,EACxC,GAAG,CACJ,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,eAAe,CAAC,OAAoB;YACxC,OAAO,IAAI,CAAC,gBAAgB,CAC1B,IAAI,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC,CAAC,EACpC,OAAO,CAAC,GAAa,CACtB,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,oBAAoB,CAAC,YAA2B;YACpD,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC,CAAC;QACxE,CAAC;QAED,KAAK,CAAC,qBAAqB,CACzB,qBAA6B,EAC7B,UAAkB;YAElB,OAAO,IAAI,CAAC,sBAAsB,CAAC,qBAAqB,EAAE,UAAU,CAAC,CAAC;QACxE,CAAC;QAED,KAAK,CAAC,oBAAoB,CACxB,qBAAuC,EACvC,UAAkB;YAElB,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,sBAAsB,CACpD,uBAAe,CAAC,qBAAqB,CAAC,EACtC,UAAU,CACX,CAAC;YACF,MAAM,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,CAAC;YAChD,OAAO,0CAA0B,CAC/B,oCAAoB,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,EACxC,GAAG,CACJ,CAAC;QACJ,CAAC;QAED,2BAA2B;YACzB,OAAO,IAAI,CAAC,yBAAyB,CAAC;QACxC,CAAC;QAED,2BAA2B,CACzB,wBAAkD;YAElD,IAAI,CAAC,yBAAyB,GAAG,wBAAwB,CAAC;QAC5D,CAAC;QAED,uBAAuB,CAAC,oBAA4B;YAClD,IAAI,CAAC,qBAAqB,GAAG,oBAAoB,CAAC;QACpD,CAAC;QAED,uBAAuB;YACrB,OAAO,IAAI,CAAC,qBAAqB,CAAC;QACpC,CAAC;QAED,KAAK,CAAC,oBAAoB,CACxB,EAA6C,EAC7C,aAAqB;YAErB,MAAM,MAAM,GAAG,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC;YACrD,MAAM,WAAW,GAAmB,CAClC,MAAM,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC,MAAM,CAAC,CACrD,CAAC,IAAI,CAAC;YACP,MAAM,WAAW,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mEAAmE;YAE7G,MAAM,eAAe,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAC1C,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CACzC,CAAC;YACF,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;YACpE,MAAM,YAAY,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CACxC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,OAAO,CACnE,CAAC;YAEF,IAAI,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC;YAC/B,IAAI,YAAY,EAAE;gBAChB,OAAO,GAAG,OAAO,CAAC,MAAM,CACtB,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC;oBAC9B,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CACzC,CAAC;aACH;YAED,oBAAoB;YACpB,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBAC5C,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC;gBACzC,KAAK,EAAE,IAAI,iBAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;aACzD,CAAC,CAAC,CAAC;YACJ,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAC/C,YAAY,EACZ,aAAa,EACb,WAAW,CACZ,CAAC;YACF,MAAM,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,CAAC;YAChD,OAAO,0CAA0B,CAC/B,oCAAoB,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,EACxC,GAAG,CACJ,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,gBAAgB,CAAC,MAAM,GAAG,KAAK,EAAE,iBAAiB,GAAG,GAAG;YAC5D,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC;YAChE,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC;YAE5C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAChD,iBAAiB,EACjB,WAAW,CACZ,CAAC,IAAI,CAAC,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;YAClD,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;YAEvD,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,KAAK,CAAC,uBAAuB,CAAC,iBAAiB,GAAG,GAAG,EAAE,WAAW;YAChE,MAAM,aAAa,GAAG,EAAE,CAAC;YACzB,MAAM,eAAe,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;YACpD,MAAM,gBAAgB,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;YAE3D,IAAI,QAAQ,CAAC;YACb,IAAI,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC;YACtC,IAAI,kBAAkB,GAAG,IAAI,CAAC,mBAAmB,CAAC;YAClD,IAAI,eAAe,GAAc,EAAE,CAAC;YACpC,IAAI,kBAAkB,GAAc,EAAE,CAAC;YAEvC,iDAAiD;YACjD,OACE,CAAC,WAAW,KAAK,2BAA2B;gBAC1C,CAAC,eAAe,CAAC,MAAM,GAAG,WAAW;oBACnC,eAAe,CAAC,SAAS,GAAG,WAAW,CAAC,CAAC;gBAC7C,CAAC,WAAW,KAAK,iBAAiB;oBAChC,eAAe,CAAC,SAAS,GAAG,WAAW,CAAC;gBAC1C,CAAC,WAAW,KAAK,cAAc,IAAI,eAAe,CAAC,MAAM,GAAG,WAAW,CAAC,EACxE;gBACA,gDAAgD;gBAChD,QAAQ,GAAG,EAAE,CAAC;gBAEd,IACE,CAAC,WAAW,KAAK,2BAA2B;oBAC1C,WAAW,KAAK,cAAc,CAAC;oBACjC,eAAe,CAAC,MAAM,GAAG,WAAW,EACpC;oBACA,2BAA2B;oBAC3B,eAAe,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CACrD,kBAAkB,EAClB,iBAAiB,EACjB,IAAI,CACL,CAAC;oBACF,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;iBAC7C;qBAAM;oBACL,eAAe,GAAG,EAAE,CAAC;iBACtB;gBAED,IACE,CAAC,WAAW,KAAK,2BAA2B;oBAC1C,WAAW,KAAK,iBAAiB,CAAC;oBACpC,eAAe,CAAC,SAAS,GAAG,WAAW,EACvC;oBACA,+BAA+B;oBAC/B,kBAAkB,GAAG,MAAM,IAAI,CAAC,YAAY,CAC1C,YAAY,EACZ,iBAAiB,EACjB,KAAK,CACN,CAAC;oBACF,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;iBAChD;gBAED,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,SAAS,CAC5C,6BAA6B,CAC9B,CAAC,QAAQ,CAAC,CAAC;gBAEZ,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;oBAC9B,MAAM,MAAM,GACV,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC;wBACtC,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;oBAClD,MAAM,eAAe,GAAG,eAAe,CAAC,IAAI,CAC1C,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,CACrC,CAAC;oBACF,MAAM,GAAG,GAAG,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC;oBAErD,IAAI,MAAM,EAAE;wBACV,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;wBAC5B,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;wBACzB,gBAAgB,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;qBAC9B;yBAAM;wBACL,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;wBAEvB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE;4BAC1B,gBAAgB,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;yBACjC;qBACF;iBACF;gBAED,YAAY,IAAI,iBAAiB,CAAC;gBAClC,kBAAkB,IAAI,iBAAiB,CAAC;aACzC;YAED,IAAI,kBAAkB,CAAC;YACvB,MAAM,cAAc,GAAG,gBAAgB,CAAC,SAAS;gBAC/C,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,KAAK;gBAClC,CAAC,CAAC,QAAQ,CAAC;YACb,MAAM,WAAW,GAAG,gBAAgB,CAAC,MAAM;gBACzC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK;gBAC/B,CAAC,CAAC,QAAQ,CAAC;YAEb,IAAI,cAAc,IAAI,WAAW;gBAC/B,kBAAkB,GAAG,gBAAgB,CAAC,SAAS,CAAC;;gBAC7C,kBAAkB,GAAG,gBAAgB,CAAC,MAAM,CAAC;YAElD,OAAO;gBACL,aAAa;gBACb,aAAa,EAAE,gBAAgB;gBAC/B,kBAAkB;aACnB,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,gBAAgB,CAAC,OAAe;YACpC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;YACvD,IAAI,YAAY;gBAAE,OAAO,YAAY,CAAC;YAEtC,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACrD,CAAC;QAED,uBAAuB,CAAC,SAAiB;YACvC,OAAO,IAAI,CAAC,8BAA8B,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC;QAChE,CAAC;QAED,8BAA8B,CAAC,SAAiB;YAC9C,IAAI,IAAI,CAAC,YAAY,KAAK,eAAE,CAAC,WAAW,CAAC,MAAM,EAAE;gBAC/C,OAAO,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;oBAC5B,MAAM,EAAE,SAAS;oBACjB,OAAO,EAAE,IAAI,CAAC,QAAQ;iBACvB,CAAC,CAAC;aACJ;iBAAM,IAAI,IAAI,CAAC,YAAY,KAAK,eAAE,CAAC,WAAW,CAAC,WAAW,EAAE;gBAC3D,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;oBAC3B,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;wBAC9B,MAAM,EAAE,SAAS;wBACjB,OAAO,EAAE,IAAI,CAAC,QAAQ;qBACvB,CAAC;oBACF,OAAO,EAAE,IAAI,CAAC,QAAQ;iBACvB,CAAC,CAAC;aACJ;iBAAM,IAAI,IAAI,CAAC,YAAY,KAAK,eAAE,CAAC,WAAW,CAAC,MAAM,EAAE;gBACtD,OAAO,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;oBAC7B,MAAM,EAAE,SAAS;oBACjB,OAAO,EAAE,IAAI,CAAC,QAAQ;iBACvB,CAAC,CAAC;aACJ;QACH,CAAC;QAED,KAAK,CAAC,wBAAwB,CAAC,IAAY;YACzC,IAAI,IAAI,IAAI,IAAI,CAAC,gBAAgB,EAAE;gBACjC,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;aACpC;YAED,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,GAAG,GAAG,EAAE,EAAE,CAAC,CAAC;YACjE,MAAM,SAAS,GAAG,kBAAkB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC;YACnE,MAAM,OAAO,GAAG,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;YACxD,MAAM,aAAa,GAAG,IAAI,eAAO,CAAC;gBAChC,OAAO;gBACP,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;gBACpC,cAAc,EAAE,IAAI;aACrB,CAAC,CAAC;YAEH,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC;YAC5C,OAAO,aAAa,CAAC;QACvB,CAAC;QAED;;;;;;;;WAQG;QACH,KAAK,CAAC,YAAY,CAChB,aAAa,GAAG,CAAC,EACjB,YAAY,GAAG,CAAC,EAChB,MAAM,GAAG,KAAK;YAEd,IAAI,YAAY,GAAG,CAAC,EAAE;gBACpB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;aACzD;YAED,MAAM,SAAS,GAAG,EAAE,CAAC;YACrB,MAAM,SAAS,GAAG,aAAa,GAAG,YAAY,CAAC;YAC/C,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;YAErC,KACE,IAAI,YAAY,GAAG,aAAa,EAChC,YAAY,GAAG,SAAS,EACxB,YAAY,EAAE,EACd;gBACA,MAAM,OAAO,GAAG,SAAS,GAAG,GAAG,GAAG,YAAY,CAAC;gBAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,GAAG,GAAG,GAAG,OAAO,CAAC;gBACtD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;gBAChE,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aAC/B;YAED,OAAO,SAAS,CAAC;QACnB,CAAC;QAED;;;;;;;;;;WAUG;QACH,KAAK,CAAC,WAAW,CACf,SAAmB,EACnB,SAAyB,IAAI;YAE7B,MAAM,gBAAgB,GAAG,EAAE,CAAC;YAC5B,IAAI,KAAK,GAAG,CAAC,CAAC;YAEd,OAAO,KAAK,GAAG,IAAI,CAAC,qBAAqB,EAAE;gBACzC,MAAM,eAAe,GAAG,EAAE,CAAC;gBAE3B,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,KAAK,EAAE;oBACvC,eAAe,CAAC,IAAI,CAClB,GAAG,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC,CAC7D,CAAC;iBACH;gBAED,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,IAAI,EAAE;oBACtC,eAAe,CAAC,IAAI,CAClB,GAAG,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,gBAAgB,EAAE,IAAI,CAAC,CAAC,CAC5D,CAAC;iBACH;gBAED,MAAM,aAAa,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CACxD,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,KAAK,IAAI,CAAC,CACtD,CAAC;gBAEF,IAAI,aAAa,EAAE;oBACjB,iGAAiG;oBACjG,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,GAAG,CACnC,IAAI,CAAC,qBAAqB,EAC1B,KAAK,GAAG,GAAG,CACZ,CAAC;oBACF,OAAO,aAAa,CAAC;iBACtB;gBACD,KAAK,IAAI,gBAAgB,CAAC;aAC3B;QACH,CAAC;QAED,KAAK,CAAC,gBAAgB,CAAC,iBAAiB,GAAG,GAAG;YAC5C,OAAO,IAAI,CAAC,uBAAuB,CACjC,iBAAiB,EACjB,iBAAiB,CAAC,kBAAkB,CACrC,CAAC,IAAI,CAAC,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC;QAC/C,CAAC;QAED,KAAK,CAAC,eAAe,CAAC,IAAe;YACnC,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC;YACzC,MAAM,qBAAqB,GAAG,kBAAO,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE;gBACrE,SAAS,EAAE,IAAI;aAChB,CAAC,CAAC;YACH,MAAM,8BAA8B,GAAG,kBAAO,CAC5C,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,EACxC,EAAE,SAAS,EAAE,IAAI,EAAE,CACpB,CAAC;YACF,MAAM,mCAAmC,GAAG,kBAAO,CACjD,IAAI,CAAC,SAAS,CAAC,6BAA6B,CAAC,EAC7C;gBACE,SAAS,EAAE,IAAI;aAChB,CACF,CAAC;YACF,IAAI,CAAC,SAAS,GAAG,CAAC,MAAc,EAAE,YAAiB,IAAI,EAAE,EAAE;gBACzD,IAAI,MAAM,KAAK,eAAe;oBAAE,OAAO,qBAAqB,CAAC;gBAC7D,IAAI,MAAM,KAAK,wBAAwB;oBACrC,OAAO,8BAA8B,CAAC;qBACnC,IAAI,MAAM,KAAK,6BAA6B;oBAC/C,OAAO,mCAAmC,CAAC;;oBACxC,OAAO,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAC9D,CAAC,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAEvC,IAAI,CAAC,SAAS,GAAG,iBAAiB,CAAC;YAEnC,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,KAAK,CAAC,WAAW,CAAC,IAAiB,EAAE,GAAY;YAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAClD,IAAI,CAAC,GAAG,EAAE;gBACR,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAC3C,OAAO,EACP,IAAI,CAAC,GAAa,CACnB,CAAC;gBACF,OAAO,GAAG,CAAC;aACZ;iBAAM;gBACL,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAC3C,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAC/B,IAAI,CAAC,GAAa,EAClB,EAAE,EACF,GAAG,EACH,IAAI,CACL,CAAC;gBACF,OAAO,GAAG,CAAC;aACZ;QACH,CAAC;QAED,KAAK,CAAC,YAAY,CAAC,YAA2B,EAAE,GAAY;YAC1D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,IAAI,EAAE;gBACjD,MAAM,IAAI,GAAmC,EAAE,CAAC;gBAChD,KAAK,MAAM,EAAE,IAAI,YAAY,EAAE;oBAC7B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;oBAC5C,IAAI,CAAC,EAAE,CAAC,GAAa,CAAC,GAAG,IAAI,iBAAS,CAAC,GAAG,CAAC,CAAC;iBAC7C;gBACD,OAAO,IAAI,CAAC;YACd,CAAC,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QAED,KAAK,CAAC,kBAAkB,CACtB,QAA2B,EAC3B,UAAmB,EACnB,cAA0B,EAAE,EAC5B,iBAAiB,GAAG,GAAG,EACvB,KAAK,GAAG,KAAK;YAEb,IAAI,YAAY,GAAG,CAAC,CAAC;YACrB,IAAI,eAAe,GAAc,EAAE,CAAC;YACpC,IAAI,iBAAiB,GAAc,EAAE,CAAC;YACtC,MAAM,eAAe,GAAG;gBACtB,MAAM,EAAE,CAAC;gBACT,SAAS,EAAE,CAAC;aACb,CAAC;YAEF,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,CAAC;YAC5D,IAAI,KAAK,GAAc,EAAE,CAAC;YAE1B,OACE,eAAe,CAAC,MAAM,GAAG,WAAW;gBACpC,eAAe,CAAC,SAAS,GAAG,WAAW,EACvC;gBACA,IAAI,QAAQ,GAAc,EAAE,CAAC;gBAE7B,IAAI,eAAe,CAAC,MAAM,GAAG,WAAW,EAAE;oBACxC,2BAA2B;oBAC3B,eAAe,GAAG,MAAM,IAAI,CAAC,YAAY,CACvC,YAAY,EACZ,iBAAiB,EACjB,IAAI,CACL,CAAC;oBACF,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;iBAC7C;qBAAM;oBACL,eAAe,GAAG,EAAE,CAAC;iBACtB;gBAED,IAAI,eAAe,CAAC,SAAS,GAAG,WAAW,EAAE;oBAC3C,+BAA+B;oBAC/B,iBAAiB,GAAG,MAAM,IAAI,CAAC,YAAY,CACzC,YAAY,EACZ,iBAAiB,EACjB,KAAK,CACN,CAAC;oBACF,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;iBAC/C;gBAED,MAAM,UAAU,GAAc,EAAE,CAAC;gBACjC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC1B,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE;wBAC/B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAC3D,KAAK,CAAC,IAAI,CACX,CAAC;wBACF,MAAM,EAAE,GAAG,oCAAoB,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;wBACtD,MAAM,KAAK,GAAG,IAAI,iBAAS,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;6BACnD,KAAK,CAAC,GAAG,CAAC;6BACV,QAAQ,EAAE,CAAC;wBACd,MAAM,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;wBAC9D,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;wBAC3D,MAAM,IAAI,GAAG;4BACX,GAAG,KAAK;4BACR,KAAK;4BACL,OAAO;4BACP,cAAc,EAAE,aAAa,CAAC,cAAc;yBAC7C,CAAC;wBACF,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;qBACvB;iBACF;gBAED,IAAI,CAAC,KAAK,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;oBACrC,MAAM,MAAM,GAAc,MAAM,IAAI,CAAC,SAAS,CAC5C,wBAAwB,CACzB,CAAC,QAAQ,CAAC,CAAC;oBACZ,KAAK,CAAC,IAAI,CACR,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;wBACrB,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC;wBAC9D,OAAO;4BACL,GAAG,IAAI;4BACP,cAAc,EAAE,IAAI,CAAC,cAAc;yBACpC,CAAC;oBACJ,CAAC,CAAC,CACH,CAAC;iBACH;qBAAM;oBACL,KAAK,GAAG,UAAU,CAAC;iBACpB;gBAED,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAElE,MAAM,iBAAiB,GAAuB,MAAM,IAAI,CAAC,SAAS,CAChE,6BAA6B,CAC9B,CAAC,QAAQ,CAAC,CAAC;gBAEZ,IAAI,CAAC,UAAU;oBAAE,UAAU,GAAG,MAAM,iBAAiB,CAAC;gBACtD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBAC7D,IAAI,UAAU,GAAG,WAAW,EAAE;oBAC5B,MAAM,IAAI,KAAK,CACb,iBAAiB,UAAU,yCAAyC,WAAW,QAAQ,CACxF,CAAC;iBACH;gBAED,IAAI,OAA2B,CAAC;gBAChC,IAAI,KAAK,EAAE;oBACT,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CACnC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAC/B,CAAC,CACF,CAAC;oBAEF,MAAM,eAAe,GAAG,EAAE,CAAC;oBAC3B,MAAM,iBAAiB,GACrB,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC;oBAC3D,MAAM,gBAAgB,GAAG,QAAQ;yBAC9B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC;yBACnC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;oBAE3D,MAAM,UAAU,GACd,eAAe,GAAG,iBAAiB,GAAG,gBAAgB,CAAC;oBACzD,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;oBAErC,MAAM,QAAQ,GAAG,UAAU,GAAG,CAAC,SAAS,GAAG,UAAU,CAAC,CAAC;oBACvD,MAAM,YAAY,GAAG,IAAI,iBAAS,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;oBAEhE,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;wBAClC,EAAE,EAAE,MAAM;wBACV,KAAK,EAAE,MAAM,CAAC,KAAK;wBACnB,MAAM,EAAE,MAAM,CAAC,MAAM;qBACtB,CAAC,CAAC,CAAC;oBACJ,OAAO,CAAC,IAAI,CAAC;wBACX,EAAE,EAAE,MAAM;wBACV,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE;qBACpD,CAAC,CAAC;iBACJ;qBAAM;oBACL,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;wBAClC,EAAE,EAAE,MAAM;wBACV,KAAK,EAAE,MAAM,CAAC,KAAK;wBACnB,MAAM,EAAE,MAAM,CAAC,MAAM;qBACtB,CAAC,CAAC,CAAC;iBACL;gBAED,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,2BAAW,CAClD,KAAK,EACL,OAAO,EACP,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EACrB,UAAU,CACX,CAAC;gBAEF,IAAI,MAAM,IAAI,OAAO,EAAE;oBACrB,OAAO;wBACL,MAAM;wBACN,MAAM;wBACN,OAAO;wBACP,GAAG;qBACJ,CAAC;iBACH;gBAED,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;oBAC9B,MAAM,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;oBAClD,MAAM,eAAe,GAAG,eAAe,CAAC,IAAI,CAC1C,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,CACrC,CAAC;oBACF,MAAM,GAAG,GAAG,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC;oBAErD,IAAI,MAAM,EAAE;wBACV,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;qBAC1B;yBAAM;wBACL,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;qBACxB;iBACF;gBAED,YAAY,IAAI,iBAAiB,CAAC;aACnC;YAED,MAAM,IAAI,iCAAwB,CAAC,oBAAoB,CAAC,CAAC;QAC3D,CAAC;KACF;IACD,OAAO,qBAAqB,CAAC;AAC/B,CAAC,CAAC"}
1
+ {"version":3,"file":"BitcoinWalletProvider.js","sourceRoot":"","sources":["../lib/BitcoinWalletProvider.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,7 @@ import {
16
16
  WalletProvider,
17
17
  } from '@atomicfinance/types';
18
18
  import { addressToString } from '@atomicfinance/utils';
19
+ import { dualFundingCoinSelect } from '@node-dlc/core';
19
20
  import { BitcoinNetwork } from 'bitcoin-networks';
20
21
  import * as bitcoin from 'bitcoinjs-lib';
21
22
  import { BIP32Interface } from 'bitcoinjs-lib';
@@ -765,6 +766,135 @@ export default <T extends Constructor<Provider>>(superclass: T) => {
765
766
 
766
767
  throw new InsufficientBalanceError('Not enough balance');
767
768
  }
769
+
770
+ async getInputsForDualFunding(
771
+ collaterals: number[],
772
+ feePerByte?: number,
773
+ fixedInputs: bT.Input[] = [],
774
+ numAddressPerCall = 100,
775
+ ) {
776
+ let addressIndex = 0;
777
+ let changeAddresses: Address[] = [];
778
+ let externalAddresses: Address[] = [];
779
+ const addressCountMap = {
780
+ change: 0,
781
+ nonChange: 0,
782
+ };
783
+
784
+ const feePerBytePromise = this.getMethod('getFeePerByte')();
785
+ let utxos: bT.UTXO[] = [];
786
+
787
+ while (
788
+ addressCountMap.change < ADDRESS_GAP ||
789
+ addressCountMap.nonChange < ADDRESS_GAP
790
+ ) {
791
+ let addrList: Address[] = [];
792
+
793
+ if (addressCountMap.change < ADDRESS_GAP) {
794
+ // Scanning for change addr
795
+ changeAddresses = await this.getAddresses(
796
+ addressIndex,
797
+ numAddressPerCall,
798
+ true,
799
+ );
800
+ addrList = addrList.concat(changeAddresses);
801
+ } else {
802
+ changeAddresses = [];
803
+ }
804
+
805
+ if (addressCountMap.nonChange < ADDRESS_GAP) {
806
+ // Scanning for non change addr
807
+ externalAddresses = await this.getAddresses(
808
+ addressIndex,
809
+ numAddressPerCall,
810
+ false,
811
+ );
812
+ addrList = addrList.concat(externalAddresses);
813
+ }
814
+
815
+ const fixedUtxos: bT.UTXO[] = [];
816
+ if (fixedInputs.length > 0) {
817
+ for (const input of fixedInputs) {
818
+ const txHex = await this.getMethod('getRawTransactionByHash')(
819
+ input.txid,
820
+ );
821
+ const tx = decodeRawTransaction(txHex, this._network);
822
+ const value = new BigNumber(tx.vout[input.vout].value)
823
+ .times(1e8)
824
+ .toNumber();
825
+ const address = tx.vout[input.vout].scriptPubKey.addresses[0];
826
+ const walletAddress = await this.getWalletAddress(address);
827
+ const utxo = {
828
+ ...input,
829
+ value,
830
+ address,
831
+ derivationPath: walletAddress.derivationPath,
832
+ };
833
+ fixedUtxos.push(utxo);
834
+ }
835
+ }
836
+
837
+ if (fixedUtxos.length === 0) {
838
+ const _utxos: bT.UTXO[] = await this.getMethod(
839
+ 'getUnspentTransactions',
840
+ )(addrList);
841
+ utxos.push(
842
+ ..._utxos.map((utxo) => {
843
+ const addr = addrList.find((a) => a.address === utxo.address);
844
+ return {
845
+ ...utxo,
846
+ derivationPath: addr.derivationPath,
847
+ };
848
+ }),
849
+ );
850
+ } else {
851
+ utxos = fixedUtxos;
852
+ }
853
+
854
+ const transactionCounts: bT.AddressTxCounts = await this.getMethod(
855
+ 'getAddressTransactionCounts',
856
+ )(addrList);
857
+
858
+ if (!feePerByte) feePerByte = await feePerBytePromise;
859
+ const minRelayFee = await this.getMethod('getMinRelayFee')();
860
+ if (feePerByte < minRelayFee) {
861
+ throw new Error(
862
+ `Fee supplied (${feePerByte} sat/b) too low. Minimum relay fee is ${minRelayFee} sat/b`,
863
+ );
864
+ }
865
+
866
+ const { fee, inputs } = dualFundingCoinSelect(
867
+ utxos,
868
+ collaterals.map((c) => BigInt(c)),
869
+ BigInt(feePerByte),
870
+ );
871
+
872
+ if (inputs.length > 0) {
873
+ return {
874
+ inputs,
875
+ fee,
876
+ };
877
+ }
878
+
879
+ for (const address of addrList) {
880
+ const isUsed = transactionCounts[address.address];
881
+ const isChangeAddress = changeAddresses.find(
882
+ (a) => address.address === a.address,
883
+ );
884
+ const key = isChangeAddress ? 'change' : 'nonChange';
885
+
886
+ if (isUsed) {
887
+ addressCountMap[key] = 0;
888
+ } else {
889
+ addressCountMap[key]++;
890
+ }
891
+ }
892
+
893
+ addressIndex += numAddressPerCall;
894
+ }
895
+
896
+ throw new InsufficientBalanceError('Not enough balance for dual funding');
897
+ }
768
898
  }
769
899
  return BitcoinWalletProvider;
770
900
  };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@atomicfinance/bitcoin-wallet-provider",
3
3
  "umdName": "BitcoinWalletProvider",
4
- "version": "3.4.0",
4
+ "version": "3.4.2",
5
5
  "description": "Bitcoin Abstraction Layer Wallet Provider",
6
6
  "author": "Atomic Finance <info@atomic.finance>",
7
7
  "homepage": "",
@@ -15,9 +15,10 @@
15
15
  "lint:fix": "../../node_modules/.bin/eslint --fix --ignore-path ../../.eslintignore -c ../../.eslintrc.js ."
16
16
  },
17
17
  "dependencies": {
18
- "@atomicfinance/bitcoin-utils": "^3.4.0",
19
- "@atomicfinance/provider": "^3.4.0",
20
- "@atomicfinance/types": "^3.4.0",
18
+ "@atomicfinance/bitcoin-utils": "^3.4.2",
19
+ "@atomicfinance/provider": "^3.4.2",
20
+ "@atomicfinance/types": "^3.4.2",
21
+ "@node-dlc/core": "0.23.1",
21
22
  "bitcoin-networks": "^1.0.0",
22
23
  "bitcoinjs-lib": "5.2.0",
23
24
  "lodash": "^4.17.20",