@bitgo/sdk-core 37.10.0 → 37.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts +1 -0
  2. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts.map +1 -1
  3. package/dist/src/bitgo/baseCoin/iBaseCoin.js +1 -1
  4. package/dist/src/bitgo/environments.js +2 -2
  5. package/dist/src/bitgo/internal/keycard.d.ts.map +1 -1
  6. package/dist/src/bitgo/internal/keycard.js +4 -5
  7. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts +9 -0
  8. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts.map +1 -1
  9. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.js +59 -1
  10. package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts +9 -0
  11. package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts.map +1 -1
  12. package/dist/src/bitgo/utils/tss/eddsa/eddsa.js +53 -1
  13. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts +1 -1
  14. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts.map +1 -1
  15. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.js +7 -7
  16. package/dist/src/bitgo/wallet/iWallets.d.ts +96 -2
  17. package/dist/src/bitgo/wallet/iWallets.d.ts.map +1 -1
  18. package/dist/src/bitgo/wallet/iWallets.js +1 -1
  19. package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
  20. package/dist/src/bitgo/wallet/wallet.js +4 -3
  21. package/dist/src/bitgo/wallet/wallets.d.ts +5 -0
  22. package/dist/src/bitgo/wallet/wallets.d.ts.map +1 -1
  23. package/dist/src/bitgo/wallet/wallets.js +100 -4
  24. package/dist/src/index.d.ts +1 -0
  25. package/dist/src/index.d.ts.map +1 -1
  26. package/dist/src/index.js +1 -1
  27. package/dist/test/unit/bitgo/utils/tss/ecdsa/ecdsaMPCv2.js +120 -1
  28. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaExternalSigner.d.ts +2 -0
  29. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaExternalSigner.d.ts.map +1 -0
  30. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaExternalSigner.js +158 -0
  31. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaMPCv2.js +22 -22
  32. package/dist/test/unit/bitgo/wallet/walletsExternalSigner.js +364 -14
  33. package/dist/tsconfig.tsbuildinfo +1 -1
  34. package/package.json +4 -4
@@ -98,14 +98,13 @@ function buildKeycardQrData(options, encryptedWalletPasscode) {
98
98
  data: backupKeychain.encryptedPrv,
99
99
  },
100
100
  bitgo: {
101
- title: 'C: BitGo Public Key',
102
- desc: 'This is the public part of the key that BitGo will use to ' +
103
- 'co-sign transactions\r\nwith you on your wallet.',
101
+ title: 'C: BitGo Key',
102
+ desc: 'This is the public part of the key held by BitGo.',
104
103
  data: bitgoKeychain.pub,
105
104
  },
106
105
  passcode: {
107
106
  title: 'D: Encrypted Wallet Password',
108
- desc: 'This is the wallet password, encrypted client-side ' + 'with a key held by\r\nBitGo.',
107
+ desc: 'This is the wallet password, encrypted client-side ' + 'with a key held by\r\nBitGo.',
109
108
  data: encryptedWalletPasscode,
110
109
  },
111
110
  };
@@ -362,4 +361,4 @@ async function drawKeycardAsync(options) {
362
361
  });
363
362
  return renderKeycardPdf({ jsPDF, QRCode, activationCode, walletLabel, coinName }, keyData);
364
363
  }
365
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Y2FyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaXRnby9pbnRlcm5hbC9rZXljYXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7QUE2Wkgsa0NBK0JDO0FBU0QsNENBa0NDO0FBcmVEO0dBQ0c7QUFDSCxtQ0FBcUM7QUFJckM7OztHQUdHO0FBQ0gsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLElBQVksRUFBRSxFQUFFO0lBQ3pDLE9BQU87UUFDTDtZQUNFLENBQUMsRUFBRSxzQkFBc0I7WUFDekIsQ0FBQyxFQUFFO2dCQUNELCtFQUErRSxJQUFJLEdBQUc7Z0JBQ3RGLDJEQUEyRCxHQUFHLGdDQUFnQztnQkFDOUYsdUZBQXVGO2FBQ3hGO1NBQ0Y7UUFDRDtZQUNFLENBQUMsRUFBRSwyQkFBMkI7WUFDOUIsQ0FBQyxFQUFFO2dCQUNELCtGQUErRjtnQkFDL0YsbUdBQW1HO2dCQUNuRyxnREFBZ0Q7Z0JBQ2hELEVBQUU7Z0JBQ0YsNkZBQTZGO2dCQUM3RiwrRkFBK0Y7Z0JBQy9GLHNEQUFzRDthQUN2RDtTQUNGO1FBQ0Q7WUFDRSxDQUFDLEVBQUUsZ0NBQWdDO1lBQ25DLENBQUMsRUFBRTtnQkFDRCxnRUFBZ0UsSUFBSSwyQkFBMkI7Z0JBQy9GLCtGQUErRjtnQkFDL0YsdUNBQXVDO2dCQUN2QywwQ0FBMEM7YUFDM0M7U0FDRjtRQUNEO1lBQ0UsQ0FBQyxFQUFFLGtDQUFrQztZQUNyQyxDQUFDLEVBQUU7Z0JBQ0Qsa0dBQWtHO2dCQUNsRyx1RkFBdUY7Z0JBQ3ZGLHNGQUFzRjtnQkFDdEYsNkZBQTZGO2dCQUM3RiwrQ0FBK0M7YUFDaEQ7U0FDRjtRQUNEO1lBQ0UsQ0FBQyxFQUFFLDhDQUE4QztZQUNqRCxDQUFDLEVBQUU7Z0JBQ0Qsd0ZBQXdGO2dCQUN4Riw2RkFBNkY7YUFDOUY7U0FDRjtRQUNEO1lBQ0UsQ0FBQyxFQUFFLDREQUE0RDtZQUMvRCxDQUFDLEVBQUU7Z0JBQ0Qsb0ZBQW9GO2dCQUNwRiw0REFBNEQsSUFBSSxpQ0FBaUM7Z0JBQ2pHLDZGQUE2RjtnQkFDN0YsaUNBQWlDO2FBQ2xDO1NBQ0Y7UUFDRDtZQUNFLENBQUMsRUFBRSxrREFBa0Q7WUFDckQsQ0FBQyxFQUFFO2dCQUNELDZGQUE2RjtnQkFDN0YsNkZBQTZGO2dCQUM3RiwyQ0FBMkMsSUFBSSw4Q0FBOEM7Z0JBQzdGLDJFQUEyRTthQUM1RTtTQUNGO0tBQ0YsQ0FBQztBQUNKLENBQUMsQ0FBQztBQTRCRjs7R0FFRztBQUNILFNBQVMsa0JBQWtCLENBQUMsT0FBa0MsRUFBRSx1QkFBMkM7SUFDekcsTUFBTSxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBRXpHLG1CQUFtQjtJQUNuQixNQUFNLE1BQU0sR0FBUTtRQUNsQixJQUFJLEVBQUU7WUFDSixLQUFLLEVBQUUsYUFBYTtZQUNwQixJQUFJLEVBQUUseURBQXlEO1lBQy9ELElBQUksRUFBRSxZQUFZLENBQUMsWUFBWTtTQUNoQztRQUNELE1BQU0sRUFBRTtZQUNOLEtBQUssRUFBRSxlQUFlO1lBQ3RCLElBQUksRUFBRSxnRUFBZ0U7WUFDdEUsSUFBSSxFQUFFLGNBQWMsQ0FBQyxZQUFZO1NBQ2xDO1FBQ0QsS0FBSyxFQUFFO1lBQ0wsS0FBSyxFQUFFLHFCQUFxQjtZQUM1QixJQUFJLEVBQ0YsNERBQTREO2dCQUM1RCxrREFBa0Q7WUFDcEQsSUFBSSxFQUFFLGFBQWEsQ0FBQyxHQUFHO1NBQ3hCO1FBQ0QsUUFBUSxFQUFFO1lBQ1IsS0FBSyxFQUFFLDhCQUE4QjtZQUNyQyxJQUFJLEVBQUUsc0RBQXNELEdBQUcsOEJBQThCO1lBQzdGLElBQUksRUFBRSx1QkFBdUI7U0FDOUI7S0FDRixDQUFDO0lBRUYsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUNoQixNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUM7SUFDbEMsQ0FBQztJQUVELElBQUksV0FBVyxFQUFFLENBQUM7UUFDaEIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsV0FBVyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxJQUFJLElBQUEsb0JBQVcsRUFBQyxZQUFZLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztRQUMzQyxzREFBc0Q7UUFDdEQsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsc0JBQXNCLENBQUM7UUFDM0MsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsc0RBQXNELENBQUM7UUFDMUUsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQztRQUVwQyw4REFBOEQ7UUFDOUQsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7U0FBTSxJQUFJLElBQUEsb0JBQVcsRUFBQyx1QkFBdUIsQ0FBQyxFQUFFLENBQUM7UUFDaEQsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFJLENBQUMsSUFBQSxvQkFBVyxFQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQzFDLE1BQU0scUJBQXFCLEdBQUcsY0FBYyxDQUFDLFFBQVEsQ0FBQztRQUN0RCwyQkFBMkI7UUFDM0IsTUFBTSxDQUFDLE1BQU0sR0FBRztZQUNkLEtBQUssRUFBRSxlQUFlO1lBQ3RCLElBQUksRUFDRixrQ0FBa0MscUJBQXFCLEVBQUU7Z0JBQ3pELFFBQVEsYUFBYSwrQ0FBK0MscUJBQXFCLEVBQUU7Z0JBQzNGLHNEQUFzRDtZQUN4RCxJQUFJLEVBQUUsY0FBYyxDQUFDLEdBQUc7U0FDekIsQ0FBQztJQUNKLENBQUM7U0FBTSxJQUFJLElBQUEsb0JBQVcsRUFBQyxjQUFjLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztRQUNwRCx5QkFBeUI7UUFDekIsTUFBTSxDQUFDLE1BQU0sR0FBRztZQUNkLEtBQUssRUFBRSxlQUFlO1lBQ3RCLElBQUksRUFBRSxvRUFBb0U7WUFDMUUsSUFBSSxFQUFFLGNBQWMsQ0FBQyxHQUFHO1NBQ3pCLENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFTLFVBQVUsQ0FBQyxPQUEwQjtJQUM1QyxNQUFNLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsc0JBQXNCLEVBQUUsR0FBRyxTQUFTLEVBQUUsR0FBRyxPQUFPLENBQUM7SUFFOUYsMkZBQTJGO0lBQzNGLDREQUE0RDtJQUM1RCxJQUFJLGNBQWMsQ0FBQyxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7UUFDckMsY0FBYyxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUM7WUFDcEMsS0FBSyxFQUFFLGNBQWMsQ0FBQyxHQUFHO1lBQ3pCLFFBQVEsRUFBRSxVQUFVO1NBQ3JCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCwyRkFBMkY7SUFDM0YsSUFBSSx1QkFBMkMsQ0FBQztJQUNoRCxJQUFJLFVBQVUsSUFBSSxzQkFBc0IsRUFBRSxDQUFDO1FBQ3pDLHVCQUF1QixHQUFHLE9BQU8sQ0FBQztZQUNoQyxLQUFLLEVBQUUsVUFBVTtZQUNqQixRQUFRLEVBQUUsc0JBQXNCO1NBQ2pDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxPQUFPLGtCQUFrQixDQUFDLEVBQUUsR0FBRyxTQUFTLEVBQUUsY0FBYyxFQUFFLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztBQUN2RixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILEtBQUssVUFBVSxlQUFlLENBQUMsT0FBK0I7SUFDNUQsTUFBTSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLHNCQUFzQixFQUFFLGlCQUFpQixFQUFFLEdBQUcsU0FBUyxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBRWpILElBQUksY0FBYyxDQUFDLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUNyQyxjQUFjLENBQUMsWUFBWSxHQUFHLE1BQU0sT0FBTyxDQUFDO1lBQzFDLEtBQUssRUFBRSxjQUFjLENBQUMsR0FBRztZQUN6QixRQUFRLEVBQUUsVUFBVTtZQUNwQixpQkFBaUI7U0FDbEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELElBQUksdUJBQTJDLENBQUM7SUFDaEQsSUFBSSxVQUFVLElBQUksc0JBQXNCLEVBQUUsQ0FBQztRQUN6Qyx1QkFBdUIsR0FBRyxNQUFNLE9BQU8sQ0FBQztZQUN0QyxLQUFLLEVBQUUsVUFBVTtZQUNqQixRQUFRLEVBQUUsc0JBQXNCO1lBQ2hDLGlCQUFpQjtTQUNsQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxrQkFBa0IsQ0FBQyxFQUFFLEdBQUcsU0FBUyxFQUFFLGNBQWMsRUFBRSxFQUFFLHVCQUF1QixDQUFDLENBQUM7QUFDdkYsQ0FBQztBQW1CRDs7R0FFRztBQUNILFNBQVMsZ0JBQWdCLENBQUMsT0FBaUMsRUFBRSxPQUFZO0lBQ3ZFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBRXpFLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztJQUVsQixNQUFNLElBQUksR0FBRztRQUNYLE1BQU0sRUFBRSxFQUFFO1FBQ1YsU0FBUyxFQUFFLEVBQUU7UUFDYixJQUFJLEVBQUUsRUFBRTtLQUNULENBQUM7SUFFRixNQUFNLEtBQUssR0FBRztRQUNaLEtBQUssRUFBRSxTQUFTO1FBQ2hCLFFBQVEsRUFBRSxTQUFTO1FBQ25CLElBQUksRUFBRSxTQUFTO1FBQ2YsR0FBRyxFQUFFLFNBQVM7S0FDZixDQUFDO0lBRUYsbUJBQW1CO0lBQ25CLE1BQU0sS0FBSyxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDdkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRVYseURBQXlEO0lBQ3pELE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQy9CLE1BQU0sUUFBUSxHQUFHLENBQUMsTUFBTSxFQUFFLEVBQUU7UUFDMUIsQ0FBQyxJQUFJLE1BQU0sQ0FBQztJQUNkLENBQUMsQ0FBQztJQUVGLE1BQU0sR0FBRyxHQUFHLElBQUksS0FBSyxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDbEQsR0FBRyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUV6Qix1REFBdUQ7SUFDdkQsNkRBQTZEO0lBQzdELFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUViLGtGQUFrRjtJQUNsRixnRkFBZ0Y7SUFFaEYsa0JBQWtCO0lBQ2xCLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNaLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEQsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFMUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2RCxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDYixHQUFHLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM3QyxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RELEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUVsRCxZQUFZO0lBQ1osU0FBUztJQUNULFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqQixHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BELEdBQUcsQ0FBQyxJQUFJLENBQ04sY0FBYyxJQUFJLElBQUksRUFBRSxDQUFDLFlBQVksRUFBRSxPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxxQkFBcUIsV0FBVyxFQUFFLEVBQ3hHLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxDQUFDLENBQ0YsQ0FBQztJQUNGLE9BQU87SUFDUCxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDYixHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFELEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNsQyxVQUFVO0lBQ1YsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2IsR0FBRyxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2hDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLEdBQUcsQ0FBQyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFFbEQsa0JBQWtCO0lBQ2xCLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNiLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkQsR0FBRyxDQUFDLElBQUksQ0FBQyw0RUFBNEUsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFcEcsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2IsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDO0lBRW5CLDZDQUE2QztJQUM3QyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLE9BQU87UUFDNUMsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzdCLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQztRQUVmLCtDQUErQztRQUMvQyxNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFekQseUNBQXlDO1FBQ3pDLElBQUksTUFBTSxFQUFFLENBQUM7WUFDWCxNQUFNLE9BQU8sR0FBRyxJQUFJLE1BQU0sQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUN0RixHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNwRCxDQUFDO1FBRUQsR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxRCxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDYixHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2pDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNiLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDeEQsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNoQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDYixHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDL0IsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQy9CLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNiLE1BQU0sVUFBVSxHQUFHLEVBQUUsR0FBRyxHQUFHLEdBQUcsUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUM1QyxHQUFHLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hFLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztRQUN4RCxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFN0IsOENBQThDO1FBQzlDLElBQUksR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2QsTUFBTSxJQUFJLEdBQUcsVUFBVSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUM7WUFDcEMsV0FBVztZQUNYLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNiLEdBQUcsQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLGtCQUFrQjtZQUNuRCxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO1lBQ3BDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBRXZDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7UUFFRCxHQUFHLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3pCLDRGQUE0RjtRQUM1RixRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLENBQUMsQ0FBQyxDQUFDO0lBRUgsOEJBQThCO0lBQzlCLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUVkLGlCQUFpQjtJQUNqQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ04sUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2IsR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2RCxHQUFHLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUUxQyxNQUFNLFNBQVMsR0FBRyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUU5Qyx5Q0FBeUM7SUFDekMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2IsU0FBUyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7UUFDM0IsR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxRCxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzFCLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNiLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDeEQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxJQUFJO1lBQ3hCLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMzQixRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztRQUNILFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNmLENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLFdBQVcsQ0FBQyxPQUEyQjtJQUNyRCxNQUFNLEVBQ0osT0FBTyxFQUNQLFVBQVUsRUFDVixzQkFBc0IsRUFDdEIsV0FBVyxFQUNYLFdBQVcsRUFDWCxZQUFZLEVBQ1osYUFBYSxFQUNiLGNBQWMsRUFDZCxhQUFhLEVBQ2IsS0FBSyxFQUNMLE1BQU0sRUFDTixjQUFjLEVBQ2QsV0FBVyxFQUNYLFFBQVEsR0FDVCxHQUFHLE9BQU8sQ0FBQztJQUVaLE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQztRQUN6QixPQUFPO1FBQ1AsYUFBYTtRQUNiLFVBQVU7UUFDVixzQkFBc0I7UUFDdEIsV0FBVztRQUNYLFdBQVc7UUFDWCxZQUFZO1FBQ1osYUFBYTtRQUNiLGNBQWM7S0FDZixDQUFDLENBQUM7SUFFSCxPQUFPLGdCQUFnQixDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQzdGLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSSxLQUFLLFVBQVUsZ0JBQWdCLENBQUMsT0FBZ0M7SUFDckUsTUFBTSxFQUNKLE9BQU8sRUFDUCxVQUFVLEVBQ1Ysc0JBQXNCLEVBQ3RCLFdBQVcsRUFDWCxXQUFXLEVBQ1gsWUFBWSxFQUNaLGFBQWEsRUFDYixjQUFjLEVBQ2QsYUFBYSxFQUNiLEtBQUssRUFDTCxNQUFNLEVBQ04sY0FBYyxFQUNkLFdBQVcsRUFDWCxRQUFRLEVBQ1IsaUJBQWlCLEdBQ2xCLEdBQUcsT0FBTyxDQUFDO0lBRVosNkNBQTZDO0lBQzdDLE1BQU0sT0FBTyxHQUFHLE1BQU0sZUFBZSxDQUFDO1FBQ3BDLE9BQU87UUFDUCxhQUFhO1FBQ2IsVUFBVTtRQUNWLHNCQUFzQjtRQUN0QixXQUFXO1FBQ1gsV0FBVztRQUNYLFlBQVk7UUFDWixhQUFhO1FBQ2IsY0FBYztRQUNkLGlCQUFpQjtLQUNsQixDQUFDLENBQUM7SUFFSCxPQUFPLGdCQUFnQixDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQzdGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBoaWRkZW5cbiAqL1xuXG4vKipcbiAqL1xuaW1wb3J0IHsgaXNVbmRlZmluZWQgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgS2V5Y2hhaW4gfSBmcm9tICcuLi9rZXljaGFpbic7XG5pbXBvcnQgeyBFbmNyeXB0Rm4sIEVuY3J5cHRGbkFzeW5jLCBFbmNyeXB0aW9uVmVyc2lvbiB9IGZyb20gJy4uLy4uL2FwaSc7XG5cbi8qKlxuICogUmV0dXJuIHRoZSBsaXN0IG9mIHF1ZXN0aW9ucyB0aGF0IHdpbGwgYXBwZWFyIG9uIHRoZSBzZWNvbmQgcGFnZSBvZiB0aGUga2V5Y2FyZFxuICogQHBhcmFtIGNvaW4gbmFtZSBvZiB0aGUgY29pblxuICovXG5jb25zdCBnZW5lcmF0ZVF1ZXN0aW9ucyA9IChjb2luOiBzdHJpbmcpID0+IHtcbiAgcmV0dXJuIFtcbiAgICB7XG4gICAgICBxOiAnV2hhdCBpcyB0aGUgS2V5Q2FyZD8nLFxuICAgICAgYTogW1xuICAgICAgICBgVGhlIEtleUNhcmQgY29udGFpbnMgaW1wb3J0YW50IGluZm9ybWF0aW9uIHdoaWNoIGNhbiBiZSB1c2VkIHRvIHJlY292ZXIgdGhlICR7Y29pbn0gYCxcbiAgICAgICAgJ2Zyb20geW91ciB3YWxsZXQgaW4gc2V2ZXJhbCBzaXR1YXRpb25zLiBFYWNoIEJpdEdvIHdhbGxldCcgKyAnIGhhcyBpdHMgb3duLCB1bmlxdWUgS2V5Q2FyZC4gJyxcbiAgICAgICAgJ0lmIHlvdSBoYXZlIGNyZWF0ZWQgbXVsdGlwbGUgd2FsbGV0cywgeW91IHNob3VsZCByZXRhaW4gdGhlIEtleUNhcmQgZm9yIGVhY2ggb2YgdGhlbS4nLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHE6ICdXaGF0IHNob3VsZCBJIGRvIHdpdGggaXQ/JyxcbiAgICAgIGE6IFtcbiAgICAgICAgJ1lvdSBzaG91bGQgcHJpbnQgdGhlIEtleUNhcmQgYW5kL29yIHNhdmUgdGhlIFBERiB0byBhbiBvZmZsaW5lIHN0b3JhZ2UgZGV2aWNlLiBUaGUgcHJpbnQtb3V0ICcsXG4gICAgICAgIFwib3IgVVNCIHN0aWNrIHNob3VsZCBiZSBrZXB0IGluIGEgc2FmZSBwbGFjZSwgc3VjaCBhcyBhIGJhbmsgdmF1bHQgb3IgaG9tZSBzYWZlLiBJdCdzIGEgZ29vZCBpZGVhIFwiLFxuICAgICAgICAndG8ga2VlcCBhIHNlY29uZCBjb3B5IGluIGEgZGlmZmVyZW50IGxvY2F0aW9uLicsXG4gICAgICAgICcnLFxuICAgICAgICBcIkltcG9ydGFudDogSWYgeW91IGhhdmVuJ3QgcHJvdmlkZWQgYW4gZXh0ZXJuYWwgYmFja3VwIGtleSwgdGhlbiB0aGUgb3JpZ2luYWwgUERGIHNob3VsZCBiZSBcIixcbiAgICAgICAgJ2RlbGV0ZWQgZnJvbSBhbnkgbWFjaGluZSB3aGVyZSB0aGUgd2FsbGV0IHdpbGwgYmUgcmVndWxhcmx5IGFjY2Vzc2VkIHRvIHByZXZlbnQgbWFsd2FyZSBmcm9tICcsXG4gICAgICAgICdjYXB0dXJpbmcgYm90aCB0aGUgS2V5Q2FyZCBhbmQgeW91ciB3YWxsZXQgcGFzc2NvZGUuJyxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBxOiAnV2hhdCBzaG91bGQgSSBkbyBpZiBJIGxvc2UgaXQ/JyxcbiAgICAgIGE6IFtcbiAgICAgICAgYElmIHlvdSBoYXZlIGxvc3Qgb3IgZGFtYWdlZCBhbGwgY29waWVzIG9mIHlvdXIgS2V5Q2FyZCwgeW91ciAke2NvaW59IGlzIHN0aWxsIHNhZmUsIGJ1dCB0aGlzIGAsXG4gICAgICAgICd3YWxsZXQgc2hvdWxkIGJlIGNvbnNpZGVyZWQgYXQgcmlzayBmb3IgbG9zcy4gQXMgc29vbiBhcyBpcyBjb252ZW5pZW50LCB5b3Ugc2hvdWxkIHVzZSBCaXRHbyAnLFxuICAgICAgICAndG8gZW1wdHkgdGhlIHdhbGxldCBpbnRvIGEgbmV3IHdhbGxldCcsXG4gICAgICAgICcsIGFuZCBkaXNjb250aW51ZSB1c2Ugb2YgdGhlIG9sZCB3YWxsZXQuJyxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBxOiAnV2hhdCBpZiBzb21lb25lIHNlZXMgbXkgS2V5Q2FyZD8nLFxuICAgICAgYTogW1xuICAgICAgICBcIkRvbid0IHBhbmljISBBbGwgc2Vuc2l0aXZlIGluZm9ybWF0aW9uIG9uIHRoZSBLZXlDYXJkIGlzIGVuY3J5cHRlZCB3aXRoIHlvdXIgcGFzc2NvZGUsIG9yIHdpdGggYVwiLFxuICAgICAgICAna2V5IHdoaWNoIG9ubHkgQml0R28gaGFzLiBCdXQsIGluIGdlbmVyYWwsIHlvdSBzaG91bGQgbWFrZSBiZXN0IGVmZm9ydHMgdG8ga2VlcCB5b3VyICcsXG4gICAgICAgICdLZXlDYXJkIHByaXZhdGUuIElmIHlvdXIgS2V5Q2FyZCBkb2VzIGdldCBleHBvc2VkIG9yIGNvcGllZCBpbiBhIHdheSB0aGF0IG1ha2VzIHlvdSAnLFxuICAgICAgICAndW5jb21mb3J0YWJsZSwgdGhlIGJlc3QgY291cnNlIG9mIGFjdGlvbiBpcyB0byBlbXB0eSB0aGUgY29ycmVzcG9uZGluZyB3YWxsZXQgaW50byBhbm90aGVyICcsXG4gICAgICAgICd3YWxsZXQgYW5kIGRpc2NvbnRpbnVlIHVzZSBvZiB0aGUgb2xkIHdhbGxldC4nLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHE6ICdXaGF0IGlmIEkgZm9yZ2V0IG9yIGxvc2UgbXkgd2FsbGV0IHBhc3N3b3JkPycsXG4gICAgICBhOiBbXG4gICAgICAgICdCaXRHbyBjYW4gdXNlIHRoZSBpbmZvcm1hdGlvbiBpbiBRUiBDb2RlIEQgdG8gaGVscCB5b3UgcmVjb3ZlciBhY2Nlc3MgdG8geW91ciB3YWxsZXQuICcsXG4gICAgICAgICdXaXRob3V0IHRoZSBLZXlDYXJkLCBCaXRHbyBpcyBub3QgYWJsZSB0byByZWNvdmVyIGZ1bmRzIGZyb20gYSB3YWxsZXQgd2l0aCBhIGxvc3QgcGFzc3dvcmQuJyxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBxOiAnV2hhdCBpZiBCaXRHbyBiZWNvbWVzIGluYWNjZXNzaWJsZSBmb3IgYW4gZXh0ZW5kZWQgcGVyaW9kPycsXG4gICAgICBhOiBbXG4gICAgICAgICdZb3VyIEtleUNhcmQgYW5kIHdhbGxldCBwYXNzY29kZSBjYW4gYmUgdXNlZCB0b2dldGhlciB3aXRoIEJpdEdv4oCZcyBwdWJsaXNoZWQgb3BlbiAnLFxuICAgICAgICBgc291cmNlIHRvb2xzIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9iaXRnbyB0byByZWNvdmVyIHlvdXIgJHtjb2lufS4gTm90ZTogWW91IHNob3VsZCBuZXZlciBlbnRlciBgLFxuICAgICAgICAnaW5mb3JtYXRpb24gZnJvbSB5b3VyIEtleUNhcmQgaW50byB0b29scyBvdGhlciB0aGFuIHRoZSB0b29scyBCaXRHbyBoYXMgcHVibGlzaGVkLCBvciB5b3VyICcsXG4gICAgICAgICdmdW5kcyBtYXkgYmUgYXQgcmlzayBmb3IgdGhlZnQuJyxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBxOiAnU2hvdWxkIEkgd3JpdGUgbXkgd2FsbGV0IHBhc3N3b3JkIG9uIG15IEtleUNhcmQ/JyxcbiAgICAgIGE6IFtcbiAgICAgICAgJ05vISBCaXRHb+KAmXMgbXVsdGktc2lnbmF0dXJlIGFwcHJvYWNoIHRvIHNlY3VyaXR5IGRlcGVuZHMgb24gdGhlcmUgbm90IGJlaW5nIGEgc2luZ2xlIHBvaW50ICcsXG4gICAgICAgICdvZiBhdHRhY2suIEJ1dCBpZiB5b3VyIHdhbGxldCBwYXNzd29yZCBpcyBvbiB5b3VyIEtleUNhcmQsIHRoZW4gYW55b25lIHdobyBnYWlucyBhY2Nlc3MgdG8gJyxcbiAgICAgICAgYHlvdXIgS2V5Q2FyZCB3aWxsIGJlIGFibGUgdG8gc3RlYWwgeW91ciAke2NvaW59LiBXZSByZWNvbW1lbmQga2VlcGluZyB5b3VyIHdhbGxldCBwYXNzd29yZCBgLFxuICAgICAgICAnc2FmZSBpbiBhIHNlY3VyZSBwYXNzd29yZCBtYW5hZ2VyIHN1Y2ggYXMgTGFzdFBhc3MsIDFQYXNzd29yZCBvciBLZWVQYXNzLicsXG4gICAgICBdLFxuICAgIH0sXG4gIF07XG59O1xuXG5pbnRlcmZhY2UgR2V0S2V5RGF0YU9wdGlvbnMge1xuICBlbmNyeXB0OiBFbmNyeXB0Rm47XG4gIHVzZXJLZXljaGFpbjogS2V5Y2hhaW47XG4gIGJpdGdvS2V5Y2hhaW46IEtleWNoYWluO1xuICBiYWNrdXBLZXljaGFpbjogS2V5Y2hhaW47XG4gIGNvaW5TaG9ydE5hbWU6IHN0cmluZztcbiAgcGFzc3BocmFzZT86IHN0cmluZztcbiAgcGFzc2NvZGVFbmNyeXB0aW9uQ29kZT86IHN0cmluZztcbiAgd2FsbGV0S2V5SUQ/OiBzdHJpbmc7XG4gIGJhY2t1cEtleUlEPzogc3RyaW5nO1xufVxuXG50eXBlIEdldEtleURhdGFBc3luY09wdGlvbnMgPSBPbWl0PEdldEtleURhdGFPcHRpb25zLCAnZW5jcnlwdCc+ICYge1xuICBlbmNyeXB0OiBFbmNyeXB0Rm5Bc3luYztcbiAgZW5jcnlwdGlvblZlcnNpb24/OiBFbmNyeXB0aW9uVmVyc2lvbjtcbn07XG5cbmludGVyZmFjZSBCdWlsZEtleWNhcmRRckRhdGFPcHRpb25zIHtcbiAgdXNlcktleWNoYWluOiBLZXljaGFpbjtcbiAgYml0Z29LZXljaGFpbjogS2V5Y2hhaW47XG4gIGJhY2t1cEtleWNoYWluOiBLZXljaGFpbjtcbiAgY29pblNob3J0TmFtZTogc3RyaW5nO1xuICB3YWxsZXRLZXlJRD86IHN0cmluZztcbiAgYmFja3VwS2V5SUQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQnVpbGQgUVIgY29kZSBwYXlsb2FkIGZvciBlYWNoIGtleWNhcmQgYm94LiBEb2VzIG5vdCBwZXJmb3JtIGVuY3J5cHRpb24uXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkS2V5Y2FyZFFyRGF0YShvcHRpb25zOiBCdWlsZEtleWNhcmRRckRhdGFPcHRpb25zLCBlbmNyeXB0ZWRXYWxsZXRQYXNzY29kZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogYW55IHtcbiAgY29uc3QgeyB1c2VyS2V5Y2hhaW4sIGJpdGdvS2V5Y2hhaW4sIGJhY2t1cEtleWNoYWluLCBjb2luU2hvcnROYW1lLCB3YWxsZXRLZXlJRCwgYmFja3VwS2V5SUQgfSA9IG9wdGlvbnM7XG5cbiAgLy8gUERGIFFSIENvZGUgZGF0YVxuICBjb25zdCBxckRhdGE6IGFueSA9IHtcbiAgICB1c2VyOiB7XG4gICAgICB0aXRsZTogJ0E6IFVzZXIgS2V5JyxcbiAgICAgIGRlc2M6ICdUaGlzIGlzIHlvdXIgcHJpdmF0ZSBrZXksIGVuY3J5cHRlZCB3aXRoIHlvdXIgcGFzc2NvZGUuJyxcbiAgICAgIGRhdGE6IHVzZXJLZXljaGFpbi5lbmNyeXB0ZWRQcnYsXG4gICAgfSxcbiAgICBiYWNrdXA6IHtcbiAgICAgIHRpdGxlOiAnQjogQmFja3VwIEtleScsXG4gICAgICBkZXNjOiAnVGhpcyBpcyB5b3VyIGJhY2t1cCBwcml2YXRlIGtleSwgZW5jcnlwdGVkIHdpdGggeW91ciBwYXNzY29kZS4nLFxuICAgICAgZGF0YTogYmFja3VwS2V5Y2hhaW4uZW5jcnlwdGVkUHJ2LFxuICAgIH0sXG4gICAgYml0Z286IHtcbiAgICAgIHRpdGxlOiAnQzogQml0R28gUHVibGljIEtleScsXG4gICAgICBkZXNjOlxuICAgICAgICAnVGhpcyBpcyB0aGUgcHVibGljIHBhcnQgb2YgdGhlIGtleSB0aGF0IEJpdEdvIHdpbGwgdXNlIHRvICcgK1xuICAgICAgICAnY28tc2lnbiB0cmFuc2FjdGlvbnNcXHJcXG53aXRoIHlvdSBvbiB5b3VyIHdhbGxldC4nLFxuICAgICAgZGF0YTogYml0Z29LZXljaGFpbi5wdWIsXG4gICAgfSxcbiAgICBwYXNzY29kZToge1xuICAgICAgdGl0bGU6ICdEOiBFbmNyeXB0ZWQgV2FsbGV0IFBhc3N3b3JkJyxcbiAgICAgIGRlc2M6ICdUaGlzIGlzIHRoZSB3YWxsZXQgIHBhc3N3b3JkLCBlbmNyeXB0ZWQgY2xpZW50LXNpZGUgJyArICd3aXRoIGEga2V5IGhlbGQgYnlcXHJcXG5CaXRHby4nLFxuICAgICAgZGF0YTogZW5jcnlwdGVkV2FsbGV0UGFzc2NvZGUsXG4gICAgfSxcbiAgfTtcblxuICBpZiAod2FsbGV0S2V5SUQpIHtcbiAgICBxckRhdGEudXNlci5rZXlJRCA9IHdhbGxldEtleUlEO1xuICB9XG5cbiAgaWYgKGJhY2t1cEtleUlEKSB7XG4gICAgcXJEYXRhLmJhY2t1cC5rZXlJRCA9IGJhY2t1cEtleUlEO1xuICB9XG5cbiAgaWYgKGlzVW5kZWZpbmVkKHVzZXJLZXljaGFpbi5lbmNyeXB0ZWRQcnYpKSB7XG4gICAgLy8gVXNlciBwcm92aWRlZCB0aGVpciBvd24ga2V5IC0gdGhpcyBpcyBhIGNvbGQgd2FsbGV0XG4gICAgcXJEYXRhLnVzZXIudGl0bGUgPSAnQTogUHJvdmlkZWQgVXNlciBLZXknO1xuICAgIHFyRGF0YS51c2VyLmRlc2MgPSAnVGhpcyBpcyB0aGUgcHVibGljIGtleSB5b3UgcHJvdmlkZWQgZm9yIHlvdXIgd2FsbGV0Lic7XG4gICAgcXJEYXRhLnVzZXIuZGF0YSA9IHVzZXJLZXljaGFpbi5wdWI7XG5cbiAgICAvLyBUaGUgdXNlciBwcm92aWRlZCB0aGVpciBvd24gcHVibGljIGtleSwgd2UgY2FuIHJlbW92ZSBib3ggRFxuICAgIGRlbGV0ZSBxckRhdGEucGFzc2NvZGU7XG4gIH0gZWxzZSBpZiAoaXNVbmRlZmluZWQoZW5jcnlwdGVkV2FsbGV0UGFzc2NvZGUpKSB7XG4gICAgZGVsZXRlIHFyRGF0YS5wYXNzY29kZTtcbiAgfVxuXG4gIGlmICghaXNVbmRlZmluZWQoYmFja3VwS2V5Y2hhaW4ucHJvdmlkZXIpKSB7XG4gICAgY29uc3QgYmFja3VwS2V5UHJvdmlkZXJOYW1lID0gYmFja3VwS2V5Y2hhaW4ucHJvdmlkZXI7XG4gICAgLy8gQmFja3VwIGtleSBoZWxkIHdpdGggS1JTXG4gICAgcXJEYXRhLmJhY2t1cCA9IHtcbiAgICAgIHRpdGxlOiAnQjogQmFja3VwIEtleScsXG4gICAgICBkZXNjOlxuICAgICAgICBgVGhpcyBpcyB0aGUgcHVibGljIGtleSBoZWxkIGF0ICR7YmFja3VwS2V5UHJvdmlkZXJOYW1lfWAgK1xuICAgICAgICBgLCBhbiAke2NvaW5TaG9ydE5hbWV9IHJlY292ZXJ5IHNlcnZpY2UuIElmIHlvdSBsb3NlXFxyXFxueW91ciBrZXksICR7YmFja3VwS2V5UHJvdmlkZXJOYW1lfWAgK1xuICAgICAgICAnIHdpbGwgYmUgYWJsZSB0byBzaWduIHRyYW5zYWN0aW9ucyB0byByZWNvdmVyIGZ1bmRzLicsXG4gICAgICBkYXRhOiBiYWNrdXBLZXljaGFpbi5wdWIsXG4gICAgfTtcbiAgfSBlbHNlIGlmIChpc1VuZGVmaW5lZChiYWNrdXBLZXljaGFpbi5lbmNyeXB0ZWRQcnYpKSB7XG4gICAgLy8gVXNlciBzdXBwbGllZCB0aGUgeHB1YlxuICAgIHFyRGF0YS5iYWNrdXAgPSB7XG4gICAgICB0aXRsZTogJ0I6IEJhY2t1cCBLZXknLFxuICAgICAgZGVzYzogJ1RoaXMgaXMgdGhlIHB1YmxpYyBwb3J0aW9uIG9mIHlvdXIgYmFja3VwIGtleSwgd2hpY2ggeW91IHByb3ZpZGVkLicsXG4gICAgICBkYXRhOiBiYWNrdXBLZXljaGFpbi5wdWIsXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBxckRhdGE7XG59XG5cbi8qKlxuICogVE9ETzogRGVwcmVjYXRlIHRoaXMgZnVuY3Rpb24gaW4gZmF2b3Igb2YgZ2V0S2V5RGF0YUFzeW5jIG9uY2UgdjIgZW5jcnlwdGlvbiBpcyBkZWZhdWx0LlxuICogQ29sbGVjdCBhbGwgZGF0YSB3aGljaCB3aWxsIGdvIG9udG8gdGhlIGtleWNhcmRcbiAqIEBwYXJhbSBvcHRpb25zXG4gKi9cbmZ1bmN0aW9uIGdldEtleURhdGEob3B0aW9uczogR2V0S2V5RGF0YU9wdGlvbnMpOiBhbnkge1xuICBjb25zdCB7IGVuY3J5cHQsIGJhY2t1cEtleWNoYWluLCBwYXNzcGhyYXNlLCBwYXNzY29kZUVuY3J5cHRpb25Db2RlLCAuLi5xck9wdGlvbnMgfSA9IG9wdGlvbnM7XG5cbiAgLy8gV2hlbiB1c2luZyBqdXN0ICdnZW5lcmF0ZVdhbGxldCcsIHdlIGdldCBiYWNrIGFuIHVuZW5jcnlwdGVkIHBydiBmb3IgdGhlIGJhY2t1cCBrZXljaGFpblxuICAvLyBJZiB0aGUgdXNlciBwYXNzZXMgaW4gdGhlaXIgcGFzc3BocmFzZSwgd2UgY2FuIGVuY3J5cHQgaXRcbiAgaWYgKGJhY2t1cEtleWNoYWluLnBydiAmJiBwYXNzcGhyYXNlKSB7XG4gICAgYmFja3VwS2V5Y2hhaW4uZW5jcnlwdGVkUHJ2ID0gZW5jcnlwdCh7XG4gICAgICBpbnB1dDogYmFja3VwS2V5Y2hhaW4ucHJ2LFxuICAgICAgcGFzc3dvcmQ6IHBhc3NwaHJhc2UsXG4gICAgfSk7XG4gIH1cblxuICAvLyBJZiB3ZSBoYXZlIHRoZSBwYXNzY29kZSBlbmNyeXB0aW9uIGNvZGUsIGNyZWF0ZSBhIGJveCBEIHdpdGggdGhlIGVuY3J5cHRlZFdhbGxldFBhc3Njb2RlXG4gIGxldCBlbmNyeXB0ZWRXYWxsZXRQYXNzY29kZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBpZiAocGFzc3BocmFzZSAmJiBwYXNzY29kZUVuY3J5cHRpb25Db2RlKSB7XG4gICAgZW5jcnlwdGVkV2FsbGV0UGFzc2NvZGUgPSBlbmNyeXB0KHtcbiAgICAgIGlucHV0OiBwYXNzcGhyYXNlLFxuICAgICAgcGFzc3dvcmQ6IHBhc3Njb2RlRW5jcnlwdGlvbkNvZGUsXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gYnVpbGRLZXljYXJkUXJEYXRhKHsgLi4ucXJPcHRpb25zLCBiYWNrdXBLZXljaGFpbiB9LCBlbmNyeXB0ZWRXYWxsZXRQYXNzY29kZSk7XG59XG5cbi8qKlxuICogQXN5bmMgdmVyc2lvbiBvZiBnZXRLZXlEYXRhIHdpdGggc3VwcG9ydCBmb3IgdjIgKEFyZ29uMmlkKSBlbmNyeXB0aW9uLlxuICogU2VxdWVudGlhbCBlbmNyeXB0OiBiYWNrdXAga2V5IGZpcnN0LCB0aGVuIHBhc3Njb2RlIChtYXRjaGVzIG9yaWdpbmFsIGdldEtleURhdGFBc3luYykuXG4gKiBAcGFyYW0gb3B0aW9uc1xuICovXG5hc3luYyBmdW5jdGlvbiBnZXRLZXlEYXRhQXN5bmMob3B0aW9uczogR2V0S2V5RGF0YUFzeW5jT3B0aW9ucyk6IFByb21pc2U8YW55PiB7XG4gIGNvbnN0IHsgZW5jcnlwdCwgYmFja3VwS2V5Y2hhaW4sIHBhc3NwaHJhc2UsIHBhc3Njb2RlRW5jcnlwdGlvbkNvZGUsIGVuY3J5cHRpb25WZXJzaW9uLCAuLi5xck9wdGlvbnMgfSA9IG9wdGlvbnM7XG5cbiAgaWYgKGJhY2t1cEtleWNoYWluLnBydiAmJiBwYXNzcGhyYXNlKSB7XG4gICAgYmFja3VwS2V5Y2hhaW4uZW5jcnlwdGVkUHJ2ID0gYXdhaXQgZW5jcnlwdCh7XG4gICAgICBpbnB1dDogYmFja3VwS2V5Y2hhaW4ucHJ2LFxuICAgICAgcGFzc3dvcmQ6IHBhc3NwaHJhc2UsXG4gICAgICBlbmNyeXB0aW9uVmVyc2lvbixcbiAgICB9KTtcbiAgfVxuXG4gIGxldCBlbmNyeXB0ZWRXYWxsZXRQYXNzY29kZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBpZiAocGFzc3BocmFzZSAmJiBwYXNzY29kZUVuY3J5cHRpb25Db2RlKSB7XG4gICAgZW5jcnlwdGVkV2FsbGV0UGFzc2NvZGUgPSBhd2FpdCBlbmNyeXB0KHtcbiAgICAgIGlucHV0OiBwYXNzcGhyYXNlLFxuICAgICAgcGFzc3dvcmQ6IHBhc3Njb2RlRW5jcnlwdGlvbkNvZGUsXG4gICAgICBlbmNyeXB0aW9uVmVyc2lvbixcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBidWlsZEtleWNhcmRRckRhdGEoeyAuLi5xck9wdGlvbnMsIGJhY2t1cEtleWNoYWluIH0sIGVuY3J5cHRlZFdhbGxldFBhc3Njb2RlKTtcbn1cblxuaW50ZXJmYWNlIERyYXdLZXljYXJkTGF5b3V0T3B0aW9ucyB7XG4gIGpzUERGOiBhbnk7XG4gIFFSQ29kZTogYW55O1xuICBhY3RpdmF0aW9uQ29kZTogc3RyaW5nO1xuICB3YWxsZXRMYWJlbDogc3RyaW5nO1xuICBjb2luTmFtZTogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgRHJhd0tleWNhcmRPcHRpb25zIGV4dGVuZHMgR2V0S2V5RGF0YU9wdGlvbnMsIERyYXdLZXljYXJkTGF5b3V0T3B0aW9ucyB7XG4gIGNvaW5TaG9ydE5hbWU6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgRHJhd0tleWNhcmRBc3luY09wdGlvbnMgPSBPbWl0PERyYXdLZXljYXJkT3B0aW9ucywgJ2VuY3J5cHQnPiAmIHtcbiAgZW5jcnlwdDogRW5jcnlwdEZuQXN5bmM7XG4gIGVuY3J5cHRpb25WZXJzaW9uPzogRW5jcnlwdGlvblZlcnNpb247XG59O1xuXG4vKipcbiAqIFJlbmRlciBrZXljYXJkIFBERiBwYWdlcyBmcm9tIHByZS1idWlsdCBRUiBkYXRhLlxuICovXG5mdW5jdGlvbiByZW5kZXJLZXljYXJkUGRmKG9wdGlvbnM6IERyYXdLZXljYXJkTGF5b3V0T3B0aW9ucywga2V5RGF0YTogYW55KTogYW55IHtcbiAgY29uc3QgeyBqc1BERiwgUVJDb2RlLCBhY3RpdmF0aW9uQ29kZSwgd2FsbGV0TGFiZWwsIGNvaW5OYW1lIH0gPSBvcHRpb25zO1xuXG4gIGNvbnN0IG1hcmdpbiA9IDMwO1xuXG4gIGNvbnN0IGZvbnQgPSB7XG4gICAgaGVhZGVyOiAyNCxcbiAgICBzdWJoZWFkZXI6IDE1LFxuICAgIGJvZHk6IDEyLFxuICB9O1xuXG4gIGNvbnN0IGNvbG9yID0ge1xuICAgIGJsYWNrOiAnIzAwMDAwMCcsXG4gICAgZGFya2dyYXk6ICcjNGM0YzRjJyxcbiAgICBncmF5OiAnIzliOWI5YicsXG4gICAgcmVkOiAnI2UyMWUxZScsXG4gIH07XG5cbiAgLy8gZG9jdW1lbnQgZGV0YWlsc1xuICBjb25zdCB3aWR0aCA9IDguNSAqIDcyO1xuICBsZXQgeSA9IDA7XG5cbiAgLy8gSGVscGVycyBmb3IgZGF0YSBmb3JtYXR0aW5nIC8gcG9zaXRpb25pbmcgb24gdGhlIHBhcGVyXG4gIGNvbnN0IGxlZnQgPSAoeCkgPT4gbWFyZ2luICsgeDtcbiAgY29uc3QgbW92ZURvd24gPSAoeURlbHRhKSA9PiB7XG4gICAgeSArPSB5RGVsdGE7XG4gIH07XG5cbiAgY29uc3QgZG9jID0gbmV3IGpzUERGKCdwb3J0cmFpdCcsICdwdCcsICdsZXR0ZXInKTtcbiAgZG9jLnNldEZvbnQoJ2hlbHZldGljYScpO1xuXG4gIC8vIFBERiBIZWFkZXIgQXJlYSAtIGluY2x1ZGVzIHRoZSBsb2dvIGFuZCBjb21wYW55IG5hbWVcbiAgLy8gVGhpcyBpcyBkYXRhIGZvciB0aGUgQml0R28gbG9nbyBpbiB0aGUgdG9wIGxlZnQgb2YgdGhlIFBERlxuICBtb3ZlRG93bigzMCk7XG5cbiAgLy8gV2UgZG9uJ3QgY3VycmVudGx5IGFkZCBhbiBpbWFnZSwgc2luY2UgdGhhdCBwYXRoIGlzIGRlcGVuZGVudCBvbiBCaXRHbyBmcm9udGVuZFxuICAvLyBkb2MuYWRkSW1hZ2UoY29pblV0aWxpdHkuZ2V0U2VsZWN0ZWRDb2luT2JqKCkua2V5Q2FyZEltYWdlLCBsZWZ0KDApLCB5ICsgMTApO1xuXG4gIC8vIEFjdGl2YXRpb24gQ29kZVxuICBtb3ZlRG93big4KTtcbiAgZG9jLnNldEZvbnRTaXplKGZvbnQuYm9keSkuc2V0VGV4dENvbG9yKGNvbG9yLmdyYXkpO1xuICBkb2MudGV4dCgnQWN0aXZhdGlvbiBDb2RlJywgbGVmdCg0NjApLCB5KTtcblxuICBkb2Muc2V0Rm9udFNpemUoZm9udC5oZWFkZXIpLnNldFRleHRDb2xvcihjb2xvci5ibGFjayk7XG4gIG1vdmVEb3duKDI1KTtcbiAgZG9jLnRleHQoJ1lvdXIgQml0R28gS2V5Q2FyZCcsIGxlZnQoMTUwKSwgeSk7XG4gIGRvYy5zZXRGb250U2l6ZShmb250LmhlYWRlcikuc2V0VGV4dENvbG9yKGNvbG9yLmdyYXkpO1xuICBkb2MudGV4dChhY3RpdmF0aW9uQ29kZS50b1N0cmluZygpLCBsZWZ0KDQ2MCksIHkpO1xuXG4gIC8vIFN1YmhlYWRlclxuICAvLyB0aXRsZXNcbiAgbW92ZURvd24obWFyZ2luKTtcbiAgZG9jLnNldEZvbnRTaXplKGZvbnQuYm9keSkuc2V0VGV4dENvbG9yKGNvbG9yLmdyYXkpO1xuICBkb2MudGV4dChcbiAgICBgQ3JlYXRlZCBvbiAke25ldyBEYXRlKCkudG9EYXRlU3RyaW5nKCl9IGJ5ICR7d2luZG93LmxvY2F0aW9uLmhvc3RuYW1lfSBmb3Igd2FsbGV0IG5hbWVkICR7d2FsbGV0TGFiZWx9YCxcbiAgICBsZWZ0KDApLFxuICAgIHlcbiAgKTtcbiAgLy8gY29weVxuICBtb3ZlRG93bigyNSk7XG4gIGRvYy5zZXRGb250U2l6ZShmb250LnN1YmhlYWRlcikuc2V0VGV4dENvbG9yKGNvbG9yLmJsYWNrKTtcbiAgZG9jLnRleHQod2FsbGV0TGFiZWwsIGxlZnQoMCksIHkpO1xuICAvLyBSZWQgQmFyXG4gIG1vdmVEb3duKDIwKTtcbiAgZG9jLnNldEZpbGxDb2xvcigyNTUsIDIzMCwgMjMwKTtcbiAgZG9jLnJlY3QobGVmdCgwKSwgeSwgd2lkdGggLSAyICogbWFyZ2luLCAzMiwgJ0YnKTtcblxuICAvLyB3YXJuaW5nIG1lc3NhZ2VcbiAgbW92ZURvd24oMjApO1xuICBkb2Muc2V0Rm9udFNpemUoZm9udC5ib2R5KS5zZXRUZXh0Q29sb3IoY29sb3IucmVkKTtcbiAgZG9jLnRleHQoJ1ByaW50IHRoaXMgZG9jdW1lbnQsIG9yIGtlZXAgaXQgc2VjdXJlbHkgb2ZmbGluZS4gU2VlIHNlY29uZCBwYWdlIGZvciBGQVEuJywgbGVmdCg3NSksIHkpO1xuXG4gIG1vdmVEb3duKDM1KTtcbiAgY29uc3QgcXJTaXplID0gMTMwO1xuXG4gIC8vIERyYXcgZWFjaCBCb3ggd2l0aCBRUiBjb2RlIGFuZCBkZXNjcmlwdGlvblxuICBPYmplY3Qua2V5cyhrZXlEYXRhKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXlUeXBlKSB7XG4gICAgY29uc3Qga2V5ID0ga2V5RGF0YVtrZXlUeXBlXTtcbiAgICBjb25zdCB0b3BZID0geTtcblxuICAgIC8vIERvbid0IGluZGVudCBpZiB3ZSdyZSBub3QgcHJvZHVjaW5nIFFSIGNvZGVzXG4gICAgY29uc3QgdGV4dExlZnQgPSAhIVFSQ29kZSA/IGxlZnQocXJTaXplICsgMTUpIDogbGVmdCgxNSk7XG5cbiAgICAvLyBEcmF3IGEgUVIgY29kZSBpZiBsaWJyYXJ5IGlzIGF2YWlsYWJsZVxuICAgIGlmIChRUkNvZGUpIHtcbiAgICAgIGNvbnN0IGRhdGFVUkwgPSBuZXcgUVJDb2RlKHsgdmFsdWU6IGtleS5kYXRhLCBzaXplOiBxclNpemUgfSkudG9EYXRhVVJMKCdpbWFnZS9qcGVnJyk7XG4gICAgICBkb2MuYWRkSW1hZ2UoZGF0YVVSTCwgbGVmdCgwKSwgeSwgcXJTaXplLCBxclNpemUpO1xuICAgIH1cblxuICAgIGRvYy5zZXRGb250U2l6ZShmb250LnN1YmhlYWRlcikuc2V0VGV4dENvbG9yKGNvbG9yLmJsYWNrKTtcbiAgICBtb3ZlRG93bigxMCk7XG4gICAgZG9jLnRleHQoa2V5LnRpdGxlLCB0ZXh0TGVmdCwgeSk7XG4gICAgbW92ZURvd24oMTUpO1xuICAgIGRvYy5zZXRGb250U2l6ZShmb250LmJvZHkpLnNldFRleHRDb2xvcihjb2xvci5kYXJrZ3JheSk7XG4gICAgZG9jLnRleHQoa2V5LmRlc2MsIHRleHRMZWZ0LCB5KTtcbiAgICBtb3ZlRG93bigzMCk7XG4gICAgZG9jLnNldEZvbnRTaXplKGZvbnQuYm9keSAtIDIpO1xuICAgIGRvYy50ZXh0KCdEYXRhOicsIHRleHRMZWZ0LCB5KTtcbiAgICBtb3ZlRG93bigxNSk7XG4gICAgY29uc3QgaW5uZXJXaWR0aCA9IDcyICogOC41IC0gdGV4dExlZnQgLSAzMDtcbiAgICBkb2Muc2V0Rm9udCgnY291cmllcicpLnNldEZvbnRTaXplKDkpLnNldFRleHRDb2xvcihjb2xvci5ibGFjayk7XG4gICAgY29uc3QgbGluZXMgPSBkb2Muc3BsaXRUZXh0VG9TaXplKGtleS5kYXRhLCBpbm5lcldpZHRoKTtcbiAgICBkb2MudGV4dChsaW5lcywgdGV4dExlZnQsIHkpO1xuXG4gICAgLy8gQWRkIGtleSBJRCAoZGVyaXZhdGlvbiBzdHJpbmcpIGlmIGl0IGV4aXN0c1xuICAgIGlmIChrZXkua2V5SUQpIHtcbiAgICAgIGNvbnN0IHRleHQgPSAnS2V5IElkOiAnICsga2V5LmtleUlEO1xuICAgICAgLy8gR3JheSBiYXJcbiAgICAgIG1vdmVEb3duKDQ1KTtcbiAgICAgIGRvYy5zZXRGaWxsQ29sb3IoMjQ3LCAyNDksIDI0OSk7IC8vIEdyYXkgYmFja2dyb3VuZFxuICAgICAgZG9jLnNldERyYXdDb2xvcigwLCAwLCAwKTsgLy8gQm9yZGVyXG4gICAgICBkb2MucmVjdCh0ZXh0TGVmdCwgeSwgd2lkdGgsIDE1LCAnRkQnKTtcblxuICAgICAgZG9jLnRleHQodGV4dCwgdGV4dExlZnQgKyA1LCB5ICsgMTApO1xuICAgIH1cblxuICAgIGRvYy5zZXRGb250KCdoZWx2ZXRpY2EnKTtcbiAgICAvLyBNb3ZlIGRvd24gdGhlIHNpemUgb2YgdGhlIFFSIGNvZGUgbWludXMgYWNjdW11bGF0ZWQgaGVpZ2h0IG9uIHRoZSByaWdodCBzaWRlLCBwbHVzIGJ1ZmZlclxuICAgIG1vdmVEb3duKHFyU2l6ZSAtICh5IC0gdG9wWSkgKyAxNSk7XG4gIH0pO1xuXG4gIC8vIEFkZCBhIG5ldyBwYWdlIChRICsgQSBwYWdlKVxuICBkb2MuYWRkUGFnZSgpO1xuXG4gIC8vIDJuZCBwYWdlIHRpdGxlXG4gIHkgPSAwO1xuICBtb3ZlRG93big1NSk7XG4gIGRvYy5zZXRGb250U2l6ZShmb250LmhlYWRlcikuc2V0VGV4dENvbG9yKGNvbG9yLmJsYWNrKTtcbiAgZG9jLnRleHQoJ0JpdEdvIEtleUNhcmQgRkFRJywgbGVmdCgwKSwgeSk7XG5cbiAgY29uc3QgcXVlc3Rpb25zID0gZ2VuZXJhdGVRdWVzdGlvbnMoY29pbk5hbWUpO1xuXG4gIC8vIERyYXcgdGhlIFEgKyBBIGRhdGEgb24gdGhlIHNlY29uZCBwYWdlXG4gIG1vdmVEb3duKDMwKTtcbiAgcXVlc3Rpb25zLmZvckVhY2goZnVuY3Rpb24gKHEpIHtcbiAgICBkb2Muc2V0Rm9udFNpemUoZm9udC5zdWJoZWFkZXIpLnNldFRleHRDb2xvcihjb2xvci5ibGFjayk7XG4gICAgZG9jLnRleHQocS5xLCBsZWZ0KDApLCB5KTtcbiAgICBtb3ZlRG93bigyMCk7XG4gICAgZG9jLnNldEZvbnRTaXplKGZvbnQuYm9keSkuc2V0VGV4dENvbG9yKGNvbG9yLmRhcmtncmF5KTtcbiAgICBxLmEuZm9yRWFjaChmdW5jdGlvbiAobGluZSkge1xuICAgICAgZG9jLnRleHQobGluZSwgbGVmdCgwKSwgeSk7XG4gICAgICBtb3ZlRG93bihmb250LmJvZHkgKyAzKTtcbiAgICB9KTtcbiAgICBtb3ZlRG93bigyMik7XG4gIH0pO1xuXG4gIHJldHVybiBkb2M7XG59XG5cbi8qKlxuICogVE9ETzogRGVwcmVjYXRlIHRoaXMgZnVuY3Rpb24gaW4gZmF2b3Igb2YgZHJhd0tleWNhcmRBc3luYyBvbmNlIHYyIGVuY3J5cHRpb24gaXMgZGVmYXVsdC5cbiAqIERyYXcgYSBrZXljYXJkIGludG8gYSBuZXcgcGRmIGRvY3VtZW50IG9iamVjdFxuICogQHBhcmFtIG9wdGlvbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRyYXdLZXljYXJkKG9wdGlvbnM6IERyYXdLZXljYXJkT3B0aW9ucyk6IGFueSB7XG4gIGNvbnN0IHtcbiAgICBlbmNyeXB0LFxuICAgIHBhc3NwaHJhc2UsXG4gICAgcGFzc2NvZGVFbmNyeXB0aW9uQ29kZSxcbiAgICB3YWxsZXRLZXlJRCxcbiAgICBiYWNrdXBLZXlJRCxcbiAgICB1c2VyS2V5Y2hhaW4sXG4gICAgYml0Z29LZXljaGFpbixcbiAgICBiYWNrdXBLZXljaGFpbixcbiAgICBjb2luU2hvcnROYW1lLFxuICAgIGpzUERGLFxuICAgIFFSQ29kZSxcbiAgICBhY3RpdmF0aW9uQ29kZSxcbiAgICB3YWxsZXRMYWJlbCxcbiAgICBjb2luTmFtZSxcbiAgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qga2V5RGF0YSA9IGdldEtleURhdGEoe1xuICAgIGVuY3J5cHQsXG4gICAgY29pblNob3J0TmFtZSxcbiAgICBwYXNzcGhyYXNlLFxuICAgIHBhc3Njb2RlRW5jcnlwdGlvbkNvZGUsXG4gICAgd2FsbGV0S2V5SUQsXG4gICAgYmFja3VwS2V5SUQsXG4gICAgdXNlcktleWNoYWluLFxuICAgIGJpdGdvS2V5Y2hhaW4sXG4gICAgYmFja3VwS2V5Y2hhaW4sXG4gIH0pO1xuXG4gIHJldHVybiByZW5kZXJLZXljYXJkUGRmKHsganNQREYsIFFSQ29kZSwgYWN0aXZhdGlvbkNvZGUsIHdhbGxldExhYmVsLCBjb2luTmFtZSB9LCBrZXlEYXRhKTtcbn1cblxuLyoqXG4gKiBBc3luYyB2ZXJzaW9uIG9mIGRyYXdLZXljYXJkIHdpdGggc3VwcG9ydCBmb3IgdjIgKEFyZ29uMmlkKSBlbmNyeXB0aW9uLlxuICogVXNlIHRoaXMgd2hlbiB0aGUgZW5jcnlwdCBjYWxsYmFjayBtYXkgcmV0dXJuIGEgUHJvbWlzZSAoZS5nLiBlbmNyeXB0QXN5bmMpLlxuICpcbiAqIERyYXcgYSBrZXljYXJkIGludG8gYSBuZXcgcGRmIGRvY3VtZW50IG9iamVjdFxuICogQHBhcmFtIG9wdGlvbnNcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRyYXdLZXljYXJkQXN5bmMob3B0aW9uczogRHJhd0tleWNhcmRBc3luY09wdGlvbnMpOiBQcm9taXNlPGFueT4ge1xuICBjb25zdCB7XG4gICAgZW5jcnlwdCxcbiAgICBwYXNzcGhyYXNlLFxuICAgIHBhc3Njb2RlRW5jcnlwdGlvbkNvZGUsXG4gICAgd2FsbGV0S2V5SUQsXG4gICAgYmFja3VwS2V5SUQsXG4gICAgdXNlcktleWNoYWluLFxuICAgIGJpdGdvS2V5Y2hhaW4sXG4gICAgYmFja3VwS2V5Y2hhaW4sXG4gICAgY29pblNob3J0TmFtZSxcbiAgICBqc1BERixcbiAgICBRUkNvZGUsXG4gICAgYWN0aXZhdGlvbkNvZGUsXG4gICAgd2FsbGV0TGFiZWwsXG4gICAgY29pbk5hbWUsXG4gICAgZW5jcnlwdGlvblZlcnNpb24sXG4gIH0gPSBvcHRpb25zO1xuXG4gIC8vIEdldCB0aGUgZGF0YSBmb3IgdGhlIGZpcnN0IHBhZ2UgKHFyIGNvZGVzKVxuICBjb25zdCBrZXlEYXRhID0gYXdhaXQgZ2V0S2V5RGF0YUFzeW5jKHtcbiAgICBlbmNyeXB0LFxuICAgIGNvaW5TaG9ydE5hbWUsXG4gICAgcGFzc3BocmFzZSxcbiAgICBwYXNzY29kZUVuY3J5cHRpb25Db2RlLFxuICAgIHdhbGxldEtleUlELFxuICAgIGJhY2t1cEtleUlELFxuICAgIHVzZXJLZXljaGFpbixcbiAgICBiaXRnb0tleWNoYWluLFxuICAgIGJhY2t1cEtleWNoYWluLFxuICAgIGVuY3J5cHRpb25WZXJzaW9uLFxuICB9KTtcblxuICByZXR1cm4gcmVuZGVyS2V5Y2FyZFBkZih7IGpzUERGLCBRUkNvZGUsIGFjdGl2YXRpb25Db2RlLCB3YWxsZXRMYWJlbCwgY29pbk5hbWUgfSwga2V5RGF0YSk7XG59XG4iXX0=
364
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Y2FyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaXRnby9pbnRlcm5hbC9rZXljYXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7QUEyWkgsa0NBK0JDO0FBU0QsNENBa0NDO0FBbmVEO0dBQ0c7QUFDSCxtQ0FBcUM7QUFJckM7OztHQUdHO0FBQ0gsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLElBQVksRUFBRSxFQUFFO0lBQ3pDLE9BQU87UUFDTDtZQUNFLENBQUMsRUFBRSxzQkFBc0I7WUFDekIsQ0FBQyxFQUFFO2dCQUNELCtFQUErRSxJQUFJLEdBQUc7Z0JBQ3RGLDJEQUEyRCxHQUFHLGdDQUFnQztnQkFDOUYsdUZBQXVGO2FBQ3hGO1NBQ0Y7UUFDRDtZQUNFLENBQUMsRUFBRSwyQkFBMkI7WUFDOUIsQ0FBQyxFQUFFO2dCQUNELCtGQUErRjtnQkFDL0YsbUdBQW1HO2dCQUNuRyxnREFBZ0Q7Z0JBQ2hELEVBQUU7Z0JBQ0YsNkZBQTZGO2dCQUM3RiwrRkFBK0Y7Z0JBQy9GLHNEQUFzRDthQUN2RDtTQUNGO1FBQ0Q7WUFDRSxDQUFDLEVBQUUsZ0NBQWdDO1lBQ25DLENBQUMsRUFBRTtnQkFDRCxnRUFBZ0UsSUFBSSwyQkFBMkI7Z0JBQy9GLCtGQUErRjtnQkFDL0YsdUNBQXVDO2dCQUN2QywwQ0FBMEM7YUFDM0M7U0FDRjtRQUNEO1lBQ0UsQ0FBQyxFQUFFLGtDQUFrQztZQUNyQyxDQUFDLEVBQUU7Z0JBQ0Qsa0dBQWtHO2dCQUNsRyx1RkFBdUY7Z0JBQ3ZGLHNGQUFzRjtnQkFDdEYsNkZBQTZGO2dCQUM3RiwrQ0FBK0M7YUFDaEQ7U0FDRjtRQUNEO1lBQ0UsQ0FBQyxFQUFFLDhDQUE4QztZQUNqRCxDQUFDLEVBQUU7Z0JBQ0Qsd0ZBQXdGO2dCQUN4Riw2RkFBNkY7YUFDOUY7U0FDRjtRQUNEO1lBQ0UsQ0FBQyxFQUFFLDREQUE0RDtZQUMvRCxDQUFDLEVBQUU7Z0JBQ0Qsb0ZBQW9G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R0FBRyxPQUFPLENBQUM7SUFFWiw2Q0FBNkM7SUFDN0MsTUFBTSxPQUFPLEdBQUcsTUFBTSxlQUFlLENBQUM7UUFDcEMsT0FBTztRQUNQLGFBQWE7UUFDYixVQUFVO1FBQ1Ysc0JBQXNCO1FBQ3RCLFdBQVc7UUFDWCxXQUFXO1FBQ1gsWUFBWTtRQUNaLGFBQWE7UUFDYixjQUFjO1FBQ2QsaUJBQWlCO0tBQ2xCLENBQUMsQ0FBQztJQUVILE9BQU8sZ0JBQWdCLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDN0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGhpZGRlblxuICovXG5cbi8qKlxuICovXG5pbXBvcnQgeyBpc1VuZGVmaW5lZCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBLZXljaGFpbiB9IGZyb20gJy4uL2tleWNoYWluJztcbmltcG9ydCB7IEVuY3J5cHRGbiwgRW5jcnlwdEZuQXN5bmMsIEVuY3J5cHRpb25WZXJzaW9uIH0gZnJvbSAnLi4vLi4vYXBpJztcblxuLyoqXG4gKiBSZXR1cm4gdGhlIGxpc3Qgb2YgcXVlc3Rpb25zIHRoYXQgd2lsbCBhcHBlYXIgb24gdGhlIHNlY29uZCBwYWdlIG9mIHRoZSBrZXljYXJkXG4gKiBAcGFyYW0gY29pbiBuYW1lIG9mIHRoZSBjb2luXG4gKi9cbmNvbnN0IGdlbmVyYXRlUXVlc3Rpb25zID0gKGNvaW46IHN0cmluZykgPT4ge1xuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIHE6ICdXaGF0IGlzIHRoZSBLZXlDYXJkPycsXG4gICAgICBhOiBbXG4gICAgICAgIGBUaGUgS2V5Q2FyZCBjb250YWlucyBpbXBvcnRhbnQgaW5mb3JtYXRpb24gd2hpY2ggY2FuIGJlIHVzZWQgdG8gcmVjb3ZlciB0aGUgJHtjb2lufSBgLFxuICAgICAgICAnZnJvbSB5b3VyIHdhbGxldCBpbiBzZXZlcmFsIHNpdHVhdGlvbnMuIEVhY2ggQml0R28gd2FsbGV0JyArICcgaGFzIGl0cyBvd24sIHVuaXF1ZSBLZXlDYXJkLiAnLFxuICAgICAgICAnSWYgeW91IGhhdmUgY3JlYXRlZCBtdWx0aXBsZSB3YWxsZXRzLCB5b3Ugc2hvdWxkIHJldGFpbiB0aGUgS2V5Q2FyZCBmb3IgZWFjaCBvZiB0aGVtLicsXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgcTogJ1doYXQgc2hvdWxkIEkgZG8gd2l0aCBpdD8nLFxuICAgICAgYTogW1xuICAgICAgICAnWW91IHNob3VsZCBwcmludCB0aGUgS2V5Q2FyZCBhbmQvb3Igc2F2ZSB0aGUgUERGIHRvIGFuIG9mZmxpbmUgc3RvcmFnZSBkZXZpY2UuIFRoZSBwcmludC1vdXQgJyxcbiAgICAgICAgXCJvciBVU0Igc3RpY2sgc2hvdWxkIGJlIGtlcHQgaW4gYSBzYWZlIHBsYWNlLCBzdWNoIGFzIGEgYmFuayB2YXVsdCBvciBob21lIHNhZmUuIEl0J3MgYSBnb29kIGlkZWEgXCIsXG4gICAgICAgICd0byBrZWVwIGEgc2Vjb25kIGNvcHkgaW4gYSBkaWZmZXJlbnQgbG9jYXRpb24uJyxcbiAgICAgICAgJycsXG4gICAgICAgIFwiSW1wb3J0YW50OiBJZiB5b3UgaGF2ZW4ndCBwcm92aWRlZCBhbiBleHRlcm5hbCBiYWNrdXAga2V5LCB0aGVuIHRoZSBvcmlnaW5hbCBQREYgc2hvdWxkIGJlIFwiLFxuICAgICAgICAnZGVsZXRlZCBmcm9tIGFueSBtYWNoaW5lIHdoZXJlIHRoZSB3YWxsZXQgd2lsbCBiZSByZWd1bGFybHkgYWNjZXNzZWQgdG8gcHJldmVudCBtYWx3YXJlIGZyb20gJyxcbiAgICAgICAgJ2NhcHR1cmluZyBib3RoIHRoZSBLZXlDYXJkIGFuZCB5b3VyIHdhbGxldCBwYXNzY29kZS4nLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHE6ICdXaGF0IHNob3VsZCBJIGRvIGlmIEkgbG9zZSBpdD8nLFxuICAgICAgYTogW1xuICAgICAgICBgSWYgeW91IGhhdmUgbG9zdCBvciBkYW1hZ2VkIGFsbCBjb3BpZXMgb2YgeW91ciBLZXlDYXJkLCB5b3VyICR7Y29pbn0gaXMgc3RpbGwgc2FmZSwgYnV0IHRoaXMgYCxcbiAgICAgICAgJ3dhbGxldCBzaG91bGQgYmUgY29uc2lkZXJlZCBhdCByaXNrIGZvciBsb3NzLiBBcyBzb29uIGFzIGlzIGNvbnZlbmllbnQsIHlvdSBzaG91bGQgdXNlIEJpdEdvICcsXG4gICAgICAgICd0byBlbXB0eSB0aGUgd2FsbGV0IGludG8gYSBuZXcgd2FsbGV0JyxcbiAgICAgICAgJywgYW5kIGRpc2NvbnRpbnVlIHVzZSBvZiB0aGUgb2xkIHdhbGxldC4nLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHE6ICdXaGF0IGlmIHNvbWVvbmUgc2VlcyBteSBLZXlDYXJkPycsXG4gICAgICBhOiBbXG4gICAgICAgIFwiRG9uJ3QgcGFuaWMhIEFsbCBzZW5zaXRpdmUgaW5mb3JtYXRpb24gb24gdGhlIEtleUNhcmQgaXMgZW5jcnlwdGVkIHdpdGggeW91ciBwYXNzY29kZSwgb3Igd2l0aCBhXCIsXG4gICAgICAgICdrZXkgd2hpY2ggb25seSBCaXRHbyBoYXMuIEJ1dCwgaW4gZ2VuZXJhbCwgeW91IHNob3VsZCBtYWtlIGJlc3QgZWZmb3J0cyB0byBrZWVwIHlvdXIgJyxcbiAgICAgICAgJ0tleUNhcmQgcHJpdmF0ZS4gSWYgeW91ciBLZXlDYXJkIGRvZXMgZ2V0IGV4cG9zZWQgb3IgY29waWVkIGluIGEgd2F5IHRoYXQgbWFrZXMgeW91ICcsXG4gICAgICAgICd1bmNvbWZvcnRhYmxlLCB0aGUgYmVzdCBjb3Vyc2Ugb2YgYWN0aW9uIGlzIHRvIGVtcHR5IHRoZSBjb3JyZXNwb25kaW5nIHdhbGxldCBpbnRvIGFub3RoZXIgJyxcbiAgICAgICAgJ3dhbGxldCBhbmQgZGlzY29udGludWUgdXNlIG9mIHRoZSBvbGQgd2FsbGV0LicsXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgcTogJ1doYXQgaWYgSSBmb3JnZXQgb3IgbG9zZSBteSB3YWxsZXQgcGFzc3dvcmQ/JyxcbiAgICAgIGE6IFtcbiAgICAgICAgJ0JpdEdvIGNhbiB1c2UgdGhlIGluZm9ybWF0aW9uIGluIFFSIENvZGUgRCB0byBoZWxwIHlvdSByZWNvdmVyIGFjY2VzcyB0byB5b3VyIHdhbGxldC4gJyxcbiAgICAgICAgJ1dpdGhvdXQgdGhlIEtleUNhcmQsIEJpdEdvIGlzIG5vdCBhYmxlIHRvIHJlY292ZXIgZnVuZHMgZnJvbSBhIHdhbGxldCB3aXRoIGEgbG9zdCBwYXNzd29yZC4nLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHE6ICdXaGF0IGlmIEJpdEdvIGJlY29tZXMgaW5hY2Nlc3NpYmxlIGZvciBhbiBleHRlbmRlZCBwZXJpb2Q/JyxcbiAgICAgIGE6IFtcbiAgICAgICAgJ1lvdXIgS2V5Q2FyZCBhbmQgd2FsbGV0IHBhc3Njb2RlIGNhbiBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggQml0R2/igJlzIHB1Ymxpc2hlZCBvcGVuICcsXG4gICAgICAgIGBzb3VyY2UgdG9vbHMgYXQgaHR0cHM6Ly9naXRodWIuY29tL2JpdGdvIHRvIHJlY292ZXIgeW91ciAke2NvaW59LiBOb3RlOiBZb3Ugc2hvdWxkIG5ldmVyIGVudGVyIGAsXG4gICAgICAgICdpbmZvcm1hdGlvbiBmcm9tIHlvdXIgS2V5Q2FyZCBpbnRvIHRvb2xzIG90aGVyIHRoYW4gdGhlIHRvb2xzIEJpdEdvIGhhcyBwdWJsaXNoZWQsIG9yIHlvdXIgJyxcbiAgICAgICAgJ2Z1bmRzIG1heSBiZSBhdCByaXNrIGZvciB0aGVmdC4nLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHE6ICdTaG91bGQgSSB3cml0ZSBteSB3YWxsZXQgcGFzc3dvcmQgb24gbXkgS2V5Q2FyZD8nLFxuICAgICAgYTogW1xuICAgICAgICAnTm8hIEJpdEdv4oCZcyBtdWx0aS1zaWduYXR1cmUgYXBwcm9hY2ggdG8gc2VjdXJpdHkgZGVwZW5kcyBvbiB0aGVyZSBub3QgYmVpbmcgYSBzaW5nbGUgcG9pbnQgJyxcbiAgICAgICAgJ29mIGF0dGFjay4gQnV0IGlmIHlvdXIgd2FsbGV0IHBhc3N3b3JkIGlzIG9uIHlvdXIgS2V5Q2FyZCwgdGhlbiBhbnlvbmUgd2hvIGdhaW5zIGFjY2VzcyB0byAnLFxuICAgICAgICBgeW91ciBLZXlDYXJkIHdpbGwgYmUgYWJsZSB0byBzdGVhbCB5b3VyICR7Y29pbn0uIFdlIHJlY29tbWVuZCBrZWVwaW5nIHlvdXIgd2FsbGV0IHBhc3N3b3JkIGAsXG4gICAgICAgICdzYWZlIGluIGEgc2VjdXJlIHBhc3N3b3JkIG1hbmFnZXIgc3VjaCBhcyBMYXN0UGFzcywgMVBhc3N3b3JkIG9yIEtlZVBhc3MuJyxcbiAgICAgIF0sXG4gICAgfSxcbiAgXTtcbn07XG5cbmludGVyZmFjZSBHZXRLZXlEYXRhT3B0aW9ucyB7XG4gIGVuY3J5cHQ6IEVuY3J5cHRGbjtcbiAgdXNlcktleWNoYWluOiBLZXljaGFpbjtcbiAgYml0Z29LZXljaGFpbjogS2V5Y2hhaW47XG4gIGJhY2t1cEtleWNoYWluOiBLZXljaGFpbjtcbiAgY29pblNob3J0TmFtZTogc3RyaW5nO1xuICBwYXNzcGhyYXNlPzogc3RyaW5nO1xuICBwYXNzY29kZUVuY3J5cHRpb25Db2RlPzogc3RyaW5nO1xuICB3YWxsZXRLZXlJRD86IHN0cmluZztcbiAgYmFja3VwS2V5SUQ/OiBzdHJpbmc7XG59XG5cbnR5cGUgR2V0S2V5RGF0YUFzeW5jT3B0aW9ucyA9IE9taXQ8R2V0S2V5RGF0YU9wdGlvbnMsICdlbmNyeXB0Jz4gJiB7XG4gIGVuY3J5cHQ6IEVuY3J5cHRGbkFzeW5jO1xuICBlbmNyeXB0aW9uVmVyc2lvbj86IEVuY3J5cHRpb25WZXJzaW9uO1xufTtcblxuaW50ZXJmYWNlIEJ1aWxkS2V5Y2FyZFFyRGF0YU9wdGlvbnMge1xuICB1c2VyS2V5Y2hhaW46IEtleWNoYWluO1xuICBiaXRnb0tleWNoYWluOiBLZXljaGFpbjtcbiAgYmFja3VwS2V5Y2hhaW46IEtleWNoYWluO1xuICBjb2luU2hvcnROYW1lOiBzdHJpbmc7XG4gIHdhbGxldEtleUlEPzogc3RyaW5nO1xuICBiYWNrdXBLZXlJRD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBCdWlsZCBRUiBjb2RlIHBheWxvYWQgZm9yIGVhY2gga2V5Y2FyZCBib3guIERvZXMgbm90IHBlcmZvcm0gZW5jcnlwdGlvbi5cbiAqL1xuZnVuY3Rpb24gYnVpbGRLZXljYXJkUXJEYXRhKG9wdGlvbnM6IEJ1aWxkS2V5Y2FyZFFyRGF0YU9wdGlvbnMsIGVuY3J5cHRlZFdhbGxldFBhc3Njb2RlOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBhbnkge1xuICBjb25zdCB7IHVzZXJLZXljaGFpbiwgYml0Z29LZXljaGFpbiwgYmFja3VwS2V5Y2hhaW4sIGNvaW5TaG9ydE5hbWUsIHdhbGxldEtleUlELCBiYWNrdXBLZXlJRCB9ID0gb3B0aW9ucztcblxuICAvLyBQREYgUVIgQ29kZSBkYXRhXG4gIGNvbnN0IHFyRGF0YTogYW55ID0ge1xuICAgIHVzZXI6IHtcbiAgICAgIHRpdGxlOiAnQTogVXNlciBLZXknLFxuICAgICAgZGVzYzogJ1RoaXMgaXMgeW91ciBwcml2YXRlIGtleSwgZW5jcnlwdGVkIHdpdGggeW91ciBwYXNzY29kZS4nLFxuICAgICAgZGF0YTogdXNlcktleWNoYWluLmVuY3J5cHRlZFBydixcbiAgICB9LFxuICAgIGJhY2t1cDoge1xuICAgICAgdGl0bGU6ICdCOiBCYWNrdXAgS2V5JyxcbiAgICAgIGRlc2M6ICdUaGlzIGlzIHlvdXIgYmFja3VwIHByaXZhdGUga2V5LCBlbmNyeXB0ZWQgd2l0aCB5b3VyIHBhc3Njb2RlLicsXG4gICAgICBkYXRhOiBiYWNrdXBLZXljaGFpbi5lbmNyeXB0ZWRQcnYsXG4gICAgfSxcbiAgICBiaXRnbzoge1xuICAgICAgdGl0bGU6ICdDOiBCaXRHbyBLZXknLFxuICAgICAgZGVzYzogJ1RoaXMgaXMgdGhlIHB1YmxpYyBwYXJ0IG9mIHRoZSBrZXkgaGVsZCBieSBCaXRHby4nLFxuICAgICAgZGF0YTogYml0Z29LZXljaGFpbi5wdWIsXG4gICAgfSxcbiAgICBwYXNzY29kZToge1xuICAgICAgdGl0bGU6ICdEOiBFbmNyeXB0ZWQgV2FsbGV0IFBhc3N3b3JkJyxcbiAgICAgIGRlc2M6ICdUaGlzIGlzIHRoZSB3YWxsZXQgcGFzc3dvcmQsIGVuY3J5cHRlZCBjbGllbnQtc2lkZSAnICsgJ3dpdGggYSBrZXkgaGVsZCBieVxcclxcbkJpdEdvLicsXG4gICAgICBkYXRhOiBlbmNyeXB0ZWRXYWxsZXRQYXNzY29kZSxcbiAgICB9LFxuICB9O1xuXG4gIGlmICh3YWxsZXRLZXlJRCkge1xuICAgIHFyRGF0YS51c2VyLmtleUlEID0gd2FsbGV0S2V5SUQ7XG4gIH1cblxuICBpZiAoYmFja3VwS2V5SUQpIHtcbiAgICBxckRhdGEuYmFja3VwLmtleUlEID0gYmFja3VwS2V5SUQ7XG4gIH1cblxuICBpZiAoaXNVbmRlZmluZWQodXNlcktleWNoYWluLmVuY3J5cHRlZFBydikpIHtcbiAgICAvLyBVc2VyIHByb3ZpZGVkIHRoZWlyIG93biBrZXkgLSB0aGlzIGlzIGEgY29sZCB3YWxsZXRcbiAgICBxckRhdGEudXNlci50aXRsZSA9ICdBOiBQcm92aWRlZCBVc2VyIEtleSc7XG4gICAgcXJEYXRhLnVzZXIuZGVzYyA9ICdUaGlzIGlzIHRoZSBwdWJsaWMga2V5IHlvdSBwcm92aWRlZCBmb3IgeW91ciB3YWxsZXQuJztcbiAgICBxckRhdGEudXNlci5kYXRhID0gdXNlcktleWNoYWluLnB1YjtcblxuICAgIC8vIFRoZSB1c2VyIHByb3ZpZGVkIHRoZWlyIG93biBwdWJsaWMga2V5LCB3ZSBjYW4gcmVtb3ZlIGJveCBEXG4gICAgZGVsZXRlIHFyRGF0YS5wYXNzY29kZTtcbiAgfSBlbHNlIGlmIChpc1VuZGVmaW5lZChlbmNyeXB0ZWRXYWxsZXRQYXNzY29kZSkpIHtcbiAgICBkZWxldGUgcXJEYXRhLnBhc3Njb2RlO1xuICB9XG5cbiAgaWYgKCFpc1VuZGVmaW5lZChiYWNrdXBLZXljaGFpbi5wcm92aWRlcikpIHtcbiAgICBjb25zdCBiYWNrdXBLZXlQcm92aWRlck5hbWUgPSBiYWNrdXBLZXljaGFpbi5wcm92aWRlcjtcbiAgICAvLyBCYWNrdXAga2V5IGhlbGQgd2l0aCBLUlNcbiAgICBxckRhdGEuYmFja3VwID0ge1xuICAgICAgdGl0bGU6ICdCOiBCYWNrdXAgS2V5JyxcbiAgICAgIGRlc2M6XG4gICAgICAgIGBUaGlzIGlzIHRoZSBwdWJsaWMga2V5IGhlbGQgYXQgJHtiYWNrdXBLZXlQcm92aWRlck5hbWV9YCArXG4gICAgICAgIGAsIGFuICR7Y29pblNob3J0TmFtZX0gcmVjb3Zlcnkgc2VydmljZS4gSWYgeW91IGxvc2VcXHJcXG55b3VyIGtleSwgJHtiYWNrdXBLZXlQcm92aWRlck5hbWV9YCArXG4gICAgICAgICcgd2lsbCBiZSBhYmxlIHRvIHNpZ24gdHJhbnNhY3Rpb25zIHRvIHJlY292ZXIgZnVuZHMuJyxcbiAgICAgIGRhdGE6IGJhY2t1cEtleWNoYWluLnB1YixcbiAgICB9O1xuICB9IGVsc2UgaWYgKGlzVW5kZWZpbmVkKGJhY2t1cEtleWNoYWluLmVuY3J5cHRlZFBydikpIHtcbiAgICAvLyBVc2VyIHN1cHBsaWVkIHRoZSB4cHViXG4gICAgcXJEYXRhLmJhY2t1cCA9IHtcbiAgICAgIHRpdGxlOiAnQjogQmFja3VwIEtleScsXG4gICAgICBkZXNjOiAnVGhpcyBpcyB0aGUgcHVibGljIHBvcnRpb24gb2YgeW91ciBiYWNrdXAga2V5LCB3aGljaCB5b3UgcHJvdmlkZWQuJyxcbiAgICAgIGRhdGE6IGJhY2t1cEtleWNoYWluLnB1YixcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHFyRGF0YTtcbn1cblxuLyoqXG4gKiBUT0RPOiBEZXByZWNhdGUgdGhpcyBmdW5jdGlvbiBpbiBmYXZvciBvZiBnZXRLZXlEYXRhQXN5bmMgb25jZSB2MiBlbmNyeXB0aW9uIGlzIGRlZmF1bHQuXG4gKiBDb2xsZWN0IGFsbCBkYXRhIHdoaWNoIHdpbGwgZ28gb250byB0aGUga2V5Y2FyZFxuICogQHBhcmFtIG9wdGlvbnNcbiAqL1xuZnVuY3Rpb24gZ2V0S2V5RGF0YShvcHRpb25zOiBHZXRLZXlEYXRhT3B0aW9ucyk6IGFueSB7XG4gIGNvbnN0IHsgZW5jcnlwdCwgYmFja3VwS2V5Y2hhaW4sIHBhc3NwaHJhc2UsIHBhc3Njb2RlRW5jcnlwdGlvbkNvZGUsIC4uLnFyT3B0aW9ucyB9ID0gb3B0aW9ucztcblxuICAvLyBXaGVuIHVzaW5nIGp1c3QgJ2dlbmVyYXRlV2FsbGV0Jywgd2UgZ2V0IGJhY2sgYW4gdW5lbmNyeXB0ZWQgcHJ2IGZvciB0aGUgYmFja3VwIGtleWNoYWluXG4gIC8vIElmIHRoZSB1c2VyIHBhc3NlcyBpbiB0aGVpciBwYXNzcGhyYXNlLCB3ZSBjYW4gZW5jcnlwdCBpdFxuICBpZiAoYmFja3VwS2V5Y2hhaW4ucHJ2ICYmIHBhc3NwaHJhc2UpIHtcbiAgICBiYWNrdXBLZXljaGFpbi5lbmNyeXB0ZWRQcnYgPSBlbmNyeXB0KHtcbiAgICAgIGlucHV0OiBiYWNrdXBLZXljaGFpbi5wcnYsXG4gICAgICBwYXNzd29yZDogcGFzc3BocmFzZSxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIElmIHdlIGhhdmUgdGhlIHBhc3Njb2RlIGVuY3J5cHRpb24gY29kZSwgY3JlYXRlIGEgYm94IEQgd2l0aCB0aGUgZW5jcnlwdGVkV2FsbGV0UGFzc2NvZGVcbiAgbGV0IGVuY3J5cHRlZFdhbGxldFBhc3Njb2RlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGlmIChwYXNzcGhyYXNlICYmIHBhc3Njb2RlRW5jcnlwdGlvbkNvZGUpIHtcbiAgICBlbmNyeXB0ZWRXYWxsZXRQYXNzY29kZSA9IGVuY3J5cHQoe1xuICAgICAgaW5wdXQ6IHBhc3NwaHJhc2UsXG4gICAgICBwYXNzd29yZDogcGFzc2NvZGVFbmNyeXB0aW9uQ29kZSxcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBidWlsZEtleWNhcmRRckRhdGEoeyAuLi5xck9wdGlvbnMsIGJhY2t1cEtleWNoYWluIH0sIGVuY3J5cHRlZFdhbGxldFBhc3Njb2RlKTtcbn1cblxuLyoqXG4gKiBBc3luYyB2ZXJzaW9uIG9mIGdldEtleURhdGEgd2l0aCBzdXBwb3J0IGZvciB2MiAoQXJnb24yaWQpIGVuY3J5cHRpb24uXG4gKiBTZXF1ZW50aWFsIGVuY3J5cHQ6IGJhY2t1cCBrZXkgZmlyc3QsIHRoZW4gcGFzc2NvZGUgKG1hdGNoZXMgb3JpZ2luYWwgZ2V0S2V5RGF0YUFzeW5jKS5cbiAqIEBwYXJhbSBvcHRpb25zXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldEtleURhdGFBc3luYyhvcHRpb25zOiBHZXRLZXlEYXRhQXN5bmNPcHRpb25zKTogUHJvbWlzZTxhbnk+IHtcbiAgY29uc3QgeyBlbmNyeXB0LCBiYWNrdXBLZXljaGFpbiwgcGFzc3BocmFzZSwgcGFzc2NvZGVFbmNyeXB0aW9uQ29kZSwgZW5jcnlwdGlvblZlcnNpb24sIC4uLnFyT3B0aW9ucyB9ID0gb3B0aW9ucztcblxuICBpZiAoYmFja3VwS2V5Y2hhaW4ucHJ2ICYmIHBhc3NwaHJhc2UpIHtcbiAgICBiYWNrdXBLZXljaGFpbi5lbmNyeXB0ZWRQcnYgPSBhd2FpdCBlbmNyeXB0KHtcbiAgICAgIGlucHV0OiBiYWNrdXBLZXljaGFpbi5wcnYsXG4gICAgICBwYXNzd29yZDogcGFzc3BocmFzZSxcbiAgICAgIGVuY3J5cHRpb25WZXJzaW9uLFxuICAgIH0pO1xuICB9XG5cbiAgbGV0IGVuY3J5cHRlZFdhbGxldFBhc3Njb2RlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGlmIChwYXNzcGhyYXNlICYmIHBhc3Njb2RlRW5jcnlwdGlvbkNvZGUpIHtcbiAgICBlbmNyeXB0ZWRXYWxsZXRQYXNzY29kZSA9IGF3YWl0IGVuY3J5cHQoe1xuICAgICAgaW5wdXQ6IHBhc3NwaHJhc2UsXG4gICAgICBwYXNzd29yZDogcGFzc2NvZGVFbmNyeXB0aW9uQ29kZSxcbiAgICAgIGVuY3J5cHRpb25WZXJzaW9uLFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGJ1aWxkS2V5Y2FyZFFyRGF0YSh7IC4uLnFyT3B0aW9ucywgYmFja3VwS2V5Y2hhaW4gfSwgZW5jcnlwdGVkV2FsbGV0UGFzc2NvZGUpO1xufVxuXG5pbnRlcmZhY2UgRHJhd0tleWNhcmRMYXlvdXRPcHRpb25zIHtcbiAganNQREY6IGFueTtcbiAgUVJDb2RlOiBhbnk7XG4gIGFjdGl2YXRpb25Db2RlOiBzdHJpbmc7XG4gIHdhbGxldExhYmVsOiBzdHJpbmc7XG4gIGNvaW5OYW1lOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBEcmF3S2V5Y2FyZE9wdGlvbnMgZXh0ZW5kcyBHZXRLZXlEYXRhT3B0aW9ucywgRHJhd0tleWNhcmRMYXlvdXRPcHRpb25zIHtcbiAgY29pblNob3J0TmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBEcmF3S2V5Y2FyZEFzeW5jT3B0aW9ucyA9IE9taXQ8RHJhd0tleWNhcmRPcHRpb25zLCAnZW5jcnlwdCc+ICYge1xuICBlbmNyeXB0OiBFbmNyeXB0Rm5Bc3luYztcbiAgZW5jcnlwdGlvblZlcnNpb24/OiBFbmNyeXB0aW9uVmVyc2lvbjtcbn07XG5cbi8qKlxuICogUmVuZGVyIGtleWNhcmQgUERGIHBhZ2VzIGZyb20gcHJlLWJ1aWx0IFFSIGRhdGEuXG4gKi9cbmZ1bmN0aW9uIHJlbmRlcktleWNhcmRQZGYob3B0aW9uczogRHJhd0tleWNhcmRMYXlvdXRPcHRpb25zLCBrZXlEYXRhOiBhbnkpOiBhbnkge1xuICBjb25zdCB7IGpzUERGLCBRUkNvZGUsIGFjdGl2YXRpb25Db2RlLCB3YWxsZXRMYWJlbCwgY29pbk5hbWUgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3QgbWFyZ2luID0gMzA7XG5cbiAgY29uc3QgZm9udCA9IHtcbiAgICBoZWFkZXI6IDI0LFxuICAgIHN1YmhlYWRlcjogMTUsXG4gICAgYm9keTogMTIsXG4gIH07XG5cbiAgY29uc3QgY29sb3IgPSB7XG4gICAgYmxhY2s6ICcjMDAwMDAwJyxcbiAgICBkYXJrZ3JheTogJyM0YzRjNGMnLFxuICAgIGdyYXk6ICcjOWI5YjliJyxcbiAgICByZWQ6ICcjZTIxZTFlJyxcbiAgfTtcblxuICAvLyBkb2N1bWVudCBkZXRhaWxzXG4gIGNvbnN0IHdpZHRoID0gOC41ICogNzI7XG4gIGxldCB5ID0gMDtcblxuICAvLyBIZWxwZXJzIGZvciBkYXRhIGZvcm1hdHRpbmcgLyBwb3NpdGlvbmluZyBvbiB0aGUgcGFwZXJcbiAgY29uc3QgbGVmdCA9ICh4KSA9PiBtYXJnaW4gKyB4O1xuICBjb25zdCBtb3ZlRG93biA9ICh5RGVsdGEpID0+IHtcbiAgICB5ICs9IHlEZWx0YTtcbiAgfTtcblxuICBjb25zdCBkb2MgPSBuZXcganNQREYoJ3BvcnRyYWl0JywgJ3B0JywgJ2xldHRlcicpO1xuICBkb2Muc2V0Rm9udCgnaGVsdmV0aWNhJyk7XG5cbiAgLy8gUERGIEhlYWRlciBBcmVhIC0gaW5jbHVkZXMgdGhlIGxvZ28gYW5kIGNvbXBhbnkgbmFtZVxuICAvLyBUaGlzIGlzIGRhdGEgZm9yIHRoZSBCaXRHbyBsb2dvIGluIHRoZSB0b3AgbGVmdCBvZiB0aGUgUERGXG4gIG1vdmVEb3duKDMwKTtcblxuICAvLyBXZSBkb24ndCBjdXJyZW50bHkgYWRkIGFuIGltYWdlLCBzaW5jZSB0aGF0IHBhdGggaXMgZGVwZW5kZW50IG9uIEJpdEdvIGZyb250ZW5kXG4gIC8vIGRvYy5hZGRJbWFnZShjb2luVXRpbGl0eS5nZXRTZWxlY3RlZENvaW5PYmooKS5rZXlDYXJkSW1hZ2UsIGxlZnQoMCksIHkgKyAxMCk7XG5cbiAgLy8gQWN0aXZhdGlvbiBDb2RlXG4gIG1vdmVEb3duKDgpO1xuICBkb2Muc2V0Rm9udFNpemUoZm9udC5ib2R5KS5zZXRUZXh0Q29sb3IoY29sb3IuZ3JheSk7XG4gIGRvYy50ZXh0KCdBY3RpdmF0aW9uIENvZGUnLCBsZWZ0KDQ2MCksIHkpO1xuXG4gIGRvYy5zZXRGb250U2l6ZShmb250LmhlYWRlcikuc2V0VGV4dENvbG9yKGNvbG9yLmJsYWNrKTtcbiAgbW92ZURvd24oMjUpO1xuICBkb2MudGV4dCgnWW91ciBCaXRHbyBLZXlDYXJkJywgbGVmdCgxNTApLCB5KTtcbiAgZG9jLnNldEZvbnRTaXplKGZvbnQuaGVhZGVyKS5zZXRUZXh0Q29sb3IoY29sb3IuZ3JheSk7XG4gIGRvYy50ZXh0KGFjdGl2YXRpb25Db2RlLnRvU3RyaW5nKCksIGxlZnQoNDYwKSwgeSk7XG5cbiAgLy8gU3ViaGVhZGVyXG4gIC8vIHRpdGxlc1xuICBtb3ZlRG93bihtYXJnaW4pO1xuICBkb2Muc2V0Rm9udFNpemUoZm9udC5ib2R5KS5zZXRUZXh0Q29sb3IoY29sb3IuZ3JheSk7XG4gIGRvYy50ZXh0KFxuICAgIGBDcmVhdGVkIG9uICR7bmV3IERhdGUoKS50b0RhdGVTdHJpbmcoKX0gYnkgJHt3aW5kb3cubG9jYXRpb24uaG9zdG5hbWV9IGZvciB3YWxsZXQgbmFtZWQgJHt3YWxsZXRMYWJlbH1gLFxuICAgIGxlZnQoMCksXG4gICAgeVxuICApO1xuICAvLyBjb3B5XG4gIG1vdmVEb3duKDI1KTtcbiAgZG9jLnNldEZvbnRTaXplKGZvbnQuc3ViaGVhZGVyKS5zZXRUZXh0Q29sb3IoY29sb3IuYmxhY2spO1xuICBkb2MudGV4dCh3YWxsZXRMYWJlbCwgbGVmdCgwKSwgeSk7XG4gIC8vIFJlZCBCYXJcbiAgbW92ZURvd24oMjApO1xuICBkb2Muc2V0RmlsbENvbG9yKDI1NSwgMjMwLCAyMzApO1xuICBkb2MucmVjdChsZWZ0KDApLCB5LCB3aWR0aCAtIDIgKiBtYXJnaW4sIDMyLCAnRicpO1xuXG4gIC8vIHdhcm5pbmcgbWVzc2FnZVxuICBtb3ZlRG93bigyMCk7XG4gIGRvYy5zZXRGb250U2l6ZShmb250LmJvZHkpLnNldFRleHRDb2xvcihjb2xvci5yZWQpO1xuICBkb2MudGV4dCgnUHJpbnQgdGhpcyBkb2N1bWVudCwgb3Iga2VlcCBpdCBzZWN1cmVseSBvZmZsaW5lLiBTZWUgc2Vjb25kIHBhZ2UgZm9yIEZBUS4nLCBsZWZ0KDc1KSwgeSk7XG5cbiAgbW92ZURvd24oMzUpO1xuICBjb25zdCBxclNpemUgPSAxMzA7XG5cbiAgLy8gRHJhdyBlYWNoIEJveCB3aXRoIFFSIGNvZGUgYW5kIGRlc2NyaXB0aW9uXG4gIE9iamVjdC5rZXlzKGtleURhdGEpLmZvckVhY2goZnVuY3Rpb24gKGtleVR5cGUpIHtcbiAgICBjb25zdCBrZXkgPSBrZXlEYXRhW2tleVR5cGVdO1xuICAgIGNvbnN0IHRvcFkgPSB5O1xuXG4gICAgLy8gRG9uJ3QgaW5kZW50IGlmIHdlJ3JlIG5vdCBwcm9kdWNpbmcgUVIgY29kZXNcbiAgICBjb25zdCB0ZXh0TGVmdCA9ICEhUVJDb2RlID8gbGVmdChxclNpemUgKyAxNSkgOiBsZWZ0KDE1KTtcblxuICAgIC8vIERyYXcgYSBRUiBjb2RlIGlmIGxpYnJhcnkgaXMgYXZhaWxhYmxlXG4gICAgaWYgKFFSQ29kZSkge1xuICAgICAgY29uc3QgZGF0YVVSTCA9IG5ldyBRUkNvZGUoeyB2YWx1ZToga2V5LmRhdGEsIHNpemU6IHFyU2l6ZSB9KS50b0RhdGFVUkwoJ2ltYWdlL2pwZWcnKTtcbiAgICAgIGRvYy5hZGRJbWFnZShkYXRhVVJMLCBsZWZ0KDApLCB5LCBxclNpemUsIHFyU2l6ZSk7XG4gICAgfVxuXG4gICAgZG9jLnNldEZvbnRTaXplKGZvbnQuc3ViaGVhZGVyKS5zZXRUZXh0Q29sb3IoY29sb3IuYmxhY2spO1xuICAgIG1vdmVEb3duKDEwKTtcbiAgICBkb2MudGV4dChrZXkudGl0bGUsIHRleHRMZWZ0LCB5KTtcbiAgICBtb3ZlRG93bigxNSk7XG4gICAgZG9jLnNldEZvbnRTaXplKGZvbnQuYm9keSkuc2V0VGV4dENvbG9yKGNvbG9yLmRhcmtncmF5KTtcbiAgICBkb2MudGV4dChrZXkuZGVzYywgdGV4dExlZnQsIHkpO1xuICAgIG1vdmVEb3duKDMwKTtcbiAgICBkb2Muc2V0Rm9udFNpemUoZm9udC5ib2R5IC0gMik7XG4gICAgZG9jLnRleHQoJ0RhdGE6JywgdGV4dExlZnQsIHkpO1xuICAgIG1vdmVEb3duKDE1KTtcbiAgICBjb25zdCBpbm5lcldpZHRoID0gNzIgKiA4LjUgLSB0ZXh0TGVmdCAtIDMwO1xuICAgIGRvYy5zZXRGb250KCdjb3VyaWVyJykuc2V0Rm9udFNpemUoOSkuc2V0VGV4dENvbG9yKGNvbG9yLmJsYWNrKTtcbiAgICBjb25zdCBsaW5lcyA9IGRvYy5zcGxpdFRleHRUb1NpemUoa2V5LmRhdGEsIGlubmVyV2lkdGgpO1xuICAgIGRvYy50ZXh0KGxpbmVzLCB0ZXh0TGVmdCwgeSk7XG5cbiAgICAvLyBBZGQga2V5IElEIChkZXJpdmF0aW9uIHN0cmluZykgaWYgaXQgZXhpc3RzXG4gICAgaWYgKGtleS5rZXlJRCkge1xuICAgICAgY29uc3QgdGV4dCA9ICdLZXkgSWQ6ICcgKyBrZXkua2V5SUQ7XG4gICAgICAvLyBHcmF5IGJhclxuICAgICAgbW92ZURvd24oNDUpO1xuICAgICAgZG9jLnNldEZpbGxDb2xvcigyNDcsIDI0OSwgMjQ5KTsgLy8gR3JheSBiYWNrZ3JvdW5kXG4gICAgICBkb2Muc2V0RHJhd0NvbG9yKDAsIDAsIDApOyAvLyBCb3JkZXJcbiAgICAgIGRvYy5yZWN0KHRleHRMZWZ0LCB5LCB3aWR0aCwgMTUsICdGRCcpO1xuXG4gICAgICBkb2MudGV4dCh0ZXh0LCB0ZXh0TGVmdCArIDUsIHkgKyAxMCk7XG4gICAgfVxuXG4gICAgZG9jLnNldEZvbnQoJ2hlbHZldGljYScpO1xuICAgIC8vIE1vdmUgZG93biB0aGUgc2l6ZSBvZiB0aGUgUVIgY29kZSBtaW51cyBhY2N1bXVsYXRlZCBoZWlnaHQgb24gdGhlIHJpZ2h0IHNpZGUsIHBsdXMgYnVmZmVyXG4gICAgbW92ZURvd24ocXJTaXplIC0gKHkgLSB0b3BZKSArIDE1KTtcbiAgfSk7XG5cbiAgLy8gQWRkIGEgbmV3IHBhZ2UgKFEgKyBBIHBhZ2UpXG4gIGRvYy5hZGRQYWdlKCk7XG5cbiAgLy8gMm5kIHBhZ2UgdGl0bGVcbiAgeSA9IDA7XG4gIG1vdmVEb3duKDU1KTtcbiAgZG9jLnNldEZvbnRTaXplKGZvbnQuaGVhZGVyKS5zZXRUZXh0Q29sb3IoY29sb3IuYmxhY2spO1xuICBkb2MudGV4dCgnQml0R28gS2V5Q2FyZCBGQVEnLCBsZWZ0KDApLCB5KTtcblxuICBjb25zdCBxdWVzdGlvbnMgPSBnZW5lcmF0ZVF1ZXN0aW9ucyhjb2luTmFtZSk7XG5cbiAgLy8gRHJhdyB0aGUgUSArIEEgZGF0YSBvbiB0aGUgc2Vjb25kIHBhZ2VcbiAgbW92ZURvd24oMzApO1xuICBxdWVzdGlvbnMuZm9yRWFjaChmdW5jdGlvbiAocSkge1xuICAgIGRvYy5zZXRGb250U2l6ZShmb250LnN1YmhlYWRlcikuc2V0VGV4dENvbG9yKGNvbG9yLmJsYWNrKTtcbiAgICBkb2MudGV4dChxLnEsIGxlZnQoMCksIHkpO1xuICAgIG1vdmVEb3duKDIwKTtcbiAgICBkb2Muc2V0Rm9udFNpemUoZm9udC5ib2R5KS5zZXRUZXh0Q29sb3IoY29sb3IuZGFya2dyYXkpO1xuICAgIHEuYS5mb3JFYWNoKGZ1bmN0aW9uIChsaW5lKSB7XG4gICAgICBkb2MudGV4dChsaW5lLCBsZWZ0KDApLCB5KTtcbiAgICAgIG1vdmVEb3duKGZvbnQuYm9keSArIDMpO1xuICAgIH0pO1xuICAgIG1vdmVEb3duKDIyKTtcbiAgfSk7XG5cbiAgcmV0dXJuIGRvYztcbn1cblxuLyoqXG4gKiBUT0RPOiBEZXByZWNhdGUgdGhpcyBmdW5jdGlvbiBpbiBmYXZvciBvZiBkcmF3S2V5Y2FyZEFzeW5jIG9uY2UgdjIgZW5jcnlwdGlvbiBpcyBkZWZhdWx0LlxuICogRHJhdyBhIGtleWNhcmQgaW50byBhIG5ldyBwZGYgZG9jdW1lbnQgb2JqZWN0XG4gKiBAcGFyYW0gb3B0aW9uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZHJhd0tleWNhcmQob3B0aW9uczogRHJhd0tleWNhcmRPcHRpb25zKTogYW55IHtcbiAgY29uc3Qge1xuICAgIGVuY3J5cHQsXG4gICAgcGFzc3BocmFzZSxcbiAgICBwYXNzY29kZUVuY3J5cHRpb25Db2RlLFxuICAgIHdhbGxldEtleUlELFxuICAgIGJhY2t1cEtleUlELFxuICAgIHVzZXJLZXljaGFpbixcbiAgICBiaXRnb0tleWNoYWluLFxuICAgIGJhY2t1cEtleWNoYWluLFxuICAgIGNvaW5TaG9ydE5hbWUsXG4gICAganNQREYsXG4gICAgUVJDb2RlLFxuICAgIGFjdGl2YXRpb25Db2RlLFxuICAgIHdhbGxldExhYmVsLFxuICAgIGNvaW5OYW1lLFxuICB9ID0gb3B0aW9ucztcblxuICBjb25zdCBrZXlEYXRhID0gZ2V0S2V5RGF0YSh7XG4gICAgZW5jcnlwdCxcbiAgICBjb2luU2hvcnROYW1lLFxuICAgIHBhc3NwaHJhc2UsXG4gICAgcGFzc2NvZGVFbmNyeXB0aW9uQ29kZSxcbiAgICB3YWxsZXRLZXlJRCxcbiAgICBiYWNrdXBLZXlJRCxcbiAgICB1c2VyS2V5Y2hhaW4sXG4gICAgYml0Z29LZXljaGFpbixcbiAgICBiYWNrdXBLZXljaGFpbixcbiAgfSk7XG5cbiAgcmV0dXJuIHJlbmRlcktleWNhcmRQZGYoeyBqc1BERiwgUVJDb2RlLCBhY3RpdmF0aW9uQ29kZSwgd2FsbGV0TGFiZWwsIGNvaW5OYW1lIH0sIGtleURhdGEpO1xufVxuXG4vKipcbiAqIEFzeW5jIHZlcnNpb24gb2YgZHJhd0tleWNhcmQgd2l0aCBzdXBwb3J0IGZvciB2MiAoQXJnb24yaWQpIGVuY3J5cHRpb24uXG4gKiBVc2UgdGhpcyB3aGVuIHRoZSBlbmNyeXB0IGNhbGxiYWNrIG1heSByZXR1cm4gYSBQcm9taXNlIChlLmcuIGVuY3J5cHRBc3luYykuXG4gKlxuICogRHJhdyBhIGtleWNhcmQgaW50byBhIG5ldyBwZGYgZG9jdW1lbnQgb2JqZWN0XG4gKiBAcGFyYW0gb3B0aW9uc1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZHJhd0tleWNhcmRBc3luYyhvcHRpb25zOiBEcmF3S2V5Y2FyZEFzeW5jT3B0aW9ucyk6IFByb21pc2U8YW55PiB7XG4gIGNvbnN0IHtcbiAgICBlbmNyeXB0LFxuICAgIHBhc3NwaHJhc2UsXG4gICAgcGFzc2NvZGVFbmNyeXB0aW9uQ29kZSxcbiAgICB3YWxsZXRLZXlJRCxcbiAgICBiYWNrdXBLZXlJRCxcbiAgICB1c2VyS2V5Y2hhaW4sXG4gICAgYml0Z29LZXljaGFpbixcbiAgICBiYWNrdXBLZXljaGFpbixcbiAgICBjb2luU2hvcnROYW1lLFxuICAgIGpzUERGLFxuICAgIFFSQ29kZSxcbiAgICBhY3RpdmF0aW9uQ29kZSxcbiAgICB3YWxsZXRMYWJlbCxcbiAgICBjb2luTmFtZSxcbiAgICBlbmNyeXB0aW9uVmVyc2lvbixcbiAgfSA9IG9wdGlvbnM7XG5cbiAgLy8gR2V0IHRoZSBkYXRhIGZvciB0aGUgZmlyc3QgcGFnZSAocXIgY29kZXMpXG4gIGNvbnN0IGtleURhdGEgPSBhd2FpdCBnZXRLZXlEYXRhQXN5bmMoe1xuICAgIGVuY3J5cHQsXG4gICAgY29pblNob3J0TmFtZSxcbiAgICBwYXNzcGhyYXNlLFxuICAgIHBhc3Njb2RlRW5jcnlwdGlvbkNvZGUsXG4gICAgd2FsbGV0S2V5SUQsXG4gICAgYmFja3VwS2V5SUQsXG4gICAgdXNlcktleWNoYWluLFxuICAgIGJpdGdvS2V5Y2hhaW4sXG4gICAgYmFja3VwS2V5Y2hhaW4sXG4gICAgZW5jcnlwdGlvblZlcnNpb24sXG4gIH0pO1xuXG4gIHJldHVybiByZW5kZXJLZXljYXJkUGRmKHsganNQREYsIFFSQ29kZSwgYWN0aXZhdGlvbkNvZGUsIHdhbGxldExhYmVsLCBjb2luTmFtZSB9LCBrZXlEYXRhKTtcbn1cbiJdfQ==
@@ -11,6 +11,7 @@ import { CustomMPCv2SigningRound1GeneratingFunction, CustomMPCv2SigningRound2Gen
11
11
  import { BaseEcdsaUtils } from './base';
12
12
  import { EcdsaMPCv2KeyGenSendFn } from './ecdsaMPCv2KeyGenSender';
13
13
  import { BitGoBase } from '../../../bitgoBase';
14
+ import type { EcdsaMPCv2KeyGenCallbacks } from '../../../wallet/iWallets';
14
15
  export declare class EcdsaMPCv2Utils extends BaseEcdsaUtils {
15
16
  private static readonly DKLS23_SIGNING_USER_GPG_KEY;
16
17
  private static readonly DKLS23_SIGNING_ROUND1_STATE;
@@ -69,6 +70,14 @@ export declare class EcdsaMPCv2Utils extends BaseEcdsaUtils {
69
70
  private addBackupKeychain;
70
71
  private getUserAndBackupSession;
71
72
  private addBitgoKeychain;
73
+ /**
74
+ * Creates ECDSA MPCv2 keychains using external signer callbacks instead of a passphrase.
75
+ * The external signer holds all private key material; the SDK only coordinates the DKG protocol.
76
+ */
77
+ createKeychainsWithExternalSigner(params: {
78
+ enterprise: string;
79
+ callbacks: EcdsaMPCv2KeyGenCallbacks;
80
+ }): Promise<KeychainsTriplet>;
72
81
  sendKeyGenerationRound1(enterprise: string, userGpgPublicKey: string, backupGpgPublicKey: string, payload: DklsTypes.AuthEncMessages & {
73
82
  walletId?: string;
74
83
  }): Promise<MPCv2KeyGenRound1Response>;
@@ -1 +1 @@
1
- {"version":3,"file":"ecdsaMPCv2.d.ts","sourceRoot":"","sources":["../../../../../../src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAiD,SAAS,EAAa,MAAM,oBAAoB,CAAC;AAGzG,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAKhC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EACL,qBAAqB,EACrB,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB,EAEzB,eAAe,EACf,4BAA4B,EAG7B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAsB,QAAQ,EAAW,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AACrG,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAGxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAUhD,OAAO,EACL,0CAA0C,EAC1C,0CAA0C,EAC1C,0CAA0C,EAC1C,WAAW,EACX,oBAAoB,EACpB,SAAS,EACT,mBAAmB,EACnB,0BAA0B,EAE1B,6BAA6B,EAE7B,SAAS,EAGV,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,sBAAsB,EAA6B,MAAM,0BAA0B,CAAC;AAG7F,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG/C,qBAAa,eAAgB,SAAQ,cAAc;IACjD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,2BAA2B,CAAiC;IACpF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,2BAA2B,CAAiC;IACpF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,2BAA2B,CAAiC;IAEpF,kBAAkB;IACZ,eAAe,CAAC,MAAM,EAAE;QAC5B,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,8BAA8B,CAAC,EAAE,MAAM,CAAC;QACxC,QAAQ,CAAC,EAAE,wBAAwB,CAAC;QACpC,YAAY,CAAC,EAAE,yBAAyB,CAAC;QACzC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;KACvC,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA2SvB,yBAAyB,CAC7B,gBAAgB,EAAE,4BAA4B,EAC9C,cAAc,EAAE,MAAM,EACtB,eAAe,CAAC,EAAE,MAAM,EACxB,sBAAsB,CAAC,EAAE,MAAM,EAC/B,UAAU,CAAC,EAAE,MAAM,EACnB,8BAA8B,CAAC,EAAE,MAAM,EACvC,YAAY,CAAC,EAAE,yBAAyB,EACxC,iBAAiB,CAAC,EAAE;QAClB,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QAC5C,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QAC7C,OAAO,IAAI,IAAI,CAAC;KACjB,EACD,iBAAiB,CAAC,EAAE,iBAAiB,EACrC,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,QAAQ,CAAC;IAwEpB;;;;;;;OAOG;IACH,MAAM,CAAC,qBAAqB,CAC1B,iBAAiB,EAAE,MAAM,EACzB,OAAO,EAAE,gBAAgB,CAAC,MAAM,GAAG,gBAAgB,CAAC,IAAI,GACvD,SAAS,CAAC,YAAY;IAezB;;;;;OAKG;IACH,iCAAiC,CAAC,MAAM,EAAE;QAAE,iBAAiB,EAAE,MAAM,CAAC;QAAC,mBAAmB,EAAE,MAAM,CAAA;KAAE,GAAG;QACrG,iBAAiB,EAAE,SAAS,CAAC,YAAY,CAAC;QAC1C,mBAAmB,EAAE,SAAS,CAAC,YAAY,CAAC;KAC7C;IAuBD;;;;;;;OAOG;IACH,MAAM,CAAC,gCAAgC,CAAC,EACtC,kBAAkB,EAClB,eAAe,EACf,MAAM,EACN,GAAG,GACJ,EAAE;QACD,kBAAkB,EAAE,MAAM,CAAC;QAC3B,eAAe,EAAE,MAAM,CAAC;QACxB,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;QACnB,GAAG,EAAE,KAAK,CAAC;KACZ,GAAG,SAAS,CAAC,YAAY;YAkCZ,eAAe;YA6Bf,iBAAiB;IA0B/B,OAAO,CAAC,uBAAuB;YAmBjB,gBAAgB;IAKxB,uBAAuB,CAC3B,UAAU,EAAE,MAAM,EAClB,gBAAgB,EAAE,MAAM,EACxB,kBAAkB,EAAE,MAAM,EAC1B,OAAO,EAAE,SAAS,CAAC,eAAe,GAAG;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GACzD,OAAO,CAAC,yBAAyB,CAAC;IAS/B,uBAAuB,CAC3B,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,SAAS,CAAC,eAAe,GACjC,OAAO,CAAC,yBAAyB,CAAC;IAI/B,uBAAuB,CAC3B,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,SAAS,CAAC,eAAe,GACjC,OAAO,CAAC,yBAAyB,CAAC;IAI/B,+BAA+B,CACnC,QAAQ,EAAE,sBAAsB,CAAC,yBAAyB,CAAC,EAC3D,gBAAgB,EAAE,MAAM,EACxB,kBAAkB,EAAE,MAAM,EAC1B,OAAO,EAAE,SAAS,CAAC,eAAe,GAAG;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GACzD,OAAO,CAAC,yBAAyB,CAAC;IAiB/B,+BAA+B,CACnC,QAAQ,EAAE,sBAAsB,CAAC,yBAAyB,CAAC,EAC3D,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,SAAS,CAAC,eAAe,GACjC,OAAO,CAAC,yBAAyB,CAAC;IAkC/B,+BAA+B,CACnC,QAAQ,EAAE,sBAAsB,CAAC,yBAAyB,CAAC,EAC3D,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,SAAS,CAAC,eAAe,GACjC,OAAO,CAAC,yBAAyB,CAAC;IA4BrC;;;;;;;;;OASG;IAEG,aAAa,CAAC,MAAM,EAAE,6BAA6B,GAAG,OAAO,CAAC,SAAS,CAAC;IAK9E;;;;;;OAMG;IACG,uBAAuB,CAAC,MAAM,EAAE,0BAA0B,GAAG,OAAO,CAAC,SAAS,CAAC;YAKvE,eAAe;IAkN7B,2BAA2B,CAAC,gBAAgB,EAAE,qBAAqB;;;;;;;IAOnE,gBAAgB,CAAC,UAAU,EAAE,eAAe,EAAE,UAAU,CAAC,EAAE,MAAM;;;;;;;;;IAWjE;;;;;OAKG;IACH,OAAO,CAAC,8BAA8B;IAuBtC;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAyB1B,kBAAkB;IACZ,oCAAoC,CACxC,MAAM,EAAE,SAAS,GAAG,mBAAmB,EACvC,yCAAyC,EAAE,0CAA0C,EACrF,yCAAyC,EAAE,0CAA0C,EACrF,yCAAyC,EAAE,0CAA0C,EACrF,WAAW,GAAE,WAA4B,GACxC,OAAO,CAAC,SAAS,CAAC;IAyFf,wBAAwB,CAAC,MAAM,EAAE;QACrC,SAAS,EAAE,SAAS,CAAC;QACrB,GAAG,EAAE,MAAM,CAAC;QACZ,gBAAgB,EAAE,MAAM,CAAC;QACzB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,GAAG,OAAO,CAAC;QACV,oBAAoB,EAAE,oBAAoB,CAAC;QAC3C,aAAa,EAAE,MAAM,CAAC;QACtB,sBAAsB,EAAE,MAAM,CAAC;QAC/B,sBAAsB,EAAE,MAAM,CAAC;KAChC,CAAC;IAgDI,wBAAwB,CAAC,MAAM,EAAE;QACrC,SAAS,EAAE,SAAS,CAAC;QACrB,GAAG,EAAE,MAAM,CAAC;QACZ,gBAAgB,EAAE,MAAM,CAAC;QACzB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,sBAAsB,EAAE,MAAM,CAAC;QAC/B,sBAAsB,EAAE,MAAM,CAAC;KAChC,GAAG,OAAO,CAAC;QACV,oBAAoB,EAAE,oBAAoB,CAAC;QAC3C,sBAAsB,EAAE,MAAM,CAAC;KAChC,CAAC;IA0FI,wBAAwB,CAAC,MAAM,EAAE;QACrC,SAAS,EAAE,SAAS,CAAC;QACrB,GAAG,EAAE,MAAM,CAAC;QACZ,gBAAgB,EAAE,MAAM,CAAC;QACzB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,sBAAsB,EAAE,MAAM,CAAC;QAC/B,sBAAsB,EAAE,MAAM,CAAC;KAChC,GAAG,OAAO,CAAC;QACV,oBAAoB,EAAE,oBAAoB,CAAC;KAC5C,CAAC;CA+DH;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAYrG;AAED;;GAEG;AACH,wBAAsB,0BAA0B,CAC9C,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,MAAM,GAAG,SAAS,EACpC,KAAK,EAAE,SAAS,GACf,OAAO,CAAC,OAAO,CAAC,CAYlB;AAED;;;;;;;GAOG;AACH,wBAAsB,yBAAyB,CAC7C,gBAAgB,EAAE,MAAM,EACxB,kBAAkB,EAAE,MAAM,EAC1B,gBAAgB,CAAC,EAAE,MAAM,EACzB,KAAK,CAAC,EAAE,SAAS,GAChB,OAAO,CAAC;IACT,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC,CAWD;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,MAAM,EACtB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC;IACT,KAAK,EAAE,MAAM,CAAC;IACd,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX,CAAC,CAoBD"}
1
+ {"version":3,"file":"ecdsaMPCv2.d.ts","sourceRoot":"","sources":["../../../../../../src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.ts"],"names":[],"mappings":"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"}