@aws-cdk/app-staging-synthesizer-alpha 2.84.0-alpha.0 → 2.85.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.84.0",
11
+ "aws-cdk-lib": "2.85.0",
12
12
  "constructs": "^10.0.0"
13
13
  },
14
14
  "dependencyClosure": {
@@ -547,6 +547,19 @@
547
547
  }
548
548
  }
549
549
  },
550
+ "aws-cdk-lib.aws_cleanrooms": {
551
+ "targets": {
552
+ "dotnet": {
553
+ "package": "Amazon.CDK.AWS.CleanRooms"
554
+ },
555
+ "java": {
556
+ "package": "services.cleanrooms"
557
+ },
558
+ "python": {
559
+ "module": "aws_cdk.aws_cleanrooms"
560
+ }
561
+ }
562
+ },
550
563
  "aws-cdk-lib.aws_cloud9": {
551
564
  "targets": {
552
565
  "dotnet": {
@@ -3466,7 +3479,7 @@
3466
3479
  "stability": "experimental"
3467
3480
  },
3468
3481
  "homepage": "https://github.com/aws/aws-cdk",
3469
- "jsiiVersion": "5.0.8 (build b97c75a)",
3482
+ "jsiiVersion": "5.0.11 (build 5e2d6be)",
3470
3483
  "keywords": [
3471
3484
  "aws",
3472
3485
  "cdk"
@@ -4164,7 +4177,7 @@
4164
4177
  },
4165
4178
  "locationInModule": {
4166
4179
  "filename": "lib/default-staging-stack.ts",
4167
- "line": 198
4180
+ "line": 230
4168
4181
  },
4169
4182
  "parameters": [
4170
4183
  {
@@ -4193,7 +4206,7 @@
4193
4206
  "kind": "class",
4194
4207
  "locationInModule": {
4195
4208
  "filename": "lib/default-staging-stack.ts",
4196
- "line": 118
4209
+ "line": 143
4197
4210
  },
4198
4211
  "methods": [
4199
4212
  {
@@ -4203,7 +4216,7 @@
4203
4216
  },
4204
4217
  "locationInModule": {
4205
4218
  "filename": "lib/default-staging-stack.ts",
4206
- "line": 122
4219
+ "line": 147
4207
4220
  },
4208
4221
  "name": "factory",
4209
4222
  "parameters": [
@@ -4228,7 +4241,7 @@
4228
4241
  },
4229
4242
  "locationInModule": {
4230
4243
  "filename": "lib/default-staging-stack.ts",
4231
- "line": 397
4244
+ "line": 450
4232
4245
  },
4233
4246
  "name": "addDockerImage",
4234
4247
  "overrides": "@aws-cdk/app-staging-synthesizer-alpha.IStagingResources",
@@ -4253,7 +4266,7 @@
4253
4266
  },
4254
4267
  "locationInModule": {
4255
4268
  "filename": "lib/default-staging-stack.ts",
4256
- "line": 385
4269
+ "line": 438
4257
4270
  },
4258
4271
  "name": "addFile",
4259
4272
  "overrides": "@aws-cdk/app-staging-synthesizer-alpha.IStagingResources",
@@ -4282,7 +4295,7 @@
4282
4295
  "immutable": true,
4283
4296
  "locationInModule": {
4284
4297
  "filename": "lib/default-staging-stack.ts",
4285
- "line": 176
4298
+ "line": 207
4286
4299
  },
4287
4300
  "name": "dependencyStack",
4288
4301
  "type": {
@@ -4297,7 +4310,7 @@
4297
4310
  "immutable": true,
4298
4311
  "locationInModule": {
4299
4312
  "filename": "lib/default-staging-stack.ts",
4300
- "line": 171
4313
+ "line": 202
4301
4314
  },
4302
4315
  "name": "stagingRepos",
4303
4316
  "type": {
@@ -4317,7 +4330,7 @@
4317
4330
  "immutable": true,
4318
4331
  "locationInModule": {
4319
4332
  "filename": "lib/default-staging-stack.ts",
4320
- "line": 166
4333
+ "line": 197
4321
4334
  },
4322
4335
  "name": "stagingBucket",
4323
4336
  "optional": true,
@@ -4343,7 +4356,7 @@
4343
4356
  "kind": "interface",
4344
4357
  "locationInModule": {
4345
4358
  "filename": "lib/default-staging-stack.ts",
4346
- "line": 28
4359
+ "line": 45
4347
4360
  },
4348
4361
  "name": "DefaultStagingStackOptions",
4349
4362
  "properties": [
@@ -4357,13 +4370,31 @@
4357
4370
  "immutable": true,
4358
4371
  "locationInModule": {
4359
4372
  "filename": "lib/default-staging-stack.ts",
4360
- "line": 38
4373
+ "line": 55
4361
4374
  },
4362
4375
  "name": "appId",
4363
4376
  "type": {
4364
4377
  "primitive": "string"
4365
4378
  }
4366
4379
  },
4380
+ {
4381
+ "abstract": true,
4382
+ "docs": {
4383
+ "default": "true",
4384
+ "stability": "experimental",
4385
+ "summary": "Auto deletes objects in the staging S3 bucket and images in the staging ECR repositories."
4386
+ },
4387
+ "immutable": true,
4388
+ "locationInModule": {
4389
+ "filename": "lib/default-staging-stack.ts",
4390
+ "line": 113
4391
+ },
4392
+ "name": "autoDeleteStagingAssets",
4393
+ "optional": true,
4394
+ "type": {
4395
+ "primitive": "boolean"
4396
+ }
4397
+ },
4367
4398
  {
4368
4399
  "abstract": true,
4369
4400
  "docs": {
@@ -4375,7 +4406,7 @@
4375
4406
  "immutable": true,
4376
4407
  "locationInModule": {
4377
4408
  "filename": "lib/default-staging-stack.ts",
4378
- "line": 76
4409
+ "line": 93
4379
4410
  },
4380
4411
  "name": "deployTimeFileAssetLifetime",
4381
4412
  "optional": true,
@@ -4393,7 +4424,7 @@
4393
4424
  "immutable": true,
4394
4425
  "locationInModule": {
4395
4426
  "filename": "lib/default-staging-stack.ts",
4396
- "line": 52
4427
+ "line": 69
4397
4428
  },
4398
4429
  "name": "fileAssetPublishingRole",
4399
4430
  "optional": true,
@@ -4411,7 +4442,7 @@
4411
4442
  "immutable": true,
4412
4443
  "locationInModule": {
4413
4444
  "filename": "lib/default-staging-stack.ts",
4414
- "line": 59
4445
+ "line": 76
4415
4446
  },
4416
4447
  "name": "imageAssetPublishingRole",
4417
4448
  "optional": true,
@@ -4430,7 +4461,7 @@
4430
4461
  "immutable": true,
4431
4462
  "locationInModule": {
4432
4463
  "filename": "lib/default-staging-stack.ts",
4433
- "line": 88
4464
+ "line": 105
4434
4465
  },
4435
4466
  "name": "imageAssetVersionCount",
4436
4467
  "optional": true,
@@ -4448,7 +4479,7 @@
4448
4479
  "immutable": true,
4449
4480
  "locationInModule": {
4450
4481
  "filename": "lib/default-staging-stack.ts",
4451
- "line": 45
4482
+ "line": 62
4452
4483
  },
4453
4484
  "name": "stagingBucketName",
4454
4485
  "optional": true,
@@ -4465,7 +4496,7 @@
4465
4496
  "docs": {
4466
4497
  "stability": "experimental",
4467
4498
  "summary": "Default Staging Stack Properties.",
4468
- "example": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport * as app_staging_synthesizer_alpha from '@aws-cdk/app-staging-synthesizer-alpha';\nimport * as cdk from 'aws-cdk-lib';\n\ndeclare const bootstrapRole: app_staging_synthesizer_alpha.BootstrapRole;\ndeclare const permissionsBoundary: cdk.PermissionsBoundary;\ndeclare const stackSynthesizer: cdk.StackSynthesizer;\nconst defaultStagingStackProps: app_staging_synthesizer_alpha.DefaultStagingStackProps = {\n appId: 'appId',\n qualifier: 'qualifier',\n\n // the properties below are optional\n analyticsReporting: false,\n crossRegionReferences: false,\n deployRoleArn: 'deployRoleArn',\n deployTimeFileAssetLifetime: cdk.Duration.minutes(30),\n description: 'description',\n env: {\n account: 'account',\n region: 'region',\n },\n fileAssetPublishingRole: bootstrapRole,\n imageAssetPublishingRole: bootstrapRole,\n imageAssetVersionCount: 123,\n permissionsBoundary: permissionsBoundary,\n stackName: 'stackName',\n stagingBucketName: 'stagingBucketName',\n synthesizer: stackSynthesizer,\n tags: {\n tagsKey: 'tags',\n },\n terminationProtection: false,\n};",
4499
+ "example": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport * as app_staging_synthesizer_alpha from '@aws-cdk/app-staging-synthesizer-alpha';\nimport * as cdk from 'aws-cdk-lib';\n\ndeclare const bootstrapRole: app_staging_synthesizer_alpha.BootstrapRole;\ndeclare const permissionsBoundary: cdk.PermissionsBoundary;\ndeclare const stackSynthesizer: cdk.StackSynthesizer;\nconst defaultStagingStackProps: app_staging_synthesizer_alpha.DefaultStagingStackProps = {\n appId: 'appId',\n qualifier: 'qualifier',\n\n // the properties below are optional\n analyticsReporting: false,\n autoDeleteStagingAssets: false,\n crossRegionReferences: false,\n deployRoleArn: 'deployRoleArn',\n deployTimeFileAssetLifetime: cdk.Duration.minutes(30),\n description: 'description',\n env: {\n account: 'account',\n region: 'region',\n },\n fileAssetPublishingRole: bootstrapRole,\n imageAssetPublishingRole: bootstrapRole,\n imageAssetVersionCount: 123,\n permissionsBoundary: permissionsBoundary,\n stackName: 'stackName',\n stagingBucketName: 'stagingBucketName',\n suppressTemplateIndentation: false,\n synthesizer: stackSynthesizer,\n tags: {\n tagsKey: 'tags',\n },\n terminationProtection: false,\n};",
4469
4500
  "custom": {
4470
4501
  "exampleMetadata": "fixture=_generated"
4471
4502
  }
@@ -4478,7 +4509,7 @@
4478
4509
  "kind": "interface",
4479
4510
  "locationInModule": {
4480
4511
  "filename": "lib/default-staging-stack.ts",
4481
- "line": 94
4512
+ "line": 119
4482
4513
  },
4483
4514
  "name": "DefaultStagingStackProps",
4484
4515
  "properties": [
@@ -4492,7 +4523,7 @@
4492
4523
  "immutable": true,
4493
4524
  "locationInModule": {
4494
4525
  "filename": "lib/default-staging-stack.ts",
4495
- "line": 109
4526
+ "line": 134
4496
4527
  },
4497
4528
  "name": "qualifier",
4498
4529
  "type": {
@@ -4510,7 +4541,7 @@
4510
4541
  "immutable": true,
4511
4542
  "locationInModule": {
4512
4543
  "filename": "lib/default-staging-stack.ts",
4513
- "line": 102
4544
+ "line": 127
4514
4545
  },
4515
4546
  "name": "deployRoleArn",
4516
4547
  "optional": true,
@@ -5022,8 +5053,52 @@
5022
5053
  }
5023
5054
  ],
5024
5055
  "symbolId": "lib/bootstrap-roles:StagingRoles"
5056
+ },
5057
+ "@aws-cdk/app-staging-synthesizer-alpha.UsingAppStagingSynthesizer": {
5058
+ "assembly": "@aws-cdk/app-staging-synthesizer-alpha",
5059
+ "base": "constructs.Construct",
5060
+ "docs": {
5061
+ "remarks": "It does not do anything, and is not meant\nto be created on its own. This construct will be a part of the\nconstruct tree only and not the Cfn template. The construct tree is\nthen encoded in the AWS::CDK::Metadata resource of the stack and\ninjested in our metrics like every other construct.",
5062
+ "stability": "experimental",
5063
+ "summary": "This is a dummy construct meant to signify that a stack is utilizing the AppStagingSynthesizer.",
5064
+ "example": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport * as app_staging_synthesizer_alpha from '@aws-cdk/app-staging-synthesizer-alpha';\nconst usingAppStagingSynthesizer = new app_staging_synthesizer_alpha.UsingAppStagingSynthesizer(this, 'MyUsingAppStagingSynthesizer');",
5065
+ "custom": {
5066
+ "exampleMetadata": "fixture=_generated"
5067
+ }
5068
+ },
5069
+ "fqn": "@aws-cdk/app-staging-synthesizer-alpha.UsingAppStagingSynthesizer",
5070
+ "initializer": {
5071
+ "docs": {
5072
+ "stability": "experimental"
5073
+ },
5074
+ "locationInModule": {
5075
+ "filename": "lib/default-staging-stack.ts",
5076
+ "line": 37
5077
+ },
5078
+ "parameters": [
5079
+ {
5080
+ "name": "scope",
5081
+ "type": {
5082
+ "fqn": "constructs.Construct"
5083
+ }
5084
+ },
5085
+ {
5086
+ "name": "id",
5087
+ "type": {
5088
+ "primitive": "string"
5089
+ }
5090
+ }
5091
+ ]
5092
+ },
5093
+ "kind": "class",
5094
+ "locationInModule": {
5095
+ "filename": "lib/default-staging-stack.ts",
5096
+ "line": 36
5097
+ },
5098
+ "name": "UsingAppStagingSynthesizer",
5099
+ "symbolId": "lib/default-staging-stack:UsingAppStagingSynthesizer"
5025
5100
  }
5026
5101
  },
5027
- "version": "2.84.0-alpha.0",
5102
+ "version": "2.85.0-alpha.0",
5028
5103
  "fingerprint": "**********"
5029
5104
  }
Binary file
package/.warnings.jsii.js CHANGED
@@ -1,3 +1,5 @@
1
+ function _aws_cdk_app_staging_synthesizer_alpha_UsingAppStagingSynthesizer(p) {
2
+ }
1
3
  function _aws_cdk_app_staging_synthesizer_alpha_DefaultStagingStackOptions(p) {
2
4
  if (p == null)
3
5
  return;
@@ -166,4 +168,4 @@ class DeprecationError extends Error {
166
168
  });
167
169
  }
168
170
  }
169
- module.exports = { print, getPropertyDescriptor, DeprecationError, _aws_cdk_app_staging_synthesizer_alpha_DefaultStagingStackOptions, _aws_cdk_app_staging_synthesizer_alpha_DefaultStagingStackProps, _aws_cdk_app_staging_synthesizer_alpha_DefaultStagingStack, _aws_cdk_app_staging_synthesizer_alpha_AppStagingSynthesizerOptions, _aws_cdk_app_staging_synthesizer_alpha_DefaultResourcesOptions, _aws_cdk_app_staging_synthesizer_alpha_CustomFactoryOptions, _aws_cdk_app_staging_synthesizer_alpha_CustomResourcesOptions, _aws_cdk_app_staging_synthesizer_alpha_AppStagingSynthesizer, _aws_cdk_app_staging_synthesizer_alpha_BootstrapRole, _aws_cdk_app_staging_synthesizer_alpha_DeploymentIdentities, _aws_cdk_app_staging_synthesizer_alpha_BootstrapRoles, _aws_cdk_app_staging_synthesizer_alpha_StagingRoles, _aws_cdk_app_staging_synthesizer_alpha_FileStagingLocation, _aws_cdk_app_staging_synthesizer_alpha_ImageStagingLocation, _aws_cdk_app_staging_synthesizer_alpha_IStagingResources, _aws_cdk_app_staging_synthesizer_alpha_IStagingResourcesFactory, _aws_cdk_app_staging_synthesizer_alpha_ObtainStagingResourcesContext };
171
+ module.exports = { print, getPropertyDescriptor, DeprecationError, _aws_cdk_app_staging_synthesizer_alpha_UsingAppStagingSynthesizer, _aws_cdk_app_staging_synthesizer_alpha_DefaultStagingStackOptions, _aws_cdk_app_staging_synthesizer_alpha_DefaultStagingStackProps, _aws_cdk_app_staging_synthesizer_alpha_DefaultStagingStack, _aws_cdk_app_staging_synthesizer_alpha_AppStagingSynthesizerOptions, _aws_cdk_app_staging_synthesizer_alpha_DefaultResourcesOptions, _aws_cdk_app_staging_synthesizer_alpha_CustomFactoryOptions, _aws_cdk_app_staging_synthesizer_alpha_CustomResourcesOptions, _aws_cdk_app_staging_synthesizer_alpha_AppStagingSynthesizer, _aws_cdk_app_staging_synthesizer_alpha_BootstrapRole, _aws_cdk_app_staging_synthesizer_alpha_DeploymentIdentities, _aws_cdk_app_staging_synthesizer_alpha_BootstrapRoles, _aws_cdk_app_staging_synthesizer_alpha_StagingRoles, _aws_cdk_app_staging_synthesizer_alpha_FileStagingLocation, _aws_cdk_app_staging_synthesizer_alpha_ImageStagingLocation, _aws_cdk_app_staging_synthesizer_alpha_IStagingResources, _aws_cdk_app_staging_synthesizer_alpha_IStagingResourcesFactory, _aws_cdk_app_staging_synthesizer_alpha_ObtainStagingResourcesContext };
@@ -171,7 +171,7 @@ class AppStagingSynthesizer extends core_1.StackSynthesizer {
171
171
  }
172
172
  }
173
173
  _a = JSII_RTTI_SYMBOL_1;
174
- AppStagingSynthesizer[_a] = { fqn: "@aws-cdk/app-staging-synthesizer-alpha.AppStagingSynthesizer", version: "2.84.0-alpha.0" };
174
+ AppStagingSynthesizer[_a] = { fqn: "@aws-cdk/app-staging-synthesizer-alpha.AppStagingSynthesizer", version: "2.85.0-alpha.0" };
175
175
  /**
176
176
  * Default ARN qualifier
177
177
  */
@@ -52,7 +52,7 @@ class BootstrapRole {
52
52
  }
53
53
  }
54
54
  _a = JSII_RTTI_SYMBOL_1;
55
- BootstrapRole[_a] = { fqn: "@aws-cdk/app-staging-synthesizer-alpha.BootstrapRole", version: "2.84.0-alpha.0" };
55
+ BootstrapRole[_a] = { fqn: "@aws-cdk/app-staging-synthesizer-alpha.BootstrapRole", version: "2.85.0-alpha.0" };
56
56
  BootstrapRole.CLI_CREDS = 'cli-credentials';
57
57
  exports.BootstrapRole = BootstrapRole;
58
58
  /**
@@ -93,6 +93,6 @@ class DeploymentIdentities {
93
93
  }
94
94
  }
95
95
  _b = JSII_RTTI_SYMBOL_1;
96
- DeploymentIdentities[_b] = { fqn: "@aws-cdk/app-staging-synthesizer-alpha.DeploymentIdentities", version: "2.84.0-alpha.0" };
96
+ DeploymentIdentities[_b] = { fqn: "@aws-cdk/app-staging-synthesizer-alpha.DeploymentIdentities", version: "2.85.0-alpha.0" };
97
97
  exports.DeploymentIdentities = DeploymentIdentities;
98
98
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vdHN0cmFwLXJvbGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYm9vdHN0cmFwLXJvbGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDRFQUF3STtBQUV4STs7O0dBR0c7QUFDSCxNQUFhLGFBQWE7SUFDeEI7O09BRUc7SUFDSSxNQUFNLENBQUMsY0FBYztRQUMxQixPQUFPLElBQUksYUFBYSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztLQUNuRDtJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFXO1FBQ25DLG9DQUFpQixDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1FBQzdELE9BQU8sSUFBSSxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7S0FDL0I7SUFJRCxZQUFxQyxPQUFlO1FBQWYsWUFBTyxHQUFQLE9BQU8sQ0FBUTtLQUFJO0lBRXhEOztPQUVHO0lBQ0ksZ0JBQWdCO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLE9BQU8sS0FBSyxhQUFhLENBQUMsU0FBUyxDQUFDO0tBQ2pEO0lBRUQ7O09BRUc7SUFDSSxxQkFBcUI7UUFDMUIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFBLGdEQUE2QixFQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztLQUMxRjtJQUVEOztPQUVHO0lBQ0ksb0JBQW9CO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBQSxnREFBNkIsRUFBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7S0FDMUY7SUFFRDs7T0FFRztJQUNJLFdBQVcsQ0FBQyxJQUF1QjtRQUN4QyxPQUFPLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7S0FDekQ7Ozs7QUE5QmMsdUJBQVMsR0FBRyxpQkFBaUIsQ0FBQztBQWhCbEMsc0NBQWE7QUFpRDFCOzs7R0FHRztBQUNILE1BQWEsb0JBQW9CO0lBQy9COztPQUVHO0lBQ0ksTUFBTSxDQUFDLGNBQWM7UUFDMUIsT0FBTyxJQUFJLG9CQUFvQixDQUFDO1lBQzlCLDJCQUEyQixFQUFFLGFBQWEsQ0FBQyxjQUFjLEVBQUU7WUFDM0QsY0FBYyxFQUFFLGFBQWEsQ0FBQyxjQUFjLEVBQUU7WUFDOUMsVUFBVSxFQUFFLGFBQWEsQ0FBQyxjQUFjLEVBQUU7U0FDM0MsQ0FBQyxDQUFDO0tBQ0o7SUFFRDs7O09BR0c7SUFDSSxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQXFCOzs7Ozs7Ozs7O1FBQzlDLE9BQU8sSUFBSSxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUN4QztJQUVEO0lBQ0UsbURBQW1EO0lBQ25DLEtBQXFCO1FBQXJCLFVBQUssR0FBTCxLQUFLLENBQWdCO0tBQ25DOzs7O0FBdkJPLG9EQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0cmluZ1NwZWNpYWxpemVyLCB0cmFuc2xhdGVBc3NldFRva2VuVG9DZm5Ub2tlbiwgdHJhbnNsYXRlQ2ZuVG9rZW5Ub0Fzc2V0VG9rZW4gfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9oZWxwZXJzLWludGVybmFsJztcblxuLyoqXG4gKiBCb290c3RyYXBwZWQgcm9sZSBzcGVjaWZpZXIuIFRoZXNlIHJvbGVzIG11c3QgZXhpc3QgYWxyZWFkeS5cbiAqIFRoaXMgY2xhc3MgZG9lcyBub3QgY3JlYXRlIG5ldyBJQU0gUm9sZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBCb290c3RyYXBSb2xlIHtcbiAgLyoqXG4gICAqIFVzZSB0aGUgY3VycmVudGx5IGFzc3VtZWQgcm9sZS9jcmVkZW50aWFsc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBjbGlDcmVkZW50aWFscygpIHtcbiAgICByZXR1cm4gbmV3IEJvb3RzdHJhcFJvbGUoQm9vdHN0cmFwUm9sZS5DTElfQ1JFRFMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgYW4gZXhpc3RpbmcgSUFNIFJvbGUgdG8gYXNzdW1lXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21Sb2xlQXJuKGFybjogc3RyaW5nKSB7XG4gICAgU3RyaW5nU3BlY2lhbGl6ZXIudmFsaWRhdGVOb1Rva2Vucyhhcm4sICdCb290c3RyYXBSb2xlIEFSTicpO1xuICAgIHJldHVybiBuZXcgQm9vdHN0cmFwUm9sZShhcm4pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgQ0xJX0NSRURTID0gJ2NsaS1jcmVkZW50aWFscyc7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHJvbGVBcm46IHN0cmluZykge31cblxuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdGhpcyBpcyBvYmplY3Qgd2FzIGNyZWF0ZWQgdXNpbmcgQm9vdHN0cmFwUm9sZS5jbGlDcmVkZW50aWFscygpXG4gICAqL1xuICBwdWJsaWMgaXNDbGlDcmVkZW50aWFscygpIHtcbiAgICByZXR1cm4gdGhpcy5yb2xlQXJuID09PSBCb290c3RyYXBSb2xlLkNMSV9DUkVEUztcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBfYXJuRm9yQ2xvdWRGb3JtYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNDbGlDcmVkZW50aWFscygpID8gdW5kZWZpbmVkIDogdHJhbnNsYXRlQXNzZXRUb2tlblRvQ2ZuVG9rZW4odGhpcy5yb2xlQXJuKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBfYXJuRm9yQ2xvdWRBc3NlbWJseSgpIHtcbiAgICByZXR1cm4gdGhpcy5pc0NsaUNyZWRlbnRpYWxzKCkgPyB1bmRlZmluZWQgOiB0cmFuc2xhdGVDZm5Ub2tlblRvQXNzZXRUb2tlbih0aGlzLnJvbGVBcm4pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIF9zcGVjaWFsaXplKHNwZWM6IFN0cmluZ1NwZWNpYWxpemVyKSB7XG4gICAgcmV0dXJuIG5ldyBCb290c3RyYXBSb2xlKHNwZWMuc3BlY2lhbGl6ZSh0aGlzLnJvbGVBcm4pKTtcbiAgfVxufVxuXG4vKipcbiAqIERlcGxveW1lbnQgaWRlbnRpdGllcyBhcmUgdGhlIGNsYXNzIG9mIHJvbGVzIHRvIGJlIGFzc3VtZWQgYnkgdGhlIENES1xuICogd2hlbiBkZXBsb3lpbmcgdGhlIEFwcC5cbiAqL1xuZXhwb3J0IGNsYXNzIERlcGxveW1lbnRJZGVudGl0aWVzIHtcbiAgLyoqXG4gICAqIFVzZSBDTEkgY3JlZGVudGlhbHMgZm9yIGFsbCBkZXBsb3ltZW50IGlkZW50aXRpZXMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNsaUNyZWRlbnRpYWxzKCk6IERlcGxveW1lbnRJZGVudGl0aWVzIHtcbiAgICByZXR1cm4gbmV3IERlcGxveW1lbnRJZGVudGl0aWVzKHtcbiAgICAgIGNsb3VkRm9ybWF0aW9uRXhlY3V0aW9uUm9sZTogQm9vdHN0cmFwUm9sZS5jbGlDcmVkZW50aWFscygpLFxuICAgICAgZGVwbG95bWVudFJvbGU6IEJvb3RzdHJhcFJvbGUuY2xpQ3JlZGVudGlhbHMoKSxcbiAgICAgIGxvb2t1cFJvbGU6IEJvb3RzdHJhcFJvbGUuY2xpQ3JlZGVudGlhbHMoKSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHlvdXIgb3duIHJvbGVzIGZvciBhbGwgZGVwbG95bWVudCBpZGVudGl0aWVzLiBUaGVzZSByb2xlc1xuICAgKiBtdXN0IGFscmVhZHkgZXhpc3QuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHNwZWNpZnlSb2xlcyhyb2xlczogQm9vdHN0cmFwUm9sZXMpOiBEZXBsb3ltZW50SWRlbnRpdGllcyB7XG4gICAgcmV0dXJuIG5ldyBEZXBsb3ltZW50SWRlbnRpdGllcyhyb2xlcyk7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKFxuICAgIC8qKiByb2xlcyB0aGF0IGFyZSBib290c3RyYXBwZWQgdG8geW91ciBhY2NvdW50LiAqL1xuICAgIHB1YmxpYyByZWFkb25seSByb2xlczogQm9vdHN0cmFwUm9sZXMsXG4gICkge31cbn1cblxuLyoqXG4gKiBSb2xlcyB0aGF0IGFyZSBib290c3RyYXBwZWQgdG8geW91ciBhY2NvdW50LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJvb3RzdHJhcFJvbGVzIHtcbiAgLyoqXG4gICAqIENsb3VkRm9ybWF0aW9uIEV4ZWN1dGlvbiBSb2xlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdXNlIGJvb3RzdHJhcHBlZCByb2xlXG4gICAqL1xuICByZWFkb25seSBjbG91ZEZvcm1hdGlvbkV4ZWN1dGlvblJvbGU/OiBCb290c3RyYXBSb2xlO1xuXG4gIC8qKlxuICAgKiBEZXBsb3ltZW50IEFjdGlvbiBSb2xlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdXNlIGJvb3N0cmFwcGVkIHJvbGVcbiAgICovXG4gIHJlYWRvbmx5IGRlcGxveW1lbnRSb2xlPzogQm9vdHN0cmFwUm9sZTtcblxuICAvKipcbiAgICogTG9va3VwIFJvbGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSB1c2UgYm9vdHN0cmFwcGVkIHJvbGVcbiAgICovXG4gIHJlYWRvbmx5IGxvb2t1cFJvbGU/OiBCb290c3RyYXBSb2xlO1xufVxuXG4vKipcbiAqIFJvbGVzIHRoYXQgYXJlIGluY2x1ZGVkIGluIHRoZSBTdGFnaW5nIFN0YWNrXG4gKiAoZm9yIGFjY2VzcyB0byBTdGFnaW5nIFJlc291cmNlcylcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdGFnaW5nUm9sZXMge1xuICAvKipcbiAgICogRmlsZSBBc3NldCBQdWJsaXNoaW5nIFJvbGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBzdGFnaW5nIHN0YWNrIGNyZWF0ZXMgYSBmaWxlIGFzc2V0IHB1Ymxpc2hpbmcgcm9sZVxuICAgKi9cbiAgcmVhZG9ubHkgZmlsZUFzc2V0UHVibGlzaGluZ1JvbGU/OiBCb290c3RyYXBSb2xlO1xuXG4gIC8qKlxuICAgKiBEb2NrZXIgQXNzZXQgUHVibGlzaGluZyBSb2xlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gc3RhZ2luZyBzdGFjayBjcmVhdGVzIGEgZG9ja2VyIGFzc2V0IHB1Ymxpc2hpbmcgcm9sZVxuICAgKi9cbiAgcmVhZG9ubHkgZG9ja2VyQXNzZXRQdWJsaXNoaW5nUm9sZT86IEJvb3RzdHJhcFJvbGU7XG59XG4iXX0=
@@ -1,9 +1,21 @@
1
1
  import * as ecr from 'aws-cdk-lib/aws-ecr';
2
2
  import * as s3 from 'aws-cdk-lib/aws-s3';
3
3
  import { App, DockerImageAssetSource, Duration, FileAssetSource, ISynthesisSession, Stack, StackProps } from 'aws-cdk-lib/core';
4
+ import { Construct } from 'constructs';
4
5
  import { BootstrapRole } from './bootstrap-roles';
5
6
  import { FileStagingLocation, IStagingResources, IStagingResourcesFactory, ImageStagingLocation } from './staging-stack';
6
7
  export declare const DEPLOY_TIME_PREFIX = "deploy-time/";
8
+ /**
9
+ * This is a dummy construct meant to signify that a stack is utilizing
10
+ * the AppStagingSynthesizer. It does not do anything, and is not meant
11
+ * to be created on its own. This construct will be a part of the
12
+ * construct tree only and not the Cfn template. The construct tree is
13
+ * then encoded in the AWS::CDK::Metadata resource of the stack and
14
+ * injested in our metrics like every other construct.
15
+ */
16
+ export declare class UsingAppStagingSynthesizer extends Construct {
17
+ constructor(scope: Construct, id: string);
18
+ }
7
19
  /**
8
20
  * User configurable options to the DefaultStagingStack.
9
21
  */
@@ -63,6 +75,13 @@ export interface DefaultStagingStackOptions {
63
75
  * @default - up to 3 versions stored
64
76
  */
65
77
  readonly imageAssetVersionCount?: number;
78
+ /**
79
+ * Auto deletes objects in the staging S3 bucket and images in the
80
+ * staging ECR repositories.
81
+ *
82
+ * @default true
83
+ */
84
+ readonly autoDeleteStagingAssets?: boolean;
66
85
  }
67
86
  /**
68
87
  * Default Staging Stack Properties
@@ -130,6 +149,7 @@ export declare class DefaultStagingStack extends Stack implements IStagingResour
130
149
  private imageRole?;
131
150
  private didImageRole;
132
151
  private imageRoleManifestArn?;
152
+ private autoDeleteStagingAssets;
133
153
  private readonly deployRoleArn?;
134
154
  constructor(scope: App, id: string, props: DefaultStagingStackProps);
135
155
  private validateAppId;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
- var _a;
2
+ var _a, _b;
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.DefaultStagingStack = exports.DEPLOY_TIME_PREFIX = void 0;
4
+ exports.DefaultStagingStack = exports.UsingAppStagingSynthesizer = exports.DEPLOY_TIME_PREFIX = void 0;
5
5
  const jsiiDeprecationWarnings = require("../.warnings.jsii.js");
6
6
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
7
7
  const fs = require("fs");
@@ -12,7 +12,25 @@ const kms = require("aws-cdk-lib/aws-kms");
12
12
  const s3 = require("aws-cdk-lib/aws-s3");
13
13
  const core_1 = require("aws-cdk-lib/core");
14
14
  const helpers_internal_1 = require("aws-cdk-lib/core/lib/helpers-internal");
15
+ const cxapi = require("aws-cdk-lib/cx-api");
16
+ const constructs_1 = require("constructs");
15
17
  exports.DEPLOY_TIME_PREFIX = 'deploy-time/';
18
+ /**
19
+ * This is a dummy construct meant to signify that a stack is utilizing
20
+ * the AppStagingSynthesizer. It does not do anything, and is not meant
21
+ * to be created on its own. This construct will be a part of the
22
+ * construct tree only and not the Cfn template. The construct tree is
23
+ * then encoded in the AWS::CDK::Metadata resource of the stack and
24
+ * injested in our metrics like every other construct.
25
+ */
26
+ class UsingAppStagingSynthesizer extends constructs_1.Construct {
27
+ constructor(scope, id) {
28
+ super(scope, id);
29
+ }
30
+ }
31
+ _a = JSII_RTTI_SYMBOL_1;
32
+ UsingAppStagingSynthesizer[_a] = { fqn: "@aws-cdk/app-staging-synthesizer-alpha.UsingAppStagingSynthesizer", version: "2.85.0-alpha.0" };
33
+ exports.UsingAppStagingSynthesizer = UsingAppStagingSynthesizer;
16
34
  /**
17
35
  * A default Staging Stack that implements IStagingResources.
18
36
  *
@@ -40,6 +58,11 @@ class DefaultStagingStack extends core_1.Stack {
40
58
  if (!core_1.App.isApp(app)) {
41
59
  throw new Error(`Stack ${stack.stackName} must be part of an App`);
42
60
  }
61
+ // Because we do not keep metrics in the DefaultStagingStack, we will inject
62
+ // a dummy construct into the stack using the DefaultStagingStack instead.
63
+ if (cxapi.ANALYTICS_REPORTING_ENABLED_CONTEXT) {
64
+ new UsingAppStagingSynthesizer(stack, `UsingAppStagingSynthesizer/${stack.stackName}`);
65
+ }
43
66
  const stackId = `StagingStack-${appId}-${context.environmentString}`;
44
67
  return new DefaultStagingStack(app, stackId, {
45
68
  ...options,
@@ -72,6 +95,7 @@ class DefaultStagingStack extends core_1.Stack {
72
95
  super(scope, id, {
73
96
  ...props,
74
97
  synthesizer: new core_1.BootstraplessSynthesizer(),
98
+ analyticsReporting: false, // removing AWS::CDK::Metadata construct saves ~3KB
75
99
  });
76
100
  this.props = props;
77
101
  this.didImageRole = false;
@@ -84,6 +108,13 @@ class DefaultStagingStack extends core_1.Stack {
84
108
  }
85
109
  throw error;
86
110
  }
111
+ // removing path metadata saves ~2KB
112
+ this.node.setContext(cxapi.PATH_METADATA_ENABLE_CONTEXT, false);
113
+ // For all resources under the default staging stack, we want to inline custom
114
+ // resources because the staging bucket necessary for custom resource assets
115
+ // does not exist yet.
116
+ this.node.setContext(core_1.INLINE_CUSTOM_RESOURCE_CONTEXT, true);
117
+ this.autoDeleteStagingAssets = props.autoDeleteStagingAssets ?? true;
87
118
  this.appId = this.validateAppId(props.appId);
88
119
  this.dependencyStack = this;
89
120
  this.deployRoleArn = props.deployRoleArn;
@@ -179,7 +210,12 @@ class DefaultStagingStack extends core_1.Stack {
179
210
  // Create the bucket once the dependencies have been created
180
211
  const bucket = new s3.Bucket(this, bucketId, {
181
212
  bucketName: stagingBucketName,
182
- removalPolicy: core_1.RemovalPolicy.RETAIN,
213
+ ...(this.autoDeleteStagingAssets ? {
214
+ removalPolicy: core_1.RemovalPolicy.DESTROY,
215
+ autoDeleteObjects: true,
216
+ } : {
217
+ removalPolicy: core_1.RemovalPolicy.RETAIN,
218
+ }),
183
219
  encryption: s3.BucketEncryption.KMS,
184
220
  encryptionKey: key,
185
221
  // Many AWS account safety checkers will complain when buckets aren't versioned
@@ -229,6 +265,12 @@ class DefaultStagingStack extends core_1.Stack {
229
265
  description: 'Garbage collect old image versions and keep the specified number of latest versions',
230
266
  maxImageCount: this.props.imageAssetVersionCount ?? 3,
231
267
  }],
268
+ ...(this.autoDeleteStagingAssets ? {
269
+ removalPolicy: core_1.RemovalPolicy.DESTROY,
270
+ autoDeleteImages: true,
271
+ } : {
272
+ removalPolicy: core_1.RemovalPolicy.RETAIN,
273
+ }),
232
274
  });
233
275
  if (this.imageRole) {
234
276
  this.stagingRepos[asset.assetName].grantPullPush(this.imageRole);
@@ -273,7 +315,7 @@ class DefaultStagingStack extends core_1.Stack {
273
315
  }
274
316
  }
275
317
  }
276
- _a = JSII_RTTI_SYMBOL_1;
277
- DefaultStagingStack[_a] = { fqn: "@aws-cdk/app-staging-synthesizer-alpha.DefaultStagingStack", version: "2.84.0-alpha.0" };
318
+ _b = JSII_RTTI_SYMBOL_1;
319
+ DefaultStagingStack[_b] = { fqn: "@aws-cdk/app-staging-synthesizer-alpha.DefaultStagingStack", version: "2.85.0-alpha.0" };
278
320
  exports.DefaultStagingStack = DefaultStagingStack;
279
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1zdGFnaW5nLXN0YWNrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGVmYXVsdC1zdGFnaW5nLXN0YWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHlCQUF5QjtBQUN6Qiw2QkFBNkI7QUFDN0IsMkNBQTJDO0FBQzNDLDJDQUEyQztBQUMzQywyQ0FBMkM7QUFDM0MseUNBQXlDO0FBQ3pDLDJDQVcwQjtBQUMxQiw0RUFBMEU7QUFJN0QsUUFBQSxrQkFBa0IsR0FBRyxjQUFjLENBQUM7QUF5RmpEOzs7OztHQUtHO0FBQ0gsTUFBYSxtQkFBb0IsU0FBUSxZQUFLO0lBQzVDOztPQUVHO0lBQ0ksTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFtQzs7Ozs7Ozs7OztRQUN2RCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLGlCQUFpQixFQUFFLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3pGLE9BQU87WUFDTCxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsT0FBTztnQkFDbkMsTUFBTSxHQUFHLEdBQUcsVUFBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDMUIsSUFBSSxDQUFDLFVBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQ25CLE1BQU0sSUFBSSxLQUFLLENBQUMsU0FBUyxLQUFLLENBQUMsU0FBUyx5QkFBeUIsQ0FBQyxDQUFDO2lCQUNwRTtnQkFFRCxNQUFNLE9BQU8sR0FBRyxnQkFBZ0IsS0FBSyxJQUFJLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2dCQUNyRSxPQUFPLElBQUksbUJBQW1CLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRTtvQkFDM0MsR0FBRyxPQUFPO29CQUVWLDJGQUEyRjtvQkFDM0YsU0FBUyxFQUFFLGdCQUFnQixLQUFLLEVBQUU7b0JBQ2xDLEdB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SSxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ3ZDLElBQUksSUFBSSxHQUFHLEtBQUssRUFBRTtZQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLHlFQUF5RSxJQUFJLFFBQVEsQ0FBQyxDQUFDO1NBQ3hHO0tBQ0Y7Ozs7QUEvU1Usa0RBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGVjciBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWNyJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCAqIGFzIGttcyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mta21zJztcbmltcG9ydCAqIGFzIHMzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQge1xuICBBcHAsXG4gIEFybkZvcm1hdCxcbiAgQm9vdHN0cmFwbGVzc1N5bnRoZXNpemVyLFxuICBEb2NrZXJJbWFnZUFzc2V0U291cmNlLFxuICBEdXJhdGlvbixcbiAgRmlsZUFzc2V0U291cmNlLFxuICBJU3ludGhlc2lzU2Vzc2lvbixcbiAgUmVtb3ZhbFBvbGljeSxcbiAgU3RhY2ssXG4gIFN0YWNrUHJvcHMsXG59IGZyb20gJ2F3cy1jZGstbGliL2NvcmUnO1xuaW1wb3J0IHsgU3RyaW5nU3BlY2lhbGl6ZXIgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9oZWxwZXJzLWludGVybmFsJztcbmltcG9ydCB7IEJvb3RzdHJhcFJvbGUgfSBmcm9tICcuL2Jvb3RzdHJhcC1yb2xlcyc7XG5pbXBvcnQgeyBGaWxlU3RhZ2luZ0xvY2F0aW9uLCBJU3RhZ2luZ1Jlc291cmNlcywgSVN0YWdpbmdSZXNvdXJjZXNGYWN0b3J5LCBJbWFnZVN0YWdpbmdMb2NhdGlvbiB9IGZyb20gJy4vc3RhZ2luZy1zdGFjayc7XG5cbmV4cG9ydCBjb25zdCBERVBMT1lfVElNRV9QUkVGSVggPSAnZGVwbG95LXRpbWUvJztcblxuLyoqXG4gKiBVc2VyIGNvbmZpZ3VyYWJsZSBvcHRpb25zIHRvIHRoZSBEZWZhdWx0U3RhZ2luZ1N0YWNrLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlZmF1bHRTdGFnaW5nU3RhY2tPcHRpb25zIHtcbiAgLyoqXG4gICAqIEEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBhcHBsaWNhdGlvbiB0aGF0IHRoZSBzdGFnaW5nIHN0YWNrIGJlbG9uZ3MgdG8uXG4gICAqXG4gICAqIFRoaXMgaWRlbnRpZmllciB3aWxsIGJlIHVzZWQgaW4gdGhlIG5hbWUgb2Ygc3RhZ2luZyByZXNvdXJjZXNcbiAgICogY3JlYXRlZCBmb3IgdGhpcyBhcHBsaWNhdGlvbiwgYW5kIHNob3VsZCBiZSB1bmlxdWUgYWNyb3NzIENESyBhcHBzLlxuICAgKlxuICAgKiBUaGUgaWRlbnRpZmllciBzaG91bGQgaW5jbHVkZSBsb3dlcmNhc2UgY2hhcmFjdGVycyBhbmQgZGFzaGVzICgnLScpIG9ubHlcbiAgICogYW5kIGhhdmUgYSBtYXhpbXVtIG9mIDIwIGNoYXJhY3RlcnMuXG4gICAqL1xuICByZWFkb25seSBhcHBJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFeHBsaWNpdCBuYW1lIGZvciB0aGUgc3RhZ2luZyBidWNrZXRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBhIHdlbGwta25vd24gbmFtZSB1bmlxdWUgdG8gdGhpcyBhcHAvZW52LlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhZ2luZ0J1Y2tldE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBhc3MgaW4gYW4gZXhpc3Rpbmcgcm9sZSB0byBiZSB1c2VkIGFzIHRoZSBmaWxlIHB1Ymxpc2hpbmcgcm9sZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBhIG5ldyByb2xlIHdpbGwgYmUgY3JlYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgZmlsZUFzc2V0UHVibGlzaGluZ1JvbGU/OiBCb290c3RyYXBSb2xlO1xuXG4gIC8qKlxuICAgKiBQYXNzIGluIGFuIGV4aXN0aW5nIHJvbGUgdG8gYmUgdXNlZCBhcyB0aGUgaW1hZ2UgcHVibGlzaGluZyByb2xlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGEgbmV3IHJvbGUgd2lsbCBiZSBjcmVhdGVkXG4gICAqL1xuICByZWFkb25seSBpbWFnZUFzc2V0UHVibGlzaGluZ1JvbGU/OiBCb290c3RyYXBSb2xlO1xuXG4gIC8qKlxuICAgKiBUaGUgbGlmZXRpbWUgZm9yIGRlcGxveSB0aW1lIGZpbGUgYXNzZXRzLlxuICAgKlxuICAgKiBBc3NldHMgdGhhdCBhcmUgb25seSBuZWNlc3NhcnkgYXQgZGVwbG95bWVudCB0aW1lIChmb3IgaW5zdGFuY2UsXG4gICAqIENsb3VkRm9ybWF0aW9uIHRlbXBsYXRlcyBhbmQgTGFtYmRhIHNvdXJjZSBjb2RlIGJ1bmRsZXMpIHdpbGwgYmVcbiAgICogYXV0b21hdGljYWxseSBkZWxldGVkIGFmdGVyIHRoaXMgbWFueSBkYXlzLiBBc3NldHMgdGhhdCBtYXkgYmVcbiAgICogcmVhZCBmcm9tIHRoZSBzdGFnaW5nIGJ1Y2tldCBkdXJpbmcgeW91ciBhcHBsaWNhdGlvbidzIHJ1biB0aW1lXG4gICAqIHdpbGwgbm90IGJlIGRlbGV0ZWQuXG4gICAqXG4gICAqIFNldCB0aGlzIHRvIHRoZSBsZW5ndGggb2YgdGltZSB5b3Ugd2lzaCB0byBiZSBhYmxlIHRvIHJvbGwgYmFjayB0b1xuICAgKiBwcmV2aW91cyB2ZXJzaW9ucyBvZiB5b3VyIGFwcGxpY2F0aW9uIHdpdGhvdXQgaGF2aW5nIHRvIGRvIGEgbmV3XG4gICAqIGBjZGsgc3ludGhgIGFuZCByZS11cGxvYWQgb2YgYXNzZXRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIER1cmF0aW9uLmRheXMoMzApXG4gICAqL1xuICByZWFkb25seSBkZXBsb3lUaW1lRmlsZUFzc2V0TGlmZXRpbWU/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gbnVtYmVyIG9mIGltYWdlIHZlcnNpb25zIHRvIHN0b3JlIGluIGEgcmVwb3NpdG9yeS5cbiAgICpcbiAgICogUHJldmlvdXMgdmVyc2lvbnMgb2YgYW4gaW1hZ2UgY2FuIGJlIHN0b3JlZCBmb3Igcm9sbGJhY2sgcHVycG9zZXMuXG4gICAqIE9uY2UgYSByZXBvc2l0b3J5IGhhcyBtb3JlIHRoYW4gMyBpbWFnZSB2ZXJzaW9ucyBzdG9yZWQsIHRoZSBvbGRlc3RcbiAgICogdmVyc2lvbiB3aWxsIGJlIGRpc2NhcmRlZC4gVGhpcyBhbGxvd3MgZm9yIHNlbnNpYmxlIGdhcmJhZ2UgY29sbGVjdGlvblxuICAgKiB3aGlsZSBtYWludGFpbmluZyBhIGZldyBwcmV2aW91cyB2ZXJzaW9ucyBmb3Igcm9sbGJhY2sgc2NlbmFyaW9zLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHVwIHRvIDMgdmVyc2lvbnMgc3RvcmVkXG4gICAqL1xuICByZWFkb25seSBpbWFnZUFzc2V0VmVyc2lvbkNvdW50PzogbnVtYmVyO1xufVxuXG4vKipcbiAqIERlZmF1bHQgU3RhZ2luZyBTdGFjayBQcm9wZXJ0aWVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVmYXVsdFN0YWdpbmdTdGFja1Byb3BzIGV4dGVuZHMgRGVmYXVsdFN0YWdpbmdTdGFja09wdGlvbnMsIFN0YWNrUHJvcHMge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgZGVwbG95IGFjdGlvbiByb2xlLCBpZiBnaXZlblxuICAgKlxuICAgKiBUaGlzIHJvbGUgd2lsbCBuZWVkIHBlcm1pc3Npb25zIHRvIHJlYWQgZnJvbSB0byB0aGUgc3RhZ2luZyByZXNvdXJjZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gVGhlIENMSSBjcmVkZW50aWFscyBhcmUgYXNzdW1lZCwgbm8gYWRkaXRpb25hbCBwZXJtaXNzaW9ucyBhcmUgZ3JhbnRlZC5cbiAgICovXG4gIHJlYWRvbmx5IGRlcGxveVJvbGVBcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBxdWFsaWZpZXIgdXNlZCB0byBzcGVjaWFsaXplIHN0cmluZ3NcbiAgICpcbiAgICogU2hvdWxkbid0IGJlIG5lY2Vzc2FyeSBidXQgd2hvIGtub3dzIHdoYXQgcGVvcGxlIG1pZ2h0IGRvLlxuICAgKi9cbiAgcmVhZG9ubHkgcXVhbGlmaWVyOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBkZWZhdWx0IFN0YWdpbmcgU3RhY2sgdGhhdCBpbXBsZW1lbnRzIElTdGFnaW5nUmVzb3VyY2VzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBkZWZhdWx0U3RhZ2luZ1N0YWNrID0gRGVmYXVsdFN0YWdpbmdTdGFjay5mYWN0b3J5KHsgYXBwSWQ6ICdteS1hcHAtaWQnIH0pO1xuICovXG5leHBvcnQgY2xhc3MgRGVmYXVsdFN0YWdpbmdTdGFjayBleHRlbmRzIFN0YWNrIGltcGxlbWVudHMgSVN0YWdpbmdSZXNvdXJjZXMge1xuICAvKipcbiAgICogUmV0dXJuIGEgZmFjdG9yeSB0aGF0IHdpbGwgY3JlYXRlIERlZmF1bHRTdGFnaW5nU3RhY2tzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZhY3Rvcnkob3B0aW9uczogRGVmYXVsdFN0YWdpbmdTdGFja09wdGlvbnMpOiBJU3RhZ2luZ1Jlc291cmNlc0ZhY3Rvcnkge1xuICAgIGNvbnN0IGFwcElkID0gb3B0aW9ucy5hcHBJZC50b0xvY2FsZUxvd2VyQ2FzZSgpLnJlcGxhY2UoL1teYS16MC05LV0vZywgJy0nKS5zbGljZSgwLCAyMCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIG9idGFpblN0YWdpbmdSZXNvdXJjZXMoc3RhY2ssIGNvbnRleHQpIHtcbiAgICAgICAgY29uc3QgYXBwID0gQXBwLm9mKHN0YWNrKTtcbiAgICAgICAgaWYgKCFBcHAuaXNBcHAoYXBwKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgU3RhY2sgJHtzdGFjay5zdGFja05hbWV9IG11c3QgYmUgcGFydCBvZiBhbiBBcHBgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHN0YWNrSWQgPSBgU3RhZ2luZ1N0YWNrLSR7YXBwSWR9LSR7Y29udGV4dC5lbnZpcm9ubWVudFN0cmluZ31gO1xuICAgICAgICByZXR1cm4gbmV3IERlZmF1bHRTdGFnaW5nU3RhY2soYXBwLCBzdGFja0lkLCB7XG4gICAgICAgICAgLi4ub3B0aW9ucyxcblxuICAgICAgICAgIC8vIERvZXMgbm90IG5lZWQgdG8gY29udGFpbiBlbnZpcm9ubWVudCBiZWNhdXNlIHN0YWNrIG5hbWVzIGFyZSB1bmlxdWUgaW5zaWRlIGFuIGVudiBhbnl3YXlcbiAgICAgICAgICBzdGFja05hbWU6IGBTdGFnaW5nU3RhY2stJHthcHBJZH1gLFxuICAgICAgICAgIGVudjoge1xuICAgICAgICAgICAgYWNjb3VudDogc3RhY2suYWNjb3VudCxcbiAgICAgICAgICAgIHJlZ2lvbjogc3RhY2sucmVnaW9uLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgYXBwSWQsXG4gICAgICAgICAgcXVhbGlmaWVyOiBjb250ZXh0LnF1YWxpZmllcixcbiAgICAgICAgICBkZXBsb3lSb2xlQXJuOiBjb250ZXh0LmRlcGxveVJvbGVBcm4sXG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgYXNzZXQgcHVibGlzaGluZyByb2xlIG5hbWUgZm9yIGZpbGUgKFMzKSBhc3NldHMuXG4gICAqL1xuICBwcml2YXRlIGdldCBmaWxlUm9sZU5hbWUoKSB7XG4gICAgcmV0dXJuIGBjZGstJHt0aGlzLmFwcElkfS1maWxlLXJvbGUtJHt0aGlzLnJlZ2lvbn1gO1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgYXNzZXQgcHVibGlzaGluZyByb2xlIG5hbWUgZm9yIGRvY2tlciAoRUNSKSBhc3NldHMuXG4gICAqL1xuICBwcml2YXRlIGdldCBpbWFnZVJvbGVOYW1lKCkge1xuICAgIHJldHVybiBgY2RrLSR7dGhpcy5hcHBJZH0taW1hZ2Utcm9sZS0ke3RoaXMucmVnaW9ufWA7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGFwcC1zY29wZWQsIGV2aXJvbm1lbnQta2V5ZWQgc3RhZ2luZyBidWNrZXQuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc3RhZ2luZ0J1Y2tldD86IHMzLkJ1Y2tldDtcblxuICAvKipcbiAgICogVGhlIGFwcC1zY29wZWQsIGVudmlyb25tZW50LWtleWVkIGVjciByZXBvc2l0b3JpZXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgYXBwLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHN0YWdpbmdSZXBvczogUmVjb3JkPHN0cmluZywgZWNyLlJlcG9zaXRvcnk+O1xuXG4gIC8qKlxuICAgKiBUaGUgc3RhY2sgdG8gYWRkIGRlcGVuZGVuY2llcyB0by5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBkZXBlbmRlbmN5U3RhY2s6IFN0YWNrO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgYXBwSWQ6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBzdGFnaW5nQnVja2V0TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogRmlsZSBwdWJsaXNoIHJvbGUgQVJOIGluIGFzc2V0IG1hbmlmZXN0IGZvcm1hdFxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBwcm92aWRlZEZpbGVSb2xlPzogQm9vdHN0cmFwUm9sZTtcbiAgcHJpdmF0ZSBmaWxlUm9sZT86IGlhbS5JUm9sZTtcbiAgcHJpdmF0ZSBmaWxlUm9sZU1hbmlmZXN0QXJuPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJbWFnZSBwdWJsaXNoaW5nIHJvbGUgQVJOIGluIGFzc2V0IG1hbmlmZXN0IGZvcm1hdFxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBwcm92aWRlZEltYWdlUm9sZT86IEJvb3RzdHJhcFJvbGU7XG4gIHByaXZhdGUgaW1hZ2VSb2xlPzogaWFtLklSb2xlO1xuICBwcml2YXRlIGRpZEltYWdlUm9sZSA9IGZhbHNlO1xuICBwcml2YXRlIGltYWdlUm9sZU1hbmlmZXN0QXJuPzogc3RyaW5nO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVwbG95Um9sZUFybj86IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQXBwLCBpZDogc3RyaW5nLCBwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBEZWZhdWx0U3RhZ2luZ1N0YWNrUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgc3ludGhlc2l6ZXI6IG5ldyBCb290c3RyYXBsZXNzU3ludGhlc2l6ZXIoKSxcbiAgICB9KTtcblxuICAgIHRoaXMuYXBwSWQgPSB0aGlzLnZhbGlkYXRlQXBwSWQocHJvcHMuYXBwSWQpO1xuICAgIHRoaXMuZGVwZW5kZW5jeVN0YWNrID0gdGhpcztcblxuICAgIHRoaXMuZGVwbG95Um9sZUFybiA9IHByb3BzLmRlcGxveVJvbGVBcm47XG4gICAgdGhpcy5zdGFnaW5nQnVja2V0TmFtZSA9IHByb3BzLnN0YWdpbmdCdWNrZXROYW1lO1xuICAgIGNvbnN0IHNwZWNpYWxpemVyID0gbmV3IFN0cmluZ1NwZWNpYWxpemVyKHRoaXMsIHByb3BzLnF1YWxpZmllcik7XG5cbiAgICB0aGlzLnByb3ZpZGVkRmlsZVJvbGUgPSBwcm9wcy5maWxlQXNzZXRQdWJsaXNoaW5nUm9sZT8uX3NwZWNpYWxpemUoc3BlY2lhbGl6ZXIpO1xuICAgIHRoaXMucHJvdmlkZWRJbWFnZVJvbGUgPSBwcm9wcy5pbWFnZUFzc2V0UHVibGlzaGluZ1JvbGU/Ll9zcGVjaWFsaXplKHNwZWNpYWxpemVyKTtcbiAgICB0aGlzLnN0YWdpbmdSZXBvcyA9IHt9O1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZUFwcElkKGlkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBlcnJvcnMgPSBbXTtcbiAgICBpZiAoaWQubGVuZ3RoID4gMjApIHtcbiAgICAgIGVycm9ycy5wdXNoKGBhcHBJZCBleHBlY3RlZCBubyBtb3JlIHRoYW4gMjAgY2hhcmFjdGVycyBidXQgZ290ICR7aWQubGVuZ3RofSBjaGFyYWN0ZXJzLmApO1xuICAgIH1cbiAgICBpZiAoaWQgIT09IGlkLnRvTG9jYWxlTG93ZXJDYXNlKCkpIHtcbiAgICAgIGVycm9ycy5wdXNoKCdhcHBJZCBvbmx5IGFjY2VwdHMgbG93ZXJjYXNlIGNoYXJhY3RlcnMuJyk7XG4gICAgfVxuICAgIGlmICghL15bYS16MC05LV0qJC8udGVzdChpZCkpIHtcbiAgICAgIGVycm9ycy5wdXNoKCdhcHBJZCBleHBlY3RzIG9ubHkgbGV0dGVycywgbnVtYmVycywgYW5kIGRhc2hlcyAoXFwnLVxcJyknKTtcbiAgICB9XG5cbiAgICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihbXG4gICAgICAgIGBhcHBJZCAke2lkfSBoYXMgZXJyb3JzOmAsXG4gICAgICAgIC4uLmVycm9ycyxcbiAgICAgIF0uam9pbignXFxuJykpO1xuICAgIH1cbiAgICByZXR1cm4gaWQ7XG4gIH1cblxuICBwcml2YXRlIGVuc3VyZUZpbGVSb2xlKCkge1xuICAgIGlmICh0aGlzLnByb3ZpZGVkRmlsZVJvbGUpIHtcbiAgICAgIC8vIE92ZXJyaWRlXG4gICAgICB0aGlzLmZpbGVSb2xlTWFuaWZlc3RBcm4gPSB0aGlzLnByb3ZpZGVkRmlsZVJvbGUuX2FybkZvckNsb3VkQXNzZW1ibHkoKTtcbiAgICAgIGNvbnN0IGNmbkFybiA9IHRoaXMucHJvdmlkZWRGaWxlUm9sZS5fYXJuRm9yQ2xvdWRGb3JtYXRpb24oKTtcbiAgICAgIHRoaXMuZmlsZVJvbGUgPSBjZm5Bcm4gPyBpYW0uUm9sZS5mcm9tUm9sZUFybih0aGlzLCAnQ2RrRmlsZVJvbGUnLCBjZm5Bcm4pIDogdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHJvbGVOYW1lID0gdGhpcy5maWxlUm9sZU5hbWU7XG4gICAgdGhpcy5maWxlUm9sZSA9IG5ldyBpYW0uUm9sZSh0aGlzLCAnQ2RrRmlsZVJvbGUnLCB7XG4gICAgICByb2xlTmFtZSxcbiAgICAgIGFzc3VtZWRCeTogbmV3IGlhbS5BY2NvdW50UHJpbmNpcGFsKHRoaXMuYWNjb3VudCksXG4gICAgfSk7XG5cbiAgICB0aGlzLmZpbGVSb2xlTWFuaWZlc3RBcm4gPSBTdGFjay5vZih0aGlzKS5mb3JtYXRBcm4oe1xuICAgICAgcGFydGl0aW9uOiAnJHtBV1M6OlBhcnRpdGlvbn0nLFxuICAgICAgcmVnaW9uOiAnJywgLy8gaWFtIGlzIGdsb2JhbFxuICAgICAgc2VydmljZTogJ2lhbScsXG4gICAgICByZXNvdXJjZTogJ3JvbGUnLFxuICAgICAgcmVzb3VyY2VOYW1lOiByb2xlTmFtZSxcbiAgICAgIGFybkZvcm1hdDogQXJuRm9ybWF0LlNMQVNIX1JFU09VUkNFX05BTUUsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGVuc3VyZUltYWdlUm9sZSgpIHtcbiAgICAvLyBJdCBtYXkgZW5kIHVwIHNldHRpbmcgaW1hZ2VSb2xlIHRvIHVuZGVmaW5lZCwgYnV0IGF0IGxlYXN0IHdlIHRyaWVkXG4gICAgaWYgKHRoaXMuZGlkSW1hZ2VSb2xlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZGlkSW1hZ2VSb2xlID0gdHJ1ZTtcblxuICAgIGlmICh0aGlzLnByb3ZpZGVkSW1hZ2VSb2xlKSB7XG4gICAgICAvLyBPdmVycmlkZVxuICAgICAgdGhpcy5pbWFnZVJvbGVNYW5pZmVzdEFybiA9IHRoaXMucHJvdmlkZWRJbWFnZVJvbGUuX2FybkZvckNsb3VkQXNzZW1ibHkoKTtcbiAgICAgIGNvbnN0IGNmbkFybiA9IHRoaXMucHJvdmlkZWRJbWFnZVJvbGUuX2FybkZvckNsb3VkRm9ybWF0aW9uKCk7XG4gICAgICB0aGlzLmltYWdlUm9sZSA9IGNmbkFybiA/IGlhbS5Sb2xlLmZyb21Sb2xlQXJuKHRoaXMsICdDZGtJbWFnZVJvbGUnLCBjZm5Bcm4pIDogdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHJvbGVOYW1lID0gdGhpcy5pbWFnZVJvbGVOYW1lO1xuICAgIHRoaXMuaW1hZ2VSb2xlID0gbmV3IGlhbS5Sb2xlKHRoaXMsICdDZGtJbWFnZVJvbGUnLCB7XG4gICAgICByb2xlTmFtZSxcbiAgICAgIGFzc3VtZWRCeTogbmV3IGlhbS5BY2NvdW50UHJpbmNpcGFsKHRoaXMuYWNjb3VudCksXG4gICAgfSk7XG4gICAgdGhpcy5pbWFnZVJvbGVNYW5pZmVzdEFybiA9IFN0YWNrLm9mKHRoaXMpLmZvcm1hdEFybih7XG4gICAgICBwYXJ0aXRpb246ICcke0FXUzo6UGFydGl0aW9ufScsXG4gICAgICByZWdpb246ICcnLCAvLyBpYW0gaXMgZ2xvYmFsXG4gICAgICBzZXJ2aWNlOiAnaWFtJyxcbiAgICAgIHJlc291cmNlOiAncm9sZScsXG4gICAgICByZXNvdXJjZU5hbWU6IHJvbGVOYW1lLFxuICAgICAgYXJuRm9ybWF0OiBBcm5Gb3JtYXQuU0xBU0hfUkVTT1VSQ0VfTkFNRSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQnVja2V0S2V5KCk6IGttcy5JS2V5IHtcbiAgICByZXR1cm4gbmV3IGttcy5LZXkodGhpcywgJ0J1Y2tldEtleScsIHtcbiAgICAgIGFsaWFzOiBgYWxpYXMvY2RrLSR7dGhpcy5hcHBJZH0tc3RhZ2luZ2AsXG4gICAgICBhZG1pbnM6IFtuZXcgaWFtLkFjY291bnRQcmluY2lwYWwodGhpcy5hY2NvdW50KV0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldENyZWF0ZUJ1Y2tldCgpIHtcbiAgICBjb25zdCBzdGFnaW5nQnVja2V0TmFtZSA9IHRoaXMuc3RhZ2luZ0J1Y2tldE5hbWUgPz8gYGNkay0ke3RoaXMuYXBwSWR9LXN0YWdpbmctJHt0aGlzLmFjY291bnR9LSR7dGhpcy5yZWdpb259YDtcbiAgICBjb25zdCBidWNrZXRJZCA9ICdDZGtTdGFnaW5nQnVja2V0JztcbiAgICBjb25zdCBjcmVhdGVkQnVja2V0ID0gdGhpcy5ub2RlLnRyeUZpbmRDaGlsZChidWNrZXRJZCkgYXMgczMuQnVja2V0O1xuICAgIGlmIChjcmVhdGVkQnVja2V0KSB7XG4gICAgICByZXR1cm4gc3RhZ2luZ0J1Y2tldE5hbWU7XG4gICAgfVxuXG4gICAgdGhpcy5lbnN1cmVGaWxlUm9sZSgpO1xuICAgIGNvbnN0IGtleSA9IHRoaXMuY3JlYXRlQnVja2V0S2V5KCk7XG5cbiAgICAvLyBDcmVhdGUgdGhlIGJ1Y2tldCBvbmNlIHRoZSBkZXBlbmRlbmNpZXMgaGF2ZSBiZWVuIGNyZWF0ZWRcbiAgICBjb25zdCBidWNrZXQgPSBuZXcgczMuQnVja2V0KHRoaXMsIGJ1Y2tldElkLCB7XG4gICAgICBidWNrZXROYW1lOiBzdGFnaW5nQnVja2V0TmFtZSxcbiAgICAgIHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3kuUkVUQUlOLFxuICAgICAgZW5jcnlwdGlvbjogczMuQnVja2V0RW5jcnlwdGlvbi5LTVMsXG4gICAgICBlbmNyeXB0aW9uS2V5OiBrZXksXG5cbiAgICAgIC8vIE1hbnkgQVdTIGFjY291bnQgc2FmZXR5IGNoZWNrZXJzIHdpbGwgY29tcGxhaW4gd2hlbiBidWNrZXRzIGFyZW4ndCB2ZXJzaW9uZWRcbiAgICAgIHZlcnNpb25lZDogdHJ1ZSxcbiAgICAgIC8vIE1hbnkgQVdTIGFjY291bnQgc2FmZXR5IGNoZWNrZXJzIHdpbGwgY29tcGxhaW4gd2hlbiBTU0wgaXNuJ3QgZW5mb3JjZWRcbiAgICAgIGVuZm9yY2VTU0w6IHRydWUsXG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5maWxlUm9sZSkge1xuICAgICAgYnVja2V0LmdyYW50UmVhZFdyaXRlKHRoaXMuZmlsZVJvbGUpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmRlcGxveVJvbGVBcm4pIHtcbiAgICAgIGJ1Y2tldC5hZGRUb1Jlc291cmNlUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICdzMzpHZXRPYmplY3QqJyxcbiAgICAgICAgICAnczM6R2V0QnVja2V0KicsXG4gICAgICAgICAgJ3MzOkxpc3QqJyxcbiAgICAgICAgXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbYnVja2V0LmJ1Y2tldEFybiwgYnVja2V0LmFybkZvck9iamVjdHMoJyonKV0sXG4gICAgICAgIHByaW5jaXBhbHM6IFtuZXcgaWFtLkFyblByaW5jaXBhbCh0aGlzLmRlcGxveVJvbGVBcm4pXSxcbiAgICAgIH0pKTtcbiAgICB9XG5cbiAgICAvLyBPYmplY3RzIHNob3VsZCBuZXZlciBiZSBvdmVyd3JpdHRlbiwgYnV0IGxldCdzIG1ha2Ugc3VyZSB3ZSBoYXZlIGEgbGlmZWN5Y2xlIHBvbGljeVxuICAgIC8vIGZvciBpdCBhbnl3YXkuXG4gICAgYnVja2V0LmFkZExpZmVjeWNsZVJ1bGUoe1xuICAgICAgbm9uY3VycmVudFZlcnNpb25FeHBpcmF0aW9uOiBEdXJhdGlvbi5kYXlzKDM2NSksXG4gICAgfSk7XG5cbiAgICBidWNrZXQuYWRkTGlmZWN5Y2xlUnVsZSh7XG4gICAgICBwcmVmaXg6IERFUExPWV9USU1FX1BSRUZJWCxcbiAgICAgIGV4cGlyYXRpb246IHRoaXMucHJvcHMuZGVwbG95VGltZUZpbGVBc3NldExpZmV0aW1lID8/IER1cmF0aW9uLmRheXMoMzApLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHN0YWdpbmdCdWNrZXROYW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHdlbGwta25vd24gbmFtZSBvZiB0aGUgcmVwb1xuICAgKi9cbiAgcHJpdmF0ZSBnZXRDcmVhdGVSZXBvKGFzc2V0OiBEb2NrZXJJbWFnZUFzc2V0U291cmNlKTogc3RyaW5nIHtcbiAgICBpZiAoIWFzc2V0LmFzc2V0TmFtZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdBc3NldHMgc3ludGhlc2l6ZWQgd2l0aCBBcHBTY29wZWRTdGFnaW5nU3ludGhlc2l6ZXIgbXVzdCBpbmNsdWRlIGFuIFxcJ2Fzc2V0TmFtZVxcJyBpbiB0aGUgYXNzZXQgc291cmNlIGRlZmluaXRpb24uJyk7XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIGltYWdlIHB1Ymxpc2hpbmcgcm9sZSBpZiBpdCBkb2Vzbid0IGV4aXN0XG4gICAgdGhpcy5lbnN1cmVJbWFnZVJvbGUoKTtcblxuICAgIGNvbnN0IHJlcG9OYW1lID0gZ2VuZXJhdGVSZXBvTmFtZShgJHt0aGlzLmFwcElkfS8ke2Fzc2V0LmFzc2V0TmFtZX1gKTtcbiAgICBpZiAodGhpcy5zdGFnaW5nUmVwb3NbYXNzZXQuYXNzZXROYW1lXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnN0YWdpbmdSZXBvc1thc3NldC5hc3NldE5hbWVdID0gbmV3IGVjci5SZXBvc2l0b3J5KHRoaXMsIHJlcG9OYW1lLCB7XG4gICAgICAgIHJlcG9zaXRvcnlOYW1lOiByZXBvTmFtZSxcbiAgICAgICAgbGlmZWN5Y2xlUnVsZXM6IFt7XG4gICAgICAgICAgZGVzY3JpcHRpb246ICdHYXJiYWdlIGNvbGxlY3Qgb2xkIGltYWdlIHZlcnNpb25zIGFuZCBrZWVwIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGxhdGVzdCB2ZXJzaW9ucycsXG4gICAgICAgICAgbWF4SW1hZ2VDb3VudDogdGhpcy5wcm9wcy5pbWFnZUFzc2V0VmVyc2lvbkNvdW50ID8/IDMsXG4gICAgICAgIH1dLFxuICAgICAgfSk7XG4gICAgICBpZiAodGhpcy5pbWFnZVJvbGUpIHtcbiAgICAgICAgdGhpcy5zdGFnaW5nUmVwb3NbYXNzZXQuYXNzZXROYW1lXS5ncmFudFB1bGxQdXNoKHRoaXMuaW1hZ2VSb2xlKTtcbiAgICAgICAgdGhpcy5zdGFnaW5nUmVwb3NbYXNzZXQuYXNzZXROYW1lXS5ncmFudFJlYWQodGhpcy5pbWFnZVJvbGUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVwb05hbWU7XG5cbiAgICBmdW5jdGlvbiBnZW5lcmF0ZVJlcG9OYW1lKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICByZXR1cm4gbmFtZS50b0xvY2FsZUxvd2VyQ2FzZSgpLnJlcGxhY2UoJy4nLCAnLScpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhZGRGaWxlKGFzc2V0OiBGaWxlQXNzZXRTb3VyY2UpOiBGaWxlU3RhZ2luZ0xvY2F0aW9uIHtcbiAgICAvLyBIYXMgc2lkZSBlZmZlY3RzIHNvIG11c3QgZ28gZmlyc3RcbiAgICBjb25zdCBidWNrZXROYW1lID0gdGhpcy5nZXRDcmVhdGVCdWNrZXQoKTtcblxuICAgIHJldHVybiB7XG4gICAgICBidWNrZXROYW1lLFxuICAgICAgYXNzdW1lUm9sZUFybjogdGhpcy5maWxlUm9sZU1hbmlmZXN0QXJuLFxuICAgICAgcHJlZml4OiBhc3NldC5kZXBsb3lUaW1lID8gREVQTE9ZX1RJTUVfUFJFRklYIDogdW5kZWZpbmVkLFxuICAgICAgZGVwZW5kZW5jeVN0YWNrOiB0aGlzLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgYWRkRG9ja2VySW1hZ2UoYXNzZXQ6IERvY2tlckltYWdlQXNzZXRTb3VyY2UpOiBJbWFnZVN0YWdpbmdMb2NhdGlvbiB7XG4gICAgLy8gSGFzIHNpZGUgZWZmZWN0cyBzbyBtdXN0IGdvIGZpcnN0XG4gICAgY29uc3QgcmVwb05hbWUgPSB0aGlzLmdldENyZWF0ZVJlcG8oYXNzZXQpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHJlcG9OYW1lLFxuICAgICAgYXNzdW1lUm9sZUFybjogdGhpcy5pbWFnZVJvbGVNYW5pZmVzdEFybixcbiAgICAgIGRlcGVuZGVuY3lTdGFjazogdGhpcyxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFN5bnRoZXNpemVzIHRoZSBjbG91ZGZvcm1hdGlvbiB0ZW1wbGF0ZSBpbnRvIGEgY2xvdWQgYXNzZW1ibHkuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIF9zeW50aGVzaXplVGVtcGxhdGUoc2Vzc2lvbjogSVN5bnRoZXNpc1Nlc3Npb24sIGxvb2t1cFJvbGVBcm4/OiBzdHJpbmcgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICBzdXBlci5fc3ludGhlc2l6ZVRlbXBsYXRlKHNlc3Npb24sIGxvb2t1cFJvbGVBcm4pO1xuXG4gICAgY29uc3QgYnVpbGRlciA9IHNlc3Npb24uYXNzZW1ibHk7XG4gICAgY29uc3Qgb3V0UGF0aCA9IHBhdGguam9pbihidWlsZGVyLm91dGRpciwgdGhpcy50ZW1wbGF0ZUZpbGUpO1xuICAgIGNvbnN0IHNpemUgPSBmcy5zdGF0U3luYyhvdXRQYXRoKS5zaXplO1xuICAgIGlmIChzaXplID4gNTEyMDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgU3RhZ2luZyByZXNvdXJjZSB0ZW1wbGF0ZSBjYW5ub3QgYmUgZ3JlYXRlciB0aGFuIDUxMjAwIGJ5dGVzLCBidXQgZ290ICR7c2l6ZX0gYnl0ZXNgKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
321
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1zdGFnaW5nLXN0YWNrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGVmYXVsdC1zdGFnaW5nLXN0YWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHlCQUF5QjtBQUN6Qiw2QkFBNkI7QUFDN0IsMkNBQTJDO0FBQzNDLDJDQUEyQztBQUMzQywyQ0FBMkM7QUFDM0MseUNBQXlDO0FBQ3pDLDJDQVkwQjtBQUMxQiw0RUFBMEU7QUFDMUUsNENBQTRDO0FBQzVDLDJDQUF1QztBQUkxQixRQUFBLGtCQUFrQixHQUFHLGNBQWMsQ0FBQztBQUVqRDs7Ozs7OztHQU9HO0FBQ0gsTUFBYSwwQkFBMkIsU0FBUSxzQkFBUztJQUN2RCxZQUFZLEtBQWdCLEVBQUUsRUFBVTtRQUN0QyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0tBQ2xCOzs7O0FBSFUsZ0VBQTBCO0FBcUd2Qzs7Ozs7R0FLRztBQUNILE1BQWEsbUJBQW9CLFNBQVEsWUFBSztJQUM1Qzs7T0FFRztJQUNJLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBbUM7Ozs7Ozs7Ozs7UUFDdkQsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN6RixPQUFPO1lBQ0wsc0JBQXNCLENBQUMsS0FBSyxFQUFFLE9BQU87Z0JBQ25DLE1BQU0sR0FBRyxHQUFHLFVBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxVQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUNuQixNQUFNLElBQUksS0FBSyxDQUFDLFNBQVMsS0FBSyxDQUFDLFNBQVMseUJBQXlCLENBQUMsQ0FBQztpQkFDcEU7Z0JBRUQsNEVBQTRFO2dCQUM1RSwwRUFBMEU7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LENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQztRQUN2QyxJQUFJLElBQUksR0FBRyxLQUFLLEVBQUU7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyx5RUFBeUUsSUFBSSxRQUFRLENBQUMsQ0FBQztTQUN4RztLQUNGOzs7O0FBM1VVLGtEQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyBlY3IgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjcic7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgKiBhcyBrbXMgZnJvbSAnYXdzLWNkay1saWIvYXdzLWttcyc7XG5pbXBvcnQgKiBhcyBzMyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMnO1xuaW1wb3J0IHtcbiAgQXBwLFxuICBBcm5Gb3JtYXQsXG4gIEJvb3RzdHJhcGxlc3NTeW50aGVzaXplcixcbiAgRG9ja2VySW1hZ2VBc3NldFNvdXJjZSxcbiAgRHVyYXRpb24sXG4gIEZpbGVBc3NldFNvdXJjZSxcbiAgSVN5bnRoZXNpc1Nlc3Npb24sXG4gIFJlbW92YWxQb2xpY3ksXG4gIFN0YWNrLFxuICBTdGFja1Byb3BzLFxuICBJTkxJTkVfQ1VTVE9NX1JFU09VUkNFX0NPTlRFWFQsXG59IGZyb20gJ2F3cy1jZGstbGliL2NvcmUnO1xuaW1wb3J0IHsgU3RyaW5nU3BlY2lhbGl6ZXIgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9oZWxwZXJzLWludGVybmFsJztcbmltcG9ydCAqIGFzIGN4YXBpIGZyb20gJ2F3cy1jZGstbGliL2N4LWFwaSc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IEJvb3RzdHJhcFJvbGUgfSBmcm9tICcuL2Jvb3RzdHJhcC1yb2xlcyc7XG5pbXBvcnQgeyBGaWxlU3RhZ2luZ0xvY2F0aW9uLCBJU3RhZ2luZ1Jlc291cmNlcywgSVN0YWdpbmdSZXNvdXJjZXNGYWN0b3J5LCBJbWFnZVN0YWdpbmdMb2NhdGlvbiB9IGZyb20gJy4vc3RhZ2luZy1zdGFjayc7XG5cbmV4cG9ydCBjb25zdCBERVBMT1lfVElNRV9QUkVGSVggPSAnZGVwbG95LXRpbWUvJztcblxuLyoqXG4gKiBUaGlzIGlzIGEgZHVtbXkgY29uc3RydWN0IG1lYW50IHRvIHNpZ25pZnkgdGhhdCBhIHN0YWNrIGlzIHV0aWxpemluZ1xuICogdGhlIEFwcFN0YWdpbmdTeW50aGVzaXplci4gSXQgZG9lcyBub3QgZG8gYW55dGhpbmcsIGFuZCBpcyBub3QgbWVhbnRcbiAqIHRvIGJlIGNyZWF0ZWQgb24gaXRzIG93bi4gVGhpcyBjb25zdHJ1Y3Qgd2lsbCBiZSBhIHBhcnQgb2YgdGhlXG4gKiBjb25zdHJ1Y3QgdHJlZSBvbmx5IGFuZCBub3QgdGhlIENmbiB0ZW1wbGF0ZS4gVGhlIGNvbnN0cnVjdCB0cmVlIGlzXG4gKiB0aGVuIGVuY29kZWQgaW4gdGhlIEFXUzo6Q0RLOjpNZXRhZGF0YSByZXNvdXJjZSBvZiB0aGUgc3RhY2sgYW5kXG4gKiBpbmplc3RlZCBpbiBvdXIgbWV0cmljcyBsaWtlIGV2ZXJ5IG90aGVyIGNvbnN0cnVjdC5cbiAqL1xuZXhwb3J0IGNsYXNzIFVzaW5nQXBwU3RhZ2luZ1N5bnRoZXNpemVyIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gIH1cbn1cblxuLyoqXG4gKiBVc2VyIGNvbmZpZ3VyYWJsZSBvcHRpb25zIHRvIHRoZSBEZWZhdWx0U3RhZ2luZ1N0YWNrLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlZmF1bHRTdGFnaW5nU3RhY2tPcHRpb25zIHtcbiAgLyoqXG4gICAqIEEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBhcHBsaWNhdGlvbiB0aGF0IHRoZSBzdGFnaW5nIHN0YWNrIGJlbG9uZ3MgdG8uXG4gICAqXG4gICAqIFRoaXMgaWRlbnRpZmllciB3aWxsIGJlIHVzZWQgaW4gdGhlIG5hbWUgb2Ygc3RhZ2luZyByZXNvdXJjZXNcbiAgICogY3JlYXRlZCBmb3IgdGhpcyBhcHBsaWNhdGlvbiwgYW5kIHNob3VsZCBiZSB1bmlxdWUgYWNyb3NzIENESyBhcHBzLlxuICAgKlxuICAgKiBUaGUgaWRlbnRpZmllciBzaG91bGQgaW5jbHVkZSBsb3dlcmNhc2UgY2hhcmFjdGVycyBhbmQgZGFzaGVzICgnLScpIG9ubHlcbiAgICogYW5kIGhhdmUgYSBtYXhpbXVtIG9mIDIwIGNoYXJhY3RlcnMuXG4gICAqL1xuICByZWFkb25seSBhcHBJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFeHBsaWNpdCBuYW1lIGZvciB0aGUgc3RhZ2luZyBidWNrZXRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBhIHdlbGwta25vd24gbmFtZSB1bmlxdWUgdG8gdGhpcyBhcHAvZW52LlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhZ2luZ0J1Y2tldE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBhc3MgaW4gYW4gZXhpc3Rpbmcgcm9sZSB0byBiZSB1c2VkIGFzIHRoZSBmaWxlIHB1Ymxpc2hpbmcgcm9sZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBhIG5ldyByb2xlIHdpbGwgYmUgY3JlYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgZmlsZUFzc2V0UHVibGlzaGluZ1JvbGU/OiBCb290c3RyYXBSb2xlO1xuXG4gIC8qKlxuICAgKiBQYXNzIGluIGFuIGV4aXN0aW5nIHJvbGUgdG8gYmUgdXNlZCBhcyB0aGUgaW1hZ2UgcHVibGlzaGluZyByb2xlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGEgbmV3IHJvbGUgd2lsbCBiZSBjcmVhdGVkXG4gICAqL1xuICByZWFkb25seSBpbWFnZUFzc2V0UHVibGlzaGluZ1JvbGU/OiBCb290c3RyYXBSb2xlO1xuXG4gIC8qKlxuICAgKiBUaGUgbGlmZXRpbWUgZm9yIGRlcGxveSB0aW1lIGZpbGUgYXNzZXRzLlxuICAgKlxuICAgKiBBc3NldHMgdGhhdCBhcmUgb25seSBuZWNlc3NhcnkgYXQgZGVwbG95bWVudCB0aW1lIChmb3IgaW5zdGFuY2UsXG4gICAqIENsb3VkRm9ybWF0aW9uIHRlbXBsYXRlcyBhbmQgTGFtYmRhIHNvdXJjZSBjb2RlIGJ1bmRsZXMpIHdpbGwgYmVcbiAgICogYXV0b21hdGljYWxseSBkZWxldGVkIGFmdGVyIHRoaXMgbWFueSBkYXlzLiBBc3NldHMgdGhhdCBtYXkgYmVcbiAgICogcmVhZCBmcm9tIHRoZSBzdGFnaW5nIGJ1Y2tldCBkdXJpbmcgeW91ciBhcHBsaWNhdGlvbidzIHJ1biB0aW1lXG4gICAqIHdpbGwgbm90IGJlIGRlbGV0ZWQuXG4gICAqXG4gICAqIFNldCB0aGlzIHRvIHRoZSBsZW5ndGggb2YgdGltZSB5b3Ugd2lzaCB0byBiZSBhYmxlIHRvIHJvbGwgYmFjayB0b1xuICAgKiBwcmV2aW91cyB2ZXJzaW9ucyBvZiB5b3VyIGFwcGxpY2F0aW9uIHdpdGhvdXQgaGF2aW5nIHRvIGRvIGEgbmV3XG4gICAqIGBjZGsgc3ludGhgIGFuZCByZS11cGxvYWQgb2YgYXNzZXRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIER1cmF0aW9uLmRheXMoMzApXG4gICAqL1xuICByZWFkb25seSBkZXBsb3lUaW1lRmlsZUFzc2V0TGlmZXRpbWU/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gbnVtYmVyIG9mIGltYWdlIHZlcnNpb25zIHRvIHN0b3JlIGluIGEgcmVwb3NpdG9yeS5cbiAgICpcbiAgICogUHJldmlvdXMgdmVyc2lvbnMgb2YgYW4gaW1hZ2UgY2FuIGJlIHN0b3JlZCBmb3Igcm9sbGJhY2sgcHVycG9zZXMuXG4gICAqIE9uY2UgYSByZXBvc2l0b3J5IGhhcyBtb3JlIHRoYW4gMyBpbWFnZSB2ZXJzaW9ucyBzdG9yZWQsIHRoZSBvbGRlc3RcbiAgICogdmVyc2lvbiB3aWxsIGJlIGRpc2NhcmRlZC4gVGhpcyBhbGxvd3MgZm9yIHNlbnNpYmxlIGdhcmJhZ2UgY29sbGVjdGlvblxuICAgKiB3aGlsZSBtYWludGFpbmluZyBhIGZldyBwcmV2aW91cyB2ZXJzaW9ucyBmb3Igcm9sbGJhY2sgc2NlbmFyaW9zLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHVwIHRvIDMgdmVyc2lvbnMgc3RvcmVkXG4gICAqL1xuICByZWFkb25seSBpbWFnZUFzc2V0VmVyc2lvbkNvdW50PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBdXRvIGRlbGV0ZXMgb2JqZWN0cyBpbiB0aGUgc3RhZ2luZyBTMyBidWNrZXQgYW5kIGltYWdlcyBpbiB0aGVcbiAgICogc3RhZ2luZyBFQ1IgcmVwb3NpdG9yaWVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBhdXRvRGVsZXRlU3RhZ2luZ0Fzc2V0cz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogRGVmYXVsdCBTdGFnaW5nIFN0YWNrIFByb3BlcnRpZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZWZhdWx0U3RhZ2luZ1N0YWNrUHJvcHMgZXh0ZW5kcyBEZWZhdWx0U3RhZ2luZ1N0YWNrT3B0aW9ucywgU3RhY2tQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBkZXBsb3kgYWN0aW9uIHJvbGUsIGlmIGdpdmVuXG4gICAqXG4gICAqIFRoaXMgcm9sZSB3aWxsIG5lZWQgcGVybWlzc2lvbnMgdG8gcmVhZCBmcm9tIHRvIHRoZSBzdGFnaW5nIHJlc291cmNlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBUaGUgQ0xJIGNyZWRlbnRpYWxzIGFyZSBhc3N1bWVkLCBubyBhZGRpdGlvbmFsIHBlcm1pc3Npb25zIGFyZSBncmFudGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVwbG95Um9sZUFybj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHF1YWxpZmllciB1c2VkIHRvIHNwZWNpYWxpemUgc3RyaW5nc1xuICAgKlxuICAgKiBTaG91bGRuJ3QgYmUgbmVjZXNzYXJ5IGJ1dCB3aG8ga25vd3Mgd2hhdCBwZW9wbGUgbWlnaHQgZG8uXG4gICAqL1xuICByZWFkb25seSBxdWFsaWZpZXI6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIGRlZmF1bHQgU3RhZ2luZyBTdGFjayB0aGF0IGltcGxlbWVudHMgSVN0YWdpbmdSZXNvdXJjZXMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IGRlZmF1bHRTdGFnaW5nU3RhY2sgPSBEZWZhdWx0U3RhZ2luZ1N0YWNrLmZhY3RvcnkoeyBhcHBJZDogJ215LWFwcC1pZCcgfSk7XG4gKi9cbmV4cG9ydCBjbGFzcyBEZWZhdWx0U3RhZ2luZ1N0YWNrIGV4dGVuZHMgU3RhY2sgaW1wbGVtZW50cyBJU3RhZ2luZ1Jlc291cmNlcyB7XG4gIC8qKlxuICAgKiBSZXR1cm4gYSBmYWN0b3J5IHRoYXQgd2lsbCBjcmVhdGUgRGVmYXVsdFN0YWdpbmdTdGFja3NcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZmFjdG9yeShvcHRpb25zOiBEZWZhdWx0U3RhZ2luZ1N0YWNrT3B0aW9ucyk6IElTdGFnaW5nUmVzb3VyY2VzRmFjdG9yeSB7XG4gICAgY29uc3QgYXBwSWQgPSBvcHRpb25zLmFwcElkLnRvTG9jYWxlTG93ZXJDYXNlKCkucmVwbGFjZSgvW15hLXowLTktXS9nLCAnLScpLnNsaWNlKDAsIDIwKTtcbiAgICByZXR1cm4ge1xuICAgICAgb2J0YWluU3RhZ2luZ1Jlc291cmNlcyhzdGFjaywgY29udGV4dCkge1xuICAgICAgICBjb25zdCBhcHAgPSBBcHAub2Yoc3RhY2spO1xuICAgICAgICBpZiAoIUFwcC5pc0FwcChhcHApKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTdGFjayAke3N0YWNrLnN0YWNrTmFtZX0gbXVzdCBiZSBwYXJ0IG9mIGFuIEFwcGApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQmVjYXVzZSB3ZSBkbyBub3Qga2VlcCBtZXRyaWNzIGluIHRoZSBEZWZhdWx0U3RhZ2luZ1N0YWNrLCB3ZSB3aWxsIGluamVjdFxuICAgICAgICAvLyBhIGR1bW15IGNvbnN0cnVjdCBpbnRvIHRoZSBzdGFjayB1c2luZyB0aGUgRGVmYXVsdFN0YWdpbmdTdGFjayBpbnN0ZWFkLlxuICAgICAgICBpZiAoY3hhcGkuQU5BTFlUSUNTX1JFUE9SVElOR19FTkFCTEVEX0NPTlRFWFQpIHtcbiAgICAgICAgICBuZXcgVXNpbmdBcHBTdGFnaW5nU3ludGhlc2l6ZXIoc3RhY2ssIGBVc2luZ0FwcFN0YWdpbmdTeW50aGVzaXplci8ke3N0YWNrLnN0YWNrTmFtZX1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHN0YWNrSWQgPSBgU3RhZ2luZ1N0YWNrLSR7YXBwSWR9LSR7Y29udGV4dC5lbnZpcm9ubWVudFN0cmluZ31gO1xuICAgICAgICByZXR1cm4gbmV3IERlZmF1bHRTdGFnaW5nU3RhY2soYXBwLCBzdGFja0lkLCB7XG4gICAgICAgICAgLi4ub3B0aW9ucyxcblxuICAgICAgICAgIC8vIERvZXMgbm90IG5lZWQgdG8gY29udGFpbiBlbnZpcm9ubWVudCBiZWNhdXNlIHN0YWNrIG5hbWVzIGFyZSB1bmlxdWUgaW5zaWRlIGFuIGVudiBhbnl3YXlcbiAgICAgICAgICBzdGFja05hbWU6IGBTdGFnaW5nU3RhY2stJHthcHBJZH1gLFxuICAgICAgICAgIGVudjoge1xuICAgICAgICAgICAgYWNjb3VudDogc3RhY2suYWNjb3VudCxcbiAgICAgICAgICAgIHJlZ2lvbjogc3RhY2sucmVnaW9uLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgYXBwSWQsXG4gICAgICAgICAgcXVhbGlmaWVyOiBjb250ZXh0LnF1YWxpZmllcixcbiAgICAgICAgICBkZXBsb3lSb2xlQXJuOiBjb250ZXh0LmRlcGxveVJvbGVBcm4sXG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgYXNzZXQgcHVibGlzaGluZyByb2xlIG5hbWUgZm9yIGZpbGUgKFMzKSBhc3NldHMuXG4gICAqL1xuICBwcml2YXRlIGdldCBmaWxlUm9sZU5hbWUoKSB7XG4gICAgcmV0dXJuIGBjZGstJHt0aGlzLmFwcElkfS1maWxlLXJvbGUtJHt0aGlzLnJlZ2lvbn1gO1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgYXNzZXQgcHVibGlzaGluZyByb2xlIG5hbWUgZm9yIGRvY2tlciAoRUNSKSBhc3NldHMuXG4gICAqL1xuICBwcml2YXRlIGdldCBpbWFnZVJvbGVOYW1lKCkge1xuICAgIHJldHVybiBgY2RrLSR7dGhpcy5hcHBJZH0taW1hZ2Utcm9sZS0ke3RoaXMucmVnaW9ufWA7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGFwcC1zY29wZWQsIGV2aXJvbm1lbnQta2V5ZWQgc3RhZ2luZyBidWNrZXQuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc3RhZ2luZ0J1Y2tldD86IHMzLkJ1Y2tldDtcblxuICAvKipcbiAgICogVGhlIGFwcC1zY29wZWQsIGVudmlyb25tZW50LWtleWVkIGVjciByZXBvc2l0b3JpZXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgYXBwLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHN0YWdpbmdSZXBvczogUmVjb3JkPHN0cmluZywgZWNyLlJlcG9zaXRvcnk+O1xuXG4gIC8qKlxuICAgKiBUaGUgc3RhY2sgdG8gYWRkIGRlcGVuZGVuY2llcyB0by5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBkZXBlbmRlbmN5U3RhY2s6IFN0YWNrO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgYXBwSWQ6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBzdGFnaW5nQnVja2V0TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogRmlsZSBwdWJsaXNoIHJvbGUgQVJOIGluIGFzc2V0IG1hbmlmZXN0IGZvcm1hdFxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBwcm92aWRlZEZpbGVSb2xlPzogQm9vdHN0cmFwUm9sZTtcbiAgcHJpdmF0ZSBmaWxlUm9sZT86IGlhbS5JUm9sZTtcbiAgcHJpdmF0ZSBmaWxlUm9sZU1hbmlmZXN0QXJuPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJbWFnZSBwdWJsaXNoaW5nIHJvbGUgQVJOIGluIGFzc2V0IG1hbmlmZXN0IGZvcm1hdFxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBwcm92aWRlZEltYWdlUm9sZT86IEJvb3RzdHJhcFJvbGU7XG4gIHByaXZhdGUgaW1hZ2VSb2xlPzogaWFtLklSb2xlO1xuICBwcml2YXRlIGRpZEltYWdlUm9sZSA9IGZhbHNlO1xuICBwcml2YXRlIGltYWdlUm9sZU1hbmlmZXN0QXJuPzogc3RyaW5nO1xuICBwcml2YXRlIGF1dG9EZWxldGVTdGFnaW5nQXNzZXRzOiBib29sZWFuO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVwbG95Um9sZUFybj86IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQXBwLCBpZDogc3RyaW5nLCBwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBEZWZhdWx0U3RhZ2luZ1N0YWNrUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgc3ludGhlc2l6ZXI6IG5ldyBCb290c3RyYXBsZXNzU3ludGhlc2l6ZXIoKSxcbiAgICAgIGFuYWx5dGljc1JlcG9ydGluZzogZmFsc2UsIC8vIHJlbW92aW5nIEFXUzo6Q0RLOjpNZXRhZGF0YSBjb25zdHJ1Y3Qgc2F2ZXMgfjNLQlxuICAgIH0pO1xuICAgIC8vIHJlbW92aW5nIHBhdGggbWV0YWRhdGEgc2F2ZXMgfjJLQlxuICAgIHRoaXMubm9kZS5zZXRDb250ZXh0KGN4YXBpLlBBVEhfTUVUQURBVEFfRU5BQkxFX0NPTlRFWFQsIGZhbHNlKTtcblxuICAgIC8vIEZvciBhbGwgcmVzb3VyY2VzIHVuZGVyIHRoZSBkZWZhdWx0IHN0YWdpbmcgc3RhY2ssIHdlIHdhbnQgdG8gaW5saW5lIGN1c3RvbVxuICAgIC8vIHJlc291cmNlcyBiZWNhdXNlIHRoZSBzdGFnaW5nIGJ1Y2tldCBuZWNlc3NhcnkgZm9yIGN1c3RvbSByZXNvdXJjZSBhc3NldHNcbiAgICAvLyBkb2VzIG5vdCBleGlzdCB5ZXQuXG4gICAgdGhpcy5ub2RlLnNldENvbnRleHQoSU5MSU5FX0NVU1RPTV9SRVNPVVJDRV9DT05URVhULCB0cnVlKTtcbiAgICB0aGlzLmF1dG9EZWxldGVTdGFnaW5nQXNzZXRzID0gcHJvcHMuYXV0b0RlbGV0ZVN0YWdpbmdBc3NldHMgPz8gdHJ1ZTtcblxuICAgIHRoaXMuYXBwSWQgPSB0aGlzLnZhbGlkYXRlQXBwSWQocHJvcHMuYXBwSWQpO1xuICAgIHRoaXMuZGVwZW5kZW5jeVN0YWNrID0gdGhpcztcblxuICAgIHRoaXMuZGVwbG95Um9sZUFybiA9IHByb3BzLmRlcGxveVJvbGVBcm47XG4gICAgdGhpcy5zdGFnaW5nQnVja2V0TmFtZSA9IHByb3BzLnN0YWdpbmdCdWNrZXROYW1lO1xuICAgIGNvbnN0IHNwZWNpYWxpemVyID0gbmV3IFN0cmluZ1NwZWNpYWxpemVyKHRoaXMsIHByb3BzLnF1YWxpZmllcik7XG5cbiAgICB0aGlzLnByb3ZpZGVkRmlsZVJvbGUgPSBwcm9wcy5maWxlQXNzZXRQdWJsaXNoaW5nUm9sZT8uX3NwZWNpYWxpemUoc3BlY2lhbGl6ZXIpO1xuICAgIHRoaXMucHJvdmlkZWRJbWFnZVJvbGUgPSBwcm9wcy5pbWFnZUFzc2V0UHVibGlzaGluZ1JvbGU/Ll9zcGVjaWFsaXplKHNwZWNpYWxpemVyKTtcbiAgICB0aGlzLnN0YWdpbmdSZXBvcyA9IHt9O1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZUFwcElkKGlkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBlcnJvcnMgPSBbXTtcbiAgICBpZiAoaWQubGVuZ3RoID4gMjApIHtcbiAgICAgIGVycm9ycy5wdXNoKGBhcHBJZCBleHBlY3RlZCBubyBtb3JlIHRoYW4gMjAgY2hhcmFjdGVycyBidXQgZ290ICR7aWQubGVuZ3RofSBjaGFyYWN0ZXJzLmApO1xuICAgIH1cbiAgICBpZiAoaWQgIT09IGlkLnRvTG9jYWxlTG93ZXJDYXNlKCkpIHtcbiAgICAgIGVycm9ycy5wdXNoKCdhcHBJZCBvbmx5IGFjY2VwdHMgbG93ZXJjYXNlIGNoYXJhY3RlcnMuJyk7XG4gICAgfVxuICAgIGlmICghL15bYS16MC05LV0qJC8udGVzdChpZCkpIHtcbiAgICAgIGVycm9ycy5wdXNoKCdhcHBJZCBleHBlY3RzIG9ubHkgbGV0dGVycywgbnVtYmVycywgYW5kIGRhc2hlcyAoXFwnLVxcJyknKTtcbiAgICB9XG5cbiAgICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihbXG4gICAgICAgIGBhcHBJZCAke2lkfSBoYXMgZXJyb3JzOmAsXG4gICAgICAgIC4uLmVycm9ycyxcbiAgICAgIF0uam9pbignXFxuJykpO1xuICAgIH1cbiAgICByZXR1cm4gaWQ7XG4gIH1cblxuICBwcml2YXRlIGVuc3VyZUZpbGVSb2xlKCkge1xuICAgIGlmICh0aGlzLnByb3ZpZGVkRmlsZVJvbGUpIHtcbiAgICAgIC8vIE92ZXJyaWRlXG4gICAgICB0aGlzLmZpbGVSb2xlTWFuaWZlc3RBcm4gPSB0aGlzLnByb3ZpZGVkRmlsZVJvbGUuX2FybkZvckNsb3VkQXNzZW1ibHkoKTtcbiAgICAgIGNvbnN0IGNmbkFybiA9IHRoaXMucHJvdmlkZWRGaWxlUm9sZS5fYXJuRm9yQ2xvdWRGb3JtYXRpb24oKTtcbiAgICAgIHRoaXMuZmlsZVJvbGUgPSBjZm5Bcm4gPyBpYW0uUm9sZS5mcm9tUm9sZUFybih0aGlzLCAnQ2RrRmlsZVJvbGUnLCBjZm5Bcm4pIDogdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHJvbGVOYW1lID0gdGhpcy5maWxlUm9sZU5hbWU7XG4gICAgdGhpcy5maWxlUm9sZSA9IG5ldyBpYW0uUm9sZSh0aGlzLCAnQ2RrRmlsZVJvbGUnLCB7XG4gICAgICByb2xlTmFtZSxcbiAgICAgIGFzc3VtZWRCeTogbmV3IGlhbS5BY2NvdW50UHJpbmNpcGFsKHRoaXMuYWNjb3VudCksXG4gICAgfSk7XG5cbiAgICB0aGlzLmZpbGVSb2xlTWFuaWZlc3RBcm4gPSBTdGFjay5vZih0aGlzKS5mb3JtYXRBcm4oe1xuICAgICAgcGFydGl0aW9uOiAnJHtBV1M6OlBhcnRpdGlvbn0nLFxuICAgICAgcmVnaW9uOiAnJywgLy8gaWFtIGlzIGdsb2JhbFxuICAgICAgc2VydmljZTogJ2lhbScsXG4gICAgICByZXNvdXJjZTogJ3JvbGUnLFxuICAgICAgcmVzb3VyY2VOYW1lOiByb2xlTmFtZSxcbiAgICAgIGFybkZvcm1hdDogQXJuRm9ybWF0LlNMQVNIX1JFU09VUkNFX05BTUUsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGVuc3VyZUltYWdlUm9sZSgpIHtcbiAgICAvLyBJdCBtYXkgZW5kIHVwIHNldHRpbmcgaW1hZ2VSb2xlIHRvIHVuZGVmaW5lZCwgYnV0IGF0IGxlYXN0IHdlIHRyaWVkXG4gICAgaWYgKHRoaXMuZGlkSW1hZ2VSb2xlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZGlkSW1hZ2VSb2xlID0gdHJ1ZTtcblxuICAgIGlmICh0aGlzLnByb3ZpZGVkSW1hZ2VSb2xlKSB7XG4gICAgICAvLyBPdmVycmlkZVxuICAgICAgdGhpcy5pbWFnZVJvbGVNYW5pZmVzdEFybiA9IHRoaXMucHJvdmlkZWRJbWFnZVJvbGUuX2FybkZvckNsb3VkQXNzZW1ibHkoKTtcbiAgICAgIGNvbnN0IGNmbkFybiA9IHRoaXMucHJvdmlkZWRJbWFnZVJvbGUuX2FybkZvckNsb3VkRm9ybWF0aW9uKCk7XG4gICAgICB0aGlzLmltYWdlUm9sZSA9IGNmbkFybiA/IGlhbS5Sb2xlLmZyb21Sb2xlQXJuKHRoaXMsICdDZGtJbWFnZVJvbGUnLCBjZm5Bcm4pIDogdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHJvbGVOYW1lID0gdGhpcy5pbWFnZVJvbGVOYW1lO1xuICAgIHRoaXMuaW1hZ2VSb2xlID0gbmV3IGlhbS5Sb2xlKHRoaXMsICdDZGtJbWFnZVJvbGUnLCB7XG4gICAgICByb2xlTmFtZSxcbiAgICAgIGFzc3VtZWRCeTogbmV3IGlhbS5BY2NvdW50UHJpbmNpcGFsKHRoaXMuYWNjb3VudCksXG4gICAgfSk7XG4gICAgdGhpcy5pbWFnZVJvbGVNYW5pZmVzdEFybiA9IFN0YWNrLm9mKHRoaXMpLmZvcm1hdEFybih7XG4gICAgICBwYXJ0aXRpb246ICcke0FXUzo6UGFydGl0aW9ufScsXG4gICAgICByZWdpb246ICcnLCAvLyBpYW0gaXMgZ2xvYmFsXG4gICAgICBzZXJ2aWNlOiAnaWFtJyxcbiAgICAgIHJlc291cmNlOiAncm9sZScsXG4gICAgICByZXNvdXJjZU5hbWU6IHJvbGVOYW1lLFxuICAgICAgYXJuRm9ybWF0OiBBcm5Gb3JtYXQuU0xBU0hfUkVTT1VSQ0VfTkFNRSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQnVja2V0S2V5KCk6IGttcy5JS2V5IHtcbiAgICByZXR1cm4gbmV3IGttcy5LZXkodGhpcywgJ0J1Y2tldEtleScsIHtcbiAgICAgIGFsaWFzOiBgYWxpYXMvY2RrLSR7dGhpcy5hcHBJZH0tc3RhZ2luZ2AsXG4gICAgICBhZG1pbnM6IFtuZXcgaWFtLkFjY291bnRQcmluY2lwYWwodGhpcy5hY2NvdW50KV0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldENyZWF0ZUJ1Y2tldCgpIHtcbiAgICBjb25zdCBzdGFnaW5nQnVja2V0TmFtZSA9IHRoaXMuc3RhZ2luZ0J1Y2tldE5hbWUgPz8gYGNkay0ke3RoaXMuYXBwSWR9LXN0YWdpbmctJHt0aGlzLmFjY291bnR9LSR7dGhpcy5yZWdpb259YDtcbiAgICBjb25zdCBidWNrZXRJZCA9ICdDZGtTdGFnaW5nQnVja2V0JztcbiAgICBjb25zdCBjcmVhdGVkQnVja2V0ID0gdGhpcy5ub2RlLnRyeUZpbmRDaGlsZChidWNrZXRJZCkgYXMgczMuQnVja2V0O1xuICAgIGlmIChjcmVhdGVkQnVja2V0KSB7XG4gICAgICByZXR1cm4gc3RhZ2luZ0J1Y2tldE5hbWU7XG4gICAgfVxuXG4gICAgdGhpcy5lbnN1cmVGaWxlUm9sZSgpO1xuICAgIGNvbnN0IGtleSA9IHRoaXMuY3JlYXRlQnVja2V0S2V5KCk7XG5cbiAgICAvLyBDcmVhdGUgdGhlIGJ1Y2tldCBvbmNlIHRoZSBkZXBlbmRlbmNpZXMgaGF2ZSBiZWVuIGNyZWF0ZWRcbiAgICBjb25zdCBidWNrZXQgPSBuZXcgczMuQnVja2V0KHRoaXMsIGJ1Y2tldElkLCB7XG4gICAgICBidWNrZXROYW1lOiBzdGFnaW5nQnVja2V0TmFtZSxcbiAgICAgIC4uLih0aGlzLmF1dG9EZWxldGVTdGFnaW5nQXNzZXRzID8ge1xuICAgICAgICByZW1vdmFsUG9saWN5OiBSZW1vdmFsUG9saWN5LkRFU1RST1ksXG4gICAgICAgIGF1dG9EZWxldGVPYmplY3RzOiB0cnVlLFxuICAgICAgfSA6IHtcbiAgICAgICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5SRVRBSU4sXG4gICAgICB9KSxcbiAgICAgIGVuY3J5cHRpb246IHMzLkJ1Y2tldEVuY3J5cHRpb24uS01TLFxuICAgICAgZW5jcnlwdGlvbktleToga2V5LFxuXG4gICAgICAvLyBNYW55IEFXUyBhY2NvdW50IHNhZmV0eSBjaGVja2VycyB3aWxsIGNvbXBsYWluIHdoZW4gYnVja2V0cyBhcmVuJ3QgdmVyc2lvbmVkXG4gICAgICB2ZXJzaW9uZWQ6IHRydWUsXG4gICAgICAvLyBNYW55IEFXUyBhY2NvdW50IHNhZmV0eSBjaGVja2VycyB3aWxsIGNvbXBsYWluIHdoZW4gU1NMIGlzbid0IGVuZm9yY2VkXG4gICAgICBlbmZvcmNlU1NMOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuZmlsZVJvbGUpIHtcbiAgICAgIGJ1Y2tldC5ncmFudFJlYWRXcml0ZSh0aGlzLmZpbGVSb2xlKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kZXBsb3lSb2xlQXJuKSB7XG4gICAgICBidWNrZXQuYWRkVG9SZXNvdXJjZVBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAnczM6R2V0T2JqZWN0KicsXG4gICAgICAgICAgJ3MzOkdldEJ1Y2tldConLFxuICAgICAgICAgICdzMzpMaXN0KicsXG4gICAgICAgIF0sXG4gICAgICAgIHJlc291cmNlczogW2J1Y2tldC5idWNrZXRBcm4sIGJ1Y2tldC5hcm5Gb3JPYmplY3RzKCcqJyldLFxuICAgICAgICBwcmluY2lwYWxzOiBbbmV3IGlhbS5Bcm5QcmluY2lwYWwodGhpcy5kZXBsb3lSb2xlQXJuKV0sXG4gICAgICB9KSk7XG4gICAgfVxuXG4gICAgLy8gT2JqZWN0cyBzaG91bGQgbmV2ZXIgYmUgb3ZlcndyaXR0ZW4sIGJ1dCBsZXQncyBtYWtlIHN1cmUgd2UgaGF2ZSBhIGxpZmVjeWNsZSBwb2xpY3lcbiAgICAvLyBmb3IgaXQgYW55d2F5LlxuICAgIGJ1Y2tldC5hZGRMaWZlY3ljbGVSdWxlKHtcbiAgICAgIG5vbmN1cnJlbnRWZXJzaW9uRXhwaXJhdGlvbjogRHVyYXRpb24uZGF5cygzNjUpLFxuICAgIH0pO1xuXG4gICAgYnVja2V0LmFkZExpZmVjeWNsZVJ1bGUoe1xuICAgICAgcHJlZml4OiBERVBMT1lfVElNRV9QUkVGSVgsXG4gICAgICBleHBpcmF0aW9uOiB0aGlzLnByb3BzLmRlcGxveVRpbWVGaWxlQXNzZXRMaWZldGltZSA/PyBEdXJhdGlvbi5kYXlzKDMwKSxcbiAgICB9KTtcblxuICAgIHJldHVybiBzdGFnaW5nQnVja2V0TmFtZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB3ZWxsLWtub3duIG5hbWUgb2YgdGhlIHJlcG9cbiAgICovXG4gIHByaXZhdGUgZ2V0Q3JlYXRlUmVwbyhhc3NldDogRG9ja2VySW1hZ2VBc3NldFNvdXJjZSk6IHN0cmluZyB7XG4gICAgaWYgKCFhc3NldC5hc3NldE5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQXNzZXRzIHN5bnRoZXNpemVkIHdpdGggQXBwU2NvcGVkU3RhZ2luZ1N5bnRoZXNpemVyIG11c3QgaW5jbHVkZSBhbiBcXCdhc3NldE5hbWVcXCcgaW4gdGhlIGFzc2V0IHNvdXJjZSBkZWZpbml0aW9uLicpO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSBpbWFnZSBwdWJsaXNoaW5nIHJvbGUgaWYgaXQgZG9lc24ndCBleGlzdFxuICAgIHRoaXMuZW5zdXJlSW1hZ2VSb2xlKCk7XG5cbiAgICBjb25zdCByZXBvTmFtZSA9IGdlbmVyYXRlUmVwb05hbWUoYCR7dGhpcy5hcHBJZH0vJHthc3NldC5hc3NldE5hbWV9YCk7XG4gICAgaWYgKHRoaXMuc3RhZ2luZ1JlcG9zW2Fzc2V0LmFzc2V0TmFtZV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5zdGFnaW5nUmVwb3NbYXNzZXQuYXNzZXROYW1lXSA9IG5ldyBlY3IuUmVwb3NpdG9yeSh0aGlzLCByZXBvTmFtZSwge1xuICAgICAgICByZXBvc2l0b3J5TmFtZTogcmVwb05hbWUsXG4gICAgICAgIGxpZmVjeWNsZVJ1bGVzOiBbe1xuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnR2FyYmFnZSBjb2xsZWN0IG9sZCBpbWFnZSB2ZXJzaW9ucyBhbmQga2VlcCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBsYXRlc3QgdmVyc2lvbnMnLFxuICAgICAgICAgIG1heEltYWdlQ291bnQ6IHRoaXMucHJvcHMuaW1hZ2VBc3NldFZlcnNpb25Db3VudCA/PyAzLFxuICAgICAgICB9XSxcbiAgICAgICAgLi4uKHRoaXMuYXV0b0RlbGV0ZVN0YWdpbmdBc3NldHMgPyB7XG4gICAgICAgICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgICAgICAgIGF1dG9EZWxldGVJbWFnZXM6IHRydWUsXG4gICAgICAgIH0gOiB7XG4gICAgICAgICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5SRVRBSU4sXG4gICAgICAgIH0pLFxuICAgICAgfSk7XG5cbiAgICAgIGlmICh0aGlzLmltYWdlUm9sZSkge1xuICAgICAgICB0aGlzLnN0YWdpbmdSZXBvc1thc3NldC5hc3NldE5hbWVdLmdyYW50UHVsbFB1c2godGhpcy5pbWFnZVJvbGUpO1xuICAgICAgICB0aGlzLnN0YWdpbmdSZXBvc1thc3NldC5hc3NldE5hbWVdLmdyYW50UmVhZCh0aGlzLmltYWdlUm9sZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXBvTmFtZTtcblxuICAgIGZ1bmN0aW9uIGdlbmVyYXRlUmVwb05hbWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiBuYW1lLnRvTG9jYWxlTG93ZXJDYXNlKCkucmVwbGFjZSgnLicsICctJyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFkZEZpbGUoYXNzZXQ6IEZpbGVBc3NldFNvdXJjZSk6IEZpbGVTdGFnaW5nTG9jYXRpb24ge1xuICAgIC8vIEhhcyBzaWRlIGVmZmVjdHMgc28gbXVzdCBnbyBmaXJzdFxuICAgIGNvbnN0IGJ1Y2tldE5hbWUgPSB0aGlzLmdldENyZWF0ZUJ1Y2tldCgpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGJ1Y2tldE5hbWUsXG4gICAgICBhc3N1bWVSb2xlQXJuOiB0aGlzLmZpbGVSb2xlTWFuaWZlc3RBcm4sXG4gICAgICBwcmVmaXg6IGFzc2V0LmRlcGxveVRpbWUgPyBERVBMT1lfVElNRV9QUkVGSVggOiB1bmRlZmluZWQsXG4gICAgICBkZXBlbmRlbmN5U3RhY2s6IHRoaXMsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBhZGREb2NrZXJJbWFnZShhc3NldDogRG9ja2VySW1hZ2VBc3NldFNvdXJjZSk6IEltYWdlU3RhZ2luZ0xvY2F0aW9uIHtcbiAgICAvLyBIYXMgc2lkZSBlZmZlY3RzIHNvIG11c3QgZ28gZmlyc3RcbiAgICBjb25zdCByZXBvTmFtZSA9IHRoaXMuZ2V0Q3JlYXRlUmVwbyhhc3NldCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgcmVwb05hbWUsXG4gICAgICBhc3N1bWVSb2xlQXJuOiB0aGlzLmltYWdlUm9sZU1hbmlmZXN0QXJuLFxuICAgICAgZGVwZW5kZW5jeVN0YWNrOiB0aGlzLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogU3ludGhlc2l6ZXMgdGhlIGNsb3VkZm9ybWF0aW9uIHRlbXBsYXRlIGludG8gYSBjbG91ZCBhc3NlbWJseS5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgX3N5bnRoZXNpemVUZW1wbGF0ZShzZXNzaW9uOiBJU3ludGhlc2lzU2Vzc2lvbiwgbG9va3VwUm9sZUFybj86IHN0cmluZyB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIHN1cGVyLl9zeW50aGVzaXplVGVtcGxhdGUoc2Vzc2lvbiwgbG9va3VwUm9sZUFybik7XG5cbiAgICBjb25zdCBidWlsZGVyID0gc2Vzc2lvbi5hc3NlbWJseTtcbiAgICBjb25zdCBvdXRQYXRoID0gcGF0aC5qb2luKGJ1aWxkZXIub3V0ZGlyLCB0aGlzLnRlbXBsYXRlRmlsZSk7XG4gICAgY29uc3Qgc2l6ZSA9IGZzLnN0YXRTeW5jKG91dFBhdGgpLnNpemU7XG4gICAgaWYgKHNpemUgPiA1MTIwMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBTdGFnaW5nIHJlc291cmNlIHRlbXBsYXRlIGNhbm5vdCBiZSBncmVhdGVyIHRoYW4gNTEyMDAgYnl0ZXMsIGJ1dCBnb3QgJHtzaXplfSBieXRlc2ApO1xuICAgIH1cbiAgfVxufVxuIl19
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@aws-cdk/app-staging-synthesizer-alpha",
3
3
  "private": false,
4
- "version": "2.84.0-alpha.0",
4
+ "version": "2.85.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",
@@ -84,19 +84,19 @@
84
84
  }
85
85
  },
86
86
  "dependencies": {
87
- "aws-cdk-lib": "2.84.0",
87
+ "aws-cdk-lib": "2.85.0",
88
88
  "constructs": "^10.0.0"
89
89
  },
90
90
  "devDependencies": {
91
- "aws-cdk-lib": "2.84.0",
92
- "@aws-cdk/integ-runner": "2.84.0-alpha.0",
93
- "@aws-cdk/integ-tests-alpha": "2.84.0-alpha.0",
91
+ "aws-cdk-lib": "2.85.0",
92
+ "@aws-cdk/integ-runner": "2.85.0-alpha.0",
93
+ "@aws-cdk/integ-tests-alpha": "2.85.0-alpha.0",
94
94
  "constructs": "^10.0.0",
95
- "@aws-cdk/cdk-build-tools": "2.84.0-alpha.0",
96
- "@aws-cdk/pkglint": "2.84.0-alpha.0"
95
+ "@aws-cdk/cdk-build-tools": "2.85.0-alpha.0",
96
+ "@aws-cdk/pkglint": "2.85.0-alpha.0"
97
97
  },
98
98
  "peerDependencies": {
99
- "aws-cdk-lib": "2.84.0",
99
+ "aws-cdk-lib": "2.85.0",
100
100
  "constructs": "^10.0.0"
101
101
  },
102
102
  "publishConfig": {