@bitgo/account-lib 2.18.0 → 2.19.0-rc.10

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 (182) hide show
  1. package/.mocharc.js +10 -0
  2. package/DEVELOPER.md +1 -1
  3. package/dist/browser/bitgo-account-lib.js +1 -1
  4. package/dist/browser/bitgo-account-lib.js.LICENSE.txt +10 -17
  5. package/dist/package.json +12 -15
  6. package/dist/src/coin/algo/ifaces.d.ts +1 -0
  7. package/dist/src/coin/algo/ifaces.d.ts.map +1 -1
  8. package/dist/src/coin/algo/ifaces.js +1 -1
  9. package/dist/src/coin/algo/index.d.ts +2 -0
  10. package/dist/src/coin/algo/index.d.ts.map +1 -1
  11. package/dist/src/coin/algo/index.js +23 -2
  12. package/dist/src/coin/algo/keyRegistrationBuilder.d.ts +24 -5
  13. package/dist/src/coin/algo/keyRegistrationBuilder.d.ts.map +1 -1
  14. package/dist/src/coin/algo/keyRegistrationBuilder.js +100 -21
  15. package/dist/src/coin/algo/transaction.d.ts.map +1 -1
  16. package/dist/src/coin/algo/transaction.js +15 -6
  17. package/dist/src/coin/algo/txnSchema.d.ts.map +1 -1
  18. package/dist/src/coin/algo/txnSchema.js +2 -1
  19. package/dist/src/coin/algo/utils.d.ts +5 -0
  20. package/dist/src/coin/algo/utils.d.ts.map +1 -1
  21. package/dist/src/coin/algo/utils.js +19 -2
  22. package/dist/src/coin/avaxc/resources.js +3 -3
  23. package/dist/src/coin/avaxc/transactionBuilder.d.ts +1 -1
  24. package/dist/src/coin/avaxc/transactionBuilder.d.ts.map +1 -1
  25. package/dist/src/coin/avaxc/transactionBuilder.js +1 -1
  26. package/dist/src/coin/baseCoin/baseTransaction.d.ts +6 -0
  27. package/dist/src/coin/baseCoin/baseTransaction.d.ts.map +1 -1
  28. package/dist/src/coin/baseCoin/baseTransaction.js +13 -1
  29. package/dist/src/coin/baseCoin/baseTransactionBuilder.d.ts +9 -1
  30. package/dist/src/coin/baseCoin/baseTransactionBuilder.d.ts.map +1 -1
  31. package/dist/src/coin/baseCoin/baseTransactionBuilder.js +10 -1
  32. package/dist/src/coin/baseCoin/blsKeyPair.js +7 -7
  33. package/dist/src/coin/baseCoin/iface.d.ts +7 -0
  34. package/dist/src/coin/baseCoin/iface.d.ts.map +1 -1
  35. package/dist/src/coin/baseCoin/iface.js +1 -1
  36. package/dist/src/coin/baseCoin/index.d.ts +1 -0
  37. package/dist/src/coin/baseCoin/index.d.ts.map +1 -1
  38. package/dist/src/coin/baseCoin/index.js +4 -2
  39. package/dist/src/coin/celo/stakingBuilder.d.ts +1 -1
  40. package/dist/src/coin/celo/stakingBuilder.d.ts.map +1 -1
  41. package/dist/src/coin/celo/stakingBuilder.js +1 -1
  42. package/dist/src/coin/celo/transactionBuilder.d.ts +1 -1
  43. package/dist/src/coin/celo/transactionBuilder.d.ts.map +1 -1
  44. package/dist/src/coin/celo/transactionBuilder.js +1 -1
  45. package/dist/src/coin/cspr/delegateBuilder.d.ts +1 -1
  46. package/dist/src/coin/cspr/delegateBuilder.d.ts.map +1 -1
  47. package/dist/src/coin/cspr/delegateBuilder.js +1 -1
  48. package/dist/src/coin/cspr/transaction.d.ts +1 -1
  49. package/dist/src/coin/cspr/transaction.d.ts.map +1 -1
  50. package/dist/src/coin/cspr/transaction.js +1 -1
  51. package/dist/src/coin/cspr/transactionBuilder.d.ts +1 -1
  52. package/dist/src/coin/cspr/transactionBuilder.d.ts.map +1 -1
  53. package/dist/src/coin/cspr/transactionBuilder.js +1 -1
  54. package/dist/src/coin/cspr/transactionBuilderFactory.d.ts +1 -1
  55. package/dist/src/coin/cspr/transactionBuilderFactory.d.ts.map +1 -1
  56. package/dist/src/coin/cspr/transactionBuilderFactory.js +1 -1
  57. package/dist/src/coin/cspr/transferBuilder.d.ts +1 -1
  58. package/dist/src/coin/cspr/transferBuilder.d.ts.map +1 -1
  59. package/dist/src/coin/cspr/transferBuilder.js +1 -1
  60. package/dist/src/coin/cspr/undelegateBuilder.d.ts +1 -1
  61. package/dist/src/coin/cspr/undelegateBuilder.d.ts.map +1 -1
  62. package/dist/src/coin/cspr/undelegateBuilder.js +1 -1
  63. package/dist/src/coin/cspr/walletInitializationBuilder.d.ts +1 -1
  64. package/dist/src/coin/cspr/walletInitializationBuilder.d.ts.map +1 -1
  65. package/dist/src/coin/cspr/walletInitializationBuilder.js +1 -1
  66. package/dist/src/coin/dot/batchTransactionBuilder.d.ts.map +1 -1
  67. package/dist/src/coin/dot/batchTransactionBuilder.js +1 -1
  68. package/dist/src/coin/dot/iface.d.ts +8 -2
  69. package/dist/src/coin/dot/iface.d.ts.map +1 -1
  70. package/dist/src/coin/dot/iface.js +2 -1
  71. package/dist/src/coin/dot/index.d.ts +2 -0
  72. package/dist/src/coin/dot/index.d.ts.map +1 -1
  73. package/dist/src/coin/dot/index.js +6 -2
  74. package/dist/src/coin/dot/keyPair.d.ts.map +1 -1
  75. package/dist/src/coin/dot/keyPair.js +4 -2
  76. package/dist/src/coin/dot/singletonRegistry.d.ts +7 -0
  77. package/dist/src/coin/dot/singletonRegistry.d.ts.map +1 -0
  78. package/dist/src/coin/dot/singletonRegistry.js +23 -0
  79. package/dist/src/coin/dot/transaction.d.ts +18 -2
  80. package/dist/src/coin/dot/transaction.d.ts.map +1 -1
  81. package/dist/src/coin/dot/transaction.js +66 -66
  82. package/dist/src/coin/dot/transactionBuilder.d.ts +6 -2
  83. package/dist/src/coin/dot/transactionBuilder.d.ts.map +1 -1
  84. package/dist/src/coin/dot/transactionBuilder.js +19 -8
  85. package/dist/src/coin/dot/transactionBuilderFactory.d.ts +2 -1
  86. package/dist/src/coin/dot/transactionBuilderFactory.d.ts.map +1 -1
  87. package/dist/src/coin/dot/transactionBuilderFactory.js +6 -7
  88. package/dist/src/coin/dot/transferBuilder.d.ts.map +1 -1
  89. package/dist/src/coin/dot/transferBuilder.js +4 -3
  90. package/dist/src/coin/dot/txnSchema.d.ts +1 -0
  91. package/dist/src/coin/dot/txnSchema.d.ts.map +1 -1
  92. package/dist/src/coin/dot/txnSchema.js +5 -2
  93. package/dist/src/coin/dot/utils.d.ts +19 -4
  94. package/dist/src/coin/dot/utils.d.ts.map +1 -1
  95. package/dist/src/coin/dot/utils.js +39 -11
  96. package/dist/src/coin/dot/withdrawUnstakedBuilder.d.ts +38 -0
  97. package/dist/src/coin/dot/withdrawUnstakedBuilder.d.ts.map +1 -0
  98. package/dist/src/coin/dot/withdrawUnstakedBuilder.js +112 -0
  99. package/dist/src/coin/etc/transactionBuilder.d.ts +1 -1
  100. package/dist/src/coin/etc/transactionBuilder.d.ts.map +1 -1
  101. package/dist/src/coin/etc/transactionBuilder.js +1 -1
  102. package/dist/src/coin/eth2/keyPair.js +2 -2
  103. package/dist/src/coin/hbar/transaction.d.ts +1 -1
  104. package/dist/src/coin/hbar/transaction.d.ts.map +1 -1
  105. package/dist/src/coin/hbar/transaction.js +1 -1
  106. package/dist/src/coin/hbar/transactionBuilder.d.ts +1 -1
  107. package/dist/src/coin/hbar/transactionBuilder.d.ts.map +1 -1
  108. package/dist/src/coin/hbar/transactionBuilder.js +1 -1
  109. package/dist/src/coin/hbar/transactionBuilderFactory.d.ts +1 -1
  110. package/dist/src/coin/hbar/transactionBuilderFactory.d.ts.map +1 -1
  111. package/dist/src/coin/hbar/transactionBuilderFactory.js +1 -1
  112. package/dist/src/coin/hbar/transferBuilder.d.ts +1 -1
  113. package/dist/src/coin/hbar/transferBuilder.d.ts.map +1 -1
  114. package/dist/src/coin/hbar/transferBuilder.js +1 -1
  115. package/dist/src/coin/hbar/walletInitializationBuilder.d.ts +1 -1
  116. package/dist/src/coin/hbar/walletInitializationBuilder.d.ts.map +1 -1
  117. package/dist/src/coin/hbar/walletInitializationBuilder.js +1 -1
  118. package/dist/src/coin/near/iface.d.ts +29 -0
  119. package/dist/src/coin/near/iface.d.ts.map +1 -0
  120. package/dist/src/coin/near/iface.js +8 -0
  121. package/dist/src/coin/near/index.d.ts +3 -0
  122. package/dist/src/coin/near/index.d.ts.map +1 -1
  123. package/dist/src/coin/near/index.js +8 -2
  124. package/dist/src/coin/near/keyPair.d.ts +7 -0
  125. package/dist/src/coin/near/keyPair.d.ts.map +1 -1
  126. package/dist/src/coin/near/keyPair.js +15 -1
  127. package/dist/src/coin/near/transaction.d.ts +57 -2
  128. package/dist/src/coin/near/transaction.d.ts.map +1 -1
  129. package/dist/src/coin/near/transaction.js +244 -6
  130. package/dist/src/coin/near/transactionBuilder.d.ts +64 -2
  131. package/dist/src/coin/near/transactionBuilder.d.ts.map +1 -1
  132. package/dist/src/coin/near/transactionBuilder.js +219 -8
  133. package/dist/src/coin/near/transactionBuilderFactory.d.ts +1 -1
  134. package/dist/src/coin/near/transactionBuilderFactory.d.ts.map +1 -1
  135. package/dist/src/coin/near/transactionBuilderFactory.js +17 -2
  136. package/dist/src/coin/near/transferBuilder.d.ts +14 -2
  137. package/dist/src/coin/near/transferBuilder.d.ts.map +1 -1
  138. package/dist/src/coin/near/transferBuilder.js +63 -8
  139. package/dist/src/coin/near/utils.d.ts +24 -1
  140. package/dist/src/coin/near/utils.d.ts.map +1 -1
  141. package/dist/src/coin/near/utils.js +42 -8
  142. package/dist/src/coin/near/walletInitializationBuilder.d.ts +0 -2
  143. package/dist/src/coin/near/walletInitializationBuilder.d.ts.map +1 -1
  144. package/dist/src/coin/near/walletInitializationBuilder.js +2 -6
  145. package/dist/src/coin/rbtc/transactionBuilder.d.ts +1 -1
  146. package/dist/src/coin/rbtc/transactionBuilder.d.ts.map +1 -1
  147. package/dist/src/coin/rbtc/transactionBuilder.js +1 -1
  148. package/dist/src/coin/sol/ataInitializationBuilder.d.ts +12 -1
  149. package/dist/src/coin/sol/ataInitializationBuilder.d.ts.map +1 -1
  150. package/dist/src/coin/sol/ataInitializationBuilder.js +37 -10
  151. package/dist/src/coin/sol/ataInitializationTransaction.d.ts +14 -0
  152. package/dist/src/coin/sol/ataInitializationTransaction.d.ts.map +1 -0
  153. package/dist/src/coin/sol/ataInitializationTransaction.js +104 -0
  154. package/dist/src/coin/sol/index.d.ts +3 -1
  155. package/dist/src/coin/sol/index.d.ts.map +1 -1
  156. package/dist/src/coin/sol/index.js +6 -2
  157. package/dist/src/coin/sol/tokenEncodeDecode.d.ts +85 -0
  158. package/dist/src/coin/sol/tokenEncodeDecode.d.ts.map +1 -0
  159. package/dist/src/coin/sol/tokenEncodeDecode.js +162 -0
  160. package/dist/src/coin/sol/transaction.d.ts +8 -2
  161. package/dist/src/coin/sol/transaction.d.ts.map +1 -1
  162. package/dist/src/coin/sol/transaction.js +21 -3
  163. package/dist/src/coin/sol/transactionBuilder.d.ts +6 -2
  164. package/dist/src/coin/sol/transactionBuilder.d.ts.map +1 -1
  165. package/dist/src/coin/sol/transactionBuilder.js +11 -1
  166. package/dist/src/coin/sol/transactionBuilderFactory.d.ts +3 -1
  167. package/dist/src/coin/sol/transactionBuilderFactory.d.ts.map +1 -1
  168. package/dist/src/coin/sol/transactionBuilderFactory.js +8 -3
  169. package/dist/src/coin/sol/utils.d.ts +9 -0
  170. package/dist/src/coin/sol/utils.d.ts.map +1 -1
  171. package/dist/src/coin/sol/utils.js +27 -2
  172. package/dist/src/index.d.ts +2 -0
  173. package/dist/src/index.d.ts.map +1 -1
  174. package/dist/src/index.js +7 -2
  175. package/dist/src/mpc/tss.d.ts +7 -7
  176. package/dist/src/mpc/tss.d.ts.map +1 -1
  177. package/dist/src/mpc/tss.js +3 -2
  178. package/dist/src/utils/crypto.d.ts +15 -0
  179. package/dist/src/utils/crypto.d.ts.map +1 -1
  180. package/dist/src/utils/crypto.js +33 -2
  181. package/dist/tsconfig.tsbuildinfo +1 -0
  182. package/package.json +12 -15
@@ -80,8 +80,9 @@ var curves_1 = __importDefault(require("./curves"));
80
80
  var js_sha512_1 = require("js-sha512");
81
81
  var shamir_1 = __importDefault(require("./shamir"));
82
82
  var crypto_1 = require("crypto");
83
+ var lodash_1 = __importDefault(require("lodash"));
83
84
  var convertObjectHexToBuffer = function (object, keys) {
84
- var result = object;
85
+ var result = lodash_1.default.cloneDeep(object);
85
86
  keys.forEach(function (key) {
86
87
  result[key] = Buffer.from(object[key], 'hex');
87
88
  });
@@ -252,4 +253,4 @@ var Eddsa = function () { return __awaiter(void 0, void 0, void 0, function () {
252
253
  });
253
254
  }); };
254
255
  exports.default = Eddsa;
255
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21wYy90c3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4Qkc7QUFDSCxJQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDakMsb0RBQW9DO0FBQ3BDLHVDQUFtQztBQUNuQyxvREFBOEI7QUFDOUIsaUNBQTBEO0FBRTFELElBQU0sd0JBQXdCLEdBQUcsVUFBQyxNQUEyQixFQUFFLElBQWM7SUFDM0UsSUFBTSxNQUFNLEdBQVEsTUFBTSxDQUFDO0lBQzNCLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBQyxHQUFHO1FBQ2YsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hELENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyxDQUFDO0FBdUVGLElBQU0sS0FBSyxHQUFHOzs7O29CQUNJLHFCQUFNLGdCQUFZLEVBQUUsRUFBQTs7Z0JBQTlCLE9BQU8sR0FBRyxTQUFvQjtnQkFDOUIsTUFBTSxHQUFHLGdCQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBRXpCLFFBQVEsR0FBRyxVQUFDLEtBQWEsRUFBRSxTQUFpQixFQUFFLFNBQWlCO29CQUNuRSxNQUFNLENBQUMsS0FBSyxHQUFHLENBQUMsSUFBSSxLQUFLLElBQUksU0FBUyxDQUFDLENBQUM7b0JBQ3hDLElBQU0sRUFBRSxHQUFHLG9CQUFpQixDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUNqQyxJQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGtCQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxD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TSxDQUFDO3dCQUNsQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUM7d0JBQ2xDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssQ0FBQzt3QkFDdEMsT0FBTztxQkFDUixDQUFDLENBQUM7b0JBQ0gsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUM7Z0JBQy9ELENBQUMsQ0FBQztnQkFFRixzQkFBTyxFQUFFLFFBQVEsVUFBQSxFQUFFLFVBQVUsWUFBQSxFQUFFLFNBQVMsV0FBQSxFQUFFLElBQUksTUFBQSxFQUFFLFdBQVcsYUFBQSxFQUFFLE1BQU0sUUFBQSxFQUFFLEVBQUM7OztLQUN2RSxDQUFDO0FBRUYsa0JBQWUsS0FBSyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBNb2R1bGUgcHJvdmlkZXMgZnVuY3Rpb25zIGZvciBNUEMgdXNpbmcgdGhyZXNob2xkIHNpZ25hdHVyZSBzY2hlbWUgKFRTUykuIEl0IGNvbnRhaW5zXG4gKiBmdW5jdGlvbnMgZm9yIGtleSBnZW5lcmF0aW9uIGFuZCBtZXNzYWdlIHNpZ25pbmcgd2l0aCBFZERTQS5cbiAqXG4gKlxuICogPT09PT09PT09PT09PT09PT09PT09PVxuICogRWREU0EgS2V5IEdlbmVyYXRpb25cbiAqID09PT09PT09PT09PT09PT09PT09PT1cbiAqIDEuIEVhY2ggc2lnbmVyIGdlbmVyYXRlcyB0aGVpciBvd24ga2V5IHNoYXJlLCB3aGljaCBpbnZvbHZlcyBhIHByaXZhdGUgdS1zaGFyZSBhbmQgYSBwdWJsaWMgeS1zaGFyZS5cbiAqIDIuIFNpZ25lcnMgZGlzdHJpYnV0ZSB0aGVpciB5LXNoYXJlIHRvIG90aGVyIHNpZ25lcnMuXG4gKiAzLiBBZnRlciBleGNoYW5naW5nIHktc2hhcmVzIHRoZSBuZXh0IHBoYXNlIGlzIHRvIGNvbWJpbmUga2V5IHNoYXJlcy4gRWFjaCBzaWduZXIgY29tYmluZXMgdGhlaXIgdS1zaGFyZVxuICogICAgd2l0aCB0aGUgeS1zaGFyZXMgcmVjZWl2ZWQgZnJvbSBvdGhlciBzaWduZXJzIGluIG9yZGVyIHRvIGdlbmVyYXRlIGEgcC1zaGFyZSBmb3IgdGhlbXNlbHZlcy4gV2VcbiAqICAgIGFsc28gc2F2ZSBqLXNoYXJlcyBmb3Igb3RoZXIgc2lnbmVycy5cbiAqIDQuIEF0IHRoaXMgcG9pbnQgdGhlIHBsYXllcnMgZG8gbm90IGRpc3RyaWJ1dGUgYW55IHNoYXJlcyBhbmQgdGhlIGZpcnN0IHBoYXNlIG9mIHRoZVxuICogICAgc2lnbmluZyBwcm90b2NvbCBpcyBjb21wbGV0ZS5cbiAqXG4gKiA9PT09PT09PT09PT09PT09PT09PT09XG4gKiBFZERTQSBTaWduaW5nXG4gKiA9PT09PT09PT09PT09PT09PT09PT09XG4gKiAxLiBUaGUgcGFydGllcyBmcm9tIGtleSBnZW5lcmF0aW9uIGRlY2lkZSB0aGV5IHdhbnQgdG8gc2lnbiBzb21ldGhpbmcuIFRoZXkgYmVnaW4gdGhlIHNpZ25pbmcgcHJvdG9jb2xcbiAqICAgIGJ5IGdlbmVyYXRpbmcgc2hhcmVzIG9mIGFuIGVwaGVtZXJhbCBrZXkuXG4gKlxuICogICAgYSkgRWFjaCBzaWduZXIgdXNlcyBoaXMgcC1zaGFyZSBhbmQgdGhlIGotc2hhcmVzIHN0b3JlZCBmb3Igb3RoZXIgcGxheWVycyB0byBnZW5lcmF0ZSBoaXMgc2lnbmluZyBzaGFyZS5cbiAqICAgIGIpIFRoaXMgcmVzdWx0cyBpbiBlYWNoIHNpZ25lciBoYXZpbmcgYSBwcml2YXRlIHgtc2hhcmUgYW5kIHB1YmxpYyByLXNoYXJlcy5cbiAqXG4gKiAyLiBTaWduZXJzIGRpc3RyaWJ1dGUgdGhlaXIgci1zaGFyZXMgdG8gb3RoZXIgc2lnbmVycy5cbiAqIDMuIEFmdGVyIGV4Y2hhbmdpbmcgci1zaGFyZXMsIGVhY2ggc2lnbmVyIHNpZ25zIHRoZWlyIHNoYXJlIG9mIHRoZSBlcGhlbWVyYWwga2V5IHVzaW5nIHRoZWlyIHByaXZhdGVcbiAqICAgIHgtc2hhcmUgd2l0aCB0aGUgci1zaGFyZXMgZnJvbSBvdGhlciBzaWduZXJzLlxuICogNC4gVGhpcyByZXN1bHRzIGluIGVhY2ggc2lnbmVyIGhhdmluZyBhIHB1YmxpYyBnLXNoYXJlIHdoaWNoIHRoZXkgc2VuZCB0byB0aGUgb3RoZXIgc2lnbmVycy5cbiAqIDUuIEFmdGVyIHRoZSBzaWduZXJzIGJyb2FkY2FzdCB0aGVpciBnLXNoYXJlcywgdGhlIGZpbmFsIHNpZ25hdHVyZSBjYW4gYmUgcmUtY29uc3RydWN0ZWQgaW5kZXBlbmRlbnRseS5cbiAqL1xuY29uc3QgYXNzZXJ0ID0gcmVxdWlyZSgnYXNzZXJ0Jyk7XG5pbXBvcnQgRWQyNTUxOUN1cnZlIGZyb20gJy4vY3VydmVzJztcbmltcG9ydCB7IHNoYTUxMiB9IGZyb20gJ2pzLXNoYTUxMic7XG5pbXBvcnQgU2hhbWlyIGZyb20gJy4vc2hhbWlyJztcbmltcG9ydCB7IHJhbmRvbUJ5dGVzIGFzIGNyeXB0b1JhbmRvbUJ5dGVzIH0gZnJvbSAnY3J5cHRvJztcblxuY29uc3QgY29udmVydE9iamVjdEhleFRvQnVmZmVyID0gKG9iamVjdDogUmVjb3JkPHN0cmluZywgYW55Piwga2V5czogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgcmVzdWx0OiBhbnkgPSBvYmplY3Q7XG4gIGtleXMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgcmVzdWx0W2tleV0gPSBCdWZmZXIuZnJvbShvYmplY3Rba2V5XSwgJ2hleCcpO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbmludGVyZmFjZSBVU2hhcmUge1xuICBpOiBzdHJpbmc7XG4gIHk6IHN0cmluZztcbiAgdTogc3RyaW5nO1xuICBwcmVmaXg6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFlTaGFyZSB7XG4gIGk6IHN0cmluZztcbiAgajogc3RyaW5nO1xuICB5OiBzdHJpbmc7XG4gIHU6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIEtleVNoYXJlIHtcbiAgdVNoYXJlOiBVU2hhcmU7XG4gIHlTaGFyZXM6IFJlY29yZDxzdHJpbmcsIFlTaGFyZT47XG59XG5cbmludGVyZmFjZSBQU2hhcmUge1xuICBpOiBzdHJpbmc7XG4gIHg6IHN0cmluZztcbiAgeTogc3RyaW5nO1xuICBwcmVmaXg6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIEpTaGFyZSB7XG4gIGk6IHN0cmluZztcbiAgajogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgS2V5Q29tYmluZSB7XG4gIHBTaGFyZTogUFNoYXJlO1xuICBqU2hhcmVzOiBSZWNvcmQ8c3RyaW5nLCBKU2hhcmU+O1xufVxuXG5pbnRlcmZhY2UgWFNoYXJlIHtcbiAgaTogc3RyaW5nO1xuICB5OiBzdHJpbmc7XG4gIHg6IHN0cmluZztcbiAgcjogc3RyaW5nO1xuICBSOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBSU2hhcmUge1xuICBpOiBzdHJpbmc7XG4gIGo6IHN0cmluZztcbiAgcjogc3RyaW5nO1xuICBSOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBTaWduU2hhcmUge1xuICB4U2hhcmU6IFhTaGFyZTtcbiAgclNoYXJlczogUmVjb3JkPHN0cmluZywgUlNoYXJlPjtcbn1cblxuaW50ZXJmYWNlIEdTaGFyZSB7XG4gIGk6IHN0cmluZztcbiAgeTogc3RyaW5nO1xuICBnYW1tYTogc3RyaW5nO1xuICBSOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBTaWduYXR1cmUge1xuICB5OiBzdHJpbmc7XG4gIFI6IHN0cmluZztcbiAgc2lnbWE6IHN0cmluZztcbn1cblxuY29uc3QgRWRkc2EgPSBhc3luYyAoKSA9PiB7XG4gIGNvbnN0IGVkMjU1MTkgPSBhd2FpdCBFZDI1NTE5Q3VydmUoKTtcbiAgY29uc3Qgc2hhbWlyID0gU2hhbWlyKGVkMjU1MTkpO1xuXG4gIGNvbnN0IGtleVNoYXJlID0gKGluZGV4OiBudW1iZXIsIHRocmVzaG9sZDogbnVtYmVyLCBudW1TaGFyZXM6IG51bWJlcik6IEtleVNoYXJlID0+IHtcbiAgICBhc3NlcnQoaW5kZXggPiAwICYmIGluZGV4IDw9IG51bVNoYXJlcyk7XG4gICAgY29uc3Qgc2sgPSBjcnlwdG9SYW5kb21CeXRlcygzMik7XG4gICAgY29uc3QgaCA9IEJ1ZmZlci5mcm9tKHNoYTUxMi5kaWdlc3Qoc2spKTtcbiAgICBjb25zdCB6ZXJvQnVmZmVyID0gQnVmZmVyLmFsbG9jKDY0IC0gaC5sZW5ndGgpO1xuICAgIGNvbnN0IGNvbWJpbmVkQnVmZmVyID0gQnVmZmVyLmNvbmNhdChbemVyb0J1ZmZlciwgaF0pO1xuXG4gICAgbGV0IHVCdWZmZXIgPSBjb21iaW5lZEJ1ZmZlci5zbGljZSgwLCAzMik7XG4gICAgdUJ1ZmZlclswXSAmPSAyNDg7XG4gICAgdUJ1ZmZlclszMV0gJj0gNjM7XG4gICAgdUJ1ZmZlclszMV0gfD0gNjQ7XG5cbiAgICBjb25zdCB6ZXJvQnVmZmVyMzIgPSBCdWZmZXIuYWxsb2MoMzIpO1xuICAgIHVCdWZmZXIgPSBCdWZmZXIuY29uY2F0KFt1QnVmZmVyLCB6ZXJvQnVmZmVyMzJdKTtcbiAgICBjb25zdCB1ID0gQnVmZmVyLmZyb20oZWQyNTUxOS5zY2FsYXJSZWR1Y2UodUJ1ZmZlcikpO1xuICAgIGNvbnN0IHkgPSBCdWZmZXIuZnJvbShlZDI1NTE5LmJhc2VQb2ludE11bHQodSkpO1xuICAgIGNvbnN0IHNwbGl0X3UgPSBzaGFtaXIuc3BsaXQodSwgdGhyZXNob2xkLCBudW1TaGFyZXMpO1xuXG4gICAgbGV0IHByZWZpeEJ1ZmZlciA9IGNvbWJpbmVkQnVmZmVyLnN1YmFycmF5KDMyLCBjb21iaW5lZEJ1ZmZlci5sZW5ndGgpO1xuICAgIHByZWZpeEJ1ZmZlciA9IEJ1ZmZlci5jb25jYXQoW3plcm9CdWZmZXIzMiwgcHJlZml4QnVmZmVyXSk7XG4gICAgY29uc3QgcHJlZml4ID0gQnVmZmVyLmZyb20oZWQyNTUxOS5zY2FsYXJSZWR1Y2UocHJlZml4QnVmZmVyKSk7XG5cbiAgICBjb25zdCBQX2k6IFVTaGFyZSA9IHtcbiAgICAgIGk6IGluZGV4LnRvU3RyaW5nKCksXG4gICAgICB5OiB5LnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIHU6IHNwbGl0X3VbaW5kZXgudG9TdHJpbmcoKV0udG9TdHJpbmcoJ2hleCcpLFxuICAgICAgcHJlZml4OiBwcmVmaXgudG9TdHJpbmcoJ2hleCcpLFxuICAgIH07XG4gICAgY29uc3Qgc2hhcmVzOiBLZXlTaGFyZSA9IHtcbiAgICAgIHVTaGFyZTogUF9pLFxuICAgICAgeVNoYXJlczoge30sXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgaW5kIGluIHNwbGl0X3UpIHtcbiAgICAgIGlmIChpbmQgPT09IGluZGV4LnRvU3RyaW5nKCkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBzaGFyZXMueVNoYXJlc1tpbmRdID0ge1xuICAgICAgICBpOiBpbmQsXG4gICAgICAgIGo6IFBfaVsnaSddLFxuICAgICAgICB5OiB5LnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgdTogc3BsaXRfdVtpbmRdLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBzaGFyZXM7XG4gIH07XG4gIGNvbnN0IGtleUNvbWJpbmUgPSAodVNoYXJlOiBVU2hhcmUsIGRpc3RyaWJ1dGVkU2hhcmVzOiBZU2hhcmVbXSk6IEtleUNvbWJpbmUgPT4ge1xuICAgIC8vIHUtc2hhcmVzIGFuZCB5LXNoYXJlcyByZXF1aXJlZCBidWZmZXIgZm9ybWF0IGZvciBjdXJ2ZSBmdW5jdGlvbnNcbiAgICBjb25zdCBzaGFyZXMgPSBbdVNoYXJlLCAuLi5kaXN0cmlidXRlZFNoYXJlc10ubWFwKChzaGFyZSkgPT4gY29udmVydE9iamVjdEhleFRvQnVmZmVyKHNoYXJlLCBbJ3knLCAndSddKSk7XG4gICAgY29uc3QgeVNoYXJlcyA9IHNoYXJlcy5tYXAoKHNoYXJlKSA9PiBzaGFyZVsneSddKTtcbiAgICBjb25zdCB1U2hhcmVzID0gc2hhcmVzLm1hcCgoc2hhcmUpID0+IHNoYXJlWyd1J10pO1xuICAgIGNvbnN0IHkgPSBCdWZmZXIuZnJvbSh5U2hhcmVzLnJlZHVjZSgocGFydGlhbCwgc2hhcmUpID0+IGVkMjU1MTkucG9pbnRBZGQocGFydGlhbCwgc2hhcmUpKSk7XG4gICAgY29uc3QgeCA9IEJ1ZmZlci5mcm9tKHVTaGFyZXMucmVkdWNlKChwYXJ0aWFsLCBzaGFyZSkgPT4gZWQyNTUxOS5zY2FsYXJBZGQocGFydGlhbCwgc2hhcmUpKSk7XG5cbiAgICBjb25zdCBQX2k6IFBTaGFyZSA9IHtcbiAgICAgIGk6IHVTaGFyZVsnaSddLFxuICAgICAgeTogeS50b1N0cmluZygnaGV4JyksXG4gICAgICB4OiB4LnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIHByZWZpeDogdVNoYXJlWydwcmVmaXgnXSxcbiAgICB9O1xuICAgIGNvbnN0IHBsYXllcnM6IEtleUNvbWJpbmUgPSB7XG4gICAgICBwU2hhcmU6IFBfaSxcbiAgICAgIGpTaGFyZXM6IHt9LFxuICAgIH07XG5cbiAgICBmb3IgKGxldCBpbmQgPSAwOyBpbmQgPCBkaXN0cmlidXRlZFNoYXJlcy5sZW5ndGg7IGluZCsrKSB7XG4gICAgICBjb25zdCBQX2ogPSBkaXN0cmlidXRlZFNoYXJlc1tpbmRdO1xuICAgICAgcGxheWVycy5qU2hhcmVzW1BfalsnaiddXSA9IHtcbiAgICAgICAgaTogUF9qWydqJ10sXG4gICAgICAgIGo6IFBfaVsnaSddLFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHBsYXllcnM7XG4gIH07XG5cbiAgY29uc3Qgc2lnblNoYXJlID0gKG1lc3NhZ2U6IEJ1ZmZlciwgcFNoYXJlOiBQU2hhcmUsIGpTaGFyZXM6IEpTaGFyZVtdKTogU2lnblNoYXJlID0+IHtcbiAgICAvLyB4LXNoYXJlcyBhbmQgeS1zaGFyZXMgcmVxdWlyZWQgYnVmZmVyIGZvcm1hdCBmb3IgY3VydmUgZnVuY3Rpb25zXG4gICAgY29uc3Qgc2hhcmVzID0gW2NvbnZlcnRPYmplY3RIZXhUb0J1ZmZlcihwU2hhcmUsIFsneCcsICd5J10pLCAuLi5qU2hhcmVzXTtcbiAgICBjb25zdCBpbmRpY2VzID0gc2hhcmVzLm1hcCgoc2hhcmUpID0+IHNoYXJlWydpJ10pO1xuXG4gICAgLy8gdXNlIGJpZyBlbmRpYW4gZm9yIHByZWZpeFxuICAgIGNvbnN0IHJhbmRvbUJ1ZmZlciA9IGNyeXB0b1JhbmRvbUJ5dGVzKDMyKTtcbiAgICBjb25zdCBwcmVmaXhfcmVmZXJlbmNlID0gQnVmZmVyLmZyb20ocFNoYXJlWydwcmVmaXgnXSwgJ2hleCcpO1xuICAgIHByZWZpeF9yZWZlcmVuY2UucmV2ZXJzZSgpO1xuICAgIGNvbnN0IGNvbWJpbmVkQnVmZmVyID0gQnVmZmVyLmNvbmNhdChbcHJlZml4X3JlZmVyZW5jZSwgbWVzc2FnZSwgcmFuZG9tQnVmZmVyXSk7XG5cbiAgICAvLyB1c2luZyBiaWcgZW5kaWFuXG4gICAgY29uc3QgZGlnZXN0ID0gQnVmZmVyLmZyb20oc2hhNTEyLmRpZ2VzdChjb21iaW5lZEJ1ZmZlcikpO1xuICAgIGRpZ2VzdC5yZXZlcnNlKCk7XG5cbiAgICBjb25zdCByID0gQnVmZmVyLmZyb20oZWQyNTUxOS5zY2FsYXJSZWR1Y2UoZGlnZXN0KSk7XG4gICAgY29uc3QgUiA9IEJ1ZmZlci5mcm9tKGVkMjU1MTkuYmFzZVBvaW50TXVsdChyKSk7XG4gICAgY29uc3Qgc3BsaXRfciA9IHNoYW1pci5zcGxpdChyLCBzaGFyZXMubGVuZ3RoLCBzaGFyZXMubGVuZ3RoLCBpbmRpY2VzKTtcblxuICAgIGNvbnN0IFBfaTogWFNoYXJlID0ge1xuICAgICAgaTogcFNoYXJlWydpJ10sXG4gICAgICB5OiBwU2hhcmVbJ3knXSxcbiAgICAgIHg6IHBTaGFyZVsneCddLFxuICAgICAgcjogc3BsaXRfcltwU2hhcmVbJ2knXV0udG9TdHJpbmcoJ2hleCcpLFxuICAgICAgUjogUi50b1N0cmluZygnaGV4JyksXG4gICAgfTtcblxuICAgIGNvbnN0IHJlc3VsdFNoYXJlczogU2lnblNoYXJlID0ge1xuICAgICAgeFNoYXJlOiBQX2ksXG4gICAgICByU2hhcmVzOiB7fSxcbiAgICB9O1xuXG4gICAgZm9yIChsZXQgaW5kID0gMDsgaW5kIDwgalNoYXJlcy5sZW5ndGg7IGluZCsrKSB7XG4gICAgICBjb25zdCBTX2ogPSBqU2hhcmVzW2luZF07XG4gICAgICByZXN1bHRTaGFyZXMuclNoYXJlc1tTX2pbJ2knXV0gPSB7XG4gICAgICAgIGk6IFNfalsnaSddLFxuICAgICAgICBqOiBwU2hhcmVbJ2knXSxcbiAgICAgICAgcjogc3BsaXRfcltTX2pbJ2knXV0udG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICBSOiBSLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiByZXN1bHRTaGFyZXM7XG4gIH07XG5cbiAgY29uc3Qgc2lnbiA9IChtZXNzYWdlOiBCdWZmZXIsIHBsYXllclNoYXJlOiBYU2hhcmUsIGRpc3RyaWJ1dGVkU2hhcmVzOiBSU2hhcmVbXSk6IEdTaGFyZSA9PiB7XG4gICAgLy8geCwgeSwgciwgUiByZXF1aXJlZCBidWZmZXIgZm9ybWF0IGZvciBjdXJ2ZSBmdW5jdGlvbnNcbiAgICBjb25zdCBzaGFyZXMgPSBbcGxheWVyU2hhcmUsIC4uLmRpc3RyaWJ1dGVkU2hhcmVzXS5tYXAoKHNoYXJlKSA9PiBjb252ZXJ0T2JqZWN0SGV4VG9CdWZmZXIoc2hhcmUsIFsnUicsICdyJ10pKTtcbiAgICBjb25zdCBTX2kgPSBwbGF5ZXJTaGFyZTtcblxuICAgIGNvbnN0IHJTaGFyZXMgPSBzaGFyZXMubWFwKChzaGFyZSkgPT4gc2hhcmVbJ1InXSk7XG4gICAgY29uc3QgbGl0dGxlUlNoYXJlcyA9IHNoYXJlcy5tYXAoKHNoYXJlKSA9PiBzaGFyZVsnciddKTtcblxuICAgIGNvbnN0IFIgPSBCdWZmZXIuZnJvbShyU2hhcmVzLnJlZHVjZSgocGFydGlhbCwgc2hhcmUpID0+IGVkMjU1MTkucG9pbnRBZGQocGFydGlhbCwgc2hhcmUpKSk7XG4gICAgY29uc3QgciA9IEJ1ZmZlci5mcm9tKGxpdHRsZVJTaGFyZXMucmVkdWNlKChwYXJ0aWFsLCBzaGFyZSkgPT4gZWQyNTUxOS5zY2FsYXJBZGQocGFydGlhbCwgc2hhcmUpKSk7XG5cbiAgICBjb25zdCBjb21iaW5lZEJ1ZmZlciA9IEJ1ZmZlci5jb25jYXQoW1IsIEJ1ZmZlci5mcm9tKFNfaVsneSddLCAnaGV4JyksIG1lc3NhZ2VdKTtcbiAgICBjb25zdCBkaWdlc3QgPSBCdWZmZXIuZnJvbShzaGE1MTIuZGlnZXN0KGNvbWJpbmVkQnVmZmVyKSk7XG4gICAgY29uc3QgayA9IEJ1ZmZlci5mcm9tKGVkMjU1MTkuc2NhbGFyUmVkdWNlKGRpZ2VzdCkpO1xuXG4gICAgY29uc3QgZ2FtbWEgPSBCdWZmZXIuZnJvbShlZDI1NTE5LnNjYWxhckFkZChyLCBlZDI1NTE5LnNjYWxhck11bHQoaywgQnVmZmVyLmZyb20oU19pWyd4J10sICdoZXgnKSkpKTtcbiAgICBjb25zdCByZXN1bHQgPSB7XG4gICAgICBpOiBwbGF5ZXJTaGFyZVsnaSddLFxuICAgICAgeTogcGxheWVyU2hhcmVbJ3knXSxcbiAgICAgIGdhbW1hOiBnYW1tYS50b1N0cmluZygnaGV4JyksXG4gICAgICBSOiBSLnRvU3RyaW5nKCdoZXgnKSxcbiAgICB9O1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG5cbiAgY29uc3Qgc2lnbkNvbWJpbmUgPSAoc2hhcmVzOiBHU2hhcmVbXSk6IFNpZ25hdHVyZSA9PiB7XG4gICAgc2hhcmVzID0gc2hhcmVzLm1hcCgoc2hhcmUpID0+IGNvbnZlcnRPYmplY3RIZXhUb0J1ZmZlcihzaGFyZSwgWyd5JywgJ2dhbW1hJywgJ1InXSkpO1xuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhzaGFyZXMpO1xuICAgIGNvbnN0IHkgPSBzaGFyZXNba2V5c1swXV1bJ3knXTtcbiAgICBjb25zdCBSID0gc2hhcmVzW2tleXNbMF1dWydSJ107XG5cbiAgICBjb25zdCByZXN1bHRTaGFyZXMgPSB7fTtcbiAgICBmb3IgKGNvbnN0IGluZCBpbiBzaGFyZXMpIHtcbiAgICAgIGNvbnN0IFNfaSA9IHNoYXJlc1tpbmRdO1xuICAgICAgcmVzdWx0U2hhcmVzW1NfaVsnaSddXSA9IFNfaVsnZ2FtbWEnXTtcbiAgICB9XG4gICAgbGV0IHNpZ21hOiBCdWZmZXIgPSBzaGFtaXIuY29tYmluZShyZXN1bHRTaGFyZXMpO1xuICAgIHNpZ21hID0gQnVmZmVyLmZyb20oc2lnbWEpO1xuICAgIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAgIHk6IHkudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgUjogUi50b1N0cmluZygnaGV4JyksXG4gICAgICBzaWdtYTogc2lnbWEudG9TdHJpbmcoJ2hleCcpLFxuICAgIH07XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuICBjb25zdCB2ZXJpZnkgPSAobWVzc2FnZTogQnVmZmVyLCBzaWduYXR1cmU6IFNpZ25hdHVyZSk6IEJ1ZmZlciA9PiB7XG4gICAgY29uc3QgcHVibGljS2V5ID0gQnVmZmVyLmZyb20oc2lnbmF0dXJlWyd5J10sICdoZXgnKTtcbiAgICBjb25zdCBzaWduZWRNZXNzYWdlID0gQnVmZmVyLmNvbmNhdChbXG4gICAgICBCdWZmZXIuZnJvbShzaWduYXR1cmVbJ1InXSwgJ2hleCcpLFxuICAgICAgQnVmZmVyLmZyb20oc2lnbmF0dXJlWydzaWdtYSddLCAnaGV4JyksXG4gICAgICBtZXNzYWdlLFxuICAgIF0pO1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShlZDI1NTE5LnZlcmlmeShwdWJsaWNLZXksIHNpZ25lZE1lc3NhZ2UpKTtcbiAgfTtcblxuICByZXR1cm4geyBrZXlTaGFyZSwga2V5Q29tYmluZSwgc2lnblNoYXJlLCBzaWduLCBzaWduQ29tYmluZSwgdmVyaWZ5IH07XG59O1xuXG5leHBvcnQgZGVmYXVsdCBFZGRzYTtcbiJdfQ==
256
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21wYy90c3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4Qkc7QUFDSCxJQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDakMsb0RBQW9DO0FBQ3BDLHVDQUFtQztBQUNuQyxvREFBOEI7QUFDOUIsaUNBQTBEO0FBQzFELGtEQUF1QjtBQUV2QixJQUFNLHdCQUF3QixHQUFHLFVBQUMsTUFBMkIsRUFBRSxJQUFjO0lBQzNFLElBQU0sTUFBTSxHQUFRLGdCQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3hDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBQyxHQUFHO1FBQ2YsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hELENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyxDQUFDO0FBdUVGLElBQU0sS0FBSyxHQUFHOzs7O29CQUNJLHFCQUFNLGdCQUFZLEVBQUUsRUFBQTs7Z0JBQTlCLE9BQU8sR0FBRyxTQUFvQjtnQkFDOUIsTUFBTSxHQUFHLGdCQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBRXpCLFFBQVEsR0FBRyxVQUFDLEtBQWEsRUFBRSxTQUFpQixFQUFFLFNBQWlCO29CQUNuRSxNQUFNLENBQUMsS0FBSyxHQUFHLENBQUMsSUFBSSxLQUFLLElBQUksU0FBUyxDQUFDLENBQUM7b0JBQ3hDLElBQU0sRUFBRSxHQUFHLG9CQUFpQixDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUNqQyxJQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsSUFB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QUFDO29CQUNyRCxJQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO3dCQUNsQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUM7d0JBQ2xDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssQ0FBQzt3QkFDdEMsT0FBTztxQkFDUixDQUFDLENBQUM7b0JBQ0gsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUM7Z0JBQy9ELENBQUMsQ0FBQztnQkFFRixzQkFBTyxFQUFFLFFBQVEsVUFBQSxFQUFFLFVBQVUsWUFBQSxFQUFFLFNBQVMsV0FBQSxFQUFFLElBQUksTUFBQSxFQUFFLFdBQVcsYUFBQSxFQUFFLE1BQU0sUUFBQSxFQUFFLEVBQUM7OztLQUN2RSxDQUFDO0FBRUYsa0JBQWUsS0FBSyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBNb2R1bGUgcHJvdmlkZXMgZnVuY3Rpb25zIGZvciBNUEMgdXNpbmcgdGhyZXNob2xkIHNpZ25hdHVyZSBzY2hlbWUgKFRTUykuIEl0IGNvbnRhaW5zXG4gKiBmdW5jdGlvbnMgZm9yIGtleSBnZW5lcmF0aW9uIGFuZCBtZXNzYWdlIHNpZ25pbmcgd2l0aCBFZERTQS5cbiAqXG4gKlxuICogPT09PT09PT09PT09PT09PT09PT09PVxuICogRWREU0EgS2V5IEdlbmVyYXRpb25cbiAqID09PT09PT09PT09PT09PT09PT09PT1cbiAqIDEuIEVhY2ggc2lnbmVyIGdlbmVyYXRlcyB0aGVpciBvd24ga2V5IHNoYXJlLCB3aGljaCBpbnZvbHZlcyBhIHByaXZhdGUgdS1zaGFyZSBhbmQgYSBwdWJsaWMgeS1zaGFyZS5cbiAqIDIuIFNpZ25lcnMgZGlzdHJpYnV0ZSB0aGVpciB5LXNoYXJlIHRvIG90aGVyIHNpZ25lcnMuXG4gKiAzLiBBZnRlciBleGNoYW5naW5nIHktc2hhcmVzIHRoZSBuZXh0IHBoYXNlIGlzIHRvIGNvbWJpbmUga2V5IHNoYXJlcy4gRWFjaCBzaWduZXIgY29tYmluZXMgdGhlaXIgdS1zaGFyZVxuICogICAgd2l0aCB0aGUgeS1zaGFyZXMgcmVjZWl2ZWQgZnJvbSBvdGhlciBzaWduZXJzIGluIG9yZGVyIHRvIGdlbmVyYXRlIGEgcC1zaGFyZSBmb3IgdGhlbXNlbHZlcy4gV2VcbiAqICAgIGFsc28gc2F2ZSBqLXNoYXJlcyBmb3Igb3RoZXIgc2lnbmVycy5cbiAqIDQuIEF0IHRoaXMgcG9pbnQgdGhlIHBsYXllcnMgZG8gbm90IGRpc3RyaWJ1dGUgYW55IHNoYXJlcyBhbmQgdGhlIGZpcnN0IHBoYXNlIG9mIHRoZVxuICogICAgc2lnbmluZyBwcm90b2NvbCBpcyBjb21wbGV0ZS5cbiAqXG4gKiA9PT09PT09PT09PT09PT09PT09PT09XG4gKiBFZERTQSBTaWduaW5nXG4gKiA9PT09PT09PT09PT09PT09PT09PT09XG4gKiAxLiBUaGUgcGFydGllcyBmcm9tIGtleSBnZW5lcmF0aW9uIGRlY2lkZSB0aGV5IHdhbnQgdG8gc2lnbiBzb21ldGhpbmcuIFRoZXkgYmVnaW4gdGhlIHNpZ25pbmcgcHJvdG9jb2xcbiAqICAgIGJ5IGdlbmVyYXRpbmcgc2hhcmVzIG9mIGFuIGVwaGVtZXJhbCBrZXkuXG4gKlxuICogICAgYSkgRWFjaCBzaWduZXIgdXNlcyBoaXMgcC1zaGFyZSBhbmQgdGhlIGotc2hhcmVzIHN0b3JlZCBmb3Igb3RoZXIgcGxheWVycyB0byBnZW5lcmF0ZSBoaXMgc2lnbmluZyBzaGFyZS5cbiAqICAgIGIpIFRoaXMgcmVzdWx0cyBpbiBlYWNoIHNpZ25lciBoYXZpbmcgYSBwcml2YXRlIHgtc2hhcmUgYW5kIHB1YmxpYyByLXNoYXJlcy5cbiAqXG4gKiAyLiBTaWduZXJzIGRpc3RyaWJ1dGUgdGhlaXIgci1zaGFyZXMgdG8gb3RoZXIgc2lnbmVycy5cbiAqIDMuIEFmdGVyIGV4Y2hhbmdpbmcgci1zaGFyZXMsIGVhY2ggc2lnbmVyIHNpZ25zIHRoZWlyIHNoYXJlIG9mIHRoZSBlcGhlbWVyYWwga2V5IHVzaW5nIHRoZWlyIHByaXZhdGVcbiAqICAgIHgtc2hhcmUgd2l0aCB0aGUgci1zaGFyZXMgZnJvbSBvdGhlciBzaWduZXJzLlxuICogNC4gVGhpcyByZXN1bHRzIGluIGVhY2ggc2lnbmVyIGhhdmluZyBhIHB1YmxpYyBnLXNoYXJlIHdoaWNoIHRoZXkgc2VuZCB0byB0aGUgb3RoZXIgc2lnbmVycy5cbiAqIDUuIEFmdGVyIHRoZSBzaWduZXJzIGJyb2FkY2FzdCB0aGVpciBnLXNoYXJlcywgdGhlIGZpbmFsIHNpZ25hdHVyZSBjYW4gYmUgcmUtY29uc3RydWN0ZWQgaW5kZXBlbmRlbnRseS5cbiAqL1xuY29uc3QgYXNzZXJ0ID0gcmVxdWlyZSgnYXNzZXJ0Jyk7XG5pbXBvcnQgRWQyNTUxOUN1cnZlIGZyb20gJy4vY3VydmVzJztcbmltcG9ydCB7IHNoYTUxMiB9IGZyb20gJ2pzLXNoYTUxMic7XG5pbXBvcnQgU2hhbWlyIGZyb20gJy4vc2hhbWlyJztcbmltcG9ydCB7IHJhbmRvbUJ5dGVzIGFzIGNyeXB0b1JhbmRvbUJ5dGVzIH0gZnJvbSAnY3J5cHRvJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cbmNvbnN0IGNvbnZlcnRPYmplY3RIZXhUb0J1ZmZlciA9IChvYmplY3Q6IFJlY29yZDxzdHJpbmcsIGFueT4sIGtleXM6IHN0cmluZ1tdKSA9PiB7XG4gIGNvbnN0IHJlc3VsdDogYW55ID0gXy5jbG9uZURlZXAob2JqZWN0KTtcbiAga2V5cy5mb3JFYWNoKChrZXkpID0+IHtcbiAgICByZXN1bHRba2V5XSA9IEJ1ZmZlci5mcm9tKG9iamVjdFtrZXldLCAnaGV4Jyk7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufTtcblxuaW50ZXJmYWNlIFVTaGFyZSB7XG4gIGk6IHN0cmluZztcbiAgeTogc3RyaW5nO1xuICB1OiBzdHJpbmc7XG4gIHByZWZpeDogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgWVNoYXJlIHtcbiAgaTogc3RyaW5nO1xuICBqOiBzdHJpbmc7XG4gIHk6IHN0cmluZztcbiAgdTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEtleVNoYXJlIHtcbiAgdVNoYXJlOiBVU2hhcmU7XG4gIHlTaGFyZXM6IFJlY29yZDxzdHJpbmcsIFlTaGFyZT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUFNoYXJlIHtcbiAgaTogc3RyaW5nO1xuICB4OiBzdHJpbmc7XG4gIHk6IHN0cmluZztcbiAgcHJlZml4OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSlNoYXJlIHtcbiAgaTogc3RyaW5nO1xuICBqOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBLZXlDb21iaW5lIHtcbiAgcFNoYXJlOiBQU2hhcmU7XG4gIGpTaGFyZXM6IFJlY29yZDxzdHJpbmcsIEpTaGFyZT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgWFNoYXJlIHtcbiAgaTogc3RyaW5nO1xuICB5OiBzdHJpbmc7XG4gIHg6IHN0cmluZztcbiAgcjogc3RyaW5nO1xuICBSOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUlNoYXJlIHtcbiAgaTogc3RyaW5nO1xuICBqOiBzdHJpbmc7XG4gIHI6IHN0cmluZztcbiAgUjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNpZ25TaGFyZSB7XG4gIHhTaGFyZTogWFNoYXJlO1xuICByU2hhcmVzOiBSZWNvcmQ8c3RyaW5nLCBSU2hhcmU+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdTaGFyZSB7XG4gIGk6IHN0cmluZztcbiAgeTogc3RyaW5nO1xuICBnYW1tYTogc3RyaW5nO1xuICBSOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBTaWduYXR1cmUge1xuICB5OiBzdHJpbmc7XG4gIFI6IHN0cmluZztcbiAgc2lnbWE6IHN0cmluZztcbn1cblxuY29uc3QgRWRkc2EgPSBhc3luYyAoKSA9PiB7XG4gIGNvbnN0IGVkMjU1MTkgPSBhd2FpdCBFZDI1NTE5Q3VydmUoKTtcbiAgY29uc3Qgc2hhbWlyID0gU2hhbWlyKGVkMjU1MTkpO1xuXG4gIGNvbnN0IGtleVNoYXJlID0gKGluZGV4OiBudW1iZXIsIHRocmVzaG9sZDogbnVtYmVyLCBudW1TaGFyZXM6IG51bWJlcik6IEtleVNoYXJlID0+IHtcbiAgICBhc3NlcnQoaW5kZXggPiAwICYmIGluZGV4IDw9IG51bVNoYXJlcyk7XG4gICAgY29uc3Qgc2sgPSBjcnlwdG9SYW5kb21CeXRlcygzMik7XG4gICAgY29uc3QgaCA9IEJ1ZmZlci5mcm9tKHNoYTUxMi5kaWdlc3Qoc2spKTtcbiAgICBjb25zdCB6ZXJvQnVmZmVyID0gQnVmZmVyLmFsbG9jKDY0IC0gaC5sZW5ndGgpO1xuICAgIGNvbnN0IGNvbWJpbmVkQnVmZmVyID0gQnVmZmVyLmNvbmNhdChbemVyb0J1ZmZlciwgaF0pO1xuXG4gICAgbGV0IHVCdWZmZXIgPSBjb21iaW5lZEJ1ZmZlci5zbGljZSgwLCAzMik7XG4gICAgdUJ1ZmZlclswXSAmPSAyNDg7XG4gICAgdUJ1ZmZlclszMV0gJj0gNjM7XG4gICAgdUJ1ZmZlclszMV0gfD0gNjQ7XG5cbiAgICBjb25zdCB6ZXJvQnVmZmVyMzIgPSBCdWZmZXIuYWxsb2MoMzIpO1xuICAgIHVCdWZmZXIgPSBCdWZmZXIuY29uY2F0KFt1QnVmZmVyLCB6ZXJvQnVmZmVyMzJdKTtcbiAgICBjb25zdCB1ID0gQnVmZmVyLmZyb20oZWQyNTUxOS5zY2FsYXJSZWR1Y2UodUJ1ZmZlcikpO1xuICAgIGNvbnN0IHkgPSBCdWZmZXIuZnJvbShlZDI1NTE5LmJhc2VQb2ludE11bHQodSkpO1xuICAgIGNvbnN0IHNwbGl0X3UgPSBzaGFtaXIuc3BsaXQodSwgdGhyZXNob2xkLCBudW1TaGFyZXMpO1xuXG4gICAgbGV0IHByZWZpeEJ1ZmZlciA9IGNvbWJpbmVkQnVmZmVyLnN1YmFycmF5KDMyLCBjb21iaW5lZEJ1ZmZlci5sZW5ndGgpO1xuICAgIHByZWZpeEJ1ZmZlciA9IEJ1ZmZlci5jb25jYXQoW3plcm9CdWZmZXIzMiwgcHJlZml4QnVmZmVyXSk7XG4gICAgY29uc3QgcHJlZml4ID0gQnVmZmVyLmZyb20oZWQyNTUxOS5zY2FsYXJSZWR1Y2UocHJlZml4QnVmZmVyKSk7XG5cbiAgICBjb25zdCBQX2k6IFVTaGFyZSA9IHtcbiAgICAgIGk6IGluZGV4LnRvU3RyaW5nKCksXG4gICAgICB5OiB5LnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIHU6IHNwbGl0X3VbaW5kZXgudG9TdHJpbmcoKV0udG9TdHJpbmcoJ2hleCcpLFxuICAgICAgcHJlZml4OiBwcmVmaXgudG9TdHJpbmcoJ2hleCcpLFxuICAgIH07XG4gICAgY29uc3Qgc2hhcmVzOiBLZXlTaGFyZSA9IHtcbiAgICAgIHVTaGFyZTogUF9pLFxuICAgICAgeVNoYXJlczoge30sXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgaW5kIGluIHNwbGl0X3UpIHtcbiAgICAgIGlmIChpbmQgPT09IGluZGV4LnRvU3RyaW5nKCkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBzaGFyZXMueVNoYXJlc1tpbmRdID0ge1xuICAgICAgICBpOiBpbmQsXG4gICAgICAgIGo6IFBfaVsnaSddLFxuICAgICAgICB5OiB5LnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgdTogc3BsaXRfdVtpbmRdLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBzaGFyZXM7XG4gIH07XG4gIGNvbnN0IGtleUNvbWJpbmUgPSAodVNoYXJlOiBVU2hhcmUsIGRpc3RyaWJ1dGVkU2hhcmVzOiBZU2hhcmVbXSk6IEtleUNvbWJpbmUgPT4ge1xuICAgIC8vIHUtc2hhcmVzIGFuZCB5LXNoYXJlcyByZXF1aXJlZCBidWZmZXIgZm9ybWF0IGZvciBjdXJ2ZSBmdW5jdGlvbnNcbiAgICBjb25zdCBzaGFyZXMgPSBbdVNoYXJlLCAuLi5kaXN0cmlidXRlZFNoYXJlc10ubWFwKChzaGFyZSkgPT4gY29udmVydE9iamVjdEhleFRvQnVmZmVyKHNoYXJlLCBbJ3knLCAndSddKSk7XG4gICAgY29uc3QgeVNoYXJlcyA9IHNoYXJlcy5tYXAoKHNoYXJlKSA9PiBzaGFyZVsneSddKTtcbiAgICBjb25zdCB1U2hhcmVzID0gc2hhcmVzLm1hcCgoc2hhcmUpID0+IHNoYXJlWyd1J10pO1xuICAgIGNvbnN0IHkgPSBCdWZmZXIuZnJvbSh5U2hhcmVzLnJlZHVjZSgocGFydGlhbCwgc2hhcmUpID0+IGVkMjU1MTkucG9pbnRBZGQocGFydGlhbCwgc2hhcmUpKSk7XG4gICAgY29uc3QgeCA9IEJ1ZmZlci5mcm9tKHVTaGFyZXMucmVkdWNlKChwYXJ0aWFsLCBzaGFyZSkgPT4gZWQyNTUxOS5zY2FsYXJBZGQocGFydGlhbCwgc2hhcmUpKSk7XG5cbiAgICBjb25zdCBQX2k6IFBTaGFyZSA9IHtcbiAgICAgIGk6IHVTaGFyZVsnaSddLFxuICAgICAgeTogeS50b1N0cmluZygnaGV4JyksXG4gICAgICB4OiB4LnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIHByZWZpeDogdVNoYXJlWydwcmVmaXgnXSxcbiAgICB9O1xuICAgIGNvbnN0IHBsYXllcnM6IEtleUNvbWJpbmUgPSB7XG4gICAgICBwU2hhcmU6IFBfaSxcbiAgICAgIGpTaGFyZXM6IHt9LFxuICAgIH07XG5cbiAgICBmb3IgKGxldCBpbmQgPSAwOyBpbmQgPCBkaXN0cmlidXRlZFNoYXJlcy5sZW5ndGg7IGluZCsrKSB7XG4gICAgICBjb25zdCBQX2ogPSBkaXN0cmlidXRlZFNoYXJlc1tpbmRdO1xuICAgICAgcGxheWVycy5qU2hhcmVzW1BfalsnaiddXSA9IHtcbiAgICAgICAgaTogUF9qWydqJ10sXG4gICAgICAgIGo6IFBfaVsnaSddLFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHBsYXllcnM7XG4gIH07XG5cbiAgY29uc3Qgc2lnblNoYXJlID0gKG1lc3NhZ2U6IEJ1ZmZlciwgcFNoYXJlOiBQU2hhcmUsIGpTaGFyZXM6IEpTaGFyZVtdKTogU2lnblNoYXJlID0+IHtcbiAgICAvLyB4LXNoYXJlcyBhbmQgeS1zaGFyZXMgcmVxdWlyZWQgYnVmZmVyIGZvcm1hdCBmb3IgY3VydmUgZnVuY3Rpb25zXG4gICAgY29uc3Qgc2hhcmVzID0gW2NvbnZlcnRPYmplY3RIZXhUb0J1ZmZlcihwU2hhcmUsIFsneCcsICd5J10pLCAuLi5qU2hhcmVzXTtcbiAgICBjb25zdCBpbmRpY2VzID0gc2hhcmVzLm1hcCgoc2hhcmUpID0+IHNoYXJlWydpJ10pO1xuXG4gICAgLy8gdXNlIGJpZyBlbmRpYW4gZm9yIHByZWZpeFxuICAgIGNvbnN0IHJhbmRvbUJ1ZmZlciA9IGNyeXB0b1JhbmRvbUJ5dGVzKDMyKTtcbiAgICBjb25zdCBwcmVmaXhfcmVmZXJlbmNlID0gQnVmZmVyLmZyb20ocFNoYXJlWydwcmVmaXgnXSwgJ2hleCcpO1xuICAgIHByZWZpeF9yZWZlcmVuY2UucmV2ZXJzZSgpO1xuICAgIGNvbnN0IGNvbWJpbmVkQnVmZmVyID0gQnVmZmVyLmNvbmNhdChbcHJlZml4X3JlZmVyZW5jZSwgbWVzc2FnZSwgcmFuZG9tQnVmZmVyXSk7XG5cbiAgICAvLyB1c2luZyBiaWcgZW5kaWFuXG4gICAgY29uc3QgZGlnZXN0ID0gQnVmZmVyLmZyb20oc2hhNTEyLmRpZ2VzdChjb21iaW5lZEJ1ZmZlcikpO1xuICAgIGRpZ2VzdC5yZXZlcnNlKCk7XG5cbiAgICBjb25zdCByID0gQnVmZmVyLmZyb20oZWQyNTUxOS5zY2FsYXJSZWR1Y2UoZGlnZXN0KSk7XG4gICAgY29uc3QgUiA9IEJ1ZmZlci5mcm9tKGVkMjU1MTkuYmFzZVBvaW50TXVsdChyKSk7XG4gICAgY29uc3Qgc3BsaXRfciA9IHNoYW1pci5zcGxpdChyLCBzaGFyZXMubGVuZ3RoLCBzaGFyZXMubGVuZ3RoLCBpbmRpY2VzKTtcblxuICAgIGNvbnN0IFBfaTogWFNoYXJlID0ge1xuICAgICAgaTogcFNoYXJlWydpJ10sXG4gICAgICB5OiBwU2hhcmVbJ3knXSxcbiAgICAgIHg6IHBTaGFyZVsneCddLFxuICAgICAgcjogc3BsaXRfcltwU2hhcmVbJ2knXV0udG9TdHJpbmcoJ2hleCcpLFxuICAgICAgUjogUi50b1N0cmluZygnaGV4JyksXG4gICAgfTtcblxuICAgIGNvbnN0IHJlc3VsdFNoYXJlczogU2lnblNoYXJlID0ge1xuICAgICAgeFNoYXJlOiBQX2ksXG4gICAgICByU2hhcmVzOiB7fSxcbiAgICB9O1xuXG4gICAgZm9yIChsZXQgaW5kID0gMDsgaW5kIDwgalNoYXJlcy5sZW5ndGg7IGluZCsrKSB7XG4gICAgICBjb25zdCBTX2ogPSBqU2hhcmVzW2luZF07XG4gICAgICByZXN1bHRTaGFyZXMuclNoYXJlc1tTX2pbJ2knXV0gPSB7XG4gICAgICAgIGk6IFNfalsnaSddLFxuICAgICAgICBqOiBwU2hhcmVbJ2knXSxcbiAgICAgICAgcjogc3BsaXRfcltTX2pbJ2knXV0udG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICBSOiBSLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiByZXN1bHRTaGFyZXM7XG4gIH07XG5cbiAgY29uc3Qgc2lnbiA9IChtZXNzYWdlOiBCdWZmZXIsIHBsYXllclNoYXJlOiBYU2hhcmUsIGRpc3RyaWJ1dGVkU2hhcmVzOiBSU2hhcmVbXSk6IEdTaGFyZSA9PiB7XG4gICAgLy8geCwgeSwgciwgUiByZXF1aXJlZCBidWZmZXIgZm9ybWF0IGZvciBjdXJ2ZSBmdW5jdGlvbnNcbiAgICBjb25zdCBzaGFyZXMgPSBbcGxheWVyU2hhcmUsIC4uLmRpc3RyaWJ1dGVkU2hhcmVzXS5tYXAoKHNoYXJlKSA9PiBjb252ZXJ0T2JqZWN0SGV4VG9CdWZmZXIoc2hhcmUsIFsnUicsICdyJ10pKTtcbiAgICBjb25zdCBTX2kgPSBwbGF5ZXJTaGFyZTtcblxuICAgIGNvbnN0IHJTaGFyZXMgPSBzaGFyZXMubWFwKChzaGFyZSkgPT4gc2hhcmVbJ1InXSk7XG4gICAgY29uc3QgbGl0dGxlUlNoYXJlcyA9IHNoYXJlcy5tYXAoKHNoYXJlKSA9PiBzaGFyZVsnciddKTtcblxuICAgIGNvbnN0IFIgPSBCdWZmZXIuZnJvbShyU2hhcmVzLnJlZHVjZSgocGFydGlhbCwgc2hhcmUpID0+IGVkMjU1MTkucG9pbnRBZGQocGFydGlhbCwgc2hhcmUpKSk7XG4gICAgY29uc3QgciA9IEJ1ZmZlci5mcm9tKGxpdHRsZVJTaGFyZXMucmVkdWNlKChwYXJ0aWFsLCBzaGFyZSkgPT4gZWQyNTUxOS5zY2FsYXJBZGQocGFydGlhbCwgc2hhcmUpKSk7XG5cbiAgICBjb25zdCBjb21iaW5lZEJ1ZmZlciA9IEJ1ZmZlci5jb25jYXQoW1IsIEJ1ZmZlci5mcm9tKFNfaVsneSddLCAnaGV4JyksIG1lc3NhZ2VdKTtcbiAgICBjb25zdCBkaWdlc3QgPSBCdWZmZXIuZnJvbShzaGE1MTIuZGlnZXN0KGNvbWJpbmVkQnVmZmVyKSk7XG4gICAgY29uc3QgayA9IEJ1ZmZlci5mcm9tKGVkMjU1MTkuc2NhbGFyUmVkdWNlKGRpZ2VzdCkpO1xuXG4gICAgY29uc3QgZ2FtbWEgPSBCdWZmZXIuZnJvbShlZDI1NTE5LnNjYWxhckFkZChyLCBlZDI1NTE5LnNjYWxhck11bHQoaywgQnVmZmVyLmZyb20oU19pWyd4J10sICdoZXgnKSkpKTtcbiAgICBjb25zdCByZXN1bHQgPSB7XG4gICAgICBpOiBwbGF5ZXJTaGFyZVsnaSddLFxuICAgICAgeTogcGxheWVyU2hhcmVbJ3knXSxcbiAgICAgIGdhbW1hOiBnYW1tYS50b1N0cmluZygnaGV4JyksXG4gICAgICBSOiBSLnRvU3RyaW5nKCdoZXgnKSxcbiAgICB9O1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG5cbiAgY29uc3Qgc2lnbkNvbWJpbmUgPSAoc2hhcmVzOiBHU2hhcmVbXSk6IFNpZ25hdHVyZSA9PiB7XG4gICAgc2hhcmVzID0gc2hhcmVzLm1hcCgoc2hhcmUpID0+IGNvbnZlcnRPYmplY3RIZXhUb0J1ZmZlcihzaGFyZSwgWyd5JywgJ2dhbW1hJywgJ1InXSkpO1xuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhzaGFyZXMpO1xuICAgIGNvbnN0IHkgPSBzaGFyZXNba2V5c1swXV1bJ3knXTtcbiAgICBjb25zdCBSID0gc2hhcmVzW2tleXNbMF1dWydSJ107XG5cbiAgICBjb25zdCByZXN1bHRTaGFyZXMgPSB7fTtcbiAgICBmb3IgKGNvbnN0IGluZCBpbiBzaGFyZXMpIHtcbiAgICAgIGNvbnN0IFNfaSA9IHNoYXJlc1tpbmRdO1xuICAgICAgcmVzdWx0U2hhcmVzW1NfaVsnaSddXSA9IFNfaVsnZ2FtbWEnXTtcbiAgICB9XG4gICAgbGV0IHNpZ21hOiBCdWZmZXIgPSBzaGFtaXIuY29tYmluZShyZXN1bHRTaGFyZXMpO1xuICAgIHNpZ21hID0gQnVmZmVyLmZyb20oc2lnbWEpO1xuICAgIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAgIHk6IHkudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgUjogUi50b1N0cmluZygnaGV4JyksXG4gICAgICBzaWdtYTogc2lnbWEudG9TdHJpbmcoJ2hleCcpLFxuICAgIH07XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuICBjb25zdCB2ZXJpZnkgPSAobWVzc2FnZTogQnVmZmVyLCBzaWduYXR1cmU6IFNpZ25hdHVyZSk6IEJ1ZmZlciA9PiB7XG4gICAgY29uc3QgcHVibGljS2V5ID0gQnVmZmVyLmZyb20oc2lnbmF0dXJlWyd5J10sICdoZXgnKTtcbiAgICBjb25zdCBzaWduZWRNZXNzYWdlID0gQnVmZmVyLmNvbmNhdChbXG4gICAgICBCdWZmZXIuZnJvbShzaWduYXR1cmVbJ1InXSwgJ2hleCcpLFxuICAgICAgQnVmZmVyLmZyb20oc2lnbmF0dXJlWydzaWdtYSddLCAnaGV4JyksXG4gICAgICBtZXNzYWdlLFxuICAgIF0pO1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShlZDI1NTE5LnZlcmlmeShwdWJsaWNLZXksIHNpZ25lZE1lc3NhZ2UpKTtcbiAgfTtcblxuICByZXR1cm4geyBrZXlTaGFyZSwga2V5Q29tYmluZSwgc2lnblNoYXJlLCBzaWduLCBzaWduQ29tYmluZSwgdmVyaWZ5IH07XG59O1xuXG5leHBvcnQgZGVmYXVsdCBFZGRzYTtcbiJdfQ==
@@ -81,4 +81,19 @@ export declare function isValidBLSPublicKey(pub: string): boolean;
81
81
  * @returns {string} - the hex value
82
82
  */
83
83
  export declare function toHex(buffer: Buffer | Uint8Array): string;
84
+ /**
85
+ * Returns an hex string of the given bigint
86
+ *
87
+ * @param {bigint} bigint - the bigint to be converted to hex
88
+ * @returns {string} - the hex value
89
+ */
90
+ export declare function bigIntToHex(bigint: bigint): string;
91
+ /**
92
+ * Check if base58 decoded string is equale to length
93
+ *
94
+ * @param {string} value - string to be checked
95
+ * @param {number} length - expected decoded length
96
+ * @return {boolean} if the string can decoded as base58 and match the expected length
97
+ */
98
+ export declare function isBase58(value: string, length: number): boolean;
84
99
  //# sourceMappingURL=crypto.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../../src/utils/crypto.ts"],"names":[],"mappings":";AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAGtD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAO1D;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAUjD;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAM9D;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAYjD;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAYjD;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAO/C;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAO/C;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAOvD;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAO5D;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAO5D;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAMzD;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAOxD;AAED;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,CAEzD"}
1
+ {"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../../src/utils/crypto.ts"],"names":[],"mappings":";AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAItD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAO1D;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAUjD;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAM9D;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAYjD;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAYjD;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAO/C;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAO/C;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAOvD;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAO5D;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAO5D;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAMzD;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAOxD;AAED;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,CAEzD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAGlD;AAED;;;;;;GAMG;AAEH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAM/D"}
@@ -18,8 +18,11 @@ var __importStar = (this && this.__importStar) || function (mod) {
18
18
  __setModuleDefault(result, mod);
19
19
  return result;
20
20
  };
21
+ var __importDefault = (this && this.__importDefault) || function (mod) {
22
+ return (mod && mod.__esModule) ? mod : { "default": mod };
23
+ };
21
24
  Object.defineProperty(exports, "__esModule", { value: true });
22
- exports.toHex = exports.isValidBLSPublicKey = exports.isValidBLSPrivateKey = exports.isValidEd25519PublicKey = exports.isValidEd25519SecretKey = exports.isValidEd25519Seed = exports.isValidPrv = exports.isValidPub = exports.isValidXprv = exports.isValidXpub = exports.rawPrvToExtendedKeys = exports.xprvToRawPrv = exports.xpubToUncompressedPub = void 0;
25
+ exports.isBase58 = exports.bigIntToHex = exports.toHex = exports.isValidBLSPublicKey = exports.isValidBLSPrivateKey = exports.isValidEd25519PublicKey = exports.isValidEd25519SecretKey = exports.isValidEd25519Seed = exports.isValidPrv = exports.isValidPub = exports.isValidXprv = exports.isValidXpub = exports.rawPrvToExtendedKeys = exports.xprvToRawPrv = exports.xpubToUncompressedPub = void 0;
23
26
  var bip32 = __importStar(require("bip32"));
24
27
  var bitcoinjs_lib_1 = require("bitcoinjs-lib");
25
28
  var nacl = __importStar(require("tweetnacl"));
@@ -27,6 +30,7 @@ var hex = __importStar(require("@stablelib/hex"));
27
30
  var bls = __importStar(require("noble-bls12-381"));
28
31
  var ethereumjs_utils_old_1 = require("ethereumjs-utils-old");
29
32
  var utils_1 = require("../coin/hbar/utils");
33
+ var bs58_1 = __importDefault(require("bs58"));
30
34
  /**
31
35
  * @param {string} xpub - a base-58 encoded extended public key (BIP32)
32
36
  * @returns {string} the uncompressed public key in hexadecimal
@@ -226,4 +230,31 @@ function toHex(buffer) {
226
230
  return hex.encode(buffer, true);
227
231
  }
228
232
  exports.toHex = toHex;
229
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J5cHRvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL2NyeXB0by50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQStCO0FBQy9CLCtDQUFpRDtBQUNqRCw4Q0FBa0M7QUFDbEMsa0RBQXNDO0FBQ3RDLG1EQUF1QztBQUN2Qyw2REFBc0Q7QUFFdEQsNENBQWtEO0FBRWxEOzs7R0FHRztBQUNILFNBQWdCLHFCQUFxQixDQUFDLElBQVk7SUFDaEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0tBQ2pDO0lBQ0QsT0FBTyxzQkFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSx3QkFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRTtRQUM5RSxVQUFVLEVBQUUsS0FBSztLQUNsQixDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMvQixDQUFDO0FBUEQsc0RBT0M7QUFFRDs7O0dBR0c7QUFDSCxTQUFnQixZQUFZLENBQUMsSUFBWTtJQUN2QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7S0FDakM7SUFFTyxJQUFBLFVBQVUsR0FBSyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSx3QkFBUSxDQUFDLE9BQU8sQ0FBQyxXQUE3QyxDQUE4QztJQUNoRSxJQUFJLENBQUMsVUFBVSxFQUFFO1FBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztLQUNqQztJQUNELE9BQU8sVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNwQyxDQUFDO0FBVkQsb0NBVUM7QUFFRDs7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dCB7IEVDUGFpciwgbmV0d29ya3MgfSBmcm9tICdiaXRjb2luanMtbGliJztcbmltcG9ydCAqIGFzIG5hY2wgZnJvbSAndHdlZXRuYWNsJztcbmltcG9ydCAqIGFzIGhleCBmcm9tICdAc3RhYmxlbGliL2hleCc7XG5pbXBvcnQgKiBhcyBibHMgZnJvbSAnbm9ibGUtYmxzMTItMzgxJztcbmltcG9ydCB7IHN0cmlwSGV4UHJlZml4IH0gZnJvbSAnZXRoZXJldW1qcy11dGlscy1vbGQnO1xuaW1wb3J0IHsgRXh0ZW5kZWRLZXlzIH0gZnJvbSAnLi4vY29pbi9iYXNlQ29pbi9pZmFjZSc7XG5pbXBvcnQgeyB0b1VpbnQ4QXJyYXkgfSBmcm9tICcuLi9jb2luL2hiYXIvdXRpbHMnO1xuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB4cHViIC0gYSBiYXNlLTU4IGVuY29kZWQgZXh0ZW5kZWQgcHVibGljIGtleSAoQklQMzIpXG4gKiBAcmV0dXJucyB7c3RyaW5nfSB0aGUgdW5jb21wcmVzc2VkIHB1YmxpYyBrZXkgaW4gaGV4YWRlY2ltYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHhwdWJUb1VuY29tcHJlc3NlZFB1Yih4cHViOiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoIWlzVmFsaWRYcHViKHhwdWIpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHhwdWInKTtcbiAgfVxuICByZXR1cm4gRUNQYWlyLmZyb21QdWJsaWNLZXkoYmlwMzIuZnJvbUJhc2U1OCh4cHViLCBuZXR3b3Jrcy5iaXRjb2luKS5wdWJsaWNLZXksIHtcbiAgICBjb21wcmVzc2VkOiBmYWxzZSxcbiAgfSkucHVibGljS2V5LnRvU3RyaW5nKCdoZXgnKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30geHBydiAtIGJhc2U1OC1lbmNvZGVkIGV4dGVuZGVkIHByaXZhdGUga2V5IChCSVAzMilcbiAqIEByZXR1cm5zIHtzdHJpbmd9IHRoZSBoZXgtZW5jb2RlZCByYXcgcHJpdmF0ZSBrZXlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHhwcnZUb1Jhd1Bydih4cHJ2OiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoIWlzVmFsaWRYcHJ2KHhwcnYpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHhwcnYnKTtcbiAgfVxuXG4gIGNvbnN0IHsgcHJpdmF0ZUtleSB9ID0gYmlwMzIuZnJvbUJhc2U1OCh4cHJ2LCBuZXR3b3Jrcy5iaXRjb2luKTtcbiAgaWYgKCFwcml2YXRlS2V5KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHhwcnYnKTtcbiAgfVxuICByZXR1cm4gcHJpdmF0ZUtleS50b1N0cmluZygnaGV4Jyk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHBydiAtIFByaXZhdGUga2V5IGluIGhleCBmb3JtYXQgdG8gZ2V0IHRoZSBleHRlbmRlZCBrZXlzIGZvclxuICogQHJldHVybnMge0V4dGVuZGVkS2V5c30geHBydiBhbmQgeHB1YiBpbiBzdHJpbmcgZm9ybWF0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByYXdQcnZUb0V4dGVuZGVkS2V5cyhwcnY6IHN0cmluZyk6IEV4dGVuZGVkS2V5cyB7XG4gIGNvbnN0IGhkID0gYmlwMzIuZnJvbVByaXZhdGVLZXkoQnVmZmVyLmZyb20ocHJ2LCAnaGV4JyksIEJ1ZmZlci5hbGxvYygzMikpO1xuICByZXR1cm4ge1xuICAgIHhwcnY6IGhkLnRvQmFzZTU4KCksXG4gICAgeHB1YjogaGQubmV1dGVyZWQoKS50b0Jhc2U1OCgpLFxuICB9O1xufVxuXG4vKipcbiAqIFdoZXRoZXIgdGhlIGlucHV0IGlzIGEgdmFsaWQgQklQMzIgeHB1YiBvciBub3RcbiAqXG4gKiBAcGFyYW0geHB1YlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFhwdWIoeHB1Yjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmICh4cHViLnN1YnN0cigwLCA0KSAhPT0gJ3hwdWInKSB7XG4gICAgLy8gY2hlY2sgZm9yIHhwdWIgZm9ybWF0cyB3ZSBkb24ndCBzdXBwb3J0LCBzdWNoIGFzIHRwdWJcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdHJ5IHtcbiAgICBiaXAzMi5mcm9tQmFzZTU4KHhwdWIsIG5ldHdvcmtzLmJpdGNvaW4pO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgLy8gaWYgSEQgZ2VuZXJhdGlvbiBkaWRuJ3QgdGhyb3csIGl0IGlzIGEgdmFsaWQgeHB1YlxuICByZXR1cm4gdHJ1ZTtcbn1cblxuLyoqXG4gKiBXaGV0aGVyIHRoZSBpbnB1dCBpcyBhIHZhbGlkIEJJUDMyIHhwcnYgb3Igbm90XG4gKlxuICogQHBhcmFtIHhwcnZcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRYcHJ2KHhwcnY6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBpZiAoeHBydi5zdWJzdHIoMCwgNCkgIT09ICd4cHJ2Jykge1xuICAgIC8vIGNoZWNrIGZvciB4cHJ2IGZvcm1hdHMgd2UgZG9uJ3Qgc3VwcG9ydFxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB0cnkge1xuICAgIGJpcDMyLmZyb21CYXNlNTgoeHBydiwgbmV0d29ya3MuYml0Y29pbik7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICAvLyBpZiBIRCBnZW5lcmF0aW9uIGRpZG4ndCB0aHJvdywgaXQgaXMgYSB2YWxpZCB4cHJ2XG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIFdoZXRoZXIgdGhlIGlucHV0IGlzIGEgdmFsaWQgc2VjcDI1NmsxIHB1YmxpYyBrZXlcbiAqXG4gKiBAcGFyYW0gcHViXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkUHViKHB1Yjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHRyeSB7XG4gICAgRUNQYWlyLmZyb21QdWJsaWNLZXkoQnVmZmVyLmZyb20ocHViLCAnaGV4JykpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIFdoZXRoZXIgdGhlIGlucHV0IGlzIGEgdmFsaWQgc2VjcDI1NmsxIHByaXZhdGUga2V5XG4gKlxuICogQHBhcmFtIHBydlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFBydihwcnY6IHN0cmluZyk6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIEVDUGFpci5mcm9tUHJpdmF0ZUtleShCdWZmZXIuZnJvbShwcnYsICdoZXgnKSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qKlxuICogV2hldGhlciB0aGUgaW5wdXQgaXMgYSB2YWxpZCBlZDI1NTE5IHByaXZhdGUga2V5XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHBydiBBIGhleGFkZWNpbWFsIHByaXZhdGUga2V5IHRvIHZhbGlkYXRlXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gV2hldGhlciB0aGUgaW5wdXQgaXMgYSB2YWxpZCBwdWJsaWMga2V5IG9yIG5vdFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZEVkMjU1MTlTZWVkKHBydjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGVjb2RlZFBydiA9IHRvVWludDhBcnJheShwcnYpO1xuICAgIHJldHVybiBkZWNvZGVkUHJ2Lmxlbmd0aCA9PT0gbmFjbC5zaWduLnNlZWRMZW5ndGg7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqXG4gKiBXaGV0aGVyIHRoZSBpbnB1dCBpcyBhIHZhbGlkIGVkMjU1MTkgcHJpdmF0ZSBrZXlcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJ2IEEgaGV4YWRlY2ltYWwgcHJpdmF0ZSBrZXkgdG8gdmFsaWRhdGVcbiAqIEByZXR1cm5zIHtib29sZWFufSBXaGV0aGVyIHRoZSBpbnB1dCBpcyBhIHZhbGlkIHB1YmxpYyBrZXkgb3Igbm90XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkRWQyNTUxOVNlY3JldEtleShwcnY6IHN0cmluZyk6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIGNvbnN0IGRlY29kZWRQcnYgPSB0b1VpbnQ4QXJyYXkocHJ2KTtcbiAgICByZXR1cm4gZGVjb2RlZFBydi5sZW5ndGggPT09IG5hY2wuc2lnbi5zZWNyZXRLZXlMZW5ndGg7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqXG4gKiBXaGV0aGVyIHRoZSBpbnB1dCBpcyBhIHZhbGlkIGVkMjU1MTkgcHVibGljIGtleVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwdWIgQSBoZXhhZGVjaW1hbCBwdWJsaWMga2V5IHRvIHZhbGlkYXRlXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gV2hldGhlciB0aGUgaW5wdXQgaXMgYSB2YWxpZCBwdWJsaWMga2V5IG9yIG5vdFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZEVkMjU1MTlQdWJsaWNLZXkocHViOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBkZWNvZGVkUHViID0gbmV3IFVpbnQ4QXJyYXkoQnVmZmVyLmZyb20ocHViLCAnaGV4JykpO1xuICAgIHJldHVybiBkZWNvZGVkUHViLmxlbmd0aCA9PT0gbmFjbC5zaWduLnB1YmxpY0tleUxlbmd0aDtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIFdoZXRoZXIgdGhlIGlucHV0IGlzIGEgdmFsaWQgQkxTIHByaXZhdGUga2V5XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHBydiBhIHByaXZhdGUga2V5IHRvIHZhbGlkYXRlXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gV2hldGhlciB0aGUgaW5wdXQgaXMgYSB2YWxpZCBwcml2YXRlIGtleSBvciBub3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRCTFNQcml2YXRlS2V5KHBydjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGJscy5Gci5pc1ZhbGlkKEJpZ0ludChwcnYpKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIFdoZXRoZXIgaW5wdXQgaXMgYSB2YWxpZCBCTFMgcHVibGljIGtleVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwdWIgdGhlIHB1YmxpYyBrZXkgdG8gdmFsaWRhdGVcbiAqIEByZXR1cm5zIHtib29sZWFufSBXaGV0aGVyIGlucHV0IGlzIGEgdmFsaWQgcHVibGljIGtleSBvciBub3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRCTFNQdWJsaWNLZXkocHViOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICBibHMuUG9pbnRHMS5mcm9tQ29tcHJlc3NlZEhleChzdHJpcEhleFByZWZpeChwdWIpKS5hc3NlcnRWYWxpZGl0eSgpO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogUmV0dXJucyBhbiBoZXggc3RyaW5nIG9mIHRoZSBnaXZlbiBidWZmZXJcbiAqXG4gKiBAcGFyYW0ge0J1ZmZlciB8IFVpbnQ4QXJyYXl9IGJ1ZmZlciAtIHRoZSBidWZmZXIgdG8gYmUgY29udmVydGVkIHRvIGhleFxuICogQHJldHVybnMge3N0cmluZ30gLSB0aGUgaGV4IHZhbHVlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0hleChidWZmZXI6IEJ1ZmZlciB8IFVpbnQ4QXJyYXkpOiBzdHJpbmcge1xuICByZXR1cm4gaGV4LmVuY29kZShidWZmZXIsIHRydWUpO1xufVxuIl19
233
+ /**
234
+ * Returns an hex string of the given bigint
235
+ *
236
+ * @param {bigint} bigint - the bigint to be converted to hex
237
+ * @returns {string} - the hex value
238
+ */
239
+ function bigIntToHex(bigint) {
240
+ var hex = bigint.toString(16);
241
+ return '0x' + '0'.slice(0, hex.length % 2) + hex;
242
+ }
243
+ exports.bigIntToHex = bigIntToHex;
244
+ /**
245
+ * Check if base58 decoded string is equale to length
246
+ *
247
+ * @param {string} value - string to be checked
248
+ * @param {number} length - expected decoded length
249
+ * @return {boolean} if the string can decoded as base58 and match the expected length
250
+ */
251
+ function isBase58(value, length) {
252
+ try {
253
+ return !!value && bs58_1.default.decode(value).length === length;
254
+ }
255
+ catch (e) {
256
+ return false;
257
+ }
258
+ }
259
+ exports.isBase58 = isBase58;
260
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J5cHRvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL2NyeXB0by50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQStCO0FBQy9CLCtDQUFpRDtBQUNqRCw4Q0FBa0M7QUFDbEMsa0RBQXNDO0FBQ3RDLG1EQUF1QztBQUN2Qyw2REFBc0Q7QUFFdEQsNENBQWtEO0FBQ2xELDhDQUF3QjtBQUV4Qjs7O0dBR0c7QUFDSCxTQUFnQixxQkFBcUIsQ0FBQyxJQUFZO0lBQ2hELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztLQUNqQztJQUNELE9BQU8sc0JBQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsd0JBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUU7UUFDOUUsVUFBVSxFQUFFLEtBQUs7S0FDbEIsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDL0IsQ0FBQztBQVBELHNEQU9DO0FBRUQ7OztHQUdHO0FBQ0gsU0FBZ0IsWUFBWSxDQUFDLElBQVk7SUFDdkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0tBQ2pDO0lBRU8sSUFBQSxVQUFVLEdBQUssS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsd0JBQVEsQ0FBQyxPQUFPLENBQUMsV0FBN0MsQ0FBOEM7SUFDaEUsSUFBSSxDQUFDLFVBQVUsRUFBRTtRQUNmLE1BQU0sSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7S0FDakM7SUFDRCxPQUFPLFVBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDcEMsQ0FBQztB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Q3hDLElBQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEMsT0FBTyxJQUFJLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7QUFDbkQsQ0FBQztBQUhELGtDQUdDO0FBRUQ7Ozs7OztHQU1HO0FBRUgsU0FBZ0IsUUFBUSxDQUFDLEtBQWEsRUFBRSxNQUFjO0lBQ3BELElBQUk7UUFDRixPQUFPLENBQUMsQ0FBQyxLQUFLLElBQUksY0FBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEtBQUssTUFBTSxDQUFDO0tBQ3hEO0lBQUMsT0FBTyxDQUFDLEVBQUU7UUFDVixPQUFPLEtBQUssQ0FBQztLQUNkO0FBQ0gsQ0FBQztBQU5ELDRCQU1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgYmlwMzIgZnJvbSAnYmlwMzInO1xuaW1wb3J0IHsgRUNQYWlyLCBuZXR3b3JrcyB9IGZyb20gJ2JpdGNvaW5qcy1saWInO1xuaW1wb3J0ICogYXMgbmFjbCBmcm9tICd0d2VldG5hY2wnO1xuaW1wb3J0ICogYXMgaGV4IGZyb20gJ0BzdGFibGVsaWIvaGV4JztcbmltcG9ydCAqIGFzIGJscyBmcm9tICdub2JsZS1ibHMxMi0zODEnO1xuaW1wb3J0IHsgc3RyaXBIZXhQcmVmaXggfSBmcm9tICdldGhlcmV1bWpzLXV0aWxzLW9sZCc7XG5pbXBvcnQgeyBFeHRlbmRlZEtleXMgfSBmcm9tICcuLi9jb2luL2Jhc2VDb2luL2lmYWNlJztcbmltcG9ydCB7IHRvVWludDhBcnJheSB9IGZyb20gJy4uL2NvaW4vaGJhci91dGlscyc7XG5pbXBvcnQgYnM1OCBmcm9tICdiczU4JztcblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30geHB1YiAtIGEgYmFzZS01OCBlbmNvZGVkIGV4dGVuZGVkIHB1YmxpYyBrZXkgKEJJUDMyKVxuICogQHJldHVybnMge3N0cmluZ30gdGhlIHVuY29tcHJlc3NlZCBwdWJsaWMga2V5IGluIGhleGFkZWNpbWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB4cHViVG9VbmNvbXByZXNzZWRQdWIoeHB1Yjogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKCFpc1ZhbGlkWHB1Yih4cHViKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCB4cHViJyk7XG4gIH1cbiAgcmV0dXJuIEVDUGFpci5mcm9tUHVibGljS2V5KGJpcDMyLmZyb21CYXNlNTgoeHB1YiwgbmV0d29ya3MuYml0Y29pbikucHVibGljS2V5LCB7XG4gICAgY29tcHJlc3NlZDogZmFsc2UsXG4gIH0pLnB1YmxpY0tleS50b1N0cmluZygnaGV4Jyk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHhwcnYgLSBiYXNlNTgtZW5jb2RlZCBleHRlbmRlZCBwcml2YXRlIGtleSAoQklQMzIpXG4gKiBAcmV0dXJucyB7c3RyaW5nfSB0aGUgaGV4LWVuY29kZWQgcmF3IHByaXZhdGUga2V5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB4cHJ2VG9SYXdQcnYoeHBydjogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKCFpc1ZhbGlkWHBydih4cHJ2KSkge1xuICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCB4cHJ2Jyk7XG4gIH1cblxuICBjb25zdCB7IHByaXZhdGVLZXkgfSA9IGJpcDMyLmZyb21CYXNlNTgoeHBydiwgbmV0d29ya3MuYml0Y29pbik7XG4gIGlmICghcHJpdmF0ZUtleSkge1xuICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCB4cHJ2Jyk7XG4gIH1cbiAgcmV0dXJuIHByaXZhdGVLZXkudG9TdHJpbmcoJ2hleCcpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBwcnYgLSBQcml2YXRlIGtleSBpbiBoZXggZm9ybWF0IHRvIGdldCB0aGUgZXh0ZW5kZWQga2V5cyBmb3JcbiAqIEByZXR1cm5zIHtFeHRlbmRlZEtleXN9IHhwcnYgYW5kIHhwdWIgaW4gc3RyaW5nIGZvcm1hdFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmF3UHJ2VG9FeHRlbmRlZEtleXMocHJ2OiBzdHJpbmcpOiBFeHRlbmRlZEtleXMge1xuICBjb25zdCBoZCA9IGJpcDMyLmZyb21Qcml2YXRlS2V5KEJ1ZmZlci5mcm9tKHBydiwgJ2hleCcpLCBCdWZmZXIuYWxsb2MoMzIpKTtcbiAgcmV0dXJuIHtcbiAgICB4cHJ2OiBoZC50b0Jhc2U1OCgpLFxuICAgIHhwdWI6IGhkLm5ldXRlcmVkKCkudG9CYXNlNTgoKSxcbiAgfTtcbn1cblxuLyoqXG4gKiBXaGV0aGVyIHRoZSBpbnB1dCBpcyBhIHZhbGlkIEJJUDMyIHhwdWIgb3Igbm90XG4gKlxuICogQHBhcmFtIHhwdWJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRYcHViKHhwdWI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBpZiAoeHB1Yi5zdWJzdHIoMCwgNCkgIT09ICd4cHViJykge1xuICAgIC8vIGNoZWNrIGZvciB4cHViIGZvcm1hdHMgd2UgZG9uJ3Qgc3VwcG9ydCwgc3VjaCBhcyB0cHViXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHRyeSB7XG4gICAgYmlwMzIuZnJvbUJhc2U1OCh4cHViLCBuZXR3b3Jrcy5iaXRjb2luKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8vIGlmIEhEIGdlbmVyYXRpb24gZGlkbid0IHRocm93LCBpdCBpcyBhIHZhbGlkIHhwdWJcbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qKlxuICogV2hldGhlciB0aGUgaW5wdXQgaXMgYSB2YWxpZCBCSVAzMiB4cHJ2IG9yIG5vdFxuICpcbiAqIEBwYXJhbSB4cHJ2XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkWHBydih4cHJ2OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKHhwcnYuc3Vic3RyKDAsIDQpICE9PSAneHBydicpIHtcbiAgICAvLyBjaGVjayBmb3IgeHBydiBmb3JtYXRzIHdlIGRvbid0IHN1cHBvcnRcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdHJ5IHtcbiAgICBiaXAzMi5mcm9tQmFzZTU4KHhwcnYsIG5ldHdvcmtzLmJpdGNvaW4pO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgLy8gaWYgSEQgZ2VuZXJhdGlvbiBkaWRuJ3QgdGhyb3csIGl0IGlzIGEgdmFsaWQgeHBydlxuICByZXR1cm4gdHJ1ZTtcbn1cblxuLyoqXG4gKiBXaGV0aGVyIHRoZSBpbnB1dCBpcyBhIHZhbGlkIHNlY3AyNTZrMSBwdWJsaWMga2V5XG4gKlxuICogQHBhcmFtIHB1YlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFB1YihwdWI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIEVDUGFpci5mcm9tUHVibGljS2V5KEJ1ZmZlci5mcm9tKHB1YiwgJ2hleCcpKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cblxuLyoqXG4gKiBXaGV0aGVyIHRoZSBpbnB1dCBpcyBhIHZhbGlkIHNlY3AyNTZrMSBwcml2YXRlIGtleVxuICpcbiAqIEBwYXJhbSBwcnZcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRQcnYocHJ2OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICBFQ1BhaXIuZnJvbVByaXZhdGVLZXkoQnVmZmVyLmZyb20ocHJ2LCAnaGV4JykpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIFdoZXRoZXIgdGhlIGlucHV0IGlzIGEgdmFsaWQgZWQyNTUxOSBwcml2YXRlIGtleVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwcnYgQSBoZXhhZGVjaW1hbCBwcml2YXRlIGtleSB0byB2YWxpZGF0ZVxuICogQHJldHVybnMge2Jvb2xlYW59IFdoZXRoZXIgdGhlIGlucHV0IGlzIGEgdmFsaWQgcHVibGljIGtleSBvciBub3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRFZDI1NTE5U2VlZChwcnY6IHN0cmluZyk6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIGNvbnN0IGRlY29kZWRQcnYgPSB0b1VpbnQ4QXJyYXkocHJ2KTtcbiAgICByZXR1cm4gZGVjb2RlZFBydi5sZW5ndGggPT09IG5hY2wuc2lnbi5zZWVkTGVuZ3RoO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogV2hldGhlciB0aGUgaW5wdXQgaXMgYSB2YWxpZCBlZDI1NTE5IHByaXZhdGUga2V5XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHBydiBBIGhleGFkZWNpbWFsIHByaXZhdGUga2V5IHRvIHZhbGlkYXRlXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gV2hldGhlciB0aGUgaW5wdXQgaXMgYSB2YWxpZCBwdWJsaWMga2V5IG9yIG5vdFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZEVkMjU1MTlTZWNyZXRLZXkocHJ2OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBkZWNvZGVkUHJ2ID0gdG9VaW50OEFycmF5KHBydik7XG4gICAgcmV0dXJuIGRlY29kZWRQcnYubGVuZ3RoID09PSBuYWNsLnNpZ24uc2VjcmV0S2V5TGVuZ3RoO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogV2hldGhlciB0aGUgaW5wdXQgaXMgYSB2YWxpZCBlZDI1NTE5IHB1YmxpYyBrZXlcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcHViIEEgaGV4YWRlY2ltYWwgcHVibGljIGtleSB0byB2YWxpZGF0ZVxuICogQHJldHVybnMge2Jvb2xlYW59IFdoZXRoZXIgdGhlIGlucHV0IGlzIGEgdmFsaWQgcHVibGljIGtleSBvciBub3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRFZDI1NTE5UHVibGljS2V5KHB1Yjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGVjb2RlZFB1YiA9IG5ldyBVaW50OEFycmF5KEJ1ZmZlci5mcm9tKHB1YiwgJ2hleCcpKTtcbiAgICByZXR1cm4gZGVjb2RlZFB1Yi5sZW5ndGggPT09IG5hY2wuc2lnbi5wdWJsaWNLZXlMZW5ndGg7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqXG4gKiBXaGV0aGVyIHRoZSBpbnB1dCBpcyBhIHZhbGlkIEJMUyBwcml2YXRlIGtleVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwcnYgYSBwcml2YXRlIGtleSB0byB2YWxpZGF0ZVxuICogQHJldHVybnMge2Jvb2xlYW59IFdoZXRoZXIgdGhlIGlucHV0IGlzIGEgdmFsaWQgcHJpdmF0ZSBrZXkgb3Igbm90XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkQkxTUHJpdmF0ZUtleShwcnY6IHN0cmluZyk6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIHJldHVybiBibHMuRnIuaXNWYWxpZChCaWdJbnQocHJ2KSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqXG4gKiBXaGV0aGVyIGlucHV0IGlzIGEgdmFsaWQgQkxTIHB1YmxpYyBrZXlcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcHViIHRoZSBwdWJsaWMga2V5IHRvIHZhbGlkYXRlXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gV2hldGhlciBpbnB1dCBpcyBhIHZhbGlkIHB1YmxpYyBrZXkgb3Igbm90XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkQkxTUHVibGljS2V5KHB1Yjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHRyeSB7XG4gICAgYmxzLlBvaW50RzEuZnJvbUNvbXByZXNzZWRIZXgoc3RyaXBIZXhQcmVmaXgocHViKSkuYXNzZXJ0VmFsaWRpdHkoKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIFJldHVybnMgYW4gaGV4IHN0cmluZyBvZiB0aGUgZ2l2ZW4gYnVmZmVyXG4gKlxuICogQHBhcmFtIHtCdWZmZXIgfCBVaW50OEFycmF5fSBidWZmZXIgLSB0aGUgYnVmZmVyIHRvIGJlIGNvbnZlcnRlZCB0byBoZXhcbiAqIEByZXR1cm5zIHtzdHJpbmd9IC0gdGhlIGhleCB2YWx1ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9IZXgoYnVmZmVyOiBCdWZmZXIgfCBVaW50OEFycmF5KTogc3RyaW5nIHtcbiAgcmV0dXJuIGhleC5lbmNvZGUoYnVmZmVyLCB0cnVlKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGFuIGhleCBzdHJpbmcgb2YgdGhlIGdpdmVuIGJpZ2ludFxuICpcbiAqIEBwYXJhbSB7YmlnaW50fSBiaWdpbnQgLSB0aGUgYmlnaW50IHRvIGJlIGNvbnZlcnRlZCB0byBoZXhcbiAqIEByZXR1cm5zIHtzdHJpbmd9IC0gdGhlIGhleCB2YWx1ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gYmlnSW50VG9IZXgoYmlnaW50OiBiaWdpbnQpOiBzdHJpbmcge1xuICBjb25zdCBoZXggPSBiaWdpbnQudG9TdHJpbmcoMTYpO1xuICByZXR1cm4gJzB4JyArICcwJy5zbGljZSgwLCBoZXgubGVuZ3RoICUgMikgKyBoZXg7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYmFzZTU4IGRlY29kZWQgc3RyaW5nIGlzIGVxdWFsZSB0byBsZW5ndGhcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUgLSBzdHJpbmcgdG8gYmUgY2hlY2tlZFxuICogQHBhcmFtIHtudW1iZXJ9IGxlbmd0aCAtIGV4cGVjdGVkIGRlY29kZWQgbGVuZ3RoXG4gKiBAcmV0dXJuIHtib29sZWFufSBpZiB0aGUgc3RyaW5nIGNhbiBkZWNvZGVkIGFzIGJhc2U1OCBhbmQgbWF0Y2ggdGhlIGV4cGVjdGVkIGxlbmd0aFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBpc0Jhc2U1OCh2YWx1ZTogc3RyaW5nLCBsZW5ndGg6IG51bWJlcik6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIHJldHVybiAhIXZhbHVlICYmIGJzNTguZGVjb2RlKHZhbHVlKS5sZW5ndGggPT09IGxlbmd0aDtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIl19