@bitgo-beta/sdk-coin-stx 1.4.3-alpha.30 → 1.4.3-alpha.300

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 (38) hide show
  1. package/CHANGELOG.md +589 -0
  2. package/dist/src/index.d.ts +1 -0
  3. package/dist/src/index.d.ts.map +1 -1
  4. package/dist/src/index.js +24 -9
  5. package/dist/src/lib/abstractContractBuilder.js +2 -2
  6. package/dist/src/lib/constants.d.ts +2 -1
  7. package/dist/src/lib/constants.d.ts.map +1 -1
  8. package/dist/src/lib/constants.js +5 -3
  9. package/dist/src/lib/contractBuilder.js +10 -10
  10. package/dist/src/lib/fungibleTokenTransferBuilder.d.ts +62 -0
  11. package/dist/src/lib/fungibleTokenTransferBuilder.d.ts.map +1 -0
  12. package/dist/src/lib/fungibleTokenTransferBuilder.js +131 -0
  13. package/dist/src/lib/iface.d.ts +6 -0
  14. package/dist/src/lib/iface.d.ts.map +1 -1
  15. package/dist/src/lib/iface.js +1 -1
  16. package/dist/src/lib/index.js +23 -9
  17. package/dist/src/lib/keyPair.js +18 -19
  18. package/dist/src/lib/sendmanyBuilder.js +11 -11
  19. package/dist/src/lib/transaction.d.ts.map +1 -1
  20. package/dist/src/lib/transaction.js +31 -15
  21. package/dist/src/lib/transactionBuilder.js +12 -12
  22. package/dist/src/lib/transactionBuilderFactory.d.ts +2 -0
  23. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
  24. package/dist/src/lib/transactionBuilderFactory.js +9 -2
  25. package/dist/src/lib/transferBuilder.js +4 -4
  26. package/dist/src/lib/utils.d.ts +25 -2
  27. package/dist/src/lib/utils.d.ts.map +1 -1
  28. package/dist/src/lib/utils.js +141 -62
  29. package/dist/src/register.d.ts.map +1 -1
  30. package/dist/src/register.js +5 -1
  31. package/dist/src/sip10Token.d.ts +22 -0
  32. package/dist/src/sip10Token.d.ts.map +1 -0
  33. package/dist/src/sip10Token.js +128 -0
  34. package/dist/src/stx.d.ts +7 -2
  35. package/dist/src/stx.d.ts.map +1 -1
  36. package/dist/src/stx.js +49 -11
  37. package/dist/src/tstx.js +1 -1
  38. package/package.json +9 -10
@@ -16,30 +16,30 @@ class SendmanyBuilder extends abstractContractBuilder_1.AbstractContractBuilder
16
16
  super(_coinConfig);
17
17
  this._sendParams = [];
18
18
  this.sendParamsToFunctionArgs = (sendParams) => [
19
- transactions_1.listCV(sendParams.map((recipient) => transactions_1.tupleCV({
20
- to: transactions_1.standardPrincipalCV(recipient.address),
21
- ustx: transactions_1.uintCV(recipient.amount),
22
- memo: transactions_1.bufferCVFromString(recipient.memo || ''),
19
+ (0, transactions_1.listCV)(sendParams.map((recipient) => (0, transactions_1.tupleCV)({
20
+ to: (0, transactions_1.standardPrincipalCV)(recipient.address),
21
+ ustx: (0, transactions_1.uintCV)(recipient.amount),
22
+ memo: (0, transactions_1.bufferCVFromString)(recipient.memo || ''),
23
23
  }))),
24
24
  ];
25
25
  }
26
26
  static isValidContractCall(coinConfig, payload) {
27
27
  return (coinConfig.network.sendmanymemoContractAddress ===
28
- transactions_1.addressToString(payload.contractAddress) &&
28
+ (0, transactions_1.addressToString)(payload.contractAddress) &&
29
29
  constants_1.CONTRACT_NAME_SENDMANY === payload.contractName.content &&
30
30
  constants_1.FUNCTION_NAME_SENDMANY === payload.functionName.content);
31
31
  }
32
32
  sendParamsToPostcondition(sendParams) {
33
33
  const sum = sendParams.reduce((current, next) => current.add(new bn_js_1.default(next.amount)), new bn_js_1.default(0));
34
34
  return [
35
- transactions_1.makeStandardSTXPostCondition(utils_1.getSTXAddressFromPubKeys(this._fromPubKeys, this._coinConfig.network.type === statics_1.NetworkType.MAINNET
35
+ (0, transactions_1.makeStandardSTXPostCondition)((0, utils_1.getSTXAddressFromPubKeys)(this._fromPubKeys, this._coinConfig.network.type === statics_1.NetworkType.MAINNET
36
36
  ? transactions_1.AddressVersion.MainnetMultiSig
37
37
  : transactions_1.AddressVersion.TestnetMultiSig, this._fromPubKeys.length > 1 ? transactions_1.AddressHashMode.SerializeP2SH : transactions_1.AddressHashMode.SerializeP2PKH, this._numberSignatures).address, transactions_1.FungibleConditionCode.Equal, sum),
38
38
  ];
39
39
  }
40
40
  initBuilder(tx) {
41
41
  super.initBuilder(tx);
42
- this._sendParams = utils_1.functionArgsToSendParams(tx.stxTransaction.payload.functionArgs);
42
+ this._sendParams = (0, utils_1.functionArgsToSendParams)(tx.stxTransaction.payload.functionArgs);
43
43
  }
44
44
  /**
45
45
  * Set a transfer
@@ -48,13 +48,13 @@ class SendmanyBuilder extends abstractContractBuilder_1.AbstractContractBuilder
48
48
  * @returns {TransactionBuilder} This transaction builder
49
49
  */
50
50
  send({ address, amount, memo }) {
51
- if (!address || !utils_1.isValidAddress(address)) {
51
+ if (!address || !(0, utils_1.isValidAddress)(address)) {
52
52
  throw new sdk_core_1.BuildTransactionError('Invalid or missing address, got: ' + address);
53
53
  }
54
- if (!amount || !utils_1.isValidAmount(amount)) {
54
+ if (!amount || !(0, utils_1.isValidAmount)(amount)) {
55
55
  throw new sdk_core_1.BuildTransactionError('Invalid or missing amount, got: ' + amount);
56
56
  }
57
- if (!!memo && !utils_1.isValidMemo(memo)) {
57
+ if (!!memo && !(0, utils_1.isValidMemo)(memo)) {
58
58
  throw new sdk_core_1.BuildTransactionError('Invalid memo, got: ' + memo);
59
59
  }
60
60
  this._sendParams.push({ address, amount, memo });
@@ -72,4 +72,4 @@ class SendmanyBuilder extends abstractContractBuilder_1.AbstractContractBuilder
72
72
  }
73
73
  }
74
74
  exports.SendmanyBuilder = SendmanyBuilder;
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VuZG1hbnlCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9zZW5kbWFueUJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsaURBQStHO0FBQy9HLGtEQUEyQjtBQUMzQix1REFjOEI7QUFDOUIsbURBQTZEO0FBRTdELG1DQU1pQjtBQUVqQiwyQ0FBNkU7QUFFN0UsdUVBQW9FO0FBRXBFLE1BQWEsZUFBZ0IsU0FBUSxpREFBdUI7SUFHMUQsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFIYixnQkFBVyxHQUFpQixFQUFFLENBQUM7UUFlL0IsNkJBQXdCLEdBQUcsQ0FBQyxVQUF3QixFQUFrQixFQUFFLENBQUM7WUFDL0UscUJBQU0sQ0FDSixVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FDM0Isc0JBQU8sQ0FBQztnQkFDTixFQUFFLEVBQUUsa0NBQW1CLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztnQkFDMUMsSUFBSSxFQUFFLHFCQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztnQkFDOUIsSUFBSSxFQUFFLGlDQUFrQixDQUFDLFNBQVMsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO2FBQy9DLENBQUMsQ0FDSCxDQUNGO1NBQ0YsQ0FBQztJQXJCRixDQUFDO0lBRU0sTUFBTSxDQUFDLG1CQUFtQixDQUFDLFVBQWdDLEVBQUUsT0FBNEI7UUFDOUYsT0FBTyxDQUNKLFVBQVUsQ0FBQyxPQUE4QixDQUFDLDJCQUEyQjtZQUNwRSw4QkFBZSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUM7WUFDMUMsa0NBQXNCLEtBQUssT0FBTyxDQUFDLFlBQVksQ0FBQyxPQUFPO1lBQ3ZELGtDQUFzQixLQUFLLE9BQU8sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUN4RCxDQUFDO0lBQ0osQ0FBQztJQWNPLHlCQUF5QixDQUFDLFVBQXdCO1FBQ3hELE1BQU0sR0FBRyxHQUFXLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksZUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLElBQUksZUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUcsT0FBTztZQUNMLDJDQUE0QixDQUMxQixnQ0FBd0IsQ0FDdEIsSUFBSSxDQUFDLFlBQVksRUFDakIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLHFCQUFXLENBQUMsT0FBTztnQkFDbkQsQ0FBQyxDQUFDLDZCQUFjLENBQUMsZUFBZTtnQkFDaEMsQ0FBQyxDQUFDLDZCQUFjLENBQUMsZUFBZSxFQUNsQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLDhCQUFlLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyw4QkFBZSxDQUFDLGNBQWMsRUFDN0YsSUFBSSxDQUFDLGlCQUFpQixDQUN2QixDQUFDLE9BQU8sRUFDVCxvQ0FBcUIsQ0FBQyxLQUFLLEVBQzNCLEdBQUcsQ0FDSjtTQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsV0FBVyxDQUFDLEVBQWU7UUFDekIsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsV0FBVyxHQUFHLGdDQUF3QixDQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUMsT0FBK0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUMvRyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBYztRQUN4QyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsc0JBQWMsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUN4QyxNQUFNLElBQUksZ0NBQXFCLENBQUMsbUNBQW1DLEdBQUcsT0FBTyxDQUFDLENBQUM7U0FDaEY7UUFDRCxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMscUJBQWEsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNyQyxNQUFNLElBQUksZ0NBQXFCLENBQUMsa0NBQWtDLEdBQUcsTUFBTSxDQUFDLENBQUM7U0FDOUU7UUFDRCxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxtQkFBVyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2hDLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsQ0FBQztTQUMvRDtRQUVELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ2pELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGtCQUFrQjtJQUNSLEtBQUssQ0FBQyxtQkFBbUI7UUFDakMsSUFBSSxDQUFDLGdCQUFnQixHQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBOEIsQ0FBQywyQkFBMkIsQ0FBQztRQUNyRyxJQUFJLENBQUMsYUFBYSxHQUFHLGtDQUFzQixDQUFDO1FBQzVDLElBQUksQ0FBQyxhQUFhLEdBQUcsa0NBQXNCLENBQUM7UUFDNUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxnQ0FBaUIsQ0FBQyxJQUFJLENBQUM7UUFDakQsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3hFLE9BQU8sTUFBTSxLQUFLLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0NBQ0Y7QUFsRkQsMENBa0ZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZywgTmV0d29ya1R5cGUsIFN0YWNrc05ldHdvcmsgYXMgQml0Z29TdGFja3NOZXR3b3JrIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgQmlnTnVtIGZyb20gJ2JuLmpzJztcbmltcG9ydCB7XG4gIEFkZHJlc3NIYXNoTW9kZSxcbiAgYWRkcmVzc1RvU3RyaW5nLFxuICBBZGRyZXNzVmVyc2lvbixcbiAgYnVmZmVyQ1ZGcm9tU3RyaW5nLFxuICBDbGFyaXR5VmFsdWUsXG4gIEZ1bmdpYmxlQ29uZGl0aW9uQ29kZSxcbiAgbGlzdENWLFxuICBtYWtlU3RhbmRhcmRTVFhQb3N0Q29uZGl0aW9uLFxuICBQb3N0Q29uZGl0aW9uLFxuICBQb3N0Q29uZGl0aW9uTW9kZSxcbiAgc3RhbmRhcmRQcmluY2lwYWxDVixcbiAgdHVwbGVDVixcbiAgdWludENWLFxufSBmcm9tICdAc3RhY2tzL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHtcbiAgZnVuY3Rpb25BcmdzVG9TZW5kUGFyYW1zLFxuICBnZXRTVFhBZGRyZXNzRnJvbVB1YktleXMsXG4gIGlzVmFsaWRBZGRyZXNzLFxuICBpc1ZhbGlkQW1vdW50LFxuICBpc1ZhbGlkTWVtbyxcbn0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBTZW5kUGFyYW1zIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBDT05UUkFDVF9OQU1FX1NFTkRNQU5ZLCBGVU5DVElPTl9OQU1FX1NFTkRNQU5ZIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgQ29udHJhY3RDYWxsUGF5bG9hZCB9IGZyb20gJ0BzdGFja3MvdHJhbnNhY3Rpb25zL2Rpc3QvcGF5bG9hZCc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyYWN0QnVpbGRlciB9IGZyb20gJy4vYWJzdHJhY3RDb250cmFjdEJ1aWxkZXInO1xuXG5leHBvcnQgY2xhc3MgU2VuZG1hbnlCdWlsZGVyIGV4dGVuZHMgQWJzdHJhY3RDb250cmFjdEJ1aWxkZXIge1xuICBwcml2YXRlIF9zZW5kUGFyYW1zOiBTZW5kUGFyYW1zW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGlzVmFsaWRDb250cmFjdENhbGwoY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4sIHBheWxvYWQ6IENvbnRyYWN0Q2FsbFBheWxvYWQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgKGNvaW5Db25maWcubmV0d29yayBhcyBCaXRnb1N0YWNrc05ldHdvcmspLnNlbmRtYW55bWVtb0NvbnRyYWN0QWRkcmVzcyA9PT1cbiAgICAgICAgYWRkcmVzc1RvU3RyaW5nKHBheWxvYWQuY29udHJhY3RBZGRyZXNzKSAmJlxuICAgICAgQ09OVFJBQ1RfTkFNRV9TRU5ETUFOWSA9PT0gcGF5bG9hZC5jb250cmFjdE5hbWUuY29udGVudCAmJlxuICAgICAgRlVOQ1RJT05fTkFNRV9TRU5ETUFOWSA9PT0gcGF5bG9hZC5mdW5jdGlvbk5hbWUuY29udGVudFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHNlbmRQYXJhbXNUb0Z1bmN0aW9uQXJncyA9IChzZW5kUGFyYW1zOiBTZW5kUGFyYW1zW10pOiBDbGFyaXR5VmFsdWVbXSA9PiBbXG4gICAgbGlzdENWKFxuICAgICAgc2VuZFBhcmFtcy5tYXAoKHJlY2lwaWVudCkgPT5cbiAgICAgICAgdHVwbGVDVih7XG4gICAgICAgICAgdG86IHN0YW5kYXJkUHJpbmNpcGFsQ1YocmVjaXBpZW50LmFkZHJlc3MpLFxuICAgICAgICAgIHVzdHg6IHVpbnRDVihyZWNpcGllbnQuYW1vdW50KSxcbiAgICAgICAgICBtZW1vOiBidWZmZXJDVkZyb21TdHJpbmcocmVjaXBpZW50Lm1lbW8gfHwgJycpLFxuICAgICAgICB9KVxuICAgICAgKVxuICAgICksXG4gIF07XG5cbiAgcHJpdmF0ZSBzZW5kUGFyYW1zVG9Qb3N0Y29uZGl0aW9uKHNlbmRQYXJhbXM6IFNlbmRQYXJhbXNbXSk6IFBvc3RDb25kaXRpb25bXSB7XG4gICAgY29uc3Qgc3VtOiBCaWdOdW0gPSBzZW5kUGFyYW1zLnJlZHVjZSgoY3VycmVudCwgbmV4dCkgPT4gY3VycmVudC5hZGQobmV3IEJpZ051bShuZXh0LmFtb3VudCkpLCBuZXcgQmlnTnVtKDApKTtcbiAgICByZXR1cm4gW1xuICAgICAgbWFrZVN0YW5kYXJkU1RYUG9zdENvbmRpdGlvbihcbiAgICAgICAgZ2V0U1RYQWRkcmVzc0Zyb21QdWJLZXlzKFxuICAgICAgICAgIHRoaXMuX2Zyb21QdWJLZXlzLFxuICAgICAgICAgIHRoaXMuX2NvaW5Db25maWcubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUXG4gICAgICAgICAgICA/IEFkZHJlc3NWZXJzaW9uLk1haW5uZXRNdWx0aVNpZ1xuICAgICAgICAgICAgOiBBZGRyZXNzVmVyc2lvbi5UZXN0bmV0TXVsdGlTaWcsXG4gICAgICAgICAgdGhpcy5fZnJvbVB1YktleXMubGVuZ3RoID4gMSA/IEFkZHJlc3NIYXNoTW9kZS5TZXJpYWxpemVQMlNIIDogQWRkcmVzc0hhc2hNb2RlLlNlcmlhbGl6ZVAyUEtILFxuICAgICAgICAgIHRoaXMuX251bWJlclNpZ25hdHVyZXNcbiAgICAgICAgKS5hZGRyZXNzLFxuICAgICAgICBGdW5naWJsZUNvbmRpdGlvbkNvZGUuRXF1YWwsXG4gICAgICAgIHN1bVxuICAgICAgKSxcbiAgICBdO1xuICB9XG5cbiAgaW5pdEJ1aWxkZXIodHg6IFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgc3VwZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIHRoaXMuX3NlbmRQYXJhbXMgPSBmdW5jdGlvbkFyZ3NUb1NlbmRQYXJhbXMoKHR4LnN0eFRyYW5zYWN0aW9uLnBheWxvYWQgYXMgQ29udHJhY3RDYWxsUGF5bG9hZCkuZnVuY3Rpb25BcmdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgU2V0IGEgdHJhbnNmZXJcbiAgICpcbiAgICogQHBhcmFtIHtTZW5kUGFyYW1zfSBzZW5kUGFyYW1zIC0gdGhlIHNlbmRlciBhZGRyZXNzXG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IFRoaXMgdHJhbnNhY3Rpb24gYnVpbGRlclxuICAgKi9cbiAgc2VuZCh7IGFkZHJlc3MsIGFtb3VudCwgbWVtbyB9OiBTZW5kUGFyYW1zKTogdGhpcyB7XG4gICAgaWYgKCFhZGRyZXNzIHx8ICFpc1ZhbGlkQWRkcmVzcyhhZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBvciBtaXNzaW5nIGFkZHJlc3MsIGdvdDogJyArIGFkZHJlc3MpO1xuICAgIH1cbiAgICBpZiAoIWFtb3VudCB8fCAhaXNWYWxpZEFtb3VudChhbW91bnQpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIG9yIG1pc3NpbmcgYW1vdW50LCBnb3Q6ICcgKyBhbW91bnQpO1xuICAgIH1cbiAgICBpZiAoISFtZW1vICYmICFpc1ZhbGlkTWVtbyhtZW1vKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBtZW1vLCBnb3Q6ICcgKyBtZW1vKTtcbiAgICB9XG5cbiAgICB0aGlzLl9zZW5kUGFyYW1zLnB1c2goeyBhZGRyZXNzLCBhbW91bnQsIG1lbW8gfSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkSW1wbGVtZW50YXRpb24oKTogUHJvbWlzZTxUcmFuc2FjdGlvbj4ge1xuICAgIHRoaXMuX2NvbnRyYWN0QWRkcmVzcyA9ICh0aGlzLl9jb2luQ29uZmlnLm5ldHdvcmsgYXMgQml0Z29TdGFja3NOZXR3b3JrKS5zZW5kbWFueW1lbW9Db250cmFjdEFkZHJlc3M7XG4gICAgdGhpcy5fY29udHJhY3ROYW1lID0gQ09OVFJBQ1RfTkFNRV9TRU5ETUFOWTtcbiAgICB0aGlzLl9mdW5jdGlvbk5hbWUgPSBGVU5DVElPTl9OQU1FX1NFTkRNQU5ZO1xuICAgIHRoaXMuX2Z1bmN0aW9uQXJncyA9IHRoaXMuc2VuZFBhcmFtc1RvRnVuY3Rpb25BcmdzKHRoaXMuX3NlbmRQYXJhbXMpO1xuICAgIHRoaXMuX3Bvc3RDb25kaXRpb25Nb2RlID0gUG9zdENvbmRpdGlvbk1vZGUuRGVueTtcbiAgICB0aGlzLl9wb3N0Q29uZGl0aW9ucyA9IHRoaXMuc2VuZFBhcmFtc1RvUG9zdGNvbmRpdGlvbih0aGlzLl9zZW5kUGFyYW1zKTtcbiAgICByZXR1cm4gYXdhaXQgc3VwZXIuYnVpbGRJbXBsZW1lbnRhdGlvbigpO1xuICB9XG59XG4iXX0=
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VuZG1hbnlCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9zZW5kbWFueUJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsaURBQStHO0FBQy9HLGtEQUEyQjtBQUMzQix1REFjOEI7QUFDOUIsbURBQTZEO0FBRTdELG1DQU1pQjtBQUVqQiwyQ0FBNkU7QUFFN0UsdUVBQW9FO0FBRXBFLE1BQWEsZUFBZ0IsU0FBUSxpREFBdUI7SUFHMUQsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFIYixnQkFBVyxHQUFpQixFQUFFLENBQUM7UUFlL0IsNkJBQXdCLEdBQUcsQ0FBQyxVQUF3QixFQUFrQixFQUFFLENBQUM7WUFDL0UsSUFBQSxxQkFBTSxFQUNKLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUMzQixJQUFBLHNCQUFPLEVBQUM7Z0JBQ04sRUFBRSxFQUFFLElBQUEsa0NBQW1CLEVBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztnQkFDMUMsSUFBSSxFQUFFLElBQUEscUJBQU0sRUFBQyxTQUFTLENBQUMsTUFBTSxDQUFDO2dCQUM5QixJQUFJLEVBQUUsSUFBQSxpQ0FBa0IsRUFBQyxTQUFTLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQzthQUMvQyxDQUFDLENBQ0gsQ0FDRjtTQUNGLENBQUM7SUFyQkYsQ0FBQztJQUVNLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxVQUFnQyxFQUFFLE9BQTRCO1FBQzlGLE9BQU8sQ0FDSixVQUFVLENBQUMsT0FBOEIsQ0FBQywyQkFBMkI7WUFDcEUsSUFBQSw4QkFBZSxFQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUM7WUFDMUMsa0NBQXNCLEtBQUssT0FBTyxDQUFDLFlBQVksQ0FBQyxPQUFPO1lBQ3ZELGtDQUFzQixLQUFLLE9BQU8sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUN4RCxDQUFDO0lB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bnRlbnQiOlsiaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZywgTmV0d29ya1R5cGUsIFN0YWNrc05ldHdvcmsgYXMgQml0Z29TdGFja3NOZXR3b3JrIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgQmlnTnVtIGZyb20gJ2JuLmpzJztcbmltcG9ydCB7XG4gIEFkZHJlc3NIYXNoTW9kZSxcbiAgYWRkcmVzc1RvU3RyaW5nLFxuICBBZGRyZXNzVmVyc2lvbixcbiAgYnVmZmVyQ1ZGcm9tU3RyaW5nLFxuICBDbGFyaXR5VmFsdWUsXG4gIEZ1bmdpYmxlQ29uZGl0aW9uQ29kZSxcbiAgbGlzdENWLFxuICBtYWtlU3RhbmRhcmRTVFhQb3N0Q29uZGl0aW9uLFxuICBQb3N0Q29uZGl0aW9uLFxuICBQb3N0Q29uZGl0aW9uTW9kZSxcbiAgc3RhbmRhcmRQcmluY2lwYWxDVixcbiAgdHVwbGVDVixcbiAgdWludENWLFxufSBmcm9tICdAc3RhY2tzL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHtcbiAgZnVuY3Rpb25BcmdzVG9TZW5kUGFyYW1zLFxuICBnZXRTVFhBZGRyZXNzRnJvbVB1YktleXMsXG4gIGlzVmFsaWRBZGRyZXNzLFxuICBpc1ZhbGlkQW1vdW50LFxuICBpc1ZhbGlkTWVtbyxcbn0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBTZW5kUGFyYW1zIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBDT05UUkFDVF9OQU1FX1NFTkRNQU5ZLCBGVU5DVElPTl9OQU1FX1NFTkRNQU5ZIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgQ29udHJhY3RDYWxsUGF5bG9hZCB9IGZyb20gJ0BzdGFja3MvdHJhbnNhY3Rpb25zL2Rpc3QvcGF5bG9hZCc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyYWN0QnVpbGRlciB9IGZyb20gJy4vYWJzdHJhY3RDb250cmFjdEJ1aWxkZXInO1xuXG5leHBvcnQgY2xhc3MgU2VuZG1hbnlCdWlsZGVyIGV4dGVuZHMgQWJzdHJhY3RDb250cmFjdEJ1aWxkZXIge1xuICBwcml2YXRlIF9zZW5kUGFyYW1zOiBTZW5kUGFyYW1zW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGlzVmFsaWRDb250cmFjdENhbGwoY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4sIHBheWxvYWQ6IENvbnRyYWN0Q2FsbFBheWxvYWQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgKGNvaW5Db25maWcubmV0d29yayBhcyBCaXRnb1N0YWNrc05ldHdvcmspLnNlbmRtYW55bWVtb0NvbnRyYWN0QWRkcmVzcyA9PT1cbiAgICAgICAgYWRkcmVzc1RvU3RyaW5nKHBheWxvYWQuY29udHJhY3RBZGRyZXNzKSAmJlxuICAgICAgQ09OVFJBQ1RfTkFNRV9TRU5ETUFOWSA9PT0gcGF5bG9hZC5jb250cmFjdE5hbWUuY29udGVudCAmJlxuICAgICAgRlVOQ1RJT05fTkFNRV9TRU5ETUFOWSA9PT0gcGF5bG9hZC5mdW5jdGlvbk5hbWUuY29udGVudFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHNlbmRQYXJhbXNUb0Z1bmN0aW9uQXJncyA9IChzZW5kUGFyYW1zOiBTZW5kUGFyYW1zW10pOiBDbGFyaXR5VmFsdWVbXSA9PiBbXG4gICAgbGlzdENWKFxuICAgICAgc2VuZFBhcmFtcy5tYXAoKHJlY2lwaWVudCkgPT5cbiAgICAgICAgdHVwbGVDVih7XG4gICAgICAgICAgdG86IHN0YW5kYXJkUHJpbmNpcGFsQ1YocmVjaXBpZW50LmFkZHJlc3MpLFxuICAgICAgICAgIHVzdHg6IHVpbnRDVihyZWNpcGllbnQuYW1vdW50KSxcbiAgICAgICAgICBtZW1vOiBidWZmZXJDVkZyb21TdHJpbmcocmVjaXBpZW50Lm1lbW8gfHwgJycpLFxuICAgICAgICB9KVxuICAgICAgKVxuICAgICksXG4gIF07XG5cbiAgcHJpdmF0ZSBzZW5kUGFyYW1zVG9Qb3N0Y29uZGl0aW9uKHNlbmRQYXJhbXM6IFNlbmRQYXJhbXNbXSk6IFBvc3RDb25kaXRpb25bXSB7XG4gICAgY29uc3Qgc3VtOiBCaWdOdW0gPSBzZW5kUGFyYW1zLnJlZHVjZSgoY3VycmVudCwgbmV4dCkgPT4gY3VycmVudC5hZGQobmV3IEJpZ051bShuZXh0LmFtb3VudCkpLCBuZXcgQmlnTnVtKDApKTtcbiAgICByZXR1cm4gW1xuICAgICAgbWFrZVN0YW5kYXJkU1RYUG9zdENvbmRpdGlvbihcbiAgICAgICAgZ2V0U1RYQWRkcmVzc0Zyb21QdWJLZXlzKFxuICAgICAgICAgIHRoaXMuX2Zyb21QdWJLZXlzLFxuICAgICAgICAgIHRoaXMuX2NvaW5Db25maWcubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUXG4gICAgICAgICAgICA/IEFkZHJlc3NWZXJzaW9uLk1haW5uZXRNdWx0aVNpZ1xuICAgICAgICAgICAgOiBBZGRyZXNzVmVyc2lvbi5UZXN0bmV0TXVsdGlTaWcsXG4gICAgICAgICAgdGhpcy5fZnJvbVB1YktleXMubGVuZ3RoID4gMSA/IEFkZHJlc3NIYXNoTW9kZS5TZXJpYWxpemVQMlNIIDogQWRkcmVzc0hhc2hNb2RlLlNlcmlhbGl6ZVAyUEtILFxuICAgICAgICAgIHRoaXMuX251bWJlclNpZ25hdHVyZXNcbiAgICAgICAgKS5hZGRyZXNzLFxuICAgICAgICBGdW5naWJsZUNvbmRpdGlvbkNvZGUuRXF1YWwsXG4gICAgICAgIHN1bVxuICAgICAgKSxcbiAgICBdO1xuICB9XG5cbiAgaW5pdEJ1aWxkZXIodHg6IFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgc3VwZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIHRoaXMuX3NlbmRQYXJhbXMgPSBmdW5jdGlvbkFyZ3NUb1NlbmRQYXJhbXMoKHR4LnN0eFRyYW5zYWN0aW9uLnBheWxvYWQgYXMgQ29udHJhY3RDYWxsUGF5bG9hZCkuZnVuY3Rpb25BcmdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgU2V0IGEgdHJhbnNmZXJcbiAgICpcbiAgICogQHBhcmFtIHtTZW5kUGFyYW1zfSBzZW5kUGFyYW1zIC0gdGhlIHNlbmRlciBhZGRyZXNzXG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IFRoaXMgdHJhbnNhY3Rpb24gYnVpbGRlclxuICAgKi9cbiAgc2VuZCh7IGFkZHJlc3MsIGFtb3VudCwgbWVtbyB9OiBTZW5kUGFyYW1zKTogdGhpcyB7XG4gICAgaWYgKCFhZGRyZXNzIHx8ICFpc1ZhbGlkQWRkcmVzcyhhZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBvciBtaXNzaW5nIGFkZHJlc3MsIGdvdDogJyArIGFkZHJlc3MpO1xuICAgIH1cbiAgICBpZiAoIWFtb3VudCB8fCAhaXNWYWxpZEFtb3VudChhbW91bnQpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIG9yIG1pc3NpbmcgYW1vdW50LCBnb3Q6ICcgKyBhbW91bnQpO1xuICAgIH1cbiAgICBpZiAoISFtZW1vICYmICFpc1ZhbGlkTWVtbyhtZW1vKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBtZW1vLCBnb3Q6ICcgKyBtZW1vKTtcbiAgICB9XG5cbiAgICB0aGlzLl9zZW5kUGFyYW1zLnB1c2goeyBhZGRyZXNzLCBhbW91bnQsIG1lbW8gfSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkSW1wbGVtZW50YXRpb24oKTogUHJvbWlzZTxUcmFuc2FjdGlvbj4ge1xuICAgIHRoaXMuX2NvbnRyYWN0QWRkcmVzcyA9ICh0aGlzLl9jb2luQ29uZmlnLm5ldHdvcmsgYXMgQml0Z29TdGFja3NOZXR3b3JrKS5zZW5kbWFueW1lbW9Db250cmFjdEFkZHJlc3M7XG4gICAgdGhpcy5fY29udHJhY3ROYW1lID0gQ09OVFJBQ1RfTkFNRV9TRU5ETUFOWTtcbiAgICB0aGlzLl9mdW5jdGlvbk5hbWUgPSBGVU5DVElPTl9OQU1FX1NFTkRNQU5ZO1xuICAgIHRoaXMuX2Z1bmN0aW9uQXJncyA9IHRoaXMuc2VuZFBhcmFtc1RvRnVuY3Rpb25BcmdzKHRoaXMuX3NlbmRQYXJhbXMpO1xuICAgIHRoaXMuX3Bvc3RDb25kaXRpb25Nb2RlID0gUG9zdENvbmRpdGlvbk1vZGUuRGVueTtcbiAgICB0aGlzLl9wb3N0Q29uZGl0aW9ucyA9IHRoaXMuc2VuZFBhcmFtc1RvUG9zdGNvbmRpdGlvbih0aGlzLl9zZW5kUGFyYW1zKTtcbiAgICByZXR1cm4gYXdhaXQgc3VwZXIuYnVpbGRJbXBsZW1lbnRhdGlvbigpO1xuICB9XG59XG4iXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../src/lib/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAYL,iBAAiB,EAElB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAiB,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EACL,OAAO,EACP,eAAe,EAKf,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAmD,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjG,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,qBAAa,WAAY,SAAQ,eAAe;IAC9C,OAAO,CAAC,eAAe,CAAoB;IAC3C,SAAS,CAAC,KAAK,EAAE,eAAe,CAAC;IACjC,OAAO,CAAC,QAAQ,CAAS;gBAEb,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,kBAAkB;IAClB,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IAIxB,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBnE,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ5D,kBAAkB,CAAC,SAAS,EAAE,aAAa,EAAE,GAAG,aAAa,EAAE,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBxG,IAAI,SAAS,IAAI,MAAM,EAAE,CAexB;IAED,kBAAkB;IAClB,MAAM,IAAI,MAAM;IAchB,OAAO,CAAC,cAAc;IA+BtB;;;;;OAKG;IACH,eAAe,IAAI,MAAM;IAIzB,iBAAiB,IAAI,MAAM;IAO3B,IAAI,cAAc,IAAI,iBAAiB,CAEtC;IAED,IAAI,cAAc,CAAC,CAAC,EAAE,iBAAiB,EAEtC;IAED,OAAO,CAAC,QAAQ;IAQhB;;;;OAIG;IACH,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAUhD;;;;OAIG;IACH,kBAAkB,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI;IAI1D;;;OAGG;IACH,oBAAoB,IAAI,IAAI;CA8C7B"}
1
+ {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../src/lib/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAeL,iBAAiB,EAElB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAiB,MAAM,qBAAqB,CAAC;AAE5E,OAAO,EACL,OAAO,EACP,eAAe,EAKf,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAI9B,OAAO,EAAE,aAAa,EAAmD,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjG,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,qBAAa,WAAY,SAAQ,eAAe;IAC9C,OAAO,CAAC,eAAe,CAAoB;IAC3C,SAAS,CAAC,KAAK,EAAE,eAAe,CAAC;IACjC,OAAO,CAAC,QAAQ,CAAS;gBAEb,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,kBAAkB;IAClB,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IAIxB,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBnE,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ5D,kBAAkB,CAAC,SAAS,EAAE,aAAa,EAAE,GAAG,aAAa,EAAE,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBxG,IAAI,SAAS,IAAI,MAAM,EAAE,CAexB;IAED,kBAAkB;IAClB,MAAM,IAAI,MAAM;IAchB,OAAO,CAAC,cAAc;IA+BtB;;;;;OAKG;IACH,eAAe,IAAI,MAAM;IAIzB,iBAAiB,IAAI,MAAM;IAO3B,IAAI,cAAc,IAAI,iBAAiB,CAEtC;IAED,IAAI,cAAc,CAAC,CAAC,EAAE,iBAAiB,EAEtC;IAED,OAAO,CAAC,QAAQ;IAQhB;;;;OAIG;IACH,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAUhD;;;;OAIG;IACH,kBAAkB,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI;IAI1D;;;OAGG;IACH,oBAAoB,IAAI,IAAI;CA6D7B"}
@@ -6,8 +6,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.Transaction = void 0;
7
7
  const transactions_1 = require("@stacks/transactions");
8
8
  const sdk_core_1 = require("@bitgo-beta/sdk-core");
9
- const utils_1 = require("./utils");
10
9
  const bn_js_1 = __importDefault(require("bn.js"));
10
+ const utils_1 = require("./utils");
11
+ const constants_1 = require("./constants");
11
12
  class Transaction extends sdk_core_1.BaseTransaction {
12
13
  constructor(_coinConfig) {
13
14
  super(_coinConfig);
@@ -17,17 +18,16 @@ class Transaction extends sdk_core_1.BaseTransaction {
17
18
  return true;
18
19
  }
19
20
  async sign(keyPair, sigHash) {
20
- var _a;
21
21
  const keyPairs = keyPair instanceof Array ? keyPair : [keyPair];
22
22
  const signer = new transactions_1.TransactionSigner(this._stxTransaction);
23
23
  signer.checkOversign = false;
24
- signer.sigHash = (_a = sigHash !== null && sigHash !== void 0 ? sigHash : this._sigHash) !== null && _a !== void 0 ? _a : this._stxTransaction.verifyBegin();
24
+ signer.sigHash = sigHash ?? this._sigHash ?? this._stxTransaction.verifyBegin();
25
25
  for (const kp of keyPairs) {
26
26
  const keys = kp.getKeys(kp.getCompressed());
27
27
  if (!keys.prv) {
28
28
  throw new sdk_core_1.SigningError('Missing private key');
29
29
  }
30
- const privKey = transactions_1.createStacksPrivateKey(keys.prv);
30
+ const privKey = (0, transactions_1.createStacksPrivateKey)(keys.prv);
31
31
  signer.signOrigin(privKey);
32
32
  this._sigHash = signer.sigHash;
33
33
  }
@@ -36,7 +36,7 @@ class Transaction extends sdk_core_1.BaseTransaction {
36
36
  const pubKeyStrings = pubKeyString instanceof Array ? pubKeyString : [pubKeyString];
37
37
  const signer = new transactions_1.TransactionSigner(this._stxTransaction);
38
38
  pubKeyStrings.forEach((pubKey) => {
39
- signer.appendOrigin(transactions_1.createStacksPublicKey(pubKey));
39
+ signer.appendOrigin((0, transactions_1.createStacksPublicKey)(pubKey));
40
40
  });
41
41
  }
42
42
  async signWithSignatures(signature, isMultiSig) {
@@ -48,7 +48,7 @@ class Transaction extends sdk_core_1.BaseTransaction {
48
48
  this._stxTransaction = this._stxTransaction.createTxWithSignature(signatures[0].data);
49
49
  }
50
50
  else {
51
- const authFields = signatures.map((sig) => transactions_1.createTransactionAuthField(transactions_1.PubKeyEncoding.Compressed, sig));
51
+ const authFields = signatures.map((sig) => (0, transactions_1.createTransactionAuthField)(transactions_1.PubKeyEncoding.Compressed, sig));
52
52
  this._stxTransaction.auth.spendingCondition.fields = this._stxTransaction.auth.spendingCondition.fields.concat(authFields);
53
53
  }
54
54
  if (signatures.length > 0) {
@@ -57,7 +57,7 @@ class Transaction extends sdk_core_1.BaseTransaction {
57
57
  }
58
58
  get signature() {
59
59
  if (this._stxTransaction && this._stxTransaction.auth.spendingCondition) {
60
- if (transactions_1.isSingleSig(this._stxTransaction.auth.spendingCondition)) {
60
+ if ((0, transactions_1.isSingleSig)(this._stxTransaction.auth.spendingCondition)) {
61
61
  return [this._stxTransaction.auth.spendingCondition.signature.data];
62
62
  }
63
63
  else {
@@ -80,7 +80,7 @@ class Transaction extends sdk_core_1.BaseTransaction {
80
80
  const result = {
81
81
  id: this._stxTransaction.txid(),
82
82
  fee: this._stxTransaction.auth.getFee().toString(10),
83
- from: utils_1.getTxSenderAddress(this._stxTransaction),
83
+ from: (0, utils_1.getTxSenderAddress)(this._stxTransaction),
84
84
  nonce: this.getNonce(),
85
85
  payload: this.getPayloadData(),
86
86
  };
@@ -93,8 +93,8 @@ class Transaction extends sdk_core_1.BaseTransaction {
93
93
  payloadType: transactions_1.PayloadType.TokenTransfer,
94
94
  // result.payload.memo will be padded with \u0000 up to
95
95
  // MEMO_MAX_LENGTH_BYTES as defined in @stacks/transactions
96
- memo: utils_1.unpadMemo(payload.memo.content),
97
- to: transactions_1.addressToString({
96
+ memo: (0, utils_1.unpadMemo)(payload.memo.content),
97
+ to: (0, transactions_1.addressToString)({
98
98
  type: transactions_1.StacksMessageType.Address,
99
99
  version: payload.recipient.address.version,
100
100
  hash160: payload.recipient.address.hash160.toString(),
@@ -107,7 +107,7 @@ class Transaction extends sdk_core_1.BaseTransaction {
107
107
  const payload = this._stxTransaction.payload;
108
108
  const contractPayload = {
109
109
  payloadType: transactions_1.PayloadType.ContractCall,
110
- contractAddress: transactions_1.addressToString(payload.contractAddress),
110
+ contractAddress: (0, transactions_1.addressToString)(payload.contractAddress),
111
111
  contractName: payload.contractName.content,
112
112
  functionName: payload.functionName.content,
113
113
  functionArgs: payload.functionArgs.map(utils_1.stringifyCv),
@@ -153,9 +153,9 @@ class Transaction extends sdk_core_1.BaseTransaction {
153
153
  * @param rawTransaction
154
154
  */
155
155
  fromRawTransaction(rawTransaction) {
156
- const raw = utils_1.removeHexPrefix(rawTransaction);
156
+ const raw = (0, utils_1.removeHexPrefix)(rawTransaction);
157
157
  try {
158
- this._stxTransaction = transactions_1.deserializeTransaction(transactions_1.BufferReader.fromBuffer(Buffer.from(raw, 'hex')));
158
+ this._stxTransaction = (0, transactions_1.deserializeTransaction)(transactions_1.BufferReader.fromBuffer(Buffer.from(raw, 'hex')));
159
159
  }
160
160
  catch (e) {
161
161
  throw new sdk_core_1.ParseTransactionError('Error parsing the raw transaction');
@@ -196,12 +196,28 @@ class Transaction extends sdk_core_1.BaseTransaction {
196
196
  }
197
197
  else if (txJson.payload.payloadType === transactions_1.PayloadType.ContractCall) {
198
198
  if (txJson.payload.contractAddress === this._coinConfig.network.sendmanymemoContractAddress) {
199
- const sendParams = utils_1.functionArgsToSendParams(this.stxTransaction.payload.functionArgs);
199
+ const sendParams = (0, utils_1.functionArgsToSendParams)(this.stxTransaction.payload.functionArgs);
200
200
  const coin = this._coinConfig.name;
201
201
  const sum = sendParams.reduce((current, next) => current.add(new bn_js_1.default(next.amount)), new bn_js_1.default(0));
202
202
  this._outputs = sendParams.map((sendParam) => ({ address: sendParam.address, value: sendParam.amount, coin }));
203
203
  this._inputs = [{ address: txJson.from, value: sum.toString(), coin }];
204
204
  }
205
+ else if (txJson.payload.functionName === constants_1.FUNCTION_NAME_TRANSFER && txJson.payload.functionArgs.length >= 3) {
206
+ this._outputs = [
207
+ {
208
+ address: (0, transactions_1.cvToString)(txJson.payload.functionArgs[2]),
209
+ value: (0, transactions_1.cvToValue)(txJson.payload.functionArgs[0]).toString(),
210
+ coin: this._coinConfig.name,
211
+ },
212
+ ];
213
+ this._inputs = [
214
+ {
215
+ address: (0, transactions_1.cvToString)(txJson.payload.functionArgs[1]),
216
+ value: (0, transactions_1.cvToValue)(txJson.payload.functionArgs[0]).toString(),
217
+ coin: this._coinConfig.name,
218
+ },
219
+ ];
220
+ }
205
221
  else {
206
222
  this._outputs = [
207
223
  {
@@ -222,4 +238,4 @@ class Transaction extends sdk_core_1.BaseTransaction {
222
238
  }
223
239
  }
224
240
  exports.Transaction = Transaction;
225
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHVEQWM4QjtBQUU5QixtREFROEI7QUFFOUIsbUNBQWdIO0FBR2hILGtEQUEyQjtBQUUzQixNQUFhLFdBQVksU0FBUSwwQkFBZTtJQUs5QyxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLE9BQU8sQ0FBQyxHQUFZO1FBQ2xCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBNEIsRUFBRSxPQUFnQjs7UUFDdkQsTUFBTSxRQUFRLEdBQUcsT0FBTyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2hFLE1BQU0sTUFBTSxHQUFHLElBQUksZ0NBQWlCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzNELE1BQU0sQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBQzdCLE1BQU0sQ0FBQyxPQUFPLEdBQUcsTUFBQSxPQUFPLGFBQVAsT0FBTyxjQUFQLE9BQU8sR0FBSSxJQUFJLENBQUMsUUFBUSxtQ0FBSSxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2hGLEtBQUssTUFBTSxFQUFFLElBQUksUUFBUSxFQUFFO1lBQ3pCLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7Z0JBQ2IsTUFBTSxJQUFJLHVCQUFZLENBQUMscUJBQXFCLENBQUMsQ0FBQzthQUMvQztZQUNELE1BQU0sT0FBTyxHQUFHLHFDQUFzQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNqRCxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQztTQUNoQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsWUFBWSxDQUFDLFlBQStCO1FBQ2hELE1BQU0sYUFBYSxHQUFHLFlBQVksWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNwRixNQUFNLE1BQU0sR0FBc0IsSUFBSSxnQ0FBaUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDOUUsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQy9CLE1BQU0sQ0FBQyxZQUFZLENBQUMsb0NBQXFCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUNyRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsa0JBQWtCLENBQUMsU0FBMEMsRUFBRSxVQUFtQjtRQUN0RixJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2QsTUFBTSxJQUFJLHVCQUFZLENBQUMsb0JBQW9CLENBQUMsQ0FBQztTQUM5QztRQUNELE1BQU0sVUFBVSxHQUFHLFNBQVMsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUV4RSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2YsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN2RjthQUFNO1lBQ0wsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMseUNBQTBCLENBQUMsNkJBQWMsQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUN0RyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxpQkFBK0MsQ0FBQyxNQUFNLEdBQy9FLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGlCQUMzQixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDN0I7UUFDRCxJQUFJLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3pCLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1NBQzNEO0lBQ0gsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUN2RSxJQUFJLDBCQUFXLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRTtnQkFDNUQsT0FBTyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNyRTtpQkFBTTtnQkFDTCxNQUFNLFVBQVUsR0FBYSxFQUFFLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtvQkFDbkUsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxnQ0FBaUIsQ0FBQyxnQkFBZ0IsRUFBRTt3QkFDOUQsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO3FCQUN0QztnQkFDSCxDQUFDLENBQUMsQ0FBQztnQkFDSCxPQUFPLFVBQVUsQ0FBQzthQUNuQjtTQUNGO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLE1BQU07UUFDSixJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN6QixNQUFNLElBQUksZ0NBQXFCLENBQUMsbUJBQW1CLENBQUMsQ0FBQztTQUN0RDtRQUNELE1BQU0sTUFBTSxHQUFXO1lBQ3JCLEVBQUUsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRTtZQUMvQixHQUFHLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUNwRCxJQUFJLEVBQUUsMEJBQWtCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQztZQUM5QyxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUN0QixPQUFPLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRTtTQUMvQixDQUFDO1FBQ0YsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVPLGNBQWM7UUFDcEIsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEtBQUssMEJBQVcsQ0FBQyxhQUFhLEVBQUU7WUFDMUUsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUM7WUFDN0MsTUFBTSxTQUFTLEdBQTZCO2dCQUMxQyxXQUFXLEVBQUUsMEJBQVcsQ0FBQyxhQUFhO2dCQUN0Qyx1REFBdUQ7Z0JBQ3ZELDJEQUEyRDtnQkFDM0QsSUFBSSxFQUFFLGlCQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7Z0JBQ3JDLEVBQUUsRUFBRSw4QkFBZSxDQUFDO29CQUNsQixJQUFJLEVBQUUsZ0NBQWlCLENBQUMsT0FBTztvQkFDL0IsT0FBTyxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU87b0JBQzFDLE9BQU8sRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFO2lCQUN0RCxDQUFDO2dCQUNGLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRTthQUNsQyxDQUFDO1lBQ0YsT0FBTyxTQUFTLENBQUM7U0FDbEI7YUFBTSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLFdBQVcsS0FBSywwQkFBVyxDQUFDLFlBQVksRUFBRTtZQUNoRixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQztZQUM3QyxNQUFNLGVBQWUsR0FBMEI7Z0JBQzdDLFdBQVcsRUFBRSwwQkFBVyxDQUFDLFlBQVk7Z0JBQ3JDLGVBQWUsRUFBRSw4QkFBZSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUM7Z0JBQ3pELFlBQVksRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDLE9BQU87Z0JBQzFDLFlBQVksRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDLE9BQU87Z0JBQzFDLFlBQVksRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxtQkFBVyxDQUFDO2FBQ3BELENBQUM7WUFDRixPQUFPLGVBQWUsQ0FBQztTQUN4QjthQUFNO1lBQ0wsTUFBTSxJQUFJLHVCQUFZLENBQUMsNEJBQTRCLENBQUMsQ0FBQztTQUN0RDtJQUNILENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGVBQWU7UUFDYixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxFQUFFLENBQUMsTUFBTSxDQUFDO0lBQ2pELENBQUM7SUFFRCxpQkFBaUI7UUFDZixJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN6QixNQUFNLElBQUksZ0NBQXFCLENBQUMsbUJBQW1CLENBQUMsQ0FBQztTQUN0RDtRQUNELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQUksY0FBYyxDQUFDLENBQW9CO1FBQ3JDLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFTyxRQUFRO1FBQ2QsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUMvQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNsRTthQUFNO1lBQ0wsTUFBTSxJQUFJLGtDQUF1QixDQUFDLDRCQUE0QixDQUFDLENBQUM7U0FDakU7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGtCQUFrQixDQUFDLGNBQXNCO1FBQ3ZDLE1BQU0sR0FBRyxHQUFHLHVCQUFlLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDNUMsSUFBSTtZQUNGLElBQUksQ0FBQyxlQUFlLEdBQUcscUNBQXNCLENBQUMsMkJBQVksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2pHO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixNQUFNLElBQUksZ0NBQXFCLENBQUMsbUNBQW1DLENBQUMsQ0FBQztTQUN0RTtRQUNELElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsa0JBQWtCLENBQUMsZUFBZ0M7UUFDakQsSUFBSSxDQUFDLEtBQUssR0FBRyxlQUFlLENBQUM7SUFDL0IsQ0FBQztJQUVEOzs7T0FHRztJQUNILG9CQUFvQjtRQUNsQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDN0IsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsS0FBSywwQkFBVyxDQUFDLGFBQWEsRUFBRTtZQUM1RCxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFO2dCQUM5QyxJQUFJLENBQUMsUUFBUSxHQUFHO29CQUNkO3dCQUNFLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUU7d0JBQzFCLEtBQUssRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU07d0JBQzVCLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUk7cUJBQzVCO2lCQUNGLENBQUM7Z0JBRUYsSUFBSSxDQUFDLE9BQU8sR0FBRztvQkFDYjt3QkFDRSxPQUFPLEVBQUUsTUFBTSxDQUFDLElBQUk7d0JBQ3BCLEtBQUssRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU07d0JBQzVCLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUk7cUJBQzVCO2lCQUNGLENBQUM7YUFDSDtTQUNGO2FBQU0sSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsS0FBSywwQkFBVyxDQUFDLFlBQVksRUFBRTtZQUNsRSxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsZUFBZSxLQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBeUIsQ0FBQywyQkFBMkIsRUFBRTtnQkFDOUcsTUFBTSxVQUFVLEdBQUcsZ0NBQXdCLENBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUErQixDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUMvRyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztnQkFDbkMsTUFBTSxHQUFHLEdBQVcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxlQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxlQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDOUcsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLFNBQVMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUMvRyxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7YUFDeEU7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFFBQVEsR0FBRztvQkFDZDt3QkFDRSxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxlQUFlO3dCQUN2QyxLQUFLLEVBQUUsR0FBRzt3QkFDVixJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJO3FCQUM1QjtpQkFDRixDQUFDO2dCQUVGLElBQUksQ0FBQyxPQUFPLEdBQUc7b0JBQ2I7d0JBQ0UsT0FBTyxFQUFFLE1BQU0sQ0FBQyxJQUFJO3dCQUNwQixLQUFLLEVBQUUsR0FBRzt3QkFDVixJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJO3FCQUM1QjtpQkFDRixDQUFDO2FBQ0g7U0FDRjtJQUNILENBQUM7Q0FDRjtBQW5PRCxrQ0FtT0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBhZGRyZXNzVG9TdHJpbmcsXG4gIEJ1ZmZlclJlYWRlcixcbiAgY3JlYXRlU3RhY2tzUHJpdmF0ZUtleSxcbiAgY3JlYXRlU3RhY2tzUHVibGljS2V5LFxuICBjcmVhdGVUcmFuc2FjdGlvbkF1dGhGaWVsZCxcbiAgZGVzZXJpYWxpemVUcmFuc2FjdGlvbixcbiAgaXNTaW5nbGVTaWcsXG4gIE11bHRpU2lnU3BlbmRpbmdDb25kaXRpb24sXG4gIFBheWxvYWRUeXBlLFxuICBQdWJLZXlFbmNvZGluZyxcbiAgU3RhY2tzTWVzc2FnZVR5cGUsXG4gIFN0YWNrc1RyYW5zYWN0aW9uLFxuICBUcmFuc2FjdGlvblNpZ25lcixcbn0gZnJvbSAnQHN0YWNrcy90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZywgU3RhY2tzTmV0d29yayB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHtcbiAgQmFzZUtleSxcbiAgQmFzZVRyYW5zYWN0aW9uLFxuICBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcixcbiAgTm90U3VwcG9ydGVkLFxuICBQYXJzZVRyYW5zYWN0aW9uRXJyb3IsXG4gIFNpZ25pbmdFcnJvcixcbiAgVHJhbnNhY3Rpb25UeXBlLFxufSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBTaWduYXR1cmVEYXRhLCBTdGFja3NDb250cmFjdFBheWxvYWQsIFN0YWNrc1RyYW5zYWN0aW9uUGF5bG9hZCwgVHhEYXRhIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBmdW5jdGlvbkFyZ3NUb1NlbmRQYXJhbXMsIGdldFR4U2VuZGVyQWRkcmVzcywgcmVtb3ZlSGV4UHJlZml4LCBzdHJpbmdpZnlDdiwgdW5wYWRNZW1vIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnLi9rZXlQYWlyJztcbmltcG9ydCB7IENvbnRyYWN0Q2FsbFBheWxvYWQgfSBmcm9tICdAc3RhY2tzL3RyYW5zYWN0aW9ucy9kaXN0L3BheWxvYWQnO1xuaW1wb3J0IEJpZ051bSBmcm9tICdibi5qcyc7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbiBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbiB7XG4gIHByaXZhdGUgX3N0eFRyYW5zYWN0aW9uOiBTdGFja3NUcmFuc2FjdGlvbjtcbiAgcHJvdGVjdGVkIF90eXBlOiBUcmFuc2FjdGlvblR5cGU7XG4gIHByaXZhdGUgX3NpZ0hhc2g6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgY2FuU2lnbihrZXk6IEJhc2VLZXkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGFzeW5jIHNpZ24oa2V5UGFpcjogS2V5UGFpcltdIHwgS2V5UGFpciwgc2lnSGFzaD86IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGtleVBhaXJzID0ga2V5UGFpciBpbnN0YW5jZW9mIEFycmF5ID8ga2V5UGFpciA6IFtrZXlQYWlyXTtcbiAgICBjb25zdCBzaWduZXIgPSBuZXcgVHJhbnNhY3Rpb25TaWduZXIodGhpcy5fc3R4VHJhbnNhY3Rpb24pO1xuICAgIHNpZ25lci5jaGVja092ZXJzaWduID0gZmFsc2U7XG4gICAgc2lnbmVyLnNpZ0hhc2ggPSBzaWdIYXNoID8/IHRoaXMuX3NpZ0hhc2ggPz8gdGhpcy5fc3R4VHJhbnNhY3Rpb24udmVyaWZ5QmVnaW4oKTtcbiAgICBmb3IgKGNvbnN0IGtwIG9mIGtleVBhaXJzKSB7XG4gICAgICBjb25zdCBrZXlzID0ga3AuZ2V0S2V5cyhrcC5nZXRDb21wcmVzc2VkKCkpO1xuICAgICAgaWYgKCFrZXlzLnBydikge1xuICAgICAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKCdNaXNzaW5nIHByaXZhdGUga2V5Jyk7XG4gICAgICB9XG4gICAgICBjb25zdCBwcml2S2V5ID0gY3JlYXRlU3RhY2tzUHJpdmF0ZUtleShrZXlzLnBydik7XG4gICAgICBzaWduZXIuc2lnbk9yaWdpbihwcml2S2V5KTtcbiAgICAgIHRoaXMuX3NpZ0hhc2ggPSBzaWduZXIuc2lnSGFzaDtcbiAgICB9XG4gIH1cblxuICBhc3luYyBhcHBlbmRPcmlnaW4ocHViS2V5U3RyaW5nOiBzdHJpbmdbXSB8IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHB1YktleVN0cmluZ3MgPSBwdWJLZXlTdHJpbmcgaW5zdGFuY2VvZiBBcnJheSA/IHB1YktleVN0cmluZyA6IFtwdWJLZXlTdHJpbmddO1xuICAgIGNvbnN0IHNpZ25lcjogVHJhbnNhY3Rpb25TaWduZXIgPSBuZXcgVHJhbnNhY3Rpb25TaWduZXIodGhpcy5fc3R4VHJhbnNhY3Rpb24pO1xuICAgIHB1YktleVN0cmluZ3MuZm9yRWFjaCgocHViS2V5KSA9PiB7XG4gICAgICBzaWduZXIuYXBwZW5kT3JpZ2luKGNyZWF0ZVN0YWNrc1B1YmxpY0tleShwdWJLZXkpKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHNpZ25XaXRoU2lnbmF0dXJlcyhzaWduYXR1cmU6IFNpZ25hdHVyZURhdGFbXSB8IFNpZ25hdHVyZURhdGEsIGlzTXVsdGlTaWc6IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXNpZ25hdHVyZSkge1xuICAgICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignTWlzc2luZyBzaWduYXR1cmVzJyk7XG4gICAgfVxuICAgIGNvbnN0IHNpZ25hdHVyZXMgPSBzaWduYXR1cmUgaW5zdGFuY2VvZiBBcnJheSA/IHNpZ25hdHVyZSA6IFtzaWduYXR1cmVdO1xuXG4gICAgaWYgKCFpc011bHRpU2lnKSB7XG4gICAgICB0aGlzLl9zdHhUcmFuc2FjdGlvbiA9IHRoaXMuX3N0eFRyYW5zYWN0aW9uLmNyZWF0ZVR4V2l0aFNpZ25hdHVyZShzaWduYXR1cmVzWzBdLmRhdGEpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBhdXRoRmllbGRzID0gc2lnbmF0dXJlcy5tYXAoKHNpZykgPT4gY3JlYXRlVHJhbnNhY3Rpb25BdXRoRmllbGQoUHViS2V5RW5jb2RpbmcuQ29tcHJlc3NlZCwgc2lnKSk7XG4gICAgICAodGhpcy5fc3R4VHJhbnNhY3Rpb24uYXV0aC5zcGVuZGluZ0NvbmRpdGlvbiBhcyBNdWx0aVNpZ1NwZW5kaW5nQ29uZGl0aW9uKS5maWVsZHMgPSAoXG4gICAgICAgIHRoaXMuX3N0eFRyYW5zYWN0aW9uLmF1dGguc3BlbmRpbmdDb25kaXRpb24gYXMgTXVsdGlTaWdTcGVuZGluZ0NvbmRpdGlvblxuICAgICAgKS5maWVsZHMuY29uY2F0KGF1dGhGaWVsZHMpO1xuICAgIH1cbiAgICBpZiAoc2lnbmF0dXJlcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLl9zaWdIYXNoID0gc2lnbmF0dXJlc1tzaWduYXR1cmVzLmxlbmd0aCAtIDFdLnNpZ0hhc2g7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHNpZ25hdHVyZSgpOiBzdHJpbmdbXSB7XG4gICAgaWYgKHRoaXMuX3N0eFRyYW5zYWN0aW9uICYmIHRoaXMuX3N0eFRyYW5zYWN0aW9uLmF1dGguc3BlbmRpbmdDb25kaXRpb24pIHtcbiAgICAgIGlmIChpc1NpbmdsZVNpZyh0aGlzLl9zdHhUcmFuc2FjdGlvbi5hdXRoLnNwZW5kaW5nQ29uZGl0aW9uKSkge1xuICAgICAgICByZXR1cm4gW3RoaXMuX3N0eFRyYW5zYWN0aW9uLmF1dGguc3BlbmRpbmdDb25kaXRpb24uc2lnbmF0dXJlLmRhdGFdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc2lnbmF0dXJlczogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgdGhpcy5fc3R4VHJhbnNhY3Rpb24uYXV0aC5zcGVuZGluZ0NvbmRpdGlvbi5maWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICAgICAgICBpZiAoZmllbGQuY29udGVudHMudHlwZSA9PT0gU3RhY2tzTWVzc2FnZVR5cGUuTWVzc2FnZVNpZ25hdHVyZSkge1xuICAgICAgICAgICAgc2lnbmF0dXJlcy5wdXNoKGZpZWxkLmNvbnRlbnRzLmRhdGEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBzaWduYXR1cmVzO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gW107XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdG9Kc29uKCk6IFR4RGF0YSB7XG4gICAgaWYgKCF0aGlzLl9zdHhUcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgY29uc3QgcmVzdWx0OiBUeERhdGEgPSB7XG4gICAgICBpZDogdGhpcy5fc3R4VHJhbnNhY3Rpb24udHhpZCgpLFxuICAgICAgZmVlOiB0aGlzLl9zdHhUcmFuc2FjdGlvbi5hdXRoLmdldEZlZSgpLnRvU3RyaW5nKDEwKSxcbiAgICAgIGZyb206IGdldFR4U2VuZGVyQWRkcmVzcyh0aGlzLl9zdHhUcmFuc2FjdGlvbiksXG4gICAgICBub25jZTogdGhpcy5nZXROb25jZSgpLFxuICAgICAgcGF5bG9hZDogdGhpcy5nZXRQYXlsb2FkRGF0YSgpLFxuICAgIH07XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UGF5bG9hZERhdGEoKTogU3RhY2tzVHJhbnNhY3Rpb25QYXlsb2FkIHwgU3RhY2tzQ29udHJhY3RQYXlsb2FkIHtcbiAgICBpZiAodGhpcy5fc3R4VHJhbnNhY3Rpb24ucGF5bG9hZC5wYXlsb2FkVHlwZSA9PT0gUGF5bG9hZFR5cGUuVG9rZW5UcmFuc2Zlcikge1xuICAgICAgY29uc3QgcGF5bG9hZCA9IHRoaXMuX3N0eFRyYW5zYWN0aW9uLnBheWxvYWQ7XG4gICAgICBjb25zdCB0eFBheWxvYWQ6IFN0YWNrc1RyYW5zYWN0aW9uUGF5bG9hZCA9IHtcbiAgICAgICAgcGF5bG9hZFR5cGU6IFBheWxvYWRUeXBlLlRva2VuVHJhbnNmZXIsXG4gICAgICAgIC8vIHJlc3VsdC5wYXlsb2FkLm1lbW8gd2lsbCBiZSBwYWRkZWQgd2l0aCBcXHUwMDAwIHVwIHRvXG4gICAgICAgIC8vIE1FTU9fTUFYX0xFTkdUSF9CWVRFUyBhcyBkZWZpbmVkIGluIEBzdGFja3MvdHJhbnNhY3Rpb25zXG4gICAgICAgIG1lbW86IHVucGFkTWVtbyhwYXlsb2FkLm1lbW8uY29udGVudCksXG4gICAgICAgIHRvOiBhZGRyZXNzVG9TdHJpbmcoe1xuICAgICAgICAgIHR5cGU6IFN0YWNrc01lc3NhZ2VUeXBlLkFkZHJlc3MsXG4gICAgICAgICAgdmVyc2lvbjogcGF5bG9hZC5yZWNpcGllbnQuYWRkcmVzcy52ZXJzaW9uLFxuICAgICAgICAgIGhhc2gxNjA6IHBheWxvYWQucmVjaXBpZW50LmFkZHJlc3MuaGFzaDE2MC50b1N0cmluZygpLFxuICAgICAgICB9KSxcbiAgICAgICAgYW1vdW50OiBwYXlsb2FkLmFtb3VudC50b1N0cmluZygpLFxuICAgICAgfTtcbiAgICAgIHJldHVybiB0eFBheWxvYWQ7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9zdHhUcmFuc2FjdGlvbi5wYXlsb2FkLnBheWxvYWRUeXBlID09PSBQYXlsb2FkVHlwZS5Db250cmFjdENhbGwpIHtcbiAgICAgIGNvbnN0IHBheWxvYWQgPSB0aGlzLl9zdHhUcmFuc2FjdGlvbi5wYXlsb2FkO1xuICAgICAgY29uc3QgY29udHJhY3RQYXlsb2FkOiBTdGFja3NDb250cmFjdFBheWxvYWQgPSB7XG4gICAgICAgIHBheWxvYWRUeXBlOiBQYXlsb2FkVHlwZS5Db250cmFjdENhbGwsXG4gICAgICAgIGNvbnRyYWN0QWRkcmVzczogYWRkcmVzc1RvU3RyaW5nKHBheWxvYWQuY29udHJhY3RBZGRyZXNzKSxcbiAgICAgICAgY29udHJhY3ROYW1lOiBwYXlsb2FkLmNvbnRyYWN0TmFtZS5jb250ZW50LFxuICAgICAgICBmdW5jdGlvbk5hbWU6IHBheWxvYWQuZnVuY3Rpb25OYW1lLmNvbnRlbnQsXG4gICAgICAgIGZ1bmN0aW9uQXJnczogcGF5bG9hZC5mdW5jdGlvbkFyZ3MubWFwKHN0cmluZ2lmeUN2KSxcbiAgICAgIH07XG4gICAgICByZXR1cm4gY29udHJhY3RQYXlsb2FkO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgTm90U3VwcG9ydGVkKCdwYXlsb2FkIHR5cGUgbm90IHN1cHBvcnRlZCcpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGxlbmd0aCBvZiBhIHRyYW5zYWN0aW9uLiAgVGhpcyBpcyBuZWVkZWQgdG8gY2FsY3VsYXRlXG4gICAqIHRoZSB0cmFuc2FjdGlvbiBmZWUuXG4gICAqXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IHNpemUgaW4gYnl0ZXMgb2YgdGhlIHNlcmlhbGl6ZWQgdHJhbnNhY3Rpb25cbiAgICovXG4gIHRyYW5zYWN0aW9uU2l6ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9zdHhUcmFuc2FjdGlvbi5zZXJpYWxpemUoKS5sZW5ndGg7XG4gIH1cblxuICB0b0Jyb2FkY2FzdEZvcm1hdCgpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5fc3R4VHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZVRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9zdHhUcmFuc2FjdGlvbi5zZXJpYWxpemUoKS50b1N0cmluZygnaGV4Jyk7XG4gIH1cblxuICBnZXQgc3R4VHJhbnNhY3Rpb24oKTogU3RhY2tzVHJhbnNhY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLl9zdHhUcmFuc2FjdGlvbjtcbiAgfVxuXG4gIHNldCBzdHhUcmFuc2FjdGlvbih0OiBTdGFja3NUcmFuc2FjdGlvbikge1xuICAgIHRoaXMuX3N0eFRyYW5zYWN0aW9uID0gdDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Tm9uY2UoKTogbnVtYmVyIHtcbiAgICBpZiAodGhpcy5fc3R4VHJhbnNhY3Rpb24uYXV0aC5zcGVuZGluZ0NvbmRpdGlvbikge1xuICAgICAgcmV0dXJuIE51bWJlcih0aGlzLl9zdHhUcmFuc2FjdGlvbi5hdXRoLnNwZW5kaW5nQ29uZGl0aW9uLm5vbmNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdzcGVuZGluZyBjb25kaXRpb24gaXMgbnVsbCcpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoaXMgdHJhbnNhY3Rpb24gcGF5bG9hZFxuICAgKlxuICAgKiBAcGFyYW0gcmF3VHJhbnNhY3Rpb25cbiAgICovXG4gIGZyb21SYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgcmF3ID0gcmVtb3ZlSGV4UHJlZml4KHJhd1RyYW5zYWN0aW9uKTtcbiAgICB0cnkge1xuICAgICAgdGhpcy5fc3R4VHJhbnNhY3Rpb24gPSBkZXNlcmlhbGl6ZVRyYW5zYWN0aW9uKEJ1ZmZlclJlYWRlci5mcm9tQnVmZmVyKEJ1ZmZlci5mcm9tKHJhdywgJ2hleCcpKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlVHJhbnNhY3Rpb25FcnJvcignRXJyb3IgcGFyc2luZyB0aGUgcmF3IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIHRoaXMubG9hZElucHV0c0FuZE91dHB1dHMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHRyYW5zYWN0aW9uIHR5cGVcbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvblR5cGV9IHRyYW5zYWN0aW9uVHlwZSBUaGUgdHJhbnNhY3Rpb24gdHlwZSB0byBiZSBzZXRcbiAgICovXG4gIHNldFRyYW5zYWN0aW9uVHlwZSh0cmFuc2FjdGlvblR5cGU6IFRyYW5zYWN0aW9uVHlwZSk6IHZvaWQge1xuICAgIHRoaXMuX3R5cGUgPSB0cmFuc2FjdGlvblR5cGU7XG4gIH1cblxuICAvKipcbiAgICogTG9hZCB0aGUgaW5wdXQgYW5kIG91dHB1dCBkYXRhIG9uIHRoaXMgdHJhbnNhY3Rpb24gdXNpbmcgdGhlIHRyYW5zYWN0aW9uIGpzb25cbiAgICogaWYgdGhlcmUgYXJlIG91dHB1dHMuXG4gICAqL1xuICBsb2FkSW5wdXRzQW5kT3V0cHV0cygpOiB2b2lkIHtcbiAgICBjb25zdCB0eEpzb24gPSB0aGlzLnRvSnNvbigpO1xuICAgIGlmICh0eEpzb24ucGF5bG9hZC5wYXlsb2FkVHlwZSA9PT0gUGF5bG9hZFR5cGUuVG9rZW5UcmFuc2Zlcikge1xuICAgICAgaWYgKHR4SnNvbi5wYXlsb2FkLnRvICYmIHR4SnNvbi5wYXlsb2FkLmFtb3VudCkge1xuICAgICAgICB0aGlzLl9vdXRwdXRzID0gW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6IHR4SnNvbi5wYXlsb2FkLnRvLFxuICAgICAgICAgICAgdmFsdWU6IHR4SnNvbi5wYXlsb2FkLmFtb3VudCxcbiAgICAgICAgICAgIGNvaW46IHRoaXMuX2NvaW5Db25maWcubmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICBdO1xuXG4gICAgICAgIHRoaXMuX2lucHV0cyA9IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiB0eEpzb24uZnJvbSxcbiAgICAgICAgICAgIHZhbHVlOiB0eEpzb24ucGF5bG9hZC5hbW91bnQsXG4gICAgICAgICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHR4SnNvbi5wYXlsb2FkLnBheWxvYWRUeXBlID09PSBQYXlsb2FkVHlwZS5Db250cmFjdENhbGwpIHtcbiAgICAgIGlmICh0eEpzb24ucGF5bG9hZC5jb250cmFjdEFkZHJlc3MgPT09ICh0aGlzLl9jb2luQ29uZmlnLm5ldHdvcmsgYXMgU3RhY2tzTmV0d29yaykuc2VuZG1hbnltZW1vQ29udHJhY3RBZGRyZXNzKSB7XG4gICAgICAgIGNvbnN0IHNlbmRQYXJhbXMgPSBmdW5jdGlvbkFyZ3NUb1NlbmRQYXJhbXMoKHRoaXMuc3R4VHJhbnNhY3Rpb24ucGF5bG9hZCBhcyBDb250cmFjdENhbGxQYXlsb2FkKS5mdW5jdGlvbkFyZ3MpO1xuICAgICAgICBjb25zdCBjb2luID0gdGhpcy5fY29pbkNvbmZpZy5uYW1lO1xuICAgICAgICBjb25zdCBzdW06IEJpZ051bSA9IHNlbmRQYXJhbXMucmVkdWNlKChjdXJyZW50LCBuZXh0KSA9PiBjdXJyZW50LmFkZChuZXcgQmlnTnVtKG5leHQuYW1vdW50KSksIG5ldyBCaWdOdW0oMCkpO1xuICAgICAgICB0aGlzLl9vdXRwdXRzID0gc2VuZFBhcmFtcy5tYXAoKHNlbmRQYXJhbSkgPT4gKHsgYWRkcmVzczogc2VuZFBhcmFtLmFkZHJlc3MsIHZhbHVlOiBzZW5kUGFyYW0uYW1vdW50LCBjb2luIH0pKTtcbiAgICAgICAgdGhpcy5faW5wdXRzID0gW3sgYWRkcmVzczogdHhKc29uLmZyb20sIHZhbHVlOiBzdW0udG9TdHJpbmcoKSwgY29pbiB9XTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX291dHB1dHMgPSBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogdHhKc29uLnBheWxvYWQuY29udHJhY3RBZGRyZXNzLFxuICAgICAgICAgICAgdmFsdWU6ICcwJyxcbiAgICAgICAgICAgIGNvaW46IHRoaXMuX2NvaW5Db25maWcubmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICBdO1xuXG4gICAgICAgIHRoaXMuX2lucHV0cyA9IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiB0eEpzb24uZnJvbSxcbiAgICAgICAgICAgIHZhbHVlOiAnMCcsXG4gICAgICAgICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
241
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHVEQWlCOEI7QUFJOUIsbURBUThCO0FBRTlCLGtEQUEyQjtBQUczQixtQ0FBZ0g7QUFFaEgsMkNBQXFEO0FBRXJELE1BQWEsV0FBWSxTQUFRLDBCQUFlO0lBSzlDLFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsT0FBTyxDQUFDLEdBQVk7UUFDbEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUE0QixFQUFFLE9BQWdCO1FBQ3ZELE1BQU0sUUFBUSxHQUFHLE9BQU8sWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNoRSxNQUFNLE1BQU0sR0FBRyxJQUFJLGdDQUFpQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUMzRCxNQUFNLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztRQUM3QixNQUFNLENBQUMsT0FBTyxHQUFHLE9BQU8sSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDaEYsS0FBSyxNQUFNLEVBQUUsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUMxQixNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ2QsTUFBTSxJQUFJLHVCQUFZLENBQUMscUJBQXFCLENBQUMsQ0FBQztZQUNoRCxDQUFDO1lBQ0QsTUFBTSxPQUFPLEdBQUcsSUFBQSxx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LEVBQUUsSUFBQSx3QkFBUyxFQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFO3dCQUMzRCxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJO3FCQUM1QjtpQkFDRixDQUFDO1lBQ0osQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxRQUFRLEdBQUc7b0JBQ2Q7d0JBQ0UsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsZUFBZTt3QkFDdkMsS0FBSyxFQUFFLEdBQUc7d0JBQ1YsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSTtxQkFDNUI7aUJBQ0YsQ0FBQztnQkFFRixJQUFJLENBQUMsT0FBTyxHQUFHO29CQUNiO3dCQUNFLE9BQU8sRUFBRSxNQUFNLENBQUMsSUFBSTt3QkFDcEIsS0FBSyxFQUFFLEdBQUc7d0JBQ1YsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSTtxQkFDNUI7aUJBQ0YsQ0FBQztZQUNKLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBbFBELGtDQWtQQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGFkZHJlc3NUb1N0cmluZyxcbiAgQnVmZmVyUmVhZGVyLFxuICBDb250cmFjdENhbGxQYXlsb2FkLFxuICBjcmVhdGVTdGFja3NQcml2YXRlS2V5LFxuICBjcmVhdGVTdGFja3NQdWJsaWNLZXksXG4gIGNyZWF0ZVRyYW5zYWN0aW9uQXV0aEZpZWxkLFxuICBjdlRvU3RyaW5nLFxuICBjdlRvVmFsdWUsXG4gIGRlc2VyaWFsaXplVHJhbnNhY3Rpb24sXG4gIGlzU2luZ2xlU2lnLFxuICBNdWx0aVNpZ1NwZW5kaW5nQ29uZGl0aW9uLFxuICBQYXlsb2FkVHlwZSxcbiAgUHViS2V5RW5jb2RpbmcsXG4gIFN0YWNrc01lc3NhZ2VUeXBlLFxuICBTdGFja3NUcmFuc2FjdGlvbixcbiAgVHJhbnNhY3Rpb25TaWduZXIsXG59IGZyb20gJ0BzdGFja3MvdHJhbnNhY3Rpb25zJztcblxuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZywgU3RhY2tzTmV0d29yayB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuXG5pbXBvcnQge1xuICBCYXNlS2V5LFxuICBCYXNlVHJhbnNhY3Rpb24sXG4gIEludmFsaWRUcmFuc2FjdGlvbkVycm9yLFxuICBOb3RTdXBwb3J0ZWQsXG4gIFBhcnNlVHJhbnNhY3Rpb25FcnJvcixcbiAgU2lnbmluZ0Vycm9yLFxuICBUcmFuc2FjdGlvblR5cGUsXG59IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcblxuaW1wb3J0IEJpZ051bSBmcm9tICdibi5qcyc7XG5cbmltcG9ydCB7IFNpZ25hdHVyZURhdGEsIFN0YWNrc0NvbnRyYWN0UGF5bG9hZCwgU3RhY2tzVHJhbnNhY3Rpb25QYXlsb2FkLCBUeERhdGEgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IGZ1bmN0aW9uQXJnc1RvU2VuZFBhcmFtcywgZ2V0VHhTZW5kZXJBZGRyZXNzLCByZW1vdmVIZXhQcmVmaXgsIHN0cmluZ2lmeUN2LCB1bnBhZE1lbW8gfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IEtleVBhaXIgfSBmcm9tICcuL2tleVBhaXInO1xuaW1wb3J0IHsgRlVOQ1RJT05fTkFNRV9UUkFOU0ZFUiB9IGZyb20gJy4vY29uc3RhbnRzJztcblxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uIHtcbiAgcHJpdmF0ZSBfc3R4VHJhbnNhY3Rpb246IFN0YWNrc1RyYW5zYWN0aW9uO1xuICBwcm90ZWN0ZWQgX3R5cGU6IFRyYW5zYWN0aW9uVHlwZTtcbiAgcHJpdmF0ZSBfc2lnSGFzaDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBjYW5TaWduKGtleTogQmFzZUtleSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgYXN5bmMgc2lnbihrZXlQYWlyOiBLZXlQYWlyW10gfCBLZXlQYWlyLCBzaWdIYXNoPzogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qga2V5UGFpcnMgPSBrZXlQYWlyIGluc3RhbmNlb2YgQXJyYXkgPyBrZXlQYWlyIDogW2tleVBhaXJdO1xuICAgIGNvbnN0IHNpZ25lciA9IG5ldyBUcmFuc2FjdGlvblNpZ25lcih0aGlzLl9zdHhUcmFuc2FjdGlvbik7XG4gICAgc2lnbmVyLmNoZWNrT3ZlcnNpZ24gPSBmYWxzZTtcbiAgICBzaWduZXIuc2lnSGFzaCA9IHNpZ0hhc2ggPz8gdGhpcy5fc2lnSGFzaCA/PyB0aGlzLl9zdHhUcmFuc2FjdGlvbi52ZXJpZnlCZWdpbigpO1xuICAgIGZvciAoY29uc3Qga3Agb2Yga2V5UGFpcnMpIHtcbiAgICAgIGNvbnN0IGtleXMgPSBrcC5nZXRLZXlzKGtwLmdldENvbXByZXNzZWQoKSk7XG4gICAgICBpZiAoIWtleXMucHJ2KSB7XG4gICAgICAgIHRocm93IG5ldyBTaWduaW5nRXJyb3IoJ01pc3NpbmcgcHJpdmF0ZSBrZXknKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByaXZLZXkgPSBjcmVhdGVTdGFja3NQcml2YXRlS2V5KGtleXMucHJ2KTtcbiAgICAgIHNpZ25lci5zaWduT3JpZ2luKHByaXZLZXkpO1xuICAgICAgdGhpcy5fc2lnSGFzaCA9IHNpZ25lci5zaWdIYXNoO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGFwcGVuZE9yaWdpbihwdWJLZXlTdHJpbmc6IHN0cmluZ1tdIHwgc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcHViS2V5U3RyaW5ncyA9IHB1YktleVN0cmluZyBpbnN0YW5jZW9mIEFycmF5ID8gcHViS2V5U3RyaW5nIDogW3B1YktleVN0cmluZ107XG4gICAgY29uc3Qgc2lnbmVyOiBUcmFuc2FjdGlvblNpZ25lciA9IG5ldyBUcmFuc2FjdGlvblNpZ25lcih0aGlzLl9zdHhUcmFuc2FjdGlvbik7XG4gICAgcHViS2V5U3RyaW5ncy5mb3JFYWNoKChwdWJLZXkpID0+IHtcbiAgICAgIHNpZ25lci5hcHBlbmRPcmlnaW4oY3JlYXRlU3RhY2tzUHVibGljS2V5KHB1YktleSkpO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgc2lnbldpdGhTaWduYXR1cmVzKHNpZ25hdHVyZTogU2lnbmF0dXJlRGF0YVtdIHwgU2lnbmF0dXJlRGF0YSwgaXNNdWx0aVNpZzogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghc2lnbmF0dXJlKSB7XG4gICAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKCdNaXNzaW5nIHNpZ25hdHVyZXMnKTtcbiAgICB9XG4gICAgY29uc3Qgc2lnbmF0dXJlcyA9IHNpZ25hdHVyZSBpbnN0YW5jZW9mIEFycmF5ID8gc2lnbmF0dXJlIDogW3NpZ25hdHVyZV07XG5cbiAgICBpZiAoIWlzTXVsdGlTaWcpIHtcbiAgICAgIHRoaXMuX3N0eFRyYW5zYWN0aW9uID0gdGhpcy5fc3R4VHJhbnNhY3Rpb24uY3JlYXRlVHhXaXRoU2lnbmF0dXJlKHNpZ25hdHVyZXNbMF0uZGF0YSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGF1dGhGaWVsZHMgPSBzaWduYXR1cmVzLm1hcCgoc2lnKSA9PiBjcmVhdGVUcmFuc2FjdGlvbkF1dGhGaWVsZChQdWJLZXlFbmNvZGluZy5Db21wcmVzc2VkLCBzaWcpKTtcbiAgICAgICh0aGlzLl9zdHhUcmFuc2FjdGlvbi5hdXRoLnNwZW5kaW5nQ29uZGl0aW9uIGFzIE11bHRpU2lnU3BlbmRpbmdDb25kaXRpb24pLmZpZWxkcyA9IChcbiAgICAgICAgdGhpcy5fc3R4VHJhbnNhY3Rpb24uYXV0aC5zcGVuZGluZ0NvbmRpdGlvbiBhcyBNdWx0aVNpZ1NwZW5kaW5nQ29uZGl0aW9uXG4gICAgICApLmZpZWxkcy5jb25jYXQoYXV0aEZpZWxkcyk7XG4gICAgfVxuICAgIGlmIChzaWduYXR1cmVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuX3NpZ0hhc2ggPSBzaWduYXR1cmVzW3NpZ25hdHVyZXMubGVuZ3RoIC0gMV0uc2lnSGFzaDtcbiAgICB9XG4gIH1cblxuICBnZXQgc2lnbmF0dXJlKCk6IHN0cmluZ1tdIHtcbiAgICBpZiAodGhpcy5fc3R4VHJhbnNhY3Rpb24gJiYgdGhpcy5fc3R4VHJhbnNhY3Rpb24uYXV0aC5zcGVuZGluZ0NvbmRpdGlvbikge1xuICAgICAgaWYgKGlzU2luZ2xlU2lnKHRoaXMuX3N0eFRyYW5zYWN0aW9uLmF1dGguc3BlbmRpbmdDb25kaXRpb24pKSB7XG4gICAgICAgIHJldHVybiBbdGhpcy5fc3R4VHJhbnNhY3Rpb24uYXV0aC5zcGVuZGluZ0NvbmRpdGlvbi5zaWduYXR1cmUuZGF0YV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBzaWduYXR1cmVzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICB0aGlzLl9zdHhUcmFuc2FjdGlvbi5hdXRoLnNwZW5kaW5nQ29uZGl0aW9uLmZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xuICAgICAgICAgIGlmIChmaWVsZC5jb250ZW50cy50eXBlID09PSBTdGFja3NNZXNzYWdlVHlwZS5NZXNzYWdlU2lnbmF0dXJlKSB7XG4gICAgICAgICAgICBzaWduYXR1cmVzLnB1c2goZmllbGQuY29udGVudHMuZGF0YSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHNpZ25hdHVyZXM7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB0b0pzb24oKTogVHhEYXRhIHtcbiAgICBpZiAoIXRoaXMuX3N0eFRyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2VUcmFuc2FjdGlvbkVycm9yKCdFbXB0eSB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQ6IFR4RGF0YSA9IHtcbiAgICAgIGlkOiB0aGlzLl9zdHhUcmFuc2FjdGlvbi50eGlkKCksXG4gICAgICBmZWU6IHRoaXMuX3N0eFRyYW5zYWN0aW9uLmF1dGguZ2V0RmVlKCkudG9TdHJpbmcoMTApLFxuICAgICAgZnJvbTogZ2V0VHhTZW5kZXJBZGRyZXNzKHRoaXMuX3N0eFRyYW5zYWN0aW9uKSxcbiAgICAgIG5vbmNlOiB0aGlzLmdldE5vbmNlKCksXG4gICAgICBwYXlsb2FkOiB0aGlzLmdldFBheWxvYWREYXRhKCksXG4gICAgfTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQYXlsb2FkRGF0YSgpOiBTdGFja3NUcmFuc2FjdGlvblBheWxvYWQgfCBTdGFja3NDb250cmFjdFBheWxvYWQge1xuICAgIGlmICh0aGlzLl9zdHhUcmFuc2FjdGlvbi5wYXlsb2FkLnBheWxvYWRUeXBlID09PSBQYXlsb2FkVHlwZS5Ub2tlblRyYW5zZmVyKSB7XG4gICAgICBjb25zdCBwYXlsb2FkID0gdGhpcy5fc3R4VHJhbnNhY3Rpb24ucGF5bG9hZDtcbiAgICAgIGNvbnN0IHR4UGF5bG9hZDogU3RhY2tzVHJhbnNhY3Rpb25QYXlsb2FkID0ge1xuICAgICAgICBwYXlsb2FkVHlwZTogUGF5bG9hZFR5cGUuVG9rZW5UcmFuc2ZlcixcbiAgICAgICAgLy8gcmVzdWx0LnBheWxvYWQubWVtbyB3aWxsIGJlIHBhZGRlZCB3aXRoIFxcdTAwMDAgdXAgdG9cbiAgICAgICAgLy8gTUVNT19NQVhfTEVOR1RIX0JZVEVTIGFzIGRlZmluZWQgaW4gQHN0YWNrcy90cmFuc2FjdGlvbnNcbiAgICAgICAgbWVtbzogdW5wYWRNZW1vKHBheWxvYWQubWVtby5jb250ZW50KSxcbiAgICAgICAgdG86IGFkZHJlc3NUb1N0cmluZyh7XG4gICAgICAgICAgdHlwZTogU3RhY2tzTWVzc2FnZVR5cGUuQWRkcmVzcyxcbiAgICAgICAgICB2ZXJzaW9uOiBwYXlsb2FkLnJlY2lwaWVudC5hZGRyZXNzLnZlcnNpb24sXG4gICAgICAgICAgaGFzaDE2MDogcGF5bG9hZC5yZWNpcGllbnQuYWRkcmVzcy5oYXNoMTYwLnRvU3RyaW5nKCksXG4gICAgICAgIH0pLFxuICAgICAgICBhbW91bnQ6IHBheWxvYWQuYW1vdW50LnRvU3RyaW5nKCksXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHR4UGF5bG9hZDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuX3N0eFRyYW5zYWN0aW9uLnBheWxvYWQucGF5bG9hZFR5cGUgPT09IFBheWxvYWRUeXBlLkNvbnRyYWN0Q2FsbCkge1xuICAgICAgY29uc3QgcGF5bG9hZCA9IHRoaXMuX3N0eFRyYW5zYWN0aW9uLnBheWxvYWQ7XG4gICAgICBjb25zdCBjb250cmFjdFBheWxvYWQ6IFN0YWNrc0NvbnRyYWN0UGF5bG9hZCA9IHtcbiAgICAgICAgcGF5bG9hZFR5cGU6IFBheWxvYWRUeXBlLkNvbnRyYWN0Q2FsbCxcbiAgICAgICAgY29udHJhY3RBZGRyZXNzOiBhZGRyZXNzVG9TdHJpbmcocGF5bG9hZC5jb250cmFjdEFkZHJlc3MpLFxuICAgICAgICBjb250cmFjdE5hbWU6IHBheWxvYWQuY29udHJhY3ROYW1lLmNvbnRlbnQsXG4gICAgICAgIGZ1bmN0aW9uTmFtZTogcGF5bG9hZC5mdW5jdGlvbk5hbWUuY29udGVudCxcbiAgICAgICAgZnVuY3Rpb25BcmdzOiBwYXlsb2FkLmZ1bmN0aW9uQXJncy5tYXAoc3RyaW5naWZ5Q3YpLFxuICAgICAgfTtcbiAgICAgIHJldHVybiBjb250cmFjdFBheWxvYWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBOb3RTdXBwb3J0ZWQoJ3BheWxvYWQgdHlwZSBub3Qgc3VwcG9ydGVkJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgbGVuZ3RoIG9mIGEgdHJhbnNhY3Rpb24uICBUaGlzIGlzIG5lZWRlZCB0byBjYWxjdWxhdGVcbiAgICogdGhlIHRyYW5zYWN0aW9uIGZlZS5cbiAgICpcbiAgICogQHJldHVybnMge251bWJlcn0gc2l6ZSBpbiBieXRlcyBvZiB0aGUgc2VyaWFsaXplZCB0cmFuc2FjdGlvblxuICAgKi9cbiAgdHJhbnNhY3Rpb25TaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3N0eFRyYW5zYWN0aW9uLnNlcmlhbGl6ZSgpLmxlbmd0aDtcbiAgfVxuXG4gIHRvQnJvYWRjYXN0Rm9ybWF0KCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLl9zdHhUcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3N0eFRyYW5zYWN0aW9uLnNlcmlhbGl6ZSgpLnRvU3RyaW5nKCdoZXgnKTtcbiAgfVxuXG4gIGdldCBzdHhUcmFuc2FjdGlvbigpOiBTdGFja3NUcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX3N0eFRyYW5zYWN0aW9uO1xuICB9XG5cbiAgc2V0IHN0eFRyYW5zYWN0aW9uKHQ6IFN0YWNrc1RyYW5zYWN0aW9uKSB7XG4gICAgdGhpcy5fc3R4VHJhbnNhY3Rpb24gPSB0O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXROb25jZSgpOiBudW1iZXIge1xuICAgIGlmICh0aGlzLl9zdHhUcmFuc2FjdGlvbi5hdXRoLnNwZW5kaW5nQ29uZGl0aW9uKSB7XG4gICAgICByZXR1cm4gTnVtYmVyKHRoaXMuX3N0eFRyYW5zYWN0aW9uLmF1dGguc3BlbmRpbmdDb25kaXRpb24ubm9uY2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ3NwZW5kaW5nIGNvbmRpdGlvbiBpcyBudWxsJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhpcyB0cmFuc2FjdGlvbiBwYXlsb2FkXG4gICAqXG4gICAqIEBwYXJhbSByYXdUcmFuc2FjdGlvblxuICAgKi9cbiAgZnJvbVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCByYXcgPSByZW1vdmVIZXhQcmVmaXgocmF3VHJhbnNhY3Rpb24pO1xuICAgIHRyeSB7XG4gICAgICB0aGlzLl9zdHhUcmFuc2FjdGlvbiA9IGRlc2VyaWFsaXplVHJhbnNhY3Rpb24oQnVmZmVyUmVhZGVyLmZyb21CdWZmZXIoQnVmZmVyLmZyb20ocmF3LCAnaGV4JykpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2VUcmFuc2FjdGlvbkVycm9yKCdFcnJvciBwYXJzaW5nIHRoZSByYXcgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgdGhpcy5sb2FkSW5wdXRzQW5kT3V0cHV0cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgdHJhbnNhY3Rpb24gdHlwZVxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uVHlwZX0gdHJhbnNhY3Rpb25UeXBlIFRoZSB0cmFuc2FjdGlvbiB0eXBlIHRvIGJlIHNldFxuICAgKi9cbiAgc2V0VHJhbnNhY3Rpb25UeXBlKHRyYW5zYWN0aW9uVHlwZTogVHJhbnNhY3Rpb25UeXBlKTogdm9pZCB7XG4gICAgdGhpcy5fdHlwZSA9IHRyYW5zYWN0aW9uVHlwZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIHRoZSBpbnB1dCBhbmQgb3V0cHV0IGRhdGEgb24gdGhpcyB0cmFuc2FjdGlvbiB1c2luZyB0aGUgdHJhbnNhY3Rpb24ganNvblxuICAgKiBpZiB0aGVyZSBhcmUgb3V0cHV0cy5cbiAgICovXG4gIGxvYWRJbnB1dHNBbmRPdXRwdXRzKCk6IHZvaWQge1xuICAgIGNvbnN0IHR4SnNvbiA9IHRoaXMudG9Kc29uKCk7XG4gICAgaWYgKHR4SnNvbi5wYXlsb2FkLnBheWxvYWRUeXBlID09PSBQYXlsb2FkVHlwZS5Ub2tlblRyYW5zZmVyKSB7XG4gICAgICBpZiAodHhKc29uLnBheWxvYWQudG8gJiYgdHhKc29uLnBheWxvYWQuYW1vdW50KSB7XG4gICAgICAgIHRoaXMuX291dHB1dHMgPSBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogdHhKc29uLnBheWxvYWQudG8sXG4gICAgICAgICAgICB2YWx1ZTogdHhKc29uLnBheWxvYWQuYW1vdW50LFxuICAgICAgICAgICAgY29pbjogdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgICAgICAgIH0sXG4gICAgICAgIF07XG5cbiAgICAgICAgdGhpcy5faW5wdXRzID0gW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6IHR4SnNvbi5mcm9tLFxuICAgICAgICAgICAgdmFsdWU6IHR4SnNvbi5wYXlsb2FkLmFtb3VudCxcbiAgICAgICAgICAgIGNvaW46IHRoaXMuX2NvaW5Db25maWcubmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodHhKc29uLnBheWxvYWQucGF5bG9hZFR5cGUgPT09IFBheWxvYWRUeXBlLkNvbnRyYWN0Q2FsbCkge1xuICAgICAgaWYgKHR4SnNvbi5wYXlsb2FkLmNvbnRyYWN0QWRkcmVzcyA9PT0gKHRoaXMuX2NvaW5Db25maWcubmV0d29yayBhcyBTdGFja3NOZXR3b3JrKS5zZW5kbWFueW1lbW9Db250cmFjdEFkZHJlc3MpIHtcbiAgICAgICAgY29uc3Qgc2VuZFBhcmFtcyA9IGZ1bmN0aW9uQXJnc1RvU2VuZFBhcmFtcygodGhpcy5zdHhUcmFuc2FjdGlvbi5wYXlsb2FkIGFzIENvbnRyYWN0Q2FsbFBheWxvYWQpLmZ1bmN0aW9uQXJncyk7XG4gICAgICAgIGNvbnN0IGNvaW4gPSB0aGlzLl9jb2luQ29uZmlnLm5hbWU7XG4gICAgICAgIGNvbnN0IHN1bTogQmlnTnVtID0gc2VuZFBhcmFtcy5yZWR1Y2UoKGN1cnJlbnQsIG5leHQpID0+IGN1cnJlbnQuYWRkKG5ldyBCaWdOdW0obmV4dC5hbW91bnQpKSwgbmV3IEJpZ051bSgwKSk7XG4gICAgICAgIHRoaXMuX291dHB1dHMgPSBzZW5kUGFyYW1zLm1hcCgoc2VuZFBhcmFtKSA9PiAoeyBhZGRyZXNzOiBzZW5kUGFyYW0uYWRkcmVzcywgdmFsdWU6IHNlbmRQYXJhbS5hbW91bnQsIGNvaW4gfSkpO1xuICAgICAgICB0aGlzLl9pbnB1dHMgPSBbeyBhZGRyZXNzOiB0eEpzb24uZnJvbSwgdmFsdWU6IHN1bS50b1N0cmluZygpLCBjb2luIH1dO1xuICAgICAgfSBlbHNlIGlmICh0eEpzb24ucGF5bG9hZC5mdW5jdGlvbk5hbWUgPT09IEZVTkNUSU9OX05BTUVfVFJBTlNGRVIgJiYgdHhKc29uLnBheWxvYWQuZnVuY3Rpb25BcmdzLmxlbmd0aCA+PSAzKSB7XG4gICAgICAgIHRoaXMuX291dHB1dHMgPSBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogY3ZUb1N0cmluZyh0eEpzb24ucGF5bG9hZC5mdW5jdGlvbkFyZ3NbMl0pLFxuICAgICAgICAgICAgdmFsdWU6IGN2VG9WYWx1ZSh0eEpzb24ucGF5bG9hZC5mdW5jdGlvbkFyZ3NbMF0pLnRvU3RyaW5nKCksXG4gICAgICAgICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICAgICAgdGhpcy5faW5wdXRzID0gW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6IGN2VG9TdHJpbmcodHhKc29uLnBheWxvYWQuZnVuY3Rpb25BcmdzWzFdKSxcbiAgICAgICAgICAgIHZhbHVlOiBjdlRvVmFsdWUodHhKc29uLnBheWxvYWQuZnVuY3Rpb25BcmdzWzBdKS50b1N0cmluZygpLFxuICAgICAgICAgICAgY29pbjogdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9vdXRwdXRzID0gW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6IHR4SnNvbi5wYXlsb2FkLmNvbnRyYWN0QWRkcmVzcyxcbiAgICAgICAgICAgIHZhbHVlOiAnMCcsXG4gICAgICAgICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgXTtcblxuICAgICAgICB0aGlzLl9pbnB1dHMgPSBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogdHhKc29uLmZyb20sXG4gICAgICAgICAgICB2YWx1ZTogJzAnLFxuICAgICAgICAgICAgY29pbjogdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -43,13 +43,13 @@ class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
43
43
  this.nonce(txData.nonce);
44
44
  let sigHash = tx.stxTransaction.verifyBegin();
45
45
  const authType = tx.stxTransaction.auth.authType ? tx.stxTransaction.auth.authType : transactions_1.AuthType.Standard;
46
- if (transactions_1.isSingleSig(tx.stxTransaction.auth.spendingCondition)) {
46
+ if ((0, transactions_1.isSingleSig)(tx.stxTransaction.auth.spendingCondition)) {
47
47
  this._numberSignatures = 1;
48
- if (tx.stxTransaction.auth.spendingCondition.signature.data !== transactions_1.emptyMessageSignature().data) {
48
+ if (tx.stxTransaction.auth.spendingCondition.signature.data !== (0, transactions_1.emptyMessageSignature)().data) {
49
49
  const signature = tx.stxTransaction.auth.spendingCondition.signature;
50
- sigHash = transactions_1.makeSigHashPreSign(sigHash, authType, new bn_js_1.default(this._fee.fee), new bn_js_1.default(this._nonce));
50
+ sigHash = (0, transactions_1.makeSigHashPreSign)(sigHash, authType, new bn_js_1.default(this._fee.fee), new bn_js_1.default(this._nonce));
51
51
  this._signatures.push({ ...signature, index: 0, sigHash });
52
- this._fromPubKeys = [transactions_1.publicKeyFromSignature(sigHash, signature)];
52
+ this._fromPubKeys = [(0, transactions_1.publicKeyFromSignature)(sigHash, signature)];
53
53
  }
54
54
  }
55
55
  else {
@@ -57,7 +57,7 @@ class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
57
57
  tx.stxTransaction.auth.spendingCondition.fields.forEach((field, index) => {
58
58
  if (field.contents.type === transactions_1.StacksMessageType.MessageSignature) {
59
59
  const signature = field.contents;
60
- const nextVerify = transactions_1.nextVerification(sigHash, authType, new bn_js_1.default(this._fee.fee), new bn_js_1.default(this._nonce), transactions_1.PubKeyEncoding.Compressed, // useless param as Compressed is hardcoded in stacks lib
60
+ const nextVerify = (0, transactions_1.nextVerification)(sigHash, authType, new bn_js_1.default(this._fee.fee), new bn_js_1.default(this._nonce), transactions_1.PubKeyEncoding.Compressed, // useless param as Compressed is hardcoded in stacks lib
61
61
  signature);
62
62
  sigHash = nextVerify.nextSigHash;
63
63
  this._signatures.push({ ...signature, index, sigHash });
@@ -73,7 +73,7 @@ class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
73
73
  fromImplementation(rawTransaction) {
74
74
  const tx = new transaction_1.Transaction(this._coinConfig);
75
75
  this.validateRawTransaction(rawTransaction);
76
- const stackstransaction = transactions_1.deserializeTransaction(transactions_1.BufferReader.fromBuffer(Buffer.from(utils_1.removeHexPrefix(rawTransaction), 'hex')));
76
+ const stackstransaction = (0, transactions_1.deserializeTransaction)(transactions_1.BufferReader.fromBuffer(Buffer.from((0, utils_1.removeHexPrefix)(rawTransaction), 'hex')));
77
77
  tx.stxTransaction = stackstransaction;
78
78
  this.initBuilder(tx);
79
79
  return this.transaction;
@@ -108,7 +108,7 @@ class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
108
108
  this.checkDuplicatedKeys(key);
109
109
  let prv = key.key;
110
110
  if (prv.startsWith('xprv')) {
111
- const rawPrv = sdk_core_1.xprvToRawPrv(prv);
111
+ const rawPrv = (0, sdk_core_1.xprvToRawPrv)(prv);
112
112
  prv = new keyPair_1.KeyPair({ prv: rawPrv }).getKeys(true).prv;
113
113
  }
114
114
  const signer = new keyPair_1.KeyPair({ prv: prv });
@@ -160,7 +160,7 @@ class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
160
160
  const pubKeys = senderPubKey instanceof Array ? senderPubKey : [senderPubKey];
161
161
  this._fromPubKeys = [];
162
162
  pubKeys.forEach((key) => {
163
- if (utils_1.isValidPublicKey(key)) {
163
+ if ((0, utils_1.isValidPublicKey)(key)) {
164
164
  this._fromPubKeys.push(key);
165
165
  }
166
166
  else {
@@ -176,7 +176,7 @@ class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
176
176
  * @returns {TransactionBuilder} This transaction builder
177
177
  */
178
178
  memo(memo) {
179
- if (!utils_1.isValidMemo(memo)) {
179
+ if (!(0, utils_1.isValidMemo)(memo)) {
180
180
  throw new sdk_core_1.BuildTransactionError('Memo is too long');
181
181
  }
182
182
  this._memo = memo;
@@ -196,7 +196,7 @@ class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
196
196
  // region Validators
197
197
  /** @inheritdoc */
198
198
  validateAddress(address, addressFormat) {
199
- if (!utils_1.isValidAddress(address.address)) {
199
+ if (!(0, utils_1.isValidAddress)(address.address)) {
200
200
  throw new sdk_core_1.BuildTransactionError('Invalid address ' + address.address);
201
201
  }
202
202
  }
@@ -213,7 +213,7 @@ class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
213
213
  throw new sdk_core_1.InvalidTransactionError('Raw transaction is empty');
214
214
  }
215
215
  try {
216
- transactions_1.deserializeTransaction(transactions_1.BufferReader.fromBuffer(Buffer.from(utils_1.removeHexPrefix(rawTransaction), 'hex')));
216
+ (0, transactions_1.deserializeTransaction)(transactions_1.BufferReader.fromBuffer(Buffer.from((0, utils_1.removeHexPrefix)(rawTransaction), 'hex')));
217
217
  }
218
218
  catch (e) {
219
219
  throw new sdk_core_1.ParseTransactionError('There was an error parsing the raw transaction');
@@ -260,4 +260,4 @@ class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
260
260
  }
261
261
  }
262
262
  exports.TransactionBuilder = TransactionBuilder;
263
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsZ0VBQXFDO0FBQ3JDLGtEQUEyQjtBQUMzQixpREFBMEU7QUFDMUUsdURBVzhCO0FBQzlCLDZDQUE4RTtBQUM5RSxtREFXOEI7QUFDOUIsK0NBQTRDO0FBQzVDLHVDQUFvQztBQUVwQyxtQ0FBeUY7QUFDekYsMkNBQXVFO0FBRXZFLE1BQXNCLGtCQUFtQixTQUFRLGlDQUFzQjtJQVlyRSxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQWdHYixpQkFBWSxHQUFHLENBQUMsQ0FBUyxFQUFFLEtBQWEsRUFBNkIsRUFBRSxDQUM3RSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsQ0FBQztRQUMxQyxrQkFBYSxHQUFHLENBQUMsTUFBYyxFQUFFLENBQVMsRUFBdUIsRUFBRSxDQUN6RSxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxNQUFNLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsS0FBSyxNQUFNLENBQUMsQ0FBQztRQWxHdkcsSUFBSSxDQUFDLFdBQVcsR0FBRyx1QkFBVyxDQUFDO1FBQy9CLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLHVDQUEyQixDQUFDO1FB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QU8sQ0FBQyxFQUFFO1lBQ1YsTUFBTSxJQUFJLGdDQUFxQixDQUFDLGlCQUFpQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztTQUNqRTtJQUNILENBQUM7Q0FDRjtBQXpSRCxnREF5UkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5pbXBvcnQgQmlnTnVtIGZyb20gJ2JuLmpzJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcsIE5ldHdvcmtUeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQge1xuICBBdXRoVHlwZSxcbiAgQnVmZmVyUmVhZGVyLFxuICBkZXNlcmlhbGl6ZVRyYW5zYWN0aW9uLFxuICBlbXB0eU1lc3NhZ2VTaWduYXR1cmUsXG4gIGlzU2luZ2xlU2lnLFxuICBtYWtlU2lnSGFzaFByZVNpZ24sXG4gIG5leHRWZXJpZmljYXRpb24sXG4gIHB1YmxpY0tleUZyb21TaWduYXR1cmUsXG4gIFN0YWNrc01lc3NhZ2VUeXBlLFxuICBQdWJLZXlFbmNvZGluZyxcbn0gZnJvbSAnQHN0YWNrcy90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHsgU3RhY2tzTmV0d29yaywgU3RhY2tzVGVzdG5ldCwgU3RhY2tzTWFpbm5ldCB9IGZyb20gJ0BzdGFja3MvbmV0d29yayc7XG5pbXBvcnQge1xuICBCYXNlQWRkcmVzcyxcbiAgQmFzZUZlZSxcbiAgQmFzZUtleSxcbiAgQmFzZVRyYW5zYWN0aW9uQnVpbGRlcixcbiAgQnVpbGRUcmFuc2FjdGlvbkVycm9yLFxuICBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvcixcbiAgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsXG4gIFBhcnNlVHJhbnNhY3Rpb25FcnJvcixcbiAgU2lnbmluZ0Vycm9yLFxuICB4cHJ2VG9SYXdQcnYsXG59IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnLi9rZXlQYWlyJztcbmltcG9ydCB7IFNpZ25hdHVyZURhdGEgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IGlzVmFsaWRBZGRyZXNzLCByZW1vdmVIZXhQcmVmaXgsIGlzVmFsaWRNZW1vLCBpc1ZhbGlkUHVibGljS2V5IH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBBTkNIT1JfTU9ERSwgREVGQVVMVF9NVUxUSVNJR19TSUdfTlVNQkVSIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVHJhbnNhY3Rpb25CdWlsZGVyIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByaXZhdGUgX3RyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbjtcbiAgcHJvdGVjdGVkIF9hbmNob3JNb2RlOiBudW1iZXI7XG4gIHByb3RlY3RlZCBfZmVlOiBCYXNlRmVlO1xuICBwcm90ZWN0ZWQgX25vbmNlOiBudW1iZXI7XG4gIHByb3RlY3RlZCBfbWVtbzogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX251bWJlclNpZ25hdHVyZXM6IG51bWJlcjtcbiAgcHJvdGVjdGVkIF9tdWx0aVNpZ25lcktleVBhaXJzOiBLZXlQYWlyW107XG4gIHByb3RlY3RlZCBfc2lnbmF0dXJlczogU2lnbmF0dXJlRGF0YVtdO1xuICBwcm90ZWN0ZWQgX25ldHdvcms6IFN0YWNrc05ldHdvcms7XG4gIHByb3RlY3RlZCBfZnJvbVB1YktleXM6IHN0cmluZ1tdO1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgICB0aGlzLl9hbmNob3JNb2RlID0gQU5DSE9SX01PREU7XG4gICAgdGhpcy5fbXVsdGlTaWduZXJLZXlQYWlycyA9IFtdO1xuICAgIHRoaXMuX2Zyb21QdWJLZXlzID0gW107XG4gICAgdGhpcy5fc2lnbmF0dXJlcyA9IFtdO1xuICAgIHRoaXMuX251bWJlclNpZ25hdHVyZXMgPSBERUZBVUxUX01VTFRJU0lHX1NJR19OVU1CRVI7XG4gICAgdGhpcy5fbmV0d29yayA9IF9jb2luQ29uZmlnLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/IG5ldyBTdGFja3NNYWlubmV0KCkgOiBuZXcgU3RhY2tzVGVzdG5ldCgpO1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gbmV3IFRyYW5zYWN0aW9uKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIHRoZSB0cmFuc2FjdGlvbiBidWlsZGVyIGZpZWxkcyB1c2luZyB0aGUgZGVjb2RlZCB0cmFuc2FjdGlvbiBkYXRhXG4gICAqXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb259IHR4IHRoZSB0cmFuc2FjdGlvbiBkYXRhXG4gICAqL1xuICBpbml0QnVpbGRlcih0eDogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uID0gdHg7XG4gICAgLy8gY2hlY2sgaWYgaXQgaXMgc2lnbmVkIG9yIHVuc2lnbmVkIHR4XG4gICAgaWYgKHR4LnN0eFRyYW5zYWN0aW9uLmF1dGguc3BlbmRpbmdDb25kaXRpb24gPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdzcGVuZGluZyBjb25kaXRpb24gY2Fubm90IGJlIHVuZGVmaW5lZCcpO1xuICAgIH1cbiAgICBjb25zdCB0eERhdGEgPSB0eC50b0pzb24oKTtcbiAgICB0aGlzLmZlZSh7IGZlZTogdHhEYXRhLmZlZS50b1N0cmluZygpIH0pO1xuICAgIHRoaXMubm9uY2UodHhEYXRhLm5vbmNlKTtcbiAgICBsZXQgc2lnSGFzaCA9IHR4LnN0eFRyYW5zYWN0aW9uLnZlcmlmeUJlZ2luKCk7XG5cbiAgICBjb25zdCBhdXRoVHlwZSA9IHR4LnN0eFRyYW5zYWN0aW9uLmF1dGguYXV0aFR5cGUgPyB0eC5zdHhUcmFuc2FjdGlvbi5hdXRoLmF1dGhUeXBlIDogQXV0aFR5cGUuU3RhbmRhcmQ7XG4gICAgaWYgKGlzU2luZ2xlU2lnKHR4LnN0eFRyYW5zYWN0aW9uLmF1dGguc3BlbmRpbmdDb25kaXRpb24pKSB7XG4gICAgICB0aGlzLl9udW1iZXJTaWduYXR1cmVzID0gMTtcbiAgICAgIGlmICh0eC5zdHhUcmFuc2FjdGlvbi5hdXRoLnNwZW5kaW5nQ29uZGl0aW9uLnNpZ25hdHVyZS5kYXRhICE9PSBlbXB0eU1lc3NhZ2VTaWduYXR1cmUoKS5kYXRhKSB7XG4gICAgICAgIGNvbnN0IHNpZ25hdHVyZSA9IHR4LnN0eFRyYW5zYWN0aW9uLmF1dGguc3BlbmRpbmdDb25kaXRpb24uc2lnbmF0dXJlO1xuICAgICAgICBzaWdIYXNoID0gbWFrZVNpZ0hhc2hQcmVTaWduKHNpZ0hhc2gsIGF1dGhUeXBlLCBuZXcgQmlnTnVtKHRoaXMuX2ZlZS5mZWUpLCBuZXcgQmlnTnVtKHRoaXMuX25vbmNlKSk7XG4gICAgICAgIHRoaXMuX3NpZ25hdHVyZXMucHVzaCh7IC4uLnNpZ25hdHVyZSwgaW5kZXg6IDAsIHNpZ0hhc2ggfSk7XG4gICAgICAgIHRoaXMuX2Zyb21QdWJLZXlzID0gW3B1YmxpY0tleUZyb21TaWduYXR1cmUoc2lnSGFzaCwgc2lnbmF0dXJlKV07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX251bWJlclNpZ25hdHVyZXMgPSB0eC5zdHhUcmFuc2FjdGlvbi5hdXRoLnNwZW5kaW5nQ29uZGl0aW9uLnNpZ25hdHVyZXNSZXF1aXJlZDtcbiAgICAgIHR4LnN0eFRyYW5zYWN0aW9uLmF1dGguc3BlbmRpbmdDb25kaXRpb24uZmllbGRzLmZvckVhY2goKGZpZWxkLCBpbmRleCkgPT4ge1xuICAgICAgICBpZiAoZmllbGQuY29udGVudHMudHlwZSA9PT0gU3RhY2tzTWVzc2FnZVR5cGUuTWVzc2FnZVNpZ25hdHVyZSkge1xuICAgICAgICAgIGNvbnN0IHNpZ25hdHVyZSA9IGZpZWxkLmNvbnRlbnRzO1xuICAgICAgICAgIGNvbnN0IG5leHRWZXJpZnkgPSBuZXh0VmVyaWZpY2F0aW9uKFxuICAgICAgICAgICAgc2lnSGFzaCxcbiAgICAgICAgICAgIGF1dGhUeXBlLFxuICAgICAgICAgICAgbmV3IEJpZ051bSh0aGlzLl9mZWUuZmVlKSxcbiAgICAgICAgICAgIG5ldyBCaWdOdW0odGhpcy5fbm9uY2UpLFxuICAgICAgICAgICAgUHViS2V5RW5jb2RpbmcuQ29tcHJlc3NlZCwgLy8gdXNlbGVzcyBwYXJhbSBhcyBDb21wcmVzc2VkIGlzIGhhcmRjb2RlZCBpbiBzdGFja3MgbGliXG4gICAgICAgICAgICBzaWduYXR1cmVcbiAgICAgICAgICApO1xuICAgICAgICAgIHNpZ0hhc2ggPSBuZXh0VmVyaWZ5Lm5leHRTaWdIYXNoO1xuICAgICAgICAgIHRoaXMuX3NpZ25hdHVyZXMucHVzaCh7IC4uLnNpZ25hdHVyZSwgaW5kZXgsIHNpZ0hhc2ggfSk7XG4gICAgICAgICAgdGhpcy5fZnJvbVB1YktleXMucHVzaChuZXh0VmVyaWZ5LnB1YktleS5kYXRhLnRvU3RyaW5nKCdoZXgnKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5fZnJvbVB1YktleXMucHVzaChmaWVsZC5jb250ZW50cy5kYXRhLnRvU3RyaW5nKCdoZXgnKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgZnJvbUltcGxlbWVudGF0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiBUcmFuc2FjdGlvbiB7XG4gICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24odGhpcy5fY29pbkNvbmZpZyk7XG4gICAgdGhpcy52YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uKTtcbiAgICBjb25zdCBzdGFja3N0cmFuc2FjdGlvbiA9IGRlc2VyaWFsaXplVHJhbnNhY3Rpb24oXG4gICAgICBCdWZmZXJSZWFkZXIuZnJvbUJ1ZmZlcihCdWZmZXIuZnJvbShyZW1vdmVIZXhQcmVmaXgocmF3VHJhbnNhY3Rpb24pLCAnaGV4JykpXG4gICAgKTtcbiAgICB0eC5zdHhUcmFuc2FjdGlvbiA9IHN0YWNrc3RyYW5zYWN0aW9uO1xuICAgIHRoaXMuaW5pdEJ1aWxkZXIodHgpO1xuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLy8gcmVnaW9uIEJhc2UgQnVpbGRlclxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkSW1wbGVtZW50YXRpb24oKTogUHJvbWlzZTxUcmFuc2FjdGlvbj4ge1xuICAgIGNvbnN0IGlzTXVsdGlTaWc6IGJvb2xlYW4gPSB0aGlzLl9mcm9tUHViS2V5cy5sZW5ndGggPiAxO1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uLnN0eFRyYW5zYWN0aW9uLnNldEZlZShuZXcgQmlnTnVtKHRoaXMuX2ZlZS5mZWUpKTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbi5zdHhUcmFuc2FjdGlvbi5zZXROb25jZShuZXcgQmlnTnVtKHRoaXMuX25vbmNlKSk7XG5cbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5fZnJvbVB1YktleXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBjb25zdCBwdWJLZXkgPSB0aGlzLl9mcm9tUHViS2V5c1tpbmRleF07XG4gICAgICBjb25zdCBzaWduYXR1cmUgPSB0aGlzLmdldFNpZ25hdHVyZShwdWJLZXksIGluZGV4KTtcbiAgICAgIGlmIChzaWduYXR1cmUpIHtcbiAgICAgICAgYXdhaXQgdGhpcy50cmFuc2FjdGlvbi5zaWduV2l0aFNpZ25hdHVyZXMoc2lnbmF0dXJlLCBpc011bHRpU2lnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHBydktleSA9IHRoaXMuZ2V0UHJpdmF0ZUtleShwdWJLZXksIGluZGV4KTtcbiAgICAgICAgaWYgKHBydktleSkge1xuICAgICAgICAgIGF3YWl0IHRoaXMudHJhbnNhY3Rpb24uc2lnbihwcnZLZXkpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzTXVsdGlTaWcpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uLmFwcGVuZE9yaWdpbihwdWJLZXkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fdHJhbnNhY3Rpb24ubG9hZElucHV0c0FuZE91dHB1dHMoKTtcbiAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb247XG4gIH1cblxuICBwcml2YXRlIGdldFNpZ25hdHVyZSA9IChfOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiBTaWduYXR1cmVEYXRhIHwgdW5kZWZpbmVkID0+XG4gICAgdGhpcy5fc2lnbmF0dXJlcy5maW5kKChzKSA9PiBzLmluZGV4ID09PSBpbmRleCk7XG4gIHByaXZhdGUgZ2V0UHJpdmF0ZUtleSA9IChwdWJLZXk6IHN0cmluZywgXzogbnVtYmVyKTogS2V5UGFpciB8IHVuZGVmaW5lZCA9PlxuICAgIHRoaXMuX211bHRpU2lnbmVyS2V5UGFpcnMuZmluZCgoa3ApID0+IGtwLmdldEtleXModHJ1ZSkucHViID09PSBwdWJLZXkgfHwga3AuZ2V0S2V5cygpLnB1YiA9PT0gcHViS2V5KTtcblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIHNpZ25JbXBsZW1lbnRhdGlvbihrZXk6IEJhc2VLZXkpOiBUcmFuc2FjdGlvbiB7XG4gICAgdGhpcy5jaGVja0R1cGxpY2F0ZWRLZXlzKGtleSk7XG4gICAgbGV0IHBydiA9IGtleS5rZXk7XG4gICAgaWYgKHBydi5zdGFydHNXaXRoKCd4cHJ2JykpIHtcbiAgICAgIGNvbnN0IHJhd1BydiA9IHhwcnZUb1Jhd1BydihwcnYpO1xuICAgICAgcHJ2ID0gbmV3IEtleVBhaXIoeyBwcnY6IHJhd1BydiB9KS5nZXRLZXlzKHRydWUpLnBydjtcbiAgICB9XG4gICAgY29uc3Qgc2lnbmVyID0gbmV3IEtleVBhaXIoeyBwcnY6IHBydiB9KTtcblxuICAgIC8vIFNpZ25pbmcgdGhlIHRyYW5zYWN0aW9uIGlzIGFuIG9wZXJhdGlvbiB0aGF0IHJlbGllcyBvbiBhbGwgdGhlIGRhdGEgYmVpbmcgc2V0LFxuICAgIC8vIHNvIHdlIHNldCB0aGUgc291cmNlIGhlcmUgYW5kIGxlYXZlIHRoZSBhY3R1YWwgc2lnbmluZyBmb3IgdGhlIGJ1aWxkIHN0ZXBcbiAgICB0aGlzLl9tdWx0aVNpZ25lcktleVBhaXJzLnB1c2goc2lnbmVyKTtcbiAgICBjb25zdCBwdWJsaWNLZXkgPSBzaWduZXIuZ2V0S2V5cyhzaWduZXIuZ2V0Q29tcHJlc3NlZCgpKS5wdWI7XG4gICAgaWYgKCF0aGlzLl9mcm9tUHViS2V5cy5pbmNsdWRlcyhwdWJsaWNLZXkpKSB7XG4gICAgICB0aGlzLl9mcm9tUHViS2V5cy5wdXNoKHB1YmxpY0tleSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb24oKTogVHJhbnNhY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLl90cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgc2V0IHRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbikge1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gdHJhbnNhY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoYXQgdGhlIGdpdmVuIGtleSBpcyBub3QgYWxyZWFkeSBpbiB0aGlzLl9tdWx0aVNpZ25lcktleVBhaXJzXG4gICAqXG4gICAqIEBwYXJhbSB7QmFzZUtleX0ga2V5IC0gVGhlIGtleSB0byBjaGVja1xuICAgKi9cbiAgcHJpdmF0ZSBjaGVja0R1cGxpY2F0ZWRLZXlzKGtleTogQmFzZUtleSkge1xuICAgIHRoaXMuX211bHRpU2lnbmVyS2V5UGFpcnMuZm9yRWFjaCgoX3NvdXJjZUtleVBhaXIpID0+IHtcbiAgICAgIGlmIChfc291cmNlS2V5UGFpci5nZXRLZXlzKCkucHJ2ID09PSBrZXkua2V5KSB7XG4gICAgICAgIHRocm93IG5ldyBTaWduaW5nRXJyb3IoJ1JlcGVhdGVkIHNpZ246ICcgKyBrZXkua2V5KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHRyYW5zYWN0aW9uIGZlZXNcbiAgICpcbiAgICogQHBhcmFtIHtCYXNlRmVlfSBmZWUgVGhlIG1heGltdW0gZ2FzIHRvIHBheVxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25CdWlsZGVyfSBUaGlzIHRyYW5zYWN0aW9uIGJ1aWxkZXJcbiAgICovXG4gIGZlZShmZWU6IEJhc2VGZWUpOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlVmFsdWUobmV3IEJpZ051bWJlcihmZWUuZmVlKSk7XG4gICAgdGhpcy5fZmVlID0gZmVlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgbm9uY2UobjogbnVtYmVyKTogdGhpcyB7XG4gICAgdGhpcy5fbm9uY2UgPSBuO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZnJvbVB1YktleShzZW5kZXJQdWJLZXk6IHN0cmluZyB8IHN0cmluZ1tdKTogdGhpcyB7XG4gICAgY29uc3QgcHViS2V5cyA9IHNlbmRlclB1YktleSBpbnN0YW5jZW9mIEFycmF5ID8gc2VuZGVyUHViS2V5IDogW3NlbmRlclB1YktleV07XG4gICAgdGhpcy5fZnJvbVB1YktleXMgPSBbXTtcbiAgICBwdWJLZXlzLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgaWYgKGlzVmFsaWRQdWJsaWNLZXkoa2V5KSkge1xuICAgICAgICB0aGlzLl9mcm9tUHViS2V5cy5wdXNoKGtleSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IoJ0ludmFsaWQgcHVibGljIGtleScpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqICBTZXQgdGhlIG1lbW9cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1lbW9cbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9uQnVpbGRlcn0gVGhpcyB0cmFuc2FjdGlvbiBidWlsZGVyXG4gICAqL1xuICBtZW1vKG1lbW86IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICghaXNWYWxpZE1lbW8obWVtbykpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ01lbW8gaXMgdG9vIGxvbmcnKTtcbiAgICB9XG4gICAgdGhpcy5fbWVtbyA9IG1lbW87XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogIFNldCB0aGUgbnVtYmVyIG9mIHNpZ25hdHVyZXMgZm9yIG11bHRpLXNpZ1xuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gbnVtU2lnbnNcbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9uQnVpbGRlcn0gVGhpcyB0cmFuc2FjdGlvbiBidWlsZGVyXG4gICAqL1xuICBudW1iZXJTaWduYXR1cmVzKG51bVNpZ25zOiBudW1iZXIpOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlVmFsdWUobmV3IEJpZ051bWJlcihudW1TaWducykpO1xuICAgIHRoaXMuX251bWJlclNpZ25hdHVyZXMgPSBudW1TaWducztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8vIHJlZ2lvbiBWYWxpZGF0b3JzXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZUFkZHJlc3MoYWRkcmVzczogQmFzZUFkZHJlc3MsIGFkZHJlc3NGb3JtYXQ/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIWlzVmFsaWRBZGRyZXNzKGFkZHJlc3MuYWRkcmVzcykpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgYWRkcmVzcyAnICsgYWRkcmVzcy5hZGRyZXNzKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVLZXkoa2V5OiBCYXNlS2V5KTogdm9pZCB7XG4gICAgY29uc3Qga2V5UGFpciA9IG5ldyBLZXlQYWlyKHsgcHJ2OiBrZXkua2V5IH0pO1xuICAgIGlmICgha2V5UGFpci5nZXRLZXlzKCkucHJ2KSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIGtleScpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXJhd1RyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ1JhdyB0cmFuc2FjdGlvbiBpcyBlbXB0eScpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgZGVzZXJpYWxpemVUcmFuc2FjdGlvbihCdWZmZXJSZWFkZXIuZnJvbUJ1ZmZlcihCdWZmZXIuZnJvbShyZW1vdmVIZXhQcmVmaXgocmF3VHJhbnNhY3Rpb24pLCAnaGV4JykpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2VUcmFuc2FjdGlvbkVycm9yKCdUaGVyZSB3YXMgYW4gZXJyb3IgcGFyc2luZyB0aGUgcmF3IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24/OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHRoaXMudmFsaWRhdGVGZWUoKTtcbiAgICB0aGlzLnZhbGlkYXRlTm9uY2UoKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVZhbHVlKHZhbHVlOiBCaWdOdW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodmFsdWUuaXNMZXNzVGhhbigwKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignVmFsdWUgY2Fubm90IGJlIGxlc3MgdGhhbiB6ZXJvJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGF0IHRoZSBmZWUgZmllbGQgaXMgZGVmaW5lZFxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZUZlZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fZmVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IG1pc3NpbmcgZmVlJyk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICB0aGlzLnZhbGlkYXRlVmFsdWUobmV3IEJpZ051bWJlcih0aGlzLl9mZWUuZmVlKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBmZWUnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoYXQgbm9uY2UgaXMgZGVmaW5lZFxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZU5vbmNlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9ub25jZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiBtaXNzaW5nIG5vbmNlJyk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICB0aGlzLnZhbGlkYXRlVmFsdWUobmV3IEJpZ051bWJlcih0aGlzLl9ub25jZSkpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoYEludmFsaWQgbm9uY2UgJHt0aGlzLl9ub25jZX1gKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
263
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsZ0VBQXFDO0FBQ3JDLGtEQUEyQjtBQUMzQixpREFBMEU7QUFDMUUsdURBVzhCO0FBQzlCLDZDQUE4RTtBQUM5RSxtREFXOEI7QUFDOUIsK0NBQTRDO0FBQzVDLHVDQUFvQztBQUVwQyxtQ0FBeUY7QUFDekYsMkNBQXVFO0FBRXZFLE1BQXNCLGtCQUFtQixTQUFRLGlDQUFzQjtJQVlyRSxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQWdHYixpQkFBWSxHQUFHLENBQUMsQ0FBUyxFQUFFLEtBQWEsRUFBNkIsRUFBRSxDQUM3RSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsQ0FBQztRQUMxQyxrQkFBYSxHQUFHLENBQUMsTUFBYyxFQUFFLENBQVMsRUFBdUIsRUFBRSxDQUN6RSxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxNQUFNLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsS0FBSyxNQUFNLENBQUMsQ0FBQztRQWxHdkcsSUFBSSxDQUFDLFdBQVcsR0FBRyx1QkFBVyxDQUFDO1FBQy9CLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLHVDQUEyQixDQUFDO1FB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QUFHLENBQUMsQ0FBQyxDQUFDO1FBQ25ELENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsTUFBTSxJQUFJLGdDQUFxQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2pELENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxhQUFhO1FBQ25CLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUM5QixNQUFNLElBQUksZ0NBQXFCLENBQUMsb0NBQW9DLENBQUMsQ0FBQztRQUN4RSxDQUFDO1FBQ0QsSUFBSSxDQUFDO1lBQ0gsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLHNCQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDakQsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxNQUFNLElBQUksZ0NBQXFCLENBQUMsaUJBQWlCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ2xFLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUF6UkQsZ0RBeVJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IEJpZ051bSBmcm9tICdibi5qcyc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnLCBOZXR3b3JrVHlwZSB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHtcbiAgQXV0aFR5cGUsXG4gIEJ1ZmZlclJlYWRlcixcbiAgZGVzZXJpYWxpemVUcmFuc2FjdGlvbixcbiAgZW1wdHlNZXNzYWdlU2lnbmF0dXJlLFxuICBpc1NpbmdsZVNpZyxcbiAgbWFrZVNpZ0hhc2hQcmVTaWduLFxuICBuZXh0VmVyaWZpY2F0aW9uLFxuICBwdWJsaWNLZXlGcm9tU2lnbmF0dXJlLFxuICBTdGFja3NNZXNzYWdlVHlwZSxcbiAgUHViS2V5RW5jb2RpbmcsXG59IGZyb20gJ0BzdGFja3MvdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7IFN0YWNrc05ldHdvcmssIFN0YWNrc1Rlc3RuZXQsIFN0YWNrc01haW5uZXQgfSBmcm9tICdAc3RhY2tzL25ldHdvcmsnO1xuaW1wb3J0IHtcbiAgQmFzZUFkZHJlc3MsXG4gIEJhc2VGZWUsXG4gIEJhc2VLZXksXG4gIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIEJ1aWxkVHJhbnNhY3Rpb25FcnJvcixcbiAgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IsXG4gIEludmFsaWRUcmFuc2FjdGlvbkVycm9yLFxuICBQYXJzZVRyYW5zYWN0aW9uRXJyb3IsXG4gIFNpZ25pbmdFcnJvcixcbiAgeHBydlRvUmF3UHJ2LFxufSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgS2V5UGFpciB9IGZyb20gJy4va2V5UGFpcic7XG5pbXBvcnQgeyBTaWduYXR1cmVEYXRhIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBpc1ZhbGlkQWRkcmVzcywgcmVtb3ZlSGV4UHJlZml4LCBpc1ZhbGlkTWVtbywgaXNWYWxpZFB1YmxpY0tleSB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgQU5DSE9SX01PREUsIERFRkFVTFRfTVVMVElTSUdfU0lHX05VTUJFUiB9IGZyb20gJy4vY29uc3RhbnRzJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRyYW5zYWN0aW9uQnVpbGRlciBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcml2YXRlIF90cmFuc2FjdGlvbjogVHJhbnNhY3Rpb247XG4gIHByb3RlY3RlZCBfYW5jaG9yTW9kZTogbnVtYmVyO1xuICBwcm90ZWN0ZWQgX2ZlZTogQmFzZUZlZTtcbiAgcHJvdGVjdGVkIF9ub25jZTogbnVtYmVyO1xuICBwcm90ZWN0ZWQgX21lbW86IHN0cmluZztcbiAgcHJvdGVjdGVkIF9udW1iZXJTaWduYXR1cmVzOiBudW1iZXI7XG4gIHByb3RlY3RlZCBfbXVsdGlTaWduZXJLZXlQYWlyczogS2V5UGFpcltdO1xuICBwcm90ZWN0ZWQgX3NpZ25hdHVyZXM6IFNpZ25hdHVyZURhdGFbXTtcbiAgcHJvdGVjdGVkIF9uZXR3b3JrOiBTdGFja3NOZXR3b3JrO1xuICBwcm90ZWN0ZWQgX2Zyb21QdWJLZXlzOiBzdHJpbmdbXTtcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fYW5jaG9yTW9kZSA9IEFOQ0hPUl9NT0RFO1xuICAgIHRoaXMuX211bHRpU2lnbmVyS2V5UGFpcnMgPSBbXTtcbiAgICB0aGlzLl9mcm9tUHViS2V5cyA9IFtdO1xuICAgIHRoaXMuX3NpZ25hdHVyZXMgPSBbXTtcbiAgICB0aGlzLl9udW1iZXJTaWduYXR1cmVzID0gREVGQVVMVF9NVUxUSVNJR19TSUdfTlVNQkVSO1xuICAgIHRoaXMuX25ldHdvcmsgPSBfY29pbkNvbmZpZy5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyBuZXcgU3RhY2tzTWFpbm5ldCgpIDogbmV3IFN0YWNrc1Rlc3RuZXQoKTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbihfY29pbkNvbmZpZyk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0aGUgdHJhbnNhY3Rpb24gYnVpbGRlciBmaWVsZHMgdXNpbmcgdGhlIGRlY29kZWQgdHJhbnNhY3Rpb24gZGF0YVxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9ufSB0eCB0aGUgdHJhbnNhY3Rpb24gZGF0YVxuICAgKi9cbiAgaW5pdEJ1aWxkZXIodHg6IFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy50cmFuc2FjdGlvbiA9IHR4O1xuICAgIC8vIGNoZWNrIGlmIGl0IGlzIHNpZ25lZCBvciB1bnNpZ25lZCB0eFxuICAgIGlmICh0eC5zdHhUcmFuc2FjdGlvbi5hdXRoLnNwZW5kaW5nQ29uZGl0aW9uID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignc3BlbmRpbmcgY29uZGl0aW9uIGNhbm5vdCBiZSB1bmRlZmluZWQnKTtcbiAgICB9XG4gICAgY29uc3QgdHhEYXRhID0gdHgudG9Kc29uKCk7XG4gICAgdGhpcy5mZWUoeyBmZWU6IHR4RGF0YS5mZWUudG9TdHJpbmcoKSB9KTtcbiAgICB0aGlzLm5vbmNlKHR4RGF0YS5ub25jZSk7XG4gICAgbGV0IHNpZ0hhc2ggPSB0eC5zdHhUcmFuc2FjdGlvbi52ZXJpZnlCZWdpbigpO1xuXG4gICAgY29uc3QgYXV0aFR5cGUgPSB0eC5zdHhUcmFuc2FjdGlvbi5hdXRoLmF1dGhUeXBlID8gdHguc3R4VHJhbnNhY3Rpb24uYXV0aC5hdXRoVHlwZSA6IEF1dGhUeXBlLlN0YW5kYXJkO1xuICAgIGlmIChpc1NpbmdsZVNpZyh0eC5zdHhUcmFuc2FjdGlvbi5hdXRoLnNwZW5kaW5nQ29uZGl0aW9uKSkge1xuICAgICAgdGhpcy5fbnVtYmVyU2lnbmF0dXJlcyA9IDE7XG4gICAgICBpZiAodHguc3R4VHJhbnNhY3Rpb24uYXV0aC5zcGVuZGluZ0NvbmRpdGlvbi5zaWduYXR1cmUuZGF0YSAhPT0gZW1wdHlNZXNzYWdlU2lnbmF0dXJlKCkuZGF0YSkge1xuICAgICAgICBjb25zdCBzaWduYXR1cmUgPSB0eC5zdHhUcmFuc2FjdGlvbi5hdXRoLnNwZW5kaW5nQ29uZGl0aW9uLnNpZ25hdHVyZTtcbiAgICAgICAgc2lnSGFzaCA9IG1ha2VTaWdIYXNoUHJlU2lnbihzaWdIYXNoLCBhdXRoVHlwZSwgbmV3IEJpZ051bSh0aGlzLl9mZWUuZmVlKSwgbmV3IEJpZ051bSh0aGlzLl9ub25jZSkpO1xuICAgICAgICB0aGlzLl9zaWduYXR1cmVzLnB1c2goeyAuLi5zaWduYXR1cmUsIGluZGV4OiAwLCBzaWdIYXNoIH0pO1xuICAgICAgICB0aGlzLl9mcm9tUHViS2V5cyA9IFtwdWJsaWNLZXlGcm9tU2lnbmF0dXJlKHNpZ0hhc2gsIHNpZ25hdHVyZSldO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9udW1iZXJTaWduYXR1cmVzID0gdHguc3R4VHJhbnNhY3Rpb24uYXV0aC5zcGVuZGluZ0NvbmRpdGlvbi5zaWduYXR1cmVzUmVxdWlyZWQ7XG4gICAgICB0eC5zdHhUcmFuc2FjdGlvbi5hdXRoLnNwZW5kaW5nQ29uZGl0aW9uLmZpZWxkcy5mb3JFYWNoKChmaWVsZCwgaW5kZXgpID0+IHtcbiAgICAgICAgaWYgKGZpZWxkLmNvbnRlbnRzLnR5cGUgPT09IFN0YWNrc01lc3NhZ2VUeXBlLk1lc3NhZ2VTaWduYXR1cmUpIHtcbiAgICAgICAgICBjb25zdCBzaWduYXR1cmUgPSBmaWVsZC5jb250ZW50cztcbiAgICAgICAgICBjb25zdCBuZXh0VmVyaWZ5ID0gbmV4dFZlcmlmaWNhdGlvbihcbiAgICAgICAgICAgIHNpZ0hhc2gsXG4gICAgICAgICAgICBhdXRoVHlwZSxcbiAgICAgICAgICAgIG5ldyBCaWdOdW0odGhpcy5fZmVlLmZlZSksXG4gICAgICAgICAgICBuZXcgQmlnTnVtKHRoaXMuX25vbmNlKSxcbiAgICAgICAgICAgIFB1YktleUVuY29kaW5nLkNvbXByZXNzZWQsIC8vIHVzZWxlc3MgcGFyYW0gYXMgQ29tcHJlc3NlZCBpcyBoYXJkY29kZWQgaW4gc3RhY2tzIGxpYlxuICAgICAgICAgICAgc2lnbmF0dXJlXG4gICAgICAgICAgKTtcbiAgICAgICAgICBzaWdIYXNoID0gbmV4dFZlcmlmeS5uZXh0U2lnSGFzaDtcbiAgICAgICAgICB0aGlzLl9zaWduYXR1cmVzLnB1c2goeyAuLi5zaWduYXR1cmUsIGluZGV4LCBzaWdIYXNoIH0pO1xuICAgICAgICAgIHRoaXMuX2Zyb21QdWJLZXlzLnB1c2gobmV4dFZlcmlmeS5wdWJLZXkuZGF0YS50b1N0cmluZygnaGV4JykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuX2Zyb21QdWJLZXlzLnB1c2goZmllbGQuY29udGVudHMuZGF0YS50b1N0cmluZygnaGV4JykpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGZyb21JbXBsZW1lbnRhdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogVHJhbnNhY3Rpb24ge1xuICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKHRoaXMuX2NvaW5Db25maWcpO1xuICAgIHRoaXMudmFsaWRhdGVSYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbik7XG4gICAgY29uc3Qgc3RhY2tzdHJhbnNhY3Rpb24gPSBkZXNlcmlhbGl6ZVRyYW5zYWN0aW9uKFxuICAgICAgQnVmZmVyUmVhZGVyLmZyb21CdWZmZXIoQnVmZmVyLmZyb20ocmVtb3ZlSGV4UHJlZml4KHJhd1RyYW5zYWN0aW9uKSwgJ2hleCcpKVxuICAgICk7XG4gICAgdHguc3R4VHJhbnNhY3Rpb24gPSBzdGFja3N0cmFuc2FjdGlvbjtcbiAgICB0aGlzLmluaXRCdWlsZGVyKHR4KTtcbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8vIHJlZ2lvbiBCYXNlIEJ1aWxkZXJcbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBhc3luYyBidWlsZEltcGxlbWVudGF0aW9uKCk6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgICBjb25zdCBpc011bHRpU2lnOiBib29sZWFuID0gdGhpcy5fZnJvbVB1YktleXMubGVuZ3RoID4gMTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbi5zdHhUcmFuc2FjdGlvbi5zZXRGZWUobmV3IEJpZ051bSh0aGlzLl9mZWUuZmVlKSk7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24uc3R4VHJhbnNhY3Rpb24uc2V0Tm9uY2UobmV3IEJpZ051bSh0aGlzLl9ub25jZSkpO1xuXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMuX2Zyb21QdWJLZXlzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgY29uc3QgcHViS2V5ID0gdGhpcy5fZnJvbVB1YktleXNbaW5kZXhdO1xuICAgICAgY29uc3Qgc2lnbmF0dXJlID0gdGhpcy5nZXRTaWduYXR1cmUocHViS2V5LCBpbmRleCk7XG4gICAgICBpZiAoc2lnbmF0dXJlKSB7XG4gICAgICAgIGF3YWl0IHRoaXMudHJhbnNhY3Rpb24uc2lnbldpdGhTaWduYXR1cmVzKHNpZ25hdHVyZSwgaXNNdWx0aVNpZyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBwcnZLZXkgPSB0aGlzLmdldFByaXZhdGVLZXkocHViS2V5LCBpbmRleCk7XG4gICAgICAgIGlmIChwcnZLZXkpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uLnNpZ24ocHJ2S2V5KTtcbiAgICAgICAgfSBlbHNlIGlmIChpc011bHRpU2lnKSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy50cmFuc2FjdGlvbi5hcHBlbmRPcmlnaW4ocHViS2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX3RyYW5zYWN0aW9uLmxvYWRJbnB1dHNBbmRPdXRwdXRzKCk7XG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTaWduYXR1cmUgPSAoXzogc3RyaW5nLCBpbmRleDogbnVtYmVyKTogU2lnbmF0dXJlRGF0YSB8IHVuZGVmaW5lZCA9PlxuICAgIHRoaXMuX3NpZ25hdHVyZXMuZmluZCgocykgPT4gcy5pbmRleCA9PT0gaW5kZXgpO1xuICBwcml2YXRlIGdldFByaXZhdGVLZXkgPSAocHViS2V5OiBzdHJpbmcsIF86IG51bWJlcik6IEtleVBhaXIgfCB1bmRlZmluZWQgPT5cbiAgICB0aGlzLl9tdWx0aVNpZ25lcktleVBhaXJzLmZpbmQoKGtwKSA9PiBrcC5nZXRLZXlzKHRydWUpLnB1YiA9PT0gcHViS2V5IHx8IGtwLmdldEtleXMoKS5wdWIgPT09IHB1YktleSk7XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBzaWduSW1wbGVtZW50YXRpb24oa2V5OiBCYXNlS2V5KTogVHJhbnNhY3Rpb24ge1xuICAgIHRoaXMuY2hlY2tEdXBsaWNhdGVkS2V5cyhrZXkpO1xuICAgIGxldCBwcnYgPSBrZXkua2V5O1xuICAgIGlmIChwcnYuc3RhcnRzV2l0aCgneHBydicpKSB7XG4gICAgICBjb25zdCByYXdQcnYgPSB4cHJ2VG9SYXdQcnYocHJ2KTtcbiAgICAgIHBydiA9IG5ldyBLZXlQYWlyKHsgcHJ2OiByYXdQcnYgfSkuZ2V0S2V5cyh0cnVlKS5wcnY7XG4gICAgfVxuICAgIGNvbnN0IHNpZ25lciA9IG5ldyBLZXlQYWlyKHsgcHJ2OiBwcnYgfSk7XG5cbiAgICAvLyBTaWduaW5nIHRoZSB0cmFuc2FjdGlvbiBpcyBhbiBvcGVyYXRpb24gdGhhdCByZWxpZXMgb24gYWxsIHRoZSBkYXRhIGJlaW5nIHNldCxcbiAgICAvLyBzbyB3ZSBzZXQgdGhlIHNvdXJjZSBoZXJlIGFuZCBsZWF2ZSB0aGUgYWN0dWFsIHNpZ25pbmcgZm9yIHRoZSBidWlsZCBzdGVwXG4gICAgdGhpcy5fbXVsdGlTaWduZXJLZXlQYWlycy5wdXNoKHNpZ25lcik7XG4gICAgY29uc3QgcHVibGljS2V5ID0gc2lnbmVyLmdldEtleXMoc2lnbmVyLmdldENvbXByZXNzZWQoKSkucHViO1xuICAgIGlmICghdGhpcy5fZnJvbVB1YktleXMuaW5jbHVkZXMocHVibGljS2V5KSkge1xuICAgICAgdGhpcy5fZnJvbVB1YktleXMucHVzaChwdWJsaWNLZXkpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uKCk6IFRyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb247XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIHNldCB0cmFuc2FjdGlvbih0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24pIHtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IHRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGF0IHRoZSBnaXZlbiBrZXkgaXMgbm90IGFscmVhZHkgaW4gdGhpcy5fbXVsdGlTaWduZXJLZXlQYWlyc1xuICAgKlxuICAgKiBAcGFyYW0ge0Jhc2VLZXl9IGtleSAtIFRoZSBrZXkgdG8gY2hlY2tcbiAgICovXG4gIHByaXZhdGUgY2hlY2tEdXBsaWNhdGVkS2V5cyhrZXk6IEJhc2VLZXkpIHtcbiAgICB0aGlzLl9tdWx0aVNpZ25lcktleVBhaXJzLmZvckVhY2goKF9zb3VyY2VLZXlQYWlyKSA9PiB7XG4gICAgICBpZiAoX3NvdXJjZUtleVBhaXIuZ2V0S2V5cygpLnBydiA9PT0ga2V5LmtleSkge1xuICAgICAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKCdSZXBlYXRlZCBzaWduOiAnICsga2V5LmtleSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSB0cmFuc2FjdGlvbiBmZWVzXG4gICAqXG4gICAqIEBwYXJhbSB7QmFzZUZlZX0gZmVlIFRoZSBtYXhpbXVtIGdhcyB0byBwYXlcbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9uQnVpbGRlcn0gVGhpcyB0cmFuc2FjdGlvbiBidWlsZGVyXG4gICAqL1xuICBmZWUoZmVlOiBCYXNlRmVlKTogdGhpcyB7XG4gICAgdGhpcy52YWxpZGF0ZVZhbHVlKG5ldyBCaWdOdW1iZXIoZmVlLmZlZSkpO1xuICAgIHRoaXMuX2ZlZSA9IGZlZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIG5vbmNlKG46IG51bWJlcik6IHRoaXMge1xuICAgIHRoaXMuX25vbmNlID0gbjtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGZyb21QdWJLZXkoc2VuZGVyUHViS2V5OiBzdHJpbmcgfCBzdHJpbmdbXSk6IHRoaXMge1xuICAgIGNvbnN0IHB1YktleXMgPSBzZW5kZXJQdWJLZXkgaW5zdGFuY2VvZiBBcnJheSA/IHNlbmRlclB1YktleSA6IFtzZW5kZXJQdWJLZXldO1xuICAgIHRoaXMuX2Zyb21QdWJLZXlzID0gW107XG4gICAgcHViS2V5cy5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIGlmIChpc1ZhbGlkUHVibGljS2V5KGtleSkpIHtcbiAgICAgICAgdGhpcy5fZnJvbVB1YktleXMucHVzaChrZXkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yKCdJbnZhbGlkIHB1YmxpYyBrZXknKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiAgU2V0IHRoZSBtZW1vXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZW1vXG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IFRoaXMgdHJhbnNhY3Rpb24gYnVpbGRlclxuICAgKi9cbiAgbWVtbyhtZW1vOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAoIWlzVmFsaWRNZW1vKG1lbW8pKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdNZW1vIGlzIHRvbyBsb25nJyk7XG4gICAgfVxuICAgIHRoaXMuX21lbW8gPSBtZW1vO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqICBTZXQgdGhlIG51bWJlciBvZiBzaWduYXR1cmVzIGZvciBtdWx0aS1zaWdcbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IG51bVNpZ25zXG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IFRoaXMgdHJhbnNhY3Rpb24gYnVpbGRlclxuICAgKi9cbiAgbnVtYmVyU2lnbmF0dXJlcyhudW1TaWduczogbnVtYmVyKTogdGhpcyB7XG4gICAgdGhpcy52YWxpZGF0ZVZhbHVlKG5ldyBCaWdOdW1iZXIobnVtU2lnbnMpKTtcbiAgICB0aGlzLl9udW1iZXJTaWduYXR1cmVzID0gbnVtU2lnbnM7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyByZWdpb24gVmFsaWRhdG9yc1xuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVBZGRyZXNzKGFkZHJlc3M6IEJhc2VBZGRyZXNzLCBhZGRyZXNzRm9ybWF0Pzogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCFpc1ZhbGlkQWRkcmVzcyhhZGRyZXNzLmFkZHJlc3MpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIGFkZHJlc3MgJyArIGFkZHJlc3MuYWRkcmVzcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlS2V5KGtleTogQmFzZUtleSk6IHZvaWQge1xuICAgIGNvbnN0IGtleVBhaXIgPSBuZXcgS2V5UGFpcih7IHBydjoga2V5LmtleSB9KTtcbiAgICBpZiAoIWtleVBhaXIuZ2V0S2V5cygpLnBydikge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBrZXknKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVSYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCFyYXdUcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdSYXcgdHJhbnNhY3Rpb24gaXMgZW1wdHknKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGRlc2VyaWFsaXplVHJhbnNhY3Rpb24oQnVmZmVyUmVhZGVyLmZyb21CdWZmZXIoQnVmZmVyLmZyb20ocmVtb3ZlSGV4UHJlZml4KHJhd1RyYW5zYWN0aW9uKSwgJ2hleCcpKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlVHJhbnNhY3Rpb25FcnJvcignVGhlcmUgd2FzIGFuIGVycm9yIHBhcnNpbmcgdGhlIHJhdyB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uPzogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICB0aGlzLnZhbGlkYXRlRmVlKCk7XG4gICAgdGhpcy52YWxpZGF0ZU5vbmNlKCk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVWYWx1ZSh2YWx1ZTogQmlnTnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHZhbHVlLmlzTGVzc1RoYW4oMCkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1ZhbHVlIGNhbm5vdCBiZSBsZXNzIHRoYW4gemVybycpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhhdCB0aGUgZmVlIGZpZWxkIGlzIGRlZmluZWRcbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVGZWUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2ZlZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiBtaXNzaW5nIGZlZScpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgdGhpcy52YWxpZGF0ZVZhbHVlKG5ldyBCaWdOdW1iZXIodGhpcy5fZmVlLmZlZSkpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgZmVlJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGF0IG5vbmNlIGlzIGRlZmluZWRcbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVOb25jZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fbm9uY2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogbWlzc2luZyBub25jZScpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgdGhpcy52YWxpZGF0ZVZhbHVlKG5ldyBCaWdOdW1iZXIodGhpcy5fbm9uY2UpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKGBJbnZhbGlkIG5vbmNlICR7dGhpcy5fbm9uY2V9YCk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -5,6 +5,7 @@ import { TransactionBuilder } from './transactionBuilder';
5
5
  import { Transaction } from './transaction';
6
6
  import { ContractBuilder } from './contractBuilder';
7
7
  import { SendmanyBuilder } from './sendmanyBuilder';
8
+ import { FungibleTokenTransferBuilder } from './fungibleTokenTransferBuilder';
8
9
  export declare class TransactionBuilderFactory extends BaseTransactionBuilderFactory {
9
10
  constructor(_coinConfig: Readonly<CoinConfig>);
10
11
  /** @inheritdoc */
@@ -16,6 +17,7 @@ export declare class TransactionBuilderFactory extends BaseTransactionBuilderFac
16
17
  getTransferBuilder(tx?: Transaction): TransferBuilder;
17
18
  getContractBuilder(tx?: Transaction): ContractBuilder;
18
19
  getSendmanyBuilder(tx?: Transaction): SendmanyBuilder;
20
+ getFungibleTokenTransferBuilder(tx?: Transaction): FungibleTokenTransferBuilder;
19
21
  /**
20
22
  * Initialize the builder with the given transaction
21
23
  *
@@ -1 +1 @@
1
- {"version":3,"file":"transactionBuilderFactory.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilderFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,EACL,6BAA6B,EAI9B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,qBAAa,yBAA0B,SAAQ,6BAA6B;gBAC9D,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,kBAAkB;IAClB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB;IAqBrC,OAAO,CAAC,gBAAgB;IASxB,kBAAkB;IAClB,8BAA8B,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,IAAI;IAItD,kBAAkB;IAClB,kBAAkB,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,eAAe;IAIrD,kBAAkB,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,eAAe;IAIrD,kBAAkB,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,eAAe;IAIrD;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAOhC,kBAAkB;IAClB,sBAAsB,CAAC,cAAc,EAAE,OAAO,GAAG,IAAI;CAQtD"}
1
+ {"version":3,"file":"transactionBuilderFactory.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilderFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,EACL,6BAA6B,EAI9B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAE9E,qBAAa,yBAA0B,SAAQ,6BAA6B;gBAC9D,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,kBAAkB;IAClB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB;IAwBrC,OAAO,CAAC,gBAAgB;IASxB,kBAAkB;IAClB,8BAA8B,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,IAAI;IAItD,kBAAkB;IAClB,kBAAkB,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,eAAe;IAIrD,kBAAkB,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,eAAe;IAIrD,kBAAkB,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,eAAe;IAIrD,+BAA+B,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,4BAA4B;IAI/E;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAOhC,kBAAkB;IAClB,sBAAsB,CAAC,cAAc,EAAE,OAAO,GAAG,IAAI;CAQtD"}