@bitgo/sdk-core 38.17.0 → 38.18.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 (38) hide show
  1. package/dist/src/account-lib/baseCoin/ed25519KeyPair.js +3 -3
  2. package/dist/src/account-lib/index.d.ts +0 -1
  3. package/dist/src/account-lib/index.d.ts.map +1 -1
  4. package/dist/src/account-lib/index.js +1 -2
  5. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts +14 -0
  6. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts.map +1 -1
  7. package/dist/src/bitgo/baseCoin/iBaseCoin.js +1 -1
  8. package/dist/src/bitgo/keychain/keychains.js +4 -4
  9. package/dist/src/bitgo/safe/derivableEd25519Pub.d.ts +3 -21
  10. package/dist/src/bitgo/safe/derivableEd25519Pub.d.ts.map +1 -1
  11. package/dist/src/bitgo/safe/derivableEd25519Pub.js +6 -145
  12. package/dist/src/bitgo/safe/iSafe.d.ts +5 -0
  13. package/dist/src/bitgo/safe/iSafe.d.ts.map +1 -1
  14. package/dist/src/bitgo/safe/iSafe.js +1 -1
  15. package/dist/src/bitgo/safe/index.d.ts +1 -1
  16. package/dist/src/bitgo/safe/index.d.ts.map +1 -1
  17. package/dist/src/bitgo/safe/index.js +2 -2
  18. package/dist/src/bitgo/safe/safe.d.ts +5 -1
  19. package/dist/src/bitgo/safe/safe.d.ts.map +1 -1
  20. package/dist/src/bitgo/safe/safe.js +23 -37
  21. package/dist/src/bitgo/safe/safes.js +4 -4
  22. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts +20 -3
  23. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts.map +1 -1
  24. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.js +18 -11
  25. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaVrfMPCv2.d.ts +1 -1
  26. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaVrfMPCv2.d.ts.map +1 -1
  27. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaVrfMPCv2.js +13 -5
  28. package/dist/src/bitgo/wallet/safeKeychain.js +3 -3
  29. package/dist/test/unit/bitgo/safe/safe.js +28 -2
  30. package/dist/test/unit/bitgo/safe/safeDerivation.js +5 -1
  31. package/dist/tsconfig.tsbuildinfo +1 -1
  32. package/package.json +5 -5
  33. package/dist/src/account-lib/util/ed25519KeyDeriver.d.ts +0 -52
  34. package/dist/src/account-lib/util/ed25519KeyDeriver.d.ts.map +0 -1
  35. package/dist/src/account-lib/util/ed25519KeyDeriver.js +0 -91
  36. package/dist/src/bitgo/safe/safeDerivation.d.ts +0 -43
  37. package/dist/src/bitgo/safe/safeDerivation.d.ts.map +0 -1
  38. package/dist/src/bitgo/safe/safeDerivation.js +0 -151
@@ -63,6 +63,7 @@ describe('Safe', function () {
63
63
  mockBitGo = {
64
64
  url: sinon.stub().callsFake((path) => path),
65
65
  post: sinon.stub(),
66
+ put: sinon.stub(),
66
67
  get: sinon.stub(),
67
68
  };
68
69
  safeData = {
@@ -108,6 +109,30 @@ describe('Safe', function () {
108
109
  mockBitGo.url.calledWith('/enterprise/test-enterprise-id/safes/test-safe-id', 2).should.be.true();
109
110
  });
110
111
  });
112
+ describe('update REST plumbing', function () {
113
+ function stubPut(response) {
114
+ const resultStub = sinon.stub().resolves(response);
115
+ const sendStub = sinon.stub().returns({ result: resultStub });
116
+ mockBitGo.put.returns({ send: sendStub });
117
+ return { resultStub, sendStub };
118
+ }
119
+ it('updates the label and decodes SafeData', async function () {
120
+ const updated = { ...safeDataWire, label: 'renamed safe' };
121
+ const { sendStub } = stubPut(updated);
122
+ const result = await safe.update({ label: 'renamed safe' });
123
+ mockBitGo.put.calledWith('/enterprise/test-enterprise-id/safes/test-safe-id').should.be.true();
124
+ sendStub.calledWithExactly({ label: 'renamed safe' }).should.be.true();
125
+ result.label.should.equal('renamed safe');
126
+ result.createdAt.should.be.instanceof(Date);
127
+ safe.label().should.equal('my safe');
128
+ });
129
+ it('propagates update errors', async function () {
130
+ const resultStub = sinon.stub().rejects(new Error('rename failed'));
131
+ const sendStub = sinon.stub().returns({ result: resultStub });
132
+ mockBitGo.put.returns({ send: sendStub });
133
+ await safe.update({ label: 'renamed safe' }).should.be.rejectedWith('rename failed');
134
+ });
135
+ });
111
136
  describe('freeze / archive REST plumbing', function () {
112
137
  function stubPost(response) {
113
138
  const resultStub = sinon.stub().resolves(response);
@@ -257,6 +282,7 @@ describe('Safe', function () {
257
282
  const ceremonyStub = sinon.stub(src_1.ECDSAUtils.EcdsaVrfMPCv2Utils.prototype, 'createSafeChildKeychains').resolves({
258
283
  userKeychain: { id: 'ecdsa-child-user' },
259
284
  backupKeychain: { id: 'ecdsa-child-backup-placeholder' },
285
+ bitgoKeychain: { id: 'ecdsa-child-bitgo-placeholder' },
260
286
  });
261
287
  const wallet = await safe.createWallet({ coin: 'hteth', label: 'evm', passphrase: 'pw', multisigType: 'tss' });
262
288
  derivationQuery.calledOnceWithExactly({ slot: 'ecdsaMpc' }).should.be.true();
@@ -279,7 +305,7 @@ describe('Safe', function () {
279
305
  label: 'evm',
280
306
  type: 'hot',
281
307
  multisigType: 'tss',
282
- keys: ['ecdsa-child-user', 'ecdsa-child-backup-placeholder'],
308
+ keys: ['ecdsa-child-user', 'ecdsa-child-backup-placeholder', 'ecdsa-child-bitgo-placeholder'],
283
309
  });
284
310
  wallet.id().should.equal('wallet-id');
285
311
  });
@@ -373,4 +399,4 @@ describe('Safe', function () {
373
399
  });
374
400
  });
375
401
  });
376
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FmZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Rlc3QvdW5pdC9iaXRnby9zYWZlL3NhZmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw2Q0FBK0I7QUFDL0Isa0JBQWdCO0FBRWhCLHlDQU15QjtBQUV6QixNQUFNLFNBQVMsR0FDYixpSEFBaUgsQ0FBQztBQUVwSCxtR0FBbUc7QUFDbkcsMENBQTBDO0FBQzFDLE1BQU0sd0JBQXdCLEdBQUcsMERBQTBELENBQUM7QUFDNUYsTUFBTSxlQUFlLEdBQUcsSUFBQSxvQ0FBOEIsRUFBQyx3QkFBd0IsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUVwRixRQUFRLENBQUMsTUFBTSxFQUFFO0lBQ2YsSUFBSSxJQUFVLENBQUM7SUFDZixJQUFJLFNBQWMsQ0FBQztJQUNuQixJQUFJLFFBQWtCLENBQUM7SUFDdkIsOEZBQThGO0lBQzlGLElBQUksWUFBaUIsQ0FBQztJQUV0QixNQUFNLGlCQUFpQixHQUE2QixDQUFDLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLENBQUMsQ0FBQztJQUN4RyxNQUFNLFFBQVEsR0FBNkIsQ0FBQyxZQUFZLEVBQUUsY0FBYyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQ3pGLE1BQU0sUUFBUSxHQUE2QixDQUFDLFlBQVksRUFBRSxjQUFjLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDekYsTUFBTSxlQUFlLEdBQTZCLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUN2RixNQUFNLFFBQVEsR0FBRztRQUNmLEdBQUcsRUFBRTtZQUNILGlCQUFpQjtZQUNqQixRQUFRO1lBQ1IsUUFBUTtZQUNSLGVBQWU7U0FDaEI7S0FDRixDQUFDO0lBRUYsVUFBVSxDQUFDO1FBQ1QsU0FBUyxHQUFHO1lBQ1YsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxT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LEtBQUssRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUFDO2lCQUM5RCxNQUFNLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyw0QkFBc0IsQ0FBQyxDQUFDO1FBQ3BELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHNpbm9uIGZyb20gJ3Npbm9uJztcbmltcG9ydCAnc2hvdWxkJztcbmltcG9ydCB7IFNhZmVEYXRhIH0gZnJvbSAnQGJpdGdvL3B1YmxpYy10eXBlcyc7XG5pbXBvcnQge1xuICBFQ0RTQVV0aWxzLFxuICBJbmNvcnJlY3RQYXNzd29yZEVycm9yLFxuICBTYWZlLFxuICBkZXJpdmVTYWZlQ2hpbGRFZDI1NTE5SGFyZGVuZWQsXG4gIGRlcml2ZVNhZmVDaGlsZEhhcmRlbmVkRnJvbVhwcnYsXG59IGZyb20gJy4uLy4uLy4uLy4uL3NyYyc7XG5cbmNvbnN0IFJPT1RfWFBSViA9XG4gICd4cHJ2OXMyMVpyUUgxNDNLM2hla3lOajdUY2lSNFhOWWUxa01qNjhXMmlwakpHTkhFVFdQN280MkFqRG5TUGdLaGRaNHg4TkJBdmFMNzJSclhqdVhOZG1rTXFMRVJaemE3M29ZdWdHdGJMRlhHOGcnO1xuXG4vLyAzMi1ieXRlIHN5bnRoZXRpYyBzZWVkLCBTdHJLZXkgc3BlbGxpbmcgZ2VuZXJhdGVkIHdpdGggc3RlbGxhci1zZGs7IHBpbm5lZCBkZXJpdmF0aW9uIHZlY3RvcnMgaW5cbi8vIHRlc3QvdW5pdC9iaXRnby9zYWZlL3NhZmVEZXJpdmF0aW9uLnRzLlxuY29uc3QgUk9PVF9FRDI1NTE5X1NFRURfU1RSS0VZID0gJ1NBQUFDQVFEQVFDUU1CWUlCRUZBV0RBTkJZSFJBRUlTQ01LQktGUVhEQU1SVUdZNERVUEI2TktJJztcbmNvbnN0IGVkMjU1MTlDaGlsZEF0MCA9IGRlcml2ZVNhZmVDaGlsZEVkMjU1MTlIYXJkZW5lZChST09UX0VEMjU1MTlfU0VFRF9TVFJLRVksIDApO1xuXG5kZXNjcmliZSgnU2FmZScsIGZ1bmN0aW9uICgpIHtcbiAgbGV0IHNhZmU6IFNhZmU7XG4gIGxldCBtb2NrQml0R286IGFueTtcbiAgbGV0IHNhZmVEYXRhOiBTYWZlRGF0YTtcbiAgLy8gd2lyZS1zaGFwZWQgU2FmZURhdGEgKHRpbWVzdGFtcHMgYXMgSVNPIHN0cmluZ3MpIGZvciBtb2NrZWQgUkVTVCByZXNwb25zZXMgdGhhdCBnZXQgZGVjb2RlZFxuICBsZXQgc2FmZURhdGFXaXJlOiBhbnk7XG5cbiAgY29uc3Qgc2VjcDI1NmsxTXVsdGlzaWc6IFtzdHJpbmcsIHN0cmluZywgc3RyaW5nXSA9IFsndXNlci1yb290LWlkJywgJ2JhY2t1cC1yb290LWlkJywgJ2JpdGdvLXJvb3QtaWQnXTtcbiAgY29uc3QgZWNkc2FNcGM6IFtzdHJpbmcsIHN0cmluZywgc3RyaW5nXSA9IFsnZWNkc2EtdXNlcicsICdlY2RzYS1iYWNrdXAnLCAnZWNkc2EtYml0Z28nXTtcbiAgY29uc3QgZWRkc2FNcGM6IFtzdHJpbmcsIHN0cmluZywgc3RyaW5nXSA9IFsnZWRkc2EtdXNlcicsICdlZGRzYS1iYWNrdXAnLCAnZWRkc2EtYml0Z28nXTtcbiAgY29uc3QgZWQyNTUxOU11bHRpc2lnOiBbc3RyaW5nLCBzdHJpbmcsIHN0cmluZ10gPSBbJ2VkLXVzZXInLCAnZWQtYmFja3VwJywgJ2VkLWJpdGdvJ107XG4gIGNvbnN0IHJvb3RLZXlzID0ge1xuICAgIGhvdDoge1xuICAgICAgc2VjcDI1NmsxTXVsdGlzaWcsXG4gICAgICBlY2RzYU1wYyxcbiAgICAgIGVkZHNhTXBjLFxuICAgICAgZWQyNTUxOU11bHRpc2lnLFxuICAgIH0sXG4gIH07XG5cbiAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgbW9ja0JpdEdvID0ge1xuICAgICAgdXJsOiBzaW5vbi5zdHViKCkuY2FsbHNGYWtlKChwYXRoOiBzdHJpbmcpID0+IHBhdGgpLFxuICAgICAgcG9zdDogc2lub24uc3R1YigpLFxuICAgICAgZ2V0OiBzaW5vbi5zdHViKCksXG4gICAgfTtcbiAgICBzYWZlRGF0YSA9IHtcbiAgICAgIGlkOiAndGVzdC1zYWZlLWlkJyxcbiAgICAgIGVudGVycHJpc2VJZDogJ3Rlc3QtZW50ZXJwcmlzZS1pZCcsXG4gICAgICBsYWJlbDogJ215IHNhZmUnLFxuICAgICAgc3RhdHVzOiAnYWN0aXZlJyxcbiAgICAgIGNyZWF0b3I6ICdjcmVhdG9yLWlkJyxcbiAgICAgIHVzZXJzOiBbeyB1c2VySWQ6ICdjcmVhdG9yLWlkJywgcGVybWlzc2lvbnM6IFsnYWRtaW4nLCAnc3BlbmQnXSB9XSxcbiAgICAgIGNyZWF0ZWRBdDogbmV3IERhdGUoJzIwMjYtMDctMDdUMDA6MDA6MDAuMDAwWicpLFxuICAgICAgcm9vdEtleXMsXG4gICAgfTtcbiAgICBzYWZlRGF0YVdpcmUgPSB7XG4gICAgICBpZDogJ3Rlc3Qtc2FmZS1pZCcsXG4gICAgICBlbnRlcnByaXNlSWQ6ICd0ZXN0LWVudGVycHJpc2UtaWQnLFxuICAgICAgbGFiZWw6ICdteSBzYWZlJyxcbiAgICAgIHN0YXR1czogJ2FjdGl2ZScsXG4gICAgICBjcmVhdG9yOiAnY3JlYXRvci1pZCcsXG4gICAgICB1c2VyczogW3sgdXNlcklkOiAnY3JlYXRvci1pZCcsIHBlcm1pc3Npb25zOiBbJ2FkbWluJywgJ3NwZW5kJ10gfV0sXG4gICAgICBjcmVhdGVkQXQ6ICcyMDI2LTA3LTA3VDAwOjAwOjAwLjAwMFonLFxuICAgICAgcm9vdEtleXMsXG4gICAgfTtcbiAgICBzYWZlID0gbmV3IFNhZmUobW9ja0JpdEdvLCBzYWZlRGF0YSk7XG4gIH0pO1xuXG4gIGFmdGVyRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgc2lub24ucmVzdG9yZSgpO1xuICB9KTtcblxuICBkZXNjcmliZSgnZ2V0dGVycycsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnZXhwb3NlcyBpZC9lbnRlcnByaXNlSWQvbGFiZWwvc3RhdHVzJywgZnVuY3Rpb24gKCkge1xuICAgICAgc2FmZS5pZCgpLnNob3VsZC5lcXVhbCgndGVzdC1zYWZlLWlkJyk7XG4gICAgICBzYWZlLmVudGVycHJpc2VJZCgpLnNob3VsZC5lcXVhbCgndGVzdC1lbnRlcnByaXNlLWlkJyk7XG4gICAgICBzYWZlLmxhYmVsKCkuc2hvdWxkLmVxdWFsKCdteSBzYWZlJyk7XG4gICAgICBzYWZlLnN0YXR1cygpLnNob3VsZC5lcXVhbCgnYWN0aXZlJyk7XG4gICAgfSk7XG5cbiAgICBpdCgndG9KU09OIHJldHVybnMgdGhlIHVuZGVybHlpbmcgZGF0YScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNhZmUudG9KU09OKCkuc2hvdWxkLmVxdWFsKHNhZmVEYXRhKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3VybCcsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnYnVpbGRzIHRoZSBlbnRlcnByaXNlLXNjb3BlZCB2MiBwYXRoJywgZnVuY3Rpb24gKCkge1xuICAgICAgc2FmZS51cmwoKS5zaG91bGQuZXF1YWwoJy9lbnRlcnByaXNlL3Rlc3QtZW50ZXJwcmlzZS1pZC9zYWZlcy90ZXN0LXNhZmUtaWQnKTtcbiAgICAgIHNhZmUudXJsKCcvZnJlZXplJykuc2hvdWxkLmVxdWFsKCcvZW50ZXJwcmlzZS90ZXN0LWVudGVycHJpc2UtaWQvc2FmZXMvdGVzdC1zYWZlLWlkL2ZyZWV6ZScpO1xuICAgICAgbW9ja0JpdEdvLnVybC5jYWxsZWRXaXRoKCcvZW50ZXJwcmlzZS90ZXN0LWVudGVycHJpc2UtaWQvc2FmZXMvdGVzdC1zYWZlLWlkJywgMikuc2hvdWxkLmJlLnRydWUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2ZyZWV6ZSAvIGFyY2hpdmUgUkVTVCBwbHVtYmluZycsIGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBzdHViUG9zdChyZXNwb25zZTogdW5rbm93bikge1xuICAgICAgY29uc3QgcmVzdWx0U3R1YiA9IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyhyZXNwb25zZSk7XG4gICAgICBjb25zdCBzZW5kU3R1YiA9IHNpbm9uLnN0dWIoKS5yZXR1cm5zKHsgcmVzdWx0OiByZXN1bHRTdHViIH0pO1xuICAgICAgbW9ja0JpdEdvLnBvc3QucmV0dXJucyh7IHNlbmQ6IHNlbmRTdHViIH0pO1xuICAgICAgcmV0dXJuIHsgc2VuZFN0dWIgfTtcbiAgICB9XG5cbiAgICBpdCgnZnJlZXplIHBvc3RzIHRoZSBlbmNvZGVkIGJvZHkgdG8gdGhlIGZyZWV6ZSByb3V0ZSBhbmQgZGVjb2RlcyBTYWZlRGF0YScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGZyb3plbiA9IHsgLi4uc2FmZURhdGFXaXJlLCBmcmVlemU6IHsgcmVhc29uOiAnaW5jaWRlbnQnIH0gfTtcbiAgICAgIGNvbnN0IHsgc2VuZFN0dWIgfSA9IHN0dWJQb3N0KGZyb3plbik7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzYWZlLmZyZWV6ZSh7IHJlYXNvbjogJ2luY2lkZW50JyB9KTtcbiAgICAgIG1vY2tCaXRHby5wb3N0LmNhbGxlZFdpdGgoJy9lbnRlcnByaXNlL3Rlc3QtZW50ZXJwcmlzZS1pZC9zYWZlcy90ZXN0LXNhZmUtaWQvZnJlZXplJykuc2hvdWxkLmJlLnRydWUoKTtcbiAgICAgIHNlbmRTdHViLmNhbGxlZFdpdGgoeyByZWFzb246ICdpbmNpZGVudCcgfSkuc2hvdWxkLmJlLnRydWUoKTtcbiAgICAgIHJlc3VsdC5mcmVlemUhLnJlYXNvbiEuc2hvdWxkLmVxdWFsKCdpbmNpZGVudCcpO1xuICAgICAgcmVzdWx0LmNyZWF0ZWRBdC5zaG91bGQuYmUuaW5zdGFuY2VvZihEYXRlKTtcbiAgICB9KTtcblxuICAgIGl0KCdhcmNoaXZlIHBvc3RzIGFuIGVtcHR5IGJvZHkgdG8gdGhlIGFyY2hpdmUgcm91dGUgYW5kIGRlY29kZXMgU2FmZURhdGEnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBhcmNoaXZlZCA9IHsgLi4uc2FmZURhdGFXaXJlLCBzdGF0dXM6ICdhcmNoaXZlZCcgYXMgY29uc3QgfTtcbiAgICAgIGNvbnN0IHsgc2VuZFN0dWIgfSA9IHN0dWJQb3N0KGFyY2hpdmVkKTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHNhZmUuYXJjaGl2ZSgpO1xuICAgICAgbW9ja0JpdEdvLnBvc3QuY2FsbGVkV2l0aCgnL2VudGVycHJpc2UvdGVzdC1lbnRlcnByaXNlLWlkL3NhZmVzL3Rlc3Qtc2FmZS1pZC9hcmNoaXZlJykuc2hvdWxkLmJlLnRydWUoKTtcbiAgICAgIHNlbmRTdHViLmNhbGxlZFdpdGhFeGFjdGx5KCkuc2hvdWxkLmJlLnRydWUoKTtcbiAgICAgIHJlc3VsdC5zdGF0dXMuc2hvdWxkLmVxdWFsKCdhcmNoaXZlZCcpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnbWVtYmVyL3NoYXJlIG1ldGhvZHMgYXJlIHN0dWJiZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ2FkZE1lbWJlciB0aHJvd3Mgbm90LWltcGxlbWVudGVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgc2FmZS5hZGRNZW1iZXIoeyB1c2VySWQ6ICd1JywgcGVybWlzc2lvbnM6IFsndmlldyddIH0pLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL25vdCB5ZXQgaW1wbGVtZW50ZWQvKTtcbiAgICB9KTtcblxuICAgIGl0KCdhZGRNZW1iZXJUb1dhbGxldCB0aHJvd3Mgbm90LWltcGxlbWVudGVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgc2FmZVxuICAgICAgICAuYWRkTWVtYmVyVG9XYWxsZXQoeyB3YWxsZXRJZDogJ3cnLCB3YWxsZXRQYXNzcGhyYXNlOiAncCcgfSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL25vdCB5ZXQgaW1wbGVtZW50ZWQvKTtcbiAgICB9KTtcblxuICAgIGl0KCdsaXN0U2hhcmVzIHRocm93cyBub3QtaW1wbGVtZW50ZWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBzYWZlLmxpc3RTaGFyZXMoKS5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKC9ub3QgeWV0IGltcGxlbWVudGVkLyk7XG4gICAgfSk7XG5cbiAgICBpdCgnYWNjZXB0U2hhcmUgdGhyb3dzIG5vdC1pbXBsZW1lbnRlZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IHNhZmUuYWNjZXB0U2hhcmUoeyBzYWZlU2hhcmVJZDogJ3MnIH0pLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL25vdCB5ZXQgaW1wbGVtZW50ZWQvKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2NyZWF0ZVdhbGxldCAoV0NOLTEyMDMpJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGNoaWxkQXQwID0gZGVyaXZlU2FmZUNoaWxkSGFyZGVuZWRGcm9tWHBydihST09UX1hQUlYsIDApO1xuICAgIGNvbnN0IGNoaWxkQXQ3ID0gZGVyaXZlU2FmZUNoaWxkSGFyZGVuZWRGcm9tWHBydihST09UX1hQUlYsIDcpO1xuICAgIGxldCBrZXljaGFpbnNBZGQ6IHNpbm9uLlNpbm9uU3R1YjtcbiAgICBsZXQga2V5Y2hhaW5zR2V0OiBzaW5vbi5TaW5vblN0dWI7XG4gICAgbGV0IGRlcml2YXRpb25RdWVyeTogc2lub24uU2lub25TdHViO1xuICAgIGxldCBtaW50U2VuZDogc2lub24uU2lub25TdHViO1xuXG4gICAgZnVuY3Rpb24gc3R1YkNvaW4oY2hhaW46IHN0cmluZywgb3B0czogeyBnZXREZWZhdWx0TXVsdGlzaWdUeXBlPzogc3RyaW5nIH0gPSB7fSkge1xuICAgICAga2V5Y2hhaW5zR2V0ID0gc2lub24uc3R1YigpLnJlc29sdmVzKHtcbiAgICAgICAgaWQ6ICd1c2VyLXJvb3QtaWQnLFxuICAgICAgICBzb3VyY2U6ICd1c2VyJyxcbiAgICAgICAgZW5jcnlwdGVkUHJ2OiBgZW5jOiR7Uk9PVF9YUFJWfWAsXG4gICAgICAgIHB1YjogJ3Jvb3QteHB1YicsXG4gICAgICAgIHR5cGU6ICdpbmRlcGVuZGVudCcsXG4gICAgICB9KTtcbiAgICAgIGtleWNoYWluc0FkZCA9IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyh7IGlkOiAnY2hpbGQta2V5LWlkJywgcHViOiBjaGlsZEF0MC5wdWIsIHR5cGU6ICdpbmRlcGVuZGVudCcgfSk7XG4gICAgICBtb2NrQml0R28uY29pbiA9IHNpbm9uLnN0dWIoKS5yZXR1cm5zKHtcbiAgICAgICAgZ2V0Q2hhaW46IHNpbm9uLnN0dWIoKS5yZXR1cm5zKGNoYWluKSxcbiAgICAgICAgZ2V0RGVmYXVsdE11bHRpc2lnVHlwZTogc2lub24uc3R1YigpLnJldHVybnMob3B0cy5nZXREZWZhdWx0TXVsdGlzaWdUeXBlKSxcbiAgICAgICAgc3VwcG9ydHNUc3M6IHNpbm9uLnN0dWIoKS5yZXR1cm5zKGZhbHNlKSxcbiAgICAgICAga2V5Y2hhaW5zOiBzaW5vbi5zdHViKCkucmV0dXJucyh7IGdldDoga2V5Y2hhaW5zR2V0LCBhZGQ6IGtleWNoYWluc0FkZCB9KSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIHN0dWJDb2luKCd0YnRjJyk7XG4gICAgICBtb2NrQml0R28uZGVjcnlwdCA9IHNpbm9uLnN0dWIoKS5jYWxsc0Zha2UoKHsgaW5wdXQsIHBhc3N3b3JkIH06IHsgaW5wdXQ6IHN0cmluZzsgcGFzc3dvcmQ6IHN0cmluZyB9KSA9PiB7XG4gICAgICAgIGlmIChwYXNzd29yZCAhPT0gJ3B3Jykge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHBhc3N3b3JkJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlucHV0LnN0YXJ0c1dpdGgoJ2VuYzonKSkge1xuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoaW5wdXQuc2xpY2UoNCkpO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIGNpcGhlcnRleHQnKTtcbiAgICAgIH0pO1xuICAgICAgZGVyaXZhdGlvblF1ZXJ5ID0gc2lub24uc3R1YigpLnJldHVybnMoe1xuICAgICAgICByZXN1bHQ6IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyh7IHNsb3Q6ICdzZWNwMjU2azFNdWx0aXNpZycsIGluZGV4OiAwIH0pLFxuICAgICAgfSk7XG4gICAgICBtb2NrQml0R28uZ2V0LnJldHVybnMoeyBxdWVyeTogZGVyaXZhdGlvblF1ZXJ5IH0pO1xuICAgICAgY29uc3QgbWludFJlc3VsdCA9IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyh7XG4gICAgICAgIGlkOiAnd2FsbGV0LWlkJyxcbiAgICAgICAgY29pbjogJ3RidGMnLFxuICAgICAgICBrZXlzOiBbJ2NoaWxkLWtleS1pZCcsICdiYWNrdXAtY2hpbGQnLCAnYml0Z28tY2hpbGQnXSxcbiAgICAgICAgdHlwZTogJ2hvdCcsXG4gICAgICAgIG11bHRpc2lnVHlwZTogJ29uY2hhaW4nLFxuICAgICAgICBlbnRlcnByaXNlOiAndGVzdC1lbnRlcnByaXNlLWlkJyxcbiAgICAgICAgc2FmZTogJ3Rlc3Qtc2FmZS1pZCcsXG4gICAgICB9KTtcbiAgICAgIG1pbnRTZW5kID0gc2lub24uc3R1YigpLnJldHVybnMoeyByZXN1bHQ6IG1pbnRSZXN1bHQgfSk7XG4gICAgICBtb2NrQml0R28ucG9zdC5yZXR1cm5zKHsgc2VuZDogbWludFNlbmQgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgncGVla3MgdGhlIGluZGV4LCByZWdpc3RlcnMgYSBwdWJsaWMtb25seSB1c2VyIGNoaWxkLCBhbmQgbWludHMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB3YWxsZXQgPSBhd2FpdCBzYWZlLmNyZWF0ZVdhbGxldCh7IGNvaW46ICd0YnRjJywgbGFiZWw6ICdkZXNrIDEnLCBwYXNzcGhyYXNlOiAncHcnIH0pO1xuXG4gICAgICBkZXJpdmF0aW9uUXVlcnkuY2FsbGVkT25jZVdpdGhFeGFjdGx5KHsgc2xvdDogJ3NlY3AyNTZrMU11bHRpc2lnJyB9KS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAga2V5Y2hhaW5zR2V0LmNhbGxlZE9uY2VXaXRoRXhhY3RseSh7IGlkOiAndXNlci1yb290LWlkJyB9KS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAga2V5Y2hhaW5zQWRkLmNhbGxlZE9uY2Uuc2hvdWxkLmJlLnRydWUoKTtcbiAgICAgIGNvbnN0IGFkZEFyZ3MgPSBrZXljaGFpbnNBZGQuZmlyc3RDYWxsLmFyZ3NbMF07XG4gICAgICBhZGRBcmdzLnNob3VsZC5lcWwoe1xuICAgICAgICBwdWI6IGNoaWxkQXQwLnB1YixcbiAgICAgICAgc291cmNlOiAndXNlcicsXG4gICAgICAgIGtleVR5cGU6ICdpbmRlcGVuZGVudCcsXG4gICAgICAgIHBhcmVudDogJ3VzZXItcm9vdC1pZCcsXG4gICAgICAgIHNhZmVJZDogJ3Rlc3Qtc2FmZS1pZCcsXG4gICAgICAgIGRlcml2ZWRGcm9tUGFyZW50V2l0aFBhdGg6IFwibS8wJ1wiLFxuICAgICAgfSk7XG4gICAgICBhZGRBcmdzLnNob3VsZC5ub3QuaGF2ZS5wcm9wZXJ0eSgnZW5jcnlwdGVkUHJ2Jyk7XG4gICAgICBhZGRBcmdzLnNob3VsZC5ub3QuaGF2ZS5wcm9wZXJ0eSgnZGVyaXZlZEZyb21QYXJlbnRXaXRoU2VlZCcpO1xuICAgICAgYWRkQXJncy5zaG91bGQubm90LmhhdmUucHJvcGVydHkoJ3BhdGgnKTtcblxuICAgICAgbW9ja0JpdEdvLnBvc3QuY2FsbGVkV2l0aCgnL2VudGVycHJpc2UvdGVzdC1lbnRlcnByaXNlLWlkL3NhZmVzL3Rlc3Qtc2FmZS1pZC93YWxsZXRzJykuc2hvdWxkLmJlLnRydWUoKTtcbiAgICAgIG1pbnRTZW5kLmZpcnN0Q2FsbC5hcmdzWzBdLnNob3VsZC5lcWwoe1xuICAgICAgICBjb2luOiAndGJ0YycsXG4gICAgICAgIGxhYmVsOiAnZGVzayAxJyxcbiAgICAgICAgdHlwZTogJ2hvdCcsXG4gICAgICAgIG11bHRpc2lnVHlwZTogJ29uY2hhaW4nLFxuICAgICAgICBrZXlzOiBbJ2NoaWxkLWtleS1pZCddLFxuICAgICAgfSk7XG4gICAgICB3YWxsZXQuaWQoKS5zaG91bGQuZXF1YWwoJ3dhbGxldC1pZCcpO1xuICAgICAgY29uc3QgbWludGVkU2FmZUlkID0gd2FsbGV0LnNhZmVJZCgpO1xuICAgICAgaWYgKG1pbnRlZFNhZmVJZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignZXhwZWN0ZWQgbWludGVkIHdhbGxldCB0byBpbmNsdWRlIHNhZmVJZCcpO1xuICAgICAgfVxuICAgICAgbWludGVkU2FmZUlkLnNob3VsZC5lcXVhbCgndGVzdC1zYWZlLWlkJyk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVnaXN0ZXJzIHRoZSBjaGlsZCB3aXRoIGRlcml2ZWRGcm9tUGFyZW50V2l0aFBhdGggYXQgYSBub24temVybyBtaW50IGluZGV4JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgZGVyaXZhdGlvblF1ZXJ5LnJldHVybnMoe1xuICAgICAgICByZXN1bHQ6IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyh7IHNsb3Q6ICdzZWNwMjU2azFNdWx0aXNpZycsIGluZGV4OiA3IH0pLFxuICAgICAgfSk7XG4gICAgICBrZXljaGFpbnNBZGQucmVzb2x2ZXMoeyBpZDogJ2NoaWxkLWtleS1pZCcsIHB1YjogY2hpbGRBdDcucHViLCB0eXBlOiAnaW5kZXBlbmRlbnQnIH0pO1xuXG4gICAgICBhd2FpdCBzYWZlLmNyZWF0ZVdhbGxldCh7IGNvaW46ICd0YnRjJywgbGFiZWw6ICdkZXNrIDgnLCBwYXNzcGhyYXNlOiAncHcnIH0pO1xuXG4gICAgICBjb25zdCBhZGRBcmdzID0ga2V5Y2hhaW5zQWRkLmZpcnN0Q2FsbC5hcmdzWzBdO1xuICAgICAgYWRkQXJncy5wdWIuc2hvdWxkLmVxdWFsKGNoaWxkQXQ3LnB1Yik7XG4gICAgICBhZGRBcmdzLmRlcml2ZWRGcm9tUGFyZW50V2l0aFBhdGguc2hvdWxkLmVxdWFsKFwibS83J1wiKTtcbiAgICAgIGFkZEFyZ3Muc2hvdWxkLm5vdC5oYXZlLnByb3BlcnR5KCdwYXRoJyk7XG4gICAgICBhZGRBcmdzLnNob3VsZC5ub3QuaGF2ZS5wcm9wZXJ0eSgnZGVyaXZlZEZyb21QYXJlbnRXaXRoU2VlZCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ21pbnRzIGEgVFNTIHdhbGxldCB2aWEgdGhlIHVzZXIvQml0R28gZGVyaXZlIGNlcmVtb255JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgc3R1YkNvaW4oJ2h0ZXRoJywgeyBnZXREZWZhdWx0TXVsdGlzaWdUeXBlOiAndHNzJyB9KTtcbiAgICAgIC8vIFJlYWwgVlJGIGtleSBlbnZlbG9wZTogYHt2ZXJzaW9uOiAxLCBwcnZLZXlTaGFyZSwgdnJmfWAuXG4gICAgICBjb25zdCB1c2VyQmxvYiA9IEVDRFNBVXRpbHMuYnVpbGRWcmZLZXlFbnZlbG9wZXMoXG4gICAgICAgIEJ1ZmZlci5mcm9tKCdzaWduaW5nLTEnKSxcbiAgICAgICAgQnVmZmVyLmZyb20oJ3JlZHVjZWQtMScpLFxuICAgICAgICBCdWZmZXIuZnJvbSgndnJmLTEnKVxuICAgICAgKS5lbnZlbG9wZS50b1N0cmluZygnYmFzZTY0Jyk7XG4gICAgICBrZXljaGFpbnNHZXQub25GaXJzdENhbGwoKS5yZXNvbHZlcyh7IGlkOiAnZWNkc2EtdXNlcicsIHNvdXJjZTogJ3VzZXInLCBlbmNyeXB0ZWRQcnY6IGBlbmM6JHt1c2VyQmxvYn1gIH0pO1xuICAgICAgbW9ja0JpdEdvLmRlY3J5cHQgPSBzaW5vblxuICAgICAgICAuc3R1YigpXG4gICAgICAgIC5jYWxsc0Zha2UoKHsgaW5wdXQgfTogeyBpbnB1dDogc3RyaW5nIH0pID0+IFByb21pc2UucmVzb2x2ZShpbnB1dC5zdGFydHNXaXRoKCdlbmM6JykgPyBpbnB1dC5zbGljZSg0KSA6ICcnKSk7XG5cbiAgICAgIGRlcml2YXRpb25RdWVyeS5yZXR1cm5zKHtcbiAgICAgICAgcmVzdWx0OiBzaW5vbi5zdHViKCkucmVzb2x2ZXMoeyBzbG90OiAnZWNkc2FNcGMnLCBpbmRleDogMCB9KSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBjZXJlbW9ueVN0dWIgPSBzaW5vbi5zdHViKEVDRFNBVXRpbHMuRWNkc2FWcmZNUEN2MlV0aWxzLnByb3RvdHlwZSwgJ2NyZWF0ZVNhZmVDaGlsZEtleWNoYWlucycpLnJlc29sdmVzKHtcbiAgICAgICAgdXNlcktleWNoYWluOiB7IGlkOiAnZWNkc2EtY2hpbGQtdXNlcicgfSxcbiAgICAgICAgYmFja3VwS2V5Y2hhaW46IHsgaWQ6ICdlY2RzYS1jaGlsZC1iYWNrdXAtcGxhY2Vob2xkZXInIH0sXG4gICAgICB9IGFzIG5ldmVyKTtcblxuICAgICAgY29uc3Qgd2FsbGV0ID0gYXdhaXQgc2FmZS5jcmVhdGVXYWxsZXQoeyBjb2luOiAnaHRldGgnLCBsYWJlbDogJ2V2bScsIHBhc3NwaHJhc2U6ICdwdycsIG11bHRpc2lnVHlwZTogJ3RzcycgfSk7XG5cbiAgICAgIGRlcml2YXRpb25RdWVyeS5jYWxsZWRPbmNlV2l0aEV4YWN0bHkoeyBzbG90OiAnZWNkc2FNcGMnIH0pLnNob3VsZC5iZS50cnVlKCk7XG4gICAgICBrZXljaGFpbnNHZXQuY2FsbGVkT25jZVdpdGhFeGFjdGx5KHsgaWQ6ICdlY2RzYS11c2VyJyB9KS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgY29uc3QgY2VyZW1vbnlBcmdzID0gY2VyZW1vbnlTdHViLmZpcnN0Q2FsbC5hcmdzWzBdO1xuICAgICAgY2VyZW1vbnlBcmdzLnNob3VsZC5jb250YWluRXFsKHtcbiAgICAgICAgc2FmZUlkOiAndGVzdC1zYWZlLWlkJyxcbiAgICAgICAgZW50ZXJwcmlzZTogJ3Rlc3QtZW50ZXJwcmlzZS1pZCcsXG4gICAgICAgIHBhcmVudEtleUlkOiAnZWNkc2EtYml0Z28nLFxuICAgICAgICBkZXJpdmF0aW9uSW5kZXg6IDAsXG4gICAgICAgIHVzZXJSb290S2V5SWQ6ICdlY2RzYS11c2VyJyxcbiAgICAgICAgYmFja3VwUm9vdEtleUlkOiAnZWNkc2EtYmFja3VwJyxcbiAgICAgIH0pO1xuICAgICAgY2VyZW1vbnlBcmdzLnNob3VsZC5ub3QuaGF2ZS5wcm9wZXJ0eSgnYmFja3VwUm9vdEtleVNoYXJlJyk7XG4gICAgICBjZXJlbW9ueUFyZ3Muc2hvdWxkLm5vdC5oYXZlLnByb3BlcnR5KCdiYWNrdXBSb290VnJmS2V5U2hhcmUnKTtcbiAgICAgIGNlcmVtb255QXJncy51c2VyUm9vdEtleVNoYXJlLnNob3VsZC5kZWVwRXF1YWwoQnVmZmVyLmZyb20oJ3NpZ25pbmctMScpKTtcbiAgICAgIGNlcmVtb255QXJncy51c2VyUm9vdFZyZktleVNoYXJlLnNob3VsZC5kZWVwRXF1YWwoQnVmZmVyLmZyb20oJ3ZyZi0xJykpO1xuXG4gICAgICBtaW50U2VuZC5maXJzdENhbGwuYXJnc1swXS5zaG91bGQuZXFsKHtcbiAgICAgICAgY29pbjogJ2h0ZXRoJyxcbiAgICAgICAgbGFiZWw6ICdldm0nLFxuICAgICAgICB0eXBlOiAnaG90JyxcbiAgICAgICAgbXVsdGlzaWdUeXBlOiAndHNzJyxcbiAgICAgICAga2V5czogWydlY2RzYS1jaGlsZC11c2VyJywgJ2VjZHNhLWNoaWxkLWJhY2t1cC1wbGFjZWhvbGRlciddLFxuICAgICAgfSk7XG4gICAgICB3YWxsZXQuaWQoKS5zaG91bGQuZXF1YWwoJ3dhbGxldC1pZCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlamVjdHMgYSBwZWVrZWQgZGVyaXZhdGlvbiBpbmRleCBmb3IgdGhlIHdyb25nIHNsb3QnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBkZXJpdmF0aW9uUXVlcnkucmV0dXJucyh7XG4gICAgICAgIHJlc3VsdDogc2lub24uc3R1YigpLnJlc29sdmVzKHsgc2xvdDogJ2VjZHNhTXBjJywgaW5kZXg6IDAgfSksXG4gICAgICB9KTtcbiAgICAgIGF3YWl0IHNhZmVcbiAgICAgICAgLmNyZWF0ZVdhbGxldCh7IGNvaW46ICd0YnRjJywgbGFiZWw6ICdkZXNrIDEnLCBwYXNzcGhyYXNlOiAncHcnIH0pXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKC9yZXR1cm5lZCBzbG90ICdlY2RzYU1wYycvKTtcbiAgICB9KTtcblxuICAgIGl0KCdtaW50cyBhbiBlZDI1NTE5IHdhbGxldCBmcm9tIHRoZSBTdHJLZXkgc2VlZCB1c2VyIHJvb3QnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBzdHViQ29pbigndHhsbScpO1xuICAgICAga2V5Y2hhaW5zR2V0LnJlc29sdmVzKHtcbiAgICAgICAgaWQ6ICd1c2VyLXJvb3QtaWQnLFxuICAgICAgICBzb3VyY2U6ICd1c2VyJyxcbiAgICAgICAgZW5jcnlwdGVkUHJ2OiBgZW5jOiR7Uk9PVF9FRDI1NTE5X1NFRURfU1RSS0VZfWAsXG4gICAgICAgIHB1YjogJ0dBQjJDQjU3NlBIQkJQUTVPRE9SUloyTFlDTVdQWkdXR0NOMktESzdEWE9JTVpBU0tVWTNRWjZRJyxcbiAgICAgICAgdHlwZTogJ2luZGVwZW5kZW50JyxcbiAgICAgIH0pO1xuICAgICAga2V5Y2hhaW5zQWRkLnJlc29sdmVzKHsgaWQ6ICdjaGlsZC1rZXktaWQnLCBwdWI6IGVkMjU1MTlDaGlsZEF0MC5wdWIsIHR5cGU6ICdpbmRlcGVuZGVudCcgfSk7XG4gICAgICBkZXJpdmF0aW9uUXVlcnkucmV0dXJucyh7XG4gICAgICAgIHJlc3VsdDogc2lub24uc3R1YigpLnJlc29sdmVzKHsgc2xvdDogJ2VkMjU1MTlNdWx0aXNpZycsIGluZGV4OiAwIH0pLFxuICAgICAgfSk7XG5cbiAgICAgIGF3YWl0IHNhZmUuY3JlYXRlV2FsbGV0KHsgY29pbjogJ3R4bG0nLCBsYWJlbDogJ3hsbSBkZXNrJywgcGFzc3BocmFzZTogJ3B3JyB9KTtcblxuICAgICAgZGVyaXZhdGlvblF1ZXJ5LmNhbGxlZE9uY2VXaXRoRXhhY3RseSh7IHNsb3Q6ICdlZDI1NTE5TXVsdGlzaWcnIH0pLnNob3VsZC5iZS50cnVlKCk7XG4gICAgICBrZXljaGFpbnNHZXQuY2FsbGVkT25jZVdpdGhFeGFjdGx5KHsgaWQ6ICdlZC11c2VyJyB9KS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgY29uc3QgYWRkQXJncyA9IGtleWNoYWluc0FkZC5maXJzdENhbGwuYXJnc1swXTtcbiAgICAgIGFkZEFyZ3Muc2hvdWxkLmVxbCh7XG4gICAgICAgIHB1YjogZWQyNTUxOUNoaWxkQXQwLnB1YixcbiAgICAgICAgc291cmNlOiAndXNlcicsXG4gICAgICAgIGtleVR5cGU6ICdpbmRlcGVuZGVudCcsXG4gICAgICAgIHBhcmVudDogJ2VkLXVzZXInLFxuICAgICAgICBzYWZlSWQ6ICd0ZXN0LXNhZmUtaWQnLFxuICAgICAgICBkZXJpdmVkRnJvbVBhcmVudFdpdGhQYXRoOiBcIm0vMCdcIixcbiAgICAgIH0pO1xuICAgICAgYWRkQXJncy5zaG91bGQubm90LmhhdmUucHJvcGVydHkoJ2VuY3J5cHRlZFBydicpO1xuICAgICAgbWludFNlbmQuZmlyc3RDYWxsLmFyZ3NbMF0uc2hvdWxkLmVxbCh7XG4gICAgICAgIGNvaW46ICd0eGxtJyxcbiAgICAgICAgbGFiZWw6ICd4bG0gZGVzaycsXG4gICAgICAgIHR5cGU6ICdob3QnLFxuICAgICAgICBtdWx0aXNpZ1R5cGU6ICdvbmNoYWluJyxcbiAgICAgICAga2V5czogWydjaGlsZC1rZXktaWQnXSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZm9yIChjb25zdCBjaGFpbiBvZiBbJ3RhbGdvJywgJ3RoYmFyJ10pIHtcbiAgICAgIGl0KGBtaW50cyBhbiBlZDI1NTE5ICR7Y2hhaW59IHdhbGxldCBwb3N0aW5nIHRoZSB1c2VyIGNoaWxkIGFzIGEgU3RyS2V5IChzZXJ2ZXIgY29udmVydHMpYCwgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyBUaGUgdXNlciBjaGlsZCBpcyBoYXJkZW5lZC1kZXJpdmVkIGZyb20gdGhlIHR4bG0gU3RyS2V5IHVzZXIgcm9vdCwgc28gdGhlIFNESyBwb3N0cyBhXG4gICAgICAgIC8vIFN0ZWxsYXIgU3RyS2V5IGZvciBFVkVSWSBlZDI1NTE5IHdhbGxldCBjb2luLiBXYWxsZXQgUGxhdGZvcm0gY29udmVydHMgdGhlIHB1YiB0byB0aGVcbiAgICAgICAgLy8gd2FsbGV0IGNvaW4ncyByZXByZXNlbnRhdGlvbiBhdCByZWdpc3RyYXRpb247IHRoZSBTREsgbmV2ZXIgY29pbi1lbmNvZGVzIGNoaWxkcmVuLlxuICAgICAgICBzdHViQ29pbihjaGFpbik7XG4gICAgICAgIGtleWNoYWluc0dldC5yZXNvbHZlcyh7XG4gICAgICAgICAgaWQ6ICd1c2VyLXJvb3QtaWQnLFxuICAgICAgICAgIHNvdXJjZTogJ3VzZXInLFxuICAgICAgICAgIGVuY3J5cHRlZFBydjogYGVuYzoke1JPT1RfRUQyNTUxOV9TRUVEX1NUUktFWX1gLFxuICAgICAgICAgIHB1YjogJ0dBQjJDQjU3NlBIQkJQUTVPRE9SUloyTFlDTVdQWkdXR0NOMktESzdEWE9JTVpBU0tVWTNRWjZRJyxcbiAgICAgICAgICB0eXBlOiAnaW5kZXBlbmRlbnQnLFxuICAgICAgICB9KTtcbiAgICAgICAga2V5Y2hhaW5zQWRkLnJlc29sdmVzKHsgaWQ6ICdjaGlsZC1rZXktaWQnLCBwdWI6IGBjb252ZXJ0ZWQtJHtjaGFpbn0tcHViYCwgdHlwZTogJ2luZGVwZW5kZW50JyB9KTtcbiAgICAgICAgZGVyaXZhdGlvblF1ZXJ5LnJldHVybnMoe1xuICAgICAgICAgIHJlc3VsdDogc2lub24uc3R1YigpLnJlc29sdmVzKHsgc2xvdDogJ2VkMjU1MTlNdWx0aXNpZycsIGluZGV4OiAwIH0pLFxuICAgICAgICB9KTtcblxuICAgICAgICBhd2FpdCBzYWZlLmNyZWF0ZVdhbGxldCh7IGNvaW46IGNoYWluLCBsYWJlbDogYCR7Y2hhaW59IGRlc2tgLCBwYXNzcGhyYXNlOiAncHcnIH0pO1xuXG4gICAgICAgIGNvbnN0IGFkZEFyZ3MgPSBrZXljaGFpbnNBZGQuZmlyc3RDYWxsLmFyZ3NbMF07XG4gICAgICAgIGFkZEFyZ3Muc2hvdWxkLmVxbCh7XG4gICAgICAgICAgcHViOiBlZDI1NTE5Q2hpbGRBdDAucHViLFxuICAgICAgICAgIHNvdXJjZTogJ3VzZXInLFxuICAgICAgICAgIGtleVR5cGU6ICdpbmRlcGVuZGVudCcsXG4gICAgICAgICAgcGFyZW50OiAnZWQtdXNlcicsXG4gICAgICAgICAgc2FmZUlkOiAndGVzdC1zYWZlLWlkJyxcbiAgICAgICAgICBkZXJpdmVkRnJvbVBhcmVudFdpdGhQYXRoOiBcIm0vMCdcIixcbiAgICAgICAgfSk7XG4gICAgICAgIG1pbnRTZW5kLmZpcnN0Q2FsbC5hcmdzWzBdLnNob3VsZC5lcWwoe1xuICAgICAgICAgIGNvaW46IGNoYWluLFxuICAgICAgICAgIGxhYmVsOiBgJHtjaGFpbn0gZGVza2AsXG4gICAgICAgICAgdHlwZTogJ2hvdCcsXG4gICAgICAgICAgbXVsdGlzaWdUeXBlOiAnb25jaGFpbicsXG4gICAgICAgICAga2V5czogWydjaGlsZC1rZXktaWQnXSxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpdCgncmVqZWN0cyBhbiBlbXB0eSBwYXNzcGhyYXNlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgc2FmZVxuICAgICAgICAuY3JlYXRlV2FsbGV0KHsgY29pbjogJ3RidGMnLCBsYWJlbDogJ3cnLCBwYXNzcGhyYXNlOiAnJyB9KVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgvcGFzc3BocmFzZSBpcyByZXF1aXJlZC8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlamVjdHMgYSB3cm9uZyBwYXNzcGhyYXNlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgc2FmZVxuICAgICAgICAuY3JlYXRlV2FsbGV0KHsgY29pbjogJ3RidGMnLCBsYWJlbDogJ3cnLCBwYXNzcGhyYXNlOiAnbm9wZScgfSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoSW5jb3JyZWN0UGFzc3dvcmRFcnJvcik7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
402
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FmZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Rlc3QvdW5pdC9iaXRnby9zYWZlL3NhZmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw2Q0FBK0I7QUFDL0Isa0JBQWdCO0FBRWhCLHlDQU15QjtBQUV6QixNQUFNLFNBQVMsR0FDYixpSEFBaUgsQ0FBQztBQUVwSCxtR0FBbUc7QUFDbkcsMENBQTBDO0FBQzFDLE1BQU0sd0JBQXdCLEdBQUcsMERBQTBELENBQUM7QUFDNUYsTUFBTSxlQUFlLEdBQUcsSUFBQSxvQ0FBOEIsRUFBQyx3QkFBd0IsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUVwRixRQUFRLENBQUMsTUFBTSxFQUFFO0lBQ2YsSUFBSSxJQUFVLENBQUM7SUFDZixJQUFJLFNBQWMsQ0FBQztJQUNuQixJQUFJLFFBQWtCLENBQUM7SUFDdkIsOEZBQThGO0lBQzlGLElBQUksWUFBaUIsQ0FBQztJQUV0QixNQUFNLGlCQUFpQixHQUE2QixDQUFDLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLENBQUMsQ0FBQztJQUN4RyxNQUFNLFFBQVEsR0FBNkIsQ0FBQyxZQUFZLEVBQUUsY0FBYyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQ3pGLE1BQU0sUUFBUSxHQUE2QixDQUFDLFlBQVksRUFBRSxjQUFjLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDekYsTUFBTSxlQUFlLEdBQTZCLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUN2RixNQUFNLFFBQVEsR0FBRztRQUNmLEdBQUcsRUFBRTtZQUNILGlCQUFpQjtZQUNqQixRQUFRO1lBQ1IsUUFBUTtZQUNSLGVBQWU7U0FDaEI7S0FDRixDQUFDO0lBRUYsVUFBVSxDQUFDO1FBQ1QsU0FBUyxHQUFHO1lBQ1YsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxT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UztvQkFDakIsTUFBTSxFQUFFLGNBQWM7b0JBQ3RCLHlCQUF5QixFQUFFLE1BQU07aUJBQ2xDLENBQUMsQ0FBQztnQkFDSCxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO29CQUNwQyxJQUFJLEVBQUUsS0FBSztvQkFDWCxLQUFLLEVBQUUsR0FBRyxLQUFLLE9BQU87b0JBQ3RCLElBQUksRUFBRSxLQUFLO29CQUNYLFlBQVksRUFBRSxTQUFTO29CQUN2QixJQUFJLEVBQUUsQ0FBQyxjQUFjLENBQUM7aUJBQ3ZCLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELEVBQUUsQ0FBQyw2QkFBNkIsRUFBRSxLQUFLO1lBQ3JDLE1BQU0sSUFBSTtpQkFDUCxZQUFZLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxDQUFDO2lCQUMxRCxNQUFNLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ3RELENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDRCQUE0QixFQUFFLEtBQUs7WUFDcEMsTUFBTSxJQUFJO2lCQUNQLFlBQVksQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUM7aUJBQzlELE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLDRCQUFzQixDQUFDLENBQUM7UUFDcEQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgc2lub24gZnJvbSAnc2lub24nO1xuaW1wb3J0ICdzaG91bGQnO1xuaW1wb3J0IHsgU2FmZURhdGEgfSBmcm9tICdAYml0Z28vcHVibGljLXR5cGVzJztcbmltcG9ydCB7XG4gIEVDRFNBVXRpbHMsXG4gIEluY29ycmVjdFBhc3N3b3JkRXJyb3IsXG4gIFNhZmUsXG4gIGRlcml2ZVNhZmVDaGlsZEVkMjU1MTlIYXJkZW5lZCxcbiAgZGVyaXZlU2FmZUNoaWxkSGFyZGVuZWRGcm9tWHBydixcbn0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjJztcblxuY29uc3QgUk9PVF9YUFJWID1cbiAgJ3hwcnY5czIxWnJRSDE0M0szaGVreU5qN1RjaVI0WE5ZZTFrTWo2OFcyaXBqSkdOSEVUV1A3bzQyQWpEblNQZ0toZFo0eDhOQkF2YUw3MlJyWGp1WE5kbWtNcUxFUlp6YTczb1l1Z0d0YkxGWEc4Zyc7XG5cbi8vIDMyLWJ5dGUgc3ludGhldGljIHNlZWQsIFN0cktleSBzcGVsbGluZyBnZW5lcmF0ZWQgd2l0aCBzdGVsbGFyLXNkazsgcGlubmVkIGRlcml2YXRpb24gdmVjdG9ycyBpblxuLy8gdGVzdC91bml0L2JpdGdvL3NhZmUvc2FmZURlcml2YXRpb24udHMuXG5jb25zdCBST09UX0VEMjU1MTlfU0VFRF9TVFJLRVkgPSAnU0FBQUNBUURBUUNRTUJZSUJFRkFXREFOQllIUkFFSVNDTUtCS0ZRWERBTVJVR1k0RFVQQjZOS0knO1xuY29uc3QgZWQyNTUxOUNoaWxkQXQwID0gZGVyaXZlU2FmZUNoaWxkRWQyNTUxOUhhcmRlbmVkKFJPT1RfRUQyNTUxOV9TRUVEX1NUUktFWSwgMCk7XG5cbmRlc2NyaWJlKCdTYWZlJywgZnVuY3Rpb24gKCkge1xuICBsZXQgc2FmZTogU2FmZTtcbiAgbGV0IG1vY2tCaXRHbzogYW55O1xuICBsZXQgc2FmZURhdGE6IFNhZmVEYXRhO1xuICAvLyB3aXJlLXNoYXBlZCBTYWZlRGF0YSAodGltZXN0YW1wcyBhcyBJU08gc3RyaW5ncykgZm9yIG1vY2tlZCBSRVNUIHJlc3BvbnNlcyB0aGF0IGdldCBkZWNvZGVkXG4gIGxldCBzYWZlRGF0YVdpcmU6IGFueTtcblxuICBjb25zdCBzZWNwMjU2azFNdWx0aXNpZzogW3N0cmluZywgc3RyaW5nLCBzdHJpbmddID0gWyd1c2VyLXJvb3QtaWQnLCAnYmFja3VwLXJvb3QtaWQnLCAnYml0Z28tcm9vdC1pZCddO1xuICBjb25zdCBlY2RzYU1wYzogW3N0cmluZywgc3RyaW5nLCBzdHJpbmddID0gWydlY2RzYS11c2VyJywgJ2VjZHNhLWJhY2t1cCcsICdlY2RzYS1iaXRnbyddO1xuICBjb25zdCBlZGRzYU1wYzogW3N0cmluZywgc3RyaW5nLCBzdHJpbmddID0gWydlZGRzYS11c2VyJywgJ2VkZHNhLWJhY2t1cCcsICdlZGRzYS1iaXRnbyddO1xuICBjb25zdCBlZDI1NTE5TXVsdGlzaWc6IFtzdHJpbmcsIHN0cmluZywgc3RyaW5nXSA9IFsnZWQtdXNlcicsICdlZC1iYWNrdXAnLCAnZWQtYml0Z28nXTtcbiAgY29uc3Qgcm9vdEtleXMgPSB7XG4gICAgaG90OiB7XG4gICAgICBzZWNwMjU2azFNdWx0aXNpZyxcbiAgICAgIGVjZHNhTXBjLFxuICAgICAgZWRkc2FNcGMsXG4gICAgICBlZDI1NTE5TXVsdGlzaWcsXG4gICAgfSxcbiAgfTtcblxuICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICBtb2NrQml0R28gPSB7XG4gICAgICB1cmw6IHNpbm9uLnN0dWIoKS5jYWxsc0Zha2UoKHBhdGg6IHN0cmluZykgPT4gcGF0aCksXG4gICAgICBwb3N0OiBzaW5vbi5zdHViKCksXG4gICAgICBwdXQ6IHNpbm9uLnN0dWIoKSxcbiAgICAgIGdldDogc2lub24uc3R1YigpLFxuICAgIH07XG4gICAgc2FmZURhdGEgPSB7XG4gICAgICBpZDogJ3Rlc3Qtc2FmZS1pZCcsXG4gICAgICBlbnRlcnByaXNlSWQ6ICd0ZXN0LWVudGVycHJpc2UtaWQnLFxuICAgICAgbGFiZWw6ICdteSBzYWZlJyxcbiAgICAgIHN0YXR1czogJ2FjdGl2ZScsXG4gICAgICBjcmVhdG9yOiAnY3JlYXRvci1pZCcsXG4gICAgICB1c2VyczogW3sgdXNlcklkOiAnY3JlYXRvci1pZCcsIHBlcm1pc3Npb25zOiBbJ2FkbWluJywgJ3NwZW5kJ10gfV0sXG4gICAgICBjcmVhdGVkQXQ6IG5ldyBEYXRlKCcyMDI2LTA3LTA3VDAwOjAwOjAwLjAwMFonKSxcbiAgICAgIHJvb3RLZXlzLFxuICAgIH07XG4gICAgc2FmZURhdGFXaXJlID0ge1xuICAgICAgaWQ6ICd0ZXN0LXNhZmUtaWQnLFxuICAgICAgZW50ZXJwcmlzZUlkOiAndGVzdC1lbnRlcnByaXNlLWlkJyxcbiAgICAgIGxhYmVsOiAnbXkgc2FmZScsXG4gICAgICBzdGF0dXM6ICdhY3RpdmUnLFxuICAgICAgY3JlYXRvcjogJ2NyZWF0b3ItaWQnLFxuICAgICAgdXNlcnM6IFt7IHVzZXJJZDogJ2NyZWF0b3ItaWQnLCBwZXJtaXNzaW9uczogWydhZG1pbicsICdzcGVuZCddIH1dLFxuICAgICAgY3JlYXRlZEF0OiAnMjAyNi0wNy0wN1QwMDowMDowMC4wMDBaJyxcbiAgICAgIHJvb3RLZXlzLFxuICAgIH07XG4gICAgc2FmZSA9IG5ldyBTYWZlKG1vY2tCaXRHbywgc2FmZURhdGEpO1xuICB9KTtcblxuICBhZnRlckVhY2goZnVuY3Rpb24gKCkge1xuICAgIHNpbm9uLnJlc3RvcmUoKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2dldHRlcnMnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ2V4cG9zZXMgaWQvZW50ZXJwcmlzZUlkL2xhYmVsL3N0YXR1cycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNhZmUuaWQoKS5zaG91bGQuZXF1YWwoJ3Rlc3Qtc2FmZS1pZCcpO1xuICAgICAgc2FmZS5lbnRlcnByaXNlSWQoKS5zaG91bGQuZXF1YWwoJ3Rlc3QtZW50ZXJwcmlzZS1pZCcpO1xuICAgICAgc2FmZS5sYWJlbCgpLnNob3VsZC5lcXVhbCgnbXkgc2FmZScpO1xuICAgICAgc2FmZS5zdGF0dXMoKS5zaG91bGQuZXF1YWwoJ2FjdGl2ZScpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3RvSlNPTiByZXR1cm5zIHRoZSB1bmRlcmx5aW5nIGRhdGEnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBzYWZlLnRvSlNPTigpLnNob3VsZC5lcXVhbChzYWZlRGF0YSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCd1cmwnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ2J1aWxkcyB0aGUgZW50ZXJwcmlzZS1zY29wZWQgdjIgcGF0aCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNhZmUudXJsKCkuc2hvdWxkLmVxdWFsKCcvZW50ZXJwcmlzZS90ZXN0LWVudGVycHJpc2UtaWQvc2FmZXMvdGVzdC1zYWZlLWlkJyk7XG4gICAgICBzYWZlLnVybCgnL2ZyZWV6ZScpLnNob3VsZC5lcXVhbCgnL2VudGVycHJpc2UvdGVzdC1lbnRlcnByaXNlLWlkL3NhZmVzL3Rlc3Qtc2FmZS1pZC9mcmVlemUnKTtcbiAgICAgIG1vY2tCaXRHby51cmwuY2FsbGVkV2l0aCgnL2VudGVycHJpc2UvdGVzdC1lbnRlcnByaXNlLWlkL3NhZmVzL3Rlc3Qtc2FmZS1pZCcsIDIpLnNob3VsZC5iZS50cnVlKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCd1cGRhdGUgUkVTVCBwbHVtYmluZycsIGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBzdHViUHV0KHJlc3BvbnNlOiB1bmtub3duKSB7XG4gICAgICBjb25zdCByZXN1bHRTdHViID0gc2lub24uc3R1YigpLnJlc29sdmVzKHJlc3BvbnNlKTtcbiAgICAgIGNvbnN0IHNlbmRTdHViID0gc2lub24uc3R1YigpLnJldHVybnMoeyByZXN1bHQ6IHJlc3VsdFN0dWIgfSk7XG4gICAgICBtb2NrQml0R28ucHV0LnJldHVybnMoeyBzZW5kOiBzZW5kU3R1YiB9KTtcbiAgICAgIHJldHVybiB7IHJlc3VsdFN0dWIsIHNlbmRTdHViIH07XG4gICAgfVxuXG4gICAgaXQoJ3VwZGF0ZXMgdGhlIGxhYmVsIGFuZCBkZWNvZGVzIFNhZmVEYXRhJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdXBkYXRlZCA9IHsgLi4uc2FmZURhdGFXaXJlLCBsYWJlbDogJ3JlbmFtZWQgc2FmZScgfTtcbiAgICAgIGNvbnN0IHsgc2VuZFN0dWIgfSA9IHN0dWJQdXQodXBkYXRlZCk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHNhZmUudXBkYXRlKHsgbGFiZWw6ICdyZW5hbWVkIHNhZmUnIH0pO1xuXG4gICAgICBtb2NrQml0R28ucHV0LmNhbGxlZFdpdGgoJy9lbnRlcnByaXNlL3Rlc3QtZW50ZXJwcmlzZS1pZC9zYWZlcy90ZXN0LXNhZmUtaWQnKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgc2VuZFN0dWIuY2FsbGVkV2l0aEV4YWN0bHkoeyBsYWJlbDogJ3JlbmFtZWQgc2FmZScgfSkuc2hvdWxkLmJlLnRydWUoKTtcbiAgICAgIHJlc3VsdC5sYWJlbC5zaG91bGQuZXF1YWwoJ3JlbmFtZWQgc2FmZScpO1xuICAgICAgcmVzdWx0LmNyZWF0ZWRBdC5zaG91bGQuYmUuaW5zdGFuY2VvZihEYXRlKTtcbiAgICAgIHNhZmUubGFiZWwoKS5zaG91bGQuZXF1YWwoJ215IHNhZmUnKTtcbiAgICB9KTtcblxuICAgIGl0KCdwcm9wYWdhdGVzIHVwZGF0ZSBlcnJvcnMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCByZXN1bHRTdHViID0gc2lub24uc3R1YigpLnJlamVjdHMobmV3IEVycm9yKCdyZW5hbWUgZmFpbGVkJykpO1xuICAgICAgY29uc3Qgc2VuZFN0dWIgPSBzaW5vbi5zdHViKCkucmV0dXJucyh7IHJlc3VsdDogcmVzdWx0U3R1YiB9KTtcbiAgICAgIG1vY2tCaXRHby5wdXQucmV0dXJucyh7IHNlbmQ6IHNlbmRTdHViIH0pO1xuXG4gICAgICBhd2FpdCBzYWZlLnVwZGF0ZSh7IGxhYmVsOiAncmVuYW1lZCBzYWZlJyB9KS5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdyZW5hbWUgZmFpbGVkJyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdmcmVlemUgLyBhcmNoaXZlIFJFU1QgcGx1bWJpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gc3R1YlBvc3QocmVzcG9uc2U6IHVua25vd24pIHtcbiAgICAgIGNvbnN0IHJlc3VsdFN0dWIgPSBzaW5vbi5zdHViKCkucmVzb2x2ZXMocmVzcG9uc2UpO1xuICAgICAgY29uc3Qgc2VuZFN0dWIgPSBzaW5vbi5zdHViKCkucmV0dXJucyh7IHJlc3VsdDogcmVzdWx0U3R1YiB9KTtcbiAgICAgIG1vY2tCaXRHby5wb3N0LnJldHVybnMoeyBzZW5kOiBzZW5kU3R1YiB9KTtcbiAgICAgIHJldHVybiB7IHNlbmRTdHViIH07XG4gICAgfVxuXG4gICAgaXQoJ2ZyZWV6ZSBwb3N0cyB0aGUgZW5jb2RlZCBib2R5IHRvIHRoZSBmcmVlemUgcm91dGUgYW5kIGRlY29kZXMgU2FmZURhdGEnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBmcm96ZW4gPSB7IC4uLnNhZmVEYXRhV2lyZSwgZnJlZXplOiB7IHJlYXNvbjogJ2luY2lkZW50JyB9IH07XG4gICAgICBjb25zdCB7IHNlbmRTdHViIH0gPSBzdHViUG9zdChmcm96ZW4pO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgc2FmZS5mcmVlemUoeyByZWFzb246ICdpbmNpZGVudCcgfSk7XG4gICAgICBtb2NrQml0R28ucG9zdC5jYWxsZWRXaXRoKCcvZW50ZXJwcmlzZS90ZXN0LWVudGVycHJpc2UtaWQvc2FmZXMvdGVzdC1zYWZlLWlkL2ZyZWV6ZScpLnNob3VsZC5iZS50cnVlKCk7XG4gICAgICBzZW5kU3R1Yi5jYWxsZWRXaXRoKHsgcmVhc29uOiAnaW5jaWRlbnQnIH0pLnNob3VsZC5iZS50cnVlKCk7XG4gICAgICByZXN1bHQuZnJlZXplIS5yZWFzb24hLnNob3VsZC5lcXVhbCgnaW5jaWRlbnQnKTtcbiAgICAgIHJlc3VsdC5jcmVhdGVkQXQuc2hvdWxkLmJlLmluc3RhbmNlb2YoRGF0ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnYXJjaGl2ZSBwb3N0cyBhbiBlbXB0eSBib2R5IHRvIHRoZSBhcmNoaXZlIHJvdXRlIGFuZCBkZWNvZGVzIFNhZmVEYXRhJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYXJjaGl2ZWQgPSB7IC4uLnNhZmVEYXRhV2lyZSwgc3RhdHVzOiAnYXJjaGl2ZWQnIGFzIGNvbnN0IH07XG4gICAgICBjb25zdCB7IHNlbmRTdHViIH0gPSBzdHViUG9zdChhcmNoaXZlZCk7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzYWZlLmFyY2hpdmUoKTtcbiAgICAgIG1vY2tCaXRHby5wb3N0LmNhbGxlZFdpdGgoJy9lbnRlcnByaXNlL3Rlc3QtZW50ZXJwcmlzZS1pZC9zYWZlcy90ZXN0LXNhZmUtaWQvYXJjaGl2ZScpLnNob3VsZC5iZS50cnVlKCk7XG4gICAgICBzZW5kU3R1Yi5jYWxsZWRXaXRoRXhhY3RseSgpLnNob3VsZC5iZS50cnVlKCk7XG4gICAgICByZXN1bHQuc3RhdHVzLnNob3VsZC5lcXVhbCgnYXJjaGl2ZWQnKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ21lbWJlci9zaGFyZSBtZXRob2RzIGFyZSBzdHViYmVkJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdhZGRNZW1iZXIgdGhyb3dzIG5vdC1pbXBsZW1lbnRlZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IHNhZmUuYWRkTWVtYmVyKHsgdXNlcklkOiAndScsIHBlcm1pc3Npb25zOiBbJ3ZpZXcnXSB9KS5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKC9ub3QgeWV0IGltcGxlbWVudGVkLyk7XG4gICAgfSk7XG5cbiAgICBpdCgnYWRkTWVtYmVyVG9XYWxsZXQgdGhyb3dzIG5vdC1pbXBsZW1lbnRlZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IHNhZmVcbiAgICAgICAgLmFkZE1lbWJlclRvV2FsbGV0KHsgd2FsbGV0SWQ6ICd3Jywgd2FsbGV0UGFzc3BocmFzZTogJ3AnIH0pXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKC9ub3QgeWV0IGltcGxlbWVudGVkLyk7XG4gICAgfSk7XG5cbiAgICBpdCgnbGlzdFNoYXJlcyB0aHJvd3Mgbm90LWltcGxlbWVudGVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgc2FmZS5saXN0U2hhcmVzKCkuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgvbm90IHlldCBpbXBsZW1lbnRlZC8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ2FjY2VwdFNoYXJlIHRocm93cyBub3QtaW1wbGVtZW50ZWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBzYWZlLmFjY2VwdFNoYXJlKHsgc2FmZVNoYXJlSWQ6ICdzJyB9KS5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKC9ub3QgeWV0IGltcGxlbWVudGVkLyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdjcmVhdGVXYWxsZXQgKFdDTi0xMjAzKScsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBjaGlsZEF0MCA9IGRlcml2ZVNhZmVDaGlsZEhhcmRlbmVkRnJvbVhwcnYoUk9PVF9YUFJWLCAwKTtcbiAgICBjb25zdCBjaGlsZEF0NyA9IGRlcml2ZVNhZmVDaGlsZEhhcmRlbmVkRnJvbVhwcnYoUk9PVF9YUFJWLCA3KTtcbiAgICBsZXQga2V5Y2hhaW5zQWRkOiBzaW5vbi5TaW5vblN0dWI7XG4gICAgbGV0IGtleWNoYWluc0dldDogc2lub24uU2lub25TdHViO1xuICAgIGxldCBkZXJpdmF0aW9uUXVlcnk6IHNpbm9uLlNpbm9uU3R1YjtcbiAgICBsZXQgbWludFNlbmQ6IHNpbm9uLlNpbm9uU3R1YjtcblxuICAgIGZ1bmN0aW9uIHN0dWJDb2luKGNoYWluOiBzdHJpbmcsIG9wdHM6IHsgZ2V0RGVmYXVsdE11bHRpc2lnVHlwZT86IHN0cmluZyB9ID0ge30pIHtcbiAgICAgIGtleWNoYWluc0dldCA9IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyh7XG4gICAgICAgIGlkOiAndXNlci1yb290LWlkJyxcbiAgICAgICAgc291cmNlOiAndXNlcicsXG4gICAgICAgIGVuY3J5cHRlZFBydjogYGVuYzoke1JPT1RfWFBSVn1gLFxuICAgICAgICBwdWI6ICdyb290LXhwdWInLFxuICAgICAgICB0eXBlOiAnaW5kZXBlbmRlbnQnLFxuICAgICAgfSk7XG4gICAgICBrZXljaGFpbnNBZGQgPSBzaW5vbi5zdHViKCkucmVzb2x2ZXMoeyBpZDogJ2NoaWxkLWtleS1pZCcsIHB1YjogY2hpbGRBdDAucHViLCB0eXBlOiAnaW5kZXBlbmRlbnQnIH0pO1xuICAgICAgbW9ja0JpdEdvLmNvaW4gPSBzaW5vbi5zdHViKCkucmV0dXJucyh7XG4gICAgICAgIGdldENoYWluOiBzaW5vbi5zdHViKCkucmV0dXJucyhjaGFpbiksXG4gICAgICAgIGdldERlZmF1bHRNdWx0aXNpZ1R5cGU6IHNpbm9uLnN0dWIoKS5yZXR1cm5zKG9wdHMuZ2V0RGVmYXVsdE11bHRpc2lnVHlwZSksXG4gICAgICAgIHN1cHBvcnRzVHNzOiBzaW5vbi5zdHViKCkucmV0dXJucyhmYWxzZSksXG4gICAgICAgIGtleWNoYWluczogc2lub24uc3R1YigpLnJldHVybnMoeyBnZXQ6IGtleWNoYWluc0dldCwgYWRkOiBrZXljaGFpbnNBZGQgfSksXG4gICAgICB9KTtcbiAgICB9XG4gICAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBzdHViQ29pbigndGJ0YycpO1xuICAgICAgbW9ja0JpdEdvLmRlY3J5cHQgPSBzaW5vbi5zdHViKCkuY2FsbHNGYWtlKCh7IGlucHV0LCBwYXNzd29yZCB9OiB7IGlucHV0OiBzdHJpbmc7IHBhc3N3b3JkOiBzdHJpbmcgfSkgPT4ge1xuICAgICAgICBpZiAocGFzc3dvcmQgIT09ICdwdycpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCBwYXNzd29yZCcpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpbnB1dC5zdGFydHNXaXRoKCdlbmM6JykpIHtcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGlucHV0LnNsaWNlKDQpKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCBjaXBoZXJ0ZXh0Jyk7XG4gICAgICB9KTtcbiAgICAgIGRlcml2YXRpb25RdWVyeSA9IHNpbm9uLnN0dWIoKS5yZXR1cm5zKHtcbiAgICAgICAgcmVzdWx0OiBzaW5vbi5zdHViKCkucmVzb2x2ZXMoeyBzbG90OiAnc2VjcDI1NmsxTXVsdGlzaWcnLCBpbmRleDogMCB9KSxcbiAgICAgIH0pO1xuICAgICAgbW9ja0JpdEdvLmdldC5yZXR1cm5zKHsgcXVlcnk6IGRlcml2YXRpb25RdWVyeSB9KTtcbiAgICAgIGNvbnN0IG1pbnRSZXN1bHQgPSBzaW5vbi5zdHViKCkucmVzb2x2ZXMoe1xuICAgICAgICBpZDogJ3dhbGxldC1pZCcsXG4gICAgICAgIGNvaW46ICd0YnRjJyxcbiAgICAgICAga2V5czogWydjaGlsZC1rZXktaWQnLCAnYmFja3VwLWNoaWxkJywgJ2JpdGdvLWNoaWxkJ10sXG4gICAgICAgIHR5cGU6ICdob3QnLFxuICAgICAgICBtdWx0aXNpZ1R5cGU6ICdvbmNoYWluJyxcbiAgICAgICAgZW50ZXJwcmlzZTogJ3Rlc3QtZW50ZXJwcmlzZS1pZCcsXG4gICAgICAgIHNhZmU6ICd0ZXN0LXNhZmUtaWQnLFxuICAgICAgfSk7XG4gICAgICBtaW50U2VuZCA9IHNpbm9uLnN0dWIoKS5yZXR1cm5zKHsgcmVzdWx0OiBtaW50UmVzdWx0IH0pO1xuICAgICAgbW9ja0JpdEdvLnBvc3QucmV0dXJucyh7IHNlbmQ6IG1pbnRTZW5kIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3BlZWtzIHRoZSBpbmRleCwgcmVnaXN0ZXJzIGEgcHVibGljLW9ubHkgdXNlciBjaGlsZCwgYW5kIG1pbnRzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qgd2FsbGV0ID0gYXdhaXQgc2FmZS5jcmVhdGVXYWxsZXQoeyBjb2luOiAndGJ0YycsIGxhYmVsOiAnZGVzayAxJywgcGFzc3BocmFzZTogJ3B3JyB9KTtcblxuICAgICAgZGVyaXZhdGlvblF1ZXJ5LmNhbGxlZE9uY2VXaXRoRXhhY3RseSh7IHNsb3Q6ICdzZWNwMjU2azFNdWx0aXNpZycgfSkuc2hvdWxkLmJlLnRydWUoKTtcbiAgICAgIGtleWNoYWluc0dldC5jYWxsZWRPbmNlV2l0aEV4YWN0bHkoeyBpZDogJ3VzZXItcm9vdC1pZCcgfSkuc2hvdWxkLmJlLnRydWUoKTtcbiAgICAgIGtleWNoYWluc0FkZC5jYWxsZWRPbmNlLnNob3VsZC5iZS50cnVlKCk7XG4gICAgICBjb25zdCBhZGRBcmdzID0ga2V5Y2hhaW5zQWRkLmZpcnN0Q2FsbC5hcmdzWzBdO1xuICAgICAgYWRkQXJncy5zaG91bGQuZXFsKHtcbiAgICAgICAgcHViOiBjaGlsZEF0MC5wdWIsXG4gICAgICAgIHNvdXJjZTogJ3VzZXInLFxuICAgICAgICBrZXlUeXBlOiAnaW5kZXBlbmRlbnQnLFxuICAgICAgICBwYXJlbnQ6ICd1c2VyLXJvb3QtaWQnLFxuICAgICAgICBzYWZlSWQ6ICd0ZXN0LXNhZmUtaWQnLFxuICAgICAgICBkZXJpdmVkRnJvbVBhcmVudFdpdGhQYXRoOiBcIm0vMCdcIixcbiAgICAgIH0pO1xuICAgICAgYWRkQXJncy5zaG91bGQubm90LmhhdmUucHJvcGVydHkoJ2VuY3J5cHRlZFBydicpO1xuICAgICAgYWRkQXJncy5zaG91bGQubm90LmhhdmUucHJvcGVydHkoJ2Rlcml2ZWRGcm9tUGFyZW50V2l0aFNlZWQnKTtcbiAgICAgIGFkZEFyZ3Muc2hvdWxkLm5vdC5oYXZlLnByb3BlcnR5KCdwYXRoJyk7XG5cbiAgICAgIG1vY2tCaXRHby5wb3N0LmNhbGxlZFdpdGgoJy9lbnRlcnByaXNlL3Rlc3QtZW50ZXJwcmlzZS1pZC9zYWZlcy90ZXN0LXNhZmUtaWQvd2FsbGV0cycpLnNob3VsZC5iZS50cnVlKCk7XG4gICAgICBtaW50U2VuZC5maXJzdENhbGwuYXJnc1swXS5zaG91bGQuZXFsKHtcbiAgICAgICAgY29pbjogJ3RidGMnLFxuICAgICAgICBsYWJlbDogJ2Rlc2sgMScsXG4gICAgICAgIHR5cGU6ICdob3QnLFxuICAgICAgICBtdWx0aXNpZ1R5cGU6ICdvbmNoYWluJyxcbiAgICAgICAga2V5czogWydjaGlsZC1rZXktaWQnXSxcbiAgICAgIH0pO1xuICAgICAgd2FsbGV0LmlkKCkuc2hvdWxkLmVxdWFsKCd3YWxsZXQtaWQnKTtcbiAgICAgIGNvbnN0IG1pbnRlZFNhZmVJZCA9IHdhbGxldC5zYWZlSWQoKTtcbiAgICAgIGlmIChtaW50ZWRTYWZlSWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2V4cGVjdGVkIG1pbnRlZCB3YWxsZXQgdG8gaW5jbHVkZSBzYWZlSWQnKTtcbiAgICAgIH1cbiAgICAgIG1pbnRlZFNhZmVJZC5zaG91bGQuZXF1YWwoJ3Rlc3Qtc2FmZS1pZCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlZ2lzdGVycyB0aGUgY2hpbGQgd2l0aCBkZXJpdmVkRnJvbVBhcmVudFdpdGhQYXRoIGF0IGEgbm9uLXplcm8gbWludCBpbmRleCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGRlcml2YXRpb25RdWVyeS5yZXR1cm5zKHtcbiAgICAgICAgcmVzdWx0OiBzaW5vbi5zdHViKCkucmVzb2x2ZXMoeyBzbG90OiAnc2VjcDI1NmsxTXVsdGlzaWcnLCBpbmRleDogNyB9KSxcbiAgICAgIH0pO1xuICAgICAga2V5Y2hhaW5zQWRkLnJlc29sdmVzKHsgaWQ6ICdjaGlsZC1rZXktaWQnLCBwdWI6IGNoaWxkQXQ3LnB1YiwgdHlwZTogJ2luZGVwZW5kZW50JyB9KTtcblxuICAgICAgYXdhaXQgc2FmZS5jcmVhdGVXYWxsZXQoeyBjb2luOiAndGJ0YycsIGxhYmVsOiAnZGVzayA4JywgcGFzc3BocmFzZTogJ3B3JyB9KTtcblxuICAgICAgY29uc3QgYWRkQXJncyA9IGtleWNoYWluc0FkZC5maXJzdENhbGwuYXJnc1swXTtcbiAgICAgIGFkZEFyZ3MucHViLnNob3VsZC5lcXVhbChjaGlsZEF0Ny5wdWIpO1xuICAgICAgYWRkQXJncy5kZXJpdmVkRnJvbVBhcmVudFdpdGhQYXRoLnNob3VsZC5lcXVhbChcIm0vNydcIik7XG4gICAgICBhZGRBcmdzLnNob3VsZC5ub3QuaGF2ZS5wcm9wZXJ0eSgncGF0aCcpO1xuICAgICAgYWRkQXJncy5zaG91bGQubm90LmhhdmUucHJvcGVydHkoJ2Rlcml2ZWRGcm9tUGFyZW50V2l0aFNlZWQnKTtcbiAgICB9KTtcblxuICAgIGl0KCdtaW50cyBhIFRTUyB3YWxsZXQgdmlhIHRoZSB1c2VyL0JpdEdvIGRlcml2ZSBjZXJlbW9ueScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIHN0dWJDb2luKCdodGV0aCcsIHsgZ2V0RGVmYXVsdE11bHRpc2lnVHlwZTogJ3RzcycgfSk7XG4gICAgICAvLyBSZWFsIFZSRiBrZXkgZW52ZWxvcGU6IGB7dmVyc2lvbjogMSwgcHJ2S2V5U2hhcmUsIHZyZn1gLlxuICAgICAgY29uc3QgdXNlckJsb2IgPSBFQ0RTQVV0aWxzLmJ1aWxkVnJmS2V5RW52ZWxvcGVzKFxuICAgICAgICBCdWZmZXIuZnJvbSgnc2lnbmluZy0xJyksXG4gICAgICAgIEJ1ZmZlci5mcm9tKCdyZWR1Y2VkLTEnKSxcbiAgICAgICAgQnVmZmVyLmZyb20oJ3ZyZi0xJylcbiAgICAgICkuZW52ZWxvcGUudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICAgICAga2V5Y2hhaW5zR2V0Lm9uRmlyc3RDYWxsKCkucmVzb2x2ZXMoeyBpZDogJ2VjZHNhLXVzZXInLCBzb3VyY2U6ICd1c2VyJywgZW5jcnlwdGVkUHJ2OiBgZW5jOiR7dXNlckJsb2J9YCB9KTtcbiAgICAgIG1vY2tCaXRHby5kZWNyeXB0ID0gc2lub25cbiAgICAgICAgLnN0dWIoKVxuICAgICAgICAuY2FsbHNGYWtlKCh7IGlucHV0IH06IHsgaW5wdXQ6IHN0cmluZyB9KSA9PiBQcm9taXNlLnJlc29sdmUoaW5wdXQuc3RhcnRzV2l0aCgnZW5jOicpID8gaW5wdXQuc2xpY2UoNCkgOiAnJykpO1xuXG4gICAgICBkZXJpdmF0aW9uUXVlcnkucmV0dXJucyh7XG4gICAgICAgIHJlc3VsdDogc2lub24uc3R1YigpLnJlc29sdmVzKHsgc2xvdDogJ2VjZHNhTXBjJywgaW5kZXg6IDAgfSksXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgY2VyZW1vbnlTdHViID0gc2lub24uc3R1YihFQ0RTQVV0aWxzLkVjZHNhVnJmTVBDdjJVdGlscy5wcm90b3R5cGUsICdjcmVhdGVTYWZlQ2hpbGRLZXljaGFpbnMnKS5yZXNvbHZlcyh7XG4gICAgICAgIHVzZXJLZXljaGFpbjogeyBpZDogJ2VjZHNhLWNoaWxkLXVzZXInIH0sXG4gICAgICAgIGJhY2t1cEtleWNoYWluOiB7IGlkOiAnZWNkc2EtY2hpbGQtYmFja3VwLXBsYWNlaG9sZGVyJyB9LFxuICAgICAgICBiaXRnb0tleWNoYWluOiB7IGlkOiAnZWNkc2EtY2hpbGQtYml0Z28tcGxhY2Vob2xkZXInIH0sXG4gICAgICB9IGFzIG5ldmVyKTtcblxuICAgICAgY29uc3Qgd2FsbGV0ID0gYXdhaXQgc2FmZS5jcmVhdGVXYWxsZXQoeyBjb2luOiAnaHRldGgnLCBsYWJlbDogJ2V2bScsIHBhc3NwaHJhc2U6ICdwdycsIG11bHRpc2lnVHlwZTogJ3RzcycgfSk7XG5cbiAgICAgIGRlcml2YXRpb25RdWVyeS5jYWxsZWRPbmNlV2l0aEV4YWN0bHkoeyBzbG90OiAnZWNkc2FNcGMnIH0pLnNob3VsZC5iZS50cnVlKCk7XG4gICAgICBrZXljaGFpbnNHZXQuY2FsbGVkT25jZVdpdGhFeGFjdGx5KHsgaWQ6ICdlY2RzYS11c2VyJyB9KS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgY29uc3QgY2VyZW1vbnlBcmdzID0gY2VyZW1vbnlTdHViLmZpcnN0Q2FsbC5hcmdzWzBdO1xuICAgICAgY2VyZW1vbnlBcmdzLnNob3VsZC5jb250YWluRXFsKHtcbiAgICAgICAgc2FmZUlkOiAndGVzdC1zYWZlLWlkJyxcbiAgICAgICAgZW50ZXJwcmlzZTogJ3Rlc3QtZW50ZXJwcmlzZS1pZCcsXG4gICAgICAgIHBhcmVudEtleUlkOiAnZWNkc2EtYml0Z28nLFxuICAgICAgICBkZXJpdmF0aW9uSW5kZXg6IDAsXG4gICAgICAgIHVzZXJSb290S2V5SWQ6ICdlY2RzYS11c2VyJyxcbiAgICAgICAgYmFja3VwUm9vdEtleUlkOiAnZWNkc2EtYmFja3VwJyxcbiAgICAgIH0pO1xuICAgICAgY2VyZW1vbnlBcmdzLnNob3VsZC5ub3QuaGF2ZS5wcm9wZXJ0eSgnYmFja3VwUm9vdEtleVNoYXJlJyk7XG4gICAgICBjZXJlbW9ueUFyZ3Muc2hvdWxkLm5vdC5oYXZlLnByb3BlcnR5KCdiYWNrdXBSb290VnJmS2V5U2hhcmUnKTtcbiAgICAgIGNlcmVtb255QXJncy51c2VyUm9vdEtleVNoYXJlLnNob3VsZC5kZWVwRXF1YWwoQnVmZmVyLmZyb20oJ3NpZ25pbmctMScpKTtcbiAgICAgIGNlcmVtb255QXJncy51c2VyUm9vdFZyZktleVNoYXJlLnNob3VsZC5kZWVwRXF1YWwoQnVmZmVyLmZyb20oJ3ZyZi0xJykpO1xuXG4gICAgICBtaW50U2VuZC5maXJzdENhbGwuYXJnc1swXS5zaG91bGQuZXFsKHtcbiAgICAgICAgY29pbjogJ2h0ZXRoJyxcbiAgICAgICAgbGFiZWw6ICdldm0nLFxuICAgICAgICB0eXBlOiAnaG90JyxcbiAgICAgICAgbXVsdGlzaWdUeXBlOiAndHNzJyxcbiAgICAgICAga2V5czogWydlY2RzYS1jaGlsZC11c2VyJywgJ2VjZHNhLWNoaWxkLWJhY2t1cC1wbGFjZWhvbGRlcicsICdlY2RzYS1jaGlsZC1iaXRnby1wbGFjZWhvbGRlciddLFxuICAgICAgfSk7XG4gICAgICB3YWxsZXQuaWQoKS5zaG91bGQuZXF1YWwoJ3dhbGxldC1pZCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlamVjdHMgYSBwZWVrZWQgZGVyaXZhdGlvbiBpbmRleCBmb3IgdGhlIHdyb25nIHNsb3QnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBkZXJpdmF0aW9uUXVlcnkucmV0dXJucyh7XG4gICAgICAgIHJlc3VsdDogc2lub24uc3R1YigpLnJlc29sdmVzKHsgc2xvdDogJ2VjZHNhTXBjJywgaW5kZXg6IDAgfSksXG4gICAgICB9KTtcbiAgICAgIGF3YWl0IHNhZmVcbiAgICAgICAgLmNyZWF0ZVdhbGxldCh7IGNvaW46ICd0YnRjJywgbGFiZWw6ICdkZXNrIDEnLCBwYXNzcGhyYXNlOiAncHcnIH0pXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKC9yZXR1cm5lZCBzbG90ICdlY2RzYU1wYycvKTtcbiAgICB9KTtcblxuICAgIGl0KCdtaW50cyBhbiBlZDI1NTE5IHdhbGxldCBmcm9tIHRoZSBTdHJLZXkgc2VlZCB1c2VyIHJvb3QnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBzdHViQ29pbigndHhsbScpO1xuICAgICAga2V5Y2hhaW5zR2V0LnJlc29sdmVzKHtcbiAgICAgICAgaWQ6ICd1c2VyLXJvb3QtaWQnLFxuICAgICAgICBzb3VyY2U6ICd1c2VyJyxcbiAgICAgICAgZW5jcnlwdGVkUHJ2OiBgZW5jOiR7Uk9PVF9FRDI1NTE5X1NFRURfU1RSS0VZfWAsXG4gICAgICAgIHB1YjogJ0dBQjJDQjU3NlBIQkJQUTVPRE9SUloyTFlDTVdQWkdXR0NOMktESzdEWE9JTVpBU0tVWTNRWjZRJyxcbiAgICAgICAgdHlwZTogJ2luZGVwZW5kZW50JyxcbiAgICAgIH0pO1xuICAgICAga2V5Y2hhaW5zQWRkLnJlc29sdmVzKHsgaWQ6ICdjaGlsZC1rZXktaWQnLCBwdWI6IGVkMjU1MTlDaGlsZEF0MC5wdWIsIHR5cGU6ICdpbmRlcGVuZGVudCcgfSk7XG4gICAgICBkZXJpdmF0aW9uUXVlcnkucmV0dXJucyh7XG4gICAgICAgIHJlc3VsdDogc2lub24uc3R1YigpLnJlc29sdmVzKHsgc2xvdDogJ2VkMjU1MTlNdWx0aXNpZycsIGluZGV4OiAwIH0pLFxuICAgICAgfSk7XG5cbiAgICAgIGF3YWl0IHNhZmUuY3JlYXRlV2FsbGV0KHsgY29pbjogJ3R4bG0nLCBsYWJlbDogJ3hsbSBkZXNrJywgcGFzc3BocmFzZTogJ3B3JyB9KTtcblxuICAgICAgZGVyaXZhdGlvblF1ZXJ5LmNhbGxlZE9uY2VXaXRoRXhhY3RseSh7IHNsb3Q6ICdlZDI1NTE5TXVsdGlzaWcnIH0pLnNob3VsZC5iZS50cnVlKCk7XG4gICAgICBrZXljaGFpbnNHZXQuY2FsbGVkT25jZVdpdGhFeGFjdGx5KHsgaWQ6ICdlZC11c2VyJyB9KS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgY29uc3QgYWRkQXJncyA9IGtleWNoYWluc0FkZC5maXJzdENhbGwuYXJnc1swXTtcbiAgICAgIGFkZEFyZ3Muc2hvdWxkLmVxbCh7XG4gICAgICAgIHB1YjogZWQyNTUxOUNoaWxkQXQwLnB1YixcbiAgICAgICAgc291cmNlOiAndXNlcicsXG4gICAgICAgIGtleVR5cGU6ICdpbmRlcGVuZGVudCcsXG4gICAgICAgIHBhcmVudDogJ2VkLXVzZXInLFxuICAgICAgICBzYWZlSWQ6ICd0ZXN0LXNhZmUtaWQnLFxuICAgICAgICBkZXJpdmVkRnJvbVBhcmVudFdpdGhQYXRoOiBcIm0vMCdcIixcbiAgICAgIH0pO1xuICAgICAgYWRkQXJncy5zaG91bGQubm90LmhhdmUucHJvcGVydHkoJ2VuY3J5cHRlZFBydicpO1xuICAgICAgbWludFNlbmQuZmlyc3RDYWxsLmFyZ3NbMF0uc2hvdWxkLmVxbCh7XG4gICAgICAgIGNvaW46ICd0eGxtJyxcbiAgICAgICAgbGFiZWw6ICd4bG0gZGVzaycsXG4gICAgICAgIHR5cGU6ICdob3QnLFxuICAgICAgICBtdWx0aXNpZ1R5cGU6ICdvbmNoYWluJyxcbiAgICAgICAga2V5czogWydjaGlsZC1rZXktaWQnXSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZm9yIChjb25zdCBjaGFpbiBvZiBbJ3RhbGdvJywgJ3RoYmFyJ10pIHtcbiAgICAgIGl0KGBtaW50cyBhbiBlZDI1NTE5ICR7Y2hhaW59IHdhbGxldCBwb3N0aW5nIHRoZSB1c2VyIGNoaWxkIGFzIGEgU3RyS2V5IChzZXJ2ZXIgY29udmVydHMpYCwgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyBUaGUgdXNlciBjaGlsZCBpcyBoYXJkZW5lZC1kZXJpdmVkIGZyb20gdGhlIHR4bG0gU3RyS2V5IHVzZXIgcm9vdCwgc28gdGhlIFNESyBwb3N0cyBhXG4gICAgICAgIC8vIFN0ZWxsYXIgU3RyS2V5IGZvciBFVkVSWSBlZDI1NTE5IHdhbGxldCBjb2luLiBXYWxsZXQgUGxhdGZvcm0gY29udmVydHMgdGhlIHB1YiB0byB0aGVcbiAgICAgICAgLy8gd2FsbGV0IGNvaW4ncyByZXByZXNlbnRhdGlvbiBhdCByZWdpc3RyYXRpb247IHRoZSBTREsgbmV2ZXIgY29pbi1lbmNvZGVzIGNoaWxkcmVuLlxuICAgICAgICBzdHViQ29pbihjaGFpbik7XG4gICAgICAgIGtleWNoYWluc0dldC5yZXNvbHZlcyh7XG4gICAgICAgICAgaWQ6ICd1c2VyLXJvb3QtaWQnLFxuICAgICAgICAgIHNvdXJjZTogJ3VzZXInLFxuICAgICAgICAgIGVuY3J5cHRlZFBydjogYGVuYzoke1JPT1RfRUQyNTUxOV9TRUVEX1NUUktFWX1gLFxuICAgICAgICAgIHB1YjogJ0dBQjJDQjU3NlBIQkJQUTVPRE9SUloyTFlDTVdQWkdXR0NOMktESzdEWE9JTVpBU0tVWTNRWjZRJyxcbiAgICAgICAgICB0eXBlOiAnaW5kZXBlbmRlbnQnLFxuICAgICAgICB9KTtcbiAgICAgICAga2V5Y2hhaW5zQWRkLnJlc29sdmVzKHsgaWQ6ICdjaGlsZC1rZXktaWQnLCBwdWI6IGBjb252ZXJ0ZWQtJHtjaGFpbn0tcHViYCwgdHlwZTogJ2luZGVwZW5kZW50JyB9KTtcbiAgICAgICAgZGVyaXZhdGlvblF1ZXJ5LnJldHVybnMoe1xuICAgICAgICAgIHJlc3VsdDogc2lub24uc3R1YigpLnJlc29sdmVzKHsgc2xvdDogJ2VkMjU1MTlNdWx0aXNpZycsIGluZGV4OiAwIH0pLFxuICAgICAgICB9KTtcblxuICAgICAgICBhd2FpdCBzYWZlLmNyZWF0ZVdhbGxldCh7IGNvaW46IGNoYWluLCBsYWJlbDogYCR7Y2hhaW59IGRlc2tgLCBwYXNzcGhyYXNlOiAncHcnIH0pO1xuXG4gICAgICAgIGNvbnN0IGFkZEFyZ3MgPSBrZXljaGFpbnNBZGQuZmlyc3RDYWxsLmFyZ3NbMF07XG4gICAgICAgIGFkZEFyZ3Muc2hvdWxkLmVxbCh7XG4gICAgICAgICAgcHViOiBlZDI1NTE5Q2hpbGRBdDAucHViLFxuICAgICAgICAgIHNvdXJjZTogJ3VzZXInLFxuICAgICAgICAgIGtleVR5cGU6ICdpbmRlcGVuZGVudCcsXG4gICAgICAgICAgcGFyZW50OiAnZWQtdXNlcicsXG4gICAgICAgICAgc2FmZUlkOiAndGVzdC1zYWZlLWlkJyxcbiAgICAgICAgICBkZXJpdmVkRnJvbVBhcmVudFdpdGhQYXRoOiBcIm0vMCdcIixcbiAgICAgICAgfSk7XG4gICAgICAgIG1pbnRTZW5kLmZpcnN0Q2FsbC5hcmdzWzBdLnNob3VsZC5lcWwoe1xuICAgICAgICAgIGNvaW46IGNoYWluLFxuICAgICAgICAgIGxhYmVsOiBgJHtjaGFpbn0gZGVza2AsXG4gICAgICAgICAgdHlwZTogJ2hvdCcsXG4gICAgICAgICAgbXVsdGlzaWdUeXBlOiAnb25jaGFpbicsXG4gICAgICAgICAga2V5czogWydjaGlsZC1rZXktaWQnXSxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpdCgncmVqZWN0cyBhbiBlbXB0eSBwYXNzcGhyYXNlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgc2FmZVxuICAgICAgICAuY3JlYXRlV2FsbGV0KHsgY29pbjogJ3RidGMnLCBsYWJlbDogJ3cnLCBwYXNzcGhyYXNlOiAnJyB9KVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgvcGFzc3BocmFzZSBpcyByZXF1aXJlZC8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlamVjdHMgYSB3cm9uZyBwYXNzcGhyYXNlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgc2FmZVxuICAgICAgICAuY3JlYXRlV2FsbGV0KHsgY29pbjogJ3RidGMnLCBsYWJlbDogJ3cnLCBwYXNzcGhyYXNlOiAnbm9wZScgfSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoSW5jb3JyZWN0UGFzc3dvcmRFcnJvcik7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -2,6 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  require("should");
4
4
  const src_1 = require("../../../../src");
5
+ // Deliberate guard: re-derives through sdk-core's public barrel (which re-exports from
6
+ // @bitgo/sdk-lib-safes) to prove the re-export and byte-for-byte output hold end-to-end.
7
+ // The secp256k1 ROOT_XPRV vector is secret and lives only here; the leaf's own
8
+ // test/unit/safeDerivation.ts pins a public BIP32 vector instead.
5
9
  // 32-byte synthetic root seed. The StrKey spelling was generated with stellar-sdk
6
10
  // (Keypair.fromRawEd25519Seed); the derivation vectors below were generated with an independent
7
11
  // SLIP-0010 implementation written from the spec and cross-checked against published vectors
@@ -68,4 +72,4 @@ describe('safeDerivation', function () {
68
72
  });
69
73
  });
70
74
  });
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FmZURlcml2YXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvYml0Z28vc2FmZS9zYWZlRGVyaXZhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLGtCQUFnQjtBQUNoQix5Q0FLeUI7QUFFekIsa0ZBQWtGO0FBQ2xGLGdHQUFnRztBQUNoRyw2RkFBNkY7QUFDN0YsaUZBQWlGO0FBQ2pGLE1BQU0sZ0JBQWdCLEdBQUcsMERBQTBELENBQUM7QUFFcEYsTUFBTSxTQUFTLEdBQ2IsaUhBQWlILENBQUM7QUFFcEgsUUFBUSxDQUFDLGdCQUFnQixFQUFFO0lBQ3pCLFFBQVEsQ0FBQywwQkFBMEIsRUFBRTtRQUNuQyxFQUFFLENBQUMsbUNBQW1DLEVBQUU7WUFDdEMsSUFBQSw4QkFBd0IsRUFBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVDLElBQUEsOEJBQXdCLEVBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1QyxJQUFBLDhCQUF3QixFQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDaEQsSUFBQSw4QkFBd0IsRUFBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hFLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDBEQUEwRCxFQUFFO1lBQzdELENBQUMsR0FBRyxFQUFFLENBQUMsSUFBQSw4QkFBd0IsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1lBQ25GLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBQSw4QkFBd0IsRUFBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFL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LENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDbkYsb0NBQW9DLENBQ3JDLENBQUM7WUFDRixDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUEsb0NBQThCLEVBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO1FBQzFHLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDBCQUEwQixFQUFFO1lBQzdCLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBQSxvQ0FBOEIsRUFBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1FBQzdHLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAnc2hvdWxkJztcbmltcG9ydCB7XG4gIGRlcml2ZVNhZmVDaGlsZEVkMjU1MTlIYXJkZW5lZCxcbiAgZGVyaXZlU2FmZUNoaWxkSGFyZGVuZWRGcm9tWHBydixcbiAgZ2V0U2FmZUhhcmRlbmVkRGVyaXZhdGlvblBhdGgsXG4gIHBhcnNlU2FmZURlcml2YXRpb25JbmRleCxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjJztcblxuLy8gMzItYnl0ZSBzeW50aGV0aWMgcm9vdCBzZWVkLiBUaGUgU3RyS2V5IHNwZWxsaW5nIHdhcyBnZW5lcmF0ZWQgd2l0aCBzdGVsbGFyLXNka1xuLy8gKEtleXBhaXIuZnJvbVJhd0VkMjU1MTlTZWVkKTsgdGhlIGRlcml2YXRpb24gdmVjdG9ycyBiZWxvdyB3ZXJlIGdlbmVyYXRlZCB3aXRoIGFuIGluZGVwZW5kZW50XG4vLyBTTElQLTAwMTAgaW1wbGVtZW50YXRpb24gd3JpdHRlbiBmcm9tIHRoZSBzcGVjIGFuZCBjcm9zcy1jaGVja2VkIGFnYWluc3QgcHVibGlzaGVkIHZlY3RvcnNcbi8vIChTTElQLTAwMTAgdGVzdCB2ZWN0b3IgMSBzZWVkIDAwMDEwMi4uLjBmIGRlcml2ZXMgbS8wJyB0byA2OGUwZmU0Ni4uLmRhZGU3YTMpLlxuY29uc3QgUk9PVF9TRUVEX1NUUktFWSA9ICdTQUFBQ0FRREFRQ1FNQllJQkVGQVdEQU5CWUhSQUVJU0NNS0JLRlFYREFNUlVHWTREVVBCNk5LSSc7XG5cbmNvbnN0IFJPT1RfWFBSViA9XG4gICd4cHJ2OXMyMVpyUUgxNDNLM2hla3lOajdUY2lSNFhOWWUxa01qNjhXMmlwakpHTkhFVFdQN280MkFqRG5TUGdLaGRaNHg4TkJBdmFMNzJSclhqdVhOZG1rTXFMRVJaemE3M29ZdWdHdGJMRlhHOGcnO1xuXG5kZXNjcmliZSgnc2FmZURlcml2YXRpb24nLCBmdW5jdGlvbiAoKSB7XG4gIGRlc2NyaWJlKCdwYXJzZVNhZmVEZXJpdmF0aW9uSW5kZXgnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ2FjY2VwdHMgbnVtYmVycyBhbmQgZGlnaXQgc3RyaW5ncycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHBhcnNlU2FmZURlcml2YXRpb25JbmRleCgwKS5zaG91bGQuZXF1YWwoMCk7XG4gICAgICBwYXJzZVNhZmVEZXJpdmF0aW9uSW5kZXgoNykuc2hvdWxkLmVxdWFsKDcpO1xuICAgICAgcGFyc2VTYWZlRGVyaXZhdGlvbkluZGV4KCc0MicpLnNob3VsZC5lcXVhbCg0Mik7XG4gICAgICBwYXJzZVNhZmVEZXJpdmF0aW9uSW5kZXgoMHg3ZmZmZmZmZikuc2hvdWxkLmVxdWFsKDB4N2ZmZmZmZmYpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlamVjdHMgbmVnYXRpdmVzLCBub24taW50ZWdlcnMsIGFuZCBvdXQtb2YtcmFuZ2UgdmFsdWVzJywgZnVuY3Rpb24gKCkge1xuICAgICAgKCgpID0+IHBhcnNlU2FmZURlcml2YXRpb25JbmRleCgtMSkpLnNob3VsZC50aHJvdygvSW52YWxpZCBzYWZlIGRlcml2YXRpb24gaW5kZXgvKTtcbiAgICAgICgoKSA9PiBwYXJzZVNhZmVEZXJpdmF0aW9uSW5kZXgoMS41KSkuc2hvdWxkLnRocm93KC9JbnZhbGlkIHNhZmUgZGVyaXZhdGlvbiBpbmRleC8pO1xuICAgICAgKCgpID0+IHBhcnNlU2FmZURlcml2YXRpb25JbmRleCgweDgwMDAwMDAwKSkuc2hvdWxkLnRocm93KC9JbnZhbGlkIHNhZmUgZGVyaXZhdGlvbiBpbmRleC8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlamVjdHMgbm9uLW51bWVyaWMgc3RyaW5ncycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICgoKSA9PiBwYXJzZVNhZmVEZXJpdmF0aW9uSW5kZXgoXCIwJ1wiKSkuc2hvdWxkLnRocm93KC9JbnZhbGlkIHNhZmUgZGVyaXZhdGlvbiBpbmRleC8pO1xuICAgICAgKCgpID0+IHBhcnNlU2FmZURlcml2YXRpb25JbmRleCgnbS8wJykpLnNob3VsZC50aHJvdygvSW52YWxpZCBzYWZlIGRlcml2YXRpb24gaW5kZXgvKTtcbiAgICAgICgoKSA9PiBwYXJzZVNhZmVEZXJpdmF0aW9uSW5kZXgoJycpKS5zaG91bGQudGhyb3coL0ludmFsaWQgc2FmZSBkZXJpdmF0aW9uIGluZGV4Lyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdnZXRTYWZlSGFyZGVuZWREZXJpdmF0aW9uUGF0aCcsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnZm9ybWF0cyBtLzxpbmRleD4gd2l0aCBoYXJkZW5lZCBhcG9zdHJvcGhlJywgZnVuY3Rpb24gKCkge1xuICAgICAgZ2V0U2FmZUhhcmRlbmVkRGVyaXZhdGlvblBhdGgoMCkuc2hvdWxkLmVxdWFsKFwibS8wJ1wiKTtcbiAgICAgIGdldFNhZmVIYXJkZW5lZERlcml2YXRpb25QYXRoKCc3Jykuc2hvdWxkLmVxdWFsKFwibS83J1wiKTtcbiAgICAgIGdldFNhZmVIYXJkZW5lZERlcml2YXRpb25QYXRoKCcwMDcnKS5zaG91bGQuZXF1YWwoXCJtLzcnXCIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZGVyaXZlU2FmZUNoaWxkSGFyZGVuZWRGcm9tWHBydicsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnZGVyaXZlcyBtLzAgZnJvbSB0aGUgcm9vdCB4cHJ2JywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgY2hpbGQgPSBkZXJpdmVTYWZlQ2hpbGRIYXJkZW5lZEZyb21YcHJ2KFJPT1RfWFBSViwgMCk7XG4gICAgICBjaGlsZC5kZXJpdmF0aW9uUGF0aC5zaG91bGQuZXF1YWwoXCJtLzAnXCIpO1xuICAgICAgY2hpbGQucHViLnNob3VsZC5lcXVhbChcbiAgICAgICAgJ3hwdWI2OVBiUjZIQjZaYVczUTlDV0F6TnNtV1hDOFRCRHExVkVtZDI1WGt3VWdyVTNQVkdBYmo2YmtzcVBuR1djRmRBb2RYV1JwV01YSjVLR2ltNDVuNTVjWmpYZVc3RkR3NEJxYWh0eFRFTjR3QidcbiAgICAgICk7XG4gICAgICBjaGlsZC5wcnYuc2hvdWxkLmVxdWFsKFxuICAgICAgICAneHBydjl2UUYxYWtIR0MyQ3B2NGpROVROV2RabmU2Y2dwTkhkc1loUkg5TUt2TUtWQWJBN2Q0UXIzeFpNWVhxQVMzNVY0ZGFtQ0RQMmhZb2hDTFZpSHpjR2hYNFRyN2RqakNCcnVBWDczU3NqQ2lDJ1xuICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2Rlcml2ZVNhZmVDaGlsZEVkMjU1MTlIYXJkZW5lZCcsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnZGVyaXZlcyBtLzAgdG8gdGhlIHBpbm5lZCBTTElQLTAwMTAgdmVjdG9yJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgY2hpbGQgPSBkZXJpdmVTYWZlQ2hpbGRFZDI1NTE5SGFyZGVuZWQoUk9PVF9TRUVEX1NUUktFWSwgMCk7XG4gICAgICBjaGlsZC5zaG91bGQuZXFsKHtcbiAgICAgICAgcHJ2OiAnYjEyN2ViNTA5MjAxMWMwODUzNDVjOGNlMGJmZWRhNjA2NGY5ZTEyNDllMjljYzIzOGMxZDY0YmYyZTU4N2NlNycsXG4gICAgICAgIHB1YjogJ0dDVFpSNDZGUEZBTVlONzM0U1FCNE5DTkJJNDRNNERTTk01UkpQQ0RMT01BT0ZQRVVWVVhQSzdSJyxcbiAgICAgICAgZGVyaXZhdGlvblBhdGg6IFwibS8wJ1wiLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnZGVyaXZlcyBtLzcgdG8gdGhlIHBpbm5lZCBTTElQLTAwMTAgdmVjdG9yJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgY2hpbGQgPSBkZXJpdmVTYWZlQ2hpbGRFZDI1NTE5SGFyZGVuZWQoUk9PVF9TRUVEX1NUUktFWSwgJzcnKTtcbiAgICAgIGNoaWxkLnNob3VsZC5lcWwoe1xuICAgICAgICBwcnY6ICdkNTQ3MDFlMjIxY2Y1MWU5ZTIwOGE3YzU5ZTNmZTNlNGNmYmI2YjkxZmQzZjM1Y2UwOTJhNDcxYzM1MjI4MjE3JyxcbiAgICAgICAgcHViOiAnR0MyWTVFVTJYQTIyU09TQ1JTWlJOREVZM1VBQTRPSlNMWjVOUVVGVVpEQlFTTE1WQ0laQ0JISU4nLFxuICAgICAgICBkZXJpdmF0aW9uUGF0aDogXCJtLzcnXCIsXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdyZWplY3RzIGEgbWFsZm9ybWVkIHJvb3Qgc2VlZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICgoKSA9PiBkZXJpdmVTYWZlQ2hpbGRFZDI1NTE5SGFyZGVuZWQoUk9PVF9TRUVEX1NUUktFWS5zbGljZSgwLCA1NSksIDApKS5zaG91bGQudGhyb3coXG4gICAgICAgIC9JbnZhbGlkIGVkMjU1MTkgU3RyS2V5IHNlY3JldCBzZWVkL1xuICAgICAgKTtcbiAgICAgICgoKSA9PiBkZXJpdmVTYWZlQ2hpbGRFZDI1NTE5SGFyZGVuZWQoUk9PVF9YUFJWLCAwKSkuc2hvdWxkLnRocm93KC9JbnZhbGlkIGVkMjU1MTkgU3RyS2V5IHNlY3JldCBzZWVkLyk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVqZWN0cyBhbiBpbnZhbGlkIGluZGV4JywgZnVuY3Rpb24gKCkge1xuICAgICAgKCgpID0+IGRlcml2ZVNhZmVDaGlsZEVkMjU1MTlIYXJkZW5lZChST09UX1NFRURfU1RSS0VZLCAtMSkpLnNob3VsZC50aHJvdygvSW52YWxpZCBzYWZlIGRlcml2YXRpb24gaW5kZXgvKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FmZURlcml2YXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvYml0Z28vc2FmZS9zYWZlRGVyaXZhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLGtCQUFnQjtBQUNoQix5Q0FLeUI7QUFFekIsdUZBQXVGO0FBQ3ZGLHlGQUF5RjtBQUN6RiwrRUFBK0U7QUFDL0Usa0VBQWtFO0FBRWxFLGtGQUFrRjtBQUNsRixnR0FBZ0c7QUFDaEcsNkZBQTZGO0FBQzdGLGlGQUFpRjtBQUNqRixNQUFNLGdCQUFnQixHQUFHLDBEQUEwRCxDQUFDO0FBRXBGLE1BQU0sU0FBUyxHQUNiLGlIQUFpSCxDQUFDO0FBRXBILFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRTtJQUN6QixRQUFRLENBQUMsMEJBQTBCLEVBQUU7UUFDbkMsRUFBRSxDQUFDLG1DQUFtQyxFQUFFO1lBQ3RDLElBQUEsOEJBQXdCLEVBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1QyxJQUFBLDhCQUF3QixFQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUMsSUFBQSw4QkFBd0IsRUFBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2hELElBQUEsOEJBQXdCLEVBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoRSxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQywwREFBMEQsRUFBRTtZQUM3RCxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUEsOEJBQXdCLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsK0JBQStCLENBQUMsQ0FBQztZQUNuRixDQUFDLEdBQUcsRUFBRSxDQUFD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QUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQ25GLG9DQUFvQyxDQUNyQyxDQUFDO1lBQ0YsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFBLG9DQUE4QixFQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQztRQUMxRyxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQywwQkFBMEIsRUFBRTtZQUM3QixDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUEsb0NBQThCLEVBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsK0JBQStCLENBQUMsQ0FBQztRQUM3RyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJ3Nob3VsZCc7XG5pbXBvcnQge1xuICBkZXJpdmVTYWZlQ2hpbGRFZDI1NTE5SGFyZGVuZWQsXG4gIGRlcml2ZVNhZmVDaGlsZEhhcmRlbmVkRnJvbVhwcnYsXG4gIGdldFNhZmVIYXJkZW5lZERlcml2YXRpb25QYXRoLFxuICBwYXJzZVNhZmVEZXJpdmF0aW9uSW5kZXgsXG59IGZyb20gJy4uLy4uLy4uLy4uL3NyYyc7XG5cbi8vIERlbGliZXJhdGUgZ3VhcmQ6IHJlLWRlcml2ZXMgdGhyb3VnaCBzZGstY29yZSdzIHB1YmxpYyBiYXJyZWwgKHdoaWNoIHJlLWV4cG9ydHMgZnJvbVxuLy8gQGJpdGdvL3Nkay1saWItc2FmZXMpIHRvIHByb3ZlIHRoZSByZS1leHBvcnQgYW5kIGJ5dGUtZm9yLWJ5dGUgb3V0cHV0IGhvbGQgZW5kLXRvLWVuZC5cbi8vIFRoZSBzZWNwMjU2azEgUk9PVF9YUFJWIHZlY3RvciBpcyBzZWNyZXQgYW5kIGxpdmVzIG9ubHkgaGVyZTsgdGhlIGxlYWYncyBvd25cbi8vIHRlc3QvdW5pdC9zYWZlRGVyaXZhdGlvbi50cyBwaW5zIGEgcHVibGljIEJJUDMyIHZlY3RvciBpbnN0ZWFkLlxuXG4vLyAzMi1ieXRlIHN5bnRoZXRpYyByb290IHNlZWQuIFRoZSBTdHJLZXkgc3BlbGxpbmcgd2FzIGdlbmVyYXRlZCB3aXRoIHN0ZWxsYXItc2RrXG4vLyAoS2V5cGFpci5mcm9tUmF3RWQyNTUxOVNlZWQpOyB0aGUgZGVyaXZhdGlvbiB2ZWN0b3JzIGJlbG93IHdlcmUgZ2VuZXJhdGVkIHdpdGggYW4gaW5kZXBlbmRlbnRcbi8vIFNMSVAtMDAxMCBpbXBsZW1lbnRhdGlvbiB3cml0dGVuIGZyb20gdGhlIHNwZWMgYW5kIGNyb3NzLWNoZWNrZWQgYWdhaW5zdCBwdWJsaXNoZWQgdmVjdG9yc1xuLy8gKFNMSVAtMDAxMCB0ZXN0IHZlY3RvciAxIHNlZWQgMDAwMTAyLi4uMGYgZGVyaXZlcyBtLzAnIHRvIDY4ZTBmZTQ2Li4uZGFkZTdhMykuXG5jb25zdCBST09UX1NFRURfU1RSS0VZID0gJ1NBQUFDQVFEQVFDUU1CWUlCRUZBV0RBTkJZSFJBRUlTQ01LQktGUVhEQU1SVUdZNERVUEI2TktJJztcblxuY29uc3QgUk9PVF9YUFJWID1cbiAgJ3hwcnY5czIxWnJRSDE0M0szaGVreU5qN1RjaVI0WE5ZZTFrTWo2OFcyaXBqSkdOSEVUV1A3bzQyQWpEblNQZ0toZFo0eDhOQkF2YUw3MlJyWGp1WE5kbWtNcUxFUlp6YTczb1l1Z0d0YkxGWEc4Zyc7XG5cbmRlc2NyaWJlKCdzYWZlRGVyaXZhdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgZGVzY3JpYmUoJ3BhcnNlU2FmZURlcml2YXRpb25JbmRleCcsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnYWNjZXB0cyBudW1iZXJzIGFuZCBkaWdpdCBzdHJpbmdzJywgZnVuY3Rpb24gKCkge1xuICAgICAgcGFyc2VTYWZlRGVyaXZhdGlvbkluZGV4KDApLnNob3VsZC5lcXVhbCgwKTtcbiAgICAgIHBhcnNlU2FmZURlcml2YXRpb25JbmRleCg3KS5zaG91bGQuZXF1YWwoNyk7XG4gICAgICBwYXJzZVNhZmVEZXJpdmF0aW9uSW5kZXgoJzQyJykuc2hvdWxkLmVxdWFsKDQyKTtcbiAgICAgIHBhcnNlU2FmZURlcml2YXRpb25JbmRleCgweDdmZmZmZmZmKS5zaG91bGQuZXF1YWwoMHg3ZmZmZmZmZik7XG4gICAgfSk7XG5cbiAgICBpdCgncmVqZWN0cyBuZWdhdGl2ZXMsIG5vbi1pbnRlZ2VycywgYW5kIG91dC1vZi1yYW5nZSB2YWx1ZXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAoKCkgPT4gcGFyc2VTYWZlRGVyaXZhdGlvbkluZGV4KC0xKSkuc2hvdWxkLnRocm93KC9JbnZhbGlkIHNhZmUgZGVyaXZhdGlvbiBpbmRleC8pO1xuICAgICAgKCgpID0+IHBhcnNlU2FmZURlcml2YXRpb25JbmRleCgxLjUpKS5zaG91bGQudGhyb3coL0ludmFsaWQgc2FmZSBkZXJpdmF0aW9uIGluZGV4Lyk7XG4gICAgICAoKCkgPT4gcGFyc2VTYWZlRGVyaXZhdGlvbkluZGV4KDB4ODAwMDAwMDApKS5zaG91bGQudGhyb3coL0ludmFsaWQgc2FmZSBkZXJpdmF0aW9uIGluZGV4Lyk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVqZWN0cyBub24tbnVtZXJpYyBzdHJpbmdzJywgZnVuY3Rpb24gKCkge1xuICAgICAgKCgpID0+IHBhcnNlU2FmZURlcml2YXRpb25JbmRleChcIjAnXCIpKS5zaG91bGQudGhyb3coL0ludmFsaWQgc2FmZSBkZXJpdmF0aW9uIGluZGV4Lyk7XG4gICAgICAoKCkgPT4gcGFyc2VTYWZlRGVyaXZhdGlvbkluZGV4KCdtLzAnKSkuc2hvdWxkLnRocm93KC9JbnZhbGlkIHNhZmUgZGVyaXZhdGlvbiBpbmRleC8pO1xuICAgICAgKCgpID0+IHBhcnNlU2FmZURlcml2YXRpb25JbmRleCgnJykpLnNob3VsZC50aHJvdygvSW52YWxpZCBzYWZlIGRlcml2YXRpb24gaW5kZXgvKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2dldFNhZmVIYXJkZW5lZERlcml2YXRpb25QYXRoJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdmb3JtYXRzIG0vPGluZGV4PiB3aXRoIGhhcmRlbmVkIGFwb3N0cm9waGUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBnZXRTYWZlSGFyZGVuZWREZXJpdmF0aW9uUGF0aCgwKS5zaG91bGQuZXF1YWwoXCJtLzAnXCIpO1xuICAgICAgZ2V0U2FmZUhhcmRlbmVkRGVyaXZhdGlvblBhdGgoJzcnKS5zaG91bGQuZXF1YWwoXCJtLzcnXCIpO1xuICAgICAgZ2V0U2FmZUhhcmRlbmVkRGVyaXZhdGlvblBhdGgoJzAwNycpLnNob3VsZC5lcXVhbChcIm0vNydcIik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdkZXJpdmVTYWZlQ2hpbGRIYXJkZW5lZEZyb21YcHJ2JywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdkZXJpdmVzIG0vMCBmcm9tIHRoZSByb290IHhwcnYnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBjaGlsZCA9IGRlcml2ZVNhZmVDaGlsZEhhcmRlbmVkRnJvbVhwcnYoUk9PVF9YUFJWLCAwKTtcbiAgICAgIGNoaWxkLmRlcml2YXRpb25QYXRoLnNob3VsZC5lcXVhbChcIm0vMCdcIik7XG4gICAgICBjaGlsZC5wdWIuc2hvdWxkLmVxdWFsKFxuICAgICAgICAneHB1YjY5UGJSNkhCNlphVzNROUNXQXpOc21XWEM4VEJEcTFWRW1kMjVYa3dVZ3JVM1BWR0FiajZia3NxUG5HV2NGZEFvZFhXUnBXTVhKNUtHaW00NW41NWNaalhlVzdGRHc0QnFhaHR4VEVONHdCJ1xuICAgICAgKTtcbiAgICAgIGNoaWxkLnBydi5zaG91bGQuZXF1YWwoXG4gICAgICAgICd4cHJ2OXZRRjFha0hHQzJDcHY0alE5VE5XZFpuZTZjZ3BOSGRzWWhSSDlNS3ZNS1ZBYkE3ZDRRcjN4Wk1ZWHFBUzM1VjRkYW1DRFAyaFlvaENMVmlIemNHaFg0VHI3ZGpqQ0JydUFYNzNTc2pDaUMnXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZGVyaXZlU2FmZUNoaWxkRWQyNTUxOUhhcmRlbmVkJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdkZXJpdmVzIG0vMCB0byB0aGUgcGlubmVkIFNMSVAtMDAxMCB2ZWN0b3InLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBjaGlsZCA9IGRlcml2ZVNhZmVDaGlsZEVkMjU1MTlIYXJkZW5lZChST09UX1NFRURfU1RSS0VZLCAwKTtcbiAgICAgIGNoaWxkLnNob3VsZC5lcWwoe1xuICAgICAgICBwcnY6ICdiMTI3ZWI1MDkyMDExYzA4NTM0NWM4Y2UwYmZlZGE2MDY0ZjllMTI0OWUyOWNjMjM4YzFkNjRiZjJlNTg3Y2U3JyxcbiAgICAgICAgcHViOiAnR0NUWlI0NkZQRkFNWU43MzRTUUI0TkNOQkk0NE00RFNOTTVSSlBDRExPTUFPRlBFVVZVWFBLN1InLFxuICAgICAgICBkZXJpdmF0aW9uUGF0aDogXCJtLzAnXCIsXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdkZXJpdmVzIG0vNyB0byB0aGUgcGlubmVkIFNMSVAtMDAxMCB2ZWN0b3InLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBjaGlsZCA9IGRlcml2ZVNhZmVDaGlsZEVkMjU1MTlIYXJkZW5lZChST09UX1NFRURfU1RSS0VZLCAnNycpO1xuICAgICAgY2hpbGQuc2hvdWxkLmVxbCh7XG4gICAgICAgIHBydjogJ2Q1NDcwMWUyMjFjZjUxZTllMjA4YTdjNTllM2ZlM2U0Y2ZiYjZiOTFmZDNmMzVjZTA5MmE0NzFjMzUyMjgyMTcnLFxuICAgICAgICBwdWI6ICdHQzJZNUVVMlhBMjJTT1NDUlNaUk5ERVkzVUFBNE9KU0xaNU5RVUZVWkRCUVNMTVZDSVpDQkhJTicsXG4gICAgICAgIGRlcml2YXRpb25QYXRoOiBcIm0vNydcIixcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlamVjdHMgYSBtYWxmb3JtZWQgcm9vdCBzZWVkJywgZnVuY3Rpb24gKCkge1xuICAgICAgKCgpID0+IGRlcml2ZVNhZmVDaGlsZEVkMjU1MTlIYXJkZW5lZChST09UX1NFRURfU1RSS0VZLnNsaWNlKDAsIDU1KSwgMCkpLnNob3VsZC50aHJvdyhcbiAgICAgICAgL0ludmFsaWQgZWQyNTUxOSBTdHJLZXkgc2VjcmV0IHNlZWQvXG4gICAgICApO1xuICAgICAgKCgpID0+IGRlcml2ZVNhZmVDaGlsZEVkMjU1MTlIYXJkZW5lZChST09UX1hQUlYsIDApKS5zaG91bGQudGhyb3coL0ludmFsaWQgZWQyNTUxOSBTdHJLZXkgc2VjcmV0IHNlZWQvKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZWplY3RzIGFuIGludmFsaWQgaW5kZXgnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAoKCkgPT4gZGVyaXZlU2FmZUNoaWxkRWQyNTUxOUhhcmRlbmVkKFJPT1RfU0VFRF9TVFJLRVksIC0xKSkuc2hvdWxkLnRocm93KC9JbnZhbGlkIHNhZmUgZGVyaXZhdGlvbiBpbmRleC8pO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19