@aws-solutions-constructs/core 2.39.0 → 2.41.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +273 -27
- package/lib/alb-helper.d.ts +9 -1
- package/lib/alb-helper.js +7 -7
- package/lib/cloudfront-distribution-helper.js +9 -10
- package/lib/cognito-helper.js +5 -3
- package/lib/elasticache-helper.js +1 -1
- package/lib/elasticsearch-defaults.js +5 -1
- package/lib/eventbridge-helper.js +3 -2
- package/lib/fargate-helper.d.ts +10 -1
- package/lib/fargate-helper.js +17 -17
- package/lib/glue-job-helper.js +5 -3
- package/lib/input-validation.js +3 -3
- package/lib/lambda-helper.js +3 -5
- package/lib/opensearch-defaults.js +5 -1
- package/lib/override-warning-service.js +2 -2
- package/lib/s3-bucket-defaults.d.ts +0 -4
- package/lib/s3-bucket-defaults.js +2 -15
- package/lib/s3-bucket-helper.js +14 -10
- package/lib/sqs-helper.js +3 -2
- package/lib/utils.js +3 -10
- package/lib/vpc-helper.js +3 -2
- package/package.json +3 -3
- package/test/alb-helper.test.js +36 -9
- package/test/elasticsearch-helper.test.js +5 -1
- package/test/fargate-helper.test.js +44 -10
- package/test/input-validation.test.js +11 -11
- package/test/opensearch-helper.test.js +5 -1
- package/test/s3-bucket-helper.test.js +19 -1
- package/test/test-helper.js +3 -2
package/.jsii
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"npmlog": "^4.1.2"
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"aws-cdk-lib": "^2.
|
|
16
|
+
"aws-cdk-lib": "^2.82.0",
|
|
17
17
|
"constructs": "^10.0.0"
|
|
18
18
|
},
|
|
19
19
|
"dependencyClosure": {
|
|
@@ -448,6 +448,19 @@
|
|
|
448
448
|
}
|
|
449
449
|
}
|
|
450
450
|
},
|
|
451
|
+
"aws-cdk-lib.aws_backupgateway": {
|
|
452
|
+
"targets": {
|
|
453
|
+
"dotnet": {
|
|
454
|
+
"package": "Amazon.CDK.AWS.BackupGateway"
|
|
455
|
+
},
|
|
456
|
+
"java": {
|
|
457
|
+
"package": "services.backupgateway"
|
|
458
|
+
},
|
|
459
|
+
"python": {
|
|
460
|
+
"module": "aws_cdk.aws_backupgateway"
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
},
|
|
451
464
|
"aws-cdk-lib.aws_batch": {
|
|
452
465
|
"targets": {
|
|
453
466
|
"dotnet": {
|
|
@@ -2373,6 +2386,19 @@
|
|
|
2373
2386
|
}
|
|
2374
2387
|
}
|
|
2375
2388
|
},
|
|
2389
|
+
"aws-cdk-lib.aws_osis": {
|
|
2390
|
+
"targets": {
|
|
2391
|
+
"dotnet": {
|
|
2392
|
+
"package": "Amazon.CDK.AWS.OSIS"
|
|
2393
|
+
},
|
|
2394
|
+
"java": {
|
|
2395
|
+
"package": "services.osis"
|
|
2396
|
+
},
|
|
2397
|
+
"python": {
|
|
2398
|
+
"module": "aws_cdk.aws_osis"
|
|
2399
|
+
}
|
|
2400
|
+
}
|
|
2401
|
+
},
|
|
2376
2402
|
"aws-cdk-lib.aws_panorama": {
|
|
2377
2403
|
"targets": {
|
|
2378
2404
|
"dotnet": {
|
|
@@ -2438,6 +2464,19 @@
|
|
|
2438
2464
|
}
|
|
2439
2465
|
}
|
|
2440
2466
|
},
|
|
2467
|
+
"aws-cdk-lib.aws_proton": {
|
|
2468
|
+
"targets": {
|
|
2469
|
+
"dotnet": {
|
|
2470
|
+
"package": "Amazon.CDK.AWS.Proton"
|
|
2471
|
+
},
|
|
2472
|
+
"java": {
|
|
2473
|
+
"package": "services.proton"
|
|
2474
|
+
},
|
|
2475
|
+
"python": {
|
|
2476
|
+
"module": "aws_cdk.aws_proton"
|
|
2477
|
+
}
|
|
2478
|
+
}
|
|
2479
|
+
},
|
|
2441
2480
|
"aws-cdk-lib.aws_qldb": {
|
|
2442
2481
|
"targets": {
|
|
2443
2482
|
"dotnet": {
|
|
@@ -2919,6 +2958,19 @@
|
|
|
2919
2958
|
}
|
|
2920
2959
|
}
|
|
2921
2960
|
},
|
|
2961
|
+
"aws-cdk-lib.aws_shield": {
|
|
2962
|
+
"targets": {
|
|
2963
|
+
"dotnet": {
|
|
2964
|
+
"package": "Amazon.CDK.AWS.Shield"
|
|
2965
|
+
},
|
|
2966
|
+
"java": {
|
|
2967
|
+
"package": "services.shield"
|
|
2968
|
+
},
|
|
2969
|
+
"python": {
|
|
2970
|
+
"module": "aws_cdk.aws_shield"
|
|
2971
|
+
}
|
|
2972
|
+
}
|
|
2973
|
+
},
|
|
2922
2974
|
"aws-cdk-lib.aws_signer": {
|
|
2923
2975
|
"targets": {
|
|
2924
2976
|
"dotnet": {
|
|
@@ -3416,7 +3468,7 @@
|
|
|
3416
3468
|
},
|
|
3417
3469
|
"description": "Core CDK Construct for patterns library",
|
|
3418
3470
|
"homepage": "https://github.com/awslabs/aws-solutions-constructs.git",
|
|
3419
|
-
"jsiiVersion": "1.
|
|
3471
|
+
"jsiiVersion": "1.82.0 (build 2d2ddd7)",
|
|
3420
3472
|
"license": "Apache-2.0",
|
|
3421
3473
|
"metadata": {
|
|
3422
3474
|
"jsii": {
|
|
@@ -4420,7 +4472,7 @@
|
|
|
4420
4472
|
"kind": "interface",
|
|
4421
4473
|
"locationInModule": {
|
|
4422
4474
|
"filename": "lib/lambda-helper.ts",
|
|
4423
|
-
"line":
|
|
4475
|
+
"line": 29
|
|
4424
4476
|
},
|
|
4425
4477
|
"name": "BuildLambdaFunctionProps",
|
|
4426
4478
|
"properties": [
|
|
@@ -4433,7 +4485,7 @@
|
|
|
4433
4485
|
"immutable": true,
|
|
4434
4486
|
"locationInModule": {
|
|
4435
4487
|
"filename": "lib/lambda-helper.ts",
|
|
4436
|
-
"line":
|
|
4488
|
+
"line": 35
|
|
4437
4489
|
},
|
|
4438
4490
|
"name": "existingLambdaObj",
|
|
4439
4491
|
"optional": true,
|
|
@@ -4450,7 +4502,7 @@
|
|
|
4450
4502
|
"immutable": true,
|
|
4451
4503
|
"locationInModule": {
|
|
4452
4504
|
"filename": "lib/lambda-helper.ts",
|
|
4453
|
-
"line":
|
|
4505
|
+
"line": 41
|
|
4454
4506
|
},
|
|
4455
4507
|
"name": "lambdaFunctionProps",
|
|
4456
4508
|
"optional": true,
|
|
@@ -4467,7 +4519,7 @@
|
|
|
4467
4519
|
"immutable": true,
|
|
4468
4520
|
"locationInModule": {
|
|
4469
4521
|
"filename": "lib/lambda-helper.ts",
|
|
4470
|
-
"line":
|
|
4522
|
+
"line": 47
|
|
4471
4523
|
},
|
|
4472
4524
|
"name": "vpc",
|
|
4473
4525
|
"optional": true,
|
|
@@ -4864,7 +4916,7 @@
|
|
|
4864
4916
|
"kind": "interface",
|
|
4865
4917
|
"locationInModule": {
|
|
4866
4918
|
"filename": "lib/s3-bucket-helper.ts",
|
|
4867
|
-
"line":
|
|
4919
|
+
"line": 112
|
|
4868
4920
|
},
|
|
4869
4921
|
"name": "BuildS3BucketResponse",
|
|
4870
4922
|
"properties": [
|
|
@@ -4873,7 +4925,7 @@
|
|
|
4873
4925
|
"immutable": true,
|
|
4874
4926
|
"locationInModule": {
|
|
4875
4927
|
"filename": "lib/s3-bucket-helper.ts",
|
|
4876
|
-
"line":
|
|
4928
|
+
"line": 113
|
|
4877
4929
|
},
|
|
4878
4930
|
"name": "bucket",
|
|
4879
4931
|
"type": {
|
|
@@ -4885,7 +4937,7 @@
|
|
|
4885
4937
|
"immutable": true,
|
|
4886
4938
|
"locationInModule": {
|
|
4887
4939
|
"filename": "lib/s3-bucket-helper.ts",
|
|
4888
|
-
"line":
|
|
4940
|
+
"line": 114
|
|
4889
4941
|
},
|
|
4890
4942
|
"name": "loggingBucket",
|
|
4891
4943
|
"optional": true,
|
|
@@ -5512,7 +5564,7 @@
|
|
|
5512
5564
|
"kind": "interface",
|
|
5513
5565
|
"locationInModule": {
|
|
5514
5566
|
"filename": "lib/utils.ts",
|
|
5515
|
-
"line":
|
|
5567
|
+
"line": 185
|
|
5516
5568
|
},
|
|
5517
5569
|
"name": "CfnNagSuppressRule",
|
|
5518
5570
|
"properties": [
|
|
@@ -5521,7 +5573,7 @@
|
|
|
5521
5573
|
"immutable": true,
|
|
5522
5574
|
"locationInModule": {
|
|
5523
5575
|
"filename": "lib/utils.ts",
|
|
5524
|
-
"line":
|
|
5576
|
+
"line": 186
|
|
5525
5577
|
},
|
|
5526
5578
|
"name": "id",
|
|
5527
5579
|
"type": {
|
|
@@ -5533,7 +5585,7 @@
|
|
|
5533
5585
|
"immutable": true,
|
|
5534
5586
|
"locationInModule": {
|
|
5535
5587
|
"filename": "lib/utils.ts",
|
|
5536
|
-
"line":
|
|
5588
|
+
"line": 187
|
|
5537
5589
|
},
|
|
5538
5590
|
"name": "reason",
|
|
5539
5591
|
"type": {
|
|
@@ -5550,7 +5602,7 @@
|
|
|
5550
5602
|
"kind": "interface",
|
|
5551
5603
|
"locationInModule": {
|
|
5552
5604
|
"filename": "lib/cloudfront-distribution-helper.ts",
|
|
5553
|
-
"line":
|
|
5605
|
+
"line": 69
|
|
5554
5606
|
},
|
|
5555
5607
|
"name": "CloudFrontDistributionForApiGatewayResponse",
|
|
5556
5608
|
"properties": [
|
|
@@ -5559,7 +5611,7 @@
|
|
|
5559
5611
|
"immutable": true,
|
|
5560
5612
|
"locationInModule": {
|
|
5561
5613
|
"filename": "lib/cloudfront-distribution-helper.ts",
|
|
5562
|
-
"line":
|
|
5614
|
+
"line": 70
|
|
5563
5615
|
},
|
|
5564
5616
|
"name": "distribution",
|
|
5565
5617
|
"type": {
|
|
@@ -5571,7 +5623,7 @@
|
|
|
5571
5623
|
"immutable": true,
|
|
5572
5624
|
"locationInModule": {
|
|
5573
5625
|
"filename": "lib/cloudfront-distribution-helper.ts",
|
|
5574
|
-
"line":
|
|
5626
|
+
"line": 71
|
|
5575
5627
|
},
|
|
5576
5628
|
"name": "cloudfrontFunction",
|
|
5577
5629
|
"optional": true,
|
|
@@ -5584,7 +5636,7 @@
|
|
|
5584
5636
|
"immutable": true,
|
|
5585
5637
|
"locationInModule": {
|
|
5586
5638
|
"filename": "lib/cloudfront-distribution-helper.ts",
|
|
5587
|
-
"line":
|
|
5639
|
+
"line": 72
|
|
5588
5640
|
},
|
|
5589
5641
|
"name": "loggingBucket",
|
|
5590
5642
|
"optional": true,
|
|
@@ -5602,7 +5654,7 @@
|
|
|
5602
5654
|
"kind": "interface",
|
|
5603
5655
|
"locationInModule": {
|
|
5604
5656
|
"filename": "lib/cloudfront-distribution-helper.ts",
|
|
5605
|
-
"line":
|
|
5657
|
+
"line": 154
|
|
5606
5658
|
},
|
|
5607
5659
|
"name": "CloudFrontDistributionForMediaStoreResponse",
|
|
5608
5660
|
"properties": [
|
|
@@ -5611,7 +5663,7 @@
|
|
|
5611
5663
|
"immutable": true,
|
|
5612
5664
|
"locationInModule": {
|
|
5613
5665
|
"filename": "lib/cloudfront-distribution-helper.ts",
|
|
5614
|
-
"line":
|
|
5666
|
+
"line": 155
|
|
5615
5667
|
},
|
|
5616
5668
|
"name": "distribution",
|
|
5617
5669
|
"type": {
|
|
@@ -5623,7 +5675,7 @@
|
|
|
5623
5675
|
"immutable": true,
|
|
5624
5676
|
"locationInModule": {
|
|
5625
5677
|
"filename": "lib/cloudfront-distribution-helper.ts",
|
|
5626
|
-
"line":
|
|
5678
|
+
"line": 157
|
|
5627
5679
|
},
|
|
5628
5680
|
"name": "requestPolicy",
|
|
5629
5681
|
"type": {
|
|
@@ -5635,7 +5687,7 @@
|
|
|
5635
5687
|
"immutable": true,
|
|
5636
5688
|
"locationInModule": {
|
|
5637
5689
|
"filename": "lib/cloudfront-distribution-helper.ts",
|
|
5638
|
-
"line":
|
|
5690
|
+
"line": 158
|
|
5639
5691
|
},
|
|
5640
5692
|
"name": "cloudfrontFunction",
|
|
5641
5693
|
"optional": true,
|
|
@@ -5648,7 +5700,7 @@
|
|
|
5648
5700
|
"immutable": true,
|
|
5649
5701
|
"locationInModule": {
|
|
5650
5702
|
"filename": "lib/cloudfront-distribution-helper.ts",
|
|
5651
|
-
"line":
|
|
5703
|
+
"line": 156
|
|
5652
5704
|
},
|
|
5653
5705
|
"name": "loggingBucket",
|
|
5654
5706
|
"optional": true,
|
|
@@ -5666,7 +5718,7 @@
|
|
|
5666
5718
|
"kind": "interface",
|
|
5667
5719
|
"locationInModule": {
|
|
5668
5720
|
"filename": "lib/cloudfront-distribution-helper.ts",
|
|
5669
|
-
"line":
|
|
5721
|
+
"line": 105
|
|
5670
5722
|
},
|
|
5671
5723
|
"name": "CloudFrontDistributionForS3Response",
|
|
5672
5724
|
"properties": [
|
|
@@ -5675,7 +5727,7 @@
|
|
|
5675
5727
|
"immutable": true,
|
|
5676
5728
|
"locationInModule": {
|
|
5677
5729
|
"filename": "lib/cloudfront-distribution-helper.ts",
|
|
5678
|
-
"line":
|
|
5730
|
+
"line": 106
|
|
5679
5731
|
},
|
|
5680
5732
|
"name": "distribution",
|
|
5681
5733
|
"type": {
|
|
@@ -5687,7 +5739,7 @@
|
|
|
5687
5739
|
"immutable": true,
|
|
5688
5740
|
"locationInModule": {
|
|
5689
5741
|
"filename": "lib/cloudfront-distribution-helper.ts",
|
|
5690
|
-
"line":
|
|
5742
|
+
"line": 108
|
|
5691
5743
|
},
|
|
5692
5744
|
"name": "cloudfrontFunction",
|
|
5693
5745
|
"optional": true,
|
|
@@ -5700,7 +5752,7 @@
|
|
|
5700
5752
|
"immutable": true,
|
|
5701
5753
|
"locationInModule": {
|
|
5702
5754
|
"filename": "lib/cloudfront-distribution-helper.ts",
|
|
5703
|
-
"line":
|
|
5755
|
+
"line": 107
|
|
5704
5756
|
},
|
|
5705
5757
|
"name": "loggingBucket",
|
|
5706
5758
|
"optional": true,
|
|
@@ -5761,6 +5813,110 @@
|
|
|
5761
5813
|
],
|
|
5762
5814
|
"symbolId": "lib/cognito-helper:CognitoOptions"
|
|
5763
5815
|
},
|
|
5816
|
+
"@aws-solutions-constructs/core.CreateFargateServiceProps": {
|
|
5817
|
+
"assembly": "@aws-solutions-constructs/core",
|
|
5818
|
+
"datatype": true,
|
|
5819
|
+
"fqn": "@aws-solutions-constructs/core.CreateFargateServiceProps",
|
|
5820
|
+
"kind": "interface",
|
|
5821
|
+
"locationInModule": {
|
|
5822
|
+
"filename": "lib/fargate-helper.ts",
|
|
5823
|
+
"line": 31
|
|
5824
|
+
},
|
|
5825
|
+
"name": "CreateFargateServiceProps",
|
|
5826
|
+
"properties": [
|
|
5827
|
+
{
|
|
5828
|
+
"abstract": true,
|
|
5829
|
+
"immutable": true,
|
|
5830
|
+
"locationInModule": {
|
|
5831
|
+
"filename": "lib/fargate-helper.ts",
|
|
5832
|
+
"line": 32
|
|
5833
|
+
},
|
|
5834
|
+
"name": "constructVpc",
|
|
5835
|
+
"type": {
|
|
5836
|
+
"fqn": "aws-cdk-lib.aws_ec2.IVpc"
|
|
5837
|
+
}
|
|
5838
|
+
},
|
|
5839
|
+
{
|
|
5840
|
+
"abstract": true,
|
|
5841
|
+
"immutable": true,
|
|
5842
|
+
"locationInModule": {
|
|
5843
|
+
"filename": "lib/fargate-helper.ts",
|
|
5844
|
+
"line": 33
|
|
5845
|
+
},
|
|
5846
|
+
"name": "clientClusterProps",
|
|
5847
|
+
"optional": true,
|
|
5848
|
+
"type": {
|
|
5849
|
+
"fqn": "aws-cdk-lib.aws_ecs.ClusterProps"
|
|
5850
|
+
}
|
|
5851
|
+
},
|
|
5852
|
+
{
|
|
5853
|
+
"abstract": true,
|
|
5854
|
+
"immutable": true,
|
|
5855
|
+
"locationInModule": {
|
|
5856
|
+
"filename": "lib/fargate-helper.ts",
|
|
5857
|
+
"line": 37
|
|
5858
|
+
},
|
|
5859
|
+
"name": "clientContainerDefinitionProps",
|
|
5860
|
+
"optional": true,
|
|
5861
|
+
"type": {
|
|
5862
|
+
"primitive": "any"
|
|
5863
|
+
}
|
|
5864
|
+
},
|
|
5865
|
+
{
|
|
5866
|
+
"abstract": true,
|
|
5867
|
+
"immutable": true,
|
|
5868
|
+
"locationInModule": {
|
|
5869
|
+
"filename": "lib/fargate-helper.ts",
|
|
5870
|
+
"line": 38
|
|
5871
|
+
},
|
|
5872
|
+
"name": "clientFargateServiceProps",
|
|
5873
|
+
"optional": true,
|
|
5874
|
+
"type": {
|
|
5875
|
+
"primitive": "any"
|
|
5876
|
+
}
|
|
5877
|
+
},
|
|
5878
|
+
{
|
|
5879
|
+
"abstract": true,
|
|
5880
|
+
"immutable": true,
|
|
5881
|
+
"locationInModule": {
|
|
5882
|
+
"filename": "lib/fargate-helper.ts",
|
|
5883
|
+
"line": 36
|
|
5884
|
+
},
|
|
5885
|
+
"name": "clientFargateTaskDefinitionProps",
|
|
5886
|
+
"optional": true,
|
|
5887
|
+
"type": {
|
|
5888
|
+
"primitive": "any"
|
|
5889
|
+
}
|
|
5890
|
+
},
|
|
5891
|
+
{
|
|
5892
|
+
"abstract": true,
|
|
5893
|
+
"immutable": true,
|
|
5894
|
+
"locationInModule": {
|
|
5895
|
+
"filename": "lib/fargate-helper.ts",
|
|
5896
|
+
"line": 35
|
|
5897
|
+
},
|
|
5898
|
+
"name": "ecrImageVersion",
|
|
5899
|
+
"optional": true,
|
|
5900
|
+
"type": {
|
|
5901
|
+
"primitive": "string"
|
|
5902
|
+
}
|
|
5903
|
+
},
|
|
5904
|
+
{
|
|
5905
|
+
"abstract": true,
|
|
5906
|
+
"immutable": true,
|
|
5907
|
+
"locationInModule": {
|
|
5908
|
+
"filename": "lib/fargate-helper.ts",
|
|
5909
|
+
"line": 34
|
|
5910
|
+
},
|
|
5911
|
+
"name": "ecrRepositoryArn",
|
|
5912
|
+
"optional": true,
|
|
5913
|
+
"type": {
|
|
5914
|
+
"primitive": "string"
|
|
5915
|
+
}
|
|
5916
|
+
}
|
|
5917
|
+
],
|
|
5918
|
+
"symbolId": "lib/fargate-helper:CreateFargateServiceProps"
|
|
5919
|
+
},
|
|
5764
5920
|
"@aws-solutions-constructs/core.CreateFargateServiceResponse": {
|
|
5765
5921
|
"assembly": "@aws-solutions-constructs/core",
|
|
5766
5922
|
"datatype": true,
|
|
@@ -6070,6 +6226,96 @@
|
|
|
6070
6226
|
],
|
|
6071
6227
|
"symbolId": "lib/apigateway-helper:GlobalRestApiResponse"
|
|
6072
6228
|
},
|
|
6229
|
+
"@aws-solutions-constructs/core.ObtainAlbProps": {
|
|
6230
|
+
"assembly": "@aws-solutions-constructs/core",
|
|
6231
|
+
"datatype": true,
|
|
6232
|
+
"fqn": "@aws-solutions-constructs/core.ObtainAlbProps",
|
|
6233
|
+
"kind": "interface",
|
|
6234
|
+
"locationInModule": {
|
|
6235
|
+
"filename": "lib/alb-helper.ts",
|
|
6236
|
+
"line": 32
|
|
6237
|
+
},
|
|
6238
|
+
"name": "ObtainAlbProps",
|
|
6239
|
+
"properties": [
|
|
6240
|
+
{
|
|
6241
|
+
"abstract": true,
|
|
6242
|
+
"immutable": true,
|
|
6243
|
+
"locationInModule": {
|
|
6244
|
+
"filename": "lib/alb-helper.ts",
|
|
6245
|
+
"line": 34
|
|
6246
|
+
},
|
|
6247
|
+
"name": "publicApi",
|
|
6248
|
+
"type": {
|
|
6249
|
+
"primitive": "boolean"
|
|
6250
|
+
}
|
|
6251
|
+
},
|
|
6252
|
+
{
|
|
6253
|
+
"abstract": true,
|
|
6254
|
+
"immutable": true,
|
|
6255
|
+
"locationInModule": {
|
|
6256
|
+
"filename": "lib/alb-helper.ts",
|
|
6257
|
+
"line": 33
|
|
6258
|
+
},
|
|
6259
|
+
"name": "vpc",
|
|
6260
|
+
"type": {
|
|
6261
|
+
"fqn": "aws-cdk-lib.aws_ec2.IVpc"
|
|
6262
|
+
}
|
|
6263
|
+
},
|
|
6264
|
+
{
|
|
6265
|
+
"abstract": true,
|
|
6266
|
+
"immutable": true,
|
|
6267
|
+
"locationInModule": {
|
|
6268
|
+
"filename": "lib/alb-helper.ts",
|
|
6269
|
+
"line": 35
|
|
6270
|
+
},
|
|
6271
|
+
"name": "existingLoadBalancerObj",
|
|
6272
|
+
"optional": true,
|
|
6273
|
+
"type": {
|
|
6274
|
+
"fqn": "aws-cdk-lib.aws_elasticloadbalancingv2.ApplicationLoadBalancer"
|
|
6275
|
+
}
|
|
6276
|
+
},
|
|
6277
|
+
{
|
|
6278
|
+
"abstract": true,
|
|
6279
|
+
"immutable": true,
|
|
6280
|
+
"locationInModule": {
|
|
6281
|
+
"filename": "lib/alb-helper.ts",
|
|
6282
|
+
"line": 36
|
|
6283
|
+
},
|
|
6284
|
+
"name": "loadBalancerProps",
|
|
6285
|
+
"optional": true,
|
|
6286
|
+
"type": {
|
|
6287
|
+
"primitive": "any"
|
|
6288
|
+
}
|
|
6289
|
+
},
|
|
6290
|
+
{
|
|
6291
|
+
"abstract": true,
|
|
6292
|
+
"immutable": true,
|
|
6293
|
+
"locationInModule": {
|
|
6294
|
+
"filename": "lib/alb-helper.ts",
|
|
6295
|
+
"line": 37
|
|
6296
|
+
},
|
|
6297
|
+
"name": "logAccessLogs",
|
|
6298
|
+
"optional": true,
|
|
6299
|
+
"type": {
|
|
6300
|
+
"primitive": "boolean"
|
|
6301
|
+
}
|
|
6302
|
+
},
|
|
6303
|
+
{
|
|
6304
|
+
"abstract": true,
|
|
6305
|
+
"immutable": true,
|
|
6306
|
+
"locationInModule": {
|
|
6307
|
+
"filename": "lib/alb-helper.ts",
|
|
6308
|
+
"line": 38
|
|
6309
|
+
},
|
|
6310
|
+
"name": "loggingBucketProps",
|
|
6311
|
+
"optional": true,
|
|
6312
|
+
"type": {
|
|
6313
|
+
"fqn": "aws-cdk-lib.aws_s3.BucketProps"
|
|
6314
|
+
}
|
|
6315
|
+
}
|
|
6316
|
+
],
|
|
6317
|
+
"symbolId": "lib/alb-helper:ObtainAlbProps"
|
|
6318
|
+
},
|
|
6073
6319
|
"@aws-solutions-constructs/core.ObtainMemcachedClusterProps": {
|
|
6074
6320
|
"assembly": "@aws-solutions-constructs/core",
|
|
6075
6321
|
"datatype": true,
|
|
@@ -6974,6 +7220,6 @@
|
|
|
6974
7220
|
"symbolId": "lib/input-validation:VerifiedProps"
|
|
6975
7221
|
}
|
|
6976
7222
|
},
|
|
6977
|
-
"version": "2.
|
|
6978
|
-
"fingerprint": "
|
|
7223
|
+
"version": "2.41.0",
|
|
7224
|
+
"fingerprint": "EcP0OHh3e1xAsPGsRAMiewmKv1HYQBArfSy+lGlm1ww="
|
|
6979
7225
|
}
|
package/lib/alb-helper.d.ts
CHANGED
|
@@ -16,13 +16,21 @@ import * as ec2 from "aws-cdk-lib/aws-ec2";
|
|
|
16
16
|
import * as s3 from "aws-cdk-lib/aws-s3";
|
|
17
17
|
import * as ecs from "aws-cdk-lib/aws-ecs";
|
|
18
18
|
import * as lambda from "aws-cdk-lib/aws-lambda";
|
|
19
|
+
export interface ObtainAlbProps {
|
|
20
|
+
readonly vpc: ec2.IVpc;
|
|
21
|
+
readonly publicApi: boolean;
|
|
22
|
+
readonly existingLoadBalancerObj?: elb.ApplicationLoadBalancer;
|
|
23
|
+
readonly loadBalancerProps?: elb.ApplicationLoadBalancerProps | any;
|
|
24
|
+
readonly logAccessLogs?: boolean;
|
|
25
|
+
readonly loggingBucketProps?: s3.BucketProps;
|
|
26
|
+
}
|
|
19
27
|
/**
|
|
20
28
|
* @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
|
|
21
29
|
*
|
|
22
30
|
* Returns the correct ALB Load Balancer to use in this construct, either an existing
|
|
23
31
|
* one provided as an argument or create new one otherwise.
|
|
24
32
|
*/
|
|
25
|
-
export declare function ObtainAlb(scope: Construct, id: string,
|
|
33
|
+
export declare function ObtainAlb(scope: Construct, id: string, props: ObtainAlbProps): elb.ApplicationLoadBalancer;
|
|
26
34
|
/**
|
|
27
35
|
* @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
|
|
28
36
|
*/
|
package/lib/alb-helper.js
CHANGED
|
@@ -30,16 +30,16 @@ const s3_bucket_defaults_1 = require("./s3-bucket-defaults");
|
|
|
30
30
|
* Returns the correct ALB Load Balancer to use in this construct, either an existing
|
|
31
31
|
* one provided as an argument or create new one otherwise.
|
|
32
32
|
*/
|
|
33
|
-
function ObtainAlb(scope, id,
|
|
33
|
+
function ObtainAlb(scope, id, props) {
|
|
34
34
|
let loadBalancer;
|
|
35
|
-
if (existingLoadBalancerObj) {
|
|
36
|
-
loadBalancer = existingLoadBalancerObj;
|
|
35
|
+
if (props.existingLoadBalancerObj) {
|
|
36
|
+
loadBalancer = props.existingLoadBalancerObj;
|
|
37
37
|
}
|
|
38
38
|
else {
|
|
39
|
-
const consolidatedProps = utils_1.consolidateProps({}, loadBalancerProps, { vpc, internetFacing: publicApi });
|
|
39
|
+
const consolidatedProps = utils_1.consolidateProps({}, props.loadBalancerProps, { vpc: props.vpc, internetFacing: props.publicApi });
|
|
40
40
|
loadBalancer = new elb.ApplicationLoadBalancer(scope, `${id}-alb`, consolidatedProps);
|
|
41
|
-
if (logAccessLogs === undefined || logAccessLogs === true) {
|
|
42
|
-
const consolidatedLoggingBucketProps = utils_1.consolidateProps(s3_bucket_defaults_1.
|
|
41
|
+
if (props.logAccessLogs === undefined || props.logAccessLogs === true) {
|
|
42
|
+
const consolidatedLoggingBucketProps = utils_1.consolidateProps(s3_bucket_defaults_1.DefaultS3Props(), props.loggingBucketProps);
|
|
43
43
|
const loggingBucket = s3_bucket_helper_1.createAlbLoggingBucket(scope, id, consolidatedLoggingBucketProps);
|
|
44
44
|
loadBalancer.logAccessLogs(loggingBucket);
|
|
45
45
|
}
|
|
@@ -190,4 +190,4 @@ function CheckAlbProps(props) {
|
|
|
190
190
|
}
|
|
191
191
|
}
|
|
192
192
|
exports.CheckAlbProps = CheckAlbProps;
|
|
193
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxiLWhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFsYi1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7OztHQVdHOzs7QUFFSDs7O0dBR0c7QUFFSCw4REFBOEQ7QUFNOUQsdUZBQThGO0FBQzlGLHVFQUF1RTtBQUN2RSxtQ0FBeUQ7QUFDekQsaURBQXNEO0FBQ3RELHlEQUE0RDtBQUM1RCw2REFBaUU7QUFFakU7Ozs7O0dBS0c7QUFDSCxTQUFnQixTQUFTLENBQ3ZCLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixHQUFhLEVBQ2IsU0FBa0IsRUFDbEIsdUJBQXFELEVBQ3JELGlCQUEwRCxFQUMxRCxhQUF1QixFQUN2QixrQkFBbUM7SUFFbkMsSUFBSSxZQUF5QyxDQUFDO0lBRTlDLElBQUksdUJBQXVCLEVBQUU7UUFDM0IsWUFBWSxHQUFHLHVCQUF1QixDQUFDO0tBQ3hDO1NBQU07UUFDTCxNQUFNLGlCQUFpQixHQUFHLHdCQUFnQixDQUFDLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxFQUFFLEdBQUcsRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUN0RyxZQUFZLEdBQUcsSUFBSSxHQUFHLENBQUMsdUJBQXVCLENBQzVDLEtBQUssRUFDTCxHQUFHLEVBQUUsTUFBTSxFQUNYLGlCQUFpQixDQUNsQixDQUFDO1FBQ0YsSUFBSSxhQUFhLEtBQUssU0FBUyxJQUFJLGFBQWEsS0FBSyxJQUFJLEVBQUU7WUFDekQsTUFBTSw4QkFBOEIsR0FBRyx3QkFBZ0IsQ0FBQyw4Q0FBeUIsRUFBRSxFQUFFLGtCQUFrQixDQUFDLENBQUM7WUFDekcsTUFBTSxhQUFhLEdBQUcseUNBQXNCLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSw4QkFBOEIsQ0FBQyxDQUFDO1lBQ3hGLFlBQVksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDM0M7S0FDRjtJQUNELE9BQU8sWUFBWSxDQUFDO0FBQ3RCLENBQUM7QUE1QkQsOEJBNEJDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixXQUFXLENBQ3pCLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixZQUF5QyxFQUN6QyxhQUFpRDtJQUVqRCxJQUFJLHlCQUF1RCxDQUFDO0lBRTVELHlCQUF5QixHQUFHLHdCQUFnQixDQUFDLG1DQUFvQixDQUFDLFlBQVksQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBRWhHLHVCQUF1QjtJQUN2QixNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsQ0FBQyxtQkFBbUIsQ0FDMUMsS0FBSyxFQUNMLEdBQUcsRUFBRSxXQUFXLEVBQ2hCLHlCQUF5QixDQUMxQixDQUFDO0lBQ0YsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFdEMsSUFBSSx5QkFBeUIsQ0FBQyxRQUFRLEtBQUssR0FBRyxDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRTtRQUN2RSwwREFBMEQ7UUFDMUQsb0JBQVksQ0FDVixnRkFBZ0YsQ0FDakYsQ0FBQztRQUNGLElBQUksYUFBYSxDQUFDLFlBQVksRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzFDLE1BQU0sSUFBSSxLQUFLLENBQUMseUNBQXlDLENBQUMsQ0FBQztTQUM1RDtLQUNGO1NBQU07UUFDTCxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksSUFBSSxhQUFhLENBQUMsWUFBWSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDMUUsTUFBTSxJQUFJLEtBQUssQ0FBQyx3REFBd0QsQ0FBQyxDQUFDO1NBQzNFO1FBRUQsUUFBUSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztLQUNwRTtJQUVELElBQUkseUJBQXlCLENBQUMsUUFBUSxLQUFLLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUU7UUFDeEUsTUFBTSxHQUFHLEdBQXdCO1lBQy9CLElBQUksRUFBRSxLQUFLO1lBQ1gsUUFBUSxFQUFFLE9BQU87U0FDbEIsQ0FBQztRQUVGLE1BQU0sWUFBWSxHQUFHLElBQUksR0FBRyxDQUFDLG1CQUFtQixDQUM5QyxLQUFLLEVBQ0wsR0FBRyxFQUFFLFdBQVcsRUFDaEI7WUFDRSxZQUFZO1lBQ1osUUFBUSxFQUFFLGdEQUFtQixDQUFDLElBQUk7WUFDbEMsYUFBYSxFQUFFLDJDQUFjLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztTQUM1QyxDQUNGLENBQUM7UUFDRixZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztLQUMzQztJQUVELE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUM7QUFyREQsa0NBcURDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsU0FBZ0IsZUFBZSxDQUM3QixLQUFnQixFQUNoQixFQUFVLEVBQ1YsZUFBd0MsRUFDeEMsY0FBZ0MsRUFDaEMsU0FBNEIsRUFDNUIsV0FBNkM7SUFHN0MseURBQXlEO0lBQ3pELE1BQU0sWUFBWSxHQUFHLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUMzRCxNQUFNLGNBQWMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRTtRQUN2RSxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7UUFDdkIsZUFBZSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsU0FBUztRQUN0RSxXQUFXLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxTQUFTO0tBQy9ELENBQUMsQ0FBQztJQUVILDRFQUE0RTtJQUM1RSx1RUFBdUU7SUFDdkUsTUFBTSx1QkFBdUIsR0FBRyx3QkFBZ0IsQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsWUFBWSxFQUFFLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BHLGVBQWUsQ0FBQyxlQUFlLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsVUFBVSxFQUFFLHVCQUF1QixDQUFDLENBQUM7SUFFckYsY0FBYyxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUM3RCxPQUFPLGNBQWMsQ0FBQztBQUN4QixDQUFDO0FBeEJELDBDQXdCQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsZ0JBQWdCLENBQzlCLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixlQUF3QyxFQUN4QyxjQUFrQyxFQUNsQyxTQUE0QixFQUM1QixXQUE2QztJQUc3QyxJQUFJLFdBQVcsRUFBRSxRQUFRLEtBQUssR0FBRyxDQUFDLG1CQUFtQixDQUFDLEtBQUssRUFBRTtRQUMzRCxvQkFBWSxDQUFDLGtGQUFrRixDQUFDLENBQUM7S0FDbEc7SUFFRCxNQUFNLGNBQWMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztJQUV0Riw0RUFBNEU7SUFDNUUsaUZBQWlGO0lBQ2pGLE1BQU0sdUJBQXVCLEdBQUcsd0JBQWdCLENBQUMsRUFBRSxZQUFZLEVBQUUsQ0FBQyxjQUFjLENBQUMsRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBRWhHLGVBQWUsQ0FBQyxlQUFlLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsVUFBVSxFQUFFLHVCQUF1QixDQUFDLENBQUM7SUFDckYsY0FBYyxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUV6QyxPQUFPLGNBQWMsQ0FBQztBQUN4QixDQUFDO0FBdkJELDRDQXVCQztBQUVEOzs7Ozs7R0FNRztBQUNILFNBQWdCLGlCQUFpQixDQUFDLFNBQW9DO0lBQ3BFLElBQUksUUFBaUMsQ0FBQztJQUV0QyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFHO1FBQzNCLE1BQU0sSUFBSSxLQUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQztLQUN0RDtJQUNELElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUc7UUFDM0IsUUFBUSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUN6QjtTQUFNO1FBQ0wsUUFBUSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQXFCLENBQUMsUUFBUSxLQUFLLE9BQU8sQ0FBNEIsQ0FBQztLQUN6SDtJQUNELE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUM7QUFaRCw4Q0FZQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsYUFBYSxDQUFDLEtBQVU7SUFDdEMsSUFBSSxhQUFhLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQztJQUV2QixJQUFJLEtBQUssQ0FBQyxhQUFhLEVBQUUsZUFBZSxFQUFFO1FBQ3hDLGFBQWEsSUFBSSxvR0FBb0csQ0FBQztRQUN0SCxVQUFVLEdBQUcsSUFBSSxDQUFDO0tBQ25CO0lBRUQsSUFDRSxDQUFDLENBQUMsS0FBSyxDQUFDLHVCQUF1QjtRQUM3QixLQUFLLENBQUMsdUJBQXVCLENBQUMsU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7UUFDckQsQ0FBQyxLQUFLLENBQUMsdUJBQXVCLENBQUM7UUFDakMsQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUNwQjtRQUNBLGFBQWEsSUFBSSxzSkFBc0osQ0FBQztRQUN4SyxVQUFVLEdBQUcsSUFBSSxDQUFDO0tBQ25CO0lBRUQsSUFDRSxLQUFLLENBQUMsdUJBQXVCO1FBQzdCLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUM7UUFDbEQsS0FBSyxDQUFDLGFBQWEsRUFDbkI7UUFDQSxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLGFBQWEsSUFBSSxpRkFBaUYsQ0FBQztLQUNwRztJQUVELElBQ0UsS0FBSyxDQUFDLHVCQUF1QjtRQUM3QixLQUFLLENBQUMsdUJBQXVCLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDO1FBQ2xELENBQUMsS0FBSyxDQUFDLFNBQVMsRUFDaEI7UUFDQSxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLGFBQWEsSUFBSSxxRkFBcUYsQ0FBQztLQUN4RztJQUVELDBDQUEwQztJQUMxQyxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUU7UUFDdkQsVUFBVSxHQUFHLElBQUksQ0FBQztRQUNsQixhQUFhLElBQUksNkhBQTZILENBQUM7S0FDaEo7SUFFRCxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLEVBQUU7UUFDaEMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUNsQixhQUFhLElBQUksa0ZBQWtGLENBQUM7S0FDckc7SUFFRCxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsRUFBRTtRQUNqQyxvQkFBWSxDQUNWLGlHQUFpRyxDQUNsRyxDQUFDO0tBQ0g7SUFFRCxJQUFJLFVBQVUsRUFBRTtRQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7S0FDaEM7QUFDSCxDQUFDO0FBekRELHNDQXlEQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4gKiAgd2l0aCB0aGUgTGljZW5zZS4gQSBjb3B5IG9mIHRoZSBMaWNlbnNlIGlzIGxvY2F0ZWQgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBvciBpbiB0aGUgJ2xpY2Vuc2UnIGZpbGUgYWNjb21wYW55aW5nIHRoaXMgZmlsZS4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFU1xuICogIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXG4gKiAgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qXG4gKiAgVGhlIGZ1bmN0aW9ucyBmb3VuZCBoZXJlIGluIHRoZSBjb3JlIGxpYnJhcnkgYXJlIGZvciBpbnRlcm5hbCB1c2UgYW5kIGNhbiBiZSBjaGFuZ2VkXG4gKiAgb3IgcmVtb3ZlZCBvdXRzaWRlIG9mIGEgbWFqb3IgcmVsZWFzZS4gV2UgcmVjb21tZW5kIGFnYWluc3QgY2FsbGluZyB0aGVtIGRpcmVjdGx5IGZyb20gY2xpZW50IGNvZGUuXG4gKi9cblxuaW1wb3J0ICogYXMgZWxiIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWxhc3RpY2xvYWRiYWxhbmNpbmd2MlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCAqIGFzIGVjMiBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjMlwiO1xuaW1wb3J0ICogYXMgczMgZnJvbSBcImF3cy1jZGstbGliL2F3cy1zM1wiO1xuaW1wb3J0ICogYXMgZWNzIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWNzXCI7XG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGFcIjtcbmltcG9ydCB7IEFwcGxpY2F0aW9uUHJvdG9jb2wsIExpc3RlbmVyQWN0aW9uLCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWxhc3RpY2xvYWRiYWxhbmNpbmd2MlwiO1xuaW1wb3J0ICogYXMgZWxidCBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVsYXN0aWNsb2FkYmFsYW5jaW5ndjItdGFyZ2V0c1wiO1xuaW1wb3J0IHsgcHJpbnRXYXJuaW5nLCBjb25zb2xpZGF0ZVByb3BzIH0gZnJvbSBcIi4vdXRpbHNcIjtcbmltcG9ydCB7IERlZmF1bHRMaXN0ZW5lclByb3BzIH0gZnJvbSBcIi4vYWxiLWRlZmF1bHRzXCI7XG5pbXBvcnQgeyBjcmVhdGVBbGJMb2dnaW5nQnVja2V0IH0gZnJvbSBcIi4vczMtYnVja2V0LWhlbHBlclwiO1xuaW1wb3J0IHsgRGVmYXVsdExvZ2dpbmdCdWNrZXRQcm9wcyB9IGZyb20gXCIuL3MzLWJ1Y2tldC1kZWZhdWx0c1wiO1xuXG4vKipcbiAqIEBpbnRlcm5hbCBUaGlzIGlzIGFuIGludGVybmFsIGNvcmUgZnVuY3Rpb24gYW5kIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5IGJ5IFNvbHV0aW9ucyBDb25zdHJ1Y3RzIGNsaWVudHMuXG4gKlxuICogUmV0dXJucyB0aGUgY29ycmVjdCBBTEIgTG9hZCBCYWxhbmNlciB0byB1c2UgaW4gdGhpcyBjb25zdHJ1Y3QsIGVpdGhlciBhbiBleGlzdGluZ1xuICogb25lIHByb3ZpZGVkIGFzIGFuIGFyZ3VtZW50IG9yIGNyZWF0ZSAgbmV3IG9uZSBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBPYnRhaW5BbGIoXG4gIHNjb3BlOiBDb25zdHJ1Y3QsXG4gIGlkOiBzdHJpbmcsXG4gIHZwYzogZWMyLklWcGMsXG4gIHB1YmxpY0FwaTogYm9vbGVhbixcbiAgZXhpc3RpbmdMb2FkQmFsYW5jZXJPYmo/OiBlbGIuQXBwbGljYXRpb25Mb2FkQmFsYW5jZXIsXG4gIGxvYWRCYWxhbmNlclByb3BzPzogZWxiLkFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyUHJvcHMgfCBhbnksXG4gIGxvZ0FjY2Vzc0xvZ3M/OiBib29sZWFuLFxuICBsb2dnaW5nQnVja2V0UHJvcHM/OiBzMy5CdWNrZXRQcm9wc1xuKTogZWxiLkFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyIHtcbiAgbGV0IGxvYWRCYWxhbmNlcjogZWxiLkFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyO1xuXG4gIGlmIChleGlzdGluZ0xvYWRCYWxhbmNlck9iaikge1xuICAgIGxvYWRCYWxhbmNlciA9IGV4aXN0aW5nTG9hZEJhbGFuY2VyT2JqO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGNvbnNvbGlkYXRlZFByb3BzID0gY29uc29saWRhdGVQcm9wcyh7fSwgbG9hZEJhbGFuY2VyUHJvcHMsIHsgdnBjLCBpbnRlcm5ldEZhY2luZzogcHVibGljQXBpIH0pO1xuICAgIGxvYWRCYWxhbmNlciA9IG5ldyBlbGIuQXBwbGljYXRpb25Mb2FkQmFsYW5jZXIoXG4gICAgICBzY29wZSxcbiAgICAgIGAke2lkfS1hbGJgLFxuICAgICAgY29uc29saWRhdGVkUHJvcHNcbiAgICApO1xuICAgIGlmIChsb2dBY2Nlc3NMb2dzID09PSB1bmRlZmluZWQgfHwgbG9nQWNjZXNzTG9ncyA9PT0gdHJ1ZSkge1xuICAgICAgY29uc3QgY29uc29saWRhdGVkTG9nZ2luZ0J1Y2tldFByb3BzID0gY29uc29saWRhdGVQcm9wcyhEZWZhdWx0TG9nZ2luZ0J1Y2tldFByb3BzKCksIGxvZ2dpbmdCdWNrZXRQcm9wcyk7XG4gICAgICBjb25zdCBsb2dnaW5nQnVja2V0ID0gY3JlYXRlQWxiTG9nZ2luZ0J1Y2tldChzY29wZSwgaWQsIGNvbnNvbGlkYXRlZExvZ2dpbmdCdWNrZXRQcm9wcyk7XG4gICAgICBsb2FkQmFsYW5jZXIubG9nQWNjZXNzTG9ncyhsb2dnaW5nQnVja2V0KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGxvYWRCYWxhbmNlcjtcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gQWRkTGlzdGVuZXIoXG4gIHNjb3BlOiBDb25zdHJ1Y3QsXG4gIGlkOiBzdHJpbmcsXG4gIGxvYWRCYWxhbmNlcjogZWxiLkFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyLFxuICBsaXN0ZW5lclByb3BzOiBlbGIuQXBwbGljYXRpb25MaXN0ZW5lclByb3BzIHwgYW55XG4pOiBlbGIuQXBwbGljYXRpb25MaXN0ZW5lciB7XG4gIGxldCBjb25zb2xpZGF0ZWRMaXN0ZW5lclByb3BzOiBlbGIuQXBwbGljYXRpb25MaXN0ZW5lclByb3BzO1xuXG4gIGNvbnNvbGlkYXRlZExpc3RlbmVyUHJvcHMgPSBjb25zb2xpZGF0ZVByb3BzKERlZmF1bHRMaXN0ZW5lclByb3BzKGxvYWRCYWxhbmNlciksIGxpc3RlbmVyUHJvcHMpO1xuXG4gIC8vICBjcmVhdGUgdGhlIGxpc3RlbmVyXG4gIGNvbnN0IGxpc3RlbmVyID0gbmV3IGVsYi5BcHBsaWNhdGlvbkxpc3RlbmVyKFxuICAgIHNjb3BlLFxuICAgIGAke2lkfS1saXN0ZW5lcmAsXG4gICAgY29uc29saWRhdGVkTGlzdGVuZXJQcm9wc1xuICApO1xuICBsb2FkQmFsYW5jZXIubGlzdGVuZXJzLnB1c2gobGlzdGVuZXIpO1xuXG4gIGlmIChjb25zb2xpZGF0ZWRMaXN0ZW5lclByb3BzLnByb3RvY29sID09PSBlbGIuQXBwbGljYXRpb25Qcm90b2NvbC5IVFRQKSB7XG4gICAgLy8gVGhpcyB3aWxsIHVzZSBjb3JlLnByaW50V2FybmluZyBpbiB0aGUgYWN0dWFsIGNvbnN0cnVjdFxuICAgIHByaW50V2FybmluZyhcbiAgICAgIFwiQVdTIHJlY29tbWVuZHMgZW5jcnlwdGluZyB0cmFmZmljIHRvIGFuIEFwcGxpY2F0aW9uIExvYWQgQmFsYW5jZXIgdXNpbmcgSFRUUFMuXCJcbiAgICApO1xuICAgIGlmIChsaXN0ZW5lclByb3BzLmNlcnRpZmljYXRlcz8ubGVuZ3RoID4gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSFRUUCBsaXN0ZW5lcnMgY2Fubm90IHVzZSBhIGNlcnRpZmljYXRlXCIpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoIWxpc3RlbmVyUHJvcHMuY2VydGlmaWNhdGVzIHx8IGxpc3RlbmVyUHJvcHMuY2VydGlmaWNhdGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQSBsaXN0ZW5lciB1c2luZyBIVFRQUyBwcm90b2NvbCByZXF1aXJlcyBhIGNlcnRpZmljYXRlXCIpO1xuICAgIH1cblxuICAgIGxpc3RlbmVyLmFkZENlcnRpZmljYXRlcyhgJHtpZH0tY2VydGAsIGxpc3RlbmVyUHJvcHMuY2VydGlmaWNhdGVzKTtcbiAgfVxuXG4gIGlmIChjb25zb2xpZGF0ZWRMaXN0ZW5lclByb3BzLnByb3RvY29sID09PSBlbGIuQXBwbGljYXRpb25Qcm90b2NvbC5IVFRQUykge1xuICAgIGNvbnN0IG9wdDogZWxiLlJlZGlyZWN0T3B0aW9ucyA9IHtcbiAgICAgIHBvcnQ6IFwiNDQzXCIsXG4gICAgICBwcm90b2NvbDogXCJIVFRQU1wiLFxuICAgIH07XG5cbiAgICBjb25zdCBodHRwTGlzdGVuZXIgPSBuZXcgZWxiLkFwcGxpY2F0aW9uTGlzdGVuZXIoXG4gICAgICBzY29wZSxcbiAgICAgIGAke2lkfS1yZWRpcmVjdGAsXG4gICAgICB7XG4gICAgICAgIGxvYWRCYWxhbmNlcixcbiAgICAgICAgcHJvdG9jb2w6IEFwcGxpY2F0aW9uUHJvdG9jb2wuSFRUUCxcbiAgICAgICAgZGVmYXVsdEFjdGlvbjogTGlzdGVuZXJBY3Rpb24ucmVkaXJlY3Qob3B0KSxcbiAgICAgIH1cbiAgICApO1xuICAgIGxvYWRCYWxhbmNlci5saXN0ZW5lcnMucHVzaChodHRwTGlzdGVuZXIpO1xuICB9XG5cbiAgcmV0dXJuIGxpc3RlbmVyO1xufVxuXG4vKipcbiAqIEBpbnRlcm5hbCBUaGlzIGlzIGFuIGludGVybmFsIGNvcmUgZnVuY3Rpb24gYW5kIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5IGJ5IFNvbHV0aW9ucyBDb25zdHJ1Y3RzIGNsaWVudHMuXG4gKlxuICogQ3JlYXRlcyBhIFRhcmdldCBHcm91cCBmb3IgTGFtYmRhIGZ1bmN0aW9ucyBhbmQgYWRkcyB0aGVcbiAqIHByb3ZpZGVkIGZ1bmN0aW9ucyBhcyBhIHRhcmdldCB0byB0aGF0IGdyb3VwLiBUaGVuIGFkZHNcbiAqIHRoZSBuZXcgVGFyZ2V0IEdyb3VwIHRvIHRoZSBwcm92aWRlZCBMaXN0ZW5lci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEFkZExhbWJkYVRhcmdldChcbiAgc2NvcGU6IENvbnN0cnVjdCxcbiAgaWQ6IHN0cmluZyxcbiAgY3VycmVudExpc3RlbmVyOiBlbGIuQXBwbGljYXRpb25MaXN0ZW5lcixcbiAgbGFtYmRhRnVuY3Rpb246IGxhbWJkYS5JRnVuY3Rpb24sXG4gIHJ1bGVQcm9wcz86IGVsYi5BZGRSdWxlUHJvcHMsXG4gIHRhcmdldFByb3BzPzogZWxiLkFwcGxpY2F0aW9uVGFyZ2V0R3JvdXBQcm9wcyxcbik6IGVsYi5BcHBsaWNhdGlvblRhcmdldEdyb3VwICB7XG5cbiAgLy8gIENyZWF0ZSB0aGUgdGFyZ2V0IGFuZCBhc3NpZ24gaXQgdG8gYSBuZXcgdGFyZ2V0IGdyb3VwXG4gIGNvbnN0IGxhbWJkYVRhcmdldCA9IG5ldyBlbGJ0LkxhbWJkYVRhcmdldChsYW1iZGFGdW5jdGlvbik7XG4gIGNvbnN0IG5ld1RhcmdldEdyb3VwID0gbmV3IGVsYi5BcHBsaWNhdGlvblRhcmdldEdyb3VwKHNjb3BlLCBgJHtpZH0tdGdgLCB7XG4gICAgdGFyZ2V0czogW2xhbWJkYVRhcmdldF0sXG4gICAgdGFyZ2V0R3JvdXBOYW1lOiB0YXJnZXRQcm9wcyA/IHRhcmdldFByb3BzLnRhcmdldEdyb3VwTmFtZSA6IHVuZGVmaW5lZCxcbiAgICBoZWFsdGhDaGVjazogdGFyZ2V0UHJvcHMgPyB0YXJnZXRQcm9wcy5oZWFsdGhDaGVjayA6IHVuZGVmaW5lZFxuICB9KTtcblxuICAvLyBUaGUgaW50ZXJmYWNlIEFkZFJ1bGVQcm9wcyBpbmNsdWRlcyBjb25kaXRpb25zIGFuZCBwcmlvcml0eSwgY29tYmluZSB0aGF0XG4gIC8vIHdpdGggdGFyZ2V0R3JvdXBzIGFuZCB3ZSBjYW4gYXNzZW1ibGUgQWRkQXBwbGljYXRpb25UYXJnZXRHcm91cFByb3BzXG4gIGNvbnN0IGNvbnNvbGlkYXRlZFRhcmdldFByb3BzID0gY29uc29saWRhdGVQcm9wcyh7fSwgcnVsZVByb3BzLCB7IHRhcmdldEdyb3VwczogW25ld1RhcmdldEdyb3VwXSB9KTtcbiAgY3VycmVudExpc3RlbmVyLmFkZFRhcmdldEdyb3VwcyhgJHtzY29wZS5ub2RlLmlkfS10YXJnZXRzYCwgY29uc29saWRhdGVkVGFyZ2V0UHJvcHMpO1xuXG4gIG5ld1RhcmdldEdyb3VwLnNldEF0dHJpYnV0ZSgnc3RpY2tpbmVzcy5lbmFibGVkJywgdW5kZWZpbmVkKTtcbiAgcmV0dXJuIG5ld1RhcmdldEdyb3VwO1xufVxuXG4vKipcbiAqIEBpbnRlcm5hbCBUaGlzIGlzIGFuIGludGVybmFsIGNvcmUgZnVuY3Rpb24gYW5kIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5IGJ5IFNvbHV0aW9ucyBDb25zdHJ1Y3RzIGNsaWVudHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBBZGRGYXJnYXRlVGFyZ2V0KFxuICBzY29wZTogQ29uc3RydWN0LFxuICBpZDogc3RyaW5nLFxuICBjdXJyZW50TGlzdGVuZXI6IGVsYi5BcHBsaWNhdGlvbkxpc3RlbmVyLFxuICBmYXJnYXRlU2VydmljZTogZWNzLkZhcmdhdGVTZXJ2aWNlLFxuICBydWxlUHJvcHM/OiBlbGIuQWRkUnVsZVByb3BzLFxuICB0YXJnZXRQcm9wcz86IGVsYi5BcHBsaWNhdGlvblRhcmdldEdyb3VwUHJvcHMsXG4pOiBlbGIuQXBwbGljYXRpb25UYXJnZXRHcm91cCAge1xuXG4gIGlmICh0YXJnZXRQcm9wcz8ucHJvdG9jb2wgIT09IGVsYi5BcHBsaWNhdGlvblByb3RvY29sLkhUVFBTKSB7XG4gICAgcHJpbnRXYXJuaW5nKCdBV1MgcmVjb21tZW5kcyB1c2luZyBIVFRQUyBwcm90b2NvbCBmb3IgVGFyZ2V0IEdyb3VwcyBpbiBwcm9kdWN0aW9uIGFwcGxpY2F0aW9ucycpO1xuICB9XG5cbiAgY29uc3QgbmV3VGFyZ2V0R3JvdXAgPSBuZXcgZWxiLkFwcGxpY2F0aW9uVGFyZ2V0R3JvdXAoc2NvcGUsIGAke2lkfS10Z2AsIHRhcmdldFByb3BzKTtcblxuICAvLyBUaGUgaW50ZXJmYWNlIEFkZFJ1bGVQcm9wcyBpbmNsdWRlcyBjb25kaXRpb25zIGFuZCBwcmlvcml0eSwgY29tYmluZSB0aGF0XG4gIC8vIHdpdGggdGFyZ2V0R3JvdXBzIGFuZCB3ZSBjYW4gYXNzZW1ibGUgYW4gQWRkQXBwbGljYXRpb25UYXJnZXRHcm91cFByb3BzIG9iamVjdFxuICBjb25zdCBjb25zb2xpZGF0ZWRUYXJnZXRQcm9wcyA9IGNvbnNvbGlkYXRlUHJvcHMoeyB0YXJnZXRHcm91cHM6IFtuZXdUYXJnZXRHcm91cF0gfSwgcnVsZVByb3BzKTtcblxuICBjdXJyZW50TGlzdGVuZXIuYWRkVGFyZ2V0R3JvdXBzKGAke3Njb3BlLm5vZGUuaWR9LXRhcmdldHNgLCBjb25zb2xpZGF0ZWRUYXJnZXRQcm9wcyk7XG4gIG5ld1RhcmdldEdyb3VwLmFkZFRhcmdldChmYXJnYXRlU2VydmljZSk7XG5cbiAgcmV0dXJuIG5ld1RhcmdldEdyb3VwO1xufVxuXG4vKipcbiAqIEBpbnRlcm5hbCBUaGlzIGlzIGFuIGludGVybmFsIGNvcmUgZnVuY3Rpb24gYW5kIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5IGJ5IFNvbHV0aW9ucyBDb25zdHJ1Y3RzIGNsaWVudHMuXG4gKlxuICogTG9va3MgZm9yIHRoZSBsaXN0ZW5lciBhc3NvY2lhdGVkIHdpdGggVGFyZ2V0IEdyb3Vwc1xuICogSWYgdGhlcmUgaXMgYSBzaW5nbGUgbGlzdGVuZXIsIHRoaXMgcmV0dXJucyBpdCB3aGV0aGVyIGl0IGlzIEhUVFAgb3IgSFRUUFNcbiAqIElmIHRoZXJlIGFyZSAyIGxpc3RlbmVycywgaXQgZmluZHMgdGhlIEhUVFBTIGxpc3RlbmVyICh3ZSBhc3N1bWUgdGhlIEhUVFAgbGlzdGVuZXIgcmVkaXJlY3RzIHRvIEhUVFBTKVxuICovXG5leHBvcnQgZnVuY3Rpb24gR2V0QWN0aXZlTGlzdGVuZXIobGlzdGVuZXJzOiBlbGIuQXBwbGljYXRpb25MaXN0ZW5lcltdKTogZWxiLkFwcGxpY2F0aW9uTGlzdGVuZXIge1xuICBsZXQgbGlzdGVuZXI6IGVsYi5BcHBsaWNhdGlvbkxpc3RlbmVyO1xuXG4gIGlmIChsaXN0ZW5lcnMubGVuZ3RoID09PSAwICkge1xuICAgIHRocm93IG5ldyBFcnJvcihgVGhlcmUgYXJlIG5vIGxpc3RlbmVycyBpbiB0aGUgQUxCYCk7XG4gIH1cbiAgaWYgKGxpc3RlbmVycy5sZW5ndGggPT09IDEgKSB7XG4gICAgbGlzdGVuZXIgPSBsaXN0ZW5lcnNbMF07XG4gIH0gZWxzZSB7XG4gICAgbGlzdGVuZXIgPSBsaXN0ZW5lcnMuZmluZChpID0+IChpLm5vZGUuY2hpbGRyZW5bMF0gYXMgZWxiLkNmbkxpc3RlbmVyKS5wcm90b2NvbCA9PT0gXCJIVFRQU1wiKSBhcyBlbGIuQXBwbGljYXRpb25MaXN0ZW5lcjtcbiAgfVxuICByZXR1cm4gbGlzdGVuZXI7XG59XG5cbi8qKlxuICogQGludGVybmFsIFRoaXMgaXMgYW4gaW50ZXJuYWwgY29yZSBmdW5jdGlvbiBhbmQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkgYnkgU29sdXRpb25zIENvbnN0cnVjdHMgY2xpZW50cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIENoZWNrQWxiUHJvcHMocHJvcHM6IGFueSkge1xuICBsZXQgZXJyb3JNZXNzYWdlcyA9ICcnO1xuICBsZXQgZXJyb3JGb3VuZCA9IGZhbHNlO1xuXG4gIGlmIChwcm9wcy5saXN0ZW5lclByb3BzPy5jZXJ0aWZpY2F0ZUFybnMpIHtcbiAgICBlcnJvck1lc3NhZ2VzICs9IFwiY2VydGlmaWNhdGVBcm5zIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSBzdXBwbHkgY2VydGlmaWNhdGVzIHVzaW5nIHByb3BzLmxpc3RlbmVyUHJvcHMuY2VydGlmaWNhdGVzXFxuXCI7XG4gICAgZXJyb3JGb3VuZCA9IHRydWU7XG4gIH1cblxuICBpZiAoXG4gICAgKChwcm9wcy5leGlzdGluZ0xvYWRCYWxhbmNlck9iaiAmJlxuICAgICAgcHJvcHMuZXhpc3RpbmdMb2FkQmFsYW5jZXJPYmoubGlzdGVuZXJzLmxlbmd0aCA9PT0gMCkgfHxcbiAgICAgICFwcm9wcy5leGlzdGluZ0xvYWRCYWxhbmNlck9iaikgJiZcbiAgICAhcHJvcHMubGlzdGVuZXJQcm9wc1xuICApIHtcbiAgICBlcnJvck1lc3NhZ2VzICs9IFwiV2hlbiBhZGRpbmcgdGhlIGZpcnN0IGxpc3RlbmVyIGFuZCB0YXJnZXQgdG8gYSBsb2FkIGJhbGFuY2VyLCBsaXN0ZW5lclByb3BzIG11c3QgYmUgc3BlY2lmaWVkIGFuZCBpbmNsdWRlIGF0IGxlYXN0IGEgY2VydGlmaWNhdGUgb3IgcHJvdG9jb2w6IEhUVFBcXG5cIjtcbiAgICBlcnJvckZvdW5kID0gdHJ1ZTtcbiAgfVxuXG4gIGlmIChcbiAgICBwcm9wcy5leGlzdGluZ0xvYWRCYWxhbmNlck9iaiAmJlxuICAgIHByb3BzLmV4aXN0aW5nTG9hZEJhbGFuY2VyT2JqLmxpc3RlbmVycy5sZW5ndGggPiAwICYmXG4gICAgcHJvcHMubGlzdGVuZXJQcm9wc1xuICApIHtcbiAgICBlcnJvckZvdW5kID0gdHJ1ZTtcbiAgICBlcnJvck1lc3NhZ2VzICs9IFwiVGhpcyBsb2FkIGJhbGFuY2VyIGFscmVhZHkgaGFzIGEgbGlzdGVuZXIsIGxpc3RlbmVyUHJvcHMgbWF5IG5vdCBiZSBzcGVjaWZpZWRcXG5cIjtcbiAgfVxuXG4gIGlmIChcbiAgICBwcm9wcy5leGlzdGluZ0xvYWRCYWxhbmNlck9iaiAmJlxuICAgIHByb3BzLmV4aXN0aW5nTG9hZEJhbGFuY2VyT2JqLmxpc3RlbmVycy5sZW5ndGggPiAwICYmXG4gICAgIXByb3BzLnJ1bGVQcm9wc1xuICApIHtcbiAgICBlcnJvckZvdW5kID0gdHJ1ZTtcbiAgICBlcnJvck1lc3NhZ2VzICs9IFwiV2hlbiBhZGRpbmcgYSBzZWNvbmQgdGFyZ2V0IHRvIGFuIGV4aXN0aW5nIGxpc3RlbmVyLCB0aGVyZSBtdXN0IGJlIHJ1bGVzIHByb3ZpZGVkXFxuXCI7XG4gIH1cblxuICAvLyBDaGVjayBjb25zdHJ1Y3Qgc3BlY2lmaWMgaW52YWxpZCBpbnB1dHNcbiAgaWYgKHByb3BzLmV4aXN0aW5nTG9hZEJhbGFuY2VyT2JqICYmICFwcm9wcy5leGlzdGluZ1ZwYykge1xuICAgIGVycm9yRm91bmQgPSB0cnVlO1xuICAgIGVycm9yTWVzc2FnZXMgKz0gXCJBbiBleGlzdGluZyBBTEIgaXMgYWxyZWFkeSBpbiBhIFZQQywgdGhhdCBWUEMgbXVzdCBiZSBwcm92aWRlZCBpbiBwcm9wcy5leGlzdGluZ1ZwYyBmb3IgdGhlIHJlc3Qgb2YgdGhlIGNvbnN0cnVjdCB0byB1c2UuXFxuXCI7XG4gIH1cblxuICBpZiAocHJvcHMubG9hZEJhbGFuY2VyUHJvcHM/LnZwYykge1xuICAgIGVycm9yRm91bmQgPSB0cnVlO1xuICAgIGVycm9yTWVzc2FnZXMgKz0gJ1NwZWNpZnkgYW55IGV4aXN0aW5nIFZQQyBhdCB0aGUgY29uc3RydWN0IGxldmVsLCBub3Qgd2l0aGluIGxvYWRCYWxhbmNlclByb3BzLlxcbic7XG4gIH1cblxuICBpZiAocHJvcHMuZXhpc3RpbmdMb2FkQmFsYW5jZXJPYmopIHtcbiAgICBwcmludFdhcm5pbmcoXG4gICAgICBcIlRoZSBwdWJsaWMvcHJpdmF0ZSBwcm9wZXJ0eSBvZiBhbiBleGlzdGluZyBBTEIgbXVzdCBtYXRjaCB0aGUgcHJvcHMucHVibGljQXBpIHNldHRpbmcgcHJvdmlkZWQuXCJcbiAgICApO1xuICB9XG5cbiAgaWYgKGVycm9yRm91bmQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JNZXNzYWdlcyk7XG4gIH1cbn0iXX0=
|
|
193
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxiLWhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFsYi1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7OztHQVdHOzs7QUFFSDs7O0dBR0c7QUFFSCw4REFBOEQ7QUFNOUQsdUZBQThGO0FBQzlGLHVFQUF1RTtBQUN2RSxtQ0FBeUQ7QUFDekQsaURBQXNEO0FBQ3RELHlEQUE0RDtBQUM1RCw2REFBc0Q7QUFXdEQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixTQUFTLENBQ3ZCLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQUFxQjtJQUVyQixJQUFJLFlBQXlDLENBQUM7SUFFOUMsSUFBSSxLQUFLLENBQUMsdUJBQXVCLEVBQUU7UUFDakMsWUFBWSxHQUFHLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQztLQUM5QztTQUFNO1FBQ0wsTUFBTSxpQkFBaUIsR0FBRyx3QkFBZ0IsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLGlCQUFpQixFQUFFLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHLEVBQUUsY0FBYyxFQUFFLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQzdILFlBQVksR0FBRyxJQUFJLEdBQUcsQ0FBQyx1QkFBdUIsQ0FDNUMsS0FBSyxFQUNMLEdBQUcsRUFBRSxNQUFNLEVBQ1gsaUJBQWlCLENBQ2xCLENBQUM7UUFDRixJQUFJLEtBQUssQ0FBQyxhQUFhLEtBQUssU0FBUyxJQUFJLEtBQUssQ0FBQyxhQUFhLEtBQUssSUFBSSxFQUFFO1lBQ3JFLE1BQU0sOEJBQThCLEdBQUcsd0JBQWdCLENBQUMsbUNBQWMsRUFBRSxFQUFFLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQ3BHLE1BQU0sYUFBYSxHQUFHLHlDQUFzQixDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsOEJBQThCLENBQUMsQ0FBQztZQUN4RixZQUFZLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQzNDO0tBQ0Y7SUFDRCxPQUFPLFlBQVksQ0FBQztBQUN0QixDQUFDO0FBdkJELDhCQXVCQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsV0FBVyxDQUN6QixLQUFnQixFQUNoQixFQUFVLEVBQ1YsWUFBeUMsRUFDekMsYUFBaUQ7SUFFakQsSUFBSSx5QkFBdUQsQ0FBQztJQUU1RCx5QkFBeUIsR0FBRyx3QkFBZ0IsQ0FBQyxtQ0FBb0IsQ0FBQyxZQUFZLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUVoRyx1QkFBdUI7SUFDdkIsTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLENBQUMsbUJBQW1CLENBQzFDLEtBQUssRUFDTCxHQUFHLEVBQUUsV0FBVyxFQUNoQix5QkFBeUIsQ0FDMUIsQ0FBQztJQUNGLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRXRDLElBQUkseUJBQXlCLENBQUMsUUFBUSxLQUFLLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUU7UUFDdkUsMERBQTBEO1FBQzFELG9CQUFZLENBQ1YsZ0ZBQWdGLENBQ2pGLENBQUM7UUFDRixJQUFJLGFBQWEsQ0FBQyxZQUFZLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUMxQyxNQUFNLElBQUksS0FBSyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7U0FDNUQ7S0FDRjtTQUFNO1FBQ0wsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLElBQUksYUFBYSxDQUFDLFlBQVksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQzFFLE1BQU0sSUFBSSxLQUFLLENBQUMsd0RBQXdELENBQUMsQ0FBQztTQUMzRTtRQUVELFFBQVEsQ0FBQyxlQUFlLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUM7S0FDcEU7SUFFRCxJQUFJLHlCQUF5QixDQUFDLFFBQVEsS0FBSyxHQUFHLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFO1FBQ3hFLE1BQU0sR0FBRyxHQUF3QjtZQUMvQixJQUFJLEVBQUUsS0FBSztZQUNYLFFBQVEsRUFBRSxPQUFPO1NBQ2xCLENBQUM7UUFFRixNQUFNLFlBQVksR0FBRyxJQUFJLEdBQUcsQ0FBQyxtQkFBbUIsQ0FDOUMsS0FBSyxFQUNMLEdBQUcsRUFBRSxXQUFXLEVBQ2hCO1lBQ0UsWUFBWTtZQUNaLFFBQVEsRUFBRSxnREFBbUIsQ0FBQyxJQUFJO1lBQ2xDLGFBQWEsRUFBRSwyQ0FBYyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7U0FDNUMsQ0FDRixDQUFDO1FBQ0YsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7S0FDM0M7SUFFRCxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDO0FBckRELGtDQXFEQztBQUVEOzs7Ozs7R0FNRztBQUNILFNBQWdCLGVBQWUsQ0FDN0IsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLGVBQXdDLEVBQ3hDLGNBQWdDLEVBQ2hDLFNBQTRCLEVBQzVCLFdBQTZDO0lBRzdDLHlEQUF5RDtJQUN6RCxNQUFNLFlBQVksR0FBRyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDM0QsTUFBTSxjQUFjLEdBQUcsSUFBSSxHQUFHLENBQUMsc0JBQXNCLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUU7UUFDdkUsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO1FBQ3ZCLGVBQWUsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLFNBQVM7UUFDdEUsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsU0FBUztLQUMvRCxDQUFDLENBQUM7SUFFSCw0RUFBNEU7SUFDNUUsdUVBQXVFO0lBQ3ZFLE1BQU0sdUJBQXVCLEdBQUcsd0JBQWdCLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLFlBQVksRUFBRSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNwRyxlQUFlLENBQUMsZUFBZSxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLFVBQVUsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO0lBRXJGLGNBQWMsQ0FBQyxZQUFZLENBQUMsb0JBQW9CLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDN0QsT0FBTyxjQUFjLENBQUM7QUFDeEIsQ0FBQztBQXhCRCwwQ0F3QkM7QUFFRDs7R0FFRztBQUNILFNBQWdCLGdCQUFnQixDQUM5QixLQUFnQixFQUNoQixFQUFVLEVBQ1YsZUFBd0MsRUFDeEMsY0FBa0MsRUFDbEMsU0FBNEIsRUFDNUIsV0FBNkM7SUFHN0MsSUFBSSxXQUFXLEVBQUUsUUFBUSxLQUFLLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUU7UUFDM0Qsb0JBQVksQ0FBQyxrRkFBa0YsQ0FBQyxDQUFDO0tBQ2xHO0lBRUQsTUFBTSxjQUFjLEdBQUcsSUFBSSxHQUFHLENBQUMsc0JBQXNCLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFFdEYsNEVBQTRFO0lBQzVFLGlGQUFpRjtJQUNqRixNQUFNLHVCQUF1QixHQUFHLHdCQUFnQixDQUFDLEVBQUUsWUFBWSxFQUFFLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUVoRyxlQUFlLENBQUMsZUFBZSxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLFVBQVUsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO0lBQ3JGLGNBQWMsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUM7SUFFekMsT0FBTyxjQUFjLENBQUM7QUFDeEIsQ0FBQztBQXZCRCw0Q0F1QkM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFnQixpQkFBaUIsQ0FBQyxTQUFvQztJQUNwRSxJQUFJLFFBQWlDLENBQUM7SUFFdEMsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRztRQUMzQixNQUFNLElBQUksS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7S0FDdEQ7SUFDRCxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFHO1FBQzNCLFFBQVEsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDekI7U0FBTTtRQUNMLFFBQVEsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFxQixDQUFDLFFBQVEsS0FBSyxPQUFPLENBQTRCLENBQUM7S0FDekg7SUFDRCxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDO0FBWkQsOENBWUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLGFBQWEsQ0FBQyxLQUFVO0lBQ3RDLElBQUksYUFBYSxHQUFHLEVBQUUsQ0FBQztJQUN2QixJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFFdkIsSUFBSSxLQUFLLENBQUMsYUFBYSxFQUFFLGVBQWUsRUFBRTtRQUN4QyxhQUFhLElBQUksb0dBQW9HLENBQUM7UUFDdEgsVUFBVSxHQUFHLElBQUksQ0FBQztLQUNuQjtJQUVELElBQ0UsQ0FBQyxDQUFDLEtBQUssQ0FBQyx1QkFBdUI7UUFDN0IsS0FBSyxDQUFDLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO1FBQ3JELENBQUMsS0FBSyxDQUFDLHVCQUF1QixDQUFDO1FBQ2pDLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFDcEI7UUFDQSxhQUFhLElBQUksc0pBQXNKLENBQUM7UUFDeEssVUFBVSxHQUFHLElBQUksQ0FBQztLQUNuQjtJQUVELElBQ0UsS0FBSyxDQUFDLHVCQUF1QjtRQUM3QixLQUFLLENBQUMsdUJBQXVCLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDO1FBQ2xELEtBQUssQ0FBQyxhQUFhLEVBQ25CO1FBQ0EsVUFBVSxHQUFHLElBQUksQ0FBQztRQUNsQixhQUFhLElBQUksaUZBQWlGLENBQUM7S0FDcEc7SUFFRCxJQUNFLEtBQUssQ0FBQyx1QkFBdUI7UUFDN0IsS0FBSyxDQUFDLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQztRQUNsRCxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQ2hCO1FBQ0EsVUFBVSxHQUFHLElBQUksQ0FBQztRQUNsQixhQUFhLElBQUkscUZBQXFGLENBQUM7S0FDeEc7SUFFRCwwQ0FBMEM7SUFDMUMsSUFBSSxLQUFLLENBQUMsdUJBQXVCLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFO1FBQ3ZELFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDbEIsYUFBYSxJQUFJLDZIQUE2SCxDQUFDO0tBQ2hKO0lBRUQsSUFBSSxLQUFLLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxFQUFFO1FBQ2hDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDbEIsYUFBYSxJQUFJLGtGQUFrRixDQUFDO0tBQ3JHO0lBRUQsSUFBSSxLQUFLLENBQUMsdUJBQXVCLEVBQUU7UUFDakMsb0JBQVksQ0FDVixpR0FBaUcsQ0FDbEcsQ0FBQztLQUNIO0lBRUQsSUFBSSxVQUFVLEVBQUU7UUFDZCxNQUFNLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0tBQ2hDO0FBQ0gsQ0FBQztBQXpERCxzQ0F5REMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuICogIHdpdGggdGhlIExpY2Vuc2UuIEEgY29weSBvZiB0aGUgTGljZW5zZSBpcyBsb2NhdGVkIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgb3IgaW4gdGhlICdsaWNlbnNlJyBmaWxlIGFjY29tcGFueWluZyB0aGlzIGZpbGUuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMnIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVNcbiAqICBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xuICogIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKlxuICogIFRoZSBmdW5jdGlvbnMgZm91bmQgaGVyZSBpbiB0aGUgY29yZSBsaWJyYXJ5IGFyZSBmb3IgaW50ZXJuYWwgdXNlIGFuZCBjYW4gYmUgY2hhbmdlZFxuICogIG9yIHJlbW92ZWQgb3V0c2lkZSBvZiBhIG1ham9yIHJlbGVhc2UuIFdlIHJlY29tbWVuZCBhZ2FpbnN0IGNhbGxpbmcgdGhlbSBkaXJlY3RseSBmcm9tIGNsaWVudCBjb2RlLlxuICovXG5cbmltcG9ydCAqIGFzIGVsYiBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVsYXN0aWNsb2FkYmFsYW5jaW5ndjJcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgKiBhcyBlYzIgZnJvbSBcImF3cy1jZGstbGliL2F3cy1lYzJcIjtcbmltcG9ydCAqIGFzIHMzIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtczNcIjtcbmltcG9ydCAqIGFzIGVjcyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjc1wiO1xuaW1wb3J0ICogYXMgbGFtYmRhIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhXCI7XG5pbXBvcnQgeyBBcHBsaWNhdGlvblByb3RvY29sLCBMaXN0ZW5lckFjdGlvbiwgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVsYXN0aWNsb2FkYmFsYW5jaW5ndjJcIjtcbmltcG9ydCAqIGFzIGVsYnQgZnJvbSBcImF3cy1jZGstbGliL2F3cy1lbGFzdGljbG9hZGJhbGFuY2luZ3YyLXRhcmdldHNcIjtcbmltcG9ydCB7IHByaW50V2FybmluZywgY29uc29saWRhdGVQcm9wcyB9IGZyb20gXCIuL3V0aWxzXCI7XG5pbXBvcnQgeyBEZWZhdWx0TGlzdGVuZXJQcm9wcyB9IGZyb20gXCIuL2FsYi1kZWZhdWx0c1wiO1xuaW1wb3J0IHsgY3JlYXRlQWxiTG9nZ2luZ0J1Y2tldCB9IGZyb20gXCIuL3MzLWJ1Y2tldC1oZWxwZXJcIjtcbmltcG9ydCB7IERlZmF1bHRTM1Byb3BzIH0gZnJvbSBcIi4vczMtYnVja2V0LWRlZmF1bHRzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT2J0YWluQWxiUHJvcHMge1xuICByZWFkb25seSB2cGM6IGVjMi5JVnBjLFxuICByZWFkb25seSBwdWJsaWNBcGk6IGJvb2xlYW4sXG4gIHJlYWRvbmx5IGV4aXN0aW5nTG9hZEJhbGFuY2VyT2JqPzogZWxiLkFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyLFxuICByZWFkb25seSBsb2FkQmFsYW5jZXJQcm9wcz86IGVsYi5BcHBsaWNhdGlvbkxvYWRCYWxhbmNlclByb3BzIHwgYW55LFxuICByZWFkb25seSBsb2dBY2Nlc3NMb2dzPzogYm9vbGVhbixcbiAgcmVhZG9ubHkgbG9nZ2luZ0J1Y2tldFByb3BzPzogczMuQnVja2V0UHJvcHNcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICpcbiAqIFJldHVybnMgdGhlIGNvcnJlY3QgQUxCIExvYWQgQmFsYW5jZXIgdG8gdXNlIGluIHRoaXMgY29uc3RydWN0LCBlaXRoZXIgYW4gZXhpc3RpbmdcbiAqIG9uZSBwcm92aWRlZCBhcyBhbiBhcmd1bWVudCBvciBjcmVhdGUgIG5ldyBvbmUgb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gT2J0YWluQWxiKFxuICBzY29wZTogQ29uc3RydWN0LFxuICBpZDogc3RyaW5nLFxuICBwcm9wczogT2J0YWluQWxiUHJvcHNcbik6IGVsYi5BcHBsaWNhdGlvbkxvYWRCYWxhbmNlciB7XG4gIGxldCBsb2FkQmFsYW5jZXI6IGVsYi5BcHBsaWNhdGlvbkxvYWRCYWxhbmNlcjtcblxuICBpZiAocHJvcHMuZXhpc3RpbmdMb2FkQmFsYW5jZXJPYmopIHtcbiAgICBsb2FkQmFsYW5jZXIgPSBwcm9wcy5leGlzdGluZ0xvYWRCYWxhbmNlck9iajtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBjb25zb2xpZGF0ZWRQcm9wcyA9IGNvbnNvbGlkYXRlUHJvcHMoe30sIHByb3BzLmxvYWRCYWxhbmNlclByb3BzLCB7IHZwYzogcHJvcHMudnBjLCBpbnRlcm5ldEZhY2luZzogcHJvcHMucHVibGljQXBpIH0pO1xuICAgIGxvYWRCYWxhbmNlciA9IG5ldyBlbGIuQXBwbGljYXRpb25Mb2FkQmFsYW5jZXIoXG4gICAgICBzY29wZSxcbiAgICAgIGAke2lkfS1hbGJgLFxuICAgICAgY29uc29saWRhdGVkUHJvcHNcbiAgICApO1xuICAgIGlmIChwcm9wcy5sb2dBY2Nlc3NMb2dzID09PSB1bmRlZmluZWQgfHwgcHJvcHMubG9nQWNjZXNzTG9ncyA9PT0gdHJ1ZSkge1xuICAgICAgY29uc3QgY29uc29saWRhdGVkTG9nZ2luZ0J1Y2tldFByb3BzID0gY29uc29saWRhdGVQcm9wcyhEZWZhdWx0UzNQcm9wcygpLCBwcm9wcy5sb2dnaW5nQnVja2V0UHJvcHMpO1xuICAgICAgY29uc3QgbG9nZ2luZ0J1Y2tldCA9IGNyZWF0ZUFsYkxvZ2dpbmdCdWNrZXQoc2NvcGUsIGlkLCBjb25zb2xpZGF0ZWRMb2dnaW5nQnVja2V0UHJvcHMpO1xuICAgICAgbG9hZEJhbGFuY2VyLmxvZ0FjY2Vzc0xvZ3MobG9nZ2luZ0J1Y2tldCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBsb2FkQmFsYW5jZXI7XG59XG5cbi8qKlxuICogQGludGVybmFsIFRoaXMgaXMgYW4gaW50ZXJuYWwgY29yZSBmdW5jdGlvbiBhbmQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkgYnkgU29sdXRpb25zIENvbnN0cnVjdHMgY2xpZW50cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEFkZExpc3RlbmVyKFxuICBzY29wZTogQ29uc3RydWN0LFxuICBpZDogc3RyaW5nLFxuICBsb2FkQmFsYW5jZXI6IGVsYi5BcHBsaWNhdGlvbkxvYWRCYWxhbmNlcixcbiAgbGlzdGVuZXJQcm9wczogZWxiLkFwcGxpY2F0aW9uTGlzdGVuZXJQcm9wcyB8IGFueVxuKTogZWxiLkFwcGxpY2F0aW9uTGlzdGVuZXIge1xuICBsZXQgY29uc29saWRhdGVkTGlzdGVuZXJQcm9wczogZWxiLkFwcGxpY2F0aW9uTGlzdGVuZXJQcm9wcztcblxuICBjb25zb2xpZGF0ZWRMaXN0ZW5lclByb3BzID0gY29uc29saWRhdGVQcm9wcyhEZWZhdWx0TGlzdGVuZXJQcm9wcyhsb2FkQmFsYW5jZXIpLCBsaXN0ZW5lclByb3BzKTtcblxuICAvLyAgY3JlYXRlIHRoZSBsaXN0ZW5lclxuICBjb25zdCBsaXN0ZW5lciA9IG5ldyBlbGIuQXBwbGljYXRpb25MaXN0ZW5lcihcbiAgICBzY29wZSxcbiAgICBgJHtpZH0tbGlzdGVuZXJgLFxuICAgIGNvbnNvbGlkYXRlZExpc3RlbmVyUHJvcHNcbiAgKTtcbiAgbG9hZEJhbGFuY2VyLmxpc3RlbmVycy5wdXNoKGxpc3RlbmVyKTtcblxuICBpZiAoY29uc29saWRhdGVkTGlzdGVuZXJQcm9wcy5wcm90b2NvbCA9PT0gZWxiLkFwcGxpY2F0aW9uUHJvdG9jb2wuSFRUUCkge1xuICAgIC8vIFRoaXMgd2lsbCB1c2UgY29yZS5wcmludFdhcm5pbmcgaW4gdGhlIGFjdHVhbCBjb25zdHJ1Y3RcbiAgICBwcmludFdhcm5pbmcoXG4gICAgICBcIkFXUyByZWNvbW1lbmRzIGVuY3J5cHRpbmcgdHJhZmZpYyB0byBhbiBBcHBsaWNhdGlvbiBMb2FkIEJhbGFuY2VyIHVzaW5nIEhUVFBTLlwiXG4gICAgKTtcbiAgICBpZiAobGlzdGVuZXJQcm9wcy5jZXJ0aWZpY2F0ZXM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkhUVFAgbGlzdGVuZXJzIGNhbm5vdCB1c2UgYSBjZXJ0aWZpY2F0ZVwiKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKCFsaXN0ZW5lclByb3BzLmNlcnRpZmljYXRlcyB8fCBsaXN0ZW5lclByb3BzLmNlcnRpZmljYXRlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkEgbGlzdGVuZXIgdXNpbmcgSFRUUFMgcHJvdG9jb2wgcmVxdWlyZXMgYSBjZXJ0aWZpY2F0ZVwiKTtcbiAgICB9XG5cbiAgICBsaXN0ZW5lci5hZGRDZXJ0aWZpY2F0ZXMoYCR7aWR9LWNlcnRgLCBsaXN0ZW5lclByb3BzLmNlcnRpZmljYXRlcyk7XG4gIH1cblxuICBpZiAoY29uc29saWRhdGVkTGlzdGVuZXJQcm9wcy5wcm90b2NvbCA9PT0gZWxiLkFwcGxpY2F0aW9uUHJvdG9jb2wuSFRUUFMpIHtcbiAgICBjb25zdCBvcHQ6IGVsYi5SZWRpcmVjdE9wdGlvbnMgPSB7XG4gICAgICBwb3J0OiBcIjQ0M1wiLFxuICAgICAgcHJvdG9jb2w6IFwiSFRUUFNcIixcbiAgICB9O1xuXG4gICAgY29uc3QgaHR0cExpc3RlbmVyID0gbmV3IGVsYi5BcHBsaWNhdGlvbkxpc3RlbmVyKFxuICAgICAgc2NvcGUsXG4gICAgICBgJHtpZH0tcmVkaXJlY3RgLFxuICAgICAge1xuICAgICAgICBsb2FkQmFsYW5jZXIsXG4gICAgICAgIHByb3RvY29sOiBBcHBsaWNhdGlvblByb3RvY29sLkhUVFAsXG4gICAgICAgIGRlZmF1bHRBY3Rpb246IExpc3RlbmVyQWN0aW9uLnJlZGlyZWN0KG9wdCksXG4gICAgICB9XG4gICAgKTtcbiAgICBsb2FkQmFsYW5jZXIubGlzdGVuZXJzLnB1c2goaHR0cExpc3RlbmVyKTtcbiAgfVxuXG4gIHJldHVybiBsaXN0ZW5lcjtcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICpcbiAqIENyZWF0ZXMgYSBUYXJnZXQgR3JvdXAgZm9yIExhbWJkYSBmdW5jdGlvbnMgYW5kIGFkZHMgdGhlXG4gKiBwcm92aWRlZCBmdW5jdGlvbnMgYXMgYSB0YXJnZXQgdG8gdGhhdCBncm91cC4gVGhlbiBhZGRzXG4gKiB0aGUgbmV3IFRhcmdldCBHcm91cCB0byB0aGUgcHJvdmlkZWQgTGlzdGVuZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBBZGRMYW1iZGFUYXJnZXQoXG4gIHNjb3BlOiBDb25zdHJ1Y3QsXG4gIGlkOiBzdHJpbmcsXG4gIGN1cnJlbnRMaXN0ZW5lcjogZWxiLkFwcGxpY2F0aW9uTGlzdGVuZXIsXG4gIGxhbWJkYUZ1bmN0aW9uOiBsYW1iZGEuSUZ1bmN0aW9uLFxuICBydWxlUHJvcHM/OiBlbGIuQWRkUnVsZVByb3BzLFxuICB0YXJnZXRQcm9wcz86IGVsYi5BcHBsaWNhdGlvblRhcmdldEdyb3VwUHJvcHMsXG4pOiBlbGIuQXBwbGljYXRpb25UYXJnZXRHcm91cCAge1xuXG4gIC8vICBDcmVhdGUgdGhlIHRhcmdldCBhbmQgYXNzaWduIGl0IHRvIGEgbmV3IHRhcmdldCBncm91cFxuICBjb25zdCBsYW1iZGFUYXJnZXQgPSBuZXcgZWxidC5MYW1iZGFUYXJnZXQobGFtYmRhRnVuY3Rpb24pO1xuICBjb25zdCBuZXdUYXJnZXRHcm91cCA9IG5ldyBlbGIuQXBwbGljYXRpb25UYXJnZXRHcm91cChzY29wZSwgYCR7aWR9LXRnYCwge1xuICAgIHRhcmdldHM6IFtsYW1iZGFUYXJnZXRdLFxuICAgIHRhcmdldEdyb3VwTmFtZTogdGFyZ2V0UHJvcHMgPyB0YXJnZXRQcm9wcy50YXJnZXRHcm91cE5hbWUgOiB1bmRlZmluZWQsXG4gICAgaGVhbHRoQ2hlY2s6IHRhcmdldFByb3BzID8gdGFyZ2V0UHJvcHMuaGVhbHRoQ2hlY2sgOiB1bmRlZmluZWRcbiAgfSk7XG5cbiAgLy8gVGhlIGludGVyZmFjZSBBZGRSdWxlUHJvcHMgaW5jbHVkZXMgY29uZGl0aW9ucyBhbmQgcHJpb3JpdHksIGNvbWJpbmUgdGhhdFxuICAvLyB3aXRoIHRhcmdldEdyb3VwcyBhbmQgd2UgY2FuIGFzc2VtYmxlIEFkZEFwcGxpY2F0aW9uVGFyZ2V0R3JvdXBQcm9wc1xuICBjb25zdCBjb25zb2xpZGF0ZWRUYXJnZXRQcm9wcyA9IGNvbnNvbGlkYXRlUHJvcHMoe30sIHJ1bGVQcm9wcywgeyB0YXJnZXRHcm91cHM6IFtuZXdUYXJnZXRHcm91cF0gfSk7XG4gIGN1cnJlbnRMaXN0ZW5lci5hZGRUYXJnZXRHcm91cHMoYCR7c2NvcGUubm9kZS5pZH0tdGFyZ2V0c2AsIGNvbnNvbGlkYXRlZFRhcmdldFByb3BzKTtcblxuICBuZXdUYXJnZXRHcm91cC5zZXRBdHRyaWJ1dGUoJ3N0aWNraW5lc3MuZW5hYmxlZCcsIHVuZGVmaW5lZCk7XG4gIHJldHVybiBuZXdUYXJnZXRHcm91cDtcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gQWRkRmFyZ2F0ZVRhcmdldChcbiAgc2NvcGU6IENvbnN0cnVjdCxcbiAgaWQ6IHN0cmluZyxcbiAgY3VycmVudExpc3RlbmVyOiBlbGIuQXBwbGljYXRpb25MaXN0ZW5lcixcbiAgZmFyZ2F0ZVNlcnZpY2U6IGVjcy5GYXJnYXRlU2VydmljZSxcbiAgcnVsZVByb3BzPzogZWxiLkFkZFJ1bGVQcm9wcyxcbiAgdGFyZ2V0UHJvcHM/OiBlbGIuQXBwbGljYXRpb25UYXJnZXRHcm91cFByb3BzLFxuKTogZWxiLkFwcGxpY2F0aW9uVGFyZ2V0R3JvdXAgIHtcblxuICBpZiAodGFyZ2V0UHJvcHM/LnByb3RvY29sICE9PSBlbGIuQXBwbGljYXRpb25Qcm90b2NvbC5IVFRQUykge1xuICAgIHByaW50V2FybmluZygnQVdTIHJlY29tbWVuZHMgdXNpbmcgSFRUUFMgcHJvdG9jb2wgZm9yIFRhcmdldCBHcm91cHMgaW4gcHJvZHVjdGlvbiBhcHBsaWNhdGlvbnMnKTtcbiAgfVxuXG4gIGNvbnN0IG5ld1RhcmdldEdyb3VwID0gbmV3IGVsYi5BcHBsaWNhdGlvblRhcmdldEdyb3VwKHNjb3BlLCBgJHtpZH0tdGdgLCB0YXJnZXRQcm9wcyk7XG5cbiAgLy8gVGhlIGludGVyZmFjZSBBZGRSdWxlUHJvcHMgaW5jbHVkZXMgY29uZGl0aW9ucyBhbmQgcHJpb3JpdHksIGNvbWJpbmUgdGhhdFxuICAvLyB3aXRoIHRhcmdldEdyb3VwcyBhbmQgd2UgY2FuIGFzc2VtYmxlIGFuIEFkZEFwcGxpY2F0aW9uVGFyZ2V0R3JvdXBQcm9wcyBvYmplY3RcbiAgY29uc3QgY29uc29saWRhdGVkVGFyZ2V0UHJvcHMgPSBjb25zb2xpZGF0ZVByb3BzKHsgdGFyZ2V0R3JvdXBzOiBbbmV3VGFyZ2V0R3JvdXBdIH0sIHJ1bGVQcm9wcyk7XG5cbiAgY3VycmVudExpc3RlbmVyLmFkZFRhcmdldEdyb3VwcyhgJHtzY29wZS5ub2RlLmlkfS10YXJnZXRzYCwgY29uc29saWRhdGVkVGFyZ2V0UHJvcHMpO1xuICBuZXdUYXJnZXRHcm91cC5hZGRUYXJnZXQoZmFyZ2F0ZVNlcnZpY2UpO1xuXG4gIHJldHVybiBuZXdUYXJnZXRHcm91cDtcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICpcbiAqIExvb2tzIGZvciB0aGUgbGlzdGVuZXIgYXNzb2NpYXRlZCB3aXRoIFRhcmdldCBHcm91cHNcbiAqIElmIHRoZXJlIGlzIGEgc2luZ2xlIGxpc3RlbmVyLCB0aGlzIHJldHVybnMgaXQgd2hldGhlciBpdCBpcyBIVFRQIG9yIEhUVFBTXG4gKiBJZiB0aGVyZSBhcmUgMiBsaXN0ZW5lcnMsIGl0IGZpbmRzIHRoZSBIVFRQUyBsaXN0ZW5lciAod2UgYXNzdW1lIHRoZSBIVFRQIGxpc3RlbmVyIHJlZGlyZWN0cyB0byBIVFRQUylcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEdldEFjdGl2ZUxpc3RlbmVyKGxpc3RlbmVyczogZWxiLkFwcGxpY2F0aW9uTGlzdGVuZXJbXSk6IGVsYi5BcHBsaWNhdGlvbkxpc3RlbmVyIHtcbiAgbGV0IGxpc3RlbmVyOiBlbGIuQXBwbGljYXRpb25MaXN0ZW5lcjtcblxuICBpZiAobGlzdGVuZXJzLmxlbmd0aCA9PT0gMCApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZXJlIGFyZSBubyBsaXN0ZW5lcnMgaW4gdGhlIEFMQmApO1xuICB9XG4gIGlmIChsaXN0ZW5lcnMubGVuZ3RoID09PSAxICkge1xuICAgIGxpc3RlbmVyID0gbGlzdGVuZXJzWzBdO1xuICB9IGVsc2Uge1xuICAgIGxpc3RlbmVyID0gbGlzdGVuZXJzLmZpbmQoaSA9PiAoaS5ub2RlLmNoaWxkcmVuWzBdIGFzIGVsYi5DZm5MaXN0ZW5lcikucHJvdG9jb2wgPT09IFwiSFRUUFNcIikgYXMgZWxiLkFwcGxpY2F0aW9uTGlzdGVuZXI7XG4gIH1cbiAgcmV0dXJuIGxpc3RlbmVyO1xufVxuXG4vKipcbiAqIEBpbnRlcm5hbCBUaGlzIGlzIGFuIGludGVybmFsIGNvcmUgZnVuY3Rpb24gYW5kIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5IGJ5IFNvbHV0aW9ucyBDb25zdHJ1Y3RzIGNsaWVudHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBDaGVja0FsYlByb3BzKHByb3BzOiBhbnkpIHtcbiAgbGV0IGVycm9yTWVzc2FnZXMgPSAnJztcbiAgbGV0IGVycm9yRm91bmQgPSBmYWxzZTtcblxuICBpZiAocHJvcHMubGlzdGVuZXJQcm9wcz8uY2VydGlmaWNhdGVBcm5zKSB7XG4gICAgZXJyb3JNZXNzYWdlcyArPSBcImNlcnRpZmljYXRlQXJucyBpcyBkZXByZWNhdGVkLiBQbGVhc2Ugc3VwcGx5IGNlcnRpZmljYXRlcyB1c2luZyBwcm9wcy5saXN0ZW5lclByb3BzLmNlcnRpZmljYXRlc1xcblwiO1xuICAgIGVycm9yRm91bmQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKFxuICAgICgocHJvcHMuZXhpc3RpbmdMb2FkQmFsYW5jZXJPYmogJiZcbiAgICAgIHByb3BzLmV4aXN0aW5nTG9hZEJhbGFuY2VyT2JqLmxpc3RlbmVycy5sZW5ndGggPT09IDApIHx8XG4gICAgICAhcHJvcHMuZXhpc3RpbmdMb2FkQmFsYW5jZXJPYmopICYmXG4gICAgIXByb3BzLmxpc3RlbmVyUHJvcHNcbiAgKSB7XG4gICAgZXJyb3JNZXNzYWdlcyArPSBcIldoZW4gYWRkaW5nIHRoZSBmaXJzdCBsaXN0ZW5lciBhbmQgdGFyZ2V0IHRvIGEgbG9hZCBiYWxhbmNlciwgbGlzdGVuZXJQcm9wcyBtdXN0IGJlIHNwZWNpZmllZCBhbmQgaW5jbHVkZSBhdCBsZWFzdCBhIGNlcnRpZmljYXRlIG9yIHByb3RvY29sOiBIVFRQXFxuXCI7XG4gICAgZXJyb3JGb3VuZCA9IHRydWU7XG4gIH1cblxuICBpZiAoXG4gICAgcHJvcHMuZXhpc3RpbmdMb2FkQmFsYW5jZXJPYmogJiZcbiAgICBwcm9wcy5leGlzdGluZ0xvYWRCYWxhbmNlck9iai5saXN0ZW5lcnMubGVuZ3RoID4gMCAmJlxuICAgIHByb3BzLmxpc3RlbmVyUHJvcHNcbiAgKSB7XG4gICAgZXJyb3JGb3VuZCA9IHRydWU7XG4gICAgZXJyb3JNZXNzYWdlcyArPSBcIlRoaXMgbG9hZCBiYWxhbmNlciBhbHJlYWR5IGhhcyBhIGxpc3RlbmVyLCBsaXN0ZW5lclByb3BzIG1heSBub3QgYmUgc3BlY2lmaWVkXFxuXCI7XG4gIH1cblxuICBpZiAoXG4gICAgcHJvcHMuZXhpc3RpbmdMb2FkQmFsYW5jZXJPYmogJiZcbiAgICBwcm9wcy5leGlzdGluZ0xvYWRCYWxhbmNlck9iai5saXN0ZW5lcnMubGVuZ3RoID4gMCAmJlxuICAgICFwcm9wcy5ydWxlUHJvcHNcbiAgKSB7XG4gICAgZXJyb3JGb3VuZCA9IHRydWU7XG4gICAgZXJyb3JNZXNzYWdlcyArPSBcIldoZW4gYWRkaW5nIGEgc2Vjb25kIHRhcmdldCB0byBhbiBleGlzdGluZyBsaXN0ZW5lciwgdGhlcmUgbXVzdCBiZSBydWxlcyBwcm92aWRlZFxcblwiO1xuICB9XG5cbiAgLy8gQ2hlY2sgY29uc3RydWN0IHNwZWNpZmljIGludmFsaWQgaW5wdXRzXG4gIGlmIChwcm9wcy5leGlzdGluZ0xvYWRCYWxhbmNlck9iaiAmJiAhcHJvcHMuZXhpc3RpbmdWcGMpIHtcbiAgICBlcnJvckZvdW5kID0gdHJ1ZTtcbiAgICBlcnJvck1lc3NhZ2VzICs9IFwiQW4gZXhpc3RpbmcgQUxCIGlzIGFscmVhZHkgaW4gYSBWUEMsIHRoYXQgVlBDIG11c3QgYmUgcHJvdmlkZWQgaW4gcHJvcHMuZXhpc3RpbmdWcGMgZm9yIHRoZSByZXN0IG9mIHRoZSBjb25zdHJ1Y3QgdG8gdXNlLlxcblwiO1xuICB9XG5cbiAgaWYgKHByb3BzLmxvYWRCYWxhbmNlclByb3BzPy52cGMpIHtcbiAgICBlcnJvckZvdW5kID0gdHJ1ZTtcbiAgICBlcnJvck1lc3NhZ2VzICs9ICdTcGVjaWZ5IGFueSBleGlzdGluZyBWUEMgYXQgdGhlIGNvbnN0cnVjdCBsZXZlbCwgbm90IHdpdGhpbiBsb2FkQmFsYW5jZXJQcm9wcy5cXG4nO1xuICB9XG5cbiAgaWYgKHByb3BzLmV4aXN0aW5nTG9hZEJhbGFuY2VyT2JqKSB7XG4gICAgcHJpbnRXYXJuaW5nKFxuICAgICAgXCJUaGUgcHVibGljL3ByaXZhdGUgcHJvcGVydHkgb2YgYW4gZXhpc3RpbmcgQUxCIG11c3QgbWF0Y2ggdGhlIHByb3BzLnB1YmxpY0FwaSBzZXR0aW5nIHByb3ZpZGVkLlwiXG4gICAgKTtcbiAgfVxuXG4gIGlmIChlcnJvckZvdW5kKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGVycm9yTWVzc2FnZXMpO1xuICB9XG59Il19
|