@rio-cloud/cdk-v2-constructs 6.10.3 → 6.10.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 CHANGED
@@ -4480,17 +4480,22 @@
4480
4480
  "abstract": true,
4481
4481
  "docs": {
4482
4482
  "stability": "stable",
4483
- "summary": "Name of the capability to run with the monitoring test suite runner testing."
4483
+ "summary": "Name of the capabilities to run with the monitoring test suite runner testing."
4484
4484
  },
4485
4485
  "immutable": true,
4486
4486
  "locationInModule": {
4487
4487
  "filename": "src/fargate/rio-fargate-service-blue-green-alpha.ts",
4488
4488
  "line": 91
4489
4489
  },
4490
- "name": "capabilityName",
4490
+ "name": "capabilityNames",
4491
4491
  "optional": true,
4492
4492
  "type": {
4493
- "primitive": "string"
4493
+ "collection": {
4494
+ "elementtype": {
4495
+ "primitive": "string"
4496
+ },
4497
+ "kind": "array"
4498
+ }
4494
4499
  }
4495
4500
  },
4496
4501
  {
@@ -4508,7 +4513,7 @@
4508
4513
  "name": "testListener",
4509
4514
  "optional": true,
4510
4515
  "type": {
4511
- "fqn": "aws-cdk-lib.aws_elasticloadbalancingv2.ApplicationListener"
4516
+ "fqn": "aws-cdk-lib.aws_elasticloadbalancingv2.IApplicationListener"
4512
4517
  }
4513
4518
  }
4514
4519
  ],
@@ -15701,17 +15706,22 @@
15701
15706
  "abstract": true,
15702
15707
  "docs": {
15703
15708
  "stability": "stable",
15704
- "summary": "Name of the capability to run with the monitoring test suite runner testing."
15709
+ "summary": "Name of the capabilities to run with the monitoring test suite runner testing."
15705
15710
  },
15706
15711
  "immutable": true,
15707
15712
  "locationInModule": {
15708
15713
  "filename": "src/fargate/rio-fargate-service-blue-green-alpha.ts",
15709
15714
  "line": 91
15710
15715
  },
15711
- "name": "capabilityName",
15716
+ "name": "capabilityNames",
15712
15717
  "optional": true,
15713
15718
  "type": {
15714
- "primitive": "string"
15719
+ "collection": {
15720
+ "elementtype": {
15721
+ "primitive": "string"
15722
+ },
15723
+ "kind": "array"
15724
+ }
15715
15725
  }
15716
15726
  },
15717
15727
  {
@@ -15729,7 +15739,7 @@
15729
15739
  "name": "testListener",
15730
15740
  "optional": true,
15731
15741
  "type": {
15732
- "fqn": "aws-cdk-lib.aws_elasticloadbalancingv2.ApplicationListener"
15742
+ "fqn": "aws-cdk-lib.aws_elasticloadbalancingv2.IApplicationListener"
15733
15743
  }
15734
15744
  }
15735
15745
  ],
@@ -18493,5 +18503,5 @@
18493
18503
  }
18494
18504
  },
18495
18505
  "version": "0.0.0",
18496
- "fingerprint": "0RPW4GZmYm3giQeGkgPaxjcftB2SXMHqiIFDe17RZEI="
18506
+ "fingerprint": "+YnSKyV1Q7EsURWGqlI0yxErm9ogh0b77N1M9z5rgJE="
18497
18507
  }
package/docs/API.md CHANGED
@@ -8012,30 +8012,30 @@ const blueGreenDeploymentConfig: BlueGreenDeploymentConfig = { ... }
8012
8012
 
8013
8013
  | **Name** | **Type** | **Description** |
8014
8014
  | --- | --- | --- |
8015
- | <code><a href="#@rio-cloud/cdk-v2-constructs.BlueGreenDeploymentConfig.property.capabilityName">capabilityName</a></code> | <code>string</code> | Name of the capability to run with the monitoring test suite runner testing. |
8016
- | <code><a href="#@rio-cloud/cdk-v2-constructs.BlueGreenDeploymentConfig.property.testListener">testListener</a></code> | <code>aws-cdk-lib.aws_elasticloadbalancingv2.ApplicationListener</code> | The target group to associate with the replacement task set for testing before promoting traffic to production. |
8015
+ | <code><a href="#@rio-cloud/cdk-v2-constructs.BlueGreenDeploymentConfig.property.capabilityNames">capabilityNames</a></code> | <code>string[]</code> | Name of the capabilities to run with the monitoring test suite runner testing. |
8016
+ | <code><a href="#@rio-cloud/cdk-v2-constructs.BlueGreenDeploymentConfig.property.testListener">testListener</a></code> | <code>aws-cdk-lib.aws_elasticloadbalancingv2.IApplicationListener</code> | The target group to associate with the replacement task set for testing before promoting traffic to production. |
8017
8017
 
8018
8018
  ---
8019
8019
 
8020
- ##### `capabilityName`<sup>Optional</sup> <a name="capabilityName" id="@rio-cloud/cdk-v2-constructs.BlueGreenDeploymentConfig.property.capabilityName"></a>
8020
+ ##### `capabilityNames`<sup>Optional</sup> <a name="capabilityNames" id="@rio-cloud/cdk-v2-constructs.BlueGreenDeploymentConfig.property.capabilityNames"></a>
8021
8021
 
8022
8022
  ```typescript
8023
- public readonly capabilityName: string;
8023
+ public readonly capabilityNames: string[];
8024
8024
  ```
8025
8025
 
8026
- - *Type:* string
8026
+ - *Type:* string[]
8027
8027
 
8028
- Name of the capability to run with the monitoring test suite runner testing.
8028
+ Name of the capabilities to run with the monitoring test suite runner testing.
8029
8029
 
8030
8030
  ---
8031
8031
 
8032
8032
  ##### `testListener`<sup>Optional</sup> <a name="testListener" id="@rio-cloud/cdk-v2-constructs.BlueGreenDeploymentConfig.property.testListener"></a>
8033
8033
 
8034
8034
  ```typescript
8035
- public readonly testListener: ApplicationListener;
8035
+ public readonly testListener: IApplicationListener;
8036
8036
  ```
8037
8037
 
8038
- - *Type:* aws-cdk-lib.aws_elasticloadbalancingv2.ApplicationListener
8038
+ - *Type:* aws-cdk-lib.aws_elasticloadbalancingv2.IApplicationListener
8039
8039
  - *Default:* No target group.
8040
8040
 
8041
8041
  The target group to associate with the replacement task set for testing before promoting traffic to production.
@@ -8056,30 +8056,30 @@ const blueGreenDeploymentConfig: fargate.BlueGreenDeploymentConfig = { ... }
8056
8056
 
8057
8057
  | **Name** | **Type** | **Description** |
8058
8058
  | --- | --- | --- |
8059
- | <code><a href="#@rio-cloud/cdk-v2-constructs.fargate.BlueGreenDeploymentConfig.property.capabilityName">capabilityName</a></code> | <code>string</code> | Name of the capability to run with the monitoring test suite runner testing. |
8060
- | <code><a href="#@rio-cloud/cdk-v2-constructs.fargate.BlueGreenDeploymentConfig.property.testListener">testListener</a></code> | <code>aws-cdk-lib.aws_elasticloadbalancingv2.ApplicationListener</code> | The target group to associate with the replacement task set for testing before promoting traffic to production. |
8059
+ | <code><a href="#@rio-cloud/cdk-v2-constructs.fargate.BlueGreenDeploymentConfig.property.capabilityNames">capabilityNames</a></code> | <code>string[]</code> | Name of the capabilities to run with the monitoring test suite runner testing. |
8060
+ | <code><a href="#@rio-cloud/cdk-v2-constructs.fargate.BlueGreenDeploymentConfig.property.testListener">testListener</a></code> | <code>aws-cdk-lib.aws_elasticloadbalancingv2.IApplicationListener</code> | The target group to associate with the replacement task set for testing before promoting traffic to production. |
8061
8061
 
8062
8062
  ---
8063
8063
 
8064
- ##### `capabilityName`<sup>Optional</sup> <a name="capabilityName" id="@rio-cloud/cdk-v2-constructs.fargate.BlueGreenDeploymentConfig.property.capabilityName"></a>
8064
+ ##### `capabilityNames`<sup>Optional</sup> <a name="capabilityNames" id="@rio-cloud/cdk-v2-constructs.fargate.BlueGreenDeploymentConfig.property.capabilityNames"></a>
8065
8065
 
8066
8066
  ```typescript
8067
- public readonly capabilityName: string;
8067
+ public readonly capabilityNames: string[];
8068
8068
  ```
8069
8069
 
8070
- - *Type:* string
8070
+ - *Type:* string[]
8071
8071
 
8072
- Name of the capability to run with the monitoring test suite runner testing.
8072
+ Name of the capabilities to run with the monitoring test suite runner testing.
8073
8073
 
8074
8074
  ---
8075
8075
 
8076
8076
  ##### `testListener`<sup>Optional</sup> <a name="testListener" id="@rio-cloud/cdk-v2-constructs.fargate.BlueGreenDeploymentConfig.property.testListener"></a>
8077
8077
 
8078
8078
  ```typescript
8079
- public readonly testListener: ApplicationListener;
8079
+ public readonly testListener: IApplicationListener;
8080
8080
  ```
8081
8081
 
8082
- - *Type:* aws-cdk-lib.aws_elasticloadbalancingv2.ApplicationListener
8082
+ - *Type:* aws-cdk-lib.aws_elasticloadbalancingv2.IApplicationListener
8083
8083
  - *Default:* No target group.
8084
8084
 
8085
8085
  The target group to associate with the replacement task set for testing before promoting traffic to production.
package/docs/changelog.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines.
4
4
 
5
+ ## [6.10.4](https://bitbucket.collaboration-man.com/projects/RIODEV/repos/cdk-v2-constructs/compare/commits?targetBranch=refs%2Ftags%2Fv6.10.3&sourceBranch=refs%2Ftags%2Fv6.10.4) (2024-10-07)
6
+
5
7
  ## [6.10.3](https://bitbucket.collaboration-man.com/projects/RIODEV/repos/cdk-v2-constructs/compare/commits?targetBranch=refs%2Ftags%2Fv6.10.2&sourceBranch=refs%2Ftags%2Fv6.10.3) (2024-10-04)
6
8
 
7
9
  ## [6.10.2](https://bitbucket.collaboration-man.com/projects/RIODEV/repos/cdk-v2-constructs/compare/commits?targetBranch=refs%2Ftags%2Fv6.10.1&sourceBranch=refs%2Ftags%2Fv6.10.2) (2024-09-24)
@@ -10,14 +10,14 @@ const handler = async (event) => {
10
10
  const serviceName = 'monitoring-testsuite-runner';
11
11
  const clusterName = await getClusterName(ecsClient, serviceName);
12
12
  const taskDefinition = await getTaskDefinition(ecsClient, serviceName);
13
- const subnet = getRequiredEnvVar('SUBNET');
13
+ const subnets = getRequiredEnvVar('SUBNETS').split(',');
14
14
  try {
15
15
  await ecsClient.send(new ecs.RunTaskCommand({
16
16
  taskDefinition,
17
17
  cluster: clusterName,
18
18
  networkConfiguration: {
19
19
  awsvpcConfiguration: {
20
- subnets: [subnet],
20
+ subnets,
21
21
  assignPublicIp: ecs.AssignPublicIp.DISABLED,
22
22
  },
23
23
  },
@@ -40,8 +40,8 @@ const handler = async (event) => {
40
40
  value: 'true',
41
41
  },
42
42
  {
43
- name: 'CAPABILITY_NAME',
44
- value: getRequiredEnvVar('CAPABILITY_NAME'),
43
+ name: 'CAPABILITIES_NAME',
44
+ value: getRequiredEnvVar('CAPABILITIES_NAME'),
45
45
  },
46
46
  ],
47
47
  },
@@ -82,7 +82,4 @@ const getRequiredEnvVar = (envVar) => {
82
82
  }
83
83
  return value;
84
84
  };
85
- // handler({}).then(() => {}).catch((reason) => {
86
- // console.error('Error:', reason);
87
- // });
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLW1vbml0b3JpbmctdGVzdC1zdWl0ZS1ydW5uZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZmFyZ2F0ZS9jb2RlZGVwbG95LWN1c3RvbS1yZXNvdXJjZXMvcnVuLW1vbml0b3JpbmctdGVzdC1zdWl0ZS1ydW5uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkNBQTJDO0FBR3BDLE1BQU0sT0FBTyxHQUFHLEtBQUssRUFBRSxLQUFVLEVBQUMsRUFBRTtJQUN6QyxPQUFPLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLE1BQU0sNkJBQTZCLEdBQUcsS0FBSyxDQUFDLDZCQUE2QixDQUFDO0lBQzFFLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUM7SUFFeEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxHQUFHLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDdEMsTUFBTSxXQUFXLEdBQUcsNkJBQTZCLENBQUM7SUFDbEQsTUFBTSxXQUFXLEdBQUcsTUFBTSxjQUFjLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ2pFLE1BQU0sY0FBYyxHQUFHLE1BQU0saUJBQWlCLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3ZFLE1BQU0sTUFBTSxHQUFHLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzNDLElBQUksQ0FBQztRQUNILE1BQU0sU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxjQUFjLENBQUM7WUFDMUMsY0FBYztZQUNkLE9BQU8sRUFBRSxXQUFXO1lBQ3BCLG9CQUFvQixFQUFFO2dCQUNwQixtQkFBbUIsRUFBRTtvQkFDbkIsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDO29CQUNqQixjQUFjLEVBQUUsR0FBRyxDQUFDLGNBQWMs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bSAnQGF3cy1zZGsvY2xpZW50LWVjcyc7XG5cblxuZXhwb3J0IGNvbnN0IGhhbmRsZXIgPSBhc3luYyAoZXZlbnQ6IGFueSk9PiB7XG4gIGNvbnNvbGUuaW5mbygnUmVjZWl2ZWQgZXZlbnQ6JywgSlNPTi5zdHJpbmdpZnkoZXZlbnQsIG51bGwsIDIpKTtcbiAgY29uc3QgbGlmZWN5Y2xlRXZlbnRIb29rRXhlY3V0aW9uSWQgPSBldmVudC5MaWZlY3ljbGVFdmVudEhvb2tFeGVjdXRpb25JZDtcbiAgY29uc3QgZGVwbG95bWVudElkID0gZXZlbnQuRGVwbG95bWVudElkO1xuXG4gIGNvbnN0IGVjc0NsaWVudCA9IG5ldyBlY3MuRUNTQ2xpZW50KCk7XG4gIGNvbnN0IHNlcnZpY2VOYW1lID0gJ21vbml0b3JpbmctdGVzdHN1aXRlLXJ1bm5lcic7XG4gIGNvbnN0IGNsdXN0ZXJOYW1lID0gYXdhaXQgZ2V0Q2x1c3Rlck5hbWUoZWNzQ2xpZW50LCBzZXJ2aWNlTmFtZSk7XG4gIGNvbnN0IHRhc2tEZWZpbml0aW9uID0gYXdhaXQgZ2V0VGFza0RlZmluaXRpb24oZWNzQ2xpZW50LCBzZXJ2aWNlTmFtZSk7XG4gIGNvbnN0IHN1Ym5ldCA9IGdldFJlcXVpcmVkRW52VmFyKCdTVUJORVQnKTtcbiAgdHJ5IHtcbiAgICBhd2FpdCBlY3NDbGllbnQuc2VuZChuZXcgZWNzLlJ1blRhc2tDb21tYW5kKHtcbiAgICAgIHRhc2tEZWZpbml0aW9uLFxuICAgICAgY2x1c3RlcjogY2x1c3Rlck5hbWUsXG4gICAgICBuZXR3b3JrQ29uZmlndXJhdGlvbjoge1xuICAgICAgICBhd3N2cGNDb25maWd1cmF0aW9uOiB7XG4gICAgICAgICAgc3VibmV0czogW3N1Ym5ldF0sXG4gICAgICAgICAgYXNzaWduUHVibGljSXA6IGVjcy5Bc3NpZ25QdWJsaWNJcC5ESVNBQkxFRCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBsYXVuY2hUeXBlOiBlY3MuTGF1bmNoVHlwZS5GQVJHQVRFLFxuICAgICAgb3ZlcnJpZGVzOiB7XG4gICAgICAgIGNvbnRhaW5lck92ZXJyaWRlczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IHNlcnZpY2VOYW1lLFxuICAgICAgICAgICAgZW52aXJvbm1lbnQ6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdERVBMT1lNRU5UX0lEJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogZGVwbG95bWVudElkLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ0xJRkVDWUNMRV9FVkVOVF9IT09LX0VYRUNVVElPTl9JRCcsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGxpZmVjeWNsZUV2ZW50SG9va0V4ZWN1dGlvbklkLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ0JMVUVfR1JFRU5fREVQTE9ZTUVOVF9URVNUJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJ3RydWUnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ0NBUEFCSUxJVFlfTkFNRScsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGdldFJlcXVpcmVkRW52VmFyKCdDQVBBQklMSVRZX05BTUUnKSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgfSkpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHJ1bm5pbmcgdGFzazonLCBlcnJvcik7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cblxufTtcblxuY29uc3QgZ2V0Q2x1c3Rlck5hbWUgPSBhc3luYyAoZWNzQ2xpZW50OiBlY3MuRUNTQ2xpZW50LCBjbHVzdGVyTmFtZVByZWZpeDogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IGNsdXN0ZXJzID0gYXdhaXQgZWNzQ2xpZW50LnNlbmQobmV3IGVjcy5MaXN0Q2x1c3RlcnNDb21tYW5kKHt9KSk7XG4gIGZvciAoY29uc3QgY2x1c3RlckFybnMgb2YgY2x1c3RlcnMuY2x1c3RlckFybnMgPz8gW10pIHtcbiAgICBjb25zdCBjbHVzdGVyTmFtZSA9IGNsdXN0ZXJBcm5zLnNwbGl0KCcvJykucG9wKCk7XG4gICAgY29uc29sZS5pbmZvKCdDbHVzdGVyIG5hbWU6JywgY2x1c3Rlck5hbWUpO1xuICAgIGlmIChjbHVzdGVyTmFtZSAmJiBjbHVzdGVyTmFtZS5pbmNsdWRlcyhjbHVzdGVyTmFtZVByZWZpeCkpIHtcbiAgICAgIHJldHVybiBjbHVzdGVyTmFtZTtcbiAgICB9XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKCdObyBjbHVzdGVyIGZvdW5kJyk7XG59O1xuXG5jb25zdCBnZXRUYXNrRGVmaW5pdGlvbiA9IGFzeW5jIChlY3NDbGllbnQ6IGVjcy5FQ1NDbGllbnQsIHRhc2tEZWZpbml0aW9uTmFtZTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IHRhc2tEZWZpbml0aW9ucyA9IGF3YWl0IGVjc0NsaWVudC5zZW5kKG5ldyBlY3MuTGlzdFRhc2tEZWZpbml0aW9uc0NvbW1hbmQoeyBzdGF0dXM6IGVjcy5UYXNrRGVmaW5pdGlvblN0YXR1cy5BQ1RJVkUgfSkpO1xuICBmb3IgKGNvbnN0IHRhc2tEZWZpbml0aW9uIG9mIHRhc2tEZWZpbml0aW9ucy50YXNrRGVmaW5pdGlvbkFybnMgPz8gW10pIHtcbiAgICBpZiAodGFza0RlZmluaXRpb24uaW5jbHVkZXModGFza0RlZmluaXRpb25OYW1lKSkge1xuICAgICAgcmV0dXJuIHRhc2tEZWZpbml0aW9uO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ05vIHRhc2sgZGVmaW5pdGlvbiBmb3VuZCcpO1xufTtcblxuY29uc3QgZ2V0UmVxdWlyZWRFbnZWYXIgPSAoZW52VmFyOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgdmFsdWUgPSBwcm9jZXNzLmVudltlbnZWYXJdO1xuICBpZiAoIXZhbHVlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIHJlcXVpcmVkIGVudmlyb25tZW50IHZhcmlhYmxlOiAke2VudlZhcn1gKTtcbiAgfVxuICByZXR1cm4gdmFsdWU7XG59O1xuXG4vLyBoYW5kbGVyKHt9KS50aGVuKCgpID0+IHt9KS5jYXRjaCgocmVhc29uKSA9PiB7XG4vLyAgICAgY29uc29sZS5lcnJvcignRXJyb3I6JywgcmVhc29uKTtcbi8vIH0pOyJdfQ==
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLW1vbml0b3JpbmctdGVzdC1zdWl0ZS1ydW5uZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZmFyZ2F0ZS9jb2RlZGVwbG95LWN1c3RvbS1yZXNvdXJjZXMvcnVuLW1vbml0b3JpbmctdGVzdC1zdWl0ZS1ydW5uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkNBQTJDO0FBR3BDLE1BQU0sT0FBTyxHQUFHLEtBQUssRUFBRSxLQUFVLEVBQUMsRUFBRTtJQUN6QyxPQUFPLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLE1BQU0sNkJBQTZCLEdBQUcsS0FBSyxDQUFDLDZCQUE2QixDQUFDO0lBQzFFLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUM7SUFFeEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxHQUFHLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDdEMsTUFBTSxXQUFXLEdBQUcsNkJBQTZCLENBQUM7SUFDbEQsTUFBTSxXQUFXLEdBQUcsTUFBTSxjQUFjLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ2pFLE1BQU0sY0FBYyxHQUFHLE1BQU0saUJBQWlCLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3ZFLE1BQU0sT0FBTyxHQUFHLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN4RCxJQUFJLENBQUM7UUFDSCxNQUFNLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsY0FBYyxDQUFDO1lBQzFDLGNBQWM7WUFDZCxPQUFPLEVBQUUsV0FBVztZQUNwQixvQkFBb0IsRUFBRTtnQkFDcEIsbUJBQW1CLEVBQUU7b0JBQ25CLE9BQU87b0JBQ1AsY0FBYyxFQUFFLEdBQUcsQ0FBQyxjQUFjLENBQUMsUUFBUTtpQkFDNUM7YUFDRjtZQUNELFVBQVUsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLE9BQU87WUFDbEMsU0FBUyxFQUFFO2dCQUNULGtCQUFrQixFQUFFO29CQUNsQjt3QkFDRSxJQUFJLEVBQUUsV0FBVzt3QkFDakIsV0FBVyxFQUFFOzRCQUNYO2dDQUNFLElBQUksRUFBRSxlQUFlO2dDQUNyQixLQUFLLEVBQUUsWUFBWTs2QkFDcEI7NEJBQ0Q7Z0NBQ0UsSUFBSSxFQUFFLG1DQUFtQztnQ0FDekMsS0FBSyxFQUFFLDZCQUE2Qjs2QkFDckM7NEJBQ0Q7Z0NBQ0UsSUFBSSxFQUFFLDRCQUE0QjtnQ0FDbEMsS0FBSyxFQUFFLE1BQU07NkJBQ2Q7NEJBQ0Q7Z0NBQ0UsSUFBSSxFQUFFLG1CQUFtQjtnQ0FDekIsS0FBSyxFQUFFLGlCQUFpQixDQUFDLG1CQUFtQixDQUFDOzZCQUM5Qzt5QkFDRjtxQkFDRjtpQkFDRjthQUNGO1NBQ0YsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMscUJBQXFCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUMsTUFBTSxLQUFLLENBQUM7SUFDZCxDQUFDO0FBRUgsQ0FBQyxDQUFDO0FBcERXLFFBQUEsT0FBTyxXQW9EbEI7QUFFRixNQUFNLGNBQWMsR0FBRyxLQUFLLEVBQUUsU0FBd0IsRUFBRSxpQkFBeUIsRUFBRSxFQUFFO0lBQ25GLE1BQU0sUUFBUSxHQUFHLE1BQU0sU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFLEtBQUssTUFBTSxXQUFXLElBQUksUUFBUSxDQUFDLFdBQVcsSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUNyRCxNQUFNLFdBQVcsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2pELE9BQU8sQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQzNDLElBQUksV0FBVyxJQUFJLFdBQVcsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDO1lBQzNELE9BQU8sV0FBVyxDQUFDO1FBQ3JCLENBQUM7SUFDSCxDQUFDO0lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBQ3RDLENBQUMsQ0FBQztBQUVGLE1BQU0saUJBQWlCLEdBQUcsS0FBSyxFQUFFLFNBQXdCLEVBQUUsa0JBQTBCLEVBQUUsRUFBRTtJQUN2RixNQUFNLGVBQWUsR0FBRyxNQUFNLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsMEJBQTBCLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLG9CQUFvQixDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5SCxLQUFLLE1BQU0sY0FBYyxJQUFJLGVBQWUsQ0FBQyxrQkFBa0IsSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUN0RSxJQUFJLGNBQWMsQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDO1lBQ2hELE9BQU8sY0FBYyxDQUFDO1FBQ3hCLENBQUM7SUFDSCxDQUFDO0lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0FBQzlDLENBQUMsQ0FBQztBQUVGLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxNQUFjLEVBQUUsRUFBRTtJQUMzQyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNYLE1BQU0sSUFBSSxLQUFLLENBQUMsMENBQTBDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZWNzIGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1lY3MnO1xuXG5cbmV4cG9ydCBjb25zdCBoYW5kbGVyID0gYXN5bmMgKGV2ZW50OiBhbnkpPT4ge1xuICBjb25zb2xlLmluZm8oJ1JlY2VpdmVkIGV2ZW50OicsIEpTT04uc3RyaW5naWZ5KGV2ZW50LCBudWxsLCAyKSk7XG4gIGNvbnN0IGxpZmVjeWNsZUV2ZW50SG9va0V4ZWN1dGlvbklkID0gZXZlbnQuTGlmZWN5Y2xlRXZlbnRIb29rRXhlY3V0aW9uSWQ7XG4gIGNvbnN0IGRlcGxveW1lbnRJZCA9IGV2ZW50LkRlcGxveW1lbnRJZDtcblxuICBjb25zdCBlY3NDbGllbnQgPSBuZXcgZWNzLkVDU0NsaWVudCgpO1xuICBjb25zdCBzZXJ2aWNlTmFtZSA9ICdtb25pdG9yaW5nLXRlc3RzdWl0ZS1ydW5uZXInO1xuICBjb25zdCBjbHVzdGVyTmFtZSA9IGF3YWl0IGdldENsdXN0ZXJOYW1lKGVjc0NsaWVudCwgc2VydmljZU5hbWUpO1xuICBjb25zdCB0YXNrRGVmaW5pdGlvbiA9IGF3YWl0IGdldFRhc2tEZWZpbml0aW9uKGVjc0NsaWVudCwgc2VydmljZU5hbWUpO1xuICBjb25zdCBzdWJuZXRzID0gZ2V0UmVxdWlyZWRFbnZWYXIoJ1NVQk5FVFMnKS5zcGxpdCgnLCcpO1xuICB0cnkge1xuICAgIGF3YWl0IGVjc0NsaWVudC5zZW5kKG5ldyBlY3MuUnVuVGFza0NvbW1hbmQoe1xuICAgICAgdGFza0RlZmluaXRpb24sXG4gICAgICBjbHVzdGVyOiBjbHVzdGVyTmFtZSxcbiAgICAgIG5ldHdvcmtDb25maWd1cmF0aW9uOiB7XG4gICAgICAgIGF3c3ZwY0NvbmZpZ3VyYXRpb246IHtcbiAgICAgICAgICBzdWJuZXRzLFxuICAgICAgICAgIGFzc2lnblB1YmxpY0lwOiBlY3MuQXNzaWduUHVibGljSXAuRElTQUJMRUQsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgbGF1bmNoVHlwZTogZWNzLkxhdW5jaFR5cGUuRkFSR0FURSxcbiAgICAgIG92ZXJyaWRlczoge1xuICAgICAgICBjb250YWluZXJPdmVycmlkZXM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBzZXJ2aWNlTmFtZSxcbiAgICAgICAgICAgIGVudmlyb25tZW50OiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnREVQTE9ZTUVOVF9JRCcsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGRlcGxveW1lbnRJZCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdMSUZFQ1lDTEVfRVZFTlRfSE9PS19FWEVDVVRJT05fSUQnLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBsaWZlY3ljbGVFdmVudEhvb2tFeGVjdXRpb25JZCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdCTFVFX0dSRUVOX0RFUExPWU1FTlRfVEVTVCcsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICd0cnVlJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdDQVBBQklMSVRJRVNfTkFNRScsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGdldFJlcXVpcmVkRW52VmFyKCdDQVBBQklMSVRJRVNfTkFNRScpLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICB9KSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc29sZS5lcnJvcignRXJyb3IgcnVubmluZyB0YXNrOicsIGVycm9yKTtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxuXG59O1xuXG5jb25zdCBnZXRDbHVzdGVyTmFtZSA9IGFzeW5jIChlY3NDbGllbnQ6IGVjcy5FQ1NDbGllbnQsIGNsdXN0ZXJOYW1lUHJlZml4OiBzdHJpbmcpID0+IHtcbiAgY29uc3QgY2x1c3RlcnMgPSBhd2FpdCBlY3NDbGllbnQuc2VuZChuZXcgZWNzLkxpc3RDbHVzdGVyc0NvbW1hbmQoe30pKTtcbiAgZm9yIChjb25zdCBjbHVzdGVyQXJucyBvZiBjbHVzdGVycy5jbHVzdGVyQXJucyA/PyBbXSkge1xuICAgIGNvbnN0IGNsdXN0ZXJOYW1lID0gY2x1c3RlckFybnMuc3BsaXQoJy8nKS5wb3AoKTtcbiAgICBjb25zb2xlLmluZm8oJ0NsdXN0ZXIgbmFtZTonLCBjbHVzdGVyTmFtZSk7XG4gICAgaWYgKGNsdXN0ZXJOYW1lICYmIGNsdXN0ZXJOYW1lLmluY2x1ZGVzKGNsdXN0ZXJOYW1lUHJlZml4KSkge1xuICAgICAgcmV0dXJuIGNsdXN0ZXJOYW1lO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ05vIGNsdXN0ZXIgZm91bmQnKTtcbn07XG5cbmNvbnN0IGdldFRhc2tEZWZpbml0aW9uID0gYXN5bmMgKGVjc0NsaWVudDogZWNzLkVDU0NsaWVudCwgdGFza0RlZmluaXRpb25OYW1lOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgdGFza0RlZmluaXRpb25zID0gYXdhaXQgZWNzQ2xpZW50LnNlbmQobmV3IGVjcy5MaXN0VGFza0RlZmluaXRpb25zQ29tbWFuZCh7IHN0YXR1czogZWNzLlRhc2tEZWZpbml0aW9uU3RhdHVzLkFDVElWRSB9KSk7XG4gIGZvciAoY29uc3QgdGFza0RlZmluaXRpb24gb2YgdGFza0RlZmluaXRpb25zLnRhc2tEZWZpbml0aW9uQXJucyA/PyBbXSkge1xuICAgIGlmICh0YXNrRGVmaW5pdGlvbi5pbmNsdWRlcyh0YXNrRGVmaW5pdGlvbk5hbWUpKSB7XG4gICAgICByZXR1cm4gdGFza0RlZmluaXRpb247XG4gICAgfVxuICB9XG4gIHRocm93IG5ldyBFcnJvcignTm8gdGFzayBkZWZpbml0aW9uIGZvdW5kJyk7XG59O1xuXG5jb25zdCBnZXRSZXF1aXJlZEVudlZhciA9IChlbnZWYXI6IHN0cmluZykgPT4ge1xuICBjb25zdCB2YWx1ZSA9IHByb2Nlc3MuZW52W2VudlZhcl07XG4gIGlmICghdmFsdWUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgcmVxdWlyZWQgZW52aXJvbm1lbnQgdmFyaWFibGU6ICR7ZW52VmFyfWApO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn07Il19
@@ -63,11 +63,11 @@ export interface BlueGreenDeploymentConfig {
63
63
  * The target group to associate with the replacement task set for testing before promoting traffic to production.
64
64
  * @default - No target group.
65
65
  */
66
- readonly testListener?: elbv2.ApplicationListener;
66
+ readonly testListener?: elbv2.IApplicationListener;
67
67
  /**
68
- * Name of the capability to run with the monitoring test suite runner testing
68
+ * Name of the capabilities to run with the monitoring test suite runner testing
69
69
  */
70
- readonly capabilityName?: string;
70
+ readonly capabilityNames?: string[];
71
71
  }
72
72
  export declare class RioFargateServiceBlueGreenAlpha extends constructs.Construct implements ec2.IConnectable {
73
73
  private static readonly DD_ENV_DENY_LIST;
@@ -5,6 +5,7 @@ exports.RioFargateServiceBlueGreenAlpha = void 0;
5
5
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
6
  const cdk = require("aws-cdk-lib");
7
7
  const codedeploy = require("aws-cdk-lib/aws-codedeploy");
8
+ const ec2 = require("aws-cdk-lib/aws-ec2");
8
9
  const ecs = require("aws-cdk-lib/aws-ecs");
9
10
  const elbv2 = require("aws-cdk-lib/aws-elasticloadbalancingv2");
10
11
  const iam = require("aws-cdk-lib/aws-iam");
@@ -277,18 +278,18 @@ class RioFargateServiceBlueGreenAlpha extends constructs.Construct {
277
278
  const createDeploymentLambdaProvider = new cr.Provider(this, 'CreateDeploymentProvider', {
278
279
  onEventHandler: createDeploymentLambda,
279
280
  isCompleteHandler: isCompleteDeploymentLambda,
280
- // TODO: Increase the timeout to 60 minutes instead of default 30 mins
281
+ totalTimeout: cdk.Duration.minutes(60),
281
282
  });
282
283
  let runMonitoringTestSuiteRunnerLambda = undefined;
283
- if (blueGreenDeploymentConfig?.capabilityName) {
284
+ if (blueGreenDeploymentConfig?.capabilityNames) {
284
285
  runMonitoringTestSuiteRunnerLambda = new nodejslambda.NodejsFunction(this, 'RunMonitoringTestSuiteRunnerLambda', {
285
286
  entry: './src/fargate/codedeploy-custom-resources/run-monitoring-test-suite-runner.ts',
286
287
  handler: 'handler',
287
288
  timeout: cdk.Duration.minutes(5),
288
289
  runtime: lambda.Runtime.NODEJS_20_X,
289
290
  environment: {
290
- CAPABILITY_NAME: blueGreenDeploymentConfig.capabilityName,
291
- SUBNET: cdk.Fn.importValue('PrivateSubnet1AID'),
291
+ CAPABILITIES_NAME: blueGreenDeploymentConfig.capabilityNames.join(','),
292
+ SUBNETS: vpc.selectSubnets({ subnetType: ec2.SubnetType.PRIVATE_WITH_EGRESS }).subnetIds.join(','),
292
293
  },
293
294
  });
294
295
  const region = cdk.Stack.of(scope).region;
@@ -381,4 +382,4 @@ class ClusterVpcValidator {
381
382
  return result;
382
383
  }
383
384
  }
384
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmlvLWZhcmdhdGUtc2VydmljZS1ibHVlLWdyZWVuLWFscGhhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ZhcmdhdGUvcmlvLWZhcmdhdGUtc2VydmljZS1ibHVlLWdyZWVuLWFscGhhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsbUNBQW1DO0FBQ25DLHlEQUF5RDtBQUV6RCwyQ0FBMkM7QUFDM0MsZ0VBQWdFO0FBQ2hFLDJDQUEyQztBQUMzQyxpREFBaUQ7QUFDakQsOERBQThEO0FBQzlELDJDQUEyQztBQUMzQyxtREFBbUQ7QUFDbkQseUNBQXlDO0FBQ3pDLHFDQUFxQztBQUNyQywrREFBNEs7QUFDNUsscUNBQWtDO0FBZ0ZsQyxNQUFhLCtCQUNYLFNBQVEsVUFBVSxDQUFDLFNBQVM7SUFrRDVCLFlBQ0UsS0FBMkIsRUFDM0IsRUFBVSxFQUNWLEtBQTJDO1FBRTNDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFsQ0Ysd0NBQW1DLEdBQWEsRUFBRSxDQUFDO1FBQ25ELGdDQUEyQixHQUFHLEVBQUUsQ0FBQztRQUNqQyw2Q0FBd0MsR0FBRyxHQUFHLENBQUM7UUFDL0Msc0NBQWlDLEdBQUcsSUFBSSxDQUFDO1FBQ3pDLHFDQUFnQyxHQUMvQyx3Q0FBa0IsQ0FBQyxnQkFBZ0IsQ0FBQztRQUNyQiw2Q0FBd0MsR0FDdkQsd0NBQWtCLENBQUMsSUFBSSxDQUFDO1FBQ1QsaUNBQTRCLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkQsdUJBQWtCLEdBQUcsU0FBUyxDQUFDO1FBQy9CLGdDQUEyQixHQUFHLFFBQVEsQ0FBQztRQUV2QyxtQkFBYyxHQUFHLEVBQUUsQ0FBQztRQUNwQixnQ0FBMkIsR0FBRyxFQUFFLENBQUM7UUFFakMsK0JBQTBCLEdBQ3pDLG1FQUFtRSxDQUFDO1FBQ3JELDhCQUF5QixHQUFHLGtCQUFrQixDQUFDO1FBbUI5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O1FBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNmLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUVELE1BQU0sTUFBTSxHQUFhLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ2hDLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUN0QyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQzlDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Q0FDRjtBQUVELE1BQU0sbUJBQW1CO0lBQ3ZCLFlBQ21CLEdBQWEsRUFDYixPQUFzQjtRQUR0QixRQUFHLEdBQUgsR0FBRyxDQUFVO1FBQ2IsWUFBTyxHQUFQLE9BQU8sQ0FBZTtJQUN0QyxDQUFDO0lBRUosUUFBUTtRQUNOLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNsQixJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDOUQsTUFBTSxDQUFDLElBQUksQ0FDVCxvQ0FBb0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsOENBQThDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUMvSCxDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBjb2RlZGVwbG95IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jb2RlZGVwbG95JztcbmltcG9ydCAqIGFzIGVjMiBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWMyJztcbmltcG9ydCAqIGFzIGVjcyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWNzJztcbmltcG9ydCAqIGFzIGVsYnYyIGZyb20gJ2F3cy1jZGstbGliL2F3cy1lbGFzdGljbG9hZGJhbGFuY2luZ3YyJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCAqIGFzIG5vZGVqc2xhbWJkYSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhLW5vZGVqcyc7XG5pbXBvcnQgKiBhcyBzc20gZnJvbSAnYXdzLWNkay1saWIvYXdzLXNzbSc7XG5pbXBvcnQgKiBhcyBjciBmcm9tICdhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzJztcbmltcG9ydCAqIGFzIGNvbnN0cnVjdHMgZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgKiBhcyBkYXRhZG9nIGZyb20gJy4vZGF0YWRvZyc7XG5pbXBvcnQgeyBGcmFtZXdvcmssIENvbnRhaW5lckRlZmluaXRpb25PcHRpb25zLCBGYXJnYXRlVGFza0RlZmluaXRpb25Qcm9wcywgTG9hZEJhbGFuY2VyT3B0aW9ucywgRGF0YWRvZ0ludGVncmF0aW9uUHJvcHMsIERhdGFEb2dMb2dnaW5nTW9kZSB9IGZyb20gJy4vcmlvLWZhcmdhdGUtc2VydmljZSc7XG5pbXBvcnQgeyBTcHJpbmcgfSBmcm9tICcuL3NwcmluZyc7XG5cbi8qKlxuICogRmFyZ2F0ZSBUYXNrIERlZmluaXRpb24gUHJvcGVydGllcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSaW9GYXJnYXRlU2VydmljZUJsdWVHcmVlbkFscGhhUHJvcHMge1xuICAvKipcbiAgICogVGhlIHN0YWdlIG9mIHRoZSBzZXJ2aWNlLCBlLmcuICdwcm9kJy5cbiAgICovXG4gIHJlYWRvbmx5IHN0YWdlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBOYW1lIG9mIHRoZSBzZXJ2aWNlLlxuICAgKi9cbiAgcmVhZG9ubHkgc2VydmljZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIHNlcnZpY2UsIGUuZy4gdGhlIGdpdCBoYXNoIG9mIHRoZSBjb3JyZXNwb25kaW5nIGNvbW1pdC5cbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGZyYW1ld29ya3MgaW4gdXNlcy5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSAtIE5vIGZyYW1ld29ya3MuXG4gICAqL1xuICByZWFkb25seSBmcmFtZXdvcmtzPzogRnJhbWV3b3JrW107XG5cbiAgLyoqXG4gICAqIFRoZSBWUEMgb2YgdGhlIHNlcnZpY2UncyBlY3MuQ2x1c3RlciBpZiBubyBjbHVzdGVyIGlzIGV4cGxpY2l0bHkgcGFzc2VkIGFzIHByb3AuXG4gICAqL1xuICByZWFkb25seSB2cGM6IGVjMi5JVnBjO1xuXG4gIC8qKlxuICAgKiBUaGUgRmFyZ2F0ZSBjbHVzdGVyIHRvIHJ1biB0aGUgc2VydmljZSBpbi5cbiAgICogSWYgbm90IG51bGwsIHRoZSBjbHVzdGVyLnZwYyBNVVNUIG1hdGNoIHRoZSB2cGMgcHJvdmlkZWQgYXMgZGlyZWN0IGFyZ3VtZW50LlxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlIC0gQ3JlYXRlIGEgbmV3IEZhcmdhdGUgY2x1c3RlciB3aXRoIGRlZmF1bHQgcHJvcGVydGllc1xuICAgKi9cbiAgcmVhZG9ubHkgY2x1c3Rlcj86IGVjcy5JQ2x1c3RlcjtcblxuICAvKipcbiAgICogQ29udGFpbmVyIGRlZmluaXRpb24gb3B0aW9ucyBsaWtlIGltYWdlLCBjcHUsIG1lbW9yeS5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRhaW5lckRlZmluaXRpb25PcHRpb246IENvbnRhaW5lckRlZmluaXRpb25PcHRpb25zO1xuXG4gIC8qKlxuICAgKiBGYXJnYXRlIFRhc2sgRGVmaW5pdGlvbiBQcm9wZXJ0aWVzLlxuICAgKi9cbiAgcmVhZG9ubHkgZmFyZ2F0ZU9wdGlvbnM6IEZhcmdhdGVUYXNrRGVmaW5pdGlvblByb3BzO1xuXG4gIC8qKlxuICAgKiBMb2FkYmFsYW5jZXIgb3B0aW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IGxvYWRCYWxhbmNlck9wdGlvbnM/OiBMb2FkQmFsYW5jZXJPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBEYXRhZG9nIGludGVncmF0aW9uIHByb3BlcnRpZXNcbiAgICovXG4gIHJlYWRvbmx5IGRhdGFkb2dPcHRpb25zPzogRGF0YWRvZ0ludGVncmF0aW9uUHJvcHM7XG5cbiAgLyoqXG4gICAqIEJsdWUgZ3JlZW4gZGVwbG95bWVudCBjb25maWd1cmF0aW9uXG4gICAqL1xuICByZWFkb25seSBibHVlR3JlZW5EZXBsb3ltZW50Q29uZmlnPzogQmx1ZUdyZWVuRGVwbG95bWVudENvbmZpZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCbHVlR3JlZW5EZXBsb3ltZW50Q29uZmlnIHtcbiAgLyoqXG4gICAgICogVGhlIHRhcmdldCBncm91cCB0byBhc3NvY2lhdGUgd2l0aCB0aGUgcmVwbGFjZW1lbnQgdGFzayBzZXQgZm9yIHRlc3RpbmcgYmVmb3JlIHByb21vdGluZyB0cmFmZmljIHRvIHByb2R1Y3Rpb24uXG4gICAgICogQGRlZmF1bHQgLSBObyB0YXJnZXQgZ3JvdXAuXG4gICAgICovXG4gIHJlYWRvbmx5IHRlc3RMaXN0ZW5lcj86IGVsYnYyLkFwcGxpY2F0aW9uTGlzdGVuZXI7XG5cbiAgLyoqXG4gICAgICogTmFtZSBvZiB0aGUgY2FwYWJpbGl0eSB0byBydW4gd2l0aCB0aGUgbW9uaXRvcmluZyB0ZXN0IHN1aXRlIHJ1bm5lciB0ZXN0aW5nXG4gICAgICovXG4gIHJlYWRvbmx5IGNhcGFiaWxpdHlOYW1lPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgUmlvRmFyZ2F0ZVNlcnZpY2VCbHVlR3JlZW5BbHBoYVxuICBleHRlbmRzIGNvbnN0cnVjdHMuQ29uc3RydWN0XG4gIGltcGxlbWVudHMgZWMyLklDb25uZWN0YWJsZSB7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEREX0VOVl9ERU5ZX0xJU1QgPSBbXG4gICAgJ0REX0VOVicsXG4gICAgJ0REX1RBR1MnLFxuICAgICdERF9TRVJWSUNFJyxcbiAgICAnRERfVkVSU0lPTicsXG4gICAgJ0REX0xPR1NfSU5KRUNUSU9OJyxcbiAgXTtcblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERF9UQUdfREVOWV9MSVNUID0gW1xuICAgICdlbnYnLFxuICAgICdzZXJ2aWNlJyxcbiAgICAndmVyc2lvbicsXG4gICAgJ2FjY291bnRfaWQnLFxuICAgICdhY2NvdW50X25hbWUnLFxuICAgICdyZWdpb24nLFxuICAgICd0ZWFtJyxcbiAgICAndGVhbV9pZGVudGlmaWVyJyxcbiAgXTtcblxuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfQVBNX0dFVF9FTkRQT0lOVFNfVE9fSUdOT1JFOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfREFUQURPR19TSURFQ0FSX0NQVSA9IDY0O1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfREFUQURPR19TSURFQ0FSX01FTU9SWV9MSU1JVF9NSUIgPSAxMjg7XG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9EQVRBRE9HX1NJREVDQVJfRVNTRU5USUFMID0gdHJ1ZTtcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX0xPR0dJTkdfTU9ERV9GT1JfU0VSVklDRSA9XG4gICAgRGF0YURvZ0xvZ2dpbmdNb2RlLkZPUldBUkRFUl9MQU1CREE7XG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9MT0dHSU5HX01PREVfRk9SX0RBVEFET0dfU0lERUNBUiA9XG4gICAgRGF0YURvZ0xvZ2dpbmdNb2RlLk5PTkU7XG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9ERVJFR0lTVFJBVElPTl9ERUxBWSA9IGNkay5EdXJhdGlvbi5zZWNvbmRzKDUpO1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfU0xPV19TVEFSVCA9IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX0RBVEFET0dfU0lERUNBUl9UQUcgPSAnbGF0ZXN0JztcblxuICBwcml2YXRlIHJlYWRvbmx5IExPR19ST1VURVJfQ1BVID0gNjQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgTE9HX1JPVVRFUl9NRU1PUllfTElNSVRfTUlCID0gNjQ7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBGSVJFTEVOU19DT05GSUdfQlVDS0VUX0FSTiA9XG4gICAgJ2Fybjphd3M6czM6Ojo1NzcxNDY4OTc3ODUtZXUtd2VzdC0xLWZpcmVsZW5zLWNvbmZpZ3VyYXRpb24tYnVja2V0JztcbiAgcHJpdmF0ZSByZWFkb25seSBGSVJFTEVOU19DT05GSUdfRklMRV9QQVRIID0gJy9wYXJzZS1qc29uLmNvbmYnO1xuXG4gIHJlYWRvbmx5IHNlcnZpY2VDb250YWluZXJEZWZpbml0aW9uOiBlY3MuQ29udGFpbmVyRGVmaW5pdGlvbjtcbiAgcmVhZG9ubHkgZGF0YWRvZ1NpZGVDYXJDb250YWluZXJEZWZpbml0aW9uOiBlY3MuQ29udGFpbmVyRGVmaW5pdGlvbjtcbiAgcmVhZG9ubHkgbG9nUm91dGVyQ29udGFpbmVyRGVmaW5pdGlvbj86IGVjcy5Db250YWluZXJEZWZpbml0aW9uO1xuICByZWFkb25seSB0YXNrRGVmaW5pdGlvbjogZWNzLkZhcmdhdGVUYXNrRGVmaW5pdGlvbjtcblxuICByZWFkb25seSBjb25uZWN0aW9uczogZWMyLkNvbm5lY3Rpb25zO1xuICByZWFkb25seSBzZXJ2aWNlOiBlY3MuRmFyZ2F0ZVNlcnZpY2U7XG4gIHJlYWRvbmx5IGJsdWVUYXJnZXRHcm91cDogZWxidjIuQXBwbGljYXRpb25UYXJnZXRHcm91cCB8IHVuZGVmaW5lZDtcbiAgcmVhZG9ubHkgZ3JlZW5UYXJnZXRHcm91cDogY2RrLmF3c19lbGFzdGljbG9hZGJhbGFuY2luZ3YyLkFwcGxpY2F0aW9uVGFyZ2V0R3JvdXAgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IFJpb0ZhcmdhdGVTZXJ2aWNlQmx1ZUdyZWVuQWxwaGFQcm9wcyxcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IHtcbiAgICAgIGxvYWRCYWxhbmNlck9wdGlvbnMsXG4gICAgICB2cGMsXG4gICAgICBjbHVzdGVyLFxuICAgICAgZmFyZ2F0ZU9wdGlvbnMsXG4gICAgICBkYXRhZG9nT3B0aW9ucyxcbiAgICAgIHNlcnZpY2VOYW1lLFxuICAgICAgY29udGFpbmVyRGVmaW5pdGlvbk9wdGlvbixcbiAgICAgIHN0YWdlLFxuICAgICAgdmVyc2lvbixcbiAgICAgIGZyYW1ld29ya3MsXG4gICAgICBibHVlR3JlZW5EZXBsb3ltZW50Q29uZmlnLFxuICAgIH0gPSBwcm9wcztcblxuICAgIHRoaXMubm9kZS5hZGRWYWxpZGF0aW9uKFxuICAgICAgbmV3IERlbnlMaXN0ZWRLZXlWYWxpZGF0b3IoXG4gICAgICAgIFJpb0ZhcmdhdGVTZXJ2aWNlQmx1ZUdyZWVuQWxwaGEuRERfRU5WX0RFTllfTElTVCxcbiAgICAgICAgcHJvcHMuY29udGFpbmVyRGVmaW5pdGlvbk9wdGlvbi5lbnZpcm9ubWVudCxcbiAgICAgICAgKGl0KSA9PlxuICAgICAgICAgIGBFbnZpcm9ubWVudCAke2l0fSBpcyBub3QgYWxsb3dlZCB0byBiZSBzZXQuIFRoaXMgdmFsdWUgd2lsbCBiZSBpbmZlcnJlZCBmcm9tIHRoZSBhY2NvdW50IG9yIG90aGVyIHByb3BlcnRpZXMuYCxcbiAgICAgICksXG4gICAgKTtcbiAgICB0aGlzLm5vZGUuYWRkVmFsaWRhdGlvbihcbiAgICAgIG5ldyBEZW55TGlzdGVkS2V5VmFsaWRhdG9yKFxuICAgICAgICBSaW9GYXJnYXRlU2VydmljZUJsdWVHcmVlbkFscGhhLkREX1RBR19ERU5ZX0xJU1QsXG4gICAgICAgIHByb3BzLmRhdGFkb2dPcHRpb25zPy5hZGRpdGlvbmFsVGFncyxcbiAgICAgICAgKGl0KSA9PlxuICAgICAgICAgIGBUYWcgJHtpdH0gaXMgbm90IGFsbG93ZWQgdG8gYmUgc2V0LiBUaGlzIHZhbHVlIHdpbGwgYmUgaW5mZXJyZWQgZnJvbSB0aGUgYWNjb3VudCBvciBvdGhlciBwcm9wZXJ0aWVzLmAsXG4gICAgICApLFxuICAgICk7XG5cbiAgICB0aGlzLm5vZGUuYWRkVmFsaWRhdGlvbihuZXcgQ2x1c3RlclZwY1ZhbGlkYXRvcihwcm9wcy52cGMsIHByb3BzLmNsdXN0ZXIpKTtcblxuICAgIGNvbnN0IGZhcmdhdGVDbHVzdGVyID1cbiAgICAgIGNsdXN0ZXIgPz9cbiAgICAgIG5ldyBlY3MuQ2x1c3Rlcih0aGlzLCAnQ2x1c3RlcicsIHtcbiAgICAgICAgdnBjOiB2cGMsXG4gICAgICB9KTtcbiAgICB0aGlzLnRhc2tEZWZpbml0aW9uID0gbmV3IGVjcy5GYXJnYXRlVGFza0RlZmluaXRpb24oXG4gICAgICB0aGlzLFxuICAgICAgJ1Rhc2tEZWZpbml0aW9uJyxcbiAgICAgIHtcbiAgICAgICAgY3B1OiBmYXJnYXRlT3B0aW9ucy5jcHUsXG4gICAgICAgIG1lbW9yeUxpbWl0TWlCOiBmYXJnYXRlT3B0aW9ucy5tZW1vcnlMaW1pdE1pQixcbiAgICAgICAgcnVudGltZVBsYXRmb3JtOiB7XG4gICAgICAgICAgY3B1QXJjaGl0ZWN0dXJlOlxuICAgICAgICAgICAgZmFyZ2F0ZU9wdGlvbnMucnVudGltZVBsYXRmb3JtPy5jcHVBcmNoaXRlY3R1cmUgPz9cbiAgICAgICAgICAgIGVjcy5DcHVBcmNoaXRlY3R1cmUuWDg2XzY0LFxuICAgICAgICAgIG9wZXJhdGluZ1N5c3RlbUZhbWlseTpcbiAgICAgICAgICAgIGZhcmdhdGVPcHRpb25zLnJ1bnRpbWVQbGF0Zm9ybT8ub3BlcmF0aW5nU3lzdGVtRmFtaWx5ID8/XG4gICAgICAgICAgICBlY3MuT3BlcmF0aW5nU3lzdGVtRmFtaWx5LkxJTlVYLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICApO1xuICAgIGNvbnN0IGFjY291bnROYW1lID0gc3NtLlN0cmluZ1BhcmFtZXRlci5mcm9tU3RyaW5nUGFyYW1ldGVyTmFtZShcbiAgICAgIHRoaXMsXG4gICAgICAnQWNjb3VudE5hbWUnLFxuICAgICAgJy9jb25maWcvYWNjb3VudC9uYW1lJyxcbiAgICApLnN0cmluZ1ZhbHVlO1xuICAgIGNvbnN0IHRlYW1OYW1lID0gc3NtLlN0cmluZ1BhcmFtZXRlci5mcm9tU3RyaW5nUGFyYW1ldGVyTmFtZShcbiAgICAgIHRoaXMsXG4gICAgICAnVGVhbU5hbWUnLFxuICAgICAgJy9jb25maWcvdGVhbS9uYW1lJyxcbiAgICApLnN0cmluZ1ZhbHVlO1xuICAgIGNvbnN0IHRlYW1JZGVudGlmaWVyID0gc3NtLlN0cmluZ1BhcmFtZXRlci5mcm9tU3RyaW5nUGFyYW1ldGVyTmFtZShcbiAgICAgIHRoaXMsXG4gICAgICAnVGVhbUlkZW50aWZpZXInLFxuICAgICAgJy9jb25maWcvdGVhbS9pZGVudGlmaWVyJyxcbiAgICApLnN0cmluZ1ZhbHVlO1xuXG4gICAgY29uc3QgZGF0YWRvZ1NpdGUgPSBzc20uU3RyaW5nUGFyYW1ldGVyLmZyb21TdHJpbmdQYXJhbWV0ZXJOYW1lKFxuICAgICAgdGhpcyxcbiAgICAgICdEYXRhZG9nU2l0ZScsXG4gICAgICAnL3Jpby9jb25maWcvZGF0YWRvZy1pbnRlZ3JhdGlvbi9zaXRlJyxcbiAgICApLnN0cmluZ1ZhbHVlO1xuICAgIGNvbnN0IGRhdGFkb2dBcGlLZXlQYXJhbWV0ZXIgPSBzc20uU3RyaW5nUGFyYW1ldGVyLmZyb21TdHJpbmdQYXJhbWV0ZXJOYW1lKFxuICAgICAgdGhpcyxcbiAgICAgICdEYXRhZG9nQXBpS2V5JyxcbiAgICAgICcvcmlvL2NvbmZpZy9kYXRhZG9nLWludGVncmF0aW9uL2FwaS1rZXknLFxuICAgICk7XG5cbiAgICBjb25zdCBkYXRhZG9nU2lkZWNhckNwdSA9XG4gICAgICBkYXRhZG9nT3B0aW9ucz8uY3B1ID8/IHRoaXMuREVGQVVMVF9EQVRBRE9HX1NJREVDQVJfQ1BVO1xuICAgIGNvbnN0IGRhdGFkb2dTaWRlY2FyTWVtb3J5TWlCID1cbiAgICAgIGRhdGFkb2dPcHRpb25zPy5tZW1vcnlMaW1pdE1pQiA/P1xuICAgICAgdGhpcy5ERUZBVUxUX0RBVEFET0dfU0lERUNBUl9NRU1PUllfTElNSVRfTUlCO1xuICAgIGNvbnN0IGRhdGFkb2dTaWRlY2FyRXNzZW50aWFsID1cbiAgICAgIGRhdGFkb2dPcHRpb25zPy5kYXRhZG9nU2lkZWNhckVzc2VudGlhbCA/P1xuICAgICAgdGhpcy5ERUZBVUxUX0RBVEFET0dfU0lERUNBUl9FU1NFTlRJQUw7XG5cbiAgICBjb25zdCBsb2dnaW5nTW9kZUZvclNlcnZpY2UgPVxuICAgICAgZGF0YWRvZ09wdGlvbnM/LmxvZ2dpbmdNb2RlRm9yU2VydmljZSA/P1xuICAgICAgdGhpcy5ERUZBVUxUX0xPR0dJTkdfTU9ERV9GT1JfU0VSVklDRTtcbiAgICBjb25zdCBsb2dnaW5nTW9kZUZvckRhdGFkb2dBZ2VudCA9XG4gICAgICBkYXRhZG9nT3B0aW9ucz8ubG9nZ2luZ01vZGVGb3JEYXRhZG9nQWdlbnQgPz9cbiAgICAgIHRoaXMuREVGQVVMVF9MT0dHSU5HX01PREVfRk9SX0RBVEFET0dfU0lERUNBUjtcbiAgICBjb25zdCBmaXJlTGVuc0xvZ1JvdXRlclJlcXVpcmVkID1cbiAgICAgIGxvZ2dpbmdNb2RlRm9yU2VydmljZSA9PT0gRGF0YURvZ0xvZ2dpbmdNb2RlLkFXU19GSVJFX0xFTlMgfHxcbiAgICAgIGxvZ2dpbmdNb2RlRm9yRGF0YWRvZ0FnZW50ID09PSBEYXRhRG9nTG9nZ2luZ01vZGUuQVdTX0ZJUkVfTEVOUztcblxuICAgIGxldCBzZXJ2aWNlQ29udGFpbmVyQ3B1VW5pdHM7XG4gICAgbGV0IHNlcnZpY2VDb250YWluZXJNZW1vcnlMaW1pdE1pQjtcblxuICAgIGlmIChmaXJlTGVuc0xvZ1JvdXRlclJlcXVpcmVkKSB7XG4gICAgICBzZXJ2aWNlQ29udGFpbmVyQ3B1VW5pdHMgPVxuICAgICAgICBmYXJnYXRlT3B0aW9ucy5jcHUgLSBkYXRhZG9nU2lkZWNhckNwdSAtIHRoaXMuTE9HX1JPVVRFUl9DUFU7XG4gICAgICBzZXJ2aWNlQ29udGFpbmVyTWVtb3J5TGltaXRNaUIgPVxuICAgICAgICBmYXJnYXRlT3B0aW9ucy5tZW1vcnlMaW1pdE1pQiAtXG4gICAgICAgIGRhdGFkb2dTaWRlY2FyTWVtb3J5TWlCIC1cbiAgICAgICAgdGhpcy5MT0dfUk9VVEVSX01FTU9SWV9MSU1JVF9NSUI7XG4gICAgICBkYXRhZG9nLmFkZEZpcmVsZW5zQ29uZmlnVXBsb2FkRnJvbVMzUGVybWlzc2lvbnMoe1xuICAgICAgICB0YXNrRGVmaW5pdGlvbjogdGhpcy50YXNrRGVmaW5pdGlvbixcbiAgICAgICAgZmlyZWxlbnNDb25maWdCdWNrZXRBcm46IHRoaXMuRklSRUxFTlNfQ09ORklHX0JVQ0tFVF9BUk4sXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2VydmljZUNvbnRhaW5lckNwdVVuaXRzID0gZmFyZ2F0ZU9wdGlvbnMuY3B1IC0gZGF0YWRvZ1NpZGVjYXJDcHU7XG4gICAgICBzZXJ2aWNlQ29udGFpbmVyTWVtb3J5TGltaXRNaUIgPVxuICAgICAgICBmYXJnYXRlT3B0aW9ucy5tZW1vcnlMaW1pdE1pQiAtIGRhdGFkb2dTaWRlY2FyTWVtb3J5TWlCO1xuICAgIH1cbiAgICB0aGlzLnNlcnZpY2VDb250YWluZXJEZWZpbml0aW9uID0gdGhpcy50YXNrRGVmaW5pdGlvbi5hZGRDb250YWluZXIoXG4gICAgICBzZXJ2aWNlTmFtZSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2U6IGNvbnRhaW5lckRlZmluaXRpb25PcHRpb24uaW1hZ2UsXG4gICAgICAgIGNwdTogc2VydmljZUNvbnRhaW5lckNwdVVuaXRzLFxuICAgICAgICBtZW1vcnlMaW1pdE1pQjogc2VydmljZUNvbnRhaW5lck1lbW9yeUxpbWl0TWlCLFxuICAgICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICAgIC4uLmRhdGFkb2cuZ2V0RmFyZ2F0ZUNvbnRhaW5lckVudmlyb25tZW50VmFyaWFibGVzKHtcbiAgICAgICAgICAgIHNjb3BlOiB0aGlzLFxuICAgICAgICAgICAgc3RhZ2UsXG4gICAgICAgICAgICBzZXJ2aWNlTmFtZSxcbiAgICAgICAgICAgIHZlcnNpb24sXG4gICAgICAgICAgICBhY2NvdW50TmFtZSxcbiAgICAgICAgICAgIHRlYW1OYW1lLFxuICAgICAgICAgICAgdGVhbUlkZW50aWZpZXIsXG4gICAgICAgICAgICBhZGRpdGlvbmFsVGFnczogZGF0YWRvZ09wdGlvbnM/LmFkZGl0aW9uYWxUYWdzLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIC4uLmNvbnRhaW5lckRlZmluaXRpb25PcHRpb24uZW52aXJvbm1lbnQsXG4gICAgICAgIH0sXG4gICAgICAgIGRvY2tlckxhYmVsczoge1xuICAgICAgICAgIC4uLmRhdGFkb2cuZ2V0RmFyZ2F0ZURvY2tlckxhYmVscyh7IHN0YWdlLCBzZXJ2aWNlTmFtZSwgdmVyc2lvbiB9KSxcbiAgICAgICAgfSxcbiAgICAgICAgaGVhbHRoQ2hlY2s6IGNvbnRhaW5lckRlZmluaXRpb25PcHRpb24uaGVhbHRoQ2hlY2ssXG4gICAgICAgIGxvZ2dpbmc6IGRhdGFkb2cuc2V0dXBMb2dnaW5nKHtcbiAgICAgICAgICBzY29wZSxcbiAgICAgICAgICBhY2NvdW50TmFtZSxcbiAgICAgICAgICB0ZWFtTmFtZSxcbiAgICAgICAgICB0ZWFtSWRlbnRpZmllcixcbiAgICAgICAgICBzdGFnZSxcbiAgICAgICAgICBzZXJ2aWNlTmFtZSxcbiAgICAgICAgICB2ZXJzaW9uLFxuICAgICAgICAgIGRhdGFkb2dBcGlLZXlQYXJhbWV0ZXIsXG4gICAgICAgICAgZGF0YWRvZ0xvZ2dpbmdNb2RlOiBsb2dnaW5nTW9kZUZvclNlcnZpY2UsXG4gICAgICAgICAgZGF0YWRvZ1NpdGUsXG4gICAgICAgICAgY29udGFpbmVyVHlwZTogJ3NlcnZpY2UnLFxuICAgICAgICAgIGFkZGl0aW9uYWxUYWdzOiBkYXRhZG9nT3B0aW9ucz8uYWRkaXRpb25hbFRhZ3MsXG4gICAgICAgIH0pLFxuICAgICAgICBzZWNyZXRzOiBjb250YWluZXJEZWZpbml0aW9uT3B0aW9uLnNlY3JldHMsXG4gICAgICB9LFxuICAgICk7XG5cbiAgICBpZiAoZnJhbWV3b3Jrcz8uaW5jbHVkZXMoRnJhbWV3b3JrLlNQUklORykpIHtcbiAgICAgIFNwcmluZy5hbGxvd1BhcmFtZXRlclN0b3JlQWNjZXNzRm9yU3ByaW5nQ2xvdWRBd3MoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIHNlcnZpY2VOYW1lLFxuICAgICAgICB0aGlzLnRhc2tEZWZpbml0aW9uLnRhc2tSb2xlLFxuICAgICAgKTtcbiAgICAgIFNwcmluZy5hbGxvd1NlY3JldHNNYW5hZ2VyQWNjZXNzRm9yU3ByaW5nQ2xvdWRBd3MoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIHNlcnZpY2VOYW1lLFxuICAgICAgICB0aGlzLnRhc2tEZWZpbml0aW9uLnRhc2tSb2xlLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoZmlyZUxlbnNMb2dSb3V0ZXJSZXF1aXJlZCkge1xuICAgICAgdGhpcy5sb2dSb3V0ZXJDb250YWluZXJEZWZpbml0aW9uID0gZGF0YWRvZy5hZGRGaXJlTGVuc0xvZ1JvdXRlcih7XG4gICAgICAgIHRhc2tEZWZpbml0aW9uOiB0aGlzLnRhc2tEZWZpbml0aW9uLFxuICAgICAgICBjcHU6IHRoaXMuTE9HX1JPVVRFUl9DUFUsXG4gICAgICAgIG1lbW9yeUxpbWl0TWlCOiB0aGlzLkxPR19ST1VURVJfTUVNT1JZX0xJTUlUX01JQixcbiAgICAgICAgZmlyZWxlbnNDb25maWdCdWNrZXRBcm46IHRoaXMuRklSRUxFTlNfQ09ORklHX0JVQ0tFVF9BUk4sXG4gICAgICAgIGZpcmVsZW5zQ29uZmlnRmlsZVBhdGg6IHRoaXMuRklSRUxFTlNfQ09ORklHX0ZJTEVfUEFUSCxcbiAgICAgICAgc2VydmljZU5hbWU6IHByb3BzLnNlcnZpY2VOYW1lLFxuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuZGF0YWRvZ1NpZGVDYXJDb250YWluZXJEZWZpbml0aW9uID0gZGF0YWRvZy5hZGREYXRhZG9nU2lkZWNhcih7XG4gICAgICBzY29wZSxcbiAgICAgIHRhc2tEZWZpbml0aW9uOiB0aGlzLnRhc2tEZWZpbml0aW9uLFxuICAgICAgYWNjb3VudE5hbWUsXG4gICAgICB0ZWFtTmFtZSxcbiAgICAgIHRlYW1JZGVudGlmaWVyLFxuICAgICAgc3RhZ2UsXG4gICAgICBzZXJ2aWNlTmFtZSxcbiAgICAgIHZlcnNpb24sXG4gICAgICBkYXRhZG9nQXBpS2V5UGFyYW1ldGVyLFxuICAgICAgZGF0YWRvZ1NpdGUsXG4gICAgICBkYXRhZG9nTG9nZ2luZ01vZGU6IGxvZ2dpbmdNb2RlRm9yRGF0YWRvZ0FnZW50LFxuICAgICAgYXBtR2V0UmVzb3VyY2VzVG9JZ25vcmU6XG4gICAgICAgIGRhdGFkb2dPcHRpb25zPy5hcG1HZXRFbmRwb2ludHNUb0lnbm9yZSA/P1xuICAgICAgICB0aGlzLkRFRkFVTFRfQVBNX0dFVF9FTkRQT0lOVFNfVE9fSUdOT1JFLFxuICAgICAgY3B1OiBkYXRhZG9nU2lkZWNhckNwdSxcbiAgICAgIG1lbW9yeUxpbWl0TWlCOiBkYXRhZG9nU2lkZWNhck1lbW9yeU1pQixcbiAgICAgIGVzc2VudGlhbDogZGF0YWRvZ1NpZGVjYXJFc3NlbnRpYWwsXG4gICAgICBjb250YWluZXJUYWc6XG4gICAgICAgIHByb3BzLmRhdGFkb2dPcHRpb25zPy5kYXRhZG9nU2lkZWNhclRhZyA/P1xuICAgICAgICB0aGlzLkRFRkFVTFRfREFUQURPR19TSURFQ0FSX1RBRywgLy8gVGhlc2UgYXJlIHBvc2l0aW9uYWwgcGFyYW1ldGVycyxcbiAgICAgIGFkZGl0aW9uYWxUYWdzOiBkYXRhZG9nT3B0aW9ucz8uYWRkaXRpb25hbFRhZ3MsXG4gICAgfSk7XG5cbiAgICBkYXRhZG9nLmVuc3VyZUxvZ2dpbmdBbmRNb25pdG9yaW5nQXJlUmVhZHlCZWZvcmVTZXJ2aWNlU3RhcnRzKHRoaXMpO1xuXG4gICAgY29uc3QgbG9hZEJhbGFuY2VyT3B0aW9uc0ZvckZhcmdhdGVTZXJ2aWNlID0gbG9hZEJhbGFuY2VyT3B0aW9uc1xuICAgICAgPyB7IGhlYWx0aENoZWNrR3JhY2VQZXJpb2Q6IGxvYWRCYWxhbmNlck9wdGlvbnMuaGVhbHRoQ2hlY2tHcmFjZVBlcmlvZCB9XG4gICAgICA6IHt9O1xuXG4gICAgdGhpcy5zZXJ2aWNlID0gbmV3IGVjcy5GYXJnYXRlU2VydmljZSh0aGlzLCAnU2VydmljZScsIHtcbiAgICAgIGNsdXN0ZXI6IGZhcmdhdGVDbHVzdGVyLFxuICAgICAgdGFza0RlZmluaXRpb246IHRoaXMudGFza0RlZmluaXRpb24sXG4gICAgICBtYXhIZWFsdGh5UGVyY2VudDogMjAwLFxuICAgICAgbWluSGVhbHRoeVBlcmNlbnQ6IDEwMCxcbiAgICAgIGRlc2lyZWRDb3VudDogZmFyZ2F0ZU9wdGlvbnM/LmRlc2lyZWRDb3VudCxcbiAgICAgIGRlcGxveW1lbnRDb250cm9sbGVyOiB7IHR5cGU6IGVjcy5EZXBsb3ltZW50Q29udHJvbGxlclR5cGUuQ09ERV9ERVBMT1kgfSxcbiAgICAgIC4uLmxvYWRCYWxhbmNlck9wdGlvbnNGb3JGYXJnYXRlU2VydmljZSxcbiAgICAgIHByb3BhZ2F0ZVRhZ3M6IGVjcy5Qcm9wYWdhdGVkVGFnU291cmNlLlNFUlZJQ0UsXG4gICAgfSk7XG5cbiAgICB0aGlzLmNvbm5lY3Rpb25zID0gdGhpcy5zZXJ2aWNlLmNvbm5lY3Rpb25zO1xuXG4gICAgaWYgKGxvYWRCYWxhbmNlck9wdGlvbnMgIT0gbnVsbCkge1xuICAgICAgY29uc3QgY29udGFpbmVyUG9ydCA9IDQ0MztcbiAgICAgIHRoaXMuc2VydmljZUNvbnRhaW5lckRlZmluaXRpb24uYWRkUG9ydE1hcHBpbmdzKHtcbiAgICAgICAgY29udGFpbmVyUG9ydDogY29udGFpbmVyUG9ydCxcbiAgICAgICAgcHJvdG9jb2w6IGVjcy5Qcm90b2NvbC5UQ1AsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuYmx1ZVRhcmdldEdyb3VwID0gbmV3IGVsYnYyLkFwcGxpY2F0aW9uVGFyZ2V0R3JvdXAoXG4gICAgICAgIHRoaXMsXG4gICAgICAgICdCbHVlVGFyZ2V0R3JvdXAnLFxuICAgICAgICB7XG4gICAgICAgICAgdnBjOiB2cGMsXG4gICAgICAgICAgcG9ydDogY29udGFpbmVyUG9ydCxcbiAgICAgICAgICBwcm90b2NvbDogZWxidjIuQXBwbGljYXRpb25Qcm90b2NvbC5IVFRQUyxcbiAgICAgICAgICB0YXJnZXRUeXBlOiBlbGJ2Mi5UYXJnZXRUeXBlLklQLFxuICAgICAgICAgIHRhcmdldHM6IFt0aGlzLnNlcnZpY2VdLFxuICAgICAgICAgIGhlYWx0aENoZWNrOiBsb2FkQmFsYW5jZXJPcHRpb25zLmhlYWx0aENoZWNrLFxuICAgICAgICAgIHNsb3dTdGFydDpcbiAgICAgICAgICAgIHByb3BzLmxvYWRCYWxhbmNlck9wdGlvbnM/LnNsb3dTdGFydCA/PyB0aGlzLkRFRkFVTFRfU0xPV19TVEFSVCxcbiAgICAgICAgICBkZXJlZ2lzdHJhdGlvbkRlbGF5OlxuICAgICAgICAgICAgcHJvcHMubG9hZEJhbGFuY2VyT3B0aW9ucz8uZGVyZWdpc3RyYXRpb25EZWxheSA/P1xuICAgICAgICAgICAgdGhpcy5ERUZBVUxUX0RFUkVHSVNUUkFUSU9OX0RFTEFZLFxuICAgICAgICB9LFxuICAgICAgKTtcbiAgICAgIHRoaXMuZ3JlZW5UYXJnZXRHcm91cCA9IG5ldyBlbGJ2Mi5BcHBsaWNhdGlvblRhcmdldEdyb3VwKFxuICAgICAgICB0aGlzLFxuICAgICAgICAnR3JlZW5UYXJnZXRHcm91cCcsXG4gICAgICAgIHtcbiAgICAgICAgICB2cGM6IHZwYyxcbiAgICAgICAgICBwb3J0OiBjb250YWluZXJQb3J0LFxuICAgICAgICAgIHByb3RvY29sOiBlbGJ2Mi5BcHBsaWNhdGlvblByb3RvY29sLkhUVFBTLFxuICAgICAgICAgIHRhcmdldFR5cGU6IGVsYnYyLlRhcmdldFR5cGUuSVAsXG4gICAgICAgICAgdGFyZ2V0czogW3RoaXMuc2VydmljZV0sXG4gICAgICAgICAgaGVhbHRoQ2hlY2s6IGxvYWRCYWxhbmNlck9wdGlvbnMuaGVhbHRoQ2hlY2ssXG4gICAgICAgICAgc2xvd1N0YXJ0OlxuICAgICAgICAgICAgcHJvcHMubG9hZEJhbGFuY2VyT3B0aW9ucz8uc2xvd1N0YXJ0ID8/IHRoaXMuREVGQVVMVF9TTE9XX1NUQVJULFxuICAgICAgICAgIGRlcmVnaXN0cmF0aW9uRGVsYXk6XG4gICAgICAgICAgICBwcm9wcy5sb2FkQmFsYW5jZXJPcHRpb25zPy5kZXJlZ2lzdHJhdGlvbkRlbGF5ID8/XG4gICAgICAgICAgICB0aGlzLkRFRkFVTFRfREVSRUdJU1RSQVRJT05fREVMQVksXG4gICAgICAgIH0sXG4gICAgICApO1xuICAgICAgYmx1ZUdyZWVuRGVwbG95bWVudENvbmZpZz8udGVzdExpc3RlbmVyPy5hZGRUYXJnZXRHcm91cHMoJ1Rlc3RUYXJnZXRHcm91cCcsIHsgdGFyZ2V0R3JvdXBzOiBbdGhpcy5ncmVlblRhcmdldEdyb3VwXSB9KTtcblxuICAgICAgbG9hZEJhbGFuY2VyT3B0aW9ucy5saXN0ZW5lclJ1bGVzLmZvckVhY2goKHsgcHJpb3JpdHksIGNvbmRpdGlvbnMgfSkgPT4ge1xuICAgICAgICBsb2FkQmFsYW5jZXJPcHRpb25zLmxpc3RlbmVyLmFkZFRhcmdldEdyb3VwcyhgUHJpb3JpdHkke3ByaW9yaXR5fUxpc3RlbmVyUnVsZWAsIHtcbiAgICAgICAgICB0YXJnZXRHcm91cHM6IFt0aGlzLmJsdWVUYXJnZXRHcm91cCBhcyBlbGJ2Mi5BcHBsaWNhdGlvblRhcmdldEdyb3VwXSxcbiAgICAgICAgICBwcmlvcml0eTogcHJpb3JpdHksXG4gICAgICAgICAgY29uZGl0aW9uczogY29uZGl0aW9ucyxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIGlmIChibHVlR3JlZW5EZXBsb3ltZW50Q29uZmlnPy50ZXN0TGlzdGVuZXIpIHtcbiAgICAgICAgbG9hZEJhbGFuY2VyT3B0aW9ucy5saXN0ZW5lclJ1bGVzLmZvckVhY2goKHsgcHJpb3JpdHksIGNvbmRpdGlvbnMgfSkgPT4ge1xuICAgICAgICAgIGJsdWVHcmVlbkRlcGxveW1lbnRDb25maWcudGVzdExpc3RlbmVyPy5hZGRUYXJnZXRHcm91cHMoYFByaW9yaXR5JHtwcmlvcml0eX1MaXN0ZW5lclJ1bGVgLCB7XG4gICAgICAgICAgICB0YXJnZXRHcm91cHM6IFt0aGlzLmdyZWVuVGFyZ2V0R3JvdXAgYXMgZWxidjIuQXBwbGljYXRpb25UYXJnZXRHcm91cF0sXG4gICAgICAgICAgICBwcmlvcml0eTogcHJpb3JpdHksXG4gICAgICAgICAgICBjb25kaXRpb25zOiBjb25kaXRpb25zLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZWNzRGVwbG95bWVudEdyb3VwID0gbmV3IGNvZGVkZXBsb3kuRWNzRGVwbG95bWVudEdyb3VwKHRoaXMsICdEZXBsb3ltZW50R3JvdXAnLCB7XG4gICAgICAgIHNlcnZpY2U6IHRoaXMuc2VydmljZSxcbiAgICAgICAgYmx1ZUdyZWVuRGVwbG95bWVudENvbmZpZzoge1xuICAgICAgICAgIGJsdWVUYXJnZXRHcm91cDogdGhpcy5ibHVlVGFyZ2V0R3JvdXAsXG4gICAgICAgICAgZ3JlZW5UYXJnZXRHcm91cDogdGhpcy5ncmVlblRhcmdldEdyb3VwLFxuICAgICAgICAgIGxpc3RlbmVyOiBsb2FkQmFsYW5jZXJPcHRpb25zLmxpc3RlbmVyLFxuICAgICAgICAgIHRlc3RMaXN0ZW5lcjogYmx1ZUdyZWVuRGVwbG95bWVudENvbmZpZz8udGVzdExpc3RlbmVyLFxuICAgICAgICB9LFxuICAgICAgICBkZXBsb3ltZW50Q29uZmlnOlxuICAgICAgICAgIGNvZGVkZXBsb3kuRWNzRGVwbG95bWVudENvbmZpZy5DQU5BUllfMTBQRVJDRU5UXzVNSU5VVEVTLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGNyZWF0ZURlcGxveW1lbnRMYW1iZGEgPSBuZXcgbm9kZWpzbGFtYmRhLk5vZGVqc0Z1bmN0aW9uKHRoaXMsICdDcmVhdGVEZXBsb3ltZW50TGFtYmRhJywge1xuICAgICAgICBlbnRyeTogJy4vc3JjL2ZhcmdhdGUvY29kZWRlcGxveS1jdXN0b20tcmVzb3VyY2VzL2NyZWF0ZS1kZXBsb3ltZW50LW9uLWNyZWF0ZS50cycsXG4gICAgICAgIGhhbmRsZXI6ICdoYW5kbGVyJyxcbiAgICAgICAgdGltZW91dDogY2RrLkR1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICAgIHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lLk5PREVKU18yMF9YLFxuICAgICAgfSk7XG4gICAgICBjcmVhdGVEZXBsb3ltZW50TGFtYmRhLmFkZFRvUm9sZVBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAnY29kZWRlcGxveTpHZXRBcHBsaWNhdGlvblJldmlzaW9uJyxcbiAgICAgICAgICAnY29kZWRlcGxveTpSZWdpc3RlckFwcGxpY2F0aW9uUmV2aXNpb24nLFxuICAgICAgICBdLFxuICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICBlY3NEZXBsb3ltZW50R3JvdXAuYXBwbGljYXRpb24uYXBwbGljYXRpb25Bcm4sXG4gICAgICAgIF0sXG4gICAgICB9KSk7XG4gICAgICBjcmVhdGVEZXBsb3ltZW50TGFtYmRhLmFkZFRvUm9sZVBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAnY29kZWRlcGxveTpDcmVhdGVEZXBsb3ltZW50JyxcbiAgICAgICAgICAnY29kZWRlcGxveTpTdG9wRGVwbG95bWVudCcsXG4gICAgICAgICAgJ2NvZGVkZXBsb3k6R2V0RGVwbG95bWVudCcsXG4gICAgICAgIF0sXG4gICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgIGVjc0RlcGxveW1lbnRHcm91cC5kZXBsb3ltZW50R3JvdXBBcm4sXG4gICAgICAgIF0sXG4gICAgICB9KSk7XG4gICAgICBjcmVhdGVEZXBsb3ltZW50TGFtYmRhLmFkZFRvUm9sZVBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAnY29kZWRlcGxveTpHZXREZXBsb3ltZW50Q29uZmlnJyxcbiAgICAgICAgXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgZWNzRGVwbG95bWVudEdyb3VwLmRlcGxveW1lbnRDb25maWcuZGVwbG95bWVudENvbmZpZ0FybixcbiAgICAgICAgXSxcbiAgICAgIH0pKTtcbiAgICAgIGNvbnN0IGlzQ29tcGxldGVEZXBsb3ltZW50TGFtYmRhID0gbmV3IG5vZGVqc2xhbWJkYS5Ob2RlanNGdW5jdGlvbih0aGlzLCAnSXNDb21wbGV0ZURlcGxveW1lbnRMYW1iZGEnLCB7XG4gICAgICAgIGVudHJ5OiAnLi9zcmMvZmFyZ2F0ZS9jb2RlZGVwbG95LWN1c3RvbS1yZXNvdXJjZXMvY3JlYXRlLWRlcGxveW1lbnQtaXMtY29tcGxldGUudHMnLFxuICAgICAgICBoYW5kbGVyOiAnaGFuZGxlcicsXG4gICAgICAgIHRpbWVvdXQ6IGNkay5EdXJhdGlvbi5taW51dGVzKDUpLFxuICAgICAgICBydW50aW1lOiBsYW1iZGEuUnVudGltZS5OT0RFSlNfMjBfWCxcbiAgICAgIH0pO1xuICAgICAgaXNDb21wbGV0ZURlcGxveW1lbnRMYW1iZGEuYWRkVG9Sb2xlUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICdjb2RlZGVwbG95OkdldERlcGxveW1lbnQnLFxuICAgICAgICBdLFxuICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICBlY3NEZXBsb3ltZW50R3JvdXAuZGVwbG95bWVudEdyb3VwQXJuLFxuICAgICAgICBdLFxuICAgICAgfSkpO1xuICAgICAgY29uc3QgY3JlYXRlRGVwbG95bWVudExhbWJkYVByb3ZpZGVyID0gbmV3IGNyLlByb3ZpZGVyKHRoaXMsICdDcmVhdGVEZXBsb3ltZW50UHJvdmlkZXInLCB7XG4gICAgICAgIG9uRXZlbnRIYW5kbGVyOiBjcmVhdGVEZXBsb3ltZW50TGFtYmRhLFxuICAgICAgICBpc0NvbXBsZXRlSGFuZGxlcjogaXNDb21wbGV0ZURlcGxveW1lbnRMYW1iZGEsXG4gICAgICAgIC8vIFRPRE86IEluY3JlYXNlIHRoZSB0aW1lb3V0IHRvIDYwIG1pbnV0ZXMgaW5zdGVhZCBvZiBkZWZhdWx0IDMwIG1pbnNcbiAgICAgIH0pO1xuICAgICAgbGV0IHJ1bk1vbml0b3JpbmdUZXN0U3VpdGVSdW5uZXJMYW1iZGE6IG5vZGVqc2xhbWJkYS5Ob2RlanNGdW5jdGlvbiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICAgIGlmIChibHVlR3JlZW5EZXBsb3ltZW50Q29uZmlnPy5jYXBhYmlsaXR5TmFtZSkge1xuICAgICAgICBydW5Nb25pdG9yaW5nVGVzdFN1aXRlUnVubmVyTGFtYmRhID0gbmV3IG5vZGVqc2xhbWJkYS5Ob2RlanNGdW5jdGlvbih0aGlzLCAnUnVuTW9uaXRvcmluZ1Rlc3RTdWl0ZVJ1bm5lckxhbWJkYScsIHtcbiAgICAgICAgICBlbnRyeTogJy4vc3JjL2ZhcmdhdGUvY29kZWRlcGxveS1jdXN0b20tcmVzb3VyY2VzL3J1bi1tb25pdG9yaW5nLXRlc3Qtc3VpdGUtcnVubmVyLnRzJyxcbiAgICAgICAgICBoYW5kbGVyOiAnaGFuZGxlcicsXG4gICAgICAgICAgdGltZW91dDogY2RrLkR1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICAgICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzIwX1gsXG4gICAgICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgICAgIENBUEFCSUxJVFlfTkFNRTogYmx1ZUdyZWVuRGVwbG95bWVudENvbmZpZyEuY2FwYWJpbGl0eU5hbWUsXG4gICAgICAgICAgICBTVUJORVQ6IGNkay5Gbi5pbXBvcnRWYWx1ZSgnUHJpdmF0ZVN1Ym5ldDFBSUQnKSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgcmVnaW9uID0gY2RrLlN0YWNrLm9mKHNjb3BlKS5yZWdpb247XG4gICAgICAgIGNvbnN0IGFjY291bnQgPSBjZGsuU3RhY2sub2Yoc2NvcGUpLmFjY291bnQ7XG4gICAgICAgIHJ1bk1vbml0b3JpbmdUZXN0U3VpdGVSdW5uZXJMYW1iZGEuYWRkVG9Sb2xlUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAnZWNzOlJ1blRhc2snLFxuICAgICAgICAgIF0sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgICBgYXJuOmF3czplY3M6JHtyZWdpb259OiR7YWNjb3VudH06dGFzay1kZWZpbml0aW9uL21vbml0b3JpbmctdGVzdHN1aXRlLXJ1bm5lcipgLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0pKTtcbiAgICAgICAgcnVuTW9uaXRvcmluZ1Rlc3RTdWl0ZVJ1bm5lckxhbWJkYS5hZGRUb1JvbGVQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICdlY3M6TGlzdENMdXN0ZXJzJyxcbiAgICAgICAgICAgICdlY3M6TGlzdFRhc2tEZWZpbml0aW9ucycsXG4gICAgICAgICAgXSxcbiAgICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICAgICcqJyxcbiAgICAgICAgICBdLFxuICAgICAgICB9KSk7XG4gICAgICAgIHJ1bk1vbml0b3JpbmdUZXN0U3VpdGVSdW5uZXJMYW1iZGEuYWRkVG9Sb2xlUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBhY3Rpb25zOiBbJ2lhbTpQYXNzUm9sZSddLFxuICAgICAgICAgIHJlc291cmNlczogW2Bhcm46YXdzOmlhbTo6JHthY2NvdW50fTpyb2xlL21vbml0b3JpbmctdGVzdHN1aXRlKmBdLFxuICAgICAgICB9KSk7XG4gICAgICB9XG5cbiAgICAgIG5ldyBjZGsuQ3VzdG9tUmVzb3VyY2UodGhpcywgJ0NyZWF0ZURlcGxveW1lbnQnLCB7XG4gICAgICAgIHNlcnZpY2VUb2tlbjogY3JlYXRlRGVwbG95bWVudExhbWJkYVByb3ZpZGVyLnNlcnZpY2VUb2tlbixcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIEFwcGxpY2F0aW9uTmFtZTogZWNzRGVwbG95bWVudEdyb3VwLmFwcGxpY2F0aW9uLmFwcGxpY2F0aW9uTmFtZSxcbiAgICAgICAgICBEZXBsb3ltZW50R3JvdXBOYW1lOiBlY3NEZXBsb3ltZW50R3JvdXAuZGVwbG95bWVudEdyb3VwTmFtZSxcbiAgICAgICAgICBUYXNrRGVmaW5pdGlvbkFybjogdGhpcy50YXNrRGVmaW5pdGlvbi50YXNrRGVmaW5pdGlvbkFybixcbiAgICAgICAgICBDb250YWluZXJOYW1lOiBzZXJ2aWNlTmFtZSxcbiAgICAgICAgICBDb250YWluZXJQb3J0OiBjb250YWluZXJQb3J0LFxuICAgICAgICAgIEFmdGVyQWxsb3dUZXN0VHJhZmZpY0hvb2s6IHJ1bk1vbml0b3JpbmdUZXN0U3VpdGVSdW5uZXJMYW1iZGE/LmZ1bmN0aW9uQXJuLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICB9XG4gIH1cbn1cblxuY2xhc3MgRGVueUxpc3RlZEtleVZhbGlkYXRvciBpbXBsZW1lbnRzIGNvbnN0cnVjdHMuSVZhbGlkYXRpb24ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlbnlMaXN0OiBzdHJpbmdbXSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRpY3Q6IHsgW2tleTogc3RyaW5nXTogYW55IH0gfCB1bmRlZmluZWQsXG4gICAgcHJpdmF0ZSByZWFkb25seSBtZXNzYWdlR2VuZXJhdG9yOiAoa2V5TmFtZTogc3RyaW5nKSA9PiBzdHJpbmcsXG4gICkge31cblxuICB2YWxpZGF0ZSgpOiBzdHJpbmdbXSB7XG4gICAgaWYgKCF0aGlzLmRpY3QpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQ6IHN0cmluZ1tdID0gW107XG4gICAgdGhpcy5kZW55TGlzdC5mb3JFYWNoKChrZXlOYW1lKSA9PiB7XG4gICAgICBpZiAodGhpcy5kaWN0ICYmIGtleU5hbWUgaW4gdGhpcy5kaWN0KSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKHRoaXMubWVzc2FnZUdlbmVyYXRvcihrZXlOYW1lKSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG5cbmNsYXNzIENsdXN0ZXJWcGNWYWxpZGF0b3IgaW1wbGVtZW50cyBjb25zdHJ1Y3RzLklWYWxpZGF0aW9uIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSB2cGM6IGVjMi5JVnBjLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2x1c3Rlcj86IGVjcy5JQ2x1c3RlcixcbiAgKSB7fVxuXG4gIHZhbGlkYXRlKCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICBpZiAodGhpcy5jbHVzdGVyICYmIHRoaXMuY2x1c3Rlci52cGMudnBjSWQgIT09IHRoaXMudnBjLnZwY0lkKSB7XG4gICAgICByZXN1bHQucHVzaChcbiAgICAgICAgYFRoZSBWUEMgcHJvdmlkZWQgaW4gdGhlIGNsdXN0ZXIgKCR7dGhpcy5jbHVzdGVyLnZwYy5ub2RlLmlkfSkgTVVTVCBtYXRjaCB0aGUgVlBDIHByb3ZpZGVkIGFzIGFyZ3VtZW50ICgke3RoaXMudnBjLm5vZGUuaWR9KS5gLFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIl19
385
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmlvLWZhcmdhdGUtc2VydmljZS1ibHVlLWdyZWVuLWFscGhhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ZhcmdhdGUvcmlvLWZhcmdhdGUtc2VydmljZS1ibHVlLWdyZWVuLWFscGhhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsbUNBQW1DO0FBQ25DLHlEQUF5RDtBQUN6RCwyQ0FBMkM7QUFDM0MsMkNBQTJDO0FBQzNDLGdFQUFnRTtBQUNoRSwyQ0FBMkM7QUFDM0MsaURBQWlEO0FBQ2pELDhEQUE4RDtBQUM5RCwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHlDQUF5QztBQUN6QyxxQ0FBcUM7QUFDckMsK0RBQTRLO0FBQzVLLHFDQUFrQztBQWdGbEMsTUFBYSwrQkFDWCxTQUFRLFVBQVUsQ0FBQyxTQUFTO0lBa0Q1QixZQUNFLEtBQTJCLEVBQzNCLEVBQVUsRUFDVixLQUEyQztRQUUzQyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBbENGLHdDQUFtQyxHQUFhLEVBQUUsQ0FBQztRQUNuRCxnQ0FBMkIsR0FBRyxFQUFFLENBQUM7UUFDakMsNkNBQXdDLEdBQUcsR0FBRyxDQUFDO1FBQy9DLHNDQUFpQyxHQUFHLElBQUksQ0FBQztRQUN6QyxxQ0FBZ0MsR0FDL0Msd0NBQWtCLENBQUMsZ0JBQWdCLENBQUM7UUFDckIsNkNBQXdDLEdBQ3ZELHdDQUFrQixDQUFDLElBQUksQ0FBQztRQUNULGlDQUE0QixHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZELHVCQUFrQixHQUFHLFNBQVMsQ0FBQztRQUMvQixnQ0FBMkIsR0FBRyxRQUFRLENBQUM7UUFFdkMsbUJBQWMsR0FBRyxFQUFFLENBQUM7UUFDcEIsZ0NBQTJCLEdBQUcsRUFBRSxDQUFDO1FBRWpDLCtCQUEwQixHQUN6QyxtRUFBbUUsQ0FBQztRQUNyRCw4QkFBeUIsR0FBRyxrQkFB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LENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgY29kZWRlcGxveSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY29kZWRlcGxveSc7XG5pbXBvcnQgKiBhcyBlYzIgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjMic7XG5pbXBvcnQgKiBhcyBlY3MgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjcyc7XG5pbXBvcnQgKiBhcyBlbGJ2MiBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWxhc3RpY2xvYWRiYWxhbmNpbmd2Mic7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgKiBhcyBub2RlanNsYW1iZGEgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYS1ub2RlanMnO1xuaW1wb3J0ICogYXMgc3NtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zc20nO1xuaW1wb3J0ICogYXMgY3IgZnJvbSAnYXdzLWNkay1saWIvY3VzdG9tLXJlc291cmNlcyc7XG5pbXBvcnQgKiBhcyBjb25zdHJ1Y3RzIGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0ICogYXMgZGF0YWRvZyBmcm9tICcuL2RhdGFkb2cnO1xuaW1wb3J0IHsgRnJhbWV3b3JrLCBDb250YWluZXJEZWZpbml0aW9uT3B0aW9ucywgRmFyZ2F0ZVRhc2tEZWZpbml0aW9uUHJvcHMsIExvYWRCYWxhbmNlck9wdGlvbnMsIERhdGFkb2dJbnRlZ3JhdGlvblByb3BzLCBEYXRhRG9nTG9nZ2luZ01vZGUgfSBmcm9tICcuL3Jpby1mYXJnYXRlLXNlcnZpY2UnO1xuaW1wb3J0IHsgU3ByaW5nIH0gZnJvbSAnLi9zcHJpbmcnO1xuXG4vKipcbiAqIEZhcmdhdGUgVGFzayBEZWZpbml0aW9uIFByb3BlcnRpZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmlvRmFyZ2F0ZVNlcnZpY2VCbHVlR3JlZW5BbHBoYVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBzdGFnZSBvZiB0aGUgc2VydmljZSwgZS5nLiAncHJvZCcuXG4gICAqL1xuICByZWFkb25seSBzdGFnZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgTmFtZSBvZiB0aGUgc2VydmljZS5cbiAgICovXG4gIHJlYWRvbmx5IHNlcnZpY2VOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBzZXJ2aWNlLCBlLmcuIHRoZSBnaXQgaGFzaCBvZiB0aGUgY29ycmVzcG9uZGluZyBjb21taXQuXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBmcmFtZXdvcmtzIGluIHVzZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgLSBObyBmcmFtZXdvcmtzLlxuICAgKi9cbiAgcmVhZG9ubHkgZnJhbWV3b3Jrcz86IEZyYW1ld29ya1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgVlBDIG9mIHRoZSBzZXJ2aWNlJ3MgZWNzLkNsdXN0ZXIgaWYgbm8gY2x1c3RlciBpcyBleHBsaWNpdGx5IHBhc3NlZCBhcyBwcm9wLlxuICAgKi9cbiAgcmVhZG9ubHkgdnBjOiBlYzIuSVZwYztcblxuICAvKipcbiAgICogVGhlIEZhcmdhdGUgY2x1c3RlciB0byBydW4gdGhlIHNlcnZpY2UgaW4uXG4gICAqIElmIG5vdCBudWxsLCB0aGUgY2x1c3Rlci52cGMgTVVTVCBtYXRjaCB0aGUgdnBjIHByb3ZpZGVkIGFzIGRpcmVjdCBhcmd1bWVudC5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSAtIENyZWF0ZSBhIG5ldyBGYXJnYXRlIGNsdXN0ZXIgd2l0aCBkZWZhdWx0IHByb3BlcnRpZXNcbiAgICovXG4gIHJlYWRvbmx5IGNsdXN0ZXI/OiBlY3MuSUNsdXN0ZXI7XG5cbiAgLyoqXG4gICAqIENvbnRhaW5lciBkZWZpbml0aW9uIG9wdGlvbnMgbGlrZSBpbWFnZSwgY3B1LCBtZW1vcnkuXG4gICAqL1xuICByZWFkb25seSBjb250YWluZXJEZWZpbml0aW9uT3B0aW9uOiBDb250YWluZXJEZWZpbml0aW9uT3B0aW9ucztcblxuICAvKipcbiAgICogRmFyZ2F0ZSBUYXNrIERlZmluaXRpb24gUHJvcGVydGllcy5cbiAgICovXG4gIHJlYWRvbmx5IGZhcmdhdGVPcHRpb25zOiBGYXJnYXRlVGFza0RlZmluaXRpb25Qcm9wcztcblxuICAvKipcbiAgICogTG9hZGJhbGFuY2VyIG9wdGlvbnMuXG4gICAqL1xuICByZWFkb25seSBsb2FkQmFsYW5jZXJPcHRpb25zPzogTG9hZEJhbGFuY2VyT3B0aW9ucztcblxuICAvKipcbiAgICogRGF0YWRvZyBpbnRlZ3JhdGlvbiBwcm9wZXJ0aWVzXG4gICAqL1xuICByZWFkb25seSBkYXRhZG9nT3B0aW9ucz86IERhdGFkb2dJbnRlZ3JhdGlvblByb3BzO1xuXG4gIC8qKlxuICAgKiBCbHVlIGdyZWVuIGRlcGxveW1lbnQgY29uZmlndXJhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgYmx1ZUdyZWVuRGVwbG95bWVudENvbmZpZz86IEJsdWVHcmVlbkRlcGxveW1lbnRDb25maWc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmx1ZUdyZWVuRGVwbG95bWVudENvbmZpZyB7XG4gIC8qKlxuICAgICAqIFRoZSB0YXJnZXQgZ3JvdXAgdG8gYXNzb2NpYXRlIHdpdGggdGhlIHJlcGxhY2VtZW50IHRhc2sgc2V0IGZvciB0ZXN0aW5nIGJlZm9yZSBwcm9tb3RpbmcgdHJhZmZpYyB0byBwcm9kdWN0aW9uLlxuICAgICAqIEBkZWZhdWx0IC0gTm8gdGFyZ2V0IGdyb3VwLlxuICAgICAqL1xuICByZWFkb25seSB0ZXN0TGlzdGVuZXI/OiBlbGJ2Mi5JQXBwbGljYXRpb25MaXN0ZW5lcjtcblxuICAvKipcbiAgICAgKiBOYW1lIG9mIHRoZSBjYXBhYmlsaXRpZXMgdG8gcnVuIHdpdGggdGhlIG1vbml0b3JpbmcgdGVzdCBzdWl0ZSBydW5uZXIgdGVzdGluZ1xuICAgICAqL1xuICByZWFkb25seSBjYXBhYmlsaXR5TmFtZXM/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGNsYXNzIFJpb0ZhcmdhdGVTZXJ2aWNlQmx1ZUdyZWVuQWxwaGFcbiAgZXh0ZW5kcyBjb25zdHJ1Y3RzLkNvbnN0cnVjdFxuICBpbXBsZW1lbnRzIGVjMi5JQ29ubmVjdGFibGUge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERF9FTlZfREVOWV9MSVNUID0gW1xuICAgICdERF9FTlYnLFxuICAgICdERF9UQUdTJyxcbiAgICAnRERfU0VSVklDRScsXG4gICAgJ0REX1ZFUlNJT04nLFxuICAgICdERF9MT0dTX0lOSkVDVElPTicsXG4gIF07XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgRERfVEFHX0RFTllfTElTVCA9IFtcbiAgICAnZW52JyxcbiAgICAnc2VydmljZScsXG4gICAgJ3ZlcnNpb24nLFxuICAgICdhY2NvdW50X2lkJyxcbiAgICAnYWNjb3VudF9uYW1lJyxcbiAgICAncmVnaW9uJyxcbiAgICAndGVhbScsXG4gICAgJ3RlYW1faWRlbnRpZmllcicsXG4gIF07XG5cbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX0FQTV9HRVRfRU5EUE9JTlRTX1RPX0lHTk9SRTogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX0RBVEFET0dfU0lERUNBUl9DUFUgPSA2NDtcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX0RBVEFET0dfU0lERUNBUl9NRU1PUllfTElNSVRfTUlCID0gMTI4O1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfREFUQURPR19TSURFQ0FSX0VTU0VOVElBTCA9IHRydWU7XG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9MT0dHSU5HX01PREVfRk9SX1NFUlZJQ0UgPVxuICAgIERhdGFEb2dMb2dnaW5nTW9kZS5GT1JXQVJERVJfTEFNQkRBO1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfTE9HR0lOR19NT0RFX0ZPUl9EQVRBRE9HX1NJREVDQVIgPVxuICAgIERhdGFEb2dMb2dnaW5nTW9kZS5OT05FO1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfREVSRUdJU1RSQVRJT05fREVMQVkgPSBjZGsuRHVyYXRpb24uc2Vjb25kcyg1KTtcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX1NMT1dfU1RBUlQgPSB1bmRlZmluZWQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9EQVRBRE9HX1NJREVDQVJfVEFHID0gJ2xhdGVzdCc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBMT0dfUk9VVEVSX0NQVSA9IDY0O1xuICBwcml2YXRlIHJlYWRvbmx5IExPR19ST1VURVJfTUVNT1JZX0xJTUlUX01JQiA9IDY0O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgRklSRUxFTlNfQ09ORklHX0JVQ0tFVF9BUk4gPVxuICAgICdhcm46YXdzOnMzOjo6NTc3MTQ2ODk3Nzg1LWV1LXdlc3QtMS1maXJlbGVucy1jb25maWd1cmF0aW9uLWJ1Y2tldCc7XG4gIHByaXZhdGUgcmVhZG9ubHkgRklSRUxFTlNfQ09ORklHX0ZJTEVfUEFUSCA9ICcvcGFyc2UtanNvbi5jb25mJztcblxuICByZWFkb25seSBzZXJ2aWNlQ29udGFpbmVyRGVmaW5pdGlvbjogZWNzLkNvbnRhaW5lckRlZmluaXRpb247XG4gIHJlYWRvbmx5IGRhdGFkb2dTaWRlQ2FyQ29udGFpbmVyRGVmaW5pdGlvbjogZWNzLkNvbnRhaW5lckRlZmluaXRpb247XG4gIHJlYWRvbmx5IGxvZ1JvdXRlckNvbnRhaW5lckRlZmluaXRpb24/OiBlY3MuQ29udGFpbmVyRGVmaW5pdGlvbjtcbiAgcmVhZG9ubHkgdGFza0RlZmluaXRpb246IGVjcy5GYXJnYXRlVGFza0RlZmluaXRpb247XG5cbiAgcmVhZG9ubHkgY29ubmVjdGlvbnM6IGVjMi5Db25uZWN0aW9ucztcbiAgcmVhZG9ubHkgc2VydmljZTogZWNzLkZhcmdhdGVTZXJ2aWNlO1xuICByZWFkb25seSBibHVlVGFyZ2V0R3JvdXA6IGVsYnYyLkFwcGxpY2F0aW9uVGFyZ2V0R3JvdXAgfCB1bmRlZmluZWQ7XG4gIHJlYWRvbmx5IGdyZWVuVGFyZ2V0R3JvdXA6IGNkay5hd3NfZWxhc3RpY2xvYWRiYWxhbmNpbmd2Mi5BcHBsaWNhdGlvblRhcmdldEdyb3VwIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBjb25zdHJ1Y3RzLkNvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBSaW9GYXJnYXRlU2VydmljZUJsdWVHcmVlbkFscGhhUHJvcHMsXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCB7XG4gICAgICBsb2FkQmFsYW5jZXJPcHRpb25zLFxuICAgICAgdnBjLFxuICAgICAgY2x1c3RlcixcbiAgICAgIGZhcmdhdGVPcHRpb25zLFxuICAgICAgZGF0YWRvZ09wdGlvbnMsXG4gICAgICBzZXJ2aWNlTmFtZSxcbiAgICAgIGNvbnRhaW5lckRlZmluaXRpb25PcHRpb24sXG4gICAgICBzdGFnZSxcbiAgICAgIHZlcnNpb24sXG4gICAgICBmcmFtZXdvcmtzLFxuICAgICAgYmx1ZUdyZWVuRGVwbG95bWVudENvbmZpZyxcbiAgICB9ID0gcHJvcHM7XG5cbiAgICB0aGlzLm5vZGUuYWRkVmFsaWRhdGlvbihcbiAgICAgIG5ldyBEZW55TGlzdGVkS2V5VmFsaWRhdG9yKFxuICAgICAgICBSaW9GYXJnYXRlU2VydmljZUJsdWVHcmVlbkFscGhhLkREX0VOVl9ERU5ZX0xJU1QsXG4gICAgICAgIHByb3BzLmNvbnRhaW5lckRlZmluaXRpb25PcHRpb24uZW52aXJvbm1lbnQsXG4gICAgICAgIChpdCkgPT5cbiAgICAgICAgICBgRW52aXJvbm1lbnQgJHtpdH0gaXMgbm90IGFsbG93ZWQgdG8gYmUgc2V0LiBUaGlzIHZhbHVlIHdpbGwgYmUgaW5mZXJyZWQgZnJvbSB0aGUgYWNjb3VudCBvciBvdGhlciBwcm9wZXJ0aWVzLmAsXG4gICAgICApLFxuICAgICk7XG4gICAgdGhpcy5ub2RlLmFkZFZhbGlkYXRpb24oXG4gICAgICBuZXcgRGVueUxpc3RlZEtleVZhbGlkYXRvcihcbiAgICAgICAgUmlvRmFyZ2F0ZVNlcnZpY2VCbHVlR3JlZW5BbHBoYS5ERF9UQUdfREVOWV9MSVNULFxuICAgICAgICBwcm9wcy5kYXRhZG9nT3B0aW9ucz8uYWRkaXRpb25hbFRhZ3MsXG4gICAgICAgIChpdCkgPT5cbiAgICAgICAgICBgVGFnICR7aXR9IGlzIG5vdCBhbGxvd2VkIHRvIGJlIHNldC4gVGhpcyB2YWx1ZSB3aWxsIGJlIGluZmVycmVkIGZyb20gdGhlIGFjY291bnQgb3Igb3RoZXIgcHJvcGVydGllcy5gLFxuICAgICAgKSxcbiAgICApO1xuXG4gICAgdGhpcy5ub2RlLmFkZFZhbGlkYXRpb24obmV3IENsdXN0ZXJWcGNWYWxpZGF0b3IocHJvcHMudnBjLCBwcm9wcy5jbHVzdGVyKSk7XG5cbiAgICBjb25zdCBmYXJnYXRlQ2x1c3RlciA9XG4gICAgICBjbHVzdGVyID8/XG4gICAgICBuZXcgZWNzLkNsdXN0ZXIodGhpcywgJ0NsdXN0ZXInLCB7XG4gICAgICAgIHZwYzogdnBjLFxuICAgICAgfSk7XG4gICAgdGhpcy50YXNrRGVmaW5pdGlvbiA9IG5ldyBlY3MuRmFyZ2F0ZVRhc2tEZWZpbml0aW9uKFxuICAgICAgdGhpcyxcbiAgICAgICdUYXNrRGVmaW5pdGlvbicsXG4gICAgICB7XG4gICAgICAgIGNwdTogZmFyZ2F0ZU9wdGlvbnMuY3B1LFxuICAgICAgICBtZW1vcnlMaW1pdE1pQjogZmFyZ2F0ZU9wdGlvbnMubWVtb3J5TGltaXRNaUIsXG4gICAgICAgIHJ1bnRpbWVQbGF0Zm9ybToge1xuICAgICAgICAgIGNwdUFyY2hpdGVjdHVyZTpcbiAgICAgICAgICAgIGZhcmdhdGVPcHRpb25zLnJ1bnRpbWVQbGF0Zm9ybT8uY3B1QXJjaGl0ZWN0dXJlID8/XG4gICAgICAgICAgICBlY3MuQ3B1QXJjaGl0ZWN0dXJlLlg4Nl82NCxcbiAgICAgICAgICBvcGVyYXRpbmdTeXN0ZW1GYW1pbHk6XG4gICAgICAgICAgICBmYXJnYXRlT3B0aW9ucy5ydW50aW1lUGxhdGZvcm0/Lm9wZXJhdGluZ1N5c3RlbUZhbWlseSA/P1xuICAgICAgICAgICAgZWNzLk9wZXJhdGluZ1N5c3RlbUZhbWlseS5MSU5VWCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgKTtcbiAgICBjb25zdCBhY2NvdW50TmFtZSA9IHNzbS5TdHJpbmdQYXJhbWV0ZXIuZnJvbVN0cmluZ1BhcmFtZXRlck5hbWUoXG4gICAgICB0aGlzLFxuICAgICAgJ0FjY291bnROYW1lJyxcbiAgICAgICcvY29uZmlnL2FjY291bnQvbmFtZScsXG4gICAgKS5zdHJpbmdWYWx1ZTtcbiAgICBjb25zdCB0ZWFtTmFtZSA9IHNzbS5TdHJpbmdQYXJhbWV0ZXIuZnJvbVN0cmluZ1BhcmFtZXRlck5hbWUoXG4gICAgICB0aGlzLFxuICAgICAgJ1RlYW1OYW1lJyxcbiAgICAgICcvY29uZmlnL3RlYW0vbmFtZScsXG4gICAgKS5zdHJpbmdWYWx1ZTtcbiAgICBjb25zdCB0ZWFtSWRlbnRpZmllciA9IHNzbS5TdHJpbmdQYXJhbWV0ZXIuZnJvbVN0cmluZ1BhcmFtZXRlck5hbWUoXG4gICAgICB0aGlzLFxuICAgICAgJ1RlYW1JZGVudGlmaWVyJyxcbiAgICAgICcvY29uZmlnL3RlYW0vaWRlbnRpZmllcicsXG4gICAgKS5zdHJpbmdWYWx1ZTtcblxuICAgIGNvbnN0IGRhdGFkb2dTaXRlID0gc3NtLlN0cmluZ1BhcmFtZXRlci5mcm9tU3RyaW5nUGFyYW1ldGVyTmFtZShcbiAgICAgIHRoaXMsXG4gICAgICAnRGF0YWRvZ1NpdGUnLFxuICAgICAgJy9yaW8vY29uZmlnL2RhdGFkb2ctaW50ZWdyYXRpb24vc2l0ZScsXG4gICAgKS5zdHJpbmdWYWx1ZTtcbiAgICBjb25zdCBkYXRhZG9nQXBpS2V5UGFyYW1ldGVyID0gc3NtLlN0cmluZ1BhcmFtZXRlci5mcm9tU3RyaW5nUGFyYW1ldGVyTmFtZShcbiAgICAgIHRoaXMsXG4gICAgICAnRGF0YWRvZ0FwaUtleScsXG4gICAgICAnL3Jpby9jb25maWcvZGF0YWRvZy1pbnRlZ3JhdGlvbi9hcGkta2V5JyxcbiAgICApO1xuXG4gICAgY29uc3QgZGF0YWRvZ1NpZGVjYXJDcHUgPVxuICAgICAgZGF0YWRvZ09wdGlvbnM/LmNwdSA/PyB0aGlzLkRFRkFVTFRfREFUQURPR19TSURFQ0FSX0NQVTtcbiAgICBjb25zdCBkYXRhZG9nU2lkZWNhck1lbW9yeU1pQiA9XG4gICAgICBkYXRhZG9nT3B0aW9ucz8ubWVtb3J5TGltaXRNaUIgPz9cbiAgICAgIHRoaXMuREVGQVVMVF9EQVRBRE9HX1NJREVDQVJfTUVNT1JZX0xJTUlUX01JQjtcbiAgICBjb25zdCBkYXRhZG9nU2lkZWNhckVzc2VudGlhbCA9XG4gICAgICBkYXRhZG9nT3B0aW9ucz8uZGF0YWRvZ1NpZGVjYXJFc3NlbnRpYWwgPz9cbiAgICAgIHRoaXMuREVGQVVMVF9EQVRBRE9HX1NJREVDQVJfRVNTRU5USUFMO1xuXG4gICAgY29uc3QgbG9nZ2luZ01vZGVGb3JTZXJ2aWNlID1cbiAgICAgIGRhdGFkb2dPcHRpb25zPy5sb2dnaW5nTW9kZUZvclNlcnZpY2UgPz9cbiAgICAgIHRoaXMuREVGQVVMVF9MT0dHSU5HX01PREVfRk9SX1NFUlZJQ0U7XG4gICAgY29uc3QgbG9nZ2luZ01vZGVGb3JEYXRhZG9nQWdlbnQgPVxuICAgICAgZGF0YWRvZ09wdGlvbnM/LmxvZ2dpbmdNb2RlRm9yRGF0YWRvZ0FnZW50ID8/XG4gICAgICB0aGlzLkRFRkFVTFRfTE9HR0lOR19NT0RFX0ZPUl9EQVRBRE9HX1NJREVDQVI7XG4gICAgY29uc3QgZmlyZUxlbnNMb2dSb3V0ZXJSZXF1aXJlZCA9XG4gICAgICBsb2dnaW5nTW9kZUZvclNlcnZpY2UgPT09IERhdGFEb2dMb2dnaW5nTW9kZS5BV1NfRklSRV9MRU5TIHx8XG4gICAgICBsb2dnaW5nTW9kZUZvckRhdGFkb2dBZ2VudCA9PT0gRGF0YURvZ0xvZ2dpbmdNb2RlLkFXU19GSVJFX0xFTlM7XG5cbiAgICBsZXQgc2VydmljZUNvbnRhaW5lckNwdVVuaXRzO1xuICAgIGxldCBzZXJ2aWNlQ29udGFpbmVyTWVtb3J5TGltaXRNaUI7XG5cbiAgICBpZiAoZmlyZUxlbnNMb2dSb3V0ZXJSZXF1aXJlZCkge1xuICAgICAgc2VydmljZUNvbnRhaW5lckNwdVVuaXRzID1cbiAgICAgICAgZmFyZ2F0ZU9wdGlvbnMuY3B1IC0gZGF0YWRvZ1NpZGVjYXJDcHUgLSB0aGlzLkxPR19ST1VURVJfQ1BVO1xuICAgICAgc2VydmljZUNvbnRhaW5lck1lbW9yeUxpbWl0TWlCID1cbiAgICAgICAgZmFyZ2F0ZU9wdGlvbnMubWVtb3J5TGltaXRNaUIgLVxuICAgICAgICBkYXRhZG9nU2lkZWNhck1lbW9yeU1pQiAtXG4gICAgICAgIHRoaXMuTE9HX1JPVVRFUl9NRU1PUllfTElNSVRfTUlCO1xuICAgICAgZGF0YWRvZy5hZGRGaXJlbGVuc0NvbmZpZ1VwbG9hZEZyb21TM1Blcm1pc3Npb25zKHtcbiAgICAgICAgdGFza0RlZmluaXRpb246IHRoaXMudGFza0RlZmluaXRpb24sXG4gICAgICAgIGZpcmVsZW5zQ29uZmlnQnVja2V0QXJuOiB0aGlzLkZJUkVMRU5TX0NPTkZJR19CVUNLRVRfQVJOLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlcnZpY2VDb250YWluZXJDcHVVbml0cyA9IGZhcmdhdGVPcHRpb25zLmNwdSAtIGRhdGFkb2dTaWRlY2FyQ3B1O1xuICAgICAgc2VydmljZUNvbnRhaW5lck1lbW9yeUxpbWl0TWlCID1cbiAgICAgICAgZmFyZ2F0ZU9wdGlvbnMubWVtb3J5TGltaXRNaUIgLSBkYXRhZG9nU2lkZWNhck1lbW9yeU1pQjtcbiAgICB9XG4gICAgdGhpcy5zZXJ2aWNlQ29udGFpbmVyRGVmaW5pdGlvbiA9IHRoaXMudGFza0RlZmluaXRpb24uYWRkQ29udGFpbmVyKFxuICAgICAgc2VydmljZU5hbWUsXG4gICAgICB7XG4gICAgICAgIGltYWdlOiBjb250YWluZXJEZWZpbml0aW9uT3B0aW9uLmltYWdlLFxuICAgICAgICBjcHU6IHNlcnZpY2VDb250YWluZXJDcHVVbml0cyxcbiAgICAgICAgbWVtb3J5TGltaXRNaUI6IHNlcnZpY2VDb250YWluZXJNZW1vcnlMaW1pdE1pQixcbiAgICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgICAuLi5kYXRhZG9nLmdldEZhcmdhdGVDb250YWluZXJFbnZpcm9ubWVudFZhcmlhYmxlcyh7XG4gICAgICAgICAgICBzY29wZTogdGhpcyxcbiAgICAgICAgICAgIHN0YWdlLFxuICAgICAgICAgICAgc2VydmljZU5hbWUsXG4gICAgICAgICAgICB2ZXJzaW9uLFxuICAgICAgICAgICAgYWNjb3VudE5hbWUsXG4gICAgICAgICAgICB0ZWFtTmFtZSxcbiAgICAgICAgICAgIHRlYW1JZGVudGlmaWVyLFxuICAgICAgICAgICAgYWRkaXRpb25hbFRhZ3M6IGRhdGFkb2dPcHRpb25zPy5hZGRpdGlvbmFsVGFncyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICAuLi5jb250YWluZXJEZWZpbml0aW9uT3B0aW9uLmVudmlyb25tZW50LFxuICAgICAgICB9LFxuICAgICAgICBkb2NrZXJMYWJlbHM6IHtcbiAgICAgICAgICAuLi5kYXRhZG9nLmdldEZhcmdhdGVEb2NrZXJMYWJlbHMoeyBzdGFnZSwgc2VydmljZU5hbWUsIHZlcnNpb24gfSksXG4gICAgICAgIH0sXG4gICAgICAgIGhlYWx0aENoZWNrOiBjb250YWluZXJEZWZpbml0aW9uT3B0aW9uLmhlYWx0aENoZWNrLFxuICAgICAgICBsb2dnaW5nOiBkYXRhZG9nLnNldHVwTG9nZ2luZyh7XG4gICAgICAgICAgc2NvcGUsXG4gICAgICAgICAgYWNjb3VudE5hbWUsXG4gICAgICAgICAgdGVhbU5hbWUsXG4gICAgICAgICAgdGVhbUlkZW50aWZpZXIsXG4gICAgICAgICAgc3RhZ2UsXG4gICAgICAgICAgc2VydmljZU5hbWUsXG4gICAgICAgICAgdmVyc2lvbixcbiAgICAgICAgICBkYXRhZG9nQXBpS2V5UGFyYW1ldGVyLFxuICAgICAgICAgIGRhdGFkb2dMb2dnaW5nTW9kZTogbG9nZ2luZ01vZGVGb3JTZXJ2aWNlLFxuICAgICAgICAgIGRhdGFkb2dTaXRlLFxuICAgICAgICAgIGNvbnRhaW5lclR5cGU6ICdzZXJ2aWNlJyxcbiAgICAgICAgICBhZGRpdGlvbmFsVGFnczogZGF0YWRvZ09wdGlvbnM/LmFkZGl0aW9uYWxUYWdzLFxuICAgICAgICB9KSxcbiAgICAgICAgc2VjcmV0czogY29udGFpbmVyRGVmaW5pdGlvbk9wdGlvbi5zZWNyZXRzLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgaWYgKGZyYW1ld29ya3M/LmluY2x1ZGVzKEZyYW1ld29yay5TUFJJTkcpKSB7XG4gICAgICBTcHJpbmcuYWxsb3dQYXJhbWV0ZXJTdG9yZUFjY2Vzc0ZvclNwcmluZ0Nsb3VkQXdzKFxuICAgICAgICB0aGlzLFxuICAgICAgICBzZXJ2aWNlTmFtZSxcbiAgICAgICAgdGhpcy50YXNrRGVmaW5pdGlvbi50YXNrUm9sZSxcbiAgICAgICk7XG4gICAgICBTcHJpbmcuYWxsb3dTZWNyZXRzTWFuYWdlckFjY2Vzc0ZvclNwcmluZ0Nsb3VkQXdzKFxuICAgICAgICB0aGlzLFxuICAgICAgICBzZXJ2aWNlTmFtZSxcbiAgICAgICAgdGhpcy50YXNrRGVmaW5pdGlvbi50YXNrUm9sZSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGZpcmVMZW5zTG9nUm91dGVyUmVxdWlyZWQpIHtcbiAgICAgIHRoaXMubG9nUm91dGVyQ29udGFpbmVyRGVmaW5pdGlvbiA9IGRhdGFkb2cuYWRkRmlyZUxlbnNMb2dSb3V0ZXIoe1xuICAgICAgICB0YXNrRGVmaW5pdGlvbjogdGhpcy50YXNrRGVmaW5pdGlvbixcbiAgICAgICAgY3B1OiB0aGlzLkxPR19ST1VURVJfQ1BVLFxuICAgICAgICBtZW1vcnlMaW1pdE1pQjogdGhpcy5MT0dfUk9VVEVSX01FTU9SWV9MSU1JVF9NSUIsXG4gICAgICAgIGZpcmVsZW5zQ29uZmlnQnVja2V0QXJuOiB0aGlzLkZJUkVMRU5TX0NPTkZJR19CVUNLRVRfQVJOLFxuICAgICAgICBmaXJlbGVuc0NvbmZpZ0ZpbGVQYXRoOiB0aGlzLkZJUkVMRU5TX0NPTkZJR19GSUxFX1BBVEgsXG4gICAgICAgIHNlcnZpY2VOYW1lOiBwcm9wcy5zZXJ2aWNlTmFtZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLmRhdGFkb2dTaWRlQ2FyQ29udGFpbmVyRGVmaW5pdGlvbiA9IGRhdGFkb2cuYWRkRGF0YWRvZ1NpZGVjYXIoe1xuICAgICAgc2NvcGUsXG4gICAgICB0YXNrRGVmaW5pdGlvbjogdGhpcy50YXNrRGVmaW5pdGlvbixcbiAgICAgIGFjY291bnROYW1lLFxuICAgICAgdGVhbU5hbWUsXG4gICAgICB0ZWFtSWRlbnRpZmllcixcbiAgICAgIHN0YWdlLFxuICAgICAgc2VydmljZU5hbWUsXG4gICAgICB2ZXJzaW9uLFxuICAgICAgZGF0YWRvZ0FwaUtleVBhcmFtZXRlcixcbiAgICAgIGRhdGFkb2dTaXRlLFxuICAgICAgZGF0YWRvZ0xvZ2dpbmdNb2RlOiBsb2dnaW5nTW9kZUZvckRhdGFkb2dBZ2VudCxcbiAgICAgIGFwbUdldFJlc291cmNlc1RvSWdub3JlOlxuICAgICAgICBkYXRhZG9nT3B0aW9ucz8uYXBtR2V0RW5kcG9pbnRzVG9JZ25vcmUgPz9cbiAgICAgICAgdGhpcy5ERUZBVUxUX0FQTV9HRVRfRU5EUE9JTlRTX1RPX0lHTk9SRSxcbiAgICAgIGNwdTogZGF0YWRvZ1NpZGVjYXJDcHUsXG4gICAgICBtZW1vcnlMaW1pdE1pQjogZGF0YWRvZ1NpZGVjYXJNZW1vcnlNaUIsXG4gICAgICBlc3NlbnRpYWw6IGRhdGFkb2dTaWRlY2FyRXNzZW50aWFsLFxuICAgICAgY29udGFpbmVyVGFnOlxuICAgICAgICBwcm9wcy5kYXRhZG9nT3B0aW9ucz8uZGF0YWRvZ1NpZGVjYXJUYWcgPz9cbiAgICAgICAgdGhpcy5ERUZBVUxUX0RBVEFET0dfU0lERUNBUl9UQUcsIC8vIFRoZXNlIGFyZSBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsXG4gICAgICBhZGRpdGlvbmFsVGFnczogZGF0YWRvZ09wdGlvbnM/LmFkZGl0aW9uYWxUYWdzLFxuICAgIH0pO1xuXG4gICAgZGF0YWRvZy5lbnN1cmVMb2dnaW5nQW5kTW9uaXRvcmluZ0FyZVJlYWR5QmVmb3JlU2VydmljZVN0YXJ0cyh0aGlzKTtcblxuICAgIGNvbnN0IGxvYWRCYWxhbmNlck9wdGlvbnNGb3JGYXJnYXRlU2VydmljZSA9IGxvYWRCYWxhbmNlck9wdGlvbnNcbiAgICAgID8geyBoZWFsdGhDaGVja0dyYWNlUGVyaW9kOiBsb2FkQmFsYW5jZXJPcHRpb25zLmhlYWx0aENoZWNrR3JhY2VQZXJpb2QgfVxuICAgICAgOiB7fTtcblxuICAgIHRoaXMuc2VydmljZSA9IG5ldyBlY3MuRmFyZ2F0ZVNlcnZpY2UodGhpcywgJ1NlcnZpY2UnLCB7XG4gICAgICBjbHVzdGVyOiBmYXJnYXRlQ2x1c3RlcixcbiAgICAgIHRhc2tEZWZpbml0aW9uOiB0aGlzLnRhc2tEZWZpbml0aW9uLFxuICAgICAgbWF4SGVhbHRoeVBlcmNlbnQ6IDIwMCxcbiAgICAgIG1pbkhlYWx0aHlQZXJjZW50OiAxMDAsXG4gICAgICBkZXNpcmVkQ291bnQ6IGZhcmdhdGVPcHRpb25zPy5kZXNpcmVkQ291bnQsXG4gICAgICBkZXBsb3ltZW50Q29udHJvbGxlcjogeyB0eXBlOiBlY3MuRGVwbG95bWVudENvbnRyb2xsZXJUeXBlLkNPREVfREVQTE9ZIH0sXG4gICAgICAuLi5sb2FkQmFsYW5jZXJPcHRpb25zRm9yRmFyZ2F0ZVNlcnZpY2UsXG4gICAgICBwcm9wYWdhdGVUYWdzOiBlY3MuUHJvcGFnYXRlZFRhZ1NvdXJjZS5TRVJWSUNFLFxuICAgIH0pO1xuXG4gICAgdGhpcy5jb25uZWN0aW9ucyA9IHRoaXMuc2VydmljZS5jb25uZWN0aW9ucztcblxuICAgIGlmIChsb2FkQmFsYW5jZXJPcHRpb25zICE9IG51bGwpIHtcbiAgICAgIGNvbnN0IGNvbnRhaW5lclBvcnQgPSA0NDM7XG4gICAgICB0aGlzLnNlcnZpY2VDb250YWluZXJEZWZpbml0aW9uLmFkZFBvcnRNYXBwaW5ncyh7XG4gICAgICAgIGNvbnRhaW5lclBvcnQ6IGNvbnRhaW5lclBvcnQsXG4gICAgICAgIHByb3RvY29sOiBlY3MuUHJvdG9jb2wuVENQLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmJsdWVUYXJnZXRHcm91cCA9IG5ldyBlbGJ2Mi5BcHBsaWNhdGlvblRhcmdldEdyb3VwKFxuICAgICAgICB0aGlzLFxuICAgICAgICAnQmx1ZVRhcmdldEdyb3VwJyxcbiAgICAgICAge1xuICAgICAgICAgIHZwYzogdnBjLFxuICAgICAgICAgIHBvcnQ6IGNvbnRhaW5lclBvcnQsXG4gICAgICAgICAgcHJvdG9jb2w6IGVsYnYyLkFwcGxpY2F0aW9uUHJvdG9jb2wuSFRUUFMsXG4gICAgICAgICAgdGFyZ2V0VHlwZTogZWxidjIuVGFyZ2V0VHlwZS5JUCxcbiAgICAgICAgICB0YXJnZXRzOiBbdGhpcy5zZXJ2aWNlXSxcbiAgICAgICAgICBoZWFsdGhDaGVjazogbG9hZEJhbGFuY2VyT3B0aW9ucy5oZWFsdGhDaGVjayxcbiAgICAgICAgICBzbG93U3RhcnQ6XG4gICAgICAgICAgICBwcm9wcy5sb2FkQmFsYW5jZXJPcHRpb25zPy5zbG93U3RhcnQgPz8gdGhpcy5ERUZBVUxUX1NMT1dfU1RBUlQsXG4gICAgICAgICAgZGVyZWdpc3RyYXRpb25EZWxheTpcbiAgICAgICAgICAgIHByb3BzLmxvYWRCYWxhbmNlck9wdGlvbnM/LmRlcmVnaXN0cmF0aW9uRGVsYXkgPz9cbiAgICAgICAgICAgIHRoaXMuREVGQVVMVF9ERVJFR0lTVFJBVElPTl9ERUxBWSxcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgICB0aGlzLmdyZWVuVGFyZ2V0R3JvdXAgPSBuZXcgZWxidjIuQXBwbGljYXRpb25UYXJnZXRHcm91cChcbiAgICAgICAgdGhpcyxcbiAgICAgICAgJ0dyZWVuVGFyZ2V0R3JvdXAnLFxuICAgICAgICB7XG4gICAgICAgICAgdnBjOiB2cGMsXG4gICAgICAgICAgcG9ydDogY29udGFpbmVyUG9ydCxcbiAgICAgICAgICBwcm90b2NvbDogZWxidjIuQXBwbGljYXRpb25Qcm90b2NvbC5IVFRQUyxcbiAgICAgICAgICB0YXJnZXRUeXBlOiBlbGJ2Mi5UYXJnZXRUeXBlLklQLFxuICAgICAgICAgIHRhcmdldHM6IFt0aGlzLnNlcnZpY2VdLFxuICAgICAgICAgIGhlYWx0aENoZWNrOiBsb2FkQmFsYW5jZXJPcHRpb25zLmhlYWx0aENoZWNrLFxuICAgICAgICAgIHNsb3dTdGFydDpcbiAgICAgICAgICAgIHByb3BzLmxvYWRCYWxhbmNlck9wdGlvbnM/LnNsb3dTdGFydCA/PyB0aGlzLkRFRkFVTFRfU0xPV19TVEFSVCxcbiAgICAgICAgICBkZXJlZ2lzdHJhdGlvbkRlbGF5OlxuICAgICAgICAgICAgcHJvcHMubG9hZEJhbGFuY2VyT3B0aW9ucz8uZGVyZWdpc3RyYXRpb25EZWxheSA/P1xuICAgICAgICAgICAgdGhpcy5ERUZBVUxUX0RFUkVHSVNUUkFUSU9OX0RFTEFZLFxuICAgICAgICB9LFxuICAgICAgKTtcbiAgICAgIGJsdWVHcmVlbkRlcGxveW1lbnRDb25maWc/LnRlc3RMaXN0ZW5lcj8uYWRkVGFyZ2V0R3JvdXBzKCdUZXN0VGFyZ2V0R3JvdXAnLCB7IHRhcmdldEdyb3VwczogW3RoaXMuZ3JlZW5UYXJnZXRHcm91cF0gfSk7XG5cbiAgICAgIGxvYWRCYWxhbmNlck9wdGlvbnMubGlzdGVuZXJSdWxlcy5mb3JFYWNoKCh7IHByaW9yaXR5LCBjb25kaXRpb25zIH0pID0+IHtcbiAgICAgICAgbG9hZEJhbGFuY2VyT3B0aW9ucy5saXN0ZW5lci5hZGRUYXJnZXRHcm91cHMoYFByaW9yaXR5JHtwcmlvcml0eX1MaXN0ZW5lclJ1bGVgLCB7XG4gICAgICAgICAgdGFyZ2V0R3JvdXBzOiBbdGhpcy5ibHVlVGFyZ2V0R3JvdXAgYXMgZWxidjIuQXBwbGljYXRpb25UYXJnZXRHcm91cF0sXG4gICAgICAgICAgcHJpb3JpdHk6IHByaW9yaXR5LFxuICAgICAgICAgIGNvbmRpdGlvbnM6IGNvbmRpdGlvbnMsXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICBpZiAoYmx1ZUdyZWVuRGVwbG95bWVudENvbmZpZz8udGVzdExpc3RlbmVyKSB7XG4gICAgICAgIGxvYWRCYWxhbmNlck9wdGlvbnMubGlzdGVuZXJSdWxlcy5mb3JFYWNoKCh7IHByaW9yaXR5LCBjb25kaXRpb25zIH0pID0+IHtcbiAgICAgICAgICBibHVlR3JlZW5EZXBsb3ltZW50Q29uZmlnLnRlc3RMaXN0ZW5lcj8uYWRkVGFyZ2V0R3JvdXBzKGBQcmlvcml0eSR7cHJpb3JpdHl9TGlzdGVuZXJSdWxlYCwge1xuICAgICAgICAgICAgdGFyZ2V0R3JvdXBzOiBbdGhpcy5ncmVlblRhcmdldEdyb3VwIGFzIGVsYnYyLkFwcGxpY2F0aW9uVGFyZ2V0R3JvdXBdLFxuICAgICAgICAgICAgcHJpb3JpdHk6IHByaW9yaXR5LFxuICAgICAgICAgICAgY29uZGl0aW9uczogY29uZGl0aW9ucyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGVjc0RlcGxveW1lbnRHcm91cCA9IG5ldyBjb2RlZGVwbG95LkVjc0RlcGxveW1lbnRHcm91cCh0aGlzLCAnRGVwbG95bWVudEdyb3VwJywge1xuICAgICAgICBzZXJ2aWNlOiB0aGlzLnNlcnZpY2UsXG4gICAgICAgIGJsdWVHcmVlbkRlcGxveW1lbnRDb25maWc6IHtcbiAgICAgICAgICBibHVlVGFyZ2V0R3JvdXA6IHRoaXMuYmx1ZVRhcmdldEdyb3VwLFxuICAgICAgICAgIGdyZWVuVGFyZ2V0R3JvdXA6IHRoaXMuZ3JlZW5UYXJnZXRHcm91cCxcbiAgICAgICAgICBsaXN0ZW5lcjogbG9hZEJhbGFuY2VyT3B0aW9ucy5saXN0ZW5lcixcbiAgICAgICAgICB0ZXN0TGlzdGVuZXI6IGJsdWVHcmVlbkRlcGxveW1lbnRDb25maWc/LnRlc3RMaXN0ZW5lcixcbiAgICAgICAgfSxcbiAgICAgICAgZGVwbG95bWVudENvbmZpZzpcbiAgICAgICAgICBjb2RlZGVwbG95LkVjc0RlcGxveW1lbnRDb25maWcuQ0FOQVJZXzEwUEVSQ0VOVF81TUlOVVRFUyxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBjcmVhdGVEZXBsb3ltZW50TGFtYmRhID0gbmV3IG5vZGVqc2xhbWJkYS5Ob2RlanNGdW5jdGlvbih0aGlzLCAnQ3JlYXRlRGVwbG95bWVudExhbWJkYScsIHtcbiAgICAgICAgZW50cnk6ICcuL3NyYy9mYXJnYXRlL2NvZGVkZXBsb3ktY3VzdG9tLXJlc291cmNlcy9jcmVhdGUtZGVwbG95bWVudC1vbi1jcmVhdGUudHMnLFxuICAgICAgICBoYW5kbGVyOiAnaGFuZGxlcicsXG4gICAgICAgIHRpbWVvdXQ6IGNkay5EdXJhdGlvbi5taW51dGVzKDUpLFxuICAgICAgICBydW50aW1lOiBsYW1iZGEuUnVudGltZS5OT0RFSlNfMjBfWCxcbiAgICAgIH0pO1xuICAgICAgY3JlYXRlRGVwbG95bWVudExhbWJkYS5hZGRUb1JvbGVQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgJ2NvZGVkZXBsb3k6R2V0QXBwbGljYXRpb25SZXZpc2lvbicsXG4gICAgICAgICAgJ2NvZGVkZXBsb3k6UmVnaXN0ZXJBcHBsaWNhdGlvblJldmlzaW9uJyxcbiAgICAgICAgXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgZWNzRGVwbG95bWVudEdyb3VwLmFwcGxpY2F0aW9uLmFwcGxpY2F0aW9uQXJuLFxuICAgICAgICBdLFxuICAgICAgfSkpO1xuICAgICAgY3JlYXRlRGVwbG95bWVudExhbWJkYS5hZGRUb1JvbGVQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgJ2NvZGVkZXBsb3k6Q3JlYXRlRGVwbG95bWVudCcsXG4gICAgICAgICAgJ2NvZGVkZXBsb3k6U3RvcERlcGxveW1lbnQnLFxuICAgICAgICAgICdjb2RlZGVwbG95OkdldERlcGxveW1lbnQnLFxuICAgICAgICBdLFxuICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICBlY3NEZXBsb3ltZW50R3JvdXAuZGVwbG95bWVudEdyb3VwQXJuLFxuICAgICAgICBdLFxuICAgICAgfSkpO1xuICAgICAgY3JlYXRlRGVwbG95bWVudExhbWJkYS5hZGRUb1JvbGVQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgJ2NvZGVkZXBsb3k6R2V0RGVwbG95bWVudENvbmZpZycsXG4gICAgICAgIF0sXG4gICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgIGVjc0RlcGxveW1lbnRHcm91cC5kZXBsb3ltZW50Q29uZmlnLmRlcGxveW1lbnRDb25maWdBcm4sXG4gICAgICAgIF0sXG4gICAgICB9KSk7XG4gICAgICBjb25zdCBpc0NvbXBsZXRlRGVwbG95bWVudExhbWJkYSA9IG5ldyBub2RlanNsYW1iZGEuTm9kZWpzRnVuY3Rpb24odGhpcywgJ0lzQ29tcGxldGVEZXBsb3ltZW50TGFtYmRhJywge1xuICAgICAgICBlbnRyeTogJy4vc3JjL2ZhcmdhdGUvY29kZWRlcGxveS1jdXN0b20tcmVzb3VyY2VzL2NyZWF0ZS1kZXBsb3ltZW50LWlzLWNvbXBsZXRlLnRzJyxcbiAgICAgICAgaGFuZGxlcjogJ2hhbmRsZXInLFxuICAgICAgICB0aW1lb3V0OiBjZGsuRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzIwX1gsXG4gICAgICB9KTtcbiAgICAgIGlzQ29tcGxldGVEZXBsb3ltZW50TGFtYmRhLmFkZFRvUm9sZVBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAnY29kZWRlcGxveTpHZXREZXBsb3ltZW50JyxcbiAgICAgICAgXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgZWNzRGVwbG95bWVudEdyb3VwLmRlcGxveW1lbnRHcm91cEFybixcbiAgICAgICAgXSxcbiAgICAgIH0pKTtcbiAgICAgIGNvbnN0IGNyZWF0ZURlcGxveW1lbnRMYW1iZGFQcm92aWRlciA9IG5ldyBjci5Qcm92aWRlcih0aGlzLCAnQ3JlYXRlRGVwbG95bWVudFByb3ZpZGVyJywge1xuICAgICAgICBvbkV2ZW50SGFuZGxlcjogY3JlYXRlRGVwbG95bWVudExhbWJkYSxcbiAgICAgICAgaXNDb21wbGV0ZUhhbmRsZXI6IGlzQ29tcGxldGVEZXBsb3ltZW50TGFtYmRhLFxuICAgICAgICB0b3RhbFRpbWVvdXQ6IGNkay5EdXJhdGlvbi5taW51dGVzKDYwKSxcbiAgICAgIH0pO1xuICAgICAgbGV0IHJ1bk1vbml0b3JpbmdUZXN0U3VpdGVSdW5uZXJMYW1iZGE6IG5vZGVqc2xhbWJkYS5Ob2RlanNGdW5jdGlvbiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICAgIGlmIChibHVlR3JlZW5EZXBsb3ltZW50Q29uZmlnPy5jYXBhYmlsaXR5TmFtZXMpIHtcbiAgICAgICAgcnVuTW9uaXRvcmluZ1Rlc3RTdWl0ZVJ1bm5lckxhbWJkYSA9IG5ldyBub2RlanNsYW1iZGEuTm9kZWpzRnVuY3Rpb24odGhpcywgJ1J1bk1vbml0b3JpbmdUZXN0U3VpdGVSdW5uZXJMYW1iZGEnLCB7XG4gICAgICAgICAgZW50cnk6ICcuL3NyYy9mYXJnYXRlL2NvZGVkZXBsb3ktY3VzdG9tLXJlc291cmNlcy9ydW4tbW9uaXRvcmluZy10ZXN0LXN1aXRlLXJ1bm5lci50cycsXG4gICAgICAgICAgaGFuZGxlcjogJ2hhbmRsZXInLFxuICAgICAgICAgIHRpbWVvdXQ6IGNkay5EdXJhdGlvbi5taW51dGVzKDUpLFxuICAgICAgICAgIHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lLk5PREVKU18yMF9YLFxuICAgICAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgICAgICBDQVBBQklMSVRJRVNfTkFNRTogYmx1ZUdyZWVuRGVwbG95bWVudENvbmZpZy5jYXBhYmlsaXR5TmFtZXMuam9pbignLCcpLFxuICAgICAgICAgICAgU1VCTkVUUzogdnBjLnNlbGVjdFN1Ym5ldHMoeyBzdWJuZXRUeXBlOiBlYzIuU3VibmV0VHlwZS5QUklWQVRFX1dJVEhfRUdSRVNTIH0pLnN1Ym5ldElkcy5qb2luKCcsJyksXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHJlZ2lvbiA9IGNkay5TdGFjay5vZihzY29wZSkucmVnaW9uO1xuICAgICAgICBjb25zdCBhY2NvdW50ID0gY2RrLlN0YWNrLm9mKHNjb3BlKS5hY2NvdW50O1xuICAgICAgICBydW5Nb25pdG9yaW5nVGVzdFN1aXRlUnVubmVyTGFtYmRhLmFkZFRvUm9sZVBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgJ2VjczpSdW5UYXNrJyxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgICAgYGFybjphd3M6ZWNzOiR7cmVnaW9ufToke2FjY291bnR9OnRhc2stZGVmaW5pdGlvbi9tb25pdG9yaW5nLXRlc3RzdWl0ZS1ydW5uZXIqYCxcbiAgICAgICAgICBdLFxuICAgICAgICB9KSk7XG4gICAgICAgIHJ1bk1vbml0b3JpbmdUZXN0U3VpdGVSdW5uZXJMYW1iZGEuYWRkVG9Sb2xlUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAnZWNzOkxpc3RDTHVzdGVycycsXG4gICAgICAgICAgICAnZWNzOkxpc3RUYXNrRGVmaW5pdGlvbnMnLFxuICAgICAgICAgIF0sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgICAnKicsXG4gICAgICAgICAgXSxcbiAgICAgICAgfSkpO1xuICAgICAgICBydW5Nb25pdG9yaW5nVGVzdFN1aXRlUnVubmVyTGFtYmRhLmFkZFRvUm9sZVBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgYWN0aW9uczogWydpYW06UGFzc1JvbGUnXSxcbiAgICAgICAgICByZXNvdXJjZXM6IFtgYXJuOmF3czppYW06OiR7YWNjb3VudH06cm9sZS9tb25pdG9yaW5nLXRlc3RzdWl0ZSpgXSxcbiAgICAgICAgfSkpO1xuICAgICAgfVxuXG4gICAgICBuZXcgY2RrLkN1c3RvbVJlc291cmNlKHRoaXMsICdDcmVhdGVEZXBsb3ltZW50Jywge1xuICAgICAgICBzZXJ2aWNlVG9rZW46IGNyZWF0ZURlcGxveW1lbnRMYW1iZGFQcm92aWRlci5zZXJ2aWNlVG9rZW4sXG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICBBcHBsaWNhdGlvbk5hbWU6IGVjc0RlcGxveW1lbnRHcm91cC5hcHBsaWNhdGlvbi5hcHBsaWNhdGlvbk5hbWUsXG4gICAgICAgICAgRGVwbG95bWVudEdyb3VwTmFtZTogZWNzRGVwbG95bWVudEdyb3VwLmRlcGxveW1lbnRHcm91cE5hbWUsXG4gICAgICAgICAgVGFza0RlZmluaXRpb25Bcm46IHRoaXMudGFza0RlZmluaXRpb24udGFza0RlZmluaXRpb25Bcm4sXG4gICAgICAgICAgQ29udGFpbmVyTmFtZTogc2VydmljZU5hbWUsXG4gICAgICAgICAgQ29udGFpbmVyUG9ydDogY29udGFpbmVyUG9ydCxcbiAgICAgICAgICBBZnRlckFsbG93VGVzdFRyYWZmaWNIb29rOiBydW5Nb25pdG9yaW5nVGVzdFN1aXRlUnVubmVyTGFtYmRhPy5mdW5jdGlvbkFybixcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgfVxuICB9XG59XG5cbmNsYXNzIERlbnlMaXN0ZWRLZXlWYWxpZGF0b3IgaW1wbGVtZW50cyBjb25zdHJ1Y3RzLklWYWxpZGF0aW9uIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBkZW55TGlzdDogc3RyaW5nW10sXG4gICAgcHJpdmF0ZSByZWFkb25seSBkaWN0OiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHwgdW5kZWZpbmVkLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbWVzc2FnZUdlbmVyYXRvcjogKGtleU5hbWU6IHN0cmluZykgPT4gc3RyaW5nLFxuICApIHt9XG5cbiAgdmFsaWRhdGUoKTogc3RyaW5nW10ge1xuICAgIGlmICghdGhpcy5kaWN0KSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0OiBzdHJpbmdbXSA9IFtdO1xuICAgIHRoaXMuZGVueUxpc3QuZm9yRWFjaCgoa2V5TmFtZSkgPT4ge1xuICAgICAgaWYgKHRoaXMuZGljdCAmJiBrZXlOYW1lIGluIHRoaXMuZGljdCkge1xuICAgICAgICByZXN1bHQucHVzaCh0aGlzLm1lc3NhZ2VHZW5lcmF0b3Ioa2V5TmFtZSkpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuXG5jbGFzcyBDbHVzdGVyVnBjVmFsaWRhdG9yIGltcGxlbWVudHMgY29uc3RydWN0cy5JVmFsaWRhdGlvbiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdnBjOiBlYzIuSVZwYyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNsdXN0ZXI/OiBlY3MuSUNsdXN0ZXIsXG4gICkge31cblxuICB2YWxpZGF0ZSgpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgcmVzdWx0ID0gW107XG4gICAgaWYgKHRoaXMuY2x1c3RlciAmJiB0aGlzLmNsdXN0ZXIudnBjLnZwY0lkICE9PSB0aGlzLnZwYy52cGNJZCkge1xuICAgICAgcmVzdWx0LnB1c2goXG4gICAgICAgIGBUaGUgVlBDIHByb3ZpZGVkIGluIHRoZSBjbHVzdGVyICgke3RoaXMuY2x1c3Rlci52cGMubm9kZS5pZH0pIE1VU1QgbWF0Y2ggdGhlIFZQQyBwcm92aWRlZCBhcyBhcmd1bWVudCAoJHt0aGlzLnZwYy5ub2RlLmlkfSkuYCxcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cbiJdfQ==
package/package.json CHANGED
@@ -15,7 +15,7 @@
15
15
  ],
16
16
  "main": "lib/index.js",
17
17
  "license": "Apache-2.0",
18
- "version": "6.10.3",
18
+ "version": "6.10.4",
19
19
  "types": "lib/index.d.ts",
20
20
  "stability": "stable",
21
21
  "exports": {
package/version.json CHANGED
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "6.10.3"
2
+ "version": "6.10.4"
3
3
  }