@bitgo-beta/utxo-bin 2.8.3-beta.93 → 2.8.3-beta.930

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 (138) hide show
  1. package/README.md +4 -4
  2. package/dist/bin/index.js +5 -3
  3. package/dist/src/AddressParser.d.ts +0 -1
  4. package/dist/src/AddressParser.d.ts.map +1 -1
  5. package/dist/src/AddressParser.js +13 -7
  6. package/dist/src/InputParser.d.ts +1 -2
  7. package/dist/src/InputParser.d.ts.map +1 -1
  8. package/dist/src/InputParser.js +32 -22
  9. package/dist/src/OutputParser.d.ts +3 -3
  10. package/dist/src/OutputParser.d.ts.map +1 -1
  11. package/dist/src/OutputParser.js +18 -5
  12. package/dist/src/Parser.d.ts +3 -3
  13. package/dist/src/Parser.d.ts.map +1 -1
  14. package/dist/src/Parser.js +12 -5
  15. package/dist/src/ParserTx.d.ts +3 -4
  16. package/dist/src/ParserTx.d.ts.map +1 -1
  17. package/dist/src/ParserTx.js +7 -8
  18. package/dist/src/ScriptParser.d.ts +8 -6
  19. package/dist/src/ScriptParser.d.ts.map +1 -1
  20. package/dist/src/ScriptParser.js +27 -8
  21. package/dist/src/TxParser.d.ts +3 -2
  22. package/dist/src/TxParser.d.ts.map +1 -1
  23. package/dist/src/TxParser.js +10 -10
  24. package/dist/src/args/format.d.ts +8 -0
  25. package/dist/src/args/format.d.ts.map +1 -0
  26. package/dist/src/args/format.js +15 -0
  27. package/dist/src/args/index.d.ts +5 -0
  28. package/dist/src/args/index.d.ts.map +1 -0
  29. package/dist/src/args/index.js +21 -0
  30. package/dist/src/args/parseNetwork.d.ts +25 -0
  31. package/dist/src/args/parseNetwork.d.ts.map +1 -0
  32. package/dist/src/args/parseNetwork.js +75 -0
  33. package/dist/src/args/parseString.d.ts +40 -0
  34. package/dist/src/args/parseString.d.ts.map +1 -0
  35. package/dist/src/args/parseString.js +120 -0
  36. package/dist/src/args/walletKeys.d.ts +38 -0
  37. package/dist/src/args/walletKeys.d.ts.map +1 -0
  38. package/dist/src/args/walletKeys.js +28 -0
  39. package/dist/src/bip32.d.ts +5 -0
  40. package/dist/src/bip32.d.ts.map +1 -0
  41. package/dist/src/bip32.js +23 -0
  42. package/dist/src/commands/cmdAddress/cmdGenerate.d.ts +21 -0
  43. package/dist/src/commands/cmdAddress/cmdGenerate.d.ts.map +1 -0
  44. package/dist/src/commands/cmdAddress/cmdGenerate.js +89 -0
  45. package/dist/src/commands/cmdAddress/cmdParse.d.ts +20 -0
  46. package/dist/src/commands/cmdAddress/cmdParse.d.ts.map +1 -0
  47. package/dist/src/commands/cmdAddress/cmdParse.js +28 -0
  48. package/dist/src/commands/cmdAddress/index.d.ts +3 -0
  49. package/dist/src/commands/cmdAddress/index.d.ts.map +1 -0
  50. package/dist/src/commands/cmdAddress/index.js +16 -0
  51. package/dist/src/commands/cmdBip32.d.ts +16 -0
  52. package/dist/src/commands/cmdBip32.d.ts.map +1 -0
  53. package/dist/src/commands/cmdBip32.js +45 -0
  54. package/dist/src/commands/cmdParseScript.d.ts +18 -0
  55. package/dist/src/commands/cmdParseScript.d.ts.map +1 -0
  56. package/dist/src/commands/cmdParseScript.js +27 -0
  57. package/dist/src/commands/cmdParseTx.d.ts +30 -0
  58. package/dist/src/commands/cmdParseTx.d.ts.map +1 -0
  59. package/dist/src/commands/cmdParseTx.js +120 -0
  60. package/dist/src/commands/cmdPsbt/cmdAddDescriptorInput.d.ts +13 -0
  61. package/dist/src/commands/cmdPsbt/cmdAddDescriptorInput.d.ts.map +1 -0
  62. package/dist/src/commands/cmdPsbt/cmdAddDescriptorInput.js +67 -0
  63. package/dist/src/commands/cmdPsbt/cmdAddOutput.d.ts +11 -0
  64. package/dist/src/commands/cmdPsbt/cmdAddOutput.d.ts.map +1 -0
  65. package/dist/src/commands/cmdPsbt/cmdAddOutput.js +89 -0
  66. package/dist/src/commands/cmdPsbt/cmdCreate.d.ts +9 -0
  67. package/dist/src/commands/cmdPsbt/cmdCreate.d.ts.map +1 -0
  68. package/dist/src/commands/cmdPsbt/cmdCreate.js +23 -0
  69. package/dist/src/commands/cmdPsbt/cmdFinalize.d.ts +11 -0
  70. package/dist/src/commands/cmdPsbt/cmdFinalize.d.ts.map +1 -0
  71. package/dist/src/commands/cmdPsbt/cmdFinalize.js +43 -0
  72. package/dist/src/commands/cmdPsbt/cmdSign.d.ts +7 -0
  73. package/dist/src/commands/cmdPsbt/cmdSign.d.ts.map +1 -0
  74. package/dist/src/commands/cmdPsbt/cmdSign.js +24 -0
  75. package/dist/src/commands/cmdPsbt/index.d.ts +8 -0
  76. package/dist/src/commands/cmdPsbt/index.d.ts.map +1 -0
  77. package/dist/src/commands/cmdPsbt/index.js +27 -0
  78. package/dist/src/commands/cmdPsbt/withPsbt.d.ts +63 -0
  79. package/dist/src/commands/cmdPsbt/withPsbt.d.ts.map +1 -0
  80. package/dist/src/commands/cmdPsbt/withPsbt.js +66 -0
  81. package/dist/src/commands/cmdPsbt/wrap.d.ts +5 -0
  82. package/dist/src/commands/cmdPsbt/wrap.d.ts.map +1 -0
  83. package/dist/src/commands/cmdPsbt/wrap.js +27 -0
  84. package/dist/src/commands/formatString.d.ts +8 -0
  85. package/dist/src/commands/formatString.d.ts.map +1 -0
  86. package/dist/src/commands/formatString.js +14 -0
  87. package/dist/src/commands/index.d.ts +6 -0
  88. package/dist/src/commands/index.d.ts.map +1 -0
  89. package/dist/src/commands/index.js +22 -0
  90. package/dist/src/ecdsa.d.ts +1 -2
  91. package/dist/src/ecdsa.d.ts.map +1 -1
  92. package/dist/src/ecdsa.js +9 -9
  93. package/dist/src/fetch.d.ts +8 -1
  94. package/dist/src/fetch.d.ts.map +1 -1
  95. package/dist/src/fetch.js +42 -9
  96. package/dist/src/format.d.ts.map +1 -1
  97. package/dist/src/format.js +4 -6
  98. package/dist/src/generateAddress.d.ts +24 -9
  99. package/dist/src/generateAddress.d.ts.map +1 -1
  100. package/dist/src/generateAddress.js +60 -23
  101. package/dist/src/hollowSegwitSpend.d.ts +1 -1
  102. package/dist/src/hollowSegwitSpend.d.ts.map +1 -1
  103. package/dist/src/hollowSegwitSpend.js +3 -4
  104. package/dist/src/parseUnknown.js +4 -5
  105. package/dist/test/args/stringToBuffer.d.ts.map +1 -0
  106. package/dist/test/args/stringToBuffer.js +16 -0
  107. package/dist/test/bip32.d.ts +2 -0
  108. package/dist/test/bip32.d.ts.map +1 -0
  109. package/dist/test/bip32.js +22 -0
  110. package/dist/test/bip32.util.d.ts +6 -0
  111. package/dist/test/bip32.util.d.ts.map +1 -0
  112. package/dist/test/bip32.util.js +13 -0
  113. package/dist/test/cmdPsbt.d.ts +2 -0
  114. package/dist/test/cmdPsbt.d.ts.map +1 -0
  115. package/dist/test/cmdPsbt.js +102 -0
  116. package/dist/test/fixtures.d.ts +4 -4
  117. package/dist/test/fixtures.d.ts.map +1 -1
  118. package/dist/test/fixtures.js +11 -12
  119. package/dist/test/generateAddress.js +29 -12
  120. package/dist/test/parseAddress.d.ts +1 -5
  121. package/dist/test/parseAddress.d.ts.map +1 -1
  122. package/dist/test/parseAddress.js +15 -19
  123. package/dist/test/parseScript.js +10 -7
  124. package/dist/test/parseTransaction.js +11 -10
  125. package/dist/tsconfig.tsbuildinfo +1 -1
  126. package/package.json +8 -7
  127. package/dist/src/commands.d.ts +0 -78
  128. package/dist/src/commands.d.ts.map +0 -1
  129. package/dist/src/commands.js +0 -284
  130. package/dist/src/parseString.d.ts +0 -5
  131. package/dist/src/parseString.d.ts.map +0 -1
  132. package/dist/src/parseString.js +0 -29
  133. package/dist/src/readStdin.d.ts +0 -5
  134. package/dist/src/readStdin.d.ts.map +0 -1
  135. package/dist/src/readStdin.js +0 -42
  136. package/dist/test/stringToBuffer.d.ts.map +0 -1
  137. package/dist/test/stringToBuffer.js +0 -16
  138. /package/dist/test/{stringToBuffer.d.ts → args/stringToBuffer.d.ts} +0 -0
package/README.md CHANGED
@@ -3,7 +3,6 @@
3
3
  This repository contains a CLI tool for parsing BitGo wallet transactions (withdrawals) and
4
4
  formatting them for terminal output.
5
5
 
6
-
7
6
  # Installation
8
7
 
9
8
  ## npm
@@ -75,9 +74,9 @@ utxo-bin -n bitcoin parseTx \
75
74
 
76
75
  Supported transactions formats are
77
76
 
78
- * full-signed transactions
79
- * half-signed transactions in proprietary bitcoinjs-lib format ("legacy")
80
- * half-signed transactions in PSBT/BIP174 format
77
+ - full-signed transactions
78
+ - half-signed transactions in proprietary bitcoinjs-lib format ("legacy")
79
+ - half-signed transactions in PSBT/BIP174 format
81
80
 
82
81
  Supported encodings are hex and base64.
83
82
 
@@ -94,6 +93,7 @@ utxo-bin -n bitcoin parseAddress 3QJmV3qfvL9SuYo34YihAf3sRCW3qSinyC --convert
94
93
  ```
95
94
 
96
95
  ## Generate addresses
96
+
97
97
  ```
98
98
  utxo-bin generateAddresses \
99
99
  --userKey xpub661MyMwAqRbcEvoSo4qrsT5xhByHzUoBjm88hdCPohF1rdQ4TkntuHfccN2N7FbmAmBgmaBxD7VY1QZ43YfgGRLBL37BBkBhYbezgnsPRVP \
package/dist/bin/index.js CHANGED
@@ -5,10 +5,12 @@ const yargs = require("yargs");
5
5
  const commands_1 = require("../src/commands");
6
6
  yargs
7
7
  .command(commands_1.cmdParseTx)
8
- .command(commands_1.cmdParseAddress)
8
+ .command(commands_1.cmdAddress)
9
9
  .command(commands_1.cmdParseScript)
10
- .command(commands_1.cmdGenerateAddress)
10
+ .command(commands_1.cmdPsbt)
11
+ .command(commands_1.cmdBip32)
12
+ .strict()
11
13
  .demandCommand()
12
14
  .help()
13
15
  .parse();
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9iaW4vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsK0JBQStCO0FBQy9CLDhDQUFrRztBQUVsRyxLQUFLO0tBQ0YsT0FBTyxDQUFDLHFCQUFVLENBQUM7S0FDbkIsT0FBTyxDQUFDLDBCQUFlLENBQUM7S0FDeEIsT0FBTyxDQUFDLHlCQUFjLENBQUM7S0FDdkIsT0FBTyxDQUFDLDZCQUFrQixDQUFDO0tBQzNCLGFBQWEsRUFBRTtLQUNmLElBQUksRUFBRTtLQUNOLEtBQUssRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuaW1wb3J0ICogYXMgeWFyZ3MgZnJvbSAneWFyZ3MnO1xuaW1wb3J0IHsgY21kR2VuZXJhdGVBZGRyZXNzLCBjbWRQYXJzZUFkZHJlc3MsIGNtZFBhcnNlU2NyaXB0LCBjbWRQYXJzZVR4IH0gZnJvbSAnLi4vc3JjL2NvbW1hbmRzJztcblxueWFyZ3NcbiAgLmNvbW1hbmQoY21kUGFyc2VUeClcbiAgLmNvbW1hbmQoY21kUGFyc2VBZGRyZXNzKVxuICAuY29tbWFuZChjbWRQYXJzZVNjcmlwdClcbiAgLmNvbW1hbmQoY21kR2VuZXJhdGVBZGRyZXNzKVxuICAuZGVtYW5kQ29tbWFuZCgpXG4gIC5oZWxwKClcbiAgLnBhcnNlKCk7XG4iXX0=
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9iaW4vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsK0JBQStCO0FBRS9CLDhDQUE0RjtBQUU1RixLQUFLO0tBQ0YsT0FBTyxDQUFDLHFCQUFVLENBQUM7S0FDbkIsT0FBTyxDQUFDLHFCQUFVLENBQUM7S0FDbkIsT0FBTyxDQUFDLHlCQUFjLENBQUM7S0FDdkIsT0FBTyxDQUFDLGtCQUFPLENBQUM7S0FDaEIsT0FBTyxDQUFDLG1CQUFRLENBQUM7S0FDakIsTUFBTSxFQUFFO0tBQ1IsYUFBYSxFQUFFO0tBQ2YsSUFBSSxFQUFFO0tBQ04sS0FBSyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXG5pbXBvcnQgKiBhcyB5YXJncyBmcm9tICd5YXJncyc7XG5cbmltcG9ydCB7IGNtZFBhcnNlVHgsIGNtZFBhcnNlU2NyaXB0LCBjbWRCaXAzMiwgY21kUHNidCwgY21kQWRkcmVzcyB9IGZyb20gJy4uL3NyYy9jb21tYW5kcyc7XG5cbnlhcmdzXG4gIC5jb21tYW5kKGNtZFBhcnNlVHgpXG4gIC5jb21tYW5kKGNtZEFkZHJlc3MpXG4gIC5jb21tYW5kKGNtZFBhcnNlU2NyaXB0KVxuICAuY29tbWFuZChjbWRQc2J0KVxuICAuY29tbWFuZChjbWRCaXAzMilcbiAgLnN0cmljdCgpXG4gIC5kZW1hbmRDb21tYW5kKClcbiAgLmhlbHAoKVxuICAucGFyc2UoKTtcbiJdfQ==
@@ -1,4 +1,3 @@
1
- /// <reference types="node" />
2
1
  import * as utxolib from '@bitgo-beta/utxo-lib';
3
2
  import * as bech32 from 'bech32';
4
3
  import { Parser, ParserNode } from './Parser';
@@ -1 +1 @@
1
- {"version":3,"file":"AddressParser.d.ts","sourceRoot":"","sources":["../../src/AddressParser.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEjC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAW9C,qBAAa,aAAc,SAAQ,MAAM;IAE9B,MAAM,EAAE;QACb,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC;QAC1B,GAAG,EAAE,OAAO,CAAC;QACb,OAAO,EAAE,OAAO,CAAC;KAClB;gBAJM,MAAM,EAAE;QACb,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC;QAC1B,GAAG,EAAE,OAAO,CAAC;QACb,OAAO,EAAE,OAAO,CAAC;KAClB;IAKH,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,EAAE;IAwB9C,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,EAAE;IAU/C,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE;IAK1C,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE;IAS/C,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE;IASxE,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE;IAI1C,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE;IAI3C,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE;IAS5C,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,UAAU;IAsBzC,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,EAAE;IAmBzC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU;CAuCjC"}
1
+ {"version":3,"file":"AddressParser.d.ts","sourceRoot":"","sources":["../../src/AddressParser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEjC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAY9C,qBAAa,aAAc,SAAQ,MAAM;IAE9B,MAAM,EAAE;QACb,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC;QAC1B,GAAG,EAAE,OAAO,CAAC;QACb,OAAO,EAAE,OAAO,CAAC;KAClB;gBAJM,MAAM,EAAE;QACb,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC;QAC1B,GAAG,EAAE,OAAO,CAAC;QACb,OAAO,EAAE,OAAO,CAAC;KAClB;IAKH,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,EAAE;IAwB9C,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,EAAE;IAU/C,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE;IAK1C,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE;IAS/C,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE;IASxE,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE;IAI1C,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE;IAI3C,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE;IAS5C,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,UAAU;IA2BzC,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,EAAE;IAmBzC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU;CAuCjC"}
@@ -4,6 +4,7 @@ exports.AddressParser = void 0;
4
4
  const utxolib = require("@bitgo-beta/utxo-lib");
5
5
  const bech32 = require("bech32");
6
6
  const Parser_1 = require("./Parser");
7
+ const args_1 = require("./args");
7
8
  const bs58 = require('bs58');
8
9
  const bs58check = require('bs58check');
9
10
  const cashaddress = require('cashaddress');
@@ -85,15 +86,20 @@ class AddressParser extends Parser_1.Parser {
85
86
  ];
86
87
  }
87
88
  convert(outputScript) {
88
- return this.node('converted', undefined, utxolib.getNetworkList().flatMap((network) => utxolib.addressFormat.addressFormats
89
+ function getWidth(list) {
90
+ return Math.max(...list.map((s) => s.length));
91
+ }
92
+ const networkWith = getWidth((0, args_1.getNetworkList)().map(args_1.getNetworkName));
93
+ const addressFormatWith = getWidth(utxolib.addressFormat.addressFormats);
94
+ return this.node('converted', undefined, (0, args_1.getNetworkList)().flatMap((network) => utxolib.addressFormat.addressFormats
89
95
  .filter((f) => utxolib.addressFormat.isSupportedAddressFormat(f, network))
90
96
  .map((addressFormat) => {
91
- const name = utxolib.getNetworkName(network);
97
+ const label = `${(0, args_1.getNetworkName)(network).padEnd(networkWith)} ${addressFormat.padEnd(addressFormatWith)}`;
92
98
  try {
93
- return this.node(`${name} ${addressFormat}`, utxolib.addressFormat.fromOutputScriptWithFormat(outputScript, addressFormat, network));
99
+ return this.node(label, utxolib.addressFormat.fromOutputScriptWithFormat(outputScript, addressFormat, network));
94
100
  }
95
101
  catch (e) {
96
- return this.node(`${name} ${addressFormat}`, 'undefined');
102
+ return this.node(label, 'undefined');
97
103
  }
98
104
  })));
99
105
  }
@@ -115,7 +121,7 @@ class AddressParser extends Parser_1.Parser {
115
121
  ];
116
122
  }
117
123
  parse(input) {
118
- const networks = this.params.network ? [this.params.network] : utxolib.getNetworkList();
124
+ const networks = this.params.network ? [this.params.network] : (0, args_1.getNetworkList)();
119
125
  const matches = networks.flatMap((network) => {
120
126
  try {
121
127
  const [addressFormat, buffer] = utxolib.addressFormat.toOutputScriptAndFormat(input, network);
@@ -135,7 +141,7 @@ class AddressParser extends Parser_1.Parser {
135
141
  }
136
142
  nodes.push(this.node('format', firstMatch.addressFormat));
137
143
  nodes.push(this.node('outputScript', firstMatch.buffer, this.parseOutputScript(firstMatch.buffer)));
138
- nodes.push(this.node('network', matches.map((m) => utxolib.getNetworkName(m.network)).join(', ')));
144
+ nodes.push(this.node('network', matches.map((m) => (0, args_1.getNetworkName)(m.network)).join(', ')));
139
145
  if (this.params.all || this.params.convert) {
140
146
  nodes.push(this.convert(firstMatch.buffer));
141
147
  }
@@ -144,4 +150,4 @@ class AddressParser extends Parser_1.Parser {
144
150
  }
145
151
  }
146
152
  exports.AddressParser = AddressParser;
147
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWRkcmVzc1BhcnNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9BZGRyZXNzUGFyc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGdEQUFnRDtBQUNoRCxpQ0FBaUM7QUFFakMscUNBQThDO0FBRTlDLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM3QixNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDdkMsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBRTNDLFNBQVMsV0FBVyxDQUFDLENBQVM7SUFDNUIsdUNBQXVDO0lBQ3ZDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7QUFDN0MsQ0FBQztBQUVELE1BQWEsYUFBYyxTQUFRLGVBQU07SUFDdkMsWUFDUyxNQUlOO1FBRUQsS0FBSyxFQUFFLENBQUM7UUFORCxXQUFNLEdBQU4sTUFBTSxDQUlaO0lBR0gsQ0FBQztJQUVELGdCQUFnQixDQUFDLE1BQWM7UUFDN0IsSUFBSSxJQUEwQixDQUFDO1FBQy9CLElBQUk7WUFDRixDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ3pEO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixTQUFTO1NBQ1Y7UUFDRCxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1QsT0FBTyxFQUFFLENBQUM7U0FDWDtRQUNELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUN6QixJQUFJLElBQUksQ0FBQztZQUNULElBQUk7Z0JBQ0YsSUFBSSxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDN0I7WUFBQyxPQUFP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QyxDQUFDLENBQUM7WUFDMUQsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxVQUFVLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRW5HLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUU7Z0JBQzFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQzthQUM3QztTQUNGO1FBRUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDNUMsQ0FBQztDQUNGO0FBcktELHNDQXFLQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuaW1wb3J0ICogYXMgYmVjaDMyIGZyb20gJ2JlY2gzMic7XG5cbmltcG9ydCB7IFBhcnNlciwgUGFyc2VyTm9kZSB9IGZyb20gJy4vUGFyc2VyJztcblxuY29uc3QgYnM1OCA9IHJlcXVpcmUoJ2JzNTgnKTtcbmNvbnN0IGJzNThjaGVjayA9IHJlcXVpcmUoJ2JzNThjaGVjaycpO1xuY29uc3QgY2FzaGFkZHJlc3MgPSByZXF1aXJlKCdjYXNoYWRkcmVzcycpO1xuXG5mdW5jdGlvbiBpc1ByaW50YWJsZShzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzY2NDQ3NDk0XG4gIHJldHVybiAhcy5tYXRjaCgvW1xccHtDY31cXHB7Q259XFxwe0NzfV0rL2d1KTtcbn1cblxuZXhwb3J0IGNsYXNzIEFkZHJlc3NQYXJzZXIgZXh0ZW5kcyBQYXJzZXIge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcGFyYW1zOiB7XG4gICAgICBuZXR3b3JrPzogdXR4b2xpYi5OZXR3b3JrO1xuICAgICAgYWxsOiBib29sZWFuO1xuICAgICAgY29udmVydDogYm9vbGVhbjtcbiAgICB9XG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICB0cnlQYXJzZU9wUmV0dXJuKHNjcmlwdDogQnVmZmVyKTogUGFyc2VyTm9kZVtdIHtcbiAgICBsZXQgZGF0YTogQnVmZmVyW10gfCB1bmRlZmluZWQ7XG4gICAgdHJ5IHtcbiAgICAgICh7IGRhdGEgfSA9IHV0eG9saWIucGF5bWVudHMuZW1iZWQoeyBvdXRwdXQ6IHNjcmlwdCB9KSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gaWdub3JlXG4gICAgfVxuICAgIGlmICghZGF0YSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICByZXR1cm4gZGF0YS5tYXAoKGJ1ZiwgaSkgPT4ge1xuICAgICAgbGV0IHV0Zjg7XG4gICAgICB0cnkge1xuICAgICAgICB1dGY4ID0gYnVmLnRvU3RyaW5nKCd1dGY4Jyk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8vIGlnbm9yZVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMubm9kZShgT1BfUkVUVVJOICR7aX1gLCBgJHtidWYubGVuZ3RofSBieXRlc2AsIFtcbiAgICAgICAgdGhpcy5ub2RlKCdoZXgnLCBidWYpLFxuICAgICAgICAuLi4odXRmOCAmJiBpc1ByaW50YWJsZSh1dGY4KSA/IFt0aGlzLm5vZGUoJ3V0ZjgnLCB1dGY4KV0gOiBbXSksXG4gICAgICBdKTtcbiAgICB9KTtcbiAgfVxuXG4gIHBhcnNlT3V0cHV0U2NyaXB0KGJ1ZmZlcjogQnVmZmVyKTogUGFyc2VyTm9kZVtdIHtcbiAgICByZXR1cm4gW1xuICAgICAgdGhpcy5ub2RlKCdzY3JpcHRQdWJLZXknLCBgWyR7YnVmZmVyLmxlbmd0aH1ieXRlXWAsIFtcbiAgICAgICAgdGhpcy5ub2RlKCd0eXBlJywgdXR4b2xpYi5jbGFzc2lmeS5vdXRwdXQoYnVmZmVyKSksXG4gICAgICAgIHRoaXMubm9kZSgnaGV4JywgYnVmZmVyLnRvU3RyaW5nKCdoZXgnKSksXG4gICAgICAgIHRoaXMubm9kZSgnYXNtJywgdXR4b2xpYi5zY3JpcHQudG9BU00oYnVmZmVyKSwgdGhpcy50cnlQYXJzZU9wUmV0dXJuKGJ1ZmZlcikpLFxuICAgICAgXSksXG4gICAgXTtcbiAgfVxuXG4gIHBhcnNlQmFzZTU4KGFkZHJlc3M6IHN0cmluZyk6IFBhcnNlck5vZGVbXSB7XG4gICAgY29uc3QgcGF5bG9hZCA9IGJzNTguZGVjb2RlKGFkZHJlc3MpO1xuICAgIHJldHVybiBbdGhpcy5ub2RlKCdwYXlsb2FkJywgcGF5bG9hZCldO1xuICB9XG5cbiAgcGFyc2VCYXNlNThDaGVjayhhZGRyZXNzOiBzdHJpbmcpOiBQYXJzZXJOb2RlW10ge1xuICAgIGNvbnN0IHBheWxvYWQgPSBiczU4Y2hlY2suZGVjb2RlKGFkZHJlc3MpO1xuICAgIHJldHVybiBbXG4gICAgICB0aGlzLm5vZGUoJ3BheWxvYWQnLCBwYXlsb2FkKSxcbiAgICAgIHRoaXMubm9kZSgndmVyc2lvbicsIHBheWxvYWQucmVhZFVJbnQ4KDApLnRvU3RyaW5nKCcxNicpKSxcbiAgICAgIHRoaXMubm9kZSgnaGFzaCcsIHBheWxvYWQuc2xpY2UoMSkpLFxuICAgIF07XG4gIH1cblxuICBwYXJzZVdpdGhCZWNoTGliKGJlY2hsaWI6IGJlY2gzMi5CZWNoTGliLCBhZGRyZXNzOiBzdHJpbmcpOiBQYXJzZXJOb2RlW10ge1xuICAgIGNvbnN0IGRlY29kZWQgPSBiZWNobGliLmRlY29kZShhZGRyZXNzKTtcbiAgICByZXR1cm4gW1xuICAgICAgdGhpcy5ub2RlKCdwcmVmaXgnLCBkZWNvZGVkLnByZWZpeCksXG4gICAgICB0aGlzLm5vZGUoJ3dvcmRzJywgQnVmZmVyLmZyb20oZGVjb2RlZC53b3JkcykpLFxuICAgICAgdGhpcy5ub2RlKCdieXRlcycsIEJ1ZmZlci5mcm9tKGJlY2hsaWIuZnJvbVdvcmRzKGRlY29kZWQud29yZHMpKSksXG4gICAgXTtcbiAgfVxuXG4gIHBhcnNlQmVjaDMyKGFkZHJlc3M6IHN0cmluZyk6IFBhcnNlck5vZGVbXSB7XG4gICAgcmV0dXJuIHRoaXMucGFyc2VXaXRoQmVjaExpYihiZWNoMzIuYmVjaDMyLCBhZGRyZXNzKTtcbiAgfVxuXG4gIHBhcnNlQmVjaDMybShhZGRyZXNzOiBzdHJpbmcpOiBQYXJzZXJOb2RlW10ge1xuICAgIHJldHVybiB0aGlzLnBhcnNlV2l0aEJlY2hMaWIoYmVjaDMyLmJlY2gzMm0sIGFkZHJlc3MpO1xuICB9XG5cbiAgcGFyc2VDYXNoYWRkcihhZGRyZXNzOiBzdHJpbmcpOiBQYXJzZXJOb2RlW10ge1xuICAgIGNvbnN0IHBheWxvYWQgPSBjYXNoYWRkcmVzcy5kZWNvZGUoYWRkcmVzcyk7XG4gICAgcmV0dXJuIFtcbiAgICAgIHRoaXMubm9kZSgncHJlZml4JywgcGF5bG9hZC5wcmVmaXgpLFxuICAgICAgdGhpcy5ub2RlKCd2ZXJzaW9uJywgcGF5bG9hZC52ZXJzaW9uKSxcbiAgICAgIHRoaXMubm9kZSgnaGFzaCcsIHBheWxvYWQuaGFzaCksXG4gICAgXTtcbiAgfVxuXG4gIGNvbnZlcnQob3V0cHV0U2NyaXB0OiBCdWZmZXIpOiBQYXJzZXJOb2RlIHtcbiAgICByZXR1cm4gdGhpcy5ub2RlKFxuICAgICAgJ2NvbnZlcnRlZCcsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB1dHhvbGliLmdldE5ldHdvcmtMaXN0KCkuZmxhdE1hcCgobmV0d29yaykgPT5cbiAgICAgICAgdXR4b2xpYi5hZGRyZXNzRm9ybWF0LmFkZHJlc3NGb3JtYXRzXG4gICAgICAgICAgLmZpbHRlcigoZikgPT4gdXR4b2xpYi5hZGRyZXNzRm9ybWF0LmlzU3VwcG9ydGVkQWRkcmVzc0Zvcm1hdChmLCBuZXR3b3JrKSlcbiAgICAgICAgICAubWFwKChhZGRyZXNzRm9ybWF0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBuYW1lID0gdXR4b2xpYi5nZXROZXR3b3JrTmFtZShuZXR3b3JrKSBhcyBzdHJpbmc7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5ub2RlKFxuICAgICAgICAgICAgICAgIGAke25hbWV9ICR7YWRkcmVzc0Zvcm1hdH1gLFxuICAgICAgICAgICAgICAgIHV0eG9saWIuYWRkcmVzc0Zvcm1hdC5mcm9tT3V0cHV0U2NyaXB0V2l0aEZvcm1hdChvdXRwdXRTY3JpcHQsIGFkZHJlc3NGb3JtYXQsIG5ldHdvcmspXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLm5vZGUoYCR7bmFtZX0gJHthZGRyZXNzRm9ybWF0fWAsICd1bmRlZmluZWQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwYXJzZVRvQnl0ZXMoaW5wdXQ6IHN0cmluZyk6IFBhcnNlck5vZGVbXSB7XG4gICAgdHlwZSBEZWNvZGVyID0gKGFkZHJlc3M6IHN0cmluZykgPT4gUGFyc2VyTm9kZVtdO1xuICAgIGNvbnN0IGRlY29kZVdpdGggPSAobmFtZTogc3RyaW5nLCBkZWNvZGVyOiBEZWNvZGVyKTogUGFyc2VyTm9kZVtdID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBbdGhpcy5ub2RlKG5hbWUsIHVuZGVmaW5lZCwgZGVjb2RlcihpbnB1dCkpXTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyYW1zLmFsbCA/IFt0aGlzLm5vZGUobmFtZSwgdW5kZWZpbmVkLCBbdGhpcy5ub2RlKCdkZWNvZGVFcnJvcicsIFN0cmluZyhlKSldKV0gOiBbXTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcmV0dXJuIFtcbiAgICAgIC4uLmRlY29kZVdpdGgoJ2Jhc2U1OCcsIHRoaXMucGFyc2VCYXNlNTguYmluZCh0aGlzKSksXG4gICAgICAuLi5kZWNvZGVXaXRoKCdiYXNlNThDaGVjaycsIHRoaXMucGFyc2VCYXNlNThDaGVjay5iaW5kKHRoaXMpKSxcbiAgICAgIC4uLmRlY29kZVdpdGgoJ2JlY2gzMicsIHRoaXMucGFyc2VCZWNoMzIuYmluZCh0aGlzKSksXG4gICAgICAuLi5kZWNvZGVXaXRoKCdiZWNoMzJtJywgdGhpcy5wYXJzZUJlY2gzMm0uYmluZCh0aGlzKSksXG4gICAgICAuLi5kZWNvZGVXaXRoKCdjYXNoYWRkcicsIHRoaXMucGFyc2VDYXNoYWRkci5iaW5kKHRoaXMpKSxcbiAgICBdO1xuICB9XG5cbiAgcGFyc2UoaW5wdXQ6IHN0cmluZyk6IFBhcnNlck5vZGUge1xuICAgIGNvbnN0IG5ldHdvcmtzID0gdGhpcy5wYXJhbXMubmV0d29yayA/IFt0aGlzLnBhcmFtcy5uZXR3b3JrXSA6IHV0eG9saWIuZ2V0TmV0d29ya0xpc3QoKTtcblxuICAgIHR5cGUgTWF0Y2ggPSB7XG4gICAgICBuZXR3b3JrOiB1dHhvbGliLk5ldHdvcms7XG4gICAgICBhZGRyZXNzOiBzdHJpbmc7XG4gICAgICBhZGRyZXNzRm9ybWF0OiB1dHhvbGliLmFkZHJlc3NGb3JtYXQuQWRkcmVzc0Zvcm1hdDtcbiAgICAgIGJ1ZmZlcjogQnVmZmVyO1xuICAgIH07XG4gICAgY29uc3QgbWF0Y2hlczogTWF0Y2hbXSA9IG5ldHdvcmtzLmZsYXRNYXAoKG5ldHdvcmspID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IFthZGRyZXNzRm9ybWF0LCBidWZmZXJdID0gdXR4b2xpYi5hZGRyZXNzRm9ybWF0LnRvT3V0cHV0U2NyaXB0QW5kRm9ybWF0KGlucHV0LCBuZXR3b3JrKTtcbiAgICAgICAgY29uc3QgYWRkcmVzcyA9IHV0eG9saWIuYWRkcmVzc0Zvcm1hdC5mcm9tT3V0cHV0U2NyaXB0V2l0aEZvcm1hdChidWZmZXIsIGFkZHJlc3NGb3JtYXQsIG5ldHdvcmspO1xuICAgICAgICByZXR1cm4gW3sgbmV0d29yaywgYWRkcmVzcywgYWRkcmVzc0Zvcm1hdCwgYnVmZmVyIH1dO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgZmlyc3RNYXRjaCA9IG1hdGNoZXNbMF07XG4gICAgY29uc3Qgbm9kZXM6IFBhcnNlck5vZGVbXSA9IFtdO1xuXG4gICAgbm9kZXMucHVzaCguLi50aGlzLnBhcnNlVG9CeXRlcyhpbnB1dCkpO1xuXG4gICAgaWYgKGZpcnN0TWF0Y2gpIHtcbiAgICAgIGlmIChpbnB1dCAhPT0gZmlyc3RNYXRjaC5hZGRyZXNzKSB7XG4gICAgICAgIG5vZGVzLnB1c2godGhpcy5ub2RlKCdub3JtYWxpemVkJywgZmlyc3RNYXRjaC5hZGRyZXNzLCB0aGlzLnBhcnNlVG9CeXRlcyhmaXJzdE1hdGNoLmFkZHJlc3MpKSk7XG4gICAgICB9XG5cbiAgICAgIG5vZGVzLnB1c2godGhpcy5ub2RlKCdmb3JtYXQnLCBmaXJzdE1hdGNoLmFkZHJlc3NGb3JtYXQpKTtcbiAgICAgIG5vZGVzLnB1c2godGhpcy5ub2RlKCdvdXRwdXRTY3JpcHQnLCBmaXJzdE1hdGNoLmJ1ZmZlciwgdGhpcy5wYXJzZU91dHB1dFNjcmlwdChmaXJzdE1hdGNoLmJ1ZmZlcikpKTtcbiAgICAgIG5vZGVzLnB1c2godGhpcy5ub2RlKCduZXR3b3JrJywgbWF0Y2hlcy5tYXAoKG0pID0+IHV0eG9saWIuZ2V0TmV0d29ya05hbWUobS5uZXR3b3JrKSkuam9pbignLCAnKSkpO1xuXG4gICAgICBpZiAodGhpcy5wYXJhbXMuYWxsIHx8IHRoaXMucGFyYW1zLmNvbnZlcnQpIHtcbiAgICAgICAgbm9kZXMucHVzaCh0aGlzLmNvbnZlcnQoZmlyc3RNYXRjaC5idWZmZXIpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5ub2RlKCdhZGRyZXNzJywgaW5wdXQsIG5vZGVzKTtcbiAgfVxufVxuIl19
153
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWRkcmVzc1BhcnNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9BZGRyZXNzUGFyc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGdEQUFnRDtBQUNoRCxpQ0FBaUM7QUFFakMscUNBQThDO0FBQzlDLGlDQUF3RDtBQUV4RCxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDN0IsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ3ZDLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUUzQyxTQUFTLFdBQVcsQ0FBQyxDQUFTO0lBQzVCLHVDQUF1QztJQUN2QyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0FBQzdDLENBQUM7QUFFRCxNQUFhLGFBQWMsU0FBUSxlQUFNO0lBQ3ZDLFlBQ1MsTUFJTjtRQUVELEtBQUssRUFBRSxDQUFDO1FBTkQsV0FBTSxHQUFOLE1BQU0sQ0FJWjtJQUdILENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxNQUFjO1FBQzdCLElBQUksSUFBMEIsQ0FBQztRQUMvQixJQUFJLENBQUM7WUFDSCxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzFELENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsU0FBUztRQUNYLENBQUM7UUFDRCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDVixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDekIsSUFBSSxJQUFJLENBQUM7WUFDVCxJQUFJLENBQUM7Z0JBQ0gsSUFBSSxHQUFHLEdB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LENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDOUMsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM1QyxDQUFDO0NBQ0Y7QUExS0Qsc0NBMEtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5pbXBvcnQgKiBhcyBiZWNoMzIgZnJvbSAnYmVjaDMyJztcblxuaW1wb3J0IHsgUGFyc2VyLCBQYXJzZXJOb2RlIH0gZnJvbSAnLi9QYXJzZXInO1xuaW1wb3J0IHsgZ2V0TmV0d29ya0xpc3QsIGdldE5ldHdvcmtOYW1lIH0gZnJvbSAnLi9hcmdzJztcblxuY29uc3QgYnM1OCA9IHJlcXVpcmUoJ2JzNTgnKTtcbmNvbnN0IGJzNThjaGVjayA9IHJlcXVpcmUoJ2JzNThjaGVjaycpO1xuY29uc3QgY2FzaGFkZHJlc3MgPSByZXF1aXJlKCdjYXNoYWRkcmVzcycpO1xuXG5mdW5jdGlvbiBpc1ByaW50YWJsZShzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzY2NDQ3NDk0XG4gIHJldHVybiAhcy5tYXRjaCgvW1xccHtDY31cXHB7Q259XFxwe0NzfV0rL2d1KTtcbn1cblxuZXhwb3J0IGNsYXNzIEFkZHJlc3NQYXJzZXIgZXh0ZW5kcyBQYXJzZXIge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcGFyYW1zOiB7XG4gICAgICBuZXR3b3JrPzogdXR4b2xpYi5OZXR3b3JrO1xuICAgICAgYWxsOiBib29sZWFuO1xuICAgICAgY29udmVydDogYm9vbGVhbjtcbiAgICB9XG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICB0cnlQYXJzZU9wUmV0dXJuKHNjcmlwdDogQnVmZmVyKTogUGFyc2VyTm9kZVtdIHtcbiAgICBsZXQgZGF0YTogQnVmZmVyW10gfCB1bmRlZmluZWQ7XG4gICAgdHJ5IHtcbiAgICAgICh7IGRhdGEgfSA9IHV0eG9saWIucGF5bWVudHMuZW1iZWQoeyBvdXRwdXQ6IHNjcmlwdCB9KSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gaWdub3JlXG4gICAgfVxuICAgIGlmICghZGF0YSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICByZXR1cm4gZGF0YS5tYXAoKGJ1ZiwgaSkgPT4ge1xuICAgICAgbGV0IHV0Zjg7XG4gICAgICB0cnkge1xuICAgICAgICB1dGY4ID0gYnVmLnRvU3RyaW5nKCd1dGY4Jyk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8vIGlnbm9yZVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMubm9kZShgT1BfUkVUVVJOICR7aX1gLCBgJHtidWYubGVuZ3RofSBieXRlc2AsIFtcbiAgICAgICAgdGhpcy5ub2RlKCdoZXgnLCBidWYpLFxuICAgICAgICAuLi4odXRmOCAmJiBpc1ByaW50YWJsZSh1dGY4KSA/IFt0aGlzLm5vZGUoJ3V0ZjgnLCB1dGY4KV0gOiBbXSksXG4gICAgICBdKTtcbiAgICB9KTtcbiAgfVxuXG4gIHBhcnNlT3V0cHV0U2NyaXB0KGJ1ZmZlcjogQnVmZmVyKTogUGFyc2VyTm9kZVtdIHtcbiAgICByZXR1cm4gW1xuICAgICAgdGhpcy5ub2RlKCdzY3JpcHRQdWJLZXknLCBgWyR7YnVmZmVyLmxlbmd0aH1ieXRlXWAsIFtcbiAgICAgICAgdGhpcy5ub2RlKCd0eXBlJywgdXR4b2xpYi5jbGFzc2lmeS5vdXRwdXQoYnVmZmVyKSksXG4gICAgICAgIHRoaXMubm9kZSgnaGV4JywgYnVmZmVyLnRvU3RyaW5nKCdoZXgnKSksXG4gICAgICAgIHRoaXMubm9kZSgnYXNtJywgdXR4b2xpYi5zY3JpcHQudG9BU00oYnVmZmVyKSwgdGhpcy50cnlQYXJzZU9wUmV0dXJuKGJ1ZmZlcikpLFxuICAgICAgXSksXG4gICAgXTtcbiAgfVxuXG4gIHBhcnNlQmFzZTU4KGFkZHJlc3M6IHN0cmluZyk6IFBhcnNlck5vZGVbXSB7XG4gICAgY29uc3QgcGF5bG9hZCA9IGJzNTguZGVjb2RlKGFkZHJlc3MpO1xuICAgIHJldHVybiBbdGhpcy5ub2RlKCdwYXlsb2FkJywgcGF5bG9hZCldO1xuICB9XG5cbiAgcGFyc2VCYXNlNThDaGVjayhhZGRyZXNzOiBzdHJpbmcpOiBQYXJzZXJOb2RlW10ge1xuICAgIGNvbnN0IHBheWxvYWQgPSBiczU4Y2hlY2suZGVjb2RlKGFkZHJlc3MpO1xuICAgIHJldHVybiBbXG4gICAgICB0aGlzLm5vZGUoJ3BheWxvYWQnLCBwYXlsb2FkKSxcbiAgICAgIHRoaXMubm9kZSgndmVyc2lvbicsIHBheWxvYWQucmVhZFVJbnQ4KDApLnRvU3RyaW5nKCcxNicpKSxcbiAgICAgIHRoaXMubm9kZSgnaGFzaCcsIHBheWxvYWQuc2xpY2UoMSkpLFxuICAgIF07XG4gIH1cblxuICBwYXJzZVdpdGhCZWNoTGliKGJlY2hsaWI6IGJlY2gzMi5CZWNoTGliLCBhZGRyZXNzOiBzdHJpbmcpOiBQYXJzZXJOb2RlW10ge1xuICAgIGNvbnN0IGRlY29kZWQgPSBiZWNobGliLmRlY29kZShhZGRyZXNzKTtcbiAgICByZXR1cm4gW1xuICAgICAgdGhpcy5ub2RlKCdwcmVmaXgnLCBkZWNvZGVkLnByZWZpeCksXG4gICAgICB0aGlzLm5vZGUoJ3dvcmRzJywgQnVmZmVyLmZyb20oZGVjb2RlZC53b3JkcykpLFxuICAgICAgdGhpcy5ub2RlKCdieXRlcycsIEJ1ZmZlci5mcm9tKGJlY2hsaWIuZnJvbVdvcmRzKGRlY29kZWQud29yZHMpKSksXG4gICAgXTtcbiAgfVxuXG4gIHBhcnNlQmVjaDMyKGFkZHJlc3M6IHN0cmluZyk6IFBhcnNlck5vZGVbXSB7XG4gICAgcmV0dXJuIHRoaXMucGFyc2VXaXRoQmVjaExpYihiZWNoMzIuYmVjaDMyLCBhZGRyZXNzKTtcbiAgfVxuXG4gIHBhcnNlQmVjaDMybShhZGRyZXNzOiBzdHJpbmcpOiBQYXJzZXJOb2RlW10ge1xuICAgIHJldHVybiB0aGlzLnBhcnNlV2l0aEJlY2hMaWIoYmVjaDMyLmJlY2gzMm0sIGFkZHJlc3MpO1xuICB9XG5cbiAgcGFyc2VDYXNoYWRkcihhZGRyZXNzOiBzdHJpbmcpOiBQYXJzZXJOb2RlW10ge1xuICAgIGNvbnN0IHBheWxvYWQgPSBjYXNoYWRkcmVzcy5kZWNvZGUoYWRkcmVzcyk7XG4gICAgcmV0dXJuIFtcbiAgICAgIHRoaXMubm9kZSgncHJlZml4JywgcGF5bG9hZC5wcmVmaXgpLFxuICAgICAgdGhpcy5ub2RlKCd2ZXJzaW9uJywgcGF5bG9hZC52ZXJzaW9uKSxcbiAgICAgIHRoaXMubm9kZSgnaGFzaCcsIHBheWxvYWQuaGFzaCksXG4gICAgXTtcbiAgfVxuXG4gIGNvbnZlcnQob3V0cHV0U2NyaXB0OiBCdWZmZXIpOiBQYXJzZXJOb2RlIHtcbiAgICBmdW5jdGlvbiBnZXRXaWR0aChsaXN0OiByZWFkb25seSBzdHJpbmdbXSk6IG51bWJlciB7XG4gICAgICByZXR1cm4gTWF0aC5tYXgoLi4ubGlzdC5tYXAoKHMpID0+IHMubGVuZ3RoKSk7XG4gICAgfVxuICAgIGNvbnN0IG5ldHdvcmtXaXRoID0gZ2V0V2lkdGgoZ2V0TmV0d29ya0xpc3QoKS5tYXAoZ2V0TmV0d29ya05hbWUpKTtcbiAgICBjb25zdCBhZGRyZXNzRm9ybWF0V2l0aCA9IGdldFdpZHRoKHV0eG9saWIuYWRkcmVzc0Zvcm1hdC5hZGRyZXNzRm9ybWF0cyk7XG4gICAgcmV0dXJuIHRoaXMubm9kZShcbiAgICAgICdjb252ZXJ0ZWQnLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgZ2V0TmV0d29ya0xpc3QoKS5mbGF0TWFwKChuZXR3b3JrKSA9PlxuICAgICAgICB1dHhvbGliLmFkZHJlc3NGb3JtYXQuYWRkcmVzc0Zvcm1hdHNcbiAgICAgICAgICAuZmlsdGVyKChmKSA9PiB1dHhvbGliLmFkZHJlc3NGb3JtYXQuaXNTdXBwb3J0ZWRBZGRyZXNzRm9ybWF0KGYsIG5ldHdvcmspKVxuICAgICAgICAgIC5tYXAoKGFkZHJlc3NGb3JtYXQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxhYmVsID0gYCR7Z2V0TmV0d29ya05hbWUobmV0d29yaykucGFkRW5kKG5ldHdvcmtXaXRoKX0gJHthZGRyZXNzRm9ybWF0LnBhZEVuZChhZGRyZXNzRm9ybWF0V2l0aCl9YDtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLm5vZGUoXG4gICAgICAgICAgICAgICAgbGFiZWwsXG4gICAgICAgICAgICAgICAgdXR4b2xpYi5hZGRyZXNzRm9ybWF0LmZyb21PdXRwdXRTY3JpcHRXaXRoRm9ybWF0KG91dHB1dFNjcmlwdCwgYWRkcmVzc0Zvcm1hdCwgbmV0d29yaylcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubm9kZShsYWJlbCwgJ3VuZGVmaW5lZCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHBhcnNlVG9CeXRlcyhpbnB1dDogc3RyaW5nKTogUGFyc2VyTm9kZVtdIHtcbiAgICB0eXBlIERlY29kZXIgPSAoYWRkcmVzczogc3RyaW5nKSA9PiBQYXJzZXJOb2RlW107XG4gICAgY29uc3QgZGVjb2RlV2l0aCA9IChuYW1lOiBzdHJpbmcsIGRlY29kZXI6IERlY29kZXIpOiBQYXJzZXJOb2RlW10gPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIFt0aGlzLm5vZGUobmFtZSwgdW5kZWZpbmVkLCBkZWNvZGVyKGlucHV0KSldO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5wYXJhbXMuYWxsID8gW3RoaXMubm9kZShuYW1lLCB1bmRlZmluZWQsIFt0aGlzLm5vZGUoJ2RlY29kZUVycm9yJywgU3RyaW5nKGUpKV0pXSA6IFtdO1xuICAgICAgfVxuICAgIH07XG5cbiAgICByZXR1cm4gW1xuICAgICAgLi4uZGVjb2RlV2l0aCgnYmFzZTU4JywgdGhpcy5wYXJzZUJhc2U1OC5iaW5kKHRoaXMpKSxcbiAgICAgIC4uLmRlY29kZVdpdGgoJ2Jhc2U1OENoZWNrJywgdGhpcy5wYXJzZUJhc2U1OENoZWNrLmJpbmQodGhpcykpLFxuICAgICAgLi4uZGVjb2RlV2l0aCgnYmVjaDMyJywgdGhpcy5wYXJzZUJlY2gzMi5iaW5kKHRoaXMpKSxcbiAgICAgIC4uLmRlY29kZVdpdGgoJ2JlY2gzMm0nLCB0aGlzLnBhcnNlQmVjaDMybS5iaW5kKHRoaXMpKSxcbiAgICAgIC4uLmRlY29kZVdpdGgoJ2Nhc2hhZGRyJywgdGhpcy5wYXJzZUNhc2hhZGRyLmJpbmQodGhpcykpLFxuICAgIF07XG4gIH1cblxuICBwYXJzZShpbnB1dDogc3RyaW5nKTogUGFyc2VyTm9kZSB7XG4gICAgY29uc3QgbmV0d29ya3MgPSB0aGlzLnBhcmFtcy5uZXR3b3JrID8gW3RoaXMucGFyYW1zLm5ldHdvcmtdIDogZ2V0TmV0d29ya0xpc3QoKTtcblxuICAgIHR5cGUgTWF0Y2ggPSB7XG4gICAgICBuZXR3b3JrOiB1dHhvbGliLk5ldHdvcms7XG4gICAgICBhZGRyZXNzOiBzdHJpbmc7XG4gICAgICBhZGRyZXNzRm9ybWF0OiB1dHhvbGliLmFkZHJlc3NGb3JtYXQuQWRkcmVzc0Zvcm1hdDtcbiAgICAgIGJ1ZmZlcjogQnVmZmVyO1xuICAgIH07XG4gICAgY29uc3QgbWF0Y2hlczogTWF0Y2hbXSA9IG5ldHdvcmtzLmZsYXRNYXAoKG5ldHdvcmspID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IFthZGRyZXNzRm9ybWF0LCBidWZmZXJdID0gdXR4b2xpYi5hZGRyZXNzRm9ybWF0LnRvT3V0cHV0U2NyaXB0QW5kRm9ybWF0KGlucHV0LCBuZXR3b3JrKTtcbiAgICAgICAgY29uc3QgYWRkcmVzcyA9IHV0eG9saWIuYWRkcmVzc0Zvcm1hdC5mcm9tT3V0cHV0U2NyaXB0V2l0aEZvcm1hdChidWZmZXIsIGFkZHJlc3NGb3JtYXQsIG5ldHdvcmspO1xuICAgICAgICByZXR1cm4gW3sgbmV0d29yaywgYWRkcmVzcywgYWRkcmVzc0Zvcm1hdCwgYnVmZmVyIH1dO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgZmlyc3RNYXRjaCA9IG1hdGNoZXNbMF07XG4gICAgY29uc3Qgbm9kZXM6IFBhcnNlck5vZGVbXSA9IFtdO1xuXG4gICAgbm9kZXMucHVzaCguLi50aGlzLnBhcnNlVG9CeXRlcyhpbnB1dCkpO1xuXG4gICAgaWYgKGZpcnN0TWF0Y2gpIHtcbiAgICAgIGlmIChpbnB1dCAhPT0gZmlyc3RNYXRjaC5hZGRyZXNzKSB7XG4gICAgICAgIG5vZGVzLnB1c2godGhpcy5ub2RlKCdub3JtYWxpemVkJywgZmlyc3RNYXRjaC5hZGRyZXNzLCB0aGlzLnBhcnNlVG9CeXRlcyhmaXJzdE1hdGNoLmFkZHJlc3MpKSk7XG4gICAgICB9XG5cbiAgICAgIG5vZGVzLnB1c2godGhpcy5ub2RlKCdmb3JtYXQnLCBmaXJzdE1hdGNoLmFkZHJlc3NGb3JtYXQpKTtcbiAgICAgIG5vZGVzLnB1c2godGhpcy5ub2RlKCdvdXRwdXRTY3JpcHQnLCBmaXJzdE1hdGNoLmJ1ZmZlciwgdGhpcy5wYXJzZU91dHB1dFNjcmlwdChmaXJzdE1hdGNoLmJ1ZmZlcikpKTtcbiAgICAgIG5vZGVzLnB1c2godGhpcy5ub2RlKCduZXR3b3JrJywgbWF0Y2hlcy5tYXAoKG0pID0+IGdldE5ldHdvcmtOYW1lKG0ubmV0d29yaykpLmpvaW4oJywgJykpKTtcblxuICAgICAgaWYgKHRoaXMucGFyYW1zLmFsbCB8fCB0aGlzLnBhcmFtcy5jb252ZXJ0KSB7XG4gICAgICAgIG5vZGVzLnB1c2godGhpcy5jb252ZXJ0KGZpcnN0TWF0Y2guYnVmZmVyKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMubm9kZSgnYWRkcmVzcycsIGlucHV0LCBub2Rlcyk7XG4gIH1cbn1cbiJdfQ==
@@ -1,10 +1,9 @@
1
- /// <reference types="node" />
2
1
  import * as utxolib from '@bitgo-beta/utxo-lib';
3
2
  import { Parser, ParserNode } from './Parser';
4
3
  import { ParserTx } from './ParserTx';
5
4
  import { HollowSegwitSpend } from './hollowSegwitSpend';
6
5
  import { ChainInfo } from './TxParser';
7
- declare type ParsedSignatureScript = utxolib.bitgo.ParsedSignatureScriptP2ms | utxolib.bitgo.ParsedSignatureScriptP2shP2pk | utxolib.bitgo.ParsedSignatureScriptTaproot | utxolib.bitgo.ParsedPsbtP2ms | utxolib.bitgo.ParsedPsbtP2shP2pk | utxolib.bitgo.ParsedPsbtTaproot | HollowSegwitSpend;
6
+ type ParsedSignatureScript = utxolib.bitgo.ParsedSignatureScriptP2ms | utxolib.bitgo.ParsedSignatureScriptP2shP2pk | utxolib.bitgo.ParsedSignatureScriptTaproot | utxolib.bitgo.ParsedPsbtP2ms | utxolib.bitgo.ParsedPsbtP2shP2pk | utxolib.bitgo.ParsedPsbtTaproot | HollowSegwitSpend;
8
7
  export declare class InputParser extends Parser {
9
8
  private txid;
10
9
  private tx;
@@ -1 +1 @@
1
- {"version":3,"file":"InputParser.d.ts","sourceRoot":"","sources":["../../src/InputParser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"InputParser.d.ts","sourceRoot":"","sources":["../../src/InputParser.ts"],"names":[],"mappings":"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"}
@@ -2,10 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.InputParser = void 0;
4
4
  const utxolib = require("@bitgo-beta/utxo-lib");
5
+ const bitcoinjs_lib_1 = require("bitcoinjs-lib");
5
6
  const Parser_1 = require("./Parser");
6
7
  const ParserTx_1 = require("./ParserTx");
7
8
  const hollowSegwitSpend_1 = require("./hollowSegwitSpend");
8
- const bitcoinjs_lib_1 = require("bitcoinjs-lib");
9
9
  const ecdsa_1 = require("./ecdsa");
10
10
  const OutputParser_1 = require("./OutputParser");
11
11
  const parseUnknown_1 = require("./parseUnknown");
@@ -15,7 +15,7 @@ function getOutputId(v) {
15
15
  }
16
16
  function parseSignatureScript(tx, inputIndex, network) {
17
17
  if (tx instanceof utxolib.bitgo.UtxoTransaction) {
18
- return (hollowSegwitSpend_1.parseHollowSegwitSpend(tx.ins[inputIndex], network) || utxolib.bitgo.parseSignatureScript(tx.ins[inputIndex]));
18
+ return ((0, hollowSegwitSpend_1.parseHollowSegwitSpend)(tx.ins[inputIndex], network) || utxolib.bitgo.parseSignatureScript(tx.ins[inputIndex]));
19
19
  }
20
20
  return utxolib.bitgo.parsePsbtInput(tx.data.inputs[inputIndex]);
21
21
  }
@@ -59,11 +59,10 @@ class InputParser extends Parser_1.Parser {
59
59
  });
60
60
  }
61
61
  parseInputScript(buffer) {
62
- var _a;
63
62
  let value;
64
63
  let nodes;
65
64
  if (buffer && buffer.length && this.params.parseSignatureData.script) {
66
- const type = (_a = utxolib.classify.input(buffer, true)) !== null && _a !== void 0 ? _a : 'unknown';
65
+ const type = utxolib.classify.input(buffer, true) ?? 'unknown';
67
66
  const decompiled = utxolib.script.decompile(buffer);
68
67
  if (decompiled) {
69
68
  nodes = this.parseScriptParts(type, decompiled);
@@ -76,11 +75,10 @@ class InputParser extends Parser_1.Parser {
76
75
  return this.node('scriptSig', value, nodes);
77
76
  }
78
77
  parseWitness(script) {
79
- var _a;
80
78
  if (!script || script.length === 0) {
81
79
  return this.node('witness', '[]');
82
80
  }
83
- const type = (_a = utxolib.classify.witness(script, true)) !== null && _a !== void 0 ? _a : 'unknown';
81
+ const type = utxolib.classify.witness(script, true) ?? 'unknown';
84
82
  return this.node('witness', type, this.params.parseScriptData ? this.parseScriptParts(type, script) : undefined);
85
83
  }
86
84
  parsePubkeys(parsed) {
@@ -95,6 +93,9 @@ class InputParser extends Parser_1.Parser {
95
93
  if (buf === 0) {
96
94
  return [this.node('type', 'placeholder (0)')];
97
95
  }
96
+ if (buf.length === 0) {
97
+ return [this.node('type', 'placeholder (empty Buffer)')];
98
+ }
98
99
  const nodes = [this.node('bytes', buf)];
99
100
  if (signerIndex !== undefined) {
100
101
  nodes.push(this.node('valid', 0 <= signerIndex));
@@ -112,19 +113,25 @@ class InputParser extends Parser_1.Parser {
112
113
  if (r.length !== 32 || s.length !== 32) {
113
114
  throw new Error(`invalid scalar length`);
114
115
  }
115
- nodes.push(this.node('isCanonical', bitcoinjs_lib_1.script.isCanonicalScriptSignature(buf)), this.node('hashType', hashType), this.node('r', r), this.node('s', s), this.node('highS', ecdsa_1.isHighS(s)));
116
+ nodes.push(this.node('isCanonical', bitcoinjs_lib_1.script.isCanonicalScriptSignature(buf)), this.node('hashType', hashType), this.node('r', r), this.node('s', s), this.node('highS', (0, ecdsa_1.isHighS)(s)));
116
117
  }
117
118
  return nodes;
118
119
  }
119
120
  parseSignaturesWithSigners(parsed, signedByLabels, signerIndex) {
120
121
  const nodes = signedByLabels ? [this.node('signed by', `[${signedByLabels.join(', ')}]`)] : [];
121
122
  if (this.params.parseSignatureData.ecdsa || this.params.parseSignatureData.schnorr) {
122
- nodes.push(...parsed.signatures.map((s, i) => this.node(i, undefined, this.parseSignatureBuffer(parsed.scriptType, s, signerIndex ? signerIndex[i] : undefined))));
123
+ nodes.push(...parsed.signatures.map((s, i) => {
124
+ try {
125
+ return this.node(i, undefined, this.parseSignatureBuffer(parsed.scriptType, s, signerIndex ? signerIndex[i] : undefined));
126
+ }
127
+ catch (e) {
128
+ return this.node(i, undefined, [this.node('buf', s), this.handleParseError(e)]);
129
+ }
130
+ }));
123
131
  }
124
132
  return nodes;
125
133
  }
126
134
  parseSignatures(parsed) {
127
- var _a;
128
135
  const nodes = [];
129
136
  if ('signatures' in parsed &&
130
137
  'publicKeys' in parsed &&
@@ -133,7 +140,12 @@ class InputParser extends Parser_1.Parser {
133
140
  parsed.scriptType !== undefined) {
134
141
  if (this.tx instanceof utxolib.bitgo.UtxoTransaction && this.chainInfo.prevOutputs) {
135
142
  const signedBy = utxolib.bitgo.getSignaturesWithPublicKeys(this.tx, this.inputIndex, this.chainInfo.prevOutputs, parsed.publicKeys);
136
- nodes.push(...this.parseSignaturesWithSigners(parsed, signedBy.flatMap((v, i) => (v ? [i.toString()] : [])), parsed.signatures.map((k) => (k === 0 ? -1 : signedBy.indexOf(k)))));
143
+ try {
144
+ nodes.push(...this.parseSignaturesWithSigners(parsed, signedBy.flatMap((v, i) => (v ? [i.toString()] : [])), parsed.signatures.map((k) => (k === 0 ? -1 : signedBy.indexOf(k)))));
145
+ }
146
+ catch (e) {
147
+ nodes.push(this.node('parseSignaturesWithSigners', undefined, [this.handleParseError(e)]));
148
+ }
137
149
  }
138
150
  if (this.tx instanceof utxolib.bitgo.UtxoPsbt) {
139
151
  let signedByLabels;
@@ -150,14 +162,13 @@ class InputParser extends Parser_1.Parser {
150
162
  .join(' '), nodes);
151
163
  }
152
164
  else if ('signatures' in parsed) {
153
- return this.node('signatures', undefined, ((_a = parsed.signatures) !== null && _a !== void 0 ? _a : []).map((s, i) => this.node(i, s)));
165
+ return this.node('signatures', undefined, (parsed.signatures ?? []).map((s, i) => this.node(i, s)));
154
166
  }
155
167
  else {
156
168
  return this.node('signatures', undefined);
157
169
  }
158
170
  }
159
171
  parseSigScriptWithType(parsed) {
160
- var _a;
161
172
  if (parsed.scriptType &&
162
173
  (utxolib.bitgo.outputScripts.isScriptType2Of3(parsed.scriptType) ||
163
174
  parsed.scriptType === 'taprootScriptPathSpend' ||
@@ -165,16 +176,16 @@ class InputParser extends Parser_1.Parser {
165
176
  return this.node('sigScript', parsed.scriptType, [this.parsePubkeys(parsed), this.parseSignatures(parsed)]);
166
177
  }
167
178
  if (parsed.scriptType === 'p2shP2wshHollow' || parsed.scriptType === 'p2shP2wpkhHollow') {
168
- return this.node('sigScript', parsed.scriptType, [this.node('info', hollowSegwitSpend_1.getHollowSpendMessage())]);
179
+ return this.node('sigScript', parsed.scriptType, [this.node('info', (0, hollowSegwitSpend_1.getHollowSpendMessage)())]);
169
180
  }
170
- return this.node('sigScript', (_a = parsed.scriptType) !== null && _a !== void 0 ? _a : 'unknown');
181
+ return this.node('sigScript', parsed.scriptType ?? 'unknown');
171
182
  }
172
183
  parseSigScript() {
173
184
  try {
174
185
  return this.parseSigScriptWithType(parseSignatureScript(this.tx, this.inputIndex, this.tx.network));
175
186
  }
176
187
  catch (e) {
177
- return this.handleParseError(e);
188
+ return this.node('sigScript', undefined, [this.handleParseError(e)]);
178
189
  }
179
190
  }
180
191
  parsePrevOut(prevOutput) {
@@ -187,7 +198,7 @@ class InputParser extends Parser_1.Parser {
187
198
  if (!(this.tx instanceof utxolib.bitgo.UtxoPsbt)) {
188
199
  throw new Error('invalid state');
189
200
  }
190
- const result = ParserTx_1.getPrevOut(prevOutput, this.tx.txInputs[this.inputIndex], this.tx.network);
201
+ const result = (0, ParserTx_1.getPrevOut)(prevOutput, this.tx.txInputs[this.inputIndex], this.tx.network);
191
202
  if (!result) {
192
203
  return [this.node('script', 'unknown'), this.node('value', 'unknown')];
193
204
  }
@@ -213,13 +224,12 @@ class InputParser extends Parser_1.Parser {
213
224
  musig2Participants: utxolib.bitgo.musig2.parsePsbtMusig2Participants(input),
214
225
  musig2Nonces: utxolib.bitgo.musig2.parsePsbtMusig2Nonces(input),
215
226
  musig2PartialSignatures: utxolib.bitgo.musig2.parsePsbtMusig2PartialSigs(input),
216
- }).flatMap(([key, value]) => (value ? [parseUnknown_1.parseUnknown(this, key, value)] : []));
227
+ }).flatMap(([key, value]) => (value ? [(0, parseUnknown_1.parseUnknown)(this, key, value)] : []));
217
228
  }
218
229
  parseInput() {
219
- var _a;
220
230
  const psbtInput = this.tx instanceof utxolib.bitgo.UtxoPsbt ? this.tx.data.inputs[this.inputIndex] : undefined;
221
- const { txid: prevTxid, vout, sequence, script, witness } = ParserTx_1.getParserTxInputProperties(this.input, psbtInput);
222
- const prevOutput = (_a = this.chainInfo.prevOutputs) === null || _a === void 0 ? void 0 : _a[this.inputIndex];
231
+ const { txid: prevTxid, vout, sequence, script, witness } = (0, ParserTx_1.getParserTxInputProperties)(this.input, psbtInput);
232
+ const prevOutput = this.chainInfo.prevOutputs?.[this.inputIndex];
223
233
  return this.node(this.inputIndex, getOutputId(this.input), [
224
234
  this.node('sequence', sequence === undefined ? undefined : toBufferUInt32BE(sequence)),
225
235
  this.parseInputScript(script),
@@ -227,7 +237,7 @@ class InputParser extends Parser_1.Parser {
227
237
  this.parseSigScript(),
228
238
  ...(psbtInput ? this.parsePrevOut(psbtInput) : []),
229
239
  ...(prevOutput
230
- ? new OutputParser_1.OutputParser(this.tx.network, prevTxid, vout, prevOutput, this.chainInfo, this.params).parseSpend({
240
+ ? new OutputParser_1.OutputParser(this.tx.network, prevTxid, vout, prevOutput, this.chainInfo, this.params).parsePrevOutputSpend({
231
241
  conflict: true,
232
242
  })
233
243
  : []),
@@ -236,4 +246,4 @@ class InputParser extends Parser_1.Parser {
236
246
  }
237
247
  }
238
248
  exports.InputParser = InputParser;
239
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW5wdXRQYXJzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvSW5wdXRQYXJzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsZ0RBQWdEO0FBQ2hELHFDQUE4QztBQUM5Qyx5Q0FBNkY7QUFDN0YsMkRBQXVHO0FBQ3ZHLGlEQUF3RDtBQUN4RCxtQ0FBa0M7QUFFbEMsaURBQThDO0FBQzlDLGlEQUE4QztBQUM5QyxpREFBOEM7QUFXOUMsU0FBUyxXQUFXLENBQUMsQ0FBa0M7SUFDckQsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUUsQ0FBQztBQUVELFNBQVMsb0JBQW9CLENBQUMsRUFBWSxFQUFFLFVBQWtCLEVBQUUsT0FBd0I7SUFDdEYsSUFBSSxFQUFFLFlBQVksT0FBTyxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUU7UUFDL0MsT0FBTyxDQUNMLDBDQUFzQixDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsT0FBTyxDQUFDLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQzlHLENBQUM7S0FDSDtJQUNELE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUNsRSxDQUFDO0FBRUQsU0FBUyxnQkFBZ0IsQ0FBQyxDQUFTO0lBQ2pDLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUIsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEIsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBRUQsTUFB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VUFBVTtnQkFDWixDQUFDLENBQUMsSUFBSSwyQkFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsQ0FBQztvQkFDcEcsUUFBUSxFQUFFLElBQUk7aUJBQ2YsQ0FBQztnQkFDSixDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ1AsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1NBQ3JELENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQXRTRCxrQ0FzU0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcbmltcG9ydCB7IFBhcnNlciwgUGFyc2VyTm9kZSB9IGZyb20gJy4vUGFyc2VyJztcbmltcG9ydCB7IGdldFBhcnNlclR4SW5wdXRQcm9wZXJ0aWVzLCBnZXRQcmV2T3V0LCBQYXJzZXJUeCwgUGFyc2VyVHhJbnB1dCB9IGZyb20gJy4vUGFyc2VyVHgnO1xuaW1wb3J0IHsgZ2V0SG9sbG93U3BlbmRNZXNzYWdlLCBIb2xsb3dTZWd3aXRTcGVuZCwgcGFyc2VIb2xsb3dTZWd3aXRTcGVuZCB9IGZyb20gJy4vaG9sbG93U2Vnd2l0U3BlbmQnO1xuaW1wb3J0IHsgc2NyaXB0LCBTY3JpcHRTaWduYXR1cmUgfSBmcm9tICdiaXRjb2luanMtbGliJztcbmltcG9ydCB7IGlzSGlnaFMgfSBmcm9tICcuL2VjZHNhJztcbmltcG9ydCB7IENoYWluSW5mbyB9IGZyb20gJy4vVHhQYXJzZXInO1xuaW1wb3J0IHsgT3V0cHV0UGFyc2VyIH0gZnJvbSAnLi9PdXRwdXRQYXJzZXInO1xuaW1wb3J0IHsgcGFyc2VVbmtub3duIH0gZnJvbSAnLi9wYXJzZVVua25vd24nO1xuaW1wb3J0IHsgU2NyaXB0UGFyc2VyIH0gZnJvbSAnLi9TY3JpcHRQYXJzZXInO1xuXG50eXBlIFBhcnNlZFNpZ25hdHVyZVNjcmlwdCA9XG4gIHwgdXR4b2xpYi5iaXRnby5QYXJzZWRTaWduYXR1cmVTY3JpcHRQMm1zXG4gIHwgdXR4b2xpYi5iaXRnby5QYXJzZWRTaWduYXR1cmVTY3JpcHRQMnNoUDJwa1xuICB8IHV0eG9saWIuYml0Z28uUGFyc2VkU2lnbmF0dXJlU2NyaXB0VGFwcm9vdFxuICB8IHV0eG9saWIuYml0Z28uUGFyc2VkUHNidFAybXNcbiAgfCB1dHhvbGliLmJpdGdvLlBhcnNlZFBzYnRQMnNoUDJwa1xuICB8IHV0eG9saWIuYml0Z28uUGFyc2VkUHNidFRhcHJvb3RcbiAgfCBIb2xsb3dTZWd3aXRTcGVuZDtcblxuZnVuY3Rpb24gZ2V0T3V0cHV0SWQodjogeyBoYXNoOiBCdWZmZXI7IGluZGV4OiBudW1iZXIgfSk6IHN0cmluZyB7XG4gIHJldHVybiB1dHhvbGliLmJpdGdvLmZvcm1hdE91dHB1dElkKHV0eG9saWIuYml0Z28uZ2V0T3V0cHV0SWRGb3JJbnB1dCh2KSk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlU2lnbmF0dXJlU2NyaXB0KHR4OiBQYXJzZXJUeCwgaW5wdXRJbmRleDogbnVtYmVyLCBuZXR3b3JrOiB1dHhvbGliLk5ldHdvcmspOiBQYXJzZWRTaWduYXR1cmVTY3JpcHQge1xuICBpZiAodHggaW5zdGFuY2VvZiB1dHhvbGliLmJpdGdvLlV0eG9UcmFuc2FjdGlvbikge1xuICAgIHJldHVybiAoXG4gICAgICBwYXJzZUhvbGxvd1NlZ3dpdFNwZW5kKHR4Lmluc1tpbnB1dEluZGV4XSwgbmV0d29yaykgfHwgdXR4b2xpYi5iaXRnby5wYXJzZVNpZ25hdHVyZVNjcmlwdCh0eC5pbnNbaW5wdXRJbmRleF0pXG4gICAgKTtcbiAgfVxuICByZXR1cm4gdXR4b2xpYi5iaXRnby5wYXJzZVBzYnRJbnB1dCh0eC5kYXRhLmlucHV0c1tpbnB1dEluZGV4XSk7XG59XG5cbmZ1bmN0aW9uIHRvQnVmZmVyVUludDMyQkUobjogbnVtYmVyKTogQnVmZmVyIHtcbiAgY29uc3QgYnVmID0gQnVmZmVyLmFsbG9jKDQpO1xuICBidWYud3JpdGVVSW50MzJMRShuLCAwKTtcbiAgcmV0dXJuIGJ1Zjtcbn1cblxuZXhwb3J0IGNsYXNzIElucHV0UGFyc2VyIGV4dGVuZHMgUGFyc2VyIHtcbiAgcHJpdmF0ZSBpbnB1dDogUGFyc2VyVHhJbnB1dDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHR4aWQ6IHN0cmluZyxcbiAgICBwcml2YXRlIHR4OiBQYXJzZXJUeCxcbiAgICBwcml2YXRlIGlucHV0SW5kZXg6IG51bWJlcixcbiAgICBwcml2YXRlIGNoYWluSW5mbzogQ2hhaW5JbmZvLFxuICAgIHByaXZhdGUgcGFyYW1zOiB7XG4gICAgICBwYXJzZU91dHB1dFNjcmlwdDogYm9vbGVhbjtcbiAgICAgIHBhcnNlU2NyaXB0QXNtOiBib29sZWFuO1xuICAgICAgcGFyc2VTY3JpcHREYXRhOiBib29sZWFuO1xuICAgICAgcGFyc2VTaWduYXR1cmVEYXRhOiB7XG4gICAgICAgIHNjcmlwdDogYm9vbGVhbjtcbiAgICAgICAgZWNkc2E6IGJvb2xlYW47XG4gICAgICAgIHNjaG5vcnI6IGJvb2xlYW47XG4gICAgICB9O1xuICAgICAgcGFyc2VFcnJvcj86ICd0aHJvdycgfCAnY29udGludWUnO1xuICAgIH1cbiAgKSB7XG4gICAgc3VwZXIoeyBwYXJzZUVycm9yOiBwYXJhbXMucGFyc2VFcnJvciB9KTtcbiAgICBpZiAodHggaW5zdGFuY2VvZiB1dHhvbGliLmJpdGdvLlV0eG9UcmFuc2FjdGlvbikge1xuICAgICAgdGhpcy5pbnB1dCA9IHR4Lmluc1tpbnB1dEluZGV4XTtcbiAgICB9IGVsc2UgaWYgKHR4IGluc3RhbmNlb2YgdXR4b2xpYi5iaXRnby5VdHhvUHNidCkge1xuICAgICAgdGhpcy5pbnB1dCA9IHR4LnR4SW5wdXRzW2lucHV0SW5kZXhdO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Vua25vd24gdHJhbnNhY3Rpb24gdHlwZScpO1xuICAgIH1cbiAgfVxuXG4gIHBhcnNlU2NyaXB0QXNtKHR5cGU6IHN0cmluZywgcGFydDogQnVmZmVyLCBpOiBudW1iZXIsIG46IG51bWJlcik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKFxuICAgICAgKHR5cGUgPT09ICd0YXByb290JyAmJiBpID09PSBuIC0gMikgfHxcbiAgICAgICgodHlwZSA9PT0gJ3NjcmlwdGhhc2gnIHx8IHR5cGUgPT09ICd3aXRuZXNzc2NyaXB0aGFzaCcpICYmIGkgPT09IG4gLSAxKVxuICAgICkge1xuICAgICAgcmV0dXJuIFNjcmlwdFBhcnNlci50b0FTTShwYXJ0KTtcbiAgICB9XG4gIH1cblxuICBwYXJzZVNjcmlwdFBhcnRzKHR5cGU6IHN0cmluZywgcGFydHM6IEFycmF5PEJ1ZmZlciB8IG51bWJlcj4pOiBQYXJzZXJOb2RlW10ge1xuICAgIHJldHVybiBwYXJ0cy5tYXAoKHYsIGkpID0+IHtcbiAgICAgIGxldCBhc21Ob2RlOiBQYXJzZXJOb2RlIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHRoaXMucGFyYW1zLnBhcnNlU2NyaXB0QXNtICYmIEJ1ZmZlci5pc0J1ZmZlcih2KSkge1xuICAgICAgICBjb25zdCBwYXJzZWQgPSB0aGlzLnBhcnNlU2NyaXB0QXNtKHR5cGUsIHYsIGksIHBhcnRzLmxlbmd0aCk7XG4gICAgICAgIGFzbU5vZGUgPSBwYXJzZWQgPyB0aGlzLm5vZGUoJ2FzbScsIHBhcnNlZCkgOiB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLm5vZGUoaSwgdGhpcy5wYXJhbXMucGFyc2VTY3JpcHREYXRhID8gdiA6IHVuZGVmaW5lZCwgYXNtTm9kZSA/IFthc21Ob2RlXSA6IHVuZGVmaW5lZCk7XG4gICAgfSk7XG4gIH1cblxuICBwYXJzZUlucHV0U2NyaXB0KGJ1ZmZlcjogQnVmZmVyIHwgdW5kZWZpbmVkKTogUGFyc2VyTm9kZSB7XG4gICAgbGV0IHZhbHVlO1xuICAgIGxldCBub2RlcztcbiAgICBpZiAoYnVmZmVyICYmIGJ1ZmZlci5sZW5ndGggJiYgdGhpcy5wYXJhbXMucGFyc2VTaWduYXR1cmVEYXRhLnNjcmlwdCkge1xuICAgICAgY29uc3QgdHlwZSA9IHV0eG9saWIuY2xhc3NpZnkuaW5wdXQoYnVmZmVyLCB0cnVlKSA/PyAndW5rbm93bic7XG4gICAgICBjb25zdCBkZWNvbXBpbGVkID0gdXR4b2xpYi5zY3JpcHQuZGVjb21waWxlKGJ1ZmZlcik7XG4gICAgICBpZiAoZGVjb21waWxlZCkge1xuICAgICAgICBub2RlcyA9IHRoaXMucGFyc2VTY3JpcHRQYXJ0cyh0eXBlLCBkZWNvbXBpbGVkKTtcbiAgICAgIH1cbiAgICAgIHZhbHVlID0gdHlwZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWUgPSBidWZmZXI7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMubm9kZSgnc2NyaXB0U2lnJywgdmFsdWUsIG5vZGVzKTtcbiAgfVxuXG4gIHBhcnNlV2l0bmVzcyhzY3JpcHQ6IEJ1ZmZlcltdIHwgdW5kZWZpbmVkKTogUGFyc2VyTm9kZSB7XG4gICAgaWYgKCFzY3JpcHQgfHwgc2NyaXB0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRoaXMubm9kZSgnd2l0bmVzcycsICdbXScpO1xuICAgIH1cbiAgICBjb25zdCB0eXBlID0gdXR4b2xpYi5jbGFzc2lmeS53aXRuZXNzKHNjcmlwdCwgdHJ1ZSkgPz8gJ3Vua25vd24nO1xuICAgIHJldHVybiB0aGlzLm5vZGUoJ3dpdG5lc3MnLCB0eXBlLCB0aGlzLnBhcmFtcy5wYXJzZVNjcmlwdERhdGEgPyB0aGlzLnBhcnNlU2NyaXB0UGFydHModHlwZSwgc2NyaXB0KSA6IHVuZGVmaW5lZCk7XG4gIH1cblxuICBwYXJzZVB1YmtleXMocGFyc2VkOiBQYXJzZWRTaWduYXR1cmVTY3JpcHQpOiBQYXJzZXJOb2RlIHtcbiAgICBpZiAoJ3B1YmxpY0tleXMnIGluIHBhcnNlZCkge1xuICAgICAgcmV0dXJuIHRoaXMubm9kZShcbiAgICAgICAgJ3B1YmtleXMnLFxuICAgICAgICBwYXJzZWQucHVibGljS2V5cy5sZW5ndGgsXG4gICAgICAgIHBhcnNlZC5wdWJsaWNLZXlzLm1hcCgoaywgaSkgPT4gdGhpcy5ub2RlKGksIGspKVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMubm9kZSgncHVia2V5cycsICdbXScpO1xuICAgIH1cbiAgfVxuXG4gIHBhcnNlU2lnbmF0dXJlQnVmZmVyKFxuICAgIHR5cGU6XG4gICAgICB8IHV0eG9saWIuYml0Z28ub3V0cHV0U2NyaXB0cy5TY3JpcHRUeXBlMk9mM1xuICAgICAgfCB1dHhvbGliLmJpdGdvLlBhcnNlZFNjcmlwdFR5cGUyT2YzXG4gICAgICB8IHV0eG9saWIuYml0Z28ub3V0cHV0U2NyaXB0cy5TY3JpcHRUeXBlUDJzaFAycGssXG4gICAgYnVmOiBCdWZmZXIgfCAwLFxuICAgIHNpZ25lckluZGV4OiBudW1iZXIgfCB1bmRlZmluZWRcbiAgKTogUGFyc2VyTm9kZVtdIHtcbiAgICBpZiAoYnVmID09PSAwKSB7XG4gICAgICByZXR1cm4gW3RoaXMubm9kZSgndHlwZScsICdwbGFjZWhvbGRlciAoMCknKV07XG4gICAgfVxuXG4gICAgY29uc3Qgbm9kZXMgPSBbdGhpcy5ub2RlKCdieXRlcycsIGJ1ZildO1xuICAgIGlmIChzaWduZXJJbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBub2Rlcy5wdXNoKHRoaXMubm9kZSgndmFsaWQnLCAwIDw9IHNpZ25lckluZGV4KSk7XG4gICAgICBpZiAoMCA8PSBzaWduZXJJbmRleCkge1xuICAgICAgICBub2Rlcy5wdXNoKHRoaXMubm9kZSgnc2lnbmVkQnknLCBbJ3VzZXInLCAnYmFja3VwJywgJ2JpdGdvJ11bc2lnbmVySW5kZXhdKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGUgPT09ICd0YXByb290U2NyaXB0UGF0aFNwZW5kJyB8fCB0eXBlID09PSAndGFwcm9vdEtleVBhdGhTcGVuZCcpIHtcbiAgICAgIC8vIFRPRE9cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgeyBzaWduYXR1cmUsIGhhc2hUeXBlIH0gPSBTY3JpcHRTaWduYXR1cmUuZGVjb2RlKGJ1Zik7XG4gICAgICBjb25zdCByID0gc2lnbmF0dXJlLnN1YmFycmF5KDAsIDMyKTtcbiAgICAgIGNvbnN0IHMgPSBzaWduYXR1cmUuc3ViYXJyYXkoMzIpO1xuXG4gICAgICBpZiAoci5sZW5ndGggIT09IDMyIHx8IHMubGVuZ3RoICE9PSAzMikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgc2NhbGFyIGxlbmd0aGApO1xuICAgICAgfVxuXG4gICAgICBub2Rlcy5wdXNoKFxuICAgICAgICB0aGlzLm5vZGUoJ2lzQ2Fub25pY2FsJywgc2NyaXB0LmlzQ2Fub25pY2FsU2NyaXB0U2lnbmF0dXJlKGJ1ZikpLFxuICAgICAgICB0aGlzLm5vZGUoJ2hhc2hUeXBlJywgaGFzaFR5cGUpLFxuICAgICAgICB0aGlzLm5vZGUoJ3InLCByKSxcbiAgICAgICAgdGhpcy5ub2RlKCdzJywgcyksXG4gICAgICAgIHRoaXMubm9kZSgnaGlnaFMnLCBpc0hpZ2hTKHMpKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZXM7XG4gIH1cblxuICBwYXJzZVNpZ25hdHVyZXNXaXRoU2lnbmVycyhcbiAgICBwYXJzZWQ6IHtcbiAgICAgIHNjcmlwdFR5cGU6XG4gICAgICAgIHwgdXR4b2xpYi5iaXRnby5vdXRwdXRTY3JpcHRzLlNjcmlwdFR5cGUyT2YzXG4gICAgICAgIHwgdXR4b2xpYi5iaXRnby5vdXRwdXRTY3JpcHRzLlNjcmlwdFR5cGVQMnNoUDJwa1xuICAgICAgICB8IHV0eG9saWIuYml0Z28uUGFyc2VkU2NyaXB0VHlwZTJPZjM7XG4gICAgICBzaWduYXR1cmVzOiAoQnVmZmVyIHwgMClbXTtcbiAgICB9LFxuICAgIHNpZ25lZEJ5TGFiZWxzOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCxcbiAgICBzaWduZXJJbmRleDogbnVtYmVyW10gfCB1bmRlZmluZWRcbiAgKTogUGFyc2VyTm9kZVtdIHtcbiAgICBjb25zdCBub2RlcyA9IHNpZ25lZEJ5TGFiZWxzID8gW3RoaXMubm9kZSgnc2lnbmVkIGJ5JywgYFske3NpZ25lZEJ5TGFiZWxzLmpvaW4oJywgJyl9XWApXSA6IFtdO1xuICAgIGlmICh0aGlzLnBhcmFtcy5wYXJzZVNpZ25hdHVyZURhdGEuZWNkc2EgfHwgdGhpcy5wYXJhbXMucGFyc2VTaWduYXR1cmVEYXRhLnNjaG5vcnIpIHtcbiAgICAgIG5vZGVzLnB1c2goXG4gICAgICAgIC4uLnBhcnNlZC5zaWduYXR1cmVzLm1hcCgoczogQnVmZmVyIHwgMCwgaTogbnVtYmVyKSA9PlxuICAgICAgICAgIHRoaXMubm9kZShcbiAgICAgICAgICAgIGksXG4gICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICB0aGlzLnBhcnNlU2lnbmF0dXJlQnVmZmVyKHBhcnNlZC5zY3JpcHRUeXBlLCBzLCBzaWduZXJJbmRleCA/IHNpZ25lckluZGV4W2ldIDogdW5kZWZpbmVkKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIG5vZGVzO1xuICB9XG5cbiAgcGFyc2VTaWduYXR1cmVzKHBhcnNlZDogUGFyc2VkU2lnbmF0dXJlU2NyaXB0KTogUGFyc2VyTm9kZSB7XG4gICAgY29uc3Qgbm9kZXM6IFBhcnNlck5vZGVbXSA9IFtdO1xuICAgIGlmIChcbiAgICAgICdzaWduYXR1cmVzJyBpbiBwYXJzZWQgJiZcbiAgICAgICdwdWJsaWNLZXlzJyBpbiBwYXJzZWQgJiZcbiAgICAgICdzY3JpcHRUeXBlJyBpbiBwYXJzZWQgJiZcbiAgICAgIHBhcnNlZC5zaWduYXR1cmVzICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIHBhcnNlZC5zY3JpcHRUeXBlICE9PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIGlmICh0aGlzLnR4IGluc3RhbmNlb2YgdXR4b2xpYi5iaXRnby5VdHhvVHJhbnNhY3Rpb24gJiYgdGhpcy5jaGFpbkluZm8ucHJldk91dHB1dHMpIHtcbiAgICAgICAgY29uc3Qgc2lnbmVkQnkgPSB1dHhvbGliLmJpdGdvLmdldFNpZ25hdHVyZXNXaXRoUHVibGljS2V5cyhcbiAgICAgICAgICB0aGlzLnR4LFxuICAgICAgICAgIHRoaXMuaW5wdXRJbmRleCxcbiAgICAgICAgICB0aGlzLmNoYWluSW5mby5wcmV2T3V0cHV0cyxcbiAgICAgICAgICBwYXJzZWQucHVibGljS2V5c1xuICAgICAgICApO1xuICAgICAgICBub2Rlcy5wdXNoKFxuICAgICAgICAgIC4uLnRoaXMucGFyc2VTaWduYXR1cmVzV2l0aFNpZ25lcnMoXG4gICAgICAgICAgICBwYXJzZWQsXG4gICAgICAgICAgICBzaWduZWRCeS5mbGF0TWFwKCh2LCBpKSA9PiAodiA/IFtpLnRvU3RyaW5nKCldIDogW10pKSxcbiAgICAgICAgICAgIHBhcnNlZC5zaWduYXR1cmVzLm1hcCgoazogQnVmZmVyIHwgMCkgPT4gKGsgPT09IDAgPyAtMSA6IHNpZ25lZEJ5LmluZGV4T2YoaykpKVxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnR4IGluc3RhbmNlb2YgdXR4b2xpYi5iaXRnby5VdHhvUHNidCkge1xuICAgICAgICBsZXQgc2lnbmVkQnlMYWJlbHM6IHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuICAgICAgICBpZiAocGFyc2VkLnB1YmxpY0tleXMgJiYgQXJyYXkuaXNBcnJheShwYXJzZWQucHVibGljS2V5cykpIHtcbiAgICAgICAgICBjb25zdCBwc2J0ID0gdGhpcy50eDtcbiAgICAgICAgICBzaWduZWRCeUxhYmVscyA9IHBhcnNlZC5wdWJsaWNLZXlzLmZsYXRNYXAoKGs6IEJ1ZmZlciwgaSkgPT5cbiAgICAgICAgICAgIEJ1ZmZlci5pc0J1ZmZlcihrKSAmJiBwc2J0LnZhbGlkYXRlU2lnbmF0dXJlc09mSW5wdXRDb21tb24odGhpcy5pbnB1dEluZGV4LCBrKSA/IFtpLnRvU3RyaW5nKCldIDogW11cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIC8vIFRPRE86IHRoZSBjdXJyZW50IFV0eG9Qc2J0IEFQSSBkb2VzIG5vdCBhbGxvdyB1cyB0byBkZXRlcm1pbmUgd2hpY2ggc2lnbmVyIGNyZWF0ZWQgd2hpY2ggc2lnbmF0dXJlXG4gICAgICAgIGNvbnN0IHNpZ25lckluZGV4ID0gdW5kZWZpbmVkO1xuICAgICAgICBub2Rlcy5wdXNoKC4uLnRoaXMucGFyc2VTaWduYXR1cmVzV2l0aFNpZ25lcnMocGFyc2VkLCBzaWduZWRCeUxhYmVscywgc2lnbmVySW5kZXgpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLm5vZGUoXG4gICAgICAgICdzaWduYXR1cmVzJyxcbiAgICAgICAgcGFyc2VkLnNpZ25hdHVyZXNcbiAgICAgICAgICAubWFwKChzOiBCdWZmZXIgfCAwKSA9PlxuICAgICAgICAgICAgdXR4b2xpYi5iaXRnby5pc1BsYWNlaG9sZGVyU2lnbmF0dXJlKHMpID8gJ1tdJyA6IEJ1ZmZlci5pc0J1ZmZlcihzKSA/IGBbJHtzLmxlbmd0aH1ieXRlXWAgOiBgWyR7c31dYFxuICAgICAgICAgIClcbiAgICAgICAgICAuam9pbignICcpLFxuICAgICAgICBub2Rlc1xuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKCdzaWduYXR1cmVzJyBpbiBwYXJzZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLm5vZGUoXG4gICAgICAgICdzaWduYXR1cmVzJyxcbiAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAocGFyc2VkLnNpZ25hdHVyZXMgPz8gW10pLm1hcCgoczogQnVmZmVyIHwgMCwgaTogbnVtYmVyKSA9PiB0aGlzLm5vZGUoaSwgcykpXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5ub2RlKCdzaWduYXR1cmVzJywgdW5kZWZpbmVkKTtcbiAgICB9XG4gIH1cblxuICBwYXJzZVNpZ1NjcmlwdFdpdGhUeXBlKHBhcnNlZDogUGFyc2VkU2lnbmF0dXJlU2NyaXB0KTogUGFyc2VyTm9kZSB7XG4gICAgaWYgKFxuICAgICAgcGFyc2VkLnNjcmlwdFR5cGUgJiZcbiAgICAgICh1dHhvbGliLmJpdGdvLm91dHB1dFNjcmlwdHMuaXNTY3JpcHRUeXBlMk9mMyhwYXJzZWQuc2NyaXB0VHlwZSkgfHxcbiAgICAgICAgcGFyc2VkLnNjcmlwdFR5cGUgPT09ICd0YXByb290U2NyaXB0UGF0aFNwZW5kJyB8fFxuICAgICAgICBwYXJzZWQuc2NyaXB0VHlwZSA9PT0gJ3RhcHJvb3RLZXlQYXRoU3BlbmQnKVxuICAgICkge1xuICAgICAgcmV0dXJuIHRoaXMubm9kZSgnc2lnU2NyaXB0JywgcGFyc2VkLnNjcmlwdFR5cGUsIFt0aGlzLnBhcnNlUHVia2V5cyhwYXJzZWQpLCB0aGlzLnBhcnNlU2lnbmF0dXJlcyhwYXJzZWQpXSk7XG4gICAgfVxuXG4gICAgaWYgKHBhcnNlZC5zY3JpcHRUeXBlID09PSAncDJzaFAyd3NoSG9sbG93JyB8fCBwYXJzZWQuc2NyaXB0VHlwZSA9PT0gJ3Ayc2hQMndwa2hIb2xsb3cnKSB7XG4gICAgICByZXR1cm4gdGhpcy5ub2RlKCdzaWdTY3JpcHQnLCBwYXJzZWQuc2NyaXB0VHlwZSwgW3RoaXMubm9kZSgnaW5mbycsIGdldEhvbGxvd1NwZW5kTWVzc2FnZSgpKV0pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLm5vZGUoJ3NpZ1NjcmlwdCcsIHBhcnNlZC5zY3JpcHRUeXBlID8/ICd1bmtub3duJyk7XG4gIH1cblxuICBwYXJzZVNpZ1NjcmlwdCgpOiBQYXJzZXJOb2RlIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHRoaXMucGFyc2VTaWdTY3JpcHRXaXRoVHlwZShwYXJzZVNpZ25hdHVyZVNjcmlwdCh0aGlzLnR4LCB0aGlzLmlucHV0SW5kZXgsIHRoaXMudHgubmV0d29yaykpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZVBhcnNlRXJyb3IoZSk7XG4gICAgfVxuICB9XG5cbiAgcGFyc2VQcmV2T3V0KHByZXZPdXRwdXQ6IHV0eG9saWIuVHhPdXRwdXQ8YmlnaW50PiB8IHV0eG9saWIuYml0Z28uUHNidElucHV0KTogUGFyc2VyTm9kZVtdIHtcbiAgICBsZXQgc2NyaXB0OiBCdWZmZXI7XG4gICAgbGV0IHZhbHVlOiBiaWdpbnQ7XG4gICAgaWYgKCdzY3JpcHQnIGluIHByZXZPdXRwdXQgJiYgcHJldk91dHB1dC5zY3JpcHQpIHtcbiAgICAgICh7IHNjcmlwdCwgdmFsdWUgfSA9IHByZXZPdXRwdXQpO1xuICAgIH0gZWxzZSBpZiAoJ3dpdG5lc3NVdHhvJyBpbiBwcmV2T3V0cHV0IHx8ICdub25XaXRuZXNzVXR4bycgaW4gcHJldk91dHB1dCkge1xuICAgICAgaWYgKCEodGhpcy50eCBpbnN0YW5jZW9mIHV0eG9saWIuYml0Z28uVXR4b1BzYnQpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBzdGF0ZScpO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVzdWx0ID0gZ2V0UHJldk91dChwcmV2T3V0cHV0LCB0aGlzLnR4LnR4SW5wdXRzW3RoaXMuaW5wdXRJbmRleF0sIHRoaXMudHgubmV0d29yayk7XG4gICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICByZXR1cm4gW3RoaXMubm9kZSgnc2NyaXB0JywgJ3Vua25vd24nKSwgdGhpcy5ub2RlKCd2YWx1ZScsICd1bmtub3duJyldO1xuICAgICAgfVxuICAgICAgKHsgc2NyaXB0LCB2YWx1ZSB9ID0gcmVzdWx0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHByZXZPdXRwdXQnKTtcbiAgICB9XG5cbiAgICBsZXQgYWRkcmVzcztcbiAgICB0cnkge1xuICAgICAgYWRkcmVzcyA9IHV0eG9saWIuYWRkcmVzcy5mcm9tT3V0cHV0U2NyaXB0KHNjcmlwdCwgdGhpcy50eC5uZXR3b3JrKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBhZGRyZXNzID0gJyhlcnJvciknO1xuICAgIH1cbiAgICByZXR1cm4gW1xuICAgICAgdGhpcy5ub2RlKCd2YWx1ZScsIE51bWJlcih2YWx1ZSkgLyAxZTgpLFxuICAgICAgdGhpcy5ub2RlKCdwdWJTY3JpcHQnLCBzY3JpcHQsIGFkZHJlc3MgPyBbdGhpcy5ub2RlKCdhZGRyZXNzJywgYWRkcmVzcyldIDogdW5kZWZpbmVkKSxcbiAgICBdO1xuICB9XG5cbiAgcGFyc2VQc2J0SW5wdXQoaW5wdXQ6IHV0eG9saWIuYml0Z28uUHNidElucHV0KTogUGFyc2VyTm9kZVtdIHtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMoe1xuICAgICAgbXVzaWcyUGFydGljaXBhbnRzOiB1dHhvbGliLmJpdGdvLm11c2lnMi5wYXJzZVBzYnRNdXNpZzJQYXJ0aWNpcGFudHMoaW5wdXQpLFxuICAgICAgbXVzaWcyTm9uY2VzOiB1dHhvbGliLmJpdGdvLm11c2lnMi5wYXJzZVBzYnRNdXNpZzJOb25jZXMoaW5wdXQpLFxuICAgICAgbXVzaWcyUGFydGlhbFNpZ25hdHVyZXM6IHV0eG9saWIuYml0Z28ubXVzaWcyLnBhcnNlUHNidE11c2lnMlBhcnRpYWxTaWdzKGlucHV0KSxcbiAgICB9KS5mbGF0TWFwKChba2V5LCB2YWx1ZV0pID0+ICh2YWx1ZSA/IFtwYXJzZVVua25vd24odGhpcywga2V5LCB2YWx1ZSldIDogW10pKTtcbiAgfVxuXG4gIHBhcnNlSW5wdXQoKTogUGFyc2VyTm9kZSB7XG4gICAgY29uc3QgcHNidElucHV0ID0gdGhpcy50eCBpbnN0YW5jZW9mIHV0eG9saWIuYml0Z28uVXR4b1BzYnQgPyB0aGlzLnR4LmRhdGEuaW5wdXRzW3RoaXMuaW5wdXRJbmRleF0gOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgeyB0eGlkOiBwcmV2VHhpZCwgdm91dCwgc2VxdWVuY2UsIHNjcmlwdCwgd2l0bmVzcyB9ID0gZ2V0UGFyc2VyVHhJbnB1dFByb3BlcnRpZXModGhpcy5pbnB1dCwgcHNidElucHV0KTtcbiAgICBjb25zdCBwcmV2T3V0cHV0ID0gdGhpcy5jaGFpbkluZm8ucHJldk91dHB1dHM/Llt0aGlzLmlucHV0SW5kZXhdO1xuICAgIHJldHVybiB0aGlzLm5vZGUodGhpcy5pbnB1dEluZGV4LCBnZXRPdXRwdXRJZCh0aGlzLmlucHV0KSwgW1xuICAgICAgdGhpcy5ub2RlKCdzZXF1ZW5jZScsIHNlcXVlbmNlID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiB0b0J1ZmZlclVJbnQzMkJFKHNlcXVlbmNlKSksXG4gICAgICB0aGlzLnBhcnNlSW5wdXRTY3JpcHQoc2NyaXB0KSxcbiAgICAgIHRoaXMucGFyc2VXaXRuZXNzKHdpdG5lc3MpLFxuICAgICAgdGhpcy5wYXJzZVNpZ1NjcmlwdCgpLFxuICAgICAgLi4uKHBzYnRJbnB1dCA/IHRoaXMucGFyc2VQcmV2T3V0KHBzYnRJbnB1dCkgOiBbXSksXG4gICAgICAuLi4ocHJldk91dHB1dFxuICAgICAgICA/IG5ldyBPdXRwdXRQYXJzZXIodGhpcy50eC5uZXR3b3JrLCBwcmV2VHhpZCwgdm91dCwgcHJldk91dHB1dCwgdGhpcy5jaGFpbkluZm8sIHRoaXMucGFyYW1zKS5wYXJzZVNwZW5kKHtcbiAgICAgICAgICAgIGNvbmZsaWN0OiB0cnVlLFxuICAgICAgICAgIH0pXG4gICAgICAgIDogW10pLFxuICAgICAgLi4uKHBzYnRJbnB1dCA/IHRoaXMucGFyc2VQc2J0SW5wdXQocHNidElucHV0KSA6IFtdKSxcbiAgICBdKTtcbiAgfVxufVxuIl19
249
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW5wdXRQYXJzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvSW5wdXRQYXJzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsZ0RBQWdEO0FBQ2hELGlEQUF3RDtBQUV4RCxxQ0FBOEM7QUFDOUMseUNBQTZGO0FBQzdGLDJEQUF1RztBQUN2RyxtQ0FBa0M7QUFFbEMsaURBQThDO0FBQzlDLGlEQUE4QztBQUM5QyxpREFBOEM7QUFXOUMsU0FBUyxXQUFXLENBQUMsQ0FBa0M7SUFDckQsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUUsQ0FBQztBQUVELFNBQVMsb0JBQW9CLENBQUMsRUFBWSxFQUFFLFVBQWtCLEVBQUUsT0FBd0I7SUFDdEYsSUFBSSxFQUFFLFlBQVksT0FBTyxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNoRCxPQUFPLENBQ0wsSUFBQSwwQ0FBc0IsRUFBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUM5RyxDQUFDO0lBQ0osQ0FBQztJQUNELE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUNsRSxDQUFDO0FBRUQsU0FBUyxnQkFBZ0IsQ0FBQyxDQUFTO0lBQ2pDLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUIsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEIsT0FBTyxHQUFHLENBQUM7QUFD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QyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNsRCxHQUFHLENBQUMsVUFBVTtnQkFDWixDQUFDLENBQUMsSUFBSSwyQkFBWSxDQUNkLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUNmLFFBQVEsRUFDUixJQUFJLEVBQ0osVUFBVSxFQUNWLElBQUksQ0FBQyxTQUFTLEVBQ2QsSUFBSSxDQUFDLE1BQU0sQ0FDWixDQUFDLG9CQUFvQixDQUFDO29CQUNyQixRQUFRLEVBQUUsSUFBSTtpQkFDZixDQUFDO2dCQUNKLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDUCxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7U0FDckQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBelRELGtDQXlUQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuaW1wb3J0IHsgc2NyaXB0LCBTY3JpcHRTaWduYXR1cmUgfSBmcm9tICdiaXRjb2luanMtbGliJztcblxuaW1wb3J0IHsgUGFyc2VyLCBQYXJzZXJOb2RlIH0gZnJvbSAnLi9QYXJzZXInO1xuaW1wb3J0IHsgZ2V0UGFyc2VyVHhJbnB1dFByb3BlcnRpZXMsIGdldFByZXZPdXQsIFBhcnNlclR4LCBQYXJzZXJUeElucHV0IH0gZnJvbSAnLi9QYXJzZXJUeCc7XG5pbXBvcnQgeyBnZXRIb2xsb3dTcGVuZE1lc3NhZ2UsIEhvbGxvd1NlZ3dpdFNwZW5kLCBwYXJzZUhvbGxvd1NlZ3dpdFNwZW5kIH0gZnJvbSAnLi9ob2xsb3dTZWd3aXRTcGVuZCc7XG5pbXBvcnQgeyBpc0hpZ2hTIH0gZnJvbSAnLi9lY2RzYSc7XG5pbXBvcnQgeyBDaGFpbkluZm8gfSBmcm9tICcuL1R4UGFyc2VyJztcbmltcG9ydCB7IE91dHB1dFBhcnNlciB9IGZyb20gJy4vT3V0cHV0UGFyc2VyJztcbmltcG9ydCB7IHBhcnNlVW5rbm93biB9IGZyb20gJy4vcGFyc2VVbmtub3duJztcbmltcG9ydCB7IFNjcmlwdFBhcnNlciB9IGZyb20gJy4vU2NyaXB0UGFyc2VyJztcblxudHlwZSBQYXJzZWRTaWduYXR1cmVTY3JpcHQgPVxuICB8IHV0eG9saWIuYml0Z28uUGFyc2VkU2lnbmF0dXJlU2NyaXB0UDJtc1xuICB8IHV0eG9saWIuYml0Z28uUGFyc2VkU2lnbmF0dXJlU2NyaXB0UDJzaFAycGtcbiAgfCB1dHhvbGliLmJpdGdvLlBhcnNlZFNpZ25hdHVyZVNjcmlwdFRhcHJvb3RcbiAgfCB1dHhvbGliLmJpdGdvLlBhcnNlZFBzYnRQMm1zXG4gIHwgdXR4b2xpYi5iaXRnby5QYXJzZWRQc2J0UDJzaFAycGtcbiAgfCB1dHhvbGliLmJpdGdvLlBhcnNlZFBzYnRUYXByb290XG4gIHwgSG9sbG93U2Vnd2l0U3BlbmQ7XG5cbmZ1bmN0aW9uIGdldE91dHB1dElkKHY6IHsgaGFzaDogQnVmZmVyOyBpbmRleDogbnVtYmVyIH0pOiBzdHJpbmcge1xuICByZXR1cm4gdXR4b2xpYi5iaXRnby5mb3JtYXRPdXRwdXRJZCh1dHhvbGliLmJpdGdvLmdldE91dHB1dElkRm9ySW5wdXQodikpO1xufVxuXG5mdW5jdGlvbiBwYXJzZVNpZ25hdHVyZVNjcmlwdCh0eDogUGFyc2VyVHgsIGlucHV0SW5kZXg6IG51bWJlciwgbmV0d29yazogdXR4b2xpYi5OZXR3b3JrKTogUGFyc2VkU2lnbmF0dXJlU2NyaXB0IHtcbiAgaWYgKHR4IGluc3RhbmNlb2YgdXR4b2xpYi5iaXRnby5VdHhvVHJhbnNhY3Rpb24pIHtcbiAgICByZXR1cm4gKFxuICAgICAgcGFyc2VIb2xsb3dTZWd3aXRTcGVuZCh0eC5pbnNbaW5wdXRJbmRleF0sIG5ldHdvcmspIHx8IHV0eG9saWIuYml0Z28ucGFyc2VTaWduYXR1cmVTY3JpcHQodHguaW5zW2lucHV0SW5kZXhdKVxuICAgICk7XG4gIH1cbiAgcmV0dXJuIHV0eG9saWIuYml0Z28ucGFyc2VQc2J0SW5wdXQodHguZGF0YS5pbnB1dHNbaW5wdXRJbmRleF0pO1xufVxuXG5mdW5jdGlvbiB0b0J1ZmZlclVJbnQzMkJFKG46IG51bWJlcik6IEJ1ZmZlciB7XG4gIGNvbnN0IGJ1ZiA9IEJ1ZmZlci5hbGxvYyg0KTtcbiAgYnVmLndyaXRlVUludDMyTEUobiwgMCk7XG4gIHJldHVybiBidWY7XG59XG5cbmV4cG9ydCBjbGFzcyBJbnB1dFBhcnNlciBleHRlbmRzIFBhcnNlciB7XG4gIHByaXZhdGUgaW5wdXQ6IFBhcnNlclR4SW5wdXQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB0eGlkOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSB0eDogUGFyc2VyVHgsXG4gICAgcHJpdmF0ZSBpbnB1dEluZGV4OiBudW1iZXIsXG4gICAgcHJpdmF0ZSBjaGFpbkluZm86IENoYWluSW5mbyxcbiAgICBwcml2YXRlIHBhcmFtczoge1xuICAgICAgcGFyc2VPdXRwdXRTY3JpcHQ6IGJvb2xlYW47XG4gICAgICBwYXJzZVNjcmlwdEFzbTogYm9vbGVhbjtcbiAgICAgIHBhcnNlU2NyaXB0RGF0YTogYm9vbGVhbjtcbiAgICAgIHBhcnNlU2lnbmF0dXJlRGF0YToge1xuICAgICAgICBzY3JpcHQ6IGJvb2xlYW47XG4gICAgICAgIGVjZHNhOiBib29sZWFuO1xuICAgICAgICBzY2hub3JyOiBib29sZWFuO1xuICAgICAgfTtcbiAgICAgIHBhcnNlRXJyb3I/OiAndGhyb3cnIHwgJ2NvbnRpbnVlJztcbiAgICB9XG4gICkge1xuICAgIHN1cGVyKHsgcGFyc2VFcnJvcjogcGFyYW1zLnBhcnNlRXJyb3IgfSk7XG4gICAgaWYgKHR4IGluc3RhbmNlb2YgdXR4b2xpYi5iaXRnby5VdHhvVHJhbnNhY3Rpb24pIHtcbiAgICAgIHRoaXMuaW5wdXQgPSB0eC5pbnNbaW5wdXRJbmRleF07XG4gICAgfSBlbHNlIGlmICh0eCBpbnN0YW5jZW9mIHV0eG9saWIuYml0Z28uVXR4b1BzYnQpIHtcbiAgICAgIHRoaXMuaW5wdXQgPSB0eC50eElucHV0c1tpbnB1dEluZGV4XTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bmtub3duIHRyYW5zYWN0aW9uIHR5cGUnKTtcbiAgICB9XG4gIH1cblxuICBwYXJzZVNjcmlwdEFzbSh0eXBlOiBzdHJpbmcsIHBhcnQ6IEJ1ZmZlciwgaTogbnVtYmVyLCBuOiBudW1iZXIpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGlmIChcbiAgICAgICh0eXBlID09PSAndGFwcm9vdCcgJiYgaSA9PT0gbiAtIDIpIHx8XG4gICAgICAoKHR5cGUgPT09ICdzY3JpcHRoYXNoJyB8fCB0eXBlID09PSAnd2l0bmVzc3NjcmlwdGhhc2gnKSAmJiBpID09PSBuIC0gMSlcbiAgICApIHtcbiAgICAgIHJldHVybiBTY3JpcHRQYXJzZXIudG9BU00ocGFydCk7XG4gICAgfVxuICB9XG5cbiAgcGFyc2VTY3JpcHRQYXJ0cyh0eXBlOiBzdHJpbmcsIHBhcnRzOiBBcnJheTxCdWZmZXIgfCBudW1iZXI+KTogUGFyc2VyTm9kZVtdIHtcbiAgICByZXR1cm4gcGFydHMubWFwKCh2LCBpKSA9PiB7XG4gICAgICBsZXQgYXNtTm9kZTogUGFyc2VyTm9kZSB8IHVuZGVmaW5lZDtcbiAgICAgIGlmICh0aGlzLnBhcmFtcy5wYXJzZVNjcmlwdEFzbSAmJiBCdWZmZXIuaXNCdWZmZXIodikpIHtcbiAgICAgICAgY29uc3QgcGFyc2VkID0gdGhpcy5wYXJzZVNjcmlwdEFzbSh0eXBlLCB2LCBpLCBwYXJ0cy5sZW5ndGgpO1xuICAgICAgICBhc21Ob2RlID0gcGFyc2VkID8gdGhpcy5ub2RlKCdhc20nLCBwYXJzZWQpIDogdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5ub2RlKGksIHRoaXMucGFyYW1zLnBhcnNlU2NyaXB0RGF0YSA/IHYgOiB1bmRlZmluZWQsIGFzbU5vZGUgPyBbYXNtTm9kZV0gOiB1bmRlZmluZWQpO1xuICAgIH0pO1xuICB9XG5cbiAgcGFyc2VJbnB1dFNjcmlwdChidWZmZXI6IEJ1ZmZlciB8IHVuZGVmaW5lZCk6IFBhcnNlck5vZGUge1xuICAgIGxldCB2YWx1ZTtcbiAgICBsZXQgbm9kZXM7XG4gICAgaWYgKGJ1ZmZlciAmJiBidWZmZXIubGVuZ3RoICYmIHRoaXMucGFyYW1zLnBhcnNlU2lnbmF0dXJlRGF0YS5zY3JpcHQpIHtcbiAgICAgIGNvbnN0IHR5cGUgPSB1dHhvbGliLmNsYXNzaWZ5LmlucHV0KGJ1ZmZlciwgdHJ1ZSkgPz8gJ3Vua25vd24nO1xuICAgICAgY29uc3QgZGVjb21waWxlZCA9IHV0eG9saWIuc2NyaXB0LmRlY29tcGlsZShidWZmZXIpO1xuICAgICAgaWYgKGRlY29tcGlsZWQpIHtcbiAgICAgICAgbm9kZXMgPSB0aGlzLnBhcnNlU2NyaXB0UGFydHModHlwZSwgZGVjb21waWxlZCk7XG4gICAgICB9XG4gICAgICB2YWx1ZSA9IHR5cGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlID0gYnVmZmVyO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLm5vZGUoJ3NjcmlwdFNpZycsIHZhbHVlLCBub2Rlcyk7XG4gIH1cblxuICBwYXJzZVdpdG5lc3Moc2NyaXB0OiBCdWZmZXJbXSB8IHVuZGVmaW5lZCk6IFBhcnNlck5vZGUge1xuICAgIGlmICghc2NyaXB0IHx8IHNjcmlwdC5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB0aGlzLm5vZGUoJ3dpdG5lc3MnLCAnW10nKTtcbiAgICB9XG4gICAgY29uc3QgdHlwZSA9IHV0eG9saWIuY2xhc3NpZnkud2l0bmVzcyhzY3JpcHQsIHRydWUpID8/ICd1bmtub3duJztcbiAgICByZXR1cm4gdGhpcy5ub2RlKCd3aXRuZXNzJywgdHlwZSwgdGhpcy5wYXJhbXMucGFyc2VTY3JpcHREYXRhID8gdGhpcy5wYXJzZVNjcmlwdFBhcnRzKHR5cGUsIHNjcmlwdCkgOiB1bmRlZmluZWQpO1xuICB9XG5cbiAgcGFyc2VQdWJrZXlzKHBhcnNlZDogUGFyc2VkU2lnbmF0dXJlU2NyaXB0KTogUGFyc2VyTm9kZSB7XG4gICAgaWYgKCdwdWJsaWNLZXlzJyBpbiBwYXJzZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLm5vZGUoXG4gICAgICAgICdwdWJrZXlzJyxcbiAgICAgICAgcGFyc2VkLnB1YmxpY0tleXMubGVuZ3RoLFxuICAgICAgICBwYXJzZWQucHVibGljS2V5cy5tYXAoKGssIGkpID0+IHRoaXMubm9kZShpLCBrKSlcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLm5vZGUoJ3B1YmtleXMnLCAnW10nKTtcbiAgICB9XG4gIH1cblxuICBwYXJzZVNpZ25hdHVyZUJ1ZmZlcihcbiAgICB0eXBlOlxuICAgICAgfCB1dHhvbGliLmJpdGdvLm91dHB1dFNjcmlwdHMuU2NyaXB0VHlwZTJPZjNcbiAgICAgIHwgdXR4b2xpYi5iaXRnby5QYXJzZWRTY3JpcHRUeXBlMk9mM1xuICAgICAgfCB1dHhvbGliLmJpdGdvLm91dHB1dFNjcmlwdHMuU2NyaXB0VHlwZVAyc2hQMnBrLFxuICAgIGJ1ZjogQnVmZmVyIHwgMCxcbiAgICBzaWduZXJJbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkXG4gICk6IFBhcnNlck5vZGVbXSB7XG4gICAgaWYgKGJ1ZiA9PT0gMCkge1xuICAgICAgcmV0dXJuIFt0aGlzLm5vZGUoJ3R5cGUnLCAncGxhY2Vob2xkZXIgKDApJyldO1xuICAgIH1cblxuICAgIGlmIChidWYubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gW3RoaXMubm9kZSgndHlwZScsICdwbGFjZWhvbGRlciAoZW1wdHkgQnVmZmVyKScpXTtcbiAgICB9XG5cbiAgICBjb25zdCBub2RlcyA9IFt0aGlzLm5vZGUoJ2J5dGVzJywgYnVmKV07XG4gICAgaWYgKHNpZ25lckluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG5vZGVzLnB1c2godGhpcy5ub2RlKCd2YWxpZCcsIDAgPD0gc2lnbmVySW5kZXgpKTtcbiAgICAgIGlmICgwIDw9IHNpZ25lckluZGV4KSB7XG4gICAgICAgIG5vZGVzLnB1c2godGhpcy5ub2RlKCdzaWduZWRCeScsIFsndXNlcicsICdiYWNrdXAnLCAnYml0Z28nXVtzaWduZXJJbmRleF0pKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodHlwZSA9PT0gJ3RhcHJvb3RTY3JpcHRQYXRoU3BlbmQnIHx8IHR5cGUgPT09ICd0YXByb290S2V5UGF0aFNwZW5kJykge1xuICAgICAgLy8gVE9ET1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB7IHNpZ25hdHVyZSwgaGFzaFR5cGUgfSA9IFNjcmlwdFNpZ25hdHVyZS5kZWNvZGUoYnVmKTtcbiAgICAgIGNvbnN0IHIgPSBzaWduYXR1cmUuc3ViYXJyYXkoMCwgMzIpO1xuICAgICAgY29uc3QgcyA9IHNpZ25hdHVyZS5zdWJhcnJheSgzMik7XG5cbiAgICAgIGlmIChyLmxlbmd0aCAhPT0gMzIgfHwgcy5sZW5ndGggIT09IDMyKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBzY2FsYXIgbGVuZ3RoYCk7XG4gICAgICB9XG5cbiAgICAgIG5vZGVzLnB1c2goXG4gICAgICAgIHRoaXMubm9kZSgnaXNDYW5vbmljYWwnLCBzY3JpcHQuaXNDYW5vbmljYWxTY3JpcHRTaWduYXR1cmUoYnVmKSksXG4gICAgICAgIHRoaXMubm9kZSgnaGFzaFR5cGUnLCBoYXNoVHlwZSksXG4gICAgICAgIHRoaXMubm9kZSgncicsIHIpLFxuICAgICAgICB0aGlzLm5vZGUoJ3MnLCBzKSxcbiAgICAgICAgdGhpcy5ub2RlKCdoaWdoUycsIGlzSGlnaFMocykpXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBub2RlcztcbiAgfVxuXG4gIHBhcnNlU2lnbmF0dXJlc1dpdGhTaWduZXJzKFxuICAgIHBhcnNlZDoge1xuICAgICAgc2NyaXB0VHlwZTpcbiAgICAgICAgfCB1dHhvbGliLmJpdGdvLm91dHB1dFNjcmlwdHMuU2NyaXB0VHlwZTJPZjNcbiAgICAgICAgfCB1dHhvbGliLmJpdGdvLm91dHB1dFNjcmlwdHMuU2NyaXB0VHlwZVAyc2hQMnBrXG4gICAgICAgIHwgdXR4b2xpYi5iaXRnby5QYXJzZWRTY3JpcHRUeXBlMk9mMztcbiAgICAgIHNpZ25hdHVyZXM6IChCdWZmZXIgfCAwKVtdO1xuICAgIH0sXG4gICAgc2lnbmVkQnlMYWJlbHM6IHN0cmluZ1tdIHwgdW5kZWZpbmVkLFxuICAgIHNpZ25lckluZGV4OiBudW1iZXJbXSB8IHVuZGVmaW5lZFxuICApOiBQYXJzZXJOb2RlW10ge1xuICAgIGNvbnN0IG5vZGVzID0gc2lnbmVkQnlMYWJlbHMgPyBbdGhpcy5ub2RlKCdzaWduZWQgYnknLCBgWyR7c2lnbmVkQnlMYWJlbHMuam9pbignLCAnKX1dYCldIDogW107XG4gICAgaWYgKHRoaXMucGFyYW1zLnBhcnNlU2lnbmF0dXJlRGF0YS5lY2RzYSB8fCB0aGlzLnBhcmFtcy5wYXJzZVNpZ25hdHVyZURhdGEuc2Nobm9ycikge1xuICAgICAgbm9kZXMucHVzaChcbiAgICAgICAgLi4ucGFyc2VkLnNpZ25hdHVyZXMubWFwKChzOiBCdWZmZXIgfCAwLCBpOiBudW1iZXIpID0+IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubm9kZShcbiAgICAgICAgICAgICAgaSxcbiAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICB0aGlzLnBhcnNlU2lnbmF0dXJlQnVmZmVyKHBhcnNlZC5zY3JpcHRUeXBlLCBzLCBzaWduZXJJbmRleCA/IHNpZ25lckluZGV4W2ldIDogdW5kZWZpbmVkKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5ub2RlKGksIHVuZGVmaW5lZCwgW3RoaXMubm9kZSgnYnVmJywgcyksIHRoaXMuaGFuZGxlUGFyc2VFcnJvcihlKV0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBub2RlcztcbiAgfVxuXG4gIHBhcnNlU2lnbmF0dXJlcyhwYXJzZWQ6IFBhcnNlZFNpZ25hdHVyZVNjcmlwdCk6IFBhcnNlck5vZGUge1xuICAgIGNvbnN0IG5vZGVzOiBQYXJzZXJOb2RlW10gPSBbXTtcbiAgICBpZiAoXG4gICAgICAnc2lnbmF0dXJlcycgaW4gcGFyc2VkICYmXG4gICAgICAncHVibGljS2V5cycgaW4gcGFyc2VkICYmXG4gICAgICAnc2NyaXB0VHlwZScgaW4gcGFyc2VkICYmXG4gICAgICBwYXJzZWQuc2lnbmF0dXJlcyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBwYXJzZWQuc2NyaXB0VHlwZSAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBpZiAodGhpcy50eCBpbnN0YW5jZW9mIHV0eG9saWIuYml0Z28uVXR4b1RyYW5zYWN0aW9uICYmIHRoaXMuY2hhaW5JbmZvLnByZXZPdXRwdXRzKSB7XG4gICAgICAgIGNvbnN0IHNpZ25lZEJ5ID0gdXR4b2xpYi5iaXRnby5nZXRTaWduYXR1cmVzV2l0aFB1YmxpY0tleXMoXG4gICAgICAgICAgdGhpcy50eCxcbiAgICAgICAgICB0aGlzLmlucHV0SW5kZXgsXG4gICAgICAgICAgdGhpcy5jaGFpbkluZm8ucHJldk91dHB1dHMsXG4gICAgICAgICAgcGFyc2VkLnB1YmxpY0tleXNcbiAgICAgICAgKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBub2Rlcy5wdXNoKFxuICAgICAgICAgICAgLi4udGhpcy5wYXJzZVNpZ25hdHVyZXNXaXRoU2lnbmVycyhcbiAgICAgICAgICAgICAgcGFyc2VkLFxuICAgICAgICAgICAgICBzaWduZWRCeS5mbGF0TWFwKCh2LCBpKSA9PiAodiA/IFtpLnRvU3RyaW5nKCldIDogW10pKSxcbiAgICAgICAgICAgICAgcGFyc2VkLnNpZ25hdHVyZXMubWFwKChrOiBCdWZmZXIgfCAwKSA9PiAoayA9PT0gMCA/IC0xIDogc2lnbmVkQnkuaW5kZXhPZihrKSkpXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIG5vZGVzLnB1c2godGhpcy5ub2RlKCdwYXJzZVNpZ25hdHVyZXNXaXRoU2lnbmVycycsIHVuZGVmaW5lZCwgW3RoaXMuaGFuZGxlUGFyc2VFcnJvcihlKV0pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMudHggaW5zdGFuY2VvZiB1dHhvbGliLmJpdGdvLlV0eG9Qc2J0KSB7XG4gICAgICAgIGxldCBzaWduZWRCeUxhYmVsczogc3RyaW5nW10gfCB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChwYXJzZWQucHVibGljS2V5cyAmJiBBcnJheS5pc0FycmF5KHBhcnNlZC5wdWJsaWNLZXlzKSkge1xuICAgICAgICAgIGNvbnN0IHBzYnQgPSB0aGlzLnR4O1xuICAgICAgICAgIHNpZ25lZEJ5TGFiZWxzID0gcGFyc2VkLnB1YmxpY0tleXMuZmxhdE1hcCgoazogQnVmZmVyLCBpKSA9PlxuICAgICAgICAgICAgQnVmZmVyLmlzQnVmZmVyKGspICYmIHBzYnQudmFsaWRhdGVTaWduYXR1cmVzT2ZJbnB1dENvbW1vbih0aGlzLmlucHV0SW5kZXgsIGspID8gW2kudG9TdHJpbmcoKV0gOiBbXVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gVE9ETzogdGhlIGN1cnJlbnQgVXR4b1BzYnQgQVBJIGRvZXMgbm90IGFsbG93IHVzIHRvIGRldGVybWluZSB3aGljaCBzaWduZXIgY3JlYXRlZCB3aGljaCBzaWduYXR1cmVcbiAgICAgICAgY29uc3Qgc2lnbmVySW5kZXggPSB1bmRlZmluZWQ7XG4gICAgICAgIG5vZGVzLnB1c2goLi4udGhpcy5wYXJzZVNpZ25hdHVyZXNXaXRoU2lnbmVycyhwYXJzZWQsIHNpZ25lZEJ5TGFiZWxzLCBzaWduZXJJbmRleCkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMubm9kZShcbiAgICAgICAgJ3NpZ25hdHVyZXMnLFxuICAgICAgICBwYXJzZWQuc2lnbmF0dXJlc1xuICAgICAgICAgIC5tYXAoKHM6IEJ1ZmZlciB8IDApID0+XG4gICAgICAgICAgICB1dHhvbGliLmJpdGdvLmlzUGxhY2Vob2xkZXJTaWduYXR1cmUocykgPyAnW10nIDogQnVmZmVyLmlzQnVmZmVyKHMpID8gYFske3MubGVuZ3RofWJ5dGVdYCA6IGBbJHtzfV1gXG4gICAgICAgICAgKVxuICAgICAgICAgIC5qb2luKCcgJyksXG4gICAgICAgIG5vZGVzXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoJ3NpZ25hdHVyZXMnIGluIHBhcnNlZCkge1xuICAgICAgcmV0dXJuIHRoaXMubm9kZShcbiAgICAgICAgJ3NpZ25hdHVyZXMnLFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIChwYXJzZWQuc2lnbmF0dXJlcyA/PyBbXSkubWFwKChzOiBCdWZmZXIgfCAwLCBpOiBudW1iZXIpID0+IHRoaXMubm9kZShpLCBzKSlcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLm5vZGUoJ3NpZ25hdHVyZXMnLCB1bmRlZmluZWQpO1xuICAgIH1cbiAgfVxuXG4gIHBhcnNlU2lnU2NyaXB0V2l0aFR5cGUocGFyc2VkOiBQYXJzZWRTaWduYXR1cmVTY3JpcHQpOiBQYXJzZXJOb2RlIHtcbiAgICBpZiAoXG4gICAgICBwYXJzZWQuc2NyaXB0VHlwZSAmJlxuICAgICAgKHV0eG9saWIuYml0Z28ub3V0cHV0U2NyaXB0cy5pc1NjcmlwdFR5cGUyT2YzKHBhcnNlZC5zY3JpcHRUeXBlKSB8fFxuICAgICAgICBwYXJzZWQuc2NyaXB0VHlwZSA9PT0gJ3RhcHJvb3RTY3JpcHRQYXRoU3BlbmQnIHx8XG4gICAgICAgIHBhcnNlZC5zY3JpcHRUeXBlID09PSAndGFwcm9vdEtleVBhdGhTcGVuZCcpXG4gICAgKSB7XG4gICAgICByZXR1cm4gdGhpcy5ub2RlKCdzaWdTY3JpcHQnLCBwYXJzZWQuc2NyaXB0VHlwZSwgW3RoaXMucGFyc2VQdWJrZXlzKHBhcnNlZCksIHRoaXMucGFyc2VTaWduYXR1cmVzKHBhcnNlZCldKTtcbiAgICB9XG5cbiAgICBpZiAocGFyc2VkLnNjcmlwdFR5cGUgPT09ICdwMnNoUDJ3c2hIb2xsb3cnIHx8IHBhcnNlZC5zY3JpcHRUeXBlID09PSAncDJzaFAyd3BraEhvbGxvdycpIHtcbiAgICAgIHJldHVybiB0aGlzLm5vZGUoJ3NpZ1NjcmlwdCcsIHBhcnNlZC5zY3JpcHRUeXBlLCBbdGhpcy5ub2RlKCdpbmZvJywgZ2V0SG9sbG93U3BlbmRNZXNzYWdlKCkpXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMubm9kZSgnc2lnU2NyaXB0JywgcGFyc2VkLnNjcmlwdFR5cGUgPz8gJ3Vua25vd24nKTtcbiAgfVxuXG4gIHBhcnNlU2lnU2NyaXB0KCk6IFBhcnNlck5vZGUge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gdGhpcy5wYXJzZVNpZ1NjcmlwdFdpdGhUeXBlKHBhcnNlU2lnbmF0dXJlU2NyaXB0KHRoaXMudHgsIHRoaXMuaW5wdXRJbmRleCwgdGhpcy50eC5uZXR3b3JrKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIHRoaXMubm9kZSgnc2lnU2NyaXB0JywgdW5kZWZpbmVkLCBbdGhpcy5oYW5kbGVQYXJzZUVycm9yKGUpXSk7XG4gICAgfVxuICB9XG5cbiAgcGFyc2VQcmV2T3V0KHByZXZPdXRwdXQ6IHV0eG9saWIuVHhPdXRwdXQ8YmlnaW50PiB8IHV0eG9saWIuYml0Z28uUHNidElucHV0KTogUGFyc2VyTm9kZVtdIHtcbiAgICBsZXQgc2NyaXB0OiBCdWZmZXI7XG4gICAgbGV0IHZhbHVlOiBiaWdpbnQ7XG4gICAgaWYgKCdzY3JpcHQnIGluIHByZXZPdXRwdXQgJiYgcHJldk91dHB1dC5zY3JpcHQpIHtcbiAgICAgICh7IHNjcmlwdCwgdmFsdWUgfSA9IHByZXZPdXRwdXQpO1xuICAgIH0gZWxzZSBpZiAoJ3dpdG5lc3NVdHhvJyBpbiBwcmV2T3V0cHV0IHx8ICdub25XaXRuZXNzVXR4bycgaW4gcHJldk91dHB1dCkge1xuICAgICAgaWYgKCEodGhpcy50eCBpbnN0YW5jZW9mIHV0eG9saWIuYml0Z28uVXR4b1BzYnQpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBzdGF0ZScpO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVzdWx0ID0gZ2V0UHJldk91dChwcmV2T3V0cHV0LCB0aGlzLnR4LnR4SW5wdXRzW3RoaXMuaW5wdXRJbmRleF0sIHRoaXMudHgubmV0d29yayk7XG4gICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICByZXR1cm4gW3RoaXMubm9kZSgnc2NyaXB0JywgJ3Vua25vd24nKSwgdGhpcy5ub2RlKCd2YWx1ZScsICd1bmtub3duJyldO1xuICAgICAgfVxuICAgICAgKHsgc2NyaXB0LCB2YWx1ZSB9ID0gcmVzdWx0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHByZXZPdXRwdXQnKTtcbiAgICB9XG5cbiAgICBsZXQgYWRkcmVzcztcbiAgICB0cnkge1xuICAgICAgYWRkcmVzcyA9IHV0eG9saWIuYWRkcmVzcy5mcm9tT3V0cHV0U2NyaXB0KHNjcmlwdCwgdGhpcy50eC5uZXR3b3JrKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBhZGRyZXNzID0gJyhlcnJvciknO1xuICAgIH1cbiAgICByZXR1cm4gW1xuICAgICAgdGhpcy5ub2RlKCd2YWx1ZScsIE51bWJlcih2YWx1ZSkgLyAxZTgpLFxuICAgICAgdGhpcy5ub2RlKCdwdWJTY3JpcHQnLCBzY3JpcHQsIGFkZHJlc3MgPyBbdGhpcy5ub2RlKCdhZGRyZXNzJywgYWRkcmVzcyldIDogdW5kZWZpbmVkKSxcbiAgICBdO1xuICB9XG5cbiAgcGFyc2VQc2J0SW5wdXQoaW5wdXQ6IHV0eG9saWIuYml0Z28uUHNidElucHV0KTogUGFyc2VyTm9kZVtdIHtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMoe1xuICAgICAgbXVzaWcyUGFydGljaXBhbnRzOiB1dHhvbGliLmJpdGdvLm11c2lnMi5wYXJzZVBzYnRNdXNpZzJQYXJ0aWNpcGFudHMoaW5wdXQpLFxuICAgICAgbXVzaWcyTm9uY2VzOiB1dHhvbGliLmJpdGdvLm11c2lnMi5wYXJzZVBzYnRNdXNpZzJOb25jZXMoaW5wdXQpLFxuICAgICAgbXVzaWcyUGFydGlhbFNpZ25hdHVyZXM6IHV0eG9saWIuYml0Z28ubXVzaWcyLnBhcnNlUHNidE11c2lnMlBhcnRpYWxTaWdzKGlucHV0KSxcbiAgICB9KS5mbGF0TWFwKChba2V5LCB2YWx1ZV0pID0+ICh2YWx1ZSA/IFtwYXJzZVVua25vd24odGhpcywga2V5LCB2YWx1ZSldIDogW10pKTtcbiAgfVxuXG4gIHBhcnNlSW5wdXQoKTogUGFyc2VyTm9kZSB7XG4gICAgY29uc3QgcHNidElucHV0ID0gdGhpcy50eCBpbnN0YW5jZW9mIHV0eG9saWIuYml0Z28uVXR4b1BzYnQgPyB0aGlzLnR4LmRhdGEuaW5wdXRzW3RoaXMuaW5wdXRJbmRleF0gOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgeyB0eGlkOiBwcmV2VHhpZCwgdm91dCwgc2VxdWVuY2UsIHNjcmlwdCwgd2l0bmVzcyB9ID0gZ2V0UGFyc2VyVHhJbnB1dFByb3BlcnRpZXModGhpcy5pbnB1dCwgcHNidElucHV0KTtcbiAgICBjb25zdCBwcmV2T3V0cHV0ID0gdGhpcy5jaGFpbkluZm8ucHJldk91dHB1dHM/Llt0aGlzLmlucHV0SW5kZXhdO1xuICAgIHJldHVybiB0aGlzLm5vZGUodGhpcy5pbnB1dEluZGV4LCBnZXRPdXRwdXRJZCh0aGlzLmlucHV0KSwgW1xuICAgICAgdGhpcy5ub2RlKCdzZXF1ZW5jZScsIHNlcXVlbmNlID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiB0b0J1ZmZlclVJbnQzMkJFKHNlcXVlbmNlKSksXG4gICAgICB0aGlzLnBhcnNlSW5wdXRTY3JpcHQoc2NyaXB0KSxcbiAgICAgIHRoaXMucGFyc2VXaXRuZXNzKHdpdG5lc3MpLFxuICAgICAgdGhpcy5wYXJzZVNpZ1NjcmlwdCgpLFxuICAgICAgLi4uKHBzYnRJbnB1dCA/IHRoaXMucGFyc2VQcmV2T3V0KHBzYnRJbnB1dCkgOiBbXSksXG4gICAgICAuLi4ocHJldk91dHB1dFxuICAgICAgICA/IG5ldyBPdXRwdXRQYXJzZXIoXG4gICAgICAgICAgICB0aGlzLnR4Lm5ldHdvcmssXG4gICAgICAgICAgICBwcmV2VHhpZCxcbiAgICAgICAgICAgIHZvdXQsXG4gICAgICAgICAgICBwcmV2T3V0cHV0LFxuICAgICAgICAgICAgdGhpcy5jaGFpbkluZm8sXG4gICAgICAgICAgICB0aGlzLnBhcmFtc1xuICAgICAgICAgICkucGFyc2VQcmV2T3V0cHV0U3BlbmQoe1xuICAgICAgICAgICAgY29uZmxpY3Q6IHRydWUsXG4gICAgICAgICAgfSlcbiAgICAgICAgOiBbXSksXG4gICAgICAuLi4ocHNidElucHV0ID8gdGhpcy5wYXJzZVBzYnRJbnB1dChwc2J0SW5wdXQpIDogW10pLFxuICAgIF0pO1xuICB9XG59XG4iXX0=
@@ -1,7 +1,6 @@
1
- /// <reference types="node" />
1
+ import { Network } from '@bitgo-beta/utxo-lib';
2
2
  import { ChainInfo } from './TxParser';
3
3
  import { Parser, ParserNode } from './Parser';
4
- import { Network } from '@bitgo-beta/utxo-lib';
5
4
  export declare class OutputParser extends Parser {
6
5
  private network;
7
6
  private txid;
@@ -16,9 +15,10 @@ export declare class OutputParser extends Parser {
16
15
  parseOutputScript: boolean;
17
16
  parseError?: 'throw' | 'continue';
18
17
  });
19
- parseSpend(params: {
18
+ parsePrevOutputSpend(params: {
20
19
  conflict: boolean;
21
20
  }): ParserNode[];
21
+ parseOutputSpend(): ParserNode[];
22
22
  parseOutput(): ParserNode;
23
23
  }
24
24
  //# sourceMappingURL=OutputParser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"OutputParser.d.ts","sourceRoot":"","sources":["../../src/OutputParser.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAG9C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,qBAAa,YAAa,SAAQ,MAAM;IAEpC,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,MAAM;gBALN,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EACzC,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE;QACd,iBAAiB,EAAE,OAAO,CAAC;QAC3B,UAAU,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;KACnC;IAKH,UAAU,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAA;KAAE,GAAG,UAAU,EAAE;IAgBvD,WAAW,IAAI,UAAU;CAkB1B"}
1
+ {"version":3,"file":"OutputParser.d.ts","sourceRoot":"","sources":["../../src/OutputParser.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAI9C,qBAAa,YAAa,SAAQ,MAAM;IAEpC,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,MAAM;gBALN,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EACzC,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE;QACd,iBAAiB,EAAE,OAAO,CAAC;QAC3B,UAAU,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;KACnC;IAKH,oBAAoB,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAA;KAAE,GAAG,UAAU,EAAE;IAgBjE,gBAAgB,IAAI,UAAU,EAAE;IAahC,WAAW,IAAI,UAAU;CAkB1B"}