@btc-embedded/cdk-extensions 0.20.2 → 0.20.4
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 +207 -2
- package/API.md +344 -0
- package/CHANGELOG.md +10 -0
- package/lib/constructs/EventPipe.js +1 -1
- package/lib/constructs/ExportedService.js +1 -1
- package/lib/constructs/S3Bucket.js +1 -1
- package/lib/constructs/SecureRestApi.js +1 -1
- package/lib/constructs/SecureRestApiV2.js +1 -1
- package/lib/extensions/ApiGatewayExtension.js +1 -1
- package/lib/extensions/ApplicationLoadBalancerExtension.js +1 -1
- package/lib/extensions/ApplicationLoadBalancerExtensionV2.js +1 -1
- package/lib/extensions/CloudMapExtension.js +1 -1
- package/lib/extensions/DeactivatableServiceExtension.js +1 -1
- package/lib/extensions/DeploymentConfigExtension.d.ts +65 -0
- package/lib/extensions/DeploymentConfigExtension.js +69 -0
- package/lib/extensions/DocumentDbAccessExtension.js +1 -1
- package/lib/extensions/DomainEventMessagingExtension.js +1 -1
- package/lib/extensions/EfsMountExtension.js +1 -1
- package/lib/extensions/ExtraContainerExtension.js +1 -1
- package/lib/extensions/HTTPApiExtension.js +1 -1
- package/lib/extensions/LogExtension.js +1 -1
- package/lib/extensions/ModifyContainerDefinitionExtension.js +1 -1
- package/lib/extensions/ModifyTaskDefinitionExtension.js +1 -1
- package/lib/extensions/OpenIdExtension.js +1 -1
- package/lib/extensions/OpenTelemetryExtension.js +1 -1
- package/lib/extensions/PostgresDbAccessExtension.js +1 -1
- package/lib/extensions/SharedVolumeExtension.js +1 -1
- package/lib/extensions/TcpKeepAliveExtension.js +1 -1
- package/lib/extensions/index.d.ts +2 -1
- package/lib/extensions/index.js +3 -2
- package/lib/platform/ApiGateway.js +1 -1
- package/lib/platform/ApiGatewayVpcLink.js +2 -2
- package/lib/platform/ApplicationLoadBalancer.js +1 -1
- package/lib/platform/ApplicationLoadBalancerV2.js +2 -2
- package/lib/platform/BTCLogGroup.js +1 -1
- package/lib/platform/CognitoUserPool.js +2 -2
- package/lib/platform/DefaultUserPoolClients.js +1 -1
- package/lib/platform/DocumentDB.js +2 -2
- package/lib/platform/EcsCluster.js +1 -1
- package/lib/platform/EfsFileSystem.js +1 -1
- package/lib/platform/PrivateDnsNamespace.js +1 -1
- package/lib/platform/ResourceServer.js +1 -1
- package/lib/platform/Vpc.js +1 -1
- package/lib/platform/VpcV2.js +1 -1
- package/lib/utils/StackParameter.js +1 -1
- package/package.json +1 -1
package/.jsii
CHANGED
|
@@ -7199,6 +7199,211 @@
|
|
|
7199
7199
|
],
|
|
7200
7200
|
"symbolId": "src/platform/DefaultUserPoolClients:DefaultUserPoolClientsProps"
|
|
7201
7201
|
},
|
|
7202
|
+
"@btc-embedded/cdk-extensions.DeploymentConfigExtension": {
|
|
7203
|
+
"assembly": "@btc-embedded/cdk-extensions",
|
|
7204
|
+
"base": "@aws-cdk-containers/ecs-service-extensions.ServiceExtension",
|
|
7205
|
+
"docs": {
|
|
7206
|
+
"remarks": "This extension allows you to:\n1. Configure deployment parameters for faster or safer deployments\n2. Enable the use of cluster's FARGATE_SPOT capacity provider strategy",
|
|
7207
|
+
"stability": "experimental",
|
|
7208
|
+
"summary": "Extension that configures ECS service deployment options and capacity provider strategy."
|
|
7209
|
+
},
|
|
7210
|
+
"fqn": "@btc-embedded/cdk-extensions.DeploymentConfigExtension",
|
|
7211
|
+
"initializer": {
|
|
7212
|
+
"docs": {
|
|
7213
|
+
"stability": "experimental"
|
|
7214
|
+
},
|
|
7215
|
+
"locationInModule": {
|
|
7216
|
+
"filename": "src/extensions/DeploymentConfigExtension.ts",
|
|
7217
|
+
"line": 73
|
|
7218
|
+
},
|
|
7219
|
+
"parameters": [
|
|
7220
|
+
{
|
|
7221
|
+
"name": "props",
|
|
7222
|
+
"optional": true,
|
|
7223
|
+
"type": {
|
|
7224
|
+
"fqn": "@btc-embedded/cdk-extensions.DeploymentConfigExtensionProps"
|
|
7225
|
+
}
|
|
7226
|
+
}
|
|
7227
|
+
]
|
|
7228
|
+
},
|
|
7229
|
+
"kind": "class",
|
|
7230
|
+
"locationInModule": {
|
|
7231
|
+
"filename": "src/extensions/DeploymentConfigExtension.ts",
|
|
7232
|
+
"line": 70
|
|
7233
|
+
},
|
|
7234
|
+
"methods": [
|
|
7235
|
+
{
|
|
7236
|
+
"docs": {
|
|
7237
|
+
"stability": "experimental",
|
|
7238
|
+
"summary": "Prior to launching the task definition as a service, this hook is called on each extension to give it a chance to mutate the properties of the service to be created."
|
|
7239
|
+
},
|
|
7240
|
+
"locationInModule": {
|
|
7241
|
+
"filename": "src/extensions/DeploymentConfigExtension.ts",
|
|
7242
|
+
"line": 78
|
|
7243
|
+
},
|
|
7244
|
+
"name": "modifyServiceProps",
|
|
7245
|
+
"overrides": "@aws-cdk-containers/ecs-service-extensions.ServiceExtension",
|
|
7246
|
+
"parameters": [
|
|
7247
|
+
{
|
|
7248
|
+
"name": "props",
|
|
7249
|
+
"type": {
|
|
7250
|
+
"fqn": "@aws-cdk-containers/ecs-service-extensions.ServiceBuild"
|
|
7251
|
+
}
|
|
7252
|
+
}
|
|
7253
|
+
],
|
|
7254
|
+
"returns": {
|
|
7255
|
+
"type": {
|
|
7256
|
+
"fqn": "@aws-cdk-containers/ecs-service-extensions.ServiceBuild"
|
|
7257
|
+
}
|
|
7258
|
+
}
|
|
7259
|
+
},
|
|
7260
|
+
{
|
|
7261
|
+
"docs": {
|
|
7262
|
+
"remarks": "It is generally used to\ncreate any final resources which might depend on the service itself.",
|
|
7263
|
+
"stability": "experimental",
|
|
7264
|
+
"summary": "When this hook is implemented by extension, it allows the extension to use the service which has been created."
|
|
7265
|
+
},
|
|
7266
|
+
"locationInModule": {
|
|
7267
|
+
"filename": "src/extensions/DeploymentConfigExtension.ts",
|
|
7268
|
+
"line": 91
|
|
7269
|
+
},
|
|
7270
|
+
"name": "useService",
|
|
7271
|
+
"overrides": "@aws-cdk-containers/ecs-service-extensions.ServiceExtension",
|
|
7272
|
+
"parameters": [
|
|
7273
|
+
{
|
|
7274
|
+
"name": "service",
|
|
7275
|
+
"type": {
|
|
7276
|
+
"union": {
|
|
7277
|
+
"types": [
|
|
7278
|
+
{
|
|
7279
|
+
"fqn": "aws-cdk-lib.aws_ecs.Ec2Service"
|
|
7280
|
+
},
|
|
7281
|
+
{
|
|
7282
|
+
"fqn": "aws-cdk-lib.aws_ecs.FargateService"
|
|
7283
|
+
}
|
|
7284
|
+
]
|
|
7285
|
+
}
|
|
7286
|
+
}
|
|
7287
|
+
}
|
|
7288
|
+
]
|
|
7289
|
+
}
|
|
7290
|
+
],
|
|
7291
|
+
"name": "DeploymentConfigExtension",
|
|
7292
|
+
"symbolId": "src/extensions/DeploymentConfigExtension:DeploymentConfigExtension"
|
|
7293
|
+
},
|
|
7294
|
+
"@btc-embedded/cdk-extensions.DeploymentConfigExtensionProps": {
|
|
7295
|
+
"assembly": "@btc-embedded/cdk-extensions",
|
|
7296
|
+
"datatype": true,
|
|
7297
|
+
"docs": {
|
|
7298
|
+
"stability": "experimental",
|
|
7299
|
+
"summary": "Properties for configuring service deployment and capacity provider strategy."
|
|
7300
|
+
},
|
|
7301
|
+
"fqn": "@btc-embedded/cdk-extensions.DeploymentConfigExtensionProps",
|
|
7302
|
+
"kind": "interface",
|
|
7303
|
+
"locationInModule": {
|
|
7304
|
+
"filename": "src/extensions/DeploymentConfigExtension.ts",
|
|
7305
|
+
"line": 11
|
|
7306
|
+
},
|
|
7307
|
+
"name": "DeploymentConfigExtensionProps",
|
|
7308
|
+
"properties": [
|
|
7309
|
+
{
|
|
7310
|
+
"abstract": true,
|
|
7311
|
+
"docs": {
|
|
7312
|
+
"default": "0",
|
|
7313
|
+
"remarks": "This is the minimum number of tasks that should use Fargate Spot.\nOnly used when useCapacityProvider is true.",
|
|
7314
|
+
"stability": "experimental",
|
|
7315
|
+
"summary": "The base value for the FARGATE_SPOT capacity provider."
|
|
7316
|
+
},
|
|
7317
|
+
"immutable": true,
|
|
7318
|
+
"locationInModule": {
|
|
7319
|
+
"filename": "src/extensions/DeploymentConfigExtension.ts",
|
|
7320
|
+
"line": 33
|
|
7321
|
+
},
|
|
7322
|
+
"name": "capacityProviderBase",
|
|
7323
|
+
"optional": true,
|
|
7324
|
+
"type": {
|
|
7325
|
+
"primitive": "number"
|
|
7326
|
+
}
|
|
7327
|
+
},
|
|
7328
|
+
{
|
|
7329
|
+
"abstract": true,
|
|
7330
|
+
"docs": {
|
|
7331
|
+
"default": "1",
|
|
7332
|
+
"remarks": "Higher values mean more tasks will use Fargate Spot.\nOnly used when useCapacityProvider is true.",
|
|
7333
|
+
"stability": "experimental",
|
|
7334
|
+
"summary": "The weight value for the FARGATE_SPOT capacity provider."
|
|
7335
|
+
},
|
|
7336
|
+
"immutable": true,
|
|
7337
|
+
"locationInModule": {
|
|
7338
|
+
"filename": "src/extensions/DeploymentConfigExtension.ts",
|
|
7339
|
+
"line": 42
|
|
7340
|
+
},
|
|
7341
|
+
"name": "capacityProviderWeight",
|
|
7342
|
+
"optional": true,
|
|
7343
|
+
"type": {
|
|
7344
|
+
"primitive": "number"
|
|
7345
|
+
}
|
|
7346
|
+
},
|
|
7347
|
+
{
|
|
7348
|
+
"abstract": true,
|
|
7349
|
+
"docs": {
|
|
7350
|
+
"default": "200",
|
|
7351
|
+
"remarks": "Controls how many additional tasks can be started during deployment.",
|
|
7352
|
+
"stability": "experimental",
|
|
7353
|
+
"summary": "The maximum healthy percent for the service deployment."
|
|
7354
|
+
},
|
|
7355
|
+
"immutable": true,
|
|
7356
|
+
"locationInModule": {
|
|
7357
|
+
"filename": "src/extensions/DeploymentConfigExtension.ts",
|
|
7358
|
+
"line": 59
|
|
7359
|
+
},
|
|
7360
|
+
"name": "maxHealthyPercent",
|
|
7361
|
+
"optional": true,
|
|
7362
|
+
"type": {
|
|
7363
|
+
"primitive": "number"
|
|
7364
|
+
}
|
|
7365
|
+
},
|
|
7366
|
+
{
|
|
7367
|
+
"abstract": true,
|
|
7368
|
+
"docs": {
|
|
7369
|
+
"default": "100",
|
|
7370
|
+
"remarks": "Set to 0 to allow all tasks to be replaced at once for faster deployments\nwhere service interruption is acceptable.",
|
|
7371
|
+
"stability": "experimental",
|
|
7372
|
+
"summary": "The minimum healthy percent for the service deployment."
|
|
7373
|
+
},
|
|
7374
|
+
"immutable": true,
|
|
7375
|
+
"locationInModule": {
|
|
7376
|
+
"filename": "src/extensions/DeploymentConfigExtension.ts",
|
|
7377
|
+
"line": 51
|
|
7378
|
+
},
|
|
7379
|
+
"name": "minHealthyPercent",
|
|
7380
|
+
"optional": true,
|
|
7381
|
+
"type": {
|
|
7382
|
+
"primitive": "number"
|
|
7383
|
+
}
|
|
7384
|
+
},
|
|
7385
|
+
{
|
|
7386
|
+
"abstract": true,
|
|
7387
|
+
"docs": {
|
|
7388
|
+
"default": "false",
|
|
7389
|
+
"remarks": "When enabled, the service will use the capacity provider strategy\nconfigured at the cluster level (e.g., FARGATE_SPOT).\n\n**Requirements:**\n- The ECS cluster must have capacity providers enabled\n (set `enableFargateSpotCapacityProvider: true` in EcsCluster)",
|
|
7390
|
+
"stability": "experimental",
|
|
7391
|
+
"summary": "Whether to use the cluster's FARGATE_SPOT capacity provider strategy."
|
|
7392
|
+
},
|
|
7393
|
+
"immutable": true,
|
|
7394
|
+
"locationInModule": {
|
|
7395
|
+
"filename": "src/extensions/DeploymentConfigExtension.ts",
|
|
7396
|
+
"line": 24
|
|
7397
|
+
},
|
|
7398
|
+
"name": "useFargateSpotInstances",
|
|
7399
|
+
"optional": true,
|
|
7400
|
+
"type": {
|
|
7401
|
+
"primitive": "boolean"
|
|
7402
|
+
}
|
|
7403
|
+
}
|
|
7404
|
+
],
|
|
7405
|
+
"symbolId": "src/extensions/DeploymentConfigExtension:DeploymentConfigExtensionProps"
|
|
7406
|
+
},
|
|
7202
7407
|
"@btc-embedded/cdk-extensions.DocumentDB": {
|
|
7203
7408
|
"assembly": "@btc-embedded/cdk-extensions",
|
|
7204
7409
|
"base": "constructs.Construct",
|
|
@@ -13460,6 +13665,6 @@
|
|
|
13460
13665
|
"symbolId": "src/platform/VpcV2:VpcV2Props"
|
|
13461
13666
|
}
|
|
13462
13667
|
},
|
|
13463
|
-
"version": "0.20.
|
|
13464
|
-
"fingerprint": "
|
|
13668
|
+
"version": "0.20.4",
|
|
13669
|
+
"fingerprint": "35E6DRZ1Gjkx6CgoqfnHHbSqxzixD00+mbBYcmo+2Yk="
|
|
13465
13670
|
}
|
package/API.md
CHANGED
|
@@ -7686,6 +7686,113 @@ Specify valid logout URLs which should be added to the frontend user pool client
|
|
|
7686
7686
|
|
|
7687
7687
|
---
|
|
7688
7688
|
|
|
7689
|
+
### DeploymentConfigExtensionProps <a name="DeploymentConfigExtensionProps" id="@btc-embedded/cdk-extensions.DeploymentConfigExtensionProps"></a>
|
|
7690
|
+
|
|
7691
|
+
Properties for configuring service deployment and capacity provider strategy.
|
|
7692
|
+
|
|
7693
|
+
#### Initializer <a name="Initializer" id="@btc-embedded/cdk-extensions.DeploymentConfigExtensionProps.Initializer"></a>
|
|
7694
|
+
|
|
7695
|
+
```typescript
|
|
7696
|
+
import { DeploymentConfigExtensionProps } from '@btc-embedded/cdk-extensions'
|
|
7697
|
+
|
|
7698
|
+
const deploymentConfigExtensionProps: DeploymentConfigExtensionProps = { ... }
|
|
7699
|
+
```
|
|
7700
|
+
|
|
7701
|
+
#### Properties <a name="Properties" id="Properties"></a>
|
|
7702
|
+
|
|
7703
|
+
| **Name** | **Type** | **Description** |
|
|
7704
|
+
| --- | --- | --- |
|
|
7705
|
+
| <code><a href="#@btc-embedded/cdk-extensions.DeploymentConfigExtensionProps.property.capacityProviderBase">capacityProviderBase</a></code> | <code>number</code> | The base value for the FARGATE_SPOT capacity provider. |
|
|
7706
|
+
| <code><a href="#@btc-embedded/cdk-extensions.DeploymentConfigExtensionProps.property.capacityProviderWeight">capacityProviderWeight</a></code> | <code>number</code> | The weight value for the FARGATE_SPOT capacity provider. |
|
|
7707
|
+
| <code><a href="#@btc-embedded/cdk-extensions.DeploymentConfigExtensionProps.property.maxHealthyPercent">maxHealthyPercent</a></code> | <code>number</code> | The maximum healthy percent for the service deployment. |
|
|
7708
|
+
| <code><a href="#@btc-embedded/cdk-extensions.DeploymentConfigExtensionProps.property.minHealthyPercent">minHealthyPercent</a></code> | <code>number</code> | The minimum healthy percent for the service deployment. |
|
|
7709
|
+
| <code><a href="#@btc-embedded/cdk-extensions.DeploymentConfigExtensionProps.property.useFargateSpotInstances">useFargateSpotInstances</a></code> | <code>boolean</code> | Whether to use the cluster's FARGATE_SPOT capacity provider strategy. |
|
|
7710
|
+
|
|
7711
|
+
---
|
|
7712
|
+
|
|
7713
|
+
##### `capacityProviderBase`<sup>Optional</sup> <a name="capacityProviderBase" id="@btc-embedded/cdk-extensions.DeploymentConfigExtensionProps.property.capacityProviderBase"></a>
|
|
7714
|
+
|
|
7715
|
+
```typescript
|
|
7716
|
+
public readonly capacityProviderBase: number;
|
|
7717
|
+
```
|
|
7718
|
+
|
|
7719
|
+
- *Type:* number
|
|
7720
|
+
- *Default:* 0
|
|
7721
|
+
|
|
7722
|
+
The base value for the FARGATE_SPOT capacity provider.
|
|
7723
|
+
|
|
7724
|
+
This is the minimum number of tasks that should use Fargate Spot.
|
|
7725
|
+
Only used when useCapacityProvider is true.
|
|
7726
|
+
|
|
7727
|
+
---
|
|
7728
|
+
|
|
7729
|
+
##### `capacityProviderWeight`<sup>Optional</sup> <a name="capacityProviderWeight" id="@btc-embedded/cdk-extensions.DeploymentConfigExtensionProps.property.capacityProviderWeight"></a>
|
|
7730
|
+
|
|
7731
|
+
```typescript
|
|
7732
|
+
public readonly capacityProviderWeight: number;
|
|
7733
|
+
```
|
|
7734
|
+
|
|
7735
|
+
- *Type:* number
|
|
7736
|
+
- *Default:* 1
|
|
7737
|
+
|
|
7738
|
+
The weight value for the FARGATE_SPOT capacity provider.
|
|
7739
|
+
|
|
7740
|
+
Higher values mean more tasks will use Fargate Spot.
|
|
7741
|
+
Only used when useCapacityProvider is true.
|
|
7742
|
+
|
|
7743
|
+
---
|
|
7744
|
+
|
|
7745
|
+
##### `maxHealthyPercent`<sup>Optional</sup> <a name="maxHealthyPercent" id="@btc-embedded/cdk-extensions.DeploymentConfigExtensionProps.property.maxHealthyPercent"></a>
|
|
7746
|
+
|
|
7747
|
+
```typescript
|
|
7748
|
+
public readonly maxHealthyPercent: number;
|
|
7749
|
+
```
|
|
7750
|
+
|
|
7751
|
+
- *Type:* number
|
|
7752
|
+
- *Default:* 200
|
|
7753
|
+
|
|
7754
|
+
The maximum healthy percent for the service deployment.
|
|
7755
|
+
|
|
7756
|
+
Controls how many additional tasks can be started during deployment.
|
|
7757
|
+
|
|
7758
|
+
---
|
|
7759
|
+
|
|
7760
|
+
##### `minHealthyPercent`<sup>Optional</sup> <a name="minHealthyPercent" id="@btc-embedded/cdk-extensions.DeploymentConfigExtensionProps.property.minHealthyPercent"></a>
|
|
7761
|
+
|
|
7762
|
+
```typescript
|
|
7763
|
+
public readonly minHealthyPercent: number;
|
|
7764
|
+
```
|
|
7765
|
+
|
|
7766
|
+
- *Type:* number
|
|
7767
|
+
- *Default:* 100
|
|
7768
|
+
|
|
7769
|
+
The minimum healthy percent for the service deployment.
|
|
7770
|
+
|
|
7771
|
+
Set to 0 to allow all tasks to be replaced at once for faster deployments
|
|
7772
|
+
where service interruption is acceptable.
|
|
7773
|
+
|
|
7774
|
+
---
|
|
7775
|
+
|
|
7776
|
+
##### `useFargateSpotInstances`<sup>Optional</sup> <a name="useFargateSpotInstances" id="@btc-embedded/cdk-extensions.DeploymentConfigExtensionProps.property.useFargateSpotInstances"></a>
|
|
7777
|
+
|
|
7778
|
+
```typescript
|
|
7779
|
+
public readonly useFargateSpotInstances: boolean;
|
|
7780
|
+
```
|
|
7781
|
+
|
|
7782
|
+
- *Type:* boolean
|
|
7783
|
+
- *Default:* false
|
|
7784
|
+
|
|
7785
|
+
Whether to use the cluster's FARGATE_SPOT capacity provider strategy.
|
|
7786
|
+
|
|
7787
|
+
When enabled, the service will use the capacity provider strategy
|
|
7788
|
+
configured at the cluster level (e.g., FARGATE_SPOT).
|
|
7789
|
+
|
|
7790
|
+
**Requirements:**
|
|
7791
|
+
- The ECS cluster must have capacity providers enabled
|
|
7792
|
+
(set `enableFargateSpotCapacityProvider: true` in EcsCluster)
|
|
7793
|
+
|
|
7794
|
+
---
|
|
7795
|
+
|
|
7689
7796
|
### DocumentDbAccessExtensionProps <a name="DocumentDbAccessExtensionProps" id="@btc-embedded/cdk-extensions.DocumentDbAccessExtensionProps"></a>
|
|
7690
7797
|
|
|
7691
7798
|
#### Initializer <a name="Initializer" id="@btc-embedded/cdk-extensions.DocumentDbAccessExtensionProps.Initializer"></a>
|
|
@@ -10927,6 +11034,243 @@ connected to the service.
|
|
|
10927
11034
|
---
|
|
10928
11035
|
|
|
10929
11036
|
|
|
11037
|
+
### DeploymentConfigExtension <a name="DeploymentConfigExtension" id="@btc-embedded/cdk-extensions.DeploymentConfigExtension"></a>
|
|
11038
|
+
|
|
11039
|
+
Extension that configures ECS service deployment options and capacity provider strategy.
|
|
11040
|
+
|
|
11041
|
+
This extension allows you to:
|
|
11042
|
+
1. Configure deployment parameters for faster or safer deployments
|
|
11043
|
+
2. Enable the use of cluster's FARGATE_SPOT capacity provider strategy
|
|
11044
|
+
|
|
11045
|
+
#### Initializers <a name="Initializers" id="@btc-embedded/cdk-extensions.DeploymentConfigExtension.Initializer"></a>
|
|
11046
|
+
|
|
11047
|
+
```typescript
|
|
11048
|
+
import { DeploymentConfigExtension } from '@btc-embedded/cdk-extensions'
|
|
11049
|
+
|
|
11050
|
+
new DeploymentConfigExtension(props?: DeploymentConfigExtensionProps)
|
|
11051
|
+
```
|
|
11052
|
+
|
|
11053
|
+
| **Name** | **Type** | **Description** |
|
|
11054
|
+
| --- | --- | --- |
|
|
11055
|
+
| <code><a href="#@btc-embedded/cdk-extensions.DeploymentConfigExtension.Initializer.parameter.props">props</a></code> | <code><a href="#@btc-embedded/cdk-extensions.DeploymentConfigExtensionProps">DeploymentConfigExtensionProps</a></code> | *No description.* |
|
|
11056
|
+
|
|
11057
|
+
---
|
|
11058
|
+
|
|
11059
|
+
##### `props`<sup>Optional</sup> <a name="props" id="@btc-embedded/cdk-extensions.DeploymentConfigExtension.Initializer.parameter.props"></a>
|
|
11060
|
+
|
|
11061
|
+
- *Type:* <a href="#@btc-embedded/cdk-extensions.DeploymentConfigExtensionProps">DeploymentConfigExtensionProps</a>
|
|
11062
|
+
|
|
11063
|
+
---
|
|
11064
|
+
|
|
11065
|
+
#### Methods <a name="Methods" id="Methods"></a>
|
|
11066
|
+
|
|
11067
|
+
| **Name** | **Description** |
|
|
11068
|
+
| --- | --- |
|
|
11069
|
+
| <code><a href="#@btc-embedded/cdk-extensions.DeploymentConfigExtension.addContainerMutatingHook">addContainerMutatingHook</a></code> | This hook allows another service extension to register a mutating hook for changing the primary container of this extension. |
|
|
11070
|
+
| <code><a href="#@btc-embedded/cdk-extensions.DeploymentConfigExtension.addHooks">addHooks</a></code> | A hook that allows the extension to add hooks to other extensions that are registered. |
|
|
11071
|
+
| <code><a href="#@btc-embedded/cdk-extensions.DeploymentConfigExtension.connectToService">connectToService</a></code> | This hook allows the extension to establish a connection to extensions from another service. |
|
|
11072
|
+
| <code><a href="#@btc-embedded/cdk-extensions.DeploymentConfigExtension.modifyServiceProps">modifyServiceProps</a></code> | Prior to launching the task definition as a service, this hook is called on each extension to give it a chance to mutate the properties of the service to be created. |
|
|
11073
|
+
| <code><a href="#@btc-embedded/cdk-extensions.DeploymentConfigExtension.modifyTaskDefinitionProps">modifyTaskDefinitionProps</a></code> | This is a hook which allows extensions to modify the settings of the task definition prior to it being created. |
|
|
11074
|
+
| <code><a href="#@btc-embedded/cdk-extensions.DeploymentConfigExtension.prehook">prehook</a></code> | A hook that is called for each extension ahead of time to allow for any initial setup, such as creating resources in advance. |
|
|
11075
|
+
| <code><a href="#@btc-embedded/cdk-extensions.DeploymentConfigExtension.resolveContainerDependencies">resolveContainerDependencies</a></code> | Once all containers are added to the task definition, this hook is called for each extension to give it a chance to resolve its dependency graph so that its container starts in the right order based on the other extensions that were enabled. |
|
|
11076
|
+
| <code><a href="#@btc-embedded/cdk-extensions.DeploymentConfigExtension.useService">useService</a></code> | When this hook is implemented by extension, it allows the extension to use the service which has been created. |
|
|
11077
|
+
| <code><a href="#@btc-embedded/cdk-extensions.DeploymentConfigExtension.useTaskDefinition">useTaskDefinition</a></code> | Once the task definition is created, this hook is called for each extension to give it a chance to add containers to the task definition, change the task definition's role to add permissions, etc. |
|
|
11078
|
+
|
|
11079
|
+
---
|
|
11080
|
+
|
|
11081
|
+
##### `addContainerMutatingHook` <a name="addContainerMutatingHook" id="@btc-embedded/cdk-extensions.DeploymentConfigExtension.addContainerMutatingHook"></a>
|
|
11082
|
+
|
|
11083
|
+
```typescript
|
|
11084
|
+
public addContainerMutatingHook(hook: ContainerMutatingHook): void
|
|
11085
|
+
```
|
|
11086
|
+
|
|
11087
|
+
This hook allows another service extension to register a mutating hook for changing the primary container of this extension.
|
|
11088
|
+
|
|
11089
|
+
This is primarily used
|
|
11090
|
+
for the application extension. For example, the Firelens extension wants to
|
|
11091
|
+
be able to modify the settings of the application container to
|
|
11092
|
+
route logs through Firelens.
|
|
11093
|
+
|
|
11094
|
+
###### `hook`<sup>Required</sup> <a name="hook" id="@btc-embedded/cdk-extensions.DeploymentConfigExtension.addContainerMutatingHook.parameter.hook"></a>
|
|
11095
|
+
|
|
11096
|
+
- *Type:* @aws-cdk-containers/ecs-service-extensions.ContainerMutatingHook
|
|
11097
|
+
|
|
11098
|
+
---
|
|
11099
|
+
|
|
11100
|
+
##### `addHooks` <a name="addHooks" id="@btc-embedded/cdk-extensions.DeploymentConfigExtension.addHooks"></a>
|
|
11101
|
+
|
|
11102
|
+
```typescript
|
|
11103
|
+
public addHooks(): void
|
|
11104
|
+
```
|
|
11105
|
+
|
|
11106
|
+
A hook that allows the extension to add hooks to other extensions that are registered.
|
|
11107
|
+
|
|
11108
|
+
##### `connectToService` <a name="connectToService" id="@btc-embedded/cdk-extensions.DeploymentConfigExtension.connectToService"></a>
|
|
11109
|
+
|
|
11110
|
+
```typescript
|
|
11111
|
+
public connectToService(service: Service, connectToProps?: ConnectToProps): void
|
|
11112
|
+
```
|
|
11113
|
+
|
|
11114
|
+
This hook allows the extension to establish a connection to extensions from another service.
|
|
11115
|
+
|
|
11116
|
+
Usually used for things like
|
|
11117
|
+
allowing one service to talk to the load balancer or service mesh
|
|
11118
|
+
proxy for another service.
|
|
11119
|
+
|
|
11120
|
+
###### `service`<sup>Required</sup> <a name="service" id="@btc-embedded/cdk-extensions.DeploymentConfigExtension.connectToService.parameter.service"></a>
|
|
11121
|
+
|
|
11122
|
+
- *Type:* @aws-cdk-containers/ecs-service-extensions.Service
|
|
11123
|
+
|
|
11124
|
+
The other service to connect to.
|
|
11125
|
+
|
|
11126
|
+
---
|
|
11127
|
+
|
|
11128
|
+
###### `connectToProps`<sup>Optional</sup> <a name="connectToProps" id="@btc-embedded/cdk-extensions.DeploymentConfigExtension.connectToService.parameter.connectToProps"></a>
|
|
11129
|
+
|
|
11130
|
+
- *Type:* @aws-cdk-containers/ecs-service-extensions.ConnectToProps
|
|
11131
|
+
|
|
11132
|
+
---
|
|
11133
|
+
|
|
11134
|
+
##### `modifyServiceProps` <a name="modifyServiceProps" id="@btc-embedded/cdk-extensions.DeploymentConfigExtension.modifyServiceProps"></a>
|
|
11135
|
+
|
|
11136
|
+
```typescript
|
|
11137
|
+
public modifyServiceProps(props: ServiceBuild): ServiceBuild
|
|
11138
|
+
```
|
|
11139
|
+
|
|
11140
|
+
Prior to launching the task definition as a service, this hook is called on each extension to give it a chance to mutate the properties of the service to be created.
|
|
11141
|
+
|
|
11142
|
+
###### `props`<sup>Required</sup> <a name="props" id="@btc-embedded/cdk-extensions.DeploymentConfigExtension.modifyServiceProps.parameter.props"></a>
|
|
11143
|
+
|
|
11144
|
+
- *Type:* @aws-cdk-containers/ecs-service-extensions.ServiceBuild
|
|
11145
|
+
|
|
11146
|
+
---
|
|
11147
|
+
|
|
11148
|
+
##### `modifyTaskDefinitionProps` <a name="modifyTaskDefinitionProps" id="@btc-embedded/cdk-extensions.DeploymentConfigExtension.modifyTaskDefinitionProps"></a>
|
|
11149
|
+
|
|
11150
|
+
```typescript
|
|
11151
|
+
public modifyTaskDefinitionProps(props: TaskDefinitionProps): TaskDefinitionProps
|
|
11152
|
+
```
|
|
11153
|
+
|
|
11154
|
+
This is a hook which allows extensions to modify the settings of the task definition prior to it being created.
|
|
11155
|
+
|
|
11156
|
+
For example, the App Mesh
|
|
11157
|
+
extension needs to configure an Envoy proxy in the task definition,
|
|
11158
|
+
or the Application extension wants to set the overall resource for
|
|
11159
|
+
the task.
|
|
11160
|
+
|
|
11161
|
+
###### `props`<sup>Required</sup> <a name="props" id="@btc-embedded/cdk-extensions.DeploymentConfigExtension.modifyTaskDefinitionProps.parameter.props"></a>
|
|
11162
|
+
|
|
11163
|
+
- *Type:* aws-cdk-lib.aws_ecs.TaskDefinitionProps
|
|
11164
|
+
|
|
11165
|
+
Properties of the task definition to be created.
|
|
11166
|
+
|
|
11167
|
+
---
|
|
11168
|
+
|
|
11169
|
+
##### `prehook` <a name="prehook" id="@btc-embedded/cdk-extensions.DeploymentConfigExtension.prehook"></a>
|
|
11170
|
+
|
|
11171
|
+
```typescript
|
|
11172
|
+
public prehook(parent: Service, scope: Construct): void
|
|
11173
|
+
```
|
|
11174
|
+
|
|
11175
|
+
A hook that is called for each extension ahead of time to allow for any initial setup, such as creating resources in advance.
|
|
11176
|
+
|
|
11177
|
+
###### `parent`<sup>Required</sup> <a name="parent" id="@btc-embedded/cdk-extensions.DeploymentConfigExtension.prehook.parameter.parent"></a>
|
|
11178
|
+
|
|
11179
|
+
- *Type:* @aws-cdk-containers/ecs-service-extensions.Service
|
|
11180
|
+
|
|
11181
|
+
The parent service which this extension has been added to.
|
|
11182
|
+
|
|
11183
|
+
---
|
|
11184
|
+
|
|
11185
|
+
###### `scope`<sup>Required</sup> <a name="scope" id="@btc-embedded/cdk-extensions.DeploymentConfigExtension.prehook.parameter.scope"></a>
|
|
11186
|
+
|
|
11187
|
+
- *Type:* constructs.Construct
|
|
11188
|
+
|
|
11189
|
+
The scope that this extension should create resources in.
|
|
11190
|
+
|
|
11191
|
+
---
|
|
11192
|
+
|
|
11193
|
+
##### `resolveContainerDependencies` <a name="resolveContainerDependencies" id="@btc-embedded/cdk-extensions.DeploymentConfigExtension.resolveContainerDependencies"></a>
|
|
11194
|
+
|
|
11195
|
+
```typescript
|
|
11196
|
+
public resolveContainerDependencies(): void
|
|
11197
|
+
```
|
|
11198
|
+
|
|
11199
|
+
Once all containers are added to the task definition, this hook is called for each extension to give it a chance to resolve its dependency graph so that its container starts in the right order based on the other extensions that were enabled.
|
|
11200
|
+
|
|
11201
|
+
##### `useService` <a name="useService" id="@btc-embedded/cdk-extensions.DeploymentConfigExtension.useService"></a>
|
|
11202
|
+
|
|
11203
|
+
```typescript
|
|
11204
|
+
public useService(service: Ec2Service | FargateService): void
|
|
11205
|
+
```
|
|
11206
|
+
|
|
11207
|
+
When this hook is implemented by extension, it allows the extension to use the service which has been created.
|
|
11208
|
+
|
|
11209
|
+
It is generally used to
|
|
11210
|
+
create any final resources which might depend on the service itself.
|
|
11211
|
+
|
|
11212
|
+
###### `service`<sup>Required</sup> <a name="service" id="@btc-embedded/cdk-extensions.DeploymentConfigExtension.useService.parameter.service"></a>
|
|
11213
|
+
|
|
11214
|
+
- *Type:* aws-cdk-lib.aws_ecs.Ec2Service | aws-cdk-lib.aws_ecs.FargateService
|
|
11215
|
+
|
|
11216
|
+
---
|
|
11217
|
+
|
|
11218
|
+
##### `useTaskDefinition` <a name="useTaskDefinition" id="@btc-embedded/cdk-extensions.DeploymentConfigExtension.useTaskDefinition"></a>
|
|
11219
|
+
|
|
11220
|
+
```typescript
|
|
11221
|
+
public useTaskDefinition(taskDefinition: TaskDefinition): void
|
|
11222
|
+
```
|
|
11223
|
+
|
|
11224
|
+
Once the task definition is created, this hook is called for each extension to give it a chance to add containers to the task definition, change the task definition's role to add permissions, etc.
|
|
11225
|
+
|
|
11226
|
+
###### `taskDefinition`<sup>Required</sup> <a name="taskDefinition" id="@btc-embedded/cdk-extensions.DeploymentConfigExtension.useTaskDefinition.parameter.taskDefinition"></a>
|
|
11227
|
+
|
|
11228
|
+
- *Type:* aws-cdk-lib.aws_ecs.TaskDefinition
|
|
11229
|
+
|
|
11230
|
+
The created task definition to add containers to.
|
|
11231
|
+
|
|
11232
|
+
---
|
|
11233
|
+
|
|
11234
|
+
|
|
11235
|
+
#### Properties <a name="Properties" id="Properties"></a>
|
|
11236
|
+
|
|
11237
|
+
| **Name** | **Type** | **Description** |
|
|
11238
|
+
| --- | --- | --- |
|
|
11239
|
+
| <code><a href="#@btc-embedded/cdk-extensions.DeploymentConfigExtension.property.name">name</a></code> | <code>string</code> | The name of the extension. |
|
|
11240
|
+
| <code><a href="#@btc-embedded/cdk-extensions.DeploymentConfigExtension.property.container">container</a></code> | <code>aws-cdk-lib.aws_ecs.ContainerDefinition</code> | The container for this extension. |
|
|
11241
|
+
|
|
11242
|
+
---
|
|
11243
|
+
|
|
11244
|
+
##### `name`<sup>Required</sup> <a name="name" id="@btc-embedded/cdk-extensions.DeploymentConfigExtension.property.name"></a>
|
|
11245
|
+
|
|
11246
|
+
```typescript
|
|
11247
|
+
public readonly name: string;
|
|
11248
|
+
```
|
|
11249
|
+
|
|
11250
|
+
- *Type:* string
|
|
11251
|
+
|
|
11252
|
+
The name of the extension.
|
|
11253
|
+
|
|
11254
|
+
---
|
|
11255
|
+
|
|
11256
|
+
##### `container`<sup>Optional</sup> <a name="container" id="@btc-embedded/cdk-extensions.DeploymentConfigExtension.property.container"></a>
|
|
11257
|
+
|
|
11258
|
+
```typescript
|
|
11259
|
+
public readonly container: ContainerDefinition;
|
|
11260
|
+
```
|
|
11261
|
+
|
|
11262
|
+
- *Type:* aws-cdk-lib.aws_ecs.ContainerDefinition
|
|
11263
|
+
|
|
11264
|
+
The container for this extension.
|
|
11265
|
+
|
|
11266
|
+
Most extensions have a container, but not
|
|
11267
|
+
every extension is required to have a container. Some extensions may just
|
|
11268
|
+
modify the properties of the service, or create external resources
|
|
11269
|
+
connected to the service.
|
|
11270
|
+
|
|
11271
|
+
---
|
|
11272
|
+
|
|
11273
|
+
|
|
10930
11274
|
### DocumentDbAccessExtension <a name="DocumentDbAccessExtension" id="@btc-embedded/cdk-extensions.DocumentDbAccessExtension"></a>
|
|
10931
11275
|
|
|
10932
11276
|
#### Initializers <a name="Initializers" id="@btc-embedded/cdk-extensions.DocumentDbAccessExtension.Initializer"></a>
|
package/CHANGELOG.md
CHANGED
|
@@ -1,4 +1,14 @@
|
|
|
1
1
|
|
|
2
|
+
## [0.20.3](https://github.com/btc-embedded/cdk-extensions/compare/v0.20.2...v0.20.3) (2026-01-16)
|
|
3
|
+
|
|
4
|
+
## [0.20.2](https://github.com/btc-embedded/cdk-extensions/compare/v0.20.1...v0.20.2) (2026-01-16)
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
### Features
|
|
8
|
+
|
|
9
|
+
* add ExportedService construct for cross-stack ECS service connectivity ([c1bcdd9](https://github.com/btc-embedded/cdk-extensions/commit/c1bcdd9efde3541d644dc68a231ae115003a4898))
|
|
10
|
+
* make domain prefix optional in ALBv2 ([af85121](https://github.com/btc-embedded/cdk-extensions/commit/af851211c0b245d8cd60dbf5e197443b3485d536))
|
|
11
|
+
|
|
2
12
|
## [0.20.1](https://github.com/btc-embedded/cdk-extensions/compare/v0.20.0...v0.20.1) (2026-01-15)
|
|
3
13
|
|
|
4
14
|
|
|
@@ -145,5 +145,5 @@ class EventPipe extends construct_1.Construct {
|
|
|
145
145
|
}
|
|
146
146
|
exports.EventPipe = EventPipe;
|
|
147
147
|
_a = JSII_RTTI_SYMBOL_1;
|
|
148
|
-
EventPipe[_a] = { fqn: "@btc-embedded/cdk-extensions.EventPipe", version: "0.20.
|
|
148
|
+
EventPipe[_a] = { fqn: "@btc-embedded/cdk-extensions.EventPipe", version: "0.20.4" };
|
|
149
149
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZlbnRQaXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnN0cnVjdHMvRXZlbnRQaXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkNBQTBDO0FBQzFDLGlEQUE2RDtBQUU3RCxxREFBZ0Q7QUFHaEQsd0RBQXFEO0FBQ3JELDBDQUEwQztBQUMxQyx3RUFBdUU7QUFzQ3ZFLElBQVksUUFpQlg7QUFqQkQsV0FBWSxRQUFRO0lBQ2xCOztPQUVHO0lBQ0gsdUJBQVcsQ0FBQTtJQUNYOztPQUVHO0lBQ0gsMkJBQWUsQ0FBQTtJQUNmOztPQUVHO0lBQ0gseUJBQWEsQ0FBQTtJQUNiOztPQUVHO0lBQ0gsMkJBQWUsQ0FBQTtBQUNqQixDQUFDLEVBakJXLFFBQVEsd0JBQVIsUUFBUSxRQWlCbkI7QUFFRDs7R0FFRztBQUNILElBQVksY0FjWDtBQWRELFdBQVksY0FBYztJQUN4Qjs7Ozs7T0FLRztJQUNILDJFQUFnQixDQUFBO0lBQ2hCOzs7O09BSUc7SUFDSCx5RUFBZSxDQUFBO0FBQ2pCLENBQUMsRUFkVyxjQUFjLDhCQUFkLGNBQWMsUUFjekI7QUEyRkQ7O0dBRUc7QUFDSCxNQUFhLFNBQVUsU0FBUSxxQkFBUztJQUd0QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXFCO1FBQzdELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxrQkFBa0IsR0FDcEIsY0FBYyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDekUsSUFBSSw0QkFBNEIsR0FDOUIsWUFBWSxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFFckUsSUFBSSxXQUFXLEdBQUcsT0FBTyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFFM0UsSUFBSSxTQUFTLEdBQUcsV0FBVyxLQUFLLFNBQVMsQ0FBQztRQUUxQyxJQUFJLFNBQVMsR0FBRyxTQUFTO1lBQ3ZCLENBQUMsQ0FBQyxXQUFZLENBQUMsUUFBUTtZQUN2QixDQUFDLENBQUMsa0JBQW1CLENBQUMsZUFBZSxDQUFDO1FBRXhDLElBQUksWUFBWSxHQUFHLFNBQVMsQ0FBQztRQUM3QixJQUFJLElBQUEsNkNBQXNCLEVBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUMvQix5QkFBVyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLDRCQUE0QixDQUFDLENBQUM7WUFDaEUsWUFBWSxHQUFHLFNBQVMsQ0FBQztRQUMzQixDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUk7WUFDUCxLQUFLLENBQUMsSUFBSTtnQkFDVixJQUFJLGNBQUksQ0FBQyxJQUFJLEVBQUUsZUFBZSxFQUFFO29CQUM5QixTQUFTLEVBQUUsSUFBSSwwQkFBZ0IsQ0FBQyxxQkFBcUIsQ0FBQztpQkFDdkQsQ0FBQyxDQUFDO1FBRUwsSUFBSSxjQUFjLEdBQUcsS0FBSyxDQUFDLE1BQU07WUFDL0IsQ0FBQyxDQUFDO2dCQUNFLE9BQU8sRUFBRTtvQkFDUDt3QkFDRSxPQUFPLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQzs0QkFDdEIsSUFBSSxFQUFFO2dDQUNKLEdBQUcsS0FBSyxDQUFDLE1BQU07NkJBQ2hCO3lCQUNGLENBQUM7cUJBQ0g7aUJBQ0Y7YUFDRjtZQUNILENBQUMsQ0FBQyxTQUFTLENBQUM7UUFFZCxJQUFJLGdCQUFnQixHQUF5QyxFQUFFLENBQUM7UUFDaEUsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNoQixnQkFBZ0IsR0FBRztnQkFDakIsa0JBQWtCLEVBQUU7b0JBQ2xCLGNBQWMsRUFBRSxTQUFTO2lCQUMxQjthQUNGLENBQUM7UUFDSixDQUFDO2FBQU0sQ0FBQztZQUNOLGdCQUFnQixHQUFHO2dCQUNqQixrQ0FBa0MsRUFBRTtvQkFDbEMsY0FBYyxFQUFFLDRCQUE0QixFQUFFLGNBQWM7d0JBQzFELENBQUMsQ0FBQyxjQUFjLENBQUMsNEJBQTRCLENBQUMsY0FBYyxDQUFDO3dCQUM3RCxDQUFDLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQztpQkFDcEQ7Z0JBQ0QsR0FBRyxDQUFDLDRCQUE0QixFQUFFLGFBQWEsSUFBSTtvQkFDakQsYUFBYSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQzNCLDRCQUE0QixDQUFDLGFBQWEsQ0FDM0MsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDO2lCQUNuQyxDQUFDO2FBQ0gsQ0FBQztRQUNKLENBQUM7UUFFRCxJQUFJLGdCQUFnQixHQUFHO1lBQ3JCLGtCQUFrQixFQUFFO2dCQUNsQixTQUFTLEVBQUUsQ0FBQzthQUNiO1lBQ0QsR0FBRyxDQUFDLGNBQWMsSUFBSSxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsQ0FBQztTQUMxRCxDQUFDO1FBRUYsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUM7WUFDekMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVE7Z0JBQ2YsSUFBSSxzQkFBVyxDQUFDLElBQUksRUFBRSxtQkFBbUIsRUFBRTtvQkFDekMsT0FBTyxFQUFFLFlBQVk7aUJBQ3RCLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFFZCxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDO1lBQ2xELENBQUMsQ0FBQztnQkFDRSxnQkFBZ0IsRUFBRTtvQkFDaEIsNEJBQTRCLEVBQUU7d0JBQzVCLFdBQVcsRUFBRSxRQUFTLENBQUMsV0FBVztxQkFDbkM7b0JBQ0QsS0FBSyxFQUFFLEtBQUssQ0FBQyxRQUFRO2lCQUN0QjthQUNGO1lBQ0gsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUVQLElBQUksbUJBQU8sQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO1lBQzdCLEdBQUcsaUJBQWlCO1lBQ3BCLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87WUFDMUIsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUTtZQUM3QixNQUFNLEVBQUUsU0FBUztZQUNqQixnQkFBZ0IsRUFBRSxnQkFBZ0I7WUFDbEMsZ0JBQWdCLEVBQUUsZ0JBQWdCO1lBQ2xDLFlBQVksRUFBRSxZQUFZO1NBQzNCLENBQUMsQ0FBQztRQUVILEtBQUssQ0FBQyxNQUFNLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdDLFdBQVcsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUMsa0JBQWtCLEVBQUUsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25ELFFBQVEsRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFTyxjQUFjLENBQUMsS0FBcUI7UUFDMUMsT0FBTyxLQUFLLENBQUMsUUFBUSxLQUFLLFNBQVMsSUFBSSxLQUFLLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQyxHQUFHLENBQUM7SUFDekUsQ0FBQzs7QUE5R0gsOEJBK0dDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQW5ub3RhdGlvbnMgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IFJvbGUsIFNlcnZpY2VQcmluY2lwYWwgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuaW1wb3J0IHsgSUxvZ0dyb3VwIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sb2dzXCI7XG5pbXBvcnQgeyBDZm5QaXBlIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1waXBlc1wiO1xuaW1wb3J0IHsgSVF1ZXVlIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zcXNcIjtcbmltcG9ydCB7IElTdGF0ZU1hY2hpbmUgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXN0ZXBmdW5jdGlvbnNcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzL2xpYi9jb25zdHJ1Y3RcIjtcbmltcG9ydCB7IEJUQ0xvZ0dyb3VwIH0gZnJvbSBcIi4uL3BsYXRmb3JtXCI7XG5pbXBvcnQgeyBpc0RlYWN0aXZhdGVkQ29uc3RydWN0IH0gZnJvbSBcIi4uL3V0aWxzL2RlYWN0aXZhdGVkQ29uc3RydWN0XCI7XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgcGlwZSBjb25zdHJ1Y3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRQaXBlUHJvcHMge1xuICAvKipcbiAgICogVGhlIHNvdXJjZSBTUVMgcXVldWUuIE5vIG90aGVyIHNvdXJjZSB0eXBlcyBhcmUgc3VwcG9ydGVkIGF0IHRoZSBtb21lbnQuXG4gICAqL1xuICByZWFkb25seSBzb3VyY2U6IElRdWV1ZTtcblxuICAvKipcbiAgICogVGhlIHRhcmdldCBTUVMgcXVldWUgb3IgdGFyZ2V0IHN0ZXAgZnVuY3Rpb24uXG4gICAqL1xuICByZWFkb25seSB0YXJnZXQ6IFRhcmdldFF1ZXVlIHwgVGFyZ2V0U3RlcEZ1bmN0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgcm9sZSB1c2VkIGJ5IHRoZSBldmVudCBwaXBlLiBJZiBvbWl0dGVkLCBhIG5ldyByb2xlIGlzIGNyZWF0ZWQuXG4gICAqL1xuICByZWFkb25seSByb2xlPzogUm9sZTtcblxuICAvKipcbiAgICogQW4gb3B0aW9uYWwgZmlsdGVyIGZvciB0aGUgcGlwZS5cbiAgICovXG4gIHJlYWRvbmx5IGZpbHRlcj86IFBpcGVGaWx0ZXI7XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgbG9nIGxldmVsIGZvciB0aGUgcGlwZS4gQ3JlYXRlcyBhIG5ldyBsb2cgZ3JvdXAsIGlmIGVuYWJsZWQuXG4gICAqIERlZmF1bHQ6IERpc2FibGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgbG9nTGV2ZWw/OiBMb2dMZXZlbDtcblxuICAvKipcbiAgICogVXNlIGFuIGV4aXN0aW5nIGxvZyBncm91cC4gSWYgbm9uZSBpcyBnaXZlbiBhbmQgbG9nZ2luZyBpcyBlbmFibGVkLCBhIG5ldyBsb2cgZ3JvdXAgd2lsbCBiZSBjcmVhdGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgbG9nR3JvdXA/OiBJTG9nR3JvdXA7XG59XG5cbmV4cG9ydCBlbnVtIExvZ0xldmVsIHtcbiAgLyoqXG4gICAqIERlYWN0aXZhdGUgbG9nZ2luZy4gTm8gbG9nIGdyb3VwIHdpbGwgYmUgY3JlYXRlZC5cbiAgICovXG4gIE9GRiA9IFwiT0ZGXCIsXG4gIC8qKlxuICAgKiBPbmx5IGxvZyBlcnJvcnMuXG4gICAqL1xuICBFUlJPUiA9IFwiRVJST1JcIixcbiAgLyoqXG4gICAqIExvZyBlcnJvcnMgYW5kIGluZm9ybWF0aW9uYWwgbWVzc2FnZXMuXG4gICAqL1xuICBJTkZPID0gXCJJTkZPXCIsXG4gIC8qKlxuICAgKiBMb2cgdmVyeSB2ZXJib3NlLlxuICAgKi9cbiAgVFJBQ0UgPSBcIlRSQUNFXCIsXG59XG5cbi8qKlxuICogVGhlIGludm9jYXRpb24gdHlwZSBvZiB0aGUgc3RlcCBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGVudW0gSW52b2NhdGlvblR5cGUge1xuICAvKipcbiAgICogKGRlZmF1bHQpIC0gSW52b2tlIHN5bmNocm9ub3VzbHkuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWVcbiAgICogW1N0YXJ0U3luY0V4ZWN1dGlvbl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3N0ZXAtZnVuY3Rpb25zL2xhdGVzdC9hcGlyZWZlcmVuY2UvQVBJX1N0YXJ0U3luY0V4ZWN1dGlvbi5odG1sKVxuICAgKiBpbiB0aGUgKkFXUyBTdGVwIEZ1bmN0aW9ucyBBUEkgUmVmZXJlbmNlKi5cbiAgICogPiBgUkVRVUVTVF9SRVNQT05TRWAgaXMgbm90IHN1cHBvcnRlZCBmb3IgYFNUQU5EQVJEYCBzdGF0ZSBtYWNoaW5lIHdvcmtmbG93cy5cbiAgICovXG4gIFJFUVVFU1RfUkVTUE9OU0UsXG4gIC8qKlxuICAgKiBJbnZva2UgYXN5bmNocm9ub3VzbHkuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWVcbiAgICogW1N0YXJ0RXhlY3V0aW9uXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc3RlcC1mdW5jdGlvbnMvbGF0ZXN0L2FwaXJlZmVyZW5jZS9BUElfU3RhcnRFeGVjdXRpb24uaHRtbClcbiAgICogaW4gdGhlICpBV1MgU3RlcCBGdW5jdGlvbnMgQVBJIFJlZmVyZW5jZSouXG4gICAqL1xuICBGSVJFX0FORF9GT1JHRVQsXG59XG5cbi8qKlxuICogVGhlIGlucHV0IHRlbXBsYXRlLlxuICogTm90ZSB0aGF0IHNvbWUgdmFsdWVzIGluIHRoZSByZXN1bHRpbmcgY29kZSBzaG91bGQgbm90IGhhdmUgcXVvdGVzIGFyb3VuZCB0aGUgdmFsdWUsIGUuZy4gaWYgYW4gb2JqZWN0XG4gKiBzaGFsbCBiZSBhZGRlZC4gVG8gcmVmbGVjdCB0aGlzLCBhZGQgY3VybHkgYnJhY2tldHMgYXJvdW5kIHRoZSB2YWx1ZSwgZS5nLiBge3s8JC5ib2R5Pn19YC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnB1dFRlbXBsYXRlIHtcbiAgLyoqXG4gICAqIEBqc2lpIGlnbm9yZVxuICAgKi9cbiAgcmVhZG9ubHkgW2tleTogc3RyaW5nXTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFNRUyBxdWV1ZSBhcyBwaXBlIHRhcmdldC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYXJnZXRRdWV1ZSB7XG4gIHJlYWRvbmx5IHF1ZXVlOiBJUXVldWU7XG59XG5cbi8qKlxuICogU3RlcEZ1bmN0aW9uIGFzIHBpcGUgdGFyZ2V0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhcmdldFN0ZXBGdW5jdGlvbiB7XG4gIHJlYWRvbmx5IHN0ZXBGdW5jdGlvbjogSVN0YXRlTWFjaGluZTtcbiAgcmVhZG9ubHkgcGFyYW1ldGVycz86IFRhcmdldFN0ZXBGdW5jdGlvblBhcmFtZXRlcnM7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3IgYSBzdGVwIGZ1bmN0aW9uIHRhcmdldC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYXJnZXRTdGVwRnVuY3Rpb25QYXJhbWV0ZXJzIHtcbiAgcmVhZG9ubHkgaW5wdXRUZW1wbGF0ZT86IElucHV0VGVtcGxhdGU7XG4gIHJlYWRvbmx5IGludm9jYXRpb25UeXBlPzogSW52b2NhdGlvblR5cGU7XG59XG5cbi8qKlxuICogQmFzZSB0eXBlIGZvciBmaWx0ZXIgcnVsZXMuIE5vdCBhbGwgYXZhaWxhYmxlIHJ1bGVzIGFyZSBjdXJyZW50bHkgaW1wbGVtZW50ZWQuXG4gKi9cbmV4cG9ydCB0eXBlIEZpbHRlclJ1bGUgPVxuICB8IFByZWZpeEZpbHRlclJ1bGVcbiAgfCBTdWZmaXhGaWx0ZXJSdWxlXG4gIHwgQW55dGhpbmdCdXRGaWx0ZXJSdWxlXG4gIHwgRmlsdGVyRXF1YWxzSWdub3JlQ2FzZTtcblxuLyoqXG4gKiBSdWxlIHRoYXQgYSBwcm9wZXJ0eSBoYXMgdG8gc3RhcnQgd2l0aCBhIHByZWZpeC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcmVmaXhGaWx0ZXJSdWxlIHtcbiAgcmVhZG9ubHkgcHJlZml4OiBzdHJpbmcgfCBGaWx0ZXJFcXVhbHNJZ25vcmVDYXNlO1xufVxuXG4vKipcbiAqIFJ1bGUgdGhhdCBhIHByb3BlcnR5IGhhcyB0byBlbmQgd2l0aCBhIHN1ZmZpeC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdWZmaXhGaWx0ZXJSdWxlIHtcbiAgcmVhZG9ubHkgc3VmZml4OiBzdHJpbmcgfCBGaWx0ZXJFcXVhbHNJZ25vcmVDYXNlO1xufVxuXG4vKipcbiAqIFJ1bGUgdGhhdCBhbGxvd3MgYWxsIHZhbHVlcyBleGNlcHQgdGhlIGdpdmVuIG9uZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQW55dGhpbmdCdXRGaWx0ZXJSdWxlIHtcbiAgLyoqXG4gICAqIEBqc2lpIGlnbm9yZVxuICAgKi9cbiAgcmVhZG9ubHkgXCJhbnl0aGluZy1idXRcIjogc3RyaW5nW10gfCBGaWx0ZXJSdWxlO1xufVxuXG4vKipcbiAqIFJ1bGUgdGhhdCBtYXRjaGVzIGEgc3RyaW5nLCBpZ25vcmluZyB0aGUgY2FzZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJFcXVhbHNJZ25vcmVDYXNlIHtcbiAgLyoqXG4gICAqIEBqc2lpIGlnbm9yZVxuICAgKi9cbiAgcmVhZG9ubHkgXCJlcXVhbHMtaWdub3JlLWNhc2VcIjogc3RyaW5nIHwgc3RyaW5nW107XG59XG5cbi8qKlxuICogQSBmaWx0ZXIgZm9yIG1lc3NhZ2VzIGluIHRoZSBwaXBlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBpcGVGaWx0ZXIge1xuICAvKipcbiAgICogVGhlIHJ1bGVzIGZvciBlYWNoIGF0dHJpYnV0ZSBvZiB0aGUgYm9keS5cbiAgICogQGpzaWkgaWdub3JlXG4gICAqL1xuICByZWFkb25seSBba2V5OiBzdHJpbmddOiBGaWx0ZXJSdWxlW107XG59XG5cbi8qKlxuICogQSB3cmFwcGVyIGZvciB0aGUgTDEgZXZlbnQgcGlwZSB3aXRoIHRoZSBhYmlsaXR5IHRvIGRlYWN0aXZhdGUgaXQgd2l0aGluIHRoZSBzdGFjay5cbiAqL1xuZXhwb3J0IGNsYXNzIEV2ZW50UGlwZSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSByb2xlOiBSb2xlO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBFdmVudFBpcGVQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBsZXQgdGFyZ2V0U3RlcEZ1bmN0aW9uID1cbiAgICAgIFwic3RlcEZ1bmN0aW9uXCIgaW4gcHJvcHMudGFyZ2V0ID8gcHJvcHMudGFyZ2V0LnN0ZXBGdW5jdGlvbiA6IHVuZGVmaW5lZDtcbiAgICBsZXQgdGFyZ2V0U3RlcEZ1bmN0aW9uUGFyYW1ldGVycyA9XG4gICAgICBcInBhcmFtZXRlcnNcIiBpbiBwcm9wcy50YXJnZXQgPyBwcm9wcy50YXJnZXQucGFyYW1ldGVycyA6IHVuZGVmaW5lZDtcblxuICAgIGxldCB0YXJnZXRRdWV1ZSA9IFwicXVldWVcIiBpbiBwcm9wcy50YXJnZXQgPyBwcm9wcy50YXJnZXQucXVldWUgOiB1bmRlZmluZWQ7XG5cbiAgICBsZXQgc3FzVGFyZ2V0ID0gdGFyZ2V0UXVldWUgIT09IHVuZGVmaW5lZDtcblxuICAgIGxldCB0YXJnZXRBcm4gPSBzcXNUYXJnZXRcbiAgICAgID8gdGFyZ2V0UXVldWUhLnF1ZXVlQXJuXG4gICAgICA6IHRhcmdldFN0ZXBGdW5jdGlvbiEuc3RhdGVNYWNoaW5lQXJuO1xuXG4gICAgbGV0IGRlc2lyZWRTdGF0ZSA9IFwiUlVOTklOR1wiO1xuICAgIGlmIChpc0RlYWN0aXZhdGVkQ29uc3RydWN0KGlkKSkge1xuICAgICAgQW5ub3RhdGlvbnMub2YodGhpcykuYWRkSW5mbyhgJHtpZH0gaXMgc2V0IGRvIGJlIGRlYWN0aXZhdGVkLmApO1xuICAgICAgZGVzaXJlZFN0YXRlID0gXCJTVE9QUEVEXCI7XG4gICAgfVxuXG4gICAgdGhpcy5yb2xlID1cbiAgICAgIHByb3BzLnJvbGUgfHxcbiAgICAgIG5ldyBSb2xlKHRoaXMsIFwiRXZlbnRQaXBlUm9sZVwiLCB7XG4gICAgICAgIGFzc3VtZWRCeTogbmV3IFNlcnZpY2VQcmluY2lwYWwoXCJwaXBlcy5hbWF6b25hd3MuY29tXCIpLFxuICAgICAgfSk7XG5cbiAgICBsZXQgZmlsdGVyQ3JpdGVyaWEgPSBwcm9wcy5maWx0ZXJcbiAgICAgID8ge1xuICAgICAgICAgIGZpbHRlcnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcGF0dGVybjogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgIGJvZHk6IHtcbiAgICAgICAgICAgICAgICAgIC4uLnByb3BzLmZpbHRlcixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBsZXQgdGFyZ2V0UGFyYW1ldGVyczogQ2ZuUGlwZS5QaXBlVGFyZ2V0UGFyYW1ldGVyc1Byb3BlcnR5ID0ge307XG4gICAgaWYgKHRhcmdldFF1ZXVlKSB7XG4gICAgICB0YXJnZXRQYXJhbWV0ZXJzID0ge1xuICAgICAgICBzcXNRdWV1ZVBhcmFtZXRlcnM6IHtcbiAgICAgICAgICBtZXNzYWdlR3JvdXBJZDogXCJkZWZhdWx0XCIsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB0YXJnZXRQYXJhbWV0ZXJzID0ge1xuICAgICAgICBzdGVwRnVuY3Rpb25TdGF0ZU1hY2hpbmVQYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgaW52b2NhdGlvblR5cGU6IHRhcmdldFN0ZXBGdW5jdGlvblBhcmFtZXRlcnM/Lmludm9jYXRpb25UeXBlXG4gICAgICAgICAgICA/IEludm9jYXRpb25UeXBlW3RhcmdldFN0ZXBGdW5jdGlvblBhcmFtZXRlcnMuaW52b2NhdGlvblR5cGVdXG4gICAgICAgICAgICA6IEludm9jYXRpb25UeXBlW0ludm9jYXRpb25UeXBlLlJFUVVFU1RfUkVTUE9OU0VdLFxuICAgICAgICB9LFxuICAgICAgICAuLi4odGFyZ2V0U3RlcEZ1bmN0aW9uUGFyYW1ldGVycz8uaW5wdXRUZW1wbGF0ZSAmJiB7XG4gICAgICAgICAgaW5wdXRUZW1wbGF0ZTogSlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgICB0YXJnZXRTdGVwRnVuY3Rpb25QYXJhbWV0ZXJzLmlucHV0VGVtcGxhdGUsXG4gICAgICAgICAgKS5yZXBsYWNlKC9cIlxce1xceyguKz8pXFx9XFx9XCIvLCBcIiQxXCIpLFxuICAgICAgICB9KSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgbGV0IHNvdXJjZVBhcmFtZXRlcnMgPSB7XG4gICAgICBzcXNRdWV1ZVBhcmFtZXRlcnM6IHtcbiAgICAgICAgYmF0Y2hTaXplOiAxLFxuICAgICAgfSxcbiAgICAgIC4uLihmaWx0ZXJDcml0ZXJpYSAmJiB7IGZpbHRlckNyaXRlcmlhOiBmaWx0ZXJDcml0ZXJpYSB9KSxcbiAgICB9O1xuXG4gICAgY29uc3QgbG9nR3JvdXAgPSB0aGlzLmxvZ2dpbmdFbmFibGVkKHByb3BzKVxuICAgICAgPyAocHJvcHMubG9nR3JvdXAgPz9cbiAgICAgICAgbmV3IEJUQ0xvZ0dyb3VwKHRoaXMsIFwiRXZlbnRQaXBlTG9nR3JvdXBcIiwge1xuICAgICAgICAgIGxvZ1R5cGU6IFwiZXZlbnQtcGlwZVwiLFxuICAgICAgICB9KSlcbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgcGlwZUNvbmZpZ3VyYXRpb24gPSB0aGlzLmxvZ2dpbmdFbmFibGVkKHByb3BzKVxuICAgICAgPyB7XG4gICAgICAgICAgbG9nQ29uZmlndXJhdGlvbjoge1xuICAgICAgICAgICAgY2xvdWR3YXRjaExvZ3NMb2dEZXN0aW5hdGlvbjoge1xuICAgICAgICAgICAgICBsb2dHcm91cEFybjogbG9nR3JvdXAhLmxvZ0dyb3VwQXJuLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxldmVsOiBwcm9wcy5sb2dMZXZlbCxcbiAgICAgICAgICB9LFxuICAgICAgICB9XG4gICAgICA6IHt9O1xuXG4gICAgbmV3IENmblBpcGUodGhpcywgXCJFdmVudFBpcGVcIiwge1xuICAgICAgLi4ucGlwZUNvbmZpZ3VyYXRpb24sXG4gICAgICByb2xlQXJuOiB0aGlzLnJvbGUucm9sZUFybixcbiAgICAgIHNvdXJjZTogcHJvcHMuc291cmNlLnF1ZXVlQXJuLFxuICAgICAgdGFyZ2V0OiB0YXJnZXRBcm4sXG4gICAgICBzb3VyY2VQYXJhbWV0ZXJzOiBzb3VyY2VQYXJhbWV0ZXJzLFxuICAgICAgdGFyZ2V0UGFyYW1ldGVyczogdGFyZ2V0UGFyYW1ldGVycyxcbiAgICAgIGRlc2lyZWRTdGF0ZTogZGVzaXJlZFN0YXRlLFxuICAgIH0pO1xuXG4gICAgcHJvcHMuc291cmNlLmdyYW50Q29uc3VtZU1lc3NhZ2VzKHRoaXMucm9sZSk7XG4gICAgdGFyZ2V0UXVldWU/LmdyYW50U2VuZE1lc3NhZ2VzKHRoaXMucm9sZSk7XG4gICAgdGFyZ2V0U3RlcEZ1bmN0aW9uPy5ncmFudFN0YXJ0RXhlY3V0aW9uKHRoaXMucm9sZSk7XG4gICAgbG9nR3JvdXA/LmdyYW50V3JpdGUodGhpcy5yb2xlKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9nZ2luZ0VuYWJsZWQocHJvcHM6IEV2ZW50UGlwZVByb3BzKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHByb3BzLmxvZ0xldmVsICE9PSB1bmRlZmluZWQgJiYgcHJvcHMubG9nTGV2ZWwgIT09IExvZ0xldmVsLk9GRjtcbiAgfVxufVxuIl19
|