@orcabus/platform-cdk-constructs 0.0.32 → 0.0.34

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
@@ -4178,7 +4178,7 @@
4178
4178
  "kind": "interface",
4179
4179
  "locationInModule": {
4180
4180
  "filename": "api-gateway/api-gateway.ts",
4181
- "line": 29
4181
+ "line": 28
4182
4182
  },
4183
4183
  "name": "ApiGwLogsConfig",
4184
4184
  "namespace": "apigateway",
@@ -4192,7 +4192,7 @@
4192
4192
  "immutable": true,
4193
4193
  "locationInModule": {
4194
4194
  "filename": "api-gateway/api-gateway.ts",
4195
- "line": 37
4195
+ "line": 36
4196
4196
  },
4197
4197
  "name": "removalPolicy",
4198
4198
  "type": {
@@ -4208,7 +4208,7 @@
4208
4208
  "immutable": true,
4209
4209
  "locationInModule": {
4210
4210
  "filename": "api-gateway/api-gateway.ts",
4211
- "line": 33
4211
+ "line": 32
4212
4212
  },
4213
4213
  "name": "retention",
4214
4214
  "type": {
@@ -4281,7 +4281,7 @@
4281
4281
  },
4282
4282
  "locationInModule": {
4283
4283
  "filename": "api-gateway/api-gateway.ts",
4284
- "line": 95
4284
+ "line": 94
4285
4285
  },
4286
4286
  "parameters": [
4287
4287
  {
@@ -4307,7 +4307,7 @@
4307
4307
  "kind": "class",
4308
4308
  "locationInModule": {
4309
4309
  "filename": "api-gateway/api-gateway.ts",
4310
- "line": 73
4310
+ "line": 72
4311
4311
  },
4312
4312
  "name": "OrcaBusApiGateway",
4313
4313
  "namespace": "apigateway",
@@ -4321,7 +4321,7 @@
4321
4321
  "immutable": true,
4322
4322
  "locationInModule": {
4323
4323
  "filename": "api-gateway/api-gateway.ts",
4324
- "line": 93
4324
+ "line": 92
4325
4325
  },
4326
4326
  "name": "authStackHttpLambdaAuthorizer",
4327
4327
  "type": {
@@ -4336,7 +4336,7 @@
4336
4336
  "immutable": true,
4337
4337
  "locationInModule": {
4338
4338
  "filename": "api-gateway/api-gateway.ts",
4339
- "line": 85
4339
+ "line": 84
4340
4340
  },
4341
4341
  "name": "domainName",
4342
4342
  "type": {
@@ -4351,7 +4351,7 @@
4351
4351
  "immutable": true,
4352
4352
  "locationInModule": {
4353
4353
  "filename": "api-gateway/api-gateway.ts",
4354
- "line": 81
4354
+ "line": 80
4355
4355
  },
4356
4356
  "name": "httpApi",
4357
4357
  "type": {
@@ -4366,7 +4366,7 @@
4366
4366
  "immutable": true,
4367
4367
  "locationInModule": {
4368
4368
  "filename": "api-gateway/api-gateway.ts",
4369
- "line": 77
4369
+ "line": 76
4370
4370
  },
4371
4371
  "name": "region",
4372
4372
  "type": {
@@ -4386,7 +4386,7 @@
4386
4386
  "kind": "interface",
4387
4387
  "locationInModule": {
4388
4388
  "filename": "api-gateway/api-gateway.ts",
4389
- "line": 40
4389
+ "line": 39
4390
4390
  },
4391
4391
  "name": "OrcaBusApiGatewayProps",
4392
4392
  "namespace": "apigateway",
@@ -4400,7 +4400,7 @@
4400
4400
  "immutable": true,
4401
4401
  "locationInModule": {
4402
4402
  "filename": "api-gateway/api-gateway.ts",
4403
- "line": 66
4403
+ "line": 65
4404
4404
  },
4405
4405
  "name": "apiGwLogsConfig",
4406
4406
  "type": {
@@ -4416,7 +4416,7 @@
4416
4416
  "immutable": true,
4417
4417
  "locationInModule": {
4418
4418
  "filename": "api-gateway/api-gateway.ts",
4419
- "line": 44
4419
+ "line": 43
4420
4420
  },
4421
4421
  "name": "apiName",
4422
4422
  "type": {
@@ -4426,15 +4426,16 @@
4426
4426
  {
4427
4427
  "abstract": true,
4428
4428
  "docs": {
4429
+ "remarks": "API Gateway uses these client IDs to validate JWT tokens. Each parameter\nshould contain a valid Cognito application client ID that is authorized\nto access this API.",
4429
4430
  "stability": "experimental",
4430
- "summary": "Allowed CORS origins."
4431
+ "summary": "Array of SSM parameter names containing Cognito client IDs."
4431
4432
  },
4432
4433
  "immutable": true,
4433
4434
  "locationInModule": {
4434
4435
  "filename": "api-gateway/api-gateway.ts",
4435
- "line": 70
4436
+ "line": 61
4436
4437
  },
4437
- "name": "corsAllowOrigins",
4438
+ "name": "cognitoClientIdParameterNameArray",
4438
4439
  "type": {
4439
4440
  "collection": {
4440
4441
  "elementtype": {
@@ -4448,40 +4449,37 @@
4448
4449
  "abstract": true,
4449
4450
  "docs": {
4450
4451
  "stability": "experimental",
4451
- "summary": "The prefix for the custom domain name."
4452
+ "summary": "Allowed CORS origins."
4452
4453
  },
4453
4454
  "immutable": true,
4454
4455
  "locationInModule": {
4455
4456
  "filename": "api-gateway/api-gateway.ts",
4456
- "line": 48
4457
+ "line": 69
4457
4458
  },
4458
- "name": "customDomainNamePrefix",
4459
+ "name": "corsAllowOrigins",
4459
4460
  "type": {
4460
- "primitive": "string"
4461
+ "collection": {
4462
+ "elementtype": {
4463
+ "primitive": "string"
4464
+ },
4465
+ "kind": "array"
4466
+ }
4461
4467
  }
4462
4468
  },
4463
4469
  {
4464
4470
  "abstract": true,
4465
4471
  "docs": {
4466
- "default": "DEFAULT_COGNITO_CLIENT_ID_PARAMETER_NAME_ARRAY",
4467
- "remarks": "In order API Gateway to validate the JWT token, it needs to know the client id which usually\nstored in SSM Parameter. This will accept multiple parameter name in an array.",
4468
4472
  "stability": "experimental",
4469
- "summary": "The parameter name for the cognito client id in array."
4473
+ "summary": "The prefix for the custom domain name."
4470
4474
  },
4471
4475
  "immutable": true,
4472
4476
  "locationInModule": {
4473
4477
  "filename": "api-gateway/api-gateway.ts",
4474
- "line": 62
4478
+ "line": 47
4475
4479
  },
4476
- "name": "cognitoClientIdParameterNameArray",
4477
- "optional": true,
4480
+ "name": "customDomainNamePrefix",
4478
4481
  "type": {
4479
- "collection": {
4480
- "elementtype": {
4481
- "primitive": "string"
4482
- },
4483
- "kind": "array"
4484
- }
4482
+ "primitive": "string"
4485
4483
  }
4486
4484
  },
4487
4485
  {
@@ -4494,7 +4492,7 @@
4494
4492
  "immutable": true,
4495
4493
  "locationInModule": {
4496
4494
  "filename": "api-gateway/api-gateway.ts",
4497
- "line": 54
4495
+ "line": 53
4498
4496
  },
4499
4497
  "name": "cognitoUserPoolIdParameterName",
4500
4498
  "optional": true,
@@ -4627,7 +4625,7 @@
4627
4625
  },
4628
4626
  "locationInModule": {
4629
4627
  "filename": "deployment-stack-pipeline/pipeline.ts",
4630
- "line": 171
4628
+ "line": 180
4631
4629
  },
4632
4630
  "parameters": [
4633
4631
  {
@@ -4653,7 +4651,7 @@
4653
4651
  "kind": "class",
4654
4652
  "locationInModule": {
4655
4653
  "filename": "deployment-stack-pipeline/pipeline.ts",
4656
- "line": 165
4654
+ "line": 174
4657
4655
  },
4658
4656
  "name": "DeploymentStackPipeline",
4659
4657
  "namespace": "deploymentPipeline",
@@ -4666,7 +4664,7 @@
4666
4664
  "immutable": true,
4667
4665
  "locationInModule": {
4668
4666
  "filename": "deployment-stack-pipeline/pipeline.ts",
4669
- "line": 169
4667
+ "line": 178
4670
4668
  },
4671
4669
  "name": "pipeline",
4672
4670
  "type": {
@@ -4686,7 +4684,7 @@
4686
4684
  "kind": "interface",
4687
4685
  "locationInModule": {
4688
4686
  "filename": "deployment-stack-pipeline/pipeline.ts",
4689
- "line": 73
4687
+ "line": 82
4690
4688
  },
4691
4689
  "name": "DeploymentStackPipelineProps",
4692
4690
  "namespace": "deploymentPipeline",
@@ -4701,7 +4699,7 @@
4701
4699
  "immutable": true,
4702
4700
  "locationInModule": {
4703
4701
  "filename": "deployment-stack-pipeline/pipeline.ts",
4704
- "line": 119
4702
+ "line": 128
4705
4703
  },
4706
4704
  "name": "cdkSynthCmd",
4707
4705
  "type": {
@@ -4726,7 +4724,7 @@
4726
4724
  "immutable": true,
4727
4725
  "locationInModule": {
4728
4726
  "filename": "deployment-stack-pipeline/pipeline.ts",
4729
- "line": 80
4727
+ "line": 89
4730
4728
  },
4731
4729
  "name": "githubBranch",
4732
4730
  "type": {
@@ -4743,7 +4741,7 @@
4743
4741
  "immutable": true,
4744
4742
  "locationInModule": {
4745
4743
  "filename": "deployment-stack-pipeline/pipeline.ts",
4746
- "line": 84
4744
+ "line": 93
4747
4745
  },
4748
4746
  "name": "githubRepo",
4749
4747
  "type": {
@@ -4759,7 +4757,7 @@
4759
4757
  "immutable": true,
4760
4758
  "locationInModule": {
4761
4759
  "filename": "deployment-stack-pipeline/pipeline.ts",
4762
- "line": 101
4760
+ "line": 110
4763
4761
  },
4764
4762
  "name": "pipelineName",
4765
4763
  "type": {
@@ -4775,7 +4773,7 @@
4775
4773
  "immutable": true,
4776
4774
  "locationInModule": {
4777
4775
  "filename": "deployment-stack-pipeline/pipeline.ts",
4778
- "line": 88
4776
+ "line": 97
4779
4777
  },
4780
4778
  "name": "stack",
4781
4779
  "type": {
@@ -4791,7 +4789,7 @@
4791
4789
  "immutable": true,
4792
4790
  "locationInModule": {
4793
4791
  "filename": "deployment-stack-pipeline/pipeline.ts",
4794
- "line": 97
4792
+ "line": 106
4795
4793
  },
4796
4794
  "name": "stackConfig",
4797
4795
  "type": {
@@ -4808,7 +4806,7 @@
4808
4806
  "immutable": true,
4809
4807
  "locationInModule": {
4810
4808
  "filename": "deployment-stack-pipeline/pipeline.ts",
4811
- "line": 93
4809
+ "line": 102
4812
4810
  },
4813
4811
  "name": "stackName",
4814
4812
  "type": {
@@ -4825,7 +4823,7 @@
4825
4823
  "immutable": true,
4826
4824
  "locationInModule": {
4827
4825
  "filename": "deployment-stack-pipeline/pipeline.ts",
4828
- "line": 125
4826
+ "line": 134
4829
4827
  },
4830
4828
  "name": "cdkOut",
4831
4829
  "optional": true,
@@ -4843,7 +4841,7 @@
4843
4841
  "immutable": true,
4844
4842
  "locationInModule": {
4845
4843
  "filename": "deployment-stack-pipeline/pipeline.ts",
4846
- "line": 140
4844
+ "line": 149
4847
4845
  },
4848
4846
  "name": "enableSlackNotification",
4849
4847
  "optional": true,
@@ -4861,7 +4859,7 @@
4861
4859
  "immutable": true,
4862
4860
  "locationInModule": {
4863
4861
  "filename": "deployment-stack-pipeline/pipeline.ts",
4864
- "line": 115
4862
+ "line": 124
4865
4863
  },
4866
4864
  "name": "excludedFilePaths",
4867
4865
  "optional": true,
@@ -4884,7 +4882,7 @@
4884
4882
  "immutable": true,
4885
4883
  "locationInModule": {
4886
4884
  "filename": "deployment-stack-pipeline/pipeline.ts",
4887
- "line": 108
4885
+ "line": 117
4888
4886
  },
4889
4887
  "name": "includedFilePaths",
4890
4888
  "optional": true,
@@ -4908,7 +4906,7 @@
4908
4906
  "immutable": true,
4909
4907
  "locationInModule": {
4910
4908
  "filename": "deployment-stack-pipeline/pipeline.ts",
4911
- "line": 148
4909
+ "line": 157
4912
4910
  },
4913
4911
  "name": "notificationEvents",
4914
4912
  "optional": true,
@@ -4932,7 +4930,7 @@
4932
4930
  "immutable": true,
4933
4931
  "locationInModule": {
4934
4932
  "filename": "deployment-stack-pipeline/pipeline.ts",
4935
- "line": 156
4933
+ "line": 165
4936
4934
  },
4937
4935
  "name": "reuseExistingArtifactBucket",
4938
4936
  "optional": true,
@@ -4949,7 +4947,7 @@
4949
4947
  "immutable": true,
4950
4948
  "locationInModule": {
4951
4949
  "filename": "deployment-stack-pipeline/pipeline.ts",
4952
- "line": 135
4950
+ "line": 144
4953
4951
  },
4954
4952
  "name": "stageEnv",
4955
4953
  "optional": true,
@@ -4968,7 +4966,7 @@
4968
4966
  "immutable": true,
4969
4967
  "locationInModule": {
4970
4968
  "filename": "deployment-stack-pipeline/pipeline.ts",
4971
- "line": 131
4969
+ "line": 140
4972
4970
  },
4973
4971
  "name": "synthBuildSpec",
4974
4972
  "optional": true,
@@ -5043,7 +5041,7 @@
5043
5041
  "kind": "interface",
5044
5042
  "locationInModule": {
5045
5043
  "filename": "deployment-stack-pipeline/pipeline.ts",
5046
- "line": 58
5044
+ "line": 67
5047
5045
  },
5048
5046
  "name": "StackConfigProps",
5049
5047
  "namespace": "deploymentPipeline",
@@ -5057,7 +5055,7 @@
5057
5055
  "immutable": true,
5058
5056
  "locationInModule": {
5059
5057
  "filename": "deployment-stack-pipeline/pipeline.ts",
5060
- "line": 62
5058
+ "line": 71
5061
5059
  },
5062
5060
  "name": "beta",
5063
5061
  "type": {
@@ -5078,7 +5076,7 @@
5078
5076
  "immutable": true,
5079
5077
  "locationInModule": {
5080
5078
  "filename": "deployment-stack-pipeline/pipeline.ts",
5081
- "line": 66
5079
+ "line": 75
5082
5080
  },
5083
5081
  "name": "gamma",
5084
5082
  "type": {
@@ -5099,7 +5097,7 @@
5099
5097
  "immutable": true,
5100
5098
  "locationInModule": {
5101
5099
  "filename": "deployment-stack-pipeline/pipeline.ts",
5102
- "line": 70
5100
+ "line": 79
5103
5101
  },
5104
5102
  "name": "prod",
5105
5103
  "type": {
@@ -5124,7 +5122,7 @@
5124
5122
  "kind": "interface",
5125
5123
  "locationInModule": {
5126
5124
  "filename": "deployment-stack-pipeline/pipeline.ts",
5127
- "line": 43
5125
+ "line": 52
5128
5126
  },
5129
5127
  "name": "StageEnvProps",
5130
5128
  "namespace": "deploymentPipeline",
@@ -5138,7 +5136,7 @@
5138
5136
  "immutable": true,
5139
5137
  "locationInModule": {
5140
5138
  "filename": "deployment-stack-pipeline/pipeline.ts",
5141
- "line": 47
5139
+ "line": 56
5142
5140
  },
5143
5141
  "name": "beta",
5144
5142
  "type": {
@@ -5154,7 +5152,7 @@
5154
5152
  "immutable": true,
5155
5153
  "locationInModule": {
5156
5154
  "filename": "deployment-stack-pipeline/pipeline.ts",
5157
- "line": 51
5155
+ "line": 60
5158
5156
  },
5159
5157
  "name": "gamma",
5160
5158
  "type": {
@@ -5170,7 +5168,7 @@
5170
5168
  "immutable": true,
5171
5169
  "locationInModule": {
5172
5170
  "filename": "deployment-stack-pipeline/pipeline.ts",
5173
- "line": 55
5171
+ "line": 64
5174
5172
  },
5175
5173
  "name": "prod",
5176
5174
  "type": {
@@ -6758,6 +6756,6 @@
6758
6756
  "symbolId": "shared-config/slack:SlackAlerts"
6759
6757
  }
6760
6758
  },
6761
- "version": "0.0.32",
6762
- "fingerprint": "/y6PddeYVaB7SdoArjsIvlK6+mfMn92G8Pbz2ybjOaU="
6759
+ "version": "0.0.34",
6760
+ "fingerprint": "d+PMtKWVtmzS+P1omiV5f8tQJsCkfNLbBjjTeYDFmFM="
6763
6761
  }
@@ -29,13 +29,13 @@ export interface OrcaBusApiGatewayProps {
29
29
  */
30
30
  readonly cognitoUserPoolIdParameterName?: string;
31
31
  /**
32
- * The parameter name for the cognito client id in array.
33
- * In order API Gateway to validate the JWT token, it needs to know the client id which usually
34
- * stored in SSM Parameter. This will accept multiple parameter name in an array.
32
+ * Array of SSM parameter names containing Cognito client IDs.
35
33
  *
36
- * @default DEFAULT_COGNITO_CLIENT_ID_PARAMETER_NAME_ARRAY
34
+ * API Gateway uses these client IDs to validate JWT tokens. Each parameter
35
+ * should contain a valid Cognito application client ID that is authorized
36
+ * to access this API.
37
37
  */
38
- readonly cognitoClientIdParameterNameArray?: string[];
38
+ readonly cognitoClientIdParameterNameArray: string[];
39
39
  /**
40
40
  * The configuration for aws cloudwatch logs
41
41
  */
@@ -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.32" };
18
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.apigateway.OrcaBusApiGateway", version: "0.0.34" };
19
19
  /**
20
20
  * The AWS region where the API Gateway is deployed.
21
21
  */
@@ -124,7 +124,7 @@ class OrcaBusApiGateway extends constructs_1.Construct {
124
124
  });
125
125
  accessLogs.grantWrite(role);
126
126
  }
127
- getJWTAuthorizer({ cognitoUserPoolIdParameterName = config_1.DEFAULT_COGNITO_USER_POOL_ID_PARAMETER_NAME, cognitoClientIdParameterNameArray = config_1.DEFAULT_COGNITO_CLIENT_ID_PARAMETER_NAME_ARRAY, }) {
127
+ getJWTAuthorizer({ cognitoUserPoolIdParameterName = config_1.DEFAULT_COGNITO_USER_POOL_ID_PARAMETER_NAME, cognitoClientIdParameterNameArray, }) {
128
128
  /**
129
129
  * FIXME One fine day in future when we have proper Cognito AAI setup.
130
130
  * For the moment, we leverage Portal and established Cognito infrastructure.
@@ -159,4 +159,4 @@ class OrcaBusApiGateway extends constructs_1.Construct {
159
159
  }
160
160
  }
161
161
  exports.OrcaBusApiGateway = OrcaBusApiGateway;
162
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWdhdGV3YXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhcGktZ2F0ZXdheS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsMkNBQXVDO0FBQ3ZDLDZDQUFzRTtBQUN0RSwyRkFJa0Q7QUFDbEQsbUVBS3NDO0FBQ3RDLCtFQUFpRTtBQUNqRSxpREFBd0U7QUFDeEUsbURBQStEO0FBQy9ELHlEQUE0RTtBQUM1RSxpREFBNkQ7QUFDN0QsdURBQWtEO0FBQ2xELHlFQUErRTtBQUMvRSxxQ0FNa0I7QUE4Q2xCLE1BQWEsaUJBQWtCLFNBQVEsc0JBQVM7O0lBQzlDOztPQUVHO0lBQ00sTUFBTSxDQUFTO0lBQ3hCOztPQUVHO0lBQ00sT0FBTyxDQUFVO0lBQzFCOztPQUVHO0lBQ00sVUFBVSxDQUFTO0lBQzVCOzs7Ozs7T0FNRztJQUNNLDZCQUE2QixDQUF1QjtJQUU3RCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTZCO1FBQ3JFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFFcEMsZ0JBQWdCO1FBQ2hCLE1BQU0sV0FBVyxHQUFHLHlCQUFlLENBQUMsdUJBQXVCLENBQ3pELElBQUksRUFDSix1Q0FBOEIsQ0FDL0IsQ0FBQztRQUNGLE1BQU0sZ0JBQWdCLEdBQUcseUJBQWUsQ0FBQyx1QkFBdUIsQ0FDOUQsSUFBSSxFQUNKLDBDQUFpQyxDQUNsQyxDQUFDO1FBQ0YsTUFBTSxZQUFZLEdBQUcseUJBQWUsQ0FBQyx1QkFBdUIsQ0FDMUQsSUFBSSxFQUNKLHNDQUE2QixDQUM5QixDQUFDO1FBRUYsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLEtBQUssQ0FBQyxzQkFBc0IsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hFLE1BQU0sZUFBZSxHQUFHLElBQUksNkJBQVUsQ0FBQyxJ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QUVGLDRFQUE0RTtRQUM1RSxNQUFNLGdCQUFnQixHQUFHLHFCQUFRLENBQUMsc0JBQXNCLENBQ3RELElBQUksRUFDSiwrQkFBK0IsRUFDL0I7WUFDRSxXQUFXLEVBQUUsU0FBUztZQUN0QixlQUFlLEVBQUUsSUFBSTtTQUN0QixDQUNGLENBQUM7UUFFRixPQUFPLElBQUksbURBQW9CLENBQzdCLCtCQUErQixFQUMvQixnQkFBZ0IsRUFDaEI7WUFDRSxjQUFjLEVBQUUsK0JBQStCO1lBQy9DLGFBQWEsRUFBRSxDQUFDLHFEQUFzQixDQUFDLE1BQU0sQ0FBQztTQUMvQyxDQUNGLENBQUM7SUFDSixDQUFDOztBQTNNSCw4Q0E0TUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgYXdzX3NzbSwgRHVyYXRpb24sIFJlbW92YWxQb2xpY3ksIFN0YWNrIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQge1xuICBIdHRwSnd0QXV0aG9yaXplcixcbiAgSHR0cExhbWJkYUF1dGhvcml6ZXIsXG4gIEh0dHBMYW1iZGFSZXNwb25zZVR5cGUsXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtYXBpZ2F0ZXdheXYyLWF1dGhvcml6ZXJzXCI7XG5pbXBvcnQge1xuICBDZm5TdGFnZSxcbiAgQ29yc0h0dHBNZXRob2QsXG4gIERvbWFpbk5hbWUsXG4gIEh0dHBBcGksXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtYXBpZ2F0ZXdheXYyXCI7XG5pbXBvcnQgeyBDZXJ0aWZpY2F0ZSB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2VydGlmaWNhdGVtYW5hZ2VyXCI7XG5pbXBvcnQgeyBJU3RyaW5nUGFyYW1ldGVyLCBTdHJpbmdQYXJhbWV0ZXIgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNzbVwiO1xuaW1wb3J0IHsgTG9nR3JvdXAsIFJldGVudGlvbkRheXMgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxvZ3NcIjtcbmltcG9ydCB7IEFSZWNvcmQsIEhvc3RlZFpvbmUsIFJlY29yZFRhcmdldCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtcm91dGU1M1wiO1xuaW1wb3J0IHsgUm9sZSwgU2VydmljZVByaW5jaXBhbCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQgeyBGdW5jdGlvbiB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhXCI7XG5pbXBvcnQgeyBBcGlHYXRld2F5djJEb21haW5Qcm9wZXJ0aWVzIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1yb3V0ZTUzLXRhcmdldHNcIjtcbmltcG9ydCB7XG4gIENFUlRJRklDQVRFX0FSTl9QQVJBTUVURVJfTkFNRSxcbiAgREVGQVVMVF9DT0dOSVRPX0NMSUVOVF9JRF9QQVJBTUVURVJfTkFNRV9BUlJBWSxcbiAgREVGQVVMVF9DT0dOSVRPX1VTRVJfUE9PTF9JRF9QQVJBTUVURVJfTkFNRSxcbiAgSE9TVEVEX1pPTkVfRE9NQUlOX1BBUkFNRVRFUl9OQU1FLFxuICBIT1NURURfWk9ORV9JRF9QQVJBTUVURVJfTkFNRSxcbn0gZnJvbSBcIi4vY29uZmlnXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBpR3dMb2dzQ29uZmlnIHtcbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgZGF5cyBsb2cgZXZlbnRzIGFyZSBrZXB0IGluIENsb3VkV2F0Y2ggTG9ncy5cbiAgICovXG4gIHJlYWRvbmx5IHJldGVudGlvbjogUmV0ZW50aW9uRGF5cztcbiAgLyoqXG4gICAqIFRoZSByZW1vdmFsIHBvbGljeSB0byBhcHBseSB0byB0aGUgbG9nIGdyb3VwLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcmNhQnVzQXBpR2F0ZXdheVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBBUEkuXG4gICAqL1xuICByZWFkb25seSBhcGlOYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgcHJlZml4IGZvciB0aGUgY3VzdG9tIGRvbWFpbiBuYW1lXG4gICAqL1xuICByZWFkb25seSBjdXN0b21Eb21haW5OYW1lUHJlZml4OiBzdHJpbmc7XG4gIC8qKlxuICAgKlRoZSBjb2duaXRvIHVzZXIgcG9vbCBpZCBwYXJhbWV0ZXIgbmFtZS5cblxuICAgQGRlZmF1bHQgREVGQVVMVF9DT0dOSVRPX1VTRVJfUE9PTF9JRF9QQVJBTUVURVJfTkFNRVxuICAgKi9cbiAgcmVhZG9ubHkgY29nbml0b1VzZXJQb29sSWRQYXJhbWV0ZXJOYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHBhcmFtZXRlciBuYW1lIGZvciB0aGUgY29nbml0byBjbGllbnQgaWQgaW4gYXJyYXkuXG4gICAqIEluIG9yZGVyIEFQSSBHYXRld2F5IHRvIHZhbGlkYXRlIHRoZSBKV1QgdG9rZW4sIGl0IG5lZWRzIHRvIGtub3cgdGhlIGNsaWVudCBpZCB3aGljaCB1c3VhbGx5XG4gICAqIHN0b3JlZCBpbiBTU00gUGFyYW1ldGVyLiBUaGlzIHdpbGwgYWNjZXB0IG11bHRpcGxlIHBhcmFtZXRlciBuYW1lIGluIGFuIGFycmF5LlxuICAgKlxuICAgKiBAZGVmYXVsdCBERUZBVUxUX0NPR05JVE9fQ0xJRU5UX0lEX1BBUkFNRVRFUl9OQU1FX0FSUkFZXG4gICAqL1xuICByZWFkb25seSBjb2duaXRvQ2xpZW50SWRQYXJhbWV0ZXJOYW1lQXJyYXk/OiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIFRoZSBjb25maWd1cmF0aW9uIGZvciBhd3MgY2xvdWR3YXRjaCBsb2dzXG4gICAqL1xuICByZWFkb25seSBhcGlHd0xvZ3NDb25maWc6IEFwaUd3TG9nc0NvbmZpZztcbiAgLyoqXG4gICAqIEFsbG93ZWQgQ09SUyBvcmlnaW5zLlxuICAgKi9cbiAgcmVhZG9ubHkgY29yc0FsbG93T3JpZ2luczogc3RyaW5nW107XG59XG5cbmV4cG9ydCBjbGFzcyBPcmNhQnVzQXBpR2F0ZXdheSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIC8qKlxuICAgKiBUaGUgQVdTIHJlZ2lvbiB3aGVyZSB0aGUgQVBJIEdhdGV3YXkgaXMgZGVwbG95ZWQuXG4gICAqL1xuICByZWFkb25seSByZWdpb246IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBIVFRQIEFQSVxuICAgKi9cbiAgcmVhZG9ubHkgaHR0cEFwaTogSHR0cEFwaTtcbiAgLyoqXG4gICAqIERvbWFpbiBuYW1lIGRlZmluZWQgaW4gdGhpcyBnYXRld2F5XG4gICAqL1xuICByZWFkb25seSBkb21haW5OYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgTGFtYmRhIEhUVFAgQXV0aG9yaXplciB1c2VkIHRvIGVuZm9yY2UgYXV0aG9yaXphdGlvbiBwb2xpY2llc1xuICAgKiBkZWZpbmVkIGluIHRoZSBhdXRob3JpemF0aW9uIHN0YWNrLlxuICAgKlxuICAgKiBUbyB1c2UgdGhpcywgc2V0IGl0IGFzIHRoZSBgYXV0aG9yaXplcmAgcHJvcGVydHkgaW4gYW4gYEh0dHBSb3V0ZWAgY29uc3RydWN0LlxuICAgKiBFeGFtcGxlOiBgYXV0aG9yaXplcjogYXBpR2F0ZXdheS5hdXRoU3RhY2tIdHRwTGFtYmRhQXV0aG9yaXplcmBcbiAgICovXG4gIHJlYWRvbmx5IGF1dGhTdGFja0h0dHBMYW1iZGFBdXRob3JpemVyOiBIdHRwTGFtYmRhQXV0aG9yaXplcjtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogT3JjYUJ1c0FwaUdhdGV3YXlQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLnJlZ2lvbiA9IFN0YWNrLm9mKHRoaXMpLnJlZ2lvbjtcblxuICAgIC8vIHVtY2NyIGFjbSBhcm5cbiAgICBjb25zdCB1bWNjckFjbUFybiA9IFN0cmluZ1BhcmFtZXRlci52YWx1ZUZvclN0cmluZ1BhcmFtZXRlcihcbiAgICAgIHRoaXMsXG4gICAgICBDRVJUSUZJQ0FURV9BUk5fUEFSQU1FVEVSX05BTUUsXG4gICAgKTtcbiAgICBjb25zdCBob3N0ZWREb21haW5OYW1lID0gU3RyaW5nUGFyYW1ldGVyLnZhbHVlRm9yU3RyaW5nUGFyYW1ldGVyKFxuICAgICAgdGhpcyxcbiAgICAgIEhPU1RFRF9aT05FX0RPTUFJTl9QQVJBTUVURVJfTkFNRSxcbiAgICApO1xuICAgIGNvbnN0IGhvc3RlZFpvbmVJZCA9IFN0cmluZ1BhcmFtZXRlci52YWx1ZUZvclN0cmluZ1BhcmFtZXRlcihcbiAgICAgIHRoaXMsXG4gICAgICBIT1NURURfWk9ORV9JRF9QQVJBTUVURVJfTkFNRSxcbiAgICApO1xuXG4gICAgdGhpcy5kb21haW5OYW1lID0gYCR7cHJvcHMuY3VzdG9tRG9tYWluTmFtZVByZWZpeH0uJHtob3N0ZWREb21haW5OYW1lfWA7XG4gICAgY29uc3QgYXBpR1dEb21haW5OYW1lID0gbmV3IERvbWFpbk5hbWUodGhpcywgXCJVbWNjckRvbWFpbk5hbWVcIiwge1xuICAgICAgZG9tYWluTmFtZTogdGhpcy5kb21haW5OYW1lLFxuICAgICAgY2VydGlmaWNhdGU6IENlcnRpZmljYXRlLmZyb21DZXJ0aWZpY2F0ZUFybih0aGlzLCBcImNlcnRcIiwgdW1jY3JBY21Bcm4pLFxuICAgIH0pO1xuXG4gICAgdGhpcy5odHRwQXBpID0gbmV3IEh0dHBBcGkodGhpcywgXCJIdHRwQXBpXCIsIHtcbiAgICAgIGFwaU5hbWU6IFwiT3JjYUJ1c0FQSS1cIiArIHByb3BzLmFwaU5hbWUsXG4gICAgICBjb3JzUHJlZmxpZ2h0OiB7XG4gICAgICAgIGFsbG93SGVhZGVyczogW1xuICAgICAgICAgIFwiY29udGVudC10eXBlXCIsXG4gICAgICAgICAgXCJjb250ZW50LWRpc3Bvc2l0aW9uXCIsXG4gICAgICAgICAgXCJhdXRob3JpemF0aW9uXCIsXG4gICAgICAgICAgXCJ4LWFtei1kYXRlXCIsXG4gICAgICAgICAgXCJ4LWFwaS1rZXlcIixcbiAgICAgICAgICBcIngtYW16LXNlY3VyaXR5LXRva2VuXCIsXG4gICAgICAgICAgXCJ4LWFtei11c2VyLWFnZW50XCIsXG4gICAgICAgIF0sXG4gICAgICAgIGFsbG93TWV0aG9kczogW1xuICAgICAgICAgIENvcnNIdHRwTWV0aG9kLkdFVCxcbiAgICAgICAgICBDb3JzSHR0cE1ldGhvZC5IRUFELFxuICAgICAgICAgIENvcnNIdHRwTWV0aG9kLk9QVElPTlMsXG4gICAgICAgICAgQ29yc0h0dHBNZXRob2QuUE9TVCxcbiAgICAgICAgICBDb3JzSHR0cE1ldGhvZC5QQVRDSCxcbiAgICAgICAgICBDb3JzSHR0cE1ldGhvZC5ERUxFVEUsXG4gICAgICAgIF0sXG4gICAgICAgIGFsbG93T3JpZ2luczogcHJvcHMuY29yc0FsbG93T3JpZ2lucyxcbiAgICAgICAgbWF4QWdlOiBEdXJhdGlvbi5kYXlzKDEwKSxcbiAgICAgIH0sXG4gICAgICBkZWZhdWx0QXV0aG9yaXplcjogdGhpcy5nZXRKV1RBdXRob3JpemVyKHByb3BzKSxcbiAgICAgIGRlZmF1bHREb21haW5NYXBwaW5nOiB7XG4gICAgICAgIGRvbWFpbk5hbWU6IGFwaUdXRG9tYWluTmFtZSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLmF1dGhTdGFja0h0dHBMYW1iZGFBdXRob3JpemVyID1cbiAgICAgIHRoaXMuZ2V0QXV0aFN0YWNrSFRUUExhbWJkYUF1dGhvcml6ZXIoKTtcblxuICAgIG5ldyBBUmVjb3JkKHRoaXMsIFwiQ3VzdG9tRG9tYWluQVJlY29yZFwiLCB7XG4gICAgICB6b25lOiBIb3N0ZWRab25lLmZyb21Ib3N0ZWRab25lQXR0cmlidXRlcyh0aGlzLCBcIlVtY2NySG9zdGVkWm9uZVwiLCB7XG4gICAgICAgIGhvc3RlZFpvbmVJZCxcbiAgICAgICAgem9uZU5hbWU6IGhvc3RlZERvbWFpbk5hbWUsXG4gICAgICB9KSxcbiAgICAgIHJlY29yZE5hbWU6IHRoaXMuZG9tYWluTmFtZSxcbiAgICAgIHRhcmdldDogUmVjb3JkVGFyZ2V0LmZyb21BbGlhcyhcbiAgICAgICAgbmV3IEFwaUdhdGV3YXl2MkRvbWFpblByb3BlcnRpZXMoXG4gICAgICAgICAgYXBpR1dEb21haW5OYW1lLnJlZ2lvbmFsRG9tYWluTmFtZSxcbiAgICAgICAgICBhcGlHV0RvbWFpbk5hbWUucmVnaW9uYWxIb3N0ZWRab25lSWQsXG4gICAgICAgICksXG4gICAgICApLFxuICAgIH0pO1xuXG4gICAgLy8gTG9nR3JvdXBzXG4gICAgdGhpcy5zZXR1cEFjY2Vzc0xvZ3MocHJvcHMuYXBpR3dMb2dzQ29uZmlnKTtcblxuICAgIC8vIENsb3VkTWFwXG4gICAgLy8gdGhpcy5zZXR1cENsb3VkU2VydmljZURpc2NvdmVyeSgpXG4gIH1cblxuICAvLyBUT0RPOiBodHRwczovL2dpdGh1Yi5jb20vYXdzLXNhbXBsZXMvYXdzLWNkay1zZXJ2aWNlLWRpc2NvdmVyeS1leGFtcGxlL3RyZWUvbWFpblxuICAvLyBwcml2YXRlIHNldHVwQ2xvdWRTZXJ2aWNlRGlzY292ZXJ5KCkge1xuICAvLyB9XG5cbiAgLy8gVE9ETzogVGFrZW4gZnJvbSBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvaXNzdWVzLzExMTAwI2lzc3VlY29tbWVudC05MDQ2MjcwODFcbiAgLy8gTW9uaXRvciBmb3IgaGlnaGVyIGxldmVsIENESyBjb25zdHJ1Y3QgaW5zdGVhZCBvZiBsZXZlcmFnaW5nIENmblN0YWdlXG4gIHByaXZhdGUgc2V0dXBBY2Nlc3NMb2dzKHByb3BzOiBBcGlHd0xvZ3NDb25maWcpIHtcbiAgICBjb25zdCBhY2Nlc3NMb2dzID0gbmV3IExvZ0dyb3VwKHRoaXMsIFwiQXBpR3dBY2Nlc3NMb2dzXCIsIHtcbiAgICAgIHJldGVudGlvbjogcHJvcHMucmV0ZW50aW9uLFxuICAgICAgcmVtb3ZhbFBvbGljeTogcHJvcHMucmVtb3ZhbFBvbGljeSxcbiAgICB9KTtcbiAgICBjb25zdCBzdGFnZSA9IHRoaXMuaHR0cEFwaS5kZWZhdWx0U3RhZ2U/Lm5vZGUuZGVmYXVsdENoaWxkIGFzIENmblN0YWdlO1xuICAgIHN0YWdlLmFjY2Vzc0xvZ1NldHRpbmdzID0ge1xuICAgICAgZGVzdGluYXRpb25Bcm46IGFjY2Vzc0xvZ3MubG9nR3JvdXBBcm4sXG4gICAgICBmb3JtYXQ6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgcmVxdWVzdElkOiBcIiRjb250ZXh0LnJlcXVlc3RJZFwiLFxuICAgICAgICB1c2VyQWdlbnQ6IFwiJGNvbnRleHQuaWRlbnRpdHkudXNlckFnZW50XCIsXG4gICAgICAgIHNvdXJjZUlwOiBcIiRjb250ZXh0LmlkZW50aXR5LnNvdXJjZUlwXCIsXG4gICAgICAgIHJlcXVlc3RUaW1lOiBcIiRjb250ZXh0LnJlcXVlc3RUaW1lXCIsXG4gICAgICAgIHJlcXVlc3RUaW1lRXBvY2g6IFwiJGNvbnRleHQucmVxdWVzdFRpbWVFcG9jaFwiLFxuICAgICAgICBodHRwTWV0aG9kOiBcIiRjb250ZXh0Lmh0dHBNZXRob2RcIixcbiAgICAgICAgcGF0aDogXCIkY29udGV4dC5wYXRoXCIsXG4gICAgICAgIHN0YXR1czogXCIkY29udGV4dC5zdGF0dXNcIixcbiAgICAgICAgcHJvdG9jb2w6IFwiJGNvbnRleHQucHJvdG9jb2xcIixcbiAgICAgICAgcmVzcG9uc2VMZW5ndGg6IFwiJGNvbnRleHQucmVzcG9uc2VMZW5ndGhcIixcbiAgICAgICAgZG9tYWluTmFtZTogXCIkY29udGV4dC5kb21haW5OYW1lXCIsXG4gICAgICB9KSxcbiAgICB9O1xuXG4gICAgLy8gQWxsb3cgd3JpdGluZyBhY2Nlc3MgbG9ncywgbWFuYWdlZFxuICAgIGNvbnN0IHJvbGUgPSBuZXcgUm9sZSh0aGlzLCBcIkFtYXpvbkFQSUdhdGV3YXlQdXNoVG9DbG91ZFdhdGNoTG9nc1wiLCB7XG4gICAgICBhc3N1bWVkQnk6IG5ldyBTZXJ2aWNlUHJpbmNpcGFsKFwiYXBpZ2F0ZXdheS5hbWF6b25hd3MuY29tXCIpLFxuICAgIH0pO1xuXG4gICAgYWNjZXNzTG9ncy5ncmFudFdyaXRlKHJvbGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRKV1RBdXRob3JpemVyKHtcbiAgICBjb2duaXRvVXNlclBvb2xJZFBhcmFtZXRlck5hbWUgPSBERUZBVUxUX0NPR05JVE9fVVNFUl9QT09MX0lEX1BBUkFNRVRFUl9OQU1FLFxuICAgIGNvZ25pdG9DbGllbnRJZFBhcmFtZXRlck5hbWVBcnJheSA9IERFRkFVTFRfQ09HTklUT19DTElFTlRfSURfUEFSQU1FVEVSX05BTUVfQVJSQVksXG4gIH06IE9yY2FCdXNBcGlHYXRld2F5UHJvcHMpOiBIdHRwSnd0QXV0aG9yaXplciB7XG4gICAgLyoqXG4gICAgICogRklYTUUgT25lIGZpbmUgZGF5IGluIGZ1dHVyZSB3aGVuIHdlIGhhdmUgcHJvcGVyIENvZ25pdG8gQUFJIHNldHVwLlxuICAgICAqICBGb3IgdGhlIG1vbWVudCwgd2UgbGV2ZXJhZ2UgUG9ydGFsIGFuZCBlc3RhYmxpc2hlZCBDb2duaXRvIGluZnJhc3RydWN0dXJlLlxuICAgICAqICBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3VtY2NyL29yY2FidXMvaXNzdWVzLzEwMlxuICAgICAqL1xuXG4gICAgY29uc3QgdXNlclBvb2xJZFBhcmFtOiBJU3RyaW5nUGFyYW1ldGVyID1cbiAgICAgIFN0cmluZ1BhcmFtZXRlci5mcm9tU3RyaW5nUGFyYW1ldGVyTmFtZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgXCJDb2duaXRvVXNlclBvb2xJZFBhcmFtZXRlclwiLFxuICAgICAgICBjb2duaXRvVXNlclBvb2xJZFBhcmFtZXRlck5hbWUsXG4gICAgICApO1xuXG4gICAgY29uc3QgY2xpZW50SWRQYXJhbXNBcnJheTogSVN0cmluZ1BhcmFtZXRlcltdID1cbiAgICAgIGNvZ25pdG9DbGllbnRJZFBhcmFtZXRlck5hbWVBcnJheS5tYXAoKG5hbWUpID0+XG4gICAgICAgIGF3c19zc20uU3RyaW5nUGFyYW1ldGVyLmZyb21TdHJpbmdQYXJhbWV0ZXJOYW1lKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgYENvZ25pdG9DbGllbnRJZCR7bmFtZX1QYXJhbWV0ZXJgLFxuICAgICAgICAgIG5hbWUsXG4gICAgICAgICksXG4gICAgICApO1xuXG4gICAgY29uc3QgaXNzdWVyID1cbiAgICAgIFwiaHR0cHM6Ly9jb2duaXRvLWlkcC5cIiArXG4gICAgICB0aGlzLnJlZ2lvbiArXG4gICAgICBcIi5hbWF6b25hd3MuY29tL1wiICtcbiAgICAgIHVzZXJQb29sSWRQYXJhbS5zdHJpbmdWYWx1ZTtcblxuICAgIHJldHVybiBuZXcgSHR0cEp3dEF1dGhvcml6ZXIoXCJQb3J0YWxBdXRob3JpemVyXCIsIGlzc3Vlciwge1xuICAgICAgand0QXVkaWVuY2U6IGNsaWVudElkUGFyYW1zQXJyYXkubWFwKChwYXJhbSkgPT4gcGFyYW0uc3RyaW5nVmFsdWUpLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgSFRUUCBMYW1iZGEgQXV0aG9yaXplciBkZWZpbmVkIGluIHRoZSBhdXRob3JpemF0aW9uIHN0YWNrIG1hbmFnZXJcbiAgICogQHBhcmFtIGF1dGhTdGFja0h0dHBMYW1iZGFBdXRob3JpemVyUGFyYW1ldGVyTmFtZSBUaGUgU1NNIFBhcmFtZXRlciBOYW1lIHRoYXQgc3RvcmVzIHRoZSBBUk4gb2YgdGhlIGxhbWJkYSBhdXRob3JpemVyXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBwcml2YXRlIGdldEF1dGhTdGFja0hUVFBMYW1iZGFBdXRob3JpemVyKCkge1xuICAgIGNvbnN0IGxhbWJkYUFybiA9IFN0cmluZ1BhcmFtZXRlci52YWx1ZUZvclN0cmluZ1BhcmFtZXRlcihcbiAgICAgIHRoaXMsXG4gICAgICBcIi9vcmNhYnVzL2F1dGhvcml6YXRpb24tc3RhY2svaHR0cC1sYW1iZGEtYXV0aG9yaXphdGlvbi1hcm5cIixcbiAgICApO1xuXG4gICAgLy8gR2V0IHRoZSBsYW1iZGEgSFRUUCBhdXRob3JpemVyIGRlZmluZWQgaW4gdGhlIGF1dGhvcml6YXRpb24gc3RhY2sgbWFuYWdlclxuICAgIGNvbnN0IGxhbWJkYUF1dGhvcml6ZXIgPSBGdW5jdGlvbi5mcm9tRnVuY3Rpb25BdHRyaWJ1dGVzKFxuICAgICAgdGhpcyxcbiAgICAgIFwiQXV0aFN0YWNrSFRUUExhbWJkYUF1dGhvcml6ZXJcIixcbiAgICAgIHtcbiAgICAgICAgZnVuY3Rpb25Bcm46IGxhbWJkYUFybixcbiAgICAgICAgc2FtZUVudmlyb25tZW50OiB0cnVlLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgcmV0dXJuIG5ldyBIdHRwTGFtYmRhQXV0aG9yaXplcihcbiAgICAgIFwiQXV0aFN0YWNrTGFtYmRhSHR0cEF1dGhvcml6ZXJcIixcbiAgICAgIGxhbWJkYUF1dGhvcml6ZXIsXG4gICAgICB7XG4gICAgICAgIGF1dGhvcml6ZXJOYW1lOiBcIkF1dGhTdGFja0hUVFBMYW1iZGFBdXRob3JpemVyXCIsXG4gICAgICAgIHJlc3BvbnNlVHlwZXM6IFtIdHRwTGFtYmRhUmVzcG9uc2VUeXBlLlNJTVBMRV0sXG4gICAgICB9LFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
162
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWdhdGV3YXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhcGktZ2F0ZXdheS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsMkNBQXVDO0FBQ3ZDLDZDQUFzRTtBQUN0RSwyRkFJa0Q7QUFDbEQsbUVBS3NDO0FBQ3RDLCtFQUFpRTtBQUNqRSxpREFBd0U7QUFDeEUsbURBQStEO0FBQy9ELHlEQUE0RTtBQUM1RSxpREFBNkQ7QUFDN0QsdURBQWtEO0FBQ2xELHlFQUErRTtBQUMvRSxxQ0FLa0I7QUE4Q2xCLE1BQWEsaUJBQWtCLFNBQVEsc0JBQVM7O0lBQzlDOztPQUVHO0lBQ00sTUFBTSxDQUFTO0lBQ3hCOztPQUVHO0lBQ00sT0FBTyxDQUFVO0lBQzFCOztPQUVHO0lBQ00sVUFBVSxDQUFTO0lBQzVCOzs7Ozs7T0FNRztJQUNNLDZCQUE2QixDQUF1QjtJQUU3RCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTZCO1FBQ3JFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFFcEMsZ0JBQWdCO1FBQ2hCLE1BQU0sV0FBVyxHQUFHLHlCQUFlLENBQUMsdUJBQXVCLENBQ3pELElBQUksRUFDSix1Q0FBOEIsQ0FDL0IsQ0FBQztRQUNGLE1BQU0sZ0JBQWdCLEdBQUcseUJBQWUsQ0FBQyx1QkFBdUIsQ0FDOUQsSUFBSSxFQUNKLDBDQUFpQyxDQUNsQyxDQUFDO1FBQ0YsTUFBTSxZQUFZLEdBQUcseUJBQWUsQ0FBQyx1QkFBdUIsQ0FDMUQsSUFBSSxFQUNKLHNDQUE2QixDQUM5QixDQUFDO1FBRUYsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLEtBQUssQ0FBQyxzQkFBc0IsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hFLE1BQU0sZUFBZSxHQUFHLElBQUksNkJBQVUsQ0FBQyxJ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QzVFLE1BQU0sZ0JBQWdCLEdBQUcscUJBQVEsQ0FBQyxzQkFBc0IsQ0FDdEQsSUFBSSxFQUNKLCtCQUErQixFQUMvQjtZQUNFLFdBQVcsRUFBRSxTQUFTO1lBQ3RCLGVBQWUsRUFBRSxJQUFJO1NBQ3RCLENBQ0YsQ0FBQztRQUVGLE9BQU8sSUFBSSxtREFBb0IsQ0FDN0IsK0JBQStCLEVBQy9CLGdCQUFnQixFQUNoQjtZQUNFLGNBQWMsRUFBRSwrQkFBK0I7WUFDL0MsYUFBYSxFQUFFLENBQUMscURBQXNCLENBQUMsTUFBTSxDQUFDO1NBQy9DLENBQ0YsQ0FBQztJQUNKLENBQUM7O0FBM01ILDhDQTRNQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBhd3Nfc3NtLCBEdXJhdGlvbiwgUmVtb3ZhbFBvbGljeSwgU3RhY2sgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7XG4gIEh0dHBKd3RBdXRob3JpemVyLFxuICBIdHRwTGFtYmRhQXV0aG9yaXplcixcbiAgSHR0cExhbWJkYVJlc3BvbnNlVHlwZSxcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1hcGlnYXRld2F5djItYXV0aG9yaXplcnNcIjtcbmltcG9ydCB7XG4gIENmblN0YWdlLFxuICBDb3JzSHR0cE1ldGhvZCxcbiAgRG9tYWluTmFtZSxcbiAgSHR0cEFwaSxcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1hcGlnYXRld2F5djJcIjtcbmltcG9ydCB7IENlcnRpZmljYXRlIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jZXJ0aWZpY2F0ZW1hbmFnZXJcIjtcbmltcG9ydCB7IElTdHJpbmdQYXJhbWV0ZXIsIFN0cmluZ1BhcmFtZXRlciB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtc3NtXCI7XG5pbXBvcnQgeyBMb2dHcm91cCwgUmV0ZW50aW9uRGF5cyB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbG9nc1wiO1xuaW1wb3J0IHsgQVJlY29yZCwgSG9zdGVkWm9uZSwgUmVjb3JkVGFyZ2V0IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1yb3V0ZTUzXCI7XG5pbXBvcnQgeyBSb2xlLCBTZXJ2aWNlUHJpbmNpcGFsIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCB7IEZ1bmN0aW9uIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGFcIjtcbmltcG9ydCB7IEFwaUdhdGV3YXl2MkRvbWFpblByb3BlcnRpZXMgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXJvdXRlNTMtdGFyZ2V0c1wiO1xuaW1wb3J0IHtcbiAgQ0VSVElGSUNBVEVfQVJOX1BBUkFNRVRFUl9OQU1FLFxuICBERUZBVUxUX0NPR05JVE9fVVNFUl9QT09MX0lEX1BBUkFNRVRFUl9OQU1FLFxuICBIT1NURURfWk9ORV9ET01BSU5fUEFSQU1FVEVSX05BTUUsXG4gIEhPU1RFRF9aT05FX0lEX1BBUkFNRVRFUl9OQU1FLFxufSBmcm9tIFwiLi9jb25maWdcIjtcblxuZXhwb3J0IGludGVyZmFjZSBBcGlHd0xvZ3NDb25maWcge1xuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBkYXlzIGxvZyBldmVudHMgYXJlIGtlcHQgaW4gQ2xvdWRXYXRjaCBMb2dzLlxuICAgKi9cbiAgcmVhZG9ubHkgcmV0ZW50aW9uOiBSZXRlbnRpb25EYXlzO1xuICAvKipcbiAgICogVGhlIHJlbW92YWwgcG9saWN5IHRvIGFwcGx5IHRvIHRoZSBsb2cgZ3JvdXAuXG4gICAqL1xuICByZWFkb25seSByZW1vdmFsUG9saWN5OiBSZW1vdmFsUG9saWN5O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9yY2FCdXNBcGlHYXRld2F5UHJvcHMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIEFQSS5cbiAgICovXG4gIHJlYWRvbmx5IGFwaU5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBwcmVmaXggZm9yIHRoZSBjdXN0b20gZG9tYWluIG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IGN1c3RvbURvbWFpbk5hbWVQcmVmaXg6IHN0cmluZztcbiAgLyoqXG4gICAqVGhlIGNvZ25pdG8gdXNlciBwb29sIGlkIHBhcmFtZXRlciBuYW1lLlxuXG4gICBAZGVmYXVsdCBERUZBVUxUX0NPR05JVE9fVVNFUl9QT09MX0lEX1BBUkFNRVRFUl9OQU1FXG4gICAqL1xuICByZWFkb25seSBjb2duaXRvVXNlclBvb2xJZFBhcmFtZXRlck5hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBcnJheSBvZiBTU00gcGFyYW1ldGVyIG5hbWVzIGNvbnRhaW5pbmcgQ29nbml0byBjbGllbnQgSURzLlxuICAgKlxuICAgKiBBUEkgR2F0ZXdheSB1c2VzIHRoZXNlIGNsaWVudCBJRHMgdG8gdmFsaWRhdGUgSldUIHRva2Vucy4gRWFjaCBwYXJhbWV0ZXJcbiAgICogc2hvdWxkIGNvbnRhaW4gYSB2YWxpZCBDb2duaXRvIGFwcGxpY2F0aW9uIGNsaWVudCBJRCB0aGF0IGlzIGF1dGhvcml6ZWRcbiAgICogdG8gYWNjZXNzIHRoaXMgQVBJLlxuICAgKi9cbiAgcmVhZG9ubHkgY29nbml0b0NsaWVudElkUGFyYW1ldGVyTmFtZUFycmF5OiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIFRoZSBjb25maWd1cmF0aW9uIGZvciBhd3MgY2xvdWR3YXRjaCBsb2dzXG4gICAqL1xuICByZWFkb25seSBhcGlHd0xvZ3NDb25maWc6IEFwaUd3TG9nc0NvbmZpZztcbiAgLyoqXG4gICAqIEFsbG93ZWQgQ09SUyBvcmlnaW5zLlxuICAgKi9cbiAgcmVhZG9ubHkgY29yc0FsbG93T3JpZ2luczogc3RyaW5nW107XG59XG5cbmV4cG9ydCBjbGFzcyBPcmNhQnVzQXBpR2F0ZXdheSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIC8qKlxuICAgKiBUaGUgQVdTIHJlZ2lvbiB3aGVyZSB0aGUgQVBJIEdhdGV3YXkgaXMgZGVwbG95ZWQuXG4gICAqL1xuICByZWFkb25seSByZWdpb246IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBIVFRQIEFQSVxuICAgKi9cbiAgcmVhZG9ubHkgaHR0cEFwaTogSHR0cEFwaTtcbiAgLyoqXG4gICAqIERvbWFpbiBuYW1lIGRlZmluZWQgaW4gdGhpcyBnYXRld2F5XG4gICAqL1xuICByZWFkb25seSBkb21haW5OYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgTGFtYmRhIEhUVFAgQXV0aG9yaXplciB1c2VkIHRvIGVuZm9yY2UgYXV0aG9yaXphdGlvbiBwb2xpY2llc1xuICAgKiBkZWZpbmVkIGluIHRoZSBhdXRob3JpemF0aW9uIHN0YWNrLlxuICAgKlxuICAgKiBUbyB1c2UgdGhpcywgc2V0IGl0IGFzIHRoZSBgYXV0aG9yaXplcmAgcHJvcGVydHkgaW4gYW4gYEh0dHBSb3V0ZWAgY29uc3RydWN0LlxuICAgKiBFeGFtcGxlOiBgYXV0aG9yaXplcjogYXBpR2F0ZXdheS5hdXRoU3RhY2tIdHRwTGFtYmRhQXV0aG9yaXplcmBcbiAgICovXG4gIHJlYWRvbmx5IGF1dGhTdGFja0h0dHBMYW1iZGFBdXRob3JpemVyOiBIdHRwTGFtYmRhQXV0aG9yaXplcjtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogT3JjYUJ1c0FwaUdhdGV3YXlQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLnJlZ2lvbiA9IFN0YWNrLm9mKHRoaXMpLnJlZ2lvbjtcblxuICAgIC8vIHVtY2NyIGFjbSBhcm5cbiAgICBjb25zdCB1bWNjckFjbUFybiA9IFN0cmluZ1BhcmFtZXRlci52YWx1ZUZvclN0cmluZ1BhcmFtZXRlcihcbiAgICAgIHRoaXMsXG4gICAgICBDRVJUSUZJQ0FURV9BUk5fUEFSQU1FVEVSX05BTUUsXG4gICAgKTtcbiAgICBjb25zdCBob3N0ZWREb21haW5OYW1lID0gU3RyaW5nUGFyYW1ldGVyLnZhbHVlRm9yU3RyaW5nUGFyYW1ldGVyKFxuICAgICAgdGhpcyxcbiAgICAgIEhPU1RFRF9aT05FX0RPTUFJTl9QQVJBTUVURVJfTkFNRSxcbiAgICApO1xuICAgIGNvbnN0IGhvc3RlZFpvbmVJZCA9IFN0cmluZ1BhcmFtZXRlci52YWx1ZUZvclN0cmluZ1BhcmFtZXRlcihcbiAgICAgIHRoaXMsXG4gICAgICBIT1NURURfWk9ORV9JRF9QQVJBTUVURVJfTkFNRSxcbiAgICApO1xuXG4gICAgdGhpcy5kb21haW5OYW1lID0gYCR7cHJvcHMuY3VzdG9tRG9tYWluTmFtZVByZWZpeH0uJHtob3N0ZWREb21haW5OYW1lfWA7XG4gICAgY29uc3QgYXBpR1dEb21haW5OYW1lID0gbmV3IERvbWFpbk5hbWUodGhpcywgXCJVbWNjckRvbWFpbk5hbWVcIiwge1xuICAgICAgZG9tYWluTmFtZTogdGhpcy5kb21haW5OYW1lLFxuICAgICAgY2VydGlmaWNhdGU6IENlcnRpZmljYXRlLmZyb21DZXJ0aWZpY2F0ZUFybih0aGlzLCBcImNlcnRcIiwgdW1jY3JBY21Bcm4pLFxuICAgIH0pO1xuXG4gICAgdGhpcy5odHRwQXBpID0gbmV3IEh0dHBBcGkodGhpcywgXCJIdHRwQXBpXCIsIHtcbiAgICAgIGFwaU5hbWU6IFwiT3JjYUJ1c0FQSS1cIiArIHByb3BzLmFwaU5hbWUsXG4gICAgICBjb3JzUHJlZmxpZ2h0OiB7XG4gICAgICAgIGFsbG93SGVhZGVyczogW1xuICAgICAgICAgIFwiY29udGVudC10eXBlXCIsXG4gICAgICAgICAgXCJjb250ZW50LWRpc3Bvc2l0aW9uXCIsXG4gICAgICAgICAgXCJhdXRob3JpemF0aW9uXCIsXG4gICAgICAgICAgXCJ4LWFtei1kYXRlXCIsXG4gICAgICAgICAgXCJ4LWFwaS1rZXlcIixcbiAgICAgICAgICBcIngtYW16LXNlY3VyaXR5LXRva2VuXCIsXG4gICAgICAgICAgXCJ4LWFtei11c2VyLWFnZW50XCIsXG4gICAgICAgIF0sXG4gICAgICAgIGFsbG93TWV0aG9kczogW1xuICAgICAgICAgIENvcnNIdHRwTWV0aG9kLkdFVCxcbiAgICAgICAgICBDb3JzSHR0cE1ldGhvZC5IRUFELFxuICAgICAgICAgIENvcnNIdHRwTWV0aG9kLk9QVElPTlMsXG4gICAgICAgICAgQ29yc0h0dHBNZXRob2QuUE9TVCxcbiAgICAgICAgICBDb3JzSHR0cE1ldGhvZC5QQVRDSCxcbiAgICAgICAgICBDb3JzSHR0cE1ldGhvZC5ERUxFVEUsXG4gICAgICAgIF0sXG4gICAgICAgIGFsbG93T3JpZ2luczogcHJvcHMuY29yc0FsbG93T3JpZ2lucyxcbiAgICAgICAgbWF4QWdlOiBEdXJhdGlvbi5kYXlzKDEwKSxcbiAgICAgIH0sXG4gICAgICBkZWZhdWx0QXV0aG9yaXplcjogdGhpcy5nZXRKV1RBdXRob3JpemVyKHByb3BzKSxcbiAgICAgIGRlZmF1bHREb21haW5NYXBwaW5nOiB7XG4gICAgICAgIGRvbWFpbk5hbWU6IGFwaUdXRG9tYWluTmFtZSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLmF1dGhTdGFja0h0dHBMYW1iZGFBdXRob3JpemVyID1cbiAgICAgIHRoaXMuZ2V0QXV0aFN0YWNrSFRUUExhbWJkYUF1dGhvcml6ZXIoKTtcblxuICAgIG5ldyBBUmVjb3JkKHRoaXMsIFwiQ3VzdG9tRG9tYWluQVJlY29yZFwiLCB7XG4gICAgICB6b25lOiBIb3N0ZWRab25lLmZyb21Ib3N0ZWRab25lQXR0cmlidXRlcyh0aGlzLCBcIlVtY2NySG9zdGVkWm9uZVwiLCB7XG4gICAgICAgIGhvc3RlZFpvbmVJZCxcbiAgICAgICAgem9uZU5hbWU6IGhvc3RlZERvbWFpbk5hbWUsXG4gICAgICB9KSxcbiAgICAgIHJlY29yZE5hbWU6IHRoaXMuZG9tYWluTmFtZSxcbiAgICAgIHRhcmdldDogUmVjb3JkVGFyZ2V0LmZyb21BbGlhcyhcbiAgICAgICAgbmV3IEFwaUdhdGV3YXl2MkRvbWFpblByb3BlcnRpZXMoXG4gICAgICAgICAgYXBpR1dEb21haW5OYW1lLnJlZ2lvbmFsRG9tYWluTmFtZSxcbiAgICAgICAgICBhcGlHV0RvbWFpbk5hbWUucmVnaW9uYWxIb3N0ZWRab25lSWQsXG4gICAgICAgICksXG4gICAgICApLFxuICAgIH0pO1xuXG4gICAgLy8gTG9nR3JvdXBzXG4gICAgdGhpcy5zZXR1cEFjY2Vzc0xvZ3MocHJvcHMuYXBpR3dMb2dzQ29uZmlnKTtcblxuICAgIC8vIENsb3VkTWFwXG4gICAgLy8gdGhpcy5zZXR1cENsb3VkU2VydmljZURpc2NvdmVyeSgpXG4gIH1cblxuICAvLyBUT0RPOiBodHRwczovL2dpdGh1Yi5jb20vYXdzLXNhbXBsZXMvYXdzLWNkay1zZXJ2aWNlLWRpc2NvdmVyeS1leGFtcGxlL3RyZWUvbWFpblxuICAvLyBwcml2YXRlIHNldHVwQ2xvdWRTZXJ2aWNlRGlzY292ZXJ5KCkge1xuICAvLyB9XG5cbiAgLy8gVE9ETzogVGFrZW4gZnJvbSBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvaXNzdWVzLzExMTAwI2lzc3VlY29tbWVudC05MDQ2MjcwODFcbiAgLy8gTW9uaXRvciBmb3IgaGlnaGVyIGxldmVsIENESyBjb25zdHJ1Y3QgaW5zdGVhZCBvZiBsZXZlcmFnaW5nIENmblN0YWdlXG4gIHByaXZhdGUgc2V0dXBBY2Nlc3NMb2dzKHByb3BzOiBBcGlHd0xvZ3NDb25maWcpIHtcbiAgICBjb25zdCBhY2Nlc3NMb2dzID0gbmV3IExvZ0dyb3VwKHRoaXMsIFwiQXBpR3dBY2Nlc3NMb2dzXCIsIHtcbiAgICAgIHJldGVudGlvbjogcHJvcHMucmV0ZW50aW9uLFxuICAgICAgcmVtb3ZhbFBvbGljeTogcHJvcHMucmVtb3ZhbFBvbGljeSxcbiAgICB9KTtcbiAgICBjb25zdCBzdGFnZSA9IHRoaXMuaHR0cEFwaS5kZWZhdWx0U3RhZ2U/Lm5vZGUuZGVmYXVsdENoaWxkIGFzIENmblN0YWdlO1xuICAgIHN0YWdlLmFjY2Vzc0xvZ1NldHRpbmdzID0ge1xuICAgICAgZGVzdGluYXRpb25Bcm46IGFjY2Vzc0xvZ3MubG9nR3JvdXBBcm4sXG4gICAgICBmb3JtYXQ6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgcmVxdWVzdElkOiBcIiRjb250ZXh0LnJlcXVlc3RJZFwiLFxuICAgICAgICB1c2VyQWdlbnQ6IFwiJGNvbnRleHQuaWRlbnRpdHkudXNlckFnZW50XCIsXG4gICAgICAgIHNvdXJjZUlwOiBcIiRjb250ZXh0LmlkZW50aXR5LnNvdXJjZUlwXCIsXG4gICAgICAgIHJlcXVlc3RUaW1lOiBcIiRjb250ZXh0LnJlcXVlc3RUaW1lXCIsXG4gICAgICAgIHJlcXVlc3RUaW1lRXBvY2g6IFwiJGNvbnRleHQucmVxdWVzdFRpbWVFcG9jaFwiLFxuICAgICAgICBodHRwTWV0aG9kOiBcIiRjb250ZXh0Lmh0dHBNZXRob2RcIixcbiAgICAgICAgcGF0aDogXCIkY29udGV4dC5wYXRoXCIsXG4gICAgICAgIHN0YXR1czogXCIkY29udGV4dC5zdGF0dXNcIixcbiAgICAgICAgcHJvdG9jb2w6IFwiJGNvbnRleHQucHJvdG9jb2xcIixcbiAgICAgICAgcmVzcG9uc2VMZW5ndGg6IFwiJGNvbnRleHQucmVzcG9uc2VMZW5ndGhcIixcbiAgICAgICAgZG9tYWluTmFtZTogXCIkY29udGV4dC5kb21haW5OYW1lXCIsXG4gICAgICB9KSxcbiAgICB9O1xuXG4gICAgLy8gQWxsb3cgd3JpdGluZyBhY2Nlc3MgbG9ncywgbWFuYWdlZFxuICAgIGNvbnN0IHJvbGUgPSBuZXcgUm9sZSh0aGlzLCBcIkFtYXpvbkFQSUdhdGV3YXlQdXNoVG9DbG91ZFdhdGNoTG9nc1wiLCB7XG4gICAgICBhc3N1bWVkQnk6IG5ldyBTZXJ2aWNlUHJpbmNpcGFsKFwiYXBpZ2F0ZXdheS5hbWF6b25hd3MuY29tXCIpLFxuICAgIH0pO1xuXG4gICAgYWNjZXNzTG9ncy5ncmFudFdyaXRlKHJvbGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRKV1RBdXRob3JpemVyKHtcbiAgICBjb2duaXRvVXNlclBvb2xJZFBhcmFtZXRlck5hbWUgPSBERUZBVUxUX0NPR05JVE9fVVNFUl9QT09MX0lEX1BBUkFNRVRFUl9OQU1FLFxuICAgIGNvZ25pdG9DbGllbnRJZFBhcmFtZXRlck5hbWVBcnJheSxcbiAgfTogT3JjYUJ1c0FwaUdhdGV3YXlQcm9wcyk6IEh0dHBKd3RBdXRob3JpemVyIHtcbiAgICAvKipcbiAgICAgKiBGSVhNRSBPbmUgZmluZSBkYXkgaW4gZnV0dXJlIHdoZW4gd2UgaGF2ZSBwcm9wZXIgQ29nbml0byBBQUkgc2V0dXAuXG4gICAgICogIEZvciB0aGUgbW9tZW50LCB3ZSBsZXZlcmFnZSBQb3J0YWwgYW5kIGVzdGFibGlzaGVkIENvZ25pdG8gaW5mcmFzdHJ1Y3R1cmUuXG4gICAgICogIFNlZSBodHRwczovL2dpdGh1Yi5jb20vdW1jY3Ivb3JjYWJ1cy9pc3N1ZXMvMTAyXG4gICAgICovXG5cbiAgICBjb25zdCB1c2VyUG9vbElkUGFyYW06IElTdHJpbmdQYXJhbWV0ZXIgPVxuICAgICAgU3RyaW5nUGFyYW1ldGVyLmZyb21TdHJpbmdQYXJhbWV0ZXJOYW1lKFxuICAgICAgICB0aGlzLFxuICAgICAgICBcIkNvZ25pdG9Vc2VyUG9vbElkUGFyYW1ldGVyXCIsXG4gICAgICAgIGNvZ25pdG9Vc2VyUG9vbElkUGFyYW1ldGVyTmFtZSxcbiAgICAgICk7XG5cbiAgICBjb25zdCBjbGllbnRJZFBhcmFtc0FycmF5OiBJU3RyaW5nUGFyYW1ldGVyW10gPVxuICAgICAgY29nbml0b0NsaWVudElkUGFyYW1ldGVyTmFtZUFycmF5Lm1hcCgobmFtZSkgPT5cbiAgICAgICAgYXdzX3NzbS5TdHJpbmdQYXJhbWV0ZXIuZnJvbVN0cmluZ1BhcmFtZXRlck5hbWUoXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBgQ29nbml0b0NsaWVudElkJHtuYW1lfVBhcmFtZXRlcmAsXG4gICAgICAgICAgbmFtZSxcbiAgICAgICAgKSxcbiAgICAgICk7XG5cbiAgICBjb25zdCBpc3N1ZXIgPVxuICAgICAgXCJodHRwczovL2NvZ25pdG8taWRwLlwiICtcbiAgICAgIHRoaXMucmVnaW9uICtcbiAgICAgIFwiLmFtYXpvbmF3cy5jb20vXCIgK1xuICAgICAgdXNlclBvb2xJZFBhcmFtLnN0cmluZ1ZhbHVlO1xuXG4gICAgcmV0dXJuIG5ldyBIdHRwSnd0QXV0aG9yaXplcihcIlBvcnRhbEF1dGhvcml6ZXJcIiwgaXNzdWVyLCB7XG4gICAgICBqd3RBdWRpZW5jZTogY2xpZW50SWRQYXJhbXNBcnJheS5tYXAoKHBhcmFtKSA9PiBwYXJhbS5zdHJpbmdWYWx1ZSksXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBIVFRQIExhbWJkYSBBdXRob3JpemVyIGRlZmluZWQgaW4gdGhlIGF1dGhvcml6YXRpb24gc3RhY2sgbWFuYWdlclxuICAgKiBAcGFyYW0gYXV0aFN0YWNrSHR0cExhbWJkYUF1dGhvcml6ZXJQYXJhbWV0ZXJOYW1lIFRoZSBTU00gUGFyYW1ldGVyIE5hbWUgdGhhdCBzdG9yZXMgdGhlIEFSTiBvZiB0aGUgbGFtYmRhIGF1dGhvcml6ZXJcbiAgICogQHJldHVybnNcbiAgICovXG4gIHByaXZhdGUgZ2V0QXV0aFN0YWNrSFRUUExhbWJkYUF1dGhvcml6ZXIoKSB7XG4gICAgY29uc3QgbGFtYmRhQXJuID0gU3RyaW5nUGFyYW1ldGVyLnZhbHVlRm9yU3RyaW5nUGFyYW1ldGVyKFxuICAgICAgdGhpcyxcbiAgICAgIFwiL29yY2FidXMvYXV0aG9yaXphdGlvbi1zdGFjay9odHRwLWxhbWJkYS1hdXRob3JpemF0aW9uLWFyblwiLFxuICAgICk7XG5cbiAgICAvLyBHZXQgdGhlIGxhbWJkYSBIVFRQIGF1dGhvcml6ZXIgZGVmaW5lZCBpbiB0aGUgYXV0aG9yaXphdGlvbiBzdGFjayBtYW5hZ2VyXG4gICAgY29uc3QgbGFtYmRhQXV0aG9yaXplciA9IEZ1bmN0aW9uLmZyb21GdW5jdGlvbkF0dHJpYnV0ZXMoXG4gICAgICB0aGlzLFxuICAgICAgXCJBdXRoU3RhY2tIVFRQTGFtYmRhQXV0aG9yaXplclwiLFxuICAgICAge1xuICAgICAgICBmdW5jdGlvbkFybjogbGFtYmRhQXJuLFxuICAgICAgICBzYW1lRW52aXJvbm1lbnQ6IHRydWUsXG4gICAgICB9LFxuICAgICk7XG5cbiAgICByZXR1cm4gbmV3IEh0dHBMYW1iZGFBdXRob3JpemVyKFxuICAgICAgXCJBdXRoU3RhY2tMYW1iZGFIdHRwQXV0aG9yaXplclwiLFxuICAgICAgbGFtYmRhQXV0aG9yaXplcixcbiAgICAgIHtcbiAgICAgICAgYXV0aG9yaXplck5hbWU6IFwiQXV0aFN0YWNrSFRUUExhbWJkYUF1dGhvcml6ZXJcIixcbiAgICAgICAgcmVzcG9uc2VUeXBlczogW0h0dHBMYW1iZGFSZXNwb25zZVR5cGUuU0lNUExFXSxcbiAgICAgIH0sXG4gICAgKTtcbiAgfVxufVxuIl19
@@ -15,7 +15,8 @@ export declare const DEFAULT_LOGS_CONFIG: Record<StageName, LogsConfigProps>;
15
15
  export declare const DEFAULT_ALLOW_CORS_ORIGINS: Record<StageName, string[]>;
16
16
  export declare const COGNITO_PORTAL_APP_CLIENT_ID_PARAMETER_NAME = "/data_portal/client/data2/cog_app_client_id_stage";
17
17
  export declare const COGNITO_ORCAUI_APP_CLIENT_ID_PARAMETER_NAME = "/orcaui/cog_app_client_id_stage";
18
- export declare const DEFAULT_COGNITO_CLIENT_ID_PARAMETER_NAME_ARRAY: string[];
18
+ export declare const COGNITO_LOCAL_APP_CLIENT_ID_PARAMETER_NAME = "/data_portal/client/cog_app_client_id_local";
19
+ export declare const COGNITO_CLIENT_ID_PARAMETER_NAME_ARRAY: Record<StageName, string[]>;
19
20
  export declare const DEFAULT_COGNITO_USER_POOL_ID_PARAMETER_NAME = "/data_portal/client/cog_user_pool_id";
20
21
  export declare const CERTIFICATE_ARN_PARAMETER_NAME = "/umccr/certificate_arn";
21
22
  export declare const HOSTED_ZONE_DOMAIN_PARAMETER_NAME = "/hosted_zone/umccr/name";
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AUTH_STACK_HTTP_LAMBDA_AUTHORIZER_PARAMETER_NAME = exports.getDefaultApiGatewayConfiguration = exports.HOSTED_ZONE_ID_PARAMETER_NAME = exports.HOSTED_ZONE_DOMAIN_PARAMETER_NAME = exports.CERTIFICATE_ARN_PARAMETER_NAME = exports.DEFAULT_COGNITO_USER_POOL_ID_PARAMETER_NAME = exports.DEFAULT_COGNITO_CLIENT_ID_PARAMETER_NAME_ARRAY = exports.COGNITO_ORCAUI_APP_CLIENT_ID_PARAMETER_NAME = exports.COGNITO_PORTAL_APP_CLIENT_ID_PARAMETER_NAME = exports.DEFAULT_ALLOW_CORS_ORIGINS = exports.DEFAULT_LOGS_CONFIG = void 0;
3
+ exports.AUTH_STACK_HTTP_LAMBDA_AUTHORIZER_PARAMETER_NAME = exports.getDefaultApiGatewayConfiguration = exports.HOSTED_ZONE_ID_PARAMETER_NAME = exports.HOSTED_ZONE_DOMAIN_PARAMETER_NAME = exports.CERTIFICATE_ARN_PARAMETER_NAME = exports.DEFAULT_COGNITO_USER_POOL_ID_PARAMETER_NAME = exports.COGNITO_CLIENT_ID_PARAMETER_NAME_ARRAY = exports.COGNITO_LOCAL_APP_CLIENT_ID_PARAMETER_NAME = exports.COGNITO_ORCAUI_APP_CLIENT_ID_PARAMETER_NAME = exports.COGNITO_PORTAL_APP_CLIENT_ID_PARAMETER_NAME = exports.DEFAULT_ALLOW_CORS_ORIGINS = exports.DEFAULT_LOGS_CONFIG = void 0;
4
4
  const aws_logs_1 = require("aws-cdk-lib/aws-logs");
5
5
  const aws_cdk_lib_1 = require("aws-cdk-lib");
6
6
  exports.DEFAULT_LOGS_CONFIG = {
@@ -22,19 +22,32 @@ exports.DEFAULT_ALLOW_CORS_ORIGINS = {
22
22
  GAMMA: ["https://orcaui.stg.umccr.org"],
23
23
  PROD: ["https://orcaui.prod.umccr.org", "https://orcaui.umccr.org"],
24
24
  };
25
+ // portal - TokenServiceStack
25
26
  exports.COGNITO_PORTAL_APP_CLIENT_ID_PARAMETER_NAME = "/data_portal/client/data2/cog_app_client_id_stage";
26
27
  exports.COGNITO_ORCAUI_APP_CLIENT_ID_PARAMETER_NAME = "/orcaui/cog_app_client_id_stage";
27
- exports.DEFAULT_COGNITO_CLIENT_ID_PARAMETER_NAME_ARRAY = [
28
- exports.COGNITO_PORTAL_APP_CLIENT_ID_PARAMETER_NAME, // portal - TokenServiceStack
29
- exports.COGNITO_ORCAUI_APP_CLIENT_ID_PARAMETER_NAME, // orcaui - https://github.com/umccr/orca-ui
28
+ // localhost development
29
+ exports.COGNITO_LOCAL_APP_CLIENT_ID_PARAMETER_NAME = "/data_portal/client/cog_app_client_id_local";
30
+ // Base client IDs used across all environments
31
+ const BASE_COGNITO_CLIENT_ID_PARAMETER_NAMES = [
32
+ exports.COGNITO_PORTAL_APP_CLIENT_ID_PARAMETER_NAME,
33
+ exports.COGNITO_ORCAUI_APP_CLIENT_ID_PARAMETER_NAME,
30
34
  ];
35
+ // Environment-specific client ID arrays
36
+ exports.COGNITO_CLIENT_ID_PARAMETER_NAME_ARRAY = {
37
+ BETA: [
38
+ ...BASE_COGNITO_CLIENT_ID_PARAMETER_NAMES,
39
+ exports.COGNITO_LOCAL_APP_CLIENT_ID_PARAMETER_NAME,
40
+ ],
41
+ GAMMA: BASE_COGNITO_CLIENT_ID_PARAMETER_NAMES,
42
+ PROD: BASE_COGNITO_CLIENT_ID_PARAMETER_NAMES,
43
+ };
31
44
  exports.DEFAULT_COGNITO_USER_POOL_ID_PARAMETER_NAME = "/data_portal/client/cog_user_pool_id";
32
45
  exports.CERTIFICATE_ARN_PARAMETER_NAME = "/umccr/certificate_arn";
33
46
  exports.HOSTED_ZONE_DOMAIN_PARAMETER_NAME = "/hosted_zone/umccr/name";
34
47
  exports.HOSTED_ZONE_ID_PARAMETER_NAME = "/hosted_zone/umccr/id";
35
48
  const getDefaultApiGatewayConfiguration = (stage) => {
36
49
  return {
37
- cognitoClientIdParameterNameArray: exports.DEFAULT_COGNITO_CLIENT_ID_PARAMETER_NAME_ARRAY,
50
+ cognitoClientIdParameterNameArray: exports.COGNITO_CLIENT_ID_PARAMETER_NAME_ARRAY[stage],
38
51
  corsAllowOrigins: exports.DEFAULT_ALLOW_CORS_ORIGINS[stage],
39
52
  apiGwLogsConfig: exports.DEFAULT_LOGS_CONFIG[stage],
40
53
  };
@@ -44,4 +57,4 @@ exports.getDefaultApiGatewayConfiguration = getDefaultApiGatewayConfiguration;
44
57
  * The SSM parameter name for the HTTP Lambda authorizer ARN.
45
58
  */
46
59
  exports.AUTH_STACK_HTTP_LAMBDA_AUTHORIZER_PARAMETER_NAME = "/orcabus/authorization-stack/http-lambda-authorization-arn";
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1EQUFxRDtBQUNyRCw2Q0FBNEM7QUFlL0IsUUFBQSxtQkFBbUIsR0FBdUM7SUFDckUsSUFBSSxFQUFFO1FBQ0osU0FBUyxFQUFFLHdCQUFhLENBQUMsU0FBUztRQUNsQyxhQUFhLEVBQUUsMkJBQWEsQ0FBQyxPQUFPO0tBQ3JDO0lBQ0QsS0FBSyxFQUFFO1FBQ0wsU0FBUyxFQUFFLHdCQUFhLENBQUMsU0FBUztRQUNsQyxhQUFhLEVBQUUsMkJBQWEsQ0FBQyxPQUFPO0tBQ3JDO0lBQ0QsSUFBSSxFQUFFO1FBQ0osU0FBUyxFQUFFLHdCQUFhLENBQUMsU0FBUztRQUNsQyxhQUFhLEVBQUUsMkJBQWEsQ0FBQyxNQUFNO0tBQ3BDO0NBQ0YsQ0FBQztBQUVXLFFBQUEsMEJBQTBCLEdBQWdDO0lBQ3JFLElBQUksRUFBRSxDQUFDLDhCQUE4QixFQUFFLHVCQUF1QixDQUFDO0lBQy9ELEtBQUssRUFBRSxDQUFDLDhCQUE4QixDQUFDO0lBQ3ZDLElBQUksRUFBRSxDQUFDLCtCQUErQixFQUFFLDBCQUEwQixDQUFDO0NBQ3BFLENBQUM7QUFFVyxRQUFBLDJDQUEyQyxHQUN0RCxtREFBbUQsQ0FBQztBQUN6QyxRQUFBLDJDQUEyQyxHQUN0RCxpQ0FBaUMsQ0FBQztBQUN2QixRQUFBLDhDQUE4QyxHQUFHO0lBQzVELG1EQUEyQyxFQUFFLDZCQUE2QjtJQUMxRSxtREFBMkMsRUFBRSw0Q0FBNEM7Q0FDMUYsQ0FBQztBQUVXLFFBQUEsMkNBQTJDLEdBQ3RELHNDQUFzQyxDQUFDO0FBRTVCLFFBQUEsOEJBQThCLEdBQUcsd0JBQXdCLENBQUM7QUFDMUQsUUFBQSxpQ0FBaUMsR0FBRyx5QkFBeUIsQ0FBQztBQUM5RCxRQUFBLDZCQUE2QixHQUFHLHVCQUF1QixDQUFDO0FBRTlELE1BQU0saUNBQWlDLEdBQUcsQ0FBQyxLQUFnQixFQUFFLEVBQUU7SUFDcEUsT0FBTztRQUNMLGlDQUFpQyxFQUMvQixzREFBOEM7UUFDaEQsZ0JBQWdCLEVBQUUsa0NBQTBCLENBQUMsS0FBSyxDQUFDO1FBQ25ELGVBQWUsRUFBRSwyQkFBbUIsQ0FBQyxLQUFLLENBQUM7S0FDNUMsQ0FBQztBQUNKLENBQUMsQ0FBQztBQVBXLFFBQUEsaUNBQWlDLHFDQU81QztBQUVGOztHQUVHO0FBQ1UsUUFBQSxnREFBZ0QsR0FDM0QsNERBQTRELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZXRlbnRpb25EYXlzIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sb2dzXCI7XG5pbXBvcnQgeyBSZW1vdmFsUG9saWN5IH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBTdGFnZU5hbWUgfSBmcm9tIFwiLi4vc2hhcmVkLWNvbmZpZy9hY2NvdW50c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIExvZ3NDb25maWdQcm9wcyB7XG4gIC8qKlxuICAgKiBSZXRlbnRpb24gcG9saWN5IGZvciB0aGUgQVBJIEdhdGV3YXkgbG9ncy5cbiAgICovXG4gIHJlYWRvbmx5IHJldGVudGlvbjogUmV0ZW50aW9uRGF5cztcblxuICAvKipcbiAgICogUmVtb3ZhbCBwb2xpY3kgZm9yIHRoZSBsb2cgZ3JvdXBcbiAgICovXG4gIHJlYWRvbmx5IHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3k7XG59XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0xPR1NfQ09ORklHOiBSZWNvcmQ8U3RhZ2VOYW1lLCBMb2dzQ29uZmlnUHJvcHM+ID0ge1xuICBCRVRBOiB7XG4gICAgcmV0ZW50aW9uOiBSZXRlbnRpb25EYXlzLlRXT19XRUVLUyxcbiAgICByZW1vdmFsUG9saWN5OiBSZW1vdmFsUG9saWN5LkRFU1RST1ksXG4gIH0sXG4gIEdBTU1BOiB7XG4gICAgcmV0ZW50aW9uOiBSZXRlbnRpb25EYXlzLlRXT19XRUVLUyxcbiAgICByZW1vdmFsUG9saWN5OiBSZW1vdmFsUG9saWN5LkRFU1RST1ksXG4gIH0sXG4gIFBST0Q6IHtcbiAgICByZXRlbnRpb246IFJldGVudGlvbkRheXMuVFdPX1lFQVJTLFxuICAgIHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3kuUkVUQUlOLFxuICB9LFxufTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfQUxMT1dfQ09SU19PUklHSU5TOiBSZWNvcmQ8U3RhZ2VOYW1lLCBzdHJpbmdbXT4gPSB7XG4gIEJFVEE6IFtcImh0dHBzOi8vb3JjYXVpLmRldi51bWNjci5vcmdcIiwgXCJodHRwOi8vbG9jYWxob3N0OjMwMDBcIl0sXG4gIEdBTU1BOiBbXCJodHRwczovL29yY2F1aS5zdGcudW1jY3Iub3JnXCJdLFxuICBQUk9EOiBbXCJodHRwczovL29yY2F1aS5wcm9kLnVtY2NyLm9yZ1wiLCBcImh0dHBzOi8vb3JjYXVpLnVtY2NyLm9yZ1wiXSxcbn07XG5cbmV4cG9ydCBjb25zdCBDT0dOSVRPX1BPUlRBTF9BUFBfQ0xJRU5UX0lEX1BBUkFNRVRFUl9OQU1FID1cbiAgXCIvZGF0YV9wb3J0YWwvY2xpZW50L2RhdGEyL2NvZ19hcHBfY2xpZW50X2lkX3N0YWdlXCI7XG5leHBvcnQgY29uc3QgQ09HTklUT19PUkNBVUlfQVBQX0NMSUVOVF9JRF9QQVJBTUVURVJfTkFNRSA9XG4gIFwiL29yY2F1aS9jb2dfYXBwX2NsaWVudF9pZF9zdGFnZVwiO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfQ09HTklUT19DTElFTlRfSURfUEFSQU1FVEVSX05BTUVfQVJSQVkgPSBbXG4gIENPR05JVE9fUE9SVEFMX0FQUF9DTElFTlRfSURfUEFSQU1FVEVSX05BTUUsIC8vIHBvcnRhbCAtIFRva2VuU2VydmljZVN0YWNrXG4gIENPR05JVE9fT1JDQVVJX0FQUF9DTElFTlRfSURfUEFSQU1FVEVSX05BTUUsIC8vIG9yY2F1aSAtIGh0dHBzOi8vZ2l0aHViLmNvbS91bWNjci9vcmNhLXVpXG5dO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9DT0dOSVRPX1VTRVJfUE9PTF9JRF9QQVJBTUVURVJfTkFNRSA9XG4gIFwiL2RhdGFfcG9ydGFsL2NsaWVudC9jb2dfdXNlcl9wb29sX2lkXCI7XG5cbmV4cG9ydCBjb25zdCBDRVJUSUZJQ0FURV9BUk5fUEFSQU1FVEVSX05BTUUgPSBcIi91bWNjci9jZXJ0aWZpY2F0ZV9hcm5cIjtcbmV4cG9ydCBjb25zdCBIT1NURURfWk9ORV9ET01BSU5fUEFSQU1FVEVSX05BTUUgPSBcIi9ob3N0ZWRfem9uZS91bWNjci9uYW1lXCI7XG5leHBvcnQgY29uc3QgSE9TVEVEX1pPTkVfSURfUEFSQU1FVEVSX05BTUUgPSBcIi9ob3N0ZWRfem9uZS91bWNjci9pZFwiO1xuXG5leHBvcnQgY29uc3QgZ2V0RGVmYXVsdEFwaUdhdGV3YXlDb25maWd1cmF0aW9uID0gKHN0YWdlOiBTdGFnZU5hbWUpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBjb2duaXRvQ2xpZW50SWRQYXJhbWV0ZXJOYW1lQXJyYXk6XG4gICAgICBERUZBVUxUX0NPR05JVE9fQ0xJRU5UX0lEX1BBUkFNRVRFUl9OQU1FX0FSUkFZLFxuICAgIGNvcnNBbGxvd09yaWdpbnM6IERFRkFVTFRfQUxMT1dfQ09SU19PUklHSU5TW3N0YWdlXSxcbiAgICBhcGlHd0xvZ3NDb25maWc6IERFRkFVTFRfTE9HU19DT05GSUdbc3RhZ2VdLFxuICB9O1xufTtcblxuLyoqXG4gKiBUaGUgU1NNIHBhcmFtZXRlciBuYW1lIGZvciB0aGUgSFRUUCBMYW1iZGEgYXV0aG9yaXplciBBUk4uXG4gKi9cbmV4cG9ydCBjb25zdCBBVVRIX1NUQUNLX0hUVFBfTEFNQkRBX0FVVEhPUklaRVJfUEFSQU1FVEVSX05BTUUgPVxuICBcIi9vcmNhYnVzL2F1dGhvcml6YXRpb24tc3RhY2svaHR0cC1sYW1iZGEtYXV0aG9yaXphdGlvbi1hcm5cIjtcbiJdfQ==
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1EQUFxRDtBQUNyRCw2Q0FBNEM7QUFlL0IsUUFBQSxtQkFBbUIsR0FBdUM7SUFDckUsSUFBSSxFQUFFO1FBQ0osU0FBUyxFQUFFLHdCQUFhLENBQUMsU0FBUztRQUNsQyxhQUFhLEVBQUUsMkJBQWEsQ0FBQyxPQUFPO0tBQ3JDO0lBQ0QsS0FBSyxFQUFFO1FBQ0wsU0FBUyxFQUFFLHdCQUFhLENBQUMsU0FBUztRQUNsQyxhQUFhLEVBQUUsMkJBQWEsQ0FBQyxPQUFPO0tBQ3JDO0lBQ0QsSUFBSSxFQUFFO1FBQ0osU0FBUyxFQUFFLHdCQUFhLENBQUMsU0FBUztRQUNsQyxhQUFhLEVBQUUsMkJBQWEsQ0FBQyxNQUFNO0tBQ3BDO0NBQ0YsQ0FBQztBQUVXLFFBQUEsMEJBQTBCLEdBQWdDO0lBQ3JFLElBQUksRUFBRSxDQUFDLDhCQUE4QixFQUFFLHVCQUF1QixDQUFDO0lBQy9ELEtBQUssRUFBRSxDQUFDLDhCQUE4QixDQUFDO0lBQ3ZDLElBQUksRUFBRSxDQUFDLCtCQUErQixFQUFFLDBCQUEwQixDQUFDO0NBQ3BFLENBQUM7QUFFRiw2QkFBNkI7QUFDaEIsUUFBQSwyQ0FBMkMsR0FDdEQsbURBQW1ELENBQUM7QUFFekMsUUFBQSwyQ0FBMkMsR0FDdEQsaUNBQWlDLENBQUM7QUFFcEMsd0JBQXdCO0FBQ1gsUUFBQSwwQ0FBMEMsR0FDckQsNkNBQTZDLENBQUM7QUFFaEQsK0NBQStDO0FBQy9DLE1BQU0sc0NBQXNDLEdBQUc7SUFDN0MsbURBQTJDO0lBQzNDLG1EQUEyQztDQUM1QyxDQUFDO0FBRUYsd0NBQXdDO0FBQzNCLFFBQUEsc0NBQXNDLEdBRy9DO0lBQ0YsSUFBSSxFQUFFO1FBQ0osR0FBRyxzQ0FBc0M7UUFDekMsa0RBQTBDO0tBQzNDO0lBQ0QsS0FBSyxFQUFFLHNDQUFzQztJQUM3QyxJQUFJLEVBQUUsc0NBQXNDO0NBQzdDLENBQUM7QUFFVyxRQUFBLDJDQUEyQyxHQUN0RCxzQ0FBc0MsQ0FBQztBQUU1QixRQUFBLDhCQUE4QixHQUFHLHdCQUF3QixDQUFDO0FBQzFELFFBQUEsaUNBQWlDLEdBQUcseUJBQXlCLENBQUM7QUFDOUQsUUFBQSw2QkFBNkIsR0FBRyx1QkFBdUIsQ0FBQztBQUU5RCxNQUFNLGlDQUFpQyxHQUFHLENBQUMsS0FBZ0IsRUFBRSxFQUFFO0lBQ3BFLE9BQU87UUFDTCxpQ0FBaUMsRUFDL0IsOENBQXNDLENBQUMsS0FBSyxDQUFDO1FBQy9DLGdCQUFnQixFQUFFLGtDQUEwQixDQUFDLEtBQUssQ0FBQztRQUNuRCxlQUFlLEVBQUUsMkJBQW1CLENBQUMsS0FBSyxDQUFDO0tBQzVDLENBQUM7QUFDSixDQUFDLENBQUM7QUFQVyxRQUFBLGlDQUFpQyxxQ0FPNUM7QUFFRjs7R0FFRztBQUNVLFFBQUEsZ0RBQWdELEdBQzNELDREQUE0RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmV0ZW50aW9uRGF5cyB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbG9nc1wiO1xuaW1wb3J0IHsgUmVtb3ZhbFBvbGljeSB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgU3RhZ2VOYW1lIH0gZnJvbSBcIi4uL3NoYXJlZC1jb25maWcvYWNjb3VudHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBMb2dzQ29uZmlnUHJvcHMge1xuICAvKipcbiAgICogUmV0ZW50aW9uIHBvbGljeSBmb3IgdGhlIEFQSSBHYXRld2F5IGxvZ3MuXG4gICAqL1xuICByZWFkb25seSByZXRlbnRpb246IFJldGVudGlvbkRheXM7XG5cbiAgLyoqXG4gICAqIFJlbW92YWwgcG9saWN5IGZvciB0aGUgbG9nIGdyb3VwXG4gICAqL1xuICByZWFkb25seSByZW1vdmFsUG9saWN5OiBSZW1vdmFsUG9saWN5O1xufVxuXG5leHBvcnQgY29uc3QgREVGQVVMVF9MT0dTX0NPTkZJRzogUmVjb3JkPFN0YWdlTmFtZSwgTG9nc0NvbmZpZ1Byb3BzPiA9IHtcbiAgQkVUQToge1xuICAgIHJldGVudGlvbjogUmV0ZW50aW9uRGF5cy5UV09fV0VFS1MsXG4gICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICB9LFxuICBHQU1NQToge1xuICAgIHJldGVudGlvbjogUmV0ZW50aW9uRGF5cy5UV09fV0VFS1MsXG4gICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICB9LFxuICBQUk9EOiB7XG4gICAgcmV0ZW50aW9uOiBSZXRlbnRpb25EYXlzLlRXT19ZRUFSUyxcbiAgICByZW1vdmFsUG9saWN5OiBSZW1vdmFsUG9saWN5LlJFVEFJTixcbiAgfSxcbn07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0FMTE9XX0NPUlNfT1JJR0lOUzogUmVjb3JkPFN0YWdlTmFtZSwgc3RyaW5nW10+ID0ge1xuICBCRVRBOiBbXCJodHRwczovL29yY2F1aS5kZXYudW1jY3Iub3JnXCIsIFwiaHR0cDovL2xvY2FsaG9zdDozMDAwXCJdLFxuICBHQU1NQTogW1wiaHR0cHM6Ly9vcmNhdWkuc3RnLnVtY2NyLm9yZ1wiXSxcbiAgUFJPRDogW1wiaHR0cHM6Ly9vcmNhdWkucHJvZC51bWNjci5vcmdcIiwgXCJodHRwczovL29yY2F1aS51bWNjci5vcmdcIl0sXG59O1xuXG4vLyBwb3J0YWwgLSBUb2tlblNlcnZpY2VTdGFja1xuZXhwb3J0IGNvbnN0IENPR05JVE9fUE9SVEFMX0FQUF9DTElFTlRfSURfUEFSQU1FVEVSX05BTUUgPVxuICBcIi9kYXRhX3BvcnRhbC9jbGllbnQvZGF0YTIvY29nX2FwcF9jbGllbnRfaWRfc3RhZ2VcIjtcblxuZXhwb3J0IGNvbnN0IENPR05JVE9fT1JDQVVJX0FQUF9DTElFTlRfSURfUEFSQU1FVEVSX05BTUUgPVxuICBcIi9vcmNhdWkvY29nX2FwcF9jbGllbnRfaWRfc3RhZ2VcIjtcblxuLy8gbG9jYWxob3N0IGRldmVsb3BtZW50XG5leHBvcnQgY29uc3QgQ09HTklUT19MT0NBTF9BUFBfQ0xJRU5UX0lEX1BBUkFNRVRFUl9OQU1FID1cbiAgXCIvZGF0YV9wb3J0YWwvY2xpZW50L2NvZ19hcHBfY2xpZW50X2lkX2xvY2FsXCI7XG5cbi8vIEJhc2UgY2xpZW50IElEcyB1c2VkIGFjcm9zcyBhbGwgZW52aXJvbm1lbnRzXG5jb25zdCBCQVNFX0NPR05JVE9fQ0xJRU5UX0lEX1BBUkFNRVRFUl9OQU1FUyA9IFtcbiAgQ09HTklUT19QT1JUQUxfQVBQX0NMSUVOVF9JRF9QQVJBTUVURVJfTkFNRSxcbiAgQ09HTklUT19PUkNBVUlfQVBQX0NMSUVOVF9JRF9QQVJBTUVURVJfTkFNRSxcbl07XG5cbi8vIEVudmlyb25tZW50LXNwZWNpZmljIGNsaWVudCBJRCBhcnJheXNcbmV4cG9ydCBjb25zdCBDT0dOSVRPX0NMSUVOVF9JRF9QQVJBTUVURVJfTkFNRV9BUlJBWTogUmVjb3JkPFxuICBTdGFnZU5hbWUsXG4gIHN0cmluZ1tdXG4+ID0ge1xuICBCRVRBOiBbXG4gICAgLi4uQkFTRV9DT0dOSVRPX0NMSUVOVF9JRF9QQVJBTUVURVJfTkFNRVMsXG4gICAgQ09HTklUT19MT0NBTF9BUFBfQ0xJRU5UX0lEX1BBUkFNRVRFUl9OQU1FLFxuICBdLFxuICBHQU1NQTogQkFTRV9DT0dOSVRPX0NMSUVOVF9JRF9QQVJBTUVURVJfTkFNRVMsXG4gIFBST0Q6IEJBU0VfQ09HTklUT19DTElFTlRfSURfUEFSQU1FVEVSX05BTUVTLFxufTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfQ09HTklUT19VU0VSX1BPT0xfSURfUEFSQU1FVEVSX05BTUUgPVxuICBcIi9kYXRhX3BvcnRhbC9jbGllbnQvY29nX3VzZXJfcG9vbF9pZFwiO1xuXG5leHBvcnQgY29uc3QgQ0VSVElGSUNBVEVfQVJOX1BBUkFNRVRFUl9OQU1FID0gXCIvdW1jY3IvY2VydGlmaWNhdGVfYXJuXCI7XG5leHBvcnQgY29uc3QgSE9TVEVEX1pPTkVfRE9NQUlOX1BBUkFNRVRFUl9OQU1FID0gXCIvaG9zdGVkX3pvbmUvdW1jY3IvbmFtZVwiO1xuZXhwb3J0IGNvbnN0IEhPU1RFRF9aT05FX0lEX1BBUkFNRVRFUl9OQU1FID0gXCIvaG9zdGVkX3pvbmUvdW1jY3IvaWRcIjtcblxuZXhwb3J0IGNvbnN0IGdldERlZmF1bHRBcGlHYXRld2F5Q29uZmlndXJhdGlvbiA9IChzdGFnZTogU3RhZ2VOYW1lKSA9PiB7XG4gIHJldHVybiB7XG4gICAgY29nbml0b0NsaWVudElkUGFyYW1ldGVyTmFtZUFycmF5OlxuICAgICAgQ09HTklUT19DTElFTlRfSURfUEFSQU1FVEVSX05BTUVfQVJSQVlbc3RhZ2VdLFxuICAgIGNvcnNBbGxvd09yaWdpbnM6IERFRkFVTFRfQUxMT1dfQ09SU19PUklHSU5TW3N0YWdlXSxcbiAgICBhcGlHd0xvZ3NDb25maWc6IERFRkFVTFRfTE9HU19DT05GSUdbc3RhZ2VdLFxuICB9O1xufTtcblxuLyoqXG4gKiBUaGUgU1NNIHBhcmFtZXRlciBuYW1lIGZvciB0aGUgSFRUUCBMYW1iZGEgYXV0aG9yaXplciBBUk4uXG4gKi9cbmV4cG9ydCBjb25zdCBBVVRIX1NUQUNLX0hUVFBfTEFNQkRBX0FVVEhPUklaRVJfUEFSQU1FVEVSX05BTUUgPVxuICBcIi9vcmNhYnVzL2F1dGhvcml6YXRpb24tc3RhY2svaHR0cC1sYW1iZGEtYXV0aG9yaXphdGlvbi1hcm5cIjtcbiJdfQ==
@@ -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.32" };
16
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.deploymentPipeline.CrossDeploymentArtifactBucket", version: "0.0.34" };
17
17
  /**
18
18
  * The S3 bucket used to store artifacts for cross-deployment pipelines.
19
19
  */
@@ -12,6 +12,7 @@ const config_1 = require("./config");
12
12
  const aws_chatbot_1 = require("aws-cdk-lib/aws-chatbot");
13
13
  const aws_codestarnotifications_1 = require("aws-cdk-lib/aws-codestarnotifications");
14
14
  const artifact_bucket_1 = require("./artifact-bucket");
15
+ const aws_codepipeline_actions_1 = require("aws-cdk-lib/aws-codepipeline-actions");
15
16
  /**
16
17
  * The default partial build spec for the synth step in the pipeline.
17
18
  */
@@ -31,7 +32,7 @@ exports.DEFAULT_SYNTH_STEP_PARTIAL_BUILD_SPEC = {
31
32
  * before using this construct.
32
33
  */
33
34
  class DeploymentStackPipeline extends constructs_1.Construct {
34
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.deploymentPipeline.DeploymentStackPipeline", version: "0.0.32" };
35
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.deploymentPipeline.DeploymentStackPipeline", version: "0.0.34" };
35
36
  /**
36
37
  * The code pipeline construct that is created.
37
38
  */
@@ -117,7 +118,19 @@ class DeploymentStackPipeline extends constructs_1.Construct {
117
118
  };
118
119
  const stageEnv = props.stageEnv || defaultStageEnv;
119
120
  cdkPipeline.addStage(new DeploymentStage(this, "OrcaBusBeta", stageEnv.beta, props.stackName, props.stack, props.stackConfig.beta, props.githubRepo, props.githubBranch));
120
- cdkPipeline.addStage(new DeploymentStage(this, "OrcaBusGamma", stageEnv.gamma, props.stackName, props.stack, props.stackConfig.gamma, props.githubRepo, props.githubBranch), { post: [new pipelines_1.ManualApprovalStep("PromoteToProd")] });
121
+ cdkPipeline.addStage(new DeploymentStage(this, "OrcaBusGamma", stageEnv.gamma, props.stackName, props.stack, props.stackConfig.gamma, props.githubRepo, props.githubBranch), {
122
+ post: [
123
+ new ManualApprovalActionStep("PromoteToProd", {
124
+ actionName: "PromoteToProd",
125
+ // Custom steps bypass stage pre/post ordering, so runOrder must be explicitly set.
126
+ // Set to 5 to ensure this runs after all OrcaBusGamma stage steps complete.
127
+ // (Gamma deployment typically uses 2 steps, so 5 provides adequate buffer)
128
+ runOrder: 5,
129
+ // 60-minute timeout allows queued pipeline executions to proceed if approval expires
130
+ timeout: aws_cdk_lib_1.Duration.minutes(60),
131
+ }),
132
+ ],
133
+ });
121
134
  cdkPipeline.addStage(new DeploymentStage(this, "OrcaBusProd", stageEnv.prod, props.stackName, props.stack, props.stackConfig.prod, props.githubRepo, props.githubBranch));
122
135
  if (props.enableSlackNotification ?? true) {
123
136
  const alertsBuildSlackConfigArn = aws_ssm_1.StringParameter.valueForStringParameter(this, "/chatbot_arn/slack/alerts-build");
@@ -133,6 +146,26 @@ class DeploymentStackPipeline extends constructs_1.Construct {
133
146
  }
134
147
  }
135
148
  exports.DeploymentStackPipeline = DeploymentStackPipeline;
149
+ /**
150
+ * Custom manual approval step for CDK CodePipeline.
151
+ *
152
+ * This class bridges the gap to enable using ManualApprovalAction within a Step class,
153
+ * making it compatible with cdk.pipelines constructs.
154
+ *
155
+ * @param id - The unique identifier for the step.
156
+ * @param options - The properties for the manual approval action, including
157
+ */
158
+ class ManualApprovalActionStep extends pipelines_1.Step {
159
+ manualApprovalActionProps;
160
+ constructor(id, options) {
161
+ super(id);
162
+ this.manualApprovalActionProps = options;
163
+ }
164
+ produceAction(stage, options) {
165
+ stage.addAction(new aws_codepipeline_actions_1.ManualApprovalAction(this.manualApprovalActionProps));
166
+ return { runOrdersConsumed: 1 };
167
+ }
168
+ }
136
169
  class DeploymentStage extends aws_cdk_lib_1.Stage {
137
170
  constructor(scope, environmentName, env, stackName, stackClass, appStackProps, githubRepo, githubBranch) {
138
171
  super(scope, environmentName, { env: env });
@@ -152,4 +185,4 @@ class DeploymentStage extends aws_cdk_lib_1.Stage {
152
185
  });
153
186
  }
154
187
  }
155
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwaXBlbGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsMkNBQXVDO0FBQ3ZDLDZDQUF1RTtBQUN2RSw2REFJbUM7QUFDbkMsaURBQXNEO0FBQ3RELHFEQUsrQjtBQUMvQixtRUFLc0M7QUFDdEMscUNBSWtCO0FBQ2xCLHlEQUFvRTtBQUNwRSxxRkFBbUU7QUFDbkUsdURBQWtFO0FBRWxFOztHQUVHO0FBQ1UsUUFBQSxxQ0FBcUMsR0FBRztJQUNuRCxNQUFNLEVBQUU7UUFDTixPQUFPLEVBQUU7WUFDUCxrQkFBa0IsRUFBRTtnQkFDbEIsTUFBTSxFQUFFLE1BQU07YUFDZjtTQUNGO0tBQ0Y7Q0FDRixDQUFDO0FBc0hGOzs7OztHQUtHO0FBQ0gsTUFBYSx1QkFBd0IsU0FBUSxzQkFBUzs7SUFDcEQ7O09BRUc7SUFDTSxRQUFRLENBQVc7SUFFNUIsWUFDRSxLQUFnQixFQUNoQixFQUFVLEVBQ1YsS0FBbUM7UUFFbkMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLFdBQVcsR0FBRyx5QkFBZSxDQUFDLHVCQUF1QixDQUN6RCxJQUFJLEVBQ0osOEJBQThCLENBQy9CLENBQUM7UUFDRixNQUFNLHdCQUF3QixHQUFHLGNBQWMsQ0FBQztRQUNoRCxNQUFNLFVBQVUsR0FBRyw4QkFBa0IsQ0FBQyxVQUFVLENBQzlDLFdBQVcsS0FBSyxDQUFDLFVBQVUsRUFBRSxFQUM3QixLQUFLLENBQUMsWUFBWSxFQUNsQjtZQUNFLGFBQWEsRUFBRSxXQUFXO1lBQzFCLFVBQVUsRUFBRSx3QkFBd0I7WUFDcEMsYUFBYSxFQUFFLElBQUk7U0FDcEIsQ0FDRixDQUFDO1FBRUYsTUFBTSwrQkFBK0IsR0FDbkMsS0FBSyxDQUFDLDJCQUEyQixJQUFJLElBQUksQ0FBQztRQUM1QyxNQUFNLGNBQWMsR0FBRywrQkFBK0I7WUFDcEQsQ0FBQyxDQUFDLCtDQUE2QixD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RCxVQUFVLEVBQUUsc0NBQVUsQ0FBQyxJQUFJO2dCQUMzQixvQkFBb0IsRUFBRSxXQUFXLEtBQUssQ0FBQyxZQUFZLEVBQUU7YUFDdEQsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7O0FBdEtILDBEQXVLQztBQUVELE1BQU0sZUFBZ0IsU0FBUSxtQkFBSztJQUNqQyxZQUNFLEtBQWdCLEVBQ2hCLGVBQXVCLEVBQ3ZCLEdBQWdCLEVBQ2hCLFNBQWlCLEVBQ2pCLFVBQW1FLEVBQ25FLGFBQWtCLEVBQ2xCLFVBQWtCLEVBQ2xCLFlBQXFCO1FBRXJCLEtBQUssQ0FBQyxLQUFLLEVBQUUsZUFBZSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFFNUMsSUFBSSxNQUFNLEdBQUcsOEJBQThCLFVBQVUsRUFBRSxDQUFDO1FBQ3hELElBQUksWUFBWSxLQUFLLFNBQVMsSUFBSSxZQUFZLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDMUQsTUFBTSxHQUFHLEdBQUcsTUFBTSxTQUFTLFlBQVksRUFBRSxDQUFDO1FBQzVDLENBQUM7UUFFRCxJQUFJLFVBQVUsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFO1lBQzlCLEdBQUcsRUFBRSxHQUFHO1lBQ1IsSUFBSSxFQUFFO2dCQUNKLG1CQUFtQixFQUFFLFNBQVM7Z0JBQzlCLG1CQUFtQixFQUFFLEtBQUs7Z0JBQzFCLG1CQUFtQixFQUFFLFNBQVM7Z0JBQzlCLGtCQUFrQixFQUFFLE1BQU07YUFDM0I7WUFDRCxHQUFHLGFBQWE7U0FDakIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IEVudmlyb25tZW50LCBSZW1vdmFsUG9saWN5LCBTdGFjaywgU3RhZ2UgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7XG4gIEJ1aWxkU3BlYyxcbiAgQ29tcHV0ZVR5cGUsXG4gIExpbnV4QXJtQnVpbGRJbWFnZSxcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jb2RlYnVpbGRcIjtcbmltcG9ydCB7IFN0cmluZ1BhcmFtZXRlciB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtc3NtXCI7XG5pbXBvcnQge1xuICBDb2RlQnVpbGRTdGVwLFxuICBDb2RlUGlwZWxpbmUsXG4gIENvZGVQaXBlbGluZVNvdXJjZSxcbiAgTWFudWFsQXBwcm92YWxTdGVwLFxufSBmcm9tIFwiYXdzLWNkay1saWIvcGlwZWxpbmVzXCI7XG5pbXBvcnQge1xuICBQaXBlbGluZSxcbiAgQ2ZuUGlwZWxpbmUsXG4gIFBpcGVsaW5lVHlwZSxcbiAgUGlwZWxpbmVOb3RpZmljYXRpb25FdmVudHMsXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY29kZXBpcGVsaW5lXCI7XG5pbXBvcnQge1xuICBCRVRBX0VOVklST05NRU5ULFxuICBHQU1NQV9FTlZJUk9OTUVOVCxcbiAgUFJPRF9FTlZJUk9OTUVOVCxcbn0gZnJvbSBcIi4vY29uZmlnXCI7XG5pbXBvcnQgeyBTbGFja0NoYW5uZWxDb25maWd1cmF0aW9uIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jaGF0Ym90XCI7XG5pbXBvcnQgeyBEZXRhaWxUeXBlIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jb2Rlc3Rhcm5vdGlmaWNhdGlvbnNcIjtcbmltcG9ydCB7IENyb3NzRGVwbG95bWVudEFydGlmYWN0QnVja2V0IH0gZnJvbSBcIi4vYXJ0aWZhY3QtYnVja2V0XCI7XG5cbi8qKlxuICogVGhlIGRlZmF1bHQgcGFydGlhbCBidWlsZCBzcGVjIGZvciB0aGUgc3ludGggc3RlcCBpbiB0aGUgcGlwZWxpbmUuXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX1NZTlRIX1NURVBfUEFSVElBTF9CVUlMRF9TUEVDID0ge1xuICBwaGFzZXM6IHtcbiAgICBpbnN0YWxsOiB7XG4gICAgICBcInJ1bnRpbWUtdmVyc2lvbnNcIjoge1xuICAgICAgICBub2RlanM6IFwiMjIueFwiLFxuICAgICAgfSxcbiAgICB9LFxuICB9LFxufTtcblxuZXhwb3J0IGludGVyZmFjZSBTdGFnZUVudlByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBlbnZpcm9ubWVudCBmb3IgdGhlIGJldGEgc3RhZ2VcbiAgICovXG4gIHJlYWRvbmx5IGJldGE6IEVudmlyb25tZW50O1xuICAvKipcbiAgICogVGhlIGVudmlyb25tZW50IGZvciB0aGUgZ2FtbWEgc3RhZ2VcbiAgICovXG4gIHJlYWRvbmx5IGdhbW1hOiBFbnZpcm9ubWVudDtcbiAgLyoqXG4gICAqIFRoZSBlbnZpcm9ubWVudCBmb3IgdGhlIHByb2Qgc3RhZ2VcbiAgICovXG4gIHJlYWRvbmx5IHByb2Q6IEVudmlyb25tZW50O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0YWNrQ29uZmlnUHJvcHMge1xuICAvKipcbiAgICogVGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBiZXRhIChkZXYpIHN0YWdlXG4gICAqL1xuICByZWFkb25seSBiZXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAvKipcbiAgICogVGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBnYW1tYSAoc3RnKSBzdGFnZVxuICAgKi9cbiAgcmVhZG9ubHkgZ2FtbWE6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIC8qKlxuICAgKiBUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIHByb2Qgc3RhZ2VcbiAgICovXG4gIHJlYWRvbmx5IHByb2Q6IFJlY29yZDxzdHJpbmcsIGFueT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVwbG95bWVudFN0YWNrUGlwZWxpbmVQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgR2l0SHViIGJyYW5jaCBuYW1lIHRoZSBwaXBlbGluZSB3aWxsIGxpc3RlbiB0by5cbiAgICogQXZvaWQgdXNpbmcgYnJhbmNoIG5hbWVzIHRoYXQgY29udGFpbiBzcGVjaWFsIGNoYXJhY3RlcnMgc3VjaCBhcyBwYXJlbnRoZXNlcy5cbiAgICogQWxsb3dlZCBzcGVjaWFsIGNoYXJhY3RlcnMgYXJlOiBcIisgLSA9IC4gXyA6IC8gQFwiLlxuICAgKiBUaGlzIHJlc3RyaWN0aW9uIGlzIGR1ZSB0byBBV1MgcmVzb3VyY2UgdGFnZ2luZyByZXF1aXJlbWVudHMuXG4gICAqL1xuICByZWFkb25seSBnaXRodWJCcmFuY2g6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSByZXBvc2l0b3J5IG5hbWUgdGhhdCBleGlzdCBpbiB0aGUgJ09yY2FCdXMnIGdpdGh1YiBvcmdhbmlzYXRpb24uIGUuZy4gYGEtbWljcm8tc2VydmljZS1yZXBvYFxuICAgKi9cbiAgcmVhZG9ubHkgZ2l0aHViUmVwbzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHN0YWNrIHRvIHdoaWNoIHRoZSBwaXBlbGluZSB3aWxsIGJlIGRlcGxveWluZyB0byBpdHMgcmVzcGVjdGl2ZSBhY2NvdW50XG4gICAqL1xuICByZWFkb25seSBzdGFjazogYW55O1xuICAvKipcbiAgICogVGhlIHN0YWNrIG5hbWUgKGluIGNsb3VkZm9ybWF0aW9uKSBmb3IgdGhlIHN0YWNrIGRlZmluZWQgaW4gYHN0YWNrYC4gVGhlIHN0YWNrIG5hbWUgd2lsbCBwcmVwZW5kIHdpdGggdGhlIHN0YWdlXG4gICAqIG5hbWUgZS5nLiBgT3JjYUJ1c0JldGEtPHN0YWNrTmFtZT5gLCBgT3JjYUJ1c0dhbW1hLTxzdGFja05hbWU+YCwgYE9yY2FCdXNQcm9kLTxzdGFja05hbWU+YFxuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2tOYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgc3RhY2sgY29uZmlndXJhdGlvbi9jb25zdGFudHMgdGhhdCB3aWxsIGJlIHBhc3NlZCB0byB0aGUgc3RhY2sgcHJvcHMuXG4gICAqL1xuICByZWFkb25seSBzdGFja0NvbmZpZzogU3RhY2tDb25maWdQcm9wcztcbiAgLyoqXG4gICAqIFRoZSBwaXBlbGluZSBuYW1lIGluIHRoZSBiYXN0aW9uIGFjY291bnQuXG4gICAqL1xuICByZWFkb25seSBwaXBlbGluZU5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIHBhdHRlcm5zIG9mIEdpdCByZXBvc2l0b3J5IGZpbGUgcGF0aHMgdGhhdCwgd2hlbiBhIGNvbW1pdCBpcyBwdXNoZWQsIGFyZSB0byBiZSBJTkNMVURFRCBhcyBjcml0ZXJpYSB0aGF0IHN0YXJ0cyB0aGUgcGlwZWxpbmUuXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWNvZGVwaXBlbGluZS1waXBlbGluZS1naXRmaWxlcGF0aGZpbHRlcmNyaXRlcmlhLmh0bWxcbiAgICpcbiAgICovXG4gIHJlYWRvbmx5IGluY2x1ZGVkRmlsZVBhdGhzPzogc3RyaW5nW107XG4gIC8qKlxuICAgKiBUaGUgbGlzdCBvZiBwYXR0ZXJucyBvZiBHaXQgcmVwb3NpdG9yeSBmaWxlIHBhdGhzIHRoYXQsIHdoZW4gYSBjb21taXQgaXMgcHVzaGVkLCBhcmUgdG8gYmUgRVhDTFVERUQgZnJvbSBzdGFydGluZyB0aGUgcGlwZWxpbmUuXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWNvZGVwaXBlbGluZS1waXBlbGluZS1naXRmaWxlcGF0aGZpbHRlcmNyaXRlcmlhLmh0bWxcbiAgICpcbiAgICovXG4gIHJlYWRvbmx5IGV4Y2x1ZGVkRmlsZVBhdGhzPzogc3RyaW5nW107XG4gIC8qKlxuICAgKiBUaGUgY29tbWFuZCB0byBydW4gdG8gc3ludGggdGhlIGNkayBzdGFjayB3aGljaCBhbHNvIGluc3RhbGxpbmcgdGhlIGNkayBkZXBlbmRlbmNpZXMuIGUuZy4gW1wieWFybiBpbnN0YWxsIC0taW1tdXRhYmxlXCIsIFwieWFybiBjZGsgc3ludGhcIl1cbiAgICovXG4gIHJlYWRvbmx5IGNka1N5bnRoQ21kOiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIFRoZSBsb2NhdGlvbiB3aGVyZSB0aGUgY2RrIG91dHB1dCB3aWxsIGJlIHN0b3JlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgY2RrLm91dFxuICAgKi9cbiAgcmVhZG9ubHkgY2RrT3V0Pzogc3RyaW5nO1xuICAvKipcbiAgICogQWRkaXRpb25hbCBjb25maWd1cmF0aW9uIGZvciB0aGUgQ29kZUJ1aWxkIHN0ZXAgZHVyaW5nIHRoZSBDREsgc3ludGggcGhhc2UuIEl0IHdpbGwgcGFzc2VkIGFzIHRoZSBgcGFydGlhbEJ1aWxkU3BlY2AgdG8gdGhlIGBDb2RlQnVpbGRTdGVwYC5cbiAgICpcbiAgICogQGRlZmF1bHQgREVGQVVMVF9TWU5USF9TVEVQX1BBUlRJQUxfQlVJTERfU1BFQ1xuICAgKi9cbiAgcmVhZG9ubHkgc3ludGhCdWlsZFNwZWM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAvKipcbiAgICogVGhlIHN0YWdlIGVudmlyb25tZW50IGZvciB0aGUgZGVwbG95bWVudCBzdGFja1xuICAgKi9cbiAgcmVhZG9ubHkgc3RhZ2VFbnY/OiBTdGFnZUVudlByb3BzO1xuICAvKipcbiAgICogRW5hYmxlIG5vdGlmaWNhdGlvbiB0byB0aGUgJ2FsZXJ0cy1idWlsZCcgc2xhY2sgY2hhbm5lbC5cbiAgICogQGRlZmF1bHQgVHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlU2xhY2tOb3RpZmljYXRpb24/OiBib29sZWFuO1xuICAvKipcbiAgICogVGhlIHBpcGVsaW5lIG5vdGlmaWNhdGlvbiBldmVudHMgdGhhdCB3aWxsIHRyaWdnZXIgYSBTbGFjayBjaGFubmVsIG5vdGlmaWNhdGlvbi5cbiAgICogT25seSBhcHBsaWVzIGlmIGBlbmFibGVTbGFja05vdGlmaWNhdGlvbmAgaXMgc2V0IHRvIHRydWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IFtQaXBlbGluZU5vdGlmaWNhdGlvbkV2ZW50cy5QSVBFTElORV9FWEVDVVRJT05fRkFJTEVEXSDigJNcbiAgICogICBPbmx5IGZhaWxlZCBwaXBlbGluZSBleGVjdXRpb25zIHdpbGwgdHJpZ2dlciBhIG5vdGlmaWNhdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IG5vdGlmaWNhdGlvbkV2ZW50cz86IFBpcGVsaW5lTm90aWZpY2F0aW9uRXZlbnRzW107XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcmV1c2UgdGhlIGV4aXN0aW5nIGFydGlmYWN0IGJ1Y2tldCBmb3IgY3Jvc3MtZGVwbG95bWVudCBwaXBlbGluZXMuXG4gICAqIElmIHNldCB0byB0cnVlLCBpdCB3aWxsIGxvb2sgdXAgdGhlIGV4aXN0aW5nIGFydGlmYWN0IGJ1Y2tldCBpbiB0aGUgVE9PTENIQUlOIGFjY291bnQuXG4gICAqXG4gICAqIEBkZWZhdWx0IFRydWVcbiAgICovXG4gIHJlYWRvbmx5IHJldXNlRXhpc3RpbmdBcnRpZmFjdEJ1Y2tldD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQSBDREsgY29uc3RydWN0IHRoYXQgY3JlYXRlcyBhIGRlcGxveW1lbnQgcGlwZWxpbmUgYWNyb3NzIGVudmlyb25tZW50cyBmb3IgdGhlIE9yY2FCdXMgcHJvamVjdC5cbiAqXG4gKiBQcmVyZXF1aXNpdGU6IEVuc3VyZSB0aGF0IHRoZSBcIkNyb3NzRGVwbG95bWVudEFydGlmYWN0QnVja2V0XCIgc3RhY2sgaXMgZGVwbG95ZWQgaW4gdGhlIFRPT0xDSEFJTiBhY2NvdW50XG4gKiBiZWZvcmUgdXNpbmcgdGhpcyBjb25zdHJ1Y3QuXG4gKi9cbmV4cG9ydCBjbGFzcyBEZXBsb3ltZW50U3RhY2tQaXBlbGluZSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIC8qKlxuICAgKiBUaGUgY29kZSBwaXBlbGluZSBjb25zdHJ1Y3QgdGhhdCBpcyBjcmVhdGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcGlwZWxpbmU6IFBpcGVsaW5lO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogRGVwbG95bWVudFN0YWNrUGlwZWxpbmVQcm9wcyxcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IGNvZGVTdGFyQXJuID0gU3RyaW5nUGFyYW1ldGVyLnZhbHVlRm9yU3RyaW5nUGFyYW1ldGVyKFxuICAgICAgdGhpcyxcbiAgICAgIFwiL29yY2FidXMvY29kZXN0YXJfZ2l0aHViX2FyblwiLFxuICAgICk7XG4gICAgY29uc3QgY29kZVN0YXJTb3VyY2VBY3Rpb25OYW1lID0gXCJwaXBlbGluZS1zcmNcIjtcbiAgICBjb25zdCBzb3VyY2VGaWxlID0gQ29kZVBpcGVsaW5lU291cmNlLmNvbm5lY3Rpb24oXG4gICAgICBgT3JjYUJ1cy8ke3Byb3BzLmdpdGh1YlJlcG99YCxcbiAgICAgIHByb3BzLmdpdGh1YkJyYW5jaCxcbiAgICAgIHtcbiAgICAgICAgY29ubmVjdGlvbkFybjogY29kZVN0YXJBcm4sXG4gICAgICAgIGFjdGlvbk5hbWU6IGNvZGVTdGFyU291cmNlQWN0aW9uTmFtZSxcbiAgICAgICAgdHJpZ2dlck9uUHVzaDogdHJ1ZSxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIGNvbnN0IGlzUmV1c2luZ0V4aXN0aW5nQXJ0aWZhY3RCdWNrZXQgPVxuICAgICAgcHJvcHMucmV1c2VFeGlzdGluZ0FydGlmYWN0QnVja2V0ID8/IHRydWU7XG4gICAgY29uc3QgYXJ0aWZhY3RCdWNrZXQgPSBpc1JldXNpbmdFeGlzdGluZ0FydGlmYWN0QnVja2V0XG4gICAgICA/IENyb3NzRGVwbG95bWVudEFydGlmYWN0QnVja2V0LmZyb21Mb29rdXAodGhpcykuYXJ0aWZhY3RCdWNrZXRcbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgdGhpcy5waXBlbGluZSA9IG5ldyBQaXBlbGluZSh0aGlzLCBcIkRlcGxveW1lbnRDb2RlUGlwZWxpbmVcIiwge1xuICAgICAgYXJ0aWZhY3RCdWNrZXQ6IGFydGlmYWN0QnVja2V0LFxuICAgICAgcGlwZWxpbmVUeXBlOiBQaXBlbGluZVR5cGUuVjIsXG4gICAgICBwaXBlbGluZU5hbWU6IHByb3BzLnBpcGVsaW5lTmFtZSxcbiAgICAgIGNyb3NzQWNjb3VudEtleXM6IHRydWUsXG4gICAgfSk7XG5cbiAgICBpZiAocHJvcHMuaW5jbHVkZWRGaWxlUGF0aHMgfHwgcHJvcHMuZXhjbHVkZWRGaWxlUGF0aHMpIHtcbiAgICAgIGNvbnN0IGZpbGVQYXRoczogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+ID0ge307XG5cbiAgICAgIGlmIChwcm9wcy5pbmNsdWRlZEZpbGVQYXRocykge1xuICAgICAgICBmaWxlUGF0aHNbXCJJbmNsdWRlc1wiXSA9IHByb3BzLmluY2x1ZGVkRmlsZVBhdGhzO1xuICAgICAgfVxuICAgICAgaWYgKHByb3BzLmV4Y2x1ZGVkRmlsZVBhdGhzKSB7XG4gICAgICAgIGZpbGVQYXRoc1tcIkV4Y2x1ZGVzXCJdID0gcHJvcHMuZXhjbHVkZWRGaWxlUGF0aHM7XG4gICAgICB9XG5cbiAgICAgIC8vIEFkZCBldmVudCBmaWx0ZXIgdG8gb25seSB0cmlnZ2VyIGlmIHRoZSBwdXNoIGV2ZW50IGlzIGZyb20gYGRlcGxveWAgZGlyZWN0b3J5XG4gICAgICBjb25zdCBjZm5QaXBlbGluZSA9IHRoaXMucGlwZWxpbmUubm9kZS5kZWZhdWx0Q2hpbGQgYXMgQ2ZuUGlwZWxpbmU7XG4gICAgICBjZm5QaXBlbGluZS5hZGRQcm9wZXJ0eU92ZXJyaWRlKFwiVHJpZ2dlcnNcIiwgW1xuICAgICAgICB7XG4gICAgICAgICAgR2l0Q29uZmlndXJhdGlvbjoge1xuICAgICAgICAgICAgUHVzaDogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgQnJhbmNoZXM6IHtcbiAgICAgICAgICAgICAgICAgIEluY2x1ZGVzOiBbcHJvcHMuZ2l0aHViQnJhbmNoXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIEZpbGVQYXRoczogZmlsZVBhdGhzLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFNvdXJjZUFjdGlvbk5hbWU6IGNvZGVTdGFyU291cmNlQWN0aW9uTmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIFByb3ZpZGVyVHlwZTogXCJDb2RlU3RhclNvdXJjZUNvbm5lY3Rpb25cIixcbiAgICAgICAgfSxcbiAgICAgIF0pO1xuICAgIH1cblxuICAgIGNvbnN0IHsgc3ludGhCdWlsZFNwZWMgPSBERUZBVUxUX1NZTlRIX1NURVBfUEFSVElBTF9CVUlMRF9TUEVDIH0gPSBwcm9wcztcbiAgICBjb25zdCBjZGtQaXBlbGluZSA9IG5ldyBDb2RlUGlwZWxpbmUodGhpcywgXCJDREtDb2RlUGlwZWxpbmVcIiwge1xuICAgICAgY29kZVBpcGVsaW5lOiB0aGlzLnBpcGVsaW5lLFxuICAgICAgc3ludGg6IG5ldyBDb2RlQnVpbGRTdGVwKFwiQ2RrU3ludGhcIiwge1xuICAgICAgICBpbnN0YWxsQ29tbWFuZHM6IFtcbiAgICAgICAgICBcIm5vZGUgLXZcIixcbiAgICAgICAgICBcIm5wbSBpbnN0YWxsIC0tZ2xvYmFsIGNvcmVwYWNrQGxhdGVzdFwiLFxuICAgICAgICAgIFwiY29yZXBhY2sgLS12ZXJzaW9uXCIsXG4gICAgICAgICAgXCJjb3JlcGFjayBlbmFibGVcIixcbiAgICAgICAgXSxcbiAgICAgICAgY29tbWFuZHM6IHByb3BzLmNka1N5bnRoQ21kLFxuICAgICAgICBpbnB1dDogc291cmNlRmlsZSxcbiAgICAgICAgcHJpbWFyeU91dHB1dERpcmVjdG9yeTogcHJvcHMuY2RrT3V0IHx8IFwiY2RrLm91dFwiLFxuICAgICAgICBwYXJ0aWFsQnVpbGRTcGVjOiBCdWlsZFNwZWMuZnJvbU9iamVjdChzeW50aEJ1aWxkU3BlYyksXG4gICAgICB9KSxcbiAgICAgIHNlbGZNdXRhdGlvbjogdHJ1ZSxcbiAgICAgIGNvZGVCdWlsZERlZmF1bHRzOiB7XG4gICAgICAgIGJ1aWxkRW52aXJvbm1lbnQ6IHtcbiAgICAgICAgICBjb21wdXRlVHlwZTogQ29tcHV0ZVR5cGUuTEFSR0UsXG4gICAgICAgICAgYnVpbGRJbWFnZTogTGludXhBcm1CdWlsZEltYWdlLkFNQVpPTl9MSU5VWF8yX1NUQU5EQVJEXzNfMCxcbiAgICAgICAgICBlbnZpcm9ubWVudFZhcmlhYmxlczoge1xuICAgICAgICAgICAgTk9ERV9PUFRJT05TOiB7XG4gICAgICAgICAgICAgIHZhbHVlOiBcIi0tbWF4LW9sZC1zcGFjZS1zaXplPTgxOTJcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBjb25zdCBkZWZhdWx0U3RhZ2VFbnY6IFN0YWdlRW52UHJvcHMgPSB7XG4gICAgICBiZXRhOiBCRVRBX0VOVklST05NRU5ULFxuICAgICAgZ2FtbWE6IEdBTU1BX0VOVklST05NRU5ULFxuICAgICAgcHJvZDogUFJPRF9FTlZJUk9OTUVOVCxcbiAgICB9O1xuICAgIGNvbnN0IHN0YWdlRW52ID0gcHJvcHMuc3RhZ2VFbnYgfHwgZGVmYXVsdFN0YWdlRW52O1xuXG4gICAgY2RrUGlwZWxpbmUuYWRkU3RhZ2UoXG4gICAgICBuZXcgRGVwbG95bWVudFN0YWdlKFxuICAgICAgICB0aGlzLFxuICAgICAgICBcIk9yY2FCdXNCZXRhXCIsXG4gICAgICAgIHN0YWdlRW52LmJldGEsXG4gICAgICAgIHByb3BzLnN0YWNrTmFtZSxcbiAgICAgICAgcHJvcHMuc3RhY2ssXG4gICAgICAgIHByb3BzLnN0YWNrQ29uZmlnLmJldGEsXG4gICAgICAgIHByb3BzLmdpdGh1YlJlcG8sXG4gICAgICAgIHByb3BzLmdpdGh1YkJyYW5jaCxcbiAgICAgICksXG4gICAgKTtcblxuICAgIGNka1BpcGVsaW5lLmFkZFN0YWdlKFxuICAgICAgbmV3IERlcGxveW1lbnRTdGFnZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgXCJPcmNhQnVzR2FtbWFcIixcbiAgICAgICAgc3RhZ2VFbnYuZ2FtbWEsXG4gICAgICAgIHByb3BzLnN0YWNrTmFtZSxcbiAgICAgICAgcHJvcHMuc3RhY2ssXG4gICAgICAgIHByb3BzLnN0YWNrQ29uZmlnLmdhbW1hLFxuICAgICAgICBwcm9wcy5naXRodWJSZXBvLFxuICAgICAgICBwcm9wcy5naXRodWJCcmFuY2gsXG4gICAgICApLFxuICAgICAgeyBwb3N0OiBbbmV3IE1hbnVhbEFwcHJvdmFsU3RlcChcIlByb21vdGVUb1Byb2RcIildIH0sXG4gICAgKTtcblxuICAgIGNka1BpcGVsaW5lLmFkZFN0YWdlKFxuICAgICAgbmV3IERlcGxveW1lbnRTdGFnZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgXCJPcmNhQnVzUHJvZFwiLFxuICAgICAgICBzdGFnZUVudi5wcm9kLFxuICAgICAgICBwcm9wcy5zdGFja05hbWUsXG4gICAgICAgIHByb3BzLnN0YWNrLFxuICAgICAgICBwcm9wcy5zdGFja0NvbmZpZy5wcm9kLFxuICAgICAgICBwcm9wcy5naXRodWJSZXBvLFxuICAgICAgICBwcm9wcy5naXRodWJCcmFuY2gsXG4gICAgICApLFxuICAgICk7XG5cbiAgICBpZiAocHJvcHMuZW5hYmxlU2xhY2tOb3RpZmljYXRpb24gPz8gdHJ1ZSkge1xuICAgICAgY29uc3QgYWxlcnRzQnVpbGRTbGFja0NvbmZpZ0FybiA9IFN0cmluZ1BhcmFtZXRlci52YWx1ZUZvclN0cmluZ1BhcmFtZXRlcihcbiAgICAgICAgdGhpcyxcbiAgICAgICAgXCIvY2hhdGJvdF9hcm4vc2xhY2svYWxlcnRzLWJ1aWxkXCIsXG4gICAgICApO1xuICAgICAgY29uc3QgdGFyZ2V0ID0gU2xhY2tDaGFubmVsQ29uZmlndXJhdGlvbi5mcm9tU2xhY2tDaGFubmVsQ29uZmlndXJhdGlvbkFybihcbiAgICAgICAgdGhpcyxcbiAgICAgICAgXCJTbGFja0NoYW5uZWxDb25maWd1cmF0aW9uXCIsXG4gICAgICAgIGFsZXJ0c0J1aWxkU2xhY2tDb25maWdBcm4sXG4gICAgICApO1xuXG4gICAgICB0aGlzLnBpcGVsaW5lLm5vdGlmeU9uKFwiUGlwZWxpbmVTbGFja05vdGlmaWNhdGlvblwiLCB0YXJnZXQsIHtcbiAgICAgICAgZXZlbnRzOiBwcm9wcy5ub3RpZmljYXRpb25FdmVudHMgfHwgW1xuICAgICAgICAgIFBpcGVsaW5lTm90aWZpY2F0aW9uRXZlbnRzLlBJUEVMSU5FX0VYRUNVVElPTl9GQUlMRUQsXG4gICAgICAgIF0sXG4gICAgICAgIGRldGFpbFR5cGU6IERldGFpbFR5cGUuRlVMTCxcbiAgICAgICAgbm90aWZpY2F0aW9uUnVsZU5hbWU6IGBPcmNhQnVzLSR7cHJvcHMucGlwZWxpbmVOYW1lfWAsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cblxuY2xhc3MgRGVwbG95bWVudFN0YWdlIGV4dGVuZHMgU3RhZ2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGVudmlyb25tZW50TmFtZTogc3RyaW5nLFxuICAgIGVudjogRW52aXJvbm1lbnQsXG4gICAgc3RhY2tOYW1lOiBzdHJpbmcsXG4gICAgc3RhY2tDbGFzczogbmV3IChzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogYW55KSA9PiBTdGFjayxcbiAgICBhcHBTdGFja1Byb3BzOiBhbnksXG4gICAgZ2l0aHViUmVwbzogc3RyaW5nLFxuICAgIGdpdGh1YkJyYW5jaD86IHN0cmluZyxcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGVudmlyb25tZW50TmFtZSwgeyBlbnY6IGVudiB9KTtcblxuICAgIGxldCBzb3VyY2UgPSBgaHR0cHM6Ly9naXRodWIuY29tL09yY2FCdXMvJHtnaXRodWJSZXBvfWA7XG4gICAgaWYgKGdpdGh1YkJyYW5jaCAhPT0gdW5kZWZpbmVkICYmIGdpdGh1YkJyYW5jaCAhPT0gXCJtYWluXCIpIHtcbiAgICAgIHNvdXJjZSA9IGAke3NvdXJjZX0vdHJlZS8ke2dpdGh1YkJyYW5jaH1gO1xuICAgIH1cblxuICAgIG5ldyBzdGFja0NsYXNzKHRoaXMsIHN0YWNrTmFtZSwge1xuICAgICAgZW52OiBlbnYsXG4gICAgICB0YWdzOiB7XG4gICAgICAgIFwidW1jY3Itb3JnOlByb2R1Y3RcIjogXCJPcmNhQnVzXCIsXG4gICAgICAgIFwidW1jY3Itb3JnOkNyZWF0b3JcIjogXCJDREtcIixcbiAgICAgICAgXCJ1bWNjci1vcmc6U2VydmljZVwiOiBzdGFja05hbWUsXG4gICAgICAgIFwidW1jY3Itb3JnOlNvdXJjZVwiOiBzb3VyY2UsXG4gICAgICB9LFxuICAgICAgLi4uYXBwU3RhY2tQcm9wcyxcbiAgICB9KTtcbiAgfVxufVxuIl19
188
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwaXBlbGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsMkNBQXVDO0FBQ3ZDLDZDQUFrRTtBQUNsRSw2REFJbUM7QUFDbkMsaURBQXNEO0FBQ3RELHFEQVMrQjtBQUMvQixtRUFNc0M7QUFDdEMscUNBSWtCO0FBQ2xCLHlEQUFvRTtBQUNwRSxxRkFBbUU7QUFDbkUsdURBQWtFO0FBQ2xFLG1GQUc4QztBQUU5Qzs7R0FFRztBQUNVLFFBQUEscUNBQXFDLEdBQUc7SUFDbkQsTUFBTSxFQUFFO1FBQ04sT0FBTyxFQUFFO1lBQ1Asa0JBQWtCLEVBQUU7Z0JBQ2xCLE1BQU0sRUFBRSxNQUFNO2FBQ2Y7U0FDRjtLQUNGO0NBQ0YsQ0FBQztBQXNIRjs7Ozs7R0FLRztBQUNILE1BQWEsdUJBQXdCLFNBQVEsc0JBQVM7O0lBQ3BEOztPQUVHO0lBQ00sUUFBUSxDQUFXO0lBRTVCLFlBQ0UsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLEtBQW1DO1FBRW5DLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxXQUFXLEdBQUcseUJBQWUsQ0FBQyx1QkFBdUIsQ0FDekQsSUFBSSxFQUNKLDhCQUE4QixDQUMvQixDQUFDO1FBQ0YsTUFBTSx3QkFBd0IsR0FBRyxjQUFjLENBQUM7UUFDaEQsTUFBTSxVQUFVLEdBQUcsOEJBQWtCLENBQUMsVUFBVSxDQUM5QyxXQUFXLEtBQUssQ0FBQyxVQUFVLEVBQUUsRUFDN0IsS0FBSyxDQUFDLFlBQVksRUFDbEI7WUFDRSxhQUFhLEVBQUUsV0FBVztZQUMxQixVQUFVLEVBQUUsd0JBQXdCO1lBQ3BDLGFBQWEsRUFBRSxJQUFJO1NBQ3BCLENBQ0YsQ0FBQztRQUVGLE1BQU0sK0JBQStCLEdBQ25DLEtBQUssQ0FBQywyQkFBMkIsSUFBSSxJQUFJLENBQUM7UUFDNUMsTUFBTSxjQUFjLEdBQUcsK0JBQStCO1lBQ3BELENBQUMs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LFlBQVksS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUMxRCxNQUFNLEdBQUcsR0FBRyxNQUFNLFNBQVMsWUFBWSxFQUFFLENBQUM7UUFDNUMsQ0FBQztRQUVELElBQUksVUFBVSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUU7WUFDOUIsR0FBRyxFQUFFLEdBQUc7WUFDUixJQUFJLEVBQUU7Z0JBQ0osbUJBQW1CLEVBQUUsU0FBUztnQkFDOUIsbUJBQW1CLEVBQUUsS0FBSztnQkFDMUIsbUJBQW1CLEVBQUUsU0FBUztnQkFDOUIsa0JBQWtCLEVBQUUsTUFBTTthQUMzQjtZQUNELEdBQUcsYUFBYTtTQUNqQixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgRHVyYXRpb24sIEVudmlyb25tZW50LCBTdGFjaywgU3RhZ2UgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7XG4gIEJ1aWxkU3BlYyxcbiAgQ29tcHV0ZVR5cGUsXG4gIExpbnV4QXJtQnVpbGRJbWFnZSxcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jb2RlYnVpbGRcIjtcbmltcG9ydCB7IFN0cmluZ1BhcmFtZXRlciB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtc3NtXCI7XG5pbXBvcnQge1xuICBDb2RlQnVpbGRTdGVwLFxuICBDb2RlUGlwZWxpbmUsXG4gIENvZGVQaXBlbGluZUFjdGlvbkZhY3RvcnlSZXN1bHQsXG4gIENvZGVQaXBlbGluZVNvdXJjZSxcbiAgSUNvZGVQaXBlbGluZUFjdGlvbkZhY3RvcnksXG4gIE1hbnVhbEFwcHJvdmFsU3RlcCxcbiAgUHJvZHVjZUFjdGlvbk9wdGlvbnMsXG4gIFN0ZXAsXG59IGZyb20gXCJhd3MtY2RrLWxpYi9waXBlbGluZXNcIjtcbmltcG9ydCB7XG4gIFBpcGVsaW5lLFxuICBDZm5QaXBlbGluZSxcbiAgUGlwZWxpbmVUeXBlLFxuICBQaXBlbGluZU5vdGlmaWNhdGlvbkV2ZW50cyxcbiAgSVN0YWdlLFxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNvZGVwaXBlbGluZVwiO1xuaW1wb3J0IHtcbiAgQkVUQV9FTlZJUk9OTUVOVCxcbiAgR0FNTUFfRU5WSVJPTk1FTlQsXG4gIFBST0RfRU5WSVJPTk1FTlQsXG59IGZyb20gXCIuL2NvbmZpZ1wiO1xuaW1wb3J0IHsgU2xhY2tDaGFubmVsQ29uZmlndXJhdGlvbiB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2hhdGJvdFwiO1xuaW1wb3J0IHsgRGV0YWlsVHlwZSB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY29kZXN0YXJub3RpZmljYXRpb25zXCI7XG5pbXBvcnQgeyBDcm9zc0RlcGxveW1lbnRBcnRpZmFjdEJ1Y2tldCB9IGZyb20gXCIuL2FydGlmYWN0LWJ1Y2tldFwiO1xuaW1wb3J0IHtcbiAgTWFudWFsQXBwcm92YWxBY3Rpb24sXG4gIE1hbnVhbEFwcHJvdmFsQWN0aW9uUHJvcHMsXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY29kZXBpcGVsaW5lLWFjdGlvbnNcIjtcblxuLyoqXG4gKiBUaGUgZGVmYXVsdCBwYXJ0aWFsIGJ1aWxkIHNwZWMgZm9yIHRoZSBzeW50aCBzdGVwIGluIHRoZSBwaXBlbGluZS5cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfU1lOVEhfU1RFUF9QQVJUSUFMX0JVSUxEX1NQRUMgPSB7XG4gIHBoYXNlczoge1xuICAgIGluc3RhbGw6IHtcbiAgICAgIFwicnVudGltZS12ZXJzaW9uc1wiOiB7XG4gICAgICAgIG5vZGVqczogXCIyMi54XCIsXG4gICAgICB9LFxuICAgIH0sXG4gIH0sXG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0YWdlRW52UHJvcHMge1xuICAvKipcbiAgICogVGhlIGVudmlyb25tZW50IGZvciB0aGUgYmV0YSBzdGFnZVxuICAgKi9cbiAgcmVhZG9ubHkgYmV0YTogRW52aXJvbm1lbnQ7XG4gIC8qKlxuICAgKiBUaGUgZW52aXJvbm1lbnQgZm9yIHRoZSBnYW1tYSBzdGFnZVxuICAgKi9cbiAgcmVhZG9ubHkgZ2FtbWE6IEVudmlyb25tZW50O1xuICAvKipcbiAgICogVGhlIGVudmlyb25tZW50IGZvciB0aGUgcHJvZCBzdGFnZVxuICAgKi9cbiAgcmVhZG9ubHkgcHJvZDogRW52aXJvbm1lbnQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhY2tDb25maWdQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIGJldGEgKGRldikgc3RhZ2VcbiAgICovXG4gIHJlYWRvbmx5IGJldGE6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIC8qKlxuICAgKiBUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIGdhbW1hIChzdGcpIHN0YWdlXG4gICAqL1xuICByZWFkb25seSBnYW1tYTogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgLyoqXG4gICAqIFRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgcHJvZCBzdGFnZVxuICAgKi9cbiAgcmVhZG9ubHkgcHJvZDogUmVjb3JkPHN0cmluZywgYW55Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZXBsb3ltZW50U3RhY2tQaXBlbGluZVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBHaXRIdWIgYnJhbmNoIG5hbWUgdGhlIHBpcGVsaW5lIHdpbGwgbGlzdGVuIHRvLlxuICAgKiBBdm9pZCB1c2luZyBicmFuY2ggbmFtZXMgdGhhdCBjb250YWluIHNwZWNpYWwgY2hhcmFjdGVycyBzdWNoIGFzIHBhcmVudGhlc2VzLlxuICAgKiBBbGxvd2VkIHNwZWNpYWwgY2hhcmFjdGVycyBhcmU6IFwiKyAtID0gLiBfIDogLyBAXCIuXG4gICAqIFRoaXMgcmVzdHJpY3Rpb24gaXMgZHVlIHRvIEFXUyByZXNvdXJjZSB0YWdnaW5nIHJlcXVpcmVtZW50cy5cbiAgICovXG4gIHJlYWRvbmx5IGdpdGh1YkJyYW5jaDogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHJlcG9zaXRvcnkgbmFtZSB0aGF0IGV4aXN0IGluIHRoZSAnT3JjYUJ1cycgZ2l0aHViIG9yZ2FuaXNhdGlvbi4gZS5nLiBgYS1taWNyby1zZXJ2aWNlLXJlcG9gXG4gICAqL1xuICByZWFkb25seSBnaXRodWJSZXBvOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgc3RhY2sgdG8gd2hpY2ggdGhlIHBpcGVsaW5lIHdpbGwgYmUgZGVwbG95aW5nIHRvIGl0cyByZXNwZWN0aXZlIGFjY291bnRcbiAgICovXG4gIHJlYWRvbmx5IHN0YWNrOiBhbnk7XG4gIC8qKlxuICAgKiBUaGUgc3RhY2sgbmFtZSAoaW4gY2xvdWRmb3JtYXRpb24pIGZvciB0aGUgc3RhY2sgZGVmaW5lZCBpbiBgc3RhY2tgLiBUaGUgc3RhY2sgbmFtZSB3aWxsIHByZXBlbmQgd2l0aCB0aGUgc3RhZ2VcbiAgICogbmFtZSBlLmcuIGBPcmNhQnVzQmV0YS08c3RhY2tOYW1lPmAsIGBPcmNhQnVzR2FtbWEtPHN0YWNrTmFtZT5gLCBgT3JjYUJ1c1Byb2QtPHN0YWNrTmFtZT5gXG4gICAqL1xuICByZWFkb25seSBzdGFja05hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBzdGFjayBjb25maWd1cmF0aW9uL2NvbnN0YW50cyB0aGF0IHdpbGwgYmUgcGFzc2VkIHRvIHRoZSBzdGFjayBwcm9wcy5cbiAgICovXG4gIHJlYWRvbmx5IHN0YWNrQ29uZmlnOiBTdGFja0NvbmZpZ1Byb3BzO1xuICAvKipcbiAgICogVGhlIHBpcGVsaW5lIG5hbWUgaW4gdGhlIGJhc3Rpb24gYWNjb3VudC5cbiAgICovXG4gIHJlYWRvbmx5IHBpcGVsaW5lTmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGxpc3Qgb2YgcGF0dGVybnMgb2YgR2l0IHJlcG9zaXRvcnkgZmlsZSBwYXRocyB0aGF0LCB3aGVuIGEgY29tbWl0IGlzIHB1c2hlZCwgYXJlIHRvIGJlIElOQ0xVREVEIGFzIGNyaXRlcmlhIHRoYXQgc3RhcnRzIHRoZSBwaXBlbGluZS5cbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtY29kZXBpcGVsaW5lLXBpcGVsaW5lLWdpdGZpbGVwYXRoZmlsdGVyY3JpdGVyaWEuaHRtbFxuICAgKlxuICAgKi9cbiAgcmVhZG9ubHkgaW5jbHVkZWRGaWxlUGF0aHM/OiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIHBhdHRlcm5zIG9mIEdpdCByZXBvc2l0b3J5IGZpbGUgcGF0aHMgdGhhdCwgd2hlbiBhIGNvbW1pdCBpcyBwdXNoZWQsIGFyZSB0byBiZSBFWENMVURFRCBmcm9tIHN0YXJ0aW5nIHRoZSBwaXBlbGluZS5cbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtY29kZXBpcGVsaW5lLXBpcGVsaW5lLWdpdGZpbGVwYXRoZmlsdGVyY3JpdGVyaWEuaHRtbFxuICAgKlxuICAgKi9cbiAgcmVhZG9ubHkgZXhjbHVkZWRGaWxlUGF0aHM/OiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIFRoZSBjb21tYW5kIHRvIHJ1biB0byBzeW50aCB0aGUgY2RrIHN0YWNrIHdoaWNoIGFsc28gaW5zdGFsbGluZyB0aGUgY2RrIGRlcGVuZGVuY2llcy4gZS5nLiBbXCJ5YXJuIGluc3RhbGwgLS1pbW11dGFibGVcIiwgXCJ5YXJuIGNkayBzeW50aFwiXVxuICAgKi9cbiAgcmVhZG9ubHkgY2RrU3ludGhDbWQ6IHN0cmluZ1tdO1xuICAvKipcbiAgICogVGhlIGxvY2F0aW9uIHdoZXJlIHRoZSBjZGsgb3V0cHV0IHdpbGwgYmUgc3RvcmVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBjZGsub3V0XG4gICAqL1xuICByZWFkb25seSBjZGtPdXQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBDb2RlQnVpbGQgc3RlcCBkdXJpbmcgdGhlIENESyBzeW50aCBwaGFzZS4gSXQgd2lsbCBwYXNzZWQgYXMgdGhlIGBwYXJ0aWFsQnVpbGRTcGVjYCB0byB0aGUgYENvZGVCdWlsZFN0ZXBgLlxuICAgKlxuICAgKiBAZGVmYXVsdCBERUZBVUxUX1NZTlRIX1NURVBfUEFSVElBTF9CVUlMRF9TUEVDXG4gICAqL1xuICByZWFkb25seSBzeW50aEJ1aWxkU3BlYz86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIC8qKlxuICAgKiBUaGUgc3RhZ2UgZW52aXJvbm1lbnQgZm9yIHRoZSBkZXBsb3ltZW50IHN0YWNrXG4gICAqL1xuICByZWFkb25seSBzdGFnZUVudj86IFN0YWdlRW52UHJvcHM7XG4gIC8qKlxuICAgKiBFbmFibGUgbm90aWZpY2F0aW9uIHRvIHRoZSAnYWxlcnRzLWJ1aWxkJyBzbGFjayBjaGFubmVsLlxuICAgKiBAZGVmYXVsdCBUcnVlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVTbGFja05vdGlmaWNhdGlvbj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUaGUgcGlwZWxpbmUgbm90aWZpY2F0aW9uIGV2ZW50cyB0aGF0IHdpbGwgdHJpZ2dlciBhIFNsYWNrIGNoYW5uZWwgbm90aWZpY2F0aW9uLlxuICAgKiBPbmx5IGFwcGxpZXMgaWYgYGVuYWJsZVNsYWNrTm90aWZpY2F0aW9uYCBpcyBzZXQgdG8gdHJ1ZS5cbiAgICpcbiAgICogQGRlZmF1bHQgW1BpcGVsaW5lTm90aWZpY2F0aW9uRXZlbnRzLlBJUEVMSU5FX0VYRUNVVElPTl9GQUlMRURdIOKAk1xuICAgKiAgIE9ubHkgZmFpbGVkIHBpcGVsaW5lIGV4ZWN1dGlvbnMgd2lsbCB0cmlnZ2VyIGEgbm90aWZpY2F0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgbm90aWZpY2F0aW9uRXZlbnRzPzogUGlwZWxpbmVOb3RpZmljYXRpb25FdmVudHNbXTtcblxuICAvKipcbiAgICogV2hldGhlciB0byByZXVzZSB0aGUgZXhpc3RpbmcgYXJ0aWZhY3QgYnVja2V0IGZvciBjcm9zcy1kZXBsb3ltZW50IHBpcGVsaW5lcy5cbiAgICogSWYgc2V0IHRvIHRydWUsIGl0IHdpbGwgbG9vayB1cCB0aGUgZXhpc3RpbmcgYXJ0aWZhY3QgYnVja2V0IGluIHRoZSBUT09MQ0hBSU4gYWNjb3VudC5cbiAgICpcbiAgICogQGRlZmF1bHQgVHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgcmV1c2VFeGlzdGluZ0FydGlmYWN0QnVja2V0PzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBBIENESyBjb25zdHJ1Y3QgdGhhdCBjcmVhdGVzIGEgZGVwbG95bWVudCBwaXBlbGluZSBhY3Jvc3MgZW52aXJvbm1lbnRzIGZvciB0aGUgT3JjYUJ1cyBwcm9qZWN0LlxuICpcbiAqIFByZXJlcXVpc2l0ZTogRW5zdXJlIHRoYXQgdGhlIFwiQ3Jvc3NEZXBsb3ltZW50QXJ0aWZhY3RCdWNrZXRcIiBzdGFjayBpcyBkZXBsb3llZCBpbiB0aGUgVE9PTENIQUlOIGFjY291bnRcbiAqIGJlZm9yZSB1c2luZyB0aGlzIGNvbnN0cnVjdC5cbiAqL1xuZXhwb3J0IGNsYXNzIERlcGxveW1lbnRTdGFja1BpcGVsaW5lIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgLyoqXG4gICAqIFRoZSBjb2RlIHBpcGVsaW5lIGNvbnN0cnVjdCB0aGF0IGlzIGNyZWF0ZWQuXG4gICAqL1xuICByZWFkb25seSBwaXBlbGluZTogUGlwZWxpbmU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBEZXBsb3ltZW50U3RhY2tQaXBlbGluZVByb3BzLFxuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgY29kZVN0YXJBcm4gPSBTdHJpbmdQYXJhbWV0ZXIudmFsdWVGb3JTdHJpbmdQYXJhbWV0ZXIoXG4gICAgICB0aGlzLFxuICAgICAgXCIvb3JjYWJ1cy9jb2Rlc3Rhcl9naXRodWJfYXJuXCIsXG4gICAgKTtcbiAgICBjb25zdCBjb2RlU3RhclNvdXJjZUFjdGlvbk5hbWUgPSBcInBpcGVsaW5lLXNyY1wiO1xuICAgIGNvbnN0IHNvdXJjZUZpbGUgPSBDb2RlUGlwZWxpbmVTb3VyY2UuY29ubmVjdGlvbihcbiAgICAgIGBPcmNhQnVzLyR7cHJvcHMuZ2l0aHViUmVwb31gLFxuICAgICAgcHJvcHMuZ2l0aHViQnJhbmNoLFxuICAgICAge1xuICAgICAgICBjb25uZWN0aW9uQXJuOiBjb2RlU3RhckFybixcbiAgICAgICAgYWN0aW9uTmFtZTogY29kZVN0YXJTb3VyY2VBY3Rpb25OYW1lLFxuICAgICAgICB0cmlnZ2VyT25QdXNoOiB0cnVlLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgY29uc3QgaXNSZXVzaW5nRXhpc3RpbmdBcnRpZmFjdEJ1Y2tldCA9XG4gICAgICBwcm9wcy5yZXVzZUV4aXN0aW5nQXJ0aWZhY3RCdWNrZXQgPz8gdHJ1ZTtcbiAgICBjb25zdCBhcnRpZmFjdEJ1Y2tldCA9IGlzUmV1c2luZ0V4aXN0aW5nQXJ0aWZhY3RCdWNrZXRcbiAgICAgID8gQ3Jvc3NEZXBsb3ltZW50QXJ0aWZhY3RCdWNrZXQuZnJvbUxvb2t1cCh0aGlzKS5hcnRpZmFjdEJ1Y2tldFxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICB0aGlzLnBpcGVsaW5lID0gbmV3IFBpcGVsaW5lKHRoaXMsIFwiRGVwbG95bWVudENvZGVQaXBlbGluZVwiLCB7XG4gICAgICBhcnRpZmFjdEJ1Y2tldDogYXJ0aWZhY3RCdWNrZXQsXG4gICAgICBwaXBlbGluZVR5cGU6IFBpcGVsaW5lVHlwZS5WMixcbiAgICAgIHBpcGVsaW5lTmFtZTogcHJvcHMucGlwZWxpbmVOYW1lLFxuICAgICAgY3Jvc3NBY2NvdW50S2V5czogdHJ1ZSxcbiAgICB9KTtcblxuICAgIGlmIChwcm9wcy5pbmNsdWRlZEZpbGVQYXRocyB8fCBwcm9wcy5leGNsdWRlZEZpbGVQYXRocykge1xuICAgICAgY29uc3QgZmlsZVBhdGhzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4gPSB7fTtcblxuICAgICAgaWYgKHByb3BzLmluY2x1ZGVkRmlsZVBhdGhzKSB7XG4gICAgICAgIGZpbGVQYXRoc1tcIkluY2x1ZGVzXCJdID0gcHJvcHMuaW5jbHVkZWRGaWxlUGF0aHM7XG4gICAgICB9XG4gICAgICBpZiAocHJvcHMuZXhjbHVkZWRGaWxlUGF0aHMpIHtcbiAgICAgICAgZmlsZVBhdGhzW1wiRXhjbHVkZXNcIl0gPSBwcm9wcy5leGNsdWRlZEZpbGVQYXRocztcbiAgICAgIH1cblxuICAgICAgLy8gQWRkIGV2ZW50IGZpbHRlciB0byBvbmx5IHRyaWdnZXIgaWYgdGhlIHB1c2ggZXZlbnQgaXMgZnJvbSBgZGVwbG95YCBkaXJlY3RvcnlcbiAgICAgIGNvbnN0IGNmblBpcGVsaW5lID0gdGhpcy5waXBlbGluZS5ub2RlLmRlZmF1bHRDaGlsZCBhcyBDZm5QaXBlbGluZTtcbiAgICAgIGNmblBpcGVsaW5lLmFkZFByb3BlcnR5T3ZlcnJpZGUoXCJUcmlnZ2Vyc1wiLCBbXG4gICAgICAgIHtcbiAgICAgICAgICBHaXRDb25maWd1cmF0aW9uOiB7XG4gICAgICAgICAgICBQdXNoOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBCcmFuY2hlczoge1xuICAgICAgICAgICAgICAgICAgSW5jbHVkZXM6IFtwcm9wcy5naXRodWJCcmFuY2hdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgRmlsZVBhdGhzOiBmaWxlUGF0aHMsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgU291cmNlQWN0aW9uTmFtZTogY29kZVN0YXJTb3VyY2VBY3Rpb25OYW1lLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgUHJvdmlkZXJUeXBlOiBcIkNvZGVTdGFyU291cmNlQ29ubmVjdGlvblwiLFxuICAgICAgICB9LFxuICAgICAgXSk7XG4gICAgfVxuXG4gICAgY29uc3QgeyBzeW50aEJ1aWxkU3BlYyA9IERFRkFVTFRfU1lOVEhfU1RFUF9QQVJUSUFMX0JVSUxEX1NQRUMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNka1BpcGVsaW5lID0gbmV3IENvZGVQaXBlbGluZSh0aGlzLCBcIkNES0NvZGVQaXBlbGluZVwiLCB7XG4gICAgICBjb2RlUGlwZWxpbmU6IHRoaXMucGlwZWxpbmUsXG4gICAgICBzeW50aDogbmV3IENvZGVCdWlsZFN0ZXAoXCJDZGtTeW50aFwiLCB7XG4gICAgICAgIGluc3RhbGxDb21tYW5kczogW1xuICAgICAgICAgIFwibm9kZSAtdlwiLFxuICAgICAgICAgIFwibnBtIGluc3RhbGwgLS1nbG9iYWwgY29yZXBhY2tAbGF0ZXN0XCIsXG4gICAgICAgICAgXCJjb3JlcGFjayAtLXZlcnNpb25cIixcbiAgICAgICAgICBcImNvcmVwYWNrIGVuYWJsZVwiLFxuICAgICAgICBdLFxuICAgICAgICBjb21tYW5kczogcHJvcHMuY2RrU3ludGhDbWQsXG4gICAgICAgIGlucHV0OiBzb3VyY2VGaWxlLFxuICAgICAgICBwcmltYXJ5T3V0cHV0RGlyZWN0b3J5OiBwcm9wcy5jZGtPdXQgfHwgXCJjZGsub3V0XCIsXG4gICAgICAgIHBhcnRpYWxCdWlsZFNwZWM6IEJ1aWxkU3BlYy5mcm9tT2JqZWN0KHN5bnRoQnVpbGRTcGVjKSxcbiAgICAgIH0pLFxuICAgICAgc2VsZk11dGF0aW9uOiB0cnVlLFxuICAgICAgY29kZUJ1aWxkRGVmYXVsdHM6IHtcbiAgICAgICAgYnVpbGRFbnZpcm9ubWVudDoge1xuICAgICAgICAgIGNvbXB1dGVUeXBlOiBDb21wdXRlVHlwZS5MQVJHRSxcbiAgICAgICAgICBidWlsZEltYWdlOiBMaW51eEFybUJ1aWxkSW1hZ2UuQU1BWk9OX0xJTlVYXzJfU1RBTkRBUkRfM18wLFxuICAgICAgICAgIGVudmlyb25tZW50VmFyaWFibGVzOiB7XG4gICAgICAgICAgICBOT0RFX09QVElPTlM6IHtcbiAgICAgICAgICAgICAgdmFsdWU6IFwiLS1tYXgtb2xkLXNwYWNlLXNpemU9ODE5MlwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGRlZmF1bHRTdGFnZUVudjogU3RhZ2VFbnZQcm9wcyA9IHtcbiAgICAgIGJldGE6IEJFVEFfRU5WSVJPTk1FTlQsXG4gICAgICBnYW1tYTogR0FNTUFfRU5WSVJPTk1FTlQsXG4gICAgICBwcm9kOiBQUk9EX0VOVklST05NRU5ULFxuICAgIH07XG4gICAgY29uc3Qgc3RhZ2VFbnYgPSBwcm9wcy5zdGFnZUVudiB8fCBkZWZhdWx0U3RhZ2VFbnY7XG5cbiAgICBjZGtQaXBlbGluZS5hZGRTdGFnZShcbiAgICAgIG5ldyBEZXBsb3ltZW50U3RhZ2UoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIFwiT3JjYUJ1c0JldGFcIixcbiAgICAgICAgc3RhZ2VFbnYuYmV0YSxcbiAgICAgICAgcHJvcHMuc3RhY2tOYW1lLFxuICAgICAgICBwcm9wcy5zdGFjayxcbiAgICAgICAgcHJvcHMuc3RhY2tDb25maWcuYmV0YSxcbiAgICAgICAgcHJvcHMuZ2l0aHViUmVwbyxcbiAgICAgICAgcHJvcHMuZ2l0aHViQnJhbmNoLFxuICAgICAgKSxcbiAgICApO1xuXG4gICAgY2RrUGlwZWxpbmUuYWRkU3RhZ2UoXG4gICAgICBuZXcgRGVwbG95bWVudFN0YWdlKFxuICAgICAgICB0aGlzLFxuICAgICAgICBcIk9yY2FCdXNHYW1tYVwiLFxuICAgICAgICBzdGFnZUVudi5nYW1tYSxcbiAgICAgICAgcHJvcHMuc3RhY2tOYW1lLFxuICAgICAgICBwcm9wcy5zdGFjayxcbiAgICAgICAgcHJvcHMuc3RhY2tDb25maWcuZ2FtbWEsXG4gICAgICAgIHByb3BzLmdpdGh1YlJlcG8sXG4gICAgICAgIHByb3BzLmdpdGh1YkJyYW5jaCxcbiAgICAgICksXG4gICAgICB7XG4gICAgICAgIHBvc3Q6IFtcbiAgICAgICAgICBuZXcgTWFudWFsQXBwcm92YWxBY3Rpb25TdGVwKFwiUHJvbW90ZVRvUHJvZFwiLCB7XG4gICAgICAgICAgICBhY3Rpb25OYW1lOiBcIlByb21vdGVUb1Byb2RcIixcbiAgICAgICAgICAgIC8vIEN1c3RvbSBzdGVwcyBieXBhc3Mgc3RhZ2UgcHJlL3Bvc3Qgb3JkZXJpbmcsIHNvIHJ1bk9yZGVyIG11c3QgYmUgZXhwbGljaXRseSBzZXQuXG4gICAgICAgICAgICAvLyBTZXQgdG8gNSB0byBlbnN1cmUgdGhpcyBydW5zIGFmdGVyIGFsbCBPcmNhQnVzR2FtbWEgc3RhZ2Ugc3RlcHMgY29tcGxldGUuXG4gICAgICAgICAgICAvLyAoR2FtbWEgZGVwbG95bWVudCB0eXBpY2FsbHkgdXNlcyAyIHN0ZXBzLCBzbyA1IHByb3ZpZGVzIGFkZXF1YXRlIGJ1ZmZlcilcbiAgICAgICAgICAgIHJ1bk9yZGVyOiA1LFxuICAgICAgICAgICAgLy8gNjAtbWludXRlIHRpbWVvdXQgYWxsb3dzIHF1ZXVlZCBwaXBlbGluZSBleGVjdXRpb25zIHRvIHByb2NlZWQgaWYgYXBwcm92YWwgZXhwaXJlc1xuICAgICAgICAgICAgdGltZW91dDogRHVyYXRpb24ubWludXRlcyg2MCksXG4gICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgICk7XG5cbiAgICBjZGtQaXBlbGluZS5hZGRTdGFnZShcbiAgICAgIG5ldyBEZXBsb3ltZW50U3RhZ2UoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIFwiT3JjYUJ1c1Byb2RcIixcbiAgICAgICAgc3RhZ2VFbnYucHJvZCxcbiAgICAgICAgcHJvcHMuc3RhY2tOYW1lLFxuICAgICAgICBwcm9wcy5zdGFjayxcbiAgICAgICAgcHJvcHMuc3RhY2tDb25maWcucHJvZCxcbiAgICAgICAgcHJvcHMuZ2l0aHViUmVwbyxcbiAgICAgICAgcHJvcHMuZ2l0aHViQnJhbmNoLFxuICAgICAgKSxcbiAgICApO1xuXG4gICAgaWYgKHByb3BzLmVuYWJsZVNsYWNrTm90aWZpY2F0aW9uID8/IHRydWUpIHtcbiAgICAgIGNvbnN0IGFsZXJ0c0J1aWxkU2xhY2tDb25maWdBcm4gPSBTdHJpbmdQYXJhbWV0ZXIudmFsdWVGb3JTdHJpbmdQYXJhbWV0ZXIoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIFwiL2NoYXRib3RfYXJuL3NsYWNrL2FsZXJ0cy1idWlsZFwiLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHRhcmdldCA9IFNsYWNrQ2hhbm5lbENvbmZpZ3VyYXRpb24uZnJvbVNsYWNrQ2hhbm5lbENvbmZpZ3VyYXRpb25Bcm4oXG4gICAgICAgIHRoaXMsXG4gICAgICAgIFwiU2xhY2tDaGFubmVsQ29uZmlndXJhdGlvblwiLFxuICAgICAgICBhbGVydHNCdWlsZFNsYWNrQ29uZmlnQXJuLFxuICAgICAgKTtcblxuICAgICAgdGhpcy5waXBlbGluZS5ub3RpZnlPbihcIlBpcGVsaW5lU2xhY2tOb3RpZmljYXRpb25cIiwgdGFyZ2V0LCB7XG4gICAgICAgIGV2ZW50czogcHJvcHMubm90aWZpY2F0aW9uRXZlbnRzIHx8IFtcbiAgICAgICAgICBQaXBlbGluZU5vdGlmaWNhdGlvbkV2ZW50cy5QSVBFTElORV9FWEVDVVRJT05fRkFJTEVELFxuICAgICAgICBdLFxuICAgICAgICBkZXRhaWxUeXBlOiBEZXRhaWxUeXBlLkZVTEwsXG4gICAgICAgIG5vdGlmaWNhdGlvblJ1bGVOYW1lOiBgT3JjYUJ1cy0ke3Byb3BzLnBpcGVsaW5lTmFtZX1gLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgTWFudWFsQXBwcm92YWxBY3Rpb25TdGVwIHdpdGggcmVxdWlyZWQgcnVuT3JkZXIuXG4gKi9cbmludGVyZmFjZSBNYW51YWxBcHByb3ZhbEFjdGlvblN0ZXBQcm9wcyBleHRlbmRzIE1hbnVhbEFwcHJvdmFsQWN0aW9uUHJvcHMge1xuICAvKipcbiAgICogVGhlIHJ1biBvcmRlciBmb3IgdGhpcyBhY3Rpb24gaW4gdGhlIHBpcGVsaW5lIHN0YWdlLiBUaGUgc3RhZ2UgUHJlL1Bvc3Qgb3JkZXIgZG9lcyBub3QgYXBwbHkgdG8gdGhpcyBjdXN0b21cbiAgICogc3RlcC9hY3Rpb24sIHlvdSBuZWVkIHRvIGV4cGxpY2l0bHkgc2V0IHRoZSBydW5PcmRlci5cbiAgICovXG4gIHJ1bk9yZGVyOiBudW1iZXI7XG59XG4vKipcbiAqIEN1c3RvbSBtYW51YWwgYXBwcm92YWwgc3RlcCBmb3IgQ0RLIENvZGVQaXBlbGluZS5cbiAqXG4gKiBUaGlzIGNsYXNzIGJyaWRnZXMgdGhlIGdhcCB0byBlbmFibGUgdXNpbmcgTWFudWFsQXBwcm92YWxBY3Rpb24gd2l0aGluIGEgU3RlcCBjbGFzcyxcbiAqIG1ha2luZyBpdCBjb21wYXRpYmxlIHdpdGggY2RrLnBpcGVsaW5lcyBjb25zdHJ1Y3RzLlxuICpcbiAqIEBwYXJhbSBpZCAtIFRoZSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHN0ZXAuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwcm9wZXJ0aWVzIGZvciB0aGUgbWFudWFsIGFwcHJvdmFsIGFjdGlvbiwgaW5jbHVkaW5nXG4gKi9cbmNsYXNzIE1hbnVhbEFwcHJvdmFsQWN0aW9uU3RlcFxuICBleHRlbmRzIFN0ZXBcbiAgaW1wbGVtZW50cyBJQ29kZVBpcGVsaW5lQWN0aW9uRmFjdG9yeVxue1xuICBwcml2YXRlIHJlYWRvbmx5IG1hbnVhbEFwcHJvdmFsQWN0aW9uUHJvcHM6IE1hbnVhbEFwcHJvdmFsQWN0aW9uU3RlcFByb3BzO1xuICBjb25zdHJ1Y3RvcihpZDogc3RyaW5nLCBvcHRpb25zOiBNYW51YWxBcHByb3ZhbEFjdGlvblN0ZXBQcm9wcykge1xuICAgIHN1cGVyKGlkKTtcbiAgICB0aGlzLm1hbnVhbEFwcHJvdmFsQWN0aW9uUHJvcHMgPSBvcHRpb25zO1xuICB9XG5cbiAgcHVibGljIHByb2R1Y2VBY3Rpb24oXG4gICAgc3RhZ2U6IElTdGFnZSxcbiAgICBvcHRpb25zOiBQcm9kdWNlQWN0aW9uT3B0aW9ucyxcbiAgKTogQ29kZVBpcGVsaW5lQWN0aW9uRmFjdG9yeVJlc3VsdCB7XG4gICAgc3RhZ2UuYWRkQWN0aW9uKG5ldyBNYW51YWxBcHByb3ZhbEFjdGlvbih0aGlzLm1hbnVhbEFwcHJvdmFsQWN0aW9uUHJvcHMpKTtcblxuICAgIHJldHVybiB7IHJ1bk9yZGVyc0NvbnN1bWVkOiAxIH07XG4gIH1cbn1cblxuY2xhc3MgRGVwbG95bWVudFN0YWdlIGV4dGVuZHMgU3RhZ2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGVudmlyb25tZW50TmFtZTogc3RyaW5nLFxuICAgIGVudjogRW52aXJvbm1lbnQsXG4gICAgc3RhY2tOYW1lOiBzdHJpbmcsXG4gICAgc3RhY2tDbGFzczogbmV3IChzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogYW55KSA9PiBTdGFjayxcbiAgICBhcHBTdGFja1Byb3BzOiBhbnksXG4gICAgZ2l0aHViUmVwbzogc3RyaW5nLFxuICAgIGdpdGh1YkJyYW5jaD86IHN0cmluZyxcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGVudmlyb25tZW50TmFtZSwgeyBlbnY6IGVudiB9KTtcblxuICAgIGxldCBzb3VyY2UgPSBgaHR0cHM6Ly9naXRodWIuY29tL09yY2FCdXMvJHtnaXRodWJSZXBvfWA7XG4gICAgaWYgKGdpdGh1YkJyYW5jaCAhPT0gdW5kZWZpbmVkICYmIGdpdGh1YkJyYW5jaCAhPT0gXCJtYWluXCIpIHtcbiAgICAgIHNvdXJjZSA9IGAke3NvdXJjZX0vdHJlZS8ke2dpdGh1YkJyYW5jaH1gO1xuICAgIH1cblxuICAgIG5ldyBzdGFja0NsYXNzKHRoaXMsIHN0YWNrTmFtZSwge1xuICAgICAgZW52OiBlbnYsXG4gICAgICB0YWdzOiB7XG4gICAgICAgIFwidW1jY3Itb3JnOlByb2R1Y3RcIjogXCJPcmNhQnVzXCIsXG4gICAgICAgIFwidW1jY3Itb3JnOkNyZWF0b3JcIjogXCJDREtcIixcbiAgICAgICAgXCJ1bWNjci1vcmc6U2VydmljZVwiOiBzdGFja05hbWUsXG4gICAgICAgIFwidW1jY3Itb3JnOlNvdXJjZVwiOiBzb3VyY2UsXG4gICAgICB9LFxuICAgICAgLi4uYXBwU3RhY2tQcm9wcyxcbiAgICB9KTtcbiAgfVxufVxuIl19
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.32" };
43
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.dynamodb.DynamoDbPartitionedConstruct", version: "0.0.34" };
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.32" };
78
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.dynamodb.DynamoDbNonPartitionedConstruct", version: "0.0.34" };
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.32" };
58
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.ecs.EcsFargateTaskConstruct", version: "0.0.34" };
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.32" };
59
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.lambda.PythonUvFunction", version: "0.0.34" };
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
@@ -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.32" };
16
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.monitoredQueue.MonitoredQueue", version: "0.0.34" };
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.32" };
10
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.namedLambdaRole.NamedLambdaRole", version: "0.0.34" };
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.32",
3
+ "version": "0.0.34",
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.32" };
18
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.provider.ProviderFunction", version: "0.0.34" };
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.32" };
26
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.sharedConfig.networking.OrcaBusVpc", version: "0.0.34" };
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.32" };
45
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.sharedConfig.networking.OrcaBusSharedComputeSecurityGroup", version: "0.0.34" };
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.32" };
14
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.sharedConfig.slack.SlackAlerts", version: "0.0.34" };
15
15
  /**
16
16
  * Format the ARN for the slack alerts SNS topic for the current stack.
17
17
  * @param stack