aws-cdk 2.24.0 → 2.26.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.
package/README.md CHANGED
@@ -510,10 +510,11 @@ $ cdk destroy --app='node bin/main.js' MyStackName
510
510
 
511
511
  ### `cdk bootstrap`
512
512
 
513
- Deploys a `CDKToolkit` CloudFormation stack into the specified environment(s), that provides an S3 bucket that
514
- `cdk deploy` will use to store synthesized templates and the related assets, before triggering a CloudFormation stack
515
- update. The name of the deployed stack can be configured using the `--toolkit-stack-name` argument. The S3 Bucket
516
- Public Access Block Configuration can be configured using the `--public-access-block-configuration` argument.
513
+ Deploys a `CDKToolkit` CloudFormation stack into the specified environment(s), that provides an S3 bucket
514
+ and ECR reposity that `cdk deploy` will use to store synthesized templates and the related assets, before
515
+ triggering a CloudFormation stack update. The name of the deployed stack can be configured using the
516
+ `--toolkit-stack-name` argument. The S3 Bucket Public Access Block Configuration can be configured using
517
+ the `--public-access-block-configuration` argument. ECR uses immutable tags for images.
517
518
 
518
519
  ```console
519
520
  $ # Deploys to all environments
package/build-info.json CHANGED
@@ -1,4 +1,4 @@
1
1
  {
2
- "comment": "Generated at 2022-05-11T18:53:07Z by generate.sh",
3
- "commit": "b8d8b9a"
2
+ "comment": "Generated at 2022-05-30T16:33:31Z by generate.sh",
3
+ "commit": "a409d63"
4
4
  }
@@ -1 +1 @@
1
- {"expiration":1652298876484,"notices":[{"title":"Error when building EKS cluster with monocdk import","issueNumber":17061,"overview":"When using monocdk/aws-eks to build a stack containing an EKS cluster, error is thrown about missing lambda-layer-node-proxy-agent/layer/package.json.","components":[{"name":"cli","version":"<1.130.0 >=1.126.0"}],"schemaVersion":"1"}]}
1
+ {"expiration":1653932100454,"notices":[{"title":"Error when building EKS cluster with monocdk import","issueNumber":17061,"overview":"When using monocdk/aws-eks to build a stack containing an EKS cluster, error is thrown about missing lambda-layer-node-proxy-agent/layer/package.json.","components":[{"name":"cli","version":"<1.130.0 >=1.126.0"}],"schemaVersion":"1"}]}
@@ -94,6 +94,9 @@ class PatchedSharedIniFileCredentials extends AWS.SharedIniFileCredentials {
94
94
  throw AWS.util.error(new Error('source_profile ' + sourceProfile + ' using profile '
95
95
  + this.profile + ' does not exist'), { code: 'SharedIniFileCredentialsProviderFailure' });
96
96
  }
97
+ if (sourceProfileExistanceTest.sso_start_url) {
98
+ return new AWS.SsoCredentials({ profile: sourceProfile });
99
+ }
97
100
  return new AWS.SharedIniFileCredentials(AWS.util.merge(this.options || {}, {
98
101
  profile: sourceProfile,
99
102
  preferStaticCredentials: true,
@@ -151,4 +154,4 @@ function loadProfilesProper(filename) {
151
154
  }
152
155
  return profiles;
153
156
  }
154
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLXNkay1pbmlmaWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXdzLXNkay1pbmlmaWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUErQjtBQUcvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0JHO0FBQ0gsTUFBYSwrQkFBZ0MsU0FBUSxHQUFHLENBQUMsd0JBQXdCO0lBU3hFLGVBQWUsQ0FDcEIsS0FBNkMsRUFDN0MsV0FBbUMsRUFDbkMsUUFBMkM7UUFFM0Msa0dBQWtHO1FBQ2xHLDhEQUE4RDs7UUFFOUQsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDMUIsTUFBTyxHQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FDM0IsSUFBSSxLQUFLLENBQUMseUNBQXlDO2dCQUN6Qyx5QkFBeUIsR0FBRyxJQUFJLENBQUMsT0FBTztnQkFDeEMsUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFDcEMsRUFBRSxJQUFJLEVBQUUseUNBQXlDLEVBQUUsQ0FDcEQsQ0FBQztTQUNIO1FBRUQsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2hCLElBQUksT0FBTyxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUM7UUFDbkMsSUFBSSxlQUFlLEdBQUcsV0FBVyxDQUFDLGlCQUFpQixDQUFDO1FBQ3BELElBQUksVUFBVSxHQUFHLFdBQVcsQ0FBQyxXQUFXLENBQUM7UUFDekMsSUFBSSxTQUFTLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQztRQUN2QyxJQUFJLGFBQWEsR0FBRyxXQUFXLENBQUMsY0FBYyxDQUFDO1FBQy9DLElBQUksZ0JBQWdCLEdBQUcsV0FBVyxDQUFDLGlCQUFpQixDQUFDO1FBRXJELE1BQU0sZUFBZSxHQUFJLEdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUM3QyxJQUFJLEtBQUssQ0FBQyxzQ0FBc0MsSUFBSSxDQUFDLE9BQU8sb0ZBQW9GLENBQUMsRUFDakosRUFBRSxJQUFJLEVBQUUseUNB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QUFDO1NBQ2hELENBQUMsQ0FBQztLQUNKO0lBQ0QsSUFBSSxpQkFBaUIsR0FBMkMsU0FBUyxDQUFDLFFBQVEsQ0FBQztRQUNqRixRQUFRLEVBQUUsUUFBUTtZQUNoQixDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUM7S0FDbkYsQ0FBQyxDQUFDO0lBQ0gsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsRUFBRTtRQUNoRSxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDO0tBQzFCO0lBQ0QsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsRUFBRTtRQUMvRCxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUc7WUFDZixHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDakIsR0FBRyxPQUFPO1NBQ1gsQ0FBQztLQUNIO0lBQ0QsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIEFXUyBmcm9tICdhd3Mtc2RrJztcblxuXG4vKipcbiAqIEhhY2stZml4XG4gKlxuICogVGhlcmUgYXJlIGEgbnVtYmVyIG9mIGlzc3VlcyBpbiB0aGUgdXBzdHJlYW0gdmVyc2lvbiBvZiBTaGFyZWRJbmlGaWxlQ3JlZGVudGlhbHNcbiAqIHRoYXQgbmVlZCBmaXhpbmc6XG4gKlxuICogIDEuIFRoZSB1cHN0cmVhbSBhd3Mtc2RrIGNvbnRhaW5zIGFuIGluY29ycmVjdCBpbnN0YW50aWF0aW9uIG9mIGFuIGBBV1MuU1RTYFxuICogICAgIGNsaWVudCwgd2hpY2ggKnNob3VsZCogaGF2ZSB0YWtlbiB0aGUgcmVnaW9uIGZyb20gdGhlIHJlcXVlc3RlZCBwcm9maWxlXG4gKiAgICAgYnV0IGRvZXNuJ3QuIEl0IHdpbGwgdXNlIHRoZSByZWdpb24gZnJvbSB0aGUgZGVmYXVsdCBwcm9maWxlLCB3aGljaFxuICogICAgIG1heSBub3QgZXhpc3QsIGRlZmF1bHRpbmcgdG8gYHVzLWVhc3QtMWAgKHNpbmNlIHdlIHN3aXRjaGVkIHRvXG4gKiAgICAgQVdTX1NUU19SRUdJT05BTF9FTkRQT0lOVFM9cmVnaW9uYWwsIHRoYXQgZGVmYXVsdCBpcyBub3QgZXZlbiBhbGxvd2VkIGFueW1vcmVcbiAqICAgICBhbmQgdGhlIGFic2VuY2Ugb2YgYSBkZWZhdWx0IHJlZ2lvbiB3aWxsIGxlYWQgdG8gYW4gZXJyb3IpLlxuICpcbiAqICAyLiBUaGUgc2ltcGxlIGZpeCBpcyB0byBnZXQgdGhlIHJlZ2lvbiBmcm9tIHRoZSBgY29uZmlnYCBmaWxlLiBwcm9maWxlc1xuICogICAgIGFyZSBtYWRlIHVwIG9mIGEgY29tYmluYXRpb24gb2YgYGNyZWRlbnRpYWxzYCBhbmQgYGNvbmZpZ2AsIGFuZCB0aGUgcmVnaW9uIGlzXG4gKiAgICAgZ2VuZXJhbGx5IGluIGBjb25maWdgIHdpdGggdGhlIHJlc3QgaW4gYGNyZWRlbnRpYWxzYC4gSG93ZXZlciwgYSBidWcgaW5cbiAqICAgICBgZ2V0UHJvZmlsZXNGcm9tU2hhcmVkQ29uZmlnYCBvdmVyd3JpdGVzIEFMTCBgY29uZmlnYCBkYXRhIHdpdGggYGNyZWRlbnRpYWxzYFxuICogICAgIGRhdGEsIHNvIHdlIGFsc28gbmVlZCB0byBkbyBleHRyYSB3b3JrIHRvIGZpc2ggdGhlIGByZWdpb25gIG91dCBvZiB0aGUgY29uZmlnLlxuICpcbiAqIDMuICBUaGUgJ2NyZWRlbnRpYWxfc291cmNlJyBvcHRpb24gaXMgbm90IHN1cHBvcnRlZC4gTWVhbmluZyBjcmVkZW50aWFsc1xuICogICAgIGZvciBhc3N1bWUtcm9sZSBjYW5ub3QgYmUgZmV0Y2hlZCB1c2luZyBFQzIvRVNDIG1ldGFkYXRhLlxuICpcbiAqIFNlZSBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1zZGstanMvaXNzdWVzLzM0MTggZm9yIGFsbCB0aGUgZ29yeSBkZXRhaWxzLlxuICogU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1qcy9pc3N1ZXMvMTkxNiBmb3Igc29tZSBtb3JlIGdsb3J5IGRldGFpbHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBQYXRjaGVkU2hhcmVkSW5pRmlsZUNyZWRlbnRpYWxzIGV4dGVuZHMgQVdTLlNoYXJlZEluaUZpbGVDcmVkZW50aWFscyB7XG4gIGRlY2xhcmUgcHJpdmF0ZSBwcm9maWxlOiBzdHJpbmc7XG4gIGRlY2xhcmUgcHJpdmF0ZSBmaWxlbmFtZTogc3RyaW5nO1xuICBkZWNsYXJlIHByaXZhdGUgZGlzYWJsZUFzc3VtZVJvbGU6IGJvb2xlYW47XG4gIGRlY2xhcmUgcHJpdmF0ZSBvcHRpb25zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICBkZWNsYXJlIHByaXZhdGUgcm9sZUFybjogc3RyaW5nO1xuICBkZWNsYXJlIHByaXZhdGUgaHR0cE9wdGlvbnM/OiBBV1MuSFRUUE9wdGlvbnM7XG4gIGRlY2xhcmUgcHJpdmF0ZSB0b2tlbkNvZGVGbj86IChtZmFTZXJpYWw6IHN0cmluZywgY2FsbGJhY2s6IChlcnI/OiBFcnJvciwgdG9rZW4/OiBzdHJpbmcpID0+IHZvaWQpID0+IHZvaWQ7XG5cbiAgcHVibGljIGxvYWRSb2xlUHJvZmlsZShcbiAgICBjcmVkczogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4sXG4gICAgcm9sZVByb2ZpbGU6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sXG4gICAgY2FsbGJhY2s6IChlcnI/OiBFcnJvciwgZGF0YT86IGFueSkgPT4gdm9pZCkge1xuXG4gICAgLy8gTmVlZCB0byBkdXBsaWNhdGUgdGhlIHdob2xlIGltcGxlbWVudGF0aW9uIGhlcmUgLS0gdGhlIGZ1bmN0aW9uIGlzIGxvbmcgYW5kIGhhcyBiZWVuIHdyaXR0ZW4gaW5cbiAgICAvLyBzdWNoIGEgd2F5IHRoYXQgdGhlcmUgYXJlIG5vIHNtYWxsIG1vbmtleSBwYXRjaGVzIHBvc3NpYmxlLlxuXG4gICAgaWYgKHRoaXMuZGlzYWJsZUFzc3VtZVJvbGUpIHtcbiAgICAgIHRocm93IChBV1MgYXMgYW55KS51dGlsLmVycm9yKFxuICAgICAgICBuZXcgRXJyb3IoJ1JvbGUgYXNzdW1wdGlvbiBwcm9maWxlcyBhcmUgZGlzYWJsZWQuICcgK1xuICAgICAgICAgICAgICAgICAgJ0ZhaWxlZCB0byBsb2FkIHByb2ZpbGUgJyArIHRoaXMucHJvZmlsZSArXG4gICAgICAgICAgICAgICAgICAnIGZyb20gJyArIGNyZWRzLmZpbGVuYW1lKSxcbiAgICAgICAgeyBjb2RlOiAnU2hhcmVkSW5pRmlsZUNyZWRlbnRpYWxzUHJvdmlkZXJGYWlsdXJlJyB9LFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIHJvbGVBcm4gPSByb2xlUHJvZmlsZS5yb2xlX2FybjtcbiAgICB2YXIgcm9sZVNlc3Npb25OYW1lID0gcm9sZVByb2ZpbGUucm9sZV9zZXNzaW9uX25hbWU7XG4gICAgdmFyIGV4dGVybmFsSWQgPSByb2xlUHJvZmlsZS5leHRlcm5hbF9pZDtcbiAgICB2YXIgbWZhU2VyaWFsID0gcm9sZVByb2ZpbGUubWZhX3NlcmlhbDtcbiAgICB2YXIgc291cmNlUHJvZmlsZSA9IHJvbGVQcm9maWxlLnNvdXJjZV9wcm9maWxlO1xuICAgIHZhciBjcmVkZW50aWFsU291cmNlID0gcm9sZVByb2ZpbGUuY3JlZGVudGlhbF9zb3VyY2U7XG5cbiAgICBjb25zdCBjcmVkZW50aWFsRXJyb3IgPSAoQVdTIGFzIGFueSkudXRpbC5lcnJvcihcbiAgICAgIG5ldyBFcnJvcihgV2hlbiB1c2luZyAncm9sZV9hcm4nIGluIHByb2ZpbGUgKCcke3RoaXMucHJvZmlsZX0nKSwgeW91IG11c3QgYWxzbyBjb25maWd1cmUgZXhhY3RseSBvbmUgb2YgJ3NvdXJjZV9wcm9maWxlJyBvciAnY3JlZGVudGlhbF9zb3VyY2UnYCksXG4gICAgICB7IGNvZGU6ICdTaGFyZWRJbmlGaWxlQ3JlZGVudGlhbHNQcm92aWRlckZhaWx1cmUnIH0sXG4gICAgKTtcblxuICAgIGlmIChzb3VyY2VQcm9maWxlICYmIGNyZWRlbnRpYWxTb3VyY2UpIHtcbiAgICAgIHRocm93IGNyZWRlbnRpYWxFcnJvcjtcbiAgICB9XG5cbiAgICBpZiAoIXNvdXJjZVByb2ZpbGUgJiYgIWNyZWRlbnRpYWxTb3VyY2UpIHtcbiAgICAgIHRocm93IGNyZWRlbnRpYWxFcnJvcjtcbiAgICB9XG5cbiAgICBjb25zdCBwcm9maWxlcyA9IGxvYWRQcm9maWxlc1Byb3Blcih0aGlzLmZpbGVuYW1lKTtcbiAgICBjb25zdCByZWdpb24gPSBwcm9maWxlc1t0aGlzLnByb2ZpbGVdPy5yZWdpb24gPz8gcHJvZmlsZXMuZGVmYXVsdD8ucmVnaW9uID8/ICd1cy1lYXN0LTEnO1xuXG4gICAgY29uc3Qgc3RzQ3JlZHMgPSBzb3VyY2VQcm9maWxlID8gdGhpcy5zb3VyY2VQcm9maWxlQ3JlZGVudGlhbHMoc291cmNlUHJvZmlsZSwgY3JlZHMpIDogdGhpcy5jcmVkZW50aWFsU291cmNlQ3JlZGVudGlhbHMoY3JlZGVudGlhbFNvdXJjZSk7XG5cbiAgICB0aGlzLnJvbGVBcm4gPSByb2xlQXJuO1xuICAgIHZhciBzdHMgPSBuZXcgQVdTLlNUUyh7XG4gICAgICBjcmVkZW50aWFsczogc3RzQ3JlZHMsXG4gICAgICByZWdpb24sXG4gICAgICBodHRwT3B0aW9uczogdGhpcy5odHRwT3B0aW9ucyxcbiAgICB9KTtcblxuICAgIHZhciByb2xlUGFyYW1zOiBBV1MuU1RTLkFzc3VtZVJvbGVSZXF1ZXN0ID0ge1xuICAgICAgUm9sZUFybjogcm9sZUFybixcbiAgICAgIFJvbGVTZXNzaW9uTmFtZTogcm9sZVNlc3Npb25OYW1lIHx8ICdhd3Mtc2RrLWpzLScgKyBEYXRlLm5vdygpLFxuICAgIH07XG5cbiAgICBpZiAoZXh0ZXJuYWxJZCkge1xuICAgICAgcm9sZVBhcmFtcy5FeHRlcm5hbElkID0gZXh0ZXJuYWxJZDtcbiAgICB9XG5cbiAgICBpZiAobWZhU2VyaWFsICYmIHNlbGYudG9rZW5Db2RlRm4pIHtcbiAgICAgIHJvbGVQYXJhbXMuU2VyaWFsTnVtYmVyID0gbWZhU2VyaWFsO1xuICAgICAgc2VsZi50b2tlbkNvZGVGbihtZmFTZXJpYWwsIGZ1bmN0aW9uKGVyciwgdG9rZW4pIHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHZhciBtZXNzYWdlO1xuICAgICAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgICAgbWVzc2FnZSA9IGVyci5tZXNzYWdlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBtZXNzYWdlID0gZXJyO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYWxsYmFjayhcbiAgICAgICAgICAgIChBV1MgYXMgYW55KS51dGlsLmVycm9yKFxuICAgICAgICAgICAgICBuZXcgRXJyb3IoJ0Vycm9yIGZldGNoaW5nIE1GQSB0b2tlbjogJyArIG1lc3NhZ2UpLFxuICAgICAgICAgICAgICB7IGNvZGU6ICdTaGFyZWRJbmlGaWxlQ3JlZGVudGlhbHNQcm92aWRlckZhaWx1cmUnIH0sXG4gICAgICAgICAgICApKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByb2xlUGFyYW1zLlRva2VuQ29kZSA9IHRva2VuO1xuICAgICAgICBzdHMuYXNzdW1lUm9sZShyb2xlUGFyYW1zLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc3RzLmFzc3VtZVJvbGUocm9sZVBhcmFtcywgY2FsbGJhY2spO1xuICB9XG5cbiAgcHJpdmF0ZSBzb3VyY2VQcm9maWxlQ3JlZGVudGlhbHMoc291cmNlUHJvZmlsZTogc3RyaW5nLCBwcm9maWxlczogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4pIHtcblxuICAgIHZhciBzb3VyY2VQcm9maWxlRXhpc3RhbmNlVGVzdCA9IHByb2ZpbGVzW3NvdXJjZVByb2ZpbGVdO1xuXG4gICAgaWYgKHR5cGVvZiBzb3VyY2VQcm9maWxlRXhpc3RhbmNlVGVzdCAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IChBV1MgYXMgYW55KS51dGlsLmVycm9yKFxuICAgICAgICBuZXcgRXJyb3IoJ3NvdXJjZV9wcm9maWxlICcgKyBzb3VyY2VQcm9maWxlICsgJyB1c2luZyBwcm9maWxlICdcbiAgICAgICAgICArIHRoaXMucHJvZmlsZSArICcgZG9lcyBub3QgZXhpc3QnKSxcbiAgICAgICAgeyBjb2RlOiAnU2hhcmVkSW5pRmlsZUNyZWRlbnRpYWxzUHJvdmlkZXJGYWlsdXJlJyB9LFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEFXUy5TaGFyZWRJbmlGaWxlQ3JlZGVudGlhbHMoXG4gICAgICAoQVdTIGFzIGFueSkudXRpbC5tZXJnZSh0aGlzLm9wdGlvbnMgfHwge30sIHtcbiAgICAgICAgcHJvZmlsZTogc291cmNlUHJvZmlsZSxcbiAgICAgICAgcHJlZmVyU3RhdGljQ3JlZGVudGlhbHM6IHRydWUsXG4gICAgICB9KSxcbiAgICApO1xuXG4gIH1cblxuICAvLyB0aGUgYXdzLXNkayBmb3IganMgZG9lcyBub3Qgc3VwcG9ydCAnY3JlZGVudGlhbF9zb3VyY2UnIChodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1zZGstanMvaXNzdWVzLzE5MTYpXG4gIC8vIHNvIHVuZm9ydHVuYXRlbHkgd2UgbmVlZCB0byBpbXBsZW1lbnQgdGhpcyBvdXJzZWx2ZXMuXG4gIHByaXZhdGUgY3JlZGVudGlhbFNvdXJjZUNyZWRlbnRpYWxzKHNvdXJjZUNyZWRlbnRpYWw6IHN0cmluZykge1xuXG4gICAgLy8gc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9jcmVkcmVmL2xhdGVzdC9yZWZkb2NzL3NldHRpbmctZ2xvYmFsLWNyZWRlbnRpYWxfc291cmNlLmh0bWxcbiAgICBzd2l0Y2ggKHNvdXJjZUNyZWRlbnRpYWwpIHtcbiAgICAgIGNhc2UgJ0Vudmlyb25tZW50Jzoge1xuICAgICAgICByZXR1cm4gbmV3IEFXUy5FbnZpcm9ubWVudENyZWRlbnRpYWxzKCdBV1MnKTtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0VjMkluc3RhbmNlTWV0YWRhdGEnOiB7XG4gICAgICAgIHJldHVybiBuZXcgQVdTLkVDMk1ldGFkYXRhQ3JlZGVudGlhbHMoKTtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0Vjc0NvbnRhaW5lcic6IHtcbiAgICAgICAgcmV0dXJuIG5ldyBBV1MuRUNTQ3JlZGVudGlhbHMoKTtcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBjcmVkZW50aWFsX3NvdXJjZSAke3NvdXJjZUNyZWRlbnRpYWx9IGluIHByb2ZpbGUgJHt0aGlzLnByb2ZpbGV9IGlzIHVuc3VwcG9ydGVkLiBjaG9vc2Ugb25lIG9mIFtFbnZpcm9ubWVudCwgRWMySW5zdGFuY2VNZXRhZGF0YSwgRWNzQ29udGFpbmVyXWApO1xuICAgICAgfVxuICAgIH1cblxuICB9XG59XG5cbi8qKlxuICogQSBmdW5jdGlvbiB0byBsb2FkIHByb2ZpbGVzIGZyb20gZGlzayB0aGF0IE1FUkdFUyBjcmVkZW50aWFscyBhbmQgY29uZmlnIGluc3RlYWQgb2Ygb3ZlcndyaXRpbmdcbiAqXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1qcy9ibG9iLzVhZTVhN2Q3ZDI0ZDEwMDBkYmMwODljYzE1ZjhlZDJjN2IwNmM1NDIvbGliL3V0aWwuanMjTDk1NlxuICovXG5mdW5jdGlvbiBsb2FkUHJvZmlsZXNQcm9wZXIoZmlsZW5hbWU6IHN0cmluZykge1xuICBjb25zdCB1dGlsID0gKEFXUyBhcyBhbnkpLnV0aWw7IC8vIERvZXMgZXhpc3RzIGV2ZW4gdGhvdWdoIHRoZXJlIGFyZW4ndCBhbnkgdHlwaW5ncyBmb3IgaXRcbiAgY29uc3QgaW5pTG9hZGVyID0gdXRpbC5pbmlMb2FkZXI7XG4gIGNvbnN0IHByb2ZpbGVzOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiA9IHt9O1xuICBsZXQgcHJvZmlsZXNGcm9tQ29uZmlnOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiA9IHt9O1xuICBpZiAocHJvY2Vzcy5lbnZbdXRpbC5jb25maWdPcHRJbkVudl0pIHtcbiAgICBwcm9maWxlc0Zyb21Db25maWcgPSBpbmlMb2FkZXIubG9hZEZyb20oe1xuICAgICAgaXNDb25maWc6IHRydWUsXG4gICAgICBmaWxlbmFtZTogcHJvY2Vzcy5lbnZbdXRpbC5zaGFyZWRDb25maWdGaWxlRW52XSxcbiAgICB9KTtcbiAgfVxuICB2YXIgcHJvZmlsZXNGcm9tQ3JlZHM6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+ID0gaW5pTG9hZGVyLmxvYWRGcm9tKHtcbiAgICBmaWxlbmFtZTogZmlsZW5hbWUgfHxcbiAgICAgIChwcm9jZXNzLmVudlt1dGlsLmNvbmZpZ09wdEluRW52XSAmJiBwcm9jZXNzLmVudlt1dGlsLnNoYXJlZENyZWRlbnRpYWxzRmlsZUVudl0pLFxuICB9KTtcbiAgZm9yIChjb25zdCBbbmFtZSwgcHJvZmlsZV0gb2YgT2JqZWN0LmVudHJpZXMocHJvZmlsZXNGcm9tQ29uZmlnKSkge1xuICAgIHByb2ZpbGVzW25hbWVdID0gcHJvZmlsZTtcbiAgfVxuICBmb3IgKGNvbnN0IFtuYW1lLCBwcm9maWxlXSBvZiBPYmplY3QuZW50cmllcyhwcm9maWxlc0Zyb21DcmVkcykpIHtcbiAgICBwcm9maWxlc1tuYW1lXSA9IHtcbiAgICAgIC4uLnByb2ZpbGVzW25hbWVdLFxuICAgICAgLi4ucHJvZmlsZSxcbiAgICB9O1xuICB9XG4gIHJldHVybiBwcm9maWxlcztcbn1cbiJdfQ==
157
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLXNkay1pbmlmaWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXdzLXNkay1pbmlmaWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUErQjtBQUcvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0JHO0FBQ0gsTUFBYSwrQkFBZ0MsU0FBUSxHQUFHLENBQUMsd0JBQXdCO0lBU3hFLGVBQWUsQ0FDcEIsS0FBNkMsRUFDN0MsV0FBbUMsRUFDbkMsUUFBMkM7UUFFM0Msa0dBQWtHO1FBQ2xHLDhEQUE4RDs7UUFFOUQsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDMUIsTUFBTyxHQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FDM0IsSUFBSSxLQUFLLENBQUMseUNBQXlDO2dCQUN6Qyx5QkFBeUIsR0FBRyxJQUFJLENBQUMsT0FBTztnQkFDeEMsUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFDcEMsRUFBRSxJQUFJLEVBQUUseUNBQXlDLEVBQUUsQ0FDcEQsQ0FBQztTQUNIO1FBRUQsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2hCLElBQUksT0FBTyxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUM7UUFDbkMsSUFBSSxlQUFlLEdBQUcsV0FBVyxDQUFDLGlCQUFpQixDQUFDO1FBQ3BELElBQUksVUFBVSxHQUFHLFdBQVcsQ0FBQyxXQUFXLENBQUM7UUFDekMsSUFBSSxTQUFTLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQztRQUN2QyxJQUFJLGFBQWEsR0FBRyxXQUFXLENBQUMsY0FBYyxDQUFDO1FBQy9DLElBQUksZ0JBQWdCLEdBQUcsV0FBVyxDQUFDLGlCQUFpQixDQUFDO1FBRXJELE1BQU0sZUFBZSxHQUFJLEdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUM3QyxJQUFJLEtBQUssQ0FBQyxzQ0FBc0MsSUFBSSxDQUFDLE9BQU8sb0ZBQW9GLENBQUMsRUFDakosRUFBRSxJQUFJLEVBQUUseUNB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cEMsa0JBQWtCLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQztZQUN0QyxRQUFRLEVBQUUsSUFBSTtZQUNkLFFBQVEsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztTQUNoRCxDQUFDLENBQUM7S0FDSjtJQUNELElBQUksaUJBQWlCLEdBQTJDLFNBQVMsQ0FBQyxRQUFRLENBQUM7UUFDakYsUUFBUSxFQUFFLFFBQVE7WUFDaEIsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0tBQ25GLENBQUMsQ0FBQztJQUNILEtBQUssTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLEVBQUU7UUFDaEUsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQztLQUMxQjtJQUNELEtBQUssTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLEVBQUU7UUFDL0QsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHO1lBQ2YsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQ2pCLEdBQUcsT0FBTztTQUNYLENBQUM7S0FDSDtJQUNELE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBBV1MgZnJvbSAnYXdzLXNkayc7XG5cblxuLyoqXG4gKiBIYWNrLWZpeFxuICpcbiAqIFRoZXJlIGFyZSBhIG51bWJlciBvZiBpc3N1ZXMgaW4gdGhlIHVwc3RyZWFtIHZlcnNpb24gb2YgU2hhcmVkSW5pRmlsZUNyZWRlbnRpYWxzXG4gKiB0aGF0IG5lZWQgZml4aW5nOlxuICpcbiAqICAxLiBUaGUgdXBzdHJlYW0gYXdzLXNkayBjb250YWlucyBhbiBpbmNvcnJlY3QgaW5zdGFudGlhdGlvbiBvZiBhbiBgQVdTLlNUU2BcbiAqICAgICBjbGllbnQsIHdoaWNoICpzaG91bGQqIGhhdmUgdGFrZW4gdGhlIHJlZ2lvbiBmcm9tIHRoZSByZXF1ZXN0ZWQgcHJvZmlsZVxuICogICAgIGJ1dCBkb2Vzbid0LiBJdCB3aWxsIHVzZSB0aGUgcmVnaW9uIGZyb20gdGhlIGRlZmF1bHQgcHJvZmlsZSwgd2hpY2hcbiAqICAgICBtYXkgbm90IGV4aXN0LCBkZWZhdWx0aW5nIHRvIGB1cy1lYXN0LTFgIChzaW5jZSB3ZSBzd2l0Y2hlZCB0b1xuICogICAgIEFXU19TVFNfUkVHSU9OQUxfRU5EUE9JTlRTPXJlZ2lvbmFsLCB0aGF0IGRlZmF1bHQgaXMgbm90IGV2ZW4gYWxsb3dlZCBhbnltb3JlXG4gKiAgICAgYW5kIHRoZSBhYnNlbmNlIG9mIGEgZGVmYXVsdCByZWdpb24gd2lsbCBsZWFkIHRvIGFuIGVycm9yKS5cbiAqXG4gKiAgMi4gVGhlIHNpbXBsZSBmaXggaXMgdG8gZ2V0IHRoZSByZWdpb24gZnJvbSB0aGUgYGNvbmZpZ2AgZmlsZS4gcHJvZmlsZXNcbiAqICAgICBhcmUgbWFkZSB1cCBvZiBhIGNvbWJpbmF0aW9uIG9mIGBjcmVkZW50aWFsc2AgYW5kIGBjb25maWdgLCBhbmQgdGhlIHJlZ2lvbiBpc1xuICogICAgIGdlbmVyYWxseSBpbiBgY29uZmlnYCB3aXRoIHRoZSByZXN0IGluIGBjcmVkZW50aWFsc2AuIEhvd2V2ZXIsIGEgYnVnIGluXG4gKiAgICAgYGdldFByb2ZpbGVzRnJvbVNoYXJlZENvbmZpZ2Agb3ZlcndyaXRlcyBBTEwgYGNvbmZpZ2AgZGF0YSB3aXRoIGBjcmVkZW50aWFsc2BcbiAqICAgICBkYXRhLCBzbyB3ZSBhbHNvIG5lZWQgdG8gZG8gZXh0cmEgd29yayB0byBmaXNoIHRoZSBgcmVnaW9uYCBvdXQgb2YgdGhlIGNvbmZpZy5cbiAqXG4gKiAzLiAgVGhlICdjcmVkZW50aWFsX3NvdXJjZScgb3B0aW9uIGlzIG5vdCBzdXBwb3J0ZWQuIE1lYW5pbmcgY3JlZGVudGlhbHNcbiAqICAgICBmb3IgYXNzdW1lLXJvbGUgY2Fubm90IGJlIGZldGNoZWQgdXNpbmcgRUMyL0VTQyBtZXRhZGF0YS5cbiAqXG4gKiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3Mtc2RrLWpzL2lzc3Vlcy8zNDE4IGZvciBhbGwgdGhlIGdvcnkgZGV0YWlscy5cbiAqIFNlZSBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1zZGstanMvaXNzdWVzLzE5MTYgZm9yIHNvbWUgbW9yZSBnbG9yeSBkZXRhaWxzLlxuICovXG5leHBvcnQgY2xhc3MgUGF0Y2hlZFNoYXJlZEluaUZpbGVDcmVkZW50aWFscyBleHRlbmRzIEFXUy5TaGFyZWRJbmlGaWxlQ3JlZGVudGlhbHMge1xuICBkZWNsYXJlIHByaXZhdGUgcHJvZmlsZTogc3RyaW5nO1xuICBkZWNsYXJlIHByaXZhdGUgZmlsZW5hbWU6IHN0cmluZztcbiAgZGVjbGFyZSBwcml2YXRlIGRpc2FibGVBc3N1bWVSb2xlOiBib29sZWFuO1xuICBkZWNsYXJlIHByaXZhdGUgb3B0aW9uczogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgZGVjbGFyZSBwcml2YXRlIHJvbGVBcm46IHN0cmluZztcbiAgZGVjbGFyZSBwcml2YXRlIGh0dHBPcHRpb25zPzogQVdTLkhUVFBPcHRpb25zO1xuICBkZWNsYXJlIHByaXZhdGUgdG9rZW5Db2RlRm4/OiAobWZhU2VyaWFsOiBzdHJpbmcsIGNhbGxiYWNrOiAoZXJyPzogRXJyb3IsIHRva2VuPzogc3RyaW5nKSA9PiB2b2lkKSA9PiB2b2lkO1xuXG4gIHB1YmxpYyBsb2FkUm9sZVByb2ZpbGUoXG4gICAgY3JlZHM6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+LFxuICAgIHJvbGVQcm9maWxlOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuICAgIGNhbGxiYWNrOiAoZXJyPzogRXJyb3IsIGRhdGE/OiBhbnkpID0+IHZvaWQpIHtcblxuICAgIC8vIE5lZWQgdG8gZHVwbGljYXRlIHRoZSB3aG9sZSBpbXBsZW1lbnRhdGlvbiBoZXJlIC0tIHRoZSBmdW5jdGlvbiBpcyBsb25nIGFuZCBoYXMgYmVlbiB3cml0dGVuIGluXG4gICAgLy8gc3VjaCBhIHdheSB0aGF0IHRoZXJlIGFyZSBubyBzbWFsbCBtb25rZXkgcGF0Y2hlcyBwb3NzaWJsZS5cblxuICAgIGlmICh0aGlzLmRpc2FibGVBc3N1bWVSb2xlKSB7XG4gICAgICB0aHJvdyAoQVdTIGFzIGFueSkudXRpbC5lcnJvcihcbiAgICAgICAgbmV3IEVycm9yKCdSb2xlIGFzc3VtcHRpb24gcHJvZmlsZXMgYXJlIGRpc2FibGVkLiAnICtcbiAgICAgICAgICAgICAgICAgICdGYWlsZWQgdG8gbG9hZCBwcm9maWxlICcgKyB0aGlzLnByb2ZpbGUgK1xuICAgICAgICAgICAgICAgICAgJyBmcm9tICcgKyBjcmVkcy5maWxlbmFtZSksXG4gICAgICAgIHsgY29kZTogJ1NoYXJlZEluaUZpbGVDcmVkZW50aWFsc1Byb3ZpZGVyRmFpbHVyZScgfSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciByb2xlQXJuID0gcm9sZVByb2ZpbGUucm9sZV9hcm47XG4gICAgdmFyIHJvbGVTZXNzaW9uTmFtZSA9IHJvbGVQcm9maWxlLnJvbGVfc2Vzc2lvbl9uYW1lO1xuICAgIHZhciBleHRlcm5hbElkID0gcm9sZVByb2ZpbGUuZXh0ZXJuYWxfaWQ7XG4gICAgdmFyIG1mYVNlcmlhbCA9IHJvbGVQcm9maWxlLm1mYV9zZXJpYWw7XG4gICAgdmFyIHNvdXJjZVByb2ZpbGUgPSByb2xlUHJvZmlsZS5zb3VyY2VfcHJvZmlsZTtcbiAgICB2YXIgY3JlZGVudGlhbFNvdXJjZSA9IHJvbGVQcm9maWxlLmNyZWRlbnRpYWxfc291cmNlO1xuXG4gICAgY29uc3QgY3JlZGVudGlhbEVycm9yID0gKEFXUyBhcyBhbnkpLnV0aWwuZXJyb3IoXG4gICAgICBuZXcgRXJyb3IoYFdoZW4gdXNpbmcgJ3JvbGVfYXJuJyBpbiBwcm9maWxlICgnJHt0aGlzLnByb2ZpbGV9JyksIHlvdSBtdXN0IGFsc28gY29uZmlndXJlIGV4YWN0bHkgb25lIG9mICdzb3VyY2VfcHJvZmlsZScgb3IgJ2NyZWRlbnRpYWxfc291cmNlJ2ApLFxuICAgICAgeyBjb2RlOiAnU2hhcmVkSW5pRmlsZUNyZWRlbnRpYWxzUHJvdmlkZXJGYWlsdXJlJyB9LFxuICAgICk7XG5cbiAgICBpZiAoc291cmNlUHJvZmlsZSAmJiBjcmVkZW50aWFsU291cmNlKSB7XG4gICAgICB0aHJvdyBjcmVkZW50aWFsRXJyb3I7XG4gICAgfVxuXG4gICAgaWYgKCFzb3VyY2VQcm9maWxlICYmICFjcmVkZW50aWFsU291cmNlKSB7XG4gICAgICB0aHJvdyBjcmVkZW50aWFsRXJyb3I7XG4gICAgfVxuXG4gICAgY29uc3QgcHJvZmlsZXMgPSBsb2FkUHJvZmlsZXNQcm9wZXIodGhpcy5maWxlbmFtZSk7XG4gICAgY29uc3QgcmVnaW9uID0gcHJvZmlsZXNbdGhpcy5wcm9maWxlXT8ucmVnaW9uID8/IHByb2ZpbGVzLmRlZmF1bHQ/LnJlZ2lvbiA/PyAndXMtZWFzdC0xJztcblxuICAgIGNvbnN0IHN0c0NyZWRzID0gc291cmNlUHJvZmlsZSA/IHRoaXMuc291cmNlUHJvZmlsZUNyZWRlbnRpYWxzKHNvdXJjZVByb2ZpbGUsIGNyZWRzKSA6IHRoaXMuY3JlZGVudGlhbFNvdXJjZUNyZWRlbnRpYWxzKGNyZWRlbnRpYWxTb3VyY2UpO1xuXG4gICAgdGhpcy5yb2xlQXJuID0gcm9sZUFybjtcbiAgICB2YXIgc3RzID0gbmV3IEFXUy5TVFMoe1xuICAgICAgY3JlZGVudGlhbHM6IHN0c0NyZWRzLFxuICAgICAgcmVnaW9uLFxuICAgICAgaHR0cE9wdGlvbnM6IHRoaXMuaHR0cE9wdGlvbnMsXG4gICAgfSk7XG5cbiAgICB2YXIgcm9sZVBhcmFtczogQVdTLlNUUy5Bc3N1bWVSb2xlUmVxdWVzdCA9IHtcbiAgICAgIFJvbGVBcm46IHJvbGVBcm4sXG4gICAgICBSb2xlU2Vzc2lvbk5hbWU6IHJvbGVTZXNzaW9uTmFtZSB8fCAnYXdzLXNkay1qcy0nICsgRGF0ZS5ub3coKSxcbiAgICB9O1xuXG4gICAgaWYgKGV4dGVybmFsSWQpIHtcbiAgICAgIHJvbGVQYXJhbXMuRXh0ZXJuYWxJZCA9IGV4dGVybmFsSWQ7XG4gICAgfVxuXG4gICAgaWYgKG1mYVNlcmlhbCAmJiBzZWxmLnRva2VuQ29kZUZuKSB7XG4gICAgICByb2xlUGFyYW1zLlNlcmlhbE51bWJlciA9IG1mYVNlcmlhbDtcbiAgICAgIHNlbGYudG9rZW5Db2RlRm4obWZhU2VyaWFsLCBmdW5jdGlvbihlcnIsIHRva2VuKSB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICB2YXIgbWVzc2FnZTtcbiAgICAgICAgICBpZiAoZXJyIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICAgIG1lc3NhZ2UgPSBlcnIubWVzc2FnZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbWVzc2FnZSA9IGVycjtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FsbGJhY2soXG4gICAgICAgICAgICAoQVdTIGFzIGFueSkudXRpbC5lcnJvcihcbiAgICAgICAgICAgICAgbmV3IEVycm9yKCdFcnJvciBmZXRjaGluZyBNRkEgdG9rZW46ICcgKyBtZXNzYWdlKSxcbiAgICAgICAgICAgICAgeyBjb2RlOiAnU2hhcmVkSW5pRmlsZUNyZWRlbnRpYWxzUHJvdmlkZXJGYWlsdXJlJyB9LFxuICAgICAgICAgICAgKSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcm9sZVBhcmFtcy5Ub2tlbkNvZGUgPSB0b2tlbjtcbiAgICAgICAgc3RzLmFzc3VtZVJvbGUocm9sZVBhcmFtcywgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHN0cy5hc3N1bWVSb2xlKHJvbGVQYXJhbXMsIGNhbGxiYWNrKTtcbiAgfVxuXG4gIHByaXZhdGUgc291cmNlUHJvZmlsZUNyZWRlbnRpYWxzKHNvdXJjZVByb2ZpbGU6IHN0cmluZywgcHJvZmlsZXM6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+KSB7XG5cbiAgICB2YXIgc291cmNlUHJvZmlsZUV4aXN0YW5jZVRlc3QgPSBwcm9maWxlc1tzb3VyY2VQcm9maWxlXTtcblxuICAgIGlmICh0eXBlb2Ygc291cmNlUHJvZmlsZUV4aXN0YW5jZVRlc3QgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyAoQVdTIGFzIGFueSkudXRpbC5lcnJvcihcbiAgICAgICAgbmV3IEVycm9yKCdzb3VyY2VfcHJvZmlsZSAnICsgc291cmNlUHJvZmlsZSArICcgdXNpbmcgcHJvZmlsZSAnXG4gICAgICAgICAgKyB0aGlzLnByb2ZpbGUgKyAnIGRvZXMgbm90IGV4aXN0JyksXG4gICAgICAgIHsgY29kZTogJ1NoYXJlZEluaUZpbGVDcmVkZW50aWFsc1Byb3ZpZGVyRmFpbHVyZScgfSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHNvdXJjZVByb2ZpbGVFeGlzdGFuY2VUZXN0LnNzb19zdGFydF91cmwpIHtcbiAgICAgIHJldHVybiBuZXcgQVdTLlNzb0NyZWRlbnRpYWxzKHsgcHJvZmlsZTogc291cmNlUHJvZmlsZSB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEFXUy5TaGFyZWRJbmlGaWxlQ3JlZGVudGlhbHMoXG4gICAgICAoQVdTIGFzIGFueSkudXRpbC5tZXJnZSh0aGlzLm9wdGlvbnMgfHwge30sIHtcbiAgICAgICAgcHJvZmlsZTogc291cmNlUHJvZmlsZSxcbiAgICAgICAgcHJlZmVyU3RhdGljQ3JlZGVudGlhbHM6IHRydWUsXG4gICAgICB9KSxcbiAgICApO1xuXG4gIH1cblxuICAvLyB0aGUgYXdzLXNkayBmb3IganMgZG9lcyBub3Qgc3VwcG9ydCAnY3JlZGVudGlhbF9zb3VyY2UnIChodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1zZGstanMvaXNzdWVzLzE5MTYpXG4gIC8vIHNvIHVuZm9ydHVuYXRlbHkgd2UgbmVlZCB0byBpbXBsZW1lbnQgdGhpcyBvdXJzZWx2ZXMuXG4gIHByaXZhdGUgY3JlZGVudGlhbFNvdXJjZUNyZWRlbnRpYWxzKHNvdXJjZUNyZWRlbnRpYWw6IHN0cmluZykge1xuXG4gICAgLy8gc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9jcmVkcmVmL2xhdGVzdC9yZWZkb2NzL3NldHRpbmctZ2xvYmFsLWNyZWRlbnRpYWxfc291cmNlLmh0bWxcbiAgICBzd2l0Y2ggKHNvdXJjZUNyZWRlbnRpYWwpIHtcbiAgICAgIGNhc2UgJ0Vudmlyb25tZW50Jzoge1xuICAgICAgICByZXR1cm4gbmV3IEFXUy5FbnZpcm9ubWVudENyZWRlbnRpYWxzKCdBV1MnKTtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0VjMkluc3RhbmNlTWV0YWRhdGEnOiB7XG4gICAgICAgIHJldHVybiBuZXcgQVdTLkVDMk1ldGFkYXRhQ3JlZGVudGlhbHMoKTtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0Vjc0NvbnRhaW5lcic6IHtcbiAgICAgICAgcmV0dXJuIG5ldyBBV1MuRUNTQ3JlZGVudGlhbHMoKTtcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBjcmVkZW50aWFsX3NvdXJjZSAke3NvdXJjZUNyZWRlbnRpYWx9IGluIHByb2ZpbGUgJHt0aGlzLnByb2ZpbGV9IGlzIHVuc3VwcG9ydGVkLiBjaG9vc2Ugb25lIG9mIFtFbnZpcm9ubWVudCwgRWMySW5zdGFuY2VNZXRhZGF0YSwgRWNzQ29udGFpbmVyXWApO1xuICAgICAgfVxuICAgIH1cblxuICB9XG59XG5cbi8qKlxuICogQSBmdW5jdGlvbiB0byBsb2FkIHByb2ZpbGVzIGZyb20gZGlzayB0aGF0IE1FUkdFUyBjcmVkZW50aWFscyBhbmQgY29uZmlnIGluc3RlYWQgb2Ygb3ZlcndyaXRpbmdcbiAqXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1qcy9ibG9iLzVhZTVhN2Q3ZDI0ZDEwMDBkYmMwODljYzE1ZjhlZDJjN2IwNmM1NDIvbGliL3V0aWwuanMjTDk1NlxuICovXG5mdW5jdGlvbiBsb2FkUHJvZmlsZXNQcm9wZXIoZmlsZW5hbWU6IHN0cmluZykge1xuICBjb25zdCB1dGlsID0gKEFXUyBhcyBhbnkpLnV0aWw7IC8vIERvZXMgZXhpc3RzIGV2ZW4gdGhvdWdoIHRoZXJlIGFyZW4ndCBhbnkgdHlwaW5ncyBmb3IgaXRcbiAgY29uc3QgaW5pTG9hZGVyID0gdXRpbC5pbmlMb2FkZXI7XG4gIGNvbnN0IHByb2ZpbGVzOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiA9IHt9O1xuICBsZXQgcHJvZmlsZXNGcm9tQ29uZmlnOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiA9IHt9O1xuICBpZiAocHJvY2Vzcy5lbnZbdXRpbC5jb25maWdPcHRJbkVudl0pIHtcbiAgICBwcm9maWxlc0Zyb21Db25maWcgPSBpbmlMb2FkZXIubG9hZEZyb20oe1xuICAgICAgaXNDb25maWc6IHRydWUsXG4gICAgICBmaWxlbmFtZTogcHJvY2Vzcy5lbnZbdXRpbC5zaGFyZWRDb25maWdGaWxlRW52XSxcbiAgICB9KTtcbiAgfVxuICB2YXIgcHJvZmlsZXNGcm9tQ3JlZHM6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+ID0gaW5pTG9hZGVyLmxvYWRGcm9tKHtcbiAgICBmaWxlbmFtZTogZmlsZW5hbWUgfHxcbiAgICAgIChwcm9jZXNzLmVudlt1dGlsLmNvbmZpZ09wdEluRW52XSAmJiBwcm9jZXNzLmVudlt1dGlsLnNoYXJlZENyZWRlbnRpYWxzRmlsZUVudl0pLFxuICB9KTtcbiAgZm9yIChjb25zdCBbbmFtZSwgcHJvZmlsZV0gb2YgT2JqZWN0LmVudHJpZXMocHJvZmlsZXNGcm9tQ29uZmlnKSkge1xuICAgIHByb2ZpbGVzW25hbWVdID0gcHJvZmlsZTtcbiAgfVxuICBmb3IgKGNvbnN0IFtuYW1lLCBwcm9maWxlXSBvZiBPYmplY3QuZW50cmllcyhwcm9maWxlc0Zyb21DcmVkcykpIHtcbiAgICBwcm9maWxlc1tuYW1lXSA9IHtcbiAgICAgIC4uLnByb2ZpbGVzW25hbWVdLFxuICAgICAgLi4ucHJvZmlsZSxcbiAgICB9O1xuICB9XG4gIHJldHVybiBwcm9maWxlcztcbn1cbiJdfQ==
@@ -202,6 +202,7 @@ Resources:
202
202
  ContainerAssetsRepository:
203
203
  Type: AWS::ECR::Repository
204
204
  Properties:
205
+ ImageTagMutability: IMMUTABLE
205
206
  ImageScanningConfiguration:
206
207
  ScanOnPush: true
207
208
  RepositoryName:
@@ -509,7 +510,7 @@ Resources:
509
510
  Type: String
510
511
  Name:
511
512
  Fn::Sub: '/cdk-bootstrap/${Qualifier}/version'
512
- Value: '12'
513
+ Value: '13'
513
514
  Outputs:
514
515
  BucketName:
515
516
  Description: The name of the S3 bucket owned by the CDK toolkit stack
package/lib/assets.js CHANGED
@@ -95,6 +95,7 @@ async function prepareDockerImageAsset(asset, assetManifest, toolkitInfo) {
95
95
  dockerBuildTarget: asset.target,
96
96
  dockerFile: asset.file,
97
97
  networkMode: asset.networkMode,
98
+ platform: asset.platform,
98
99
  }, {
99
100
  repositoryName,
100
101
  imageTag,
@@ -104,4 +105,4 @@ async function prepareDockerImageAsset(asset, assetManifest, toolkitInfo) {
104
105
  }
105
106
  return { [asset.imageNameParameter]: `${repositoryUri}:${imageTag}` };
106
107
  }
107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXNzZXRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1DQUFtQztBQUNuQyw2QkFBNkI7QUFDN0IsMkRBQTJEO0FBQzNELHlDQUF5QztBQUN6QywrQkFBK0I7QUFFL0IsdUNBQWtDO0FBR2xDOzs7OztHQUtHO0FBQ0gsbUNBQW1DO0FBQzVCLEtBQUssVUFBVSwyQkFBMkIsQ0FBQyxLQUF3QyxFQUFFLGFBQW1DLEVBQUUsV0FBd0IsRUFBRSxLQUFnQjtJQUN6SyxLQUFLLEdBQUcsS0FBSyxJQUFJLEVBQUUsQ0FBQztJQUNwQixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBRTVCLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7UUFDdkIsT0FBTyxFQUFFLENBQUM7S0FDWDtJQUVELElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFO1FBQ3RCLG1DQUFtQztRQUNuQyxNQUFNLElBQUksS0FBSyxDQUFDLDBGQUEwRixLQUFLLENBQUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxXQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3ZLO0lBRUQsTUFBTSxNQUFNLEdBQTJCLEVBQUUsQ0FBQztJQUUxQyxLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sRUFBRTtRQUMxQiwrRkFBK0Y7UUFDL0YsZ0ZBQWdGO1FBQ2hGLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRWhELElBQUksVUFBVSxFQUFFO1lBQ2QsZUFBSyxDQUFDLGlCQUFpQixLQUFLLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzdELFNBQVM7U0FDVjtRQUVELGVBQUssQ0FBQyxtQkFBbUIsS0FB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bGluZSBtYXgtbGVuXG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgY3hzY2hlbWEgZnJvbSAnQGF3cy1jZGsvY2xvdWQtYXNzZW1ibHktc2NoZW1hJztcbmltcG9ydCAqIGFzIGN4YXBpIGZyb20gJ0Bhd3MtY2RrL2N4LWFwaSc7XG5pbXBvcnQgKiBhcyBjaGFsayBmcm9tICdjaGFsayc7XG5pbXBvcnQgeyBUb29sa2l0SW5mbyB9IGZyb20gJy4vYXBpL3Rvb2xraXQtaW5mbyc7XG5pbXBvcnQgeyBkZWJ1ZyB9IGZyb20gJy4vbG9nZ2luZyc7XG5pbXBvcnQgeyBBc3NldE1hbmlmZXN0QnVpbGRlciB9IGZyb20gJy4vdXRpbC9hc3NldC1tYW5pZmVzdC1idWlsZGVyJztcblxuLyoqXG4gKiBUYWtlIHRoZSBtZXRhZGF0YSBhc3NldHMgZnJvbSB0aGUgZ2l2ZW4gc3RhY2sgYW5kIGFkZCB0aGVtIHRvIHRoZSBnaXZlbiBhc3NldCBtYW5pZmVzdFxuICpcbiAqIFJldHVybnMgdGhlIENsb3VkRm9ybWF0aW9uIHBhcmFtZXRlcnMgdGhhdCBuZWVkIHRvIGJlIHNlbnQgdG8gdGhlIHRlbXBsYXRlIHRvXG4gKiBwYXNzIEFzc2V0IGNvb3JkaW5hdGVzLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFkZE1ldGFkYXRhQXNzZXRzVG9NYW5pZmVzdChzdGFjazogY3hhcGkuQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0LCBhc3NldE1hbmlmZXN0OiBBc3NldE1hbmlmZXN0QnVpbGRlciwgdG9vbGtpdEluZm86IFRvb2xraXRJbmZvLCByZXVzZT86IHN0cmluZ1tdKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiB7XG4gIHJldXNlID0gcmV1c2UgfHwgW107XG4gIGNvbnN0IGFzc2V0cyA9IHN0YWNrLmFzc2V0cztcblxuICBpZiAoYXNzZXRzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGlmICghdG9vbGtpdEluZm8uZm91bmQpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxuICAgIHRocm93IG5ldyBFcnJvcihgVGhpcyBzdGFjayB1c2VzIGFzc2V0cywgc28gdGhlIHRvb2xraXQgc3RhY2sgbXVzdCBiZSBkZXBsb3llZCB0byB0aGUgZW52aXJvbm1lbnQgKFJ1biBcIiR7Y2hhbGsuYmx1ZSgnY2RrIGJvb3RzdHJhcCAnICsgc3RhY2suZW52aXJvbm1lbnQhLm5hbWUpfVwiKWApO1xuICB9XG5cbiAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgZm9yIChjb25zdCBhc3NldCBvZiBhc3NldHMpIHtcbiAgICAvLyBGSVhNRTogU2hvdWxkIGhhdmUgZXhjbHVkZWQgYnkgY29uc3RydWN0IHBhdGggaGVyZSBpbnN0ZWFkIG9mIGJ5IHVuaXF1ZSBJRCwgcHJlZmVyYWJseSB1c2luZ1xuICAgIC8vIG1pbmltYXRjaCBzbyB3ZSBjYW4gc3VwcG9ydCBnbG9icy4gTWF5YmUgdGFrZSB1cCBkdXJpbmcgYXJ0aWZhY3QgcmVmYWN0b3JpbmcuXG4gICAgY29uc3QgcmV1c2VBc3NldCA9IHJldXNlLmluZGV4T2YoYXNzZXQuaWQpID4gLTE7XG5cbiAgICBpZiAocmV1c2VBc3NldCkge1xuICAgICAgZGVidWcoYFJldXNpbmcgYXNzZXQgJHthc3NldC5pZH06ICR7SlNPTi5zdHJpbmdpZnkoYXNzZXQpfWApO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgZGVidWcoYFByZXBhcmluZyBhc3NldCAke2Fzc2V0LmlkfTogJHtKU09OLnN0cmluZ2lmeShhc3NldCl9YCk7XG4gICAgaWYgKCFzdGFjay5hc3NlbWJseSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmV4cGVjdGVkOiBzdGFjayBhc3NlbWJseSBpcyByZXF1aXJlZCBpbiBvcmRlciB0byBmaW5kIGFzc2V0cyBpbiBhc3NlbWx5IGRpcmVjdG9yeScpO1xuICAgIH1cblxuICAgIE9iamVjdC5hc3NpZ24ocGFyYW1zLCBhd2FpdCBwcmVwYXJlQXNzZXQoYXNzZXQsIGFzc2V0TWFuaWZlc3QsIHRvb2xraXRJbmZvKSk7XG4gIH1cblxuICByZXR1cm4gcGFyYW1zO1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxuYXN5bmMgZnVuY3Rpb24gcHJlcGFyZUFzc2V0KGFzc2V0OiBjeHNjaGVtYS5Bc3NldE1ldGFkYXRhRW50cnksIGFzc2V0TWFuaWZlc3Q6IEFzc2V0TWFuaWZlc3RCdWlsZGVyLCB0b29sa2l0SW5mbzogVG9vbGtpdEluZm8pOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+IHtcbiAgc3dpdGNoIChhc3NldC5wYWNrYWdpbmcpIHtcbiAgICBjYXNlICd6aXAnOlxuICAgIGNhc2UgJ2ZpbGUnOlxuICAgICAgcmV0dXJuIHByZXBhcmVGaWxlQXNzZXQoXG4gICAgICAgIGFzc2V0LFxuICAgICAgICBhc3NldE1hbmlmZXN0LFxuICAgICAgICB0b29sa2l0SW5mbyxcbiAgICAgICAgYXNzZXQucGFja2FnaW5nID09PSAnemlwJyA/IGN4c2NoZW1hLkZpbGVBc3NldFBhY2thZ2luZy5aSVBfRElSRUNUT1JZIDogY3hzY2hlbWEuRmlsZUFzc2V0UGFja2FnaW5nLkZJTEUpO1xuICAgIGNhc2UgJ2NvbnRhaW5lci1pbWFnZSc6XG4gICAgICByZXR1cm4gcHJlcGFyZURvY2tlckltYWdlQXNzZXQoYXNzZXQsIGFzc2V0TWFuaWZlc3QsIHRvb2xraXRJbmZvKTtcbiAgICBkZWZhdWx0OlxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgcGFja2FnaW5nIHR5cGU6ICR7KGFzc2V0IGFzIGFueSkucGFja2FnaW5nfS4gWW91IG1pZ2h0IG5lZWQgdG8gdXBncmFkZSB5b3VyIGF3cy1jZGsgdG9vbGtpdCB0byBzdXBwb3J0IHRoaXMgYXNzZXQgdHlwZS5gKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwcmVwYXJlRmlsZUFzc2V0KFxuICBhc3NldDogY3hzY2hlbWEuRmlsZUFzc2V0TWV0YWRhdGFFbnRyeSxcbiAgYXNzZXRNYW5pZmVzdDogQXNzZXRNYW5pZmVzdEJ1aWxkZXIsXG4gIHRvb2xraXRJbmZvOiBUb29sa2l0SW5mbyxcbiAgcGFja2FnaW5nOiBjeHNjaGVtYS5GaWxlQXNzZXRQYWNrYWdpbmcpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcblxuICBjb25zdCBleHRlbnNpb24gPSBwYWNrYWdpbmcgPT09IGN4c2NoZW1hLkZpbGVBc3NldFBhY2thZ2luZy5aSVBfRElSRUNUT1JZID8gJy56aXAnIDogcGF0aC5leHRuYW1lKGFzc2V0LnBhdGgpO1xuICBjb25zdCBiYXNlTmFtZSA9IGAke2Fzc2V0LnNvdXJjZUhhc2h9JHtleHRlbnNpb259YDtcbiAgLy8gU2ltcGxpZnkga2V5OiBhc3NldHMvYWJjZGVmL2FiY2RlZi56aXAgaXMga2luZGEgc2lsbHkgYW5kIHVubmVjZXNzYXJ5LCBzbyBpZiB0aGV5J3JlIHRoZSBzYW1lIGp1c3QgcGljayBvbmUgY29tcG9uZW50LlxuICBjb25zdCBzM1ByZWZpeCA9IGFzc2V0LmlkID09PSBhc3NldC5zb3VyY2VIYXNoID8gJ2Fzc2V0cy8nIDogYGFzc2V0cy8ke2Fzc2V0LmlkfS9gO1xuICBjb25zdCBrZXkgPSBgJHtzM1ByZWZpeH0ke2Jhc2VOYW1lfWA7XG4gIGNvbnN0IHMzdXJsID0gYHMzOi8vJHt0b29sa2l0SW5mby5idWNrZXROYW1lfS8ke2tleX1gO1xuXG4gIGRlYnVnKGBTdG9yaW5nIGFzc2V0ICR7YXNzZXQucGF0aH0gYXQgJHtzM3VybH1gKTtcblxuICBhc3NldE1hbmlmZXN0LmFkZEZpbGVBc3NldChhc3NldC5zb3VyY2VIYXNoLCB7XG4gICAgcGF0aDogYXNzZXQucGF0aCxcbiAgICBwYWNrYWdpbmcsXG4gIH0sIHtcbiAgICBidWNrZXROYW1lOiB0b29sa2l0SW5mby5idWNrZXROYW1lLFxuICAgIG9iamVjdEtleToga2V5LFxuICB9KTtcblxuICByZXR1cm4ge1xuICAgIFthc3NldC5zM0J1Y2tldFBhcmFtZXRlcl06IHRvb2xraXRJbmZvLmJ1Y2tldE5hbWUsXG4gICAgW2Fzc2V0LnMzS2V5UGFyYW1ldGVyXTogYCR7czNQcmVmaXh9JHtjeGFwaS5BU1NFVF9QUkVGSVhfU0VQQVJBVE9SfSR7YmFzZU5hbWV9YCxcbiAgICBbYXNzZXQuYXJ0aWZhY3RIYXNoUGFyYW1ldGVyXTogYXNzZXQuc291cmNlSGFzaCxcbiAgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcHJlcGFyZURvY2tlckltYWdlQXNzZXQoXG4gIGFzc2V0OiBjeHNjaGVtYS5Db250YWluZXJJbWFnZUFzc2V0TWV0YWRhdGFFbnRyeSxcbiAgYXNzZXRNYW5pZmVzdDogQXNzZXRNYW5pZmVzdEJ1aWxkZXIsXG4gIHRvb2xraXRJbmZvOiBUb29sa2l0SW5mbyk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4ge1xuXG4gIC8vIFByZS0xLjIxLjAsIHJlcG9zaXRvcnlOYW1lIGNhbiBiZSBzcGVjaWZpZWQgYnkgdGhlIHVzZXIgb3IgY2FuIGJlIGxlZnQgb3V0LCBpbiB3aGljaCBjYXNlIHdlIG1ha2VcbiAgLy8gYSBwZXItYXNzZXQgcmVwb3NpdG9yeSB3aGljaCB3aWxsIGdldCBhZG9wdGVkIGFuZCBjbGVhbmVkIHVwIGFsb25nIHdpdGggdGhlIHN0YWNrLlxuICAvLyBQb3N0LTEuMjEuMCwgcmVwb3NpdG9yeU5hbWUgd2lsbCBhbHdheXMgYmUgc3BlY2lmaWVkIGFuZCBpdCB3aWxsIGJlIGEgc2hhcmVkIHJlcG9zaXRvcnkgYmV0d2VlblxuICAvLyBhbGwgYXNzZXRzLCBhbmQgYXNzZXQgd2lsbCBoYXZlIGltYWdlVGFnIHNwZWNpZmllZCBhcyB3ZWxsLiBWYWxpZGF0ZSB0aGUgY29tYmluYXRpb24uXG4gIGlmICghYXNzZXQuaW1hZ2VOYW1lUGFyYW1ldGVyICYmICghYXNzZXQucmVwb3NpdG9yeU5hbWUgfHwgIWFzc2V0LmltYWdlVGFnKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBEb2NrZXIgaW1hZ2UgYXNzZXQgY29uZmlndXJhdGlvbjogXCJyZXBvc2l0b3J5TmFtZVwiIGFuZCBcImltYWdlVGFnXCIgYXJlIHJlcXVpcmVkIHdoZW4gXCJpbWFnZU5hbWVQYXJhbWV0ZXJcIiBpcyBsZWZ0IG91dCcpO1xuICB9XG5cbiAgY29uc3QgcmVwb3NpdG9yeU5hbWUgPSBhc3NldC5yZXBvc2l0b3J5TmFtZSA/PyAnY2RrLycgKyBhc3NldC5pZC5yZXBsYWNlKC9bOi9dL2csICctJykudG9Mb3dlckNhc2UoKTtcblxuICAvLyBNYWtlIHN1cmUgdGhlIHJlcG9zaXRvcnkgZXhpc3RzLCBzaW5jZSB0aGUgJ2Nkay1hc3NldHMnIHRvb2wgd2lsbCBub3QgY3JlYXRlIGl0IGZvciB1cy5cbiAgY29uc3QgeyByZXBvc2l0b3J5VXJpIH0gPSBhd2FpdCB0b29sa2l0SW5mby5wcmVwYXJlRWNyUmVwb3NpdG9yeShyZXBvc2l0b3J5TmFtZSk7XG4gIGNvbnN0IGltYWdlVGFnID0gYXNzZXQuaW1hZ2VUYWcgPz8gYXNzZXQuc291cmNlSGFzaDtcblxuICBhc3NldE1hbmlmZXN0LmFkZERvY2tlckltYWdlQXNzZXQoYXNzZXQuc291cmNlSGFzaCwge1xuICAgIGRpcmVjdG9yeTogYXNzZXQucGF0aCxcbiAgICBkb2NrZXJCdWlsZEFyZ3M6IGFzc2V0LmJ1aWxkQXJncyxcbiAgICBkb2NrZXJCdWlsZFRhcmdldDogYXNzZXQudGFyZ2V0LFxuICAgIGRvY2tlckZpbGU6IGFzc2V0LmZpbGUsXG4gICAgbmV0d29ya01vZGU6IGFzc2V0Lm5ldHdvcmtNb2RlLFxuICB9LCB7XG4gICAgcmVwb3NpdG9yeU5hbWUsXG4gICAgaW1hZ2VUYWcsXG4gIH0pO1xuXG4gIGlmICghYXNzZXQuaW1hZ2VOYW1lUGFyYW1ldGVyKSB7IHJldHVybiB7fTsgfVxuICByZXR1cm4geyBbYXNzZXQuaW1hZ2VOYW1lUGFyYW1ldGVyXTogYCR7cmVwb3NpdG9yeVVyaX06JHtpbWFnZVRhZ31gIH07XG59XG4iXX0=
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXNzZXRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1DQUFtQztBQUNuQyw2QkFBNkI7QUFDN0IsMkRBQTJEO0FBQzNELHlDQUF5QztBQUN6QywrQkFBK0I7QUFFL0IsdUNBQWtDO0FBR2xDOzs7OztHQUtHO0FBQ0gsbUNBQW1DO0FBQzVCLEtBQUssVUFBVSwyQkFBMkIsQ0FBQyxLQUF3QyxFQUFFLGFBQW1DLEVBQUUsV0FBd0IsRUFBRSxLQUFnQjtJQUN6SyxLQUFLLEdBQUcsS0FBSyxJQUFJLEVBQUUsQ0FBQztJQUNwQixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBRTVCLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7UUFDdkIsT0FBTyxFQUFFLENBQUM7S0FDWDtJQUVELElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFO1FBQ3RCLG1DQUFtQztRQUNuQyxNQUFNLElBQUksS0FBSyxDQUFDLDBGQUEwRixLQUFLLENBQUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxXQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3ZLO0lBRUQsTUFBTSxNQUFNLEdBQTJCLEVBQUUsQ0FBQztJQUUxQyxLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sRUFBRTtRQUMxQiwrRkFBK0Y7UUFDL0YsZ0ZBQWdGO1FBQ2hGLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRWhELElBQUksVUFBVSxFQUFFO1lBQ2QsZUFBSyxDQUFDLGlCQUFpQixLQUFLLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzdELFNBQVM7U0FDVjtRQUVELGVBQUssQ0FBQyxtQkFBbUIsS0FB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dGVudCI6WyIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGN4c2NoZW1hIGZyb20gJ0Bhd3MtY2RrL2Nsb3VkLWFzc2VtYmx5LXNjaGVtYSc7XG5pbXBvcnQgKiBhcyBjeGFwaSBmcm9tICdAYXdzLWNkay9jeC1hcGknO1xuaW1wb3J0ICogYXMgY2hhbGsgZnJvbSAnY2hhbGsnO1xuaW1wb3J0IHsgVG9vbGtpdEluZm8gfSBmcm9tICcuL2FwaS90b29sa2l0LWluZm8nO1xuaW1wb3J0IHsgZGVidWcgfSBmcm9tICcuL2xvZ2dpbmcnO1xuaW1wb3J0IHsgQXNzZXRNYW5pZmVzdEJ1aWxkZXIgfSBmcm9tICcuL3V0aWwvYXNzZXQtbWFuaWZlc3QtYnVpbGRlcic7XG5cbi8qKlxuICogVGFrZSB0aGUgbWV0YWRhdGEgYXNzZXRzIGZyb20gdGhlIGdpdmVuIHN0YWNrIGFuZCBhZGQgdGhlbSB0byB0aGUgZ2l2ZW4gYXNzZXQgbWFuaWZlc3RcbiAqXG4gKiBSZXR1cm5zIHRoZSBDbG91ZEZvcm1hdGlvbiBwYXJhbWV0ZXJzIHRoYXQgbmVlZCB0byBiZSBzZW50IHRvIHRoZSB0ZW1wbGF0ZSB0b1xuICogcGFzcyBBc3NldCBjb29yZGluYXRlcy5cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhZGRNZXRhZGF0YUFzc2V0c1RvTWFuaWZlc3Qoc3RhY2s6IGN4YXBpLkNsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdCwgYXNzZXRNYW5pZmVzdDogQXNzZXRNYW5pZmVzdEJ1aWxkZXIsIHRvb2xraXRJbmZvOiBUb29sa2l0SW5mbywgcmV1c2U/OiBzdHJpbmdbXSk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4ge1xuICByZXVzZSA9IHJldXNlIHx8IFtdO1xuICBjb25zdCBhc3NldHMgPSBzdGFjay5hc3NldHM7XG5cbiAgaWYgKGFzc2V0cy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBpZiAoIXRvb2xraXRJbmZvLmZvdW5kKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbiAgICB0aHJvdyBuZXcgRXJyb3IoYFRoaXMgc3RhY2sgdXNlcyBhc3NldHMsIHNvIHRoZSB0b29sa2l0IHN0YWNrIG11c3QgYmUgZGVwbG95ZWQgdG8gdGhlIGVudmlyb25tZW50IChSdW4gXCIke2NoYWxrLmJsdWUoJ2NkayBib290c3RyYXAgJyArIHN0YWNrLmVudmlyb25tZW50IS5uYW1lKX1cIilgKTtcbiAgfVxuXG4gIGNvbnN0IHBhcmFtczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuXG4gIGZvciAoY29uc3QgYXNzZXQgb2YgYXNzZXRzKSB7XG4gICAgLy8gRklYTUU6IFNob3VsZCBoYXZlIGV4Y2x1ZGVkIGJ5IGNvbnN0cnVjdCBwYXRoIGhlcmUgaW5zdGVhZCBvZiBieSB1bmlxdWUgSUQsIHByZWZlcmFibHkgdXNpbmdcbiAgICAvLyBtaW5pbWF0Y2ggc28gd2UgY2FuIHN1cHBvcnQgZ2xvYnMuIE1heWJlIHRha2UgdXAgZHVyaW5nIGFydGlmYWN0IHJlZmFjdG9yaW5nLlxuICAgIGNvbnN0IHJldXNlQXNzZXQgPSByZXVzZS5pbmRleE9mKGFzc2V0LmlkKSA+IC0xO1xuXG4gICAgaWYgKHJldXNlQXNzZXQpIHtcbiAgICAgIGRlYnVnKGBSZXVzaW5nIGFzc2V0ICR7YXNzZXQuaWR9OiAke0pTT04uc3RyaW5naWZ5KGFzc2V0KX1gKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGRlYnVnKGBQcmVwYXJpbmcgYXNzZXQgJHthc3NldC5pZH06ICR7SlNPTi5zdHJpbmdpZnkoYXNzZXQpfWApO1xuICAgIGlmICghc3RhY2suYXNzZW1ibHkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5leHBlY3RlZDogc3RhY2sgYXNzZW1ibHkgaXMgcmVxdWlyZWQgaW4gb3JkZXIgdG8gZmluZCBhc3NldHMgaW4gYXNzZW1seSBkaXJlY3RvcnknKTtcbiAgICB9XG5cbiAgICBPYmplY3QuYXNzaWduKHBhcmFtcywgYXdhaXQgcHJlcGFyZUFzc2V0KGFzc2V0LCBhc3NldE1hbmlmZXN0LCB0b29sa2l0SW5mbykpO1xuICB9XG5cbiAgcmV0dXJuIHBhcmFtcztcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbmFzeW5jIGZ1bmN0aW9uIHByZXBhcmVBc3NldChhc3NldDogY3hzY2hlbWEuQXNzZXRNZXRhZGF0YUVudHJ5LCBhc3NldE1hbmlmZXN0OiBBc3NldE1hbmlmZXN0QnVpbGRlciwgdG9vbGtpdEluZm86IFRvb2xraXRJbmZvKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiB7XG4gIHN3aXRjaCAoYXNzZXQucGFja2FnaW5nKSB7XG4gICAgY2FzZSAnemlwJzpcbiAgICBjYXNlICdmaWxlJzpcbiAgICAgIHJldHVybiBwcmVwYXJlRmlsZUFzc2V0KFxuICAgICAgICBhc3NldCxcbiAgICAgICAgYXNzZXRNYW5pZmVzdCxcbiAgICAgICAgdG9vbGtpdEluZm8sXG4gICAgICAgIGFzc2V0LnBhY2thZ2luZyA9PT0gJ3ppcCcgPyBjeHNjaGVtYS5GaWxlQXNzZXRQYWNrYWdpbmcuWklQX0RJUkVDVE9SWSA6IGN4c2NoZW1hLkZpbGVBc3NldFBhY2thZ2luZy5GSUxFKTtcbiAgICBjYXNlICdjb250YWluZXItaW1hZ2UnOlxuICAgICAgcmV0dXJuIHByZXBhcmVEb2NrZXJJbWFnZUFzc2V0KGFzc2V0LCBhc3NldE1hbmlmZXN0LCB0b29sa2l0SW5mbyk7XG4gICAgZGVmYXVsdDpcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIHBhY2thZ2luZyB0eXBlOiAkeyhhc3NldCBhcyBhbnkpLnBhY2thZ2luZ30uIFlvdSBtaWdodCBuZWVkIHRvIHVwZ3JhZGUgeW91ciBhd3MtY2RrIHRvb2xraXQgdG8gc3VwcG9ydCB0aGlzIGFzc2V0IHR5cGUuYCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcHJlcGFyZUZpbGVBc3NldChcbiAgYXNzZXQ6IGN4c2NoZW1hLkZpbGVBc3NldE1ldGFkYXRhRW50cnksXG4gIGFzc2V0TWFuaWZlc3Q6IEFzc2V0TWFuaWZlc3RCdWlsZGVyLFxuICB0b29sa2l0SW5mbzogVG9vbGtpdEluZm8sXG4gIHBhY2thZ2luZzogY3hzY2hlbWEuRmlsZUFzc2V0UGFja2FnaW5nKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG5cbiAgY29uc3QgZXh0ZW5zaW9uID0gcGFja2FnaW5nID09PSBjeHNjaGVtYS5GaWxlQXNzZXRQYWNrYWdpbmcuWklQX0RJUkVDVE9SWSA/ICcuemlwJyA6IHBhdGguZXh0bmFtZShhc3NldC5wYXRoKTtcbiAgY29uc3QgYmFzZU5hbWUgPSBgJHthc3NldC5zb3VyY2VIYXNofSR7ZXh0ZW5zaW9ufWA7XG4gIC8vIFNpbXBsaWZ5IGtleTogYXNzZXRzL2FiY2RlZi9hYmNkZWYuemlwIGlzIGtpbmRhIHNpbGx5IGFuZCB1bm5lY2Vzc2FyeSwgc28gaWYgdGhleSdyZSB0aGUgc2FtZSBqdXN0IHBpY2sgb25lIGNvbXBvbmVudC5cbiAgY29uc3QgczNQcmVmaXggPSBhc3NldC5pZCA9PT0gYXNzZXQuc291cmNlSGFzaCA/ICdhc3NldHMvJyA6IGBhc3NldHMvJHthc3NldC5pZH0vYDtcbiAgY29uc3Qga2V5ID0gYCR7czNQcmVmaXh9JHtiYXNlTmFtZX1gO1xuICBjb25zdCBzM3VybCA9IGBzMzovLyR7dG9vbGtpdEluZm8uYnVja2V0TmFtZX0vJHtrZXl9YDtcblxuICBkZWJ1ZyhgU3RvcmluZyBhc3NldCAke2Fzc2V0LnBhdGh9IGF0ICR7czN1cmx9YCk7XG5cbiAgYXNzZXRNYW5pZmVzdC5hZGRGaWxlQXNzZXQoYXNzZXQuc291cmNlSGFzaCwge1xuICAgIHBhdGg6IGFzc2V0LnBhdGgsXG4gICAgcGFja2FnaW5nLFxuICB9LCB7XG4gICAgYnVja2V0TmFtZTogdG9vbGtpdEluZm8uYnVja2V0TmFtZSxcbiAgICBvYmplY3RLZXk6IGtleSxcbiAgfSk7XG5cbiAgcmV0dXJuIHtcbiAgICBbYXNzZXQuczNCdWNrZXRQYXJhbWV0ZXJdOiB0b29sa2l0SW5mby5idWNrZXROYW1lLFxuICAgIFthc3NldC5zM0tleVBhcmFtZXRlcl06IGAke3MzUHJlZml4fSR7Y3hhcGkuQVNTRVRfUFJFRklYX1NFUEFSQVRPUn0ke2Jhc2VOYW1lfWAsXG4gICAgW2Fzc2V0LmFydGlmYWN0SGFzaFBhcmFtZXRlcl06IGFzc2V0LnNvdXJjZUhhc2gsXG4gIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHByZXBhcmVEb2NrZXJJbWFnZUFzc2V0KFxuICBhc3NldDogY3hzY2hlbWEuQ29udGFpbmVySW1hZ2VBc3NldE1ldGFkYXRhRW50cnksXG4gIGFzc2V0TWFuaWZlc3Q6IEFzc2V0TWFuaWZlc3RCdWlsZGVyLFxuICB0b29sa2l0SW5mbzogVG9vbGtpdEluZm8pOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+IHtcblxuICAvLyBQcmUtMS4yMS4wLCByZXBvc2l0b3J5TmFtZSBjYW4gYmUgc3BlY2lmaWVkIGJ5IHRoZSB1c2VyIG9yIGNhbiBiZSBsZWZ0IG91dCwgaW4gd2hpY2ggY2FzZSB3ZSBtYWtlXG4gIC8vIGEgcGVyLWFzc2V0IHJlcG9zaXRvcnkgd2hpY2ggd2lsbCBnZXQgYWRvcHRlZCBhbmQgY2xlYW5lZCB1cCBhbG9uZyB3aXRoIHRoZSBzdGFjay5cbiAgLy8gUG9zdC0xLjIxLjAsIHJlcG9zaXRvcnlOYW1lIHdpbGwgYWx3YXlzIGJlIHNwZWNpZmllZCBhbmQgaXQgd2lsbCBiZSBhIHNoYXJlZCByZXBvc2l0b3J5IGJldHdlZW5cbiAgLy8gYWxsIGFzc2V0cywgYW5kIGFzc2V0IHdpbGwgaGF2ZSBpbWFnZVRhZyBzcGVjaWZpZWQgYXMgd2VsbC4gVmFsaWRhdGUgdGhlIGNvbWJpbmF0aW9uLlxuICBpZiAoIWFzc2V0LmltYWdlTmFtZVBhcmFtZXRlciAmJiAoIWFzc2V0LnJlcG9zaXRvcnlOYW1lIHx8ICFhc3NldC5pbWFnZVRhZykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgRG9ja2VyIGltYWdlIGFzc2V0IGNvbmZpZ3VyYXRpb246IFwicmVwb3NpdG9yeU5hbWVcIiBhbmQgXCJpbWFnZVRhZ1wiIGFyZSByZXF1aXJlZCB3aGVuIFwiaW1hZ2VOYW1lUGFyYW1ldGVyXCIgaXMgbGVmdCBvdXQnKTtcbiAgfVxuXG4gIGNvbnN0IHJlcG9zaXRvcnlOYW1lID0gYXNzZXQucmVwb3NpdG9yeU5hbWUgPz8gJ2Nkay8nICsgYXNzZXQuaWQucmVwbGFjZSgvWzovXS9nLCAnLScpLnRvTG93ZXJDYXNlKCk7XG5cbiAgLy8gTWFrZSBzdXJlIHRoZSByZXBvc2l0b3J5IGV4aXN0cywgc2luY2UgdGhlICdjZGstYXNzZXRzJyB0b29sIHdpbGwgbm90IGNyZWF0ZSBpdCBmb3IgdXMuXG4gIGNvbnN0IHsgcmVwb3NpdG9yeVVyaSB9ID0gYXdhaXQgdG9vbGtpdEluZm8ucHJlcGFyZUVjclJlcG9zaXRvcnkocmVwb3NpdG9yeU5hbWUpO1xuICBjb25zdCBpbWFnZVRhZyA9IGFzc2V0LmltYWdlVGFnID8/IGFzc2V0LnNvdXJjZUhhc2g7XG5cbiAgYXNzZXRNYW5pZmVzdC5hZGREb2NrZXJJbWFnZUFzc2V0KGFzc2V0LnNvdXJjZUhhc2gsIHtcbiAgICBkaXJlY3Rvcnk6IGFzc2V0LnBhdGgsXG4gICAgZG9ja2VyQnVpbGRBcmdzOiBhc3NldC5idWlsZEFyZ3MsXG4gICAgZG9ja2VyQnVpbGRUYXJnZXQ6IGFzc2V0LnRhcmdldCxcbiAgICBkb2NrZXJGaWxlOiBhc3NldC5maWxlLFxuICAgIG5ldHdvcmtNb2RlOiBhc3NldC5uZXR3b3JrTW9kZSxcbiAgICBwbGF0Zm9ybTogYXNzZXQucGxhdGZvcm0sXG4gIH0sIHtcbiAgICByZXBvc2l0b3J5TmFtZSxcbiAgICBpbWFnZVRhZyxcbiAgfSk7XG5cbiAgaWYgKCFhc3NldC5pbWFnZU5hbWVQYXJhbWV0ZXIpIHsgcmV0dXJuIHt9OyB9XG4gIHJldHVybiB7IFthc3NldC5pbWFnZU5hbWVQYXJhbWV0ZXJdOiBgJHtyZXBvc2l0b3J5VXJpfToke2ltYWdlVGFnfWAgfTtcbn1cbiJdfQ==