@bitgo/sdk-core 37.10.1 → 38.0.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 (71) hide show
  1. package/dist/src/bitgo/baseCoin/baseCoin.d.ts +1 -3
  2. package/dist/src/bitgo/baseCoin/baseCoin.d.ts.map +1 -1
  3. package/dist/src/bitgo/baseCoin/baseCoin.js +3 -17
  4. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts +2 -2
  5. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts.map +1 -1
  6. package/dist/src/bitgo/baseCoin/iBaseCoin.js +1 -1
  7. package/dist/src/bitgo/bitgoBase.d.ts +3 -6
  8. package/dist/src/bitgo/bitgoBase.d.ts.map +1 -1
  9. package/dist/src/bitgo/bitgoBase.js +1 -1
  10. package/dist/src/bitgo/environments.d.ts.map +1 -1
  11. package/dist/src/bitgo/environments.js +9 -1
  12. package/dist/src/bitgo/internal/keycard.d.ts +9 -18
  13. package/dist/src/bitgo/internal/keycard.d.ts.map +1 -1
  14. package/dist/src/bitgo/internal/keycard.js +8 -56
  15. package/dist/src/bitgo/keychain/decryptKeychain.d.ts +2 -12
  16. package/dist/src/bitgo/keychain/decryptKeychain.d.ts.map +1 -1
  17. package/dist/src/bitgo/keychain/decryptKeychain.js +6 -37
  18. package/dist/src/bitgo/keychain/iKeychains.d.ts +1 -2
  19. package/dist/src/bitgo/keychain/iKeychains.d.ts.map +1 -1
  20. package/dist/src/bitgo/keychain/iKeychains.js +1 -1
  21. package/dist/src/bitgo/keychain/keychains.d.ts +1 -12
  22. package/dist/src/bitgo/keychain/keychains.d.ts.map +1 -1
  23. package/dist/src/bitgo/keychain/keychains.js +16 -44
  24. package/dist/src/bitgo/recovery/initiate.d.ts +2 -15
  25. package/dist/src/bitgo/recovery/initiate.d.ts.map +1 -1
  26. package/dist/src/bitgo/recovery/initiate.js +7 -47
  27. package/dist/src/bitgo/trading/tradingAccount.js +2 -2
  28. package/dist/src/bitgo/utils/tss/addressVerification.d.ts.map +1 -1
  29. package/dist/src/bitgo/utils/tss/addressVerification.js +3 -10
  30. package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts.map +1 -1
  31. package/dist/src/bitgo/utils/tss/baseTSSUtils.js +5 -5
  32. package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.js +7 -7
  33. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts +13 -8
  34. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts.map +1 -1
  35. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.js +78 -103
  36. package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts +9 -0
  37. package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts.map +1 -1
  38. package/dist/src/bitgo/utils/tss/eddsa/eddsa.js +61 -18
  39. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts +3 -3
  40. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts.map +1 -1
  41. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.js +30 -46
  42. package/dist/src/bitgo/wallet/iWallet.d.ts +2 -4
  43. package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -1
  44. package/dist/src/bitgo/wallet/iWallet.js +1 -1
  45. package/dist/src/bitgo/wallet/iWallets.d.ts +96 -2
  46. package/dist/src/bitgo/wallet/iWallets.d.ts.map +1 -1
  47. package/dist/src/bitgo/wallet/iWallets.js +1 -1
  48. package/dist/src/bitgo/wallet/wallet.d.ts +8 -21
  49. package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
  50. package/dist/src/bitgo/wallet/wallet.js +26 -114
  51. package/dist/src/bitgo/wallet/wallets.d.ts +5 -0
  52. package/dist/src/bitgo/wallet/wallets.d.ts.map +1 -1
  53. package/dist/src/bitgo/wallet/wallets.js +123 -27
  54. package/dist/src/index.d.ts +1 -0
  55. package/dist/src/index.d.ts.map +1 -1
  56. package/dist/src/index.js +1 -1
  57. package/dist/test/unit/bitgo/recovery/initiate.js +18 -89
  58. package/dist/test/unit/bitgo/trading/tradingAccount.js +5 -5
  59. package/dist/test/unit/bitgo/utils/tss/addressVerification.js +26 -22
  60. package/dist/test/unit/bitgo/utils/tss/baseTSSUtils.js +14 -14
  61. package/dist/test/unit/bitgo/utils/tss/ecdsa/ecdsaMPCv2.js +129 -10
  62. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaExternalSigner.d.ts +2 -0
  63. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaExternalSigner.d.ts.map +1 -0
  64. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaExternalSigner.js +158 -0
  65. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaMPCv2.js +47 -75
  66. package/dist/test/unit/bitgo/wallet/ofcWalletSignTransaction.js +4 -4
  67. package/dist/test/unit/bitgo/wallet/walletsEncryptionVersion.js +16 -16
  68. package/dist/test/unit/bitgo/wallet/walletsExternalSigner.js +364 -14
  69. package/dist/test/unit/bitgo/wallet/walletsWebauthn.js +2 -5
  70. package/dist/tsconfig.tsbuildinfo +1 -1
  71. package/package.json +4 -4
@@ -82,9 +82,9 @@ describe('Wallet - OFC', function () {
82
82
  const encryptedPrv = 'encrypted-prv-blob';
83
83
  beforeEach(function () {
84
84
  // compiled wallet.js: getUserPrv (sync) → decryptKeychainPrivateKey → bitgo.decrypt
85
- // TypeScript source: getUserPrvAsyncdecryptKeychainPrivateKeyAsync → bitgo.decryptAsync
85
+ // TypeScript source: getUserPrvdecryptKeychainPrivateKey → bitgo.decrypt
86
86
  mockBitGo.decrypt = sinon_1.default.stub().returns(prv);
87
- mockBitGo.decryptAsync = sinon_1.default.stub().resolves(prv);
87
+ mockBitGo.decrypt = sinon_1.default.stub().resolves(prv);
88
88
  });
89
89
  it('should decrypt the keychain with the passphrase and sign via baseCoin.signMessage', async function () {
90
90
  const result = await wallet.signTransaction({
@@ -93,7 +93,7 @@ describe('Wallet - OFC', function () {
93
93
  keychain: { pub: userPub, encryptedPrv },
94
94
  });
95
95
  const decryptCalled = mockBitGo.decrypt.calledWith({ input: encryptedPrv, password: walletPassphrase }) ||
96
- mockBitGo.decryptAsync.calledWith({ input: encryptedPrv, password: walletPassphrase });
96
+ mockBitGo.decrypt.calledWith({ input: encryptedPrv, password: walletPassphrase });
97
97
  decryptCalled.should.be.true();
98
98
  signMessageStub.calledOnceWith({ prv }, payload).should.be.true();
99
99
  mockBitGo.post.called.should.be.false();
@@ -182,4 +182,4 @@ describe('Wallet - OFC', function () {
182
182
  });
183
183
  });
184
184
  });
185
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2ZjV2FsbGV0U2lnblRyYW5zYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGVzdC91bml0L2JpdGdvL3dhbGxldC9vZmNXYWxsZXRTaWduVHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7R0FFRztBQUNILGtEQUEwQjtBQUMxQixrQkFBZ0I7QUFDaEIseUNBQW1EO0FBQ25ELGlEQUFpRDtBQUVqRCxNQUFNLGlCQUFpQixHQUFHO0lBQ3hCLElBQUksRUFBRSxTQUFTO0lBQ2YsYUFBYSxFQUFFLENBQUM7SUFDaEIsSUFBSSxFQUFFLFNBQVM7SUFDZixJQUFJLEVBQUUsU0FBUztJQUNmLFdBQVcsRUFBRSxNQUFNO0lBQ25CLE1BQU0sRUFBRSxLQUFLO0NBQ2QsQ0FBQztBQUVGLFFBQVEsQ0FBQyxjQUFjLEVBQUU7SUFDdkIsSUFBSSxNQUFjLENBQUM7SUFDbkIsSUFBSSxTQUFjLENBQUM7SUFDbkIsSUFBSSxRQUFrQixDQUFDO0lBQ3ZCLElBQUksZUFBZ0MsQ0FBQztJQUNyQyxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0RCxNQUFNLE9BQU8sR0FBRyw0Q0FBNEMsQ0FBQztJQUM3RCxNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUM7SUFDdkIsc0ZBQXNGO0lBQ3RGLE1BQU0sVUFBVSxHQUFHLENBQUMsRUFBRSxPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDdkYsTUFBTSxPQUFPLEdBQ1gsaUhBQWlILENBQUM7SUFFcEgsTUFBTSxVQUFVLEdBQUc7UUFDakIsRUFBRSxFQUFFLGdCQUFnQjtRQUNwQixJQUFJLEVBQUUsU0FBUztRQUNmLElBQUksRUFBRSxDQUFDLFVBQVUsRUFBRSxZQUFZLEVBQUUsV0FBVyxDQUFDO1FBQzdDLElBQUksRUFBRSxTQUFTO1FB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QUFDO2dCQUNULFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUMzRSxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN4RyxDQUFDLENBQUMsQ0FBQztZQUVILEVBQUUsQ0FBQywwREFBMEQsRUFBRSxLQUFLO2dCQUNsRSxNQUFNLE1BQU0sR0FBRyxNQUFNLFlBQVksQ0FBQyxRQUFRLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO2dCQUUzRCxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3ZELFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDdEQsZUFBZSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUN6QyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDbkUsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwcmV0dGllclxuICovXG5pbXBvcnQgc2lub24gZnJvbSAnc2lub24nO1xuaW1wb3J0ICdzaG91bGQnO1xuaW1wb3J0IHsgV2FsbGV0LCBCYXNlQ29pbiB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYyc7XG5pbXBvcnQgeyBPZmNUb2tlbiB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYy9jb2lucyc7XG5cbmNvbnN0IFRFU1RfVE9LRU5fQ09ORklHID0ge1xuICBjb2luOiAnb2ZjdXNkdCcsXG4gIGRlY2ltYWxQbGFjZXM6IDYsXG4gIG5hbWU6ICdPRkNVU0RUJyxcbiAgdHlwZTogJ29mY3VzZHQnLFxuICBiYWNraW5nQ29pbjogJ3VzZHQnLFxuICBpc0ZpYXQ6IGZhbHNlLFxufTtcblxuZGVzY3JpYmUoJ1dhbGxldCAtIE9GQycsIGZ1bmN0aW9uICgpIHtcbiAgbGV0IHdhbGxldDogV2FsbGV0O1xuICBsZXQgbW9ja0JpdEdvOiBhbnk7XG4gIGxldCBvZmNUb2tlbjogT2ZjVG9rZW47XG4gIGxldCBzaWduTWVzc2FnZVN0dWI6IHNpbm9uLlNpbm9uU3R1YjtcbiAgY29uc3Qgc2lnbmF0dXJlQnl0ZXMgPSBCdWZmZXIuZnJvbSgnYWFiYmNjZGQnLCAnaGV4Jyk7XG4gIGNvbnN0IHBheWxvYWQgPSAne1wiYW1vdW50XCI6XCIxMDBcIixcImZyb21cIjpcImFsaWNlXCIsXCJ0b1wiOlwiYm9iXCJ9JztcbiAgY29uc3QgcHJ2ID0gJ3Rlc3QtcHJ2JztcbiAgLy8gYmctPDMyIGhleCBjaGFycz4gaXMgdmFsaWQgZm9yIE9mY1Rva2VuIHdpdGhvdXQgbmVlZGluZyB0byByZXNvbHZlIHRoZSBiYWNraW5nIGNvaW5cbiAgY29uc3QgcmVjaXBpZW50cyA9IFt7IGFkZHJlc3M6ICdiZy1hYWJiY2NkZGVlZmYwMDExMjIzMzQ0NTU2Njc3ODg5OScsIGFtb3VudDogJzEwMCcgfV07XG4gIGNvbnN0IHVzZXJQdWIgPVxuICAgICd4cHViNjYxTXlNd0FxUmJjRnRYZ1M1c1lKQUJxcUc5WUxtQzUxeEVSeGg4dkRNamMzUGlHcFEzVmVRY0hCaUd4YnNyUlhiQ0tRWlp4QnRETXJtQlJ6eFJNa0JKR3NDOWJzWWI1dGdnVkYzakdmRUUnO1xuXG4gIGNvbnN0IHdhbGxldERhdGEgPSB7XG4gICAgaWQ6ICd0ZXN0LXdhbGxldC1pZCcsXG4gICAgY29pbjogJ29mY3VzZHQnLFxuICAgIGtleXM6IFsndXNlci1rZXknLCAnYmFja3VwLWtleScsICdiaXRnby1rZXknXSxcbiAgICB0eXBlOiAndHJhZGluZycsXG4gICAgbXVsdGlzaWdUeXBlOiAnb25jaGFpbicsXG4gICAgZW50ZXJwcmlzZTogJ2VudC1pZCcsXG4gIH07XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBmbHVlbnQgcmVxdWVzdCBtb2NrIHRoYXQgaGFuZGxlcyAucXVlcnkoKS5zZW5kKCkucmVzdWx0KCkgYW5kIC5zZW5kKCkucmVzdWx0KClcbiAgICogY2hhaW5zLCByZXNvbHZpbmcgd2l0aCB0aGUgcHJvdmlkZWQgdmFsdWUuXG4gICAqL1xuICBmdW5jdGlvbiBtYWtlUmVxdWVzdENoYWluKHJlc29sdmVkOiB1bmtub3duKTogYW55IHtcbiAgICBjb25zdCBjaGFpbjogYW55ID0ge307XG4gICAgY2hhaW4ucXVlcnkgPSBzaW5vbi5zdHViKCkucmV0dXJucyhjaGFpbik7XG4gICAgY2hhaW4uc2VuZCA9IHNpbm9uLnN0dWIoKS5yZXR1cm5zKGNoYWluKTtcbiAgICBjaGFpbi5yZXN1bHQgPSBzaW5vbi5zdHViKCkucmVzb2x2ZXMocmVzb2x2ZWQpO1xuICAgIHJldHVybiBjaGFpbjtcbiAgfVxuXG4gIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgIHNpZ25NZXNzYWdlU3R1YiA9IHNpbm9uLnN0dWIoQmFzZUNvaW4ucHJvdG90eXBlLCAnc2lnbk1lc3NhZ2UnKTtcbiAgICBzaWduTWVzc2FnZVN0dWIud2l0aEFyZ3MoeyBwcnYgfSwgcGF5bG9hZCkucmVzb2x2ZXMoc2lnbmF0dXJlQnl0ZXMpO1xuICAgIHNpbm9uLnN0dWIoQmFzZUNvaW4ucHJvdG90eXBlLCAna2V5Y2hhaW5zJykucmV0dXJucyh7XG4gICAgICBnZXRLZXlzRm9yU2lnbmluZzogc2lub24uc3R1YigpLnJlc29sdmVzKFt7IGlkOiB3YWxsZXREYXRhLmtleXNbMF0sIHB1YjogdXNlclB1YiB9XSksXG4gICAgfSBhcyBhbnkpO1xuICAgIG1vY2tCaXRHbyA9IHtcbiAgICAgIHVybDogc2lub24uc3R1YigpLnJldHVybnMoJ2h0dHBzOi8vdGVzdC5iaXRnby5jb20vJyksXG4gICAgICBwb3N0OiBzaW5vbi5zdHViKCksXG4gICAgICBzZXRSZXF1ZXN0VHJhY2VyOiBzaW5vbi5zdHViKCksXG4gICAgfTtcbiAgICBvZmNUb2tlbiA9IG5ldyBPZmNUb2tlbihtb2NrQml0R28sIFRFU1RfVE9LRU5fQ09ORklHKTtcbiAgICBtb2NrQml0R28uY29pbiA9IHNpbm9uLnN0dWIoKS5yZXR1cm5zKG9mY1Rva2VuKTtcbiAgICB3YWxsZXQgPSBuZXcgV2FsbGV0KG1vY2tCaXRHbywgb2ZjVG9rZW4sIHdhbGxldERhdGEpO1xuICB9KTtcblxuICBhZnRlckVhY2goZnVuY3Rpb24gKCkge1xuICAgIHNpbm9uLnJlc3RvcmUoKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3dpdGggdXNlcktleVNpZ25pbmdSZXF1aXJlZDogdHJ1ZSAobG9jYWwgc2lnbmluZyB2aWEgdXNlciBrZXkpJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGJ1aWxkVXJsID0gKCkgPT4gb2ZjVG9rZW4udXJsKCcvd2FsbGV0LycgKyB3YWxsZXREYXRhLmlkICsgJy90eC9idWlsZCcpO1xuICAgIGNvbnN0IHNpZ25VcmwgPSAoKSA9PiBvZmNUb2tlbi51cmwoJy93YWxsZXQvJyArIHdhbGxldERhdGEuaWQgKyAnL3R4L3NpZ24nKTtcbiAgICBjb25zdCBzZW5kVXJsID0gKCkgPT4gb2ZjVG9rZW4udXJsKCcvd2FsbGV0LycgKyB3YWxsZXREYXRhLmlkICsgJy90eC9zZW5kJyk7XG5cbiAgICBkZXNjcmliZSgnc2lnblRyYW5zYWN0aW9uJywgZnVuY3Rpb24gKCkge1xuICAgICAgaXQoJ3Nob3VsZCBjYWxsIGJhc2VDb2luLnNpZ25NZXNzYWdlIHdpdGggdGhlIHBydiBhbmQgcGF5bG9hZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgd2FsbGV0LnNpZ25UcmFuc2FjdGlvbih7IHR4UHJlYnVpbGQ6IHsgcGF5bG9hZCB9IGFzIGFueSwgcHJ2IH0pO1xuXG4gICAgICAgIHNpZ25NZXNzYWdlU3R1Yi5jYWxsZWRPbmNlV2l0aCh7IHBydiB9LCBwYXlsb2FkKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgICBtb2NrQml0R28ucG9zdC5jYWxsZWQuc2hvdWxkLmJlLmZhbHNlKCk7XG4gICAgICAgIHJlc3VsdC5zaG91bGQuZGVlcEVxdWFsKHsgaGFsZlNpZ25lZDogeyBwYXlsb2FkLCBzaWduYXR1cmU6IHNpZ25hdHVyZUJ5dGVzLnRvU3RyaW5nKCdoZXgnKSB9IH0pO1xuICAgICAgfSk7XG5cbiAgICAgIGRlc2NyaWJlKCd3aXRoIHdhbGxldFBhc3NwaHJhc2UgYW5kIGtleWNoYWluJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCB3YWxsZXRQYXNzcGhyYXNlID0gJ3Rlc3QtcGFzc3BocmFzZSc7XG4gICAgICAgIGNvbnN0IGVuY3J5cHRlZFBydiA9ICdlbmNyeXB0ZWQtcHJ2LWJsb2InO1xuXG4gICAgICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgICAgIC8vIGNvbXBpbGVkIHdhbGxldC5qczogZ2V0VXNlclBydiAoc3luYykg4oaSIGRlY3J5cHRLZXljaGFpblByaXZhdGVLZXkg4oaSIGJpdGdvLmRlY3J5cHRcbiAgICAgICAgICAvLyBUeXBlU2NyaXB0IHNvdXJjZTogIGdldFVzZXJQcnZBc3luYyAgICAgICAg4oaSIGRlY3J5cHRLZXljaGFpblByaXZhdGVLZXlBc3luYyDihpIgYml0Z28uZGVjcnlwdEFzeW5jXG4gICAgICAgICAgbW9ja0JpdEdvLmRlY3J5cHQgPSBzaW5vbi5zdHViKCkucmV0dXJucyhwcnYpO1xuICAgICAgICAgIG1vY2tCaXRHby5kZWNyeXB0QXN5bmMgPSBzaW5vbi5zdHViKCkucmVzb2x2ZXMocHJ2KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaXQoJ3Nob3VsZCBkZWNyeXB0IHRoZSBrZXljaGFpbiB3aXRoIHRoZSBwYXNzcGhyYXNlIGFuZCBzaWduIHZpYSBiYXNlQ29pbi5zaWduTWVzc2FnZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB3YWxsZXQuc2lnblRyYW5zYWN0aW9uKHtcbiAgICAgICAgICAgIHR4UHJlYnVpbGQ6IHsgcGF5bG9hZCB9IGFzIGFueSxcbiAgICAgICAgICAgIHdhbGxldFBhc3NwaHJhc2UsXG4gICAgICAgICAgICBrZXljaGFpbjogeyBwdWI6IHVzZXJQdWIsIGVuY3J5cHRlZFBydiB9IGFzIGFueSxcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGNvbnN0IGRlY3J5cHRDYWxsZWQgPVxuICAgICAgICAgICAgbW9ja0JpdEdvLmRlY3J5cHQuY2FsbGVkV2l0aCh7IGlucHV0OiBlbmNyeXB0ZWRQcnYsIHBhc3N3b3JkOiB3YWxsZXRQYXNzcGhyYXNlIH0pIHx8XG4gICAgICAgICAgICBtb2NrQml0R28uZGVjcnlwdEFzeW5jLmNhbGxlZFdpdGgoeyBpbnB1dDogZW5jcnlwdGVkUHJ2LCBwYXNzd29yZDogd2FsbGV0UGFzc3BocmFzZSB9KTtcbiAgICAgICAgICBkZWNyeXB0Q2FsbGVkLnNob3VsZC5iZS50cnVlKCk7XG4gICAgICAgICAgc2lnbk1lc3NhZ2VTdHViLmNhbGxlZE9uY2VXaXRoKHsgcHJ2IH0sIHBheWxvYWQpLnNob3VsZC5iZS50cnVlKCk7XG4gICAgICAgICAgbW9ja0JpdEdvLnBvc3QuY2FsbGVkLnNob3VsZC5iZS5mYWxzZSgpO1xuICAgICAgICAgIHJlc3VsdC5zaG91bGQuZGVlcEVxdWFsKHsgaGFsZlNpZ25lZDogeyBwYXlsb2FkLCBzaWduYXR1cmU6IHNpZ25hdHVyZUJ5dGVzLnRvU3RyaW5nKCdoZXgnKSB9IH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ3ByZWJ1aWxkQW5kU2lnblRyYW5zYWN0aW9uJywgZnVuY3Rpb24gKCkge1xuICAgICAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgIG1vY2tCaXRHby5wb3N0LndpdGhBcmdzKGJ1aWxkVXJsKCkpLnJldHVybnMobWFrZVJlcXVlc3RDaGFpbih7IHBheWxvYWQgfSkpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgY2FsbCB0aGUgcHJlYnVpbGQgQVBJIHRoZW4gc2lnbiBsb2NhbGx5IHdpdGggdGhlIHBydicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgd2FsbGV0LnByZWJ1aWxkQW5kU2lnblRyYW5zYWN0aW9uKHsgcHJ2IH0pO1xuXG4gICAgICAgIG1vY2tCaXRHby5wb3N0LmNhbGxlZFdpdGgoYnVpbGRVcmwoKSkuc2hvdWxkLmJlLnRydWUoKTtcbiAgICAgICAgbW9ja0JpdEdvLnBvc3QuY2FsbGVkV2l0aChzaWduVXJsKCkpLnNob3VsZC5iZS5mYWxzZSgpO1xuICAgICAgICBzaWduTWVzc2FnZVN0dWIuY2FsbGVkT25jZVdpdGgoeyBwcnYgfSwgcGF5bG9hZCkuc2hvdWxkLmJlLnRydWUoKTtcbiAgICAgICAgcmVzdWx0LnNob3VsZC5kZWVwRXF1YWwoeyBoYWxmU2lnbmVkOiB7IHBheWxvYWQsIHNpZ25hdHVyZTogc2lnbmF0dXJlQnl0ZXMudG9TdHJpbmcoJ2hleCcpIH0gfSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdzZW5kTWFueScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgICBtb2NrQml0R28ucG9zdC53aXRoQXJncyhidWlsZFVybCgpKS5yZXR1cm5zKG1ha2VSZXF1ZXN0Q2hhaW4oeyBwYXlsb2FkIH0pKTtcbiAgICAgICAgbW9ja0JpdEdvLnBvc3Qud2l0aEFyZ3Moc2VuZFVybCgpKS5yZXR1cm5zKG1ha2VSZXF1ZXN0Q2hhaW4oeyB0eGlkOiAndGVzdC10eGlkJywgc3RhdHVzOiAnc2lnbmVkJyB9KSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBwcmVidWlsZCwgc2lnbiBsb2NhbGx5LCBhbmQgc3VibWl0IHRvIHRoZSBzZW5kIGVuZHBvaW50JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB3YWxsZXQuc2VuZE1hbnkoeyByZWNpcGllbnRzLCBwcnYgfSk7XG5cbiAgICAgICAgbW9ja0JpdEdvLnBvc3QuY2FsbGVkV2l0aChidWlsZFVybCgpKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgICBzaWduTWVzc2FnZVN0dWIuY2FsbGVkT25jZVdpdGgoeyBwcnYgfSwgcGF5bG9hZCkuc2hvdWxkLmJlLnRydWUoKTtcbiAgICAgICAgbW9ja0JpdEdvLnBvc3QuY2FsbGVkV2l0aChzZW5kVXJsKCkpLnNob3VsZC5iZS50cnVlKCk7XG4gICAgICAgIHJlc3VsdC5zaG91bGQuZGVlcEVxdWFsKHsgdHhpZDogJ3Rlc3QtdHhpZCcsIHN0YXR1czogJ3NpZ25lZCcgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3dpdGggdXNlcktleVNpZ25pbmdSZXF1aXJlZDogZmFsc2UgKHJlbW90ZSBzaWduaW5nIHZpYSBCaXRHbyBrZXkpJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHNpZ25VcmwgPSAoKSA9PiBvZmNUb2tlbi51cmwoJy93YWxsZXQvJyArIHdhbGxldERhdGEuaWQgKyAnL3R4L3NpZ24nKTtcbiAgICBjb25zdCBidWlsZFVybCA9ICgpID0+IG9mY1Rva2VuLnVybCgnL3dhbGxldC8nICsgd2FsbGV0RGF0YS5pZCArICcvdHgvYnVpbGQnKTtcbiAgICBjb25zdCBzZW5kVXJsID0gKCkgPT4gb2ZjVG9rZW4udXJsKCcvd2FsbGV0LycgKyB3YWxsZXREYXRhLmlkICsgJy90eC9zZW5kJyk7XG4gICAgY29uc3QgaGV4U2lnbmF0dXJlID0gJ2RlYWRiZWVmJztcbiAgICBsZXQgcmVtb3RlV2FsbGV0OiBXYWxsZXQ7XG5cbiAgICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIHJlbW90ZVdhbGxldCA9IG5ldyBXYWxsZXQobW9ja0JpdEdvLCBvZmNUb2tlbiwgeyAuLi53YWxsZXREYXRhLCB1c2VyS2V5U2lnbmluZ1JlcXVpcmVkOiBmYWxzZSB9KTtcbiAgICAgIC8vIGNvbXBpbGVkIHdhbGxldC5qcyBjYWxscyBnZXRVc2VyUHJ2IChzeW5jKSBmb3IgYWxsIGNvaW5zOyBzdHViIHRvIHJldHVybiB1bmRlZmluZWRcbiAgICAgIC8vIHNvIHRoZSByZW1vdGUgc2lnbmluZyBwYXRoIHJlYWNoZXMgYmFzZUNvaW4uc2lnblRyYW5zYWN0aW9uIHdpdGggcHJ2OiB1bmRlZmluZWRcbiAgICAgIChyZW1vdGVXYWxsZXQgYXMgYW55KS5nZXRVc2VyUHJ2ID0gc2lub24uc3R1YigpLnJldHVybnModW5kZWZpbmVkKTtcbiAgICAgIG1vY2tCaXRHby5wb3N0LndpdGhBcmdzKHNpZ25VcmwoKSkucmV0dXJucyhtYWtlUmVxdWVzdENoYWluKHsgc2lnbmF0dXJlOiBoZXhTaWduYXR1cmUgfSkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBzaWduIGxvY2FsbHkgd2hlbiB1c2VyS2V5U2lnbmluZ1JlcXVpcmVkIGlzIHRydWUgYW5kIHBydiBpcyBwcm92aWRlZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHN0cmljdFdhbGxldCA9IG5ldyBXYWxsZXQobW9ja0JpdEdvLCBvZmNUb2tlbiwgeyAuLi53YWxsZXREYXRhLCB1c2VyS2V5U2lnbmluZ1JlcXVpcmVkOiB0cnVlIH0pO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgc3RyaWN0V2FsbGV0LnNpZ25UcmFuc2FjdGlvbih7IHR4UHJlYnVpbGQ6IHsgcGF5bG9hZCB9IGFzIGFueSwgcHJ2IH0pO1xuXG4gICAgICBzaWduTWVzc2FnZVN0dWIuY2FsbGVkT25jZVdpdGgoeyBwcnYgfSwgcGF5bG9hZCkuc2hvdWxkLmJlLnRydWUoKTtcbiAgICAgIG1vY2tCaXRHby5wb3N0LmNhbGxlZFdpdGgoc2lnblVybCgpKS5zaG91bGQuYmUuZmFsc2UoKTtcbiAgICAgIHJlc3VsdC5zaG91bGQuZGVlcEVxdWFsKHsgaGFsZlNpZ25lZDogeyBwYXlsb2FkLCBzaWduYXR1cmU6IHNpZ25hdHVyZUJ5dGVzLnRvU3RyaW5nKCdoZXgnKSB9IH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ3NpZ25UcmFuc2FjdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGl0KCdzaG91bGQgUE9TVCB0byB0aGUgc2lnbiBlbmRwb2ludCBhbmQgcmV0dXJuIHRoZSBoYWxmU2lnbmVkIHJlc3VsdCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVtb3RlV2FsbGV0LnNpZ25UcmFuc2FjdGlvbih7IHR4UHJlYnVpbGQ6IHsgcGF5bG9hZCB9IGFzIGFueSB9KTtcblxuICAgICAgICBtb2NrQml0R28ucG9zdC5jYWxsZWRXaXRoKHNpZ25VcmwoKSkuc2hvdWxkLmJlLnRydWUoKTtcbiAgICAgICAgc2lnbk1lc3NhZ2VTdHViLmNhbGxlZC5zaG91bGQuYmUuZmFsc2UoKTtcbiAgICAgICAgcmVzdWx0LnNob3VsZC5kZWVwRXF1YWwoeyBoYWxmU2lnbmVkOiB7IHBheWxvYWQsIHNpZ25hdHVyZTogaGV4U2lnbmF0dXJlIH0gfSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdwcmVidWlsZEFuZFNpZ25UcmFuc2FjdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgICBtb2NrQml0R28ucG9zdC53aXRoQXJncyhidWlsZFVybCgpKS5yZXR1cm5zKG1ha2VSZXF1ZXN0Q2hhaW4oeyBwYXlsb2FkIH0pKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHByZWJ1aWxkIGFuZCByZW1vdGVseSBzaWduIHRoZSB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVtb3RlV2FsbGV0LnByZWJ1aWxkQW5kU2lnblRyYW5zYWN0aW9uKHt9KTtcblxuICAgICAgICBtb2NrQml0R28ucG9zdC5jYWxsZWRXaXRoKGJ1aWxkVXJsKCkpLnNob3VsZC5iZS50cnVlKCk7XG4gICAgICAgIG1vY2tCaXRHby5wb3N0LmNhbGxlZFdpdGgoc2lnblVybCgpKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgICBzaWduTWVzc2FnZVN0dWIuY2FsbGVkLnNob3VsZC5iZS5mYWxzZSgpO1xuICAgICAgICByZXN1bHQuc2hvdWxkLmRlZXBFcXVhbCh7IGhhbGZTaWduZWQ6IHsgcGF5bG9hZCwgc2lnbmF0dXJlOiBoZXhTaWduYXR1cmUgfSB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ3NlbmRNYW55JywgZnVuY3Rpb24gKCkge1xuICAgICAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgIG1vY2tCaXRHby5wb3N0LndpdGhBcmdzKGJ1aWxkVXJsKCkpLnJldHVybnMobWFrZVJlcXVlc3RDaGFpbih7IHBheWxvYWQgfSkpO1xuICAgICAgICBtb2NrQml0R28ucG9zdC53aXRoQXJncyhzZW5kVXJsKCkpLnJldHVybnMobWFrZVJlcXVlc3RDaGFpbih7IHR4aWQ6ICd0ZXN0LXR4aWQnLCBzdGF0dXM6ICdzaWduZWQnIH0pKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHByZWJ1aWxkLCByZW1vdGVseSBzaWduLCBhbmQgc2VuZCB0aGUgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlbW90ZVdhbGxldC5zZW5kTWFueSh7IHJlY2lwaWVudHMgfSk7XG5cbiAgICAgICAgbW9ja0JpdEdvLnBvc3QuY2FsbGVkV2l0aChidWlsZFVybCgpKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgICBtb2NrQml0R28ucG9zdC5jYWxsZWRXaXRoKHNpZ25VcmwoKSkuc2hvdWxkLmJlLnRydWUoKTtcbiAgICAgICAgc2lnbk1lc3NhZ2VTdHViLmNhbGxlZC5zaG91bGQuYmUuZmFsc2UoKTtcbiAgICAgICAgcmVzdWx0LnNob3VsZC5kZWVwRXF1YWwoeyB0eGlkOiAndGVzdC10eGlkJywgc3RhdHVzOiAnc2lnbmVkJyB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
185
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2ZjV2FsbGV0U2lnblRyYW5zYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGVzdC91bml0L2JpdGdvL3dhbGxldC9vZmNXYWxsZXRTaWduVHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7R0FFRztBQUNILGtEQUEwQjtBQUMxQixrQkFBZ0I7QUFDaEIseUNBQW1EO0FBQ25ELGlEQUFpRDtBQUVqRCxNQUFNLGlCQUFpQixHQUFHO0lBQ3hCLElBQUksRUFBRSxTQUFTO0lBQ2YsYUFBYSxFQUFFLENBQUM7SUFDaEIsSUFBSSxFQUFFLFNBQVM7SUFDZixJQUFJLEVBQUUsU0FBUztJQUNmLFdBQVcsRUFBRSxNQUFNO0lBQ25CLE1BQU0sRUFBRSxLQUFLO0NBQ2QsQ0FBQztBQUVGLFFBQVEsQ0FBQyxjQUFjLEVBQUU7SUFDdkIsSUFBSSxNQUFjLENBQUM7SUFDbkIsSUFBSSxTQUFjLENBQUM7SUFDbkIsSUFBSSxRQUFrQixDQUFDO0lBQ3ZCLElBQUksZUFBZ0MsQ0FBQztJQUNyQyxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0RCxNQUFNLE9BQU8sR0FBRyw0Q0FBNEMsQ0FBQztJQUM3RCxNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUM7SUFDdkIsc0ZBQXNGO0lBQ3RGLE1BQU0sVUFBVSxHQUFHLENBQUMsRUFBRSxPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDdkYsTUFBTSxPQUFPLEdBQ1gsaUhBQWlILENBQUM7SUFFcEgsTUFBTSxVQUFVLEdBQUc7UUFDakIsRUFBRSxFQUFFLGdCQUFnQjtRQUNwQixJQUFJLEVBQUUsU0FBUztRQUNmLElBQUksRUFBRSxDQUFDLFVBQVUsRUFBRSxZQUFZLEVBQUUsV0FBVyxDQUFDO1FBQzdDLElBQUksRUFBRSxTQUFTO1FB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QUFDO2dCQUNULFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUMzRSxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN4RyxDQUFDLENBQUMsQ0FBQztZQUVILEVBQUUsQ0FBQywwREFBMEQsRUFBRSxLQUFLO2dCQUNsRSxNQUFNLE1BQU0sR0FBRyxNQUFNLFlBQVksQ0FBQyxRQUFRLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO2dCQUUzRCxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3ZELFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDdEQsZUFBZSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUN6QyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDbkUsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwcmV0dGllclxuICovXG5pbXBvcnQgc2lub24gZnJvbSAnc2lub24nO1xuaW1wb3J0ICdzaG91bGQnO1xuaW1wb3J0IHsgV2FsbGV0LCBCYXNlQ29pbiB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYyc7XG5pbXBvcnQgeyBPZmNUb2tlbiB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYy9jb2lucyc7XG5cbmNvbnN0IFRFU1RfVE9LRU5fQ09ORklHID0ge1xuICBjb2luOiAnb2ZjdXNkdCcsXG4gIGRlY2ltYWxQbGFjZXM6IDYsXG4gIG5hbWU6ICdPRkNVU0RUJyxcbiAgdHlwZTogJ29mY3VzZHQnLFxuICBiYWNraW5nQ29pbjogJ3VzZHQnLFxuICBpc0ZpYXQ6IGZhbHNlLFxufTtcblxuZGVzY3JpYmUoJ1dhbGxldCAtIE9GQycsIGZ1bmN0aW9uICgpIHtcbiAgbGV0IHdhbGxldDogV2FsbGV0O1xuICBsZXQgbW9ja0JpdEdvOiBhbnk7XG4gIGxldCBvZmNUb2tlbjogT2ZjVG9rZW47XG4gIGxldCBzaWduTWVzc2FnZVN0dWI6IHNpbm9uLlNpbm9uU3R1YjtcbiAgY29uc3Qgc2lnbmF0dXJlQnl0ZXMgPSBCdWZmZXIuZnJvbSgnYWFiYmNjZGQnLCAnaGV4Jyk7XG4gIGNvbnN0IHBheWxvYWQgPSAne1wiYW1vdW50XCI6XCIxMDBcIixcImZyb21cIjpcImFsaWNlXCIsXCJ0b1wiOlwiYm9iXCJ9JztcbiAgY29uc3QgcHJ2ID0gJ3Rlc3QtcHJ2JztcbiAgLy8gYmctPDMyIGhleCBjaGFycz4gaXMgdmFsaWQgZm9yIE9mY1Rva2VuIHdpdGhvdXQgbmVlZGluZyB0byByZXNvbHZlIHRoZSBiYWNraW5nIGNvaW5cbiAgY29uc3QgcmVjaXBpZW50cyA9IFt7IGFkZHJlc3M6ICdiZy1hYWJiY2NkZGVlZmYwMDExMjIzMzQ0NTU2Njc3ODg5OScsIGFtb3VudDogJzEwMCcgfV07XG4gIGNvbnN0IHVzZXJQdWIgPVxuICAgICd4cHViNjYxTXlNd0FxUmJjRnRYZ1M1c1lKQUJxcUc5WUxtQzUxeEVSeGg4dkRNamMzUGlHcFEzVmVRY0hCaUd4YnNyUlhiQ0tRWlp4QnRETXJtQlJ6eFJNa0JKR3NDOWJzWWI1dGdnVkYzakdmRUUnO1xuXG4gIGNvbnN0IHdhbGxldERhdGEgPSB7XG4gICAgaWQ6ICd0ZXN0LXdhbGxldC1pZCcsXG4gICAgY29pbjogJ29mY3VzZHQnLFxuICAgIGtleXM6IFsndXNlci1rZXknLCAnYmFja3VwLWtleScsICdiaXRnby1rZXknXSxcbiAgICB0eXBlOiAndHJhZGluZycsXG4gICAgbXVsdGlzaWdUeXBlOiAnb25jaGFpbicsXG4gICAgZW50ZXJwcmlzZTogJ2VudC1pZCcsXG4gIH07XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBmbHVlbnQgcmVxdWVzdCBtb2NrIHRoYXQgaGFuZGxlcyAucXVlcnkoKS5zZW5kKCkucmVzdWx0KCkgYW5kIC5zZW5kKCkucmVzdWx0KClcbiAgICogY2hhaW5zLCByZXNvbHZpbmcgd2l0aCB0aGUgcHJvdmlkZWQgdmFsdWUuXG4gICAqL1xuICBmdW5jdGlvbiBtYWtlUmVxdWVzdENoYWluKHJlc29sdmVkOiB1bmtub3duKTogYW55IHtcbiAgICBjb25zdCBjaGFpbjogYW55ID0ge307XG4gICAgY2hhaW4ucXVlcnkgPSBzaW5vbi5zdHViKCkucmV0dXJucyhjaGFpbik7XG4gICAgY2hhaW4uc2VuZCA9IHNpbm9uLnN0dWIoKS5yZXR1cm5zKGNoYWluKTtcbiAgICBjaGFpbi5yZXN1bHQgPSBzaW5vbi5zdHViKCkucmVzb2x2ZXMocmVzb2x2ZWQpO1xuICAgIHJldHVybiBjaGFpbjtcbiAgfVxuXG4gIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgIHNpZ25NZXNzYWdlU3R1YiA9IHNpbm9uLnN0dWIoQmFzZUNvaW4ucHJvdG90eXBlLCAnc2lnbk1lc3NhZ2UnKTtcbiAgICBzaWduTWVzc2FnZVN0dWIud2l0aEFyZ3MoeyBwcnYgfSwgcGF5bG9hZCkucmVzb2x2ZXMoc2lnbmF0dXJlQnl0ZXMpO1xuICAgIHNpbm9uLnN0dWIoQmFzZUNvaW4ucHJvdG90eXBlLCAna2V5Y2hhaW5zJykucmV0dXJucyh7XG4gICAgICBnZXRLZXlzRm9yU2lnbmluZzogc2lub24uc3R1YigpLnJlc29sdmVzKFt7IGlkOiB3YWxsZXREYXRhLmtleXNbMF0sIHB1YjogdXNlclB1YiB9XSksXG4gICAgfSBhcyBhbnkpO1xuICAgIG1vY2tCaXRHbyA9IHtcbiAgICAgIHVybDogc2lub24uc3R1YigpLnJldHVybnMoJ2h0dHBzOi8vdGVzdC5iaXRnby5jb20vJyksXG4gICAgICBwb3N0OiBzaW5vbi5zdHViKCksXG4gICAgICBzZXRSZXF1ZXN0VHJhY2VyOiBzaW5vbi5zdHViKCksXG4gICAgfTtcbiAgICBvZmNUb2tlbiA9IG5ldyBPZmNUb2tlbihtb2NrQml0R28sIFRFU1RfVE9LRU5fQ09ORklHKTtcbiAgICBtb2NrQml0R28uY29pbiA9IHNpbm9uLnN0dWIoKS5yZXR1cm5zKG9mY1Rva2VuKTtcbiAgICB3YWxsZXQgPSBuZXcgV2FsbGV0KG1vY2tCaXRHbywgb2ZjVG9rZW4sIHdhbGxldERhdGEpO1xuICB9KTtcblxuICBhZnRlckVhY2goZnVuY3Rpb24gKCkge1xuICAgIHNpbm9uLnJlc3RvcmUoKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3dpdGggdXNlcktleVNpZ25pbmdSZXF1aXJlZDogdHJ1ZSAobG9jYWwgc2lnbmluZyB2aWEgdXNlciBrZXkpJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGJ1aWxkVXJsID0gKCkgPT4gb2ZjVG9rZW4udXJsKCcvd2FsbGV0LycgKyB3YWxsZXREYXRhLmlkICsgJy90eC9idWlsZCcpO1xuICAgIGNvbnN0IHNpZ25VcmwgPSAoKSA9PiBvZmNUb2tlbi51cmwoJy93YWxsZXQvJyArIHdhbGxldERhdGEuaWQgKyAnL3R4L3NpZ24nKTtcbiAgICBjb25zdCBzZW5kVXJsID0gKCkgPT4gb2ZjVG9rZW4udXJsKCcvd2FsbGV0LycgKyB3YWxsZXREYXRhLmlkICsgJy90eC9zZW5kJyk7XG5cbiAgICBkZXNjcmliZSgnc2lnblRyYW5zYWN0aW9uJywgZnVuY3Rpb24gKCkge1xuICAgICAgaXQoJ3Nob3VsZCBjYWxsIGJhc2VDb2luLnNpZ25NZXNzYWdlIHdpdGggdGhlIHBydiBhbmQgcGF5bG9hZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgd2FsbGV0LnNpZ25UcmFuc2FjdGlvbih7IHR4UHJlYnVpbGQ6IHsgcGF5bG9hZCB9IGFzIGFueSwgcHJ2IH0pO1xuXG4gICAgICAgIHNpZ25NZXNzYWdlU3R1Yi5jYWxsZWRPbmNlV2l0aCh7IHBydiB9LCBwYXlsb2FkKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgICBtb2NrQml0R28ucG9zdC5jYWxsZWQuc2hvdWxkLmJlLmZhbHNlKCk7XG4gICAgICAgIHJlc3VsdC5zaG91bGQuZGVlcEVxdWFsKHsgaGFsZlNpZ25lZDogeyBwYXlsb2FkLCBzaWduYXR1cmU6IHNpZ25hdHVyZUJ5dGVzLnRvU3RyaW5nKCdoZXgnKSB9IH0pO1xuICAgICAgfSk7XG5cbiAgICAgIGRlc2NyaWJlKCd3aXRoIHdhbGxldFBhc3NwaHJhc2UgYW5kIGtleWNoYWluJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCB3YWxsZXRQYXNzcGhyYXNlID0gJ3Rlc3QtcGFzc3BocmFzZSc7XG4gICAgICAgIGNvbnN0IGVuY3J5cHRlZFBydiA9ICdlbmNyeXB0ZWQtcHJ2LWJsb2InO1xuXG4gICAgICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgICAgIC8vIGNvbXBpbGVkIHdhbGxldC5qczogZ2V0VXNlclBydiAoc3luYykg4oaSIGRlY3J5cHRLZXljaGFpblByaXZhdGVLZXkg4oaSIGJpdGdvLmRlY3J5cHRcbiAgICAgICAgICAvLyBUeXBlU2NyaXB0IHNvdXJjZTogIGdldFVzZXJQcnYgICAgICAgIOKGkiBkZWNyeXB0S2V5Y2hhaW5Qcml2YXRlS2V5IOKGkiBiaXRnby5kZWNyeXB0XG4gICAgICAgICAgbW9ja0JpdEdvLmRlY3J5cHQgPSBzaW5vbi5zdHViKCkucmV0dXJucyhwcnYpO1xuICAgICAgICAgIG1vY2tCaXRHby5kZWNyeXB0ID0gc2lub24uc3R1YigpLnJlc29sdmVzKHBydik7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGl0KCdzaG91bGQgZGVjcnlwdCB0aGUga2V5Y2hhaW4gd2l0aCB0aGUgcGFzc3BocmFzZSBhbmQgc2lnbiB2aWEgYmFzZUNvaW4uc2lnbk1lc3NhZ2UnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgd2FsbGV0LnNpZ25UcmFuc2FjdGlvbih7XG4gICAgICAgICAgICB0eFByZWJ1aWxkOiB7IHBheWxvYWQgfSBhcyBhbnksXG4gICAgICAgICAgICB3YWxsZXRQYXNzcGhyYXNlLFxuICAgICAgICAgICAga2V5Y2hhaW46IHsgcHViOiB1c2VyUHViLCBlbmNyeXB0ZWRQcnYgfSBhcyBhbnksXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBjb25zdCBkZWNyeXB0Q2FsbGVkID1cbiAgICAgICAgICAgIG1vY2tCaXRHby5kZWNyeXB0LmNhbGxlZFdpdGgoeyBpbnB1dDogZW5jcnlwdGVkUHJ2LCBwYXNzd29yZDogd2FsbGV0UGFzc3BocmFzZSB9KSB8fFxuICAgICAgICAgICAgbW9ja0JpdEdvLmRlY3J5cHQuY2FsbGVkV2l0aCh7IGlucHV0OiBlbmNyeXB0ZWRQcnYsIHBhc3N3b3JkOiB3YWxsZXRQYXNzcGhyYXNlIH0pO1xuICAgICAgICAgIGRlY3J5cHRDYWxsZWQuc2hvdWxkLmJlLnRydWUoKTtcbiAgICAgICAgICBzaWduTWVzc2FnZVN0dWIuY2FsbGVkT25jZVdpdGgoeyBwcnYgfSwgcGF5bG9hZCkuc2hvdWxkLmJlLnRydWUoKTtcbiAgICAgICAgICBtb2NrQml0R28ucG9zdC5jYWxsZWQuc2hvdWxkLmJlLmZhbHNlKCk7XG4gICAgICAgICAgcmVzdWx0LnNob3VsZC5kZWVwRXF1YWwoeyBoYWxmU2lnbmVkOiB7IHBheWxvYWQsIHNpZ25hdHVyZTogc2lnbmF0dXJlQnl0ZXMudG9TdHJpbmcoJ2hleCcpIH0gfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgncHJlYnVpbGRBbmRTaWduVHJhbnNhY3Rpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgbW9ja0JpdEdvLnBvc3Qud2l0aEFyZ3MoYnVpbGRVcmwoKSkucmV0dXJucyhtYWtlUmVxdWVzdENoYWluKHsgcGF5bG9hZCB9KSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBjYWxsIHRoZSBwcmVidWlsZCBBUEkgdGhlbiBzaWduIGxvY2FsbHkgd2l0aCB0aGUgcHJ2JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB3YWxsZXQucHJlYnVpbGRBbmRTaWduVHJhbnNhY3Rpb24oeyBwcnYgfSk7XG5cbiAgICAgICAgbW9ja0JpdEdvLnBvc3QuY2FsbGVkV2l0aChidWlsZFVybCgpKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgICBtb2NrQml0R28ucG9zdC5jYWxsZWRXaXRoKHNpZ25VcmwoKSkuc2hvdWxkLmJlLmZhbHNlKCk7XG4gICAgICAgIHNpZ25NZXNzYWdlU3R1Yi5jYWxsZWRPbmNlV2l0aCh7IHBydiB9LCBwYXlsb2FkKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgICByZXN1bHQuc2hvdWxkLmRlZXBFcXVhbCh7IGhhbGZTaWduZWQ6IHsgcGF5bG9hZCwgc2lnbmF0dXJlOiBzaWduYXR1cmVCeXRlcy50b1N0cmluZygnaGV4JykgfSB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ3NlbmRNYW55JywgZnVuY3Rpb24gKCkge1xuICAgICAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgIG1vY2tCaXRHby5wb3N0LndpdGhBcmdzKGJ1aWxkVXJsKCkpLnJldHVybnMobWFrZVJlcXVlc3RDaGFpbih7IHBheWxvYWQgfSkpO1xuICAgICAgICBtb2NrQml0R28ucG9zdC53aXRoQXJncyhzZW5kVXJsKCkpLnJldHVybnMobWFrZVJlcXVlc3RDaGFpbih7IHR4aWQ6ICd0ZXN0LXR4aWQnLCBzdGF0dXM6ICdzaWduZWQnIH0pKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHByZWJ1aWxkLCBzaWduIGxvY2FsbHksIGFuZCBzdWJtaXQgdG8gdGhlIHNlbmQgZW5kcG9pbnQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHdhbGxldC5zZW5kTWFueSh7IHJlY2lwaWVudHMsIHBydiB9KTtcblxuICAgICAgICBtb2NrQml0R28ucG9zdC5jYWxsZWRXaXRoKGJ1aWxkVXJsKCkpLnNob3VsZC5iZS50cnVlKCk7XG4gICAgICAgIHNpZ25NZXNzYWdlU3R1Yi5jYWxsZWRPbmNlV2l0aCh7IHBydiB9LCBwYXlsb2FkKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgICBtb2NrQml0R28ucG9zdC5jYWxsZWRXaXRoKHNlbmRVcmwoKSkuc2hvdWxkLmJlLnRydWUoKTtcbiAgICAgICAgcmVzdWx0LnNob3VsZC5kZWVwRXF1YWwoeyB0eGlkOiAndGVzdC10eGlkJywgc3RhdHVzOiAnc2lnbmVkJyB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnd2l0aCB1c2VyS2V5U2lnbmluZ1JlcXVpcmVkOiBmYWxzZSAocmVtb3RlIHNpZ25pbmcgdmlhIEJpdEdvIGtleSknLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3Qgc2lnblVybCA9ICgpID0+IG9mY1Rva2VuLnVybCgnL3dhbGxldC8nICsgd2FsbGV0RGF0YS5pZCArICcvdHgvc2lnbicpO1xuICAgIGNvbnN0IGJ1aWxkVXJsID0gKCkgPT4gb2ZjVG9rZW4udXJsKCcvd2FsbGV0LycgKyB3YWxsZXREYXRhLmlkICsgJy90eC9idWlsZCcpO1xuICAgIGNvbnN0IHNlbmRVcmwgPSAoKSA9PiBvZmNUb2tlbi51cmwoJy93YWxsZXQvJyArIHdhbGxldERhdGEuaWQgKyAnL3R4L3NlbmQnKTtcbiAgICBjb25zdCBoZXhTaWduYXR1cmUgPSAnZGVhZGJlZWYnO1xuICAgIGxldCByZW1vdGVXYWxsZXQ6IFdhbGxldDtcblxuICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgcmVtb3RlV2FsbGV0ID0gbmV3IFdhbGxldChtb2NrQml0R28sIG9mY1Rva2VuLCB7IC4uLndhbGxldERhdGEsIHVzZXJLZXlTaWduaW5nUmVxdWlyZWQ6IGZhbHNlIH0pO1xuICAgICAgLy8gY29tcGlsZWQgd2FsbGV0LmpzIGNhbGxzIGdldFVzZXJQcnYgKHN5bmMpIGZvciBhbGwgY29pbnM7IHN0dWIgdG8gcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgLy8gc28gdGhlIHJlbW90ZSBzaWduaW5nIHBhdGggcmVhY2hlcyBiYXNlQ29pbi5zaWduVHJhbnNhY3Rpb24gd2l0aCBwcnY6IHVuZGVmaW5lZFxuICAgICAgKHJlbW90ZVdhbGxldCBhcyBhbnkpLmdldFVzZXJQcnYgPSBzaW5vbi5zdHViKCkucmV0dXJucyh1bmRlZmluZWQpO1xuICAgICAgbW9ja0JpdEdvLnBvc3Qud2l0aEFyZ3Moc2lnblVybCgpKS5yZXR1cm5zKG1ha2VSZXF1ZXN0Q2hhaW4oeyBzaWduYXR1cmU6IGhleFNpZ25hdHVyZSB9KSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHNpZ24gbG9jYWxseSB3aGVuIHVzZXJLZXlTaWduaW5nUmVxdWlyZWQgaXMgdHJ1ZSBhbmQgcHJ2IGlzIHByb3ZpZGVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qgc3RyaWN0V2FsbGV0ID0gbmV3IFdhbGxldChtb2NrQml0R28sIG9mY1Rva2VuLCB7IC4uLndhbGxldERhdGEsIHVzZXJLZXlTaWduaW5nUmVxdWlyZWQ6IHRydWUgfSk7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzdHJpY3RXYWxsZXQuc2lnblRyYW5zYWN0aW9uKHsgdHhQcmVidWlsZDogeyBwYXlsb2FkIH0gYXMgYW55LCBwcnYgfSk7XG5cbiAgICAgIHNpZ25NZXNzYWdlU3R1Yi5jYWxsZWRPbmNlV2l0aCh7IHBydiB9LCBwYXlsb2FkKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgbW9ja0JpdEdvLnBvc3QuY2FsbGVkV2l0aChzaWduVXJsKCkpLnNob3VsZC5iZS5mYWxzZSgpO1xuICAgICAgcmVzdWx0LnNob3VsZC5kZWVwRXF1YWwoeyBoYWxmU2lnbmVkOiB7IHBheWxvYWQsIHNpZ25hdHVyZTogc2lnbmF0dXJlQnl0ZXMudG9TdHJpbmcoJ2hleCcpIH0gfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnc2lnblRyYW5zYWN0aW9uJywgZnVuY3Rpb24gKCkge1xuICAgICAgaXQoJ3Nob3VsZCBQT1NUIHRvIHRoZSBzaWduIGVuZHBvaW50IGFuZCByZXR1cm4gdGhlIGhhbGZTaWduZWQgcmVzdWx0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZW1vdGVXYWxsZXQuc2lnblRyYW5zYWN0aW9uKHsgdHhQcmVidWlsZDogeyBwYXlsb2FkIH0gYXMgYW55IH0pO1xuXG4gICAgICAgIG1vY2tCaXRHby5wb3N0LmNhbGxlZFdpdGgoc2lnblVybCgpKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgICBzaWduTWVzc2FnZVN0dWIuY2FsbGVkLnNob3VsZC5iZS5mYWxzZSgpO1xuICAgICAgICByZXN1bHQuc2hvdWxkLmRlZXBFcXVhbCh7IGhhbGZTaWduZWQ6IHsgcGF5bG9hZCwgc2lnbmF0dXJlOiBoZXhTaWduYXR1cmUgfSB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ3ByZWJ1aWxkQW5kU2lnblRyYW5zYWN0aW9uJywgZnVuY3Rpb24gKCkge1xuICAgICAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgIG1vY2tCaXRHby5wb3N0LndpdGhBcmdzKGJ1aWxkVXJsKCkpLnJldHVybnMobWFrZVJlcXVlc3RDaGFpbih7IHBheWxvYWQgfSkpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgcHJlYnVpbGQgYW5kIHJlbW90ZWx5IHNpZ24gdGhlIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZW1vdGVXYWxsZXQucHJlYnVpbGRBbmRTaWduVHJhbnNhY3Rpb24oe30pO1xuXG4gICAgICAgIG1vY2tCaXRHby5wb3N0LmNhbGxlZFdpdGgoYnVpbGRVcmwoKSkuc2hvdWxkLmJlLnRydWUoKTtcbiAgICAgICAgbW9ja0JpdEdvLnBvc3QuY2FsbGVkV2l0aChzaWduVXJsKCkpLnNob3VsZC5iZS50cnVlKCk7XG4gICAgICAgIHNpZ25NZXNzYWdlU3R1Yi5jYWxsZWQuc2hvdWxkLmJlLmZhbHNlKCk7XG4gICAgICAgIHJlc3VsdC5zaG91bGQuZGVlcEVxdWFsKHsgaGFsZlNpZ25lZDogeyBwYXlsb2FkLCBzaWduYXR1cmU6IGhleFNpZ25hdHVyZSB9IH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnc2VuZE1hbnknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgbW9ja0JpdEdvLnBvc3Qud2l0aEFyZ3MoYnVpbGRVcmwoKSkucmV0dXJucyhtYWtlUmVxdWVzdENoYWluKHsgcGF5bG9hZCB9KSk7XG4gICAgICAgIG1vY2tCaXRHby5wb3N0LndpdGhBcmdzKHNlbmRVcmwoKSkucmV0dXJucyhtYWtlUmVxdWVzdENoYWluKHsgdHhpZDogJ3Rlc3QtdHhpZCcsIHN0YXR1czogJ3NpZ25lZCcgfSkpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgcHJlYnVpbGQsIHJlbW90ZWx5IHNpZ24sIGFuZCBzZW5kIHRoZSB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVtb3RlV2FsbGV0LnNlbmRNYW55KHsgcmVjaXBpZW50cyB9KTtcblxuICAgICAgICBtb2NrQml0R28ucG9zdC5jYWxsZWRXaXRoKGJ1aWxkVXJsKCkpLnNob3VsZC5iZS50cnVlKCk7XG4gICAgICAgIG1vY2tCaXRHby5wb3N0LmNhbGxlZFdpdGgoc2lnblVybCgpKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgICBzaWduTWVzc2FnZVN0dWIuY2FsbGVkLnNob3VsZC5iZS5mYWxzZSgpO1xuICAgICAgICByZXN1bHQuc2hvdWxkLmRlZXBFcXVhbCh7IHR4aWQ6ICd0ZXN0LXR4aWQnLCBzdGF0dXM6ICdzaWduZWQnIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -51,10 +51,10 @@ describe('Wallets - encryptionVersion threading', function () {
51
51
  add: sinon.stub().resolves({ id: 'user-key-id', pub: userPub, encryptedPrv: 'encrypted-prv' }),
52
52
  };
53
53
  mockBitGo = {
54
- encryptAsync: sinon
54
+ encrypt: sinon
55
55
  .stub()
56
56
  .callsFake(async ({ password, input }) => `enc:${password}:${input}`),
57
- decryptAsync: sinon.stub().resolves('decryptedPrv'),
57
+ decrypt: sinon.stub().resolves('decryptedPrv'),
58
58
  get: sinon.stub().returns({ result: sinon.stub(), query: sinon.stub().returnsThis() }),
59
59
  post: sinon.stub().returns({ send: sinon.stub().returns({ result: sinon.stub().resolves({}) }) }),
60
60
  put: sinon.stub().returns({
@@ -80,7 +80,7 @@ describe('Wallets - encryptionVersion threading', function () {
80
80
  sinon.restore();
81
81
  });
82
82
  describe('acceptShare', function () {
83
- it('passes encryptionVersion: 2 to encryptAsync on the multiUserKeyRotationRequired path', async function () {
83
+ it('passes encryptionVersion: 2 to encrypt on the multiUserKeyRotationRequired path', async function () {
84
84
  mockBitGo.get.returns({
85
85
  result: sinon.stub().resolves({
86
86
  userMultiKeyRotationRequired: true,
@@ -94,8 +94,8 @@ describe('Wallets - encryptionVersion threading', function () {
94
94
  userPassword: 'my-password',
95
95
  encryptionVersion: 2,
96
96
  });
97
- assert.ok(mockBitGo.encryptAsync.called, 'encryptAsync should have been called');
98
- const call = mockBitGo.encryptAsync.firstCall;
97
+ assert.ok(mockBitGo.encrypt.called, 'encrypt should have been called');
98
+ const call = mockBitGo.encrypt.firstCall;
99
99
  assert.strictEqual(call.args[0].encryptionVersion, 2);
100
100
  });
101
101
  it('passes encryptionVersion: undefined when not set', async function () {
@@ -111,8 +111,8 @@ describe('Wallets - encryptionVersion threading', function () {
111
111
  walletShareId: 'share-id',
112
112
  userPassword: 'my-password',
113
113
  });
114
- assert.ok(mockBitGo.encryptAsync.called);
115
- const call = mockBitGo.encryptAsync.firstCall;
114
+ assert.ok(mockBitGo.encrypt.called);
115
+ const call = mockBitGo.encrypt.firstCall;
116
116
  assert.strictEqual(call.args[0].encryptionVersion, undefined);
117
117
  });
118
118
  });
@@ -131,14 +131,14 @@ describe('Wallets - encryptionVersion threading', function () {
131
131
  beforeEach(function () {
132
132
  mockBitGo.get.returns({ result: sinon.stub().resolves(walletSharesList) });
133
133
  });
134
- it('passes encryptionVersion: 2 to encryptAsync on the multiUserKeyRotationRequired path', async function () {
134
+ it('passes encryptionVersion: 2 to encrypt on the multiUserKeyRotationRequired path', async function () {
135
135
  await wallets.bulkAcceptShare({
136
136
  walletShareIds: ['share-id'],
137
137
  userLoginPassword: 'login-password',
138
138
  encryptionVersion: 2,
139
139
  });
140
- assert.ok(mockBitGo.encryptAsync.called);
141
- const call = mockBitGo.encryptAsync.firstCall;
140
+ assert.ok(mockBitGo.encrypt.called);
141
+ const call = mockBitGo.encrypt.firstCall;
142
142
  assert.strictEqual(call.args[0].encryptionVersion, 2);
143
143
  });
144
144
  it('passes encryptionVersion: undefined when not set', async function () {
@@ -146,8 +146,8 @@ describe('Wallets - encryptionVersion threading', function () {
146
146
  walletShareIds: ['share-id'],
147
147
  userLoginPassword: 'login-password',
148
148
  });
149
- assert.ok(mockBitGo.encryptAsync.called);
150
- const call = mockBitGo.encryptAsync.firstCall;
149
+ assert.ok(mockBitGo.encrypt.called);
150
+ const call = mockBitGo.encrypt.firstCall;
151
151
  assert.strictEqual(call.args[0].encryptionVersion, undefined);
152
152
  });
153
153
  });
@@ -192,9 +192,9 @@ describe('Wallets - encryptionVersion threading', function () {
192
192
  assert.ok(prepareStub.calledOnce);
193
193
  assert.strictEqual(prepareStub.firstCall.args[3], undefined);
194
194
  });
195
- it('createBulkWalletShare passes encryptionVersion to encryptPrvForUserAsync', async function () {
195
+ it('createBulkWalletShare passes encryptionVersion to encryptPrvForUser', async function () {
196
196
  const encryptPrvStub = sinon
197
- .stub(wallet, 'encryptPrvForUserAsync')
197
+ .stub(wallet, 'encryptPrvForUser')
198
198
  .resolves({ encryptedPrv: 'enc', pub: 'pub', fromPubKey: 'fpk', toPubKey: 'tpk', path: 'm/0' });
199
199
  sinon
200
200
  .stub(wallet, 'getDecryptedKeychainForSharing')
@@ -210,7 +210,7 @@ describe('Wallets - encryptionVersion threading', function () {
210
210
  });
211
211
  it('createBulkWalletShare passes encryptionVersion: undefined when not set', async function () {
212
212
  const encryptPrvStub = sinon
213
- .stub(wallet, 'encryptPrvForUserAsync')
213
+ .stub(wallet, 'encryptPrvForUser')
214
214
  .resolves({ encryptedPrv: 'enc', pub: 'pub', fromPubKey: 'fpk', toPubKey: 'tpk', path: 'm/0' });
215
215
  sinon
216
216
  .stub(wallet, 'getDecryptedKeychainForSharing')
@@ -225,4 +225,4 @@ describe('Wallets - encryptionVersion threading', function () {
225
225
  });
226
226
  });
227
227
  });
228
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FsbGV0c0VuY3J5cHRpb25WZXJzaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGVzdC91bml0L2JpdGdvL3dhbGxldC93YWxsZXRzRW5jcnlwdGlvblZlcnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQ0FBaUM7QUFDakMsNkNBQStCO0FBQy9CLGtCQUFnQjtBQUNoQixrRUFBK0Q7QUFDL0QsZ0VBQTZEO0FBRTdELFFBQVEsQ0FBQyx1Q0FBdUMsRUFBRTtJQUNoRCxJQUFJLE9BQWdCLENBQUM7SUFDckIsSUFBSSxTQUFjLENBQUM7SUFDbkIsSUFBSSxZQUFpQixDQUFDO0lBQ3RCLElBQUksYUFBa0IsQ0FBQztJQUV2QixNQUFNLE9BQU8sR0FBRyx3QkFBd0IsQ0FBQztJQUN6QyxNQUFNLE9BQU8sR0FDWCxpSEFBaUgsQ0FBQztJQUVwSCxVQUFVLENBQUM7UUFDVCxhQUFhLEdBQUc7WUFDZCxNQUFNLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxDQUFDO1lBQzVELEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsQ0FBQztTQUMvRixDQUFDO1FBRUYsU0FBUyxHQUFHO1lBQ1YsWUFBWSxFQUFFLEtBQUs7aUJBQ2hCLElBQUksRUFBRTtpQkFDTixTQUFTLENBQUMsS0FBSyxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBdUMsRUFBRSxFQUFFLENBQUMsT0FBTyxRQUFRLElBQUksS0FBSyxFQUFFLENBQUM7WUFDNUcsWUFBWSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FB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QUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDbEUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgKiBhcyBzaW5vbiBmcm9tICdzaW5vbic7XG5pbXBvcnQgJ3Nob3VsZCc7XG5pbXBvcnQgeyBXYWxsZXRzIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3dhbGxldC93YWxsZXRzJztcbmltcG9ydCB7IFdhbGxldCB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYy9iaXRnby93YWxsZXQvd2FsbGV0JztcblxuZGVzY3JpYmUoJ1dhbGxldHMgLSBlbmNyeXB0aW9uVmVyc2lvbiB0aHJlYWRpbmcnLCBmdW5jdGlvbiAoKSB7XG4gIGxldCB3YWxsZXRzOiBXYWxsZXRzO1xuICBsZXQgbW9ja0JpdEdvOiBhbnk7XG4gIGxldCBtb2NrQmFzZUNvaW46IGFueTtcbiAgbGV0IG1vY2tLZXljaGFpbnM6IGFueTtcblxuICBjb25zdCB1c2VyUHJ2ID0gJ3hwcnZTb21lVXNlclByaXZhdGVLZXknO1xuICBjb25zdCB1c2VyUHViID1cbiAgICAneHB1YjY2MU15TXdBcVJiY0Z0WGdTNXNZSkFCcXFHOVlMbUM0UTFSZGFwOWdTRThOcXR3eWJHaGVQWTJnWjI5RVNGanFKb0N1MVJ1cGplOFl0R3FzZWZEMjY1VE1nN3VzVURGZHA2VzFFR01jZXQ4JztcblxuICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICBtb2NrS2V5Y2hhaW5zID0ge1xuICAgICAgY3JlYXRlOiBzaW5vbi5zdHViKCkucmV0dXJucyh7IHB1YjogdXNlclB1YiwgcHJ2OiB1c2VyUHJ2IH0pLFxuICAgICAgYWRkOiBzaW5vbi5zdHViKCkucmVzb2x2ZXMoeyBpZDogJ3VzZXIta2V5LWlkJywgcHViOiB1c2VyUHViLCBlbmNyeXB0ZWRQcnY6ICdlbmNyeXB0ZWQtcHJ2JyB9KSxcbiAgICB9O1xuXG4gICAgbW9ja0JpdEdvID0ge1xuICAgICAgZW5jcnlwdEFzeW5jOiBzaW5vblxuICAgICAgICAuc3R1YigpXG4gICAgICAgIC5jYWxsc0Zha2UoYXN5bmMgKHsgcGFzc3dvcmQsIGlucHV0IH06IHsgcGFzc3dvcmQ6IHN0cmluZzsgaW5wdXQ6IHN0cmluZyB9KSA9PiBgZW5jOiR7cGFzc3dvcmR9OiR7aW5wdXR9YCksXG4gICAgICBkZWNyeXB0QXN5bmM6IHNpbm9uLnN0dWIoKS5yZXNvbHZlcygnZGVjcnlwdGVkUHJ2JyksXG4gICAgICBnZXQ6IHNpbm9uLnN0dWIoKS5yZXR1cm5zKHsgcmVzdWx0OiBzaW5vbi5zdHViKCksIHF1ZXJ5OiBzaW5vbi5zdHViKCkucmV0dXJuc1RoaXMoKSB9KSxcbiAgICAgIHBvc3Q6IHNpbm9uLnN0dWIoKS5yZXR1cm5zKHsgc2VuZDogc2lub24uc3R1YigpLnJldHVybnMoeyByZXN1bHQ6IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyh7fSkgfSkgfSksXG4gICAgICBwdXQ6IHNpbm9uLnN0dWIoKS5yZXR1cm5zKHtcbiAgICAgICAgc2VuZDogc2lub25cbiAgICAgICAgICAuc3R1YigpXG4gICAgICAgICAgLnJldHVybnMoeyByZXN1bHQ6IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyh7IGFjY2VwdGVkV2FsbGV0U2hhcmVzOiBbXSwgd2FsbGV0U2hhcmVVcGRhdGVFcnJvcnM6IFtdIH0pIH0pLFxuICAgICAgfSksXG4gICAgICBnZXRFQ0RIS2V5Y2hhaW46IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyh7IGVuY3J5cHRlZFhwcnY6ICdlbmNYcHJ2JyB9KSxcbiAgICAgIHNldFJlcXVlc3RUcmFjZXI6IHNpbm9uLnN0dWIoKSxcbiAgICAgIHVybDogc2lub24uc3R1YigpLnJldHVybnMoJy90ZXN0L3VybCcpLFxuICAgIH07XG5cbiAgICBtb2NrQmFzZUNvaW4gPSB7XG4gICAgICBrZXljaGFpbnM6IHNpbm9uLnN0dWIoKS5yZXR1cm5zKG1vY2tLZXljaGFpbnMpLFxuICAgICAgdXJsOiBzaW5vbi5zdHViKCkuY2FsbHNGYWtlKChwYXRoOiBzdHJpbmcpID0+IHBhdGgpLFxuICAgICAgZ2V0RmFtaWx5OiBzaW5vbi5zdHViKCkucmV0dXJucygnYnRjJyksXG4gICAgICBnZXRDaGFpbjogc2lub24uc3R1YigpLnJldHVybnMoJ2J0YycpLFxuICAgICAgc3VwcG9ydHNUc3M6IHNpbm9uLnN0dWIoKS5yZXR1cm5zKGZhbHNlKSxcbiAgICAgIGdldE1QQ0FsZ29yaXRobTogc2lub24uc3R1YigpLnJldHVybnMoJ2VjZHNhJyksXG4gICAgfTtcblxuICAgIHdhbGxldHMgPSBuZXcgV2FsbGV0cyhtb2NrQml0R28sIG1vY2tCYXNlQ29pbik7XG4gIH0pO1xuXG4gIGFmdGVyRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgc2lub24ucmVzdG9yZSgpO1xuICB9KTtcblxuICBkZXNjcmliZSgnYWNjZXB0U2hhcmUnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Bhc3NlcyBlbmNyeXB0aW9uVmVyc2lvbjogMiB0byBlbmNyeXB0QXN5bmMgb24gdGhlIG11bHRpVXNlcktleVJvdGF0aW9uUmVxdWlyZWQgcGF0aCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIG1vY2tCaXRHby5nZXQucmV0dXJucyh7XG4gICAgICAgIHJlc3VsdDogc2lub24uc3R1YigpLnJlc29sdmVzKHtcbiAgICAgICAgICB1c2VyTXVsdGlLZXlSb3RhdGlvblJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgIGtleWNoYWluOiBudWxsLFxuICAgICAgICAgIHBlcm1pc3Npb25zOiBbJ3NwZW5kJ10sXG4gICAgICAgICAgd2FsbGV0OiAnd2FsbGV0LWlkJyxcbiAgICAgICAgfSksXG4gICAgICB9KTtcblxuICAgICAgYXdhaXQgd2FsbGV0cy5hY2NlcHRTaGFyZSh7XG4gICAgICAgIHdhbGxldFNoYXJlSWQ6ICdzaGFyZS1pZCcsXG4gICAgICAgIHVzZXJQYXNzd29yZDogJ215LXBhc3N3b3JkJyxcbiAgICAgICAgZW5jcnlwdGlvblZlcnNpb246IDIsXG4gICAgICB9KTtcblxuICAgICAgYXNzZXJ0Lm9rKG1vY2tCaXRHby5lbmNyeXB0QXN5bmMuY2FsbGVkLCAnZW5jcnlwdEFzeW5jIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkJyk7XG4gICAgICBjb25zdCBjYWxsID0gbW9ja0JpdEdvLmVuY3J5cHRBc3luYy5maXJzdENhbGw7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoY2FsbC5hcmdzWzBdLmVuY3J5cHRpb25WZXJzaW9uLCAyKTtcbiAgICB9KTtcblxuICAgIGl0KCdwYXNzZXMgZW5jcnlwdGlvblZlcnNpb246IHVuZGVmaW5lZCB3aGVuIG5vdCBzZXQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBtb2NrQml0R28uZ2V0LnJldHVybnMoe1xuICAgICAgICByZXN1bHQ6IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyh7XG4gICAgICAgICAgdXNlck11bHRpS2V5Um90YXRpb25SZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICBrZXljaGFpbjogbnVsbCxcbiAgICAgICAgICBwZXJtaXNzaW9uczogWydzcGVuZCddLFxuICAgICAgICAgIHdhbGxldDogJ3dhbGxldC1pZCcsXG4gICAgICAgIH0pLFxuICAgICAgfSk7XG5cbiAgICAgIGF3YWl0IHdhbGxldHMuYWNjZXB0U2hhcmUoe1xuICAgICAgICB3YWxsZXRTaGFyZUlkOiAnc2hhcmUtaWQnLFxuICAgICAgICB1c2VyUGFzc3dvcmQ6ICdteS1wYXNzd29yZCcsXG4gICAgICB9KTtcblxuICAgICAgYXNzZXJ0Lm9rKG1vY2tCaXRHby5lbmNyeXB0QXN5bmMuY2FsbGVkKTtcbiAgICAgIGNvbnN0IGNhbGwgPSBtb2NrQml0R28uZW5jcnlwdEFzeW5jLmZpcnN0Q2FsbDtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChjYWxsLmFyZ3NbMF0uZW5jcnlwdGlvblZlcnNpb24sIHVuZGVmaW5lZCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdidWxrQWNjZXB0U2hhcmUnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3Qgd2FsbGV0U2hhcmVzTGlzdCA9IHtcbiAgICAgIGluY29taW5nOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogJ3NoYXJlLWlkJyxcbiAgICAgICAgICB1c2VyTXVsdGlLZXlSb3RhdGlvblJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgIGtleWNoYWluOiBudWxsLFxuICAgICAgICAgIHBlcm1pc3Npb25zOiBbJ3NwZW5kJ10sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgb3V0Z29pbmc6IFtdLFxuICAgIH07XG5cbiAgICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIG1vY2tCaXRHby5nZXQucmV0dXJucyh7IHJlc3VsdDogc2lub24uc3R1YigpLnJlc29sdmVzKHdhbGxldFNoYXJlc0xpc3QpIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Bhc3NlcyBlbmNyeXB0aW9uVmVyc2lvbjogMiB0byBlbmNyeXB0QXN5bmMgb24gdGhlIG11bHRpVXNlcktleVJvdGF0aW9uUmVxdWlyZWQgcGF0aCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IHdhbGxldHMuYnVsa0FjY2VwdFNoYXJlKHtcbiAgICAgICAgd2FsbGV0U2hhcmVJZHM6IFsnc2hhcmUtaWQnXSxcbiAgICAgICAgdXNlckxvZ2luUGFzc3dvcmQ6ICdsb2dpbi1wYXNzd29yZCcsXG4gICAgICAgIGVuY3J5cHRpb25WZXJzaW9uOiAyLFxuICAgICAgfSk7XG5cbiAgICAgIGFzc2VydC5vayhtb2NrQml0R28uZW5jcnlwdEFzeW5jLmNhbGxlZCk7XG4gICAgICBjb25zdCBjYWxsID0gbW9ja0JpdEdvLmVuY3J5cHRBc3luYy5maXJzdENhbGw7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoY2FsbC5hcmdzWzBdLmVuY3J5cHRpb25WZXJzaW9uLCAyKTtcbiAgICB9KTtcblxuICAgIGl0KCdwYXNzZXMgZW5jcnlwdGlvblZlcnNpb246IHVuZGVmaW5lZCB3aGVuIG5vdCBzZXQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCB3YWxsZXRzLmJ1bGtBY2NlcHRTaGFyZSh7XG4gICAgICAgIHdhbGxldFNoYXJlSWRzOiBbJ3NoYXJlLWlkJ10sXG4gICAgICAgIHVzZXJMb2dpblBhc3N3b3JkOiAnbG9naW4tcGFzc3dvcmQnLFxuICAgICAgfSk7XG5cbiAgICAgIGFzc2VydC5vayhtb2NrQml0R28uZW5jcnlwdEFzeW5jLmNhbGxlZCk7XG4gICAgICBjb25zdCBjYWxsID0gbW9ja0JpdEdvLmVuY3J5cHRBc3luYy5maXJzdENhbGw7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoY2FsbC5hcmdzWzBdLmVuY3J5cHRpb25WZXJzaW9uLCB1bmRlZmluZWQpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnV2FsbGV0LnNoYXJlV2FsbGV0IC8gY3JlYXRlQnVsa1dhbGxldFNoYXJlJywgZnVuY3Rpb24gKCkge1xuICAgIGxldCB3YWxsZXQ6IFdhbGxldDtcblxuICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgbW9ja1dhbGxldERhdGEgPSB7XG4gICAgICAgIGlkOiAnd2FsbGV0LWlkJyxcbiAgICAgICAga2V5czogWydrZXktMScsICdrZXktMicsICdrZXktMyddLFxuICAgICAgICBjb2luOiAnYnRjJyxcbiAgICAgICAgbGFiZWw6ICdUZXN0IFdhbGxldCcsXG4gICAgICAgIHVzZXJzOiBbXSxcbiAgICAgICAgbXVsdGlzaWdUeXBlOiAnb25jaGFpbicsXG4gICAgICAgIHR5cGU6ICdob3QnLFxuICAgICAgfTtcbiAgICAgIG1vY2tCYXNlQ29pbi5zdXBwb3J0c1RzcyA9IHNpbm9uLnN0dWIoKS5yZXR1cm5zKGZhbHNlKTtcbiAgICAgIG1vY2tCYXNlQ29pbi5nZXRNUENBbGdvcml0aG0gPSBzaW5vbi5zdHViKCkucmV0dXJucygnZWNkc2EnKTtcbiAgICAgIHdhbGxldCA9IG5ldyBXYWxsZXQobW9ja0JpdEdvLCBtb2NrQmFzZUNvaW4sIG1vY2tXYWxsZXREYXRhKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaGFyZVdhbGxldCBwYXNzZXMgZW5jcnlwdGlvblZlcnNpb24gdG8gcHJlcGFyZVNoYXJlZEtleWNoYWluJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcHJlcGFyZVN0dWIgPSBzaW5vbi5zdHViKHdhbGxldCwgJ3ByZXBhcmVTaGFyZWRLZXljaGFpbicpLnJlc29sdmVzKHt9KTtcbiAgICAgIG1vY2tCaXRHby5nZXRTaGFyaW5nS2V5ID0gc2lub24uc3R1YigpLnJlc29sdmVzKHsgdXNlcklkOiAndXNlci1pZCcsIHB1YmtleTogJ3JlY3ZQdWInLCBwYXRoOiAnbS8wJyB9KTtcbiAgICAgIG1vY2tCaXRHby5wb3N0LnJldHVybnMoeyBzZW5kOiBzaW5vbi5zdHViKCkucmV0dXJucyh7IHJlc3VsdDogc2lub24uc3R1YigpLnJlc29sdmVzKHt9KSB9KSB9KTtcblxuICAgICAgYXdhaXQgd2FsbGV0LnNoYXJlV2FsbGV0KHtcbiAgICAgICAgZW1haWw6ICd0ZXN0QHRlc3QuY29tJyxcbiAgICAgICAgcGVybWlzc2lvbnM6ICdzcGVuZCcsXG4gICAgICAgIHdhbGxldFBhc3NwaHJhc2U6ICdwYXNzcGhyYXNlJyxcbiAgICAgICAgZW5jcnlwdGlvblZlcnNpb246IDIsXG4gICAgICB9KTtcblxuICAgICAgYXNzZXJ0Lm9rKHByZXBhcmVTdHViLmNhbGxlZE9uY2UsICdwcmVwYXJlU2hhcmVkS2V5Y2hhaW4gc2hvdWxkIGJlIGNhbGxlZCcpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHByZXBhcmVTdHViLmZpcnN0Q2FsbC5hcmdzWzNdLCAyLCAnZW5jcnlwdGlvblZlcnNpb24gc2hvdWxkIGJlIGZvcndhcmRlZCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3NoYXJlV2FsbGV0IHBhc3NlcyBlbmNyeXB0aW9uVmVyc2lvbjogdW5kZWZpbmVkIHdoZW4gbm90IHNldCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHByZXBhcmVTdHViID0gc2lub24uc3R1Yih3YWxsZXQsICdwcmVwYXJlU2hhcmVkS2V5Y2hhaW4nKS5yZXNvbHZlcyh7fSk7XG4gICAgICBtb2NrQml0R28uZ2V0U2hhcmluZ0tleSA9IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyh7IHVzZXJJZDogJ3VzZXItaWQnLCBwdWJrZXk6ICdyZWN2UHViJywgcGF0aDogJ20vMCcgfSk7XG4gICAgICBtb2NrQml0R28ucG9zdC5yZXR1cm5zKHsgc2VuZDogc2lub24uc3R1YigpLnJldHVybnMoeyByZXN1bHQ6IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyh7fSkgfSkgfSk7XG5cbiAgICAgIGF3YWl0IHdhbGxldC5zaGFyZVdhbGxldCh7XG4gICAgICAgIGVtYWlsOiAndGVzdEB0ZXN0LmNvbScsXG4gICAgICAgIHBlcm1pc3Npb25zOiAnc3BlbmQnLFxuICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiAncGFzc3BocmFzZScsXG4gICAgICB9KTtcblxuICAgICAgYXNzZXJ0Lm9rKHByZXBhcmVTdHViLmNhbGxlZE9uY2UpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHByZXBhcmVTdHViLmZpcnN0Q2FsbC5hcmdzWzNdLCB1bmRlZmluZWQpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2NyZWF0ZUJ1bGtXYWxsZXRTaGFyZSBwYXNzZXMgZW5jcnlwdGlvblZlcnNpb24gdG8gZW5jcnlwdFBydkZvclVzZXJBc3luYycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGVuY3J5cHRQcnZTdHViID0gc2lub25cbiAgICAgICAgLnN0dWIod2FsbGV0LCAnZW5jcnlwdFBydkZvclVzZXJBc3luYycpXG4gICAgICAgIC5yZXNvbHZlcyh7IGVuY3J5cHRlZFBydjogJ2VuYycsIHB1YjogJ3B1YicsIGZyb21QdWJLZXk6ICdmcGsnLCB0b1B1YktleTogJ3RwaycsIHBhdGg6ICdtLzAnIH0pO1xuICAgICAgc2lub25cbiAgICAgICAgLnN0dWIod2FsbGV0IGFzIGFueSwgJ2dldERlY3J5cHRlZEtleWNoYWluRm9yU2hhcmluZycpXG4gICAgICAgIC5yZXNvbHZlcyh7IHBydjogJ3BydicsIHB1YjogJ3B1YicsIGVuY3J5cHRlZFBydjogJ2VuY1BydicgfSk7XG4gICAgICBzaW5vbi5zdHViKHdhbGxldCBhcyBhbnksICdjcmVhdGVCdWxrS2V5U2hhcmVzJykucmVzb2x2ZXMoeyBzaGFyZXM6IFtdIH0pO1xuXG4gICAgICBhd2FpdCB3YWxsZXQuY3JlYXRlQnVsa1dhbGxldFNoYXJlKHtcbiAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogJ3Bhc3NwaHJhc2UnLFxuICAgICAgICBrZXlTaGFyZU9wdGlvbnM6IFt7IHVzZXJJZDogJ3VzZXItMScsIHB1YktleTogJ3B1YktleScsIHBhdGg6ICdtLzAnLCBwZXJtaXNzaW9uczogWydzcGVuZCddIH1dLFxuICAgICAgICBlbmNyeXB0aW9uVmVyc2lvbjogMixcbiAgICAgIH0pO1xuXG4gICAgICBhc3NlcnQub2soZW5jcnlwdFBydlN0dWIuY2FsbGVkT25jZSk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZW5jcnlwdFBydlN0dWIuZmlyc3RDYWxsLmFyZ3NbNF0sIDIsICdlbmNyeXB0aW9uVmVyc2lvbiBzaG91bGQgYmUgZm9yd2FyZGVkJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnY3JlYXRlQnVsa1dhbGxldFNoYXJlIHBhc3NlcyBlbmNyeXB0aW9uVmVyc2lvbjogdW5kZWZpbmVkIHdoZW4gbm90IHNldCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGVuY3J5cHRQcnZTdHViID0gc2lub25cbiAgICAgICAgLnN0dWIod2FsbGV0LCAnZW5jcnlwdFBydkZvclVzZXJBc3luYycpXG4gICAgICAgIC5yZXNvbHZlcyh7IGVuY3J5cHRlZFBydjogJ2VuYycsIHB1YjogJ3B1YicsIGZyb21QdWJLZXk6ICdmcGsnLCB0b1B1YktleTogJ3RwaycsIHBhdGg6ICdtLzAnIH0pO1xuICAgICAgc2lub25cbiAgICAgICAgLnN0dWIod2FsbGV0IGFzIGFueSwgJ2dldERlY3J5cHRlZEtleWNoYWluRm9yU2hhcmluZycpXG4gICAgICAgIC5yZXNvbHZlcyh7IHBydjogJ3BydicsIHB1YjogJ3B1YicsIGVuY3J5cHRlZFBydjogJ2VuY1BydicgfSk7XG4gICAgICBzaW5vbi5zdHViKHdhbGxldCBhcyBhbnksICdjcmVhdGVCdWxrS2V5U2hhcmVzJykucmVzb2x2ZXMoeyBzaGFyZXM6IFtdIH0pO1xuXG4gICAgICBhd2FpdCB3YWxsZXQuY3JlYXRlQnVsa1dhbGxldFNoYXJlKHtcbiAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogJ3Bhc3NwaHJhc2UnLFxuICAgICAgICBrZXlTaGFyZU9wdGlvbnM6IFt7IHVzZXJJZDogJ3VzZXItMScsIHB1YktleTogJ3B1YktleScsIHBhdGg6ICdtLzAnLCBwZXJtaXNzaW9uczogWydzcGVuZCddIH1dLFxuICAgICAgfSk7XG5cbiAgICAgIGFzc2VydC5vayhlbmNyeXB0UHJ2U3R1Yi5jYWxsZWRPbmNlKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChlbmNyeXB0UHJ2U3R1Yi5maXJzdENhbGwuYXJnc1s0XSwgdW5kZWZpbmVkKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
228
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FsbGV0c0VuY3J5cHRpb25WZXJzaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGVzdC91bml0L2JpdGdvL3dhbGxldC93YWxsZXRzRW5jcnlwdGlvblZlcnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQ0FBaUM7QUFDakMsNkNBQStCO0FBQy9CLGtCQUFnQjtBQUNoQixrRUFBK0Q7QUFDL0QsZ0VBQTZEO0FBRTdELFFBQVEsQ0FBQyx1Q0FBdUMsRUFBRTtJQUNoRCxJQUFJLE9BQWdCLENBQUM7SUFDckIsSUFBSSxTQUFjLENBQUM7SUFDbkIsSUFBSSxZQUFpQixDQUFDO0lBQ3RCLElBQUksYUFBa0IsQ0FBQztJQUV2QixNQUFNLE9BQU8sR0FBRyx3QkFBd0IsQ0FBQztJQUN6QyxNQUFNLE9BQU8sR0FDWCxpSEFBaUgsQ0FBQztJQUVwSCxVQUFVLENBQUM7UUFDVCxhQUFhLEdBQUc7WUFDZCxNQUFNLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxDQUFDO1lBQzVELEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsQ0FBQztTQUMvRixDQUFDO1FBRUYsU0FBUyxHQUFHO1lBQ1YsT0FBTyxFQUFFLEtBQUs7aUJBQ1gsSUFBSSxFQUFFO2lCQUNOLFNBQVMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUF1QyxFQUFFLEVBQUUsQ0FBQyxPQUFPLFFBQVEsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUM1RyxPQUFPLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFD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QyxjQUFjLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNsRSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCAqIGFzIHNpbm9uIGZyb20gJ3Npbm9uJztcbmltcG9ydCAnc2hvdWxkJztcbmltcG9ydCB7IFdhbGxldHMgfSBmcm9tICcuLi8uLi8uLi8uLi9zcmMvYml0Z28vd2FsbGV0L3dhbGxldHMnO1xuaW1wb3J0IHsgV2FsbGV0IH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3dhbGxldC93YWxsZXQnO1xuXG5kZXNjcmliZSgnV2FsbGV0cyAtIGVuY3J5cHRpb25WZXJzaW9uIHRocmVhZGluZycsIGZ1bmN0aW9uICgpIHtcbiAgbGV0IHdhbGxldHM6IFdhbGxldHM7XG4gIGxldCBtb2NrQml0R286IGFueTtcbiAgbGV0IG1vY2tCYXNlQ29pbjogYW55O1xuICBsZXQgbW9ja0tleWNoYWluczogYW55O1xuXG4gIGNvbnN0IHVzZXJQcnYgPSAneHBydlNvbWVVc2VyUHJpdmF0ZUtleSc7XG4gIGNvbnN0IHVzZXJQdWIgPVxuICAgICd4cHViNjYxTXlNd0FxUmJjRnRYZ1M1c1lKQUJxcUc5WUxtQzRRMVJkYXA5Z1NFOE5xdHd5YkdoZVBZMmdaMjlFU0ZqcUpvQ3UxUnVwamU4WXRHcXNlZkQyNjVUTWc3dXNVREZkcDZXMUVHTWNldDgnO1xuXG4gIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgIG1vY2tLZXljaGFpbnMgPSB7XG4gICAgICBjcmVhdGU6IHNpbm9uLnN0dWIoKS5yZXR1cm5zKHsgcHViOiB1c2VyUHViLCBwcnY6IHVzZXJQcnYgfSksXG4gICAgICBhZGQ6IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyh7IGlkOiAndXNlci1rZXktaWQnLCBwdWI6IHVzZXJQdWIsIGVuY3J5cHRlZFBydjogJ2VuY3J5cHRlZC1wcnYnIH0pLFxuICAgIH07XG5cbiAgICBtb2NrQml0R28gPSB7XG4gICAgICBlbmNyeXB0OiBzaW5vblxuICAgICAgICAuc3R1YigpXG4gICAgICAgIC5jYWxsc0Zha2UoYXN5bmMgKHsgcGFzc3dvcmQsIGlucHV0IH06IHsgcGFzc3dvcmQ6IHN0cmluZzsgaW5wdXQ6IHN0cmluZyB9KSA9PiBgZW5jOiR7cGFzc3dvcmR9OiR7aW5wdXR9YCksXG4gICAgICBkZWNyeXB0OiBzaW5vbi5zdHViKCkucmVzb2x2ZXMoJ2RlY3J5cHRlZFBydicpLFxuICAgICAgZ2V0OiBzaW5vbi5zdHViKCkucmV0dXJucyh7IHJlc3VsdDogc2lub24uc3R1YigpLCBxdWVyeTogc2lub24uc3R1YigpLnJldHVybnNUaGlzKCkgfSksXG4gICAgICBwb3N0OiBzaW5vbi5zdHViKCkucmV0dXJucyh7IHNlbmQ6IHNpbm9uLnN0dWIoKS5yZXR1cm5zKHsgcmVzdWx0OiBzaW5vbi5zdHViKCkucmVzb2x2ZXMoe30pIH0pIH0pLFxuICAgICAgcHV0OiBzaW5vbi5zdHViKCkucmV0dXJucyh7XG4gICAgICAgIHNlbmQ6IHNpbm9uXG4gICAgICAgICAgLnN0dWIoKVxuICAgICAgICAgIC5yZXR1cm5zKHsgcmVzdWx0OiBzaW5vbi5zdHViKCkucmVzb2x2ZXMoeyBhY2NlcHRlZFdhbGxldFNoYXJlczogW10sIHdhbGxldFNoYXJlVXBkYXRlRXJyb3JzOiBbXSB9KSB9KSxcbiAgICAgIH0pLFxuICAgICAgZ2V0RUNESEtleWNoYWluOiBzaW5vbi5zdHViKCkucmVzb2x2ZXMoeyBlbmNyeXB0ZWRYcHJ2OiAnZW5jWHBydicgfSksXG4gICAgICBzZXRSZXF1ZXN0VHJhY2VyOiBzaW5vbi5zdHViKCksXG4gICAgICB1cmw6IHNpbm9uLnN0dWIoKS5yZXR1cm5zKCcvdGVzdC91cmwnKSxcbiAgICB9O1xuXG4gICAgbW9ja0Jhc2VDb2luID0ge1xuICAgICAga2V5Y2hhaW5zOiBzaW5vbi5zdHViKCkucmV0dXJucyhtb2NrS2V5Y2hhaW5zKSxcbiAgICAgIHVybDogc2lub24uc3R1YigpLmNhbGxzRmFrZSgocGF0aDogc3RyaW5nKSA9PiBwYXRoKSxcbiAgICAgIGdldEZhbWlseTogc2lub24uc3R1YigpLnJldHVybnMoJ2J0YycpLFxuICAgICAgZ2V0Q2hhaW46IHNpbm9uLnN0dWIoKS5yZXR1cm5zKCdidGMnKSxcbiAgICAgIHN1cHBvcnRzVHNzOiBzaW5vbi5zdHViKCkucmV0dXJucyhmYWxzZSksXG4gICAgICBnZXRNUENBbGdvcml0aG06IHNpbm9uLnN0dWIoKS5yZXR1cm5zKCdlY2RzYScpLFxuICAgIH07XG5cbiAgICB3YWxsZXRzID0gbmV3IFdhbGxldHMobW9ja0JpdEdvLCBtb2NrQmFzZUNvaW4pO1xuICB9KTtcblxuICBhZnRlckVhY2goZnVuY3Rpb24gKCkge1xuICAgIHNpbm9uLnJlc3RvcmUoKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2FjY2VwdFNoYXJlJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdwYXNzZXMgZW5jcnlwdGlvblZlcnNpb246IDIgdG8gZW5jcnlwdCBvbiB0aGUgbXVsdGlVc2VyS2V5Um90YXRpb25SZXF1aXJlZCBwYXRoJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgbW9ja0JpdEdvLmdldC5yZXR1cm5zKHtcbiAgICAgICAgcmVzdWx0OiBzaW5vbi5zdHViKCkucmVzb2x2ZXMoe1xuICAgICAgICAgIHVzZXJNdWx0aUtleVJvdGF0aW9uUmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAga2V5Y2hhaW46IG51bGwsXG4gICAgICAgICAgcGVybWlzc2lvbnM6IFsnc3BlbmQnXSxcbiAgICAgICAgICB3YWxsZXQ6ICd3YWxsZXQtaWQnLFxuICAgICAgICB9KSxcbiAgICAgIH0pO1xuXG4gICAgICBhd2FpdCB3YWxsZXRzLmFjY2VwdFNoYXJlKHtcbiAgICAgICAgd2FsbGV0U2hhcmVJZDogJ3NoYXJlLWlkJyxcbiAgICAgICAgdXNlclBhc3N3b3JkOiAnbXktcGFzc3dvcmQnLFxuICAgICAgICBlbmNyeXB0aW9uVmVyc2lvbjogMixcbiAgICAgIH0pO1xuXG4gICAgICBhc3NlcnQub2sobW9ja0JpdEdvLmVuY3J5cHQuY2FsbGVkLCAnZW5jcnlwdCBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCcpO1xuICAgICAgY29uc3QgY2FsbCA9IG1vY2tCaXRHby5lbmNyeXB0LmZpcnN0Q2FsbDtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChjYWxsLmFyZ3NbMF0uZW5jcnlwdGlvblZlcnNpb24sIDIpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Bhc3NlcyBlbmNyeXB0aW9uVmVyc2lvbjogdW5kZWZpbmVkIHdoZW4gbm90IHNldCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIG1vY2tCaXRHby5nZXQucmV0dXJucyh7XG4gICAgICAgIHJlc3VsdDogc2lub24uc3R1YigpLnJlc29sdmVzKHtcbiAgICAgICAgICB1c2VyTXVsdGlLZXlSb3RhdGlvblJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgIGtleWNoYWluOiBudWxsLFxuICAgICAgICAgIHBlcm1pc3Npb25zOiBbJ3NwZW5kJ10sXG4gICAgICAgICAgd2FsbGV0OiAnd2FsbGV0LWlkJyxcbiAgICAgICAgfSksXG4gICAgICB9KTtcblxuICAgICAgYXdhaXQgd2FsbGV0cy5hY2NlcHRTaGFyZSh7XG4gICAgICAgIHdhbGxldFNoYXJlSWQ6ICdzaGFyZS1pZCcsXG4gICAgICAgIHVzZXJQYXNzd29yZDogJ215LXBhc3N3b3JkJyxcbiAgICAgIH0pO1xuXG4gICAgICBhc3NlcnQub2sobW9ja0JpdEdvLmVuY3J5cHQuY2FsbGVkKTtcbiAgICAgIGNvbnN0IGNhbGwgPSBtb2NrQml0R28uZW5jcnlwdC5maXJzdENhbGw7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoY2FsbC5hcmdzWzBdLmVuY3J5cHRpb25WZXJzaW9uLCB1bmRlZmluZWQpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnYnVsa0FjY2VwdFNoYXJlJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHdhbGxldFNoYXJlc0xpc3QgPSB7XG4gICAgICBpbmNvbWluZzogW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6ICdzaGFyZS1pZCcsXG4gICAgICAgICAgdXNlck11bHRpS2V5Um90YXRpb25SZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICBrZXljaGFpbjogbnVsbCxcbiAgICAgICAgICBwZXJtaXNzaW9uczogWydzcGVuZCddLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIG91dGdvaW5nOiBbXSxcbiAgICB9O1xuXG4gICAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBtb2NrQml0R28uZ2V0LnJldHVybnMoeyByZXN1bHQ6IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyh3YWxsZXRTaGFyZXNMaXN0KSB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdwYXNzZXMgZW5jcnlwdGlvblZlcnNpb246IDIgdG8gZW5jcnlwdCBvbiB0aGUgbXVsdGlVc2VyS2V5Um90YXRpb25SZXF1aXJlZCBwYXRoJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgd2FsbGV0cy5idWxrQWNjZXB0U2hhcmUoe1xuICAgICAgICB3YWxsZXRTaGFyZUlkczogWydzaGFyZS1pZCddLFxuICAgICAgICB1c2VyTG9naW5QYXNzd29yZDogJ2xvZ2luLXBhc3N3b3JkJyxcbiAgICAgICAgZW5jcnlwdGlvblZlcnNpb246IDIsXG4gICAgICB9KTtcblxuICAgICAgYXNzZXJ0Lm9rKG1vY2tCaXRHby5lbmNyeXB0LmNhbGxlZCk7XG4gICAgICBjb25zdCBjYWxsID0gbW9ja0JpdEdvLmVuY3J5cHQuZmlyc3RDYWxsO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGNhbGwuYXJnc1swXS5lbmNyeXB0aW9uVmVyc2lvbiwgMik7XG4gICAgfSk7XG5cbiAgICBpdCgncGFzc2VzIGVuY3J5cHRpb25WZXJzaW9uOiB1bmRlZmluZWQgd2hlbiBub3Qgc2V0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgd2FsbGV0cy5idWxrQWNjZXB0U2hhcmUoe1xuICAgICAgICB3YWxsZXRTaGFyZUlkczogWydzaGFyZS1pZCddLFxuICAgICAgICB1c2VyTG9naW5QYXNzd29yZDogJ2xvZ2luLXBhc3N3b3JkJyxcbiAgICAgIH0pO1xuXG4gICAgICBhc3NlcnQub2sobW9ja0JpdEdvLmVuY3J5cHQuY2FsbGVkKTtcbiAgICAgIGNvbnN0IGNhbGwgPSBtb2NrQml0R28uZW5jcnlwdC5maXJzdENhbGw7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoY2FsbC5hcmdzWzBdLmVuY3J5cHRpb25WZXJzaW9uLCB1bmRlZmluZWQpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnV2FsbGV0LnNoYXJlV2FsbGV0IC8gY3JlYXRlQnVsa1dhbGxldFNoYXJlJywgZnVuY3Rpb24gKCkge1xuICAgIGxldCB3YWxsZXQ6IFdhbGxldDtcblxuICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgbW9ja1dhbGxldERhdGEgPSB7XG4gICAgICAgIGlkOiAnd2FsbGV0LWlkJyxcbiAgICAgICAga2V5czogWydrZXktMScsICdrZXktMicsICdrZXktMyddLFxuICAgICAgICBjb2luOiAnYnRjJyxcbiAgICAgICAgbGFiZWw6ICdUZXN0IFdhbGxldCcsXG4gICAgICAgIHVzZXJzOiBbXSxcbiAgICAgICAgbXVsdGlzaWdUeXBlOiAnb25jaGFpbicsXG4gICAgICAgIHR5cGU6ICdob3QnLFxuICAgICAgfTtcbiAgICAgIG1vY2tCYXNlQ29pbi5zdXBwb3J0c1RzcyA9IHNpbm9uLnN0dWIoKS5yZXR1cm5zKGZhbHNlKTtcbiAgICAgIG1vY2tCYXNlQ29pbi5nZXRNUENBbGdvcml0aG0gPSBzaW5vbi5zdHViKCkucmV0dXJucygnZWNkc2EnKTtcbiAgICAgIHdhbGxldCA9IG5ldyBXYWxsZXQobW9ja0JpdEdvLCBtb2NrQmFzZUNvaW4sIG1vY2tXYWxsZXREYXRhKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaGFyZVdhbGxldCBwYXNzZXMgZW5jcnlwdGlvblZlcnNpb24gdG8gcHJlcGFyZVNoYXJlZEtleWNoYWluJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcHJlcGFyZVN0dWIgPSBzaW5vbi5zdHViKHdhbGxldCwgJ3ByZXBhcmVTaGFyZWRLZXljaGFpbicpLnJlc29sdmVzKHt9KTtcbiAgICAgIG1vY2tCaXRHby5nZXRTaGFyaW5nS2V5ID0gc2lub24uc3R1YigpLnJlc29sdmVzKHsgdXNlcklkOiAndXNlci1pZCcsIHB1YmtleTogJ3JlY3ZQdWInLCBwYXRoOiAnbS8wJyB9KTtcbiAgICAgIG1vY2tCaXRHby5wb3N0LnJldHVybnMoeyBzZW5kOiBzaW5vbi5zdHViKCkucmV0dXJucyh7IHJlc3VsdDogc2lub24uc3R1YigpLnJlc29sdmVzKHt9KSB9KSB9KTtcblxuICAgICAgYXdhaXQgd2FsbGV0LnNoYXJlV2FsbGV0KHtcbiAgICAgICAgZW1haWw6ICd0ZXN0QHRlc3QuY29tJyxcbiAgICAgICAgcGVybWlzc2lvbnM6ICdzcGVuZCcsXG4gICAgICAgIHdhbGxldFBhc3NwaHJhc2U6ICdwYXNzcGhyYXNlJyxcbiAgICAgICAgZW5jcnlwdGlvblZlcnNpb246IDIsXG4gICAgICB9KTtcblxuICAgICAgYXNzZXJ0Lm9rKHByZXBhcmVTdHViLmNhbGxlZE9uY2UsICdwcmVwYXJlU2hhcmVkS2V5Y2hhaW4gc2hvdWxkIGJlIGNhbGxlZCcpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHByZXBhcmVTdHViLmZpcnN0Q2FsbC5hcmdzWzNdLCAyLCAnZW5jcnlwdGlvblZlcnNpb24gc2hvdWxkIGJlIGZvcndhcmRlZCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3NoYXJlV2FsbGV0IHBhc3NlcyBlbmNyeXB0aW9uVmVyc2lvbjogdW5kZWZpbmVkIHdoZW4gbm90IHNldCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHByZXBhcmVTdHViID0gc2lub24uc3R1Yih3YWxsZXQsICdwcmVwYXJlU2hhcmVkS2V5Y2hhaW4nKS5yZXNvbHZlcyh7fSk7XG4gICAgICBtb2NrQml0R28uZ2V0U2hhcmluZ0tleSA9IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyh7IHVzZXJJZDogJ3VzZXItaWQnLCBwdWJrZXk6ICdyZWN2UHViJywgcGF0aDogJ20vMCcgfSk7XG4gICAgICBtb2NrQml0R28ucG9zdC5yZXR1cm5zKHsgc2VuZDogc2lub24uc3R1YigpLnJldHVybnMoeyByZXN1bHQ6IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyh7fSkgfSkgfSk7XG5cbiAgICAgIGF3YWl0IHdhbGxldC5zaGFyZVdhbGxldCh7XG4gICAgICAgIGVtYWlsOiAndGVzdEB0ZXN0LmNvbScsXG4gICAgICAgIHBlcm1pc3Npb25zOiAnc3BlbmQnLFxuICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiAncGFzc3BocmFzZScsXG4gICAgICB9KTtcblxuICAgICAgYXNzZXJ0Lm9rKHByZXBhcmVTdHViLmNhbGxlZE9uY2UpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHByZXBhcmVTdHViLmZpcnN0Q2FsbC5hcmdzWzNdLCB1bmRlZmluZWQpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2NyZWF0ZUJ1bGtXYWxsZXRTaGFyZSBwYXNzZXMgZW5jcnlwdGlvblZlcnNpb24gdG8gZW5jcnlwdFBydkZvclVzZXInLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBlbmNyeXB0UHJ2U3R1YiA9IHNpbm9uXG4gICAgICAgIC5zdHViKHdhbGxldCwgJ2VuY3J5cHRQcnZGb3JVc2VyJylcbiAgICAgICAgLnJlc29sdmVzKHsgZW5jcnlwdGVkUHJ2OiAnZW5jJywgcHViOiAncHViJywgZnJvbVB1YktleTogJ2ZwaycsIHRvUHViS2V5OiAndHBrJywgcGF0aDogJ20vMCcgfSk7XG4gICAgICBzaW5vblxuICAgICAgICAuc3R1Yih3YWxsZXQgYXMgYW55LCAnZ2V0RGVjcnlwdGVkS2V5Y2hhaW5Gb3JTaGFyaW5nJylcbiAgICAgICAgLnJlc29sdmVzKHsgcHJ2OiAncHJ2JywgcHViOiAncHViJywgZW5jcnlwdGVkUHJ2OiAnZW5jUHJ2JyB9KTtcbiAgICAgIHNpbm9uLnN0dWIod2FsbGV0IGFzIGFueSwgJ2NyZWF0ZUJ1bGtLZXlTaGFyZXMnKS5yZXNvbHZlcyh7IHNoYXJlczogW10gfSk7XG5cbiAgICAgIGF3YWl0IHdhbGxldC5jcmVhdGVCdWxrV2FsbGV0U2hhcmUoe1xuICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiAncGFzc3BocmFzZScsXG4gICAgICAgIGtleVNoYXJlT3B0aW9uczogW3sgdXNlcklkOiAndXNlci0xJywgcHViS2V5OiAncHViS2V5JywgcGF0aDogJ20vMCcsIHBlcm1pc3Npb25zOiBbJ3NwZW5kJ10gfV0sXG4gICAgICAgIGVuY3J5cHRpb25WZXJzaW9uOiAyLFxuICAgICAgfSk7XG5cbiAgICAgIGFzc2VydC5vayhlbmNyeXB0UHJ2U3R1Yi5jYWxsZWRPbmNlKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChlbmNyeXB0UHJ2U3R1Yi5maXJzdENhbGwuYXJnc1s0XSwgMiwgJ2VuY3J5cHRpb25WZXJzaW9uIHNob3VsZCBiZSBmb3J3YXJkZWQnKTtcbiAgICB9KTtcblxuICAgIGl0KCdjcmVhdGVCdWxrV2FsbGV0U2hhcmUgcGFzc2VzIGVuY3J5cHRpb25WZXJzaW9uOiB1bmRlZmluZWQgd2hlbiBub3Qgc2V0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZW5jcnlwdFBydlN0dWIgPSBzaW5vblxuICAgICAgICAuc3R1Yih3YWxsZXQsICdlbmNyeXB0UHJ2Rm9yVXNlcicpXG4gICAgICAgIC5yZXNvbHZlcyh7IGVuY3J5cHRlZFBydjogJ2VuYycsIHB1YjogJ3B1YicsIGZyb21QdWJLZXk6ICdmcGsnLCB0b1B1YktleTogJ3RwaycsIHBhdGg6ICdtLzAnIH0pO1xuICAgICAgc2lub25cbiAgICAgICAgLnN0dWIod2FsbGV0IGFzIGFueSwgJ2dldERlY3J5cHRlZEtleWNoYWluRm9yU2hhcmluZycpXG4gICAgICAgIC5yZXNvbHZlcyh7IHBydjogJ3BydicsIHB1YjogJ3B1YicsIGVuY3J5cHRlZFBydjogJ2VuY1BydicgfSk7XG4gICAgICBzaW5vbi5zdHViKHdhbGxldCBhcyBhbnksICdjcmVhdGVCdWxrS2V5U2hhcmVzJykucmVzb2x2ZXMoeyBzaGFyZXM6IFtdIH0pO1xuXG4gICAgICBhd2FpdCB3YWxsZXQuY3JlYXRlQnVsa1dhbGxldFNoYXJlKHtcbiAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogJ3Bhc3NwaHJhc2UnLFxuICAgICAgICBrZXlTaGFyZU9wdGlvbnM6IFt7IHVzZXJJZDogJ3VzZXItMScsIHB1YktleTogJ3B1YktleScsIHBhdGg6ICdtLzAnLCBwZXJtaXNzaW9uczogWydzcGVuZCddIH1dLFxuICAgICAgfSk7XG5cbiAgICAgIGFzc2VydC5vayhlbmNyeXB0UHJ2U3R1Yi5jYWxsZWRPbmNlKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChlbmNyeXB0UHJ2U3R1Yi5maXJzdENhbGwuYXJnc1s0XSwgdW5kZWZpbmVkKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==