@aws-cdk/app-staging-synthesizer-alpha 2.219.0-alpha.0 → 2.221.0-alpha.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/.jsii CHANGED
@@ -8,7 +8,7 @@
8
8
  "url": "https://aws.amazon.com"
9
9
  },
10
10
  "dependencies": {
11
- "aws-cdk-lib": "^2.219.0",
11
+ "aws-cdk-lib": "^2.221.0",
12
12
  "constructs": "^10.0.0"
13
13
  },
14
14
  "dependencyClosure": {
@@ -4082,7 +4082,7 @@
4082
4082
  "stability": "experimental"
4083
4083
  },
4084
4084
  "homepage": "https://github.com/aws/aws-cdk",
4085
- "jsiiVersion": "5.7.22 (build 1cfeabd)",
4085
+ "jsiiVersion": "5.9.8 (build 3d2e131)",
4086
4086
  "keywords": [
4087
4087
  "aws",
4088
4088
  "cdk"
@@ -5843,6 +5843,6 @@
5843
5843
  "symbolId": "lib/default-staging-stack:UsingAppStagingSynthesizer"
5844
5844
  }
5845
5845
  },
5846
- "version": "2.219.0-alpha.0",
5846
+ "version": "2.221.0-alpha.0",
5847
5847
  "fingerprint": "**********"
5848
5848
  }
Binary file
@@ -1,5 +1,4 @@
1
1
  "use strict";
2
- var _a;
3
2
  Object.defineProperty(exports, "__esModule", { value: true });
4
3
  exports.AppStagingSynthesizer = void 0;
5
4
  const jsiiDeprecationWarnings = require("../.warnings.jsii.js");
@@ -17,6 +16,24 @@ const ENV_AWARE_STACKS = new app_global_1.AppScopedGlobal(() => new Set());
17
16
  * App Staging Synthesizer
18
17
  */
19
18
  class AppStagingSynthesizer extends core_1.StackSynthesizer {
19
+ props;
20
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/app-staging-synthesizer-alpha.AppStagingSynthesizer", version: "2.221.0-alpha.0" };
21
+ /**
22
+ * Default ARN qualifier
23
+ */
24
+ static DEFAULT_QUALIFIER = 'hnb659fds';
25
+ /**
26
+ * Default CloudFormation role ARN.
27
+ */
28
+ static DEFAULT_CLOUDFORMATION_ROLE_ARN = 'arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-cfn-exec-role-${AWS::AccountId}-${AWS::Region}';
29
+ /**
30
+ * Default deploy role ARN.
31
+ */
32
+ static DEFAULT_DEPLOY_ROLE_ARN = 'arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-deploy-role-${AWS::AccountId}-${AWS::Region}';
33
+ /**
34
+ * Default lookup role ARN for missing values.
35
+ */
36
+ static DEFAULT_LOOKUP_ROLE_ARN = 'arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-lookup-role-${AWS::AccountId}-${AWS::Region}';
20
37
  /**
21
38
  * Use the Default Staging Resources, creating a single stack per environment this app is deployed in
22
39
  */
@@ -87,6 +104,7 @@ class AppStagingSynthesizer extends core_1.StackSynthesizer {
87
104
  deploymentIdentities: options.deploymentIdentities,
88
105
  });
89
106
  }
107
+ roles;
90
108
  constructor(props) {
91
109
  super();
92
110
  this.props = props;
@@ -170,30 +188,15 @@ class AppStagingSynthesizer extends core_1.StackSynthesizer {
170
188
  }
171
189
  }
172
190
  exports.AppStagingSynthesizer = AppStagingSynthesizer;
173
- _a = JSII_RTTI_SYMBOL_1;
174
- AppStagingSynthesizer[_a] = { fqn: "@aws-cdk/app-staging-synthesizer-alpha.AppStagingSynthesizer", version: "2.219.0-alpha.0" };
175
- /**
176
- * Default ARN qualifier
177
- */
178
- AppStagingSynthesizer.DEFAULT_QUALIFIER = 'hnb659fds';
179
- /**
180
- * Default CloudFormation role ARN.
181
- */
182
- AppStagingSynthesizer.DEFAULT_CLOUDFORMATION_ROLE_ARN = 'arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-cfn-exec-role-${AWS::AccountId}-${AWS::Region}';
183
- /**
184
- * Default deploy role ARN.
185
- */
186
- AppStagingSynthesizer.DEFAULT_DEPLOY_ROLE_ARN = 'arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-deploy-role-${AWS::AccountId}-${AWS::Region}';
187
- /**
188
- * Default lookup role ARN for missing values.
189
- */
190
- AppStagingSynthesizer.DEFAULT_LOOKUP_ROLE_ARN = 'arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-lookup-role-${AWS::AccountId}-${AWS::Region}';
191
191
  class BoundAppStagingSynthesizer extends core_1.StackSynthesizer {
192
+ props;
193
+ stagingStack;
194
+ assetManifest = new core_1.AssetManifestBuilder();
195
+ qualifier;
196
+ dependencyStacks = new Set();
192
197
  constructor(stack, props) {
193
198
  super();
194
199
  this.props = props;
195
- this.assetManifest = new core_1.AssetManifestBuilder();
196
- this.dependencyStacks = new Set();
197
200
  super.bind(stack);
198
201
  this.qualifier = props.qualifier;
199
202
  this.stagingStack = props.stagingResources;
@@ -255,4 +258,4 @@ class BoundAppStagingSynthesizer extends core_1.StackSynthesizer {
255
258
  return this.cloudFormationLocationFromDockerImageAsset(location);
256
259
  }
257
260
  }
258
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXN0YWdpbmctc3ludGhlc2l6ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhcHAtc3RhZ2luZy1zeW50aGVzaXplci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSwyQ0FhMEI7QUFDMUIsNEVBQXlHO0FBQ3pHLHVEQUF3RjtBQUN4RixtRUFBMEY7QUFDMUYsdUVBQXlHO0FBQ3pHLHFEQUF1RDtBQUN2RCxtREFBdUQ7QUFHdkQsTUFBTSxlQUFlLEdBQUcsSUFBSSw0QkFBZSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksR0FBRyxFQUFTLENBQUMsQ0FBQztBQUNwRSxNQUFNLGdCQUFnQixHQUFHLElBQUksNEJBQWUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEdBQUcsRUFBUyxDQUFDLENBQUM7QUF5RXJFOztHQUVHO0FBQ0gsTUFBYSxxQkFBc0IsU0FBUSx1QkFBZ0I7SUFxQnpEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQWdDOzs7Ozs7Ozs7O1FBQzdELElBQUEsNEJBQWdCLEVBQUMsT0FBTyxFQUFFLHVCQUF1QixDQUFDLENBQUM7UUFFbkQsT0FBTyxxQkFBcUIsQ0FBQyxhQUFhLENBQUM7WUFDekMsT0FBTyxFQUFFLDJDQUFtQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7WUFDN0Msb0JBQW9CLEVBQUUsT0FBTyxDQUFDLG9CQUFvQjtZQUNsRCxrQkFBa0IsRUFBRSxPQUFPLENBQUMsa0JBQWtCO1lBQzlDLFVBQVUsRUFBRSxJQUFJO1NBQ2pCLENBQUMsQ0FBQztLQUNKO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsZUFBZSxDQUFDLE9BQStCOzs7Ozs7Ozs7O1FBQzNELE9BQU8scUJBQXFCLENBQUMsYUFBYSxDQUFDO1lBQ3pDLG9CQUFvQixFQUFFLE9BQU8sQ0FBQyxvQkFBb0I7WUFDbEQsa0JBQWtCLEVBQUUsT0FBTyxDQUFDLGtCQUFrQjtZQUM5QyxVQUFVLEVBQUUsS0FBSztZQUNq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SSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsZUFBZSxFQUFFLDBEQUEwRCxDQUFDLENBQUM7WUFDM0csSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUM3QyxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsMENBQTBDLENBQUMsUUFBUSxDQUFDLENBQUM7S0FDbEU7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFzc2V0TWFuaWZlc3RCdWlsZGVyLFxuICBCT09UU1RSQVBfUVVBTElGSUVSX0NPTlRFWFQsXG4gIERvY2tlckltYWdlQXNzZXRMb2NhdGlvbixcbiAgRG9ja2VySW1hZ2VBc3NldFNvdXJjZSxcbiAgRmlsZUFzc2V0TG9jYXRpb24sXG4gIEZpbGVBc3NldFNvdXJjZSxcbiAgSUJvdW5kU3RhY2tTeW50aGVzaXplciBhcyBJQm91bmRBcHBTdGFnaW5nU3ludGhlc2l6ZXIsXG4gIElSZXVzYWJsZVN0YWNrU3ludGhlc2l6ZXIsXG4gIElTeW50aGVzaXNTZXNzaW9uLFxuICBTdGFjayxcbiAgU3RhY2tTeW50aGVzaXplcixcbiAgVG9rZW4sXG59IGZyb20gJ2F3cy1jZGstbGliL2NvcmUnO1xuaW1wb3J0IHsgU3RyaW5nU3BlY2lhbGl6ZXIsIHRyYW5zbGF0ZUNmblRva2VuVG9Bc3NldFRva2VuIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvaGVscGVycy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBCb290c3RyYXBSb2xlLCBCb290c3RyYXBSb2xlcywgRGVwbG95bWVudElkZW50aXRpZXMgfSBmcm9tICcuL2Jvb3RzdHJhcC1yb2xlcyc7XG5pbXBvcnQgeyBEZWZhdWx0U3RhZ2luZ1N0YWNrLCBEZWZhdWx0U3RhZ2luZ1N0YWNrT3B0aW9ucyB9IGZyb20gJy4vZGVmYXVsdC1zdGFnaW5nLXN0YWNrJztcbmltcG9ydCB7IFBlckVudmlyb25tZW50U3RhZ2luZ0ZhY3RvcnkgYXMgUGVyRW52aXJvbm1lbnRTdGFnaW5nRmFjdG9yeSB9IGZyb20gJy4vcGVyLWVudi1zdGFnaW5nLWZhY3RvcnknO1xuaW1wb3J0IHsgQXBwU2NvcGVkR2xvYmFsIH0gZnJvbSAnLi9wcml2YXRlL2FwcC1nbG9iYWwnO1xuaW1wb3J0IHsgdmFsaWRhdGVOb1Rva2VucyB9IGZyb20gJy4vcHJpdmF0ZS9uby10b2tlbnMnO1xuaW1wb3J0IHsgSVN0YWdpbmdSZXNvdXJjZXMsIElTdGFnaW5nUmVzb3VyY2VzRmFjdG9yeSwgT2J0YWluU3RhZ2luZ1Jlc291cmNlc0NvbnRleHQgfSBmcm9tICcuL3N0YWdpbmctc3RhY2snO1xuXG5jb25zdCBBR05PU1RJQ19TVEFDS1MgPSBuZXcgQXBwU2NvcGVkR2xvYmFsKCgpID0+IG5ldyBTZXQ8U3RhY2s+KCkpO1xuY29uc3QgRU5WX0FXQVJFX1NUQUNLUyA9IG5ldyBBcHBTY29wZWRHbG9iYWwoKCkgPT4gbmV3IFNldDxTdGFjaz4oKSk7XG5cbi8qKlxuICogT3B0aW9ucyB0aGF0IGFwcGx5IHRvIGFsbCBBcHBTdGFnaW5nU3ludGhlc2l6ZXIgdmFyaWFudHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcHBTdGFnaW5nU3ludGhlc2l6ZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoYXQgcm9sZXMgdG8gdXNlIHRvIGRlcGxveSBhcHBsaWNhdGlvbnNcbiAgICpcbiAgICogVGhlc2UgYXJlIHRoZSByb2xlcyB0aGF0IGhhdmUgcGVybWlzc2lvbnMgdG8gaW50ZXJhY3Qgd2l0aCBDbG91ZEZvcm1hdGlvblxuICAgKiBvbiB5b3VyIGJlaGFsZi4gQnkgZGVmYXVsdCB0aGVzZSBhcmUgdGhlIHN0YW5kYXJkIGJvb3RzdHJhcHBlZCBDREsgcm9sZXMsXG4gICAqIGJ1dCB5b3UgY2FuIGN1c3RvbWl6ZSB0aGVtIG9yIHR1cm4gdGhlbSBvZmYgYW5kIHVzZSB0aGUgQ0xJIGNyZWRlbnRpYWxzXG4gICAqIHRvIGRlcGxveS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBUaGUgc3RhbmRhcmQgYm9vdHN0cmFwcGVkIENESyByb2xlc1xuICAgKi9cbiAgcmVhZG9ubHkgZGVwbG95bWVudElkZW50aXRpZXM/OiBEZXBsb3ltZW50SWRlbnRpdGllcztcblxuICAvKipcbiAgICogUXVhbGlmaWVyIHRvIGRpc2FtYmlndWF0ZSBtdWx0aXBsZSBib290c3RyYXBwZWQgZW52aXJvbm1lbnRzIGluIHRoZSBzYW1lIGFjY291bnRcbiAgICpcbiAgICogVGhpcyBxdWFsaWZpZXIgaXMgb25seSB1c2VkIHRvIHJlZmVyZW5jZSBib290c3RyYXBwZWQgcmVzb3VyY2VzLiBJdCB3aWxsIG5vdFxuICAgKiBiZSB1c2VkIGluIHRoZSBjcmVhdGlvbiBvZiBhcHAtc3BlY2lmaWMgc3RhZ2luZyByZXNvdXJjZXM6IGBhcHBJZGAgaXMgdXNlZCBmb3IgdGhhdFxuICAgKiBpbnN0ZWFkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFZhbHVlIG9mIGNvbnRleHQga2V5ICdAYXdzLWNkay9jb3JlOmJvb3RzdHJhcFF1YWxpZmllcicgaWYgc2V0LCBvdGhlcndpc2UgYERFRkFVTFRfUVVBTElGSUVSYFxuICAgKi9cbiAgcmVhZG9ubHkgYm9vdHN0cmFwUXVhbGlmaWVyPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIHN0YWNrUGVyRW52IHN0YXRpYyBtZXRob2RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZWZhdWx0UmVzb3VyY2VzT3B0aW9ucyBleHRlbmRzIEFwcFN0YWdpbmdTeW50aGVzaXplck9wdGlvbnMsIERlZmF1bHRTdGFnaW5nU3RhY2tPcHRpb25zIHt9XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgY3VzdG9tRmFjdG9yeSBzdGF0aWMgbWV0aG9kXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9tRmFjdG9yeU9wdGlvbnMgZXh0ZW5kcyBBcHBTdGFnaW5nU3ludGhlc2l6ZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBmYWN0b3J5IHRoYXQgd2lsbCBiZSB1c2VkIHRvIHJldHVybiBzdGFnaW5nIHJlc291cmNlcyBmb3IgZWFjaCBzdGFja1xuICAgKi9cbiAgcmVhZG9ubHkgZmFjdG9yeTogSVN0YWdpbmdSZXNvdXJjZXNGYWN0b3J5O1xuXG4gIC8qKlxuICAgKiBSZXVzZSB0aGUgYW5zd2VyIGZyb20gdGhlIGZhY3RvcnkgZm9yIHN0YWNrcyBpbiB0aGUgc2FtZSBlbnZpcm9ubWVudFxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBvbmNlUGVyRW52PzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBjdXN0b21SZXNvdXJjZXMgc3RhdGljIG1ldGhvZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEN1c3RvbVJlc291cmNlc09wdGlvbnMgZXh0ZW5kcyBBcHBTdGFnaW5nU3ludGhlc2l6ZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIFVzZSB0aGVzZSBleGFjdCBzdGFnaW5nIHJlc291cmNlcyBmb3IgZXZlcnkgc3RhY2sgdGhhdCB0aGlzIHN5bnRoZXNpemVyIGlzIHVzZWQgZm9yXG4gICAqL1xuICByZWFkb25seSByZXNvdXJjZXM6IElTdGFnaW5nUmVzb3VyY2VzO1xufVxuXG4vKipcbiAqIEludGVybmFsIHByb3BlcnRpZXMgZm9yIEFwcFN0YWdpbmdTeW50aGVzaXplclxuICovXG5pbnRlcmZhY2UgQXBwU3RhZ2luZ1N5bnRoZXNpemVyUHJvcHMgZXh0ZW5kcyBBcHBTdGFnaW5nU3ludGhlc2l6ZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIEEgZmFjdG9yeSBtZXRob2QgdGhhdCBjcmVhdGVzIGFuIElTdGFnaW5nU3RhY2sgd2hlbiBnaXZlbiB0aGUgc3RhY2sgdGhlXG4gICAqIHN5bnRoZXNpemVyIGlzIGJpbmRpbmcuXG4gICAqL1xuICByZWFkb25seSBmYWN0b3J5OiBJU3RhZ2luZ1Jlc291cmNlc0ZhY3Rvcnk7XG59XG5cbi8qKlxuICogQXBwIFN0YWdpbmcgU3ludGhlc2l6ZXJcbiAqL1xuZXhwb3J0IGNsYXNzIEFwcFN0YWdpbmdTeW50aGVzaXplciBleHRlbmRzIFN0YWNrU3ludGhlc2l6ZXIgaW1wbGVtZW50cyBJUmV1c2FibGVTdGFja1N5bnRoZXNpemVyIHtcbiAgLyoqXG4gICAqIERlZmF1bHQgQVJOIHF1YWxpZmllclxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBERUZBVUxUX1FVQUxJRklFUiA9ICdobmI2NTlmZHMnO1xuXG4gIC8qKlxuICAgKiBEZWZhdWx0IENsb3VkRm9ybWF0aW9uIHJvbGUgQVJOLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBERUZBVUxUX0NMT1VERk9STUFUSU9OX1JPTEVfQVJOID0gJ2Fybjoke0FXUzo6UGFydGl0aW9ufTppYW06OiR7QVdTOjpBY2NvdW50SWR9OnJvbGUvY2RrLSR7UXVhbGlmaWVyfS1jZm4tZXhlYy1yb2xlLSR7QVdTOjpBY2NvdW50SWR9LSR7QVdTOjpSZWdpb259JztcblxuICAvKipcbiAgICogRGVmYXVsdCBkZXBsb3kgcm9sZSBBUk4uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfREVQTE9ZX1JPTEVfQVJOID0gJ2Fybjoke0FXUzo6UGFydGl0aW9ufTppYW06OiR7QVdTOjpBY2NvdW50SWR9OnJvbGUvY2RrLSR7UXVhbGlmaWVyfS1kZXBsb3ktcm9sZS0ke0FXUzo6QWNjb3VudElkfS0ke0FXUzo6UmVnaW9ufSc7XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgbG9va3VwIHJvbGUgQVJOIGZvciBtaXNzaW5nIHZhbHVlcy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9MT09LVVBfUk9MRV9BUk4gPSAnYXJuOiR7QVdTOjpQYXJ0aXRpb259OmlhbTo6JHtBV1M6OkFjY291bnRJZH06cm9sZS9jZGstJHtRdWFsaWZpZXJ9LWxvb2t1cC1yb2xlLSR7QVdTOjpBY2NvdW50SWR9LSR7QVdTOjpSZWdpb259JztcblxuICAvKipcbiAgICogVXNlIHRoZSBEZWZhdWx0IFN0YWdpbmcgUmVzb3VyY2VzLCBjcmVhdGluZyBhIHNpbmdsZSBzdGFjayBwZXIgZW52aXJvbm1lbnQgdGhpcyBhcHAgaXMgZGVwbG95ZWQgaW5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZGVmYXVsdFJlc291cmNlcyhvcHRpb25zOiBEZWZhdWx0UmVzb3VyY2VzT3B0aW9ucykge1xuICAgIHZhbGlkYXRlTm9Ub2tlbnMob3B0aW9ucywgJ0FwcFN0YWdpbmdTeW50aGVzaXplcicpO1xuXG4gICAgcmV0dXJuIEFwcFN0YWdpbmdTeW50aGVzaXplci5jdXN0b21GYWN0b3J5KHtcbiAgICAgIGZhY3Rvcnk6IERlZmF1bHRTdGFnaW5nU3RhY2suZmFjdG9yeShvcHRpb25zKSxcbiAgICAgIGRlcGxveW1lbnRJZGVudGl0aWVzOiBvcHRpb25zLmRlcGxveW1lbnRJZGVudGl0aWVzLFxuICAgICAgYm9vdHN0cmFwUXVhbGlmaWVyOiBvcHRpb25zLmJvb3RzdHJhcFF1YWxpZmllcixcbiAgICAgIG9uY2VQZXJFbnY6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVXNlIHRoZXNlIGV4YWN0IHN0YWdpbmcgcmVzb3VyY2VzIGZvciBldmVyeSBzdGFjayB0aGF0IHRoaXMgc3ludGhlc2l6ZXIgaXMgdXNlZCBmb3JcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY3VzdG9tUmVzb3VyY2VzKG9wdGlvbnM6IEN1c3RvbVJlc291cmNlc09wdGlvbnMpIHtcbiAgICByZXR1cm4gQXBwU3RhZ2luZ1N5bnRoZXNpemVyLmN1c3RvbUZhY3Rvcnkoe1xuICAgICAgZGVwbG95bWVudElkZW50aXRpZXM6IG9wdGlvbnMuZGVwbG95bWVudElkZW50aXRpZXMsXG4gICAgICBib290c3RyYXBRdWFsaWZpZXI6IG9wdGlvbnMuYm9vdHN0cmFwUXVhbGlmaWVyLFxuICAgICAgb25jZVBlckVudjogZmFsc2UsXG4gICAgICBmYWN0b3J5OiB7XG4gICAgICAgIG9idGFpblN0YWdpbmdSZXNvdXJjZXMoKSB7XG4gICAgICAgICAgcmV0dXJuIG9wdGlvbnMucmVzb3VyY2VzO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdXBwbHkgeW91ciBvd24gc3RhZ2luZ1N0YWNrRmFjdG9yeSBtZXRob2QgZm9yIGNyZWF0aW5nIGFuIElTdGFnaW5nU3RhY2sgd2hlblxuICAgKiBhIHN0YWNrIGlzIGJvdW5kIHRvIHRoZSBzeW50aGVzaXplci5cbiAgICpcbiAgICogQnkgZGVmYXVsdCwgYG9uY2VQZXJFbnYgPSB0cnVlYCwgd2hpY2ggbWVhbnMgdGhhdCBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgSVN0YWdpbmdTdGFja1xuICAgKiB3aWxsIGJlIGNyZWF0ZWQgaW4gbmV3IGVudmlyb25tZW50cy4gU2V0IGBvbmNlUGVyRW52ID0gZmFsc2VgIHRvIHR1cm4gb2ZmIHRoYXQgYmVoYXZpb3IuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGN1c3RvbUZhY3Rvcnkob3B0aW9uczogQ3VzdG9tRmFjdG9yeU9wdGlvbnMpIHtcbiAgICBjb25zdCBvbmNlUGVyRW52ID0gb3B0aW9ucy5vbmNlUGVyRW52ID8/IHRydWU7XG4gICAgY29uc3QgZmFjdG9yeSA9IG9uY2VQZXJFbnYgPyBuZXcgUGVyRW52aXJvbm1lbnRTdGFnaW5nRmFjdG9yeShvcHRpb25zLmZhY3RvcnkpIDogb3B0aW9ucy5mYWN0b3J5O1xuXG4gICAgcmV0dXJuIG5ldyBBcHBTdGFnaW5nU3ludGhlc2l6ZXIoe1xuICAgICAgZmFjdG9yeSxcbiAgICAgIGJvb3RzdHJhcFF1YWxpZmllcjogb3B0aW9ucy5ib290c3RyYXBRdWFsaWZpZXIsXG4gICAgICBkZXBsb3ltZW50SWRlbnRpdGllczogb3B0aW9ucy5kZXBsb3ltZW50SWRlbnRpdGllcyxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgcm9sZXM6IFJlcXVpcmVkPEJvb3RzdHJhcFJvbGVzPjtcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcHJvcHM6IEFwcFN0YWdpbmdTeW50aGVzaXplclByb3BzKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIGNvbnN0IGRlZmF1bHRJZGVudGl0aWVzID0gRGVwbG95bWVudElkZW50aXRpZXMuZGVmYXVsdEJvb3RzdHJhcFJvbGVzKCk7XG4gICAgY29uc3QgaWRlbnRpdGllcyA9IHByb3BzLmRlcGxveW1lbnRJZGVudGl0aWVzID8/IERlcGxveW1lbnRJZGVudGl0aWVzLmRlZmF1bHRCb290c3RyYXBSb2xlcygpO1xuXG4gICAgdGhpcy5yb2xlcyA9IHtcbiAgICAgIGRlcGxveW1lbnRSb2xlOiBpZGVudGl0aWVzLmRlcGxveW1lbnRSb2xlID8/IGRlZmF1bHRJZGVudGl0aWVzLmRlcGxveW1lbnRSb2xlISxcbiAgICAgIGNsb3VkRm9ybWF0aW9uRXhlY3V0aW9uUm9sZTogaWRlbnRpdGllcy5jbG91ZEZvcm1hdGlvbkV4ZWN1dGlvblJvbGUgPz8gZGVmYXVsdElkZW50aXRpZXMuY2xvdWRGb3JtYXRpb25FeGVjdXRpb25Sb2xlISxcbiAgICAgIGxvb2t1cFJvbGU6IGlkZW50aXRpZXMubG9va3VwUm9sZSA/PyBpZGVudGl0aWVzLmxvb2t1cFJvbGUhLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHZlcnNpb24gb2YgdGhlIHN5bnRoZXNpemVyIGJvdW5kIHRvIGEgc3RhY2suXG4gICAqL1xuICBwdWJsaWMgcmV1c2FibGVCaW5kKHN0YWNrOiBTdGFjayk6IElCb3VuZEFwcFN0YWdpbmdTeW50aGVzaXplciB7XG4gICAgdGhpcy5jaGVja0Vudmlyb25tZW50R25vc3RpY2lzbShzdGFjayk7XG4gICAgY29uc3QgcXVhbGlmaWVyID0gdGhpcy5wcm9wcy5ib290c3RyYXBRdWFsaWZpZXIgPz9cbiAgICAgIHN0YWNrLm5vZGUudHJ5R2V0Q29udGV4dChCT09UU1RSQVBfUVVBTElGSUVSX0NPTlRFWFQpID8/XG4gICAgICBBcHBTdGFnaW5nU3ludGhlc2l6ZXIuREVGQVVMVF9RVUFMSUZJRVI7XG4gICAgY29uc3Qgc3BlYyA9IG5ldyBTdHJpbmdTcGVjaWFsaXplcihzdGFjaywgcXVhbGlmaWVyKTtcblxuICAgIGNvbnN0IGRlcGxveVJvbGUgPSB0aGlzLnJvbGVzLmRlcGxveW1lbnRSb2xlLl9zcGVjaWFsaXplKHNwZWMpO1xuXG4gICAgY29uc3QgY29udGV4dDogT2J0YWluU3RhZ2luZ1Jlc291cmNlc0NvbnRleHQgPSB7XG4gICAgICBlbnZpcm9ubWVudFN0cmluZzogW1xuICAgICAgICBUb2tlbi5pc1VucmVzb2x2ZWQoc3RhY2suYWNjb3VudCkgPyAnQUNDT1VOVCcgOiBzdGFjay5hY2NvdW50LFxuICAgICAgICBUb2tlbi5pc1VucmVzb2x2ZWQoc3RhY2sucmVnaW9uKSA/ICdSRUdJT04nIDogc3RhY2sucmVnaW9uLFxuICAgICAgXS5qb2luKCctJyksXG4gICAgICBkZXBsb3lSb2xlQXJuOiBkZXBsb3lSb2xlLl9hcm5Gb3JDbG91ZEZvcm1hdGlvbigpLFxuICAgICAgcXVhbGlmaWVyLFxuICAgIH07XG5cbiAgICByZXR1cm4gbmV3IEJvdW5kQXBwU3RhZ2luZ1N5bnRoZXNpemVyKHN0YWNrLCB7XG4gICAgICBzdGFnaW5nUmVzb3VyY2VzOiB0aGlzLnByb3BzLmZhY3Rvcnkub2J0YWluU3RhZ2luZ1Jlc291cmNlcyhzdGFjaywgY29udGV4dCksXG4gICAgICBkZXBsb3lSb2xlLFxuICAgICAgY2xvdWRGb3JtYXRpb25FeGVjdXRpb25Sb2xlOiB0aGlzLnJvbGVzLmNsb3VkRm9ybWF0aW9uRXhlY3V0aW9uUm9sZS5fc3BlY2lhbGl6ZShzcGVjKSxcbiAgICAgIGxvb2t1cFJvbGU6IHRoaXMucm9sZXMubG9va3VwUm9sZS5fc3BlY2lhbGl6ZShzcGVjKSxcbiAgICAgIHF1YWxpZmllcixcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBsZW1lbnRlZCBmb3IgbGVnYWN5IHB1cnBvc2VzOyB0aGlzIHdpbGwgbmV2ZXIgYmUgY2FsbGVkLlxuICAgKi9cbiAgcHVibGljIGJpbmQoX3N0YWNrOiBTdGFjaykge1xuICAgIHRocm93IG5ldyBFcnJvcignVGhpcyBpcyBhIGxlZ2FjeSBBUEksIGNhbGwgcmV1c2FibGVCaW5kIGluc3RlYWQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBsZW1lbnRlZCBmb3IgbGVnYWN5IHB1cnBvc2VzOyB0aGlzIHdpbGwgbmV2ZXIgYmUgY2FsbGVkLlxuICAgKi9cbiAgcHVibGljIHN5bnRoZXNpemUoX3Nlc3Npb246IElTeW50aGVzaXNTZXNzaW9uKTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUaGlzIGlzIGEgbGVnYWN5IEFQSSwgY2FsbCByZXVzYWJsZUJpbmQgaW5zdGVhZCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcGxlbWVudGVkIGZvciBsZWdhY3kgcHVycG9zZXM7IHRoaXMgd2lsbCBuZXZlciBiZSBjYWxsZWQuXG4gICAqL1xuICBwdWJsaWMgYWRkRmlsZUFzc2V0KF9hc3NldDogRmlsZUFzc2V0U291cmNlKTogRmlsZUFzc2V0TG9jYXRpb24ge1xuICAgIHRocm93IG5ldyBFcnJvcignVGhpcyBpcyBhIGxlZ2FjeSBBUEksIGNhbGwgcmV1c2FibGVCaW5kIGluc3RlYWQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBsZW1lbnRlZCBmb3IgbGVnYWN5IHB1cnBvc2VzOyB0aGlzIHdpbGwgbmV2ZXIgYmUgY2FsbGVkLlxuICAgKi9cbiAgcHVibGljIGFkZERvY2tlckltYWdlQXNzZXQoX2Fzc2V0OiBEb2NrZXJJbWFnZUFzc2V0U291cmNlKTogRG9ja2VySW1hZ2VBc3NldExvY2F0aW9uIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoaXMgaXMgYSBsZWdhY3kgQVBJLCBjYWxsIHJldXNhYmxlQmluZCBpbnN0ZWFkJyk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgdGhhdCB3ZSdyZSBvbmx5IGJlaW5nIHVzZWQgZm9yIGV4Y2x1c2l2ZWx5IGdub3N0aWMgb3IgYWdub3N0aWMgc3RhY2tzLlxuICAgKlxuICAgKiBXZSBjYW4gdGhpbmsgYWJvdXQgd2hldGhlciB0byBsb29zZW4gdGhpcyByZXF1aXJlbWVudCBsYXRlci5cbiAgICovXG4gIHByaXZhdGUgY2hlY2tFbnZpcm9ubWVudEdub3N0aWNpc20oc3RhY2s6IFN0YWNrKSB7XG4gICAgY29uc3QgaXNBZ25vc3RpYyA9IFRva2VuLmlzVW5yZXNvbHZlZChzdGFjay5hY2NvdW50KSB8fCBUb2tlbi5pc1VucmVzb2x2ZWQoc3RhY2sucmVnaW9uKTtcbiAgICBjb25zdCBhZ25vc3RpY1N0YWNrcyA9IEFHTk9TVElDX1NUQUNLUy5mb3Ioc3RhY2spO1xuICAgIGNvbnN0IGVudkF3YXJlU3RhY2tzID0gRU5WX0FXQVJFX1NUQUNLUy5mb3Ioc3RhY2spO1xuXG4gICAgKGlzQWdub3N0aWMgPyBhZ25vc3RpY1N0YWNrcyA6IGVudkF3YXJlU3RhY2tzKS5hZGQoc3RhY2spO1xuICAgIGlmIChhZ25vc3RpY1N0YWNrcy5zaXplID4gMCAmJiBlbnZBd2FyZVN0YWNrcy5zaXplID4gMCkge1xuICAgICAgY29uc3QgZGVzY3JpYmVTdGFja3MgPSAoeHM6IFNldDxTdGFjaz4pID0+IEFycmF5LmZyb20oeHMpLm1hcChzID0+IHMubm9kZS5wYXRoKS5qb2luKCcsICcpO1xuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoW1xuICAgICAgICAnSXQgaXMgbm90IHNhZmUgdG8gdXNlIEFwcFN0YWdpbmdTeW50aGVzaXplciBmb3IgYm90aCBlbnZpcm9ubWVudC1hZ25vc3RpYyBhbmQgZW52aXJvbm1lbnQtYXdhcmUgc3RhY2tzIGF0IHRoZSBzYW1lIHRpbWUuJyxcbiAgICAgICAgJ1BsZWFzZSBlaXRoZXIgc3BlY2lmeSBlbnZpcm9ubWVudHMgZm9yIGFsbCBzdGFja3Mgb3Igbm8gc3RhY2tzIGluIHRoZSBDREsgQXBwLicsXG4gICAgICAgIGBBdCBsZWFzdCB0aGVzZSBzdGFja3Mgd2l0aCBlbnZpcm9ubWVudDogJHtkZXNjcmliZVN0YWNrcyhlbnZBd2FyZVN0YWNrcyl9LmAsXG4gICAgICAgIGBBdCBsZWFzdCB0aGVzZSBzdGFja3Mgd2l0aG91dCBlbnZpcm9ubWVudDogJHtkZXNjcmliZVN0YWNrcyhhZ25vc3RpY1N0YWNrcyl9LmAsXG4gICAgICBdLmpvaW4oJyAnKSk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogSW50ZXJuYWwgcHJvcGVydGllcyBmb3IgQm91bmRBcHBTdGFnaW5nU3ludGhlc2l6ZXJcbiAqL1xuaW50ZXJmYWNlIEJvdW5kQXBwU3RhZ2luZ1N5bnRoZXNpemVyUHJvcHMge1xuICAvKipcbiAgICogVGhlIGJvb3RzdHJhcCBxdWFsaWZpZXJcbiAgICovXG4gIHJlYWRvbmx5IHF1YWxpZmllcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVzb3VyY2VzIHdlIGVuZCB1cCB1c2luZyBmb3IgdGhpcyBzeW50aGVzaXplclxuICAgKi9cbiAgcmVhZG9ubHkgc3RhZ2luZ1Jlc291cmNlczogSVN0YWdpbmdSZXNvdXJjZXM7XG5cbiAgLyoqXG4gICAqIFRoZSBkZXBsb3kgcm9sZVxuICAgKi9cbiAgcmVhZG9ubHkgZGVwbG95Um9sZTogQm9vdHN0cmFwUm9sZTtcblxuICAvKipcbiAgICogQ2xvdWRGb3JtYXRpb24gRXhlY3V0aW9uIFJvbGVcbiAgICovXG4gIHJlYWRvbmx5IGNsb3VkRm9ybWF0aW9uRXhlY3V0aW9uUm9sZTogQm9vdHN0cmFwUm9sZTtcblxuICAvKipcbiAgICogTG9va3VwIFJvbGVcbiAgICovXG4gIHJlYWRvbmx5IGxvb2t1cFJvbGU6IEJvb3RzdHJhcFJvbGU7XG59XG5cbmNsYXNzIEJvdW5kQXBwU3RhZ2luZ1N5bnRoZXNpemVyIGV4dGVuZHMgU3RhY2tTeW50aGVzaXplciBpbXBsZW1lbnRzIElCb3VuZEFwcFN0YWdpbmdTeW50aGVzaXplciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgc3RhZ2luZ1N0YWNrOiBJU3RhZ2luZ1Jlc291cmNlcztcbiAgcHJpdmF0ZSByZWFkb25seSBhc3NldE1hbmlmZXN0ID0gbmV3IEFzc2V0TWFuaWZlc3RCdWlsZGVyKCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcXVhbGlmaWVyOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVwZW5kZW5jeVN0YWNrczogU2V0PFN0YWNrPiA9IG5ldyBTZXQoKTtcblxuICBjb25zdHJ1Y3RvcihzdGFjazogU3RhY2ssIHByaXZhdGUgcmVhZG9ubHkgcHJvcHM6IEJvdW5kQXBwU3RhZ2luZ1N5bnRoZXNpemVyUHJvcHMpIHtcbiAgICBzdXBlcigpO1xuICAgIHN1cGVyLmJpbmQoc3RhY2spO1xuXG4gICAgdGhpcy5xdWFsaWZpZXIgPSBwcm9wcy5xdWFsaWZpZXI7XG4gICAgdGhpcy5zdGFnaW5nU3RhY2sgPSBwcm9wcy5zdGFnaW5nUmVzb3VyY2VzO1xuICB9XG4gIC8qKlxuICAgKiBUaGUgcXVhbGlmaWVyIHVzZWQgdG8gYm9vdHN0cmFwIHRoaXMgc3RhY2tcbiAgICovXG4gIHB1YmxpYyBnZXQgYm9vdHN0cmFwUXVhbGlmaWVyKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgLy8gTm90IHN1cmUgd2h5IHdlIG5lZWQgdGhpcy5cbiAgICByZXR1cm4gdGhpcy5xdWFsaWZpZXI7XG4gIH1cblxuICBwdWJsaWMgc3ludGhlc2l6ZShzZXNzaW9uOiBJU3ludGhlc2lzU2Vzc2lvbik6IHZvaWQge1xuICAgIGNvbnN0IHRlbXBsYXRlQXNzZXRTb3VyY2UgPSB0aGlzLnN5bnRoZXNpemVUZW1wbGF0ZShzZXNzaW9uLCB0aGlzLnByb3BzLmxvb2t1cFJvbGU/Ll9hcm5Gb3JDbG91ZEFzc2VtYmx5KCkpO1xuICAgIGNvbnN0IHRlbXBsYXRlQXNzZXQgPSB0aGlzLmFkZEZpbGVBc3NldCh0ZW1wbGF0ZUFzc2V0U291cmNlKTtcblxuICAgIGNvbnN0IGRlcGVuZGVuY2llcyA9IEFycmF5LmZyb20odGhpcy5kZXBlbmRlbmN5U3RhY2tzKS5mbGF0TWFwKChkKSA9PiBkLmFydGlmYWN0SWQpO1xuICAgIGNvbnN0IGFzc2V0TWFuaWZlc3RJZCA9IHRoaXMuYXNzZXRNYW5pZmVzdC5lbWl0TWFuaWZlc3QodGhpcy5ib3VuZFN0YWNrLCBzZXNzaW9uLCB7fSwgZGVwZW5kZW5jaWVzKTtcblxuICAgIGNvbnN0IGxvb2t1cFJvbGVBcm4gPSB0aGlzLnByb3BzLmxvb2t1cFJvbGU/Ll9hcm5Gb3JDbG91ZEFzc2VtYmx5KCk7XG5cbiAgICB0aGlzLmVtaXRBcnRpZmFjdChzZXNzaW9uLCB7XG4gICAgICBhc3N1bWVSb2xlQXJuOiB0aGlzLnByb3BzLmRlcGxveVJvbGU/Ll9hcm5Gb3JDbG91ZEFzc2VtYmx5KCksXG4gICAgICBhZGRpdGlvbmFsRGVwZW5kZW5jaWVzOiBbYXNzZXRNYW5pZmVzdElkXSxcbiAgICAgIHN0YWNrVGVtcGxhdGVBc3NldE9iamVjdFVybDogdGVtcGxhdGVBc3NldC5zM09iamVjdFVybFdpdGhQbGFjZWhvbGRlcnMsXG4gICAgICBjbG91ZEZvcm1hdGlvbkV4ZWN1dGlvblJvbGVBcm46IHRoaXMucHJvcHMuY2xvdWRGb3JtYXRpb25FeGVjdXRpb25Sb2xlPy5fYXJuRm9yQ2xvdWRBc3NlbWJseSgpLFxuICAgICAgbG9va3VwUm9sZTogbG9va3VwUm9sZUFybiA/IHsgYXJuOiBsb29rdXBSb2xlQXJuIH0gOiB1bmRlZmluZWQsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgZmlsZSBhc3NldCB0byB0aGUgbWFuaWZlc3QuXG4gICAqL1xuICBwdWJsaWMgYWRkRmlsZUFzc2V0KGFzc2V0OiBGaWxlQXNzZXRTb3VyY2UpOiBGaWxlQXNzZXRMb2NhdGlvbiB7XG4gICAgY29uc3QgeyBidWNrZXROYW1lLCBhc3N1bWVSb2xlQXJuLCBwcmVmaXgsIGRlcGVuZGVuY3lTdGFjayB9ID0gdGhpcy5zdGFnaW5nU3RhY2suYWRkRmlsZShhc3NldCk7XG4gICAgY29uc3QgbG9jYXRpb24gPSB0aGlzLmFzc2V0TWFuaWZlc3QuZGVmYXVsdEFkZEZpbGVBc3NldCh0aGlzLmJvdW5kU3RhY2ssIGFzc2V0LCB7XG4gICAgICBidWNrZXROYW1lOiB0cmFuc2xhdGVDZm5Ub2tlblRvQXNzZXRUb2tlbihidWNrZXROYW1lKSxcbiAgICAgIGJ1Y2tldFByZWZpeDogcHJlZml4LFxuICAgICAgcm9sZTogYXNzdW1lUm9sZUFybiA/IHsgYXNzdW1lUm9sZUFybjogdHJhbnNsYXRlQ2ZuVG9rZW5Ub0Fzc2V0VG9rZW4oYXNzdW1lUm9sZUFybikgfSA6IHVuZGVmaW5lZCxcbiAgICB9LCB7XG4gICAgICBkaXNwbGF5TmFtZTogYXNzZXQuZGlzcGxheU5hbWUsXG4gICAgfSk7XG5cbiAgICBpZiAoZGVwZW5kZW5jeVN0YWNrKSB7XG4gICAgICB0aGlzLmJvdW5kU3RhY2suYWRkRGVwZW5kZW5jeShkZXBlbmRlbmN5U3RhY2ssICdzdGFjayBkZXBlbmRzIG9uIHRoZSBzdGFnaW5nIHN0YWNrIGZvciBzdGFnaW5nIHJlc291cmNlcycpO1xuICAgICAgdGhpcy5kZXBlbmRlbmN5U3RhY2tzLmFkZChkZXBlbmRlbmN5U3RhY2spO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmNsb3VkRm9ybWF0aW9uTG9jYXRpb25Gcm9tRmlsZUFzc2V0KGxvY2F0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBkb2NrZXIgaW1hZ2UgYXNzZXQgdG8gdGhlIG1hbmlmZXN0LlxuICAgKi9cbiAgcHVibGljIGFkZERvY2tlckltYWdlQXNzZXQoYXNzZXQ6IERvY2tlckltYWdlQXNzZXRTb3VyY2UpOiBEb2NrZXJJbWFnZUFzc2V0TG9jYXRpb24ge1xuICAgIGNvbnN0IHsgcmVwb05hbWUsIGFzc3VtZVJvbGVBcm4sIGRlcGVuZGVuY3lTdGFjayB9ID0gdGhpcy5zdGFnaW5nU3RhY2suYWRkRG9ja2VySW1hZ2UoYXNzZXQpO1xuICAgIGNvbnN0IGxvY2F0aW9uID0gdGhpcy5hc3NldE1hbmlmZXN0LmRlZmF1bHRBZGREb2NrZXJJbWFnZUFzc2V0KHRoaXMuYm91bmRTdGFjaywgYXNzZXQsIHtcbiAgICAgIHJlcG9zaXRvcnlOYW1lOiB0cmFuc2xhdGVDZm5Ub2tlblRvQXNzZXRUb2tlbihyZXBvTmFtZSksXG4gICAgICByb2xlOiBhc3N1bWVSb2xlQXJuID8geyBhc3N1bWVSb2xlQXJuOiB0cmFuc2xhdGVDZm5Ub2tlblRvQXNzZXRUb2tlbihhc3N1bWVSb2xlQXJuKSB9IDogdW5kZWZpbmVkLFxuICAgIH0sIHtcbiAgICAgIGRpc3BsYXlOYW1lOiBhc3NldC5kaXNwbGF5TmFtZSxcbiAgICB9KTtcblxuICAgIGlmIChkZXBlbmRlbmN5U3RhY2spIHtcbiAgICAgIHRoaXMuYm91bmRTdGFjay5hZGREZXBlbmRlbmN5KGRlcGVuZGVuY3lTdGFjaywgJ3N0YWNrIGRlcGVuZHMgb24gdGhlIHN0YWdpbmcgc3RhY2sgZm9yIHN0YWdpbmcgcmVzb3VyY2VzJyk7XG4gICAgICB0aGlzLmRlcGVuZGVuY3lTdGFja3MuYWRkKGRlcGVuZGVuY3lTdGFjayk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuY2xvdWRGb3JtYXRpb25Mb2NhdGlvbkZyb21Eb2NrZXJJbWFnZUFzc2V0KGxvY2F0aW9uKTtcbiAgfVxufVxuIl19
261
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXN0YWdpbmctc3ludGhlc2l6ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhcHAtc3RhZ2luZy1zeW50aGVzaXplci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDJDQWEwQjtBQUMxQiw0RUFBeUc7QUFDekcsdURBQXdGO0FBQ3hGLG1FQUEwRjtBQUMxRix1RUFBeUc7QUFDekcscURBQXVEO0FBQ3ZELG1EQUF1RDtBQUd2RCxNQUFNLGVBQWUsR0FBRyxJQUFJLDRCQUFlLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxHQUFHLEVBQVMsQ0FBQyxDQUFDO0FBQ3BFLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSw0QkFBZSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksR0FBRyxFQUFTLENBQUMsQ0FBQztBQXlFckU7O0dBRUc7QUFDSCxNQUFhLHFCQUFzQixTQUFRLHVCQUFnQjtJQXVFcEI7O0lBdEVyQzs7T0FFRztJQUNJLE1BQU0sQ0FBVSxpQkFBaUIsR0FBRyxXQUFXLENBQUM7SUFFdkQ7O09BRUc7SUFDSSxNQUFNLENBQVUsK0JBQStCLEdBQUcsbUhBQW1ILENBQUM7SUFFN0s7O09BRUc7SUFDSSxNQUFNLENBQVUsdUJBQXVCLEdBQUcsaUhBQWlILENBQUM7SUFFbks7O09BRUc7SUFDSSxNQUFNLENBQVUsdUJBQXVCLEdBQUcsaUhBQWlILENBQUM7SUFFbks7O09BRUc7SUFDSSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsT0FBZ0M7Ozs7Ozs7Ozs7UUFDN0QsSUFBQSw0QkFBZ0IsRUFBQyxPQUFPLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztRQUVuRCxPQUFPLHFCQUFxQixDQUFDLGFBQWEsQ0FBQztZQUN6QyxPQUFPLEVBQUUsMkNBQW1CLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztZQUM3QyxvQkFBb0IsRUFBRSxPQUFPLENBQUMsb0JBQW9CO1lBQ2xELGtCQUFrQixFQUFFLE9BQU8sQ0FBQyxrQkFBa0I7WUFDOUMsVUFBVSxF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QUFTO1NBQ2xHLEVBQUU7WUFDRCxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7U0FDL0IsQ0FBQyxDQUFDO1FBRUgsSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxlQUFlLEVBQUUsMERBQTBELENBQUMsQ0FBQztZQUMzRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQywwQ0FBMEMsQ0FBQyxRQUFRLENBQUMsQ0FBQztLQUNsRTtDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQXNzZXRNYW5pZmVzdEJ1aWxkZXIsXG4gIEJPT1RTVFJBUF9RVUFMSUZJRVJfQ09OVEVYVCxcbiAgRG9ja2VySW1hZ2VBc3NldExvY2F0aW9uLFxuICBEb2NrZXJJbWFnZUFzc2V0U291cmNlLFxuICBGaWxlQXNzZXRMb2NhdGlvbixcbiAgRmlsZUFzc2V0U291cmNlLFxuICBJQm91bmRTdGFja1N5bnRoZXNpemVyIGFzIElCb3VuZEFwcFN0YWdpbmdTeW50aGVzaXplcixcbiAgSVJldXNhYmxlU3RhY2tTeW50aGVzaXplcixcbiAgSVN5bnRoZXNpc1Nlc3Npb24sXG4gIFN0YWNrLFxuICBTdGFja1N5bnRoZXNpemVyLFxuICBUb2tlbixcbn0gZnJvbSAnYXdzLWNkay1saWIvY29yZSc7XG5pbXBvcnQgeyBTdHJpbmdTcGVjaWFsaXplciwgdHJhbnNsYXRlQ2ZuVG9rZW5Ub0Fzc2V0VG9rZW4gfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9oZWxwZXJzLWludGVybmFsJztcbmltcG9ydCB7IEJvb3RzdHJhcFJvbGUsIEJvb3RzdHJhcFJvbGVzLCBEZXBsb3ltZW50SWRlbnRpdGllcyB9IGZyb20gJy4vYm9vdHN0cmFwLXJvbGVzJztcbmltcG9ydCB7IERlZmF1bHRTdGFnaW5nU3RhY2ssIERlZmF1bHRTdGFnaW5nU3RhY2tPcHRpb25zIH0gZnJvbSAnLi9kZWZhdWx0LXN0YWdpbmctc3RhY2snO1xuaW1wb3J0IHsgUGVyRW52aXJvbm1lbnRTdGFnaW5nRmFjdG9yeSBhcyBQZXJFbnZpcm9ubWVudFN0YWdpbmdGYWN0b3J5IH0gZnJvbSAnLi9wZXItZW52LXN0YWdpbmctZmFjdG9yeSc7XG5pbXBvcnQgeyBBcHBTY29wZWRHbG9iYWwgfSBmcm9tICcuL3ByaXZhdGUvYXBwLWdsb2JhbCc7XG5pbXBvcnQgeyB2YWxpZGF0ZU5vVG9rZW5zIH0gZnJvbSAnLi9wcml2YXRlL25vLXRva2Vucyc7XG5pbXBvcnQgeyBJU3RhZ2luZ1Jlc291cmNlcywgSVN0YWdpbmdSZXNvdXJjZXNGYWN0b3J5LCBPYnRhaW5TdGFnaW5nUmVzb3VyY2VzQ29udGV4dCB9IGZyb20gJy4vc3RhZ2luZy1zdGFjayc7XG5cbmNvbnN0IEFHTk9TVElDX1NUQUNLUyA9IG5ldyBBcHBTY29wZWRHbG9iYWwoKCkgPT4gbmV3IFNldDxTdGFjaz4oKSk7XG5jb25zdCBFTlZfQVdBUkVfU1RBQ0tTID0gbmV3IEFwcFNjb3BlZEdsb2JhbCgoKSA9PiBuZXcgU2V0PFN0YWNrPigpKTtcblxuLyoqXG4gKiBPcHRpb25zIHRoYXQgYXBwbHkgdG8gYWxsIEFwcFN0YWdpbmdTeW50aGVzaXplciB2YXJpYW50c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEFwcFN0YWdpbmdTeW50aGVzaXplck9wdGlvbnMge1xuICAvKipcbiAgICogV2hhdCByb2xlcyB0byB1c2UgdG8gZGVwbG95IGFwcGxpY2F0aW9uc1xuICAgKlxuICAgKiBUaGVzZSBhcmUgdGhlIHJvbGVzIHRoYXQgaGF2ZSBwZXJtaXNzaW9ucyB0byBpbnRlcmFjdCB3aXRoIENsb3VkRm9ybWF0aW9uXG4gICAqIG9uIHlvdXIgYmVoYWxmLiBCeSBkZWZhdWx0IHRoZXNlIGFyZSB0aGUgc3RhbmRhcmQgYm9vdHN0cmFwcGVkIENESyByb2xlcyxcbiAgICogYnV0IHlvdSBjYW4gY3VzdG9taXplIHRoZW0gb3IgdHVybiB0aGVtIG9mZiBhbmQgdXNlIHRoZSBDTEkgY3JlZGVudGlhbHNcbiAgICogdG8gZGVwbG95LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFRoZSBzdGFuZGFyZCBib290c3RyYXBwZWQgQ0RLIHJvbGVzXG4gICAqL1xuICByZWFkb25seSBkZXBsb3ltZW50SWRlbnRpdGllcz86IERlcGxveW1lbnRJZGVudGl0aWVzO1xuXG4gIC8qKlxuICAgKiBRdWFsaWZpZXIgdG8gZGlzYW1iaWd1YXRlIG11bHRpcGxlIGJvb3RzdHJhcHBlZCBlbnZpcm9ubWVudHMgaW4gdGhlIHNhbWUgYWNjb3VudFxuICAgKlxuICAgKiBUaGlzIHF1YWxpZmllciBpcyBvbmx5IHVzZWQgdG8gcmVmZXJlbmNlIGJvb3RzdHJhcHBlZCByZXNvdXJjZXMuIEl0IHdpbGwgbm90XG4gICAqIGJlIHVzZWQgaW4gdGhlIGNyZWF0aW9uIG9mIGFwcC1zcGVjaWZpYyBzdGFnaW5nIHJlc291cmNlczogYGFwcElkYCBpcyB1c2VkIGZvciB0aGF0XG4gICAqIGluc3RlYWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gVmFsdWUgb2YgY29udGV4dCBrZXkgJ0Bhd3MtY2RrL2NvcmU6Ym9vdHN0cmFwUXVhbGlmaWVyJyBpZiBzZXQsIG90aGVyd2lzZSBgREVGQVVMVF9RVUFMSUZJRVJgXG4gICAqL1xuICByZWFkb25seSBib290c3RyYXBRdWFsaWZpZXI/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3Igc3RhY2tQZXJFbnYgc3RhdGljIG1ldGhvZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlZmF1bHRSZXNvdXJjZXNPcHRpb25zIGV4dGVuZHMgQXBwU3RhZ2luZ1N5bnRoZXNpemVyT3B0aW9ucywgRGVmYXVsdFN0YWdpbmdTdGFja09wdGlvbnMge31cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBjdXN0b21GYWN0b3J5IHN0YXRpYyBtZXRob2RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDdXN0b21GYWN0b3J5T3B0aW9ucyBleHRlbmRzIEFwcFN0YWdpbmdTeW50aGVzaXplck9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGZhY3RvcnkgdGhhdCB3aWxsIGJlIHVzZWQgdG8gcmV0dXJuIHN0YWdpbmcgcmVzb3VyY2VzIGZvciBlYWNoIHN0YWNrXG4gICAqL1xuICByZWFkb25seSBmYWN0b3J5OiBJU3RhZ2luZ1Jlc291cmNlc0ZhY3Rvcnk7XG5cbiAgLyoqXG4gICAqIFJldXNlIHRoZSBhbnN3ZXIgZnJvbSB0aGUgZmFjdG9yeSBmb3Igc3RhY2tzIGluIHRoZSBzYW1lIGVudmlyb25tZW50XG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IG9uY2VQZXJFbnY/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGN1c3RvbVJlc291cmNlcyBzdGF0aWMgbWV0aG9kXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9tUmVzb3VyY2VzT3B0aW9ucyBleHRlbmRzIEFwcFN0YWdpbmdTeW50aGVzaXplck9wdGlvbnMge1xuICAvKipcbiAgICogVXNlIHRoZXNlIGV4YWN0IHN0YWdpbmcgcmVzb3VyY2VzIGZvciBldmVyeSBzdGFjayB0aGF0IHRoaXMgc3ludGhlc2l6ZXIgaXMgdXNlZCBmb3JcbiAgICovXG4gIHJlYWRvbmx5IHJlc291cmNlczogSVN0YWdpbmdSZXNvdXJjZXM7XG59XG5cbi8qKlxuICogSW50ZXJuYWwgcHJvcGVydGllcyBmb3IgQXBwU3RhZ2luZ1N5bnRoZXNpemVyXG4gKi9cbmludGVyZmFjZSBBcHBTdGFnaW5nU3ludGhlc2l6ZXJQcm9wcyBleHRlbmRzIEFwcFN0YWdpbmdTeW50aGVzaXplck9wdGlvbnMge1xuICAvKipcbiAgICogQSBmYWN0b3J5IG1ldGhvZCB0aGF0IGNyZWF0ZXMgYW4gSVN0YWdpbmdTdGFjayB3aGVuIGdpdmVuIHRoZSBzdGFjayB0aGVcbiAgICogc3ludGhlc2l6ZXIgaXMgYmluZGluZy5cbiAgICovXG4gIHJlYWRvbmx5IGZhY3Rvcnk6IElTdGFnaW5nUmVzb3VyY2VzRmFjdG9yeTtcbn1cblxuLyoqXG4gKiBBcHAgU3RhZ2luZyBTeW50aGVzaXplclxuICovXG5leHBvcnQgY2xhc3MgQXBwU3RhZ2luZ1N5bnRoZXNpemVyIGV4dGVuZHMgU3RhY2tTeW50aGVzaXplciBpbXBsZW1lbnRzIElSZXVzYWJsZVN0YWNrU3ludGhlc2l6ZXIge1xuICAvKipcbiAgICogRGVmYXVsdCBBUk4gcXVhbGlmaWVyXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfUVVBTElGSUVSID0gJ2huYjY1OWZkcyc7XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgQ2xvdWRGb3JtYXRpb24gcm9sZSBBUk4uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfQ0xPVURGT1JNQVRJT05fUk9MRV9BUk4gPSAnYXJuOiR7QVdTOjpQYXJ0aXRpb259OmlhbTo6JHtBV1M6OkFjY291bnRJZH06cm9sZS9jZGstJHtRdWFsaWZpZXJ9LWNmbi1leGVjLXJvbGUtJHtBV1M6OkFjY291bnRJZH0tJHtBV1M6OlJlZ2lvbn0nO1xuXG4gIC8qKlxuICAgKiBEZWZhdWx0IGRlcGxveSByb2xlIEFSTi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9ERVBMT1lfUk9MRV9BUk4gPSAnYXJuOiR7QVdTOjpQYXJ0aXRpb259OmlhbTo6JHtBV1M6OkFjY291bnRJZH06cm9sZS9jZGstJHtRdWFsaWZpZXJ9LWRlcGxveS1yb2xlLSR7QVdTOjpBY2NvdW50SWR9LSR7QVdTOjpSZWdpb259JztcblxuICAvKipcbiAgICogRGVmYXVsdCBsb29rdXAgcm9sZSBBUk4gZm9yIG1pc3NpbmcgdmFsdWVzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBERUZBVUxUX0xPT0tVUF9ST0xFX0FSTiA9ICdhcm46JHtBV1M6OlBhcnRpdGlvbn06aWFtOjoke0FXUzo6QWNjb3VudElkfTpyb2xlL2Nkay0ke1F1YWxpZmllcn0tbG9va3VwLXJvbGUtJHtBV1M6OkFjY291bnRJZH0tJHtBV1M6OlJlZ2lvbn0nO1xuXG4gIC8qKlxuICAgKiBVc2UgdGhlIERlZmF1bHQgU3RhZ2luZyBSZXNvdXJjZXMsIGNyZWF0aW5nIGEgc2luZ2xlIHN0YWNrIHBlciBlbnZpcm9ubWVudCB0aGlzIGFwcCBpcyBkZXBsb3llZCBpblxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBkZWZhdWx0UmVzb3VyY2VzKG9wdGlvbnM6IERlZmF1bHRSZXNvdXJjZXNPcHRpb25zKSB7XG4gICAgdmFsaWRhdGVOb1Rva2VucyhvcHRpb25zLCAnQXBwU3RhZ2luZ1N5bnRoZXNpemVyJyk7XG5cbiAgICByZXR1cm4gQXBwU3RhZ2luZ1N5bnRoZXNpemVyLmN1c3RvbUZhY3Rvcnkoe1xuICAgICAgZmFjdG9yeTogRGVmYXVsdFN0YWdpbmdTdGFjay5mYWN0b3J5KG9wdGlvbnMpLFxuICAgICAgZGVwbG95bWVudElkZW50aXRpZXM6IG9wdGlvbnMuZGVwbG95bWVudElkZW50aXRpZXMsXG4gICAgICBib290c3RyYXBRdWFsaWZpZXI6IG9wdGlvbnMuYm9vdHN0cmFwUXVhbGlmaWVyLFxuICAgICAgb25jZVBlckVudjogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2UgdGhlc2UgZXhhY3Qgc3RhZ2luZyByZXNvdXJjZXMgZm9yIGV2ZXJ5IHN0YWNrIHRoYXQgdGhpcyBzeW50aGVzaXplciBpcyB1c2VkIGZvclxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBjdXN0b21SZXNvdXJjZXMob3B0aW9uczogQ3VzdG9tUmVzb3VyY2VzT3B0aW9ucykge1xuICAgIHJldHVybiBBcHBTdGFnaW5nU3ludGhlc2l6ZXIuY3VzdG9tRmFjdG9yeSh7XG4gICAgICBkZXBsb3ltZW50SWRlbnRpdGllczogb3B0aW9ucy5kZXBsb3ltZW50SWRlbnRpdGllcyxcbiAgICAgIGJvb3RzdHJhcFF1YWxpZmllcjogb3B0aW9ucy5ib290c3RyYXBRdWFsaWZpZXIsXG4gICAgICBvbmNlUGVyRW52OiBmYWxzZSxcbiAgICAgIGZhY3Rvcnk6IHtcbiAgICAgICAgb2J0YWluU3RhZ2luZ1Jlc291cmNlcygpIHtcbiAgICAgICAgICByZXR1cm4gb3B0aW9ucy5yZXNvdXJjZXM7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1cHBseSB5b3VyIG93biBzdGFnaW5nU3RhY2tGYWN0b3J5IG1ldGhvZCBmb3IgY3JlYXRpbmcgYW4gSVN0YWdpbmdTdGFjayB3aGVuXG4gICAqIGEgc3RhY2sgaXMgYm91bmQgdG8gdGhlIHN5bnRoZXNpemVyLlxuICAgKlxuICAgKiBCeSBkZWZhdWx0LCBgb25jZVBlckVudiA9IHRydWVgLCB3aGljaCBtZWFucyB0aGF0IGEgbmV3IGluc3RhbmNlIG9mIHRoZSBJU3RhZ2luZ1N0YWNrXG4gICAqIHdpbGwgYmUgY3JlYXRlZCBpbiBuZXcgZW52aXJvbm1lbnRzLiBTZXQgYG9uY2VQZXJFbnYgPSBmYWxzZWAgdG8gdHVybiBvZmYgdGhhdCBiZWhhdmlvci5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY3VzdG9tRmFjdG9yeShvcHRpb25zOiBDdXN0b21GYWN0b3J5T3B0aW9ucykge1xuICAgIGNvbnN0IG9uY2VQZXJFbnYgPSBvcHRpb25zLm9uY2VQZXJFbnYgPz8gdHJ1ZTtcbiAgICBjb25zdCBmYWN0b3J5ID0gb25jZVBlckVudiA/IG5ldyBQZXJFbnZpcm9ubWVudFN0YWdpbmdGYWN0b3J5KG9wdGlvbnMuZmFjdG9yeSkgOiBvcHRpb25zLmZhY3Rvcnk7XG5cbiAgICByZXR1cm4gbmV3IEFwcFN0YWdpbmdTeW50aGVzaXplcih7XG4gICAgICBmYWN0b3J5LFxuICAgICAgYm9vdHN0cmFwUXVhbGlmaWVyOiBvcHRpb25zLmJvb3RzdHJhcFF1YWxpZmllcixcbiAgICAgIGRlcGxveW1lbnRJZGVudGl0aWVzOiBvcHRpb25zLmRlcGxveW1lbnRJZGVudGl0aWVzLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSByb2xlczogUmVxdWlyZWQ8Qm9vdHN0cmFwUm9sZXM+O1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBwcm9wczogQXBwU3RhZ2luZ1N5bnRoZXNpemVyUHJvcHMpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgY29uc3QgZGVmYXVsdElkZW50aXRpZXMgPSBEZXBsb3ltZW50SWRlbnRpdGllcy5kZWZhdWx0Qm9vdHN0cmFwUm9sZXMoKTtcbiAgICBjb25zdCBpZGVudGl0aWVzID0gcHJvcHMuZGVwbG95bWVudElkZW50aXRpZXMgPz8gRGVwbG95bWVudElkZW50aXRpZXMuZGVmYXVsdEJvb3RzdHJhcFJvbGVzKCk7XG5cbiAgICB0aGlzLnJvbGVzID0ge1xuICAgICAgZGVwbG95bWVudFJvbGU6IGlkZW50aXRpZXMuZGVwbG95bWVudFJvbGUgPz8gZGVmYXVsdElkZW50aXRpZXMuZGVwbG95bWVudFJvbGUhLFxuICAgICAgY2xvdWRGb3JtYXRpb25FeGVjdXRpb25Sb2xlOiBpZGVudGl0aWVzLmNsb3VkRm9ybWF0aW9uRXhlY3V0aW9uUm9sZSA/PyBkZWZhdWx0SWRlbnRpdGllcy5jbG91ZEZvcm1hdGlvbkV4ZWN1dGlvblJvbGUhLFxuICAgICAgbG9va3VwUm9sZTogaWRlbnRpdGllcy5sb29rdXBSb2xlID8/IGlkZW50aXRpZXMubG9va3VwUm9sZSEsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgdmVyc2lvbiBvZiB0aGUgc3ludGhlc2l6ZXIgYm91bmQgdG8gYSBzdGFjay5cbiAgICovXG4gIHB1YmxpYyByZXVzYWJsZUJpbmQoc3RhY2s6IFN0YWNrKTogSUJvdW5kQXBwU3RhZ2luZ1N5bnRoZXNpemVyIHtcbiAgICB0aGlzLmNoZWNrRW52aXJvbm1lbnRHbm9zdGljaXNtKHN0YWNrKTtcbiAgICBjb25zdCBxdWFsaWZpZXIgPSB0aGlzLnByb3BzLmJvb3RzdHJhcFF1YWxpZmllciA/P1xuICAgICAgc3RhY2subm9kZS50cnlHZXRDb250ZXh0KEJPT1RTVFJBUF9RVUFMSUZJRVJfQ09OVEVYVCkgPz9cbiAgICAgIEFwcFN0YWdpbmdTeW50aGVzaXplci5ERUZBVUxUX1FVQUxJRklFUjtcbiAgICBjb25zdCBzcGVjID0gbmV3IFN0cmluZ1NwZWNpYWxpemVyKHN0YWNrLCBxdWFsaWZpZXIpO1xuXG4gICAgY29uc3QgZGVwbG95Um9sZSA9IHRoaXMucm9sZXMuZGVwbG95bWVudFJvbGUuX3NwZWNpYWxpemUoc3BlYyk7XG5cbiAgICBjb25zdCBjb250ZXh0OiBPYnRhaW5TdGFnaW5nUmVzb3VyY2VzQ29udGV4dCA9IHtcbiAgICAgIGVudmlyb25tZW50U3RyaW5nOiBbXG4gICAgICAgIFRva2VuLmlzVW5yZXNvbHZlZChzdGFjay5hY2NvdW50KSA/ICdBQ0NPVU5UJyA6IHN0YWNrLmFjY291bnQsXG4gICAgICAgIFRva2VuLmlzVW5yZXNvbHZlZChzdGFjay5yZWdpb24pID8gJ1JFR0lPTicgOiBzdGFjay5yZWdpb24sXG4gICAgICBdLmpvaW4oJy0nKSxcbiAgICAgIGRlcGxveVJvbGVBcm46IGRlcGxveVJvbGUuX2FybkZvckNsb3VkRm9ybWF0aW9uKCksXG4gICAgICBxdWFsaWZpZXIsXG4gICAgfTtcblxuICAgIHJldHVybiBuZXcgQm91bmRBcHBTdGFnaW5nU3ludGhlc2l6ZXIoc3RhY2ssIHtcbiAgICAgIHN0YWdpbmdSZXNvdXJjZXM6IHRoaXMucHJvcHMuZmFjdG9yeS5vYnRhaW5TdGFnaW5nUmVzb3VyY2VzKHN0YWNrLCBjb250ZXh0KSxcbiAgICAgIGRlcGxveVJvbGUsXG4gICAgICBjbG91ZEZvcm1hdGlvbkV4ZWN1dGlvblJvbGU6IHRoaXMucm9sZXMuY2xvdWRGb3JtYXRpb25FeGVjdXRpb25Sb2xlLl9zcGVjaWFsaXplKHNwZWMpLFxuICAgICAgbG9va3VwUm9sZTogdGhpcy5yb2xlcy5sb29rdXBSb2xlLl9zcGVjaWFsaXplKHNwZWMpLFxuICAgICAgcXVhbGlmaWVyLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcGxlbWVudGVkIGZvciBsZWdhY3kgcHVycG9zZXM7IHRoaXMgd2lsbCBuZXZlciBiZSBjYWxsZWQuXG4gICAqL1xuICBwdWJsaWMgYmluZChfc3RhY2s6IFN0YWNrKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUaGlzIGlzIGEgbGVnYWN5IEFQSSwgY2FsbCByZXVzYWJsZUJpbmQgaW5zdGVhZCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcGxlbWVudGVkIGZvciBsZWdhY3kgcHVycG9zZXM7IHRoaXMgd2lsbCBuZXZlciBiZSBjYWxsZWQuXG4gICAqL1xuICBwdWJsaWMgc3ludGhlc2l6ZShfc2Vzc2lvbjogSVN5bnRoZXNpc1Nlc3Npb24pOiB2b2lkIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoaXMgaXMgYSBsZWdhY3kgQVBJLCBjYWxsIHJldXNhYmxlQmluZCBpbnN0ZWFkJyk7XG4gIH1cblxuICAvKipcbiAgICogSW1wbGVtZW50ZWQgZm9yIGxlZ2FjeSBwdXJwb3NlczsgdGhpcyB3aWxsIG5ldmVyIGJlIGNhbGxlZC5cbiAgICovXG4gIHB1YmxpYyBhZGRGaWxlQXNzZXQoX2Fzc2V0OiBGaWxlQXNzZXRTb3VyY2UpOiBGaWxlQXNzZXRMb2NhdGlvbiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUaGlzIGlzIGEgbGVnYWN5IEFQSSwgY2FsbCByZXVzYWJsZUJpbmQgaW5zdGVhZCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcGxlbWVudGVkIGZvciBsZWdhY3kgcHVycG9zZXM7IHRoaXMgd2lsbCBuZXZlciBiZSBjYWxsZWQuXG4gICAqL1xuICBwdWJsaWMgYWRkRG9ja2VySW1hZ2VBc3NldChfYXNzZXQ6IERvY2tlckltYWdlQXNzZXRTb3VyY2UpOiBEb2NrZXJJbWFnZUFzc2V0TG9jYXRpb24ge1xuICAgIHRocm93IG5ldyBFcnJvcignVGhpcyBpcyBhIGxlZ2FjeSBBUEksIGNhbGwgcmV1c2FibGVCaW5kIGluc3RlYWQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayB0aGF0IHdlJ3JlIG9ubHkgYmVpbmcgdXNlZCBmb3IgZXhjbHVzaXZlbHkgZ25vc3RpYyBvciBhZ25vc3RpYyBzdGFja3MuXG4gICAqXG4gICAqIFdlIGNhbiB0aGluayBhYm91dCB3aGV0aGVyIHRvIGxvb3NlbiB0aGlzIHJlcXVpcmVtZW50IGxhdGVyLlxuICAgKi9cbiAgcHJpdmF0ZSBjaGVja0Vudmlyb25tZW50R25vc3RpY2lzbShzdGFjazogU3RhY2spIHtcbiAgICBjb25zdCBpc0Fnbm9zdGljID0gVG9rZW4uaXNVbnJlc29sdmVkKHN0YWNrLmFjY291bnQpIHx8IFRva2VuLmlzVW5yZXNvbHZlZChzdGFjay5yZWdpb24pO1xuICAgIGNvbnN0IGFnbm9zdGljU3RhY2tzID0gQUdOT1NUSUNfU1RBQ0tTLmZvcihzdGFjayk7XG4gICAgY29uc3QgZW52QXdhcmVTdGFja3MgPSBFTlZfQVdBUkVfU1RBQ0tTLmZvcihzdGFjayk7XG5cbiAgICAoaXNBZ25vc3RpYyA/IGFnbm9zdGljU3RhY2tzIDogZW52QXdhcmVTdGFja3MpLmFkZChzdGFjayk7XG4gICAgaWYgKGFnbm9zdGljU3RhY2tzLnNpemUgPiAwICYmIGVudkF3YXJlU3RhY2tzLnNpemUgPiAwKSB7XG4gICAgICBjb25zdCBkZXNjcmliZVN0YWNrcyA9ICh4czogU2V0PFN0YWNrPikgPT4gQXJyYXkuZnJvbSh4cykubWFwKHMgPT4gcy5ub2RlLnBhdGgpLmpvaW4oJywgJyk7XG5cbiAgICAgIHRocm93IG5ldyBFcnJvcihbXG4gICAgICAgICdJdCBpcyBub3Qgc2FmZSB0byB1c2UgQXBwU3RhZ2luZ1N5bnRoZXNpemVyIGZvciBib3RoIGVudmlyb25tZW50LWFnbm9zdGljIGFuZCBlbnZpcm9ubWVudC1hd2FyZSBzdGFja3MgYXQgdGhlIHNhbWUgdGltZS4nLFxuICAgICAgICAnUGxlYXNlIGVpdGhlciBzcGVjaWZ5IGVudmlyb25tZW50cyBmb3IgYWxsIHN0YWNrcyBvciBubyBzdGFja3MgaW4gdGhlIENESyBBcHAuJyxcbiAgICAgICAgYEF0IGxlYXN0IHRoZXNlIHN0YWNrcyB3aXRoIGVudmlyb25tZW50OiAke2Rlc2NyaWJlU3RhY2tzKGVudkF3YXJlU3RhY2tzKX0uYCxcbiAgICAgICAgYEF0IGxlYXN0IHRoZXNlIHN0YWNrcyB3aXRob3V0IGVudmlyb25tZW50OiAke2Rlc2NyaWJlU3RhY2tzKGFnbm9zdGljU3RhY2tzKX0uYCxcbiAgICAgIF0uam9pbignICcpKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBJbnRlcm5hbCBwcm9wZXJ0aWVzIGZvciBCb3VuZEFwcFN0YWdpbmdTeW50aGVzaXplclxuICovXG5pbnRlcmZhY2UgQm91bmRBcHBTdGFnaW5nU3ludGhlc2l6ZXJQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgYm9vdHN0cmFwIHF1YWxpZmllclxuICAgKi9cbiAgcmVhZG9ubHkgcXVhbGlmaWVyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSByZXNvdXJjZXMgd2UgZW5kIHVwIHVzaW5nIGZvciB0aGlzIHN5bnRoZXNpemVyXG4gICAqL1xuICByZWFkb25seSBzdGFnaW5nUmVzb3VyY2VzOiBJU3RhZ2luZ1Jlc291cmNlcztcblxuICAvKipcbiAgICogVGhlIGRlcGxveSByb2xlXG4gICAqL1xuICByZWFkb25seSBkZXBsb3lSb2xlOiBCb290c3RyYXBSb2xlO1xuXG4gIC8qKlxuICAgKiBDbG91ZEZvcm1hdGlvbiBFeGVjdXRpb24gUm9sZVxuICAgKi9cbiAgcmVhZG9ubHkgY2xvdWRGb3JtYXRpb25FeGVjdXRpb25Sb2xlOiBCb290c3RyYXBSb2xlO1xuXG4gIC8qKlxuICAgKiBMb29rdXAgUm9sZVxuICAgKi9cbiAgcmVhZG9ubHkgbG9va3VwUm9sZTogQm9vdHN0cmFwUm9sZTtcbn1cblxuY2xhc3MgQm91bmRBcHBTdGFnaW5nU3ludGhlc2l6ZXIgZXh0ZW5kcyBTdGFja1N5bnRoZXNpemVyIGltcGxlbWVudHMgSUJvdW5kQXBwU3RhZ2luZ1N5bnRoZXNpemVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBzdGFnaW5nU3RhY2s6IElTdGFnaW5nUmVzb3VyY2VzO1xuICBwcml2YXRlIHJlYWRvbmx5IGFzc2V0TWFuaWZlc3QgPSBuZXcgQXNzZXRNYW5pZmVzdEJ1aWxkZXIoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBxdWFsaWZpZXI6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBkZXBlbmRlbmN5U3RhY2tzOiBTZXQ8U3RhY2s+ID0gbmV3IFNldCgpO1xuXG4gIGNvbnN0cnVjdG9yKHN0YWNrOiBTdGFjaywgcHJpdmF0ZSByZWFkb25seSBwcm9wczogQm91bmRBcHBTdGFnaW5nU3ludGhlc2l6ZXJQcm9wcykge1xuICAgIHN1cGVyKCk7XG4gICAgc3VwZXIuYmluZChzdGFjayk7XG5cbiAgICB0aGlzLnF1YWxpZmllciA9IHByb3BzLnF1YWxpZmllcjtcbiAgICB0aGlzLnN0YWdpbmdTdGFjayA9IHByb3BzLnN0YWdpbmdSZXNvdXJjZXM7XG4gIH1cbiAgLyoqXG4gICAqIFRoZSBxdWFsaWZpZXIgdXNlZCB0byBib290c3RyYXAgdGhpcyBzdGFja1xuICAgKi9cbiAgcHVibGljIGdldCBib290c3RyYXBRdWFsaWZpZXIoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAvLyBOb3Qgc3VyZSB3aHkgd2UgbmVlZCB0aGlzLlxuICAgIHJldHVybiB0aGlzLnF1YWxpZmllcjtcbiAgfVxuXG4gIHB1YmxpYyBzeW50aGVzaXplKHNlc3Npb246IElTeW50aGVzaXNTZXNzaW9uKTogdm9pZCB7XG4gICAgY29uc3QgdGVtcGxhdGVBc3NldFNvdXJjZSA9IHRoaXMuc3ludGhlc2l6ZVRlbXBsYXRlKHNlc3Npb24sIHRoaXMucHJvcHMubG9va3VwUm9sZT8uX2FybkZvckNsb3VkQXNzZW1ibHkoKSk7XG4gICAgY29uc3QgdGVtcGxhdGVBc3NldCA9IHRoaXMuYWRkRmlsZUFzc2V0KHRlbXBsYXRlQXNzZXRTb3VyY2UpO1xuXG4gICAgY29uc3QgZGVwZW5kZW5jaWVzID0gQXJyYXkuZnJvbSh0aGlzLmRlcGVuZGVuY3lTdGFja3MpLmZsYXRNYXAoKGQpID0+IGQuYXJ0aWZhY3RJZCk7XG4gICAgY29uc3QgYXNzZXRNYW5pZmVzdElkID0gdGhpcy5hc3NldE1hbmlmZXN0LmVtaXRNYW5pZmVzdCh0aGlzLmJvdW5kU3RhY2ssIHNlc3Npb24sIHt9LCBkZXBlbmRlbmNpZXMpO1xuXG4gICAgY29uc3QgbG9va3VwUm9sZUFybiA9IHRoaXMucHJvcHMubG9va3VwUm9sZT8uX2FybkZvckNsb3VkQXNzZW1ibHkoKTtcblxuICAgIHRoaXMuZW1pdEFydGlmYWN0KHNlc3Npb24sIHtcbiAgICAgIGFzc3VtZVJvbGVBcm46IHRoaXMucHJvcHMuZGVwbG95Um9sZT8uX2FybkZvckNsb3VkQXNzZW1ibHkoKSxcbiAgICAgIGFkZGl0aW9uYWxEZXBlbmRlbmNpZXM6IFthc3NldE1hbmlmZXN0SWRdLFxuICAgICAgc3RhY2tUZW1wbGF0ZUFzc2V0T2JqZWN0VXJsOiB0ZW1wbGF0ZUFzc2V0LnMzT2JqZWN0VXJsV2l0aFBsYWNlaG9sZGVycyxcbiAgICAgIGNsb3VkRm9ybWF0aW9uRXhlY3V0aW9uUm9sZUFybjogdGhpcy5wcm9wcy5jbG91ZEZvcm1hdGlvbkV4ZWN1dGlvblJvbGU/Ll9hcm5Gb3JDbG91ZEFzc2VtYmx5KCksXG4gICAgICBsb29rdXBSb2xlOiBsb29rdXBSb2xlQXJuID8geyBhcm46IGxvb2t1cFJvbGVBcm4gfSA6IHVuZGVmaW5lZCxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBmaWxlIGFzc2V0IHRvIHRoZSBtYW5pZmVzdC5cbiAgICovXG4gIHB1YmxpYyBhZGRGaWxlQXNzZXQoYXNzZXQ6IEZpbGVBc3NldFNvdXJjZSk6IEZpbGVBc3NldExvY2F0aW9uIHtcbiAgICBjb25zdCB7IGJ1Y2tldE5hbWUsIGFzc3VtZVJvbGVBcm4sIHByZWZpeCwgZGVwZW5kZW5jeVN0YWNrIH0gPSB0aGlzLnN0YWdpbmdTdGFjay5hZGRGaWxlKGFzc2V0KTtcbiAgICBjb25zdCBsb2NhdGlvbiA9IHRoaXMuYXNzZXRNYW5pZmVzdC5kZWZhdWx0QWRkRmlsZUFzc2V0KHRoaXMuYm91bmRTdGFjaywgYXNzZXQsIHtcbiAgICAgIGJ1Y2tldE5hbWU6IHRyYW5zbGF0ZUNmblRva2VuVG9Bc3NldFRva2VuKGJ1Y2tldE5hbWUpLFxuICAgICAgYnVja2V0UHJlZml4OiBwcmVmaXgsXG4gICAgICByb2xlOiBhc3N1bWVSb2xlQXJuID8geyBhc3N1bWVSb2xlQXJuOiB0cmFuc2xhdGVDZm5Ub2tlblRvQXNzZXRUb2tlbihhc3N1bWVSb2xlQXJuKSB9IDogdW5kZWZpbmVkLFxuICAgIH0sIHtcbiAgICAgIGRpc3BsYXlOYW1lOiBhc3NldC5kaXNwbGF5TmFtZSxcbiAgICB9KTtcblxuICAgIGlmIChkZXBlbmRlbmN5U3RhY2spIHtcbiAgICAgIHRoaXMuYm91bmRTdGFjay5hZGREZXBlbmRlbmN5KGRlcGVuZGVuY3lTdGFjaywgJ3N0YWNrIGRlcGVuZHMgb24gdGhlIHN0YWdpbmcgc3RhY2sgZm9yIHN0YWdpbmcgcmVzb3VyY2VzJyk7XG4gICAgICB0aGlzLmRlcGVuZGVuY3lTdGFja3MuYWRkKGRlcGVuZGVuY3lTdGFjayk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuY2xvdWRGb3JtYXRpb25Mb2NhdGlvbkZyb21GaWxlQXNzZXQobG9jYXRpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIGRvY2tlciBpbWFnZSBhc3NldCB0byB0aGUgbWFuaWZlc3QuXG4gICAqL1xuICBwdWJsaWMgYWRkRG9ja2VySW1hZ2VBc3NldChhc3NldDogRG9ja2VySW1hZ2VBc3NldFNvdXJjZSk6IERvY2tlckltYWdlQXNzZXRMb2NhdGlvbiB7XG4gICAgY29uc3QgeyByZXBvTmFtZSwgYXNzdW1lUm9sZUFybiwgZGVwZW5kZW5jeVN0YWNrIH0gPSB0aGlzLnN0YWdpbmdTdGFjay5hZGREb2NrZXJJbWFnZShhc3NldCk7XG4gICAgY29uc3QgbG9jYXRpb24gPSB0aGlzLmFzc2V0TWFuaWZlc3QuZGVmYXVsdEFkZERvY2tlckltYWdlQXNzZXQodGhpcy5ib3VuZFN0YWNrLCBhc3NldCwge1xuICAgICAgcmVwb3NpdG9yeU5hbWU6IHRyYW5zbGF0ZUNmblRva2VuVG9Bc3NldFRva2VuKHJlcG9OYW1lKSxcbiAgICAgIHJvbGU6IGFzc3VtZVJvbGVBcm4gPyB7IGFzc3VtZVJvbGVBcm46IHRyYW5zbGF0ZUNmblRva2VuVG9Bc3NldFRva2VuKGFzc3VtZVJvbGVBcm4pIH0gOiB1bmRlZmluZWQsXG4gICAgfSwge1xuICAgICAgZGlzcGxheU5hbWU6IGFzc2V0LmRpc3BsYXlOYW1lLFxuICAgIH0pO1xuXG4gICAgaWYgKGRlcGVuZGVuY3lTdGFjaykge1xuICAgICAgdGhpcy5ib3VuZFN0YWNrLmFkZERlcGVuZGVuY3koZGVwZW5kZW5jeVN0YWNrLCAnc3RhY2sgZGVwZW5kcyBvbiB0aGUgc3RhZ2luZyBzdGFjayBmb3Igc3RhZ2luZyByZXNvdXJjZXMnKTtcbiAgICAgIHRoaXMuZGVwZW5kZW5jeVN0YWNrcy5hZGQoZGVwZW5kZW5jeVN0YWNrKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jbG91ZEZvcm1hdGlvbkxvY2F0aW9uRnJvbURvY2tlckltYWdlQXNzZXQobG9jYXRpb24pO1xuICB9XG59XG4iXX0=
@@ -1,5 +1,4 @@
1
1
  "use strict";
2
- var _a, _b;
3
2
  Object.defineProperty(exports, "__esModule", { value: true });
4
3
  exports.DeploymentIdentities = exports.BootstrapRole = void 0;
5
4
  const jsiiDeprecationWarnings = require("../.warnings.jsii.js");
@@ -11,6 +10,8 @@ const app_staging_synthesizer_1 = require("./app-staging-synthesizer");
11
10
  * This class does not create new IAM Roles.
12
11
  */
13
12
  class BootstrapRole {
13
+ roleArn;
14
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/app-staging-synthesizer-alpha.BootstrapRole", version: "2.221.0-alpha.0" };
14
15
  /**
15
16
  * Use the currently assumed role/credentials
16
17
  */
@@ -24,6 +25,7 @@ class BootstrapRole {
24
25
  helpers_internal_1.StringSpecializer.validateNoTokens(arn, 'BootstrapRole ARN');
25
26
  return new BootstrapRole(arn);
26
27
  }
28
+ static CLI_CREDS = 'cli-credentials';
27
29
  constructor(roleArn) {
28
30
  this.roleArn = roleArn;
29
31
  }
@@ -53,14 +55,12 @@ class BootstrapRole {
53
55
  }
54
56
  }
55
57
  exports.BootstrapRole = BootstrapRole;
56
- _a = JSII_RTTI_SYMBOL_1;
57
- BootstrapRole[_a] = { fqn: "@aws-cdk/app-staging-synthesizer-alpha.BootstrapRole", version: "2.219.0-alpha.0" };
58
- BootstrapRole.CLI_CREDS = 'cli-credentials';
59
58
  /**
60
59
  * Deployment identities are the class of roles to be assumed by the CDK
61
60
  * when deploying the App.
62
61
  */
63
62
  class DeploymentIdentities {
63
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/app-staging-synthesizer-alpha.DeploymentIdentities", version: "2.221.0-alpha.0" };
64
64
  /**
65
65
  * Use CLI credentials for all deployment identities.
66
66
  */
@@ -112,6 +112,19 @@ class DeploymentIdentities {
112
112
  lookupRole: BootstrapRole.fromRoleArn(replacePlaceholders(app_staging_synthesizer_1.AppStagingSynthesizer.DEFAULT_LOOKUP_ROLE_ARN)),
113
113
  });
114
114
  }
115
+ /**
116
+ * CloudFormation Execution Role
117
+ */
118
+ cloudFormationExecutionRole;
119
+ /**
120
+ * Deployment Action Role
121
+ */
122
+ deploymentRole;
123
+ /**
124
+ * Lookup Role
125
+ @default - use bootstrapped role
126
+ */
127
+ lookupRole;
115
128
  constructor(
116
129
  /** roles that are bootstrapped to your account. */
117
130
  roles) {
@@ -121,6 +134,4 @@ class DeploymentIdentities {
121
134
  }
122
135
  }
123
136
  exports.DeploymentIdentities = DeploymentIdentities;
124
- _b = JSII_RTTI_SYMBOL_1;
125
- DeploymentIdentities[_b] = { fqn: "@aws-cdk/app-staging-synthesizer-alpha.DeploymentIdentities", version: "2.219.0-alpha.0" };
126
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vdHN0cmFwLXJvbGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYm9vdHN0cmFwLXJvbGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDRFQUF3STtBQUN4SSx1RUFBa0U7QUFFbEU7OztHQUdHO0FBQ0gsTUFBYSxhQUFhO0lBQ3hCOztPQUVHO0lBQ0ksTUFBTSxDQUFDLGNBQWM7UUFDMUIsT0FBTyxJQUFJLGFBQWEsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7S0FDbkQ7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBVztRQUNuQyxvQ0FBaUIsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztRQUM3RCxPQUFPLElBQUksYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQy9CO0lBSUQsWUFBcUMsT0FBZTtRQUFmLFlBQU8sR0FBUCxPQUFPLENBQVE7S0FBSTtJQUV4RDs7T0FFRztJQUNJLGdCQUFnQjtRQUNyQixPQUFPLElBQUksQ0FBQyxPQUFPLEtBQUssYUFBYSxDQUFDLFNBQVMsQ0FBQztLQUNqRDtJQUVEOztPQUVHO0lBQ0kscUJBQXFCO1FBQzFCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBQSxnREFBNkIsRUFBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7S0FDMUY7SUFFRDs7T0FFRztJQUNJLG9CQUFvQjtRQUN6QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUEsZ0RBQTZCLEVBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQzFGO0lBRUQ7O09BRUc7SUFDSSxXQUFXLENBQUMsSUFBdUI7UUFDeEMsT0FBTyxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0tBQ3pEOztBQTlDSCxzQ0ErQ0M7OztBQS9CZ0IsdUJBQVMsR0FBRyxpQkFBaUIsQ0FBQztBQWlDL0M7OztHQUdHO0FBQ0gsTUFBYSxvQkFBb0I7SUFDL0I7O09BRUc7SUFDSSxNQUFNLENBQUMsY0FBYztRQUMxQixPQUFPLElBQUksb0JBQW9CLENBQUM7WUFDOUIsMkJBQTJCLEVBQUUsYUFBYSxDQUFDLGNBQWMsRUFBRTtZQUMzRCxjQUFjLEVBQUUsYUFBYSxDQUFDLGNBQWMsRUFBRTtZQUM5QyxVQUFVLEVBQUUsYUFBYSxDQUFDLGNBQWMsRUFBRTtTQUMzQyxDQUFDLENBQUM7S0FDSjtJQUVEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBcUI7Ozs7Ozs7Ozs7UUFDOUMsT0FBTyxJQUFJLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ3hDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMscUJBQXFCLENBQUMsVUFBd0MsRUFBRTs7Ozs7Ozs7OztRQUM1RSxTQUFTLG1CQUFtQixDQUFDLENBQVM7WUFDcEMsSUFBSSxPQUFPLENBQUMsZUFBZSxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUMxQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRSxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDL0QsQ0FBQztZQUNELE9BQU8sQ0FBQyxDQUFDO1FBQ1gsQ0FBQztRQUVELE9BQU8sSUFBSSxvQkFBb0IsQ0FBQztZQUM5QixjQUFjLEVBQUUsYUFBYSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQywrQ0FBcUIsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1lBQzdHLDJCQUEyQixFQUFFLGFBQWEsQ0FBQyxXQUFXLENBQUMsbUJBQW1CLENBQUMsK0NBQXFCLENBQUMsK0JBQStCLENBQUMsQ0FBQztZQUNsSSxVQUFVLEVBQUUsYUFBYSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQywrQ0FBcUIsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1NBQzFHLENBQUMsQ0FBQztLQUNKO0lBa0JEO0lBQ0UsbURBQW1EO0lBQ25ELEtBQXFCO1FBRXJCLElBQUksQ0FBQywyQkFBMkIsR0FBRyxLQUFLLENBQUMsMkJBQTJCLENBQUM7UUFDckUsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUMsY0FBYyxDQUFDO1FBQzNDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQztLQUNwQzs7QUE3REgsb0RBOERDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RyaW5nU3BlY2lhbGl6ZXIsIHRyYW5zbGF0ZUFzc2V0VG9rZW5Ub0NmblRva2VuLCB0cmFuc2xhdGVDZm5Ub2tlblRvQXNzZXRUb2tlbiB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL2hlbHBlcnMtaW50ZXJuYWwnO1xuaW1wb3J0IHsgQXBwU3RhZ2luZ1N5bnRoZXNpemVyIH0gZnJvbSAnLi9hcHAtc3RhZ2luZy1zeW50aGVzaXplcic7XG5cbi8qKlxuICogQm9vdHN0cmFwcGVkIHJvbGUgc3BlY2lmaWVyLiBUaGVzZSByb2xlcyBtdXN0IGV4aXN0IGFscmVhZHkuXG4gKiBUaGlzIGNsYXNzIGRvZXMgbm90IGNyZWF0ZSBuZXcgSUFNIFJvbGVzLlxuICovXG5leHBvcnQgY2xhc3MgQm9vdHN0cmFwUm9sZSB7XG4gIC8qKlxuICAgKiBVc2UgdGhlIGN1cnJlbnRseSBhc3N1bWVkIHJvbGUvY3JlZGVudGlhbHNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY2xpQ3JlZGVudGlhbHMoKSB7XG4gICAgcmV0dXJuIG5ldyBCb290c3RyYXBSb2xlKEJvb3RzdHJhcFJvbGUuQ0xJX0NSRURTKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IGFuIGV4aXN0aW5nIElBTSBSb2xlIHRvIGFzc3VtZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tUm9sZUFybihhcm46IHN0cmluZykge1xuICAgIFN0cmluZ1NwZWNpYWxpemVyLnZhbGlkYXRlTm9Ub2tlbnMoYXJuLCAnQm9vdHN0cmFwUm9sZSBBUk4nKTtcbiAgICByZXR1cm4gbmV3IEJvb3RzdHJhcFJvbGUoYXJuKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIENMSV9DUkVEUyA9ICdjbGktY3JlZGVudGlhbHMnO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSByb2xlQXJuOiBzdHJpbmcpIHt9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRoaXMgaXMgb2JqZWN0IHdhcyBjcmVhdGVkIHVzaW5nIEJvb3RzdHJhcFJvbGUuY2xpQ3JlZGVudGlhbHMoKVxuICAgKi9cbiAgcHVibGljIGlzQ2xpQ3JlZGVudGlhbHMoKSB7XG4gICAgcmV0dXJuIHRoaXMucm9sZUFybiA9PT0gQm9vdHN0cmFwUm9sZS5DTElfQ1JFRFM7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgX2FybkZvckNsb3VkRm9ybWF0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmlzQ2xpQ3JlZGVudGlhbHMoKSA/IHVuZGVmaW5lZCA6IHRyYW5zbGF0ZUFzc2V0VG9rZW5Ub0NmblRva2VuKHRoaXMucm9sZUFybik7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgX2FybkZvckNsb3VkQXNzZW1ibHkoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNDbGlDcmVkZW50aWFscygpID8gdW5kZWZpbmVkIDogdHJhbnNsYXRlQ2ZuVG9rZW5Ub0Fzc2V0VG9rZW4odGhpcy5yb2xlQXJuKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBfc3BlY2lhbGl6ZShzcGVjOiBTdHJpbmdTcGVjaWFsaXplcikge1xuICAgIHJldHVybiBuZXcgQm9vdHN0cmFwUm9sZShzcGVjLnNwZWNpYWxpemUodGhpcy5yb2xlQXJuKSk7XG4gIH1cbn1cblxuLyoqXG4gKiBEZXBsb3ltZW50IGlkZW50aXRpZXMgYXJlIHRoZSBjbGFzcyBvZiByb2xlcyB0byBiZSBhc3N1bWVkIGJ5IHRoZSBDREtcbiAqIHdoZW4gZGVwbG95aW5nIHRoZSBBcHAuXG4gKi9cbmV4cG9ydCBjbGFzcyBEZXBsb3ltZW50SWRlbnRpdGllcyB7XG4gIC8qKlxuICAgKiBVc2UgQ0xJIGNyZWRlbnRpYWxzIGZvciBhbGwgZGVwbG95bWVudCBpZGVudGl0aWVzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBjbGlDcmVkZW50aWFscygpOiBEZXBsb3ltZW50SWRlbnRpdGllcyB7XG4gICAgcmV0dXJuIG5ldyBEZXBsb3ltZW50SWRlbnRpdGllcyh7XG4gICAgICBjbG91ZEZvcm1hdGlvbkV4ZWN1dGlvblJvbGU6IEJvb3RzdHJhcFJvbGUuY2xpQ3JlZGVudGlhbHMoKSxcbiAgICAgIGRlcGxveW1lbnRSb2xlOiBCb290c3RyYXBSb2xlLmNsaUNyZWRlbnRpYWxzKCksXG4gICAgICBsb29rdXBSb2xlOiBCb290c3RyYXBSb2xlLmNsaUNyZWRlbnRpYWxzKCksXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU3BlY2lmeSB5b3VyIG93biByb2xlcyBmb3IgYWxsIGRlcGxveW1lbnQgaWRlbnRpdGllcy4gVGhlc2Ugcm9sZXNcbiAgICogbXVzdCBhbHJlYWR5IGV4aXN0LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBzcGVjaWZ5Um9sZXMocm9sZXM6IEJvb3RzdHJhcFJvbGVzKTogRGVwbG95bWVudElkZW50aXRpZXMge1xuICAgIHJldHVybiBuZXcgRGVwbG95bWVudElkZW50aXRpZXMocm9sZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZSB0aGUgUm9sZXMgdGhhdCBoYXZlIGJlZW4gY3JlYXRlZCBieSB0aGUgZGVmYXVsdCBib290c3RyYXAgc3RhY2tcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZGVmYXVsdEJvb3RzdHJhcFJvbGVzKG9wdGlvbnM6IERlZmF1bHRCb290c3RyYXBSb2xlc09wdGlvbnMgPSB7fSk6IERlcGxveW1lbnRJZGVudGl0aWVzIHtcbiAgICBmdW5jdGlvbiByZXBsYWNlUGxhY2Vob2xkZXJzKHg6IHN0cmluZykge1xuICAgICAgaWYgKG9wdGlvbnMuYm9vdHN0cmFwUmVnaW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgeCA9IHgucmVwbGFjZSgvXFwkXFx7QVdTOjpSZWdpb25cXH0vZywgb3B0aW9ucy5ib290c3RyYXBSZWdpb24pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHg7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBEZXBsb3ltZW50SWRlbnRpdGllcyh7XG4gICAgICBkZXBsb3ltZW50Um9sZTogQm9vdHN0cmFwUm9sZS5mcm9tUm9sZUFybihyZXBsYWNlUGxhY2Vob2xkZXJzKEFwcFN0YWdpbmdTeW50aGVzaXplci5ERUZBVUxUX0RFUExPWV9ST0xFX0FSTikpLFxuICAgICAgY2xvdWRGb3JtYXRpb25FeGVjdXRpb25Sb2xlOiBCb290c3RyYXBSb2xlLmZyb21Sb2xlQXJuKHJlcGxhY2VQbGFjZWhvbGRlcnMoQXBwU3RhZ2luZ1N5bnRoZXNpemVyLkRFRkFVTFRfQ0xPVURGT1JNQVRJT05fUk9MRV9BUk4pKSxcbiAgICAgIGxvb2t1cFJvbGU6IEJvb3RzdHJhcFJvbGUuZnJvbVJvbGVBcm4ocmVwbGFjZVBsYWNlaG9sZGVycyhBcHBTdGFnaW5nU3ludGhlc2l6ZXIuREVGQVVMVF9MT09LVVBfUk9MRV9BUk4pKSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG91ZEZvcm1hdGlvbiBFeGVjdXRpb24gUm9sZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNsb3VkRm9ybWF0aW9uRXhlY3V0aW9uUm9sZT86IEJvb3RzdHJhcFJvbGU7XG5cbiAgLyoqXG4gICAqIERlcGxveW1lbnQgQWN0aW9uIFJvbGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBkZXBsb3ltZW50Um9sZT86IEJvb3RzdHJhcFJvbGU7XG5cbiAgLyoqXG4gICAqIExvb2t1cCBSb2xlXG4gICAgQGRlZmF1bHQgLSB1c2UgYm9vdHN0cmFwcGVkIHJvbGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBsb29rdXBSb2xlPzogQm9vdHN0cmFwUm9sZTtcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKFxuICAgIC8qKiByb2xlcyB0aGF0IGFyZSBib290c3RyYXBwZWQgdG8geW91ciBhY2NvdW50LiAqL1xuICAgIHJvbGVzOiBCb290c3RyYXBSb2xlcyxcbiAgKSB7XG4gICAgdGhpcy5jbG91ZEZvcm1hdGlvbkV4ZWN1dGlvblJvbGUgPSByb2xlcy5jbG91ZEZvcm1hdGlvbkV4ZWN1dGlvblJvbGU7XG4gICAgdGhpcy5kZXBsb3ltZW50Um9sZSA9IHJvbGVzLmRlcGxveW1lbnRSb2xlO1xuICAgIHRoaXMubG9va3VwUm9sZSA9IHJvbGVzLmxvb2t1cFJvbGU7XG4gIH1cbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBgRGVwbG95bWVudElkZW50aXRpZXMuZGVmYXVsdEJvb3RzdHJhcHBlZFJvbGVzYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlZmF1bHRCb290c3RyYXBSb2xlc09wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHJlZ2lvbiB3aGVyZSB0aGUgZGVmYXVsdCBib290c3RyYXAgcm9sZXMgaGF2ZSBiZWVuIGNyZWF0ZWRcbiAgICpcbiAgICogQnkgZGVmYXVsdCwgdGhlIHJlZ2lvbiBpbiB3aGljaCB0aGUgc3RhY2sgaXMgZGVwbG95ZWQgaXMgdXNlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0aGUgc3RhY2sncyBjdXJyZW50IHJlZ2lvblxuICAgKi9cbiAgcmVhZG9ubHkgYm9vdHN0cmFwUmVnaW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJvbGVzIHRoYXQgYXJlIGJvb3RzdHJhcHBlZCB0byB5b3VyIGFjY291bnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQm9vdHN0cmFwUm9sZXMge1xuICAvKipcbiAgICogQ2xvdWRGb3JtYXRpb24gRXhlY3V0aW9uIFJvbGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSB1c2UgYm9vdHN0cmFwcGVkIHJvbGVcbiAgICovXG4gIHJlYWRvbmx5IGNsb3VkRm9ybWF0aW9uRXhlY3V0aW9uUm9sZT86IEJvb3RzdHJhcFJvbGU7XG5cbiAgLyoqXG4gICAqIERlcGxveW1lbnQgQWN0aW9uIFJvbGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSB1c2UgYm9vc3RyYXBwZWQgcm9sZVxuICAgKi9cbiAgcmVhZG9ubHkgZGVwbG95bWVudFJvbGU/OiBCb290c3RyYXBSb2xlO1xuXG4gIC8qKlxuICAgKiBMb29rdXAgUm9sZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHVzZSBib290c3RyYXBwZWQgcm9sZVxuICAgKi9cbiAgcmVhZG9ubHkgbG9va3VwUm9sZT86IEJvb3RzdHJhcFJvbGU7XG59XG5cbi8qKlxuICogUm9sZXMgdGhhdCBhcmUgaW5jbHVkZWQgaW4gdGhlIFN0YWdpbmcgU3RhY2tcbiAqIChmb3IgYWNjZXNzIHRvIFN0YWdpbmcgUmVzb3VyY2VzKVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0YWdpbmdSb2xlcyB7XG4gIC8qKlxuICAgKiBGaWxlIEFzc2V0IFB1Ymxpc2hpbmcgUm9sZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHN0YWdpbmcgc3RhY2sgY3JlYXRlcyBhIGZpbGUgYXNzZXQgcHVibGlzaGluZyByb2xlXG4gICAqL1xuICByZWFkb25seSBmaWxlQXNzZXRQdWJsaXNoaW5nUm9sZT86IEJvb3RzdHJhcFJvbGU7XG5cbiAgLyoqXG4gICAqIERvY2tlciBBc3NldCBQdWJsaXNoaW5nIFJvbGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBzdGFnaW5nIHN0YWNrIGNyZWF0ZXMgYSBkb2NrZXIgYXNzZXQgcHVibGlzaGluZyByb2xlXG4gICAqL1xuICByZWFkb25seSBkb2NrZXJBc3NldFB1Ymxpc2hpbmdSb2xlPzogQm9vdHN0cmFwUm9sZTtcbn1cbiJdfQ==
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vdHN0cmFwLXJvbGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYm9vdHN0cmFwLXJvbGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNEVBQXdJO0FBQ3hJLHVFQUFrRTtBQUVsRTs7O0dBR0c7QUFDSCxNQUFhLGFBQWE7SUFrQmE7O0lBakJyQzs7T0FFRztJQUNJLE1BQU0sQ0FBQyxjQUFjO1FBQzFCLE9BQU8sSUFBSSxhQUFhLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0tBQ25EO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQVc7UUFDbkMsb0NBQWlCLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLG1CQUFtQixDQUFDLENBQUM7UUFDN0QsT0FBTyxJQUFJLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUMvQjtJQUVPLE1BQU0sQ0FBQyxTQUFTLEdBQUcsaUJBQWlCLENBQUM7SUFFN0MsWUFBcUMsT0FBZTtRQUFmLFlBQU8sR0FBUCxPQUFPLENBQVE7S0FBSTtJQUV4RDs7T0FFRztJQUNJLGdCQUFnQjtRQUNyQixPQUFPLElBQUksQ0FBQyxPQUFPLEtBQUssYUFBYSxDQUFDLFNBQVMsQ0FBQztLQUNqRDtJQUVEOztPQUVHO0lBQ0kscUJBQXFCO1FBQzFCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBQSxnREFBNkIsRUFBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7S0FDMUY7SUFFRDs7T0FFRztJQUNJLG9CQUFvQjtRQUN6QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUEsZ0RBQTZCLEVBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQzFGO0lBRUQ7O09BRUc7SUFDSSxXQUFXLENBQUMsSUFBdUI7UUFDeEMsT0FBTyxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0tBQ3pEOztBQTlDSCxzQ0ErQ0M7QUFFRDs7O0dBR0c7QUFDSCxNQUFhLG9CQUFvQjs7SUFDL0I7O09BRUc7SUFDSSxNQUFNLENBQUMsY0FBYztRQUMxQixPQUFPLElBQUksb0JBQW9CLENBQUM7WUFDOUIsMkJBQTJCLEVBQUUsYUFBYSxDQUFDLGNBQWMsRUFBRTtZQUMzRCxjQUFjLEVBQUUsYUFBYSxDQUFDLGNBQWMsRUFBRTtZQUM5QyxVQUFVLEVBQUUsYUFBYSxDQUFDLGNBQWMsRUFBRTtTQUMzQyxDQUFDLENBQUM7S0FDSjtJQUVEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBcUI7Ozs7Ozs7Ozs7UUFDOUMsT0FBTyxJQUFJLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ3hDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMscUJBQXFCLENBQUMsVUFBd0MsRUFBRTs7Ozs7Ozs7OztRQUM1RSxTQUFTLG1CQUFtQixDQUFDLENBQVM7WUFDcEMsSUFBSSxPQUFPLENBQUMsZUFBZSxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUMxQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRSxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDL0QsQ0FBQztZQUNELE9BQU8sQ0FBQyxDQUFDO1FBQ1gsQ0FBQztRQUVELE9BQU8sSUFBSSxvQkFBb0IsQ0FBQztZQUM5QixjQUFjLEVBQUUsYUFBYSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQywrQ0FBcUIsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1lBQzdHLDJCQUEyQixFQUFFLGFBQWEsQ0FBQyxXQUFXLENBQUMsbUJBQW1CLENBQUMsK0NBQXFCLENBQUMsK0JBQStCLENBQUMsQ0FBQztZQUNsSSxVQUFVLEVBQUUsYUFBYSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQywrQ0FBcUIsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1NBQzFHLENBQUMsQ0FBQztLQUNKO0lBRUQ7O09BRUc7SUFDYSwyQkFBMkIsQ0FBaUI7SUFFNUQ7O09BRUc7SUFDYSxjQUFjLENBQWlCO0lBRS9DOzs7T0FHRztJQUNhLFVBQVUsQ0FBaUI7SUFFM0M7SUFDRSxtREFBbUQ7SUFDbkQsS0FBcUI7UUFFckIsSUFBSSxDQUFDLDJCQUEyQixHQUFHLEtBQUssQ0FBQywyQkFBMkIsQ0FBQztRQUNyRSxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQyxjQUFjLENBQUM7UUFDM0MsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDO0tBQ3BDOztBQTdESCxvREE4REMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdHJpbmdTcGVjaWFsaXplciwgdHJhbnNsYXRlQXNzZXRUb2tlblRvQ2ZuVG9rZW4sIHRyYW5zbGF0ZUNmblRva2VuVG9Bc3NldFRva2VuIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvaGVscGVycy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBBcHBTdGFnaW5nU3ludGhlc2l6ZXIgfSBmcm9tICcuL2FwcC1zdGFnaW5nLXN5bnRoZXNpemVyJztcblxuLyoqXG4gKiBCb290c3RyYXBwZWQgcm9sZSBzcGVjaWZpZXIuIFRoZXNlIHJvbGVzIG11c3QgZXhpc3QgYWxyZWFkeS5cbiAqIFRoaXMgY2xhc3MgZG9lcyBub3QgY3JlYXRlIG5ldyBJQU0gUm9sZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBCb290c3RyYXBSb2xlIHtcbiAgLyoqXG4gICAqIFVzZSB0aGUgY3VycmVudGx5IGFzc3VtZWQgcm9sZS9jcmVkZW50aWFsc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBjbGlDcmVkZW50aWFscygpIHtcbiAgICByZXR1cm4gbmV3IEJvb3RzdHJhcFJvbGUoQm9vdHN0cmFwUm9sZS5DTElfQ1JFRFMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgYW4gZXhpc3RpbmcgSUFNIFJvbGUgdG8gYXNzdW1lXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21Sb2xlQXJuKGFybjogc3RyaW5nKSB7XG4gICAgU3RyaW5nU3BlY2lhbGl6ZXIudmFsaWRhdGVOb1Rva2Vucyhhcm4sICdCb290c3RyYXBSb2xlIEFSTicpO1xuICAgIHJldHVybiBuZXcgQm9vdHN0cmFwUm9sZShhcm4pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgQ0xJX0NSRURTID0gJ2NsaS1jcmVkZW50aWFscyc7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHJvbGVBcm46IHN0cmluZykge31cblxuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdGhpcyBpcyBvYmplY3Qgd2FzIGNyZWF0ZWQgdXNpbmcgQm9vdHN0cmFwUm9sZS5jbGlDcmVkZW50aWFscygpXG4gICAqL1xuICBwdWJsaWMgaXNDbGlDcmVkZW50aWFscygpIHtcbiAgICByZXR1cm4gdGhpcy5yb2xlQXJuID09PSBCb290c3RyYXBSb2xlLkNMSV9DUkVEUztcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBfYXJuRm9yQ2xvdWRGb3JtYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNDbGlDcmVkZW50aWFscygpID8gdW5kZWZpbmVkIDogdHJhbnNsYXRlQXNzZXRUb2tlblRvQ2ZuVG9rZW4odGhpcy5yb2xlQXJuKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBfYXJuRm9yQ2xvdWRBc3NlbWJseSgpIHtcbiAgICByZXR1cm4gdGhpcy5pc0NsaUNyZWRlbnRpYWxzKCkgPyB1bmRlZmluZWQgOiB0cmFuc2xhdGVDZm5Ub2tlblRvQXNzZXRUb2tlbih0aGlzLnJvbGVBcm4pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIF9zcGVjaWFsaXplKHNwZWM6IFN0cmluZ1NwZWNpYWxpemVyKSB7XG4gICAgcmV0dXJuIG5ldyBCb290c3RyYXBSb2xlKHNwZWMuc3BlY2lhbGl6ZSh0aGlzLnJvbGVBcm4pKTtcbiAgfVxufVxuXG4vKipcbiAqIERlcGxveW1lbnQgaWRlbnRpdGllcyBhcmUgdGhlIGNsYXNzIG9mIHJvbGVzIHRvIGJlIGFzc3VtZWQgYnkgdGhlIENES1xuICogd2hlbiBkZXBsb3lpbmcgdGhlIEFwcC5cbiAqL1xuZXhwb3J0IGNsYXNzIERlcGxveW1lbnRJZGVudGl0aWVzIHtcbiAgLyoqXG4gICAqIFVzZSBDTEkgY3JlZGVudGlhbHMgZm9yIGFsbCBkZXBsb3ltZW50IGlkZW50aXRpZXMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNsaUNyZWRlbnRpYWxzKCk6IERlcGxveW1lbnRJZGVudGl0aWVzIHtcbiAgICByZXR1cm4gbmV3IERlcGxveW1lbnRJZGVudGl0aWVzKHtcbiAgICAgIGNsb3VkRm9ybWF0aW9uRXhlY3V0aW9uUm9sZTogQm9vdHN0cmFwUm9sZS5jbGlDcmVkZW50aWFscygpLFxuICAgICAgZGVwbG95bWVudFJvbGU6IEJvb3RzdHJhcFJvbGUuY2xpQ3JlZGVudGlhbHMoKSxcbiAgICAgIGxvb2t1cFJvbGU6IEJvb3RzdHJhcFJvbGUuY2xpQ3JlZGVudGlhbHMoKSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHlvdXIgb3duIHJvbGVzIGZvciBhbGwgZGVwbG95bWVudCBpZGVudGl0aWVzLiBUaGVzZSByb2xlc1xuICAgKiBtdXN0IGFscmVhZHkgZXhpc3QuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHNwZWNpZnlSb2xlcyhyb2xlczogQm9vdHN0cmFwUm9sZXMpOiBEZXBsb3ltZW50SWRlbnRpdGllcyB7XG4gICAgcmV0dXJuIG5ldyBEZXBsb3ltZW50SWRlbnRpdGllcyhyb2xlcyk7XG4gIH1cblxuICAvKipcbiAgICogVXNlIHRoZSBSb2xlcyB0aGF0IGhhdmUgYmVlbiBjcmVhdGVkIGJ5IHRoZSBkZWZhdWx0IGJvb3RzdHJhcCBzdGFja1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBkZWZhdWx0Qm9vdHN0cmFwUm9sZXMob3B0aW9uczogRGVmYXVsdEJvb3RzdHJhcFJvbGVzT3B0aW9ucyA9IHt9KTogRGVwbG95bWVudElkZW50aXRpZXMge1xuICAgIGZ1bmN0aW9uIHJlcGxhY2VQbGFjZWhvbGRlcnMoeDogc3RyaW5nKSB7XG4gICAgICBpZiAob3B0aW9ucy5ib290c3RyYXBSZWdpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB4ID0geC5yZXBsYWNlKC9cXCRcXHtBV1M6OlJlZ2lvblxcfS9nLCBvcHRpb25zLmJvb3RzdHJhcFJlZ2lvbik7XG4gICAgICB9XG4gICAgICByZXR1cm4geDtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IERlcGxveW1lbnRJZGVudGl0aWVzKHtcbiAgICAgIGRlcGxveW1lbnRSb2xlOiBCb290c3RyYXBSb2xlLmZyb21Sb2xlQXJuKHJlcGxhY2VQbGFjZWhvbGRlcnMoQXBwU3RhZ2luZ1N5bnRoZXNpemVyLkRFRkFVTFRfREVQTE9ZX1JPTEVfQVJOKSksXG4gICAgICBjbG91ZEZvcm1hdGlvbkV4ZWN1dGlvblJvbGU6IEJvb3RzdHJhcFJvbGUuZnJvbVJvbGVBcm4ocmVwbGFjZVBsYWNlaG9sZGVycyhBcHBTdGFnaW5nU3ludGhlc2l6ZXIuREVGQVVMVF9DTE9VREZPUk1BVElPTl9ST0xFX0FSTikpLFxuICAgICAgbG9va3VwUm9sZTogQm9vdHN0cmFwUm9sZS5mcm9tUm9sZUFybihyZXBsYWNlUGxhY2Vob2xkZXJzKEFwcFN0YWdpbmdTeW50aGVzaXplci5ERUZBVUxUX0xPT0tVUF9ST0xFX0FSTikpLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENsb3VkRm9ybWF0aW9uIEV4ZWN1dGlvbiBSb2xlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY2xvdWRGb3JtYXRpb25FeGVjdXRpb25Sb2xlPzogQm9vdHN0cmFwUm9sZTtcblxuICAvKipcbiAgICogRGVwbG95bWVudCBBY3Rpb24gUm9sZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRlcGxveW1lbnRSb2xlPzogQm9vdHN0cmFwUm9sZTtcblxuICAvKipcbiAgICogTG9va3VwIFJvbGVcbiAgICBAZGVmYXVsdCAtIHVzZSBib290c3RyYXBwZWQgcm9sZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGxvb2t1cFJvbGU/OiBCb290c3RyYXBSb2xlO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoXG4gICAgLyoqIHJvbGVzIHRoYXQgYXJlIGJvb3RzdHJhcHBlZCB0byB5b3VyIGFjY291bnQuICovXG4gICAgcm9sZXM6IEJvb3RzdHJhcFJvbGVzLFxuICApIHtcbiAgICB0aGlzLmNsb3VkRm9ybWF0aW9uRXhlY3V0aW9uUm9sZSA9IHJvbGVzLmNsb3VkRm9ybWF0aW9uRXhlY3V0aW9uUm9sZTtcbiAgICB0aGlzLmRlcGxveW1lbnRSb2xlID0gcm9sZXMuZGVwbG95bWVudFJvbGU7XG4gICAgdGhpcy5sb29rdXBSb2xlID0gcm9sZXMubG9va3VwUm9sZTtcbiAgfVxufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGBEZXBsb3ltZW50SWRlbnRpdGllcy5kZWZhdWx0Qm9vdHN0cmFwcGVkUm9sZXNgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVmYXVsdEJvb3RzdHJhcFJvbGVzT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgcmVnaW9uIHdoZXJlIHRoZSBkZWZhdWx0IGJvb3RzdHJhcCByb2xlcyBoYXZlIGJlZW4gY3JlYXRlZFxuICAgKlxuICAgKiBCeSBkZWZhdWx0LCB0aGUgcmVnaW9uIGluIHdoaWNoIHRoZSBzdGFjayBpcyBkZXBsb3llZCBpcyB1c2VkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRoZSBzdGFjaydzIGN1cnJlbnQgcmVnaW9uXG4gICAqL1xuICByZWFkb25seSBib290c3RyYXBSZWdpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUm9sZXMgdGhhdCBhcmUgYm9vdHN0cmFwcGVkIHRvIHlvdXIgYWNjb3VudC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCb290c3RyYXBSb2xlcyB7XG4gIC8qKlxuICAgKiBDbG91ZEZvcm1hdGlvbiBFeGVjdXRpb24gUm9sZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHVzZSBib290c3RyYXBwZWQgcm9sZVxuICAgKi9cbiAgcmVhZG9ubHkgY2xvdWRGb3JtYXRpb25FeGVjdXRpb25Sb2xlPzogQm9vdHN0cmFwUm9sZTtcblxuICAvKipcbiAgICogRGVwbG95bWVudCBBY3Rpb24gUm9sZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHVzZSBib29zdHJhcHBlZCByb2xlXG4gICAqL1xuICByZWFkb25seSBkZXBsb3ltZW50Um9sZT86IEJvb3RzdHJhcFJvbGU7XG5cbiAgLyoqXG4gICAqIExvb2t1cCBSb2xlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdXNlIGJvb3RzdHJhcHBlZCByb2xlXG4gICAqL1xuICByZWFkb25seSBsb29rdXBSb2xlPzogQm9vdHN0cmFwUm9sZTtcbn1cblxuLyoqXG4gKiBSb2xlcyB0aGF0IGFyZSBpbmNsdWRlZCBpbiB0aGUgU3RhZ2luZyBTdGFja1xuICogKGZvciBhY2Nlc3MgdG8gU3RhZ2luZyBSZXNvdXJjZXMpXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RhZ2luZ1JvbGVzIHtcbiAgLyoqXG4gICAqIEZpbGUgQXNzZXQgUHVibGlzaGluZyBSb2xlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gc3RhZ2luZyBzdGFjayBjcmVhdGVzIGEgZmlsZSBhc3NldCBwdWJsaXNoaW5nIHJvbGVcbiAgICovXG4gIHJlYWRvbmx5IGZpbGVBc3NldFB1Ymxpc2hpbmdSb2xlPzogQm9vdHN0cmFwUm9sZTtcblxuICAvKipcbiAgICogRG9ja2VyIEFzc2V0IFB1Ymxpc2hpbmcgUm9sZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHN0YWdpbmcgc3RhY2sgY3JlYXRlcyBhIGRvY2tlciBhc3NldCBwdWJsaXNoaW5nIHJvbGVcbiAgICovXG4gIHJlYWRvbmx5IGRvY2tlckFzc2V0UHVibGlzaGluZ1JvbGU/OiBCb290c3RyYXBSb2xlO1xufVxuIl19
@@ -1,5 +1,4 @@
1
1
  "use strict";
2
- var _a, _b;
3
2
  Object.defineProperty(exports, "__esModule", { value: true });
4
3
  exports.DefaultStagingStack = exports.UsingAppStagingSynthesizer = exports.DEPLOY_TIME_PREFIX = void 0;
5
4
  const jsiiDeprecationWarnings = require("../.warnings.jsii.js");
@@ -24,13 +23,12 @@ exports.DEPLOY_TIME_PREFIX = 'deploy-time/';
24
23
  * injested in our metrics like every other construct.
25
24
  */
26
25
  class UsingAppStagingSynthesizer extends constructs_1.Construct {
26
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/app-staging-synthesizer-alpha.UsingAppStagingSynthesizer", version: "2.221.0-alpha.0" };
27
27
  constructor(scope, id) {
28
28
  super(scope, id);
29
29
  }
30
30
  }
31
31
  exports.UsingAppStagingSynthesizer = UsingAppStagingSynthesizer;
32
- _a = JSII_RTTI_SYMBOL_1;
33
- UsingAppStagingSynthesizer[_a] = { fqn: "@aws-cdk/app-staging-synthesizer-alpha.UsingAppStagingSynthesizer", version: "2.219.0-alpha.0" };
34
32
  /**
35
33
  * A default Staging Stack that implements IStagingResources.
36
34
  *
@@ -39,6 +37,8 @@ UsingAppStagingSynthesizer[_a] = { fqn: "@aws-cdk/app-staging-synthesizer-alpha.
39
37
  * const defaultStagingStack = DefaultStagingStack.factory({ appId: 'my-app-id', stagingBucketEncryption: BucketEncryption.S3_MANAGED });
40
38
  */
41
39
  class DefaultStagingStack extends core_1.Stack {
40
+ props;
41
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/app-staging-synthesizer-alpha.DefaultStagingStack", version: "2.221.0-alpha.0" };
42
42
  /**
43
43
  * Return a factory that will create DefaultStagingStacks
44
44
  */
@@ -94,6 +94,36 @@ class DefaultStagingStack extends core_1.Stack {
94
94
  get imageRoleName() {
95
95
  return `cdk-${this.appId}-image-role-${this.region}`;
96
96
  }
97
+ /**
98
+ * The app-scoped, evironment-keyed staging bucket.
99
+ */
100
+ stagingBucket;
101
+ /**
102
+ * The app-scoped, environment-keyed ecr repositories associated with this app.
103
+ */
104
+ stagingRepos;
105
+ /**
106
+ * The stack to add dependencies to.
107
+ */
108
+ dependencyStack;
109
+ appId;
110
+ stagingBucketName;
111
+ stagingBucketEncryption;
112
+ /**
113
+ * File publish role ARN in asset manifest format
114
+ */
115
+ providedFileRole;
116
+ fileRole;
117
+ fileRoleManifestArn;
118
+ /**
119
+ * Image publishing role ARN in asset manifest format
120
+ */
121
+ providedImageRole;
122
+ imageRole;
123
+ didImageRole = false;
124
+ imageRoleManifestArn;
125
+ autoDeleteStagingAssets;
126
+ deployRoleArn;
97
127
  constructor(scope, id, props) {
98
128
  super(scope, id, {
99
129
  ...props,
@@ -104,7 +134,6 @@ class DefaultStagingStack extends core_1.Stack {
104
134
  analyticsReporting: false, // removing AWS::CDK::Metadata construct saves ~3KB
105
135
  });
106
136
  this.props = props;
107
- this.didImageRole = false;
108
137
  try {
109
138
  jsiiDeprecationWarnings._aws_cdk_app_staging_synthesizer_alpha_DefaultStagingStackProps(props);
110
139
  }
@@ -329,6 +358,4 @@ class DefaultStagingStack extends core_1.Stack {
329
358
  }
330
359
  }
331
360
  exports.DefaultStagingStack = DefaultStagingStack;
332
- _b = JSII_RTTI_SYMBOL_1;
333
- DefaultStagingStack[_b] = { fqn: "@aws-cdk/app-staging-synthesizer-alpha.DefaultStagingStack", version: "2.219.0-alpha.0" };
334
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1zdGFnaW5nLXN0YWNrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGVmYXVsdC1zdGFnaW5nLXN0YWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHlCQUF5QjtBQUN6Qiw2QkFBNkI7QUFDN0IsMkNBQTJDO0FBQzNDLDJDQUEyQztBQUMzQywyQ0FBMkM7QUFDM0MseUNBQXlDO0FBQ3pDLDJDQVkwQjtBQUMxQiw0RUFBMEU7QUFDMUUsNENBQTRDO0FBQzVDLDJDQUF1QztBQUkxQixRQUFBLGtCQUFrQixHQUFHLGNBQWMsQ0FBQztBQUVqRDs7Ozs7OztHQU9HO0FBQ0gsTUFBYSwwQkFBMkIsU0FBUSxzQkFBUztJQUN2RCxZQUFZLEtBQWdCLEVBQUUsRUFBVTtRQUN0QyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0tBQ2xCOztBQUhILGdFQUlDOzs7QUEySEQ7Ozs7OztHQU1HO0FBQ0gsTUFBYSxtQkFBb0IsU0FBUSxZQUFLO0lBQzVDOztPQUVHO0lBQ0ksTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFtQzs7Ozs7Ozs7OztRQUN2RCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLGlCQUFpQixFQUFFLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3pGLE9BQU87WUFDTCxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsT0FBTztnQkFDbkMsTUFBTSxHQUFHLEdBQUcsVUFBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDMUIsSUFBSSxDQUFDLFVBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxTQUFTLEtBQUssQ0FBQyxTQUFTLHlCQUF5QixDQUFDLENBQUM7Z0JBQ3JFLENBQUM7Z0JBRUQsNEVBQTRFO2dCQUM1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SUFBSSxDQUFDLG1CQUFtQjtZQUN2QyxNQUFNLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsMEJBQWtCLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDekQsZUFBZSxFQUFFLElBQUk7U0FDdEIsQ0FBQztLQUNIO0lBRU0sY0FBYyxDQUFDLEtBQTZCO1FBQ2pELG9DQUFvQztRQUNwQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTNDLE9BQU87WUFDTCxRQUFRO1lBQ1IsYUFBYSxFQUFFLElBQUksQ0FBQyxvQkFBb0I7WUFDeEMsZUFBZSxFQUFFLElBQUk7U0FDdEIsQ0FBQztLQUNIO0lBRUQ7OztPQUdHO0lBQ0ksbUJBQW1CLENBQUMsT0FBMEIsRUFBRSxhQUFrQztRQUN2RixLQUFLLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBRWxELE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUM7UUFDakMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM3RCxNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQztRQUN2QyxJQUFJLElBQUksR0FBRyxLQUFLLEVBQUUsQ0FBQztZQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLHlFQUF5RSxJQUFJLFFBQVEsQ0FBQyxDQUFDO1FBQ3pHLENBQUM7S0FDRjs7QUExVkgsa0RBMlZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGVjciBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWNyJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCAqIGFzIGttcyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mta21zJztcbmltcG9ydCAqIGFzIHMzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQge1xuICBBcHAsXG4gIEFybkZvcm1hdCxcbiAgQm9vdHN0cmFwbGVzc1N5bnRoZXNpemVyLFxuICBEb2NrZXJJbWFnZUFzc2V0U291cmNlLFxuICBEdXJhdGlvbixcbiAgRmlsZUFzc2V0U291cmNlLFxuICBJU3ludGhlc2lzU2Vzc2lvbixcbiAgUmVtb3ZhbFBvbGljeSxcbiAgU3RhY2ssXG4gIFN0YWNrUHJvcHMsXG4gIElOTElORV9DVVNUT01fUkVTT1VSQ0VfQ09OVEVYVCxcbn0gZnJvbSAnYXdzLWNkay1saWIvY29yZSc7XG5pbXBvcnQgeyBTdHJpbmdTcGVjaWFsaXplciB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL2hlbHBlcnMtaW50ZXJuYWwnO1xuaW1wb3J0ICogYXMgY3hhcGkgZnJvbSAnYXdzLWNkay1saWIvY3gtYXBpJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgQm9vdHN0cmFwUm9sZSB9IGZyb20gJy4vYm9vdHN0cmFwLXJvbGVzJztcbmltcG9ydCB7IEZpbGVTdGFnaW5nTG9jYXRpb24sIElTdGFnaW5nUmVzb3VyY2VzLCBJU3RhZ2luZ1Jlc291cmNlc0ZhY3RvcnksIEltYWdlU3RhZ2luZ0xvY2F0aW9uIH0gZnJvbSAnLi9zdGFnaW5nLXN0YWNrJztcblxuZXhwb3J0IGNvbnN0IERFUExPWV9USU1FX1BSRUZJWCA9ICdkZXBsb3ktdGltZS8nO1xuXG4vKipcbiAqIFRoaXMgaXMgYSBkdW1teSBjb25zdHJ1Y3QgbWVhbnQgdG8gc2lnbmlmeSB0aGF0IGEgc3RhY2sgaXMgdXRpbGl6aW5nXG4gKiB0aGUgQXBwU3RhZ2luZ1N5bnRoZXNpemVyLiBJdCBkb2VzIG5vdCBkbyBhbnl0aGluZywgYW5kIGlzIG5vdCBtZWFudFxuICogdG8gYmUgY3JlYXRlZCBvbiBpdHMgb3duLiBUaGlzIGNvbnN0cnVjdCB3aWxsIGJlIGEgcGFydCBvZiB0aGVcbiAqIGNvbnN0cnVjdCB0cmVlIG9ubHkgYW5kIG5vdCB0aGUgQ2ZuIHRlbXBsYXRlLiBUaGUgY29uc3RydWN0IHRyZWUgaXNcbiAqIHRoZW4gZW5jb2RlZCBpbiB0aGUgQVdTOjpDREs6Ok1ldGFkYXRhIHJlc291cmNlIG9mIHRoZSBzdGFjayBhbmRcbiAqIGluamVzdGVkIGluIG91ciBtZXRyaWNzIGxpa2UgZXZlcnkgb3RoZXIgY29uc3RydWN0LlxuICovXG5leHBvcnQgY2xhc3MgVXNpbmdBcHBTdGFnaW5nU3ludGhlc2l6ZXIgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgfVxufVxuXG4vKipcbiAqIFVzZXIgY29uZmlndXJhYmxlIG9wdGlvbnMgdG8gdGhlIERlZmF1bHRTdGFnaW5nU3RhY2suXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVmYXVsdFN0YWdpbmdTdGFja09wdGlvbnMge1xuICAvKipcbiAgICogQSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIGFwcGxpY2F0aW9uIHRoYXQgdGhlIHN0YWdpbmcgc3RhY2sgYmVsb25ncyB0by5cbiAgICpcbiAgICogVGhpcyBpZGVudGlmaWVyIHdpbGwgYmUgdXNlZCBpbiB0aGUgbmFtZSBvZiBzdGFnaW5nIHJlc291cmNlc1xuICAgKiBjcmVhdGVkIGZvciB0aGlzIGFwcGxpY2F0aW9uLCBhbmQgc2hvdWxkIGJlIHVuaXF1ZSBhY3Jvc3MgQ0RLIGFwcHMuXG4gICAqXG4gICAqIFRoZSBpZGVudGlmaWVyIHNob3VsZCBpbmNsdWRlIGxvd2VyY2FzZSBjaGFyYWN0ZXJzIGFuZCBkYXNoZXMgKCctJykgb25seVxuICAgKiBhbmQgaGF2ZSBhIG1heGltdW0gb2YgMjAgY2hhcmFjdGVycy5cbiAgICovXG4gIHJlYWRvbmx5IGFwcElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEV4cGxpY2l0IG5hbWUgZm9yIHRoZSBzdGFnaW5nIGJ1Y2tldFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGEgd2VsbC1rbm93biBuYW1lIHVuaXF1ZSB0byB0aGlzIGFwcC9lbnYuXG4gICAqL1xuICByZWFkb25seSBzdGFnaW5nQnVja2V0TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogRW5jcnlwdGlvbiB0eXBlIGZvciBzdGFnaW5nIGJ1Y2tldFxuICAgKlxuICAgKiBJbiBmdXR1cmUgdmVyc2lvbnMgb2YgdGhpcyBwYWNrYWdlLCB0aGUgZGVmYXVsdCB3aWxsIGJlIEJ1Y2tldEVuY3J5cHRpb24uUzNfTUFOQUdFRC5cbiAgICpcbiAgICogSW4gcHJldmlvdXMgdmVyc2lvbnMgb2YgdGhpcyBwYWNrYWdlLCB0aGUgZGVmYXVsdCB3YXMgdG8gdXNlIEtNUyBlbmNyeXB0aW9uIGZvciB0aGUgc3RhZ2luZyBidWNrZXQuIEtNUyBrZXlzIGNvc3RcbiAgICogJDEvbW9udGgsIHdoaWNoIGNvdWxkIHJlc3VsdCBpbiB1bmV4cGVjdGVkIGNvc3RzIGZvciB1c2VycyB3aG8gYXJlIG5vdCBhd2FyZSBvZiB0aGlzLiBBcyB3ZSBzdGFiaWxpemUgdGhpcyBtb2R1bGVcbiAgICogd2UgaW50ZW5kIHRvIG1ha2UgdGhlIGRlZmF1bHQgUzMtbWFuYWdlZCBlbmNyeXB0aW9uLCB3aGljaCBpcyBmcmVlLiBIb3dldmVyLCB0aGUgbWlncmF0aW9uIHBhdGggZnJvbSBLTVMgdG8gUzNcbiAgICogbWFuYWdlZCBlbmNyeXB0aW9uIGZvciBleGlzdGluZyBidWNrZXRzIGlzIG5vdCBzdHJhaWdodGZvcndhcmQuIFRoZXJlZm9yZSwgZm9yIG5vdywgdGhpcyBwcm9wZXJ0eSBpcyByZXF1aXJlZC5cbiAgICpcbiAgICogSWYgeW91IGhhdmUgYW4gZXhpc3Rpbmcgc3RhZ2luZyBidWNrZXQgZW5jcnlwdGVkIHdpdGggYSBLTVMga2V5LCB5b3Ugd2lsbCBsaWtlbHkgd2FudCB0byBzZXQgdGhpcyBwcm9wZXJ0eSB0b1xuICAgKiBCdWNrZXRFbmNyeXB0aW9uLktNUy4gSWYgeW91IGFyZSBjcmVhdGluZyBhIG5ldyBzdGFnaW5nIGJ1Y2tldCwgeW91IGNhbiBzZXQgdGhpcyBwcm9wZXJ0eSB0b1xuICAgKiBCdWNrZXRFbmNyeXB0aW9uLlMzX01BTkFHRUQgdG8gYXZvaWQgdGhlIGNvc3Qgb2YgYSBLTVMga2V5LlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhZ2luZ0J1Y2tldEVuY3J5cHRpb246IHMzLkJ1Y2tldEVuY3J5cHRpb247XG5cbiAgLyoqXG4gICAqIFBhc3MgaW4gYW4gZXhpc3Rpbmcgcm9sZSB0byBiZSB1c2VkIGFzIHRoZSBmaWxlIHB1Ymxpc2hpbmcgcm9sZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBhIG5ldyByb2xlIHdpbGwgYmUgY3JlYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgZmlsZUFzc2V0UHVibGlzaGluZ1JvbGU/OiBCb290c3RyYXBSb2xlO1xuXG4gIC8qKlxuICAgKiBQYXNzIGluIGFuIGV4aXN0aW5nIHJvbGUgdG8gYmUgdXNlZCBhcyB0aGUgaW1hZ2UgcHVibGlzaGluZyByb2xlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGEgbmV3IHJvbGUgd2lsbCBiZSBjcmVhdGVkXG4gICAqL1xuICByZWFkb25seSBpbWFnZUFzc2V0UHVibGlzaGluZ1JvbGU/OiBCb290c3RyYXBSb2xlO1xuXG4gIC8qKlxuICAgKiBUaGUgbGlmZXRpbWUgZm9yIGRlcGxveSB0aW1lIGZpbGUgYXNzZXRzLlxuICAgKlxuICAgKiBBc3NldHMgdGhhdCBhcmUgb25seSBuZWNlc3NhcnkgYXQgZGVwbG95bWVudCB0aW1lIChmb3IgaW5zdGFuY2UsXG4gICAqIENsb3VkRm9ybWF0aW9uIHRlbXBsYXRlcyBhbmQgTGFtYmRhIHNvdXJjZSBjb2RlIGJ1bmRsZXMpIHdpbGwgYmVcbiAgICogYXV0b21hdGljYWxseSBkZWxldGVkIGFmdGVyIHRoaXMgbWFueSBkYXlzLiBBc3NldHMgdGhhdCBtYXkgYmVcbiAgICogcmVhZCBmcm9tIHRoZSBzdGFnaW5nIGJ1Y2tldCBkdXJpbmcgeW91ciBhcHBsaWNhdGlvbidzIHJ1biB0aW1lXG4gICAqIHdpbGwgbm90IGJlIGRlbGV0ZWQuXG4gICAqXG4gICAqIFNldCB0aGlzIHRvIHRoZSBsZW5ndGggb2YgdGltZSB5b3Ugd2lzaCB0byBiZSBhYmxlIHRvIHJvbGwgYmFjayB0b1xuICAgKiBwcmV2aW91cyB2ZXJzaW9ucyBvZiB5b3VyIGFwcGxpY2F0aW9uIHdpdGhvdXQgaGF2aW5nIHRvIGRvIGEgbmV3XG4gICAqIGBjZGsgc3ludGhgIGFuZCByZS11cGxvYWQgb2YgYXNzZXRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIER1cmF0aW9uLmRheXMoMzApXG4gICAqL1xuICByZWFkb25seSBkZXBsb3lUaW1lRmlsZUFzc2V0TGlmZXRpbWU/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gbnVtYmVyIG9mIGltYWdlIHZlcnNpb25zIHRvIHN0b3JlIGluIGEgcmVwb3NpdG9yeS5cbiAgICpcbiAgICogUHJldmlvdXMgdmVyc2lvbnMgb2YgYW4gaW1hZ2UgY2FuIGJlIHN0b3JlZCBmb3Igcm9sbGJhY2sgcHVycG9zZXMuXG4gICAqIE9uY2UgYSByZXBvc2l0b3J5IGhhcyBtb3JlIHRoYW4gMyBpbWFnZSB2ZXJzaW9ucyBzdG9yZWQsIHRoZSBvbGRlc3RcbiAgICogdmVyc2lvbiB3aWxsIGJlIGRpc2NhcmRlZC4gVGhpcyBhbGxvd3MgZm9yIHNlbnNpYmxlIGdhcmJhZ2UgY29sbGVjdGlvblxuICAgKiB3aGlsZSBtYWludGFpbmluZyBhIGZldyBwcmV2aW91cyB2ZXJzaW9ucyBmb3Igcm9sbGJhY2sgc2NlbmFyaW9zLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHVwIHRvIDMgdmVyc2lvbnMgc3RvcmVkXG4gICAqL1xuICByZWFkb25seSBpbWFnZUFzc2V0VmVyc2lvbkNvdW50PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBdXRvIGRlbGV0ZXMgb2JqZWN0cyBpbiB0aGUgc3RhZ2luZyBTMyBidWNrZXQgYW5kIGltYWdlcyBpbiB0aGVcbiAgICogc3RhZ2luZyBFQ1IgcmVwb3NpdG9yaWVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBhdXRvRGVsZXRlU3RhZ2luZ0Fzc2V0cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgYSBjdXN0b20gcHJlZml4IHRvIGJlIHVzZWQgYXMgdGhlIHN0YWdpbmcgc3RhY2sgbmFtZSBhbmRcbiAgICogY29uc3RydWN0IElELiBUaGUgcHJlZml4IHdpbGwgYmUgYXBwZW5kZWQgYmVmb3JlIHRoZSBhcHBJZCwgd2hpY2hcbiAgICogaXMgcmVxdWlyZWQgdG8gYmUgcGFydCBvZiB0aGUgc3RhY2sgbmFtZSBhbmQgY29uc3RydWN0IElEIHRvXG4gICAqIGVuc3VyZSB1bmlxdWVuZXNzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnU3RhZ2luZ1N0YWNrJ1xuICAgKi9cbiAgcmVhZG9ubHkgc3RhZ2luZ1N0YWNrTmFtZVByZWZpeD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBEZWZhdWx0IFN0YWdpbmcgU3RhY2sgUHJvcGVydGllc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIERlZmF1bHRTdGFnaW5nU3RhY2tQcm9wcyBleHRlbmRzIERlZmF1bHRTdGFnaW5nU3RhY2tPcHRpb25zLCBTdGFja1Byb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGRlcGxveSBhY3Rpb24gcm9sZSwgaWYgZ2l2ZW5cbiAgICpcbiAgICogVGhpcyByb2xlIHdpbGwgbmVlZCBwZXJtaXNzaW9ucyB0byByZWFkIGZyb20gdG8gdGhlIHN0YWdpbmcgcmVzb3VyY2VzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFRoZSBDTEkgY3JlZGVudGlhbHMgYXJlIGFzc3VtZWQsIG5vIGFkZGl0aW9uYWwgcGVybWlzc2lvbnMgYXJlIGdyYW50ZWQuXG4gICAqL1xuICByZWFkb25seSBkZXBsb3lSb2xlQXJuPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcXVhbGlmaWVyIHVzZWQgdG8gc3BlY2lhbGl6ZSBzdHJpbmdzXG4gICAqXG4gICAqIENhbiBiZSB1c2VkIHRvIHNwZWNpZnkgY3VzdG9tIGJvb3RzdHJhcHBlZCByb2xlIG5hbWVzXG4gICAqL1xuICByZWFkb25seSBxdWFsaWZpZXI6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIGRlZmF1bHQgU3RhZ2luZyBTdGFjayB0aGF0IGltcGxlbWVudHMgSVN0YWdpbmdSZXNvdXJjZXMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGltcG9ydCB7IEJ1Y2tldEVuY3J5cHRpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMnO1xuICogY29uc3QgZGVmYXVsdFN0YWdpbmdTdGFjayA9IERlZmF1bHRTdGFnaW5nU3RhY2suZmFjdG9yeSh7IGFwcElkOiAnbXktYXBwLWlkJywgc3RhZ2luZ0J1Y2tldEVuY3J5cHRpb246IEJ1Y2tldEVuY3J5cHRpb24uUzNfTUFOQUdFRCB9KTtcbiAqL1xuZXhwb3J0IGNsYXNzIERlZmF1bHRTdGFnaW5nU3RhY2sgZXh0ZW5kcyBTdGFjayBpbXBsZW1lbnRzIElTdGFnaW5nUmVzb3VyY2VzIHtcbiAgLyoqXG4gICAqIFJldHVybiBhIGZhY3RvcnkgdGhhdCB3aWxsIGNyZWF0ZSBEZWZhdWx0U3RhZ2luZ1N0YWNrc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmYWN0b3J5KG9wdGlvbnM6IERlZmF1bHRTdGFnaW5nU3RhY2tPcHRpb25zKTogSVN0YWdpbmdSZXNvdXJjZXNGYWN0b3J5IHtcbiAgICBjb25zdCBhcHBJZCA9IG9wdGlvbnMuYXBwSWQudG9Mb2NhbGVMb3dlckNhc2UoKS5yZXBsYWNlKC9bXmEtejAtOS1dL2csICctJykuc2xpY2UoMCwgMjApO1xuICAgIHJldHVybiB7XG4gICAgICBvYnRhaW5TdGFnaW5nUmVzb3VyY2VzKHN0YWNrLCBjb250ZXh0KSB7XG4gICAgICAgIGNvbnN0IGFwcCA9IEFwcC5vZihzdGFjayk7XG4gICAgICAgIGlmICghQXBwLmlzQXBwKGFwcCkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFN0YWNrICR7c3RhY2suc3RhY2tOYW1lfSBtdXN0IGJlIHBhcnQgb2YgYW4gQXBwYCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBCZWNhdXNlIHdlIGRvIG5vdCBrZWVwIG1ldHJpY3MgaW4gdGhlIERlZmF1bHRTdGFnaW5nU3RhY2ssIHdlIHdpbGwgaW5qZWN0XG4gICAgICAgIC8vIGEgZHVtbXkgY29uc3RydWN0IGludG8gdGhlIHN0YWNrIHVzaW5nIHRoZSBEZWZhdWx0U3RhZ2luZ1N0YWNrIGluc3RlYWQuXG4gICAgICAgIGlmIChjeGFwaS5BTkFMWVRJQ1NfUkVQT1JUSU5HX0VOQUJMRURfQ09OVEVYVCkge1xuICAgICAgICAgIG5ldyBVc2luZ0FwcFN0YWdpbmdTeW50aGVzaXplcihzdGFjaywgYFVzaW5nQXBwU3RhZ2luZ1N5bnRoZXNpemVyLyR7c3RhY2suc3RhY2tOYW1lfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc3RhY2tQcmVmaXggPSBvcHRpb25zLnN0YWdpbmdTdGFja05hbWVQcmVmaXggPz8gJ1N0YWdpbmdTdGFjayc7XG4gICAgICAgIC8vIFN0YWNrIG5hbWUgZG9lcyBub3QgbmVlZCB0byBjb250YWluIGVudmlyb25tZW50IGJlY2F1c2UgYXBwSWQgaXMgdW5pcXVlIGluc2lkZSBhbiBlbnZcbiAgICAgICAgY29uc3Qgc3RhY2tOYW1lID0gYCR7c3RhY2tQcmVmaXh9LSR7YXBwSWR9YDtcbiAgICAgICAgY29uc3Qgc3RhY2tJZCA9IGAke3N0YWNrTmFtZX0tJHtjb250ZXh0LmVudmlyb25tZW50U3RyaW5nfWA7XG4gICAgICAgIHJldHVybiBuZXcgRGVmYXVsdFN0YWdpbmdTdGFjayhhcHAsIHN0YWNrSWQsIHtcbiAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAgIHN0YWNrTmFtZSxcbiAgICAgICAgICBlbnY6IHtcbiAgICAgICAgICAgIGFjY291bnQ6IHN0YWNrLmFjY291bnQsXG4gICAgICAgICAgICByZWdpb246IHN0YWNrLnJlZ2lvbixcbiAgICAgICAgICB9LFxuICAgICAgICAgIGFwcElkLFxuICAgICAgICAgIHF1YWxpZmllcjogY29udGV4dC5xdWFsaWZpZXIsXG4gICAgICAgICAgZGVwbG95Um9sZUFybjogY29udGV4dC5kZXBsb3lSb2xlQXJuLFxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZhdWx0IGFzc2V0IHB1Ymxpc2hpbmcgcm9sZSBuYW1lIGZvciBmaWxlIChTMykgYXNzZXRzLlxuICAgKi9cbiAgcHJpdmF0ZSBnZXQgZmlsZVJvbGVOYW1lKCkge1xuICAgIHJldHVybiBgY2RrLSR7dGhpcy5hcHBJZH0tZmlsZS1yb2xlLSR7dGhpcy5yZWdpb259YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZhdWx0IGFzc2V0IHB1Ymxpc2hpbmcgcm9sZSBuYW1lIGZvciBkb2NrZXIgKEVDUikgYXNzZXRzLlxuICAgKi9cbiAgcHJpdmF0ZSBnZXQgaW1hZ2VSb2xlTmFtZSgpIHtcbiAgICByZXR1cm4gYGNkay0ke3RoaXMuYXBwSWR9LWltYWdlLXJvbGUtJHt0aGlzLnJlZ2lvbn1gO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBhcHAtc2NvcGVkLCBldmlyb25tZW50LWtleWVkIHN0YWdpbmcgYnVja2V0LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHN0YWdpbmdCdWNrZXQ/OiBzMy5CdWNrZXQ7XG5cbiAgLyoqXG4gICAqIFRoZSBhcHAtc2NvcGVkLCBlbnZpcm9ubWVudC1rZXllZCBlY3IgcmVwb3NpdG9yaWVzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGFwcC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzdGFnaW5nUmVwb3M6IFJlY29yZDxzdHJpbmcsIGVjci5SZXBvc2l0b3J5PjtcblxuICAvKipcbiAgICogVGhlIHN0YWNrIHRvIGFkZCBkZXBlbmRlbmNpZXMgdG8uXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZGVwZW5kZW5jeVN0YWNrOiBTdGFjaztcblxuICBwcml2YXRlIHJlYWRvbmx5IGFwcElkOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgc3RhZ2luZ0J1Y2tldE5hbWU/OiBzdHJpbmc7XG4gIHByaXZhdGUgc3RhZ2luZ0J1Y2tldEVuY3J5cHRpb246IHMzLkJ1Y2tldEVuY3J5cHRpb247XG5cbiAgLyoqXG4gICAqIEZpbGUgcHVibGlzaCByb2xlIEFSTiBpbiBhc3NldCBtYW5pZmVzdCBmb3JtYXRcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgcHJvdmlkZWRGaWxlUm9sZT86IEJvb3RzdHJhcFJvbGU7XG4gIHByaXZhdGUgZmlsZVJvbGU/OiBpYW0uSVJvbGU7XG4gIHByaXZhdGUgZmlsZVJvbGVNYW5pZmVzdEFybj86IHN0cmluZztcblxuICAvKipcbiAgICogSW1hZ2UgcHVibGlzaGluZyByb2xlIEFSTiBpbiBhc3NldCBtYW5pZmVzdCBmb3JtYXRcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgcHJvdmlkZWRJbWFnZVJvbGU/OiBCb290c3RyYXBSb2xlO1xuICBwcml2YXRlIGltYWdlUm9sZT86IGlhbS5JUm9sZTtcbiAgcHJpdmF0ZSBkaWRJbWFnZVJvbGUgPSBmYWxzZTtcbiAgcHJpdmF0ZSBpbWFnZVJvbGVNYW5pZmVzdEFybj86IHN0cmluZztcbiAgcHJpdmF0ZSBhdXRvRGVsZXRlU3RhZ2luZ0Fzc2V0czogYm9vbGVhbjtcblxuICBwcml2YXRlIHJlYWRvbmx5IGRlcGxveVJvbGVBcm4/OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IEFwcCwgaWQ6IHN0cmluZywgcHJpdmF0ZSByZWFkb25seSBwcm9wczogRGVmYXVsdFN0YWdpbmdTdGFja1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICAuLi5wcm9wcyxcbiAgICAgIHN5bnRoZXNpemVyOiBuZXcgQm9vdHN0cmFwbGVzc1N5bnRoZXNpemVyKHtcbiAgICAgICAgcXVhbGlmaWVyOiBwcm9wcy5xdWFsaWZpZXIsXG4gICAgICB9KSxcbiAgICAgIGRlc2NyaXB0aW9uOiBgVGhpcyBzdGFjayBpbmNsdWRlcyByZXNvdXJjZXMgbmVlZGVkIHRvIGRlcGxveSB0aGUgQVdTIENESyBhcHAgJHtwcm9wcy5hcHBJZH0gaW50byB0aGlzIGVudmlyb25tZW50YCxcbiAgICAgIGFuYWx5dGljc1JlcG9ydGluZzogZmFsc2UsIC8vIHJlbW92aW5nIEFXUzo6Q0RLOjpNZXRhZGF0YSBjb25zdHJ1Y3Qgc2F2ZXMgfjNLQlxuICAgIH0pO1xuXG4gICAgLy8gcmVtb3ZpbmcgcGF0aCBtZXRhZGF0YSBzYXZlcyB+MktCXG4gICAgdGhpcy5ub2RlLnNldENvbnRleHQoY3hhcGkuUEFUSF9NRVRBREFUQV9FTkFCTEVfQ09OVEVYVCwgZmFsc2UpO1xuXG4gICAgLy8gRm9yIGFsbCByZXNvdXJjZXMgdW5kZXIgdGhlIGRlZmF1bHQgc3RhZ2luZyBzdGFjaywgd2Ugd2FudCB0byBpbmxpbmUgY3VzdG9tXG4gICAgLy8gcmVzb3VyY2VzIGJlY2F1c2UgdGhlIHN0YWdpbmcgYnVja2V0IG5lY2Vzc2FyeSBmb3IgY3VzdG9tIHJlc291cmNlIGFzc2V0c1xuICAgIC8vIGRvZXMgbm90IGV4aXN0IHlldC5cbiAgICB0aGlzLm5vZGUuc2V0Q29udGV4dChJTkxJTkVfQ1VTVE9NX1JFU09VUkNFX0NPTlRFWFQsIHRydWUpO1xuICAgIHRoaXMuYXV0b0RlbGV0ZVN0YWdpbmdBc3NldHMgPSBwcm9wcy5hdXRvRGVsZXRlU3RhZ2luZ0Fzc2V0cyA/PyB0cnVlO1xuXG4gICAgdGhpcy5hcHBJZCA9IHRoaXMudmFsaWRhdGVBcHBJZChwcm9wcy5hcHBJZCk7XG4gICAgdGhpcy5kZXBlbmRlbmN5U3RhY2sgPSB0aGlzO1xuXG4gICAgdGhpcy5kZXBsb3lSb2xlQXJuID0gcHJvcHMuZGVwbG95Um9sZUFybjtcbiAgICB0aGlzLnN0YWdpbmdCdWNrZXROYW1lID0gcHJvcHMuc3RhZ2luZ0J1Y2tldE5hbWU7XG5cbiAgICAvLyBGSVhNRTogd2hlbiBzdGFiaWxpemluZyB0aGlzIG1vZHVsZSwgd2Ugc2hvdWxkIG1ha2UgYHN0YWdpbmdCdWNrZXRFbmNyeXB0aW9uYCBvcHRpb25hbCwgZGVmYXVsdGluZyB0byBTM19NQU5BR0VELlxuICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvcHVsbC8yODk3OCNpc3N1ZWNvbW1lbnQtMTkzMDAwNzE3NiBmb3IgZGV0YWlscyBvbiB0aGlzIGRlY2lzaW9uLlxuICAgIHRoaXMuc3RhZ2luZ0J1Y2tldEVuY3J5cHRpb24gPSBwcm9wcy5zdGFnaW5nQnVja2V0RW5jcnlwdGlvbjtcblxuICAgIGNvbnN0IHNwZWNpYWxpemVyID0gbmV3IFN0cmluZ1NwZWNpYWxpemVyKHRoaXMsIHByb3BzLnF1YWxpZmllcik7XG4gICAgdGhpcy5wcm92aWRlZEZpbGVSb2xlID0gcHJvcHMuZmlsZUFzc2V0UHVibGlzaGluZ1JvbGU/Ll9zcGVjaWFsaXplKHNwZWNpYWxpemVyKTtcbiAgICB0aGlzLnByb3ZpZGVkSW1hZ2VSb2xlID0gcHJvcHMuaW1hZ2VBc3NldFB1Ymxpc2hpbmdSb2xlPy5fc3BlY2lhbGl6ZShzcGVjaWFsaXplcik7XG4gICAgdGhpcy5zdGFnaW5nUmVwb3MgPSB7fTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVBcHBJZChpZDogc3RyaW5nKSB7XG4gICAgY29uc3QgZXJyb3JzID0gW107XG4gICAgaWYgKGlkLmxlbmd0aCA+IDIwKSB7XG4gICAgICBlcnJvcnMucHVzaChgYXBwSWQgZXhwZWN0ZWQgbm8gbW9yZSB0aGFuIDIwIGNoYXJhY3RlcnMgYnV0IGdvdCAke2lkLmxlbmd0aH0gY2hhcmFjdGVycy5gKTtcbiAgICB9XG4gICAgaWYgKGlkICE9PSBpZC50b0xvY2FsZUxvd2VyQ2FzZSgpKSB7XG4gICAgICBlcnJvcnMucHVzaCgnYXBwSWQgb25seSBhY2NlcHRzIGxvd2VyY2FzZSBjaGFyYWN0ZXJzLicpO1xuICAgIH1cbiAgICBpZiAoIS9eW2EtejAtOS1dKiQvLnRlc3QoaWQpKSB7XG4gICAgICBlcnJvcnMucHVzaCgnYXBwSWQgZXhwZWN0cyBvbmx5IGxldHRlcnMsIG51bWJlcnMsIGFuZCBkYXNoZXMgKFxcJy1cXCcpJyk7XG4gICAgfVxuXG4gICAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoW1xuICAgICAgICBgYXBwSWQgJHtpZH0gaGFzIGVycm9yczpgLFxuICAgICAgICAuLi5lcnJvcnMsXG4gICAgICBdLmpvaW4oJ1xcbicpKTtcbiAgICB9XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgcHJpdmF0ZSBlbnN1cmVGaWxlUm9sZSgpIHtcbiAgICBpZiAodGhpcy5wcm92aWRlZEZpbGVSb2xlKSB7XG4gICAgICAvLyBPdmVycmlkZVxuICAgICAgdGhpcy5maWxlUm9sZU1hbmlmZXN0QXJuID0gdGhpcy5wcm92aWRlZEZpbGVSb2xlLl9hcm5Gb3JDbG91ZEFzc2VtYmx5KCk7XG4gICAgICBjb25zdCBjZm5Bcm4gPSB0aGlzLnByb3ZpZGVkRmlsZVJvbGUuX2FybkZvckNsb3VkRm9ybWF0aW9uKCk7XG4gICAgICB0aGlzLmZpbGVSb2xlID0gY2ZuQXJuID8gaWFtLlJvbGUuZnJvbVJvbGVBcm4odGhpcywgJ0Nka0ZpbGVSb2xlJywgY2ZuQXJuKSA6IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCByb2xlTmFtZSA9IHRoaXMuZmlsZVJvbGVOYW1lO1xuICAgIHRoaXMuZmlsZVJvbGUgPSBuZXcgaWFtLlJvbGUodGhpcywgJ0Nka0ZpbGVSb2xlJywge1xuICAgICAgcm9sZU5hbWUsXG4gICAgICBhc3N1bWVkQnk6IG5ldyBpYW0uQWNjb3VudFByaW5jaXBhbCh0aGlzLmFjY291bnQpLFxuICAgIH0pO1xuXG4gICAgdGhpcy5maWxlUm9sZU1hbmlmZXN0QXJuID0gU3RhY2sub2YodGhpcykuZm9ybWF0QXJuKHtcbiAgICAgIHBhcnRpdGlvbjogJyR7QVdTOjpQYXJ0aXRpb259JyxcbiAgICAgIHJlZ2lvbjogJycsIC8vIGlhbSBpcyBnbG9iYWxcbiAgICAgIHNlcnZpY2U6ICdpYW0nLFxuICAgICAgcmVzb3VyY2U6ICdyb2xlJyxcbiAgICAgIHJlc291cmNlTmFtZTogcm9sZU5hbWUsXG4gICAgICBhcm5Gb3JtYXQ6IEFybkZvcm1hdC5TTEFTSF9SRVNPVVJDRV9OQU1FLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBlbnN1cmVJbWFnZVJvbGUoKSB7XG4gICAgLy8gSXQgbWF5IGVuZCB1cCBzZXR0aW5nIGltYWdlUm9sZSB0byB1bmRlZmluZWQsIGJ1dCBhdCBsZWFzdCB3ZSB0cmllZFxuICAgIGlmICh0aGlzLmRpZEltYWdlUm9sZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmRpZEltYWdlUm9sZSA9IHRydWU7XG5cbiAgICBpZiAodGhpcy5wcm92aWRlZEltYWdlUm9sZSkge1xuICAgICAgLy8gT3ZlcnJpZGVcbiAgICAgIHRoaXMuaW1hZ2VSb2xlTWFuaWZlc3RBcm4gPSB0aGlzLnByb3ZpZGVkSW1hZ2VSb2xlLl9hcm5Gb3JDbG91ZEFzc2VtYmx5KCk7XG4gICAgICBjb25zdCBjZm5Bcm4gPSB0aGlzLnByb3ZpZGVkSW1hZ2VSb2xlLl9hcm5Gb3JDbG91ZEZvcm1hdGlvbigpO1xuICAgICAgdGhpcy5pbWFnZVJvbGUgPSBjZm5Bcm4gPyBpYW0uUm9sZS5mcm9tUm9sZUFybih0aGlzLCAnQ2RrSW1hZ2VSb2xlJywgY2ZuQXJuKSA6IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCByb2xlTmFtZSA9IHRoaXMuaW1hZ2VSb2xlTmFtZTtcbiAgICB0aGlzLmltYWdlUm9sZSA9IG5ldyBpYW0uUm9sZSh0aGlzLCAnQ2RrSW1hZ2VSb2xlJywge1xuICAgICAgcm9sZU5hbWUsXG4gICAgICBhc3N1bWVkQnk6IG5ldyBpYW0uQWNjb3VudFByaW5jaXBhbCh0aGlzLmFjY291bnQpLFxuICAgIH0pO1xuICAgIHRoaXMuaW1hZ2VSb2xlTWFuaWZlc3RBcm4gPSBTdGFjay5vZih0aGlzKS5mb3JtYXRBcm4oe1xuICAgICAgcGFydGl0aW9uOiAnJHtBV1M6OlBhcnRpdGlvbn0nLFxuICAgICAgcmVnaW9uOiAnJywgLy8gaWFtIGlzIGdsb2JhbFxuICAgICAgc2VydmljZTogJ2lhbScsXG4gICAgICByZXNvdXJjZTogJ3JvbGUnLFxuICAgICAgcmVzb3VyY2VOYW1lOiByb2xlTmFtZSxcbiAgICAgIGFybkZvcm1hdDogQXJuRm9ybWF0LlNMQVNIX1JFU09VUkNFX05BTUUsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUJ1Y2tldEtleSgpOiBrbXMuSUtleSB7XG4gICAgcmV0dXJuIG5ldyBrbXMuS2V5KHRoaXMsICdCdWNrZXRLZXknLCB7XG4gICAgICBhbGlhczogYGFsaWFzL2Nkay0ke3RoaXMuYXBwSWR9LXN0YWdpbmdgLFxuICAgICAgYWRtaW5zOiBbbmV3IGlhbS5BY2NvdW50UHJpbmNpcGFsKHRoaXMuYWNjb3VudCldLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDcmVhdGVCdWNrZXQoKSB7XG4gICAgY29uc3Qgc3RhZ2luZ0J1Y2tldE5hbWUgPSB0aGlzLnN0YWdpbmdCdWNrZXROYW1lID8/IGBjZGstJHt0aGlzLmFwcElkfS1zdGFnaW5nLSR7dGhpcy5hY2NvdW50fS0ke3RoaXMucmVnaW9ufWA7XG4gICAgY29uc3QgYnVja2V0SWQgPSAnQ2RrU3RhZ2luZ0J1Y2tldCc7XG4gICAgY29uc3QgY3JlYXRlZEJ1Y2tldCA9IHRoaXMubm9kZS50cnlGaW5kQ2hpbGQoYnVja2V0SWQpIGFzIHMzLkJ1Y2tldDtcbiAgICBpZiAoY3JlYXRlZEJ1Y2tldCkge1xuICAgICAgcmV0dXJuIHN0YWdpbmdCdWNrZXROYW1lO1xuICAgIH1cblxuICAgIHRoaXMuZW5zdXJlRmlsZVJvbGUoKTtcblxuICAgIGxldCBrZXkgPSB1bmRlZmluZWQ7XG4gICAgaWYgKHRoaXMuc3RhZ2luZ0J1Y2tldEVuY3J5cHRpb24gPT09IHMzLkJ1Y2tldEVuY3J5cHRpb24uS01TKSB7XG4gICAgICBrZXkgPSB0aGlzLmNyZWF0ZUJ1Y2tldEtleSgpO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSB0aGUgYnVja2V0IG9uY2UgdGhlIGRlcGVuZGVuY2llcyBoYXZlIGJlZW4gY3JlYXRlZFxuICAgIGNvbnN0IGJ1Y2tldCA9IG5ldyBzMy5CdWNrZXQodGhpcywgYnVja2V0SWQsIHtcbiAgICAgIGJ1Y2tldE5hbWU6IHN0YWdpbmdCdWNrZXROYW1lLFxuICAgICAgLi4uKHRoaXMuYXV0b0RlbGV0ZVN0YWdpbmdBc3NldHMgPyB7XG4gICAgICAgIHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICAgICAgYXV0b0RlbGV0ZU9iamVjdHM6IHRydWUsXG4gICAgICB9IDoge1xuICAgICAgICByZW1vdmFsUG9saWN5OiBSZW1vdmFsUG9saWN5LlJFVEFJTixcbiAgICAgIH0pLFxuICAgICAgZW5jcnlwdGlvbjogdGhpcy5zdGFnaW5nQnVja2V0RW5jcnlwdGlvbixcbiAgICAgIGVuY3J5cHRpb25LZXk6IGtleSxcblxuICAgICAgLy8gTWFueSBBV1MgYWNjb3VudCBzYWZldHkgY2hlY2tlcnMgd2lsbCBjb21wbGFpbiB3aGVuIGJ1Y2tldHMgYXJlbid0IHZlcnNpb25lZFxuICAgICAgdmVyc2lvbmVkOiB0cnVlLFxuICAgICAgLy8gTWFueSBBV1MgYWNjb3VudCBzYWZldHkgY2hlY2tlcnMgd2lsbCBjb21wbGFpbiB3aGVuIFNTTCBpc24ndCBlbmZvcmNlZFxuICAgICAgZW5mb3JjZVNTTDogdHJ1ZSxcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLmZpbGVSb2xlKSB7XG4gICAgICBidWNrZXQuZ3JhbnRSZWFkV3JpdGUodGhpcy5maWxlUm9sZSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZGVwbG95Um9sZUFybikge1xuICAgICAgYnVja2V0LmFkZFRvUmVzb3VyY2VQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgJ3MzOkdldE9iamVjdConLFxuICAgICAgICAgICdzMzpHZXRCdWNrZXQqJyxcbiAgICAgICAgICAnczM6TGlzdConLFxuICAgICAgICBdLFxuICAgICAgICByZXNvdXJjZXM6IFtidWNrZXQuYnVja2V0QXJuLCBidWNrZXQuYXJuRm9yT2JqZWN0cygnKicpXSxcbiAgICAgICAgcHJpbmNpcGFsczogW25ldyBpYW0uQXJuUHJpbmNpcGFsKHRoaXMuZGVwbG95Um9sZUFybildLFxuICAgICAgfSkpO1xuICAgIH1cblxuICAgIC8vIE9iamVjdHMgc2hvdWxkIG5ldmVyIGJlIG92ZXJ3cml0dGVuLCBidXQgbGV0J3MgbWFrZSBzdXJlIHdlIGhhdmUgYSBsaWZlY3ljbGUgcG9saWN5XG4gICAgLy8gZm9yIGl0IGFueXdheS5cbiAgICBidWNrZXQuYWRkTGlmZWN5Y2xlUnVsZSh7XG4gICAgICBub25jdXJyZW50VmVyc2lvbkV4cGlyYXRpb246IER1cmF0aW9uLmRheXMoMzY1KSxcbiAgICB9KTtcblxuICAgIGJ1Y2tldC5hZGRMaWZlY3ljbGVSdWxlKHtcbiAgICAgIHByZWZpeDogREVQTE9ZX1RJTUVfUFJFRklYLFxuICAgICAgZXhwaXJhdGlvbjogdGhpcy5wcm9wcy5kZXBsb3lUaW1lRmlsZUFzc2V0TGlmZXRpbWUgPz8gRHVyYXRpb24uZGF5cygzMCksXG4gICAgfSk7XG5cbiAgICByZXR1cm4gc3RhZ2luZ0J1Y2tldE5hbWU7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgd2VsbC1rbm93biBuYW1lIG9mIHRoZSByZXBvXG4gICAqL1xuICBwcml2YXRlIGdldENyZWF0ZVJlcG8oYXNzZXQ6IERvY2tlckltYWdlQXNzZXRTb3VyY2UpOiBzdHJpbmcge1xuICAgIGlmICghYXNzZXQuYXNzZXROYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Fzc2V0cyBzeW50aGVzaXplZCB3aXRoIEFwcFNjb3BlZFN0YWdpbmdTeW50aGVzaXplciBtdXN0IGluY2x1ZGUgYW4gXFwnYXNzZXROYW1lXFwnIGluIHRoZSBhc3NldCBzb3VyY2UgZGVmaW5pdGlvbi4nKTtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgaW1hZ2UgcHVibGlzaGluZyByb2xlIGlmIGl0IGRvZXNuJ3QgZXhpc3RcbiAgICB0aGlzLmVuc3VyZUltYWdlUm9sZSgpO1xuXG4gICAgY29uc3QgcmVwb05hbWUgPSBnZW5lcmF0ZVJlcG9OYW1lKGAke3RoaXMuYXBwSWR9LyR7YXNzZXQuYXNzZXROYW1lfWApO1xuICAgIGlmICh0aGlzLnN0YWdpbmdSZXBvc1thc3NldC5hc3NldE5hbWVdID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuc3RhZ2luZ1JlcG9zW2Fzc2V0LmFzc2V0TmFtZV0gPSBuZXcgZWNyLlJlcG9zaXRvcnkodGhpcywgcmVwb05hbWUsIHtcbiAgICAgICAgcmVwb3NpdG9yeU5hbWU6IHJlcG9OYW1lLFxuICAgICAgICBpbWFnZVRhZ011dGFiaWxpdHk6IGVjci5UYWdNdXRhYmlsaXR5LklNTVVUQUJMRSxcbiAgICAgICAgbGlmZWN5Y2xlUnVsZXM6IFt7XG4gICAgICAgICAgZGVzY3JpcHRpb246ICdHYXJiYWdlIGNvbGxlY3Qgb2xkIGltYWdlIHZlcnNpb25zJyxcbiAgICAgICAgICBtYXhJbWFnZUNvdW50OiB0aGlzLnByb3BzLmltYWdlQXNzZXRWZXJzaW9uQ291bnQgPz8gMyxcbiAgICAgICAgfV0sXG4gICAgICAgIC4uLih0aGlzLmF1dG9EZWxldGVTdGFnaW5nQXNzZXRzID8ge1xuICAgICAgICAgIHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICAgICAgICBlbXB0eU9uRGVsZXRlOiB0cnVlLFxuICAgICAgICB9IDoge1xuICAgICAgICAgIHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3kuUkVUQUlOLFxuICAgICAgICB9KSxcbiAgICAgIH0pO1xuXG4gICAgICBpZiAodGhpcy5pbWFnZVJvbGUpIHtcbiAgICAgICAgdGhpcy5zdGFnaW5nUmVwb3NbYXNzZXQuYXNzZXROYW1lXS5ncmFudFB1bGxQdXNoKHRoaXMuaW1hZ2VSb2xlKTtcbiAgICAgICAgdGhpcy5zdGFnaW5nUmVwb3NbYXNzZXQuYXNzZXROYW1lXS5ncmFudFJlYWQodGhpcy5pbWFnZVJvbGUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVwb05hbWU7XG5cbiAgICBmdW5jdGlvbiBnZW5lcmF0ZVJlcG9OYW1lKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICByZXR1cm4gbmFtZS50b0xvY2FsZUxvd2VyQ2FzZSgpLnJlcGxhY2UoJy4nLCAnLScpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhZGRGaWxlKGFzc2V0OiBGaWxlQXNzZXRTb3VyY2UpOiBGaWxlU3RhZ2luZ0xvY2F0aW9uIHtcbiAgICAvLyBIYXMgc2lkZSBlZmZlY3RzIHNvIG11c3QgZ28gZmlyc3RcbiAgICBjb25zdCBidWNrZXROYW1lID0gdGhpcy5nZXRDcmVhdGVCdWNrZXQoKTtcblxuICAgIHJldHVybiB7XG4gICAgICBidWNrZXROYW1lLFxuICAgICAgYXNzdW1lUm9sZUFybjogdGhpcy5maWxlUm9sZU1hbmlmZXN0QXJuLFxuICAgICAgcHJlZml4OiBhc3NldC5kZXBsb3lUaW1lID8gREVQTE9ZX1RJTUVfUFJFRklYIDogdW5kZWZpbmVkLFxuICAgICAgZGVwZW5kZW5jeVN0YWNrOiB0aGlzLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgYWRkRG9ja2VySW1hZ2UoYXNzZXQ6IERvY2tlckltYWdlQXNzZXRTb3VyY2UpOiBJbWFnZVN0YWdpbmdMb2NhdGlvbiB7XG4gICAgLy8gSGFzIHNpZGUgZWZmZWN0cyBzbyBtdXN0IGdvIGZpcnN0XG4gICAgY29uc3QgcmVwb05hbWUgPSB0aGlzLmdldENyZWF0ZVJlcG8oYXNzZXQpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHJlcG9OYW1lLFxuICAgICAgYXNzdW1lUm9sZUFybjogdGhpcy5pbWFnZVJvbGVNYW5pZmVzdEFybixcbiAgICAgIGRlcGVuZGVuY3lTdGFjazogdGhpcyxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFN5bnRoZXNpemVzIHRoZSBjbG91ZGZvcm1hdGlvbiB0ZW1wbGF0ZSBpbnRvIGEgY2xvdWQgYXNzZW1ibHkuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIF9zeW50aGVzaXplVGVtcGxhdGUoc2Vzc2lvbjogSVN5bnRoZXNpc1Nlc3Npb24sIGxvb2t1cFJvbGVBcm4/OiBzdHJpbmcgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICBzdXBlci5fc3ludGhlc2l6ZVRlbXBsYXRlKHNlc3Npb24sIGxvb2t1cFJvbGVBcm4pO1xuXG4gICAgY29uc3QgYnVpbGRlciA9IHNlc3Npb24uYXNzZW1ibHk7XG4gICAgY29uc3Qgb3V0UGF0aCA9IHBhdGguam9pbihidWlsZGVyLm91dGRpciwgdGhpcy50ZW1wbGF0ZUZpbGUpO1xuICAgIGNvbnN0IHNpemUgPSBmcy5zdGF0U3luYyhvdXRQYXRoKS5zaXplO1xuICAgIGlmIChzaXplID4gNTEyMDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgU3RhZ2luZyByZXNvdXJjZSB0ZW1wbGF0ZSBjYW5ub3QgYmUgZ3JlYXRlciB0aGFuIDUxMjAwIGJ5dGVzLCBidXQgZ290ICR7c2l6ZX0gYnl0ZXNgKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
361
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1zdGFnaW5nLXN0YWNrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGVmYXVsdC1zdGFnaW5nLXN0YWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEseUJBQXlCO0FBQ3pCLDZCQUE2QjtBQUM3QiwyQ0FBMkM7QUFDM0MsMkNBQTJDO0FBQzNDLDJDQUEyQztBQUMzQyx5Q0FBeUM7QUFDekMsMkNBWTBCO0FBQzFCLDRFQUEwRTtBQUMxRSw0Q0FBNEM7QUFDNUMsMkNBQXVDO0FBSTFCLFFBQUEsa0JBQWtCLEdBQUcsY0FBYyxDQUFDO0FBRWpEOzs7Ozs7O0dBT0c7QUFDSCxNQUFhLDBCQUEyQixTQUFRLHNCQUFTOztJQUN2RCxZQUFZLEtBQWdCLEVBQUUsRUFBVTtRQUN0QyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0tBQ2xCOztBQUhILGdFQUlDO0FBMkhEOzs7Ozs7R0FNRztBQUNILE1BQWEsbUJBQW9CLFNBQVEsWUFBSztJQXlGUzs7SUF4RnJEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFtQzs7Ozs7Ozs7OztRQUN2RCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLGlCQUFpQixFQUFFLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3pGLE9BQU87WUFDTCxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsT0FBTztnQkFDbkMsTUFBTSxHQUFHLEdBQUcsVUFBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDMUIsSUFBSSxDQUFDLFVBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxTQUFTLEtBQUssQ0FBQyxTQUFTLHlCQUF5QixDQUFDLENBQUM7Z0JBQ3JFLENBQUM7Z0JBRUQsNEVBQTRF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QUN2QyxJQUFJLElBQUksR0FBRyxLQUFLLEVBQUUsQ0FBQztZQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLHlFQUF5RSxJQUFJLFFBQVEsQ0FBQyxDQUFDO1FBQ3pHLENBQUM7S0FDRjs7QUExVkgsa0RBMlZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGVjciBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWNyJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCAqIGFzIGttcyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mta21zJztcbmltcG9ydCAqIGFzIHMzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQge1xuICBBcHAsXG4gIEFybkZvcm1hdCxcbiAgQm9vdHN0cmFwbGVzc1N5bnRoZXNpemVyLFxuICBEb2NrZXJJbWFnZUFzc2V0U291cmNlLFxuICBEdXJhdGlvbixcbiAgRmlsZUFzc2V0U291cmNlLFxuICBJU3ludGhlc2lzU2Vzc2lvbixcbiAgUmVtb3ZhbFBvbGljeSxcbiAgU3RhY2ssXG4gIFN0YWNrUHJvcHMsXG4gIElOTElORV9DVVNUT01fUkVTT1VSQ0VfQ09OVEVYVCxcbn0gZnJvbSAnYXdzLWNkay1saWIvY29yZSc7XG5pbXBvcnQgeyBTdHJpbmdTcGVjaWFsaXplciB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL2hlbHBlcnMtaW50ZXJuYWwnO1xuaW1wb3J0ICogYXMgY3hhcGkgZnJvbSAnYXdzLWNkay1saWIvY3gtYXBpJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgQm9vdHN0cmFwUm9sZSB9IGZyb20gJy4vYm9vdHN0cmFwLXJvbGVzJztcbmltcG9ydCB7IEZpbGVTdGFnaW5nTG9jYXRpb24sIElTdGFnaW5nUmVzb3VyY2VzLCBJU3RhZ2luZ1Jlc291cmNlc0ZhY3RvcnksIEltYWdlU3RhZ2luZ0xvY2F0aW9uIH0gZnJvbSAnLi9zdGFnaW5nLXN0YWNrJztcblxuZXhwb3J0IGNvbnN0IERFUExPWV9USU1FX1BSRUZJWCA9ICdkZXBsb3ktdGltZS8nO1xuXG4vKipcbiAqIFRoaXMgaXMgYSBkdW1teSBjb25zdHJ1Y3QgbWVhbnQgdG8gc2lnbmlmeSB0aGF0IGEgc3RhY2sgaXMgdXRpbGl6aW5nXG4gKiB0aGUgQXBwU3RhZ2luZ1N5bnRoZXNpemVyLiBJdCBkb2VzIG5vdCBkbyBhbnl0aGluZywgYW5kIGlzIG5vdCBtZWFudFxuICogdG8gYmUgY3JlYXRlZCBvbiBpdHMgb3duLiBUaGlzIGNvbnN0cnVjdCB3aWxsIGJlIGEgcGFydCBvZiB0aGVcbiAqIGNvbnN0cnVjdCB0cmVlIG9ubHkgYW5kIG5vdCB0aGUgQ2ZuIHRlbXBsYXRlLiBUaGUgY29uc3RydWN0IHRyZWUgaXNcbiAqIHRoZW4gZW5jb2RlZCBpbiB0aGUgQVdTOjpDREs6Ok1ldGFkYXRhIHJlc291cmNlIG9mIHRoZSBzdGFjayBhbmRcbiAqIGluamVzdGVkIGluIG91ciBtZXRyaWNzIGxpa2UgZXZlcnkgb3RoZXIgY29uc3RydWN0LlxuICovXG5leHBvcnQgY2xhc3MgVXNpbmdBcHBTdGFnaW5nU3ludGhlc2l6ZXIgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgfVxufVxuXG4vKipcbiAqIFVzZXIgY29uZmlndXJhYmxlIG9wdGlvbnMgdG8gdGhlIERlZmF1bHRTdGFnaW5nU3RhY2suXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVmYXVsdFN0YWdpbmdTdGFja09wdGlvbnMge1xuICAvKipcbiAgICogQSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIGFwcGxpY2F0aW9uIHRoYXQgdGhlIHN0YWdpbmcgc3RhY2sgYmVsb25ncyB0by5cbiAgICpcbiAgICogVGhpcyBpZGVudGlmaWVyIHdpbGwgYmUgdXNlZCBpbiB0aGUgbmFtZSBvZiBzdGFnaW5nIHJlc291cmNlc1xuICAgKiBjcmVhdGVkIGZvciB0aGlzIGFwcGxpY2F0aW9uLCBhbmQgc2hvdWxkIGJlIHVuaXF1ZSBhY3Jvc3MgQ0RLIGFwcHMuXG4gICAqXG4gICAqIFRoZSBpZGVudGlmaWVyIHNob3VsZCBpbmNsdWRlIGxvd2VyY2FzZSBjaGFyYWN0ZXJzIGFuZCBkYXNoZXMgKCctJykgb25seVxuICAgKiBhbmQgaGF2ZSBhIG1heGltdW0gb2YgMjAgY2hhcmFjdGVycy5cbiAgICovXG4gIHJlYWRvbmx5IGFwcElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEV4cGxpY2l0IG5hbWUgZm9yIHRoZSBzdGFnaW5nIGJ1Y2tldFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGEgd2VsbC1rbm93biBuYW1lIHVuaXF1ZSB0byB0aGlzIGFwcC9lbnYuXG4gICAqL1xuICByZWFkb25seSBzdGFnaW5nQnVja2V0TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogRW5jcnlwdGlvbiB0eXBlIGZvciBzdGFnaW5nIGJ1Y2tldFxuICAgKlxuICAgKiBJbiBmdXR1cmUgdmVyc2lvbnMgb2YgdGhpcyBwYWNrYWdlLCB0aGUgZGVmYXVsdCB3aWxsIGJlIEJ1Y2tldEVuY3J5cHRpb24uUzNfTUFOQUdFRC5cbiAgICpcbiAgICogSW4gcHJldmlvdXMgdmVyc2lvbnMgb2YgdGhpcyBwYWNrYWdlLCB0aGUgZGVmYXVsdCB3YXMgdG8gdXNlIEtNUyBlbmNyeXB0aW9uIGZvciB0aGUgc3RhZ2luZyBidWNrZXQuIEtNUyBrZXlzIGNvc3RcbiAgICogJDEvbW9udGgsIHdoaWNoIGNvdWxkIHJlc3VsdCBpbiB1bmV4cGVjdGVkIGNvc3RzIGZvciB1c2VycyB3aG8gYXJlIG5vdCBhd2FyZSBvZiB0aGlzLiBBcyB3ZSBzdGFiaWxpemUgdGhpcyBtb2R1bGVcbiAgICogd2UgaW50ZW5kIHRvIG1ha2UgdGhlIGRlZmF1bHQgUzMtbWFuYWdlZCBlbmNyeXB0aW9uLCB3aGljaCBpcyBmcmVlLiBIb3dldmVyLCB0aGUgbWlncmF0aW9uIHBhdGggZnJvbSBLTVMgdG8gUzNcbiAgICogbWFuYWdlZCBlbmNyeXB0aW9uIGZvciBleGlzdGluZyBidWNrZXRzIGlzIG5vdCBzdHJhaWdodGZvcndhcmQuIFRoZXJlZm9yZSwgZm9yIG5vdywgdGhpcyBwcm9wZXJ0eSBpcyByZXF1aXJlZC5cbiAgICpcbiAgICogSWYgeW91IGhhdmUgYW4gZXhpc3Rpbmcgc3RhZ2luZyBidWNrZXQgZW5jcnlwdGVkIHdpdGggYSBLTVMga2V5LCB5b3Ugd2lsbCBsaWtlbHkgd2FudCB0byBzZXQgdGhpcyBwcm9wZXJ0eSB0b1xuICAgKiBCdWNrZXRFbmNyeXB0aW9uLktNUy4gSWYgeW91IGFyZSBjcmVhdGluZyBhIG5ldyBzdGFnaW5nIGJ1Y2tldCwgeW91IGNhbiBzZXQgdGhpcyBwcm9wZXJ0eSB0b1xuICAgKiBCdWNrZXRFbmNyeXB0aW9uLlMzX01BTkFHRUQgdG8gYXZvaWQgdGhlIGNvc3Qgb2YgYSBLTVMga2V5LlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhZ2luZ0J1Y2tldEVuY3J5cHRpb246IHMzLkJ1Y2tldEVuY3J5cHRpb247XG5cbiAgLyoqXG4gICAqIFBhc3MgaW4gYW4gZXhpc3Rpbmcgcm9sZSB0byBiZSB1c2VkIGFzIHRoZSBmaWxlIHB1Ymxpc2hpbmcgcm9sZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBhIG5ldyByb2xlIHdpbGwgYmUgY3JlYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgZmlsZUFzc2V0UHVibGlzaGluZ1JvbGU/OiBCb290c3RyYXBSb2xlO1xuXG4gIC8qKlxuICAgKiBQYXNzIGluIGFuIGV4aXN0aW5nIHJvbGUgdG8gYmUgdXNlZCBhcyB0aGUgaW1hZ2UgcHVibGlzaGluZyByb2xlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGEgbmV3IHJvbGUgd2lsbCBiZSBjcmVhdGVkXG4gICAqL1xuICByZWFkb25seSBpbWFnZUFzc2V0UHVibGlzaGluZ1JvbGU/OiBCb290c3RyYXBSb2xlO1xuXG4gIC8qKlxuICAgKiBUaGUgbGlmZXRpbWUgZm9yIGRlcGxveSB0aW1lIGZpbGUgYXNzZXRzLlxuICAgKlxuICAgKiBBc3NldHMgdGhhdCBhcmUgb25seSBuZWNlc3NhcnkgYXQgZGVwbG95bWVudCB0aW1lIChmb3IgaW5zdGFuY2UsXG4gICAqIENsb3VkRm9ybWF0aW9uIHRlbXBsYXRlcyBhbmQgTGFtYmRhIHNvdXJjZSBjb2RlIGJ1bmRsZXMpIHdpbGwgYmVcbiAgICogYXV0b21hdGljYWxseSBkZWxldGVkIGFmdGVyIHRoaXMgbWFueSBkYXlzLiBBc3NldHMgdGhhdCBtYXkgYmVcbiAgICogcmVhZCBmcm9tIHRoZSBzdGFnaW5nIGJ1Y2tldCBkdXJpbmcgeW91ciBhcHBsaWNhdGlvbidzIHJ1biB0aW1lXG4gICAqIHdpbGwgbm90IGJlIGRlbGV0ZWQuXG4gICAqXG4gICAqIFNldCB0aGlzIHRvIHRoZSBsZW5ndGggb2YgdGltZSB5b3Ugd2lzaCB0byBiZSBhYmxlIHRvIHJvbGwgYmFjayB0b1xuICAgKiBwcmV2aW91cyB2ZXJzaW9ucyBvZiB5b3VyIGFwcGxpY2F0aW9uIHdpdGhvdXQgaGF2aW5nIHRvIGRvIGEgbmV3XG4gICAqIGBjZGsgc3ludGhgIGFuZCByZS11cGxvYWQgb2YgYXNzZXRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIER1cmF0aW9uLmRheXMoMzApXG4gICAqL1xuICByZWFkb25seSBkZXBsb3lUaW1lRmlsZUFzc2V0TGlmZXRpbWU/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gbnVtYmVyIG9mIGltYWdlIHZlcnNpb25zIHRvIHN0b3JlIGluIGEgcmVwb3NpdG9yeS5cbiAgICpcbiAgICogUHJldmlvdXMgdmVyc2lvbnMgb2YgYW4gaW1hZ2UgY2FuIGJlIHN0b3JlZCBmb3Igcm9sbGJhY2sgcHVycG9zZXMuXG4gICAqIE9uY2UgYSByZXBvc2l0b3J5IGhhcyBtb3JlIHRoYW4gMyBpbWFnZSB2ZXJzaW9ucyBzdG9yZWQsIHRoZSBvbGRlc3RcbiAgICogdmVyc2lvbiB3aWxsIGJlIGRpc2NhcmRlZC4gVGhpcyBhbGxvd3MgZm9yIHNlbnNpYmxlIGdhcmJhZ2UgY29sbGVjdGlvblxuICAgKiB3aGlsZSBtYWludGFpbmluZyBhIGZldyBwcmV2aW91cyB2ZXJzaW9ucyBmb3Igcm9sbGJhY2sgc2NlbmFyaW9zLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHVwIHRvIDMgdmVyc2lvbnMgc3RvcmVkXG4gICAqL1xuICByZWFkb25seSBpbWFnZUFzc2V0VmVyc2lvbkNvdW50PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBdXRvIGRlbGV0ZXMgb2JqZWN0cyBpbiB0aGUgc3RhZ2luZyBTMyBidWNrZXQgYW5kIGltYWdlcyBpbiB0aGVcbiAgICogc3RhZ2luZyBFQ1IgcmVwb3NpdG9yaWVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBhdXRvRGVsZXRlU3RhZ2luZ0Fzc2V0cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgYSBjdXN0b20gcHJlZml4IHRvIGJlIHVzZWQgYXMgdGhlIHN0YWdpbmcgc3RhY2sgbmFtZSBhbmRcbiAgICogY29uc3RydWN0IElELiBUaGUgcHJlZml4IHdpbGwgYmUgYXBwZW5kZWQgYmVmb3JlIHRoZSBhcHBJZCwgd2hpY2hcbiAgICogaXMgcmVxdWlyZWQgdG8gYmUgcGFydCBvZiB0aGUgc3RhY2sgbmFtZSBhbmQgY29uc3RydWN0IElEIHRvXG4gICAqIGVuc3VyZSB1bmlxdWVuZXNzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnU3RhZ2luZ1N0YWNrJ1xuICAgKi9cbiAgcmVhZG9ubHkgc3RhZ2luZ1N0YWNrTmFtZVByZWZpeD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBEZWZhdWx0IFN0YWdpbmcgU3RhY2sgUHJvcGVydGllc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIERlZmF1bHRTdGFnaW5nU3RhY2tQcm9wcyBleHRlbmRzIERlZmF1bHRTdGFnaW5nU3RhY2tPcHRpb25zLCBTdGFja1Byb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGRlcGxveSBhY3Rpb24gcm9sZSwgaWYgZ2l2ZW5cbiAgICpcbiAgICogVGhpcyByb2xlIHdpbGwgbmVlZCBwZXJtaXNzaW9ucyB0byByZWFkIGZyb20gdG8gdGhlIHN0YWdpbmcgcmVzb3VyY2VzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFRoZSBDTEkgY3JlZGVudGlhbHMgYXJlIGFzc3VtZWQsIG5vIGFkZGl0aW9uYWwgcGVybWlzc2lvbnMgYXJlIGdyYW50ZWQuXG4gICAqL1xuICByZWFkb25seSBkZXBsb3lSb2xlQXJuPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcXVhbGlmaWVyIHVzZWQgdG8gc3BlY2lhbGl6ZSBzdHJpbmdzXG4gICAqXG4gICAqIENhbiBiZSB1c2VkIHRvIHNwZWNpZnkgY3VzdG9tIGJvb3RzdHJhcHBlZCByb2xlIG5hbWVzXG4gICAqL1xuICByZWFkb25seSBxdWFsaWZpZXI6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIGRlZmF1bHQgU3RhZ2luZyBTdGFjayB0aGF0IGltcGxlbWVudHMgSVN0YWdpbmdSZXNvdXJjZXMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGltcG9ydCB7IEJ1Y2tldEVuY3J5cHRpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMnO1xuICogY29uc3QgZGVmYXVsdFN0YWdpbmdTdGFjayA9IERlZmF1bHRTdGFnaW5nU3RhY2suZmFjdG9yeSh7IGFwcElkOiAnbXktYXBwLWlkJywgc3RhZ2luZ0J1Y2tldEVuY3J5cHRpb246IEJ1Y2tldEVuY3J5cHRpb24uUzNfTUFOQUdFRCB9KTtcbiAqL1xuZXhwb3J0IGNsYXNzIERlZmF1bHRTdGFnaW5nU3RhY2sgZXh0ZW5kcyBTdGFjayBpbXBsZW1lbnRzIElTdGFnaW5nUmVzb3VyY2VzIHtcbiAgLyoqXG4gICAqIFJldHVybiBhIGZhY3RvcnkgdGhhdCB3aWxsIGNyZWF0ZSBEZWZhdWx0U3RhZ2luZ1N0YWNrc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmYWN0b3J5KG9wdGlvbnM6IERlZmF1bHRTdGFnaW5nU3RhY2tPcHRpb25zKTogSVN0YWdpbmdSZXNvdXJjZXNGYWN0b3J5IHtcbiAgICBjb25zdCBhcHBJZCA9IG9wdGlvbnMuYXBwSWQudG9Mb2NhbGVMb3dlckNhc2UoKS5yZXBsYWNlKC9bXmEtejAtOS1dL2csICctJykuc2xpY2UoMCwgMjApO1xuICAgIHJldHVybiB7XG4gICAgICBvYnRhaW5TdGFnaW5nUmVzb3VyY2VzKHN0YWNrLCBjb250ZXh0KSB7XG4gICAgICAgIGNvbnN0IGFwcCA9IEFwcC5vZihzdGFjayk7XG4gICAgICAgIGlmICghQXBwLmlzQXBwKGFwcCkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFN0YWNrICR7c3RhY2suc3RhY2tOYW1lfSBtdXN0IGJlIHBhcnQgb2YgYW4gQXBwYCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBCZWNhdXNlIHdlIGRvIG5vdCBrZWVwIG1ldHJpY3MgaW4gdGhlIERlZmF1bHRTdGFnaW5nU3RhY2ssIHdlIHdpbGwgaW5qZWN0XG4gICAgICAgIC8vIGEgZHVtbXkgY29uc3RydWN0IGludG8gdGhlIHN0YWNrIHVzaW5nIHRoZSBEZWZhdWx0U3RhZ2luZ1N0YWNrIGluc3RlYWQuXG4gICAgICAgIGlmIChjeGFwaS5BTkFMWVRJQ1NfUkVQT1JUSU5HX0VOQUJMRURfQ09OVEVYVCkge1xuICAgICAgICAgIG5ldyBVc2luZ0FwcFN0YWdpbmdTeW50aGVzaXplcihzdGFjaywgYFVzaW5nQXBwU3RhZ2luZ1N5bnRoZXNpemVyLyR7c3RhY2suc3RhY2tOYW1lfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc3RhY2tQcmVmaXggPSBvcHRpb25zLnN0YWdpbmdTdGFja05hbWVQcmVmaXggPz8gJ1N0YWdpbmdTdGFjayc7XG4gICAgICAgIC8vIFN0YWNrIG5hbWUgZG9lcyBub3QgbmVlZCB0byBjb250YWluIGVudmlyb25tZW50IGJlY2F1c2UgYXBwSWQgaXMgdW5pcXVlIGluc2lkZSBhbiBlbnZcbiAgICAgICAgY29uc3Qgc3RhY2tOYW1lID0gYCR7c3RhY2tQcmVmaXh9LSR7YXBwSWR9YDtcbiAgICAgICAgY29uc3Qgc3RhY2tJZCA9IGAke3N0YWNrTmFtZX0tJHtjb250ZXh0LmVudmlyb25tZW50U3RyaW5nfWA7XG4gICAgICAgIHJldHVybiBuZXcgRGVmYXVsdFN0YWdpbmdTdGFjayhhcHAsIHN0YWNrSWQsIHtcbiAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAgIHN0YWNrTmFtZSxcbiAgICAgICAgICBlbnY6IHtcbiAgICAgICAgICAgIGFjY291bnQ6IHN0YWNrLmFjY291bnQsXG4gICAgICAgICAgICByZWdpb246IHN0YWNrLnJlZ2lvbixcbiAgICAgICAgICB9LFxuICAgICAgICAgIGFwcElkLFxuICAgICAgICAgIHF1YWxpZmllcjogY29udGV4dC5xdWFsaWZpZXIsXG4gICAgICAgICAgZGVwbG95Um9sZUFybjogY29udGV4dC5kZXBsb3lSb2xlQXJuLFxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZhdWx0IGFzc2V0IHB1Ymxpc2hpbmcgcm9sZSBuYW1lIGZvciBmaWxlIChTMykgYXNzZXRzLlxuICAgKi9cbiAgcHJpdmF0ZSBnZXQgZmlsZVJvbGVOYW1lKCkge1xuICAgIHJldHVybiBgY2RrLSR7dGhpcy5hcHBJZH0tZmlsZS1yb2xlLSR7dGhpcy5yZWdpb259YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZhdWx0IGFzc2V0IHB1Ymxpc2hpbmcgcm9sZSBuYW1lIGZvciBkb2NrZXIgKEVDUikgYXNzZXRzLlxuICAgKi9cbiAgcHJpdmF0ZSBnZXQgaW1hZ2VSb2xlTmFtZSgpIHtcbiAgICByZXR1cm4gYGNkay0ke3RoaXMuYXBwSWR9LWltYWdlLXJvbGUtJHt0aGlzLnJlZ2lvbn1gO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBhcHAtc2NvcGVkLCBldmlyb25tZW50LWtleWVkIHN0YWdpbmcgYnVja2V0LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHN0YWdpbmdCdWNrZXQ/OiBzMy5CdWNrZXQ7XG5cbiAgLyoqXG4gICAqIFRoZSBhcHAtc2NvcGVkLCBlbnZpcm9ubWVudC1rZXllZCBlY3IgcmVwb3NpdG9yaWVzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGFwcC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzdGFnaW5nUmVwb3M6IFJlY29yZDxzdHJpbmcsIGVjci5SZXBvc2l0b3J5PjtcblxuICAvKipcbiAgICogVGhlIHN0YWNrIHRvIGFkZCBkZXBlbmRlbmNpZXMgdG8uXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZGVwZW5kZW5jeVN0YWNrOiBTdGFjaztcblxuICBwcml2YXRlIHJlYWRvbmx5IGFwcElkOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgc3RhZ2luZ0J1Y2tldE5hbWU/OiBzdHJpbmc7XG4gIHByaXZhdGUgc3RhZ2luZ0J1Y2tldEVuY3J5cHRpb246IHMzLkJ1Y2tldEVuY3J5cHRpb247XG5cbiAgLyoqXG4gICAqIEZpbGUgcHVibGlzaCByb2xlIEFSTiBpbiBhc3NldCBtYW5pZmVzdCBmb3JtYXRcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgcHJvdmlkZWRGaWxlUm9sZT86IEJvb3RzdHJhcFJvbGU7XG4gIHByaXZhdGUgZmlsZVJvbGU/OiBpYW0uSVJvbGU7XG4gIHByaXZhdGUgZmlsZVJvbGVNYW5pZmVzdEFybj86IHN0cmluZztcblxuICAvKipcbiAgICogSW1hZ2UgcHVibGlzaGluZyByb2xlIEFSTiBpbiBhc3NldCBtYW5pZmVzdCBmb3JtYXRcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgcHJvdmlkZWRJbWFnZVJvbGU/OiBCb290c3RyYXBSb2xlO1xuICBwcml2YXRlIGltYWdlUm9sZT86IGlhbS5JUm9sZTtcbiAgcHJpdmF0ZSBkaWRJbWFnZVJvbGUgPSBmYWxzZTtcbiAgcHJpdmF0ZSBpbWFnZVJvbGVNYW5pZmVzdEFybj86IHN0cmluZztcbiAgcHJpdmF0ZSBhdXRvRGVsZXRlU3RhZ2luZ0Fzc2V0czogYm9vbGVhbjtcblxuICBwcml2YXRlIHJlYWRvbmx5IGRlcGxveVJvbGVBcm4/OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IEFwcCwgaWQ6IHN0cmluZywgcHJpdmF0ZSByZWFkb25seSBwcm9wczogRGVmYXVsdFN0YWdpbmdTdGFja1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICAuLi5wcm9wcyxcbiAgICAgIHN5bnRoZXNpemVyOiBuZXcgQm9vdHN0cmFwbGVzc1N5bnRoZXNpemVyKHtcbiAgICAgICAgcXVhbGlmaWVyOiBwcm9wcy5xdWFsaWZpZXIsXG4gICAgICB9KSxcbiAgICAgIGRlc2NyaXB0aW9uOiBgVGhpcyBzdGFjayBpbmNsdWRlcyByZXNvdXJjZXMgbmVlZGVkIHRvIGRlcGxveSB0aGUgQVdTIENESyBhcHAgJHtwcm9wcy5hcHBJZH0gaW50byB0aGlzIGVudmlyb25tZW50YCxcbiAgICAgIGFuYWx5dGljc1JlcG9ydGluZzogZmFsc2UsIC8vIHJlbW92aW5nIEFXUzo6Q0RLOjpNZXRhZGF0YSBjb25zdHJ1Y3Qgc2F2ZXMgfjNLQlxuICAgIH0pO1xuXG4gICAgLy8gcmVtb3ZpbmcgcGF0aCBtZXRhZGF0YSBzYXZlcyB+MktCXG4gICAgdGhpcy5ub2RlLnNldENvbnRleHQoY3hhcGkuUEFUSF9NRVRBREFUQV9FTkFCTEVfQ09OVEVYVCwgZmFsc2UpO1xuXG4gICAgLy8gRm9yIGFsbCByZXNvdXJjZXMgdW5kZXIgdGhlIGRlZmF1bHQgc3RhZ2luZyBzdGFjaywgd2Ugd2FudCB0byBpbmxpbmUgY3VzdG9tXG4gICAgLy8gcmVzb3VyY2VzIGJlY2F1c2UgdGhlIHN0YWdpbmcgYnVja2V0IG5lY2Vzc2FyeSBmb3IgY3VzdG9tIHJlc291cmNlIGFzc2V0c1xuICAgIC8vIGRvZXMgbm90IGV4aXN0IHlldC5cbiAgICB0aGlzLm5vZGUuc2V0Q29udGV4dChJTkxJTkVfQ1VTVE9NX1JFU09VUkNFX0NPTlRFWFQsIHRydWUpO1xuICAgIHRoaXMuYXV0b0RlbGV0ZVN0YWdpbmdBc3NldHMgPSBwcm9wcy5hdXRvRGVsZXRlU3RhZ2luZ0Fzc2V0cyA/PyB0cnVlO1xuXG4gICAgdGhpcy5hcHBJZCA9IHRoaXMudmFsaWRhdGVBcHBJZChwcm9wcy5hcHBJZCk7XG4gICAgdGhpcy5kZXBlbmRlbmN5U3RhY2sgPSB0aGlzO1xuXG4gICAgdGhpcy5kZXBsb3lSb2xlQXJuID0gcHJvcHMuZGVwbG95Um9sZUFybjtcbiAgICB0aGlzLnN0YWdpbmdCdWNrZXROYW1lID0gcHJvcHMuc3RhZ2luZ0J1Y2tldE5hbWU7XG5cbiAgICAvLyBGSVhNRTogd2hlbiBzdGFiaWxpemluZyB0aGlzIG1vZHVsZSwgd2Ugc2hvdWxkIG1ha2UgYHN0YWdpbmdCdWNrZXRFbmNyeXB0aW9uYCBvcHRpb25hbCwgZGVmYXVsdGluZyB0byBTM19NQU5BR0VELlxuICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvcHVsbC8yODk3OCNpc3N1ZWNvbW1lbnQtMTkzMDAwNzE3NiBmb3IgZGV0YWlscyBvbiB0aGlzIGRlY2lzaW9uLlxuICAgIHRoaXMuc3RhZ2luZ0J1Y2tldEVuY3J5cHRpb24gPSBwcm9wcy5zdGFnaW5nQnVja2V0RW5jcnlwdGlvbjtcblxuICAgIGNvbnN0IHNwZWNpYWxpemVyID0gbmV3IFN0cmluZ1NwZWNpYWxpemVyKHRoaXMsIHByb3BzLnF1YWxpZmllcik7XG4gICAgdGhpcy5wcm92aWRlZEZpbGVSb2xlID0gcHJvcHMuZmlsZUFzc2V0UHVibGlzaGluZ1JvbGU/Ll9zcGVjaWFsaXplKHNwZWNpYWxpemVyKTtcbiAgICB0aGlzLnByb3ZpZGVkSW1hZ2VSb2xlID0gcHJvcHMuaW1hZ2VBc3NldFB1Ymxpc2hpbmdSb2xlPy5fc3BlY2lhbGl6ZShzcGVjaWFsaXplcik7XG4gICAgdGhpcy5zdGFnaW5nUmVwb3MgPSB7fTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVBcHBJZChpZDogc3RyaW5nKSB7XG4gICAgY29uc3QgZXJyb3JzID0gW107XG4gICAgaWYgKGlkLmxlbmd0aCA+IDIwKSB7XG4gICAgICBlcnJvcnMucHVzaChgYXBwSWQgZXhwZWN0ZWQgbm8gbW9yZSB0aGFuIDIwIGNoYXJhY3RlcnMgYnV0IGdvdCAke2lkLmxlbmd0aH0gY2hhcmFjdGVycy5gKTtcbiAgICB9XG4gICAgaWYgKGlkICE9PSBpZC50b0xvY2FsZUxvd2VyQ2FzZSgpKSB7XG4gICAgICBlcnJvcnMucHVzaCgnYXBwSWQgb25seSBhY2NlcHRzIGxvd2VyY2FzZSBjaGFyYWN0ZXJzLicpO1xuICAgIH1cbiAgICBpZiAoIS9eW2EtejAtOS1dKiQvLnRlc3QoaWQpKSB7XG4gICAgICBlcnJvcnMucHVzaCgnYXBwSWQgZXhwZWN0cyBvbmx5IGxldHRlcnMsIG51bWJlcnMsIGFuZCBkYXNoZXMgKFxcJy1cXCcpJyk7XG4gICAgfVxuXG4gICAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoW1xuICAgICAgICBgYXBwSWQgJHtpZH0gaGFzIGVycm9yczpgLFxuICAgICAgICAuLi5lcnJvcnMsXG4gICAgICBdLmpvaW4oJ1xcbicpKTtcbiAgICB9XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgcHJpdmF0ZSBlbnN1cmVGaWxlUm9sZSgpIHtcbiAgICBpZiAodGhpcy5wcm92aWRlZEZpbGVSb2xlKSB7XG4gICAgICAvLyBPdmVycmlkZVxuICAgICAgdGhpcy5maWxlUm9sZU1hbmlmZXN0QXJuID0gdGhpcy5wcm92aWRlZEZpbGVSb2xlLl9hcm5Gb3JDbG91ZEFzc2VtYmx5KCk7XG4gICAgICBjb25zdCBjZm5Bcm4gPSB0aGlzLnByb3ZpZGVkRmlsZVJvbGUuX2FybkZvckNsb3VkRm9ybWF0aW9uKCk7XG4gICAgICB0aGlzLmZpbGVSb2xlID0gY2ZuQXJuID8gaWFtLlJvbGUuZnJvbVJvbGVBcm4odGhpcywgJ0Nka0ZpbGVSb2xlJywgY2ZuQXJuKSA6IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCByb2xlTmFtZSA9IHRoaXMuZmlsZVJvbGVOYW1lO1xuICAgIHRoaXMuZmlsZVJvbGUgPSBuZXcgaWFtLlJvbGUodGhpcywgJ0Nka0ZpbGVSb2xlJywge1xuICAgICAgcm9sZU5hbWUsXG4gICAgICBhc3N1bWVkQnk6IG5ldyBpYW0uQWNjb3VudFByaW5jaXBhbCh0aGlzLmFjY291bnQpLFxuICAgIH0pO1xuXG4gICAgdGhpcy5maWxlUm9sZU1hbmlmZXN0QXJuID0gU3RhY2sub2YodGhpcykuZm9ybWF0QXJuKHtcbiAgICAgIHBhcnRpdGlvbjogJyR7QVdTOjpQYXJ0aXRpb259JyxcbiAgICAgIHJlZ2lvbjogJycsIC8vIGlhbSBpcyBnbG9iYWxcbiAgICAgIHNlcnZpY2U6ICdpYW0nLFxuICAgICAgcmVzb3VyY2U6ICdyb2xlJyxcbiAgICAgIHJlc291cmNlTmFtZTogcm9sZU5hbWUsXG4gICAgICBhcm5Gb3JtYXQ6IEFybkZvcm1hdC5TTEFTSF9SRVNPVVJDRV9OQU1FLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBlbnN1cmVJbWFnZVJvbGUoKSB7XG4gICAgLy8gSXQgbWF5IGVuZCB1cCBzZXR0aW5nIGltYWdlUm9sZSB0byB1bmRlZmluZWQsIGJ1dCBhdCBsZWFzdCB3ZSB0cmllZFxuICAgIGlmICh0aGlzLmRpZEltYWdlUm9sZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmRpZEltYWdlUm9sZSA9IHRydWU7XG5cbiAgICBpZiAodGhpcy5wcm92aWRlZEltYWdlUm9sZSkge1xuICAgICAgLy8gT3ZlcnJpZGVcbiAgICAgIHRoaXMuaW1hZ2VSb2xlTWFuaWZlc3RBcm4gPSB0aGlzLnByb3ZpZGVkSW1hZ2VSb2xlLl9hcm5Gb3JDbG91ZEFzc2VtYmx5KCk7XG4gICAgICBjb25zdCBjZm5Bcm4gPSB0aGlzLnByb3ZpZGVkSW1hZ2VSb2xlLl9hcm5Gb3JDbG91ZEZvcm1hdGlvbigpO1xuICAgICAgdGhpcy5pbWFnZVJvbGUgPSBjZm5Bcm4gPyBpYW0uUm9sZS5mcm9tUm9sZUFybih0aGlzLCAnQ2RrSW1hZ2VSb2xlJywgY2ZuQXJuKSA6IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCByb2xlTmFtZSA9IHRoaXMuaW1hZ2VSb2xlTmFtZTtcbiAgICB0aGlzLmltYWdlUm9sZSA9IG5ldyBpYW0uUm9sZSh0aGlzLCAnQ2RrSW1hZ2VSb2xlJywge1xuICAgICAgcm9sZU5hbWUsXG4gICAgICBhc3N1bWVkQnk6IG5ldyBpYW0uQWNjb3VudFByaW5jaXBhbCh0aGlzLmFjY291bnQpLFxuICAgIH0pO1xuICAgIHRoaXMuaW1hZ2VSb2xlTWFuaWZlc3RBcm4gPSBTdGFjay5vZih0aGlzKS5mb3JtYXRBcm4oe1xuICAgICAgcGFydGl0aW9uOiAnJHtBV1M6OlBhcnRpdGlvbn0nLFxuICAgICAgcmVnaW9uOiAnJywgLy8gaWFtIGlzIGdsb2JhbFxuICAgICAgc2VydmljZTogJ2lhbScsXG4gICAgICByZXNvdXJjZTogJ3JvbGUnLFxuICAgICAgcmVzb3VyY2VOYW1lOiByb2xlTmFtZSxcbiAgICAgIGFybkZvcm1hdDogQXJuRm9ybWF0LlNMQVNIX1JFU09VUkNFX05BTUUsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUJ1Y2tldEtleSgpOiBrbXMuSUtleSB7XG4gICAgcmV0dXJuIG5ldyBrbXMuS2V5KHRoaXMsICdCdWNrZXRLZXknLCB7XG4gICAgICBhbGlhczogYGFsaWFzL2Nkay0ke3RoaXMuYXBwSWR9LXN0YWdpbmdgLFxuICAgICAgYWRtaW5zOiBbbmV3IGlhbS5BY2NvdW50UHJpbmNpcGFsKHRoaXMuYWNjb3VudCldLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDcmVhdGVCdWNrZXQoKSB7XG4gICAgY29uc3Qgc3RhZ2luZ0J1Y2tldE5hbWUgPSB0aGlzLnN0YWdpbmdCdWNrZXROYW1lID8/IGBjZGstJHt0aGlzLmFwcElkfS1zdGFnaW5nLSR7dGhpcy5hY2NvdW50fS0ke3RoaXMucmVnaW9ufWA7XG4gICAgY29uc3QgYnVja2V0SWQgPSAnQ2RrU3RhZ2luZ0J1Y2tldCc7XG4gICAgY29uc3QgY3JlYXRlZEJ1Y2tldCA9IHRoaXMubm9kZS50cnlGaW5kQ2hpbGQoYnVja2V0SWQpIGFzIHMzLkJ1Y2tldDtcbiAgICBpZiAoY3JlYXRlZEJ1Y2tldCkge1xuICAgICAgcmV0dXJuIHN0YWdpbmdCdWNrZXROYW1lO1xuICAgIH1cblxuICAgIHRoaXMuZW5zdXJlRmlsZVJvbGUoKTtcblxuICAgIGxldCBrZXkgPSB1bmRlZmluZWQ7XG4gICAgaWYgKHRoaXMuc3RhZ2luZ0J1Y2tldEVuY3J5cHRpb24gPT09IHMzLkJ1Y2tldEVuY3J5cHRpb24uS01TKSB7XG4gICAgICBrZXkgPSB0aGlzLmNyZWF0ZUJ1Y2tldEtleSgpO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSB0aGUgYnVja2V0IG9uY2UgdGhlIGRlcGVuZGVuY2llcyBoYXZlIGJlZW4gY3JlYXRlZFxuICAgIGNvbnN0IGJ1Y2tldCA9IG5ldyBzMy5CdWNrZXQodGhpcywgYnVja2V0SWQsIHtcbiAgICAgIGJ1Y2tldE5hbWU6IHN0YWdpbmdCdWNrZXROYW1lLFxuICAgICAgLi4uKHRoaXMuYXV0b0RlbGV0ZVN0YWdpbmdBc3NldHMgPyB7XG4gICAgICAgIHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICAgICAgYXV0b0RlbGV0ZU9iamVjdHM6IHRydWUsXG4gICAgICB9IDoge1xuICAgICAgICByZW1vdmFsUG9saWN5OiBSZW1vdmFsUG9saWN5LlJFVEFJTixcbiAgICAgIH0pLFxuICAgICAgZW5jcnlwdGlvbjogdGhpcy5zdGFnaW5nQnVja2V0RW5jcnlwdGlvbixcbiAgICAgIGVuY3J5cHRpb25LZXk6IGtleSxcblxuICAgICAgLy8gTWFueSBBV1MgYWNjb3VudCBzYWZldHkgY2hlY2tlcnMgd2lsbCBjb21wbGFpbiB3aGVuIGJ1Y2tldHMgYXJlbid0IHZlcnNpb25lZFxuICAgICAgdmVyc2lvbmVkOiB0cnVlLFxuICAgICAgLy8gTWFueSBBV1MgYWNjb3VudCBzYWZldHkgY2hlY2tlcnMgd2lsbCBjb21wbGFpbiB3aGVuIFNTTCBpc24ndCBlbmZvcmNlZFxuICAgICAgZW5mb3JjZVNTTDogdHJ1ZSxcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLmZpbGVSb2xlKSB7XG4gICAgICBidWNrZXQuZ3JhbnRSZWFkV3JpdGUodGhpcy5maWxlUm9sZSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZGVwbG95Um9sZUFybikge1xuICAgICAgYnVja2V0LmFkZFRvUmVzb3VyY2VQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgJ3MzOkdldE9iamVjdConLFxuICAgICAgICAgICdzMzpHZXRCdWNrZXQqJyxcbiAgICAgICAgICAnczM6TGlzdConLFxuICAgICAgICBdLFxuICAgICAgICByZXNvdXJjZXM6IFtidWNrZXQuYnVja2V0QXJuLCBidWNrZXQuYXJuRm9yT2JqZWN0cygnKicpXSxcbiAgICAgICAgcHJpbmNpcGFsczogW25ldyBpYW0uQXJuUHJpbmNpcGFsKHRoaXMuZGVwbG95Um9sZUFybildLFxuICAgICAgfSkpO1xuICAgIH1cblxuICAgIC8vIE9iamVjdHMgc2hvdWxkIG5ldmVyIGJlIG92ZXJ3cml0dGVuLCBidXQgbGV0J3MgbWFrZSBzdXJlIHdlIGhhdmUgYSBsaWZlY3ljbGUgcG9saWN5XG4gICAgLy8gZm9yIGl0IGFueXdheS5cbiAgICBidWNrZXQuYWRkTGlmZWN5Y2xlUnVsZSh7XG4gICAgICBub25jdXJyZW50VmVyc2lvbkV4cGlyYXRpb246IER1cmF0aW9uLmRheXMoMzY1KSxcbiAgICB9KTtcblxuICAgIGJ1Y2tldC5hZGRMaWZlY3ljbGVSdWxlKHtcbiAgICAgIHByZWZpeDogREVQTE9ZX1RJTUVfUFJFRklYLFxuICAgICAgZXhwaXJhdGlvbjogdGhpcy5wcm9wcy5kZXBsb3lUaW1lRmlsZUFzc2V0TGlmZXRpbWUgPz8gRHVyYXRpb24uZGF5cygzMCksXG4gICAgfSk7XG5cbiAgICByZXR1cm4gc3RhZ2luZ0J1Y2tldE5hbWU7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgd2VsbC1rbm93biBuYW1lIG9mIHRoZSByZXBvXG4gICAqL1xuICBwcml2YXRlIGdldENyZWF0ZVJlcG8oYXNzZXQ6IERvY2tlckltYWdlQXNzZXRTb3VyY2UpOiBzdHJpbmcge1xuICAgIGlmICghYXNzZXQuYXNzZXROYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Fzc2V0cyBzeW50aGVzaXplZCB3aXRoIEFwcFNjb3BlZFN0YWdpbmdTeW50aGVzaXplciBtdXN0IGluY2x1ZGUgYW4gXFwnYXNzZXROYW1lXFwnIGluIHRoZSBhc3NldCBzb3VyY2UgZGVmaW5pdGlvbi4nKTtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgaW1hZ2UgcHVibGlzaGluZyByb2xlIGlmIGl0IGRvZXNuJ3QgZXhpc3RcbiAgICB0aGlzLmVuc3VyZUltYWdlUm9sZSgpO1xuXG4gICAgY29uc3QgcmVwb05hbWUgPSBnZW5lcmF0ZVJlcG9OYW1lKGAke3RoaXMuYXBwSWR9LyR7YXNzZXQuYXNzZXROYW1lfWApO1xuICAgIGlmICh0aGlzLnN0YWdpbmdSZXBvc1thc3NldC5hc3NldE5hbWVdID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuc3RhZ2luZ1JlcG9zW2Fzc2V0LmFzc2V0TmFtZV0gPSBuZXcgZWNyLlJlcG9zaXRvcnkodGhpcywgcmVwb05hbWUsIHtcbiAgICAgICAgcmVwb3NpdG9yeU5hbWU6IHJlcG9OYW1lLFxuICAgICAgICBpbWFnZVRhZ011dGFiaWxpdHk6IGVjci5UYWdNdXRhYmlsaXR5LklNTVVUQUJMRSxcbiAgICAgICAgbGlmZWN5Y2xlUnVsZXM6IFt7XG4gICAgICAgICAgZGVzY3JpcHRpb246ICdHYXJiYWdlIGNvbGxlY3Qgb2xkIGltYWdlIHZlcnNpb25zJyxcbiAgICAgICAgICBtYXhJbWFnZUNvdW50OiB0aGlzLnByb3BzLmltYWdlQXNzZXRWZXJzaW9uQ291bnQgPz8gMyxcbiAgICAgICAgfV0sXG4gICAgICAgIC4uLih0aGlzLmF1dG9EZWxldGVTdGFnaW5nQXNzZXRzID8ge1xuICAgICAgICAgIHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICAgICAgICBlbXB0eU9uRGVsZXRlOiB0cnVlLFxuICAgICAgICB9IDoge1xuICAgICAgICAgIHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3kuUkVUQUlOLFxuICAgICAgICB9KSxcbiAgICAgIH0pO1xuXG4gICAgICBpZiAodGhpcy5pbWFnZVJvbGUpIHtcbiAgICAgICAgdGhpcy5zdGFnaW5nUmVwb3NbYXNzZXQuYXNzZXROYW1lXS5ncmFudFB1bGxQdXNoKHRoaXMuaW1hZ2VSb2xlKTtcbiAgICAgICAgdGhpcy5zdGFnaW5nUmVwb3NbYXNzZXQuYXNzZXROYW1lXS5ncmFudFJlYWQodGhpcy5pbWFnZVJvbGUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVwb05hbWU7XG5cbiAgICBmdW5jdGlvbiBnZW5lcmF0ZVJlcG9OYW1lKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICByZXR1cm4gbmFtZS50b0xvY2FsZUxvd2VyQ2FzZSgpLnJlcGxhY2UoJy4nLCAnLScpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhZGRGaWxlKGFzc2V0OiBGaWxlQXNzZXRTb3VyY2UpOiBGaWxlU3RhZ2luZ0xvY2F0aW9uIHtcbiAgICAvLyBIYXMgc2lkZSBlZmZlY3RzIHNvIG11c3QgZ28gZmlyc3RcbiAgICBjb25zdCBidWNrZXROYW1lID0gdGhpcy5nZXRDcmVhdGVCdWNrZXQoKTtcblxuICAgIHJldHVybiB7XG4gICAgICBidWNrZXROYW1lLFxuICAgICAgYXNzdW1lUm9sZUFybjogdGhpcy5maWxlUm9sZU1hbmlmZXN0QXJuLFxuICAgICAgcHJlZml4OiBhc3NldC5kZXBsb3lUaW1lID8gREVQTE9ZX1RJTUVfUFJFRklYIDogdW5kZWZpbmVkLFxuICAgICAgZGVwZW5kZW5jeVN0YWNrOiB0aGlzLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgYWRkRG9ja2VySW1hZ2UoYXNzZXQ6IERvY2tlckltYWdlQXNzZXRTb3VyY2UpOiBJbWFnZVN0YWdpbmdMb2NhdGlvbiB7XG4gICAgLy8gSGFzIHNpZGUgZWZmZWN0cyBzbyBtdXN0IGdvIGZpcnN0XG4gICAgY29uc3QgcmVwb05hbWUgPSB0aGlzLmdldENyZWF0ZVJlcG8oYXNzZXQpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHJlcG9OYW1lLFxuICAgICAgYXNzdW1lUm9sZUFybjogdGhpcy5pbWFnZVJvbGVNYW5pZmVzdEFybixcbiAgICAgIGRlcGVuZGVuY3lTdGFjazogdGhpcyxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFN5bnRoZXNpemVzIHRoZSBjbG91ZGZvcm1hdGlvbiB0ZW1wbGF0ZSBpbnRvIGEgY2xvdWQgYXNzZW1ibHkuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIF9zeW50aGVzaXplVGVtcGxhdGUoc2Vzc2lvbjogSVN5bnRoZXNpc1Nlc3Npb24sIGxvb2t1cFJvbGVBcm4/OiBzdHJpbmcgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICBzdXBlci5fc3ludGhlc2l6ZVRlbXBsYXRlKHNlc3Npb24sIGxvb2t1cFJvbGVBcm4pO1xuXG4gICAgY29uc3QgYnVpbGRlciA9IHNlc3Npb24uYXNzZW1ibHk7XG4gICAgY29uc3Qgb3V0UGF0aCA9IHBhdGguam9pbihidWlsZGVyLm91dGRpciwgdGhpcy50ZW1wbGF0ZUZpbGUpO1xuICAgIGNvbnN0IHNpemUgPSBmcy5zdGF0U3luYyhvdXRQYXRoKS5zaXplO1xuICAgIGlmIChzaXplID4gNTEyMDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgU3RhZ2luZyByZXNvdXJjZSB0ZW1wbGF0ZSBjYW5ub3QgYmUgZ3JlYXRlciB0aGFuIDUxMjAwIGJ5dGVzLCBidXQgZ290ICR7c2l6ZX0gYnl0ZXNgKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -13,6 +13,7 @@ const ENVIRONMENT_CACHE = new app_global_1.AppScopedGlobal(() => new Map());
13
13
  * Wraps another IStagingResources factory, and caches the result on a per-environment basis.
14
14
  */
15
15
  class PerEnvironmentStagingFactory {
16
+ wrapped;
16
17
  constructor(wrapped) {
17
18
  this.wrapped = wrapped;
18
19
  }
@@ -29,4 +30,4 @@ class PerEnvironmentStagingFactory {
29
30
  }
30
31
  }
31
32
  exports.PerEnvironmentStagingFactory = PerEnvironmentStagingFactory;
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyLWVudi1zdGFnaW5nLWZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwZXItZW52LXN0YWdpbmctZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxxREFBdUQ7QUFHdkQ7Ozs7O0dBS0c7QUFDSCxNQUFNLGlCQUFpQixHQUFHLElBQUksNEJBQWUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEdBQUcsRUFBNkIsQ0FBQyxDQUFDO0FBRTFGOztHQUVHO0FBQ0gsTUFBYSw0QkFBNEI7SUFDdkMsWUFBNkIsT0FBaUM7UUFBakMsWUFBTyxHQUFQLE9BQU8sQ0FBMEI7S0FBSztJQUU1RCxzQkFBc0IsQ0FBQyxLQUFZLEVBQUUsT0FBc0M7UUFDaEYsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixDQUFDO1FBRTNDLE1BQU0sS0FBSyxHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQyxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3JDLElBQUksUUFBUSxFQUFFLENBQUM7WUFDYixPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDbkUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDNUIsT0FBTyxNQUFNLENBQUM7S0FDZjtDQUNGO0FBaEJELG9FQWdCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YWNrIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZSc7XG5pbXBvcnQgeyBBcHBTY29wZWRHbG9iYWwgfSBmcm9tICcuL3ByaXZhdGUvYXBwLWdsb2JhbCc7XG5pbXBvcnQgeyBJU3RhZ2luZ1Jlc291cmNlcywgSVN0YWdpbmdSZXNvdXJjZXNGYWN0b3J5LCBPYnRhaW5TdGFnaW5nUmVzb3VyY2VzQ29udGV4dCB9IGZyb20gJy4vc3RhZ2luZy1zdGFjayc7XG5cbi8qKlxuICogUGVyLWVudmlyb25tZW50IGNhY2hlXG4gKlxuICogVGhpcyBpcyBhIGdsb2JhbCBiZWNhdXNlIHdlIG1pZ2h0IGhhdmUgbXVsdGlwbGUgaW5zdGFuY2VzIG9mIHRoaXMgY2xhc3NcbiAqIGluIHRoZSBhcHAsIGJ1dCB3ZSB3YW50IHRvIGNhY2hlIGFjcm9zcyBhbGwgb2YgdGhlbS5cbiAqL1xuY29uc3QgRU5WSVJPTk1FTlRfQ0FDSEUgPSBuZXcgQXBwU2NvcGVkR2xvYmFsKCgpID0+IG5ldyBNYXA8c3RyaW5nLCBJU3RhZ2luZ1Jlc291cmNlcz4oKSk7XG5cbi8qKlxuICogV3JhcHMgYW5vdGhlciBJU3RhZ2luZ1Jlc291cmNlcyBmYWN0b3J5LCBhbmQgY2FjaGVzIHRoZSByZXN1bHQgb24gYSBwZXItZW52aXJvbm1lbnQgYmFzaXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBQZXJFbnZpcm9ubWVudFN0YWdpbmdGYWN0b3J5IGltcGxlbWVudHMgSVN0YWdpbmdSZXNvdXJjZXNGYWN0b3J5IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSB3cmFwcGVkOiBJU3RhZ2luZ1Jlc291cmNlc0ZhY3RvcnkpIHsgfVxuXG4gIHB1YmxpYyBvYnRhaW5TdGFnaW5nUmVzb3VyY2VzKHN0YWNrOiBTdGFjaywgY29udGV4dDogT2J0YWluU3RhZ2luZ1Jlc291cmNlc0NvbnRleHQpOiBJU3RhZ2luZ1Jlc291cmNlcyB7XG4gICAgY29uc3QgY2FjaGVLZXkgPSBjb250ZXh0LmVudmlyb25tZW50U3RyaW5nO1xuXG4gICAgY29uc3QgY2FjaGUgPSBFTlZJUk9OTUVOVF9DQUNIRS5mb3Ioc3RhY2spO1xuICAgIGNvbnN0IGV4aXN0aW5nID0gY2FjaGUuZ2V0KGNhY2hlS2V5KTtcbiAgICBpZiAoZXhpc3RpbmcpIHtcbiAgICAgIHJldHVybiBleGlzdGluZztcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLndyYXBwZWQub2J0YWluU3RhZ2luZ1Jlc291cmNlcyhzdGFjaywgY29udGV4dCk7XG4gICAgY2FjaGUuc2V0KGNhY2hlS2V5LCByZXN1bHQpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cbiJdfQ==
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyLWVudi1zdGFnaW5nLWZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwZXItZW52LXN0YWdpbmctZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxxREFBdUQ7QUFHdkQ7Ozs7O0dBS0c7QUFDSCxNQUFNLGlCQUFpQixHQUFHLElBQUksNEJBQWUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEdBQUcsRUFBNkIsQ0FBQyxDQUFDO0FBRTFGOztHQUVHO0FBQ0gsTUFBYSw0QkFBNEI7SUFDVjtJQUE3QixZQUE2QixPQUFpQztRQUFqQyxZQUFPLEdBQVAsT0FBTyxDQUEwQjtLQUFLO0lBRTVELHNCQUFzQixDQUFDLEtBQVksRUFBRSxPQUFzQztRQUNoRixNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUM7UUFFM0MsTUFBTSxLQUFLLEdBQUcsaUJBQWlCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNDLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckMsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLE9BQU8sUUFBUSxDQUFDO1FBQ2xCLENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLHNCQUFzQixDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNuRSxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM1QixPQUFPLE1BQU0sQ0FBQztLQUNmO0NBQ0Y7QUFoQkQsb0VBZ0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RhY2sgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlJztcbmltcG9ydCB7IEFwcFNjb3BlZEdsb2JhbCB9IGZyb20gJy4vcHJpdmF0ZS9hcHAtZ2xvYmFsJztcbmltcG9ydCB7IElTdGFnaW5nUmVzb3VyY2VzLCBJU3RhZ2luZ1Jlc291cmNlc0ZhY3RvcnksIE9idGFpblN0YWdpbmdSZXNvdXJjZXNDb250ZXh0IH0gZnJvbSAnLi9zdGFnaW5nLXN0YWNrJztcblxuLyoqXG4gKiBQZXItZW52aXJvbm1lbnQgY2FjaGVcbiAqXG4gKiBUaGlzIGlzIGEgZ2xvYmFsIGJlY2F1c2Ugd2UgbWlnaHQgaGF2ZSBtdWx0aXBsZSBpbnN0YW5jZXMgb2YgdGhpcyBjbGFzc1xuICogaW4gdGhlIGFwcCwgYnV0IHdlIHdhbnQgdG8gY2FjaGUgYWNyb3NzIGFsbCBvZiB0aGVtLlxuICovXG5jb25zdCBFTlZJUk9OTUVOVF9DQUNIRSA9IG5ldyBBcHBTY29wZWRHbG9iYWwoKCkgPT4gbmV3IE1hcDxzdHJpbmcsIElTdGFnaW5nUmVzb3VyY2VzPigpKTtcblxuLyoqXG4gKiBXcmFwcyBhbm90aGVyIElTdGFnaW5nUmVzb3VyY2VzIGZhY3RvcnksIGFuZCBjYWNoZXMgdGhlIHJlc3VsdCBvbiBhIHBlci1lbnZpcm9ubWVudCBiYXNpcy5cbiAqL1xuZXhwb3J0IGNsYXNzIFBlckVudmlyb25tZW50U3RhZ2luZ0ZhY3RvcnkgaW1wbGVtZW50cyBJU3RhZ2luZ1Jlc291cmNlc0ZhY3Rvcnkge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHdyYXBwZWQ6IElTdGFnaW5nUmVzb3VyY2VzRmFjdG9yeSkgeyB9XG5cbiAgcHVibGljIG9idGFpblN0YWdpbmdSZXNvdXJjZXMoc3RhY2s6IFN0YWNrLCBjb250ZXh0OiBPYnRhaW5TdGFnaW5nUmVzb3VyY2VzQ29udGV4dCk6IElTdGFnaW5nUmVzb3VyY2VzIHtcbiAgICBjb25zdCBjYWNoZUtleSA9IGNvbnRleHQuZW52aXJvbm1lbnRTdHJpbmc7XG5cbiAgICBjb25zdCBjYWNoZSA9IEVOVklST05NRU5UX0NBQ0hFLmZvcihzdGFjayk7XG4gICAgY29uc3QgZXhpc3RpbmcgPSBjYWNoZS5nZXQoY2FjaGVLZXkpO1xuICAgIGlmIChleGlzdGluZykge1xuICAgICAgcmV0dXJuIGV4aXN0aW5nO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMud3JhcHBlZC5vYnRhaW5TdGFnaW5nUmVzb3VyY2VzKHN0YWNrLCBjb250ZXh0KTtcbiAgICBjYWNoZS5zZXQoY2FjaGVLZXksIHJlc3VsdCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIl19
@@ -12,9 +12,10 @@ const core_1 = require("aws-cdk-lib/core");
12
12
  * This class assumes that the global you're going to be storing is a mutable object.
13
13
  */
14
14
  class AppScopedGlobal {
15
+ factory;
16
+ map = new WeakMap();
15
17
  constructor(factory) {
16
18
  this.factory = factory;
17
- this.map = new WeakMap();
18
19
  }
19
20
  for(ctr) {
20
21
  const app = core_1.App.of(ctr);
@@ -31,4 +32,4 @@ class AppScopedGlobal {
31
32
  }
32
33
  }
33
34
  exports.AppScopedGlobal = AppScopedGlobal;
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWdsb2JhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFwcC1nbG9iYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkNBQXVDO0FBR3ZDOzs7Ozs7OztHQVFHO0FBQ0gsTUFBYSxlQUFlO0lBRzFCLFlBQTZCLE9BQWdCO1FBQWhCLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFGNUIsUUFBRyxHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7S0FHNUM7SUFFTSxHQUFHLENBQUMsR0FBZTtRQUN4QixNQUFNLEdBQUcsR0FBRyxVQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxVQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxhQUFhLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSx5QkFBeUIsQ0FBQyxDQUFDO1FBQ3ZFLENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuQyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2IsT0FBTyxRQUFRLENBQUM7UUFDbEIsQ0FBQztRQUNELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDNUIsT0FBTyxRQUFRLENBQUM7S0FDakI7Q0FDRjtBQXBCRCwwQ0FvQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcHAgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlJztcbmltcG9ydCB7IElDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuLyoqXG4gKiBIb2xkIGFuIEFwcC13aWRlIGdsb2JhbCB2YXJpYWJsZVxuICpcbiAqIFRoaXMgaXMgYSByZXBsYWNlbWVudCBmb3IgYSBgc3RhdGljYCB2YXJpYWJsZSwgYnV0IGRvZXMgdGhlIHJpZ2h0IHRoaW5nIGluIGNhc2UgcGVvcGxlXG4gKiBpbnN0YW50aWF0ZSBtdWx0aXBsZSBBcHBzIGluIHRoZSBzYW1lIHByb2Nlc3Mgc3BhY2UgKGZvciBleGFtcGxlLCBpbiB1bml0IHRlc3RzIG9yXG4gKiBwZW9wbGUgdXNpbmcgYGNsaS1saWJgIGluIGFkdmFuY2VkIGNvbmZpZ3VyYXRpb25zKS5cbiAqXG4gKiBUaGlzIGNsYXNzIGFzc3VtZXMgdGhhdCB0aGUgZ2xvYmFsIHlvdSdyZSBnb2luZyB0byBiZSBzdG9yaW5nIGlzIGEgbXV0YWJsZSBvYmplY3QuXG4gKi9cbmV4cG9ydCBjbGFzcyBBcHBTY29wZWRHbG9iYWw8QT4ge1xuICBwcml2YXRlIHJlYWRvbmx5IG1hcCA9IG5ldyBXZWFrTWFwPEFwcCwgQT4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGZhY3Rvcnk6ICgpID0+IEEpIHtcbiAgfVxuXG4gIHB1YmxpYyBmb3IoY3RyOiBJQ29uc3RydWN0KTogQSB7XG4gICAgY29uc3QgYXBwID0gQXBwLm9mKGN0cik7XG4gICAgaWYgKCFBcHAuaXNBcHAoYXBwKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb25zdHJ1Y3QgJHtjdHIubm9kZS5wYXRofSBtdXN0IGJlIHBhcnQgb2YgYW4gQXBwYCk7XG4gICAgfVxuXG4gICAgY29uc3QgZXhpc3RpbmcgPSB0aGlzLm1hcC5nZXQoYXBwKTtcbiAgICBpZiAoZXhpc3RpbmcpIHtcbiAgICAgIHJldHVybiBleGlzdGluZztcbiAgICB9XG4gICAgY29uc3QgaW5zdGFuY2UgPSB0aGlzLmZhY3RvcnkoKTtcbiAgICB0aGlzLm1hcC5zZXQoYXBwLCBpbnN0YW5jZSk7XG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9XG59XG4iXX0=
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWdsb2JhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFwcC1nbG9iYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkNBQXVDO0FBR3ZDOzs7Ozs7OztHQVFHO0FBQ0gsTUFBYSxlQUFlO0lBR0c7SUFGWixHQUFHLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztJQUU3QyxZQUE2QixPQUFnQjtRQUFoQixZQUFPLEdBQVAsT0FBTyxDQUFTO0tBQzVDO0lBRU0sR0FBRyxDQUFDLEdBQWU7UUFDeEIsTUFBTSxHQUFHLEdBQUcsVUFBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsVUFBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQUMsYUFBYSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUkseUJBQXlCLENBQUMsQ0FBQztRQUN2RSxDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkMsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLE9BQU8sUUFBUSxDQUFDO1FBQ2xCLENBQUM7UUFDRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzVCLE9BQU8sUUFBUSxDQUFDO0tBQ2pCO0NBQ0Y7QUFwQkQsMENBb0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBwIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZSc7XG5pbXBvcnQgeyBJQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cbi8qKlxuICogSG9sZCBhbiBBcHAtd2lkZSBnbG9iYWwgdmFyaWFibGVcbiAqXG4gKiBUaGlzIGlzIGEgcmVwbGFjZW1lbnQgZm9yIGEgYHN0YXRpY2AgdmFyaWFibGUsIGJ1dCBkb2VzIHRoZSByaWdodCB0aGluZyBpbiBjYXNlIHBlb3BsZVxuICogaW5zdGFudGlhdGUgbXVsdGlwbGUgQXBwcyBpbiB0aGUgc2FtZSBwcm9jZXNzIHNwYWNlIChmb3IgZXhhbXBsZSwgaW4gdW5pdCB0ZXN0cyBvclxuICogcGVvcGxlIHVzaW5nIGBjbGktbGliYCBpbiBhZHZhbmNlZCBjb25maWd1cmF0aW9ucykuXG4gKlxuICogVGhpcyBjbGFzcyBhc3N1bWVzIHRoYXQgdGhlIGdsb2JhbCB5b3UncmUgZ29pbmcgdG8gYmUgc3RvcmluZyBpcyBhIG11dGFibGUgb2JqZWN0LlxuICovXG5leHBvcnQgY2xhc3MgQXBwU2NvcGVkR2xvYmFsPEE+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBtYXAgPSBuZXcgV2Vha01hcDxBcHAsIEE+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBmYWN0b3J5OiAoKSA9PiBBKSB7XG4gIH1cblxuICBwdWJsaWMgZm9yKGN0cjogSUNvbnN0cnVjdCk6IEEge1xuICAgIGNvbnN0IGFwcCA9IEFwcC5vZihjdHIpO1xuICAgIGlmICghQXBwLmlzQXBwKGFwcCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ29uc3RydWN0ICR7Y3RyLm5vZGUucGF0aH0gbXVzdCBiZSBwYXJ0IG9mIGFuIEFwcGApO1xuICAgIH1cblxuICAgIGNvbnN0IGV4aXN0aW5nID0gdGhpcy5tYXAuZ2V0KGFwcCk7XG4gICAgaWYgKGV4aXN0aW5nKSB7XG4gICAgICByZXR1cm4gZXhpc3Rpbmc7XG4gICAgfVxuICAgIGNvbnN0IGluc3RhbmNlID0gdGhpcy5mYWN0b3J5KCk7XG4gICAgdGhpcy5tYXAuc2V0KGFwcCwgaW5zdGFuY2UpO1xuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfVxufVxuIl19
package/package.json CHANGED
@@ -1,13 +1,12 @@
1
1
  {
2
2
  "name": "@aws-cdk/app-staging-synthesizer-alpha",
3
3
  "private": false,
4
- "version": "2.219.0-alpha.0",
4
+ "version": "2.221.0-alpha.0",
5
5
  "description": "Cdk synthesizer for with app-scoped staging stack",
6
6
  "main": "lib/index.js",
7
7
  "types": "lib/index.d.ts",
8
8
  "jsii": {
9
9
  "outdir": "dist",
10
- "projectReferences": true,
11
10
  "metadata": {
12
11
  "jsii": {
13
12
  "rosetta": {
@@ -40,7 +39,9 @@
40
39
  "moduleName": "github.com/aws/aws-cdk-go",
41
40
  "packageName": "appstagingsynthesizeralpha"
42
41
  }
43
- }
42
+ },
43
+ "tsconfig": "tsconfig.json",
44
+ "validateTsconfig": "minimal"
44
45
  },
45
46
  "repository": {
46
47
  "type": "git",
@@ -88,15 +89,15 @@
88
89
  }
89
90
  },
90
91
  "devDependencies": {
91
- "aws-cdk-lib": "2.219.0",
92
+ "aws-cdk-lib": "2.221.0",
92
93
  "@aws-cdk/integ-runner": "^2.190.2",
93
- "@aws-cdk/integ-tests-alpha": "2.219.0-alpha.0",
94
+ "@aws-cdk/integ-tests-alpha": "2.221.0-alpha.0",
94
95
  "constructs": "^10.0.0",
95
- "@aws-cdk/cdk-build-tools": "2.219.0-alpha.0",
96
- "@aws-cdk/pkglint": "2.219.0-alpha.0"
96
+ "@aws-cdk/cdk-build-tools": "2.221.0-alpha.0",
97
+ "@aws-cdk/pkglint": "2.221.0-alpha.0"
97
98
  },
98
99
  "peerDependencies": {
99
- "aws-cdk-lib": "^2.219.0",
100
+ "aws-cdk-lib": "^2.221.0",
100
101
  "constructs": "^10.0.0"
101
102
  },
102
103
  "publishConfig": {