@orcabus/platform-cdk-constructs 0.0.56 → 0.0.57

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
@@ -4690,7 +4690,7 @@
4690
4690
  },
4691
4691
  "locationInModule": {
4692
4692
  "filename": "deployment-stack-pipeline/pipeline.ts",
4693
- "line": 180
4693
+ "line": 188
4694
4694
  },
4695
4695
  "parameters": [
4696
4696
  {
@@ -4716,7 +4716,7 @@
4716
4716
  "kind": "class",
4717
4717
  "locationInModule": {
4718
4718
  "filename": "deployment-stack-pipeline/pipeline.ts",
4719
- "line": 174
4719
+ "line": 182
4720
4720
  },
4721
4721
  "name": "DeploymentStackPipeline",
4722
4722
  "namespace": "deploymentPipeline",
@@ -4729,7 +4729,7 @@
4729
4729
  "immutable": true,
4730
4730
  "locationInModule": {
4731
4731
  "filename": "deployment-stack-pipeline/pipeline.ts",
4732
- "line": 178
4732
+ "line": 186
4733
4733
  },
4734
4734
  "name": "pipeline",
4735
4735
  "type": {
@@ -5020,6 +5020,25 @@
5020
5020
  "fqn": "@orcabus/platform-cdk-constructs.deploymentPipeline.StageEnvProps"
5021
5021
  }
5022
5022
  },
5023
+ {
5024
+ "abstract": true,
5025
+ "docs": {
5026
+ "remarks": "Useful when CDK assets (Lambda code, Docker images, etc.) are large.",
5027
+ "see": "https://github.com/aws/aws-cdk/issues/9917",
5028
+ "stability": "experimental",
5029
+ "summary": "Remove assets from the CDK assembly pre-deployment to prevent hitting CodePipeline's 256 MB artifact size limit."
5030
+ },
5031
+ "immutable": true,
5032
+ "locationInModule": {
5033
+ "filename": "deployment-stack-pipeline/pipeline.ts",
5034
+ "line": 173
5035
+ },
5036
+ "name": "stripAssemblyAssets",
5037
+ "optional": true,
5038
+ "type": {
5039
+ "primitive": "boolean"
5040
+ }
5041
+ },
5023
5042
  {
5024
5043
  "abstract": true,
5025
5044
  "docs": {
@@ -6821,6 +6840,6 @@
6821
6840
  "symbolId": "shared-config/slack:SlackAlerts"
6822
6841
  }
6823
6842
  },
6824
- "version": "0.0.56",
6825
- "fingerprint": "cUgPh2y+X3ma4TdcKb4zp+ssytpJi/lHtYMh9gUd8eM="
6843
+ "version": "0.0.57",
6844
+ "fingerprint": "JfTbgLJK5t3J6mZvIJCY6fjoBxea+TK8kLqTreUvsNw="
6826
6845
  }
@@ -15,7 +15,7 @@ const aws_lambda_1 = require("aws-cdk-lib/aws-lambda");
15
15
  const aws_route53_targets_1 = require("aws-cdk-lib/aws-route53-targets");
16
16
  const config_1 = require("./config");
17
17
  class OrcaBusApiGateway extends constructs_1.Construct {
18
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.apigateway.OrcaBusApiGateway", version: "0.0.56" };
18
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.apigateway.OrcaBusApiGateway", version: "0.0.57" };
19
19
  /**
20
20
  * The AWS region where the API Gateway is deployed.
21
21
  */
@@ -13,7 +13,7 @@ exports.CROSS_DEPLOYMENT_ARTIFACT_BUCKET_NAME = "orcabus-cross-deployment-codepi
13
13
  exports.CROSS_DEPLOYMENT_ARTIFACT_KMS_ALIAS = "orcabus-cross-deployment-codepipeline-artifact";
14
14
  exports.CROSS_DEPLOYMENT_ARTIFACT_KMS_ARN_SSM_PARAMETER_NAME = "/orcabus/deployment-stack-pipeline/artifact-bucket/kms-key-arn";
15
15
  class CrossDeploymentArtifactBucket extends constructs_1.Construct {
16
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.deploymentPipeline.CrossDeploymentArtifactBucket", version: "0.0.56" };
16
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.deploymentPipeline.CrossDeploymentArtifactBucket", version: "0.0.57" };
17
17
  /**
18
18
  * The S3 bucket used to store artifacts for cross-deployment pipelines.
19
19
  */
@@ -124,6 +124,13 @@ export interface DeploymentStackPipelineProps {
124
124
  * @default True
125
125
  */
126
126
  readonly reuseExistingArtifactBucket?: boolean;
127
+ /**
128
+ * Remove assets from the CDK assembly pre-deployment to prevent hitting CodePipeline's 256 MB artifact size limit.
129
+ * Useful when CDK assets (Lambda code, Docker images, etc.) are large.
130
+ *
131
+ * @see https://github.com/aws/aws-cdk/issues/9917
132
+ */
133
+ readonly stripAssemblyAssets?: boolean;
127
134
  }
128
135
  /**
129
136
  * A CDK construct that creates a deployment pipeline across environments for the OrcaBus project.
@@ -32,7 +32,7 @@ exports.DEFAULT_SYNTH_STEP_PARTIAL_BUILD_SPEC = {
32
32
  * before using this construct.
33
33
  */
34
34
  class DeploymentStackPipeline extends constructs_1.Construct {
35
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.deploymentPipeline.DeploymentStackPipeline", version: "0.0.56" };
35
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.deploymentPipeline.DeploymentStackPipeline", version: "0.0.57" };
36
36
  /**
37
37
  * The code pipeline construct that is created.
38
38
  */
@@ -117,6 +117,29 @@ class DeploymentStackPipeline extends constructs_1.Construct {
117
117
  prod: config_1.PROD_ENVIRONMENT,
118
118
  };
119
119
  const stageEnv = props.stageEnv || defaultStageEnv;
120
+ // After assets are published, they can be removed from the assembly directory
121
+ // to help prevent hitting the CodePipeline artifact limit.
122
+ // https://github.com/aws/aws-cdk/issues/9917
123
+ let stripAssetsFromAssembly;
124
+ if (props.stripAssemblyAssets) {
125
+ stripAssetsFromAssembly = new pipelines_1.CodeBuildStep("StripAssetsFromAssembly", {
126
+ input: cdkPipeline.cloudAssemblyFileSet,
127
+ commands: [
128
+ 'S3_PATH=${CODEBUILD_SOURCE_VERSION#"arn:aws:s3:::"}',
129
+ "ZIP_ARCHIVE=$(basename $S3_PATH)",
130
+ "echo $S3_PATH",
131
+ "echo $ZIP_ARCHIVE",
132
+ "ls",
133
+ "rm -rfv asset.*",
134
+ "zip -r -q -A $ZIP_ARCHIVE *",
135
+ "ls",
136
+ "aws s3 cp $ZIP_ARCHIVE s3://$S3_PATH",
137
+ ],
138
+ });
139
+ cdkPipeline.addWave("BeforeStageDeployment", {
140
+ pre: [stripAssetsFromAssembly],
141
+ });
142
+ }
120
143
  cdkPipeline.addStage(new DeploymentStage(this, "OrcaBusBeta", stageEnv.beta, props.stackName, props.stack, props.stackConfig.beta, props.githubRepo, props.githubBranch));
121
144
  cdkPipeline.addStage(new DeploymentStage(this, "OrcaBusGamma", stageEnv.gamma, props.stackName, props.stack, props.stackConfig.gamma, props.githubRepo, props.githubBranch), {
122
145
  post: [
@@ -132,6 +155,10 @@ class DeploymentStackPipeline extends constructs_1.Construct {
132
155
  ],
133
156
  });
134
157
  cdkPipeline.addStage(new DeploymentStage(this, "OrcaBusProd", stageEnv.prod, props.stackName, props.stack, props.stackConfig.prod, props.githubRepo, props.githubBranch));
158
+ cdkPipeline.buildPipeline();
159
+ if (stripAssetsFromAssembly) {
160
+ cdkPipeline.pipeline.artifactBucket.grantReadWrite(stripAssetsFromAssembly.project);
161
+ }
135
162
  if (props.enableSlackNotification ?? true) {
136
163
  const alertsBuildSlackConfigArn = aws_ssm_1.StringParameter.valueForStringParameter(this, "/chatbot_arn/slack/alerts-build");
137
164
  const target = aws_chatbot_1.SlackChannelConfiguration.fromSlackChannelConfigurationArn(this, "SlackChannelConfiguration", alertsBuildSlackConfigArn);
@@ -185,4 +212,4 @@ class DeploymentStage extends aws_cdk_lib_1.Stage {
185
212
  });
186
213
  }
187
214
  }
188
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwaXBlbGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsMkNBQXVDO0FBQ3ZDLDZDQUFrRTtBQUNsRSw2REFJbUM7QUFDbkMsaURBQXNEO0FBQ3RELHFEQVMrQjtBQUMvQixtRUFNc0M7QUFDdEMscUNBSWtCO0FBQ2xCLHlEQUFvRTtBQUNwRSxxRkFBbUU7QUFDbkUsdURBQWtFO0FBQ2xFLG1GQUc4QztBQUU5Qzs7R0FFRztBQUNVLFFBQUEscUNBQXFDLEdBQUc7SUFDbkQsTUFBTSxFQUFFO1FBQ04sT0FBTyxFQUFFO1lBQ1Asa0JBQWtCLEVBQUU7Z0JBQ2xCLE1BQU0sRUFBRSxNQUFNO2FBQ2Y7U0FDRjtLQUNGO0NBQ0YsQ0FBQztBQXNIRjs7Ozs7R0FLRztBQUNILE1BQWEsdUJBQXdCLFNBQVEsc0JBQVM7O0lBQ3BEOztPQUVHO0lBQ00sUUFBUSxDQUFXO0lBRTVCLFlBQ0UsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLEtBQW1DO1FBRW5DLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxXQUFXLEdBQUcseUJBQWUsQ0FBQyx1QkFBdUIsQ0FDekQsSUFBSSxFQUNKLDhCQUE4QixDQUMvQixDQUFDO1FBQ0YsTUFBTSx3QkFBd0IsR0FBRyxjQUFjLENBQUM7UUFDaEQsTUFBTSxVQUFVLEdBQUcsOEJBQWtCLENBQUMsVUFBVSxDQUM5QyxXQUFXLEtBQUssQ0FBQyxVQUFVLEVBQUUsRUFDN0IsS0FBSyxDQUFDLFlBQVksRUFDbEI7WUFDRSxhQUFhLEVBQUUsV0FBVztZQUMxQixVQUFVLEVBQUUsd0JBQXdCO1lBQ3BDLGFBQWEsRUFBRSxJQUFJO1NBQ3BCLENBQ0YsQ0FBQztRQUVGLE1BQU0sK0JBQStCLEdBQ25DLEtBQUssQ0FBQywyQkFBMkIsSUFBSSxJQUFJLENBQUM7UUFDNUMsTUFBTSxjQUFjLEdBQUcsK0JBQStCO1lBQ3BELENBQUMs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LFlBQVksS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUMxRCxNQUFNLEdBQUcsR0FBRyxNQUFNLFNBQVMsWUFBWSxFQUFFLENBQUM7UUFDNUMsQ0FBQztRQUVELElBQUksVUFBVSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUU7WUFDOUIsR0FBRyxFQUFFLEdBQUc7WUFDUixJQUFJLEVBQUU7Z0JBQ0osbUJBQW1CLEVBQUUsU0FBUztnQkFDOUIsbUJBQW1CLEVBQUUsS0FBSztnQkFDMUIsbUJBQW1CLEVBQUUsU0FBUztnQkFDOUIsa0JBQWtCLEVBQUUsTUFBTTthQUMzQjtZQUNELEdBQUcsYUFBYTtTQUNqQixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgRHVyYXRpb24sIEVudmlyb25tZW50LCBTdGFjaywgU3RhZ2UgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7XG4gIEJ1aWxkU3BlYyxcbiAgQ29tcHV0ZVR5cGUsXG4gIExpbnV4QXJtQnVpbGRJbWFnZSxcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jb2RlYnVpbGRcIjtcbmltcG9ydCB7IFN0cmluZ1BhcmFtZXRlciB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtc3NtXCI7XG5pbXBvcnQge1xuICBDb2RlQnVpbGRTdGVwLFxuICBDb2RlUGlwZWxpbmUsXG4gIENvZGVQaXBlbGluZUFjdGlvbkZhY3RvcnlSZXN1bHQsXG4gIENvZGVQaXBlbGluZVNvdXJjZSxcbiAgSUNvZGVQaXBlbGluZUFjdGlvbkZhY3RvcnksXG4gIE1hbnVhbEFwcHJvdmFsU3RlcCxcbiAgUHJvZHVjZUFjdGlvbk9wdGlvbnMsXG4gIFN0ZXAsXG59IGZyb20gXCJhd3MtY2RrLWxpYi9waXBlbGluZXNcIjtcbmltcG9ydCB7XG4gIFBpcGVsaW5lLFxuICBDZm5QaXBlbGluZSxcbiAgUGlwZWxpbmVUeXBlLFxuICBQaXBlbGluZU5vdGlmaWNhdGlvbkV2ZW50cyxcbiAgSVN0YWdlLFxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNvZGVwaXBlbGluZVwiO1xuaW1wb3J0IHtcbiAgQkVUQV9FTlZJUk9OTUVOVCxcbiAgR0FNTUFfRU5WSVJPTk1FTlQsXG4gIFBST0RfRU5WSVJPTk1FTlQsXG59IGZyb20gXCIuL2NvbmZpZ1wiO1xuaW1wb3J0IHsgU2xhY2tDaGFubmVsQ29uZmlndXJhdGlvbiB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2hhdGJvdFwiO1xuaW1wb3J0IHsgRGV0YWlsVHlwZSB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY29kZXN0YXJub3RpZmljYXRpb25zXCI7XG5pbXBvcnQgeyBDcm9zc0RlcGxveW1lbnRBcnRpZmFjdEJ1Y2tldCB9IGZyb20gXCIuL2FydGlmYWN0LWJ1Y2tldFwiO1xuaW1wb3J0IHtcbiAgTWFudWFsQXBwcm92YWxBY3Rpb24sXG4gIE1hbnVhbEFwcHJvdmFsQWN0aW9uUHJvcHMsXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY29kZXBpcGVsaW5lLWFjdGlvbnNcIjtcblxuLyoqXG4gKiBUaGUgZGVmYXVsdCBwYXJ0aWFsIGJ1aWxkIHNwZWMgZm9yIHRoZSBzeW50aCBzdGVwIGluIHRoZSBwaXBlbGluZS5cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfU1lOVEhfU1RFUF9QQVJUSUFMX0JVSUxEX1NQRUMgPSB7XG4gIHBoYXNlczoge1xuICAgIGluc3RhbGw6IHtcbiAgICAgIFwicnVudGltZS12ZXJzaW9uc1wiOiB7XG4gICAgICAgIG5vZGVqczogXCIyMi54XCIsXG4gICAgICB9LFxuICAgIH0sXG4gIH0sXG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0YWdlRW52UHJvcHMge1xuICAvKipcbiAgICogVGhlIGVudmlyb25tZW50IGZvciB0aGUgYmV0YSBzdGFnZVxuICAgKi9cbiAgcmVhZG9ubHkgYmV0YTogRW52aXJvbm1lbnQ7XG4gIC8qKlxuICAgKiBUaGUgZW52aXJvbm1lbnQgZm9yIHRoZSBnYW1tYSBzdGFnZVxuICAgKi9cbiAgcmVhZG9ubHkgZ2FtbWE6IEVudmlyb25tZW50O1xuICAvKipcbiAgICogVGhlIGVudmlyb25tZW50IGZvciB0aGUgcHJvZCBzdGFnZVxuICAgKi9cbiAgcmVhZG9ubHkgcHJvZDogRW52aXJvbm1lbnQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhY2tDb25maWdQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIGJldGEgKGRldikgc3RhZ2VcbiAgICovXG4gIHJlYWRvbmx5IGJldGE6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIC8qKlxuICAgKiBUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIGdhbW1hIChzdGcpIHN0YWdlXG4gICAqL1xuICByZWFkb25seSBnYW1tYTogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgLyoqXG4gICAqIFRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgcHJvZCBzdGFnZVxuICAgKi9cbiAgcmVhZG9ubHkgcHJvZDogUmVjb3JkPHN0cmluZywgYW55Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZXBsb3ltZW50U3RhY2tQaXBlbGluZVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBHaXRIdWIgYnJhbmNoIG5hbWUgdGhlIHBpcGVsaW5lIHdpbGwgbGlzdGVuIHRvLlxuICAgKiBBdm9pZCB1c2luZyBicmFuY2ggbmFtZXMgdGhhdCBjb250YWluIHNwZWNpYWwgY2hhcmFjdGVycyBzdWNoIGFzIHBhcmVudGhlc2VzLlxuICAgKiBBbGxvd2VkIHNwZWNpYWwgY2hhcmFjdGVycyBhcmU6IFwiKyAtID0gLiBfIDogLyBAXCIuXG4gICAqIFRoaXMgcmVzdHJpY3Rpb24gaXMgZHVlIHRvIEFXUyByZXNvdXJjZSB0YWdnaW5nIHJlcXVpcmVtZW50cy5cbiAgICovXG4gIHJlYWRvbmx5IGdpdGh1YkJyYW5jaDogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHJlcG9zaXRvcnkgbmFtZSB0aGF0IGV4aXN0IGluIHRoZSAnT3JjYUJ1cycgZ2l0aHViIG9yZ2FuaXNhdGlvbi4gZS5nLiBgYS1taWNyby1zZXJ2aWNlLXJlcG9gXG4gICAqL1xuICByZWFkb25seSBnaXRodWJSZXBvOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgc3RhY2sgdG8gd2hpY2ggdGhlIHBpcGVsaW5lIHdpbGwgYmUgZGVwbG95aW5nIHRvIGl0cyByZXNwZWN0aXZlIGFjY291bnRcbiAgICovXG4gIHJlYWRvbmx5IHN0YWNrOiBhbnk7XG4gIC8qKlxuICAgKiBUaGUgc3RhY2sgbmFtZSAoaW4gY2xvdWRmb3JtYXRpb24pIGZvciB0aGUgc3RhY2sgZGVmaW5lZCBpbiBgc3RhY2tgLiBUaGUgc3RhY2sgbmFtZSB3aWxsIHByZXBlbmQgd2l0aCB0aGUgc3RhZ2VcbiAgICogbmFtZSBlLmcuIGBPcmNhQnVzQmV0YS08c3RhY2tOYW1lPmAsIGBPcmNhQnVzR2FtbWEtPHN0YWNrTmFtZT5gLCBgT3JjYUJ1c1Byb2QtPHN0YWNrTmFtZT5gXG4gICAqL1xuICByZWFkb25seSBzdGFja05hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBzdGFjayBjb25maWd1cmF0aW9uL2NvbnN0YW50cyB0aGF0IHdpbGwgYmUgcGFzc2VkIHRvIHRoZSBzdGFjayBwcm9wcy5cbiAgICovXG4gIHJlYWRvbmx5IHN0YWNrQ29uZmlnOiBTdGFja0NvbmZpZ1Byb3BzO1xuICAvKipcbiAgICogVGhlIHBpcGVsaW5lIG5hbWUgaW4gdGhlIGJhc3Rpb24gYWNjb3VudC5cbiAgICovXG4gIHJlYWRvbmx5IHBpcGVsaW5lTmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGxpc3Qgb2YgcGF0dGVybnMgb2YgR2l0IHJlcG9zaXRvcnkgZmlsZSBwYXRocyB0aGF0LCB3aGVuIGEgY29tbWl0IGlzIHB1c2hlZCwgYXJlIHRvIGJlIElOQ0xVREVEIGFzIGNyaXRlcmlhIHRoYXQgc3RhcnRzIHRoZSBwaXBlbGluZS5cbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtY29kZXBpcGVsaW5lLXBpcGVsaW5lLWdpdGZpbGVwYXRoZmlsdGVyY3JpdGVyaWEuaHRtbFxuICAgKlxuICAgKi9cbiAgcmVhZG9ubHkgaW5jbHVkZWRGaWxlUGF0aHM/OiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIHBhdHRlcm5zIG9mIEdpdCByZXBvc2l0b3J5IGZpbGUgcGF0aHMgdGhhdCwgd2hlbiBhIGNvbW1pdCBpcyBwdXNoZWQsIGFyZSB0byBiZSBFWENMVURFRCBmcm9tIHN0YXJ0aW5nIHRoZSBwaXBlbGluZS5cbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtY29kZXBpcGVsaW5lLXBpcGVsaW5lLWdpdGZpbGVwYXRoZmlsdGVyY3JpdGVyaWEuaHRtbFxuICAgKlxuICAgKi9cbiAgcmVhZG9ubHkgZXhjbHVkZWRGaWxlUGF0aHM/OiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIFRoZSBjb21tYW5kIHRvIHJ1biB0byBzeW50aCB0aGUgY2RrIHN0YWNrIHdoaWNoIGFsc28gaW5zdGFsbGluZyB0aGUgY2RrIGRlcGVuZGVuY2llcy4gZS5nLiBbXCJ5YXJuIGluc3RhbGwgLS1pbW11dGFibGVcIiwgXCJ5YXJuIGNkayBzeW50aFwiXVxuICAgKi9cbiAgcmVhZG9ubHkgY2RrU3ludGhDbWQ6IHN0cmluZ1tdO1xuICAvKipcbiAgICogVGhlIGxvY2F0aW9uIHdoZXJlIHRoZSBjZGsgb3V0cHV0IHdpbGwgYmUgc3RvcmVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBjZGsub3V0XG4gICAqL1xuICByZWFkb25seSBjZGtPdXQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBDb2RlQnVpbGQgc3RlcCBkdXJpbmcgdGhlIENESyBzeW50aCBwaGFzZS4gSXQgd2lsbCBwYXNzZWQgYXMgdGhlIGBwYXJ0aWFsQnVpbGRTcGVjYCB0byB0aGUgYENvZGVCdWlsZFN0ZXBgLlxuICAgKlxuICAgKiBAZGVmYXVsdCBERUZBVUxUX1NZTlRIX1NURVBfUEFSVElBTF9CVUlMRF9TUEVDXG4gICAqL1xuICByZWFkb25seSBzeW50aEJ1aWxkU3BlYz86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIC8qKlxuICAgKiBUaGUgc3RhZ2UgZW52aXJvbm1lbnQgZm9yIHRoZSBkZXBsb3ltZW50IHN0YWNrXG4gICAqL1xuICByZWFkb25seSBzdGFnZUVudj86IFN0YWdlRW52UHJvcHM7XG4gIC8qKlxuICAgKiBFbmFibGUgbm90aWZpY2F0aW9uIHRvIHRoZSAnYWxlcnRzLWJ1aWxkJyBzbGFjayBjaGFubmVsLlxuICAgKiBAZGVmYXVsdCBUcnVlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVTbGFja05vdGlmaWNhdGlvbj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUaGUgcGlwZWxpbmUgbm90aWZpY2F0aW9uIGV2ZW50cyB0aGF0IHdpbGwgdHJpZ2dlciBhIFNsYWNrIGNoYW5uZWwgbm90aWZpY2F0aW9uLlxuICAgKiBPbmx5IGFwcGxpZXMgaWYgYGVuYWJsZVNsYWNrTm90aWZpY2F0aW9uYCBpcyBzZXQgdG8gdHJ1ZS5cbiAgICpcbiAgICogQGRlZmF1bHQgW1BpcGVsaW5lTm90aWZpY2F0aW9uRXZlbnRzLlBJUEVMSU5FX0VYRUNVVElPTl9GQUlMRURdIOKAk1xuICAgKiAgIE9ubHkgZmFpbGVkIHBpcGVsaW5lIGV4ZWN1dGlvbnMgd2lsbCB0cmlnZ2VyIGEgbm90aWZpY2F0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgbm90aWZpY2F0aW9uRXZlbnRzPzogUGlwZWxpbmVOb3RpZmljYXRpb25FdmVudHNbXTtcblxuICAvKipcbiAgICogV2hldGhlciB0byByZXVzZSB0aGUgZXhpc3RpbmcgYXJ0aWZhY3QgYnVja2V0IGZvciBjcm9zcy1kZXBsb3ltZW50IHBpcGVsaW5lcy5cbiAgICogSWYgc2V0IHRvIHRydWUsIGl0IHdpbGwgbG9vayB1cCB0aGUgZXhpc3RpbmcgYXJ0aWZhY3QgYnVja2V0IGluIHRoZSBUT09MQ0hBSU4gYWNjb3VudC5cbiAgICpcbiAgICogQGRlZmF1bHQgVHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgcmV1c2VFeGlzdGluZ0FydGlmYWN0QnVja2V0PzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBBIENESyBjb25zdHJ1Y3QgdGhhdCBjcmVhdGVzIGEgZGVwbG95bWVudCBwaXBlbGluZSBhY3Jvc3MgZW52aXJvbm1lbnRzIGZvciB0aGUgT3JjYUJ1cyBwcm9qZWN0LlxuICpcbiAqIFByZXJlcXVpc2l0ZTogRW5zdXJlIHRoYXQgdGhlIFwiQ3Jvc3NEZXBsb3ltZW50QXJ0aWZhY3RCdWNrZXRcIiBzdGFjayBpcyBkZXBsb3llZCBpbiB0aGUgVE9PTENIQUlOIGFjY291bnRcbiAqIGJlZm9yZSB1c2luZyB0aGlzIGNvbnN0cnVjdC5cbiAqL1xuZXhwb3J0IGNsYXNzIERlcGxveW1lbnRTdGFja1BpcGVsaW5lIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgLyoqXG4gICAqIFRoZSBjb2RlIHBpcGVsaW5lIGNvbnN0cnVjdCB0aGF0IGlzIGNyZWF0ZWQuXG4gICAqL1xuICByZWFkb25seSBwaXBlbGluZTogUGlwZWxpbmU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBEZXBsb3ltZW50U3RhY2tQaXBlbGluZVByb3BzLFxuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgY29kZVN0YXJBcm4gPSBTdHJpbmdQYXJhbWV0ZXIudmFsdWVGb3JTdHJpbmdQYXJhbWV0ZXIoXG4gICAgICB0aGlzLFxuICAgICAgXCIvb3JjYWJ1cy9jb2Rlc3Rhcl9naXRodWJfYXJuXCIsXG4gICAgKTtcbiAgICBjb25zdCBjb2RlU3RhclNvdXJjZUFjdGlvbk5hbWUgPSBcInBpcGVsaW5lLXNyY1wiO1xuICAgIGNvbnN0IHNvdXJjZUZpbGUgPSBDb2RlUGlwZWxpbmVTb3VyY2UuY29ubmVjdGlvbihcbiAgICAgIGBPcmNhQnVzLyR7cHJvcHMuZ2l0aHViUmVwb31gLFxuICAgICAgcHJvcHMuZ2l0aHViQnJhbmNoLFxuICAgICAge1xuICAgICAgICBjb25uZWN0aW9uQXJuOiBjb2RlU3RhckFybixcbiAgICAgICAgYWN0aW9uTmFtZTogY29kZVN0YXJTb3VyY2VBY3Rpb25OYW1lLFxuICAgICAgICB0cmlnZ2VyT25QdXNoOiB0cnVlLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgY29uc3QgaXNSZXVzaW5nRXhpc3RpbmdBcnRpZmFjdEJ1Y2tldCA9XG4gICAgICBwcm9wcy5yZXVzZUV4aXN0aW5nQXJ0aWZhY3RCdWNrZXQgPz8gdHJ1ZTtcbiAgICBjb25zdCBhcnRpZmFjdEJ1Y2tldCA9IGlzUmV1c2luZ0V4aXN0aW5nQXJ0aWZhY3RCdWNrZXRcbiAgICAgID8gQ3Jvc3NEZXBsb3ltZW50QXJ0aWZhY3RCdWNrZXQuZnJvbUxvb2t1cCh0aGlzKS5hcnRpZmFjdEJ1Y2tldFxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICB0aGlzLnBpcGVsaW5lID0gbmV3IFBpcGVsaW5lKHRoaXMsIFwiRGVwbG95bWVudENvZGVQaXBlbGluZVwiLCB7XG4gICAgICBhcnRpZmFjdEJ1Y2tldDogYXJ0aWZhY3RCdWNrZXQsXG4gICAgICBwaXBlbGluZVR5cGU6IFBpcGVsaW5lVHlwZS5WMixcbiAgICAgIHBpcGVsaW5lTmFtZTogcHJvcHMucGlwZWxpbmVOYW1lLFxuICAgICAgY3Jvc3NBY2NvdW50S2V5czogdHJ1ZSxcbiAgICB9KTtcblxuICAgIGlmIChwcm9wcy5pbmNsdWRlZEZpbGVQYXRocyB8fCBwcm9wcy5leGNsdWRlZEZpbGVQYXRocykge1xuICAgICAgY29uc3QgZmlsZVBhdGhzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4gPSB7fTtcblxuICAgICAgaWYgKHByb3BzLmluY2x1ZGVkRmlsZVBhdGhzKSB7XG4gICAgICAgIGZpbGVQYXRoc1tcIkluY2x1ZGVzXCJdID0gcHJvcHMuaW5jbHVkZWRGaWxlUGF0aHM7XG4gICAgICB9XG4gICAgICBpZiAocHJvcHMuZXhjbHVkZWRGaWxlUGF0aHMpIHtcbiAgICAgICAgZmlsZVBhdGhzW1wiRXhjbHVkZXNcIl0gPSBwcm9wcy5leGNsdWRlZEZpbGVQYXRocztcbiAgICAgIH1cblxuICAgICAgLy8gQWRkIGV2ZW50IGZpbHRlciB0byBvbmx5IHRyaWdnZXIgaWYgdGhlIHB1c2ggZXZlbnQgaXMgZnJvbSBgZGVwbG95YCBkaXJlY3RvcnlcbiAgICAgIGNvbnN0IGNmblBpcGVsaW5lID0gdGhpcy5waXBlbGluZS5ub2RlLmRlZmF1bHRDaGlsZCBhcyBDZm5QaXBlbGluZTtcbiAgICAgIGNmblBpcGVsaW5lLmFkZFByb3BlcnR5T3ZlcnJpZGUoXCJUcmlnZ2Vyc1wiLCBbXG4gICAgICAgIHtcbiAgICAgICAgICBHaXRDb25maWd1cmF0aW9uOiB7XG4gICAgICAgICAgICBQdXNoOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBCcmFuY2hlczoge1xuICAgICAgICAgICAgICAgICAgSW5jbHVkZXM6IFtwcm9wcy5naXRodWJCcmFuY2hdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgRmlsZVBhdGhzOiBmaWxlUGF0aHMsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgU291cmNlQWN0aW9uTmFtZTogY29kZVN0YXJTb3VyY2VBY3Rpb25OYW1lLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgUHJvdmlkZXJUeXBlOiBcIkNvZGVTdGFyU291cmNlQ29ubmVjdGlvblwiLFxuICAgICAgICB9LFxuICAgICAgXSk7XG4gICAgfVxuXG4gICAgY29uc3QgeyBzeW50aEJ1aWxkU3BlYyA9IERFRkFVTFRfU1lOVEhfU1RFUF9QQVJUSUFMX0JVSUxEX1NQRUMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNka1BpcGVsaW5lID0gbmV3IENvZGVQaXBlbGluZSh0aGlzLCBcIkNES0NvZGVQaXBlbGluZVwiLCB7XG4gICAgICBjb2RlUGlwZWxpbmU6IHRoaXMucGlwZWxpbmUsXG4gICAgICBzeW50aDogbmV3IENvZGVCdWlsZFN0ZXAoXCJDZGtTeW50aFwiLCB7XG4gICAgICAgIGluc3RhbGxDb21tYW5kczogW1xuICAgICAgICAgIFwibm9kZSAtdlwiLFxuICAgICAgICAgIFwibnBtIGluc3RhbGwgLS1nbG9iYWwgY29yZXBhY2tAbGF0ZXN0XCIsXG4gICAgICAgICAgXCJjb3JlcGFjayAtLXZlcnNpb25cIixcbiAgICAgICAgICBcImNvcmVwYWNrIGVuYWJsZVwiLFxuICAgICAgICBdLFxuICAgICAgICBjb21tYW5kczogcHJvcHMuY2RrU3ludGhDbWQsXG4gICAgICAgIGlucHV0OiBzb3VyY2VGaWxlLFxuICAgICAgICBwcmltYXJ5T3V0cHV0RGlyZWN0b3J5OiBwcm9wcy5jZGtPdXQgfHwgXCJjZGsub3V0XCIsXG4gICAgICAgIHBhcnRpYWxCdWlsZFNwZWM6IEJ1aWxkU3BlYy5mcm9tT2JqZWN0KHN5bnRoQnVpbGRTcGVjKSxcbiAgICAgIH0pLFxuICAgICAgc2VsZk11dGF0aW9uOiB0cnVlLFxuICAgICAgY29kZUJ1aWxkRGVmYXVsdHM6IHtcbiAgICAgICAgYnVpbGRFbnZpcm9ubWVudDoge1xuICAgICAgICAgIGNvbXB1dGVUeXBlOiBDb21wdXRlVHlwZS5MQVJHRSxcbiAgICAgICAgICBidWlsZEltYWdlOiBMaW51eEFybUJ1aWxkSW1hZ2UuQU1BWk9OX0xJTlVYXzJfU1RBTkRBUkRfM18wLFxuICAgICAgICAgIGVudmlyb25tZW50VmFyaWFibGVzOiB7XG4gICAgICAgICAgICBOT0RFX09QVElPTlM6IHtcbiAgICAgICAgICAgICAgdmFsdWU6IFwiLS1tYXgtb2xkLXNwYWNlLXNpemU9ODE5MlwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGRlZmF1bHRTdGFnZUVudjogU3RhZ2VFbnZQcm9wcyA9IHtcbiAgICAgIGJldGE6IEJFVEFfRU5WSVJPTk1FTlQsXG4gICAgICBnYW1tYTogR0FNTUFfRU5WSVJPTk1FTlQsXG4gICAgICBwcm9kOiBQUk9EX0VOVklST05NRU5ULFxuICAgIH07XG4gICAgY29uc3Qgc3RhZ2VFbnYgPSBwcm9wcy5zdGFnZUVudiB8fCBkZWZhdWx0U3RhZ2VFbnY7XG5cbiAgICBjZGtQaXBlbGluZS5hZGRTdGFnZShcbiAgICAgIG5ldyBEZXBsb3ltZW50U3RhZ2UoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIFwiT3JjYUJ1c0JldGFcIixcbiAgICAgICAgc3RhZ2VFbnYuYmV0YSxcbiAgICAgICAgcHJvcHMuc3RhY2tOYW1lLFxuICAgICAgICBwcm9wcy5zdGFjayxcbiAgICAgICAgcHJvcHMuc3RhY2tDb25maWcuYmV0YSxcbiAgICAgICAgcHJvcHMuZ2l0aHViUmVwbyxcbiAgICAgICAgcHJvcHMuZ2l0aHViQnJhbmNoLFxuICAgICAgKSxcbiAgICApO1xuXG4gICAgY2RrUGlwZWxpbmUuYWRkU3RhZ2UoXG4gICAgICBuZXcgRGVwbG95bWVudFN0YWdlKFxuICAgICAgICB0aGlzLFxuICAgICAgICBcIk9yY2FCdXNHYW1tYVwiLFxuICAgICAgICBzdGFnZUVudi5nYW1tYSxcbiAgICAgICAgcHJvcHMuc3RhY2tOYW1lLFxuICAgICAgICBwcm9wcy5zdGFjayxcbiAgICAgICAgcHJvcHMuc3RhY2tDb25maWcuZ2FtbWEsXG4gICAgICAgIHByb3BzLmdpdGh1YlJlcG8sXG4gICAgICAgIHByb3BzLmdpdGh1YkJyYW5jaCxcbiAgICAgICksXG4gICAgICB7XG4gICAgICAgIHBvc3Q6IFtcbiAgICAgICAgICBuZXcgTWFudWFsQXBwcm92YWxBY3Rpb25TdGVwKFwiUHJvbW90ZVRvUHJvZFwiLCB7XG4gICAgICAgICAgICBhY3Rpb25OYW1lOiBcIlByb21vdGVUb1Byb2RcIixcbiAgICAgICAgICAgIC8vIEN1c3RvbSBzdGVwcyBieXBhc3Mgc3RhZ2UgcHJlL3Bvc3Qgb3JkZXJpbmcsIHNvIHJ1bk9yZGVyIG11c3QgYmUgZXhwbGljaXRseSBzZXQuXG4gICAgICAgICAgICAvLyBTZXQgdG8gNSB0byBlbnN1cmUgdGhpcyBydW5zIGFmdGVyIGFsbCBPcmNhQnVzR2FtbWEgc3RhZ2Ugc3RlcHMgY29tcGxldGUuXG4gICAgICAgICAgICAvLyAoR2FtbWEgZGVwbG95bWVudCB0eXBpY2FsbHkgdXNlcyAyIHN0ZXBzLCBzbyA1IHByb3ZpZGVzIGFkZXF1YXRlIGJ1ZmZlcilcbiAgICAgICAgICAgIHJ1bk9yZGVyOiA1LFxuICAgICAgICAgICAgLy8gNjAtbWludXRlIHRpbWVvdXQgYWxsb3dzIHF1ZXVlZCBwaXBlbGluZSBleGVjdXRpb25zIHRvIHByb2NlZWQgaWYgYXBwcm92YWwgZXhwaXJlc1xuICAgICAgICAgICAgdGltZW91dDogRHVyYXRpb24ubWludXRlcyg2MCksXG4gICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgICk7XG5cbiAgICBjZGtQaXBlbGluZS5hZGRTdGFnZShcbiAgICAgIG5ldyBEZXBsb3ltZW50U3RhZ2UoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIFwiT3JjYUJ1c1Byb2RcIixcbiAgICAgICAgc3RhZ2VFbnYucHJvZCxcbiAgICAgICAgcHJvcHMuc3RhY2tOYW1lLFxuICAgICAgICBwcm9wcy5zdGFjayxcbiAgICAgICAgcHJvcHMuc3RhY2tDb25maWcucHJvZCxcbiAgICAgICAgcHJvcHMuZ2l0aHViUmVwbyxcbiAgICAgICAgcHJvcHMuZ2l0aHViQnJhbmNoLFxuICAgICAgKSxcbiAgICApO1xuXG4gICAgaWYgKHByb3BzLmVuYWJsZVNsYWNrTm90aWZpY2F0aW9uID8/IHRydWUpIHtcbiAgICAgIGNvbnN0IGFsZXJ0c0J1aWxkU2xhY2tDb25maWdBcm4gPSBTdHJpbmdQYXJhbWV0ZXIudmFsdWVGb3JTdHJpbmdQYXJhbWV0ZXIoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIFwiL2NoYXRib3RfYXJuL3NsYWNrL2FsZXJ0cy1idWlsZFwiLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHRhcmdldCA9IFNsYWNrQ2hhbm5lbENvbmZpZ3VyYXRpb24uZnJvbVNsYWNrQ2hhbm5lbENvbmZpZ3VyYXRpb25Bcm4oXG4gICAgICAgIHRoaXMsXG4gICAgICAgIFwiU2xhY2tDaGFubmVsQ29uZmlndXJhdGlvblwiLFxuICAgICAgICBhbGVydHNCdWlsZFNsYWNrQ29uZmlnQXJuLFxuICAgICAgKTtcblxuICAgICAgdGhpcy5waXBlbGluZS5ub3RpZnlPbihcIlBpcGVsaW5lU2xhY2tOb3RpZmljYXRpb25cIiwgdGFyZ2V0LCB7XG4gICAgICAgIGV2ZW50czogcHJvcHMubm90aWZpY2F0aW9uRXZlbnRzIHx8IFtcbiAgICAgICAgICBQaXBlbGluZU5vdGlmaWNhdGlvbkV2ZW50cy5QSVBFTElORV9FWEVDVVRJT05fRkFJTEVELFxuICAgICAgICBdLFxuICAgICAgICBkZXRhaWxUeXBlOiBEZXRhaWxUeXBlLkZVTEwsXG4gICAgICAgIG5vdGlmaWNhdGlvblJ1bGVOYW1lOiBgT3JjYUJ1cy0ke3Byb3BzLnBpcGVsaW5lTmFtZX1gLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgTWFudWFsQXBwcm92YWxBY3Rpb25TdGVwIHdpdGggcmVxdWlyZWQgcnVuT3JkZXIuXG4gKi9cbmludGVyZmFjZSBNYW51YWxBcHByb3ZhbEFjdGlvblN0ZXBQcm9wcyBleHRlbmRzIE1hbnVhbEFwcHJvdmFsQWN0aW9uUHJvcHMge1xuICAvKipcbiAgICogVGhlIHJ1biBvcmRlciBmb3IgdGhpcyBhY3Rpb24gaW4gdGhlIHBpcGVsaW5lIHN0YWdlLiBUaGUgc3RhZ2UgUHJlL1Bvc3Qgb3JkZXIgZG9lcyBub3QgYXBwbHkgdG8gdGhpcyBjdXN0b21cbiAgICogc3RlcC9hY3Rpb24sIHlvdSBuZWVkIHRvIGV4cGxpY2l0bHkgc2V0IHRoZSBydW5PcmRlci5cbiAgICovXG4gIHJ1bk9yZGVyOiBudW1iZXI7XG59XG4vKipcbiAqIEN1c3RvbSBtYW51YWwgYXBwcm92YWwgc3RlcCBmb3IgQ0RLIENvZGVQaXBlbGluZS5cbiAqXG4gKiBUaGlzIGNsYXNzIGJyaWRnZXMgdGhlIGdhcCB0byBlbmFibGUgdXNpbmcgTWFudWFsQXBwcm92YWxBY3Rpb24gd2l0aGluIGEgU3RlcCBjbGFzcyxcbiAqIG1ha2luZyBpdCBjb21wYXRpYmxlIHdpdGggY2RrLnBpcGVsaW5lcyBjb25zdHJ1Y3RzLlxuICpcbiAqIEBwYXJhbSBpZCAtIFRoZSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHN0ZXAuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwcm9wZXJ0aWVzIGZvciB0aGUgbWFudWFsIGFwcHJvdmFsIGFjdGlvbiwgaW5jbHVkaW5nXG4gKi9cbmNsYXNzIE1hbnVhbEFwcHJvdmFsQWN0aW9uU3RlcFxuICBleHRlbmRzIFN0ZXBcbiAgaW1wbGVtZW50cyBJQ29kZVBpcGVsaW5lQWN0aW9uRmFjdG9yeVxue1xuICBwcml2YXRlIHJlYWRvbmx5IG1hbnVhbEFwcHJvdmFsQWN0aW9uUHJvcHM6IE1hbnVhbEFwcHJvdmFsQWN0aW9uU3RlcFByb3BzO1xuICBjb25zdHJ1Y3RvcihpZDogc3RyaW5nLCBvcHRpb25zOiBNYW51YWxBcHByb3ZhbEFjdGlvblN0ZXBQcm9wcykge1xuICAgIHN1cGVyKGlkKTtcbiAgICB0aGlzLm1hbnVhbEFwcHJvdmFsQWN0aW9uUHJvcHMgPSBvcHRpb25zO1xuICB9XG5cbiAgcHVibGljIHByb2R1Y2VBY3Rpb24oXG4gICAgc3RhZ2U6IElTdGFnZSxcbiAgICBvcHRpb25zOiBQcm9kdWNlQWN0aW9uT3B0aW9ucyxcbiAgKTogQ29kZVBpcGVsaW5lQWN0aW9uRmFjdG9yeVJlc3VsdCB7XG4gICAgc3RhZ2UuYWRkQWN0aW9uKG5ldyBNYW51YWxBcHByb3ZhbEFjdGlvbih0aGlzLm1hbnVhbEFwcHJvdmFsQWN0aW9uUHJvcHMpKTtcblxuICAgIHJldHVybiB7IHJ1bk9yZGVyc0NvbnN1bWVkOiAxIH07XG4gIH1cbn1cblxuY2xhc3MgRGVwbG95bWVudFN0YWdlIGV4dGVuZHMgU3RhZ2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGVudmlyb25tZW50TmFtZTogc3RyaW5nLFxuICAgIGVudjogRW52aXJvbm1lbnQsXG4gICAgc3RhY2tOYW1lOiBzdHJpbmcsXG4gICAgc3RhY2tDbGFzczogbmV3IChzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogYW55KSA9PiBTdGFjayxcbiAgICBhcHBTdGFja1Byb3BzOiBhbnksXG4gICAgZ2l0aHViUmVwbzogc3RyaW5nLFxuICAgIGdpdGh1YkJyYW5jaD86IHN0cmluZyxcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGVudmlyb25tZW50TmFtZSwgeyBlbnY6IGVudiB9KTtcblxuICAgIGxldCBzb3VyY2UgPSBgaHR0cHM6Ly9naXRodWIuY29tL09yY2FCdXMvJHtnaXRodWJSZXBvfWA7XG4gICAgaWYgKGdpdGh1YkJyYW5jaCAhPT0gdW5kZWZpbmVkICYmIGdpdGh1YkJyYW5jaCAhPT0gXCJtYWluXCIpIHtcbiAgICAgIHNvdXJjZSA9IGAke3NvdXJjZX0vdHJlZS8ke2dpdGh1YkJyYW5jaH1gO1xuICAgIH1cblxuICAgIG5ldyBzdGFja0NsYXNzKHRoaXMsIHN0YWNrTmFtZSwge1xuICAgICAgZW52OiBlbnYsXG4gICAgICB0YWdzOiB7XG4gICAgICAgIFwidW1jY3Itb3JnOlByb2R1Y3RcIjogXCJPcmNhQnVzXCIsXG4gICAgICAgIFwidW1jY3Itb3JnOkNyZWF0b3JcIjogXCJDREtcIixcbiAgICAgICAgXCJ1bWNjci1vcmc6U2VydmljZVwiOiBzdGFja05hbWUsXG4gICAgICAgIFwidW1jY3Itb3JnOlNvdXJjZVwiOiBzb3VyY2UsXG4gICAgICB9LFxuICAgICAgLi4uYXBwU3RhY2tQcm9wcyxcbiAgICB9KTtcbiAgfVxufVxuIl19
215
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwaXBlbGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsMkNBQXVDO0FBQ3ZDLDZDQUFrRTtBQUNsRSw2REFJbUM7QUFDbkMsaURBQXNEO0FBQ3RELHFEQVMrQjtBQUMvQixtRUFNc0M7QUFDdEMscUNBSWtCO0FBQ2xCLHlEQUFvRTtBQUNwRSxxRkFBbUU7QUFDbkUsdURBQWtFO0FBQ2xFLG1GQUc4QztBQUU5Qzs7R0FFRztBQUNVLFFBQUEscUNBQXFDLEdBQUc7SUFDbkQsTUFBTSxFQUFFO1FBQ04sT0FBTyxFQUFFO1lBQ1Asa0JBQWtCLEVBQUU7Z0JBQ2xCLE1BQU0sRUFBRSxNQUFNO2FBQ2Y7U0FDRjtLQUNGO0NBQ0YsQ0FBQztBQThIRjs7Ozs7R0FLRztBQUNILE1BQWEsdUJBQXdCLFNBQVEsc0JBQVM7O0lBQ3BEOztPQUVHO0lBQ00sUUFBUSxDQUFXO0lBRTVCLFlBQ0UsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLEtBQW1DO1FBRW5DLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxXQUFXLEdBQUcseUJBQWUsQ0FBQyx1QkFBdUIsQ0FDekQsSUFBSSxFQUNKLDhCQUE4QixDQUMvQixDQUFDO1FBQ0YsTUFBTSx3QkFBd0IsR0FBRyxjQUFjLENBQUM7UUFDaEQsTUFBTSxVQUFVLEdBQUcsOEJBQWtCLENBQUMsVUFBVSxDQUM5QyxXQUFXLEtBQUssQ0FBQyxVQUFVLEVBQUUsRUFDN0IsS0FBSyxDQUFDLFlBQVksRUFDbEI7WUFDRSxhQUFhLEVBQUUsV0FBVztZQUMxQixVQUFVLEVBQUUsd0JBQXdCO1lBQ3BDLGFBQWEsRUFBRSxJQUFJO1NBQ3BCLENBQ0YsQ0FBQztRQUVGLE1BQU0sK0JBQStCLEdBQ25DLEtBQUssQ0FBQywyQkFBMkIsSUFBSSxJQUFJLENBQUM7UUFDNUMsTUFBTSxjQUFjLEdBQUcsK0JBQStCO1lBQ3BELENBQUMs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aW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IER1cmF0aW9uLCBFbnZpcm9ubWVudCwgU3RhY2ssIFN0YWdlIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQge1xuICBCdWlsZFNwZWMsXG4gIENvbXB1dGVUeXBlLFxuICBMaW51eEFybUJ1aWxkSW1hZ2UsXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY29kZWJ1aWxkXCI7XG5pbXBvcnQgeyBTdHJpbmdQYXJhbWV0ZXIgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNzbVwiO1xuaW1wb3J0IHtcbiAgQ29kZUJ1aWxkU3RlcCxcbiAgQ29kZVBpcGVsaW5lLFxuICBDb2RlUGlwZWxpbmVBY3Rpb25GYWN0b3J5UmVzdWx0LFxuICBDb2RlUGlwZWxpbmVTb3VyY2UsXG4gIElDb2RlUGlwZWxpbmVBY3Rpb25GYWN0b3J5LFxuICBNYW51YWxBcHByb3ZhbFN0ZXAsXG4gIFByb2R1Y2VBY3Rpb25PcHRpb25zLFxuICBTdGVwLFxufSBmcm9tIFwiYXdzLWNkay1saWIvcGlwZWxpbmVzXCI7XG5pbXBvcnQge1xuICBQaXBlbGluZSxcbiAgQ2ZuUGlwZWxpbmUsXG4gIFBpcGVsaW5lVHlwZSxcbiAgUGlwZWxpbmVOb3RpZmljYXRpb25FdmVudHMsXG4gIElTdGFnZSxcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jb2RlcGlwZWxpbmVcIjtcbmltcG9ydCB7XG4gIEJFVEFfRU5WSVJPTk1FTlQsXG4gIEdBTU1BX0VOVklST05NRU5ULFxuICBQUk9EX0VOVklST05NRU5ULFxufSBmcm9tIFwiLi9jb25maWdcIjtcbmltcG9ydCB7IFNsYWNrQ2hhbm5lbENvbmZpZ3VyYXRpb24gfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNoYXRib3RcIjtcbmltcG9ydCB7IERldGFpbFR5cGUgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNvZGVzdGFybm90aWZpY2F0aW9uc1wiO1xuaW1wb3J0IHsgQ3Jvc3NEZXBsb3ltZW50QXJ0aWZhY3RCdWNrZXQgfSBmcm9tIFwiLi9hcnRpZmFjdC1idWNrZXRcIjtcbmltcG9ydCB7XG4gIE1hbnVhbEFwcHJvdmFsQWN0aW9uLFxuICBNYW51YWxBcHByb3ZhbEFjdGlvblByb3BzLFxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNvZGVwaXBlbGluZS1hY3Rpb25zXCI7XG5cbi8qKlxuICogVGhlIGRlZmF1bHQgcGFydGlhbCBidWlsZCBzcGVjIGZvciB0aGUgc3ludGggc3RlcCBpbiB0aGUgcGlwZWxpbmUuXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX1NZTlRIX1NURVBfUEFSVElBTF9CVUlMRF9TUEVDID0ge1xuICBwaGFzZXM6IHtcbiAgICBpbnN0YWxsOiB7XG4gICAgICBcInJ1bnRpbWUtdmVyc2lvbnNcIjoge1xuICAgICAgICBub2RlanM6IFwiMjIueFwiLFxuICAgICAgfSxcbiAgICB9LFxuICB9LFxufTtcblxuZXhwb3J0IGludGVyZmFjZSBTdGFnZUVudlByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBlbnZpcm9ubWVudCBmb3IgdGhlIGJldGEgc3RhZ2VcbiAgICovXG4gIHJlYWRvbmx5IGJldGE6IEVudmlyb25tZW50O1xuICAvKipcbiAgICogVGhlIGVudmlyb25tZW50IGZvciB0aGUgZ2FtbWEgc3RhZ2VcbiAgICovXG4gIHJlYWRvbmx5IGdhbW1hOiBFbnZpcm9ubWVudDtcbiAgLyoqXG4gICAqIFRoZSBlbnZpcm9ubWVudCBmb3IgdGhlIHByb2Qgc3RhZ2VcbiAgICovXG4gIHJlYWRvbmx5IHByb2Q6IEVudmlyb25tZW50O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0YWNrQ29uZmlnUHJvcHMge1xuICAvKipcbiAgICogVGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBiZXRhIChkZXYpIHN0YWdlXG4gICAqL1xuICByZWFkb25seSBiZXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAvKipcbiAgICogVGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBnYW1tYSAoc3RnKSBzdGFnZVxuICAgKi9cbiAgcmVhZG9ubHkgZ2FtbWE6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIC8qKlxuICAgKiBUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIHByb2Qgc3RhZ2VcbiAgICovXG4gIHJlYWRvbmx5IHByb2Q6IFJlY29yZDxzdHJpbmcsIGFueT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVwbG95bWVudFN0YWNrUGlwZWxpbmVQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgR2l0SHViIGJyYW5jaCBuYW1lIHRoZSBwaXBlbGluZSB3aWxsIGxpc3RlbiB0by5cbiAgICogQXZvaWQgdXNpbmcgYnJhbmNoIG5hbWVzIHRoYXQgY29udGFpbiBzcGVjaWFsIGNoYXJhY3RlcnMgc3VjaCBhcyBwYXJlbnRoZXNlcy5cbiAgICogQWxsb3dlZCBzcGVjaWFsIGNoYXJhY3RlcnMgYXJlOiBcIisgLSA9IC4gXyA6IC8gQFwiLlxuICAgKiBUaGlzIHJlc3RyaWN0aW9uIGlzIGR1ZSB0byBBV1MgcmVzb3VyY2UgdGFnZ2luZyByZXF1aXJlbWVudHMuXG4gICAqL1xuICByZWFkb25seSBnaXRodWJCcmFuY2g6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSByZXBvc2l0b3J5IG5hbWUgdGhhdCBleGlzdCBpbiB0aGUgJ09yY2FCdXMnIGdpdGh1YiBvcmdhbmlzYXRpb24uIGUuZy4gYGEtbWljcm8tc2VydmljZS1yZXBvYFxuICAgKi9cbiAgcmVhZG9ubHkgZ2l0aHViUmVwbzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHN0YWNrIHRvIHdoaWNoIHRoZSBwaXBlbGluZSB3aWxsIGJlIGRlcGxveWluZyB0byBpdHMgcmVzcGVjdGl2ZSBhY2NvdW50XG4gICAqL1xuICByZWFkb25seSBzdGFjazogYW55O1xuICAvKipcbiAgICogVGhlIHN0YWNrIG5hbWUgKGluIGNsb3VkZm9ybWF0aW9uKSBmb3IgdGhlIHN0YWNrIGRlZmluZWQgaW4gYHN0YWNrYC4gVGhlIHN0YWNrIG5hbWUgd2lsbCBwcmVwZW5kIHdpdGggdGhlIHN0YWdlXG4gICAqIG5hbWUgZS5nLiBgT3JjYUJ1c0JldGEtPHN0YWNrTmFtZT5gLCBgT3JjYUJ1c0dhbW1hLTxzdGFja05hbWU+YCwgYE9yY2FCdXNQcm9kLTxzdGFja05hbWU+YFxuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2tOYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgc3RhY2sgY29uZmlndXJhdGlvbi9jb25zdGFudHMgdGhhdCB3aWxsIGJlIHBhc3NlZCB0byB0aGUgc3RhY2sgcHJvcHMuXG4gICAqL1xuICByZWFkb25seSBzdGFja0NvbmZpZzogU3RhY2tDb25maWdQcm9wcztcbiAgLyoqXG4gICAqIFRoZSBwaXBlbGluZSBuYW1lIGluIHRoZSBiYXN0aW9uIGFjY291bnQuXG4gICAqL1xuICByZWFkb25seSBwaXBlbGluZU5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIHBhdHRlcm5zIG9mIEdpdCByZXBvc2l0b3J5IGZpbGUgcGF0aHMgdGhhdCwgd2hlbiBhIGNvbW1pdCBpcyBwdXNoZWQsIGFyZSB0byBiZSBJTkNMVURFRCBhcyBjcml0ZXJpYSB0aGF0IHN0YXJ0cyB0aGUgcGlwZWxpbmUuXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWNvZGVwaXBlbGluZS1waXBlbGluZS1naXRmaWxlcGF0aGZpbHRlcmNyaXRlcmlhLmh0bWxcbiAgICpcbiAgICovXG4gIHJlYWRvbmx5IGluY2x1ZGVkRmlsZVBhdGhzPzogc3RyaW5nW107XG4gIC8qKlxuICAgKiBUaGUgbGlzdCBvZiBwYXR0ZXJucyBvZiBHaXQgcmVwb3NpdG9yeSBmaWxlIHBhdGhzIHRoYXQsIHdoZW4gYSBjb21taXQgaXMgcHVzaGVkLCBhcmUgdG8gYmUgRVhDTFVERUQgZnJvbSBzdGFydGluZyB0aGUgcGlwZWxpbmUuXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWNvZGVwaXBlbGluZS1waXBlbGluZS1naXRmaWxlcGF0aGZpbHRlcmNyaXRlcmlhLmh0bWxcbiAgICpcbiAgICovXG4gIHJlYWRvbmx5IGV4Y2x1ZGVkRmlsZVBhdGhzPzogc3RyaW5nW107XG4gIC8qKlxuICAgKiBUaGUgY29tbWFuZCB0byBydW4gdG8gc3ludGggdGhlIGNkayBzdGFjayB3aGljaCBhbHNvIGluc3RhbGxpbmcgdGhlIGNkayBkZXBlbmRlbmNpZXMuIGUuZy4gW1wieWFybiBpbnN0YWxsIC0taW1tdXRhYmxlXCIsIFwieWFybiBjZGsgc3ludGhcIl1cbiAgICovXG4gIHJlYWRvbmx5IGNka1N5bnRoQ21kOiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIFRoZSBsb2NhdGlvbiB3aGVyZSB0aGUgY2RrIG91dHB1dCB3aWxsIGJlIHN0b3JlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgY2RrLm91dFxuICAgKi9cbiAgcmVhZG9ubHkgY2RrT3V0Pzogc3RyaW5nO1xuICAvKipcbiAgICogQWRkaXRpb25hbCBjb25maWd1cmF0aW9uIGZvciB0aGUgQ29kZUJ1aWxkIHN0ZXAgZHVyaW5nIHRoZSBDREsgc3ludGggcGhhc2UuIEl0IHdpbGwgcGFzc2VkIGFzIHRoZSBgcGFydGlhbEJ1aWxkU3BlY2AgdG8gdGhlIGBDb2RlQnVpbGRTdGVwYC5cbiAgICpcbiAgICogQGRlZmF1bHQgREVGQVVMVF9TWU5USF9TVEVQX1BBUlRJQUxfQlVJTERfU1BFQ1xuICAgKi9cbiAgcmVhZG9ubHkgc3ludGhCdWlsZFNwZWM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAvKipcbiAgICogVGhlIHN0YWdlIGVudmlyb25tZW50IGZvciB0aGUgZGVwbG95bWVudCBzdGFja1xuICAgKi9cbiAgcmVhZG9ubHkgc3RhZ2VFbnY/OiBTdGFnZUVudlByb3BzO1xuICAvKipcbiAgICogRW5hYmxlIG5vdGlmaWNhdGlvbiB0byB0aGUgJ2FsZXJ0cy1idWlsZCcgc2xhY2sgY2hhbm5lbC5cbiAgICogQGRlZmF1bHQgVHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlU2xhY2tOb3RpZmljYXRpb24/OiBib29sZWFuO1xuICAvKipcbiAgICogVGhlIHBpcGVsaW5lIG5vdGlmaWNhdGlvbiBldmVudHMgdGhhdCB3aWxsIHRyaWdnZXIgYSBTbGFjayBjaGFubmVsIG5vdGlmaWNhdGlvbi5cbiAgICogT25seSBhcHBsaWVzIGlmIGBlbmFibGVTbGFja05vdGlmaWNhdGlvbmAgaXMgc2V0IHRvIHRydWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IFtQaXBlbGluZU5vdGlmaWNhdGlvbkV2ZW50cy5QSVBFTElORV9FWEVDVVRJT05fRkFJTEVEXSDigJNcbiAgICogICBPbmx5IGZhaWxlZCBwaXBlbGluZSBleGVjdXRpb25zIHdpbGwgdHJpZ2dlciBhIG5vdGlmaWNhdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IG5vdGlmaWNhdGlvbkV2ZW50cz86IFBpcGVsaW5lTm90aWZpY2F0aW9uRXZlbnRzW107XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcmV1c2UgdGhlIGV4aXN0aW5nIGFydGlmYWN0IGJ1Y2tldCBmb3IgY3Jvc3MtZGVwbG95bWVudCBwaXBlbGluZXMuXG4gICAqIElmIHNldCB0byB0cnVlLCBpdCB3aWxsIGxvb2sgdXAgdGhlIGV4aXN0aW5nIGFydGlmYWN0IGJ1Y2tldCBpbiB0aGUgVE9PTENIQUlOIGFjY291bnQuXG4gICAqXG4gICAqIEBkZWZhdWx0IFRydWVcbiAgICovXG4gIHJlYWRvbmx5IHJldXNlRXhpc3RpbmdBcnRpZmFjdEJ1Y2tldD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhc3NldHMgZnJvbSB0aGUgQ0RLIGFzc2VtYmx5IHByZS1kZXBsb3ltZW50IHRvIHByZXZlbnQgaGl0dGluZyBDb2RlUGlwZWxpbmUncyAyNTYgTUIgYXJ0aWZhY3Qgc2l6ZSBsaW1pdC5cbiAgICogVXNlZnVsIHdoZW4gQ0RLIGFzc2V0cyAoTGFtYmRhIGNvZGUsIERvY2tlciBpbWFnZXMsIGV0Yy4pIGFyZSBsYXJnZS5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvaXNzdWVzLzk5MTdcbiAgICovXG4gIHJlYWRvbmx5IHN0cmlwQXNzZW1ibHlBc3NldHM/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEEgQ0RLIGNvbnN0cnVjdCB0aGF0IGNyZWF0ZXMgYSBkZXBsb3ltZW50IHBpcGVsaW5lIGFjcm9zcyBlbnZpcm9ubWVudHMgZm9yIHRoZSBPcmNhQnVzIHByb2plY3QuXG4gKlxuICogUHJlcmVxdWlzaXRlOiBFbnN1cmUgdGhhdCB0aGUgXCJDcm9zc0RlcGxveW1lbnRBcnRpZmFjdEJ1Y2tldFwiIHN0YWNrIGlzIGRlcGxveWVkIGluIHRoZSBUT09MQ0hBSU4gYWNjb3VudFxuICogYmVmb3JlIHVzaW5nIHRoaXMgY29uc3RydWN0LlxuICovXG5leHBvcnQgY2xhc3MgRGVwbG95bWVudFN0YWNrUGlwZWxpbmUgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogVGhlIGNvZGUgcGlwZWxpbmUgY29uc3RydWN0IHRoYXQgaXMgY3JlYXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IHBpcGVsaW5lOiBQaXBlbGluZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IERlcGxveW1lbnRTdGFja1BpcGVsaW5lUHJvcHMsXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCBjb2RlU3RhckFybiA9IFN0cmluZ1BhcmFtZXRlci52YWx1ZUZvclN0cmluZ1BhcmFtZXRlcihcbiAgICAgIHRoaXMsXG4gICAgICBcIi9vcmNhYnVzL2NvZGVzdGFyX2dpdGh1Yl9hcm5cIixcbiAgICApO1xuICAgIGNvbnN0IGNvZGVTdGFyU291cmNlQWN0aW9uTmFtZSA9IFwicGlwZWxpbmUtc3JjXCI7XG4gICAgY29uc3Qgc291cmNlRmlsZSA9IENvZGVQaXBlbGluZVNvdXJjZS5jb25uZWN0aW9uKFxuICAgICAgYE9yY2FCdXMvJHtwcm9wcy5naXRodWJSZXBvfWAsXG4gICAgICBwcm9wcy5naXRodWJCcmFuY2gsXG4gICAgICB7XG4gICAgICAgIGNvbm5lY3Rpb25Bcm46IGNvZGVTdGFyQXJuLFxuICAgICAgICBhY3Rpb25OYW1lOiBjb2RlU3RhclNvdXJjZUFjdGlvbk5hbWUsXG4gICAgICAgIHRyaWdnZXJPblB1c2g6IHRydWUsXG4gICAgICB9LFxuICAgICk7XG5cbiAgICBjb25zdCBpc1JldXNpbmdFeGlzdGluZ0FydGlmYWN0QnVja2V0ID1cbiAgICAgIHByb3BzLnJldXNlRXhpc3RpbmdBcnRpZmFjdEJ1Y2tldCA/PyB0cnVlO1xuICAgIGNvbnN0IGFydGlmYWN0QnVja2V0ID0gaXNSZXVzaW5nRXhpc3RpbmdBcnRpZmFjdEJ1Y2tldFxuICAgICAgPyBDcm9zc0RlcGxveW1lbnRBcnRpZmFjdEJ1Y2tldC5mcm9tTG9va3VwKHRoaXMpLmFydGlmYWN0QnVja2V0XG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIHRoaXMucGlwZWxpbmUgPSBuZXcgUGlwZWxpbmUodGhpcywgXCJEZXBsb3ltZW50Q29kZVBpcGVsaW5lXCIsIHtcbiAgICAgIGFydGlmYWN0QnVja2V0OiBhcnRpZmFjdEJ1Y2tldCxcbiAgICAgIHBpcGVsaW5lVHlwZTogUGlwZWxpbmVUeXBlLlYyLFxuICAgICAgcGlwZWxpbmVOYW1lOiBwcm9wcy5waXBlbGluZU5hbWUsXG4gICAgICBjcm9zc0FjY291bnRLZXlzOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgaWYgKHByb3BzLmluY2x1ZGVkRmlsZVBhdGhzIHx8IHByb3BzLmV4Y2x1ZGVkRmlsZVBhdGhzKSB7XG4gICAgICBjb25zdCBmaWxlUGF0aHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPiA9IHt9O1xuXG4gICAgICBpZiAocHJvcHMuaW5jbHVkZWRGaWxlUGF0aHMpIHtcbiAgICAgICAgZmlsZVBhdGhzW1wiSW5jbHVkZXNcIl0gPSBwcm9wcy5pbmNsdWRlZEZpbGVQYXRocztcbiAgICAgIH1cbiAgICAgIGlmIChwcm9wcy5leGNsdWRlZEZpbGVQYXRocykge1xuICAgICAgICBmaWxlUGF0aHNbXCJFeGNsdWRlc1wiXSA9IHByb3BzLmV4Y2x1ZGVkRmlsZVBhdGhzO1xuICAgICAgfVxuXG4gICAgICAvLyBBZGQgZXZlbnQgZmlsdGVyIHRvIG9ubHkgdHJpZ2dlciBpZiB0aGUgcHVzaCBldmVudCBpcyBmcm9tIGBkZXBsb3lgIGRpcmVjdG9yeVxuICAgICAgY29uc3QgY2ZuUGlwZWxpbmUgPSB0aGlzLnBpcGVsaW5lLm5vZGUuZGVmYXVsdENoaWxkIGFzIENmblBpcGVsaW5lO1xuICAgICAgY2ZuUGlwZWxpbmUuYWRkUHJvcGVydHlPdmVycmlkZShcIlRyaWdnZXJzXCIsIFtcbiAgICAgICAge1xuICAgICAgICAgIEdpdENvbmZpZ3VyYXRpb246IHtcbiAgICAgICAgICAgIFB1c2g6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIEJyYW5jaGVzOiB7XG4gICAgICAgICAgICAgICAgICBJbmNsdWRlczogW3Byb3BzLmdpdGh1YkJyYW5jaF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBGaWxlUGF0aHM6IGZpbGVQYXRocyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBTb3VyY2VBY3Rpb25OYW1lOiBjb2RlU3RhclNvdXJjZUFjdGlvbk5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBQcm92aWRlclR5cGU6IFwiQ29kZVN0YXJTb3VyY2VDb25uZWN0aW9uXCIsXG4gICAgICAgIH0sXG4gICAgICBdKTtcbiAgICB9XG5cbiAgICBjb25zdCB7IHN5bnRoQnVpbGRTcGVjID0gREVGQVVMVF9TWU5USF9TVEVQX1BBUlRJQUxfQlVJTERfU1BFQyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY2RrUGlwZWxpbmUgPSBuZXcgQ29kZVBpcGVsaW5lKHRoaXMsIFwiQ0RLQ29kZVBpcGVsaW5lXCIsIHtcbiAgICAgIGNvZGVQaXBlbGluZTogdGhpcy5waXBlbGluZSxcbiAgICAgIHN5bnRoOiBuZXcgQ29kZUJ1aWxkU3RlcChcIkNka1N5bnRoXCIsIHtcbiAgICAgICAgaW5zdGFsbENvbW1hbmRzOiBbXG4gICAgICAgICAgXCJub2RlIC12XCIsXG4gICAgICAgICAgXCJucG0gaW5zdGFsbCAtLWdsb2JhbCBjb3JlcGFja0BsYXRlc3RcIixcbiAgICAgICAgICBcImNvcmVwYWNrIC0tdmVyc2lvblwiLFxuICAgICAgICAgIFwiY29yZXBhY2sgZW5hYmxlXCIsXG4gICAgICAgIF0sXG4gICAgICAgIGNvbW1hbmRzOiBwcm9wcy5jZGtTeW50aENtZCxcbiAgICAgICAgaW5wdXQ6IHNvdXJjZUZpbGUsXG4gICAgICAgIHByaW1hcnlPdXRwdXREaXJlY3Rvcnk6IHByb3BzLmNka091dCB8fCBcImNkay5vdXRcIixcbiAgICAgICAgcGFydGlhbEJ1aWxkU3BlYzogQnVpbGRTcGVjLmZyb21PYmplY3Qoc3ludGhCdWlsZFNwZWMpLFxuICAgICAgfSksXG4gICAgICBzZWxmTXV0YXRpb246IHRydWUsXG4gICAgICBjb2RlQnVpbGREZWZhdWx0czoge1xuICAgICAgICBidWlsZEVudmlyb25tZW50OiB7XG4gICAgICAgICAgY29tcHV0ZVR5cGU6IENvbXB1dGVUeXBlLkxBUkdFLFxuICAgICAgICAgIGJ1aWxkSW1hZ2U6IExpbnV4QXJtQnVpbGRJbWFnZS5BTUFaT05fTElOVVhfMl9TVEFOREFSRF8zXzAsXG4gICAgICAgICAgZW52aXJvbm1lbnRWYXJpYWJsZXM6IHtcbiAgICAgICAgICAgIE5PREVfT1BUSU9OUzoge1xuICAgICAgICAgICAgICB2YWx1ZTogXCItLW1heC1vbGQtc3BhY2Utc2l6ZT04MTkyXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgY29uc3QgZGVmYXVsdFN0YWdlRW52OiBTdGFnZUVudlByb3BzID0ge1xuICAgICAgYmV0YTogQkVUQV9FTlZJUk9OTUVOVCxcbiAgICAgIGdhbW1hOiBHQU1NQV9FTlZJUk9OTUVOVCxcbiAgICAgIHByb2Q6IFBST0RfRU5WSVJPTk1FTlQsXG4gICAgfTtcbiAgICBjb25zdCBzdGFnZUVudiA9IHByb3BzLnN0YWdlRW52IHx8IGRlZmF1bHRTdGFnZUVudjtcblxuICAgIC8vIEFmdGVyIGFzc2V0cyBhcmUgcHVibGlzaGVkLCB0aGV5IGNhbiBiZSByZW1vdmVkIGZyb20gdGhlIGFzc2VtYmx5IGRpcmVjdG9yeVxuICAgIC8vIHRvIGhlbHAgcHJldmVudCBoaXR0aW5nIHRoZSBDb2RlUGlwZWxpbmUgYXJ0aWZhY3QgbGltaXQuXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2lzc3Vlcy85OTE3XG4gICAgbGV0IHN0cmlwQXNzZXRzRnJvbUFzc2VtYmx5OiBDb2RlQnVpbGRTdGVwIHwgdW5kZWZpbmVkO1xuICAgIGlmIChwcm9wcy5zdHJpcEFzc2VtYmx5QXNzZXRzKSB7XG4gICAgICBzdHJpcEFzc2V0c0Zyb21Bc3NlbWJseSA9IG5ldyBDb2RlQnVpbGRTdGVwKFwiU3RyaXBBc3NldHNGcm9tQXNzZW1ibHlcIiwge1xuICAgICAgICBpbnB1dDogY2RrUGlwZWxpbmUuY2xvdWRBc3NlbWJseUZpbGVTZXQsXG4gICAgICAgIGNvbW1hbmRzOiBbXG4gICAgICAgICAgJ1MzX1BBVEg9JHtDT0RFQlVJTERfU09VUkNFX1ZFUlNJT04jXCJhcm46YXdzOnMzOjo6XCJ9JyxcbiAgICAgICAgICBcIlpJUF9BUkNISVZFPSQoYmFzZW5hbWUgJFMzX1BBVEgpXCIsXG4gICAgICAgICAgXCJlY2hvICRTM19QQVRIXCIsXG4gICAgICAgICAgXCJlY2hvICRaSVBfQVJDSElWRVwiLFxuICAgICAgICAgIFwibHNcIixcbiAgICAgICAgICBcInJtIC1yZnYgYXNzZXQuKlwiLFxuICAgICAgICAgIFwiemlwIC1yIC1xIC1BICRaSVBfQVJDSElWRSAqXCIsXG4gICAgICAgICAgXCJsc1wiLFxuICAgICAgICAgIFwiYXdzIHMzIGNwICRaSVBfQVJDSElWRSBzMzovLyRTM19QQVRIXCIsXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgY2RrUGlwZWxpbmUuYWRkV2F2ZShcIkJlZm9yZVN0YWdlRGVwbG95bWVudFwiLCB7XG4gICAgICAgIHByZTogW3N0cmlwQXNzZXRzRnJvbUFzc2VtYmx5XSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNka1BpcGVsaW5lLmFkZFN0YWdlKFxuICAgICAgbmV3IERlcGxveW1lbnRTdGFnZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgXCJPcmNhQnVzQmV0YVwiLFxuICAgICAgICBzdGFnZUVudi5iZXRhLFxuICAgICAgICBwcm9wcy5zdGFja05hbWUsXG4gICAgICAgIHByb3BzLnN0YWNrLFxuICAgICAgICBwcm9wcy5zdGFja0NvbmZpZy5iZXRhLFxuICAgICAgICBwcm9wcy5naXRodWJSZXBvLFxuICAgICAgICBwcm9wcy5naXRodWJCcmFuY2gsXG4gICAgICApLFxuICAgICk7XG5cbiAgICBjZGtQaXBlbGluZS5hZGRTdGFnZShcbiAgICAgIG5ldyBEZXBsb3ltZW50U3RhZ2UoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIFwiT3JjYUJ1c0dhbW1hXCIsXG4gICAgICAgIHN0YWdlRW52LmdhbW1hLFxuICAgICAgICBwcm9wcy5zdGFja05hbWUsXG4gICAgICAgIHByb3BzLnN0YWNrLFxuICAgICAgICBwcm9wcy5zdGFja0NvbmZpZy5nYW1tYSxcbiAgICAgICAgcHJvcHMuZ2l0aHViUmVwbyxcbiAgICAgICAgcHJvcHMuZ2l0aHViQnJhbmNoLFxuICAgICAgKSxcbiAgICAgIHtcbiAgICAgICAgcG9zdDogW1xuICAgICAgICAgIG5ldyBNYW51YWxBcHByb3ZhbEFjdGlvblN0ZXAoXCJQcm9tb3RlVG9Qcm9kXCIsIHtcbiAgICAgICAgICAgIGFjdGlvbk5hbWU6IFwiUHJvbW90ZVRvUHJvZFwiLFxuICAgICAgICAgICAgLy8gQ3VzdG9tIHN0ZXBzIGJ5cGFzcyBzdGFnZSBwcmUvcG9zdCBvcmRlcmluZywgc28gcnVuT3JkZXIgbXVzdCBiZSBleHBsaWNpdGx5IHNldC5cbiAgICAgICAgICAgIC8vIFNldCB0byA1IHRvIGVuc3VyZSB0aGlzIHJ1bnMgYWZ0ZXIgYWxsIE9yY2FCdXNHYW1tYSBzdGFnZSBzdGVwcyBjb21wbGV0ZS5cbiAgICAgICAgICAgIC8vIChHYW1tYSBkZXBsb3ltZW50IHR5cGljYWxseSB1c2VzIDIgc3RlcHMsIHNvIDUgcHJvdmlkZXMgYWRlcXVhdGUgYnVmZmVyKVxuICAgICAgICAgICAgcnVuT3JkZXI6IDUsXG4gICAgICAgICAgICAvLyA2MC1taW51dGUgdGltZW91dCBhbGxvd3MgcXVldWVkIHBpcGVsaW5lIGV4ZWN1dGlvbnMgdG8gcHJvY2VlZCBpZiBhcHByb3ZhbCBleHBpcmVzXG4gICAgICAgICAgICB0aW1lb3V0OiBEdXJhdGlvbi5taW51dGVzKDYwKSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIGNka1BpcGVsaW5lLmFkZFN0YWdlKFxuICAgICAgbmV3IERlcGxveW1lbnRTdGFnZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgXCJPcmNhQnVzUHJvZFwiLFxuICAgICAgICBzdGFnZUVudi5wcm9kLFxuICAgICAgICBwcm9wcy5zdGFja05hbWUsXG4gICAgICAgIHByb3BzLnN0YWNrLFxuICAgICAgICBwcm9wcy5zdGFja0NvbmZpZy5wcm9kLFxuICAgICAgICBwcm9wcy5naXRodWJSZXBvLFxuICAgICAgICBwcm9wcy5naXRodWJCcmFuY2gsXG4gICAgICApLFxuICAgICk7XG5cbiAgICBjZGtQaXBlbGluZS5idWlsZFBpcGVsaW5lKCk7XG5cbiAgICBpZiAoc3RyaXBBc3NldHNGcm9tQXNzZW1ibHkpIHtcbiAgICAgIGNka1BpcGVsaW5lLnBpcGVsaW5lLmFydGlmYWN0QnVja2V0LmdyYW50UmVhZFdyaXRlKFxuICAgICAgICBzdHJpcEFzc2V0c0Zyb21Bc3NlbWJseS5wcm9qZWN0LFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMuZW5hYmxlU2xhY2tOb3RpZmljYXRpb24gPz8gdHJ1ZSkge1xuICAgICAgY29uc3QgYWxlcnRzQnVpbGRTbGFja0NvbmZpZ0FybiA9IFN0cmluZ1BhcmFtZXRlci52YWx1ZUZvclN0cmluZ1BhcmFtZXRlcihcbiAgICAgICAgdGhpcyxcbiAgICAgICAgXCIvY2hhdGJvdF9hcm4vc2xhY2svYWxlcnRzLWJ1aWxkXCIsXG4gICAgICApO1xuICAgICAgY29uc3QgdGFyZ2V0ID0gU2xhY2tDaGFubmVsQ29uZmlndXJhdGlvbi5mcm9tU2xhY2tDaGFubmVsQ29uZmlndXJhdGlvbkFybihcbiAgICAgICAgdGhpcyxcbiAgICAgICAgXCJTbGFja0NoYW5uZWxDb25maWd1cmF0aW9uXCIsXG4gICAgICAgIGFsZXJ0c0J1aWxkU2xhY2tDb25maWdBcm4sXG4gICAgICApO1xuXG4gICAgICB0aGlzLnBpcGVsaW5lLm5vdGlmeU9uKFwiUGlwZWxpbmVTbGFja05vdGlmaWNhdGlvblwiLCB0YXJnZXQsIHtcbiAgICAgICAgZXZlbnRzOiBwcm9wcy5ub3RpZmljYXRpb25FdmVudHMgfHwgW1xuICAgICAgICAgIFBpcGVsaW5lTm90aWZpY2F0aW9uRXZlbnRzLlBJUEVMSU5FX0VYRUNVVElPTl9GQUlMRUQsXG4gICAgICAgIF0sXG4gICAgICAgIGRldGFpbFR5cGU6IERldGFpbFR5cGUuRlVMTCxcbiAgICAgICAgbm90aWZpY2F0aW9uUnVsZU5hbWU6IGBPcmNhQnVzLSR7cHJvcHMucGlwZWxpbmVOYW1lfWAsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBNYW51YWxBcHByb3ZhbEFjdGlvblN0ZXAgd2l0aCByZXF1aXJlZCBydW5PcmRlci5cbiAqL1xuaW50ZXJmYWNlIE1hbnVhbEFwcHJvdmFsQWN0aW9uU3RlcFByb3BzIGV4dGVuZHMgTWFudWFsQXBwcm92YWxBY3Rpb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgcnVuIG9yZGVyIGZvciB0aGlzIGFjdGlvbiBpbiB0aGUgcGlwZWxpbmUgc3RhZ2UuIFRoZSBzdGFnZSBQcmUvUG9zdCBvcmRlciBkb2VzIG5vdCBhcHBseSB0byB0aGlzIGN1c3RvbVxuICAgKiBzdGVwL2FjdGlvbiwgeW91IG5lZWQgdG8gZXhwbGljaXRseSBzZXQgdGhlIHJ1bk9yZGVyLlxuICAgKi9cbiAgcnVuT3JkZXI6IG51bWJlcjtcbn1cbi8qKlxuICogQ3VzdG9tIG1hbnVhbCBhcHByb3ZhbCBzdGVwIGZvciBDREsgQ29kZVBpcGVsaW5lLlxuICpcbiAqIFRoaXMgY2xhc3MgYnJpZGdlcyB0aGUgZ2FwIHRvIGVuYWJsZSB1c2luZyBNYW51YWxBcHByb3ZhbEFjdGlvbiB3aXRoaW4gYSBTdGVwIGNsYXNzLFxuICogbWFraW5nIGl0IGNvbXBhdGlibGUgd2l0aCBjZGsucGlwZWxpbmVzIGNvbnN0cnVjdHMuXG4gKlxuICogQHBhcmFtIGlkIC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgc3RlcC5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHByb3BlcnRpZXMgZm9yIHRoZSBtYW51YWwgYXBwcm92YWwgYWN0aW9uLCBpbmNsdWRpbmdcbiAqL1xuY2xhc3MgTWFudWFsQXBwcm92YWxBY3Rpb25TdGVwXG4gIGV4dGVuZHMgU3RlcFxuICBpbXBsZW1lbnRzIElDb2RlUGlwZWxpbmVBY3Rpb25GYWN0b3J5XG57XG4gIHByaXZhdGUgcmVhZG9ubHkgbWFudWFsQXBwcm92YWxBY3Rpb25Qcm9wczogTWFudWFsQXBwcm92YWxBY3Rpb25TdGVwUHJvcHM7XG4gIGNvbnN0cnVjdG9yKGlkOiBzdHJpbmcsIG9wdGlvbnM6IE1hbnVhbEFwcHJvdmFsQWN0aW9uU3RlcFByb3BzKSB7XG4gICAgc3VwZXIoaWQpO1xuICAgIHRoaXMubWFudWFsQXBwcm92YWxBY3Rpb25Qcm9wcyA9IG9wdGlvbnM7XG4gIH1cblxuICBwdWJsaWMgcHJvZHVjZUFjdGlvbihcbiAgICBzdGFnZTogSVN0YWdlLFxuICAgIG9wdGlvbnM6IFByb2R1Y2VBY3Rpb25PcHRpb25zLFxuICApOiBDb2RlUGlwZWxpbmVBY3Rpb25GYWN0b3J5UmVzdWx0IHtcbiAgICBzdGFnZS5hZGRBY3Rpb24obmV3IE1hbnVhbEFwcHJvdmFsQWN0aW9uKHRoaXMubWFudWFsQXBwcm92YWxBY3Rpb25Qcm9wcykpO1xuXG4gICAgcmV0dXJuIHsgcnVuT3JkZXJzQ29uc3VtZWQ6IDEgfTtcbiAgfVxufVxuXG5jbGFzcyBEZXBsb3ltZW50U3RhZ2UgZXh0ZW5kcyBTdGFnZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgZW52aXJvbm1lbnROYW1lOiBzdHJpbmcsXG4gICAgZW52OiBFbnZpcm9ubWVudCxcbiAgICBzdGFja05hbWU6IHN0cmluZyxcbiAgICBzdGFja0NsYXNzOiBuZXcgKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBhbnkpID0+IFN0YWNrLFxuICAgIGFwcFN0YWNrUHJvcHM6IGFueSxcbiAgICBnaXRodWJSZXBvOiBzdHJpbmcsXG4gICAgZ2l0aHViQnJhbmNoPzogc3RyaW5nLFxuICApIHtcbiAgICBzdXBlcihzY29wZSwgZW52aXJvbm1lbnROYW1lLCB7IGVudjogZW52IH0pO1xuXG4gICAgbGV0IHNvdXJjZSA9IGBodHRwczovL2dpdGh1Yi5jb20vT3JjYUJ1cy8ke2dpdGh1YlJlcG99YDtcbiAgICBpZiAoZ2l0aHViQnJhbmNoICE9PSB1bmRlZmluZWQgJiYgZ2l0aHViQnJhbmNoICE9PSBcIm1haW5cIikge1xuICAgICAgc291cmNlID0gYCR7c291cmNlfS90cmVlLyR7Z2l0aHViQnJhbmNofWA7XG4gICAgfVxuXG4gICAgbmV3IHN0YWNrQ2xhc3ModGhpcywgc3RhY2tOYW1lLCB7XG4gICAgICBlbnY6IGVudixcbiAgICAgIHRhZ3M6IHtcbiAgICAgICAgXCJ1bWNjci1vcmc6UHJvZHVjdFwiOiBcIk9yY2FCdXNcIixcbiAgICAgICAgXCJ1bWNjci1vcmc6Q3JlYXRvclwiOiBcIkNES1wiLFxuICAgICAgICBcInVtY2NyLW9yZzpTZXJ2aWNlXCI6IHN0YWNrTmFtZSxcbiAgICAgICAgXCJ1bWNjci1vcmc6U291cmNlXCI6IHNvdXJjZSxcbiAgICAgIH0sXG4gICAgICAuLi5hcHBTdGFja1Byb3BzLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
package/dynamodb/index.js CHANGED
@@ -40,7 +40,7 @@ const dynamodb = __importStar(require("aws-cdk-lib/aws-dynamodb"));
40
40
  const aws_cdk_lib_1 = require("aws-cdk-lib");
41
41
  const config_1 = require("./config");
42
42
  class DynamoDbPartitionedConstruct extends constructs_1.Construct {
43
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.dynamodb.DynamoDbPartitionedConstruct", version: "0.0.56" };
43
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.dynamodb.DynamoDbPartitionedConstruct", version: "0.0.57" };
44
44
  table;
45
45
  constructor(scope, id, props) {
46
46
  super(scope, id);
@@ -75,7 +75,7 @@ class DynamoDbPartitionedConstruct extends constructs_1.Construct {
75
75
  }
76
76
  exports.DynamoDbPartitionedConstruct = DynamoDbPartitionedConstruct;
77
77
  class DynamoDbNonPartitionedConstruct extends constructs_1.Construct {
78
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.dynamodb.DynamoDbNonPartitionedConstruct", version: "0.0.56" };
78
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.dynamodb.DynamoDbNonPartitionedConstruct", version: "0.0.57" };
79
79
  table;
80
80
  constructor(scope, id, props) {
81
81
  super(scope, id);
package/ecs/index.js CHANGED
@@ -55,7 +55,7 @@ exports.LAMBDA_ARCHITECTURE_MAP = {
55
55
  ['ARM64']: lambda.Architecture.ARM_64
56
56
  };
57
57
  class EcsFargateTaskConstruct extends constructs_1.Construct {
58
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.ecs.EcsFargateTaskConstruct", version: "0.0.56" };
58
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.ecs.EcsFargateTaskConstruct", version: "0.0.57" };
59
59
  cluster;
60
60
  taskDefinition;
61
61
  taskExecutionRole;
package/lambda/index.js CHANGED
@@ -56,7 +56,7 @@ function getPythonUvDockerImage() {
56
56
  return aws_cdk_lib_1.DockerImage.fromBuild(path_1.default.join(__dirname, 'build_python'));
57
57
  }
58
58
  class PythonUvFunction extends aws_lambda_python_alpha_1.PythonFunction {
59
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.lambda.PythonUvFunction", version: "0.0.56" };
59
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.lambda.PythonUvFunction", version: "0.0.57" };
60
60
  // Class constructs, to be used for caching the layers
61
61
  // This means that if there are multiple lambdas throughout the stack
62
62
  // They will all use the same layer
@@ -15,7 +15,7 @@ repository = "https://github.com/orcabus/platform-cdk-constructs"
15
15
 
16
16
  [tool.poetry.dependencies]
17
17
  python = ">3.12,<3.13"
18
- wrapica = "2.37.0.dev20250801071834"
18
+ wrapica = "2.37.0"
19
19
 
20
20
  [tool.poetry.group.dev]
21
21
  optional = true
@@ -29,7 +29,7 @@ mypy-boto3-secretsmanager = ">=1.34.0, <2"
29
29
  name = "PyPI"
30
30
  priority = "primary"
31
31
 
32
- [[tool.poetry.source]]
33
- name = "testpypi"
34
- url = "https://test.pypi.org/simple/"
35
- priority = "supplemental"
32
+ #[[tool.poetry.source]]
33
+ #name = "testpypi"
34
+ #url = "https://test.pypi.org/simple/"
35
+ #priority = "supplemental"
@@ -70,6 +70,8 @@ from .query_helpers import get_icav2_wes_analysis_by_name
70
70
  from .update_helpers import update_icav2_wes_analysis_status
71
71
 
72
72
  __all__ = [
73
+ # Models
74
+ 'WESPostRequest',
73
75
  # Launch helpers
74
76
  'create_icav2_wes_analysis',
75
77
  # Query helpers
@@ -13,7 +13,7 @@ const aws_cloudwatch_actions_1 = require("aws-cdk-lib/aws-cloudwatch-actions");
13
13
  * SNS topic.
14
14
  */
15
15
  class MonitoredQueue extends constructs_1.Construct {
16
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.monitoredQueue.MonitoredQueue", version: "0.0.56" };
16
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.monitoredQueue.MonitoredQueue", version: "0.0.57" };
17
17
  queue;
18
18
  deadLetterQueue;
19
19
  alarm;
@@ -7,7 +7,7 @@ const aws_iam_1 = require("aws-cdk-lib/aws-iam");
7
7
  * A construct which represents a named role that a Lambda function can assume.
8
8
  */
9
9
  class NamedLambdaRole extends aws_iam_1.Role {
10
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.namedLambdaRole.NamedLambdaRole", version: "0.0.56" };
10
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.namedLambdaRole.NamedLambdaRole", version: "0.0.57" };
11
11
  constructor(scope, id, props) {
12
12
  super(scope, id, {
13
13
  assumedBy: new aws_iam_1.ServicePrincipal("lambda.amazonaws.com"),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orcabus/platform-cdk-constructs",
3
- "version": "0.0.56",
3
+ "version": "0.0.57",
4
4
  "description": "CDK Package for OrcaBus infrastructure.",
5
5
  "main": "index.ts",
6
6
  "types": "index.d.ts",
@@ -15,7 +15,7 @@ const aws_cdk_lib_1 = require("aws-cdk-lib");
15
15
  * to the provider framework.
16
16
  */
17
17
  class ProviderFunction extends constructs_1.Construct {
18
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.provider.ProviderFunction", version: "0.0.56" };
18
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.provider.ProviderFunction", version: "0.0.57" };
19
19
  _function;
20
20
  _response;
21
21
  constructor(scope, id, props) {
@@ -23,7 +23,7 @@ exports.VPC_LOOKUP_PROPS = {
23
23
  * Helper for looking up the shared OrcaBus VPC.
24
24
  */
25
25
  class OrcaBusVpc {
26
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.sharedConfig.networking.OrcaBusVpc", version: "0.0.56" };
26
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.sharedConfig.networking.OrcaBusVpc", version: "0.0.57" };
27
27
  /**
28
28
  * The shared VPC that is used by OrcaBus.
29
29
  * @param scope
@@ -42,7 +42,7 @@ exports.SHARED_SECURITY_GROUP_NAME = "OrcaBusSharedComputeSecurityGroup";
42
42
  * Helper for looking up the shared compute security group by name.
43
43
  */
44
44
  class OrcaBusSharedComputeSecurityGroup {
45
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.sharedConfig.networking.OrcaBusSharedComputeSecurityGroup", version: "0.0.56" };
45
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.sharedConfig.networking.OrcaBusSharedComputeSecurityGroup", version: "0.0.57" };
46
46
  /**
47
47
  * The shared security group that is used by compute resources to access the database.
48
48
  * @param scope
@@ -11,7 +11,7 @@ exports.SLACK_ALERTS_SNS_TOPIC = "AwsChatBotTopic-alerts";
11
11
  * A helper class to construct the arn for the slack SNS topic.
12
12
  */
13
13
  class SlackAlerts {
14
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.sharedConfig.slack.SlackAlerts", version: "0.0.56" };
14
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.sharedConfig.slack.SlackAlerts", version: "0.0.57" };
15
15
  /**
16
16
  * Format the ARN for the slack alerts SNS topic for the current stack.
17
17
  * @param stack