aws-cdk 2.10.0 → 2.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,6 +6,7 @@ const settings_1 = require("../../lib/settings");
6
6
  const mock_sdk_1 = require("../util/mock-sdk");
7
7
  const mockSDK = new mock_sdk_1.MockSdkProvider();
8
8
  const TEST_PROVIDER = 'testprovider';
9
+ const PLUGIN_PROVIDER = 'plugin';
9
10
  test('errors are reported into the context value', async () => {
10
11
  // GIVEN
11
12
  contextproviders.registerContextProvider(TEST_PROVIDER, {
@@ -70,7 +71,7 @@ test('errors are marked transient', async () => {
70
71
  test('context provider can be registered using PluginHost', async () => {
71
72
  let called = false;
72
73
  // GIVEN
73
- plugin_1.PluginHost.instance.registerContextProviderAlpha(TEST_PROVIDER, {
74
+ plugin_1.PluginHost.instance.registerContextProviderAlpha('prov', {
74
75
  async getValue(_) {
75
76
  called = true;
76
77
  return '';
@@ -79,14 +80,14 @@ test('context provider can be registered using PluginHost', async () => {
79
80
  const context = new settings_1.Context();
80
81
  // WHEN
81
82
  await contextproviders.provideContextValues([
82
- { key: 'asdf', props: { account: '1234', region: 'us-east-1' }, provider: TEST_PROVIDER },
83
+ { key: 'asdf', props: { account: '1234', region: 'us-east-1', pluginName: 'prov' }, provider: PLUGIN_PROVIDER },
83
84
  ], context, mockSDK);
84
85
  // THEN - error is marked transient
85
86
  expect(called).toEqual(true);
86
87
  });
87
- test('context provider can be called without account/region', async () => {
88
+ test('plugin context provider can be called without account/region', async () => {
88
89
  // GIVEN
89
- plugin_1.PluginHost.instance.registerContextProviderAlpha(TEST_PROVIDER, {
90
+ plugin_1.PluginHost.instance.registerContextProviderAlpha('prov', {
90
91
  async getValue(_) {
91
92
  return 'yay';
92
93
  },
@@ -94,9 +95,9 @@ test('context provider can be called without account/region', async () => {
94
95
  const context = new settings_1.Context();
95
96
  // WHEN
96
97
  await contextproviders.provideContextValues([
97
- { key: 'asdf', props: { banana: 'yellow' }, provider: TEST_PROVIDER },
98
+ { key: 'asdf', props: { banana: 'yellow', pluginName: 'prov' }, provider: PLUGIN_PROVIDER },
98
99
  ], context, mockSDK);
99
100
  // THEN - error is marked transient
100
101
  expect(context.get('asdf')).toEqual('yay');
101
102
  });
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZ2VuZXJpYy50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsNkNBQThDO0FBQzlDLGdFQUFnRTtBQUNoRSxpREFBb0U7QUFDcEUsK0NBQW1EO0FBRW5ELE1BQU0sT0FBTyxHQUFHLElBQUksMEJBQWUsRUFBRSxDQUFDO0FBRXRDLE1BQU0sYUFBYSxHQUFRLGNBQWMsQ0FBQztBQUUxQyxJQUFJLENBQUMsNENBQTRDLEVBQUUsS0FBSyxJQUFJLEVBQUU7SUFDNUQsUUFBUTtJQUNSLGdCQUFnQixDQUFDLHVCQUF1QixDQUFDLGFBQWEsRUFBRTtRQUN0RCxLQUFLLENBQUMsUUFBUSxDQUFDLENBQXVCO1lBQ3BDLE1BQU0sSUFBSSxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUMxQyxDQUFDO0tBQ0YsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxPQUFPLEdBQUcsSUFBSSxrQkFBTyxFQUFFLENBQUM7SUFFOUIsT0FBTztJQUNQLE1BQU0sZ0JBQWdCLENBQUMsb0JBQW9CLENBQUM7UUFDMUMsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUU7S0FDMUYsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFckIsaUNBQWlDO0lBRWpDLGtFQUFrRTtJQUNsRSx5QkFBeUI7SUFDekIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7QUFDMUUsQ0FBQyxDQUFDLENBQUM7QUFFSCxJQUFJLENBQUMsNkJBQTZCLEVBQUUsS0FBSyxJQUFJLEVBQUU7SUFDN0MsUUFBUTtJQUNSLGdCQUFnQixDQUFDLHVCQUF1QixDQUFDLGFBQWEs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QUksRUFBRTtJQUN2RSxRQUFRO0lBQ1IsbUJBQVUsQ0FBQyxRQUFRLENBQUMsNEJBQTRCLENBQUMsYUFBYSxFQUFFO1FBQzlELEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBdUI7WUFDcEMsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0tBQ0YsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxPQUFPLEdBQUcsSUFBSSxrQkFBTyxFQUFFLENBQUM7SUFFOUIsT0FBTztJQUNQLE1BQU0sZ0JBQWdCLENBQUMsb0JBQW9CLENBQUM7UUFDMUMsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQVMsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFO0tBQzdFLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRXJCLG1DQUFtQztJQUNuQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM3QyxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsdWdpbkhvc3QgfSBmcm9tICcuLi8uLi9saWIvcGx1Z2luJztcbmltcG9ydCAqIGFzIGNvbnRleHRwcm92aWRlcnMgZnJvbSAnLi4vLi4vbGliL2NvbnRleHQtcHJvdmlkZXJzJztcbmltcG9ydCB7IENvbnRleHQsIFRSQU5TSUVOVF9DT05URVhUX0tFWSB9IGZyb20gJy4uLy4uL2xpYi9zZXR0aW5ncyc7XG5pbXBvcnQgeyBNb2NrU2RrUHJvdmlkZXIgfSBmcm9tICcuLi91dGlsL21vY2stc2RrJztcblxuY29uc3QgbW9ja1NESyA9IG5ldyBNb2NrU2RrUHJvdmlkZXIoKTtcblxuY29uc3QgVEVTVF9QUk9WSURFUjogYW55ID0gJ3Rlc3Rwcm92aWRlcic7XG5cbnRlc3QoJ2Vycm9ycyBhcmUgcmVwb3J0ZWQgaW50byB0aGUgY29udGV4dCB2YWx1ZScsIGFzeW5jICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgY29udGV4dHByb3ZpZGVycy5yZWdpc3RlckNvbnRleHRQcm92aWRlcihURVNUX1BST1ZJREVSLCB7XG4gICAgYXN5bmMgZ2V0VmFsdWUoXzoge1trZXk6IHN0cmluZ106IGFueX0pOiBQcm9taXNlPGFueT4ge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTb21ldGhpbmcgd2VudCB3cm9uZycpO1xuICAgIH0sXG4gIH0pO1xuICBjb25zdCBjb250ZXh0ID0gbmV3IENvbnRleHQoKTtcblxuICAvLyBXSEVOXG4gIGF3YWl0IGNvbnRleHRwcm92aWRlcnMucHJvdmlkZUNvbnRleHRWYWx1ZXMoW1xuICAgIHsga2V5OiAnYXNkZicsIHByb3BzOiB7IGFjY291bnQ6ICcxMjM0JywgcmVnaW9uOiAndXMtZWFzdC0xJyB9LCBwcm92aWRlcjogVEVTVF9QUk9WSURFUiB9LFxuICBdLCBjb250ZXh0LCBtb2NrU0RLKTtcblxuICAvLyBUSEVOIC0gZXJyb3IgaXMgbm93IGluIGNvbnRleHRcblxuICAvLyBOT1RFOiBlcnJvciBrZXkgaXMgaW5saW5lZCBoZXJlIGJlY2F1c2UgaXQncyBwYXJ0IG9mIHRoZSBDWC1BUElcbiAgLy8gY29tcGF0aWJpbGl0eSBzdXJmYWNlLlxuICBleHBlY3QoY29udGV4dC5nZXQoJ2FzZGYnKS4kcHJvdmlkZXJFcnJvcikudG9CZSgnU29tZXRoaW5nIHdlbnQgd3JvbmcnKTtcbn0pO1xuXG50ZXN0KCdsb29rdXAgcm9sZSBBUk4gaXMgcmVzb2x2ZWQnLCBhc3luYyAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIGNvbnRleHRwcm92aWRlcnMucmVnaXN0ZXJDb250ZXh0UHJvdmlkZXIoVEVTVF9QUk9WSURFUiwge1xuICAgIGFzeW5jIGdldFZhbHVlKGFyZ3M6IHtba2V5OiBzdHJpbmddOiBhbnl9KTogUHJvbWlzZTxhbnk+IHtcbiAgICAgIGlmIChhcmdzLmxvb2t1cFJvbGVBcm4gPT0gbnVsbCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGxvb2t1cFJvbGVBcm4nKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3MubG9va3VwUm9sZUFybi5pbmNsdWRlcygnJHtBV1M6OlBhcnRpdGlvbn0nKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BhcnRpdGlvbiBub3QgcmVzb2x2ZWQnKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICdzb21lIHJlc29sdmVkIHZhbHVlJztcbiAgICB9LFxuICB9KTtcbiAgY29uc3QgY29udGV4dCA9IG5ldyBDb250ZXh0KCk7XG5cbiAgLy8gV0hFTlxuICBhd2FpdCBjb250ZXh0cHJvdmlkZXJzLnByb3ZpZGVDb250ZXh0VmFsdWVzKFtcbiAgICB7XG4gICAgICBrZXk6ICdhc2RmJyxcbiAgICAgIHByb3BzOiB7XG4gICAgICAgIGFjY291bnQ6ICcxMjM0JyxcbiAgICAgICAgcmVnaW9uOiAndXMtZWFzdC0xJyxcbiAgICAgICAgbG9va3VwUm9sZUFybjogJ2Fybjoke0FXUzo6UGFydGl0aW9ufTppYW06OjI4MDYxOTk0Nzc5MTpyb2xlL2Nkay1obmI2NTlmZHMtbG9va3VwLXJvbGUtMjgwNjE5OTQ3NzkxLXVzLWVhc3QtMScsXG4gICAgICB9LFxuICAgICAgcHJvdmlkZXI6IFRFU1RfUFJPVklERVIsXG4gICAgfSxcbiAgXSwgY29udGV4dCwgbW9ja1NESyk7XG5cbiAgLy8gVEhFTiAtIFZhbHVlIGdldHMgcmVzb2x2ZWRcbiAgZXhwZWN0KGNvbnRleHQuZ2V0KCdhc2RmJykpLnRvRXF1YWwoJ3NvbWUgcmVzb2x2ZWQgdmFsdWUnKTtcbn0pO1xuXG50ZXN0KCdlcnJvcnMgYXJlIG1hcmtlZCB0cmFuc2llbnQnLCBhc3luYyAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIGNvbnRleHRwcm92aWRlcnMucmVnaXN0ZXJDb250ZXh0UHJvdmlkZXIoVEVTVF9QUk9WSURFUiwge1xuICAgIGFzeW5jIGdldFZhbHVlKF86IHtba2V5OiBzdHJpbmddOiBhbnl9KTogUHJvbWlzZTxhbnk+IHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU29tZXRoaW5nIHdlbnQgd3JvbmcnKTtcbiAgICB9LFxuICB9KTtcbiAgY29uc3QgY29udGV4dCA9IG5ldyBDb250ZXh0KCk7XG5cbiAgLy8gV0hFTlxuICBhd2FpdCBjb250ZXh0cHJvdmlkZXJzLnByb3ZpZGVDb250ZXh0VmFsdWVzKFtcbiAgICB7IGtleTogJ2FzZGYnLCBwcm9wczogeyBhY2NvdW50OiAnMTIzNCcsIHJlZ2lvbjogJ3VzLWVhc3QtMScgfSwgcHJvdmlkZXI6IFRFU1RfUFJPVklERVIgfSxcbiAgXSwgY29udGV4dCwgbW9ja1NESyk7XG5cbiAgLy8gVEhFTiAtIGVycm9yIGlzIG1hcmtlZCB0cmFuc2llbnRcbiAgZXhwZWN0KGNvbnRleHQuZ2V0KCdhc2RmJylbVFJBTlNJRU5UX0NPTlRFWFRfS0VZXSkudG9CZVRydXRoeSgpO1xufSk7XG5cbnRlc3QoJ2NvbnRleHQgcHJvdmlkZXIgY2FuIGJlIHJlZ2lzdGVyZWQgdXNpbmcgUGx1Z2luSG9zdCcsIGFzeW5jICgpID0+IHtcbiAgbGV0IGNhbGxlZCA9IGZhbHNlO1xuXG4gIC8vIEdJVkVOXG4gIFBsdWdpbkhvc3QuaW5zdGFuY2UucmVnaXN0ZXJDb250ZXh0UHJvdmlkZXJBbHBoYShURVNUX1BST1ZJREVSLCB7XG4gICAgYXN5bmMgZ2V0VmFsdWUoXzoge1trZXk6IHN0cmluZ106IGFueX0pOiBQcm9taXNlPGFueT4ge1xuICAgICAgY2FsbGVkID0gdHJ1ZTtcbiAgICAgIHJldHVybiAnJztcbiAgICB9LFxuICB9KTtcbiAgY29uc3QgY29udGV4dCA9IG5ldyBDb250ZXh0KCk7XG5cbiAgLy8gV0hFTlxuICBhd2FpdCBjb250ZXh0cHJvdmlkZXJzLnByb3ZpZGVDb250ZXh0VmFsdWVzKFtcbiAgICB7IGtleTogJ2FzZGYnLCBwcm9wczogeyBhY2NvdW50OiAnMTIzNCcsIHJlZ2lvbjogJ3VzLWVhc3QtMScgfSwgcHJvdmlkZXI6IFRFU1RfUFJPVklERVIgfSxcbiAgXSwgY29udGV4dCwgbW9ja1NESyk7XG5cbiAgLy8gVEhFTiAtIGVycm9yIGlzIG1hcmtlZCB0cmFuc2llbnRcbiAgZXhwZWN0KGNhbGxlZCkudG9FcXVhbCh0cnVlKTtcbn0pO1xuXG50ZXN0KCdjb250ZXh0IHByb3ZpZGVyIGNhbiBiZSBjYWxsZWQgd2l0aG91dCBhY2NvdW50L3JlZ2lvbicsIGFzeW5jICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgUGx1Z2luSG9zdC5pbnN0YW5jZS5yZWdpc3RlckNvbnRleHRQcm92aWRlckFscGhhKFRFU1RfUFJPVklERVIsIHtcbiAgICBhc3luYyBnZXRWYWx1ZShfOiB7W2tleTogc3RyaW5nXTogYW55fSk6IFByb21pc2U8YW55PiB7XG4gICAgICByZXR1cm4gJ3lheSc7XG4gICAgfSxcbiAgfSk7XG4gIGNvbnN0IGNvbnRleHQgPSBuZXcgQ29udGV4dCgpO1xuXG4gIC8vIFdIRU5cbiAgYXdhaXQgY29udGV4dHByb3ZpZGVycy5wcm92aWRlQ29udGV4dFZhbHVlcyhbXG4gICAgeyBrZXk6ICdhc2RmJywgcHJvcHM6IHsgYmFuYW5hOiAneWVsbG93JyB9IGFzIGFueSwgcHJvdmlkZXI6IFRFU1RfUFJPVklERVIgfSxcbiAgXSwgY29udGV4dCwgbW9ja1NESyk7XG5cbiAgLy8gVEhFTiAtIGVycm9yIGlzIG1hcmtlZCB0cmFuc2llbnRcbiAgZXhwZWN0KGNvbnRleHQuZ2V0KCdhc2RmJykpLnRvRXF1YWwoJ3lheScpO1xufSk7XG4iXX0=
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZ2VuZXJpYy50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsNkNBQThDO0FBQzlDLGdFQUFnRTtBQUNoRSxpREFBb0U7QUFDcEUsK0NBQW1EO0FBRW5ELE1BQU0sT0FBTyxHQUFHLElBQUksMEJBQWUsRUFBRSxDQUFDO0FBRXRDLE1BQU0sYUFBYSxHQUFRLGNBQWMsQ0FBQztBQUMxQyxNQUFNLGVBQWUsR0FBUSxRQUFRLENBQUM7QUFFdEMsSUFBSSxDQUFDLDRDQUE0QyxFQUFFLEtBQUssSUFBSSxFQUFFO0lBQzVELFFBQVE7SUFDUixnQkFBZ0IsQ0FBQyx1QkFBdUIsQ0FBQyxhQUFhLEVBQUU7UUFDdEQsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUF1QjtZQUNwQyxNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDMUMsQ0FBQztLQUNGLENBQUMsQ0FBQztJQUNILE1BQU0sT0FBTyxHQUFHLElBQUksa0JBQU8sRUFBRSxDQUFDO0lBRTlCLE9BQU87SUFDUCxNQUFNLGdCQUFnQixDQUFDLG9CQUFvQixDQUFDO1FBQzFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFO0tBQzFGLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRXJCLGlDQUFpQztJQUVqQyxrRUFBa0U7SUFDbEUseUJBQXlCO0lBQ3pCLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0FBQzFFLENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLDZCQUE2QixFQUFFLEtBQUssSUFBSSxFQUFFO0lBQzdDLFFBQVE7SUFD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QixDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyw4REFBOEQsRUFBRSxLQUFLLElBQUksRUFBRTtJQUM5RSxRQUFRO0lBQ1IsbUJBQVUsQ0FBQyxRQUFRLENBQUMsNEJBQTRCLENBQUMsTUFBTSxFQUFFO1FBQ3ZELEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBdUI7WUFDcEMsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0tBQ0YsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxPQUFPLEdBQUcsSUFBSSxrQkFBTyxFQUFFLENBQUM7SUFFOUIsT0FBTztJQUNQLE1BQU0sZ0JBQWdCLENBQUMsb0JBQW9CLENBQUM7UUFDMUMsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBUyxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUU7S0FDbkcsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFckIsbUNBQW1DO0lBQ25DLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzdDLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGx1Z2luSG9zdCB9IGZyb20gJy4uLy4uL2xpYi9wbHVnaW4nO1xuaW1wb3J0ICogYXMgY29udGV4dHByb3ZpZGVycyBmcm9tICcuLi8uLi9saWIvY29udGV4dC1wcm92aWRlcnMnO1xuaW1wb3J0IHsgQ29udGV4dCwgVFJBTlNJRU5UX0NPTlRFWFRfS0VZIH0gZnJvbSAnLi4vLi4vbGliL3NldHRpbmdzJztcbmltcG9ydCB7IE1vY2tTZGtQcm92aWRlciB9IGZyb20gJy4uL3V0aWwvbW9jay1zZGsnO1xuXG5jb25zdCBtb2NrU0RLID0gbmV3IE1vY2tTZGtQcm92aWRlcigpO1xuXG5jb25zdCBURVNUX1BST1ZJREVSOiBhbnkgPSAndGVzdHByb3ZpZGVyJztcbmNvbnN0IFBMVUdJTl9QUk9WSURFUjogYW55ID0gJ3BsdWdpbic7XG5cbnRlc3QoJ2Vycm9ycyBhcmUgcmVwb3J0ZWQgaW50byB0aGUgY29udGV4dCB2YWx1ZScsIGFzeW5jICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgY29udGV4dHByb3ZpZGVycy5yZWdpc3RlckNvbnRleHRQcm92aWRlcihURVNUX1BST1ZJREVSLCB7XG4gICAgYXN5bmMgZ2V0VmFsdWUoXzoge1trZXk6IHN0cmluZ106IGFueX0pOiBQcm9taXNlPGFueT4ge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTb21ldGhpbmcgd2VudCB3cm9uZycpO1xuICAgIH0sXG4gIH0pO1xuICBjb25zdCBjb250ZXh0ID0gbmV3IENvbnRleHQoKTtcblxuICAvLyBXSEVOXG4gIGF3YWl0IGNvbnRleHRwcm92aWRlcnMucHJvdmlkZUNvbnRleHRWYWx1ZXMoW1xuICAgIHsga2V5OiAnYXNkZicsIHByb3BzOiB7IGFjY291bnQ6ICcxMjM0JywgcmVnaW9uOiAndXMtZWFzdC0xJyB9LCBwcm92aWRlcjogVEVTVF9QUk9WSURFUiB9LFxuICBdLCBjb250ZXh0LCBtb2NrU0RLKTtcblxuICAvLyBUSEVOIC0gZXJyb3IgaXMgbm93IGluIGNvbnRleHRcblxuICAvLyBOT1RFOiBlcnJvciBrZXkgaXMgaW5saW5lZCBoZXJlIGJlY2F1c2UgaXQncyBwYXJ0IG9mIHRoZSBDWC1BUElcbiAgLy8gY29tcGF0aWJpbGl0eSBzdXJmYWNlLlxuICBleHBlY3QoY29udGV4dC5nZXQoJ2FzZGYnKS4kcHJvdmlkZXJFcnJvcikudG9CZSgnU29tZXRoaW5nIHdlbnQgd3JvbmcnKTtcbn0pO1xuXG50ZXN0KCdsb29rdXAgcm9sZSBBUk4gaXMgcmVzb2x2ZWQnLCBhc3luYyAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIGNvbnRleHRwcm92aWRlcnMucmVnaXN0ZXJDb250ZXh0UHJvdmlkZXIoVEVTVF9QUk9WSURFUiwge1xuICAgIGFzeW5jIGdldFZhbHVlKGFyZ3M6IHtba2V5OiBzdHJpbmddOiBhbnl9KTogUHJvbWlzZTxhbnk+IHtcbiAgICAgIGlmIChhcmdzLmxvb2t1cFJvbGVBcm4gPT0gbnVsbCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGxvb2t1cFJvbGVBcm4nKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3MubG9va3VwUm9sZUFybi5pbmNsdWRlcygnJHtBV1M6OlBhcnRpdGlvbn0nKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BhcnRpdGlvbiBub3QgcmVzb2x2ZWQnKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICdzb21lIHJlc29sdmVkIHZhbHVlJztcbiAgICB9LFxuICB9KTtcbiAgY29uc3QgY29udGV4dCA9IG5ldyBDb250ZXh0KCk7XG5cbiAgLy8gV0hFTlxuICBhd2FpdCBjb250ZXh0cHJvdmlkZXJzLnByb3ZpZGVDb250ZXh0VmFsdWVzKFtcbiAgICB7XG4gICAgICBrZXk6ICdhc2RmJyxcbiAgICAgIHByb3BzOiB7XG4gICAgICAgIGFjY291bnQ6ICcxMjM0JyxcbiAgICAgICAgcmVnaW9uOiAndXMtZWFzdC0xJyxcbiAgICAgICAgbG9va3VwUm9sZUFybjogJ2Fybjoke0FXUzo6UGFydGl0aW9ufTppYW06OjI4MDYxOTk0Nzc5MTpyb2xlL2Nkay1obmI2NTlmZHMtbG9va3VwLXJvbGUtMjgwNjE5OTQ3NzkxLXVzLWVhc3QtMScsXG4gICAgICB9LFxuICAgICAgcHJvdmlkZXI6IFRFU1RfUFJPVklERVIsXG4gICAgfSxcbiAgXSwgY29udGV4dCwgbW9ja1NESyk7XG5cbiAgLy8gVEhFTiAtIFZhbHVlIGdldHMgcmVzb2x2ZWRcbiAgZXhwZWN0KGNvbnRleHQuZ2V0KCdhc2RmJykpLnRvRXF1YWwoJ3NvbWUgcmVzb2x2ZWQgdmFsdWUnKTtcbn0pO1xuXG50ZXN0KCdlcnJvcnMgYXJlIG1hcmtlZCB0cmFuc2llbnQnLCBhc3luYyAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIGNvbnRleHRwcm92aWRlcnMucmVnaXN0ZXJDb250ZXh0UHJvdmlkZXIoVEVTVF9QUk9WSURFUiwge1xuICAgIGFzeW5jIGdldFZhbHVlKF86IHtba2V5OiBzdHJpbmddOiBhbnl9KTogUHJvbWlzZTxhbnk+IHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU29tZXRoaW5nIHdlbnQgd3JvbmcnKTtcbiAgICB9LFxuICB9KTtcbiAgY29uc3QgY29udGV4dCA9IG5ldyBDb250ZXh0KCk7XG5cbiAgLy8gV0hFTlxuICBhd2FpdCBjb250ZXh0cHJvdmlkZXJzLnByb3ZpZGVDb250ZXh0VmFsdWVzKFtcbiAgICB7IGtleTogJ2FzZGYnLCBwcm9wczogeyBhY2NvdW50OiAnMTIzNCcsIHJlZ2lvbjogJ3VzLWVhc3QtMScgfSwgcHJvdmlkZXI6IFRFU1RfUFJPVklERVIgfSxcbiAgXSwgY29udGV4dCwgbW9ja1NESyk7XG5cbiAgLy8gVEhFTiAtIGVycm9yIGlzIG1hcmtlZCB0cmFuc2llbnRcbiAgZXhwZWN0KGNvbnRleHQuZ2V0KCdhc2RmJylbVFJBTlNJRU5UX0NPTlRFWFRfS0VZXSkudG9CZVRydXRoeSgpO1xufSk7XG5cbnRlc3QoJ2NvbnRleHQgcHJvdmlkZXIgY2FuIGJlIHJlZ2lzdGVyZWQgdXNpbmcgUGx1Z2luSG9zdCcsIGFzeW5jICgpID0+IHtcbiAgbGV0IGNhbGxlZCA9IGZhbHNlO1xuXG4gIC8vIEdJVkVOXG4gIFBsdWdpbkhvc3QuaW5zdGFuY2UucmVnaXN0ZXJDb250ZXh0UHJvdmlkZXJBbHBoYSgncHJvdicsIHtcbiAgICBhc3luYyBnZXRWYWx1ZShfOiB7W2tleTogc3RyaW5nXTogYW55fSk6IFByb21pc2U8YW55PiB7XG4gICAgICBjYWxsZWQgPSB0cnVlO1xuICAgICAgcmV0dXJuICcnO1xuICAgIH0sXG4gIH0pO1xuICBjb25zdCBjb250ZXh0ID0gbmV3IENvbnRleHQoKTtcblxuICAvLyBXSEVOXG4gIGF3YWl0IGNvbnRleHRwcm92aWRlcnMucHJvdmlkZUNvbnRleHRWYWx1ZXMoW1xuICAgIHsga2V5OiAnYXNkZicsIHByb3BzOiB7IGFjY291bnQ6ICcxMjM0JywgcmVnaW9uOiAndXMtZWFzdC0xJywgcGx1Z2luTmFtZTogJ3Byb3YnIH0sIHByb3ZpZGVyOiBQTFVHSU5fUFJPVklERVIgfSxcbiAgXSwgY29udGV4dCwgbW9ja1NESyk7XG5cbiAgLy8gVEhFTiAtIGVycm9yIGlzIG1hcmtlZCB0cmFuc2llbnRcbiAgZXhwZWN0KGNhbGxlZCkudG9FcXVhbCh0cnVlKTtcbn0pO1xuXG50ZXN0KCdwbHVnaW4gY29udGV4dCBwcm92aWRlciBjYW4gYmUgY2FsbGVkIHdpdGhvdXQgYWNjb3VudC9yZWdpb24nLCBhc3luYyAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIFBsdWdpbkhvc3QuaW5zdGFuY2UucmVnaXN0ZXJDb250ZXh0UHJvdmlkZXJBbHBoYSgncHJvdicsIHtcbiAgICBhc3luYyBnZXRWYWx1ZShfOiB7W2tleTogc3RyaW5nXTogYW55fSk6IFByb21pc2U8YW55PiB7XG4gICAgICByZXR1cm4gJ3lheSc7XG4gICAgfSxcbiAgfSk7XG4gIGNvbnN0IGNvbnRleHQgPSBuZXcgQ29udGV4dCgpO1xuXG4gIC8vIFdIRU5cbiAgYXdhaXQgY29udGV4dHByb3ZpZGVycy5wcm92aWRlQ29udGV4dFZhbHVlcyhbXG4gICAgeyBrZXk6ICdhc2RmJywgcHJvcHM6IHsgYmFuYW5hOiAneWVsbG93JywgcGx1Z2luTmFtZTogJ3Byb3YnIH0gYXMgYW55LCBwcm92aWRlcjogUExVR0lOX1BST1ZJREVSIH0sXG4gIF0sIGNvbnRleHQsIG1vY2tTREspO1xuXG4gIC8vIFRIRU4gLSBlcnJvciBpcyBtYXJrZWQgdHJhbnNpZW50XG4gIGV4cGVjdChjb250ZXh0LmdldCgnYXNkZicpKS50b0VxdWFsKCd5YXknKTtcbn0pO1xuIl19
@@ -97,6 +97,137 @@ test('throws when no such VPC is found', async () => {
97
97
  filter,
98
98
  })).rejects.toThrow(/Could not find any VPCs matching/);
99
99
  });
100
+ test('throws when subnet with subnetGroupNameTag not found', async () => {
101
+ // GIVEN
102
+ const filter = { foo: 'bar' };
103
+ const provider = new vpcs_1.VpcNetworkContextProviderPlugin(mockSDK);
104
+ mockVpcLookup({
105
+ subnets: [
106
+ { SubnetId: 'sub-123456', AvailabilityZone: 'bermuda-triangle-1337', MapPublicIpOnLaunch: true },
107
+ { SubnetId: 'sub-789012', AvailabilityZone: 'bermuda-triangle-1337', MapPublicIpOnLaunch: false },
108
+ ],
109
+ routeTables: [
110
+ {
111
+ Associations: [{ SubnetId: 'sub-123456' }],
112
+ RouteTableId: 'rtb-123456',
113
+ Routes: [
114
+ {
115
+ DestinationCidrBlock: '1.1.1.1/24',
116
+ GatewayId: 'local',
117
+ Origin: 'CreateRouteTable',
118
+ State: 'active',
119
+ },
120
+ {
121
+ DestinationCidrBlock: '0.0.0.0/0',
122
+ GatewayId: 'igw-xxxxxx',
123
+ Origin: 'CreateRoute',
124
+ State: 'active',
125
+ },
126
+ ],
127
+ },
128
+ {
129
+ Associations: [{ SubnetId: 'sub-789012' }],
130
+ RouteTableId: 'rtb-789012',
131
+ Routes: [
132
+ {
133
+ DestinationCidrBlock: '1.1.2.1/24',
134
+ GatewayId: 'local',
135
+ Origin: 'CreateRouteTable',
136
+ State: 'active',
137
+ },
138
+ {
139
+ DestinationCidrBlock: '0.0.0.0/0',
140
+ NatGatewayId: 'nat-xxxxxx',
141
+ Origin: 'CreateRoute',
142
+ State: 'active',
143
+ },
144
+ ],
145
+ },
146
+ ],
147
+ vpnGateways: [{ VpnGatewayId: 'gw-abcdef' }],
148
+ });
149
+ // WHEN
150
+ await expect(provider.getValue({
151
+ account: '1234',
152
+ region: 'us-east-1',
153
+ subnetGroupNameTag: 'DOES_NOT_EXIST',
154
+ filter,
155
+ })).rejects.toThrow(/Invalid subnetGroupNameTag: Subnet .* does not have an associated tag with Key='DOES_NOT_EXIST'/);
156
+ });
157
+ test('does not throw when subnet with subnetGroupNameTag is found', async () => {
158
+ // GIVEN
159
+ const filter = { foo: 'bar' };
160
+ const provider = new vpcs_1.VpcNetworkContextProviderPlugin(mockSDK);
161
+ mockVpcLookup({
162
+ subnets: [
163
+ { SubnetId: 'sub-123456', AvailabilityZone: 'bermuda-triangle-1337', MapPublicIpOnLaunch: true, Tags: [{ Key: 'DOES_EXIST', Value: 'SubnetName1' }] },
164
+ { SubnetId: 'sub-789012', AvailabilityZone: 'bermuda-triangle-1337', MapPublicIpOnLaunch: false, Tags: [{ Key: 'DOES_EXIST', Value: 'SubnetName2' }] },
165
+ ],
166
+ routeTables: [
167
+ {
168
+ Associations: [{ SubnetId: 'sub-123456' }],
169
+ RouteTableId: 'rtb-123456',
170
+ Routes: [
171
+ {
172
+ DestinationCidrBlock: '1.1.1.1/24',
173
+ GatewayId: 'local',
174
+ Origin: 'CreateRouteTable',
175
+ State: 'active',
176
+ },
177
+ {
178
+ DestinationCidrBlock: '0.0.0.0/0',
179
+ GatewayId: 'igw-xxxxxx',
180
+ Origin: 'CreateRoute',
181
+ State: 'active',
182
+ },
183
+ ],
184
+ },
185
+ {
186
+ Associations: [{ SubnetId: 'sub-789012' }],
187
+ RouteTableId: 'rtb-789012',
188
+ Routes: [
189
+ {
190
+ DestinationCidrBlock: '1.1.2.1/24',
191
+ GatewayId: 'local',
192
+ Origin: 'CreateRouteTable',
193
+ State: 'active',
194
+ },
195
+ {
196
+ DestinationCidrBlock: '0.0.0.0/0',
197
+ NatGatewayId: 'nat-xxxxxx',
198
+ Origin: 'CreateRoute',
199
+ State: 'active',
200
+ },
201
+ ],
202
+ },
203
+ ],
204
+ vpnGateways: [{ VpnGatewayId: 'gw-abcdef' }],
205
+ });
206
+ // WHEN
207
+ const result = await provider.getValue({
208
+ account: '1234',
209
+ region: 'us-east-1',
210
+ subnetGroupNameTag: 'DOES_EXIST',
211
+ filter,
212
+ });
213
+ // THEN
214
+ expect(result).toEqual({
215
+ vpcId: 'vpc-1234567',
216
+ vpcCidrBlock: '1.1.1.1/16',
217
+ availabilityZones: ['bermuda-triangle-1337'],
218
+ isolatedSubnetIds: undefined,
219
+ isolatedSubnetNames: undefined,
220
+ isolatedSubnetRouteTableIds: undefined,
221
+ privateSubnetIds: ['sub-789012'],
222
+ privateSubnetNames: ['SubnetName2'],
223
+ privateSubnetRouteTableIds: ['rtb-789012'],
224
+ publicSubnetIds: ['sub-123456'],
225
+ publicSubnetNames: ['SubnetName1'],
226
+ publicSubnetRouteTableIds: ['rtb-123456'],
227
+ vpnGatewayId: 'gw-abcdef',
228
+ subnetGroups: undefined,
229
+ });
230
+ });
100
231
  test('throws when multiple VPCs are found', async () => {
101
232
  // GIVEN
102
233
  const filter = { foo: 'bar' };
@@ -373,4 +504,4 @@ function mockVpcLookup(options) {
373
504
  return cb(null, { VpnGateways: options.vpnGateways });
374
505
  });
375
506
  }
376
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidnBjcy50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidnBjcy50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0Esb0NBQW9DO0FBQ3BDLDJEQUFtRjtBQUNuRiwrQ0FBbUQ7QUFFbkQsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7QUFFdkMsTUFBTSxPQUFPLEdBQUcsSUFBSSwwQkFBZSxFQUFFLENBQUM7QUFJdEMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO0lBQ2YsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2QsSUFBSSxFQUFFLENBQUM7QUFDVCxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyw0QkFBNEIsRUFBRSxLQUFLLElBQUksRUFBRTtJQUM1QyxRQUFRO0lBQ1IsTUFBTSxNQUFNLEdBQUcsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDOUIsTUFBTSxRQUFRLEdBQUcsSUFBSSxzQ0FBK0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUU5RCxhQUFhLENBQUM7UUFDWixPQUFPLEVBQUU7WUFDUCxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsdUJBQXVCLEVBQUUsbUJBQW1CLEVBQUUsSUFBSSxFQUFFO1lBQ2hHLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSx1QkFBdUIsRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUU7U0FDbEc7UUFDRCxXQUFXLEVBQUU7WUFDWDtnQkFDRSxZQUFZLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsQ0FBQztnQkFDMUMsWUFBWSxFQUFFLFlBQVk7Z0JBQzFCLE1BQU0sRUFBRTtvQkFDTjt3QkFDRSxvQkFBb0IsRUFBRSxZQUFZO3dCQUNsQyxTQUFTLEVBQUUsT0FBTzt3QkFDbEIsTUFBTSxFQUFFLGtCQUFrQjt3QkFDMUIsS0FBSyxFQUFFLFFB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QUM7UUFDSCxPQUFPLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDeEQsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgYXdzIGZyb20gJ2F3cy1zZGsnO1xuaW1wb3J0ICogYXMgQVdTIGZyb20gJ2F3cy1zZGstbW9jayc7XG5pbXBvcnQgeyBWcGNOZXR3b3JrQ29udGV4dFByb3ZpZGVyUGx1Z2luIH0gZnJvbSAnLi4vLi4vbGliL2NvbnRleHQtcHJvdmlkZXJzL3ZwY3MnO1xuaW1wb3J0IHsgTW9ja1Nka1Byb3ZpZGVyIH0gZnJvbSAnLi4vdXRpbC9tb2NrLXNkayc7XG5cbkFXUy5zZXRTREsocmVxdWlyZS5yZXNvbHZlKCdhd3Mtc2RrJykpO1xuXG5jb25zdCBtb2NrU0RLID0gbmV3IE1vY2tTZGtQcm92aWRlcigpO1xuXG50eXBlIEF3c0NhbGxiYWNrPFQ+ID0gKGVycjogRXJyb3IgfCBudWxsLCB2YWw6IFQpID0+IHZvaWQ7XG5cbmFmdGVyRWFjaChkb25lID0+IHtcbiAgQVdTLnJlc3RvcmUoKTtcbiAgZG9uZSgpO1xufSk7XG5cbnRlc3QoJ2xvb2tzIHVwIHRoZSByZXF1ZXN0ZWQgVlBDJywgYXN5bmMgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBjb25zdCBmaWx0ZXIgPSB7IGZvbzogJ2JhcicgfTtcbiAgY29uc3QgcHJvdmlkZXIgPSBuZXcgVnBjTmV0d29ya0NvbnRleHRQcm92aWRlclBsdWdpbihtb2NrU0RLKTtcblxuICBtb2NrVnBjTG9va3VwKHtcbiAgICBzdWJuZXRzOiBbXG4gICAgICB7IFN1Ym5ldElkOiAnc3ViLTEyMzQ1NicsIEF2YWlsYWJpbGl0eVpvbmU6ICdiZXJtdWRhLXRyaWFuZ2xlLTEzMzcnLCBNYXBQdWJsaWNJcE9uTGF1bmNoOiB0cnVlIH0sXG4gICAgICB7IFN1Ym5ldElkOiAnc3ViLTc4OTAxMicsIEF2YWlsYWJpbGl0eVpvbmU6ICdiZXJtdWRhLXRyaWFuZ2xlLTEzMzcnLCBNYXBQdWJsaWNJcE9uTGF1bmNoOiBmYWxzZSB9LFxuICAgIF0sXG4gICAgcm91dGVUYWJsZXM6IFtcbiAgICAgIHtcbiAgICAgICAgQXNzb2NpYXRpb25zOiBbeyBTdWJuZXRJZDogJ3N1Yi0xMjM0NTYnIH1dLFxuICAgICAgICBSb3V0ZVRhYmxlSWQ6ICdydGItMTIzNDU2JyxcbiAgICAgICAgUm91dGVzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgRGVzdGluYXRpb25DaWRyQmxvY2s6ICcxLjEuMS4xLzI0JyxcbiAgICAgICAgICAgIEdhdGV3YXlJZDogJ2xvY2FsJyxcbiAgICAgICAgICAgIE9yaWdpbjogJ0NyZWF0ZVJvdXRlVGFibGUnLFxuICAgICAgICAgICAgU3RhdGU6ICdhY3RpdmUnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgRGVzdGluYXRpb25DaWRyQmxvY2s6ICcwLjAuMC4wLzAnLFxuICAgICAgICAgICAgR2F0ZXdheUlkOiAnaWd3LXh4eHh4eCcsXG4gICAgICAgICAgICBPcmlnaW46ICdDcmVhdGVSb3V0ZScsXG4gICAgICAgICAgICBTdGF0ZTogJ2FjdGl2ZScsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIEFzc29jaWF0aW9uczogW3sgU3VibmV0SWQ6ICdzdWItNzg5MDEyJyB9XSxcbiAgICAgICAgUm91dGVUYWJsZUlkOiAncnRiLTc4OTAxMicsXG4gICAgICAgIFJvdXRlczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIERlc3RpbmF0aW9uQ2lkckJsb2NrOiAnMS4xLjIuMS8yNCcsXG4gICAgICAgICAgICBHYXRld2F5SWQ6ICdsb2NhbCcsXG4gICAgICAgICAgICBPcmlnaW46ICdDcmVhdGVSb3V0ZVRhYmxlJyxcbiAgICAgICAgICAgIFN0YXRlOiAnYWN0aXZlJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIERlc3RpbmF0aW9uQ2lkckJsb2NrOiAnMC4wLjAuMC8wJyxcbiAgICAgICAgICAgIE5hdEdhdGV3YXlJZDogJ25hdC14eHh4eHgnLFxuICAgICAgICAgICAgT3JpZ2luOiAnQ3JlYXRlUm91dGUnLFxuICAgICAgICAgICAgU3RhdGU6ICdhY3RpdmUnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIF0sXG4gICAgdnBuR2F0ZXdheXM6IFt7IFZwbkdhdGV3YXlJZDogJ2d3LWFiY2RlZicgfV0sXG5cbiAgfSk7XG5cbiAgLy8gV0hFTlxuICBjb25zdCByZXN1bHQgPSBhd2FpdCBwcm92aWRlci5nZXRWYWx1ZSh7XG4gICAgYWNjb3VudDogJzEyMzQnLFxuICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgZmlsdGVyLFxuICB9KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoe1xuICAgIHZwY0lkOiAndnBjLTEyMzQ1NjcnLFxuICAgIHZwY0NpZHJCbG9jazogJzEuMS4xLjEvMTYnLFxuICAgIGF2YWlsYWJpbGl0eVpvbmVzOiBbJ2Jlcm11ZGEtdHJpYW5nbGUtMTMzNyddLFxuICAgIGlzb2xhdGVkU3VibmV0SWRzOiB1bmRlZmluZWQsXG4gICAgaXNvbGF0ZWRTdWJuZXROYW1lczogdW5kZWZpbmVkLFxuICAgIGlzb2xhdGVkU3VibmV0Um91dGVUYWJsZUlkczogdW5kZWZpbmVkLFxuICAgIHByaXZhdGVTdWJuZXRJZHM6IFsnc3ViLTc4OTAxMiddLFxuICAgIHByaXZhdGVTdWJuZXROYW1lczogWydQcml2YXRlJ10sXG4gICAgcHJpdmF0ZVN1Ym5ldFJvdXRlVGFibGVJZHM6IFsncnRiLTc4OTAxMiddLFxuICAgIHB1YmxpY1N1Ym5ldElkczogWydzdWItMTIzNDU2J10sXG4gICAgcHVibGljU3VibmV0TmFtZXM6IFsnUHVibGljJ10sXG4gICAgcHVibGljU3VibmV0Um91dGVUYWJsZUlkczogWydydGItMTIzNDU2J10sXG4gICAgdnBuR2F0ZXdheUlkOiAnZ3ctYWJjZGVmJyxcbiAgICBzdWJuZXRHcm91cHM6IHVuZGVmaW5lZCxcbiAgfSk7XG59KTtcblxudGVzdCgndGhyb3dzIHdoZW4gbm8gc3VjaCBWUEMgaXMgZm91bmQnLCBhc3luYyAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIGNvbnN0IGZpbHRlciA9IHsgZm9vOiAnYmFyJyB9O1xuICBjb25zdCBwcm92aWRlciA9IG5ldyBWcGNOZXR3b3JrQ29udGV4dFByb3ZpZGVyUGx1Z2luKG1vY2tTREspO1xuXG4gIEFXUy5tb2NrKCdFQzInLCAnZGVzY3JpYmVWcGNzJywgKHBhcmFtczogYXdzLkVDMi5EZXNjcmliZVZwY3NSZXF1ZXN0LCBjYjogQXdzQ2FsbGJhY2s8YXdzLkVDMi5EZXNjcmliZVZwY3NSZXN1bHQ+KSA9PiB7XG4gICAgZXhwZWN0KHBhcmFtcy5GaWx0ZXJzKS50b0VxdWFsKFt7IE5hbWU6ICdmb28nLCBWYWx1ZXM6IFsnYmFyJ10gfV0pO1xuICAgIHJldHVybiBjYihudWxsLCB7fSk7XG4gIH0pO1xuXG4gIC8vIFdIRU5cbiAgYXdhaXQgZXhwZWN0KHByb3ZpZGVyLmdldFZhbHVlKHtcbiAgICBhY2NvdW50OiAnMTIzNCcsXG4gICAgcmVnaW9uOiAndXMtZWFzdC0xJyxcbiAgICBmaWx0ZXIsXG4gIH0pKS5yZWplY3RzLnRvVGhyb3coL0NvdWxkIG5vdCBmaW5kIGFueSBWUENzIG1hdGNoaW5nLyk7XG59KTtcblxudGVzdCgndGhyb3dzIHdoZW4gbXVsdGlwbGUgVlBDcyBhcmUgZm91bmQnLCBhc3luYyAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIGNvbnN0IGZpbHRlciA9IHsgZm9vOiAnYmFyJyB9O1xuICBjb25zdCBwcm92aWRlciA9IG5ldyBWcGNOZXR3b3JrQ29udGV4dFByb3ZpZGVyUGx1Z2luKG1vY2tTREspO1xuXG4gIEFXUy5tb2NrKCdFQzInLCAnZGVzY3JpYmVWcGNzJywgKHBhcmFtczogYXdzLkVDMi5EZXNjcmliZVZwY3NSZXF1ZXN0LCBjYjogQXdzQ2FsbGJhY2s8YXdzLkVDMi5EZXNjcmliZVZwY3NSZXN1bHQ+KSA9PiB7XG4gICAgZXhwZWN0KHBhcmFtcy5GaWx0ZXJzKS50b0VxdWFsKFt7IE5hbWU6ICdmb28nLCBWYWx1ZXM6IFsnYmFyJ10gfV0pO1xuICAgIHJldHVybiBjYihudWxsLCB7IFZwY3M6IFt7IFZwY0lkOiAndnBjLTEnIH0sIHsgVnBjSWQ6ICd2cGMtMicgfV0gfSk7XG4gIH0pO1xuXG4gIC8vIFdIRU5cbiAgYXdhaXQgZXhwZWN0KHByb3ZpZGVyLmdldFZhbHVlKHtcbiAgICBhY2NvdW50OiAnMTIzNCcsXG4gICAgcmVnaW9uOiAndXMtZWFzdC0xJyxcbiAgICBmaWx0ZXIsXG4gIH0pKS5yZWplY3RzLnRvVGhyb3coL0ZvdW5kIDIgVlBDcyBtYXRjaGluZy8pO1xufSk7XG5cbnRlc3QoJ3VzZXMgdGhlIFZQQyBtYWluIHJvdXRlIHRhYmxlIHdoZW4gYSBzdWJuZXQgaGFzIG5vIHNwZWNpZmljIGFzc29jaWF0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBjb25zdCBmaWx0ZXIgPSB7IGZvbzogJ2JhcicgfTtcbiAgY29uc3QgcHJvdmlkZXIgPSBuZXcgVnBjTmV0d29ya0NvbnRleHRQcm92aWRlclBsdWdpbihtb2NrU0RLKTtcblxuICBtb2NrVnBjTG9va3VwKHtcbiAgICBzdWJuZXRzOiBbXG4gICAgICB7IFN1Ym5ldElkOiAnc3ViLTEyMzQ1NicsIEF2YWlsYWJpbGl0eVpvbmU6ICdiZXJtdWRhLXRyaWFuZ2xlLTEzMzcnLCBNYXBQdWJsaWNJcE9uTGF1bmNoOiB0cnVlIH0sXG4gICAgICB7IFN1Ym5ldElkOiAnc3ViLTc4OTAxMicsIEF2YWlsYWJpbGl0eVpvbmU6ICdiZXJtdWRhLXRyaWFuZ2xlLTEzMzcnLCBNYXBQdWJsaWNJcE9uTGF1bmNoOiBmYWxzZSB9LFxuICAgIF0sXG4gICAgcm91dGVUYWJsZXM6IFtcbiAgICAgIHtcbiAgICAgICAgQXNzb2NpYXRpb25zOiBbeyBTdWJuZXRJZDogJ3N1Yi0xMjM0NTYnIH1dLFxuICAgICAgICBSb3V0ZVRhYmxlSWQ6ICdydGItMTIzNDU2JyxcbiAgICAgICAgUm91dGVzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgRGVzdGluYXRpb25DaWRyQmxvY2s6ICcxLjEuMS4xLzI0JyxcbiAgICAgICAgICAgIEdhdGV3YXlJZDogJ2xvY2FsJyxcbiAgICAgICAgICAgIE9yaWdpbjogJ0NyZWF0ZVJvdXRlVGFibGUnLFxuICAgICAgICAgICAgU3RhdGU6ICdhY3RpdmUnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgRGVzdGluYXRpb25DaWRyQmxvY2s6ICcwLjAuMC4wLzAnLFxuICAgICAgICAgICAgR2F0ZXdheUlkOiAnaWd3LXh4eHh4eCcsXG4gICAgICAgICAgICBPcmlnaW46ICdDcmVhdGVSb3V0ZScsXG4gICAgICAgICAgICBTdGF0ZTogJ2FjdGl2ZScsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIEFzc29jaWF0aW9uczogW3sgTWFpbjogdHJ1ZSB9XSxcbiAgICAgICAgUm91dGVUYWJsZUlkOiAncnRiLTc4OTAxMicsXG4gICAgICAgIFJvdXRlczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIERlc3RpbmF0aW9uQ2lkckJsb2NrOiAnMS4xLjIuMS8yNCcsXG4gICAgICAgICAgICBHYXRld2F5SWQ6ICdsb2NhbCcsXG4gICAgICAgICAgICBPcmlnaW46ICdDcmVhdGVSb3V0ZVRhYmxlJyxcbiAgICAgICAgICAgIFN0YXRlOiAnYWN0aXZlJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIERlc3RpbmF0aW9uQ2lkckJsb2NrOiAnMC4wLjAuMC8wJyxcbiAgICAgICAgICAgIE5hdEdhdGV3YXlJZDogJ25hdC14eHh4eHgnLFxuICAgICAgICAgICAgT3JpZ2luOiAnQ3JlYXRlUm91dGUnLFxuICAgICAgICAgICAgU3RhdGU6ICdhY3RpdmUnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIF0sXG4gICAgdnBuR2F0ZXdheXM6IFt7IFZwbkdhdGV3YXlJZDogJ2d3LWFiY2RlZicgfV0sXG4gIH0pO1xuXG4gIC8vIFdIRU5cbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcHJvdmlkZXIuZ2V0VmFsdWUoe1xuICAgIGFjY291bnQ6ICcxMjM0JyxcbiAgICByZWdpb246ICd1cy1lYXN0LTEnLFxuICAgIGZpbHRlcixcbiAgfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3QocmVzdWx0KS50b0VxdWFsKHtcbiAgICB2cGNJZDogJ3ZwYy0xMjM0NTY3JyxcbiAgICB2cGNDaWRyQmxvY2s6ICcxLjEuMS4xLzE2JyxcbiAgICBhdmFpbGFiaWxpdHlab25lczogWydiZXJtdWRhLXRyaWFuZ2xlLTEzMzcnXSxcbiAgICBpc29sYXRlZFN1Ym5ldElkczogdW5kZWZpbmVkLFxuICAgIGlzb2xhdGVkU3VibmV0TmFtZXM6IHVuZGVmaW5lZCxcbiAgICBpc29sYXRlZFN1Ym5ldFJvdXRlVGFibGVJZHM6IHVuZGVmaW5lZCxcbiAgICBwcml2YXRlU3VibmV0SWRzOiBbJ3N1Yi03ODkwMTInXSxcbiAgICBwcml2YXRlU3VibmV0TmFtZXM6IFsnUHJpdmF0ZSddLFxuICAgIHByaXZhdGVTdWJuZXRSb3V0ZVRhYmxlSWRzOiBbJ3J0Yi03ODkwMTInXSxcbiAgICBwdWJsaWNTdWJuZXRJZHM6IFsnc3ViLTEyMzQ1NiddLFxuICAgIHB1YmxpY1N1Ym5ldE5hbWVzOiBbJ1B1YmxpYyddLFxuICAgIHB1YmxpY1N1Ym5ldFJvdXRlVGFibGVJZHM6IFsncnRiLTEyMzQ1NiddLFxuICAgIHZwbkdhdGV3YXlJZDogJ2d3LWFiY2RlZicsXG4gICAgc3VibmV0R3JvdXBzOiB1bmRlZmluZWQsXG4gIH0pO1xufSk7XG5cbnRlc3QoJ1JlY29nbml6ZSBwdWJsaWMgc3VibmV0IGJ5IHJvdXRlIHRhYmxlJywgYXN5bmMgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBjb25zdCBmaWx0ZXIgPSB7IGZvbzogJ2JhcicgfTtcbiAgY29uc3QgcHJvdmlkZXIgPSBuZXcgVnBjTmV0d29ya0NvbnRleHRQcm92aWRlclBsdWdpbihtb2NrU0RLKTtcblxuICBtb2NrVnBjTG9va3VwKHtcbiAgICBzdWJuZXRzOiBbXG4gICAgICB7IFN1Ym5ldElkOiAnc3ViLTEyMzQ1NicsIEF2YWlsYWJpbGl0eVpvbmU6ICdiZXJtdWRhLXRyaWFuZ2xlLTEzMzcnLCBNYXBQdWJsaWNJcE9uTGF1bmNoOiBmYWxzZSB9LFxuICAgIF0sXG4gICAgcm91dGVUYWJsZXM6IFtcbiAgICAgIHtcbiAgICAgICAgQXNzb2NpYXRpb25zOiBbeyBTdWJuZXRJZDogJ3N1Yi0xMjM0NTYnIH1dLFxuICAgICAgICBSb3V0ZVRhYmxlSWQ6ICdydGItMTIzNDU2JyxcbiAgICAgICAgUm91dGVzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgRGVzdGluYXRpb25DaWRyQmxvY2s6ICcxMC4wLjIuMC8yNicsXG4gICAgICAgICAgICBPcmlnaW46ICdDcmVhdGVSb3V0ZScsXG4gICAgICAgICAgICBTdGF0ZTogJ2FjdGl2ZScsXG4gICAgICAgICAgICBWcGNQZWVyaW5nQ29ubmVjdGlvbklkOiAncGN4LXh4eHh4eCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBEZXN0aW5hdGlvbkNpZHJCbG9jazogJzEwLjAuMS4wLzI0JyxcbiAgICAgICAgICAgIEdhdGV3YXlJZDogJ2xvY2FsJyxcbiAgICAgICAgICAgIE9yaWdpbjogJ0NyZWF0ZVJvdXRlVGFibGUnLFxuICAgICAgICAgICAgU3RhdGU6ICdhY3RpdmUnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgRGVzdGluYXRpb25DaWRyQmxvY2s6ICcwLjAuMC4wLzAnLFxuICAgICAgICAgICAgR2F0ZXdheUlkOiAnaWd3LXh4eHh4eCcsXG4gICAgICAgICAgICBPcmlnaW46ICdDcmVhdGVSb3V0ZScsXG4gICAgICAgICAgICBTdGF0ZTogJ2FjdGl2ZScsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgXSxcbiAgfSk7XG5cbiAgLy8gV0hFTlxuICBjb25zdCByZXN1bHQgPSBhd2FpdCBwcm92aWRlci5nZXRWYWx1ZSh7XG4gICAgYWNjb3VudDogJzEyMzQnLFxuICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgZmlsdGVyLFxuICB9KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoe1xuICAgIHZwY0lkOiAndnBjLTEyMzQ1NjcnLFxuICAgIHZwY0NpZHJCbG9jazogJzEuMS4xLjEvMTYnLFxuICAgIGF2YWlsYWJpbGl0eVpvbmVzOiBbJ2Jlcm11ZGEtdHJpYW5nbGUtMTMzNyddLFxuICAgIGlzb2xhdGVkU3VibmV0SWRzOiB1bmRlZmluZWQsXG4gICAgaXNvbGF0ZWRTdWJuZXROYW1lczogdW5kZWZpbmVkLFxuICAgIGlzb2xhdGVkU3VibmV0Um91dGVUYWJsZUlkczogdW5kZWZpbmVkLFxuICAgIHByaXZhdGVTdWJuZXRJZHM6IHVuZGVmaW5lZCxcbiAgICBwcml2YXRlU3VibmV0TmFtZXM6IHVuZGVmaW5lZCxcbiAgICBwcml2YXRlU3VibmV0Um91dGVUYWJsZUlkczogdW5kZWZpbmVkLFxuICAgIHB1YmxpY1N1Ym5ldElkczogWydzdWItMTIzNDU2J10sXG4gICAgcHVibGljU3VibmV0TmFtZXM6IFsnUHVibGljJ10sXG4gICAgcHVibGljU3VibmV0Um91dGVUYWJsZUlkczogWydydGItMTIzNDU2J10sXG4gICAgdnBuR2F0ZXdheUlkOiB1bmRlZmluZWQsXG4gICAgc3VibmV0R3JvdXBzOiB1bmRlZmluZWQsXG4gIH0pO1xufSk7XG5cbnRlc3QoJ1JlY29nbml6ZSBwcml2YXRlIHN1Ym5ldCBieSByb3V0ZSB0YWJsZScsIGFzeW5jICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgY29uc3QgZmlsdGVyID0geyBmb286ICdiYXInIH07XG4gIGNvbnN0IHByb3ZpZGVyID0gbmV3IFZwY05ldHdvcmtDb250ZXh0UHJvdmlkZXJQbHVnaW4obW9ja1NESyk7XG5cbiAgbW9ja1ZwY0xvb2t1cCh7XG4gICAgc3VibmV0czogW1xuICAgICAgeyBTdWJuZXRJZDogJ3N1Yi0xMjM0NTYnLCBBdmFpbGFiaWxpdHlab25lOiAnYmVybXVkYS10cmlhbmdsZS0xMzM3JywgTWFwUHVibGljSXBPbkxhdW5jaDogZmFsc2UgfSxcbiAgICBdLFxuICAgIHJvdXRlVGFibGVzOiBbXG4gICAgICB7XG4gICAgICAgIEFzc29jaWF0aW9uczogW3sgU3VibmV0SWQ6ICdzdWItMTIzNDU2JyB9XSxcbiAgICAgICAgUm91dGVUYWJsZUlkOiAncnRiLTEyMzQ1NicsXG4gICAgICAgIFJvdXRlczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIERlc3RpbmF0aW9uQ2lkckJsb2NrOiAnMTAuMC4yLjAvMjYnLFxuICAgICAgICAgICAgT3JpZ2luOiAnQ3JlYXRlUm91dGUnLFxuICAgICAgICAgICAgU3RhdGU6ICdhY3RpdmUnLFxuICAgICAgICAgICAgVnBjUGVlcmluZ0Nvbm5lY3Rpb25JZDogJ3BjeC14eHh4eHgnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgRGVzdGluYXRpb25DaWRyQmxvY2s6ICcxMC4wLjEuMC8yNCcsXG4gICAgICAgICAgICBHYXRld2F5SWQ6ICdsb2NhbCcsXG4gICAgICAgICAgICBPcmlnaW46ICdDcmVhdGVSb3V0ZVRhYmxlJyxcbiAgICAgICAgICAgIFN0YXRlOiAnYWN0aXZlJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIERlc3RpbmF0aW9uQ2lkckJsb2NrOiAnMC4wLjAuMC8wJyxcbiAgICAgICAgICAgIE5hdEdhdGV3YXlJZDogJ25hdC14eHh4eHgnLFxuICAgICAgICAgICAgT3JpZ2luOiAnQ3JlYXRlUm91dGUnLFxuICAgICAgICAgICAgU3RhdGU6ICdhY3RpdmUnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIF0sXG4gIH0pO1xuXG4gIC8vIFdIRU5cbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcHJvdmlkZXIuZ2V0VmFsdWUoe1xuICAgIGFjY291bnQ6ICcxMjM0JyxcbiAgICByZWdpb246ICd1cy1lYXN0LTEnLFxuICAgIGZpbHRlcixcbiAgfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3QocmVzdWx0KS50b0VxdWFsKHtcbiAgICB2cGNJZDogJ3ZwYy0xMjM0NTY3JyxcbiAgICB2cGNDaWRyQmxvY2s6ICcxLjEuMS4xLzE2JyxcbiAgICBhdmFpbGFiaWxpdHlab25lczogWydiZXJtdWRhLXRyaWFuZ2xlLTEzMzcnXSxcbiAgICBpc29sYXRlZFN1Ym5ldElkczogdW5kZWZpbmVkLFxuICAgIGlzb2xhdGVkU3VibmV0TmFtZXM6IHVuZGVmaW5lZCxcbiAgICBpc29sYXRlZFN1Ym5ldFJvdXRlVGFibGVJZHM6IHVuZGVmaW5lZCxcbiAgICBwcml2YXRlU3VibmV0SWRzOiBbJ3N1Yi0xMjM0NTYnXSxcbiAgICBwcml2YXRlU3VibmV0TmFtZXM6IFsnUHJpdmF0ZSddLFxuICAgIHByaXZhdGVTdWJuZXRSb3V0ZVRhYmxlSWRzOiBbJ3J0Yi0xMjM0NTYnXSxcbiAgICBwdWJsaWNTdWJuZXRJZHM6IHVuZGVmaW5lZCxcbiAgICBwdWJsaWNTdWJuZXROYW1lczogdW5kZWZpbmVkLFxuICAgIHB1YmxpY1N1Ym5ldFJvdXRlVGFibGVJZHM6IHVuZGVmaW5lZCxcbiAgICB2cG5HYXRld2F5SWQ6IHVuZGVmaW5lZCxcbiAgICBzdWJuZXRHcm91cHM6IHVuZGVmaW5lZCxcbiAgfSk7XG59KTtcblxudGVzdCgnUmVjb2duaXplIGlzb2xhdGVkIHN1Ym5ldCBieSByb3V0ZSB0YWJsZScsIGFzeW5jICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgY29uc3QgZmlsdGVyID0geyBmb286ICdiYXInIH07XG4gIGNvbnN0IHByb3ZpZGVyID0gbmV3IFZwY05ldHdvcmtDb250ZXh0UHJvdmlkZXJQbHVnaW4obW9ja1NESyk7XG5cbiAgbW9ja1ZwY0xvb2t1cCh7XG4gICAgc3VibmV0czogW1xuICAgICAgeyBTdWJuZXRJZDogJ3N1Yi0xMjM0NTYnLCBBdmFpbGFiaWxpdHlab25lOiAnYmVybXVkYS10cmlhbmdsZS0xMzM3JywgTWFwUHVibGljSXBPbkxhdW5jaDogZmFsc2UgfSxcbiAgICBdLFxuICAgIHJvdXRlVGFibGVzOiBbXG4gICAgICB7XG4gICAgICAgIEFzc29jaWF0aW9uczogW3sgU3VibmV0SWQ6ICdzdWItMTIzNDU2JyB9XSxcbiAgICAgICAgUm91dGVUYWJsZUlkOiAncnRiLTEyMzQ1NicsXG4gICAgICAgIFJvdXRlczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIERlc3RpbmF0aW9uQ2lkckJsb2NrOiAnMTAuMC4xLjAvMjQnLFxuICAgICAgICAgICAgR2F0ZXdheUlkOiAnbG9jYWwnLFxuICAgICAgICAgICAgT3JpZ2luOiAnQ3JlYXRlUm91dGVUYWJsZScsXG4gICAgICAgICAgICBTdGF0ZTogJ2FjdGl2ZScsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgXSxcbiAgfSk7XG5cbiAgLy8gV0hFTlxuICBjb25zdCByZXN1bHQgPSBhd2FpdCBwcm92aWRlci5nZXRWYWx1ZSh7XG4gICAgYWNjb3VudDogJzEyMzQnLFxuICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgZmlsdGVyLFxuICB9KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoe1xuICAgIHZwY0lkOiAndnBjLTEyMzQ1NjcnLFxuICAgIHZwY0NpZHJCbG9jazogJzEuMS4xLjEvMTYnLFxuICAgIGF2YWlsYWJpbGl0eVpvbmVzOiBbJ2Jlcm11ZGEtdHJpYW5nbGUtMTMzNyddLFxuICAgIGlzb2xhdGVkU3VibmV0SWRzOiBbJ3N1Yi0xMjM0NTYnXSxcbiAgICBpc29sYXRlZFN1Ym5ldE5hbWVzOiBbJ0lzb2xhdGVkJ10sXG4gICAgaXNvbGF0ZWRTdWJuZXRSb3V0ZVRhYmxlSWRzOiBbJ3J0Yi0xMjM0NTYnXSxcbiAgICBwcml2YXRlU3VibmV0SWRzOiB1bmRlZmluZWQsXG4gICAgcHJpdmF0ZVN1Ym5ldE5hbWVzOiB1bmRlZmluZWQsXG4gICAgcHJpdmF0ZVN1Ym5ldFJvdXRlVGFibGVJZHM6IHVuZGVmaW5lZCxcbiAgICBwdWJsaWNTdWJuZXRJZHM6IHVuZGVmaW5lZCxcbiAgICBwdWJsaWNTdWJuZXROYW1lczogdW5kZWZpbmVkLFxuICAgIHB1YmxpY1N1Ym5ldFJvdXRlVGFibGVJZHM6IHVuZGVmaW5lZCxcbiAgICB2cG5HYXRld2F5SWQ6IHVuZGVmaW5lZCxcbiAgICBzdWJuZXRHcm91cHM6IHVuZGVmaW5lZCxcbiAgfSk7XG59KTtcblxuaW50ZXJmYWNlIFZwY0xvb2t1cE9wdGlvbnMge1xuICBzdWJuZXRzOiBhd3MuRUMyLlN1Ym5ldFtdO1xuICByb3V0ZVRhYmxlczogYXdzLkVDMi5Sb3V0ZVRhYmxlW107XG4gIHZwbkdhdGV3YXlzPzogYXdzLkVDMi5WcG5HYXRld2F5W107XG59XG5cbmZ1bmN0aW9uIG1vY2tWcGNMb29rdXAob3B0aW9uczogVnBjTG9va3VwT3B0aW9ucykge1xuICBjb25zdCBWcGNJZCA9ICd2cGMtMTIzNDU2Nyc7XG5cbiAgQVdTLm1vY2soJ0VDMicsICdkZXNjcmliZVZwY3MnLCAocGFyYW1zOiBhd3MuRUMyLkRlc2NyaWJlVnBjc1JlcXVlc3QsIGNiOiBBd3NDYWxsYmFjazxhd3MuRUMyLkRlc2NyaWJlVnBjc1Jlc3VsdD4pID0+IHtcbiAgICBleHBlY3QocGFyYW1zLkZpbHRlcnMpLnRvRXF1YWwoW3sgTmFtZTogJ2ZvbycsIFZhbHVlczogWydiYXInXSB9XSk7XG4gICAgcmV0dXJuIGNiKG51bGwsIHsgVnBjczogW3sgVnBjSWQsIENpZHJCbG9jazogJzEuMS4xLjEvMTYnIH1dIH0pO1xuICB9KTtcblxuICBBV1MubW9jaygnRUMyJywgJ2Rlc2NyaWJlU3VibmV0cycsIChwYXJhbXM6IGF3cy5FQzIuRGVzY3JpYmVTdWJuZXRzUmVxdWVzdCwgY2I6IEF3c0NhbGxiYWNrPGF3cy5FQzIuRGVzY3JpYmVTdWJuZXRzUmVzdWx0PikgPT4ge1xuICAgIGV4cGVjdChwYXJhbXMuRmlsdGVycykudG9FcXVhbChbeyBOYW1lOiAndnBjLWlkJywgVmFsdWVzOiBbVnBjSWRdIH1dKTtcbiAgICByZXR1cm4gY2IobnVsbCwgeyBTdWJuZXRzOiBvcHRpb25zLnN1Ym5ldHMgfSk7XG4gIH0pO1xuXG4gIEFXUy5tb2NrKCdFQzInLCAnZGVzY3JpYmVSb3V0ZVRhYmxlcycsIChwYXJhbXM6IGF3cy5FQzIuRGVzY3JpYmVSb3V0ZVRhYmxlc1JlcXVlc3QsIGNiOiBBd3NDYWxsYmFjazxhd3MuRUMyLkRlc2NyaWJlUm91dGVUYWJsZXNSZXN1bHQ+KSA9PiB7XG4gICAgZXhwZWN0KHBhcmFtcy5GaWx0ZXJzKS50b0VxdWFsKFt7IE5hbWU6ICd2cGMtaWQnLCBWYWx1ZXM6IFtWcGNJZF0gfV0pO1xuICAgIHJldHVybiBjYihudWxsLCB7IFJvdXRlVGFibGVzOiBvcHRpb25zLnJvdXRlVGFibGVzIH0pO1xuICB9KTtcblxuICBBV1MubW9jaygnRUMyJywgJ2Rlc2NyaWJlVnBuR2F0ZXdheXMnLCAocGFyYW1zOiBhd3MuRUMyLkRlc2NyaWJlVnBuR2F0ZXdheXNSZXF1ZXN0LCBjYjogQXdzQ2FsbGJhY2s8YXdzLkVDMi5EZXNjcmliZVZwbkdhdGV3YXlzUmVzdWx0PikgPT4ge1xuICAgIGV4cGVjdChwYXJhbXMuRmlsdGVycykudG9FcXVhbChbXG4gICAgICB7IE5hbWU6ICdhdHRhY2htZW50LnZwYy1pZCcsIFZhbHVlczogW1ZwY0lkXSB9LFxuICAgICAgeyBOYW1lOiAnYXR0YWNobWVudC5zdGF0ZScsIFZhbHVlczogWydhdHRhY2hlZCddIH0sXG4gICAgICB7IE5hbWU6ICdzdGF0ZScsIFZhbHVlczogWydhdmFpbGFibGUnXSB9LFxuICAgIF0pO1xuICAgIHJldHVybiBjYihudWxsLCB7IFZwbkdhdGV3YXlzOiBvcHRpb25zLnZwbkdhdGV3YXlzIH0pO1xuICB9KTtcbn1cbiJdfQ==
507
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidnBjcy50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidnBjcy50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0Esb0NBQW9DO0FBQ3BDLDJEQUFtRjtBQUNuRiwrQ0FBbUQ7QUFFbkQsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7QUFFdkMsTUFBTSxPQUFPLEdBQUcsSUFBSSwwQkFBZSxFQUFFLENBQUM7QUFJdEMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO0lBQ2YsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2QsSUFBSSxFQUFFLENBQUM7QUFDVCxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyw0QkFBNEIsRUFBRSxLQUFLLElBQUksRUFBRTtJQUM1QyxRQUFRO0lBQ1IsTUFBTSxNQUFNLEdBQUcsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDOUIsTUFBTSxRQUFRLEdBQUcsSUFBSSxzQ0FBK0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUU5RCxhQUFhLENBQUM7UUFDWixPQUFPLEVBQUU7WUFDUCxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsdUJBQXVCLEVBQUUsbUJBQW1CLEVBQUUsSUFBSSxFQUFFO1lBQ2hHLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSx1QkFBdUIsRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUU7U0FDbEc7UUFDRCxXQUFXLEVBQUU7WUFDWDtnQkFDRSxZQUFZLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsQ0FBQztnQkFDMUMsWUFBWSxFQUFFLFlBQVk7Z0JBQzFCLE1BQU0sRUFBRTtvQkFDTjt3QkFDRSxvQkFBb0IsRUFBRSxZQUFZO3dCQUNsQyxTQUFTLEVBQUUsT0FBTzt3QkFDbEIsTUFBTSxFQUFFLGtCQUFrQjt3QkFDMUIsS0FBSyxFQUFFLFFB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LFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDeEQsQ0FBQyxDQUFDLENBQUM7SUFFSCxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxxQkFBcUIsRUFBRSxDQUFDLE1BQTBDLEVBQUUsRUFBa0QsRUFBRSxFQUFFO1FBQ3hJLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDO1lBQzdCLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzlDLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ2xELEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRTtTQUN6QyxDQUFDLENBQUM7UUFDSCxPQUFPLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDeEQsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgYXdzIGZyb20gJ2F3cy1zZGsnO1xuaW1wb3J0ICogYXMgQVdTIGZyb20gJ2F3cy1zZGstbW9jayc7XG5pbXBvcnQgeyBWcGNOZXR3b3JrQ29udGV4dFByb3ZpZGVyUGx1Z2luIH0gZnJvbSAnLi4vLi4vbGliL2NvbnRleHQtcHJvdmlkZXJzL3ZwY3MnO1xuaW1wb3J0IHsgTW9ja1Nka1Byb3ZpZGVyIH0gZnJvbSAnLi4vdXRpbC9tb2NrLXNkayc7XG5cbkFXUy5zZXRTREsocmVxdWlyZS5yZXNvbHZlKCdhd3Mtc2RrJykpO1xuXG5jb25zdCBtb2NrU0RLID0gbmV3IE1vY2tTZGtQcm92aWRlcigpO1xuXG50eXBlIEF3c0NhbGxiYWNrPFQ+ID0gKGVycjogRXJyb3IgfCBudWxsLCB2YWw6IFQpID0+IHZvaWQ7XG5cbmFmdGVyRWFjaChkb25lID0+IHtcbiAgQVdTLnJlc3RvcmUoKTtcbiAgZG9uZSgpO1xufSk7XG5cbnRlc3QoJ2xvb2tzIHVwIHRoZSByZXF1ZXN0ZWQgVlBDJywgYXN5bmMgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBjb25zdCBmaWx0ZXIgPSB7IGZvbzogJ2JhcicgfTtcbiAgY29uc3QgcHJvdmlkZXIgPSBuZXcgVnBjTmV0d29ya0NvbnRleHRQcm92aWRlclBsdWdpbihtb2NrU0RLKTtcblxuICBtb2NrVnBjTG9va3VwKHtcbiAgICBzdWJuZXRzOiBbXG4gICAgICB7IFN1Ym5ldElkOiAnc3ViLTEyMzQ1NicsIEF2YWlsYWJpbGl0eVpvbmU6ICdiZXJtdWRhLXRyaWFuZ2xlLTEzMzcnLCBNYXBQdWJsaWNJcE9uTGF1bmNoOiB0cnVlIH0sXG4gICAgICB7IFN1Ym5ldElkOiAnc3ViLTc4OTAxMicsIEF2YWlsYWJpbGl0eVpvbmU6ICdiZXJtdWRhLXRyaWFuZ2xlLTEzMzcnLCBNYXBQdWJsaWNJcE9uTGF1bmNoOiBmYWxzZSB9LFxuICAgIF0sXG4gICAgcm91dGVUYWJsZXM6IFtcbiAgICAgIHtcbiAgICAgICAgQXNzb2NpYXRpb25zOiBbeyBTdWJuZXRJZDogJ3N1Yi0xMjM0NTYnIH1dLFxuICAgICAgICBSb3V0ZVRhYmxlSWQ6ICdydGItMTIzNDU2JyxcbiAgICAgICAgUm91dGVzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgRGVzdGluYXRpb25DaWRyQmxvY2s6ICcxLjEuMS4xLzI0JyxcbiAgICAgICAgICAgIEdhdGV3YXlJZDogJ2xvY2FsJyxcbiAgICAgICAgICAgIE9yaWdpbjogJ0NyZWF0ZVJvdXRlVGFibGUnLFxuICAgICAgICAgICAgU3RhdGU6ICdhY3RpdmUnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgRGVzdGluYXRpb25DaWRyQmxvY2s6ICcwLjAuMC4wLzAnLFxuICAgICAgICAgICAgR2F0ZXdheUlkOiAnaWd3LXh4eHh4eCcsXG4gICAgICAgICAgICBPcmlnaW46ICdDcmVhdGVSb3V0ZScsXG4gICAgICAgICAgICBTdGF0ZTogJ2FjdGl2ZScsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIEFzc29jaWF0aW9uczogW3sgU3VibmV0SWQ6ICdzdWItNzg5MDEyJyB9XSxcbiAgICAgICAgUm91dGVUYWJsZUlkOiAncnRiLTc4OTAxMicsXG4gICAgICAgIFJvdXRlczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIERlc3RpbmF0aW9uQ2lkckJsb2NrOiAnMS4xLjIuMS8yNCcsXG4gICAgICAgICAgICBHYXRld2F5SWQ6ICdsb2NhbCcsXG4gICAgICAgICAgICBPcmlnaW46ICdDcmVhdGVSb3V0ZVRhYmxlJyxcbiAgICAgICAgICAgIFN0YXRlOiAnYWN0aXZlJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIERlc3RpbmF0aW9uQ2lkckJsb2NrOiAnMC4wLjAuMC8wJyxcbiAgICAgICAgICAgIE5hdEdhdGV3YXlJZDogJ25hdC14eHh4eHgnLFxuICAgICAgICAgICAgT3JpZ2luOiAnQ3JlYXRlUm91dGUnLFxuICAgICAgICAgICAgU3RhdGU6ICdhY3RpdmUnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIF0sXG4gICAgdnBuR2F0ZXdheXM6IFt7IFZwbkdhdGV3YXlJZDogJ2d3LWFiY2RlZicgfV0sXG5cbiAgfSk7XG5cbiAgLy8gV0hFTlxuICBjb25zdCByZXN1bHQgPSBhd2FpdCBwcm92aWRlci5nZXRWYWx1ZSh7XG4gICAgYWNjb3VudDogJzEyMzQnLFxuICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgZmlsdGVyLFxuICB9KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoe1xuICAgIHZwY0lkOiAndnBjLTEyMzQ1NjcnLFxuICAgIHZwY0NpZHJCbG9jazogJzEuMS4xLjEvMTYnLFxuICAgIGF2YWlsYWJpbGl0eVpvbmVzOiBbJ2Jlcm11ZGEtdHJpYW5nbGUtMTMzNyddLFxuICAgIGlzb2xhdGVkU3VibmV0SWRzOiB1bmRlZmluZWQsXG4gICAgaXNvbGF0ZWRTdWJuZXROYW1lczogdW5kZWZpbmVkLFxuICAgIGlzb2xhdGVkU3VibmV0Um91dGVUYWJsZUlkczogdW5kZWZpbmVkLFxuICAgIHByaXZhdGVTdWJuZXRJZHM6IFsnc3ViLTc4OTAxMiddLFxuICAgIHByaXZhdGVTdWJuZXROYW1lczogWydQcml2YXRlJ10sXG4gICAgcHJpdmF0ZVN1Ym5ldFJvdXRlVGFibGVJZHM6IFsncnRiLTc4OTAxMiddLFxuICAgIHB1YmxpY1N1Ym5ldElkczogWydzdWItMTIzNDU2J10sXG4gICAgcHVibGljU3VibmV0TmFtZXM6IFsnUHVibGljJ10sXG4gICAgcHVibGljU3VibmV0Um91dGVUYWJsZUlkczogWydydGItMTIzNDU2J10sXG4gICAgdnBuR2F0ZXdheUlkOiAnZ3ctYWJjZGVmJyxcbiAgICBzdWJuZXRHcm91cHM6IHVuZGVmaW5lZCxcbiAgfSk7XG59KTtcblxudGVzdCgndGhyb3dzIHdoZW4gbm8gc3VjaCBWUEMgaXMgZm91bmQnLCBhc3luYyAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIGNvbnN0IGZpbHRlciA9IHsgZm9vOiAnYmFyJyB9O1xuICBjb25zdCBwcm92aWRlciA9IG5ldyBWcGNOZXR3b3JrQ29udGV4dFByb3ZpZGVyUGx1Z2luKG1vY2tTREspO1xuXG4gIEFXUy5tb2NrKCdFQzInLCAnZGVzY3JpYmVWcGNzJywgKHBhcmFtczogYXdzLkVDMi5EZXNjcmliZVZwY3NSZXF1ZXN0LCBjYjogQXdzQ2FsbGJhY2s8YXdzLkVDMi5EZXNjcmliZVZwY3NSZXN1bHQ+KSA9PiB7XG4gICAgZXhwZWN0KHBhcmFtcy5GaWx0ZXJzKS50b0VxdWFsKFt7IE5hbWU6ICdmb28nLCBWYWx1ZXM6IFsnYmFyJ10gfV0pO1xuICAgIHJldHVybiBjYihudWxsLCB7fSk7XG4gIH0pO1xuXG4gIC8vIFdIRU5cbiAgYXdhaXQgZXhwZWN0KHByb3ZpZGVyLmdldFZhbHVlKHtcbiAgICBhY2NvdW50OiAnMTIzNCcsXG4gICAgcmVnaW9uOiAndXMtZWFzdC0xJyxcbiAgICBmaWx0ZXIsXG4gIH0pKS5yZWplY3RzLnRvVGhyb3coL0NvdWxkIG5vdCBmaW5kIGFueSBWUENzIG1hdGNoaW5nLyk7XG59KTtcblxudGVzdCgndGhyb3dzIHdoZW4gc3VibmV0IHdpdGggc3VibmV0R3JvdXBOYW1lVGFnIG5vdCBmb3VuZCcsIGFzeW5jICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgY29uc3QgZmlsdGVyID0geyBmb286ICdiYXInIH07XG4gIGNvbnN0IHByb3ZpZGVyID0gbmV3IFZwY05ldHdvcmtDb250ZXh0UHJvdmlkZXJQbHVnaW4obW9ja1NESyk7XG5cbiAgbW9ja1ZwY0xvb2t1cCh7XG4gICAgc3VibmV0czogW1xuICAgICAgeyBTdWJuZXRJZDogJ3N1Yi0xMjM0NTYnLCBBdmFpbGFiaWxpdHlab25lOiAnYmVybXVkYS10cmlhbmdsZS0xMzM3JywgTWFwUHVibGljSXBPbkxhdW5jaDogdHJ1ZSB9LFxuICAgICAgeyBTdWJuZXRJZDogJ3N1Yi03ODkwMTInLCBBdmFpbGFiaWxpdHlab25lOiAnYmVybXVkYS10cmlhbmdsZS0xMzM3JywgTWFwUHVibGljSXBPbkxhdW5jaDogZmFsc2UgfSxcbiAgICBdLFxuICAgIHJvdXRlVGFibGVzOiBbXG4gICAgICB7XG4gICAgICAgIEFzc29jaWF0aW9uczogW3sgU3VibmV0SWQ6ICdzdWItMTIzNDU2JyB9XSxcbiAgICAgICAgUm91dGVUYWJsZUlkOiAncnRiLTEyMzQ1NicsXG4gICAgICAgIFJvdXRlczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIERlc3RpbmF0aW9uQ2lkckJsb2NrOiAnMS4xLjEuMS8yNCcsXG4gICAgICAgICAgICBHYXRld2F5SWQ6ICdsb2NhbCcsXG4gICAgICAgICAgICBPcmlnaW46ICdDcmVhdGVSb3V0ZVRhYmxlJyxcbiAgICAgICAgICAgIFN0YXRlOiAnYWN0aXZlJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIERlc3RpbmF0aW9uQ2lkckJsb2NrOiAnMC4wLjAuMC8wJyxcbiAgICAgICAgICAgIEdhdGV3YXlJZDogJ2lndy14eHh4eHgnLFxuICAgICAgICAgICAgT3JpZ2luOiAnQ3JlYXRlUm91dGUnLFxuICAgICAgICAgICAgU3RhdGU6ICdhY3RpdmUnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBBc3NvY2lhdGlvbnM6IFt7IFN1Ym5ldElkOiAnc3ViLTc4OTAxMicgfV0sXG4gICAgICAgIFJvdXRlVGFibGVJZDogJ3J0Yi03ODkwMTInLFxuICAgICAgICBSb3V0ZXM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBEZXN0aW5hdGlvbkNpZHJCbG9jazogJzEuMS4yLjEvMjQnLFxuICAgICAgICAgICAgR2F0ZXdheUlkOiAnbG9jYWwnLFxuICAgICAgICAgICAgT3JpZ2luOiAnQ3JlYXRlUm91dGVUYWJsZScsXG4gICAgICAgICAgICBTdGF0ZTogJ2FjdGl2ZScsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBEZXN0aW5hdGlvbkNpZHJCbG9jazogJzAuMC4wLjAvMCcsXG4gICAgICAgICAgICBOYXRHYXRld2F5SWQ6ICduYXQteHh4eHh4JyxcbiAgICAgICAgICAgIE9yaWdpbjogJ0NyZWF0ZVJvdXRlJyxcbiAgICAgICAgICAgIFN0YXRlOiAnYWN0aXZlJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICBdLFxuICAgIHZwbkdhdGV3YXlzOiBbeyBWcG5HYXRld2F5SWQ6ICdndy1hYmNkZWYnIH1dLFxuICB9KTtcblxuICAvLyBXSEVOXG4gIGF3YWl0IGV4cGVjdChwcm92aWRlci5nZXRWYWx1ZSh7XG4gICAgYWNjb3VudDogJzEyMzQnLFxuICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgc3VibmV0R3JvdXBOYW1lVGFnOiAnRE9FU19OT1RfRVhJU1QnLFxuICAgIGZpbHRlcixcbiAgfSkpLnJlamVjdHMudG9UaHJvdygvSW52YWxpZCBzdWJuZXRHcm91cE5hbWVUYWc6IFN1Ym5ldCAuKiBkb2VzIG5vdCBoYXZlIGFuIGFzc29jaWF0ZWQgdGFnIHdpdGggS2V5PSdET0VTX05PVF9FWElTVCcvKTtcbn0pO1xuXG50ZXN0KCdkb2VzIG5vdCB0aHJvdyB3aGVuIHN1Ym5ldCB3aXRoIHN1Ym5ldEdyb3VwTmFtZVRhZyBpcyBmb3VuZCcsIGFzeW5jICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgY29uc3QgZmlsdGVyID0geyBmb286ICdiYXInIH07XG4gIGNvbnN0IHByb3ZpZGVyID0gbmV3IFZwY05ldHdvcmtDb250ZXh0UHJvdmlkZXJQbHVnaW4obW9ja1NESyk7XG5cbiAgbW9ja1ZwY0xvb2t1cCh7XG4gICAgc3VibmV0czogW1xuICAgICAgeyBTdWJuZXRJZDogJ3N1Yi0xMjM0NTYnLCBBdmFpbGFiaWxpdHlab25lOiAnYmVybXVkYS10cmlhbmdsZS0xMzM3JywgTWFwUHVibGljSXBPbkxhdW5jaDogdHJ1ZSwgVGFnczogW3sgS2V5OiAnRE9FU19FWElTVCcsIFZhbHVlOiAnU3VibmV0TmFtZTEnIH1dIH0sXG4gICAgICB7IFN1Ym5ldElkOiAnc3ViLTc4OTAxMicsIEF2YWlsYWJpbGl0eVpvbmU6ICdiZXJtdWRhLXRyaWFuZ2xlLTEzMzcnLCBNYXBQdWJsaWNJcE9uTGF1bmNoOiBmYWxzZSwgVGFnczogW3sgS2V5OiAnRE9FU19FWElTVCcsIFZhbHVlOiAnU3VibmV0TmFtZTInIH1dIH0sXG4gICAgXSxcbiAgICByb3V0ZVRhYmxlczogW1xuICAgICAge1xuICAgICAgICBBc3NvY2lhdGlvbnM6IFt7IFN1Ym5ldElkOiAnc3ViLTEyMzQ1NicgfV0sXG4gICAgICAgIFJvdXRlVGFibGVJZDogJ3J0Yi0xMjM0NTYnLFxuICAgICAgICBSb3V0ZXM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBEZXN0aW5hdGlvbkNpZHJCbG9jazogJzEuMS4xLjEvMjQnLFxuICAgICAgICAgICAgR2F0ZXdheUlkOiAnbG9jYWwnLFxuICAgICAgICAgICAgT3JpZ2luOiAnQ3JlYXRlUm91dGVUYWJsZScsXG4gICAgICAgICAgICBTdGF0ZTogJ2FjdGl2ZScsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBEZXN0aW5hdGlvbkNpZHJCbG9jazogJzAuMC4wLjAvMCcsXG4gICAgICAgICAgICBHYXRld2F5SWQ6ICdpZ3cteHh4eHh4JyxcbiAgICAgICAgICAgIE9yaWdpbjogJ0NyZWF0ZVJvdXRlJyxcbiAgICAgICAgICAgIFN0YXRlOiAnYWN0aXZlJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgQXNzb2NpYXRpb25zOiBbeyBTdWJuZXRJZDogJ3N1Yi03ODkwMTInIH1dLFxuICAgICAgICBSb3V0ZVRhYmxlSWQ6ICdydGItNzg5MDEyJyxcbiAgICAgICAgUm91dGVzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgRGVzdGluYXRpb25DaWRyQmxvY2s6ICcxLjEuMi4xLzI0JyxcbiAgICAgICAgICAgIEdhdGV3YXlJZDogJ2xvY2FsJyxcbiAgICAgICAgICAgIE9yaWdpbjogJ0NyZWF0ZVJvdXRlVGFibGUnLFxuICAgICAgICAgICAgU3RhdGU6ICdhY3RpdmUnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgRGVzdGluYXRpb25DaWRyQmxvY2s6ICcwLjAuMC4wLzAnLFxuICAgICAgICAgICAgTmF0R2F0ZXdheUlkOiAnbmF0LXh4eHh4eCcsXG4gICAgICAgICAgICBPcmlnaW46ICdDcmVhdGVSb3V0ZScsXG4gICAgICAgICAgICBTdGF0ZTogJ2FjdGl2ZScsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICB2cG5HYXRld2F5czogW3sgVnBuR2F0ZXdheUlkOiAnZ3ctYWJjZGVmJyB9XSxcbiAgfSk7XG5cbiAgLy8gV0hFTlxuICBjb25zdCByZXN1bHQgPSBhd2FpdCBwcm92aWRlci5nZXRWYWx1ZSh7XG4gICAgYWNjb3VudDogJzEyMzQnLFxuICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgc3VibmV0R3JvdXBOYW1lVGFnOiAnRE9FU19FWElTVCcsXG4gICAgZmlsdGVyLFxuICB9KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoe1xuICAgIHZwY0lkOiAndnBjLTEyMzQ1NjcnLFxuICAgIHZwY0NpZHJCbG9jazogJzEuMS4xLjEvMTYnLFxuICAgIGF2YWlsYWJpbGl0eVpvbmVzOiBbJ2Jlcm11ZGEtdHJpYW5nbGUtMTMzNyddLFxuICAgIGlzb2xhdGVkU3VibmV0SWRzOiB1bmRlZmluZWQsXG4gICAgaXNvbGF0ZWRTdWJuZXROYW1lczogdW5kZWZpbmVkLFxuICAgIGlzb2xhdGVkU3VibmV0Um91dGVUYWJsZUlkczogdW5kZWZpbmVkLFxuICAgIHByaXZhdGVTdWJuZXRJZHM6IFsnc3ViLTc4OTAxMiddLFxuICAgIHByaXZhdGVTdWJuZXROYW1lczogWydTdWJuZXROYW1lMiddLFxuICAgIHByaXZhdGVTdWJuZXRSb3V0ZVRhYmxlSWRzOiBbJ3J0Yi03ODkwMTInXSxcbiAgICBwdWJsaWNTdWJuZXRJZHM6IFsnc3ViLTEyMzQ1NiddLFxuICAgIHB1YmxpY1N1Ym5ldE5hbWVzOiBbJ1N1Ym5ldE5hbWUxJ10sXG4gICAgcHVibGljU3VibmV0Um91dGVUYWJsZUlkczogWydydGItMTIzNDU2J10sXG4gICAgdnBuR2F0ZXdheUlkOiAnZ3ctYWJjZGVmJyxcbiAgICBzdWJuZXRHcm91cHM6IHVuZGVmaW5lZCxcbiAgfSk7XG59KTtcblxudGVzdCgndGhyb3dzIHdoZW4gbXVsdGlwbGUgVlBDcyBhcmUgZm91bmQnLCBhc3luYyAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIGNvbnN0IGZpbHRlciA9IHsgZm9vOiAnYmFyJyB9O1xuICBjb25zdCBwcm92aWRlciA9IG5ldyBWcGNOZXR3b3JrQ29udGV4dFByb3ZpZGVyUGx1Z2luKG1vY2tTREspO1xuXG4gIEFXUy5tb2NrKCdFQzInLCAnZGVzY3JpYmVWcGNzJywgKHBhcmFtczogYXdzLkVDMi5EZXNjcmliZVZwY3NSZXF1ZXN0LCBjYjogQXdzQ2FsbGJhY2s8YXdzLkVDMi5EZXNjcmliZVZwY3NSZXN1bHQ+KSA9PiB7XG4gICAgZXhwZWN0KHBhcmFtcy5GaWx0ZXJzKS50b0VxdWFsKFt7IE5hbWU6ICdmb28nLCBWYWx1ZXM6IFsnYmFyJ10gfV0pO1xuICAgIHJldHVybiBjYihudWxsLCB7IFZwY3M6IFt7IFZwY0lkOiAndnBjLTEnIH0sIHsgVnBjSWQ6ICd2cGMtMicgfV0gfSk7XG4gIH0pO1xuXG4gIC8vIFdIRU5cbiAgYXdhaXQgZXhwZWN0KHByb3ZpZGVyLmdldFZhbHVlKHtcbiAgICBhY2NvdW50OiAnMTIzNCcsXG4gICAgcmVnaW9uOiAndXMtZWFzdC0xJyxcbiAgICBmaWx0ZXIsXG4gIH0pKS5yZWplY3RzLnRvVGhyb3coL0ZvdW5kIDIgVlBDcyBtYXRjaGluZy8pO1xufSk7XG5cbnRlc3QoJ3VzZXMgdGhlIFZQQyBtYWluIHJvdXRlIHRhYmxlIHdoZW4gYSBzdWJuZXQgaGFzIG5vIHNwZWNpZmljIGFzc29jaWF0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBjb25zdCBmaWx0ZXIgPSB7IGZvbzogJ2JhcicgfTtcbiAgY29uc3QgcHJvdmlkZXIgPSBuZXcgVnBjTmV0d29ya0NvbnRleHRQcm92aWRlclBsdWdpbihtb2NrU0RLKTtcblxuICBtb2NrVnBjTG9va3VwKHtcbiAgICBzdWJuZXRzOiBbXG4gICAgICB7IFN1Ym5ldElkOiAnc3ViLTEyMzQ1NicsIEF2YWlsYWJpbGl0eVpvbmU6ICdiZXJtdWRhLXRyaWFuZ2xlLTEzMzcnLCBNYXBQdWJsaWNJcE9uTGF1bmNoOiB0cnVlIH0sXG4gICAgICB7IFN1Ym5ldElkOiAnc3ViLTc4OTAxMicsIEF2YWlsYWJpbGl0eVpvbmU6ICdiZXJtdWRhLXRyaWFuZ2xlLTEzMzcnLCBNYXBQdWJsaWNJcE9uTGF1bmNoOiBmYWxzZSB9LFxuICAgIF0sXG4gICAgcm91dGVUYWJsZXM6IFtcbiAgICAgIHtcbiAgICAgICAgQXNzb2NpYXRpb25zOiBbeyBTdWJuZXRJZDogJ3N1Yi0xMjM0NTYnIH1dLFxuICAgICAgICBSb3V0ZVRhYmxlSWQ6ICdydGItMTIzNDU2JyxcbiAgICAgICAgUm91dGVzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgRGVzdGluYXRpb25DaWRyQmxvY2s6ICcxLjEuMS4xLzI0JyxcbiAgICAgICAgICAgIEdhdGV3YXlJZDogJ2xvY2FsJyxcbiAgICAgICAgICAgIE9yaWdpbjogJ0NyZWF0ZVJvdXRlVGFibGUnLFxuICAgICAgICAgICAgU3RhdGU6ICdhY3RpdmUnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgRGVzdGluYXRpb25DaWRyQmxvY2s6ICcwLjAuMC4wLzAnLFxuICAgICAgICAgICAgR2F0ZXdheUlkOiAnaWd3LXh4eHh4eCcsXG4gICAgICAgICAgICBPcmlnaW46ICdDcmVhdGVSb3V0ZScsXG4gICAgICAgICAgICBTdGF0ZTogJ2FjdGl2ZScsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIEFzc29jaWF0aW9uczogW3sgTWFpbjogdHJ1ZSB9XSxcbiAgICAgICAgUm91dGVUYWJsZUlkOiAncnRiLTc4OTAxMicsXG4gICAgICAgIFJvdXRlczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIERlc3RpbmF0aW9uQ2lkckJsb2NrOiAnMS4xLjIuMS8yNCcsXG4gICAgICAgICAgICBHYXRld2F5SWQ6ICdsb2NhbCcsXG4gICAgICAgICAgICBPcmlnaW46ICdDcmVhdGVSb3V0ZVRhYmxlJyxcbiAgICAgICAgICAgIFN0YXRlOiAnYWN0aXZlJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIERlc3RpbmF0aW9uQ2lkckJsb2NrOiAnMC4wLjAuMC8wJyxcbiAgICAgICAgICAgIE5hdEdhdGV3YXlJZDogJ25hdC14eHh4eHgnLFxuICAgICAgICAgICAgT3JpZ2luOiAnQ3JlYXRlUm91dGUnLFxuICAgICAgICAgICAgU3RhdGU6ICdhY3RpdmUnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIF0sXG4gICAgdnBuR2F0ZXdheXM6IFt7IFZwbkdhdGV3YXlJZDogJ2d3LWFiY2RlZicgfV0sXG4gIH0pO1xuXG4gIC8vIFdIRU5cbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcHJvdmlkZXIuZ2V0VmFsdWUoe1xuICAgIGFjY291bnQ6ICcxMjM0JyxcbiAgICByZWdpb246ICd1cy1lYXN0LTEnLFxuICAgIGZpbHRlcixcbiAgfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3QocmVzdWx0KS50b0VxdWFsKHtcbiAgICB2cGNJZDogJ3ZwYy0xMjM0NTY3JyxcbiAgICB2cGNDaWRyQmxvY2s6ICcxLjEuMS4xLzE2JyxcbiAgICBhdmFpbGFiaWxpdHlab25lczogWydiZXJtdWRhLXRyaWFuZ2xlLTEzMzcnXSxcbiAgICBpc29sYXRlZFN1Ym5ldElkczogdW5kZWZpbmVkLFxuICAgIGlzb2xhdGVkU3VibmV0TmFtZXM6IHVuZGVmaW5lZCxcbiAgICBpc29sYXRlZFN1Ym5ldFJvdXRlVGFibGVJZHM6IHVuZGVmaW5lZCxcbiAgICBwcml2YXRlU3VibmV0SWRzOiBbJ3N1Yi03ODkwMTInXSxcbiAgICBwcml2YXRlU3VibmV0TmFtZXM6IFsnUHJpdmF0ZSddLFxuICAgIHByaXZhdGVTdWJuZXRSb3V0ZVRhYmxlSWRzOiBbJ3J0Yi03ODkwMTInXSxcbiAgICBwdWJsaWNTdWJuZXRJZHM6IFsnc3ViLTEyMzQ1NiddLFxuICAgIHB1YmxpY1N1Ym5ldE5hbWVzOiBbJ1B1YmxpYyddLFxuICAgIHB1YmxpY1N1Ym5ldFJvdXRlVGFibGVJZHM6IFsncnRiLTEyMzQ1NiddLFxuICAgIHZwbkdhdGV3YXlJZDogJ2d3LWFiY2RlZicsXG4gICAgc3VibmV0R3JvdXBzOiB1bmRlZmluZWQsXG4gIH0pO1xufSk7XG5cbnRlc3QoJ1JlY29nbml6ZSBwdWJsaWMgc3VibmV0IGJ5IHJvdXRlIHRhYmxlJywgYXN5bmMgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBjb25zdCBmaWx0ZXIgPSB7IGZvbzogJ2JhcicgfTtcbiAgY29uc3QgcHJvdmlkZXIgPSBuZXcgVnBjTmV0d29ya0NvbnRleHRQcm92aWRlclBsdWdpbihtb2NrU0RLKTtcblxuICBtb2NrVnBjTG9va3VwKHtcbiAgICBzdWJuZXRzOiBbXG4gICAgICB7IFN1Ym5ldElkOiAnc3ViLTEyMzQ1NicsIEF2YWlsYWJpbGl0eVpvbmU6ICdiZXJtdWRhLXRyaWFuZ2xlLTEzMzcnLCBNYXBQdWJsaWNJcE9uTGF1bmNoOiBmYWxzZSB9LFxuICAgIF0sXG4gICAgcm91dGVUYWJsZXM6IFtcbiAgICAgIHtcbiAgICAgICAgQXNzb2NpYXRpb25zOiBbeyBTdWJuZXRJZDogJ3N1Yi0xMjM0NTYnIH1dLFxuICAgICAgICBSb3V0ZVRhYmxlSWQ6ICdydGItMTIzNDU2JyxcbiAgICAgICAgUm91dGVzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgRGVzdGluYXRpb25DaWRyQmxvY2s6ICcxMC4wLjIuMC8yNicsXG4gICAgICAgICAgICBPcmlnaW46ICdDcmVhdGVSb3V0ZScsXG4gICAgICAgICAgICBTdGF0ZTogJ2FjdGl2ZScsXG4gICAgICAgICAgICBWcGNQZWVyaW5nQ29ubmVjdGlvbklkOiAncGN4LXh4eHh4eCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBEZXN0aW5hdGlvbkNpZHJCbG9jazogJzEwLjAuMS4wLzI0JyxcbiAgICAgICAgICAgIEdhdGV3YXlJZDogJ2xvY2FsJyxcbiAgICAgICAgICAgIE9yaWdpbjogJ0NyZWF0ZVJvdXRlVGFibGUnLFxuICAgICAgICAgICAgU3RhdGU6ICdhY3RpdmUnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgRGVzdGluYXRpb25DaWRyQmxvY2s6ICcwLjAuMC4wLzAnLFxuICAgICAgICAgICAgR2F0ZXdheUlkOiAnaWd3LXh4eHh4eCcsXG4gICAgICAgICAgICBPcmlnaW46ICdDcmVhdGVSb3V0ZScsXG4gICAgICAgICAgICBTdGF0ZTogJ2FjdGl2ZScsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgXSxcbiAgfSk7XG5cbiAgLy8gV0hFTlxuICBjb25zdCByZXN1bHQgPSBhd2FpdCBwcm92aWRlci5nZXRWYWx1ZSh7XG4gICAgYWNjb3VudDogJzEyMzQnLFxuICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgZmlsdGVyLFxuICB9KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoe1xuICAgIHZwY0lkOiAndnBjLTEyMzQ1NjcnLFxuICAgIHZwY0NpZHJCbG9jazogJzEuMS4xLjEvMTYnLFxuICAgIGF2YWlsYWJpbGl0eVpvbmVzOiBbJ2Jlcm11ZGEtdHJpYW5nbGUtMTMzNyddLFxuICAgIGlzb2xhdGVkU3VibmV0SWRzOiB1bmRlZmluZWQsXG4gICAgaXNvbGF0ZWRTdWJuZXROYW1lczogdW5kZWZpbmVkLFxuICAgIGlzb2xhdGVkU3VibmV0Um91dGVUYWJsZUlkczogdW5kZWZpbmVkLFxuICAgIHByaXZhdGVTdWJuZXRJZHM6IHVuZGVmaW5lZCxcbiAgICBwcml2YXRlU3VibmV0TmFtZXM6IHVuZGVmaW5lZCxcbiAgICBwcml2YXRlU3VibmV0Um91dGVUYWJsZUlkczogdW5kZWZpbmVkLFxuICAgIHB1YmxpY1N1Ym5ldElkczogWydzdWItMTIzNDU2J10sXG4gICAgcHVibGljU3VibmV0TmFtZXM6IFsnUHVibGljJ10sXG4gICAgcHVibGljU3VibmV0Um91dGVUYWJsZUlkczogWydydGItMTIzNDU2J10sXG4gICAgdnBuR2F0ZXdheUlkOiB1bmRlZmluZWQsXG4gICAgc3VibmV0R3JvdXBzOiB1bmRlZmluZWQsXG4gIH0pO1xufSk7XG5cbnRlc3QoJ1JlY29nbml6ZSBwcml2YXRlIHN1Ym5ldCBieSByb3V0ZSB0YWJsZScsIGFzeW5jICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgY29uc3QgZmlsdGVyID0geyBmb286ICdiYXInIH07XG4gIGNvbnN0IHByb3ZpZGVyID0gbmV3IFZwY05ldHdvcmtDb250ZXh0UHJvdmlkZXJQbHVnaW4obW9ja1NESyk7XG5cbiAgbW9ja1ZwY0xvb2t1cCh7XG4gICAgc3VibmV0czogW1xuICAgICAgeyBTdWJuZXRJZDogJ3N1Yi0xMjM0NTYnLCBBdmFpbGFiaWxpdHlab25lOiAnYmVybXVkYS10cmlhbmdsZS0xMzM3JywgTWFwUHVibGljSXBPbkxhdW5jaDogZmFsc2UgfSxcbiAgICBdLFxuICAgIHJvdXRlVGFibGVzOiBbXG4gICAgICB7XG4gICAgICAgIEFzc29jaWF0aW9uczogW3sgU3VibmV0SWQ6ICdzdWItMTIzNDU2JyB9XSxcbiAgICAgICAgUm91dGVUYWJsZUlkOiAncnRiLTEyMzQ1NicsXG4gICAgICAgIFJvdXRlczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIERlc3RpbmF0aW9uQ2lkckJsb2NrOiAnMTAuMC4yLjAvMjYnLFxuICAgICAgICAgICAgT3JpZ2luOiAnQ3JlYXRlUm91dGUnLFxuICAgICAgICAgICAgU3RhdGU6ICdhY3RpdmUnLFxuICAgICAgICAgICAgVnBjUGVlcmluZ0Nvbm5lY3Rpb25JZDogJ3BjeC14eHh4eHgnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgRGVzdGluYXRpb25DaWRyQmxvY2s6ICcxMC4wLjEuMC8yNCcsXG4gICAgICAgICAgICBHYXRld2F5SWQ6ICdsb2NhbCcsXG4gICAgICAgICAgICBPcmlnaW46ICdDcmVhdGVSb3V0ZVRhYmxlJyxcbiAgICAgICAgICAgIFN0YXRlOiAnYWN0aXZlJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIERlc3RpbmF0aW9uQ2lkckJsb2NrOiAnMC4wLjAuMC8wJyxcbiAgICAgICAgICAgIE5hdEdhdGV3YXlJZDogJ25hdC14eHh4eHgnLFxuICAgICAgICAgICAgT3JpZ2luOiAnQ3JlYXRlUm91dGUnLFxuICAgICAgICAgICAgU3RhdGU6ICdhY3RpdmUnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIF0sXG4gIH0pO1xuXG4gIC8vIFdIRU5cbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcHJvdmlkZXIuZ2V0VmFsdWUoe1xuICAgIGFjY291bnQ6ICcxMjM0JyxcbiAgICByZWdpb246ICd1cy1lYXN0LTEnLFxuICAgIGZpbHRlcixcbiAgfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3QocmVzdWx0KS50b0VxdWFsKHtcbiAgICB2cGNJZDogJ3ZwYy0xMjM0NTY3JyxcbiAgICB2cGNDaWRyQmxvY2s6ICcxLjEuMS4xLzE2JyxcbiAgICBhdmFpbGFiaWxpdHlab25lczogWydiZXJtdWRhLXRyaWFuZ2xlLTEzMzcnXSxcbiAgICBpc29sYXRlZFN1Ym5ldElkczogdW5kZWZpbmVkLFxuICAgIGlzb2xhdGVkU3VibmV0TmFtZXM6IHVuZGVmaW5lZCxcbiAgICBpc29sYXRlZFN1Ym5ldFJvdXRlVGFibGVJZHM6IHVuZGVmaW5lZCxcbiAgICBwcml2YXRlU3VibmV0SWRzOiBbJ3N1Yi0xMjM0NTYnXSxcbiAgICBwcml2YXRlU3VibmV0TmFtZXM6IFsnUHJpdmF0ZSddLFxuICAgIHByaXZhdGVTdWJuZXRSb3V0ZVRhYmxlSWRzOiBbJ3J0Yi0xMjM0NTYnXSxcbiAgICBwdWJsaWNTdWJuZXRJZHM6IHVuZGVmaW5lZCxcbiAgICBwdWJsaWNTdWJuZXROYW1lczogdW5kZWZpbmVkLFxuICAgIHB1YmxpY1N1Ym5ldFJvdXRlVGFibGVJZHM6IHVuZGVmaW5lZCxcbiAgICB2cG5HYXRld2F5SWQ6IHVuZGVmaW5lZCxcbiAgICBzdWJuZXRHcm91cHM6IHVuZGVmaW5lZCxcbiAgfSk7XG59KTtcblxudGVzdCgnUmVjb2duaXplIGlzb2xhdGVkIHN1Ym5ldCBieSByb3V0ZSB0YWJsZScsIGFzeW5jICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgY29uc3QgZmlsdGVyID0geyBmb286ICdiYXInIH07XG4gIGNvbnN0IHByb3ZpZGVyID0gbmV3IFZwY05ldHdvcmtDb250ZXh0UHJvdmlkZXJQbHVnaW4obW9ja1NESyk7XG5cbiAgbW9ja1ZwY0xvb2t1cCh7XG4gICAgc3VibmV0czogW1xuICAgICAgeyBTdWJuZXRJZDogJ3N1Yi0xMjM0NTYnLCBBdmFpbGFiaWxpdHlab25lOiAnYmVybXVkYS10cmlhbmdsZS0xMzM3JywgTWFwUHVibGljSXBPbkxhdW5jaDogZmFsc2UgfSxcbiAgICBdLFxuICAgIHJvdXRlVGFibGVzOiBbXG4gICAgICB7XG4gICAgICAgIEFzc29jaWF0aW9uczogW3sgU3VibmV0SWQ6ICdzdWItMTIzNDU2JyB9XSxcbiAgICAgICAgUm91dGVUYWJsZUlkOiAncnRiLTEyMzQ1NicsXG4gICAgICAgIFJvdXRlczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIERlc3RpbmF0aW9uQ2lkckJsb2NrOiAnMTAuMC4xLjAvMjQnLFxuICAgICAgICAgICAgR2F0ZXdheUlkOiAnbG9jYWwnLFxuICAgICAgICAgICAgT3JpZ2luOiAnQ3JlYXRlUm91dGVUYWJsZScsXG4gICAgICAgICAgICBTdGF0ZTogJ2FjdGl2ZScsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgXSxcbiAgfSk7XG5cbiAgLy8gV0hFTlxuICBjb25zdCByZXN1bHQgPSBhd2FpdCBwcm92aWRlci5nZXRWYWx1ZSh7XG4gICAgYWNjb3VudDogJzEyMzQnLFxuICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgZmlsdGVyLFxuICB9KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoe1xuICAgIHZwY0lkOiAndnBjLTEyMzQ1NjcnLFxuICAgIHZwY0NpZHJCbG9jazogJzEuMS4xLjEvMTYnLFxuICAgIGF2YWlsYWJpbGl0eVpvbmVzOiBbJ2Jlcm11ZGEtdHJpYW5nbGUtMTMzNyddLFxuICAgIGlzb2xhdGVkU3VibmV0SWRzOiBbJ3N1Yi0xMjM0NTYnXSxcbiAgICBpc29sYXRlZFN1Ym5ldE5hbWVzOiBbJ0lzb2xhdGVkJ10sXG4gICAgaXNvbGF0ZWRTdWJuZXRSb3V0ZVRhYmxlSWRzOiBbJ3J0Yi0xMjM0NTYnXSxcbiAgICBwcml2YXRlU3VibmV0SWRzOiB1bmRlZmluZWQsXG4gICAgcHJpdmF0ZVN1Ym5ldE5hbWVzOiB1bmRlZmluZWQsXG4gICAgcHJpdmF0ZVN1Ym5ldFJvdXRlVGFibGVJZHM6IHVuZGVmaW5lZCxcbiAgICBwdWJsaWNTdWJuZXRJZHM6IHVuZGVmaW5lZCxcbiAgICBwdWJsaWNTdWJuZXROYW1lczogdW5kZWZpbmVkLFxuICAgIHB1YmxpY1N1Ym5ldFJvdXRlVGFibGVJZHM6IHVuZGVmaW5lZCxcbiAgICB2cG5HYXRld2F5SWQ6IHVuZGVmaW5lZCxcbiAgICBzdWJuZXRHcm91cHM6IHVuZGVmaW5lZCxcbiAgfSk7XG59KTtcblxuaW50ZXJmYWNlIFZwY0xvb2t1cE9wdGlvbnMge1xuICBzdWJuZXRzOiBhd3MuRUMyLlN1Ym5ldFtdO1xuICByb3V0ZVRhYmxlczogYXdzLkVDMi5Sb3V0ZVRhYmxlW107XG4gIHZwbkdhdGV3YXlzPzogYXdzLkVDMi5WcG5HYXRld2F5W107XG59XG5cbmZ1bmN0aW9uIG1vY2tWcGNMb29rdXAob3B0aW9uczogVnBjTG9va3VwT3B0aW9ucykge1xuICBjb25zdCBWcGNJZCA9ICd2cGMtMTIzNDU2Nyc7XG5cbiAgQVdTLm1vY2soJ0VDMicsICdkZXNjcmliZVZwY3MnLCAocGFyYW1zOiBhd3MuRUMyLkRlc2NyaWJlVnBjc1JlcXVlc3QsIGNiOiBBd3NDYWxsYmFjazxhd3MuRUMyLkRlc2NyaWJlVnBjc1Jlc3VsdD4pID0+IHtcbiAgICBleHBlY3QocGFyYW1zLkZpbHRlcnMpLnRvRXF1YWwoW3sgTmFtZTogJ2ZvbycsIFZhbHVlczogWydiYXInXSB9XSk7XG4gICAgcmV0dXJuIGNiKG51bGwsIHsgVnBjczogW3sgVnBjSWQsIENpZHJCbG9jazogJzEuMS4xLjEvMTYnIH1dIH0pO1xuICB9KTtcblxuICBBV1MubW9jaygnRUMyJywgJ2Rlc2NyaWJlU3VibmV0cycsIChwYXJhbXM6IGF3cy5FQzIuRGVzY3JpYmVTdWJuZXRzUmVxdWVzdCwgY2I6IEF3c0NhbGxiYWNrPGF3cy5FQzIuRGVzY3JpYmVTdWJuZXRzUmVzdWx0PikgPT4ge1xuICAgIGV4cGVjdChwYXJhbXMuRmlsdGVycykudG9FcXVhbChbeyBOYW1lOiAndnBjLWlkJywgVmFsdWVzOiBbVnBjSWRdIH1dKTtcbiAgICByZXR1cm4gY2IobnVsbCwgeyBTdWJuZXRzOiBvcHRpb25zLnN1Ym5ldHMgfSk7XG4gIH0pO1xuXG4gIEFXUy5tb2NrKCdFQzInLCAnZGVzY3JpYmVSb3V0ZVRhYmxlcycsIChwYXJhbXM6IGF3cy5FQzIuRGVzY3JpYmVSb3V0ZVRhYmxlc1JlcXVlc3QsIGNiOiBBd3NDYWxsYmFjazxhd3MuRUMyLkRlc2NyaWJlUm91dGVUYWJsZXNSZXN1bHQ+KSA9PiB7XG4gICAgZXhwZWN0KHBhcmFtcy5GaWx0ZXJzKS50b0VxdWFsKFt7IE5hbWU6ICd2cGMtaWQnLCBWYWx1ZXM6IFtWcGNJZF0gfV0pO1xuICAgIHJldHVybiBjYihudWxsLCB7IFJvdXRlVGFibGVzOiBvcHRpb25zLnJvdXRlVGFibGVzIH0pO1xuICB9KTtcblxuICBBV1MubW9jaygnRUMyJywgJ2Rlc2NyaWJlVnBuR2F0ZXdheXMnLCAocGFyYW1zOiBhd3MuRUMyLkRlc2NyaWJlVnBuR2F0ZXdheXNSZXF1ZXN0LCBjYjogQXdzQ2FsbGJhY2s8YXdzLkVDMi5EZXNjcmliZVZwbkdhdGV3YXlzUmVzdWx0PikgPT4ge1xuICAgIGV4cGVjdChwYXJhbXMuRmlsdGVycykudG9FcXVhbChbXG4gICAgICB7IE5hbWU6ICdhdHRhY2htZW50LnZwYy1pZCcsIFZhbHVlczogW1ZwY0lkXSB9LFxuICAgICAgeyBOYW1lOiAnYXR0YWNobWVudC5zdGF0ZScsIFZhbHVlczogWydhdHRhY2hlZCddIH0sXG4gICAgICB7IE5hbWU6ICdzdGF0ZScsIFZhbHVlczogWydhdmFpbGFibGUnXSB9LFxuICAgIF0pO1xuICAgIHJldHVybiBjYihudWxsLCB7IFZwbkdhdGV3YXlzOiBvcHRpb25zLnZwbkdhdGV3YXlzIH0pO1xuICB9KTtcbn1cbiJdfQ==
@@ -0,0 +1,20 @@
1
+ {
2
+ "Resources": {
3
+ "NestedResource": {
4
+ "Type": "AWS::Something",
5
+ "Properties": {
6
+ "Property": "new-value"
7
+ }
8
+ }
9
+ },
10
+ "Parameters": {
11
+ "NestedParam": {
12
+ "Type": "Number"
13
+ }
14
+ },
15
+ "Outputs": {
16
+ "NestedOutput": {
17
+ "Value": { "Ref": "NestedResource" }
18
+ }
19
+ }
20
+ }
@@ -0,0 +1,19 @@
1
+ {
2
+ "Resources": {
3
+ "SomeResource": {
4
+ "Type": "AWS::Something",
5
+ "Properties": {
6
+ "Property": "new-value"
7
+ }
8
+ },
9
+ "NestedStack": {
10
+ "Type": "AWS::CloudFormation::Stack",
11
+ "Properties": {
12
+ "TemplateURL": "https://www.magic-url.com"
13
+ },
14
+ "Metadata": {
15
+ "aws:asset:path": "one-resource-stack.nested.template.json"
16
+ }
17
+ }
18
+ }
19
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "Resources": {
3
+ "SomeResource": {
4
+ "Type": "AWS::Something",
5
+ "Properties": {
6
+ "Property": "new-value"
7
+ }
8
+ }
9
+ }
10
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "Resources": {
3
+ "SomeResource": {
4
+ "Type": "AWS::Something",
5
+ "Properties": {
6
+ "Property": "new-value"
7
+ }
8
+ },
9
+ "GrandChildStackA": {
10
+ "Type": "AWS::CloudFormation::Stack",
11
+ "Properties": {
12
+ "TemplateURL": "https://www.magic-url.com"
13
+ },
14
+ "Metadata": {
15
+ "aws:asset:path": "one-resource-stack.nested.template.json"
16
+ }
17
+ },
18
+ "GrandChildStackB": {
19
+ "Type": "AWS::CloudFormation::Stack",
20
+ "Properties": {
21
+ "TemplateURL": "https://www.magic-url.com"
22
+ },
23
+ "Metadata": {
24
+ "aws:asset:path": "one-resource-stack.nested.template.json"
25
+ }
26
+ }
27
+ }
28
+ }