@bitgo/sdk-core 38.22.0 → 39.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 (54) hide show
  1. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts +37 -3
  2. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts.map +1 -1
  3. package/dist/src/bitgo/baseCoin/iBaseCoin.js +1 -1
  4. package/dist/src/bitgo/errors.d.ts +8 -1
  5. package/dist/src/bitgo/errors.d.ts.map +1 -1
  6. package/dist/src/bitgo/errors.js +13 -3
  7. package/dist/src/bitgo/keychain/iKeychains.d.ts +20 -0
  8. package/dist/src/bitgo/keychain/iKeychains.d.ts.map +1 -1
  9. package/dist/src/bitgo/keychain/iKeychains.js +1 -1
  10. package/dist/src/bitgo/keychain/keychains.d.ts.map +1 -1
  11. package/dist/src/bitgo/keychain/keychains.js +31 -1
  12. package/dist/src/bitgo/safe/index.d.ts +1 -0
  13. package/dist/src/bitgo/safe/index.d.ts.map +1 -1
  14. package/dist/src/bitgo/safe/index.js +2 -1
  15. package/dist/src/bitgo/safe/recovery.d.ts +92 -0
  16. package/dist/src/bitgo/safe/recovery.d.ts.map +1 -0
  17. package/dist/src/bitgo/safe/recovery.js +148 -0
  18. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts +27 -0
  19. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts.map +1 -1
  20. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.js +91 -1
  21. package/dist/src/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.d.ts +1 -3
  22. package/dist/src/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.d.ts.map +1 -1
  23. package/dist/src/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.js +42 -70
  24. package/dist/src/bitgo/utils/tss/eddsa/typesEddsaMPCv2.d.ts +40 -21
  25. package/dist/src/bitgo/utils/tss/eddsa/typesEddsaMPCv2.d.ts.map +1 -1
  26. package/dist/src/bitgo/utils/tss/eddsa/typesEddsaMPCv2.js +2 -13
  27. package/dist/src/bitgo/utils/tss/recipientUtils.d.ts.map +1 -1
  28. package/dist/src/bitgo/utils/tss/recipientUtils.js +12 -1
  29. package/dist/src/bitgo/utils/tss/redpallas/redpallasMPCv2KeyGenSender.d.ts.map +1 -1
  30. package/dist/src/bitgo/wallet/BuildParams.d.ts +1 -0
  31. package/dist/src/bitgo/wallet/BuildParams.d.ts.map +1 -1
  32. package/dist/src/bitgo/wallet/BuildParams.js +5 -1
  33. package/dist/src/bitgo/wallet/iWallet.d.ts +7 -0
  34. package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -1
  35. package/dist/src/bitgo/wallet/iWallet.js +1 -1
  36. package/dist/src/bitgo/wallet/iWallets.d.ts +1 -0
  37. package/dist/src/bitgo/wallet/iWallets.d.ts.map +1 -1
  38. package/dist/src/bitgo/wallet/iWallets.js +1 -1
  39. package/dist/src/bitgo/wallet/wallet.d.ts +32 -1
  40. package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
  41. package/dist/src/bitgo/wallet/wallet.js +199 -81
  42. package/dist/src/bitgo/wallet/wallets.d.ts.map +1 -1
  43. package/dist/src/bitgo/wallet/wallets.js +23 -9
  44. package/dist/test/unit/bitgo/recovery/initiate.js +1 -30
  45. package/dist/test/unit/bitgo/safe/recovery.d.ts +2 -0
  46. package/dist/test/unit/bitgo/safe/recovery.d.ts.map +1 -0
  47. package/dist/test/unit/bitgo/safe/recovery.js +313 -0
  48. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaMPCv2.js +422 -5
  49. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.js +192 -23
  50. package/dist/test/unit/bitgo/utils/tss/recipientUtils.js +37 -1
  51. package/dist/test/unit/bitgo/wallet/BuildParams.js +14 -1
  52. package/dist/test/unit/bitgo/wallet/walletsExternalSigner.js +180 -2
  53. package/dist/tsconfig.tsbuildinfo +1 -1
  54. package/package.json +6 -6
@@ -111,6 +111,42 @@ describe('recipientUtils', function () {
111
111
  const result = (0, recipientUtils_1.resolveEffectiveTxParams)(txRequest, {});
112
112
  assert_1.default.strictEqual(result.type, 'consolidate');
113
113
  });
114
+ describe('ERC-7984 shield wrapParams propagation', function () {
115
+ const tokenName = 'hteth:cusdt';
116
+ const amount = '1000000';
117
+ it('derives wrapParams from a wrapApprove intent when txParams is undefined (pendingApproval re-sign path)', function () {
118
+ const txRequest = makeTxRequest({
119
+ intent: { intentType: 'wrapApprove', tokenName, amount },
120
+ });
121
+ const result = (0, recipientUtils_1.resolveEffectiveTxParams)(txRequest, undefined);
122
+ assert_1.default.strictEqual(result.type, 'wrapApprove');
123
+ assert_1.default.deepStrictEqual(result.wrapParams, { tokenName, amount });
124
+ });
125
+ it('derives wrapParams from a wrap intent', function () {
126
+ const txRequest = makeTxRequest({ intent: { intentType: 'wrap', tokenName, amount } });
127
+ assert_1.default.deepStrictEqual((0, recipientUtils_1.resolveEffectiveTxParams)(txRequest, undefined).wrapParams, { tokenName, amount });
128
+ });
129
+ it('does not overwrite wrapParams supplied by the caller', function () {
130
+ const callerWrapParams = { tokenName: 'hteth:ctest1', amount: '5' };
131
+ const txRequest = makeTxRequest({
132
+ intent: { intentType: 'wrapApprove', tokenName, amount },
133
+ });
134
+ const result = (0, recipientUtils_1.resolveEffectiveTxParams)(txRequest, { type: 'wrapApprove', wrapParams: callerWrapParams });
135
+ assert_1.default.deepStrictEqual(result.wrapParams, callerWrapParams);
136
+ });
137
+ it('does not derive wrapParams for other intent types or a non-string amount', function () {
138
+ const other = makeTxRequest({ intent: { intentType: 'tokenApproval', tokenName, amount } });
139
+ assert_1.default.strictEqual((0, recipientUtils_1.resolveEffectiveTxParams)(other, undefined).wrapParams, undefined);
140
+ const objectAmount = makeTxRequest({
141
+ intent: {
142
+ intentType: 'wrapApprove',
143
+ tokenName,
144
+ amount: { value: amount, symbol: tokenName },
145
+ },
146
+ });
147
+ assert_1.default.strictEqual((0, recipientUtils_1.resolveEffectiveTxParams)(objectAmount, undefined).wrapParams, undefined);
148
+ });
149
+ });
114
150
  it('does not throw for exempt types', function () {
115
151
  for (const txType of [
116
152
  'acceleration',
@@ -459,4 +495,4 @@ describe('recipientUtils', function () {
459
495
  });
460
496
  });
461
497
  });
462
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBpZW50VXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvYml0Z28vdXRpbHMvdHNzL3JlY2lwaWVudFV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLHNGQUFvSDtBQUNwSCw0REFBMEU7QUFHMUUsU0FBUyxhQUFhLENBQUMsWUFBZ0MsRUFBRTtJQUN2RCxPQUFPO1FBQ0wsV0FBVyxFQUFFLG9CQUFvQjtRQUNqQyxRQUFRLEVBQUUsZ0JBQWdCO1FBQzFCLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLEdBQUcsU0FBUztLQUNXLENBQUM7QUFDNUIsQ0FBQztBQUVELFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRTtJQUN6QixRQUFRLENBQUMsdUJBQXVCLEVBQUU7UUFDaEMsRUFBRSxDQUFDLDZCQUE2QixFQUFFO1lBQ2hDLE1BQU0sUUFBUSxHQUFHO2dCQUNmLFlBQVk7Z0JBQ1osY0FBYztnQkFDZCxXQUFXO2dCQUNYLGVBQWU7Z0JBQ2YsZUFBZTtnQkFDZixhQUFhO2dCQUNiLGFBQWE7Z0JBQ2IsYUFBYTtnQkFDYixhQUFhO2dCQUNiLGNBQWM7Z0JBQ2QsY0FBYztnQkFDZCxVQUFVO2dCQUNWLGFBQWE7Z0JBQ2IsYUFBYTtnQkFDYixjQUFjO2dCQUNkLCtEQUErRDtnQkFDL0QsWUFBWTtnQkFDWixhQUFhO2dCQUNiLGNBQWM7Z0JBQ2QsZUFBZTtnQkFDZixhQUFhO2dCQUNiLE1BQU07Z0JBQ04sUUFBUTtnQkFDUixnQkFBZ0I7Z0JBQ2hCLGNBQWM7Z0JBQ2QseURBQXlEO2dCQUN6RCxVQUFVO2dCQUNWLFlBQVk7Z0JBQ1osaUJBQWlCO2dCQUNqQixPQUFPO2dCQUNQLFNBQVM7Z0JBQ1QsbUJBQW1CO2dCQUNuQixxQkFBcUI7Z0JBQ3JCLGVBQWU7Z0JBQ2YsZUFBZTtnQkFDZixXQUFXO2dCQUNYLE9BQU87Z0JBQ1AsbUJBQW1CO2dCQUNuQixlQUFlO2dC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cnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCB7IE5PX1JFQ0lQSUVOVF9UWF9UWVBFUywgcmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3V0aWxzL3Rzcy9yZWNpcGllbnRVdGlscyc7XG5pbXBvcnQgeyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NyYy9iaXRnby9lcnJvcnMnO1xuaW1wb3J0IHsgUG9wdWxhdGVkSW50ZW50LCBUeFJlcXVlc3QgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vdXRpbHMvdHNzL2Jhc2VUeXBlcyc7XG5cbmZ1bmN0aW9uIG1ha2VUeFJlcXVlc3Qob3ZlcnJpZGVzOiBQYXJ0aWFsPFR4UmVxdWVzdD4gPSB7fSk6IFR4UmVxdWVzdCB7XG4gIHJldHVybiB7XG4gICAgdHhSZXF1ZXN0SWQ6ICd0ZXN0LXR4LXJlcXVlc3QtaWQnLFxuICAgIHdhbGxldElkOiAndGVzdC13YWxsZXQtaWQnLFxuICAgIGludGVudDogdW5kZWZpbmVkLFxuICAgIC4uLm92ZXJyaWRlcyxcbiAgfSBhcyB1bmtub3duIGFzIFR4UmVxdWVzdDtcbn1cblxuZGVzY3JpYmUoJ3JlY2lwaWVudFV0aWxzJywgZnVuY3Rpb24gKCkge1xuICBkZXNjcmliZSgnTk9fUkVDSVBJRU5UX1RYX1RZUEVTJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdjb250YWlucyBhbGwgZXhwZWN0ZWQgdHlwZXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBleHBlY3RlZCA9IFtcbiAgICAgICAgLy8gRUNEU0EgRVZNXG4gICAgICAgICdhY2NlbGVyYXRpb24nLFxuICAgICAgICAnZmlsbE5vbmNlJyxcbiAgICAgICAgJ3RyYW5zZmVyVG9rZW4nLFxuICAgICAgICAndG9rZW5BcHByb3ZhbCcsXG4gICAgICAgICdjb25zb2xpZGF0ZScsXG4gICAgICAgICdicmlkZ2VGdW5kcycsXG4gICAgICAgICdlbmFibGVUb2tlbicsXG4gICAgICAgICdlbmFibGV0b2tlbicsXG4gICAgICAgICdkaXNhYmxlVG9rZW4nLFxuICAgICAgICAnZGlzYWJsZXRva2VuJyxcbiAgICAgICAgJ2N1c3RvbVR4JyxcbiAgICAgICAgJ2RlZmlBcHByb3ZlJyxcbiAgICAgICAgJ2RlZmlEZXBvc2l0JyxcbiAgICAgICAgJ2RlZmlXaXRoZHJhdycsXG4gICAgICAgIC8vIE5hdGl2ZSB3cmFwL3Vud3JhcCDigJQgcmVnaXN0ZXJlZCBpbiBib3RoIHNwZWxsaW5ncyBvbiBwdXJwb3NlXG4gICAgICAgICd3cmFwTmF0aXZlJyxcbiAgICAgICAgJ3dyYXAtbmF0aXZlJyxcbiAgICAgICAgJ3Vud3JhcE5hdGl2ZScsXG4gICAgICAgICd1bndyYXAtbmF0aXZlJyxcbiAgICAgICAgJ3dyYXBBcHByb3ZlJyxcbiAgICAgICAgJ3dyYXAnLFxuICAgICAgICAndW53cmFwJyxcbiAgICAgICAgJ2ZpbmFsaXplVW53cmFwJyxcbiAgICAgICAgJ2NvbnRyYWN0Q2FsbCcsXG4gICAgICAgIC8vIFN0YWtpbmcg4oCUICdkZWxlZ2F0ZScgYWxzbyBjb3ZlcnMgU09MIHNvbERlbGVnYXRlSW50ZW50XG4gICAgICAgICdkZWxlZ2F0ZScsXG4gICAgICAgICd1bmRlbGVnYXRlJyxcbiAgICAgICAgJ3N3aXRjaFZhbGlkYXRvcicsXG4gICAgICAgICdzdGFrZScsXG4gICAgICAgICd1bnN0YWtlJyxcbiAgICAgICAgJ3N0YWtlV2l0aENhbGxEYXRhJyxcbiAgICAgICAgJ3Vuc3Rha2VXaXRoQ2FsbERhdGEnLFxuICAgICAgICAndHJhbnNmZXJTdGFrZScsXG4gICAgICAgICdpbmNyZWFzZVN0YWtlJyxcbiAgICAgICAgJ2dvVW5zdGFrZScsXG4gICAgICAgICdjbGFpbScsXG4gICAgICAgICdzdGFrZUNsYWltUmV3YXJkcycsXG4gICAgICAgICdjcmVhdGVBY2NvdW50JyxcbiAgICAgICAgLy8gQ2FudG9uIG9wZXJhdGlvbnMgd2l0aCBubyBTREstbGV2ZWwgcmVjaXBpZW50cy5cbiAgICAgICAgJ3RyYW5zZmVyQWNjZXB0JyxcbiAgICAgICAgJ3RyYW5zZmVyUmVqZWN0JyxcbiAgICAgICAgJ3RyYW5zZmVyT2ZmZXJXaXRoZHJhd24nLFxuICAgICAgICAnY29zaWduRGVsZWdhdGlvbkFjY2VwdCcsXG4gICAgICAgICdhbGxvY2F0aW9uQWxsb2NhdGUnLFxuICAgICAgICAnYWxsb2NhdGlvbk9mZmVyV2l0aGRyYXduJyxcbiAgICAgICAgJ2NhbnRvbkNvbW1hbmQnLFxuICAgICAgICAnY2FudG9uRW5kSW52ZXN0b3JPbmJvYXJkaW5nT2ZmZXInLFxuICAgICAgICAnY2FudG9uRW5kSW52ZXN0b3JPbmJvYXJkaW5nQWNjZXB0JyxcbiAgICAgICAgJ2NhbnRvbkVuZEludmVzdG9yT25ib2FyZGluZ1JlamVjdCcsXG4gICAgICAgICdjYW50b25QYXJ0aWNpcGFudE9uYm9hcmRpbmdSZXF1ZXN0JyxcblxuICAgICAgICAncGxlZGdlJyxcbiAgICAgICAgLy8gQXZhbGFuY2hlIC8gRmxhcmUgY3Jvc3MtY2hhaW4gYXRvbWljIGltcG9ydHNcbiAgICAgICAgJ2ltcG9ydCcsXG4gICAgICAgICdpbXBvcnR0b2MnLFxuICAgICAgICAvLyBTT0w6IGRlYWN0aXZhdGUgc3Rha2UgYWNjb3VudCAoc29sRGVhY3RpdmF0ZUludGVudClcbiAgICAgICAgJ2RlYWN0aXZhdGUnLFxuICAgICAgICAvLyBTT0w6IGF1dGhvcml6ZSBzdGFrZSBhY2NvdW50IChzb2xBdXRob3JpemVJbnRlbnQpXG4gICAgICAgICdhdXRob3JpemUnLFxuICAgICAgXTtcbiAgICAgIGV4cGVjdGVkLmZvckVhY2goKHQpID0+IGFzc2VydC5vayhOT19SRUNJUElFTlRfVFhfVFlQRVMuaGFzKHQpLCBgJHt0fSBzaG91bGQgYmUgaW4gTk9fUkVDSVBJRU5UX1RYX1RZUEVTYCkpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKE5PX1JFQ0lQSUVOVF9UWF9UWVBFUy5zaXplLCBleHBlY3RlZC5sZW5ndGgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2RvZXMgbm90IGNvbnRhaW4gdmFsdWUtdHJhbnNmZXIgdHlwZXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBbJ3BheW1lbnQnLCAnZmFub3V0JywgJ3ZvdGUnLCAnZGVmaS1kZXBvc2l0JywgJ2RlZmktcmVkZWVtJ10uZm9yRWFjaCgodCkgPT4ge1xuICAgICAgICBhc3NlcnQub2soIU5PX1JFQ0lQSUVOVF9UWF9UWVBFUy5oYXModCksIGAke3R9IG11c3QgTk9UIGJlIGluIE5PX1JFQ0lQSUVOVF9UWF9UWVBFU2ApO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdyZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Bhc3NlcyB0aHJvdWdoIHR4UGFyYW1zLnJlY2lwaWVudHMgd2hlbiBwcmVzZW50JywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhSZXF1ZXN0ID0gbWFrZVR4UmVxdWVzdCgpO1xuICAgICAgY29uc3QgdHhQYXJhbXMgPSB7IHJlY2lwaWVudHM6IFt7IGFkZHJlc3M6ICcweGFiYycsIGFtb3VudDogJzEwMCcgfV0gfTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyh0eFJlcXVlc3QsIHR4UGFyYW1zKTtcbiAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwocmVzdWx0LnJlY2lwaWVudHMsIHR4UGFyYW1zLnJlY2lwaWVudHMpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2ZhbGxzIGJhY2sgdG8gaW50ZW50LnJlY2lwaWVudHMgd2hlbiB0eFBhcmFtcyBoYXMgbm9uZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4UmVxdWVzdCA9IG1ha2VUeFJlcXVlc3Qoe1xuICAgICAgICBpbnRlbnQ6IHtcbiAgICAgICAgICBpbnRlbnRUeXBlOiAncGF5bWVudCcsXG4gICAgICAgICAgcmVjaXBpZW50czogW3sgYWRkcmVzczogeyBhZGRyZXNzOiAnMHhhYmMnIH0sIGFtb3VudDogeyB2YWx1ZTogJzUwMCcsIHN5bWJvbDogJ2V0aCcgfSB9XSxcbiAgICAgICAgfSBhcyBhbnksXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyh0eFJlcXVlc3QsIHt9KTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQucmVjaXBpZW50cz8ubGVuZ3RoLCAxKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQucmVjaXBpZW50cz8uWzBdLmFkZHJlc3MsICcweGFiYycpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdC5yZWNpcGllbnRzPy5bMF0uYW1vdW50LCAnNTAwJyk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVzb2x2ZXMgdHhUeXBlIGZyb20gaW50ZW50LmludGVudFR5cGUgd2hlbiB0eFBhcmFtcy50eXBlIGlzIGFic2VudCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4UmVxdWVzdCA9IG1ha2VUeFJlcXVlc3QoeyBpbnRlbnQ6IHsgaW50ZW50VHlwZTogJ2NvbnNvbGlkYXRlJyB9IGFzIGFueSB9KTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyh0eFJlcXVlc3QsIHt9KTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQudHlwZSwgJ2NvbnNvbGlkYXRlJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnZG9lcyBub3QgdGhyb3cgZm9yIGV4ZW1wdCB0eXBlcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGZvciAoY29uc3QgdHhUeXBlIG9mIFtcbiAgICAgICAgJ2FjY2VsZXJhdGlvbicsXG4gICAgICAgICdjb25zb2xpZGF0ZScsXG4gICAgICAgICdjb250cmFjdENhbGwnLFxuICAgICAgICAnZGVsZWdhdGUnLFxuICAgICAgICAnc3Rha2UnLFxuICAgICAgICAnY3JlYXRlQWNjb3VudCcsXG4gICAgICAgICdwbGVkZ2UnLFxuICAgICAgICAnaW1wb3J0JyxcbiAgICAgICAgJ2ltcG9ydHRvYycsXG4gICAgICAgICdkZWFjdGl2YXRlJyxcbiAgICAgIF0pIHtcbiAgICAgICAgY29uc3QgdHhSZXF1ZXN0ID0gbWFrZVR4UmVxdWVzdCgpO1xuICAgICAgICBhc3NlcnQuZG9lc05vdFRocm93KCgpID0+IHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyh0eFJlcXVlc3QsIHsgdHlwZTogdHhUeXBlIH0pKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGl0KCdkb2VzIG5vdCByZXF1aXJlIHJlY2lwaWVudHMgZm9yIENhbnRvbiBpbnRlbnRzIHJlc29sdmVkIGZyb20gdGhlIHR4IHJlcXVlc3QnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBjYW50b25JbnRlbnRUeXBlcyA9IFtcbiAgICAgICAgJ3RyYW5zZmVyQWNjZXB0JyxcbiAgICAgICAgJ3RyYW5zZmVyUmVqZWN0JyxcbiAgICAgICAgJ3RyYW5zZmVyT2ZmZXJXaXRoZHJhd24nLFxuICAgICAgICAnY29zaWduRGVsZWdhdGlvbkFjY2VwdCcsXG4gICAgICAgICdhbGxvY2F0aW9uQWxsb2NhdGUnLFxuICAgICAgICAnYWxsb2NhdGlvbk9mZmVyV2l0aGRyYXduJyxcbiAgICAgICAgJ2NhbnRvbkNvbW1hbmQnLFxuICAgICAgICAnY2FudG9uRW5kSW52ZXN0b3JPbmJvYXJkaW5nT2ZmZXInLFxuICAgICAgICAnY2FudG9uRW5kSW52ZXN0b3JPbmJvYXJkaW5nQWNjZXB0JyxcbiAgICAgICAgJ2NhbnRvbkVuZEludmVzdG9yT25ib2FyZGluZ1JlamVjdCcsXG4gICAgICAgICdjYW50b25QYXJ0aWNpcGFudE9uYm9hcmRpbmdSZXF1ZXN0JyxcbiAgICAgIF07XG5cbiAgICAgIGZvciAoY29uc3QgaW50ZW50VHlwZSBvZiBjYW50b25JbnRlbnRUeXBlcykge1xuICAgICAgICBjb25zdCBpbnRlbnQ6IFBvcHVsYXRlZEludGVudCA9IHsgaW50ZW50VHlwZSB9O1xuICAgICAgICBjb25zdCB0eFJlcXVlc3QgPSBtYWtlVHhSZXF1ZXN0KHsgaW50ZW50IH0pO1xuICAgICAgICBhc3NlcnQuZG9lc05vdFRocm93KCgpID0+IHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyh0eFJlcXVlc3QsIHVuZGVmaW5lZCkpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaXQoJ2RvZXMgbm90IHJlcXVpcmUgcmVjaXBpZW50cyBmb3IgYSB3cmFwQXBwcm92ZSBpbnRlbnQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eFJlcXVlc3QgPSBtYWtlVHhSZXF1ZXN0KHtcbiAgICAgICAgaW50ZW50OiB7XG4gICAgICAgICAgaW50ZW50VHlwZTogJ3dyYXBBcHByb3ZlJyxcbiAgICAgICAgICB0b2tlbk5hbWU6ICdodGV0aDpjdXNkdCcsXG4gICAgICAgICAgYW1vdW50OiAnMTAwMDAwMCcsXG4gICAgICAgIH0gYXMgYW55LFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyh0eFJlcXVlc3QsIHt9KTtcblxuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdC50eXBlLCAnd3JhcEFwcHJvdmUnKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQucmVjaXBpZW50cywgdW5kZWZpbmVkKTtcbiAgICB9KTtcblxuICAgIGl0KCdkb2VzIG5vdCByZXF1aXJlIHJlY2lwaWVudHMgZm9yIGEgd3JhcCBpbnRlbnQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eFJlcXVlc3QgPSBtYWtlVHhSZXF1ZXN0KHtcbiAgICAgICAgaW50ZW50OiB7XG4gICAgICAgICAgaW50ZW50VHlwZTogJ3dyYXAnLFxuICAgICAgICAgIHRva2VuTmFtZTogJ2h0ZXRoOmN1c2R0JyxcbiAgICAgICAgICBhbW91bnQ6ICcxMDAwMDAwJyxcbiAgICAgICAgfSBhcyBhbnksXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gcmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zKHR4UmVxdWVzdCwge30pO1xuXG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LnR5cGUsICd3cmFwJyk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LnJlY2lwaWVudHMsIHVuZGVmaW5lZCk7XG4gICAgfSk7XG5cbiAgICBpdCgnZG9lcyBub3QgcmVxdWlyZSByZWNpcGllbnRzIGZvciBhbiB1bndyYXAgaW50ZW50JywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhSZXF1ZXN0ID0gbWFrZVR4UmVxdWVzdCh7XG4gICAgICAgIGludGVudDoge1xuICAgICAgICAgIGludGVudFR5cGU6ICd1bndyYXAnLFxuICAgICAgICAgIHRva2VuTmFtZTogJ2h0ZXRoOmN1c2R0JyxcbiAgICAgICAgICBhbW91bnQ6ICcxMDAwMDAwJyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXModHhSZXF1ZXN0LCB7fSk7XG5cbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQudHlwZSwgJ3Vud3JhcCcpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdC5yZWNpcGllbnRzLCB1bmRlZmluZWQpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2RvZXMgbm90IHJlcXVpcmUgcmVjaXBpZW50cyBmb3IgYSBXUC1jcmVhdGVkIGZpbmFsaXplVW53cmFwIGludGVudCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIFdQIGNyZWF0ZXMgdGhlIGZpbmFsaXplIHR4blJlcSBhdCBSRUFEWV9UT19GSU5BTElaRSAoQ0hBTE8tMTEzOSk7IHRoZSBjbGllbnRcbiAgICAgIC8vIHNpZ25zIGl0IOKAlCByZXF1ZXN0SWQvY2xlYXJ0ZXh0QW1vdW50L2RlY3J5cHRpb25Qcm9vZiBsaXZlIGluIHRoZSBjYWxsZGF0YSxcbiAgICAgIC8vIHZlcmlmaWNhdGlvbiBkZWNvZGVzIHRoZW0gZnJvbSB0eEhleCwgYW5kIG5vIFNESy1sZXZlbCByZWNpcGllbnRzIGV4aXN0LlxuICAgICAgY29uc3QgdHhSZXF1ZXN0ID0gbWFrZVR4UmVxdWVzdCh7XG4gICAgICAgIGludGVudDoge1xuICAgICAgICAgIGludGVudFR5cGU6ICdmaW5hbGl6ZVVud3JhcCcsXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gcmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zKHR4UmVxdWVzdCwge30pO1xuXG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LnR5cGUsICdmaW5hbGl6ZVVud3JhcCcpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdC5yZWNpcGllbnRzLCB1bmRlZmluZWQpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2RvZXMgbm90IHRocm93IGZvciBBdmFsYW5jaGUgY3Jvc3MtY2hhaW4gaW1wb3J0cyByZXNvbHZlZCBmcm9tIGludGVudC5pbnRlbnRUeXBlJywgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gUC1jaGFpbiBhbmQgQy1jaGFpbiBpbXBvcnQgaW50ZW50cyBsZWdpdGltYXRlbHkgY2Fycnkgbm8gcmVjaXBpZW50cyDigJRcbiAgICAgIC8vIHRoZSB3YWxsZXQgaW1wb3J0cyBpdHMgb3duIFVUWE9zIGFuZCB0aGUgZGVzdGluYXRpb24gYWRkcmVzcyBpcyB0aGVcbiAgICAgIC8vIHdhbGxldCBpdHNlbGYuIFRoZSBpbnRlbnRUeXBlIGxpdmVzIG9ubHkgb24gdGhlIGludGVudCAodHhQYXJhbXMudHlwZVxuICAgICAgLy8gaXMgdW5zZXQgb24gdGhlIE1QQyBzaWduaW5nIGNhbGwpIHNvIHRoZSBndWFyZCBtdXN0IHJlYWQgaXQgZnJvbSB0aGVyZS5cbiAgICAgIGZvciAoY29uc3QgaW50ZW50VHlwZSBvZiBbJ2ltcG9ydCcsICdpbXBvcnR0b2MnXSkge1xuICAgICAgICBjb25zdCB0eFJlcXVlc3QgPSBtYWtlVHhSZXF1ZXN0KHsgaW50ZW50OiB7IGludGVudFR5cGUgfSBhcyBhbnkgfSk7XG4gICAgICAgIGFzc2VydC5kb2VzTm90VGhyb3coKCkgPT4gcmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zKHR4UmVxdWVzdCwge30pKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCduYXRpdmUgd3JhcC91bndyYXAgaW50ZW50cycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIFJlZ3Jlc3Npb24gdGVzdCBmb3IgdGhlIGNhbWVsQ2FzZS9rZWJhYi1jYXNlIGFzeW1tZXRyeS4gVGhpcyBzZXQgaXMgbWF0Y2hlZFxuICAgICAgLy8gYWdhaW5zdCBCT1RIIHR4UGFyYW1zLnR5cGUgKGJ1aWxkUGFyYW1zLnR5cGUg4oCUIGNhbWVsQ2FzZSwgZnJvbSB3YWxsZXQuc2VuZE1hbnkpXG4gICAgICAvLyBhbmQgaW50ZW50LmludGVudFR5cGUgKGtlYmFiLWNhc2UsIGFzIFdQIHBlcnNpc3RzIGl0KS4gU2lnbmluZyBwYXRocyB0aGF0IGNhcnJ5XG4gICAgICAvLyBubyB0eFBhcmFtcyDigJQgcGVuZGluZ0FwcHJvdmFsLmFwcHJvdmUoKSDihpIgcmVjcmVhdGVUeFJlcXVlc3QoKSDihpIgc2lnblR4UmVxdWVzdCgpXG4gICAgICAvLyDigJQgb25seSBldmVyIHNlZSB0aGUga2ViYWItY2FzZSBzcGVsbGluZywgc28gYm90aCBtdXN0IGJlIHJlZ2lzdGVyZWQuXG4gICAgICBpdCgnZG9lcyBub3QgdGhyb3cgd2hlbiB0aGUgdHlwZSBjb21lcyBmcm9tIGJ1aWxkUGFyYW1zLnR5cGUgKGNhbWVsQ2FzZSknLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGZvciAoY29uc3QgdHhUeXBlIG9mIFsnd3JhcE5hdGl2ZScsICd1bndyYXBOYXRpdmUnXSkge1xuICAgICAgICAgIGNvbnN0IHR4UmVxdWVzdCA9IG1ha2VUeFJlcXVlc3QoKTtcbiAgICAgICAgICBhc3NlcnQuZG9lc05vdFRocm93KCgpID0+IHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyh0eFJlcXVlc3QsIHsgdHlwZTogdHhUeXBlIH0pKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGl0KCdkb2VzIG5vdCB0aHJvdyB3aGVuIHRoZSB0eXBlIGNvbWVzIG9ubHkgZnJvbSBpbnRlbnQuaW50ZW50VHlwZSAoa2ViYWItY2FzZSknLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGZvciAoY29uc3QgaW50ZW50VHlwZSBvZiBbJ3dyYXAtbmF0aXZlJywgJ3Vud3JhcC1uYXRpdmUnXSkge1xuICAgICAgICAgIGNvbnN0IHR4UmVxdWVzdCA9IG1ha2VUeFJlcXVlc3QoeyBpbnRlbnQ6IHsgaW50ZW50VHlwZSB9IGFzIGFueSB9KTtcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXModHhSZXF1ZXN0LCB7fSk7XG4gICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdC50eXBlLCBpbnRlbnRUeXBlKTtcbiAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LnJlY2lwaWVudHMsIHVuZGVmaW5lZCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBpdCgnZG9lcyBub3QgdGhyb3cgd2hlbiB0eFBhcmFtcyBpcyB1bmRlZmluZWQgZW50aXJlbHkgKHBlbmRpbmdBcHByb3ZhbCByZS1zaWduIHBhdGgpJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBmb3IgKGNvbnN0IGludGVudFR5cGUgb2YgWyd3cmFwLW5hdGl2ZScsICd1bndyYXAtbmF0aXZlJ10pIHtcbiAgICAgICAgICBjb25zdCB0eFJlcXVlc3QgPSBtYWtlVHhSZXF1ZXN0KHsgaW50ZW50OiB7IGludGVudFR5cGUsIHZhdWx0SWQ6ICd2bHQtd2V0aC0xJywgYW1vdW50OiAnMTAnIH0gYXMgYW55IH0pO1xuICAgICAgICAgIGFzc2VydC5kb2VzTm90VGhyb3coKCkgPT4gcmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zKHR4UmVxdWVzdCwgdW5kZWZpbmVkKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ2RvZXMgbm90IHRocm93IHdoZW4gYnVpbGRQYXJhbXMudHlwZSBpcyBQYXNjYWxDYXNlIGJ1dCBpbnRlbnQuaW50ZW50VHlwZSBpcyBsb3dlcmNhc2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBzaWduVHJhbnNhY3Rpb25Uc3MgcGFzc2VzIHR4UHJlYnVpbGQuYnVpbGRQYXJhbXMgYXMgdHhQYXJhbXMuIFByZWJ1aWxkIHVzZXNcbiAgICAgIC8vIHR5cGU6ICdJbXBvcnQnIHdoaWxlIFdQIHN0b3JlcyBpbnRlbnRUeXBlOiAnaW1wb3J0JyBvbiB0aGUgdHhSZXF1ZXN0LlxuICAgICAgY29uc3QgdHhSZXF1ZXN0ID0gbWFrZVR4UmVxdWVzdCh7IGludGVudDogeyBpbnRlbnRUeXBlOiAnaW1wb3J0JywgcmVjaXBpZW50czogW10gfSBhcyBhbnkgfSk7XG4gICAgICBhc3NlcnQuZG9lc05vdFRocm93KCgpID0+IHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyh0eFJlcXVlc3QsIHsgdHlwZTogJ0ltcG9ydCcsIHJlY2lwaWVudHM6IFtdIH0pKTtcbiAgICB9KTtcblxuICAgIGl0KCd0aHJvd3MgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IgZm9yIHVua25vd24gdHlwZXMgd2l0aCBubyByZWNpcGllbnRzJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhSZXF1ZXN0ID0gbWFrZVR4UmVxdWVzdCgpO1xuICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgKCkgPT4gcmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zKHR4UmVxdWVzdCwgeyB0eXBlOiAncGF5bWVudCcgfSksXG4gICAgICAgIEludmFsaWRUcmFuc2FjdGlvbkVycm9yLFxuICAgICAgICAnc2hvdWxkIHRocm93IGZvciBwYXltZW50IHR5cGUgd2l0aCBubyByZWNpcGllbnRzJ1xuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCd0aHJvd3Mgd2hlbiB0eFBhcmFtcyBpcyB1bmRlZmluZWQgYW5kIG5vIGludGVudCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4UmVxdWVzdCA9IG1ha2VUeFJlcXVlc3QoKTtcbiAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gcmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zKHR4UmVxdWVzdCwgdW5kZWZpbmVkKSwgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2RvZXMgbm90IHRocm93IHdoZW4gaW50ZW50IGhhcyBzdGFraW5nUmVxdWVzdElkIChzdGFraW5nIGJ5cGFzcyknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eFJlcXVlc3QgPSBtYWtlVHhSZXF1ZXN0KHtcbiAgICAgICAgaW50ZW50OiB7IGludGVudFR5cGU6ICdkZWxlZ2F0ZScsIHN0YWtpbmdSZXF1ZXN0SWQ6ICdzdGFraW5nLXJlcS0xMjMnIH0gYXMgYW55LFxuICAgICAgfSk7XG4gICAgICBhc3NlcnQuZG9lc05vdFRocm93KCgpID0+IHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyh0eFJlcXVlc3QsIHt9KSk7XG4gICAgfSk7XG5cbiAgICBpdCgncHJvcGFnYXRlcyBzdGFraW5nUmVxdWVzdElkIGZyb20gaW50ZW50IGludG8gZWZmZWN0aXZlVHhQYXJhbXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eFJlcXVlc3QgPSBtYWtlVHhSZXF1ZXN0KHtcbiAgICAgICAgaW50ZW50OiB7IGludGVudFR5cGU6ICdkZWxlZ2F0ZScsIHN0YWtpbmdSZXF1ZXN0SWQ6ICdzdGFraW5nLXJlcS00NTYnIH0gYXMgYW55LFxuICAgICAgfSk7XG4gICAgICBjb25zdCByZXN1bHQgPSByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXModHhSZXF1ZXN0LCB7fSk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LnN0YWtpbmdSZXF1ZXN0SWQsICdzdGFraW5nLXJlcS00NTYnKTtcbiAgICB9KTtcblxuICAgIGl0KCdkb2VzIG5vdCBvdmVyd3JpdGUgZXhpc3Rpbmcgc3Rha2luZ1JlcXVlc3RJZCBpbiB0eFBhcmFtcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4UmVxdWVzdCA9IG1ha2VUeFJlcXVlc3Qoe1xuICAgICAgICBpbnRlbnQ6IHsgaW50ZW50VHlwZTogJ2RlbGVnYXRlJywgc3Rha2luZ1JlcXVlc3RJZDogJ2Zyb20taW50ZW50JyB9IGFzIGFueSxcbiAgICAgIH0pO1xuICAgICAgY29uc3QgcmVzdWx0ID0gcmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zKHR4UmVxdWVzdCwgeyBzdGFraW5nUmVxdWVzdElkOiAnZnJvbS1jYWxsZXInIH0pO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdC5zdGFraW5nUmVxdWVzdElkLCAnZnJvbS1jYWxsZXInKTtcbiAgICB9KTtcblxuICAgIGl0KCdwcmVmZXJzIHR4UGFyYW1zLnJlY2lwaWVudHMgb3ZlciBpbnRlbnQucmVjaXBpZW50cycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4UmVxdWVzdCA9IG1ha2VUeFJlcXVlc3Qoe1xuICAgICAgICBpbnRlbnQ6IHtcbiAgICAgICAgICBpbnRlbnRUeXBlOiAncGF5bWVudCcsXG4gICAgICAgICAgcmVjaXBpZW50czogW3sgYWRkcmVzczogeyBhZGRyZXNzOiAnMHhpbnRlbnQnIH0sIGFtb3VudDogeyB2YWx1ZTogJzk5OScsIHN5bWJvbDogJ2V0aCcgfSB9XSxcbiAgICAgICAgfSBhcyBhbnksXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHR4UGFyYW1zID0geyByZWNpcGllbnRzOiBbeyBhZGRyZXNzOiAnMHhjYWxsZXInLCBhbW91bnQ6ICcxMDAnIH1dIH07XG4gICAgICBjb25zdCByZXN1bHQgPSByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXModHhSZXF1ZXN0LCB0eFBhcmFtcyk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LnJlY2lwaWVudHM/LlswXS5hZGRyZXNzLCAnMHhjYWxsZXInKTtcbiAgICB9KTtcblxuICAgIGl0KCdwcmVzZXJ2ZXMgZGF0YSBmaWVsZCBmcm9tIGludGVudCByZWNpcGllbnRzJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhSZXF1ZXN0ID0gbWFrZVR4UmVxdWVzdCh7XG4gICAgICAgIGludGVudDoge1xuICAgICAgICAgIGludGVudFR5cGU6ICdwYXltZW50JyxcbiAgICAgICAgICByZWNpcGllbnRzOiBbeyBhZGRyZXNzOiB7IGFkZHJlc3M6ICcweGFiYycgfSwgYW1vdW50OiB7IHZhbHVlOiAnMTAwJywgc3ltYm9sOiAnZXRoJyB9LCBkYXRhOiAnMHhkZWFkYmVlZicgfV0sXG4gICAgICAgIH0gYXMgYW55LFxuICAgICAgfSk7XG4gICAgICBjb25zdCByZXN1bHQgPSByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXModHhSZXF1ZXN0LCB7fSk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LnJlY2lwaWVudHM/LlswXS5kYXRhLCAnMHhkZWFkYmVlZicpO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ3Rva2VuTmFtZSBwcmVzZXJ2YXRpb24gcmVncmVzc2lvbiB0ZXN0cycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGl0KCdwcmVzZXJ2ZXMgdG9rZW5OYW1lIGZyb20gYW1vdW50LnN5bWJvbCB3aGVuIGl0IGRpZmZlcnMgZnJvbSBjaGFpbk5hbWUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHR4UmVxdWVzdCA9IG1ha2VUeFJlcXVlc3Qoe1xuICAgICAgICAgIGludGVudDoge1xuICAgICAgICAgICAgaW50ZW50VHlwZTogJ3BheW1lbnQnLFxuICAgICAgICAgICAgcmVjaXBpZW50czogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYWRkcmVzczogeyBhZGRyZXNzOiAnVXNlcldhbGxldEFkZHJlc3MxMTExMTExMTExMTExMTExMTExMTExMTExMTEnIH0sXG4gICAgICAgICAgICAgICAgYW1vdW50OiB7IHZhbHVlOiAnMTAwMDAwMCcsIHN5bWJvbDogJ3Rzb2w6dXNkYycgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSBhcyBhbnksXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCByZXN1bHQgPSByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXModHhSZXF1ZXN0LCB7fSwgJ3Rzb2wnKTtcbiAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdC5yZWNpcGllbnRzPy5sZW5ndGgsIDEpO1xuICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LnJlY2lwaWVudHM/LlswXS50b2tlbk5hbWUsICd0c29sOnVzZGMnKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnZG9lcyBOT1Qgc2V0IHRva2VuTmFtZSB3aGVuIHN5bWJvbCBlcXVhbHMgY2hhaW5OYW1lIChuYXRpdmUgU09MIHRyYW5zZmVyKScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgdHhSZXF1ZXN0ID0gbWFrZVR4UmVxdWVzdCh7XG4gICAgICAgICAgaW50ZW50OiB7XG4gICAgICAgICAgICBpbnRlbnRUeXBlOiAncGF5bWVudCcsXG4gICAgICAgICAgICByZWNpcGllbnRzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzOiB7IGFkZHJlc3M6ICdSZWNpcGllbnRBZGRyZXNzMTExMTExMTExMTExMTExMTExMTExMTExMTExJyB9LFxuICAgICAgICAgICAgICAgIGFtb3VudDogeyB2YWx1ZTogJzUwMDAwMDAwMDAnLCBzeW1ib2w6ICd0c29sJyB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9IGFzIGFueSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyh0eFJlcXVlc3QsIHt9LCAndHNvbCcpO1xuICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LnJlY2lwaWVudHM/LlswXS50b2tlbk5hbWUsIHVuZGVmaW5lZCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3ByZWZlcnMgdG9rZW5EYXRhLnRva2VuTmFtZSBvdmVyIGFtb3VudC5zeW1ib2wgKHVzZXMgZGlzdGluY3QgdmFsdWVzIHRvIHZlcmlmeSknLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHR4UmVxdWVzdCA9IG1ha2VUeFJlcXVlc3Qoe1xuICAgICAgICAgIGludGVudDoge1xuICAgICAgICAgICAgaW50ZW50VHlwZTogJ3BheW1lbnQnLFxuICAgICAgICAgICAgcmVjaXBpZW50czogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYWRkcmVzczogeyBhZGRyZXNzOiAnUmVjaXBpZW50QWRkcmVzczExMTExMTExMTExMTExMTExMTExMTExMTExMScgfSxcbiAgICAgICAgICAgICAgICBhbW91bnQ6IHsgdmFsdWU6ICc1MDAwMDAnLCBzeW1ib2w6ICd0c29sOnVzZGMtYWx0JyB9LFxuICAgICAgICAgICAgICAgIHRva2VuRGF0YTogeyB0b2tlblR5cGU6ICdmdW5naWJsZScsIHRva2VuUXVhbnRpdHk6ICc1MDAwMDAnLCB0b2tlbk5hbWU6ICdjYW5vbmljYWwtdG9rZW4tbmFtZScgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSBhcyBhbnksXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCByZXN1bHQgPSByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXModHhSZXF1ZXN0LCB7fSwgJ3Rzb2wnKTtcbiAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdC5yZWNpcGllbnRzPy5bMF0udG9rZW5OYW1lLCAnY2Fub25pY2FsLXRva2VuLW5hbWUnKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnZmFsbHMgYmFjayB0byBhbW91bnQuc3ltYm9sIHdoZW4gdG9rZW5EYXRhLnRva2VuTmFtZSBpcyBhYnNlbnQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHR4UmVxdWVzdCA9IG1ha2VUeFJlcXVlc3Qoe1xuICAgICAgICAgIGludGVudDoge1xuICAgICAgICAgICAgaW50ZW50VHlwZTogJ3BheW1lbnQnLFxuICAgICAgICAgICAgcmVjaXBpZW50czogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYWRkcmVzczogeyBhZGRyZXNzOiAnUmVjaXBpZW50QWRkcmVzczExMTExMTExMTExMTExMTExMTExMTExMTExMScgfSxcbiAgICAgICAgICAgICAgICBhbW91bnQ6IHsgdmFsdWU6ICcyMDAwMDAnLCBzeW1ib2w6ICdzb2w6dXNkYycgfSxcbiAgICAgICAgICAgICAgICB0b2tlbkRhdGE6IHsgdG9rZW5UeXBlOiAnZnVuZ2libGUnLCB0b2tlblF1YW50aXR5OiAnMjAwMDAwJyB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9IGFzIGFueSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyh0eFJlcXVlc3QsIHt9LCAnc29sJyk7XG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQucmVjaXBpZW50cz8uWzBdLnRva2VuTmFtZSwgJ3NvbDp1c2RjJyk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2ZhbGxzIGJhY2sgdG8gYW1vdW50LnN5bWJvbCB3aGVuIHRva2VuRGF0YS50b2tlbk5hbWUgaXMgZW1wdHkgc3RyaW5nJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCB0eFJlcXVlc3QgPSBtYWtlVHhSZXF1ZXN0KHtcbiAgICAgICAgICBpbnRlbnQ6IHtcbiAgICAgICAgICAgIGludGVudFR5cGU6ICdwYXltZW50JyxcbiAgICAgICAgICAgIHJlY2lwaWVudHM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFkZHJlc3M6IHsgYWRkcmVzczogJ1JlY2lwaWVudEFkZHJlc3MxMTExMTExMTExMTExMTExMTExMTExMTExMTEnIH0sXG4gICAgICAgICAgICAgICAgYW1vdW50OiB7IHZhbHVlOiAnMTAwMDAwJywgc3ltYm9sOiAndHNvbDp1c2RjJyB9LFxuICAgICAgICAgICAgICAgIHRva2VuRGF0YTogeyB0b2tlblR5cGU6ICdmdW5naWJsZScsIHRva2VuUXVhbnRpdHk6ICcxMDAwMDAnLCB0b2tlbk5hbWU6ICcnIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0gYXMgYW55LFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gcmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zKHR4UmVxdWVzdCwge30sICd0c29sJyk7XG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQucmVjaXBpZW50cz8uWzBdLnRva2VuTmFtZSwgJ3Rzb2w6dXNkYycpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdkb2VzIE5PVCBzZXQgdG9rZW5OYW1lIHdoZW4gY2hhaW5OYW1lIGlzIGFic2VudCAobGVnYWN5IEVDRFNBIGNhbGxlcnMsIG5vIHRva2VuRGF0YSknLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHR4UmVxdWVzdCA9IG1ha2VUeFJlcXVlc3Qoe1xuICAgICAgICAgIGludGVudDoge1xuICAgICAgICAgICAgaW50ZW50VHlwZTogJ3BheW1lbnQnLFxuICAgICAgICAgICAgcmVjaXBpZW50czogW3sgYWRkcmVzczogeyBhZGRyZXNzOiAnMHhhYmMnIH0sIGFtb3VudDogeyB2YWx1ZTogJzEwMCcsIHN5bWJvbDogJ2V0aCcgfSB9XSxcbiAgICAgICAgICB9IGFzIGFueSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyh0eFJlcXVlc3QsIHt9KTtcbiAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdC5yZWNpcGllbnRzPy5bMF0udG9rZW5OYW1lLCB1bmRlZmluZWQpO1xuICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LnJlY2lwaWVudHM/LlswXS5hZGRyZXNzLCAnMHhhYmMnKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgncHJlc2VydmVzIHRva2VuRGF0YS50b2tlbk5hbWUgd2hlbiBjaGFpbk5hbWUgaXMgYWJzZW50IChsZWdhY3kgRUNEU0Egd2l0aCB0b2tlbkRhdGEpJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCB0eFJlcXVlc3QgPSBtYWtlVHhSZXF1ZXN0KHtcbiAgICAgICAgICBpbnRlbnQ6IHtcbiAgICAgICAgICAgIGludGVudFR5cGU6ICd0cmFuc2ZlclRva2VuJyxcbiAgICAgICAgICAgIHJlY2lwaWVudHM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFkZHJlc3M6IHsgYWRkcmVzczogJzB4YWJjJyB9LFxuICAgICAgICAgICAgICAgIGFtb3VudDogeyB2YWx1ZTogJzEwMDAnLCBzeW1ib2w6ICdlcmMyMDp1c2RjJyB9LFxuICAgICAgICAgICAgICAgIHRva2VuRGF0YTogeyB0b2tlblR5cGU6ICdmdW5naWJsZScsIHRva2VuUXVhbnRpdHk6ICcxMDAwJywgdG9rZW5OYW1lOiAnZXRoOnVzZGMnIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0gYXMgYW55LFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gcmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zKHR4UmVxdWVzdCwge30pO1xuICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LnJlY2lwaWVudHM/LlswXS50b2tlbk5hbWUsICdldGg6dXNkYycpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzZW5kTWFueSB0c29sOnVzZGM6IGRvZXMgbm90IHRocm93IGFuZCBwcmVzZXJ2ZXMgdG9rZW5OYW1lIGluIGZ1bGwgcm91bmQtdHJpcCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgdHhSZXF1ZXN0ID0gbWFrZVR4UmVxdWVzdCh7XG4gICAgICAgICAgaW50ZW50OiB7XG4gICAgICAgICAgICBpbnRlbnRUeXBlOiAncGF5bWVudCcsXG4gICAgICAgICAgICByZWNpcGllbnRzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzOiB7IGFkZHJlc3M6ICdTb2xVc2VyV2FsbGV0MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMScgfSxcbiAgICAgICAgICAgICAgICBhbW91bnQ6IHsgdmFsdWU6ICcyMDAwMDAwJywgc3ltYm9sOiAndHNvbDp1c2RjJyB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYWRkcmVzczogeyBhZGRyZXNzOiAnU29sVXNlcldhbGxldDIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjInIH0sXG4gICAgICAgICAgICAgICAgYW1vdW50OiB7IHZhbHVlOiAnMzAwMDAwMCcsIHN5bWJvbDogJ3Rzb2w6dXNkYycgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSBhcyBhbnksXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCByZXN1bHQgPSByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXModHhSZXF1ZXN0LCB7fSwgJ3Rzb2wnKTtcbiAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdC5yZWNpcGllbnRzPy5sZW5ndGgsIDIpO1xuICAgICAgICByZXN1bHQucmVjaXBpZW50cyEuZm9yRWFjaCgocikgPT4gYXNzZXJ0LnN0cmljdEVxdWFsKHIudG9rZW5OYW1lLCAndHNvbDp1c2RjJykpO1xuICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LnJlY2lwaWVudHMhWzBdLmFtb3VudCwgJzIwMDAwMDAnKTtcbiAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdC5yZWNpcGllbnRzIVsxXS5hbW91bnQsICczMDAwMDAwJyk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2hhbmRsZXMgbWl4ZWQgbmF0aXZlICsgdG9rZW4gcmVjaXBpZW50cyBjb3JyZWN0bHknLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHR4UmVxdWVzdCA9IG1ha2VUeFJlcXVlc3Qoe1xuICAgICAgICAgIGludGVudDoge1xuICAgICAgICAgICAgaW50ZW50VHlwZTogJ3BheW1lbnQnLFxuICAgICAgICAgICAgcmVjaXBpZW50czogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYWRkcmVzczogeyBhZGRyZXNzOiAnU29sTmF0aXZlMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExJyB9LFxuICAgICAgICAgICAgICAgIGFtb3VudDogeyB2YWx1ZTogJzEwMDAwMDAwMDAnLCBzeW1ib2w6ICd0c29sJyB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYWRkcmVzczogeyBhZGRyZXNzOiAnU29sVG9rZW4xMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEnIH0sXG4gICAgICAgICAgICAgICAgYW1vdW50OiB7IHZhbHVlOiAnNTAwMDAwJywgc3ltYm9sOiAndHNvbDp1c2RjJyB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9IGFzIGFueSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyh0eFJlcXVlc3QsIHt9LCAndHNvbCcpO1xuICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LnJlY2lwaWVudHMhWzBdLnRva2VuTmFtZSwgdW5kZWZpbmVkKTtcbiAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdC5yZWNpcGllbnRzIVsxXS50b2tlbk5hbWUsICd0c29sOnVzZGMnKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ1NPTCBuby1yZWNpcGllbnQgaW50ZW50IHR5cGVzJywgZnVuY3Rpb24gKCkge1xuICAgICAgaXQoJ2RvZXMgbm90IHRocm93IGZvciBcImRlbGVnYXRlXCIgKHNvbERlbGVnYXRlSW50ZW50KScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgdHhSZXF1ZXN0ID0gbWFrZVR4UmVxdWVzdCh7IGludGVudDogeyBpbnRlbnRUeXBlOiAnZGVsZWdhdGUnIH0gYXMgYW55IH0pO1xuICAgICAgICBhc3NlcnQuZG9lc05vdFRocm93KCgpID0+IHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyh0eFJlcXVlc3QsIHt9KSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2RvZXMgbm90IHRocm93IGZvciBcImRlYWN0aXZhdGVcIiAoc29sRGVhY3RpdmF0ZUludGVudCknLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHR4UmVxdWVzdCA9IG1ha2VUeFJlcXVlc3QoeyBpbnRlbnQ6IHsgaW50ZW50VHlwZTogJ2RlYWN0aXZhdGUnIH0gYXMgYW55IH0pO1xuICAgICAgICBhc3NlcnQuZG9lc05vdFRocm93KCgpID0+IHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyh0eFJlcXVlc3QsIHt9KSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2RvZXMgbm90IHRocm93IGZvciBcImF1dGhvcml6ZVwiIChzb2xBdXRob3JpemVJbnRlbnQpJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCB0eFJlcXVlc3QgPSBtYWtlVHhSZXF1ZXN0KHsgaW50ZW50OiB7IGludGVudFR5cGU6ICdhdXRob3JpemUnIH0gYXMgYW55IH0pO1xuICAgICAgICBhc3NlcnQuZG9lc05vdFRocm93KCgpID0+IHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyh0eFJlcXVlc3QsIHt9KSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Rocm93cyBmb3Igc3Rha2luZ0F1dGhvcml6ZSDigJQgbXVzdCBiZSB2YWxpZGF0ZWQgYXQgY29pbiBsYXllcicsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgdHhSZXF1ZXN0ID0gbWFrZVR4UmVxdWVzdCh7IGludGVudDogeyBpbnRlbnRUeXBlOiAnc3Rha2luZ0F1dGhvcml6ZScgfSBhcyBhbnkgfSk7XG4gICAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gcmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zKHR4UmVxdWVzdCwge30pLCBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcik7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
498
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBpZW50VXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvYml0Z28vdXRpbHMvdHNzL3JlY2lwaWVudFV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLHNGQUFvSDtBQUNwSCw0REFBMEU7QUFHMUUsU0FBUyxhQUFhLENBQUMsWUFBZ0MsRUFBRTtJQUN2RCxPQUFPO1FBQ0wsV0FBVyxFQUFFLG9CQUFvQjtRQUNqQyxRQUFRLEVBQUUsZ0JBQWdCO1FBQzFCLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLEdBQUcsU0FBUztLQUNXLENBQUM7QUFDNUIsQ0FBQztBQUVELFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRTtJQUN6QixRQUFRLENBQUMsdUJBQXVCLEVBQUU7UUFDaEMsRUFBRSxDQUFDLDZCQUE2QixFQUFFO1lBQ2hDLE1BQU0sUUFBUSxHQUFHO2dCQUNmLFlBQVk7Z0JBQ1osY0FBYztnQkFDZCxXQUFXO2dCQUNYLGVBQWU7Z0JBQ2YsZUFBZTtnQkFDZixhQUFhO2dCQUNiLGFBQWE7Z0JBQ2IsYUFBYTtnQkFDYixhQUFhO2dCQUNiLGNBQWM7Z0JBQ2QsY0FBYztnQkFDZCxVQUFVO2dCQUNWLGFBQWE7Z0JBQ2IsYUFBYTtnQkFDYixjQUFjO2dCQUNkLCtEQUErRDtnQkFDL0QsWUFBWTtnQkFDWixhQUFhO2dCQUNiLGNBQWM7Z0JBQ2QsZUFBZTtnQkFDZixhQUFhO2dCQUNiLE1BQU07Z0JBQ04sUUFBUTtnQkFDUixnQkFBZ0I7Z0JBQ2hCLGNBQWM7Z0JBQ2QseURBQXlEO2dCQUN6RCxVQUFVO2dCQUNWLFlBQVk7Z0JBQ1osaUJBQWlCO2dCQUNqQixPQUFPO2dCQUNQLFNBQVM7Z0JBQ1QsbUJBQW1CO2dCQUNuQixxQkFBcUI7Z0JBQ3JCLGVBQWU7Z0JBQ2YsZUFBZTtnQkFDZixXQUFXO2dCQUNYLE9BQU87Z0JBQ1AsbUJBQW1CO2dCQUNuQixlQUFlO2dC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LHVEQUF1RCxFQUFFO2dCQUMxRCxNQUFNLFNBQVMsR0FBRyxhQUFhLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFTLEVBQUUsQ0FBQyxDQUFDO2dCQUNqRixnQkFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFBLHlDQUF3QixFQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3JFLENBQUMsQ0FBQyxDQUFDO1lBRUgsRUFBRSxDQUFDLHFEQUFxRCxFQUFFO2dCQUN4RCxNQUFNLFNBQVMsR0FBRyxhQUFhLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFTLEVBQUUsQ0FBQyxDQUFDO2dCQUNoRixnQkFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFBLHlDQUF3QixFQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3JFLENBQUMsQ0FBQyxDQUFDO1lBRUgsRUFBRSxDQUFDLCtEQUErRCxFQUFFO2dCQUNsRSxNQUFNLFNBQVMsR0FBRyxhQUFhLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxVQUFVLEVBQUUsa0JBQWtCLEVBQVMsRUFBRSxDQUFDLENBQUM7Z0JBQ3ZGLGdCQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUEseUNBQXdCLEVBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxFQUFFLGdDQUF1QixDQUFDLENBQUM7WUFDeEYsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgeyBOT19SRUNJUElFTlRfVFhfVFlQRVMsIHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NyYy9iaXRnby91dGlscy90c3MvcmVjaXBpZW50VXRpbHMnO1xuaW1wb3J0IHsgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vZXJyb3JzJztcbmltcG9ydCB7IFBvcHVsYXRlZEludGVudCwgVHhSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3V0aWxzL3Rzcy9iYXNlVHlwZXMnO1xuXG5mdW5jdGlvbiBtYWtlVHhSZXF1ZXN0KG92ZXJyaWRlczogUGFydGlhbDxUeFJlcXVlc3Q+ID0ge30pOiBUeFJlcXVlc3Qge1xuICByZXR1cm4ge1xuICAgIHR4UmVxdWVzdElkOiAndGVzdC10eC1yZXF1ZXN0LWlkJyxcbiAgICB3YWxsZXRJZDogJ3Rlc3Qtd2FsbGV0LWlkJyxcbiAgICBpbnRlbnQ6IHVuZGVmaW5lZCxcbiAgICAuLi5vdmVycmlkZXMsXG4gIH0gYXMgdW5rbm93biBhcyBUeFJlcXVlc3Q7XG59XG5cbmRlc2NyaWJlKCdyZWNpcGllbnRVdGlscycsIGZ1bmN0aW9uICgpIHtcbiAgZGVzY3JpYmUoJ05PX1JFQ0lQSUVOVF9UWF9UWVBFUycsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnY29udGFpbnMgYWxsIGV4cGVjdGVkIHR5cGVzJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZXhwZWN0ZWQgPSBbXG4gICAgICAgIC8vIEVDRFNBIEVWTVxuICAgICAgICAnYWNjZWxlcmF0aW9uJyxcbiAgICAgICAgJ2ZpbGxOb25jZScsXG4gICAgICAgICd0cmFuc2ZlclRva2VuJyxcbiAgICAgICAgJ3Rva2VuQXBwcm92YWwnLFxuICAgICAgICAnY29uc29saWRhdGUnLFxuICAgICAgICAnYnJpZGdlRnVuZHMnLFxuICAgICAgICAnZW5hYmxlVG9rZW4nLFxuICAgICAgICAnZW5hYmxldG9rZW4nLFxuICAgICAgICAnZGlzYWJsZVRva2VuJyxcbiAgICAgICAgJ2Rpc2FibGV0b2tlbicsXG4gICAgICAgICdjdXN0b21UeCcsXG4gICAgICAgICdkZWZpQXBwcm92ZScsXG4gICAgICAgICdkZWZpRGVwb3NpdCcsXG4gICAgICAgICdkZWZpV2l0aGRyYXcnLFxuICAgICAgICAvLyBOYXRpdmUgd3JhcC91bndyYXAg4oCUIHJlZ2lzdGVyZWQgaW4gYm90aCBzcGVsbGluZ3Mgb24gcHVycG9zZVxuICAgICAgICAnd3JhcE5hdGl2ZScsXG4gICAgICAgICd3cmFwLW5hdGl2ZScsXG4gICAgICAgICd1bndyYXBOYXRpdmUnLFxuICAgICAgICAndW53cmFwLW5hdGl2ZScsXG4gICAgICAgICd3cmFwQXBwcm92ZScsXG4gICAgICAgICd3cmFwJyxcbiAgICAgICAgJ3Vud3JhcCcsXG4gICAgICAgICdmaW5hbGl6ZVVud3JhcCcsXG4gICAgICAgICdjb250cmFjdENhbGwnLFxuICAgICAgICAvLyBTdGFraW5nIOKAlCAnZGVsZWdhdGUnIGFsc28gY292ZXJzIFNPTCBzb2xEZWxlZ2F0ZUludGVudFxuICAgICAgICAnZGVsZWdhdGUnLFxuICAgICAgICAndW5kZWxlZ2F0ZScsXG4gICAgICAgICdzd2l0Y2hWYWxpZGF0b3InLFxuICAgICAgICAnc3Rha2UnLFxuICAgICAgICAndW5zdGFrZScsXG4gICAgICAgICdzdGFrZVdpdGhDYWxsRGF0YScsXG4gICAgICAgICd1bnN0YWtlV2l0aENhbGxEYXRhJyxcbiAgICAgICAgJ3RyYW5zZmVyU3Rha2UnLFxuICAgICAgICAnaW5jcmVhc2VTdGFrZScsXG4gICAgICAgICdnb1Vuc3Rha2UnLFxuICAgICAgICAnY2xhaW0nLFxuICAgICAgICAnc3Rha2VDbGFpbVJld2FyZHMnLFxuICAgICAgICAnY3JlYXRlQWNjb3VudCcsXG4gICAgICAgIC8vIENhbnRvbiBvcGVyYXRpb25zIHdpdGggbm8gU0RLLWxldmVsIHJlY2lwaWVudHMuXG4gICAgICAgICd0cmFuc2ZlckFjY2VwdCcsXG4gICAgICAgICd0cmFuc2ZlclJlamVjdCcsXG4gICAgICAgICd0cmFuc2Zlck9mZmVyV2l0aGRyYXduJyxcbiAgICAgICAgJ2Nvc2lnbkRlbGVnYXRpb25BY2NlcHQnLFxuICAgICAgICAnYWxsb2NhdGlvbkFsbG9jYXRlJyxcbiAgICAgICAgJ2FsbG9jYXRpb25PZmZlcldpdGhkcmF3bicsXG4gICAgICAgICdjYW50b25Db21tYW5kJyxcbiAgICAgICAgJ2NhbnRvbkVuZEludmVzdG9yT25ib2FyZGluZ09mZmVyJyxcbiAgICAgICAgJ2NhbnRvbkVuZEludmVzdG9yT25ib2FyZGluZ0FjY2VwdCcsXG4gICAgICAgICdjYW50b25FbmRJbnZlc3Rvck9uYm9hcmRpbmdSZWplY3QnLFxuICAgICAgICAnY2FudG9uUGFydGljaXBhbnRPbmJvYXJkaW5nUmVxdWVzdCcsXG5cbiAgICAgICAgJ3BsZWRnZScsXG4gICAgICAgIC8vIEF2YWxhbmNoZSAvIEZsYXJlIGNyb3NzLWNoYWluIGF0b21pYyBpbXBvcnRzXG4gICAgICAgICdpbXBvcnQnLFxuICAgICAgICAnaW1wb3J0dG9jJyxcbiAgICAgICAgLy8gU09MOiBkZWFjdGl2YXRlIHN0YWtlIGFjY291bnQgKHNvbERlYWN0aXZhdGVJbnRlbnQpXG4gICAgICAgICdkZWFjdGl2YXRlJyxcbiAgICAgICAgLy8gU09MOiBhdXRob3JpemUgc3Rha2UgYWNjb3VudCAoc29sQXV0aG9yaXplSW50ZW50KVxuICAgICAgICAnYXV0aG9yaXplJyxcbiAgICAgIF07XG4gICAgICBleHBlY3RlZC5mb3JFYWNoKCh0KSA9PiBhc3NlcnQub2soTk9fUkVDSVBJRU5UX1RYX1RZUEVTLmhhcyh0KSwgYCR7dH0gc2hvdWxkIGJlIGluIE5PX1JFQ0lQSUVOVF9UWF9UWVBFU2ApKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChOT19SRUNJUElFTlRfVFhfVFlQRVMuc2l6ZSwgZXhwZWN0ZWQubGVuZ3RoKTtcbiAgICB9KTtcblxuICAgIGl0KCdkb2VzIG5vdCBjb250YWluIHZhbHVlLXRyYW5zZmVyIHR5cGVzJywgZnVuY3Rpb24gKCkge1xuICAgICAgWydwYXltZW50JywgJ2Zhbm91dCcsICd2b3RlJywgJ2RlZmktZGVwb3NpdCcsICdkZWZpLXJlZGVlbSddLmZvckVhY2goKHQpID0+IHtcbiAgICAgICAgYXNzZXJ0Lm9rKCFOT19SRUNJUElFTlRfVFhfVFlQRVMuaGFzKHQpLCBgJHt0fSBtdXN0IE5PVCBiZSBpbiBOT19SRUNJUElFTlRfVFhfVFlQRVNgKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgncmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdwYXNzZXMgdGhyb3VnaCB0eFBhcmFtcy5yZWNpcGllbnRzIHdoZW4gcHJlc2VudCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4UmVxdWVzdCA9IG1ha2VUeFJlcXVlc3QoKTtcbiAgICAgIGNvbnN0IHR4UGFyYW1zID0geyByZWNpcGllbnRzOiBbeyBhZGRyZXNzOiAnMHhhYmMnLCBhbW91bnQ6ICcxMDAnIH1dIH07XG4gICAgICBjb25zdCByZXN1bHQgPSByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXModHhSZXF1ZXN0LCB0eFBhcmFtcyk7XG4gICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHJlc3VsdC5yZWNpcGllbnRzLCB0eFBhcmFtcy5yZWNpcGllbnRzKTtcbiAgICB9KTtcblxuICAgIGl0KCdmYWxscyBiYWNrIHRvIGludGVudC5yZWNpcGllbnRzIHdoZW4gdHhQYXJhbXMgaGFzIG5vbmUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eFJlcXVlc3QgPSBtYWtlVHhSZXF1ZXN0KHtcbiAgICAgICAgaW50ZW50OiB7XG4gICAgICAgICAgaW50ZW50VHlwZTogJ3BheW1lbnQnLFxuICAgICAgICAgIHJlY2lwaWVudHM6IFt7IGFkZHJlc3M6IHsgYWRkcmVzczogJzB4YWJjJyB9LCBhbW91bnQ6IHsgdmFsdWU6ICc1MDAnLCBzeW1ib2w6ICdldGgnIH0gfV0sXG4gICAgICAgIH0gYXMgYW55LFxuICAgICAgfSk7XG4gICAgICBjb25zdCByZXN1bHQgPSByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXModHhSZXF1ZXN0LCB7fSk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LnJlY2lwaWVudHM/Lmxlbmd0aCwgMSk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LnJlY2lwaWVudHM/LlswXS5hZGRyZXNzLCAnMHhhYmMnKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQucmVjaXBpZW50cz8uWzBdLmFtb3VudCwgJzUwMCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Jlc29sdmVzIHR4VHlwZSBmcm9tIGludGVudC5pbnRlbnRUeXBlIHdoZW4gdHhQYXJhbXMudHlwZSBpcyBhYnNlbnQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eFJlcXVlc3QgPSBtYWtlVHhSZXF1ZXN0KHsgaW50ZW50OiB7IGludGVudFR5cGU6ICdjb25zb2xpZGF0ZScgfSBhcyBhbnkgfSk7XG4gICAgICBjb25zdCByZXN1bHQgPSByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXModHhSZXF1ZXN0LCB7fSk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LnR5cGUsICdjb25zb2xpZGF0ZScpO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ0VSQy03OTg0IHNoaWVsZCB3cmFwUGFyYW1zIHByb3BhZ2F0aW9uJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdG9rZW5OYW1lID0gJ2h0ZXRoOmN1c2R0JztcbiAgICAgIGNvbnN0IGFtb3VudCA9ICcxMDAwMDAwJztcblxuICAgICAgaXQoJ2Rlcml2ZXMgd3JhcFBhcmFtcyBmcm9tIGEgd3JhcEFwcHJvdmUgaW50ZW50IHdoZW4gdHhQYXJhbXMgaXMgdW5kZWZpbmVkIChwZW5kaW5nQXBwcm92YWwgcmUtc2lnbiBwYXRoKScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgdHhSZXF1ZXN0ID0gbWFrZVR4UmVxdWVzdCh7XG4gICAgICAgICAgaW50ZW50OiB7IGludGVudFR5cGU6ICd3cmFwQXBwcm92ZScsIHRva2VuTmFtZSwgYW1vdW50IH0gYXMgUG9wdWxhdGVkSW50ZW50LFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gcmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zKHR4UmVxdWVzdCwgdW5kZWZpbmVkKTtcbiAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdC50eXBlLCAnd3JhcEFwcHJvdmUnKTtcbiAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChyZXN1bHQud3JhcFBhcmFtcywgeyB0b2tlbk5hbWUsIGFtb3VudCB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnZGVyaXZlcyB3cmFwUGFyYW1zIGZyb20gYSB3cmFwIGludGVudCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgdHhSZXF1ZXN0ID0gbWFrZVR4UmVxdWVzdCh7IGludGVudDogeyBpbnRlbnRUeXBlOiAnd3JhcCcsIHRva2VuTmFtZSwgYW1vdW50IH0gYXMgUG9wdWxhdGVkSW50ZW50IH0pO1xuICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyh0eFJlcXVlc3QsIHVuZGVmaW5lZCkud3JhcFBhcmFtcywgeyB0b2tlbk5hbWUsIGFtb3VudCB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnZG9lcyBub3Qgb3ZlcndyaXRlIHdyYXBQYXJhbXMgc3VwcGxpZWQgYnkgdGhlIGNhbGxlcicsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgY2FsbGVyV3JhcFBhcmFtcyA9IHsgdG9rZW5OYW1lOiAnaHRldGg6Y3Rlc3QxJywgYW1vdW50OiAnNScgfTtcbiAgICAgICAgY29uc3QgdHhSZXF1ZXN0ID0gbWFrZVR4UmVxdWVzdCh7XG4gICAgICAgICAgaW50ZW50OiB7IGludGVudFR5cGU6ICd3cmFwQXBwcm92ZScsIHRva2VuTmFtZSwgYW1vdW50IH0gYXMgUG9wdWxhdGVkSW50ZW50LFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gcmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zKHR4UmVxdWVzdCwgeyB0eXBlOiAnd3JhcEFwcHJvdmUnLCB3cmFwUGFyYW1zOiBjYWxsZXJXcmFwUGFyYW1zIH0pO1xuICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHJlc3VsdC53cmFwUGFyYW1zLCBjYWxsZXJXcmFwUGFyYW1zKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnZG9lcyBub3QgZGVyaXZlIHdyYXBQYXJhbXMgZm9yIG90aGVyIGludGVudCB0eXBlcyBvciBhIG5vbi1zdHJpbmcgYW1vdW50JywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCBvdGhlciA9IG1ha2VUeFJlcXVlc3QoeyBpbnRlbnQ6IHsgaW50ZW50VHlwZTogJ3Rva2VuQXBwcm92YWwnLCB0b2tlbk5hbWUsIGFtb3VudCB9IGFzIFBvcHVsYXRlZEludGVudCB9KTtcbiAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyhvdGhlciwgdW5kZWZpbmVkKS53cmFwUGFyYW1zLCB1bmRlZmluZWQpO1xuXG4gICAgICAgIGNvbnN0IG9iamVjdEFtb3VudCA9IG1ha2VUeFJlcXVlc3Qoe1xuICAgICAgICAgIGludGVudDoge1xuICAgICAgICAgICAgaW50ZW50VHlwZTogJ3dyYXBBcHByb3ZlJyxcbiAgICAgICAgICAgIHRva2VuTmFtZSxcbiAgICAgICAgICAgIGFtb3VudDogeyB2YWx1ZTogYW1vdW50LCBzeW1ib2w6IHRva2VuTmFtZSB9LFxuICAgICAgICAgIH0gYXMgUG9wdWxhdGVkSW50ZW50LFxuICAgICAgICB9KTtcbiAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyhvYmplY3RBbW91bnQsIHVuZGVmaW5lZCkud3JhcFBhcmFtcywgdW5kZWZpbmVkKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ2RvZXMgbm90IHRocm93IGZvciBleGVtcHQgdHlwZXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBmb3IgKGNvbnN0IHR4VHlwZSBvZiBbXG4gICAgICAgICdhY2NlbGVyYXRpb24nLFxuICAgICAgICAnY29uc29saWRhdGUnLFxuICAgICAgICAnY29udHJhY3RDYWxsJyxcbiAgICAgICAgJ2RlbGVnYXRlJyxcbiAgICAgICAgJ3N0YWtlJyxcbiAgICAgICAgJ2NyZWF0ZUFjY291bnQnLFxuICAgICAgICAncGxlZGdlJyxcbiAgICAgICAgJ2ltcG9ydCcsXG4gICAgICAgICdpbXBvcnR0b2MnLFxuICAgICAgICAnZGVhY3RpdmF0ZScsXG4gICAgICBdKSB7XG4gICAgICAgIGNvbnN0IHR4UmVxdWVzdCA9IG1ha2VUeFJlcXVlc3QoKTtcbiAgICAgICAgYXNzZXJ0LmRvZXNOb3RUaHJvdygoKSA9PiByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXModHhSZXF1ZXN0LCB7IHR5cGU6IHR4VHlwZSB9KSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpdCgnZG9lcyBub3QgcmVxdWlyZSByZWNpcGllbnRzIGZvciBDYW50b24gaW50ZW50cyByZXNvbHZlZCBmcm9tIHRoZSB0eCByZXF1ZXN0JywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgY2FudG9uSW50ZW50VHlwZXMgPSBbXG4gICAgICAgICd0cmFuc2ZlckFjY2VwdCcsXG4gICAgICAgICd0cmFuc2ZlclJlamVjdCcsXG4gICAgICAgICd0cmFuc2Zlck9mZmVyV2l0aGRyYXduJyxcbiAgICAgICAgJ2Nvc2lnbkRlbGVnYXRpb25BY2NlcHQnLFxuICAgICAgICAnYWxsb2NhdGlvbkFsbG9jYXRlJyxcbiAgICAgICAgJ2FsbG9jYXRpb25PZmZlcldpdGhkcmF3bicsXG4gICAgICAgICdjYW50b25Db21tYW5kJyxcbiAgICAgICAgJ2NhbnRvbkVuZEludmVzdG9yT25ib2FyZGluZ09mZmVyJyxcbiAgICAgICAgJ2NhbnRvbkVuZEludmVzdG9yT25ib2FyZGluZ0FjY2VwdCcsXG4gICAgICAgICdjYW50b25FbmRJbnZlc3Rvck9uYm9hcmRpbmdSZWplY3QnLFxuICAgICAgICAnY2FudG9uUGFydGljaXBhbnRPbmJvYXJkaW5nUmVxdWVzdCcsXG4gICAgICBdO1xuXG4gICAgICBmb3IgKGNvbnN0IGludGVudFR5cGUgb2YgY2FudG9uSW50ZW50VHlwZXMpIHtcbiAgICAgICAgY29uc3QgaW50ZW50OiBQb3B1bGF0ZWRJbnRlbnQgPSB7IGludGVudFR5cGUgfTtcbiAgICAgICAgY29uc3QgdHhSZXF1ZXN0ID0gbWFrZVR4UmVxdWVzdCh7IGludGVudCB9KTtcbiAgICAgICAgYXNzZXJ0LmRvZXNOb3RUaHJvdygoKSA9PiByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXModHhSZXF1ZXN0LCB1bmRlZmluZWQpKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGl0KCdkb2VzIG5vdCByZXF1aXJlIHJlY2lwaWVudHMgZm9yIGEgd3JhcEFwcHJvdmUgaW50ZW50JywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhSZXF1ZXN0ID0gbWFrZVR4UmVxdWVzdCh7XG4gICAgICAgIGludGVudDoge1xuICAgICAgICAgIGludGVudFR5cGU6ICd3cmFwQXBwcm92ZScsXG4gICAgICAgICAgdG9rZW5OYW1lOiAnaHRldGg6Y3VzZHQnLFxuICAgICAgICAgIGFtb3VudDogJzEwMDAwMDAnLFxuICAgICAgICB9IGFzIGFueSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXModHhSZXF1ZXN0LCB7fSk7XG5cbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQudHlwZSwgJ3dyYXBBcHByb3ZlJyk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LnJlY2lwaWVudHMsIHVuZGVmaW5lZCk7XG4gICAgfSk7XG5cbiAgICBpdCgnZG9lcyBub3QgcmVxdWlyZSByZWNpcGllbnRzIGZvciBhIHdyYXAgaW50ZW50JywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhSZXF1ZXN0ID0gbWFrZVR4UmVxdWVzdCh7XG4gICAgICAgIGludGVudDoge1xuICAgICAgICAgIGludGVudFR5cGU6ICd3cmFwJyxcbiAgICAgICAgICB0b2tlbk5hbWU6ICdodGV0aDpjdXNkdCcsXG4gICAgICAgICAgYW1vdW50OiAnMTAwMDAwMCcsXG4gICAgICAgIH0gYXMgYW55LFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyh0eFJlcXVlc3QsIHt9KTtcblxuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdC50eXBlLCAnd3JhcCcpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdC5yZWNpcGllbnRzLCB1bmRlZmluZWQpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2RvZXMgbm90IHJlcXVpcmUgcmVjaXBpZW50cyBmb3IgYW4gdW53cmFwIGludGVudCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4UmVxdWVzdCA9IG1ha2VUeFJlcXVlc3Qoe1xuICAgICAgICBpbnRlbnQ6IHtcbiAgICAgICAgICBpbnRlbnRUeXBlOiAndW53cmFwJyxcbiAgICAgICAgICB0b2tlbk5hbWU6ICdodGV0aDpjdXNkdCcsXG4gICAgICAgICAgYW1vdW50OiAnMTAwMDAwMCcsXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gcmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zKHR4UmVxdWVzdCwge30pO1xuXG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LnR5cGUsICd1bndyYXAnKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQucmVjaXBpZW50cywgdW5kZWZpbmVkKTtcbiAgICB9KTtcblxuICAgIGl0KCdkb2VzIG5vdCByZXF1aXJlIHJlY2lwaWVudHMgZm9yIGEgV1AtY3JlYXRlZCBmaW5hbGl6ZVVud3JhcCBpbnRlbnQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBXUCBjcmVhdGVzIHRoZSBmaW5hbGl6ZSB0eG5SZXEgYXQgUkVBRFlfVE9fRklOQUxJWkUgKENIQUxPLTExMzkpOyB0aGUgY2xpZW50XG4gICAgICAvLyBzaWducyBpdCDigJQgcmVxdWVzdElkL2NsZWFydGV4dEFtb3VudC9kZWNyeXB0aW9uUHJvb2YgbGl2ZSBpbiB0aGUgY2FsbGRhdGEsXG4gICAgICAvLyB2ZXJpZmljYXRpb24gZGVjb2RlcyB0aGVtIGZyb20gdHhIZXgsIGFuZCBubyBTREstbGV2ZWwgcmVjaXBpZW50cyBleGlzdC5cbiAgICAgIGNvbnN0IHR4UmVxdWVzdCA9IG1ha2VUeFJlcXVlc3Qoe1xuICAgICAgICBpbnRlbnQ6IHtcbiAgICAgICAgICBpbnRlbnRUeXBlOiAnZmluYWxpemVVbndyYXAnLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyh0eFJlcXVlc3QsIHt9KTtcblxuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdC50eXBlLCAnZmluYWxpemVVbndyYXAnKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQucmVjaXBpZW50cywgdW5kZWZpbmVkKTtcbiAgICB9KTtcblxuICAgIGl0KCdkb2VzIG5vdCB0aHJvdyBmb3IgQXZhbGFuY2hlIGNyb3NzLWNoYWluIGltcG9ydHMgcmVzb2x2ZWQgZnJvbSBpbnRlbnQuaW50ZW50VHlwZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIFAtY2hhaW4gYW5kIEMtY2hhaW4gaW1wb3J0IGludGVudHMgbGVnaXRpbWF0ZWx5IGNhcnJ5IG5vIHJlY2lwaWVudHMg4oCUXG4gICAgICAvLyB0aGUgd2FsbGV0IGltcG9ydHMgaXRzIG93biBVVFhPcyBhbmQgdGhlIGRlc3RpbmF0aW9uIGFkZHJlc3MgaXMgdGhlXG4gICAgICAvLyB3YWxsZXQgaXRzZWxmLiBUaGUgaW50ZW50VHlwZSBsaXZlcyBvbmx5IG9uIHRoZSBpbnRlbnQgKHR4UGFyYW1zLnR5cGVcbiAgICAgIC8vIGlzIHVuc2V0IG9uIHRoZSBNUEMgc2lnbmluZyBjYWxsKSBzbyB0aGUgZ3VhcmQgbXVzdCByZWFkIGl0IGZyb20gdGhlcmUuXG4gICAgICBmb3IgKGNvbnN0IGludGVudFR5cGUgb2YgWydpbXBvcnQnLCAnaW1wb3J0dG9jJ10pIHtcbiAgICAgICAgY29uc3QgdHhSZXF1ZXN0ID0gbWFrZVR4UmVxdWVzdCh7IGludGVudDogeyBpbnRlbnRUeXBlIH0gYXMgYW55IH0pO1xuICAgICAgICBhc3NlcnQuZG9lc05vdFRocm93KCgpID0+IHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyh0eFJlcXVlc3QsIHt9KSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnbmF0aXZlIHdyYXAvdW53cmFwIGludGVudHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBSZWdyZXNzaW9uIHRlc3QgZm9yIHRoZSBjYW1lbENhc2Uva2ViYWItY2FzZSBhc3ltbWV0cnkuIFRoaXMgc2V0IGlzIG1hdGNoZWRcbiAgICAgIC8vIGFnYWluc3QgQk9USCB0eFBhcmFtcy50eXBlIChidWlsZFBhcmFtcy50eXBlIOKAlCBjYW1lbENhc2UsIGZyb20gd2FsbGV0LnNlbmRNYW55KVxuICAgICAgLy8gYW5kIGludGVudC5pbnRlbnRUeXBlIChrZWJhYi1jYXNlLCBhcyBXUCBwZXJzaXN0cyBpdCkuIFNpZ25pbmcgcGF0aHMgdGhhdCBjYXJyeVxuICAgICAgLy8gbm8gdHhQYXJhbXMg4oCUIHBlbmRpbmdBcHByb3ZhbC5hcHByb3ZlKCkg4oaSIHJlY3JlYXRlVHhSZXF1ZXN0KCkg4oaSIHNpZ25UeFJlcXVlc3QoKVxuICAgICAgLy8g4oCUIG9ubHkgZXZlciBzZWUgdGhlIGtlYmFiLWNhc2Ugc3BlbGxpbmcsIHNvIGJvdGggbXVzdCBiZSByZWdpc3RlcmVkLlxuICAgICAgaXQoJ2RvZXMgbm90IHRocm93IHdoZW4gdGhlIHR5cGUgY29tZXMgZnJvbSBidWlsZFBhcmFtcy50eXBlIChjYW1lbENhc2UpJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBmb3IgKGNvbnN0IHR4VHlwZSBvZiBbJ3dyYXBOYXRpdmUnLCAndW53cmFwTmF0aXZlJ10pIHtcbiAgICAgICAgICBjb25zdCB0eFJlcXVlc3QgPSBtYWtlVHhSZXF1ZXN0KCk7XG4gICAgICAgICAgYXNzZXJ0LmRvZXNOb3RUaHJvdygoKSA9PiByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXModHhSZXF1ZXN0LCB7IHR5cGU6IHR4VHlwZSB9KSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBpdCgnZG9lcyBub3QgdGhyb3cgd2hlbiB0aGUgdHlwZSBjb21lcyBvbmx5IGZyb20gaW50ZW50LmludGVudFR5cGUgKGtlYmFiLWNhc2UpJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBmb3IgKGNvbnN0IGludGVudFR5cGUgb2YgWyd3cmFwLW5hdGl2ZScsICd1bndyYXAtbmF0aXZlJ10pIHtcbiAgICAgICAgICBjb25zdCB0eFJlcXVlc3QgPSBtYWtlVHhSZXF1ZXN0KHsgaW50ZW50OiB7IGludGVudFR5cGUgfSBhcyBhbnkgfSk7XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gcmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zKHR4UmVxdWVzdCwge30pO1xuICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQudHlwZSwgaW50ZW50VHlwZSk7XG4gICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdC5yZWNpcGllbnRzLCB1bmRlZmluZWQpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2RvZXMgbm90IHRocm93IHdoZW4gdHhQYXJhbXMgaXMgdW5kZWZpbmVkIGVudGlyZWx5IChwZW5kaW5nQXBwcm92YWwgcmUtc2lnbiBwYXRoKScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZm9yIChjb25zdCBpbnRlbnRUeXBlIG9mIFsnd3JhcC1uYXRpdmUnLCAndW53cmFwLW5hdGl2ZSddKSB7XG4gICAgICAgICAgY29uc3QgdHhSZXF1ZXN0ID0gbWFrZVR4UmVxdWVzdCh7IGludGVudDogeyBpbnRlbnRUeXBlLCB2YXVsdElkOiAndmx0LXdldGgtMScsIGFtb3VudDogJzEwJyB9IGFzIGFueSB9KTtcbiAgICAgICAgICBhc3NlcnQuZG9lc05vdFRocm93KCgpID0+IHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyh0eFJlcXVlc3QsIHVuZGVmaW5lZCkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdkb2VzIG5vdCB0aHJvdyB3aGVuIGJ1aWxkUGFyYW1zLnR5cGUgaXMgUGFzY2FsQ2FzZSBidXQgaW50ZW50LmludGVudFR5cGUgaXMgbG93ZXJjYXNlJywgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gc2lnblRyYW5zYWN0aW9uVHNzIHBhc3NlcyB0eFByZWJ1aWxkLmJ1aWxkUGFyYW1zIGFzIHR4UGFyYW1zLiBQcmVidWlsZCB1c2VzXG4gICAgICAvLyB0eXBlOiAnSW1wb3J0JyB3aGlsZSBXUCBzdG9yZXMgaW50ZW50VHlwZTogJ2ltcG9ydCcgb24gdGhlIHR4UmVxdWVzdC5cbiAgICAgIGNvbnN0IHR4UmVxdWVzdCA9IG1ha2VUeFJlcXVlc3QoeyBpbnRlbnQ6IHsgaW50ZW50VHlwZTogJ2ltcG9ydCcsIHJlY2lwaWVudHM6IFtdIH0gYXMgYW55IH0pO1xuICAgICAgYXNzZXJ0LmRvZXNOb3RUaHJvdygoKSA9PiByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXModHhSZXF1ZXN0LCB7IHR5cGU6ICdJbXBvcnQnLCByZWNpcGllbnRzOiBbXSB9KSk7XG4gICAgfSk7XG5cbiAgICBpdCgndGhyb3dzIEludmFsaWRUcmFuc2FjdGlvbkVycm9yIGZvciB1bmtub3duIHR5cGVzIHdpdGggbm8gcmVjaXBpZW50cycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4UmVxdWVzdCA9IG1ha2VUeFJlcXVlc3QoKTtcbiAgICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAgICgpID0+IHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyh0eFJlcXVlc3QsIHsgdHlwZTogJ3BheW1lbnQnIH0pLFxuICAgICAgICBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcixcbiAgICAgICAgJ3Nob3VsZCB0aHJvdyBmb3IgcGF5bWVudCB0eXBlIHdpdGggbm8gcmVjaXBpZW50cydcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgndGhyb3dzIHdoZW4gdHhQYXJhbXMgaXMgdW5kZWZpbmVkIGFuZCBubyBpbnRlbnQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eFJlcXVlc3QgPSBtYWtlVHhSZXF1ZXN0KCk7XG4gICAgICBhc3NlcnQudGhyb3dzKCgpID0+IHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyh0eFJlcXVlc3QsIHVuZGVmaW5lZCksIEludmFsaWRUcmFuc2FjdGlvbkVycm9yKTtcbiAgICB9KTtcblxuICAgIGl0KCdkb2VzIG5vdCB0aHJvdyB3aGVuIGludGVudCBoYXMgc3Rha2luZ1JlcXVlc3RJZCAoc3Rha2luZyBieXBhc3MpJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhSZXF1ZXN0ID0gbWFrZVR4UmVxdWVzdCh7XG4gICAgICAgIGludGVudDogeyBpbnRlbnRUeXBlOiAnZGVsZWdhdGUnLCBzdGFraW5nUmVxdWVzdElkOiAnc3Rha2luZy1yZXEtMTIzJyB9IGFzIGFueSxcbiAgICAgIH0pO1xuICAgICAgYXNzZXJ0LmRvZXNOb3RUaHJvdygoKSA9PiByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXModHhSZXF1ZXN0LCB7fSkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Byb3BhZ2F0ZXMgc3Rha2luZ1JlcXVlc3RJZCBmcm9tIGludGVudCBpbnRvIGVmZmVjdGl2ZVR4UGFyYW1zJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhSZXF1ZXN0ID0gbWFrZVR4UmVxdWVzdCh7XG4gICAgICAgIGludGVudDogeyBpbnRlbnRUeXBlOiAnZGVsZWdhdGUnLCBzdGFraW5nUmVxdWVzdElkOiAnc3Rha2luZy1yZXEtNDU2JyB9IGFzIGFueSxcbiAgICAgIH0pO1xuICAgICAgY29uc3QgcmVzdWx0ID0gcmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zKHR4UmVxdWVzdCwge30pO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdC5zdGFraW5nUmVxdWVzdElkLCAnc3Rha2luZy1yZXEtNDU2Jyk7XG4gICAgfSk7XG5cbiAgICBpdCgnZG9lcyBub3Qgb3ZlcndyaXRlIGV4aXN0aW5nIHN0YWtpbmdSZXF1ZXN0SWQgaW4gdHhQYXJhbXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eFJlcXVlc3QgPSBtYWtlVHhSZXF1ZXN0KHtcbiAgICAgICAgaW50ZW50OiB7IGludGVudFR5cGU6ICdkZWxlZ2F0ZScsIHN0YWtpbmdSZXF1ZXN0SWQ6ICdmcm9tLWludGVudCcgfSBhcyBhbnksXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyh0eFJlcXVlc3QsIHsgc3Rha2luZ1JlcXVlc3RJZDogJ2Zyb20tY2FsbGVyJyB9KTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQuc3Rha2luZ1JlcXVlc3RJZCwgJ2Zyb20tY2FsbGVyJyk7XG4gICAgfSk7XG5cbiAgICBpdCgncHJlZmVycyB0eFBhcmFtcy5yZWNpcGllbnRzIG92ZXIgaW50ZW50LnJlY2lwaWVudHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eFJlcXVlc3QgPSBtYWtlVHhSZXF1ZXN0KHtcbiAgICAgICAgaW50ZW50OiB7XG4gICAgICAgICAgaW50ZW50VHlwZTogJ3BheW1lbnQnLFxuICAgICAgICAgIHJlY2lwaWVudHM6IFt7IGFkZHJlc3M6IHsgYWRkcmVzczogJzB4aW50ZW50JyB9LCBhbW91bnQ6IHsgdmFsdWU6ICc5OTknLCBzeW1ib2w6ICdldGgnIH0gfV0sXG4gICAgICAgIH0gYXMgYW55LFxuICAgICAgfSk7XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IHsgcmVjaXBpZW50czogW3sgYWRkcmVzczogJzB4Y2FsbGVyJywgYW1vdW50OiAnMTAwJyB9XSB9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gcmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zKHR4UmVxdWVzdCwgdHhQYXJhbXMpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdC5yZWNpcGllbnRzPy5bMF0uYWRkcmVzcywgJzB4Y2FsbGVyJyk7XG4gICAgfSk7XG5cbiAgICBpdCgncHJlc2VydmVzIGRhdGEgZmllbGQgZnJvbSBpbnRlbnQgcmVjaXBpZW50cycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4UmVxdWVzdCA9IG1ha2VUeFJlcXVlc3Qoe1xuICAgICAgICBpbnRlbnQ6IHtcbiAgICAgICAgICBpbnRlbnRUeXBlOiAncGF5bWVudCcsXG4gICAgICAgICAgcmVjaXBpZW50czogW3sgYWRkcmVzczogeyBhZGRyZXNzOiAnMHhhYmMnIH0sIGFtb3VudDogeyB2YWx1ZTogJzEwMCcsIHN5bWJvbDogJ2V0aCcgfSwgZGF0YTogJzB4ZGVhZGJlZWYnIH1dLFxuICAgICAgICB9IGFzIGFueSxcbiAgICAgIH0pO1xuICAgICAgY29uc3QgcmVzdWx0ID0gcmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zKHR4UmVxdWVzdCwge30pO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdC5yZWNpcGllbnRzPy5bMF0uZGF0YSwgJzB4ZGVhZGJlZWYnKTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCd0b2tlbk5hbWUgcHJlc2VydmF0aW9uIHJlZ3Jlc3Npb24gdGVzdHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpdCgncHJlc2VydmVzIHRva2VuTmFtZSBmcm9tIGFtb3VudC5zeW1ib2wgd2hlbiBpdCBkaWZmZXJzIGZyb20gY2hhaW5OYW1lJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCB0eFJlcXVlc3QgPSBtYWtlVHhSZXF1ZXN0KHtcbiAgICAgICAgICBpbnRlbnQ6IHtcbiAgICAgICAgICAgIGludGVudFR5cGU6ICdwYXltZW50JyxcbiAgICAgICAgICAgIHJlY2lwaWVudHM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFkZHJlc3M6IHsgYWRkcmVzczogJ1VzZXJXYWxsZXRBZGRyZXNzMTExMTExMTExMTExMTExMTExMTExMTExMTExJyB9LFxuICAgICAgICAgICAgICAgIGFtb3VudDogeyB2YWx1ZTogJzEwMDAwMDAnLCBzeW1ib2w6ICd0c29sOnVzZGMnIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0gYXMgYW55LFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gcmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zKHR4UmVxdWVzdCwge30sICd0c29sJyk7XG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQucmVjaXBpZW50cz8ubGVuZ3RoLCAxKTtcbiAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdC5yZWNpcGllbnRzPy5bMF0udG9rZW5OYW1lLCAndHNvbDp1c2RjJyk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2RvZXMgTk9UIHNldCB0b2tlbk5hbWUgd2hlbiBzeW1ib2wgZXF1YWxzIGNoYWluTmFtZSAobmF0aXZlIFNPTCB0cmFuc2ZlciknLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHR4UmVxdWVzdCA9IG1ha2VUeFJlcXVlc3Qoe1xuICAgICAgICAgIGludGVudDoge1xuICAgICAgICAgICAgaW50ZW50VHlwZTogJ3BheW1lbnQnLFxuICAgICAgICAgICAgcmVjaXBpZW50czogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYWRkcmVzczogeyBhZGRyZXNzOiAnUmVjaXBpZW50QWRkcmVzczExMTExMTExMTExMTExMTExMTExMTExMTExMScgfSxcbiAgICAgICAgICAgICAgICBhbW91bnQ6IHsgdmFsdWU6ICc1MDAwMDAwMDAwJywgc3ltYm9sOiAndHNvbCcgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSBhcyBhbnksXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCByZXN1bHQgPSByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXModHhSZXF1ZXN0LCB7fSwgJ3Rzb2wnKTtcbiAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdC5yZWNpcGllbnRzPy5bMF0udG9rZW5OYW1lLCB1bmRlZmluZWQpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdwcmVmZXJzIHRva2VuRGF0YS50b2tlbk5hbWUgb3ZlciBhbW91bnQuc3ltYm9sICh1c2VzIGRpc3RpbmN0IHZhbHVlcyB0byB2ZXJpZnkpJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCB0eFJlcXVlc3QgPSBtYWtlVHhSZXF1ZXN0KHtcbiAgICAgICAgICBpbnRlbnQ6IHtcbiAgICAgICAgICAgIGludGVudFR5cGU6ICdwYXltZW50JyxcbiAgICAgICAgICAgIHJlY2lwaWVudHM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFkZHJlc3M6IHsgYWRkcmVzczogJ1JlY2lwaWVudEFkZHJlc3MxMTExMTExMTExMTExMTExMTExMTExMTExMTEnIH0sXG4gICAgICAgICAgICAgICAgYW1vdW50OiB7IHZhbHVlOiAnNTAwMDAwJywgc3ltYm9sOiAndHNvbDp1c2RjLWFsdCcgfSxcbiAgICAgICAgICAgICAgICB0b2tlbkRhdGE6IHsgdG9rZW5UeXBlOiAnZnVuZ2libGUnLCB0b2tlblF1YW50aXR5OiAnNTAwMDAwJywgdG9rZW5OYW1lOiAnY2Fub25pY2FsLXRva2VuLW5hbWUnIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0gYXMgYW55LFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gcmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zKHR4UmVxdWVzdCwge30sICd0c29sJyk7XG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQucmVjaXBpZW50cz8uWzBdLnRva2VuTmFtZSwgJ2Nhbm9uaWNhbC10b2tlbi1uYW1lJyk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2ZhbGxzIGJhY2sgdG8gYW1vdW50LnN5bWJvbCB3aGVuIHRva2VuRGF0YS50b2tlbk5hbWUgaXMgYWJzZW50JywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCB0eFJlcXVlc3QgPSBtYWtlVHhSZXF1ZXN0KHtcbiAgICAgICAgICBpbnRlbnQ6IHtcbiAgICAgICAgICAgIGludGVudFR5cGU6ICdwYXltZW50JyxcbiAgICAgICAgICAgIHJlY2lwaWVudHM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFkZHJlc3M6IHsgYWRkcmVzczogJ1JlY2lwaWVudEFkZHJlc3MxMTExMTExMTExMTExMTExMTExMTExMTExMTEnIH0sXG4gICAgICAgICAgICAgICAgYW1vdW50OiB7IHZhbHVlOiAnMjAwMDAwJywgc3ltYm9sOiAnc29sOnVzZGMnIH0sXG4gICAgICAgICAgICAgICAgdG9rZW5EYXRhOiB7IHRva2VuVHlwZTogJ2Z1bmdpYmxlJywgdG9rZW5RdWFudGl0eTogJzIwMDAwMCcgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSBhcyBhbnksXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCByZXN1bHQgPSByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXModHhSZXF1ZXN0LCB7fSwgJ3NvbCcpO1xuICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LnJlY2lwaWVudHM/LlswXS50b2tlbk5hbWUsICdzb2w6dXNkYycpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdmYWxscyBiYWNrIHRvIGFtb3VudC5zeW1ib2wgd2hlbiB0b2tlbkRhdGEudG9rZW5OYW1lIGlzIGVtcHR5IHN0cmluZycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgdHhSZXF1ZXN0ID0gbWFrZVR4UmVxdWVzdCh7XG4gICAgICAgICAgaW50ZW50OiB7XG4gICAgICAgICAgICBpbnRlbnRUeXBlOiAncGF5bWVudCcsXG4gICAgICAgICAgICByZWNpcGllbnRzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzOiB7IGFkZHJlc3M6ICdSZWNpcGllbnRBZGRyZXNzMTExMTExMTExMTExMTExMTExMTExMTExMTExJyB9LFxuICAgICAgICAgICAgICAgIGFtb3VudDogeyB2YWx1ZTogJzEwMDAwMCcsIHN5bWJvbDogJ3Rzb2w6dXNkYycgfSxcbiAgICAgICAgICAgICAgICB0b2tlbkRhdGE6IHsgdG9rZW5UeXBlOiAnZnVuZ2libGUnLCB0b2tlblF1YW50aXR5OiAnMTAwMDAwJywgdG9rZW5OYW1lOiAnJyB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9IGFzIGFueSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyh0eFJlcXVlc3QsIHt9LCAndHNvbCcpO1xuICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LnJlY2lwaWVudHM/LlswXS50b2tlbk5hbWUsICd0c29sOnVzZGMnKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnZG9lcyBOT1Qgc2V0IHRva2VuTmFtZSB3aGVuIGNoYWluTmFtZSBpcyBhYnNlbnQgKGxlZ2FjeSBFQ0RTQSBjYWxsZXJzLCBubyB0b2tlbkRhdGEpJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCB0eFJlcXVlc3QgPSBtYWtlVHhSZXF1ZXN0KHtcbiAgICAgICAgICBpbnRlbnQ6IHtcbiAgICAgICAgICAgIGludGVudFR5cGU6ICdwYXltZW50JyxcbiAgICAgICAgICAgIHJlY2lwaWVudHM6IFt7IGFkZHJlc3M6IHsgYWRkcmVzczogJzB4YWJjJyB9LCBhbW91bnQ6IHsgdmFsdWU6ICcxMDAnLCBzeW1ib2w6ICdldGgnIH0gfV0sXG4gICAgICAgICAgfSBhcyBhbnksXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCByZXN1bHQgPSByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXModHhSZXF1ZXN0LCB7fSk7XG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQucmVjaXBpZW50cz8uWzBdLnRva2VuTmFtZSwgdW5kZWZpbmVkKTtcbiAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdC5yZWNpcGllbnRzPy5bMF0uYWRkcmVzcywgJzB4YWJjJyk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3ByZXNlcnZlcyB0b2tlbkRhdGEudG9rZW5OYW1lIHdoZW4gY2hhaW5OYW1lIGlzIGFic2VudCAobGVnYWN5IEVDRFNBIHdpdGggdG9rZW5EYXRhKScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgdHhSZXF1ZXN0ID0gbWFrZVR4UmVxdWVzdCh7XG4gICAgICAgICAgaW50ZW50OiB7XG4gICAgICAgICAgICBpbnRlbnRUeXBlOiAndHJhbnNmZXJUb2tlbicsXG4gICAgICAgICAgICByZWNpcGllbnRzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzOiB7IGFkZHJlc3M6ICcweGFiYycgfSxcbiAgICAgICAgICAgICAgICBhbW91bnQ6IHsgdmFsdWU6ICcxMDAwJywgc3ltYm9sOiAnZXJjMjA6dXNkYycgfSxcbiAgICAgICAgICAgICAgICB0b2tlbkRhdGE6IHsgdG9rZW5UeXBlOiAnZnVuZ2libGUnLCB0b2tlblF1YW50aXR5OiAnMTAwMCcsIHRva2VuTmFtZTogJ2V0aDp1c2RjJyB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9IGFzIGFueSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyh0eFJlcXVlc3QsIHt9KTtcbiAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdC5yZWNpcGllbnRzPy5bMF0udG9rZW5OYW1lLCAnZXRoOnVzZGMnKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2VuZE1hbnkgdHNvbDp1c2RjOiBkb2VzIG5vdCB0aHJvdyBhbmQgcHJlc2VydmVzIHRva2VuTmFtZSBpbiBmdWxsIHJvdW5kLXRyaXAnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHR4UmVxdWVzdCA9IG1ha2VUeFJlcXVlc3Qoe1xuICAgICAgICAgIGludGVudDoge1xuICAgICAgICAgICAgaW50ZW50VHlwZTogJ3BheW1lbnQnLFxuICAgICAgICAgICAgcmVjaXBpZW50czogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYWRkcmVzczogeyBhZGRyZXNzOiAnU29sVXNlcldhbGxldDExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEnIH0sXG4gICAgICAgICAgICAgICAgYW1vdW50OiB7IHZhbHVlOiAnMjAwMDAwMCcsIHN5bWJvbDogJ3Rzb2w6dXNkYycgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFkZHJlc3M6IHsgYWRkcmVzczogJ1NvbFVzZXJXYWxsZXQyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyJyB9LFxuICAgICAgICAgICAgICAgIGFtb3VudDogeyB2YWx1ZTogJzMwMDAwMDAnLCBzeW1ib2w6ICd0c29sOnVzZGMnIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0gYXMgYW55LFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gcmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zKHR4UmVxdWVzdCwge30sICd0c29sJyk7XG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQucmVjaXBpZW50cz8ubGVuZ3RoLCAyKTtcbiAgICAgICAgcmVzdWx0LnJlY2lwaWVudHMhLmZvckVhY2goKHIpID0+IGFzc2VydC5zdHJpY3RFcXVhbChyLnRva2VuTmFtZSwgJ3Rzb2w6dXNkYycpKTtcbiAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdC5yZWNpcGllbnRzIVswXS5hbW91bnQsICcyMDAwMDAwJyk7XG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQucmVjaXBpZW50cyFbMV0uYW1vdW50LCAnMzAwMDAwMCcpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdoYW5kbGVzIG1peGVkIG5hdGl2ZSArIHRva2VuIHJlY2lwaWVudHMgY29ycmVjdGx5JywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCB0eFJlcXVlc3QgPSBtYWtlVHhSZXF1ZXN0KHtcbiAgICAgICAgICBpbnRlbnQ6IHtcbiAgICAgICAgICAgIGludGVudFR5cGU6ICdwYXltZW50JyxcbiAgICAgICAgICAgIHJlY2lwaWVudHM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFkZHJlc3M6IHsgYWRkcmVzczogJ1NvbE5hdGl2ZTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMScgfSxcbiAgICAgICAgICAgICAgICBhbW91bnQ6IHsgdmFsdWU6ICcxMDAwMDAwMDAwJywgc3ltYm9sOiAndHNvbCcgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFkZHJlc3M6IHsgYWRkcmVzczogJ1NvbFRva2VuMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExJyB9LFxuICAgICAgICAgICAgICAgIGFtb3VudDogeyB2YWx1ZTogJzUwMDAwMCcsIHN5bWJvbDogJ3Rzb2w6dXNkYycgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSBhcyBhbnksXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCByZXN1bHQgPSByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXModHhSZXF1ZXN0LCB7fSwgJ3Rzb2wnKTtcbiAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdC5yZWNpcGllbnRzIVswXS50b2tlbk5hbWUsIHVuZGVmaW5lZCk7XG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQucmVjaXBpZW50cyFbMV0udG9rZW5OYW1lLCAndHNvbDp1c2RjJyk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdTT0wgbm8tcmVjaXBpZW50IGludGVudCB0eXBlcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGl0KCdkb2VzIG5vdCB0aHJvdyBmb3IgXCJkZWxlZ2F0ZVwiIChzb2xEZWxlZ2F0ZUludGVudCknLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHR4UmVxdWVzdCA9IG1ha2VUeFJlcXVlc3QoeyBpbnRlbnQ6IHsgaW50ZW50VHlwZTogJ2RlbGVnYXRlJyB9IGFzIGFueSB9KTtcbiAgICAgICAgYXNzZXJ0LmRvZXNOb3RUaHJvdygoKSA9PiByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXModHhSZXF1ZXN0LCB7fSkpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdkb2VzIG5vdCB0aHJvdyBmb3IgXCJkZWFjdGl2YXRlXCIgKHNvbERlYWN0aXZhdGVJbnRlbnQpJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCB0eFJlcXVlc3QgPSBtYWtlVHhSZXF1ZXN0KHsgaW50ZW50OiB7IGludGVudFR5cGU6ICdkZWFjdGl2YXRlJyB9IGFzIGFueSB9KTtcbiAgICAgICAgYXNzZXJ0LmRvZXNOb3RUaHJvdygoKSA9PiByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXModHhSZXF1ZXN0LCB7fSkpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdkb2VzIG5vdCB0aHJvdyBmb3IgXCJhdXRob3JpemVcIiAoc29sQXV0aG9yaXplSW50ZW50KScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgdHhSZXF1ZXN0ID0gbWFrZVR4UmVxdWVzdCh7IGludGVudDogeyBpbnRlbnRUeXBlOiAnYXV0aG9yaXplJyB9IGFzIGFueSB9KTtcbiAgICAgICAgYXNzZXJ0LmRvZXNOb3RUaHJvdygoKSA9PiByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXModHhSZXF1ZXN0LCB7fSkpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCd0aHJvd3MgZm9yIHN0YWtpbmdBdXRob3JpemUg4oCUIG11c3QgYmUgdmFsaWRhdGVkIGF0IGNvaW4gbGF5ZXInLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHR4UmVxdWVzdCA9IG1ha2VUeFJlcXVlc3QoeyBpbnRlbnQ6IHsgaW50ZW50VHlwZTogJ3N0YWtpbmdBdXRob3JpemUnIH0gYXMgYW55IH0pO1xuICAgICAgICBhc3NlcnQudGhyb3dzKCgpID0+IHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyh0eFJlcXVlc3QsIHt9KSwgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -135,6 +135,19 @@ describe('BuildParams', function () {
135
135
  });
136
136
  assert.ok(BuildParams_1.buildParamKeys.includes('unwrapParams'), 'buildParamKeys must include unwrapParams');
137
137
  });
138
+ it('should whitelist lowThreshold while stripping unknown params', function () {
139
+ // XLM accountConfig builds carry lowThreshold on /tx/build; without this key the client-side
140
+ // pick in preBuildTransaction strips it before the platform can pin it to exactly 2.
141
+ assert.deepStrictEqual(BuildParams_1.BuildParams.encode({
142
+ type: 'accountConfig',
143
+ lowThreshold: 2,
144
+ unknownField: 'should be stripped',
145
+ }), {
146
+ type: 'accountConfig',
147
+ lowThreshold: 2,
148
+ });
149
+ assert.ok(BuildParams_1.buildParamKeys.includes('lowThreshold'), 'buildParamKeys must include lowThreshold');
150
+ });
138
151
  it('AttestationPayload codec requires all four fields', function () {
139
152
  const valid = {
140
153
  signature: 'sig',
@@ -151,4 +164,4 @@ describe('BuildParams', function () {
151
164
  assert.strictEqual(BuildParams_1.SbtcWithdrawParams.is({ amount: 100000 }), false); // must be string, not number
152
165
  });
153
166
  });
154
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQnVpbGRQYXJhbXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvYml0Z28vd2FsbGV0L0J1aWxkUGFyYW1zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0NBQWlDO0FBQ2pDLDBFQUtrRDtBQUVsRCxRQUFRLENBQUMsYUFBYSxFQUFFO0lBQ3RCLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRTtRQUNuQixNQUFNLENBQUMsZUFBZSxDQUNwQix5QkFBVyxDQUFDLE1BQU0sQ0FBQztZQUNqQixXQUFXLEVBQUUsTUFBTTtZQUNuQixRQUFRLEVBQUUsTUFBTTtZQUNoQixrQkFBa0IsRUFBRSxJQUFJO1lBQ3hCLFVBQVUsRUFBRTtnQkFDVjtvQkFDRSxNQUFNLEVBQUUsT0FBTztvQkFDZixPQUFPLEVBQUUscUNBQXFDO2lCQUMvQzthQUNGO1NBQ0ssQ0FBQyxFQUNUO1lBQ0UsV0FBVyxFQUFFLE1BQU07WUFDbkIsUUFBUSxFQUFFLE1BQU07WUFDaEIsa0JBQWtCLEVBQUUsSUFBSTtZQUN4QixVQUFVLEVBQUU7Z0JBQ1Y7b0JBQ0UsTUFBTSxFQUFFLE9BQU87b0JBQ2YsT0FBTyxFQUFFLHFDQUFxQztpQkFDL0M7YUFDRjtTQUNGLENBQ0YsQ0FBQztRQUVGLE1BQU0sQ0FBQyxlQUFlLENBQ3BCLHlCQUFXLENBQUMsTUFBTSxDQUFDO1lBQ2pCLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQztTQUNYLENBQUMsRUFDVDtZQUNFLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQztTQUNsQixDQUNGLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxpQ0FBaUMsRUFBRTtRQUNwQyxNQUFNLGNBQWMsR0FBRztZQUNyQixJQUFJLEVBQUU7Z0JBQ0osTUFBTSxFQUFFLE1BQU07Z0JBQ2QsZUFBZSxFQUFFLDJDQUEyQztnQkFDNUQsTUFBTSxF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IGFzIGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHtcbiAgQnVpbGRQYXJhbXMsXG4gIGJ1aWxkUGFyYW1LZXlzLFxuICBBdHRlc3RhdGlvblBheWxvYWQsXG4gIFNidGNXaXRoZHJhd1BhcmFtcyxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3dhbGxldC9CdWlsZFBhcmFtcyc7XG5cbmRlc2NyaWJlKCdCdWlsZFBhcmFtcycsIGZ1bmN0aW9uICgpIHtcbiAgaXQoJ2VuZm9yY2VzIGNvZGVjJywgZnVuY3Rpb24gKCkge1xuICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoXG4gICAgICBCdWlsZFBhcmFtcy5lbmNvZGUoe1xuICAgICAgICBhZGRyZXNzVHlwZTogJ3Ayc2gnLFxuICAgICAgICB0eEZvcm1hdDogJ3BzYnQnLFxuICAgICAgICBpc1JlcGxhY2VhYmxlQnlGZWU6IHRydWUsXG4gICAgICAgIHJlY2lwaWVudHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhbW91bnQ6ICcxMDAwMCcsXG4gICAgICAgICAgICBhZGRyZXNzOiAnMk45RWdvOUtpZGlaUjh0TVA4Mmc2UmFnZ1F0Y2JSOXpOekgnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9IGFzIGFueSksXG4gICAgICB7XG4gICAgICAgIGFkZHJlc3NUeXBlOiAncDJzaCcsXG4gICAgICAgIHR4Rm9ybWF0OiAncHNidCcsXG4gICAgICAgIGlzUmVwbGFjZWFibGVCeUZlZTogdHJ1ZSxcbiAgICAgICAgcmVjaXBpZW50czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFtb3VudDogJzEwMDAwJyxcbiAgICAgICAgICAgIGFkZHJlc3M6ICcyTjlFZ285S2lkaVpSOHRNUDgyZzZSYWdnUXRjYlI5ek56SCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH1cbiAgICApO1xuXG4gICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChcbiAgICAgIEJ1aWxkUGFyYW1zLmVuY29kZSh7XG4gICAgICAgIHJiZlR4SWRzOiBbJ3R4MSddLFxuICAgICAgfSBhcyBhbnkpLFxuICAgICAge1xuICAgICAgICByYmZUeElkczogWyd0eDEnXSxcbiAgICAgIH1cbiAgICApO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHdoaXRlbGlzdCBicmlkZ2luZ1BhcmFtcycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBicmlkZ2luZ1BhcmFtcyA9IHtcbiAgICAgIHNidGM6IHtcbiAgICAgICAgYW1vdW50OiAxMDAwMDAsXG4gICAgICAgIHN0YWNrc1JlY2lwaWVudDogJ1NQMko2Wlk0OEdWMUVaNVYyVjVSQjlNUDY2U1c4NlBZS0tOUlY5RUo3JyxcbiAgICAgICAgbWF4RmVlOiA1MDAwLFxuICAgICAgICBsb2NrVGltZTogMTQ0LFxuICAgICAgfSxcbiAgICB9O1xuICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoXG4gICAgICBCdWlsZFBhcmFtcy5lbmNvZGUoe1xuICAgICAgICB0eXBlOiAnYnJpZGdpbmcnLFxuICAgICAgICB0eEZvcm1hdDogJ3BzYnQnLFxuICAgICAgICByZWNpcGllbnRzOiBbXSxcbiAgICAgICAgYnJpZGdpbmdQYXJhbXMsXG4gICAgICB9IGFzIGFueSksXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdicmlkZ2luZycsXG4gICAgICAgIHR4Rm9ybWF0OiAncHNidCcsXG4gICAgICAgIHJlY2lwaWVudHM6IFtdLFxuICAgICAgICBicmlkZ2luZ1BhcmFtcyxcbiAgICAgIH1cbiAgICApO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHN0cmlwIHVua25vd24gcGFyYW1zIHdoaWxlIGtlZXBpbmcgYnJpZGdpbmdQYXJhbXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChcbiAgICAgIEJ1aWxkUGFyYW1zLmVuY29kZSh7XG4gICAgICAgIGJyaWRnaW5nUGFyYW1zOiB7IHNidGM6IHsgYW1vdW50OiA1MDAwMCwgc3RhY2tzUmVjaXBpZW50OiAnU1AxMjMnLCBtYXhGZWU6IDEwMDAsIGxvY2tUaW1lOiAxMDAgfSB9LFxuICAgICAgICB1bmtub3duRmllbGQ6ICdzaG91bGQgYmUgc3RyaXBwZWQnLFxuICAgICAgfSBhcyBhbnkpLFxuICAgICAge1xuICAgICAgICBicmlkZ2luZ1BhcmFtczogeyBzYnRjOiB7IGFtb3VudDogNTAwMDAsIHN0YWNrc1JlY2lwaWVudDogJ1NQMTIzJywgbWF4RmVlOiAxMDAwLCBsb2NrVGltZTogMTAwIH0gfSxcbiAgICAgIH1cbiAgICApO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHdoaXRlbGlzdCBhdHRlc3RhdGlvbiAoV0NOLTUzOSkgd2hpbGUgc3RyaXBwaW5nIHVucmVsYXRlZCB1bmtub3duIHBhcmFtcycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBhdHRlc3RhdGlvbiA9IHtcbiAgICAgIHNpZ25hdHVyZTogJ3NpZycsXG4gICAgICBjcmVkZW50aWFsSWQ6ICdjcmVkLWlkJyxcbiAgICAgIGNsaWVudERhdGFKU09OOiAnY2xpZW50LWRhdGEnLFxuICAgICAgYXV0aGVudGljYXRvckRhdGE6ICdhdXRoLWRhdGEnLFxuICAgIH07XG4gICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChcbiAgICAgIEJ1aWxkUGFyYW1zLmVuY29kZSh7XG4gICAgICAgIHJlY2lwaWVudHM6IFt7IGFtb3VudDogJzEwMDAwJywgYWRkcmVzczogJzJOOUVnbzlLaWRpWlI4dE1QODJnNlJhZ2dRdGNiUjl6TnpIJyB9XSxcbiAgICAgICAgYXR0ZXN0YXRpb24sXG4gICAgICAgIHVua25vd25GaWVsZDogJ3Nob3VsZCBiZSBzdHJpcHBlZCcsXG4gICAgICB9IGFzIGFueSksXG4gICAgICB7XG4gICAgICAgIHJlY2lwaWVudHM6IFt7IGFtb3VudDogJzEwMDAwJywgYWRkcmVzczogJzJOOUVnbzlLaWRpWlI4dE1QODJnNlJhZ2dRdGNiUjl6TnpIJyB9XSxcbiAgICAgICAgYXR0ZXN0YXRpb24sXG4gICAgICB9XG4gICAgKTtcbiAgICBhc3NlcnQub2soYnVpbGRQYXJhbUtleXMuaW5jbHVkZXMoJ2F0dGVzdGF0aW9uJyksICdidWlsZFBhcmFtS2V5cyBtdXN0IGluY2x1ZGUgYXR0ZXN0YXRpb24nKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB3aGl0ZWxpc3Qgd3JhcFBhcmFtcyB3aGlsZSBzdHJpcHBpbmcgdW5rbm93biBwYXJhbXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3Qgd3JhcFBhcmFtcyA9IHsgdG9rZW5OYW1lOiAnaHRldGg6Y3VzZHQnLCBhbW91bnQ6ICcxMDAwMDAwJyB9O1xuICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoXG4gICAgICBCdWlsZFBhcmFtcy5lbmNvZGUoe1xuICAgICAgICB0eXBlOiAnd3JhcEFwcHJvdmUnLFxuICAgICAgICB3cmFwUGFyYW1zLFxuICAgICAgICB1bmtub3duRmllbGQ6ICdzaG91bGQgYmUgc3RyaXBwZWQnLFxuICAgICAgfSBhcyBhbnkpLFxuICAgICAge1xuICAgICAgICB0eXBlOiAnd3JhcEFwcHJvdmUnLFxuICAgICAgICB3cmFwUGFyYW1zLFxuICAgICAgfVxuICAgICk7XG4gICAgYXNzZXJ0Lm9rKGJ1aWxkUGFyYW1LZXlzLmluY2x1ZGVzKCd3cmFwUGFyYW1zJyksICdidWlsZFBhcmFtS2V5cyBtdXN0IGluY2x1ZGUgd3JhcFBhcmFtcycpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHdoaXRlbGlzdCB1bndyYXBQYXJhbXMgd2hpbGUgc3RyaXBwaW5nIHVua25vd24gcGFyYW1zJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHVud3JhcFBhcmFtcyA9IHsgdG9rZW5OYW1lOiAnaHRldGg6Y3VzZHQnLCBhbW91bnQ6ICcxMDAwMDAwJyB9O1xuICAgIC8vIHVua25vd25GaWVsZCBpcyBpbnRlbnRpb25hbGx5IGV4Y2VzcyDigJQgdGhlIGNvZGVjIG11c3Qgc3RyaXAgaXRcbiAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKFxuICAgICAgQnVpbGRQYXJhbXMuZW5jb2RlKHtcbiAgICAgICAgdHlwZTogJ3Vud3JhcCcsXG4gICAgICAgIHVud3JhcFBhcmFtcyxcbiAgICAgICAgdW5rbm93bkZpZWxkOiAnc2hvdWxkIGJlIHN0cmlwcGVkJyxcbiAgICAgIH0gYXMgdW5rbm93biBhcyBQYXJhbWV0ZXJzPHR5cGVvZiBCdWlsZFBhcmFtcy5lbmNvZGU+WzBdKSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ3Vud3JhcCcsXG4gICAgICAgIHVud3JhcFBhcmFtcyxcbiAgICAgIH1cbiAgICApO1xuICAgIGFzc2VydC5vayhidWlsZFBhcmFtS2V5cy5pbmNsdWRlcygndW53cmFwUGFyYW1zJyksICdidWlsZFBhcmFtS2V5cyBtdXN0IGluY2x1ZGUgdW53cmFwUGFyYW1zJyk7XG4gIH0pO1xuXG4gIGl0KCdBdHRlc3RhdGlvblBheWxvYWQgY29kZWMgcmVxdWlyZXMgYWxsIGZvdXIgZmllbGRzJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHZhbGlkID0ge1xuICAgICAgc2lnbmF0dXJlOiAnc2lnJyxcbiAgICAgIGNyZWRlbnRpYWxJZDogJ2NyZWQtaWQnLFxuICAgICAgY2xpZW50RGF0YUpTT046ICdjbGllbnQtZGF0YScsXG4gICAgICBhdXRoZW50aWNhdG9yRGF0YTogJ2F1dGgtZGF0YScsXG4gICAgfTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoQXR0ZXN0YXRpb25QYXlsb2FkLmlzKHZhbGlkKSwgdHJ1ZSk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKEF0dGVzdGF0aW9uUGF5bG9hZC5pcyh7IC4uLnZhbGlkLCBzaWduYXR1cmU6IHVuZGVmaW5lZCB9KSwgZmFsc2UpO1xuICB9KTtcblxuICBpdCgnU2J0Y1dpdGhkcmF3UGFyYW1zIGNvZGVjIGFjY2VwdHMgcGFydGlhbCBzdHJpbmcgZmllbGRzJywgZnVuY3Rpb24gKCkge1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChTYnRjV2l0aGRyYXdQYXJhbXMuaXMoeyBhbW91bnQ6ICcxMDAwMDAnLCBidGNBZGRyZXNzOiAnbXRidGNhZGRyJywgbWF4RmVlOiAnNTAwMCcgfSksIHRydWUpO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChTYnRjV2l0aGRyYXdQYXJhbXMuaXMoe30pLCB0cnVlKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoU2J0Y1dpdGhkcmF3UGFyYW1zLmlzKHsgYW1vdW50OiAxMDAwMDAgfSksIGZhbHNlKTsgLy8gbXVzdCBiZSBzdHJpbmcsIG5vdCBudW1iZXJcbiAgfSk7XG59KTtcbiJdfQ==
167
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQnVpbGRQYXJhbXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvYml0Z28vd2FsbGV0L0J1aWxkUGFyYW1zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0NBQWlDO0FBQ2pDLDBFQUtrRDtBQUVsRCxRQUFRLENBQUMsYUFBYSxFQUFFO0lBQ3RCLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRTtRQUNuQixNQUFNLENBQUMsZUFBZSxDQUNwQix5QkFBVyxDQUFDLE1BQU0sQ0FBQztZQUNqQixXQUFXLEVBQUUsTUFBTTtZQUNuQixRQUFRLEVBQUUsTUFBTTtZQUNoQixrQkFBa0IsRUFBRSxJQUFJO1lBQ3hCLFVBQVUsRUFBRTtnQkFDVjtvQkFDRSxNQUFNLEVBQUUsT0FBTztvQkFDZixPQUFPLEVBQUUscUNBQXFDO2lCQUMvQzthQUNGO1NBQ0ssQ0FBQyxFQUNUO1lBQ0UsV0FBVyxFQUFFLE1BQU07WUFDbkIsUUFBUSxFQUFFLE1BQU07WUFDaEIsa0JBQWtCLEVBQUUsSUFBSTtZQUN4QixVQUFVLEVBQUU7Z0JBQ1Y7b0JBQ0UsTUFBTSxFQUFFLE9BQU87b0JBQ2YsT0FBTyxFQUFFLHFDQUFxQztpQkFDL0M7YUFDRjtTQUNGLENBQ0YsQ0FBQztRQUVGLE1BQU0sQ0FBQyxlQUFlLENBQ3BCLHlCQUFXLENBQUMsTUFBTSxDQUFDO1lBQ2pCLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQztTQUNYLENBQUMsRUFDVDtZQUNFLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQztTQUNsQixDQUNGLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxpQ0FBaUMsRUFBRTtRQUNwQyxNQUFNLGNBQWMsR0FBRztZQUNyQixJQUFJLEVBQUU7Z0JBQ0osTUFBTSxFQUFFLE1BQU07Z0JBQ2QsZUFBZSxFQUFFLDJDQUEyQztnQkFDNUQsTUFBTSxF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LEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDL0csTUFBTSxDQUFDLFdBQVcsQ0FBQyxnQ0FBa0IsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDcEQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxnQ0FBa0IsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLDZCQUE2QjtJQUNyRyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQge1xuICBCdWlsZFBhcmFtcyxcbiAgYnVpbGRQYXJhbUtleXMsXG4gIEF0dGVzdGF0aW9uUGF5bG9hZCxcbiAgU2J0Y1dpdGhkcmF3UGFyYW1zLFxufSBmcm9tICcuLi8uLi8uLi8uLi9zcmMvYml0Z28vd2FsbGV0L0J1aWxkUGFyYW1zJztcblxuZGVzY3JpYmUoJ0J1aWxkUGFyYW1zJywgZnVuY3Rpb24gKCkge1xuICBpdCgnZW5mb3JjZXMgY29kZWMnLCBmdW5jdGlvbiAoKSB7XG4gICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChcbiAgICAgIEJ1aWxkUGFyYW1zLmVuY29kZSh7XG4gICAgICAgIGFkZHJlc3NUeXBlOiAncDJzaCcsXG4gICAgICAgIHR4Rm9ybWF0OiAncHNidCcsXG4gICAgICAgIGlzUmVwbGFjZWFibGVCeUZlZTogdHJ1ZSxcbiAgICAgICAgcmVjaXBpZW50czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFtb3VudDogJzEwMDAwJyxcbiAgICAgICAgICAgIGFkZHJlc3M6ICcyTjlFZ285S2lkaVpSOHRNUDgyZzZSYWdnUXRjYlI5ek56SCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0gYXMgYW55KSxcbiAgICAgIHtcbiAgICAgICAgYWRkcmVzc1R5cGU6ICdwMnNoJyxcbiAgICAgICAgdHhGb3JtYXQ6ICdwc2J0JyxcbiAgICAgICAgaXNSZXBsYWNlYWJsZUJ5RmVlOiB0cnVlLFxuICAgICAgICByZWNpcGllbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYW1vdW50OiAnMTAwMDAnLFxuICAgICAgICAgICAgYWRkcmVzczogJzJOOUVnbzlLaWRpWlI4dE1QODJnNlJhZ2dRdGNiUjl6TnpIJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfVxuICAgICk7XG5cbiAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKFxuICAgICAgQnVpbGRQYXJhbXMuZW5jb2RlKHtcbiAgICAgICAgcmJmVHhJZHM6IFsndHgxJ10sXG4gICAgICB9IGFzIGFueSksXG4gICAgICB7XG4gICAgICAgIHJiZlR4SWRzOiBbJ3R4MSddLFxuICAgICAgfVxuICAgICk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgd2hpdGVsaXN0IGJyaWRnaW5nUGFyYW1zJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGJyaWRnaW5nUGFyYW1zID0ge1xuICAgICAgc2J0Yzoge1xuICAgICAgICBhbW91bnQ6IDEwMDAwMCxcbiAgICAgICAgc3RhY2tzUmVjaXBpZW50OiAnU1AySjZaWTQ4R1YxRVo1VjJWNVJCOU1QNjZTVzg2UFlLS05SVjlFSjcnLFxuICAgICAgICBtYXhGZWU6IDUwMDAsXG4gICAgICAgIGxvY2tUaW1lOiAxNDQsXG4gICAgICB9LFxuICAgIH07XG4gICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChcbiAgICAgIEJ1aWxkUGFyYW1zLmVuY29kZSh7XG4gICAgICAgIHR5cGU6ICdicmlkZ2luZycsXG4gICAgICAgIHR4Rm9ybWF0OiAncHNidCcsXG4gICAgICAgIHJlY2lwaWVudHM6IFtdLFxuICAgICAgICBicmlkZ2luZ1BhcmFtcyxcbiAgICAgIH0gYXMgYW55KSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2JyaWRnaW5nJyxcbiAgICAgICAgdHhGb3JtYXQ6ICdwc2J0JyxcbiAgICAgICAgcmVjaXBpZW50czogW10sXG4gICAgICAgIGJyaWRnaW5nUGFyYW1zLFxuICAgICAgfVxuICAgICk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgc3RyaXAgdW5rbm93biBwYXJhbXMgd2hpbGUga2VlcGluZyBicmlkZ2luZ1BhcmFtcycsIGZ1bmN0aW9uICgpIHtcbiAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKFxuICAgICAgQnVpbGRQYXJhbXMuZW5jb2RlKHtcbiAgICAgICAgYnJpZGdpbmdQYXJhbXM6IHsgc2J0YzogeyBhbW91bnQ6IDUwMDAwLCBzdGFja3NSZWNpcGllbnQ6ICdTUDEyMycsIG1heEZlZTogMTAwMCwgbG9ja1RpbWU6IDEwMCB9IH0sXG4gICAgICAgIHVua25vd25GaWVsZDogJ3Nob3VsZCBiZSBzdHJpcHBlZCcsXG4gICAgICB9IGFzIGFueSksXG4gICAgICB7XG4gICAgICAgIGJyaWRnaW5nUGFyYW1zOiB7IHNidGM6IHsgYW1vdW50OiA1MDAwMCwgc3RhY2tzUmVjaXBpZW50OiAnU1AxMjMnLCBtYXhGZWU6IDEwMDAsIGxvY2tUaW1lOiAxMDAgfSB9LFxuICAgICAgfVxuICAgICk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgd2hpdGVsaXN0IGF0dGVzdGF0aW9uIChXQ04tNTM5KSB3aGlsZSBzdHJpcHBpbmcgdW5yZWxhdGVkIHVua25vd24gcGFyYW1zJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGF0dGVzdGF0aW9uID0ge1xuICAgICAgc2lnbmF0dXJlOiAnc2lnJyxcbiAgICAgIGNyZWRlbnRpYWxJZDogJ2NyZWQtaWQnLFxuICAgICAgY2xpZW50RGF0YUpTT046ICdjbGllbnQtZGF0YScsXG4gICAgICBhdXRoZW50aWNhdG9yRGF0YTogJ2F1dGgtZGF0YScsXG4gICAgfTtcbiAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKFxuICAgICAgQnVpbGRQYXJhbXMuZW5jb2RlKHtcbiAgICAgICAgcmVjaXBpZW50czogW3sgYW1vdW50OiAnMTAwMDAnLCBhZGRyZXNzOiAnMk45RWdvOUtpZGlaUjh0TVA4Mmc2UmFnZ1F0Y2JSOXpOekgnIH1dLFxuICAgICAgICBhdHRlc3RhdGlvbixcbiAgICAgICAgdW5rbm93bkZpZWxkOiAnc2hvdWxkIGJlIHN0cmlwcGVkJyxcbiAgICAgIH0gYXMgYW55KSxcbiAgICAgIHtcbiAgICAgICAgcmVjaXBpZW50czogW3sgYW1vdW50OiAnMTAwMDAnLCBhZGRyZXNzOiAnMk45RWdvOUtpZGlaUjh0TVA4Mmc2UmFnZ1F0Y2JSOXpOekgnIH1dLFxuICAgICAgICBhdHRlc3RhdGlvbixcbiAgICAgIH1cbiAgICApO1xuICAgIGFzc2VydC5vayhidWlsZFBhcmFtS2V5cy5pbmNsdWRlcygnYXR0ZXN0YXRpb24nKSwgJ2J1aWxkUGFyYW1LZXlzIG11c3QgaW5jbHVkZSBhdHRlc3RhdGlvbicpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHdoaXRlbGlzdCB3cmFwUGFyYW1zIHdoaWxlIHN0cmlwcGluZyB1bmtub3duIHBhcmFtcycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB3cmFwUGFyYW1zID0geyB0b2tlbk5hbWU6ICdodGV0aDpjdXNkdCcsIGFtb3VudDogJzEwMDAwMDAnIH07XG4gICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChcbiAgICAgIEJ1aWxkUGFyYW1zLmVuY29kZSh7XG4gICAgICAgIHR5cGU6ICd3cmFwQXBwcm92ZScsXG4gICAgICAgIHdyYXBQYXJhbXMsXG4gICAgICAgIHVua25vd25GaWVsZDogJ3Nob3VsZCBiZSBzdHJpcHBlZCcsXG4gICAgICB9IGFzIGFueSksXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICd3cmFwQXBwcm92ZScsXG4gICAgICAgIHdyYXBQYXJhbXMsXG4gICAgICB9XG4gICAgKTtcbiAgICBhc3NlcnQub2soYnVpbGRQYXJhbUtleXMuaW5jbHVkZXMoJ3dyYXBQYXJhbXMnKSwgJ2J1aWxkUGFyYW1LZXlzIG11c3QgaW5jbHVkZSB3cmFwUGFyYW1zJyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgd2hpdGVsaXN0IHVud3JhcFBhcmFtcyB3aGlsZSBzdHJpcHBpbmcgdW5rbm93biBwYXJhbXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdW53cmFwUGFyYW1zID0geyB0b2tlbk5hbWU6ICdodGV0aDpjdXNkdCcsIGFtb3VudDogJzEwMDAwMDAnIH07XG4gICAgLy8gdW5rbm93bkZpZWxkIGlzIGludGVudGlvbmFsbHkgZXhjZXNzIOKAlCB0aGUgY29kZWMgbXVzdCBzdHJpcCBpdFxuICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoXG4gICAgICBCdWlsZFBhcmFtcy5lbmNvZGUoe1xuICAgICAgICB0eXBlOiAndW53cmFwJyxcbiAgICAgICAgdW53cmFwUGFyYW1zLFxuICAgICAgICB1bmtub3duRmllbGQ6ICdzaG91bGQgYmUgc3RyaXBwZWQnLFxuICAgICAgfSBhcyB1bmtub3duIGFzIFBhcmFtZXRlcnM8dHlwZW9mIEJ1aWxkUGFyYW1zLmVuY29kZT5bMF0pLFxuICAgICAge1xuICAgICAgICB0eXBlOiAndW53cmFwJyxcbiAgICAgICAgdW53cmFwUGFyYW1zLFxuICAgICAgfVxuICAgICk7XG4gICAgYXNzZXJ0Lm9rKGJ1aWxkUGFyYW1LZXlzLmluY2x1ZGVzKCd1bndyYXBQYXJhbXMnKSwgJ2J1aWxkUGFyYW1LZXlzIG11c3QgaW5jbHVkZSB1bndyYXBQYXJhbXMnKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB3aGl0ZWxpc3QgbG93VGhyZXNob2xkIHdoaWxlIHN0cmlwcGluZyB1bmtub3duIHBhcmFtcycsIGZ1bmN0aW9uICgpIHtcbiAgICAvLyBYTE0gYWNjb3VudENvbmZpZyBidWlsZHMgY2FycnkgbG93VGhyZXNob2xkIG9uIC90eC9idWlsZDsgd2l0aG91dCB0aGlzIGtleSB0aGUgY2xpZW50LXNpZGVcbiAgICAvLyBwaWNrIGluIHByZUJ1aWxkVHJhbnNhY3Rpb24gc3RyaXBzIGl0IGJlZm9yZSB0aGUgcGxhdGZvcm0gY2FuIHBpbiBpdCB0byBleGFjdGx5IDIuXG4gICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChcbiAgICAgIEJ1aWxkUGFyYW1zLmVuY29kZSh7XG4gICAgICAgIHR5cGU6ICdhY2NvdW50Q29uZmlnJyxcbiAgICAgICAgbG93VGhyZXNob2xkOiAyLFxuICAgICAgICB1bmtub3duRmllbGQ6ICdzaG91bGQgYmUgc3RyaXBwZWQnLFxuICAgICAgfSBhcyB1bmtub3duIGFzIFBhcmFtZXRlcnM8dHlwZW9mIEJ1aWxkUGFyYW1zLmVuY29kZT5bMF0pLFxuICAgICAge1xuICAgICAgICB0eXBlOiAnYWNjb3VudENvbmZpZycsXG4gICAgICAgIGxvd1RocmVzaG9sZDogMixcbiAgICAgIH1cbiAgICApO1xuICAgIGFzc2VydC5vayhidWlsZFBhcmFtS2V5cy5pbmNsdWRlcygnbG93VGhyZXNob2xkJyksICdidWlsZFBhcmFtS2V5cyBtdXN0IGluY2x1ZGUgbG93VGhyZXNob2xkJyk7XG4gIH0pO1xuXG4gIGl0KCdBdHRlc3RhdGlvblBheWxvYWQgY29kZWMgcmVxdWlyZXMgYWxsIGZvdXIgZmllbGRzJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHZhbGlkID0ge1xuICAgICAgc2lnbmF0dXJlOiAnc2lnJyxcbiAgICAgIGNyZWRlbnRpYWxJZDogJ2NyZWQtaWQnLFxuICAgICAgY2xpZW50RGF0YUpTT046ICdjbGllbnQtZGF0YScsXG4gICAgICBhdXRoZW50aWNhdG9yRGF0YTogJ2F1dGgtZGF0YScsXG4gICAgfTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoQXR0ZXN0YXRpb25QYXlsb2FkLmlzKHZhbGlkKSwgdHJ1ZSk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKEF0dGVzdGF0aW9uUGF5bG9hZC5pcyh7IC4uLnZhbGlkLCBzaWduYXR1cmU6IHVuZGVmaW5lZCB9KSwgZmFsc2UpO1xuICB9KTtcblxuICBpdCgnU2J0Y1dpdGhkcmF3UGFyYW1zIGNvZGVjIGFjY2VwdHMgcGFydGlhbCBzdHJpbmcgZmllbGRzJywgZnVuY3Rpb24gKCkge1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChTYnRjV2l0aGRyYXdQYXJhbXMuaXMoeyBhbW91bnQ6ICcxMDAwMDAnLCBidGNBZGRyZXNzOiAnbXRidGNhZGRyJywgbWF4RmVlOiAnNTAwMCcgfSksIHRydWUpO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChTYnRjV2l0aGRyYXdQYXJhbXMuaXMoe30pLCB0cnVlKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoU2J0Y1dpdGhkcmF3UGFyYW1zLmlzKHsgYW1vdW50OiAxMDAwMDAgfSksIGZhbHNlKTsgLy8gbXVzdCBiZSBzdHJpbmcsIG5vdCBudW1iZXJcbiAgfSk7XG59KTtcbiJdfQ==