@aws-solutions-constructs/core 2.101.0 → 2.103.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 CHANGED
@@ -13,8 +13,8 @@
13
13
  "npmlog": "^7.0.0"
14
14
  },
15
15
  "dependencies": {
16
- "@aws-cdk/cloud-assembly-schema": "^53.13.0",
17
- "aws-cdk-lib": "^2.248.0",
16
+ "@aws-cdk/cloud-assembly-schema": "^54.0.0",
17
+ "aws-cdk-lib": "^2.260.0",
18
18
  "constructs": "^10.0.0"
19
19
  },
20
20
  "dependencyClosure": {
@@ -531,6 +531,19 @@
531
531
  }
532
532
  }
533
533
  },
534
+ "aws-cdk-lib.aws_awsexternalanthropic": {
535
+ "targets": {
536
+ "dotnet": {
537
+ "namespace": "Amazon.CDK.AWS.AWSExternalAnthropic"
538
+ },
539
+ "java": {
540
+ "package": "software.amazon.awscdk.services.awsexternalanthropic"
541
+ },
542
+ "python": {
543
+ "module": "aws_cdk.aws_awsexternalanthropic"
544
+ }
545
+ }
546
+ },
534
547
  "aws-cdk-lib.aws_b2bi": {
535
548
  "targets": {
536
549
  "dotnet": {
@@ -596,6 +609,19 @@
596
609
  }
597
610
  }
598
611
  },
612
+ "aws-cdk-lib.aws_bcmpricingcalculator": {
613
+ "targets": {
614
+ "dotnet": {
615
+ "namespace": "Amazon.CDK.AWS.BcmPricingCalculator"
616
+ },
617
+ "java": {
618
+ "package": "software.amazon.awscdk.services.bcmpricingcalculator"
619
+ },
620
+ "python": {
621
+ "module": "aws_cdk.aws_bcmpricingcalculator"
622
+ }
623
+ }
624
+ },
599
625
  "aws-cdk-lib.aws_bedrock": {
600
626
  "targets": {
601
627
  "dotnet": {
@@ -648,6 +674,19 @@
648
674
  }
649
675
  }
650
676
  },
677
+ "aws-cdk-lib.aws_braket": {
678
+ "targets": {
679
+ "dotnet": {
680
+ "namespace": "Amazon.CDK.AWS.Braket"
681
+ },
682
+ "java": {
683
+ "package": "software.amazon.awscdk.services.braket"
684
+ },
685
+ "python": {
686
+ "module": "aws_cdk.aws_braket"
687
+ }
688
+ }
689
+ },
651
690
  "aws-cdk-lib.aws_budgets": {
652
691
  "targets": {
653
692
  "dotnet": {
@@ -726,6 +765,19 @@
726
765
  }
727
766
  }
728
767
  },
768
+ "aws-cdk-lib.aws_chime": {
769
+ "targets": {
770
+ "dotnet": {
771
+ "namespace": "Amazon.CDK.AWS.Chime"
772
+ },
773
+ "java": {
774
+ "package": "software.amazon.awscdk.services.chime"
775
+ },
776
+ "python": {
777
+ "module": "aws_cdk.aws_chime"
778
+ }
779
+ }
780
+ },
729
781
  "aws-cdk-lib.aws_cleanrooms": {
730
782
  "targets": {
731
783
  "dotnet": {
@@ -2826,6 +2878,19 @@
2826
2878
  }
2827
2879
  }
2828
2880
  },
2881
+ "aws-cdk-lib.aws_novaact": {
2882
+ "targets": {
2883
+ "dotnet": {
2884
+ "namespace": "Amazon.CDK.AWS.NovaAct"
2885
+ },
2886
+ "java": {
2887
+ "package": "software.amazon.awscdk.services.novaact"
2888
+ },
2889
+ "python": {
2890
+ "module": "aws_cdk.aws_novaact"
2891
+ }
2892
+ }
2893
+ },
2829
2894
  "aws-cdk-lib.aws_oam": {
2830
2895
  "targets": {
2831
2896
  "dotnet": {
@@ -3229,6 +3294,19 @@
3229
3294
  }
3230
3295
  }
3231
3296
  },
3297
+ "aws-cdk-lib.aws_resiliencehubv2": {
3298
+ "targets": {
3299
+ "dotnet": {
3300
+ "namespace": "Amazon.CDK.AWS.ResilienceHubV2"
3301
+ },
3302
+ "java": {
3303
+ "package": "software.amazon.awscdk.services.resiliencehubv2"
3304
+ },
3305
+ "python": {
3306
+ "module": "aws_cdk.aws_resiliencehubv2"
3307
+ }
3308
+ }
3309
+ },
3232
3310
  "aws-cdk-lib.aws_resourceexplorer2": {
3233
3311
  "targets": {
3234
3312
  "dotnet": {
@@ -3492,6 +3570,19 @@
3492
3570
  }
3493
3571
  }
3494
3572
  },
3573
+ "aws-cdk-lib.aws_s3files": {
3574
+ "targets": {
3575
+ "dotnet": {
3576
+ "namespace": "Amazon.CDK.AWS.S3Files"
3577
+ },
3578
+ "java": {
3579
+ "package": "software.amazon.awscdk.services.s3files"
3580
+ },
3581
+ "python": {
3582
+ "module": "aws_cdk.aws_s3files"
3583
+ }
3584
+ }
3585
+ },
3495
3586
  "aws-cdk-lib.aws_s3objectlambda": {
3496
3587
  "targets": {
3497
3588
  "dotnet": {
@@ -3622,6 +3713,19 @@
3622
3713
  }
3623
3714
  }
3624
3715
  },
3716
+ "aws-cdk-lib.aws_securityagent": {
3717
+ "targets": {
3718
+ "dotnet": {
3719
+ "namespace": "Amazon.CDK.AWS.SecurityAgent"
3720
+ },
3721
+ "java": {
3722
+ "package": "software.amazon.awscdk.services.securityagent"
3723
+ },
3724
+ "python": {
3725
+ "module": "aws_cdk.aws_securityagent"
3726
+ }
3727
+ }
3728
+ },
3625
3729
  "aws-cdk-lib.aws_securityhub": {
3626
3730
  "targets": {
3627
3731
  "dotnet": {
@@ -4630,6 +4734,22 @@
4630
4734
  }
4631
4735
  }
4632
4736
  },
4737
+ "aws-cdk-lib.interfaces.aws_awsexternalanthropic": {
4738
+ "targets": {
4739
+ "dotnet": {
4740
+ "namespace": "Amazon.CDK.Interfaces.AWSExternalAnthropic"
4741
+ },
4742
+ "go": {
4743
+ "packageName": "interfacesawsawsexternalanthropic"
4744
+ },
4745
+ "java": {
4746
+ "package": "software.amazon.awscdk.interfaces.awsexternalanthropic"
4747
+ },
4748
+ "python": {
4749
+ "module": "aws_cdk.interfaces.aws_awsexternalanthropic"
4750
+ }
4751
+ }
4752
+ },
4633
4753
  "aws-cdk-lib.interfaces.aws_b2bi": {
4634
4754
  "targets": {
4635
4755
  "dotnet": {
@@ -4694,6 +4814,22 @@
4694
4814
  }
4695
4815
  }
4696
4816
  },
4817
+ "aws-cdk-lib.interfaces.aws_bcm": {
4818
+ "targets": {
4819
+ "dotnet": {
4820
+ "namespace": "Amazon.CDK.Interfaces.BCM"
4821
+ },
4822
+ "go": {
4823
+ "packageName": "interfacesawsbcm"
4824
+ },
4825
+ "java": {
4826
+ "package": "software.amazon.awscdk.interfaces.bcm"
4827
+ },
4828
+ "python": {
4829
+ "module": "aws_cdk.interfaces.aws_bcm"
4830
+ }
4831
+ }
4832
+ },
4697
4833
  "aws-cdk-lib.interfaces.aws_bcmdataexports": {
4698
4834
  "targets": {
4699
4835
  "dotnet": {
@@ -4710,6 +4846,22 @@
4710
4846
  }
4711
4847
  }
4712
4848
  },
4849
+ "aws-cdk-lib.interfaces.aws_bcmpricingcalculator": {
4850
+ "targets": {
4851
+ "dotnet": {
4852
+ "namespace": "Amazon.CDK.Interfaces.BcmPricingCalculator"
4853
+ },
4854
+ "go": {
4855
+ "packageName": "interfacesawsbcmpricingcalculator"
4856
+ },
4857
+ "java": {
4858
+ "package": "software.amazon.awscdk.interfaces.bcmpricingcalculator"
4859
+ },
4860
+ "python": {
4861
+ "module": "aws_cdk.interfaces.aws_bcmpricingcalculator"
4862
+ }
4863
+ }
4864
+ },
4713
4865
  "aws-cdk-lib.interfaces.aws_bedrock": {
4714
4866
  "targets": {
4715
4867
  "dotnet": {
@@ -4790,6 +4942,22 @@
4790
4942
  }
4791
4943
  }
4792
4944
  },
4945
+ "aws-cdk-lib.interfaces.aws_braket": {
4946
+ "targets": {
4947
+ "dotnet": {
4948
+ "namespace": "Amazon.CDK.Interfaces.Braket"
4949
+ },
4950
+ "go": {
4951
+ "packageName": "interfacesawsbraket"
4952
+ },
4953
+ "java": {
4954
+ "package": "software.amazon.awscdk.interfaces.braket"
4955
+ },
4956
+ "python": {
4957
+ "module": "aws_cdk.interfaces.aws_braket"
4958
+ }
4959
+ }
4960
+ },
4793
4961
  "aws-cdk-lib.interfaces.aws_budgets": {
4794
4962
  "targets": {
4795
4963
  "dotnet": {
@@ -4886,6 +5054,22 @@
4886
5054
  }
4887
5055
  }
4888
5056
  },
5057
+ "aws-cdk-lib.interfaces.aws_chime": {
5058
+ "targets": {
5059
+ "dotnet": {
5060
+ "namespace": "Amazon.CDK.Interfaces.Chime"
5061
+ },
5062
+ "go": {
5063
+ "packageName": "interfacesawschime"
5064
+ },
5065
+ "java": {
5066
+ "package": "software.amazon.awscdk.interfaces.chime"
5067
+ },
5068
+ "python": {
5069
+ "module": "aws_cdk.interfaces.aws_chime"
5070
+ }
5071
+ }
5072
+ },
4889
5073
  "aws-cdk-lib.interfaces.aws_cleanrooms": {
4890
5074
  "targets": {
4891
5075
  "dotnet": {
@@ -7190,6 +7374,22 @@
7190
7374
  }
7191
7375
  }
7192
7376
  },
7377
+ "aws-cdk-lib.interfaces.aws_novaact": {
7378
+ "targets": {
7379
+ "dotnet": {
7380
+ "namespace": "Amazon.CDK.Interfaces.NovaAct"
7381
+ },
7382
+ "go": {
7383
+ "packageName": "interfacesawsnovaact"
7384
+ },
7385
+ "java": {
7386
+ "package": "software.amazon.awscdk.interfaces.novaact"
7387
+ },
7388
+ "python": {
7389
+ "module": "aws_cdk.interfaces.aws_novaact"
7390
+ }
7391
+ }
7392
+ },
7193
7393
  "aws-cdk-lib.interfaces.aws_oam": {
7194
7394
  "targets": {
7195
7395
  "dotnet": {
@@ -7686,6 +7886,22 @@
7686
7886
  }
7687
7887
  }
7688
7888
  },
7889
+ "aws-cdk-lib.interfaces.aws_resiliencehubv2": {
7890
+ "targets": {
7891
+ "dotnet": {
7892
+ "namespace": "Amazon.CDK.Interfaces.ResilienceHubV2"
7893
+ },
7894
+ "go": {
7895
+ "packageName": "interfacesawsresiliencehubv2"
7896
+ },
7897
+ "java": {
7898
+ "package": "software.amazon.awscdk.interfaces.resiliencehubv2"
7899
+ },
7900
+ "python": {
7901
+ "module": "aws_cdk.interfaces.aws_resiliencehubv2"
7902
+ }
7903
+ }
7904
+ },
7689
7905
  "aws-cdk-lib.interfaces.aws_resourceexplorer2": {
7690
7906
  "targets": {
7691
7907
  "dotnet": {
@@ -7910,6 +8126,22 @@
7910
8126
  }
7911
8127
  }
7912
8128
  },
8129
+ "aws-cdk-lib.interfaces.aws_s3files": {
8130
+ "targets": {
8131
+ "dotnet": {
8132
+ "namespace": "Amazon.CDK.Interfaces.S3Files"
8133
+ },
8134
+ "go": {
8135
+ "packageName": "interfacesawss3files"
8136
+ },
8137
+ "java": {
8138
+ "package": "software.amazon.awscdk.interfaces.s3files"
8139
+ },
8140
+ "python": {
8141
+ "module": "aws_cdk.interfaces.aws_s3files"
8142
+ }
8143
+ }
8144
+ },
7913
8145
  "aws-cdk-lib.interfaces.aws_s3objectlambda": {
7914
8146
  "targets": {
7915
8147
  "dotnet": {
@@ -8054,6 +8286,22 @@
8054
8286
  }
8055
8287
  }
8056
8288
  },
8289
+ "aws-cdk-lib.interfaces.aws_securityagent": {
8290
+ "targets": {
8291
+ "dotnet": {
8292
+ "namespace": "Amazon.CDK.Interfaces.SecurityAgent"
8293
+ },
8294
+ "go": {
8295
+ "packageName": "interfacesawssecurityagent"
8296
+ },
8297
+ "java": {
8298
+ "package": "software.amazon.awscdk.interfaces.securityagent"
8299
+ },
8300
+ "python": {
8301
+ "module": "aws_cdk.interfaces.aws_securityagent"
8302
+ }
8303
+ }
8304
+ },
8057
8305
  "aws-cdk-lib.interfaces.aws_securityhub": {
8058
8306
  "targets": {
8059
8307
  "dotnet": {
@@ -10634,7 +10882,7 @@
10634
10882
  "kind": "interface",
10635
10883
  "locationInModule": {
10636
10884
  "filename": "lib/s3-bucket-helper.ts",
10637
- "line": 30
10885
+ "line": 29
10638
10886
  },
10639
10887
  "name": "BuildS3BucketProps",
10640
10888
  "properties": [
@@ -10647,7 +10895,7 @@
10647
10895
  "immutable": true,
10648
10896
  "locationInModule": {
10649
10897
  "filename": "lib/s3-bucket-helper.ts",
10650
- "line": 36
10898
+ "line": 35
10651
10899
  },
10652
10900
  "name": "bucketProps",
10653
10901
  "optional": true,
@@ -10664,7 +10912,7 @@
10664
10912
  "immutable": true,
10665
10913
  "locationInModule": {
10666
10914
  "filename": "lib/s3-bucket-helper.ts",
10667
- "line": 42
10915
+ "line": 41
10668
10916
  },
10669
10917
  "name": "loggingBucketProps",
10670
10918
  "optional": true,
@@ -10682,7 +10930,7 @@
10682
10930
  "immutable": true,
10683
10931
  "locationInModule": {
10684
10932
  "filename": "lib/s3-bucket-helper.ts",
10685
- "line": 49
10933
+ "line": 48
10686
10934
  },
10687
10935
  "name": "logS3AccessLogs",
10688
10936
  "optional": true,
@@ -10700,7 +10948,7 @@
10700
10948
  "kind": "interface",
10701
10949
  "locationInModule": {
10702
10950
  "filename": "lib/s3-bucket-helper.ts",
10703
- "line": 188
10951
+ "line": 187
10704
10952
  },
10705
10953
  "name": "BuildS3BucketResponse",
10706
10954
  "properties": [
@@ -10709,7 +10957,7 @@
10709
10957
  "immutable": true,
10710
10958
  "locationInModule": {
10711
10959
  "filename": "lib/s3-bucket-helper.ts",
10712
- "line": 189
10960
+ "line": 188
10713
10961
  },
10714
10962
  "name": "bucket",
10715
10963
  "type": {
@@ -10721,7 +10969,7 @@
10721
10969
  "immutable": true,
10722
10970
  "locationInModule": {
10723
10971
  "filename": "lib/s3-bucket-helper.ts",
10724
- "line": 190
10972
+ "line": 189
10725
10973
  },
10726
10974
  "name": "loggingBucket",
10727
10975
  "optional": true,
@@ -12148,7 +12396,7 @@
12148
12396
  "kind": "interface",
12149
12397
  "locationInModule": {
12150
12398
  "filename": "lib/s3-bucket-helper.ts",
12151
- "line": 88
12399
+ "line": 87
12152
12400
  },
12153
12401
  "name": "CreateCloudFrontLoggingBucketRequest",
12154
12402
  "properties": [
@@ -12157,7 +12405,7 @@
12157
12405
  "immutable": true,
12158
12406
  "locationInModule": {
12159
12407
  "filename": "lib/s3-bucket-helper.ts",
12160
- "line": 89
12408
+ "line": 88
12161
12409
  },
12162
12410
  "name": "loggingBucketProps",
12163
12411
  "type": {
@@ -12169,7 +12417,7 @@
12169
12417
  "immutable": true,
12170
12418
  "locationInModule": {
12171
12419
  "filename": "lib/s3-bucket-helper.ts",
12172
- "line": 91
12420
+ "line": 90
12173
12421
  },
12174
12422
  "name": "enableS3AccessLogs",
12175
12423
  "optional": true,
@@ -12182,7 +12430,7 @@
12182
12430
  "immutable": true,
12183
12431
  "locationInModule": {
12184
12432
  "filename": "lib/s3-bucket-helper.ts",
12185
- "line": 90
12433
+ "line": 89
12186
12434
  },
12187
12435
  "name": "s3AccessLogBucketProps",
12188
12436
  "optional": true,
@@ -12200,7 +12448,7 @@
12200
12448
  "kind": "interface",
12201
12449
  "locationInModule": {
12202
12450
  "filename": "lib/s3-bucket-helper.ts",
12203
- "line": 94
12451
+ "line": 93
12204
12452
  },
12205
12453
  "name": "CreateCloudFrontLoggingBucketResponse",
12206
12454
  "properties": [
@@ -12209,7 +12457,7 @@
12209
12457
  "immutable": true,
12210
12458
  "locationInModule": {
12211
12459
  "filename": "lib/s3-bucket-helper.ts",
12212
- "line": 95
12460
+ "line": 94
12213
12461
  },
12214
12462
  "name": "logBucket",
12215
12463
  "type": {
@@ -12221,7 +12469,7 @@
12221
12469
  "immutable": true,
12222
12470
  "locationInModule": {
12223
12471
  "filename": "lib/s3-bucket-helper.ts",
12224
- "line": 96
12472
+ "line": 95
12225
12473
  },
12226
12474
  "name": "s3AccessLogBucket",
12227
12475
  "optional": true,
@@ -14145,7 +14393,7 @@
14145
14393
  "kind": "interface",
14146
14394
  "locationInModule": {
14147
14395
  "filename": "lib/s3-bucket-helper.ts",
14148
- "line": 295
14396
+ "line": 284
14149
14397
  },
14150
14398
  "name": "S3Props",
14151
14399
  "properties": [
@@ -14154,7 +14402,7 @@
14154
14402
  "immutable": true,
14155
14403
  "locationInModule": {
14156
14404
  "filename": "lib/s3-bucket-helper.ts",
14157
- "line": 298
14405
+ "line": 287
14158
14406
  },
14159
14407
  "name": "bucketProps",
14160
14408
  "optional": true,
@@ -14167,7 +14415,7 @@
14167
14415
  "immutable": true,
14168
14416
  "locationInModule": {
14169
14417
  "filename": "lib/s3-bucket-helper.ts",
14170
- "line": 297
14418
+ "line": 286
14171
14419
  },
14172
14420
  "name": "existingBucketInterface",
14173
14421
  "optional": true,
@@ -14180,7 +14428,7 @@
14180
14428
  "immutable": true,
14181
14429
  "locationInModule": {
14182
14430
  "filename": "lib/s3-bucket-helper.ts",
14183
- "line": 296
14431
+ "line": 285
14184
14432
  },
14185
14433
  "name": "existingBucketObj",
14186
14434
  "optional": true,
@@ -14193,7 +14441,7 @@
14193
14441
  "immutable": true,
14194
14442
  "locationInModule": {
14195
14443
  "filename": "lib/s3-bucket-helper.ts",
14196
- "line": 299
14444
+ "line": 288
14197
14445
  },
14198
14446
  "name": "existingLoggingBucketObj",
14199
14447
  "optional": true,
@@ -14206,7 +14454,7 @@
14206
14454
  "immutable": true,
14207
14455
  "locationInModule": {
14208
14456
  "filename": "lib/s3-bucket-helper.ts",
14209
- "line": 300
14457
+ "line": 289
14210
14458
  },
14211
14459
  "name": "loggingBucketProps",
14212
14460
  "optional": true,
@@ -14219,7 +14467,7 @@
14219
14467
  "immutable": true,
14220
14468
  "locationInModule": {
14221
14469
  "filename": "lib/s3-bucket-helper.ts",
14222
- "line": 301
14470
+ "line": 290
14223
14471
  },
14224
14472
  "name": "logS3AccessLogs",
14225
14473
  "optional": true,
@@ -15649,6 +15897,6 @@
15649
15897
  "symbolId": "lib/waf-helper:WafWebAclProps"
15650
15898
  }
15651
15899
  },
15652
- "version": "2.101.0",
15653
- "fingerprint": "gUmdF2qY52rghhd7vnOZVB++y1R5YrGz84YGapGTNt8="
15900
+ "version": "2.103.0",
15901
+ "fingerprint": "4tZboEB/OLT+bGQXnfZtWMw5aioYA3OZvZl79XvxNJs="
15654
15902
  }
@@ -187,8 +187,6 @@ function buildS3Bucket(scope, props, bucketId) {
187
187
  */
188
188
  function addCfnNagS3BucketNotificationRulesToSuppress(stackRoot, logicalId) {
189
189
  const notificationsResourceHandler = stackRoot.node.tryFindChild(logicalId);
190
- const notificationsResourceHandlerRoleRole = notificationsResourceHandler.node.findChild('Role');
191
- const notificationsResourceHandlerRolePolicy = notificationsResourceHandlerRoleRole.node.findChild('DefaultPolicy');
192
190
  // Extract the CfnFunction from the Function
193
191
  const fnResource = notificationsResourceHandler.node.findChild('Resource');
194
192
  (0, utils_1.addCfnSuppressRules)(fnResource, [
@@ -205,14 +203,6 @@ function addCfnNagS3BucketNotificationRulesToSuppress(stackRoot, logicalId) {
205
203
  reason: `Impossible for us to define the correct concurrency for clients`
206
204
  }
207
205
  ]);
208
- // Extract the CfnPolicy from the iam.Policy
209
- const policyResource = notificationsResourceHandlerRolePolicy.node.findChild('Resource');
210
- (0, utils_1.addCfnSuppressRules)(policyResource, [
211
- {
212
- id: 'W12',
213
- reason: `Bucket resource is '*' due to circular dependency with bucket and role creation at the same time`
214
- }
215
- ]);
216
206
  }
217
207
  function CheckS3Props(propsObject) {
218
208
  let errorMessages = '';
@@ -243,4 +233,4 @@ function CheckS3Props(propsObject) {
243
233
  throw new Error(errorMessages);
244
234
  }
245
235
  }
246
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiczMtYnVja2V0LWhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInMzLWJ1Y2tldC1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7OztHQVdHOztBQTJDSCxrRUErQkM7QUFnQkQsc0VBNkNDO0FBS0Qsd0RBa0NDO0FBV0Qsc0NBNkRDO0FBS0Qsb0dBOEJDO0FBV0Qsb0NBa0NDO0FBN1RELHlDQUF5QztBQUV6Qyw2REFBc0Q7QUFDdEQsbUNBQXNIO0FBQ3RILCtDQUFrRDtBQUNsRCw2Q0FBdUM7QUEwQnZDOztHQUVHO0FBQ0gsU0FBZ0IsMkJBQTJCLENBQUMsS0FBZ0IsRUFDMUQsUUFBZ0IsRUFDaEIsa0JBQWtDO0lBRWxDLGlGQUFpRjtJQUNqRixvQ0FBb0M7SUFDcEMsTUFBTSxtQkFBbUIsR0FBRyxJQUFBLHdCQUFnQixFQUFDLElBQUEsbUNBQWMsR0FBRSxFQUFFLGtCQUFrQixDQUFDLENBQUM7SUFFbkYsNEJBQTRCO0lBQzVCLDhCQUE4QjtJQUM5Qiw4RUFBOEU7SUFDOUUscUVBQXFFO0lBQ3JFLDZCQUE2QjtJQUM3QiwrRUFBK0U7SUFDL0UsdURBQXVEO0lBQ3ZELDZCQUE2QjtJQUM3QixnRkFBZ0Y7SUFDaEYsdURBQXVEO0lBQ3ZELHdDQUF3QztJQUN4QywrRUFBK0U7SUFDL0UsdURBQXVEO0lBQ3ZELE1BQU0sYUFBYSxHQUFjLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxVQUFVO0lBRWhHLElBQUEsMkJBQW1CLEVBQUMsYUFBYSxFQUFFO1FBQ2pDO1lBQ0UsRUFBRSxFQUFFLEtBQUs7WUFDVCxNQUFNLEVBQUUsd0VBQXdFO1NBQ2pGO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsT0FBTyxhQUFhLENBQUM7QUFDdkIsQ0FBQztBQWFEOztHQUVHO0FBQ0gsU0FBZ0IsNkJBQTZCLENBQUMsS0FBZ0IsRUFDNUQsUUFBZ0IsRUFDaEIs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QVUsR0FBRyxJQUFJLENBQUM7SUFDcEIsQ0FBQztJQUVELElBQUksQ0FBQyxXQUFXLEVBQUUsZUFBZSxLQUFLLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGtCQUFrQixJQUFJLFdBQVcsQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFLENBQUM7UUFDekgsYUFBYSxJQUFJLDZHQUE2RyxDQUFDO1FBQy9ILFVBQVUsR0FBRyxJQUFJLENBQUM7SUFDcEIsQ0FBQztJQUVELElBQUksV0FBVyxDQUFDLGlCQUFpQixJQUFJLENBQUMsV0FBVyxDQUFDLGtCQUFrQixJQUFJLFdBQVcsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO1FBQ3JHLGFBQWEsSUFBSSwwR0FBMEcsQ0FBQztRQUM1SCxVQUFVLEdBQUcsSUFBSSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUFJLFdBQVcsRUFBRSxXQUFXLEVBQUUsVUFBVSxLQUFLLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUM3RSxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzlDLElBQUEsb0JBQVksRUFBQyxtRkFBbUYsQ0FBQyxDQUFDO1lBQ2xHLElBQUEsb0JBQVksRUFBQyx1RUFBdUUsQ0FBQyxDQUFDO1FBQ3hGLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUNmLE1BQU0sSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDakMsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuICogIHdpdGggdGhlIExpY2Vuc2UuIEEgY29weSBvZiB0aGUgTGljZW5zZSBpcyBsb2NhdGVkIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgb3IgaW4gdGhlICdsaWNlbnNlJyBmaWxlIGFjY29tcGFueWluZyB0aGlzIGZpbGUuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMnIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVNcbiAqICBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xuICogIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKlxuICogIFRoZSBmdW5jdGlvbnMgZm91bmQgaGVyZSBpbiB0aGUgY29yZSBsaWJyYXJ5IGFyZSBmb3IgaW50ZXJuYWwgdXNlIGFuZCBjYW4gYmUgY2hhbmdlZFxuICogIG9yIHJlbW92ZWQgb3V0c2lkZSBvZiBhIG1ham9yIHJlbGVhc2UuIFdlIHJlY29tbWVuZCBhZ2FpbnN0IGNhbGxpbmcgdGhlbSBkaXJlY3RseSBmcm9tIGNsaWVudCBjb2RlLlxuICovXG5cbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCAqIGFzIHMzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgRGVmYXVsdFMzUHJvcHMgfSBmcm9tICcuL3MzLWJ1Y2tldC1kZWZhdWx0cyc7XG5pbXBvcnQgeyBvdmVycmlkZVByb3BzLCBhZGRDZm5TdXBwcmVzc1J1bGVzLCBjb25zb2xpZGF0ZVByb3BzLCBDaGVja0Jvb2xlYW5XaXRoRGVmYXVsdCwgcHJpbnRXYXJuaW5nIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBTdG9yYWdlQ2xhc3MgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMnO1xuaW1wb3J0IHsgRHVyYXRpb24gfSBmcm9tICdhd3MtY2RrLWxpYic7XG4vLyBOb3RlOiBUbyBlbnN1cmUgQ0RLdjIgY29tcGF0aWJpbGl0eSwga2VlcCB0aGUgaW1wb3J0IHN0YXRlbWVudCBmb3IgQ29uc3RydWN0IHNlcGFyYXRlXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuZXhwb3J0IGludGVyZmFjZSBCdWlsZFMzQnVja2V0UHJvcHMge1xuICAvKipcbiAgICogVXNlciBwcm92aWRlZCBwcm9wcyB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBwcm9wcyBmb3IgdGhlIFMzIEJ1Y2tldC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBEZWZhdWx0IHByb3BzIGFyZSB1c2VkXG4gICAqL1xuICByZWFkb25seSBidWNrZXRQcm9wcz86IHMzLkJ1Y2tldFByb3BzO1xuICAvKipcbiAgICogVXNlciBwcm92aWRlZCBwcm9wcyB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBwcm9wcyBmb3IgdGhlIFMzIExvZ2dpbmcgQnVja2V0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIERlZmF1bHQgcHJvcHMgYXJlIHVzZWRcbiAgICovXG4gIHJlYWRvbmx5IGxvZ2dpbmdCdWNrZXRQcm9wcz86IHMzLkJ1Y2tldFByb3BzO1xuICAvKipcbiAgICogV2hldGhlciB0byB0dXJuIG9uIEFjY2VzcyBMb2dzIGZvciBTMy4gVXNlcyBhbiBTMyBidWNrZXQgd2l0aCBhc3NvY2lhdGVkIHN0b3JhZ2UgY29zdHMuXG4gICAqIEVuYWJsaW5nIEFjY2VzcyBMb2dnaW5nIGlzIGEgYmVzdCBwcmFjdGljZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0cnVlXG4gICAqL1xuICByZWFkb25seSBsb2dTM0FjY2Vzc0xvZ3M/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEBpbnRlcm5hbCBUaGlzIGlzIGFuIGludGVybmFsIGNvcmUgZnVuY3Rpb24gYW5kIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5IGJ5IFNvbHV0aW9ucyBDb25zdHJ1Y3RzIGNsaWVudHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTM0FjY2Vzc0xvZ2dpbmdCdWNrZXQoc2NvcGU6IENvbnN0cnVjdCxcbiAgYnVja2V0SWQ6IHN0cmluZyxcbiAgbG9nZ2luZ0J1Y2tldFByb3BzOiBzMy5CdWNrZXRQcm9wcyk6IHMzLkJ1Y2tldCB7XG5cbiAgLy8gSW50cm9kdWNlIHRoZSBkZWZhdWx0IHByb3BzIHNpbmNlIHdlIGNhbid0IGJlIGNlcnRhaW4gdGhlIGNhbGxlciB1c2VkIHRoZW0gYW5kXG4gIC8vIHRoZXkgYXJlIGltcG9ydGFudCBiZXN0IHByYWN0aWNlc1xuICBjb25zdCBjb21iaW5lZEJ1Y2tldFByb3BzID0gY29uc29saWRhdGVQcm9wcyhEZWZhdWx0UzNQcm9wcygpLCBsb2dnaW5nQnVja2V0UHJvcHMpO1xuXG4gIC8vIENyZWF0ZSB0aGUgTG9nZ2luZyBCdWNrZXRcbiAgLy8gTk9TT05BUiAgKHR5cGVzY3JpcHQ6UzYyODEpXG4gIC8vIEJsb2NrIFB1YmxpYyBBY2Nlc3MgaXMgc2V0IGJ5IERlZmF1bHRTM1Byb3BzLCBidXQgU29uYXJxdWJlIGNhbid0IGRldGVjdCBpdFxuICAvLyBJdCBpcyB2ZXJpZmllZCBieSAnczMgYnVja2V0IHdpdGggZGVmYXVsdCBwcm9wcycgaW4gdGhlIHVuaXQgdGVzdHNcbiAgLy8gTk9TT05BUiAodHlwZXNjcmlwdDpTNjI0NSlcbiAgLy8gRW5jcnlwdGlvbiBpcyB0dXJuZWQgb24gaW4gdGhlIGRlZmF1bHQgcHJvcGVydGllcyB0aGF0IFNvbmFycXViZSBkb2Vzbid0IHNlZVxuICAvLyBWZXJpZmllZCBieSB1bml0IHRlc3QgJ3MzIGJ1Y2tldCB3aXRoIGRlZmF1bHQgcHJvcHMnXG4gIC8vIE5PU09OQVIgKHR5cGVzY3JpcHQ6UzYyNDkpXG4gIC8vIGVuZm9yY2VTU0wgIGlzIHR1cm5lZCBvbiBpbiB0aGUgZGVmYXVsdCBwcm9wZXJ0aWVzIHRoYXQgU29uYXJxdWJlIGRvZXNuJ3Qgc2VlXG4gIC8vIFZlcmlmaWVkIGJ5IHVuaXQgdGVzdCAnczMgYnVja2V0IHdpdGggZGVmYXVsdCBwcm9wcydcbiAgLy8gTk9TT05BUiAodHlwZXNjcmlwdDp0eXBlc2NyaXB0OlM2MjQ5KVxuICAvLyB2ZXJzaW9uaW5nIGlzIHR1cm5lZCBvbiBpbiB0aGUgZGVmYXVsdCBwcm9wZXJ0aWVzIHRoYXQgU29uYXJxdWJlIGRvZXNuJ3Qgc2VlXG4gIC8vIFZlcmlmaWVkIGJ5IHVuaXQgdGVzdCAnczMgYnVja2V0IHdpdGggZGVmYXVsdCBwcm9wcydcbiAgY29uc3QgbG9nZ2luZ0J1Y2tldDogczMuQnVja2V0ID0gbmV3IHMzLkJ1Y2tldChzY29wZSwgYnVja2V0SWQsIGNvbWJpbmVkQnVja2V0UHJvcHMpOyAvLyBOT1NPTkFSXG5cbiAgYWRkQ2ZuU3VwcHJlc3NSdWxlcyhsb2dnaW5nQnVja2V0LCBbXG4gICAge1xuICAgICAgaWQ6ICdXMzUnLFxuICAgICAgcmVhc29uOiBcIlRoaXMgUzMgYnVja2V0IGlzIHVzZWQgYXMgdGhlIGFjY2VzcyBsb2dnaW5nIGJ1Y2tldCBmb3IgYW5vdGhlciBidWNrZXRcIlxuICAgIH1cbiAgXSk7XG5cbiAgcmV0dXJuIGxvZ2dpbmdCdWNrZXQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlQ2xvdWRGcm9udExvZ2dpbmdCdWNrZXRSZXF1ZXN0IHtcbiAgcmVhZG9ubHkgbG9nZ2luZ0J1Y2tldFByb3BzOiBzMy5CdWNrZXRQcm9wcyxcbiAgcmVhZG9ubHkgczNBY2Nlc3NMb2dCdWNrZXRQcm9wcz86IHMzLkJ1Y2tldFByb3BzLFxuICByZWFkb25seSBlbmFibGVTM0FjY2Vzc0xvZ3M/OiBib29sZWFuXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlQ2xvdWRGcm9udExvZ2dpbmdCdWNrZXRSZXNwb25zZSB7XG4gIHJlYWRvbmx5IGxvZ0J1Y2tldDogczMuQnVja2V0LFxuICByZWFkb25seSBzM0FjY2Vzc0xvZ0J1Y2tldD86IHMzLkJ1Y2tldFxufVxuXG4vKipcbiAqIEBpbnRlcm5hbCBUaGlzIGlzIGFuIGludGVybmFsIGNvcmUgZnVuY3Rpb24gYW5kIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5IGJ5IFNvbHV0aW9ucyBDb25zdHJ1Y3RzIGNsaWVudHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDbG91ZEZyb250TG9nZ2luZ0J1Y2tldChzY29wZTogQ29uc3RydWN0LFxuICBidWNrZXRJZDogc3RyaW5nLFxuICBwcm9wczogQ3JlYXRlQ2xvdWRGcm9udExvZ2dpbmdCdWNrZXRSZXF1ZXN0KTogQ3JlYXRlQ2xvdWRGcm9udExvZ2dpbmdCdWNrZXRSZXNwb25zZSB7XG5cbiAgbGV0IGNsb3VkRnJvbnRMb2dBY2Nlc3NMb2dCdWNrZXQ6IHMzLkJ1Y2tldCB8IHVuZGVmaW5lZDtcblxuICAvLyBJbnRyb2R1Y2UgdGhlIGRlZmF1bHQgcHJvcHMgc2luY2Ugd2UgY2FuJ3QgYmUgY2VydGFpbiB0aGUgY2FsbGVyIHVzZWQgdGhlbSBhbmRcbiAgLy8gdGhleSBhcmUgaW1wb3J0YW50IGJlc3QgcHJhY3RpY2VzXG4gIGxldCBjb21iaW5lZEJ1Y2tldFByb3BzID0gY29uc29saWRhdGVQcm9wcyhEZWZhdWx0UzNQcm9wcygpLCBwcm9wcy5sb2dnaW5nQnVja2V0UHJvcHMpO1xuXG4gIGlmICghcHJvcHMubG9nZ2luZ0J1Y2tldFByb3BzLnNlcnZlckFjY2Vzc0xvZ3NCdWNrZXQpIHtcbiAgICAvLyBDcmVhdGUgYnVja2V0IGFuZCBhZGQgdG8gcHJvcHNcbiAgICBjb25zdCBjb21iaW5lZFMzTG9nQnVja2V0UHJvcHMgPSBjb25zb2xpZGF0ZVByb3BzKERlZmF1bHRTM1Byb3BzKCksIHByb3BzLnMzQWNjZXNzTG9nQnVja2V0UHJvcHMpO1xuXG4gICAgaWYgKENoZWNrQm9vbGVhbldpdGhEZWZhdWx0KHByb3BzLmVuYWJsZVMzQWNjZXNzTG9ncywgdHJ1ZSkpIHtcbiAgICAgIGNsb3VkRnJvbnRMb2dBY2Nlc3NMb2dCdWNrZXQgPSBuZXcgczMuQnVja2V0KHNjb3BlLCBgJHtidWNrZXRJZH1BY2Nlc3NMb2dgLCBjb21iaW5lZFMzTG9nQnVja2V0UHJvcHMpOyAvLyBOT1NPTkFSXG4gICAgICBjb21iaW5lZEJ1Y2tldFByb3BzID0gb3ZlcnJpZGVQcm9wcyhjb21iaW5lZEJ1Y2tldFByb3BzLCB7IHNlcnZlckFjY2Vzc0xvZ3NCdWNrZXQ6IGNsb3VkRnJvbnRMb2dBY2Nlc3NMb2dCdWNrZXQgfSk7XG4gICAgICBhZGRDZm5TdXBwcmVzc1J1bGVzKGNsb3VkRnJvbnRMb2dBY2Nlc3NMb2dCdWNrZXQsIFtcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAnVzM1JyxcbiAgICAgICAgICByZWFzb246IFwiVGhpcyBTMyBidWNrZXQgaXMgdXNlZCBhcyB0aGUgYWNjZXNzIGxvZ2dpbmcgYnVja2V0IGZvciBhbm90aGVyIGJ1Y2tldFwiXG4gICAgICAgIH1cbiAgICAgIF0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIENyZWF0ZSB0aGUgTG9nZ2luZyBCdWNrZXRcbiAgLy8gTk9TT05BUiAgKHR5cGVzY3JpcHQ6UzYyODEpXG4gIC8vIEJsb2NrIFB1YmxpYyBBY2Nlc3MgaXMgc2V0IGJ5IERlZmF1bHRTM1Byb3BzLCBidXQgU29uYXJxdWJlIGNhbid0IGRldGVjdCBpdFxuICAvLyBJdCBpcyB2ZXJpZmllZCBieSAnczMgYnVja2V0IHdpdGggZGVmYXVsdCBwcm9wcycgaW4gdGhlIHVuaXQgdGVzdHNcbiAgLy8gTk9TT05BUiAodHlwZXNjcmlwdDpTNjI0NSlcbiAgLy8gRW5jcnlwdGlvbiBpcyB0dXJuZWQgb24gaW4gdGhlIGRlZmF1bHQgcHJvcGVydGllcyB0aGF0IFNvbmFycXViZSBkb2Vzbid0IHNlZVxuICAvLyBWZXJpZmllZCBieSB1bml0IHRlc3QgJ3MzIGJ1Y2tldCB3aXRoIGRlZmF1bHQgcHJvcHMnXG4gIC8vIE5PU09OQVIgKHR5cGVzY3JpcHQ6UzYyNDkpXG4gIC8vIGVuZm9yY2VTU0wgIGlzIHR1cm5lZCBvbiBpbiB0aGUgZGVmYXVsdCBwcm9wZXJ0aWVzIHRoYXQgU29uYXJxdWJlIGRvZXNuJ3Qgc2VlXG4gIC8vIFZlcmlmaWVkIGJ5IHVuaXQgdGVzdCAnczMgYnVja2V0IHdpdGggZGVmYXVsdCBwcm9wcydcbiAgLy8gTk9TT05BUiAodHlwZXNjcmlwdDp0eXBlc2NyaXB0OlM2MjQ5KVxuICAvLyB2ZXJzaW9uaW5nIGlzIHR1cm5lZCBvbiBpbiB0aGUgZGVmYXVsdCBwcm9wZXJ0aWVzIHRoYXQgU29uYXJxdWJlIGRvZXNuJ3Qgc2VlXG4gIC8vIFZlcmlmaWVkIGJ5IHVuaXQgdGVzdCAnczMgYnVja2V0IHdpdGggZGVmYXVsdCBwcm9wcydcbiAgY29uc3QgY2xvdWRmcm9udExvZ0J1Y2tldDogczMuQnVja2V0ID0gbmV3IHMzLkJ1Y2tldChzY29wZSwgYnVja2V0SWQsIGNvbWJpbmVkQnVja2V0UHJvcHMpOyAvLyBOT1NPTkFSXG5cbiAgcmV0dXJuIHtcbiAgICBsb2dCdWNrZXQ6IGNsb3VkZnJvbnRMb2dCdWNrZXQsXG4gICAgczNBY2Nlc3NMb2dCdWNrZXQ6IGNsb3VkRnJvbnRMb2dBY2Nlc3NMb2dCdWNrZXRcbiAgfTtcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQWxiTG9nZ2luZ0J1Y2tldChzY29wZTogQ29uc3RydWN0LFxuICBidWNrZXRJZDogc3RyaW5nLFxuICBsb2dnaW5nQnVja2V0UHJvcHM6IHMzLkJ1Y2tldFByb3BzKTogczMuQnVja2V0IHtcblxuICAvLyBJbnRyb2R1Y2UgdGhlIGRlZmF1bHQgcHJvcHMgc2luY2Ugd2UgY2FuJ3QgYmUgY2VydGFpbiB0aGUgY2FsbGVyIHVzZWQgdGhlbSBhbmRcbiAgLy8gdGhleSBhcmUgaW1wb3J0YW50IGJlc3QgcHJhY3RpY2VzXG4gIGNvbnN0IGNvbWJpbmVkQnVja2V0UHJvcHMgPSBjb25zb2xpZGF0ZVByb3BzKERlZmF1bHRTM1Byb3BzKCksIGxvZ2dpbmdCdWNrZXRQcm9wcyk7XG5cbiAgLy8gQ3JlYXRlIHRoZSBMb2dnaW5nIEJ1Y2tldFxuICAvLyBOT1NPTkFSICh0eXBlc2NyaXB0OlM2MjgxKVxuICAvLyBCbG9jayBQdWJsaWMgQWNjZXNzIGlzIHNldCBieSBEZWZhdWx0UzNQcm9wcywgYnV0IFNvbmFycXViZSBjYW4ndCBkZXRlY3QgaXRcbiAgLy8gSXQgaXMgdmVyaWZpZWQgYnkgJ3MzIGJ1Y2tldCB3aXRoIGRlZmF1bHQgcHJvcHMnIGluIHRoZSB1bml0IHRlc3RzXG4gIC8vIE5PU09OQVIgKHR5cGVzY3JpcHQ6UzYyNDUpXG4gIC8vIEVuY3J5cHRpb24gaXMgdHVybmVkIG9uIGluIHRoZSBkZWZhdWx0IHByb3BlcnRpZXMgdGhhdCBTb25hcnF1YmUgZG9lc24ndCBzZWVcbiAgLy8gVmVyaWZpZWQgYnkgdW5pdCB0ZXN0ICdzMyBidWNrZXQgd2l0aCBkZWZhdWx0IHByb3BzJ1xuICAvLyBOT1NPTkFSICh0eXBlc2NyaXB0OlM2MjQ5KVxuICAvLyBlbmZvcmNlU1NMICBpcyB0dXJuZWQgb24gaW4gdGhlIGRlZmF1bHQgcHJvcGVydGllcyB0aGF0IFNvbmFycXViZSBkb2Vzbid0IHNlZVxuICAvLyBWZXJpZmllZCBieSB1bml0IHRlc3QgJ3MzIGJ1Y2tldCB3aXRoIGRlZmF1bHQgcHJvcHMnXG4gIC8vIE5PU09OQVIgKHR5cGVzY3JpcHQ6dHlwZXNjcmlwdDpTNjI0OSlcbiAgLy8gdmVyc2lvbmluZyBpcyB0dXJuZWQgb24gaW4gdGhlIGRlZmF1bHQgcHJvcGVydGllcyB0aGF0IFNvbmFycXViZSBkb2Vzbid0IHNlZVxuICAvLyBWZXJpZmllZCBieSB1bml0IHRlc3QgJ3MzIGJ1Y2tldCB3aXRoIGRlZmF1bHQgcHJvcHMnXG4gIGNvbnN0IGxvZ2dpbmdCdWNrZXQ6IHMzLkJ1Y2tldCA9IG5ldyBzMy5CdWNrZXQoc2NvcGUsIGJ1Y2tldElkLCBjb21iaW5lZEJ1Y2tldFByb3BzKTsgLy8gTk9TT05BUlxuXG4gIC8vIEV4dHJhY3QgdGhlIENmbkJ1Y2tldCBmcm9tIHRoZSBsb2dnaW5nQnVja2V0XG4gIGNvbnN0IGxvZ2dpbmdCdWNrZXRSZXNvdXJjZSA9IGxvZ2dpbmdCdWNrZXQubm9kZS5maW5kQ2hpbGQoJ1Jlc291cmNlJykgYXMgczMuQ2ZuQnVja2V0O1xuXG4gIGFkZENmblN1cHByZXNzUnVsZXMobG9nZ2luZ0J1Y2tldFJlc291cmNlLCBbXG4gICAge1xuICAgICAgaWQ6ICdXMzUnLFxuICAgICAgcmVhc29uOiBcIlRoaXMgaXMgYSBsb2cgYnVja2V0IGZvciBhbiBBcHBsaWNhdGlvbiBMb2FkIEJhbGFuY2VyXCJcbiAgICB9XG4gIF0pO1xuXG4gIHJldHVybiBsb2dnaW5nQnVja2V0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkUzNCdWNrZXRSZXNwb25zZSB7XG4gIHJlYWRvbmx5IGJ1Y2tldDogczMuQnVja2V0LFxuICByZWFkb25seSBsb2dnaW5nQnVja2V0PzogczMuQnVja2V0XG59XG5cbi8qKlxuICogQGludGVybmFsIFRoaXMgaXMgYW4gaW50ZXJuYWwgY29yZSBmdW5jdGlvbiBhbmQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkgYnkgU29sdXRpb25zIENvbnN0cnVjdHMgY2xpZW50cy5cbiAqIEBpbnRlcm5hbCBUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgZXhwb3NlZCBleHRlcm5hbGx5IHRocm91Z2ggYXdzLWNvbnN0cnVjdHMtZmFjdG9yaWVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFMzQnVja2V0KHNjb3BlOiBDb25zdHJ1Y3QsXG4gIHByb3BzOiBCdWlsZFMzQnVja2V0UHJvcHMsXG4gIGJ1Y2tldElkPzogc3RyaW5nKTogQnVpbGRTM0J1Y2tldFJlc3BvbnNlIHtcblxuICAvKiogRGVmYXVsdCBMaWZlIEN5Y2xlIHBvbGljeSB0byB0cmFuc2l0aW9uIG9sZGVyIHZlcnNpb25zIHRvIEdsYWNpZXIgYWZ0ZXIgOTAgZGF5cyAqL1xuICBjb25zdCBsaWZlY3ljbGVSdWxlczogczMuTGlmZWN5Y2xlUnVsZVtdID0gW3tcbiAgICBub25jdXJyZW50VmVyc2lvblRyYW5zaXRpb25zOiBbe1xuICAgICAgc3RvcmFnZUNsYXNzOiBTdG9yYWdlQ2xhc3MuR0xBQ0lFUixcbiAgICAgIHRyYW5zaXRpb25BZnRlcjogRHVyYXRpb24uZGF5cyg5MClcbiAgICB9XVxuICB9XTtcblxuICAvLyBDcmVhdGUgdGhlIEFwcGxpY2F0aW9uIEJ1Y2tldFxuICBsZXQgZGVmYXVsdEJ1Y2tldFByb3BzOiBzMy5CdWNrZXRQcm9wcztcbiAgbGV0IGxvZ2dpbmdCdWNrZXQ7XG4gIGNvbnN0IHJlc29sdmVkQnVja2V0SWQgPSBidWNrZXRJZCA/IGJ1Y2tldElkICsgJ1MzQnVja2V0JyA6ICdTM0J1Y2tldCc7XG4gIGNvbnN0IGxvZ2dpbmdCdWNrZXRJZCA9IGJ1Y2tldElkID8gYnVja2V0SWQgKyAnUzNMb2dnaW5nQnVja2V0JyA6ICdTM0xvZ2dpbmdCdWNrZXQnO1xuXG4gIC8vIElmIGxvZ2dpbmcgUzMgYWNjZXNzIGxvZ3MgaXMgZW5hYmxlZC91bmRlZmluZWQgYW5kIGFuIGV4aXN0aW5nIGJ1Y2tldCBvYmplY3QgaXMgbm90IHByb3ZpZGVkXG4gIGlmIChwcm9wcy5sb2dTM0FjY2Vzc0xvZ3MgIT09IGZhbHNlICYmICEocHJvcHMuYnVja2V0UHJvcHM/LnNlcnZlckFjY2Vzc0xvZ3NCdWNrZXQpKSB7XG4gICAgLy8gQ3JlYXRlIHRoZSBMb2dnaW5nIEJ1Y2tldFxuICAgIGxldCBsb2dnaW5nQnVja2V0UHJvcHMgPSBEZWZhdWx0UzNQcm9wcygpO1xuXG4gICAgaWYgKHByb3BzLmxvZ2dpbmdCdWNrZXRQcm9wcykge1xuICAgICAgLy8gVXNlciBwcm92aWRlZCBsb2dnaW5nIGJ1Y2tldCBwcm9wc1xuICAgICAgbG9nZ2luZ0J1Y2tldFByb3BzID0gb3ZlcnJpZGVQcm9wcyhsb2dnaW5nQnVja2V0UHJvcHMsIHByb3BzLmxvZ2dpbmdCdWNrZXRQcm9wcyk7XG4gICAgfSBlbHNlIGlmIChwcm9wcy5idWNrZXRQcm9wcz8ucmVtb3ZhbFBvbGljeSkge1xuICAgICAgLy8gSWYgdGhlIGNsaWVudCBleHBsaWNpdGx5IHNwZWNpZmllZCBhIHJlbW92YWwgcG9saWN5IGZvciB0aGUgbWFpbiBidWNrZXQsXG4gICAgICAvLyB0aGVuIHJlcGxpY2F0ZSB0aGF0IHBvbGljeSBvbiB0aGUgbG9nZ2luZyBidWNrZXRcbiAgICAgIGxvZ2dpbmdCdWNrZXRQcm9wcyA9IG92ZXJyaWRlUHJvcHMobG9nZ2luZ0J1Y2tldFByb3BzLCB7IHJlbW92YWxQb2xpY3k6IHByb3BzLmJ1Y2tldFByb3BzLnJlbW92YWxQb2xpY3kgfSk7XG4gICAgfVxuXG4gICAgbG9nZ2luZ0J1Y2tldCA9IGNyZWF0ZVMzQWNjZXNzTG9nZ2luZ0J1Y2tldChzY29wZSwgbG9nZ2luZ0J1Y2tldElkLCBsb2dnaW5nQnVja2V0UHJvcHMpO1xuICB9IGVsc2UgaWYgKHByb3BzLmJ1Y2tldFByb3BzPy5zZXJ2ZXJBY2Nlc3NMb2dzQnVja2V0KSB7XG4gICAgbG9nZ2luZ0J1Y2tldCA9IHByb3BzLmJ1Y2tldFByb3BzPy5zZXJ2ZXJBY2Nlc3NMb2dzQnVja2V0IGFzIHMzLkJ1Y2tldDtcbiAgfVxuXG4gIC8vIEF0dGFjaCB0aGUgRGVmYXVsdCBMaWZlIEN5Y2xlIHBvbGljeSBPTkxZIElGIHRoZSB2ZXJzaW9uaW5nIGlzIEVOQUJMRURcbiAgaWYgKHByb3BzLmJ1Y2tldFByb3BzPy52ZXJzaW9uZWQgPT09IHVuZGVmaW5lZCB8fCBwcm9wcy5idWNrZXRQcm9wcy52ZXJzaW9uZWQpIHtcbiAgICBkZWZhdWx0QnVja2V0UHJvcHMgPSBEZWZhdWx0UzNQcm9wcyhsb2dnaW5nQnVja2V0LCBsaWZlY3ljbGVSdWxlcyk7XG4gIH0gZWxzZSB7XG4gICAgZGVmYXVsdEJ1Y2tldFByb3BzID0gRGVmYXVsdFMzUHJvcHMobG9nZ2luZ0J1Y2tldCk7XG4gIH1cblxuICBjb25zdCBjb21iaW5lZEJ1Y2tldFByb3BzID0gY29uc29saWRhdGVQcm9wcyhkZWZhdWx0QnVja2V0UHJvcHMsIHByb3BzLmJ1Y2tldFByb3BzKTtcblxuICAvLyBOT1NPTkFSICh0eXBlc2NyaXB0OlM2MjgxKSAtIEJsb2NrIFB1YmxpYyBBY2Nlc3MgaXMgc2V0IGJ5IERlZmF1bHRTM1Byb3BzLFxuICAvLyBidXQgU29uYXJxdWJlIGNhbid0IGRldGVjdCBpdFxuICAvLyBJdCBpcyB2ZXJpZmllZCBieSAnczMgYnVja2V0IHdpdGggZGVmYXVsdCBwcm9wcycgaW4gdGhlIHVuaXQgdGVzdHNcbiAgLy8gTk9TT05BUiAodHlwZXNjcmlwdDpTNjI0NSlcbiAgLy8gRW5jcnlwdGlvbiBpcyB0dXJuZWQgb24gaW4gdGhlIGRlZmF1bHQgcHJvcGVydGllcyB0aGF0IFNvbmFycXViZSBkb2Vzbid0IHNlZVxuICAvLyBWZXJpZmllZCBieSB1bml0IHRlc3QgJ3MzIGJ1Y2tldCB3aXRoIGRlZmF1bHQgcHJvcHMnXG4gIC8vIE5PU09OQVIgKHR5cGVzY3JpcHQ6UzYyNDkpXG4gIC8vIGVuZm9yY2VTU0wgIGlzIHR1cm5lZCBvbiBpbiB0aGUgZGVmYXVsdCBwcm9wZXJ0aWVzIHRoYXQgU29uYXJxdWJlIGRvZXNuJ3Qgc2VlXG4gIC8vIFZlcmlmaWVkIGJ5IHVuaXQgdGVzdCAnczMgYnVja2V0IHdpdGggZGVmYXVsdCBwcm9wcydcbiAgLy8gTk9TT05BUiAodHlwZXNjcmlwdDp0eXBlc2NyaXB0OlM2MjQ5KVxuICAvLyB2ZXJzaW9uaW5nIGlzIHR1cm5lZCBvbiBpbiB0aGUgZGVmYXVsdCBwcm9wZXJ0aWVzIHRoYXQgU29uYXJxdWJlIGRvZXNuJ3Qgc2VlXG4gIC8vIFZlcmlmaWVkIGJ5IHVuaXQgdGVzdCAnczMgYnVja2V0IHdpdGggZGVmYXVsdCBwcm9wcydcbiAgY29uc3QgczNCdWNrZXQ6IHMzLkJ1Y2tldCA9IG5ldyBzMy5CdWNrZXQoc2NvcGUsIHJlc29sdmVkQnVja2V0SWQsIGNvbWJpbmVkQnVja2V0UHJvcHMgKTsgLy8gTk9TT05BUlxuXG4gIHJldHVybiB7IGJ1Y2tldDogczNCdWNrZXQsIGxvZ2dpbmdCdWNrZXQgfTtcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkQ2ZuTmFnUzNCdWNrZXROb3RpZmljYXRpb25SdWxlc1RvU3VwcHJlc3Moc3RhY2tSb290OiBjZGsuU3RhY2ssIGxvZ2ljYWxJZDogc3RyaW5nKSB7XG4gIGNvbnN0IG5vdGlmaWNhdGlvbnNSZXNvdXJjZUhhbmRsZXIgPSBzdGFja1Jvb3Qubm9kZS50cnlGaW5kQ2hpbGQobG9naWNhbElkKSBhcyBsYW1iZGEuRnVuY3Rpb247XG4gIGNvbnN0IG5vdGlmaWNhdGlvbnNSZXNvdXJjZUhhbmRsZXJSb2xlUm9sZSA9IG5vdGlmaWNhdGlvbnNSZXNvdXJjZUhhbmRsZXIubm9kZS5maW5kQ2hpbGQoJ1JvbGUnKSBhcyBpYW0uUm9sZTtcbiAgY29uc3Qgbm90aWZpY2F0aW9uc1Jlc291cmNlSGFuZGxlclJvbGVQb2xpY3kgPSBub3RpZmljYXRpb25zUmVzb3VyY2VIYW5kbGVyUm9sZVJvbGUubm9kZS5maW5kQ2hpbGQoJ0RlZmF1bHRQb2xpY3knKSBhcyBpYW0uUG9saWN5O1xuXG4gIC8vIEV4dHJhY3QgdGhlIENmbkZ1bmN0aW9uIGZyb20gdGhlIEZ1bmN0aW9uXG4gIGNvbnN0IGZuUmVzb3VyY2UgPSBub3RpZmljYXRpb25zUmVzb3VyY2VIYW5kbGVyLm5vZGUuZmluZENoaWxkKCdSZXNvdXJjZScpIGFzIGxhbWJkYS5DZm5GdW5jdGlvbjtcbiAgYWRkQ2ZuU3VwcHJlc3NSdWxlcyhmblJlc291cmNlLCBbXG4gICAge1xuICAgICAgaWQ6ICdXNTgnLFxuICAgICAgcmVhc29uOiBgTGFtYmRhIGZ1bmN0aW9ucyBoYXMgdGhlIHJlcXVpcmVkIHBlcm1pc3Npb24gdG8gd3JpdGUgQ2xvdWRXYXRjaCBMb2dzLiBJdCB1c2VzIGN1c3RvbSBwb2xpY3kgaW5zdGVhZCBvZiBhcm46YXdzOmlhbTo6YXdzOnBvbGljeS9zZXJ2aWNlLXJvbGUvQVdTTGFtYmRhQmFzaWNFeGVjdXRpb25Sb2xlIHdpdGggdGlnaHRlciBwZXJtaXNzaW9ucy5gXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogJ1c4OScsXG4gICAgICByZWFzb246IGBUaGlzIGlzIG5vdCBhIHJ1bGUgZm9yIHRoZSBnZW5lcmFsIGNhc2UsIGp1c3QgZm9yIHNwZWNpZmljIHVzZSBjYXNlcy9pbmR1c3RyaWVzYFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6ICdXOTInLFxuICAgICAgcmVhc29uOiBgSW1wb3NzaWJsZSBmb3IgdXMgdG8gZGVmaW5lIHRoZSBjb3JyZWN0IGNvbmN1cnJlbmN5IGZvciBjbGllbnRzYFxuICAgIH1cbiAgXSk7XG5cbiAgLy8gRXh0cmFjdCB0aGUgQ2ZuUG9saWN5IGZyb20gdGhlIGlhbS5Qb2xpY3lcbiAgY29uc3QgcG9saWN5UmVzb3VyY2UgPSBub3RpZmljYXRpb25zUmVzb3VyY2VIYW5kbGVyUm9sZVBvbGljeS5ub2RlLmZpbmRDaGlsZCgnUmVzb3VyY2UnKSBhcyBpYW0uQ2ZuUG9saWN5O1xuICBhZGRDZm5TdXBwcmVzc1J1bGVzKHBvbGljeVJlc291cmNlLCBbXG4gICAge1xuICAgICAgaWQ6ICdXMTInLFxuICAgICAgcmVhc29uOiBgQnVja2V0IHJlc291cmNlIGlzICcqJyBkdWUgdG8gY2lyY3VsYXIgZGVwZW5kZW5jeSB3aXRoIGJ1Y2tldCBhbmQgcm9sZSBjcmVhdGlvbiBhdCB0aGUgc2FtZSB0aW1lYFxuICAgIH1cbiAgXSk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUzNQcm9wcyB7XG4gIHJlYWRvbmx5IGV4aXN0aW5nQnVja2V0T2JqPzogczMuQnVja2V0LFxuICByZWFkb25seSBleGlzdGluZ0J1Y2tldEludGVyZmFjZT86IHMzLklCdWNrZXQsXG4gIHJlYWRvbmx5IGJ1Y2tldFByb3BzPzogczMuQnVja2V0UHJvcHMsXG4gIHJlYWRvbmx5IGV4aXN0aW5nTG9nZ2luZ0J1Y2tldE9iaj86IHMzLklCdWNrZXQ7XG4gIHJlYWRvbmx5IGxvZ2dpbmdCdWNrZXRQcm9wcz86IHMzLkJ1Y2tldFByb3BzO1xuICByZWFkb25seSBsb2dTM0FjY2Vzc0xvZ3M/OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gQ2hlY2tTM1Byb3BzKHByb3BzT2JqZWN0OiBTM1Byb3BzIHwgYW55KSB7XG4gIGxldCBlcnJvck1lc3NhZ2VzID0gJyc7XG4gIGxldCBlcnJvckZvdW5kID0gZmFsc2U7XG5cbiAgaWYgKChwcm9wc09iamVjdC5leGlzdGluZ0J1Y2tldE9iaiB8fCBwcm9wc09iamVjdC5leGlzdGluZ0J1Y2tldEludGVyZmFjZSkgJiYgcHJvcHNPYmplY3QuYnVja2V0UHJvcHMpIHtcbiAgICBlcnJvck1lc3NhZ2VzICs9ICdFcnJvciAtIEVpdGhlciBwcm92aWRlIGJ1Y2tldFByb3BzIG9yIGV4aXN0aW5nQnVja2V0T2JqLCBidXQgbm90IGJvdGguXFxuJztcbiAgICBlcnJvckZvdW5kID0gdHJ1ZTtcbiAgfVxuXG4gIGlmIChwcm9wc09iamVjdC5leGlzdGluZ0xvZ2dpbmdCdWNrZXRPYmogJiYgcHJvcHNPYmplY3QubG9nZ2luZ0J1Y2tldFByb3BzKSB7XG4gICAgZXJyb3JNZXNzYWdlcyArPSAnRXJyb3IgLSBFaXRoZXIgcHJvdmlkZSBleGlzdGluZ0xvZ2dpbmdCdWNrZXRPYmogb3IgbG9nZ2luZ0J1Y2tldFByb3BzLCBidXQgbm90IGJvdGguXFxuJztcbiAgICBlcnJvckZvdW5kID0gdHJ1ZTtcbiAgfVxuXG4gIGlmICgocHJvcHNPYmplY3Q/LmxvZ1MzQWNjZXNzTG9ncyA9PT0gZmFsc2UpICYmIChwcm9wc09iamVjdC5sb2dnaW5nQnVja2V0UHJvcHMgfHwgcHJvcHNPYmplY3QuZXhpc3RpbmdMb2dnaW5nQnVja2V0T2JqKSkge1xuICAgIGVycm9yTWVzc2FnZXMgKz0gJ0Vycm9yIC0gSWYgbG9nUzNBY2Nlc3NMb2dzIGlzIGZhbHNlLCBzdXBwbHlpbmcgbG9nZ2luZ0J1Y2tldFByb3BzIG9yIGV4aXN0aW5nTG9nZ2luZ0J1Y2tldE9iaiBpcyBpbnZhbGlkLlxcbic7XG4gICAgZXJyb3JGb3VuZCA9IHRydWU7XG4gIH1cblxuICBpZiAocHJvcHNPYmplY3QuZXhpc3RpbmdCdWNrZXRPYmogJiYgKHByb3BzT2JqZWN0LmxvZ2dpbmdCdWNrZXRQcm9wcyB8fCBwcm9wc09iamVjdC5sb2dTM0FjY2Vzc0xvZ3MpKSB7XG4gICAgZXJyb3JNZXNzYWdlcyArPSAnRXJyb3IgLSBJZiBleGlzdGluZ0J1Y2tldE9iaiBpcyBwcm92aWRlZCwgc3VwcGx5aW5nIGxvZ2dpbmdCdWNrZXRQcm9wcyBvciBsb2dTM0FjY2Vzc0xvZ3MgaXMgYW4gZXJyb3IuXFxuJztcbiAgICBlcnJvckZvdW5kID0gdHJ1ZTtcbiAgfVxuXG4gIGlmIChwcm9wc09iamVjdD8uYnVja2V0UHJvcHM/LmVuY3J5cHRpb24gPT09IHMzLkJ1Y2tldEVuY3J5cHRpb24uS01TX01BTkFHRUQpIHtcbiAgICBpZiAoIXByb3BzT2JqZWN0LmJ1Y2tldFByb3BzLmJ1Y2tldEtleUVuYWJsZWQpIHtcbiAgICAgIHByaW50V2FybmluZyhcIldoZW4gdXNpbmcgU1NFLUtNUyBCdWNrZXQgRW5jcnlwdGlvbiwgc2V0IGJ1Y2tldEtleUVuYWJsZWQgdG8gdHJ1ZSB0byBsb3dlciBjb3N0c1wiKTtcbiAgICAgIHByaW50V2FybmluZygnaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC91c2VyZ3VpZGUvYnVja2V0LWtleS5odG1sJyk7XG4gICAgfVxuICB9XG5cbiAgaWYgKGVycm9yRm91bmQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JNZXNzYWdlcyk7XG4gIH1cbn1cbiJdfQ==
236
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiczMtYnVja2V0LWhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInMzLWJ1Y2tldC1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7OztHQVdHOztBQTBDSCxrRUErQkM7QUFnQkQsc0VBNkNDO0FBS0Qsd0RBa0NDO0FBV0Qsc0NBNkRDO0FBS0Qsb0dBb0JDO0FBV0Qsb0NBa0NDO0FBblRELHlDQUF5QztBQUV6Qyw2REFBc0Q7QUFDdEQsbUNBQXNIO0FBQ3RILCtDQUFrRDtBQUNsRCw2Q0FBdUM7QUEwQnZDOztHQUVHO0FBQ0gsU0FBZ0IsMkJBQTJCLENBQUMsS0FBZ0IsRUFDMUQsUUFBZ0IsRUFDaEIsa0JBQWtDO0lBRWxDLGlGQUFpRjtJQUNqRixvQ0FBb0M7SUFDcEMsTUFBTSxtQkFBbUIsR0FBRyxJQUFBLHdCQUFnQixFQUFDLElBQUEsbUNBQWMsR0FBRSxFQUFFLGtCQUFrQixDQUFDLENBQUM7SUFFbkYsNEJBQTRCO0lBQzVCLDhCQUE4QjtJQUM5Qiw4RUFBOEU7SUFDOUUscUVBQXFFO0lBQ3JFLDZCQUE2QjtJQUM3QiwrRUFBK0U7SUFDL0UsdURBQXVEO0lBQ3ZELDZCQUE2QjtJQUM3QixnRkFBZ0Y7SUFDaEYsdURBQXVEO0lBQ3ZELHdDQUF3QztJQUN4QywrRUFBK0U7SUFDL0UsdURBQXVEO0lBQ3ZELE1BQU0sYUFBYSxHQUFjLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxVQUFVO0lBRWhHLElBQUEsMkJBQW1CLEVBQUMsYUFBYSxFQUFFO1FBQ2pDO1lBQ0UsRUFBRSxFQUFFLEtBQUs7WUFDVCxNQUFNLEVBQUUsd0VBQXdFO1NBQ2pGO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsT0FBTyxhQUFhLENBQUM7QUFDdkIsQ0FBQztBQWFEOztHQUVHO0FBQ0gsU0FBZ0IsNkJBQTZCLENBQUMsS0FBZ0IsRUFDNUQsUUFBZ0IsRUFDaEIs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NUgsVUFBVSxHQUFHLElBQUksQ0FBQztJQUNwQixDQUFDO0lBRUQsSUFBSSxXQUFXLEVBQUUsV0FBVyxFQUFFLFVBQVUsS0FBSyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDN0UsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUM5QyxJQUFBLG9CQUFZLEVBQUMsbUZBQW1GLENBQUMsQ0FBQztZQUNsRyxJQUFBLG9CQUFZLEVBQUMsdUVBQXVFLENBQUMsQ0FBQztRQUN4RixDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksVUFBVSxFQUFFLENBQUM7UUFDZixNQUFNLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIikuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2VcbiAqICB3aXRoIHRoZSBMaWNlbnNlLiBBIGNvcHkgb2YgdGhlIExpY2Vuc2UgaXMgbG9jYXRlZCBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIG9yIGluIHRoZSAnbGljZW5zZScgZmlsZSBhY2NvbXBhbnlpbmcgdGhpcyBmaWxlLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTXG4gKiAgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcbiAqICBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLypcbiAqICBUaGUgZnVuY3Rpb25zIGZvdW5kIGhlcmUgaW4gdGhlIGNvcmUgbGlicmFyeSBhcmUgZm9yIGludGVybmFsIHVzZSBhbmQgY2FuIGJlIGNoYW5nZWRcbiAqICBvciByZW1vdmVkIG91dHNpZGUgb2YgYSBtYWpvciByZWxlYXNlLiBXZSByZWNvbW1lbmQgYWdhaW5zdCBjYWxsaW5nIHRoZW0gZGlyZWN0bHkgZnJvbSBjbGllbnQgY29kZS5cbiAqL1xuXG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgKiBhcyBzMyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMnO1xuaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IERlZmF1bHRTM1Byb3BzIH0gZnJvbSAnLi9zMy1idWNrZXQtZGVmYXVsdHMnO1xuaW1wb3J0IHsgb3ZlcnJpZGVQcm9wcywgYWRkQ2ZuU3VwcHJlc3NSdWxlcywgY29uc29saWRhdGVQcm9wcywgQ2hlY2tCb29sZWFuV2l0aERlZmF1bHQsIHByaW50V2FybmluZyB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgU3RvcmFnZUNsYXNzIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzJztcbmltcG9ydCB7IER1cmF0aW9uIH0gZnJvbSAnYXdzLWNkay1saWInO1xuLy8gTm90ZTogVG8gZW5zdXJlIENES3YyIGNvbXBhdGliaWxpdHksIGtlZXAgdGhlIGltcG9ydCBzdGF0ZW1lbnQgZm9yIENvbnN0cnVjdCBzZXBhcmF0ZVxuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRTM0J1Y2tldFByb3BzIHtcbiAgLyoqXG4gICAqIFVzZXIgcHJvdmlkZWQgcHJvcHMgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgcHJvcHMgZm9yIHRoZSBTMyBCdWNrZXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gRGVmYXVsdCBwcm9wcyBhcmUgdXNlZFxuICAgKi9cbiAgcmVhZG9ubHkgYnVja2V0UHJvcHM/OiBzMy5CdWNrZXRQcm9wcztcbiAgLyoqXG4gICAqIFVzZXIgcHJvdmlkZWQgcHJvcHMgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgcHJvcHMgZm9yIHRoZSBTMyBMb2dnaW5nIEJ1Y2tldC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBEZWZhdWx0IHByb3BzIGFyZSB1c2VkXG4gICAqL1xuICByZWFkb25seSBsb2dnaW5nQnVja2V0UHJvcHM/OiBzMy5CdWNrZXRQcm9wcztcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gdHVybiBvbiBBY2Nlc3MgTG9ncyBmb3IgUzMuIFVzZXMgYW4gUzMgYnVja2V0IHdpdGggYXNzb2NpYXRlZCBzdG9yYWdlIGNvc3RzLlxuICAgKiBFbmFibGluZyBBY2Nlc3MgTG9nZ2luZyBpcyBhIGJlc3QgcHJhY3RpY2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgbG9nUzNBY2Nlc3NMb2dzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUzNBY2Nlc3NMb2dnaW5nQnVja2V0KHNjb3BlOiBDb25zdHJ1Y3QsXG4gIGJ1Y2tldElkOiBzdHJpbmcsXG4gIGxvZ2dpbmdCdWNrZXRQcm9wczogczMuQnVja2V0UHJvcHMpOiBzMy5CdWNrZXQge1xuXG4gIC8vIEludHJvZHVjZSB0aGUgZGVmYXVsdCBwcm9wcyBzaW5jZSB3ZSBjYW4ndCBiZSBjZXJ0YWluIHRoZSBjYWxsZXIgdXNlZCB0aGVtIGFuZFxuICAvLyB0aGV5IGFyZSBpbXBvcnRhbnQgYmVzdCBwcmFjdGljZXNcbiAgY29uc3QgY29tYmluZWRCdWNrZXRQcm9wcyA9IGNvbnNvbGlkYXRlUHJvcHMoRGVmYXVsdFMzUHJvcHMoKSwgbG9nZ2luZ0J1Y2tldFByb3BzKTtcblxuICAvLyBDcmVhdGUgdGhlIExvZ2dpbmcgQnVja2V0XG4gIC8vIE5PU09OQVIgICh0eXBlc2NyaXB0OlM2MjgxKVxuICAvLyBCbG9jayBQdWJsaWMgQWNjZXNzIGlzIHNldCBieSBEZWZhdWx0UzNQcm9wcywgYnV0IFNvbmFycXViZSBjYW4ndCBkZXRlY3QgaXRcbiAgLy8gSXQgaXMgdmVyaWZpZWQgYnkgJ3MzIGJ1Y2tldCB3aXRoIGRlZmF1bHQgcHJvcHMnIGluIHRoZSB1bml0IHRlc3RzXG4gIC8vIE5PU09OQVIgKHR5cGVzY3JpcHQ6UzYyNDUpXG4gIC8vIEVuY3J5cHRpb24gaXMgdHVybmVkIG9uIGluIHRoZSBkZWZhdWx0IHByb3BlcnRpZXMgdGhhdCBTb25hcnF1YmUgZG9lc24ndCBzZWVcbiAgLy8gVmVyaWZpZWQgYnkgdW5pdCB0ZXN0ICdzMyBidWNrZXQgd2l0aCBkZWZhdWx0IHByb3BzJ1xuICAvLyBOT1NPTkFSICh0eXBlc2NyaXB0OlM2MjQ5KVxuICAvLyBlbmZvcmNlU1NMICBpcyB0dXJuZWQgb24gaW4gdGhlIGRlZmF1bHQgcHJvcGVydGllcyB0aGF0IFNvbmFycXViZSBkb2Vzbid0IHNlZVxuICAvLyBWZXJpZmllZCBieSB1bml0IHRlc3QgJ3MzIGJ1Y2tldCB3aXRoIGRlZmF1bHQgcHJvcHMnXG4gIC8vIE5PU09OQVIgKHR5cGVzY3JpcHQ6dHlwZXNjcmlwdDpTNjI0OSlcbiAgLy8gdmVyc2lvbmluZyBpcyB0dXJuZWQgb24gaW4gdGhlIGRlZmF1bHQgcHJvcGVydGllcyB0aGF0IFNvbmFycXViZSBkb2Vzbid0IHNlZVxuICAvLyBWZXJpZmllZCBieSB1bml0IHRlc3QgJ3MzIGJ1Y2tldCB3aXRoIGRlZmF1bHQgcHJvcHMnXG4gIGNvbnN0IGxvZ2dpbmdCdWNrZXQ6IHMzLkJ1Y2tldCA9IG5ldyBzMy5CdWNrZXQoc2NvcGUsIGJ1Y2tldElkLCBjb21iaW5lZEJ1Y2tldFByb3BzKTsgLy8gTk9TT05BUlxuXG4gIGFkZENmblN1cHByZXNzUnVsZXMobG9nZ2luZ0J1Y2tldCwgW1xuICAgIHtcbiAgICAgIGlkOiAnVzM1JyxcbiAgICAgIHJlYXNvbjogXCJUaGlzIFMzIGJ1Y2tldCBpcyB1c2VkIGFzIHRoZSBhY2Nlc3MgbG9nZ2luZyBidWNrZXQgZm9yIGFub3RoZXIgYnVja2V0XCJcbiAgICB9XG4gIF0pO1xuXG4gIHJldHVybiBsb2dnaW5nQnVja2V0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZUNsb3VkRnJvbnRMb2dnaW5nQnVja2V0UmVxdWVzdCB7XG4gIHJlYWRvbmx5IGxvZ2dpbmdCdWNrZXRQcm9wczogczMuQnVja2V0UHJvcHMsXG4gIHJlYWRvbmx5IHMzQWNjZXNzTG9nQnVja2V0UHJvcHM/OiBzMy5CdWNrZXRQcm9wcyxcbiAgcmVhZG9ubHkgZW5hYmxlUzNBY2Nlc3NMb2dzPzogYm9vbGVhblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZUNsb3VkRnJvbnRMb2dnaW5nQnVja2V0UmVzcG9uc2Uge1xuICByZWFkb25seSBsb2dCdWNrZXQ6IHMzLkJ1Y2tldCxcbiAgcmVhZG9ubHkgczNBY2Nlc3NMb2dCdWNrZXQ/OiBzMy5CdWNrZXRcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ2xvdWRGcm9udExvZ2dpbmdCdWNrZXQoc2NvcGU6IENvbnN0cnVjdCxcbiAgYnVja2V0SWQ6IHN0cmluZyxcbiAgcHJvcHM6IENyZWF0ZUNsb3VkRnJvbnRMb2dnaW5nQnVja2V0UmVxdWVzdCk6IENyZWF0ZUNsb3VkRnJvbnRMb2dnaW5nQnVja2V0UmVzcG9uc2Uge1xuXG4gIGxldCBjbG91ZEZyb250TG9nQWNjZXNzTG9nQnVja2V0OiBzMy5CdWNrZXQgfCB1bmRlZmluZWQ7XG5cbiAgLy8gSW50cm9kdWNlIHRoZSBkZWZhdWx0IHByb3BzIHNpbmNlIHdlIGNhbid0IGJlIGNlcnRhaW4gdGhlIGNhbGxlciB1c2VkIHRoZW0gYW5kXG4gIC8vIHRoZXkgYXJlIGltcG9ydGFudCBiZXN0IHByYWN0aWNlc1xuICBsZXQgY29tYmluZWRCdWNrZXRQcm9wcyA9IGNvbnNvbGlkYXRlUHJvcHMoRGVmYXVsdFMzUHJvcHMoKSwgcHJvcHMubG9nZ2luZ0J1Y2tldFByb3BzKTtcblxuICBpZiAoIXByb3BzLmxvZ2dpbmdCdWNrZXRQcm9wcy5zZXJ2ZXJBY2Nlc3NMb2dzQnVja2V0KSB7XG4gICAgLy8gQ3JlYXRlIGJ1Y2tldCBhbmQgYWRkIHRvIHByb3BzXG4gICAgY29uc3QgY29tYmluZWRTM0xvZ0J1Y2tldFByb3BzID0gY29uc29saWRhdGVQcm9wcyhEZWZhdWx0UzNQcm9wcygpLCBwcm9wcy5zM0FjY2Vzc0xvZ0J1Y2tldFByb3BzKTtcblxuICAgIGlmIChDaGVja0Jvb2xlYW5XaXRoRGVmYXVsdChwcm9wcy5lbmFibGVTM0FjY2Vzc0xvZ3MsIHRydWUpKSB7XG4gICAgICBjbG91ZEZyb250TG9nQWNjZXNzTG9nQnVja2V0ID0gbmV3IHMzLkJ1Y2tldChzY29wZSwgYCR7YnVja2V0SWR9QWNjZXNzTG9nYCwgY29tYmluZWRTM0xvZ0J1Y2tldFByb3BzKTsgLy8gTk9TT05BUlxuICAgICAgY29tYmluZWRCdWNrZXRQcm9wcyA9IG92ZXJyaWRlUHJvcHMoY29tYmluZWRCdWNrZXRQcm9wcywgeyBzZXJ2ZXJBY2Nlc3NMb2dzQnVja2V0OiBjbG91ZEZyb250TG9nQWNjZXNzTG9nQnVja2V0IH0pO1xuICAgICAgYWRkQ2ZuU3VwcHJlc3NSdWxlcyhjbG91ZEZyb250TG9nQWNjZXNzTG9nQnVja2V0LCBbXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogJ1czNScsXG4gICAgICAgICAgcmVhc29uOiBcIlRoaXMgUzMgYnVja2V0IGlzIHVzZWQgYXMgdGhlIGFjY2VzcyBsb2dnaW5nIGJ1Y2tldCBmb3IgYW5vdGhlciBidWNrZXRcIlxuICAgICAgICB9XG4gICAgICBdKTtcbiAgICB9XG4gIH1cblxuICAvLyBDcmVhdGUgdGhlIExvZ2dpbmcgQnVja2V0XG4gIC8vIE5PU09OQVIgICh0eXBlc2NyaXB0OlM2MjgxKVxuICAvLyBCbG9jayBQdWJsaWMgQWNjZXNzIGlzIHNldCBieSBEZWZhdWx0UzNQcm9wcywgYnV0IFNvbmFycXViZSBjYW4ndCBkZXRlY3QgaXRcbiAgLy8gSXQgaXMgdmVyaWZpZWQgYnkgJ3MzIGJ1Y2tldCB3aXRoIGRlZmF1bHQgcHJvcHMnIGluIHRoZSB1bml0IHRlc3RzXG4gIC8vIE5PU09OQVIgKHR5cGVzY3JpcHQ6UzYyNDUpXG4gIC8vIEVuY3J5cHRpb24gaXMgdHVybmVkIG9uIGluIHRoZSBkZWZhdWx0IHByb3BlcnRpZXMgdGhhdCBTb25hcnF1YmUgZG9lc24ndCBzZWVcbiAgLy8gVmVyaWZpZWQgYnkgdW5pdCB0ZXN0ICdzMyBidWNrZXQgd2l0aCBkZWZhdWx0IHByb3BzJ1xuICAvLyBOT1NPTkFSICh0eXBlc2NyaXB0OlM2MjQ5KVxuICAvLyBlbmZvcmNlU1NMICBpcyB0dXJuZWQgb24gaW4gdGhlIGRlZmF1bHQgcHJvcGVydGllcyB0aGF0IFNvbmFycXViZSBkb2Vzbid0IHNlZVxuICAvLyBWZXJpZmllZCBieSB1bml0IHRlc3QgJ3MzIGJ1Y2tldCB3aXRoIGRlZmF1bHQgcHJvcHMnXG4gIC8vIE5PU09OQVIgKHR5cGVzY3JpcHQ6dHlwZXNjcmlwdDpTNjI0OSlcbiAgLy8gdmVyc2lvbmluZyBpcyB0dXJuZWQgb24gaW4gdGhlIGRlZmF1bHQgcHJvcGVydGllcyB0aGF0IFNvbmFycXViZSBkb2Vzbid0IHNlZVxuICAvLyBWZXJpZmllZCBieSB1bml0IHRlc3QgJ3MzIGJ1Y2tldCB3aXRoIGRlZmF1bHQgcHJvcHMnXG4gIGNvbnN0IGNsb3VkZnJvbnRMb2dCdWNrZXQ6IHMzLkJ1Y2tldCA9IG5ldyBzMy5CdWNrZXQoc2NvcGUsIGJ1Y2tldElkLCBjb21iaW5lZEJ1Y2tldFByb3BzKTsgLy8gTk9TT05BUlxuXG4gIHJldHVybiB7XG4gICAgbG9nQnVja2V0OiBjbG91ZGZyb250TG9nQnVja2V0LFxuICAgIHMzQWNjZXNzTG9nQnVja2V0OiBjbG91ZEZyb250TG9nQWNjZXNzTG9nQnVja2V0XG4gIH07XG59XG5cbi8qKlxuICogQGludGVybmFsIFRoaXMgaXMgYW4gaW50ZXJuYWwgY29yZSBmdW5jdGlvbiBhbmQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkgYnkgU29sdXRpb25zIENvbnN0cnVjdHMgY2xpZW50cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUFsYkxvZ2dpbmdCdWNrZXQoc2NvcGU6IENvbnN0cnVjdCxcbiAgYnVja2V0SWQ6IHN0cmluZyxcbiAgbG9nZ2luZ0J1Y2tldFByb3BzOiBzMy5CdWNrZXRQcm9wcyk6IHMzLkJ1Y2tldCB7XG5cbiAgLy8gSW50cm9kdWNlIHRoZSBkZWZhdWx0IHByb3BzIHNpbmNlIHdlIGNhbid0IGJlIGNlcnRhaW4gdGhlIGNhbGxlciB1c2VkIHRoZW0gYW5kXG4gIC8vIHRoZXkgYXJlIGltcG9ydGFudCBiZXN0IHByYWN0aWNlc1xuICBjb25zdCBjb21iaW5lZEJ1Y2tldFByb3BzID0gY29uc29saWRhdGVQcm9wcyhEZWZhdWx0UzNQcm9wcygpLCBsb2dnaW5nQnVja2V0UHJvcHMpO1xuXG4gIC8vIENyZWF0ZSB0aGUgTG9nZ2luZyBCdWNrZXRcbiAgLy8gTk9TT05BUiAodHlwZXNjcmlwdDpTNjI4MSlcbiAgLy8gQmxvY2sgUHVibGljIEFjY2VzcyBpcyBzZXQgYnkgRGVmYXVsdFMzUHJvcHMsIGJ1dCBTb25hcnF1YmUgY2FuJ3QgZGV0ZWN0IGl0XG4gIC8vIEl0IGlzIHZlcmlmaWVkIGJ5ICdzMyBidWNrZXQgd2l0aCBkZWZhdWx0IHByb3BzJyBpbiB0aGUgdW5pdCB0ZXN0c1xuICAvLyBOT1NPTkFSICh0eXBlc2NyaXB0OlM2MjQ1KVxuICAvLyBFbmNyeXB0aW9uIGlzIHR1cm5lZCBvbiBpbiB0aGUgZGVmYXVsdCBwcm9wZXJ0aWVzIHRoYXQgU29uYXJxdWJlIGRvZXNuJ3Qgc2VlXG4gIC8vIFZlcmlmaWVkIGJ5IHVuaXQgdGVzdCAnczMgYnVja2V0IHdpdGggZGVmYXVsdCBwcm9wcydcbiAgLy8gTk9TT05BUiAodHlwZXNjcmlwdDpTNjI0OSlcbiAgLy8gZW5mb3JjZVNTTCAgaXMgdHVybmVkIG9uIGluIHRoZSBkZWZhdWx0IHByb3BlcnRpZXMgdGhhdCBTb25hcnF1YmUgZG9lc24ndCBzZWVcbiAgLy8gVmVyaWZpZWQgYnkgdW5pdCB0ZXN0ICdzMyBidWNrZXQgd2l0aCBkZWZhdWx0IHByb3BzJ1xuICAvLyBOT1NPTkFSICh0eXBlc2NyaXB0OnR5cGVzY3JpcHQ6UzYyNDkpXG4gIC8vIHZlcnNpb25pbmcgaXMgdHVybmVkIG9uIGluIHRoZSBkZWZhdWx0IHByb3BlcnRpZXMgdGhhdCBTb25hcnF1YmUgZG9lc24ndCBzZWVcbiAgLy8gVmVyaWZpZWQgYnkgdW5pdCB0ZXN0ICdzMyBidWNrZXQgd2l0aCBkZWZhdWx0IHByb3BzJ1xuICBjb25zdCBsb2dnaW5nQnVja2V0OiBzMy5CdWNrZXQgPSBuZXcgczMuQnVja2V0KHNjb3BlLCBidWNrZXRJZCwgY29tYmluZWRCdWNrZXRQcm9wcyk7IC8vIE5PU09OQVJcblxuICAvLyBFeHRyYWN0IHRoZSBDZm5CdWNrZXQgZnJvbSB0aGUgbG9nZ2luZ0J1Y2tldFxuICBjb25zdCBsb2dnaW5nQnVja2V0UmVzb3VyY2UgPSBsb2dnaW5nQnVja2V0Lm5vZGUuZmluZENoaWxkKCdSZXNvdXJjZScpIGFzIHMzLkNmbkJ1Y2tldDtcblxuICBhZGRDZm5TdXBwcmVzc1J1bGVzKGxvZ2dpbmdCdWNrZXRSZXNvdXJjZSwgW1xuICAgIHtcbiAgICAgIGlkOiAnVzM1JyxcbiAgICAgIHJlYXNvbjogXCJUaGlzIGlzIGEgbG9nIGJ1Y2tldCBmb3IgYW4gQXBwbGljYXRpb24gTG9hZCBCYWxhbmNlclwiXG4gICAgfVxuICBdKTtcblxuICByZXR1cm4gbG9nZ2luZ0J1Y2tldDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdWlsZFMzQnVja2V0UmVzcG9uc2Uge1xuICByZWFkb25seSBidWNrZXQ6IHMzLkJ1Y2tldCxcbiAgcmVhZG9ubHkgbG9nZ2luZ0J1Y2tldD86IHMzLkJ1Y2tldFxufVxuXG4vKipcbiAqIEBpbnRlcm5hbCBUaGlzIGlzIGFuIGludGVybmFsIGNvcmUgZnVuY3Rpb24gYW5kIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5IGJ5IFNvbHV0aW9ucyBDb25zdHJ1Y3RzIGNsaWVudHMuXG4gKiBAaW50ZXJuYWwgVGhpcyBmdW5jdGlvbmFsaXR5IGlzIGV4cG9zZWQgZXh0ZXJuYWxseSB0aHJvdWdoIGF3cy1jb25zdHJ1Y3RzLWZhY3Rvcmllc1xuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRTM0J1Y2tldChzY29wZTogQ29uc3RydWN0LFxuICBwcm9wczogQnVpbGRTM0J1Y2tldFByb3BzLFxuICBidWNrZXRJZD86IHN0cmluZyk6IEJ1aWxkUzNCdWNrZXRSZXNwb25zZSB7XG5cbiAgLyoqIERlZmF1bHQgTGlmZSBDeWNsZSBwb2xpY3kgdG8gdHJhbnNpdGlvbiBvbGRlciB2ZXJzaW9ucyB0byBHbGFjaWVyIGFmdGVyIDkwIGRheXMgKi9cbiAgY29uc3QgbGlmZWN5Y2xlUnVsZXM6IHMzLkxpZmVjeWNsZVJ1bGVbXSA9IFt7XG4gICAgbm9uY3VycmVudFZlcnNpb25UcmFuc2l0aW9uczogW3tcbiAgICAgIHN0b3JhZ2VDbGFzczogU3RvcmFnZUNsYXNzLkdMQUNJRVIsXG4gICAgICB0cmFuc2l0aW9uQWZ0ZXI6IER1cmF0aW9uLmRheXMoOTApXG4gICAgfV1cbiAgfV07XG5cbiAgLy8gQ3JlYXRlIHRoZSBBcHBsaWNhdGlvbiBCdWNrZXRcbiAgbGV0IGRlZmF1bHRCdWNrZXRQcm9wczogczMuQnVja2V0UHJvcHM7XG4gIGxldCBsb2dnaW5nQnVja2V0O1xuICBjb25zdCByZXNvbHZlZEJ1Y2tldElkID0gYnVja2V0SWQgPyBidWNrZXRJZCArICdTM0J1Y2tldCcgOiAnUzNCdWNrZXQnO1xuICBjb25zdCBsb2dnaW5nQnVja2V0SWQgPSBidWNrZXRJZCA/IGJ1Y2tldElkICsgJ1MzTG9nZ2luZ0J1Y2tldCcgOiAnUzNMb2dnaW5nQnVja2V0JztcblxuICAvLyBJZiBsb2dnaW5nIFMzIGFjY2VzcyBsb2dzIGlzIGVuYWJsZWQvdW5kZWZpbmVkIGFuZCBhbiBleGlzdGluZyBidWNrZXQgb2JqZWN0IGlzIG5vdCBwcm92aWRlZFxuICBpZiAocHJvcHMubG9nUzNBY2Nlc3NMb2dzICE9PSBmYWxzZSAmJiAhKHByb3BzLmJ1Y2tldFByb3BzPy5zZXJ2ZXJBY2Nlc3NMb2dzQnVja2V0KSkge1xuICAgIC8vIENyZWF0ZSB0aGUgTG9nZ2luZyBCdWNrZXRcbiAgICBsZXQgbG9nZ2luZ0J1Y2tldFByb3BzID0gRGVmYXVsdFMzUHJvcHMoKTtcblxuICAgIGlmIChwcm9wcy5sb2dnaW5nQnVja2V0UHJvcHMpIHtcbiAgICAgIC8vIFVzZXIgcHJvdmlkZWQgbG9nZ2luZyBidWNrZXQgcHJvcHNcbiAgICAgIGxvZ2dpbmdCdWNrZXRQcm9wcyA9IG92ZXJyaWRlUHJvcHMobG9nZ2luZ0J1Y2tldFByb3BzLCBwcm9wcy5sb2dnaW5nQnVja2V0UHJvcHMpO1xuICAgIH0gZWxzZSBpZiAocHJvcHMuYnVja2V0UHJvcHM/LnJlbW92YWxQb2xpY3kpIHtcbiAgICAgIC8vIElmIHRoZSBjbGllbnQgZXhwbGljaXRseSBzcGVjaWZpZWQgYSByZW1vdmFsIHBvbGljeSBmb3IgdGhlIG1haW4gYnVja2V0LFxuICAgICAgLy8gdGhlbiByZXBsaWNhdGUgdGhhdCBwb2xpY3kgb24gdGhlIGxvZ2dpbmcgYnVja2V0XG4gICAgICBsb2dnaW5nQnVja2V0UHJvcHMgPSBvdmVycmlkZVByb3BzKGxvZ2dpbmdCdWNrZXRQcm9wcywgeyByZW1vdmFsUG9saWN5OiBwcm9wcy5idWNrZXRQcm9wcy5yZW1vdmFsUG9saWN5IH0pO1xuICAgIH1cblxuICAgIGxvZ2dpbmdCdWNrZXQgPSBjcmVhdGVTM0FjY2Vzc0xvZ2dpbmdCdWNrZXQoc2NvcGUsIGxvZ2dpbmdCdWNrZXRJZCwgbG9nZ2luZ0J1Y2tldFByb3BzKTtcbiAgfSBlbHNlIGlmIChwcm9wcy5idWNrZXRQcm9wcz8uc2VydmVyQWNjZXNzTG9nc0J1Y2tldCkge1xuICAgIGxvZ2dpbmdCdWNrZXQgPSBwcm9wcy5idWNrZXRQcm9wcz8uc2VydmVyQWNjZXNzTG9nc0J1Y2tldCBhcyBzMy5CdWNrZXQ7XG4gIH1cblxuICAvLyBBdHRhY2ggdGhlIERlZmF1bHQgTGlmZSBDeWNsZSBwb2xpY3kgT05MWSBJRiB0aGUgdmVyc2lvbmluZyBpcyBFTkFCTEVEXG4gIGlmIChwcm9wcy5idWNrZXRQcm9wcz8udmVyc2lvbmVkID09PSB1bmRlZmluZWQgfHwgcHJvcHMuYnVja2V0UHJvcHMudmVyc2lvbmVkKSB7XG4gICAgZGVmYXVsdEJ1Y2tldFByb3BzID0gRGVmYXVsdFMzUHJvcHMobG9nZ2luZ0J1Y2tldCwgbGlmZWN5Y2xlUnVsZXMpO1xuICB9IGVsc2Uge1xuICAgIGRlZmF1bHRCdWNrZXRQcm9wcyA9IERlZmF1bHRTM1Byb3BzKGxvZ2dpbmdCdWNrZXQpO1xuICB9XG5cbiAgY29uc3QgY29tYmluZWRCdWNrZXRQcm9wcyA9IGNvbnNvbGlkYXRlUHJvcHMoZGVmYXVsdEJ1Y2tldFByb3BzLCBwcm9wcy5idWNrZXRQcm9wcyk7XG5cbiAgLy8gTk9TT05BUiAodHlwZXNjcmlwdDpTNjI4MSkgLSBCbG9jayBQdWJsaWMgQWNjZXNzIGlzIHNldCBieSBEZWZhdWx0UzNQcm9wcyxcbiAgLy8gYnV0IFNvbmFycXViZSBjYW4ndCBkZXRlY3QgaXRcbiAgLy8gSXQgaXMgdmVyaWZpZWQgYnkgJ3MzIGJ1Y2tldCB3aXRoIGRlZmF1bHQgcHJvcHMnIGluIHRoZSB1bml0IHRlc3RzXG4gIC8vIE5PU09OQVIgKHR5cGVzY3JpcHQ6UzYyNDUpXG4gIC8vIEVuY3J5cHRpb24gaXMgdHVybmVkIG9uIGluIHRoZSBkZWZhdWx0IHByb3BlcnRpZXMgdGhhdCBTb25hcnF1YmUgZG9lc24ndCBzZWVcbiAgLy8gVmVyaWZpZWQgYnkgdW5pdCB0ZXN0ICdzMyBidWNrZXQgd2l0aCBkZWZhdWx0IHByb3BzJ1xuICAvLyBOT1NPTkFSICh0eXBlc2NyaXB0OlM2MjQ5KVxuICAvLyBlbmZvcmNlU1NMICBpcyB0dXJuZWQgb24gaW4gdGhlIGRlZmF1bHQgcHJvcGVydGllcyB0aGF0IFNvbmFycXViZSBkb2Vzbid0IHNlZVxuICAvLyBWZXJpZmllZCBieSB1bml0IHRlc3QgJ3MzIGJ1Y2tldCB3aXRoIGRlZmF1bHQgcHJvcHMnXG4gIC8vIE5PU09OQVIgKHR5cGVzY3JpcHQ6dHlwZXNjcmlwdDpTNjI0OSlcbiAgLy8gdmVyc2lvbmluZyBpcyB0dXJuZWQgb24gaW4gdGhlIGRlZmF1bHQgcHJvcGVydGllcyB0aGF0IFNvbmFycXViZSBkb2Vzbid0IHNlZVxuICAvLyBWZXJpZmllZCBieSB1bml0IHRlc3QgJ3MzIGJ1Y2tldCB3aXRoIGRlZmF1bHQgcHJvcHMnXG4gIGNvbnN0IHMzQnVja2V0OiBzMy5CdWNrZXQgPSBuZXcgczMuQnVja2V0KHNjb3BlLCByZXNvbHZlZEJ1Y2tldElkLCBjb21iaW5lZEJ1Y2tldFByb3BzICk7IC8vIE5PU09OQVJcblxuICByZXR1cm4geyBidWNrZXQ6IHMzQnVja2V0LCBsb2dnaW5nQnVja2V0IH07XG59XG5cbi8qKlxuICogQGludGVybmFsIFRoaXMgaXMgYW4gaW50ZXJuYWwgY29yZSBmdW5jdGlvbiBhbmQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkgYnkgU29sdXRpb25zIENvbnN0cnVjdHMgY2xpZW50cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZENmbk5hZ1MzQnVja2V0Tm90aWZpY2F0aW9uUnVsZXNUb1N1cHByZXNzKHN0YWNrUm9vdDogY2RrLlN0YWNrLCBsb2dpY2FsSWQ6IHN0cmluZykge1xuICBjb25zdCBub3RpZmljYXRpb25zUmVzb3VyY2VIYW5kbGVyID0gc3RhY2tSb290Lm5vZGUudHJ5RmluZENoaWxkKGxvZ2ljYWxJZCkgYXMgbGFtYmRhLkZ1bmN0aW9uO1xuXG4gIC8vIEV4dHJhY3QgdGhlIENmbkZ1bmN0aW9uIGZyb20gdGhlIEZ1bmN0aW9uXG4gIGNvbnN0IGZuUmVzb3VyY2UgPSBub3RpZmljYXRpb25zUmVzb3VyY2VIYW5kbGVyLm5vZGUuZmluZENoaWxkKCdSZXNvdXJjZScpIGFzIGxhbWJkYS5DZm5GdW5jdGlvbjtcbiAgYWRkQ2ZuU3VwcHJlc3NSdWxlcyhmblJlc291cmNlLCBbXG4gICAge1xuICAgICAgaWQ6ICdXNTgnLFxuICAgICAgcmVhc29uOiBgTGFtYmRhIGZ1bmN0aW9ucyBoYXMgdGhlIHJlcXVpcmVkIHBlcm1pc3Npb24gdG8gd3JpdGUgQ2xvdWRXYXRjaCBMb2dzLiBJdCB1c2VzIGN1c3RvbSBwb2xpY3kgaW5zdGVhZCBvZiBhcm46YXdzOmlhbTo6YXdzOnBvbGljeS9zZXJ2aWNlLXJvbGUvQVdTTGFtYmRhQmFzaWNFeGVjdXRpb25Sb2xlIHdpdGggdGlnaHRlciBwZXJtaXNzaW9ucy5gXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogJ1c4OScsXG4gICAgICByZWFzb246IGBUaGlzIGlzIG5vdCBhIHJ1bGUgZm9yIHRoZSBnZW5lcmFsIGNhc2UsIGp1c3QgZm9yIHNwZWNpZmljIHVzZSBjYXNlcy9pbmR1c3RyaWVzYFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6ICdXOTInLFxuICAgICAgcmVhc29uOiBgSW1wb3NzaWJsZSBmb3IgdXMgdG8gZGVmaW5lIHRoZSBjb3JyZWN0IGNvbmN1cnJlbmN5IGZvciBjbGllbnRzYFxuICAgIH1cbiAgXSk7XG5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBTM1Byb3BzIHtcbiAgcmVhZG9ubHkgZXhpc3RpbmdCdWNrZXRPYmo/OiBzMy5CdWNrZXQsXG4gIHJlYWRvbmx5IGV4aXN0aW5nQnVja2V0SW50ZXJmYWNlPzogczMuSUJ1Y2tldCxcbiAgcmVhZG9ubHkgYnVja2V0UHJvcHM/OiBzMy5CdWNrZXRQcm9wcyxcbiAgcmVhZG9ubHkgZXhpc3RpbmdMb2dnaW5nQnVja2V0T2JqPzogczMuSUJ1Y2tldDtcbiAgcmVhZG9ubHkgbG9nZ2luZ0J1Y2tldFByb3BzPzogczMuQnVja2V0UHJvcHM7XG4gIHJlYWRvbmx5IGxvZ1MzQWNjZXNzTG9ncz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBDaGVja1MzUHJvcHMocHJvcHNPYmplY3Q6IFMzUHJvcHMgfCBhbnkpIHtcbiAgbGV0IGVycm9yTWVzc2FnZXMgPSAnJztcbiAgbGV0IGVycm9yRm91bmQgPSBmYWxzZTtcblxuICBpZiAoKHByb3BzT2JqZWN0LmV4aXN0aW5nQnVja2V0T2JqIHx8IHByb3BzT2JqZWN0LmV4aXN0aW5nQnVja2V0SW50ZXJmYWNlKSAmJiBwcm9wc09iamVjdC5idWNrZXRQcm9wcykge1xuICAgIGVycm9yTWVzc2FnZXMgKz0gJ0Vycm9yIC0gRWl0aGVyIHByb3ZpZGUgYnVja2V0UHJvcHMgb3IgZXhpc3RpbmdCdWNrZXRPYmosIGJ1dCBub3QgYm90aC5cXG4nO1xuICAgIGVycm9yRm91bmQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKHByb3BzT2JqZWN0LmV4aXN0aW5nTG9nZ2luZ0J1Y2tldE9iaiAmJiBwcm9wc09iamVjdC5sb2dnaW5nQnVja2V0UHJvcHMpIHtcbiAgICBlcnJvck1lc3NhZ2VzICs9ICdFcnJvciAtIEVpdGhlciBwcm92aWRlIGV4aXN0aW5nTG9nZ2luZ0J1Y2tldE9iaiBvciBsb2dnaW5nQnVja2V0UHJvcHMsIGJ1dCBub3QgYm90aC5cXG4nO1xuICAgIGVycm9yRm91bmQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKChwcm9wc09iamVjdD8ubG9nUzNBY2Nlc3NMb2dzID09PSBmYWxzZSkgJiYgKHByb3BzT2JqZWN0LmxvZ2dpbmdCdWNrZXRQcm9wcyB8fCBwcm9wc09iamVjdC5leGlzdGluZ0xvZ2dpbmdCdWNrZXRPYmopKSB7XG4gICAgZXJyb3JNZXNzYWdlcyArPSAnRXJyb3IgLSBJZiBsb2dTM0FjY2Vzc0xvZ3MgaXMgZmFsc2UsIHN1cHBseWluZyBsb2dnaW5nQnVja2V0UHJvcHMgb3IgZXhpc3RpbmdMb2dnaW5nQnVja2V0T2JqIGlzIGludmFsaWQuXFxuJztcbiAgICBlcnJvckZvdW5kID0gdHJ1ZTtcbiAgfVxuXG4gIGlmIChwcm9wc09iamVjdC5leGlzdGluZ0J1Y2tldE9iaiAmJiAocHJvcHNPYmplY3QubG9nZ2luZ0J1Y2tldFByb3BzIHx8IHByb3BzT2JqZWN0LmxvZ1MzQWNjZXNzTG9ncykpIHtcbiAgICBlcnJvck1lc3NhZ2VzICs9ICdFcnJvciAtIElmIGV4aXN0aW5nQnVja2V0T2JqIGlzIHByb3ZpZGVkLCBzdXBwbHlpbmcgbG9nZ2luZ0J1Y2tldFByb3BzIG9yIGxvZ1MzQWNjZXNzTG9ncyBpcyBhbiBlcnJvci5cXG4nO1xuICAgIGVycm9yRm91bmQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKHByb3BzT2JqZWN0Py5idWNrZXRQcm9wcz8uZW5jcnlwdGlvbiA9PT0gczMuQnVja2V0RW5jcnlwdGlvbi5LTVNfTUFOQUdFRCkge1xuICAgIGlmICghcHJvcHNPYmplY3QuYnVja2V0UHJvcHMuYnVja2V0S2V5RW5hYmxlZCkge1xuICAgICAgcHJpbnRXYXJuaW5nKFwiV2hlbiB1c2luZyBTU0UtS01TIEJ1Y2tldCBFbmNyeXB0aW9uLCBzZXQgYnVja2V0S2V5RW5hYmxlZCB0byB0cnVlIHRvIGxvd2VyIGNvc3RzXCIpO1xuICAgICAgcHJpbnRXYXJuaW5nKCdodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9idWNrZXQta2V5Lmh0bWwnKTtcbiAgICB9XG4gIH1cblxuICBpZiAoZXJyb3JGb3VuZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihlcnJvck1lc3NhZ2VzKTtcbiAgfVxufVxuIl19
package/lib/validation.js CHANGED
@@ -147,6 +147,7 @@ exports.validFargateServiceProps = new Set([
147
147
  'desiredCount',
148
148
  'enableECSManagedTags',
149
149
  'enableExecuteCommand',
150
+ 'forceNewDeployment',
150
151
  'healthCheckGracePeriod',
151
152
  'lifecycleHooks',
152
153
  'linearConfiguration',
@@ -591,4 +592,4 @@ function ValidatePrivateHostedZoneProps(scope, target) {
591
592
  function ValidateCfnWebACLProps(scope, target) {
592
593
  ValidateProps(scope, target, exports.validCfnWebACLProps, 'CfnWebACLProps');
593
594
  }
594
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInZhbGlkYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7OztHQVdHOzs7QUEyZkgsc0NBYUM7QUFHRCxvRkFFQztBQUVELDRFQUVDO0FBRUQsNEVBRUM7QUFFRCxnRkFFQztBQUVELGtFQUVDO0FBRUQsZ0VBRUM7QUFFRCxvREFFQztBQUVELDhEQUVDO0FBRUQsa0VBRUM7QUFFRCx3RUFFQztBQUVELG9EQUVDO0FBRUQsd0VBRUM7QUFFRCxrREFFQztBQUVELGtEQUVDO0FBRUQsMEVBRUM7QUFFRCxvRUFFQztBQUVELHNEQUVDO0FBRUQsZ0VBRUM7QUFFRCw0Q0FFQztBQUVELDRDQUVDO0FBRUQsc0RBRUM7QUFFRCx3RUFFQztBQUVELHdEQUVDO0FBeGxCRCxtQ0FBbUM7QUFDbkMseUVBQXlFO0FBRXpFLDJFQUEyRTtBQUM5RCxRQUFBLGlDQUFpQyxHQUFnQixJQUFJLEdBQUcsQ0FBQztJQUNwRSxpQkFBaUI7SUFDakIsa0JBQWtCO0lBQ2xCLG9CQUFvQjtJQUNwQixtQkFBbUI7SUFDbkIsc0JBQXNCO0lBQ3RCLHlCQUF5QjtJQUN6QixjQUFjO0lBQ2QsYUFBYTtJQUNiLGdCQUFnQjtJQUNoQixlQUFlO0lBQ2Ysa0JBQWtCO0lBQ2xCLHFCQUFxQjtJQUNyQixvQkFBb0I7SUFDcEIsdUJBQXVCO0lBQ3ZCLGVBQWU7SUFDZixLQUFLO0lBQ0wsWUFBWTtJQUNaLGFBQWE7SUFDYixzQ0FBc0M7SUFDdEMseUJBQXlCO0NBQzFCLENBQUMsQ0FBQztBQUVILHVFQUF1RTtBQUMxRCxRQUFBLDZCQUE2QixHQUFnQixJQUFJLEdBQUcsQ0FBQztJQUNoRSxjQUFjO0lBQ2QsZUFBZTtJQUNmLHFCQUFxQjtJQUNyQixjQUFjO0lBQ2Qsc0JBQXNCO0lBQ3RCLE1BQU07SUFDTixNQUFNO0lBQ04sVUFBVTtJQUNWLFdBQVc7Q0FDWixDQUFDLENBQUM7QUFFSCxvREFBb0Q7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Q3ZFLGFBQWEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLCtCQUF1QixFQUFFLG9CQUFvQixDQUFDLENBQUM7QUFDOUUsQ0FBQztBQUVELFNBQWdCLGdCQUFnQixDQUFDLEtBQWdCLEVBQUUsTUFBWTtJQUM3RCxhQUFhLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxxQkFBYSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQzFELENBQUM7QUFFRCxTQUFnQixnQkFBZ0IsQ0FBQyxLQUFnQixFQUFFLE1BQVk7SUFDN0QsYUFBYSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUscUJBQWEsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUMxRCxDQUFDO0FBRUQsU0FBZ0IscUJBQXFCLENBQUMsS0FBZ0IsRUFBRSxNQUFZO0lBQ2xFLGFBQWEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLDBCQUFrQixFQUFFLGVBQWUsQ0FBQyxDQUFDO0FBQ3BFLENBQUM7QUFFRCxTQUFnQiw4QkFBOEIsQ0FBQyxLQUFnQixFQUFFLE1BQVk7SUFDM0UsYUFBYSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsbUNBQTJCLEVBQUUsd0JBQXdCLENBQUMsQ0FBQztBQUN0RixDQUFDO0FBRUQsU0FBZ0Isc0JBQXNCLENBQUMsS0FBZ0IsRUFBRSxNQUFZO0lBQ25FLGFBQWEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLDJCQUFtQixFQUFFLGdCQUFnQixDQUFDLENBQUM7QUFDdEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4gKiAgd2l0aCB0aGUgTGljZW5zZS4gQSBjb3B5IG9mIHRoZSBMaWNlbnNlIGlzIGxvY2F0ZWQgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBvciBpbiB0aGUgJ2xpY2Vuc2UnIGZpbGUgYWNjb21wYW55aW5nIHRoaXMgZmlsZS4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFU1xuICogIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXG4gKiAgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8vIFRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBieSBzY3JpcHRzL2dlbmVyYXRlLXZhbGlkYXRpb24udHNcbi8vIERvIG5vdCBlZGl0IG1hbnVhbGx5IC0gcnVuICducG0gcnVuIGdlbmVyYXRlOnZhbGlkYXRpb24nIGZyb20gdGhlIHNvdXJjZS9zY3JpcHRzIGZvbGRlciB0byByZWdlbmVyYXRlXG4vL1xuLy8gVGhpcyBmaWxlIGVuY29kZXMgdGhlIENESyBQcm9wcyBpbnRlcmZhY2UgZGVmaW5pdGlvbnMgaW50byBkYXRhIHN0cnVjdHVyZXMgdGhhdFxuLy8gY2FuIGJlIHVzZWQgYXQgcnVudGltZSB0byB2YWxpZGF0ZSB0aGUgYXR0cmlidXRlcyBvZiBpbmNvbWluZyBDREsgUHJvcHMgb2JqZWN0cyxcbi8vIHNpbmNlIHRoZSB1c2Ugb2YgfCBhbnkgaW4gdGhlIGRlZmluaXRpb25zIHByZXZlbnRzIHZhbGlkYXRpb24gYXQgdHJhbnNwaWxhdGlvbiB0aW1lXG4vL1xuLy8gSXQgYWxzbyBwcm92aWRlcyBmdW5jdGlvbnMgdGhhdCB3aWxsIHBlcmZvcm0gdGhlIHZhbGlkYXRpb24gb24gZWFjaCBQcm9wcyBvYmplY3QgdHlwZVxuLy8gcGFyc2VkXG5cbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IERJU0FCTEVfUFJPUEVSVFlfVkFMSURBVElPTiB9IGZyb20gJy4vY29uc3RydWN0cy1mZWF0dXJlLWZsYWdzJztcblxuLy8gQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJQcm9wcyBmcm9tIGF3cy1jZGstbGliL2F3cy1lbGFzdGljbG9hZGJhbGFuY2luZ3YyXG5leHBvcnQgY29uc3QgdmFsaWRBcHBsaWNhdGlvbkxvYWRCYWxhbmNlclByb3BzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoW1xuICAnY2xpZW50S2VlcEFsaXZlJyxcbiAgJ2Nyb3NzWm9uZUVuYWJsZWQnLFxuICAnZGVsZXRpb25Qcm90ZWN0aW9uJyxcbiAgJ2RlbnlBbGxJZ3dUcmFmZmljJyxcbiAgJ2Rlc3luY01pdGlnYXRpb25Nb2RlJyxcbiAgJ2Ryb3BJbnZhbGlkSGVhZGVyRmllbGRzJyxcbiAgJ2h0dHAyRW5hYmxlZCcsXG4gICdpZGxlVGltZW91dCcsXG4gICdpbnRlcm5ldEZhY2luZycsXG4gICdpcEFkZHJlc3NUeXBlJyxcbiAgJ2xvYWRCYWxhbmNlck5hbWUnLFxuICAnbWluaW11bUNhcGFjaXR5VW5pdCcsXG4gICdwcmVzZXJ2ZUhvc3RIZWFkZXInLFxuICAncHJlc2VydmVYZmZDbGllbnRQb3J0JyxcbiAgJ3NlY3VyaXR5R3JvdXAnLFxuICAndnBjJyxcbiAgJ3ZwY1N1Ym5ldHMnLFxuICAnd2FmRmFpbE9wZW4nLFxuICAneEFtem5UbHNWZXJzaW9uQW5kQ2lwaGVyU3VpdGVIZWFkZXJzJyxcbiAgJ3hmZkhlYWRlclByb2Nlc3NpbmdNb2RlJ1xuXSk7XG5cbi8vIEFwcGxpY2F0aW9uTGlzdGVuZXJQcm9wcyBmcm9tIGF3cy1jZGstbGliL2F3cy1lbGFzdGljbG9hZGJhbGFuY2luZ3YyXG5leHBvcnQgY29uc3QgdmFsaWRBcHBsaWNhdGlvbkxpc3RlbmVyUHJvcHM6IFNldDxzdHJpbmc+ID0gbmV3IFNldChbXG4gICdjZXJ0aWZpY2F0ZXMnLFxuICAnZGVmYXVsdEFjdGlvbicsXG4gICdkZWZhdWx0VGFyZ2V0R3JvdXBzJyxcbiAgJ2xvYWRCYWxhbmNlcicsXG4gICdtdXR1YWxBdXRoZW50aWNhdGlvbicsXG4gICdvcGVuJyxcbiAgJ3BvcnQnLFxuICAncHJvdG9jb2wnLFxuICAnc3NsUG9saWN5J1xuXSk7XG5cbi8vIENvbnRhaW5lckRlZmluaXRpb25Qcm9wcyBmcm9tIGF3cy1jZGstbGliL2F3cy1lY3NcbmV4cG9ydCBjb25zdCB2YWxpZENvbnRhaW5lckRlZmluaXRpb25Qcm9wczogU2V0PHN0cmluZz4gPSBuZXcgU2V0KFtcbiAgJ2NvbW1hbmQnLFxuICAnY29udGFpbmVyTmFtZScsXG4gICdjcHUnLFxuICAnY3JlZGVudGlhbFNwZWNzJyxcbiAgJ2Rpc2FibGVOZXR3b3JraW5nJyxcbiAgJ2Ruc1NlYXJjaERvbWFpbnMnLFxuICAnZG5zU2VydmVycycsXG4gICdkb2NrZXJMYWJlbHMnLFxuICAnZG9ja2VyU2VjdXJpdHlPcHRpb25zJyxcbiAgJ2VuYWJsZVJlc3RhcnRQb2xpY3knLFxuICAnZW50cnlQb2ludCcsXG4gICdlbnZpcm9ubWVudCcsXG4gICdlbnZpcm9ubWVudEZpbGVzJyxcbiAgJ2Vzc2VudGlhbCcsXG4gICdleHRyYUhvc3RzJyxcbiAgJ2dwdUNvdW50JyxcbiAgJ2hlYWx0aENoZWNrJyxcbiAgJ2hvc3RuYW1lJyxcbiAgJ2ltYWdlJyxcbiAgJ2luZmVyZW5jZUFjY2VsZXJhdG9yUmVzb3VyY2VzJyxcbiAgJ2ludGVyYWN0aXZlJyxcbiAgJ2xpbnV4UGFyYW1ldGVycycsXG4gICdsb2dnaW5nJyxcbiAgJ21lbW9yeUxpbWl0TWlCJyxcbiAgJ21lbW9yeVJlc2VydmF0aW9uTWlCJyxcbiAgJ3BvcnRNYXBwaW5ncycsXG4gICdwcml2aWxlZ2VkJyxcbiAgJ3BzZXVkb1Rlcm1pbmFsJyxcbiAgJ3JlYWRvbmx5Um9vdEZpbGVzeXN0ZW0nLFxuICAncmVzdGFydEF0dGVtcHRQZXJpb2QnLFxuICAncmVzdGFydElnbm9yZWRFeGl0Q29kZXMnLFxuICAnc2VjcmV0cycsXG4gICdzdGFydFRpbWVvdXQnLFxuICAnc3RvcFRpbWVvdXQnLFxuICAnc3lzdGVtQ29udHJvbHMnLFxuICAndGFza0RlZmluaXRpb24nLFxuICAndWxpbWl0cycsXG4gICd1c2VyJyxcbiAgJ3ZlcnNpb25Db25zaXN0ZW5jeScsXG4gICd3b3JraW5nRGlyZWN0b3J5J1xuXSk7XG5cbi8vIEZhcmdhdGVUYXNrRGVmaW5pdGlvblByb3BzIGZyb20gYXdzLWNkay1saWIvYXdzLWVjc1xuZXhwb3J0IGNvbnN0IHZhbGlkRmFyZ2F0ZVRhc2tEZWZpbml0aW9uUHJvcHM6IFNldDxzdHJpbmc+ID0gbmV3IFNldChbXG4gICdjcHUnLFxuICAnZW5hYmxlRmF1bHRJbmplY3Rpb24nLFxuICAnZXBoZW1lcmFsU3RvcmFnZUdpQicsXG4gICdleGVjdXRpb25Sb2xlJyxcbiAgJ2ZhbWlseScsXG4gICdtZW1vcnlMaW1pdE1pQicsXG4gICdwaWRNb2RlJyxcbiAgJ3Byb3h5Q29uZmlndXJhdGlvbicsXG4gICdydW50aW1lUGxhdGZvcm0nLFxuICAndGFza1JvbGUnLFxuICAndm9sdW1lcydcbl0pO1xuXG4vLyBGYXJnYXRlU2VydmljZVByb3BzIGZyb20gYXdzLWNkay1saWIvYXdzLWVjc1xuZXhwb3J0IGNvbnN0IHZhbGlkRmFyZ2F0ZVNlcnZpY2VQcm9wczogU2V0PHN0cmluZz4gPSBuZXcgU2V0KFtcbiAgJ2Fzc2lnblB1YmxpY0lwJyxcbiAgJ2F2YWlsYWJpbGl0eVpvbmVSZWJhbGFuY2luZycsXG4gICdiYWtlVGltZScsXG4gICdjYW5hcnlDb25maWd1cmF0aW9uJyxcbiAgJ2NhcGFjaXR5UHJvdmlkZXJTdHJhdGVnaWVzJyxcbiAgJ2NpcmN1aXRCcmVha2VyJyxcbiAgJ2Nsb3VkTWFwT3B0aW9ucycsXG4gICdjbHVzdGVyJyxcbiAgJ2RlcGxveW1lbnRBbGFybXMnLFxuICAnZGVwbG95bWVudENvbnRyb2xsZXInLFxuICAnZGVwbG95bWVudFN0cmF0ZWd5JyxcbiAgJ2Rlc2lyZWRDb3VudCcsXG4gICdlbmFibGVFQ1NNYW5hZ2VkVGFncycsXG4gICdlbmFibGVFeGVjdXRlQ29tbWFuZCcsXG4gICdoZWFsdGhDaGVja0dyYWNlUGVyaW9kJyxcbiAgJ2xpZmVjeWNsZUhvb2tzJyxcbiAgJ2xpbmVhckNvbmZpZ3VyYXRpb24nLFxuICAnbWF4SGVhbHRoeVBlcmNlbnQnLFxuICAnbWluSGVhbHRoeVBlcmNlbnQnLFxuICAncGxhdGZvcm1WZXJzaW9uJyxcbiAgJ3Byb3BhZ2F0ZVRhZ3MnLFxuICAnc2VjdXJpdHlHcm91cHMnLFxuICAnc2VydmljZUNvbm5lY3RDb25maWd1cmF0aW9uJyxcbiAgJ3NlcnZpY2VOYW1lJyxcbiAgJ3Rhc2tEZWZpbml0aW9uJyxcbiAgJ3Rhc2tEZWZpbml0aW9uUmV2aXNpb24nLFxuICAndm9sdW1lQ29uZmlndXJhdGlvbnMnLFxuICAndnBjU3VibmV0cydcbl0pO1xuXG4vLyBMYW1iZGFSZXN0QXBpUHJvcHMgZnJvbSBhd3MtY2RrLWxpYi9hd3MtYXBpZ2F0ZXdheVxuZXhwb3J0IGNvbnN0IHZhbGlkTGFtYmRhUmVzdEFwaVByb3BzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoW1xuICAnYXBpS2V5U291cmNlVHlwZScsXG4gICdiaW5hcnlNZWRpYVR5cGVzJyxcbiAgJ2Nsb25lRnJvbScsXG4gICdjbG91ZFdhdGNoUm9sZScsXG4gICdjbG91ZFdhdGNoUm9sZVJlbW92YWxQb2xpY3knLFxuICAnZGVmYXVsdENvcnNQcmVmbGlnaHRPcHRpb25zJyxcbiAgJ2RlZmF1bHRJbnRlZ3JhdGlvbicsXG4gICdkZWZhdWx0TWV0aG9kT3B0aW9ucycsXG4gICdkZXBsb3knLFxuICAnZGVwbG95T3B0aW9ucycsXG4gICdkZXNjcmlwdGlvbicsXG4gICdkaXNhYmxlRXhlY3V0ZUFwaUVuZHBvaW50JyxcbiAgJ2RvbWFpbk5hbWUnLFxuICAnZW5kcG9pbnRDb25maWd1cmF0aW9uJyxcbiAgJ2VuZHBvaW50RXhwb3J0TmFtZScsXG4gICdlbmRwb2ludFR5cGVzJyxcbiAgJ2ZhaWxPbldhcm5pbmdzJyxcbiAgJ2hhbmRsZXInLFxuICAnaW50ZWdyYXRpb25PcHRpb25zJyxcbiAgJ21pbkNvbXByZXNzaW9uU2l6ZScsXG4gICdtaW5pbXVtQ29tcHJlc3Npb25TaXplJyxcbiAgJ3BhcmFtZXRlcnMnLFxuICAncG9saWN5JyxcbiAgJ3Byb3h5JyxcbiAgJ3Jlc3RBcGlOYW1lJyxcbiAgJ3JldGFpbkRlcGxveW1lbnRzJ1xuXSk7XG5cbi8vIFJlc3RBcGlQcm9wcyBmcm9tIGF3cy1jZGstbGliL2F3cy1hcGlnYXRld2F5XG5leHBvcnQgY29uc3QgdmFsaWRSZXN0QXBpUHJvcHM6IFNldDxzdHJpbmc+ID0gbmV3IFNldChbXG4gICdhcGlLZXlTb3VyY2VUeXBlJyxcbiAgJ2JpbmFyeU1lZGlhVHlwZXMnLFxuICAnY2xvbmVGcm9tJyxcbiAgJ2Nsb3VkV2F0Y2hSb2xlJyxcbiAgJ2Nsb3VkV2F0Y2hSb2xlUmVtb3ZhbFBvbGljeScsXG4gICdkZWZhdWx0Q29yc1ByZWZsaWdodE9wdGlvbnMnLFxuICAnZGVmYXVsdEludGVncmF0aW9uJyxcbiAgJ2RlZmF1bHRNZXRob2RPcHRpb25zJyxcbiAgJ2RlcGxveScsXG4gICdkZXBsb3lPcHRpb25zJyxcbiAgJ2Rlc2NyaXB0aW9uJyxcbiAgJ2Rpc2FibGVFeGVjdXRlQXBpRW5kcG9pbnQnLFxuICAnZG9tYWluTmFtZScsXG4gICdlbmRwb2ludENvbmZpZ3VyYXRpb24nLFxuICAnZW5kcG9pbnRFeHBvcnROYW1lJyxcbiAgJ2VuZHBvaW50VHlwZXMnLFxuICAnZmFpbE9uV2FybmluZ3MnLFxuICAnbWluQ29tcHJlc3Npb25TaXplJyxcbiAgJ21pbmltdW1Db21wcmVzc2lvblNpemUnLFxuICAncGFyYW1ldGVycycsXG4gICdwb2xpY3knLFxuICAncmVzdEFwaU5hbWUnLFxuICAncmV0YWluRGVwbG95bWVudHMnXG5dKTtcblxuLy8gRGlzdHJpYnV0aW9uUHJvcHMgZnJvbSBhd3MtY2RrLWxpYi9hd3MtY2xvdWRmcm9udFxuZXhwb3J0IGNvbnN0IHZhbGlkRGlzdHJpYnV0aW9uUHJvcHM6IFNldDxzdHJpbmc+ID0gbmV3IFNldChbXG4gICdhZGRpdGlvbmFsQmVoYXZpb3JzJyxcbiAgJ2NlcnRpZmljYXRlJyxcbiAgJ2NvbW1lbnQnLFxuICAnZGVmYXVsdEJlaGF2aW9yJyxcbiAgJ2RlZmF1bHRSb290T2JqZWN0JyxcbiAgJ2RvbWFpbk5hbWVzJyxcbiAgJ2VuYWJsZUlwdjYnLFxuICAnZW5hYmxlTG9nZ2luZycsXG4gICdlbmFibGVkJyxcbiAgJ2Vycm9yUmVzcG9uc2VzJyxcbiAgJ2dlb1Jlc3RyaWN0aW9uJyxcbiAgJ2h0dHBWZXJzaW9uJyxcbiAgJ2xvZ0J1Y2tldCcsXG4gICdsb2dGaWxlUHJlZml4JyxcbiAgJ2xvZ0luY2x1ZGVzQ29va2llcycsXG4gICdtaW5pbXVtUHJvdG9jb2xWZXJzaW9uJyxcbiAgJ3ByaWNlQ2xhc3MnLFxuICAncHVibGlzaEFkZGl0aW9uYWxNZXRyaWNzJyxcbiAgJ3NzbFN1cHBvcnRNZXRob2QnLFxuICAnd2ViQWNsSWQnXG5dKTtcblxuLy8gVXNlclBvb2xDbGllbnRQcm9wcyBmcm9tIGF3cy1jZGstbGliL2F3cy1jb2duaXRvXG5leHBvcnQgY29uc3QgdmFsaWRVc2VyUG9vbENsaWVudFByb3BzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoW1xuICAnYWNjZXNzVG9rZW5WYWxpZGl0eScsXG4gICdhbmFseXRpY3MnLFxuICAnYXV0aEZsb3dzJyxcbiAgJ2F1dGhTZXNzaW9uVmFsaWRpdHknLFxuICAnZGlzYWJsZU9BdXRoJyxcbiAgJ2VuYWJsZVByb3BhZ2F0ZUFkZGl0aW9uYWxVc2VyQ29udGV4dERhdGEnLFxuICAnZW5hYmxlVG9rZW5SZXZvY2F0aW9uJyxcbiAgJ2dlbmVyYXRlU2VjcmV0JyxcbiAgJ2lkVG9rZW5WYWxpZGl0eScsXG4gICdvQXV0aCcsXG4gICdwcmV2ZW50VXNlckV4aXN0ZW5jZUVycm9ycycsXG4gICdyZWFkQXR0cmlidXRlcycsXG4gICdyZWZyZXNoVG9rZW5Sb3RhdGlvbkdyYWNlUGVyaW9kJyxcbiAgJ3JlZnJlc2hUb2tlblZhbGlkaXR5JyxcbiAgJ3N1cHBvcnRlZElkZW50aXR5UHJvdmlkZXJzJyxcbiAgJ3VzZXJQb29sJyxcbiAgJ3VzZXJQb29sQ2xpZW50TmFtZScsXG4gICd3cml0ZUF0dHJpYnV0ZXMnXG5dKTtcblxuLy8gRHluYW1vRXZlbnRTb3VyY2VQcm9wcyBmcm9tIGF3cy1jZGstbGliL2F3cy1sYW1iZGEtZXZlbnQtc291cmNlc1xuZXhwb3J0IGNvbnN0IHZhbGlkRHluYW1vRXZlbnRTb3VyY2VQcm9wczogU2V0PHN0cmluZz4gPSBuZXcgU2V0KFtcbiAgJ2JhdGNoU2l6ZScsXG4gICdiaXNlY3RCYXRjaE9uRXJyb3InLFxuICAnZW5hYmxlZCcsXG4gICdmaWx0ZXJFbmNyeXB0aW9uJyxcbiAgJ2ZpbHRlcnMnLFxuICAnbWF4QmF0Y2hpbmdXaW5kb3cnLFxuICAnbWF4UmVjb3JkQWdlJyxcbiAgJ21ldHJpY3NDb25maWcnLFxuICAnb25GYWlsdXJlJyxcbiAgJ3BhcmFsbGVsaXphdGlvbkZhY3RvcicsXG4gICdwcm92aXNpb25lZFBvbGxlckNvbmZpZycsXG4gICdyZXBvcnRCYXRjaEl0ZW1GYWlsdXJlcycsXG4gICdyZXRyeUF0dGVtcHRzJyxcbiAgJ3N0YXJ0aW5nUG9zaXRpb24nLFxuICAndHVtYmxpbmdXaW5kb3cnXG5dKTtcblxuLy8gQ2ZuUGlwZVByb3BzIGZyb20gYXdzLWNkay1saWIvYXdzLXBpcGVzXG5leHBvcnQgY29uc3QgdmFsaWRDZm5QaXBlUHJvcHM6IFNldDxzdHJpbmc+ID0gbmV3IFNldChbXG4gICdkZXNjcmlwdGlvbicsXG4gICdkZXNpcmVkU3RhdGUnLFxuICAnZW5yaWNobWVudCcsXG4gICdlbnJpY2htZW50UGFyYW1ldGVycycsXG4gICdrbXNLZXlJZGVudGlmaWVyJyxcbiAgJ2xvZ0NvbmZpZ3VyYXRpb24nLFxuICAnbmFtZScsXG4gICdyb2xlQXJuJyxcbiAgJ3NvdXJjZScsXG4gICdzb3VyY2VQYXJhbWV0ZXJzJyxcbiAgJ3RhZ3MnLFxuICAndGFyZ2V0JyxcbiAgJ3RhcmdldFBhcmFtZXRlcnMnXG5dKTtcblxuLy8gQ2ZuRGVsaXZlcnlTdHJlYW1Qcm9wcyBmcm9tIGF3cy1jZGstbGliL2F3cy1raW5lc2lzZmlyZWhvc2VcbmV4cG9ydCBjb25zdCB2YWxpZENmbkRlbGl2ZXJ5U3RyZWFtUHJvcHM6IFNldDxzdHJpbmc+ID0gbmV3IFNldChbXG4gICdhbWF6b25PcGVuU2VhcmNoU2VydmVybGVzc0Rlc3RpbmF0aW9uQ29uZmlndXJhdGlvbicsXG4gICdhbWF6b25vcGVuc2VhcmNoc2VydmljZURlc3RpbmF0aW9uQ29uZmlndXJhdGlvbicsXG4gICdkYXRhYmFzZVNvdXJjZUNvbmZpZ3VyYXRpb24nLFxuICAnZGVsaXZlcnlTdHJlYW1FbmNyeXB0aW9uQ29uZmlndXJhdGlvbklucHV0JyxcbiAgJ2RlbGl2ZXJ5U3RyZWFtTmFtZScsXG4gICdkZWxpdmVyeVN0cmVhbVR5cGUnLFxuICAnZGlyZWN0UHV0U291cmNlQ29uZmlndXJhdGlvbicsXG4gICdlbGFzdGljc2VhcmNoRGVzdGluYXRpb25Db25maWd1cmF0aW9uJyxcbiAgJ2V4dGVuZGVkUzNEZXN0aW5hdGlvbkNvbmZpZ3VyYXRpb24nLFxuICAnaHR0cEVuZHBvaW50RGVzdGluYXRpb25Db25maWd1cmF0aW9uJyxcbiAgJ2ljZWJlcmdEZXN0aW5hdGlvbkNvbmZpZ3VyYXRpb24nLFxuICAna2luZXNpc1N0cmVhbVNvdXJjZUNvbmZpZ3VyYXRpb24nLFxuICAnbXNrU291cmNlQ29uZmlndXJhdGlvbicsXG4gICdyZWRzaGlmdERlc3RpbmF0aW9uQ29uZmlndXJhdGlvbicsXG4gICdzM0Rlc3RpbmF0aW9uQ29uZmlndXJhdGlvbicsXG4gICdzbm93Zmxha2VEZXN0aW5hdGlvbkNvbmZpZ3VyYXRpb24nLFxuICAnc3BsdW5rRGVzdGluYXRpb25Db25maWd1cmF0aW9uJyxcbiAgJ3RhZ3MnXG5dKTtcblxuLy8gU3RyZWFtUHJvcHMgZnJvbSBhd3MtY2RrLWxpYi9hd3Mta2luZXNpc1xuZXhwb3J0IGNvbnN0IHZhbGlkU3RyZWFtUHJvcHM6IFNldDxzdHJpbmc+ID0gbmV3IFNldChbXG4gICdlbmNyeXB0aW9uJyxcbiAgJ2VuY3J5cHRpb25LZXknLFxuICAncmVtb3ZhbFBvbGljeScsXG4gICdyZXRlbnRpb25QZXJpb2QnLFxuICAnc2hhcmRDb3VudCcsXG4gICdzaGFyZExldmVsTWV0cmljcycsXG4gICdzdHJlYW1Nb2RlJyxcbiAgJ3N0cmVhbU5hbWUnXG5dKTtcblxuLy8gQ2ZuSm9iUHJvcHMgZnJvbSBhd3MtY2RrLWxpYi9hd3MtZ2x1ZVxuZXhwb3J0IGNvbnN0IHZhbGlkQ2ZuSm9iUHJvcHM6IFNldDxzdHJpbmc+ID0gbmV3IFNldChbXG4gICdhbGxvY2F0ZWRDYXBhY2l0eScsXG4gICdjb21tYW5kJyxcbiAgJ2Nvbm5lY3Rpb25zJyxcbiAgJ2RlZmF1bHRBcmd1bWVudHMnLFxuICAnZGVzY3JpcHRpb24nLFxuICAnZXhlY3V0aW9uQ2xhc3MnLFxuICAnZXhlY3V0aW9uUHJvcGVydHknLFxuICAnZ2x1ZVZlcnNpb24nLFxuICAnam9iTW9kZScsXG4gICdqb2JSdW5RdWV1aW5nRW5hYmxlZCcsXG4gICdsb2dVcmknLFxuICAnbWFpbnRlbmFuY2VXaW5kb3cnLFxuICAnbWF4Q2FwYWNpdHknLFxuICAnbWF4UmV0cmllcycsXG4gICduYW1lJyxcbiAgJ25vbk92ZXJyaWRhYmxlQXJndW1lbnRzJyxcbiAgJ25vdGlmaWNhdGlvblByb3BlcnR5JyxcbiAgJ251bWJlck9mV29ya2VycycsXG4gICdyb2xlJyxcbiAgJ3NlY3VyaXR5Q29uZmlndXJhdGlvbicsXG4gICd0YWdzJyxcbiAgJ3RpbWVvdXQnLFxuICAnd29ya2VyVHlwZSdcbl0pO1xuXG4vLyBLaW5lc2lzRXZlbnRTb3VyY2VQcm9wcyBmcm9tIGF3cy1jZGstbGliL2F3cy1sYW1iZGEtZXZlbnQtc291cmNlc1xuZXhwb3J0IGNvbnN0IHZhbGlkS2luZXNpc0V2ZW50U291cmNlUHJvcHM6IFNldDxzdHJpbmc+ID0gbmV3IFNldChbXG4gICdiYXRjaFNpemUnLFxuICAnYmlzZWN0QmF0Y2hPbkVycm9yJyxcbiAgJ2VuYWJsZWQnLFxuICAnZmlsdGVyRW5jcnlwdGlvbicsXG4gICdmaWx0ZXJzJyxcbiAgJ21heEJhdGNoaW5nV2luZG93JyxcbiAgJ21heFJlY29yZEFnZScsXG4gICdtZXRyaWNzQ29uZmlnJyxcbiAgJ29uRmFpbHVyZScsXG4gICdwYXJhbGxlbGl6YXRpb25GYWN0b3InLFxuICAncHJvdmlzaW9uZWRQb2xsZXJDb25maWcnLFxuICAncmVwb3J0QmF0Y2hJdGVtRmFpbHVyZXMnLFxuICAncmV0cnlBdHRlbXB0cycsXG4gICdzdGFydGluZ1Bvc2l0aW9uJyxcbiAgJ3N0YXJ0aW5nUG9zaXRpb25UaW1lc3RhbXAnLFxuICAndHVtYmxpbmdXaW5kb3cnXG5dKTtcblxuLy8gQ2ZuQ2FjaGVDbHVzdGVyUHJvcHMgZnJvbSBhd3MtY2RrLWxpYi9hd3MtZWxhc3RpY2FjaGVcbmV4cG9ydCBjb25zdCB2YWxpZENmbkNhY2hlQ2x1c3RlclByb3BzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoW1xuICAnYXV0b01pbm9yVmVyc2lvblVwZ3JhZGUnLFxuICAnYXpNb2RlJyxcbiAgJ2NhY2hlTm9kZVR5cGUnLFxuICAnY2FjaGVQYXJhbWV0ZXJHcm91cE5hbWUnLFxuICAnY2FjaGVTZWN1cml0eUdyb3VwTmFtZXMnLFxuICAnY2FjaGVTdWJuZXRHcm91cE5hbWUnLFxuICAnY2x1c3Rlck5hbWUnLFxuICAnZW5naW5lJyxcbiAgJ2VuZ2luZVZlcnNpb24nLFxuICAnaXBEaXNjb3ZlcnknLFxuICAnbG9nRGVsaXZlcnlDb25maWd1cmF0aW9ucycsXG4gICduZXR3b3JrVHlwZScsXG4gICdub3RpZmljYXRpb25Ub3BpY0FybicsXG4gICdudW1DYWNoZU5vZGVzJyxcbiAgJ3BvcnQnLFxuICAncHJlZmVycmVkQXZhaWxhYmlsaXR5Wm9uZScsXG4gICdwcmVmZXJyZWRBdmFpbGFiaWxpdHlab25lcycsXG4gICdwcmVmZXJyZWRNYWludGVuYW5jZVdpbmRvdycsXG4gICdzbmFwc2hvdEFybnMnLFxuICAnc25hcHNob3ROYW1lJyxcbiAgJ3NuYXBzaG90UmV0ZW50aW9uTGltaXQnLFxuICAnc25hcHNob3RXaW5kb3cnLFxuICAndGFncycsXG4gICd0cmFuc2l0RW5jcnlwdGlvbkVuYWJsZWQnLFxuICAndnBjU2VjdXJpdHlHcm91cElkcydcbl0pO1xuXG4vLyBDZm5JbmRleFByb3BzIGZyb20gYXdzLWNkay1saWIvYXdzLWtlbmRyYVxuZXhwb3J0IGNvbnN0IHZhbGlkQ2ZuSW5kZXhQcm9wczogU2V0PHN0cmluZz4gPSBuZXcgU2V0KFtcbiAgJ2NhcGFjaXR5VW5pdHMnLFxuICAnZGVzY3JpcHRpb24nLFxuICAnZG9jdW1lbnRNZXRhZGF0YUNvbmZpZ3VyYXRpb25zJyxcbiAgJ2VkaXRpb24nLFxuICAnbmFtZScsXG4gICdyb2xlQXJuJyxcbiAgJ3NlcnZlclNpZGVFbmNyeXB0aW9uQ29uZmlndXJhdGlvbicsXG4gICd0YWdzJyxcbiAgJ3VzZXJDb250ZXh0UG9saWN5JyxcbiAgJ3VzZXJUb2tlbkNvbmZpZ3VyYXRpb25zJ1xuXSk7XG5cbi8vIENmbkRhdGFTb3VyY2VQcm9wcyBmcm9tIGF3cy1jZGstbGliL2F3cy1rZW5kcmFcbmV4cG9ydCBjb25zdCB2YWxpZENmbkRhdGFTb3VyY2VQcm9wczogU2V0PHN0cmluZz4gPSBuZXcgU2V0KFtcbiAgJ2N1c3RvbURvY3VtZW50RW5yaWNobWVudENvbmZpZ3VyYXRpb24nLFxuICAnZGF0YVNvdXJjZUNvbmZpZ3VyYXRpb24nLFxuICAnZGVzY3JpcHRpb24nLFxuICAnaW5kZXhJZCcsXG4gICdsYW5ndWFnZUNvZGUnLFxuICAnbmFtZScsXG4gICdyb2xlQXJuJyxcbiAgJ3NjaGVkdWxlJyxcbiAgJ3RhZ3MnLFxuICAndHlwZSdcbl0pO1xuXG4vLyBLZXlQcm9wcyBmcm9tIGF3cy1jZGstbGliL2F3cy1rbXNcbmV4cG9ydCBjb25zdCB2YWxpZEtleVByb3BzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoW1xuICAnYWRtaW5zJyxcbiAgJ2FsaWFzJyxcbiAgJ2Rlc2NyaXB0aW9uJyxcbiAgJ2VuYWJsZUtleVJvdGF0aW9uJyxcbiAgJ2VuYWJsZWQnLFxuICAna2V5U3BlYycsXG4gICdrZXlVc2FnZScsXG4gICdtdWx0aVJlZ2lvbicsXG4gICdwZW5kaW5nV2luZG93JyxcbiAgJ3BvbGljeScsXG4gICdyZW1vdmFsUG9saWN5JyxcbiAgJ3JvdGF0aW9uUGVyaW9kJ1xuXSk7XG5cbi8vIFZwY1Byb3BzIGZyb20gYXdzLWNkay1saWIvYXdzLWVjMlxuZXhwb3J0IGNvbnN0IHZhbGlkVnBjUHJvcHM6IFNldDxzdHJpbmc+ID0gbmV3IFNldChbXG4gICdhdmFpbGFiaWxpdHlab25lcycsXG4gICdjaWRyJyxcbiAgJ2NyZWF0ZUludGVybmV0R2F0ZXdheScsXG4gICdkZWZhdWx0SW5zdGFuY2VUZW5hbmN5JyxcbiAgJ2VuYWJsZURuc0hvc3RuYW1lcycsXG4gICdlbmFibGVEbnNTdXBwb3J0JyxcbiAgJ2Zsb3dMb2dzJyxcbiAgJ2dhdGV3YXlFbmRwb2ludHMnLFxuICAnaXBBZGRyZXNzZXMnLFxuICAnaXBQcm90b2NvbCcsXG4gICdpcHY2QWRkcmVzc2VzJyxcbiAgJ21heEF6cycsXG4gICduYXRHYXRld2F5UHJvdmlkZXInLFxuICAnbmF0R2F0ZXdheVN1Ym5ldHMnLFxuICAnbmF0R2F0ZXdheXMnLFxuICAncmVzZXJ2ZWRBenMnLFxuICAncmVzdHJpY3REZWZhdWx0U2VjdXJpdHlHcm91cCcsXG4gICdzdWJuZXRDb25maWd1cmF0aW9uJyxcbiAgJ3ZwY05hbWUnLFxuICAndnBuQ29ubmVjdGlvbnMnLFxuICAndnBuR2F0ZXdheScsXG4gICd2cG5HYXRld2F5QXNuJyxcbiAgJ3ZwblJvdXRlUHJvcGFnYXRpb24nXG5dKTtcblxuLy8gQ2ZuTW9kZWxQcm9wcyBmcm9tIGF3cy1jZGstbGliL2F3cy1zYWdlbWFrZXJcbmV4cG9ydCBjb25zdCB2YWxpZENmbk1vZGVsUHJvcHM6IFNldDxzdHJpbmc+ID0gbmV3IFNldChbXG4gICdjb250YWluZXJzJyxcbiAgJ2VuYWJsZU5ldHdvcmtJc29sYXRpb24nLFxuICAnZXhlY3V0aW9uUm9sZUFybicsXG4gICdpbmZlcmVuY2VFeGVjdXRpb25Db25maWcnLFxuICAnbW9kZWxOYW1lJyxcbiAgJ3ByaW1hcnlDb250YWluZXInLFxuICAndGFncycsXG4gICd2cGNDb25maWcnXG5dKTtcblxuLy8gUHJpdmF0ZUhvc3RlZFpvbmVQcm9wcyBmcm9tIGF3cy1jZGstbGliL2F3cy1yb3V0ZTUzXG5leHBvcnQgY29uc3QgdmFsaWRQcml2YXRlSG9zdGVkWm9uZVByb3BzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoW1xuICAnYWRkVHJhaWxpbmdEb3QnLFxuICAnY29tbWVudCcsXG4gICdxdWVyeUxvZ3NMb2dHcm91cEFybicsXG4gICd2cGMnLFxuICAnem9uZU5hbWUnXG5dKTtcblxuLy8gQ2ZuV2ViQUNMUHJvcHMgZnJvbSBhd3MtY2RrLWxpYi9hd3Mtd2FmdjJcbmV4cG9ydCBjb25zdCB2YWxpZENmbldlYkFDTFByb3BzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoW1xuICAnYXBwbGljYXRpb25Db25maWcnLFxuICAnYXNzb2NpYXRpb25Db25maWcnLFxuICAnY2FwdGNoYUNvbmZpZycsXG4gICdjaGFsbGVuZ2VDb25maWcnLFxuICAnY3VzdG9tUmVzcG9uc2VCb2RpZXMnLFxuICAnZGF0YVByb3RlY3Rpb25Db25maWcnLFxuICAnZGVmYXVsdEFjdGlvbicsXG4gICdkZXNjcmlwdGlvbicsXG4gICduYW1lJyxcbiAgJ29uU291cmNlRERvU1Byb3RlY3Rpb25Db25maWcnLFxuICAncnVsZXMnLFxuICAnc2NvcGUnLFxuICAndGFncycsXG4gICd0b2tlbkRvbWFpbnMnLFxuICAndmlzaWJpbGl0eUNvbmZpZydcbl0pO1xuXG4vLyBTaGFyZWQgdmFsaWRhdGlvbiBpbXBsZW1lbnRhdGlvblxuLy8gU2NvcGUgaXMgcmVxdWlyZWQgZm9yIGZlYXR1cmUgZmxhZyBjaGVja2luZ1xuLy8gVGFyZ2V0IGNhbiBiZSB1bmRlZmluZWQgLSB2YWxpZGF0aW9uIGlzIHNraXBwZWQgaWYgdGFyZ2V0IGlzIHVuZGVmaW5lZFxuZXhwb3J0IGZ1bmN0aW9uIFZhbGlkYXRlUHJvcHMoc2NvcGU6IENvbnN0cnVjdCwgdGFyZ2V0OiBhbnkgfCB1bmRlZmluZWQsIHZhbGlkUHJvcHM6IFNldDxzdHJpbmc+LCBwcm9wc1R5cGVOYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgLy8gQ2hlY2sgaWYgdmFsaWRhdGlvbiBpcyBkaXNhYmxlZCB2aWEgZmVhdHVyZSBmbGFnXG4gIGlmIChjZGsuRmVhdHVyZUZsYWdzLm9mKHNjb3BlKS5pc0VuYWJsZWQoRElTQUJMRV9QUk9QRVJUWV9WQUxJREFUSU9OKSkge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoIXRhcmdldCkge1xuICAgIHJldHVybjtcbiAgfVxuICBmb3IgKGNvbnN0IGtleSBpbiB0YXJnZXQpIHtcbiAgICBpZiAoIXZhbGlkUHJvcHMuaGFzKGtleSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRVJST1IgLSAke2tleX0gaXMgbm90IGEgdmFsaWQgcHJvcGVydHkgb2YgJHtwcm9wc1R5cGVOYW1lfWApO1xuICAgIH1cbiAgfVxufVxuXG4vLyBWYWxpZGF0aW9uIGZ1bmN0aW9uc1xuZXhwb3J0IGZ1bmN0aW9uIFZhbGlkYXRlQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJQcm9wcyhzY29wZTogQ29uc3RydWN0LCB0YXJnZXQ/OiBhbnkpOiB2b2lkIHtcbiAgVmFsaWRhdGVQcm9wcyhzY29wZSwgdGFyZ2V0LCB2YWxpZEFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyUHJvcHMsICdBcHBsaWNhdGlvbkxvYWRCYWxhbmNlclByb3BzJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBWYWxpZGF0ZUFwcGxpY2F0aW9uTGlzdGVuZXJQcm9wcyhzY29wZTogQ29uc3RydWN0LCB0YXJnZXQ/OiBhbnkpOiB2b2lkIHtcbiAgVmFsaWRhdGVQcm9wcyhzY29wZSwgdGFyZ2V0LCB2YWxpZEFwcGxpY2F0aW9uTGlzdGVuZXJQcm9wcywgJ0FwcGxpY2F0aW9uTGlzdGVuZXJQcm9wcycpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gVmFsaWRhdGVDb250YWluZXJEZWZpbml0aW9uUHJvcHMoc2NvcGU6IENvbnN0cnVjdCwgdGFyZ2V0PzogYW55KTogdm9pZCB7XG4gIFZhbGlkYXRlUHJvcHMoc2NvcGUsIHRhcmdldCwgdmFsaWRDb250YWluZXJEZWZpbml0aW9uUHJvcHMsICdDb250YWluZXJEZWZpbml0aW9uUHJvcHMnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFZhbGlkYXRlRmFyZ2F0ZVRhc2tEZWZpbml0aW9uUHJvcHMoc2NvcGU6IENvbnN0cnVjdCwgdGFyZ2V0PzogYW55KTogdm9pZCB7XG4gIFZhbGlkYXRlUHJvcHMoc2NvcGUsIHRhcmdldCwgdmFsaWRGYXJnYXRlVGFza0RlZmluaXRpb25Qcm9wcywgJ0ZhcmdhdGVUYXNrRGVmaW5pdGlvblByb3BzJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBWYWxpZGF0ZUZhcmdhdGVTZXJ2aWNlUHJvcHMoc2NvcGU6IENvbnN0cnVjdCwgdGFyZ2V0PzogYW55KTogdm9pZCB7XG4gIFZhbGlkYXRlUHJvcHMoc2NvcGUsIHRhcmdldCwgdmFsaWRGYXJnYXRlU2VydmljZVByb3BzLCAnRmFyZ2F0ZVNlcnZpY2VQcm9wcycpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gVmFsaWRhdGVMYW1iZGFSZXN0QXBpUHJvcHMoc2NvcGU6IENvbnN0cnVjdCwgdGFyZ2V0PzogYW55KTogdm9pZCB7XG4gIFZhbGlkYXRlUHJvcHMoc2NvcGUsIHRhcmdldCwgdmFsaWRMYW1iZGFSZXN0QXBpUHJvcHMsICdMYW1iZGFSZXN0QXBpUHJvcHMnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFZhbGlkYXRlUmVzdEFwaVByb3BzKHNjb3BlOiBDb25zdHJ1Y3QsIHRhcmdldD86IGFueSk6IHZvaWQge1xuICBWYWxpZGF0ZVByb3BzKHNjb3BlLCB0YXJnZXQsIHZhbGlkUmVzdEFwaVByb3BzLCAnUmVzdEFwaVByb3BzJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBWYWxpZGF0ZURpc3RyaWJ1dGlvblByb3BzKHNjb3BlOiBDb25zdHJ1Y3QsIHRhcmdldD86IGFueSk6IHZvaWQge1xuICBWYWxpZGF0ZVByb3BzKHNjb3BlLCB0YXJnZXQsIHZhbGlkRGlzdHJpYnV0aW9uUHJvcHMsICdEaXN0cmlidXRpb25Qcm9wcycpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gVmFsaWRhdGVVc2VyUG9vbENsaWVudFByb3BzKHNjb3BlOiBDb25zdHJ1Y3QsIHRhcmdldD86IGFueSk6IHZvaWQge1xuICBWYWxpZGF0ZVByb3BzKHNjb3BlLCB0YXJnZXQsIHZhbGlkVXNlclBvb2xDbGllbnRQcm9wcywgJ1VzZXJQb29sQ2xpZW50UHJvcHMnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFZhbGlkYXRlRHluYW1vRXZlbnRTb3VyY2VQcm9wcyhzY29wZTogQ29uc3RydWN0LCB0YXJnZXQ/OiBhbnkpOiB2b2lkIHtcbiAgVmFsaWRhdGVQcm9wcyhzY29wZSwgdGFyZ2V0LCB2YWxpZER5bmFtb0V2ZW50U291cmNlUHJvcHMsICdEeW5hbW9FdmVudFNvdXJjZVByb3BzJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBWYWxpZGF0ZUNmblBpcGVQcm9wcyhzY29wZTogQ29uc3RydWN0LCB0YXJnZXQ/OiBhbnkpOiB2b2lkIHtcbiAgVmFsaWRhdGVQcm9wcyhzY29wZSwgdGFyZ2V0LCB2YWxpZENmblBpcGVQcm9wcywgJ0NmblBpcGVQcm9wcycpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gVmFsaWRhdGVDZm5EZWxpdmVyeVN0cmVhbVByb3BzKHNjb3BlOiBDb25zdHJ1Y3QsIHRhcmdldD86IGFueSk6IHZvaWQge1xuICBWYWxpZGF0ZVByb3BzKHNjb3BlLCB0YXJnZXQsIHZhbGlkQ2ZuRGVsaXZlcnlTdHJlYW1Qcm9wcywgJ0NmbkRlbGl2ZXJ5U3RyZWFtUHJvcHMnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFZhbGlkYXRlU3RyZWFtUHJvcHMoc2NvcGU6IENvbnN0cnVjdCwgdGFyZ2V0PzogYW55KTogdm9pZCB7XG4gIFZhbGlkYXRlUHJvcHMoc2NvcGUsIHRhcmdldCwgdmFsaWRTdHJlYW1Qcm9wcywgJ1N0cmVhbVByb3BzJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBWYWxpZGF0ZUNmbkpvYlByb3BzKHNjb3BlOiBDb25zdHJ1Y3QsIHRhcmdldD86IGFueSk6IHZvaWQge1xuICBWYWxpZGF0ZVByb3BzKHNjb3BlLCB0YXJnZXQsIHZhbGlkQ2ZuSm9iUHJvcHMsICdDZm5Kb2JQcm9wcycpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gVmFsaWRhdGVLaW5lc2lzRXZlbnRTb3VyY2VQcm9wcyhzY29wZTogQ29uc3RydWN0LCB0YXJnZXQ/OiBhbnkpOiB2b2lkIHtcbiAgVmFsaWRhdGVQcm9wcyhzY29wZSwgdGFyZ2V0LCB2YWxpZEtpbmVzaXNFdmVudFNvdXJjZVByb3BzLCAnS2luZXNpc0V2ZW50U291cmNlUHJvcHMnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFZhbGlkYXRlQ2ZuQ2FjaGVDbHVzdGVyUHJvcHMoc2NvcGU6IENvbnN0cnVjdCwgdGFyZ2V0PzogYW55KTogdm9pZCB7XG4gIFZhbGlkYXRlUHJvcHMoc2NvcGUsIHRhcmdldCwgdmFsaWRDZm5DYWNoZUNsdXN0ZXJQcm9wcywgJ0NmbkNhY2hlQ2x1c3RlclByb3BzJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBWYWxpZGF0ZUNmbkluZGV4UHJvcHMoc2NvcGU6IENvbnN0cnVjdCwgdGFyZ2V0PzogYW55KTogdm9pZCB7XG4gIFZhbGlkYXRlUHJvcHMoc2NvcGUsIHRhcmdldCwgdmFsaWRDZm5JbmRleFByb3BzLCAnQ2ZuSW5kZXhQcm9wcycpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gVmFsaWRhdGVDZm5EYXRhU291cmNlUHJvcHMoc2NvcGU6IENvbnN0cnVjdCwgdGFyZ2V0PzogYW55KTogdm9pZCB7XG4gIFZhbGlkYXRlUHJvcHMoc2NvcGUsIHRhcmdldCwgdmFsaWRDZm5EYXRhU291cmNlUHJvcHMsICdDZm5EYXRhU291cmNlUHJvcHMnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFZhbGlkYXRlS2V5UHJvcHMoc2NvcGU6IENvbnN0cnVjdCwgdGFyZ2V0PzogYW55KTogdm9pZCB7XG4gIFZhbGlkYXRlUHJvcHMoc2NvcGUsIHRhcmdldCwgdmFsaWRLZXlQcm9wcywgJ0tleVByb3BzJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBWYWxpZGF0ZVZwY1Byb3BzKHNjb3BlOiBDb25zdHJ1Y3QsIHRhcmdldD86IGFueSk6IHZvaWQge1xuICBWYWxpZGF0ZVByb3BzKHNjb3BlLCB0YXJnZXQsIHZhbGlkVnBjUHJvcHMsICdWcGNQcm9wcycpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gVmFsaWRhdGVDZm5Nb2RlbFByb3BzKHNjb3BlOiBDb25zdHJ1Y3QsIHRhcmdldD86IGFueSk6IHZvaWQge1xuICBWYWxpZGF0ZVByb3BzKHNjb3BlLCB0YXJnZXQsIHZhbGlkQ2ZuTW9kZWxQcm9wcywgJ0Nmbk1vZGVsUHJvcHMnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFZhbGlkYXRlUHJpdmF0ZUhvc3RlZFpvbmVQcm9wcyhzY29wZTogQ29uc3RydWN0LCB0YXJnZXQ/OiBhbnkpOiB2b2lkIHtcbiAgVmFsaWRhdGVQcm9wcyhzY29wZSwgdGFyZ2V0LCB2YWxpZFByaXZhdGVIb3N0ZWRab25lUHJvcHMsICdQcml2YXRlSG9zdGVkWm9uZVByb3BzJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBWYWxpZGF0ZUNmbldlYkFDTFByb3BzKHNjb3BlOiBDb25zdHJ1Y3QsIHRhcmdldD86IGFueSk6IHZvaWQge1xuICBWYWxpZGF0ZVByb3BzKHNjb3BlLCB0YXJnZXQsIHZhbGlkQ2ZuV2ViQUNMUHJvcHMsICdDZm5XZWJBQ0xQcm9wcycpO1xufVxuIl19
595
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInZhbGlkYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7OztHQVdHOzs7QUE0Zkgsc0NBYUM7QUFHRCxvRkFFQztBQUVELDRFQUVDO0FBRUQsNEVBRUM7QUFFRCxnRkFFQztBQUVELGtFQUVDO0FBRUQsZ0VBRUM7QUFFRCxvREFFQztBQUVELDhEQUVDO0FBRUQsa0VBRUM7QUFFRCx3RUFFQztBQUVELG9EQUVDO0FBRUQsd0VBRUM7QUFFRCxrREFFQztBQUVELGtEQUVDO0FBRUQsMEVBRUM7QUFFRCxvRUFFQztBQUVELHNEQUVDO0FBRUQsZ0VBRUM7QUFFRCw0Q0FFQztBQUVELDRDQUVDO0FBRUQsc0RBRUM7QUFFRCx3RUFFQztBQUVELHdEQUVDO0FBemxCRCxtQ0FBbUM7QUFDbkMseUVBQXlFO0FBRXpFLDJFQUEyRTtBQUM5RCxRQUFBLGlDQUFpQyxHQUFnQixJQUFJLEdBQUcsQ0FBQztJQUNwRSxpQkFBaUI7SUFDakIsa0JBQWtCO0lBQ2xCLG9CQUFvQjtJQUNwQixtQkFBbUI7SUFDbkIsc0JBQXNCO0lBQ3RCLHlCQUF5QjtJQUN6QixjQUFjO0lBQ2QsYUFBYTtJQUNiLGdCQUFnQjtJQUNoQixlQUFlO0lBQ2Ysa0JBQWtCO0lBQ2xCLHFCQUFxQjtJQUNyQixvQkFBb0I7SUFDcEIsdUJBQXVCO0lBQ3ZCLGVBQWU7SUFDZixLQUFLO0lBQ0wsWUFBWTtJQUNaLGFBQWE7SUFDYixzQ0FBc0M7SUFDdEMseUJBQXlCO0NBQzFCLENBQUMsQ0FBQztBQUVILHVFQUF1RTtBQUMxRCxRQUFBLDZCQUE2QixHQUFnQixJQUFJLEdBQUcsQ0FBQztJQUNoRSxjQUFjO0lBQ2QsZUFBZTtJQUNmLHFCQUFxQjtJQUNyQixjQUFjO0lBQ2Qsc0JBQXNCO0lBQ3RCLE1BQU07SUFDTixNQUFNO0lBQ04sVUFBVTtJQUNWLFdBQVc7Q0FDWixDQUFDLENBQUM7QUFFSCxvREFBb0Q7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LEVBQUUsTUFBWTtJQUN2RSxhQUFhLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSwrQkFBdUIsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO0FBQzlFLENBQUM7QUFFRCxTQUFnQixnQkFBZ0IsQ0FBQyxLQUFnQixFQUFFLE1BQVk7SUFDN0QsYUFBYSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUscUJBQWEsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUMxRCxDQUFDO0FBRUQsU0FBZ0IsZ0JBQWdCLENBQUMsS0FBZ0IsRUFBRSxNQUFZO0lBQzdELGFBQWEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLHFCQUFhLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDMUQsQ0FBQztBQUVELFNBQWdCLHFCQUFxQixDQUFDLEtBQWdCLEVBQUUsTUFBWTtJQUNsRSxhQUFhLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSwwQkFBa0IsRUFBRSxlQUFlLENBQUMsQ0FBQztBQUNwRSxDQUFDO0FBRUQsU0FBZ0IsOEJBQThCLENBQUMsS0FBZ0IsRUFBRSxNQUFZO0lBQzNFLGFBQWEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLG1DQUEyQixFQUFFLHdCQUF3QixDQUFDLENBQUM7QUFDdEYsQ0FBQztBQUVELFNBQWdCLHNCQUFzQixDQUFDLEtBQWdCLEVBQUUsTUFBWTtJQUNuRSxhQUFhLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSwyQkFBbUIsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0FBQ3RFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuICogIHdpdGggdGhlIExpY2Vuc2UuIEEgY29weSBvZiB0aGUgTGljZW5zZSBpcyBsb2NhdGVkIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgb3IgaW4gdGhlICdsaWNlbnNlJyBmaWxlIGFjY29tcGFueWluZyB0aGlzIGZpbGUuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMnIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVNcbiAqICBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xuICogIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vLyBUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgYnkgc2NyaXB0cy9nZW5lcmF0ZS12YWxpZGF0aW9uLnRzXG4vLyBEbyBub3QgZWRpdCBtYW51YWxseSAtIHJ1biAnbnBtIHJ1biBnZW5lcmF0ZTp2YWxpZGF0aW9uJyBmcm9tIHRoZSBzb3VyY2Uvc2NyaXB0cyBmb2xkZXIgdG8gcmVnZW5lcmF0ZVxuLy9cbi8vIFRoaXMgZmlsZSBlbmNvZGVzIHRoZSBDREsgUHJvcHMgaW50ZXJmYWNlIGRlZmluaXRpb25zIGludG8gZGF0YSBzdHJ1Y3R1cmVzIHRoYXRcbi8vIGNhbiBiZSB1c2VkIGF0IHJ1bnRpbWUgdG8gdmFsaWRhdGUgdGhlIGF0dHJpYnV0ZXMgb2YgaW5jb21pbmcgQ0RLIFByb3BzIG9iamVjdHMsXG4vLyBzaW5jZSB0aGUgdXNlIG9mIHwgYW55IGluIHRoZSBkZWZpbml0aW9ucyBwcmV2ZW50cyB2YWxpZGF0aW9uIGF0IHRyYW5zcGlsYXRpb24gdGltZVxuLy9cbi8vIEl0IGFsc28gcHJvdmlkZXMgZnVuY3Rpb25zIHRoYXQgd2lsbCBwZXJmb3JtIHRoZSB2YWxpZGF0aW9uIG9uIGVhY2ggUHJvcHMgb2JqZWN0IHR5cGVcbi8vIHBhcnNlZFxuXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBESVNBQkxFX1BST1BFUlRZX1ZBTElEQVRJT04gfSBmcm9tICcuL2NvbnN0cnVjdHMtZmVhdHVyZS1mbGFncyc7XG5cbi8vIEFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyUHJvcHMgZnJvbSBhd3MtY2RrLWxpYi9hd3MtZWxhc3RpY2xvYWRiYWxhbmNpbmd2MlxuZXhwb3J0IGNvbnN0IHZhbGlkQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJQcm9wczogU2V0PHN0cmluZz4gPSBuZXcgU2V0KFtcbiAgJ2NsaWVudEtlZXBBbGl2ZScsXG4gICdjcm9zc1pvbmVFbmFibGVkJyxcbiAgJ2RlbGV0aW9uUHJvdGVjdGlvbicsXG4gICdkZW55QWxsSWd3VHJhZmZpYycsXG4gICdkZXN5bmNNaXRpZ2F0aW9uTW9kZScsXG4gICdkcm9wSW52YWxpZEhlYWRlckZpZWxkcycsXG4gICdodHRwMkVuYWJsZWQnLFxuICAnaWRsZVRpbWVvdXQnLFxuICAnaW50ZXJuZXRGYWNpbmcnLFxuICAnaXBBZGRyZXNzVHlwZScsXG4gICdsb2FkQmFsYW5jZXJOYW1lJyxcbiAgJ21pbmltdW1DYXBhY2l0eVVuaXQnLFxuICAncHJlc2VydmVIb3N0SGVhZGVyJyxcbiAgJ3ByZXNlcnZlWGZmQ2xpZW50UG9ydCcsXG4gICdzZWN1cml0eUdyb3VwJyxcbiAgJ3ZwYycsXG4gICd2cGNTdWJuZXRzJyxcbiAgJ3dhZkZhaWxPcGVuJyxcbiAgJ3hBbXpuVGxzVmVyc2lvbkFuZENpcGhlclN1aXRlSGVhZGVycycsXG4gICd4ZmZIZWFkZXJQcm9jZXNzaW5nTW9kZSdcbl0pO1xuXG4vLyBBcHBsaWNhdGlvbkxpc3RlbmVyUHJvcHMgZnJvbSBhd3MtY2RrLWxpYi9hd3MtZWxhc3RpY2xvYWRiYWxhbmNpbmd2MlxuZXhwb3J0IGNvbnN0IHZhbGlkQXBwbGljYXRpb25MaXN0ZW5lclByb3BzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoW1xuICAnY2VydGlmaWNhdGVzJyxcbiAgJ2RlZmF1bHRBY3Rpb24nLFxuICAnZGVmYXVsdFRhcmdldEdyb3VwcycsXG4gICdsb2FkQmFsYW5jZXInLFxuICAnbXV0dWFsQXV0aGVudGljYXRpb24nLFxuICAnb3BlbicsXG4gICdwb3J0JyxcbiAgJ3Byb3RvY29sJyxcbiAgJ3NzbFBvbGljeSdcbl0pO1xuXG4vLyBDb250YWluZXJEZWZpbml0aW9uUHJvcHMgZnJvbSBhd3MtY2RrLWxpYi9hd3MtZWNzXG5leHBvcnQgY29uc3QgdmFsaWRDb250YWluZXJEZWZpbml0aW9uUHJvcHM6IFNldDxzdHJpbmc+ID0gbmV3IFNldChbXG4gICdjb21tYW5kJyxcbiAgJ2NvbnRhaW5lck5hbWUnLFxuICAnY3B1JyxcbiAgJ2NyZWRlbnRpYWxTcGVjcycsXG4gICdkaXNhYmxlTmV0d29ya2luZycsXG4gICdkbnNTZWFyY2hEb21haW5zJyxcbiAgJ2Ruc1NlcnZlcnMnLFxuICAnZG9ja2VyTGFiZWxzJyxcbiAgJ2RvY2tlclNlY3VyaXR5T3B0aW9ucycsXG4gICdlbmFibGVSZXN0YXJ0UG9saWN5JyxcbiAgJ2VudHJ5UG9pbnQnLFxuICAnZW52aXJvbm1lbnQnLFxuICAnZW52aXJvbm1lbnRGaWxlcycsXG4gICdlc3NlbnRpYWwnLFxuICAnZXh0cmFIb3N0cycsXG4gICdncHVDb3VudCcsXG4gICdoZWFsdGhDaGVjaycsXG4gICdob3N0bmFtZScsXG4gICdpbWFnZScsXG4gICdpbmZlcmVuY2VBY2NlbGVyYXRvclJlc291cmNlcycsXG4gICdpbnRlcmFjdGl2ZScsXG4gICdsaW51eFBhcmFtZXRlcnMnLFxuICAnbG9nZ2luZycsXG4gICdtZW1vcnlMaW1pdE1pQicsXG4gICdtZW1vcnlSZXNlcnZhdGlvbk1pQicsXG4gICdwb3J0TWFwcGluZ3MnLFxuICAncHJpdmlsZWdlZCcsXG4gICdwc2V1ZG9UZXJtaW5hbCcsXG4gICdyZWFkb25seVJvb3RGaWxlc3lzdGVtJyxcbiAgJ3Jlc3RhcnRBdHRlbXB0UGVyaW9kJyxcbiAgJ3Jlc3RhcnRJZ25vcmVkRXhpdENvZGVzJyxcbiAgJ3NlY3JldHMnLFxuICAnc3RhcnRUaW1lb3V0JyxcbiAgJ3N0b3BUaW1lb3V0JyxcbiAgJ3N5c3RlbUNvbnRyb2xzJyxcbiAgJ3Rhc2tEZWZpbml0aW9uJyxcbiAgJ3VsaW1pdHMnLFxuICAndXNlcicsXG4gICd2ZXJzaW9uQ29uc2lzdGVuY3knLFxuICAnd29ya2luZ0RpcmVjdG9yeSdcbl0pO1xuXG4vLyBGYXJnYXRlVGFza0RlZmluaXRpb25Qcm9wcyBmcm9tIGF3cy1jZGstbGliL2F3cy1lY3NcbmV4cG9ydCBjb25zdCB2YWxpZEZhcmdhdGVUYXNrRGVmaW5pdGlvblByb3BzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoW1xuICAnY3B1JyxcbiAgJ2VuYWJsZUZhdWx0SW5qZWN0aW9uJyxcbiAgJ2VwaGVtZXJhbFN0b3JhZ2VHaUInLFxuICAnZXhlY3V0aW9uUm9sZScsXG4gICdmYW1pbHknLFxuICAnbWVtb3J5TGltaXRNaUInLFxuICAncGlkTW9kZScsXG4gICdwcm94eUNvbmZpZ3VyYXRpb24nLFxuICAncnVudGltZVBsYXRmb3JtJyxcbiAgJ3Rhc2tSb2xlJyxcbiAgJ3ZvbHVtZXMnXG5dKTtcblxuLy8gRmFyZ2F0ZVNlcnZpY2VQcm9wcyBmcm9tIGF3cy1jZGstbGliL2F3cy1lY3NcbmV4cG9ydCBjb25zdCB2YWxpZEZhcmdhdGVTZXJ2aWNlUHJvcHM6IFNldDxzdHJpbmc+ID0gbmV3IFNldChbXG4gICdhc3NpZ25QdWJsaWNJcCcsXG4gICdhdmFpbGFiaWxpdHlab25lUmViYWxhbmNpbmcnLFxuICAnYmFrZVRpbWUnLFxuICAnY2FuYXJ5Q29uZmlndXJhdGlvbicsXG4gICdjYXBhY2l0eVByb3ZpZGVyU3RyYXRlZ2llcycsXG4gICdjaXJjdWl0QnJlYWtlcicsXG4gICdjbG91ZE1hcE9wdGlvbnMnLFxuICAnY2x1c3RlcicsXG4gICdkZXBsb3ltZW50QWxhcm1zJyxcbiAgJ2RlcGxveW1lbnRDb250cm9sbGVyJyxcbiAgJ2RlcGxveW1lbnRTdHJhdGVneScsXG4gICdkZXNpcmVkQ291bnQnLFxuICAnZW5hYmxlRUNTTWFuYWdlZFRhZ3MnLFxuICAnZW5hYmxlRXhlY3V0ZUNvbW1hbmQnLFxuICAnZm9yY2VOZXdEZXBsb3ltZW50JyxcbiAgJ2hlYWx0aENoZWNrR3JhY2VQZXJpb2QnLFxuICAnbGlmZWN5Y2xlSG9va3MnLFxuICAnbGluZWFyQ29uZmlndXJhdGlvbicsXG4gICdtYXhIZWFsdGh5UGVyY2VudCcsXG4gICdtaW5IZWFsdGh5UGVyY2VudCcsXG4gICdwbGF0Zm9ybVZlcnNpb24nLFxuICAncHJvcGFnYXRlVGFncycsXG4gICdzZWN1cml0eUdyb3VwcycsXG4gICdzZXJ2aWNlQ29ubmVjdENvbmZpZ3VyYXRpb24nLFxuICAnc2VydmljZU5hbWUnLFxuICAndGFza0RlZmluaXRpb24nLFxuICAndGFza0RlZmluaXRpb25SZXZpc2lvbicsXG4gICd2b2x1bWVDb25maWd1cmF0aW9ucycsXG4gICd2cGNTdWJuZXRzJ1xuXSk7XG5cbi8vIExhbWJkYVJlc3RBcGlQcm9wcyBmcm9tIGF3cy1jZGstbGliL2F3cy1hcGlnYXRld2F5XG5leHBvcnQgY29uc3QgdmFsaWRMYW1iZGFSZXN0QXBpUHJvcHM6IFNldDxzdHJpbmc+ID0gbmV3IFNldChbXG4gICdhcGlLZXlTb3VyY2VUeXBlJyxcbiAgJ2JpbmFyeU1lZGlhVHlwZXMnLFxuICAnY2xvbmVGcm9tJyxcbiAgJ2Nsb3VkV2F0Y2hSb2xlJyxcbiAgJ2Nsb3VkV2F0Y2hSb2xlUmVtb3ZhbFBvbGljeScsXG4gICdkZWZhdWx0Q29yc1ByZWZsaWdodE9wdGlvbnMnLFxuICAnZGVmYXVsdEludGVncmF0aW9uJyxcbiAgJ2RlZmF1bHRNZXRob2RPcHRpb25zJyxcbiAgJ2RlcGxveScsXG4gICdkZXBsb3lPcHRpb25zJyxcbiAgJ2Rlc2NyaXB0aW9uJyxcbiAgJ2Rpc2FibGVFeGVjdXRlQXBpRW5kcG9pbnQnLFxuICAnZG9tYWluTmFtZScsXG4gICdlbmRwb2ludENvbmZpZ3VyYXRpb24nLFxuICAnZW5kcG9pbnRFeHBvcnROYW1lJyxcbiAgJ2VuZHBvaW50VHlwZXMnLFxuICAnZmFpbE9uV2FybmluZ3MnLFxuICAnaGFuZGxlcicsXG4gICdpbnRlZ3JhdGlvbk9wdGlvbnMnLFxuICAnbWluQ29tcHJlc3Npb25TaXplJyxcbiAgJ21pbmltdW1Db21wcmVzc2lvblNpemUnLFxuICAncGFyYW1ldGVycycsXG4gICdwb2xpY3knLFxuICAncHJveHknLFxuICAncmVzdEFwaU5hbWUnLFxuICAncmV0YWluRGVwbG95bWVudHMnXG5dKTtcblxuLy8gUmVzdEFwaVByb3BzIGZyb20gYXdzLWNkay1saWIvYXdzLWFwaWdhdGV3YXlcbmV4cG9ydCBjb25zdCB2YWxpZFJlc3RBcGlQcm9wczogU2V0PHN0cmluZz4gPSBuZXcgU2V0KFtcbiAgJ2FwaUtleVNvdXJjZVR5cGUnLFxuICAnYmluYXJ5TWVkaWFUeXBlcycsXG4gICdjbG9uZUZyb20nLFxuICAnY2xvdWRXYXRjaFJvbGUnLFxuICAnY2xvdWRXYXRjaFJvbGVSZW1vdmFsUG9saWN5JyxcbiAgJ2RlZmF1bHRDb3JzUHJlZmxpZ2h0T3B0aW9ucycsXG4gICdkZWZhdWx0SW50ZWdyYXRpb24nLFxuICAnZGVmYXVsdE1ldGhvZE9wdGlvbnMnLFxuICAnZGVwbG95JyxcbiAgJ2RlcGxveU9wdGlvbnMnLFxuICAnZGVzY3JpcHRpb24nLFxuICAnZGlzYWJsZUV4ZWN1dGVBcGlFbmRwb2ludCcsXG4gICdkb21haW5OYW1lJyxcbiAgJ2VuZHBvaW50Q29uZmlndXJhdGlvbicsXG4gICdlbmRwb2ludEV4cG9ydE5hbWUnLFxuICAnZW5kcG9pbnRUeXBlcycsXG4gICdmYWlsT25XYXJuaW5ncycsXG4gICdtaW5Db21wcmVzc2lvblNpemUnLFxuICAnbWluaW11bUNvbXByZXNzaW9uU2l6ZScsXG4gICdwYXJhbWV0ZXJzJyxcbiAgJ3BvbGljeScsXG4gICdyZXN0QXBpTmFtZScsXG4gICdyZXRhaW5EZXBsb3ltZW50cydcbl0pO1xuXG4vLyBEaXN0cmlidXRpb25Qcm9wcyBmcm9tIGF3cy1jZGstbGliL2F3cy1jbG91ZGZyb250XG5leHBvcnQgY29uc3QgdmFsaWREaXN0cmlidXRpb25Qcm9wczogU2V0PHN0cmluZz4gPSBuZXcgU2V0KFtcbiAgJ2FkZGl0aW9uYWxCZWhhdmlvcnMnLFxuICAnY2VydGlmaWNhdGUnLFxuICAnY29tbWVudCcsXG4gICdkZWZhdWx0QmVoYXZpb3InLFxuICAnZGVmYXVsdFJvb3RPYmplY3QnLFxuICAnZG9tYWluTmFtZXMnLFxuICAnZW5hYmxlSXB2NicsXG4gICdlbmFibGVMb2dnaW5nJyxcbiAgJ2VuYWJsZWQnLFxuICAnZXJyb3JSZXNwb25zZXMnLFxuICAnZ2VvUmVzdHJpY3Rpb24nLFxuICAnaHR0cFZlcnNpb24nLFxuICAnbG9nQnVja2V0JyxcbiAgJ2xvZ0ZpbGVQcmVmaXgnLFxuICAnbG9nSW5jbHVkZXNDb29raWVzJyxcbiAgJ21pbmltdW1Qcm90b2NvbFZlcnNpb24nLFxuICAncHJpY2VDbGFzcycsXG4gICdwdWJsaXNoQWRkaXRpb25hbE1ldHJpY3MnLFxuICAnc3NsU3VwcG9ydE1ldGhvZCcsXG4gICd3ZWJBY2xJZCdcbl0pO1xuXG4vLyBVc2VyUG9vbENsaWVudFByb3BzIGZyb20gYXdzLWNkay1saWIvYXdzLWNvZ25pdG9cbmV4cG9ydCBjb25zdCB2YWxpZFVzZXJQb29sQ2xpZW50UHJvcHM6IFNldDxzdHJpbmc+ID0gbmV3IFNldChbXG4gICdhY2Nlc3NUb2tlblZhbGlkaXR5JyxcbiAgJ2FuYWx5dGljcycsXG4gICdhdXRoRmxvd3MnLFxuICAnYXV0aFNlc3Npb25WYWxpZGl0eScsXG4gICdkaXNhYmxlT0F1dGgnLFxuICAnZW5hYmxlUHJvcGFnYXRlQWRkaXRpb25hbFVzZXJDb250ZXh0RGF0YScsXG4gICdlbmFibGVUb2tlblJldm9jYXRpb24nLFxuICAnZ2VuZXJhdGVTZWNyZXQnLFxuICAnaWRUb2tlblZhbGlkaXR5JyxcbiAgJ29BdXRoJyxcbiAgJ3ByZXZlbnRVc2VyRXhpc3RlbmNlRXJyb3JzJyxcbiAgJ3JlYWRBdHRyaWJ1dGVzJyxcbiAgJ3JlZnJlc2hUb2tlblJvdGF0aW9uR3JhY2VQZXJpb2QnLFxuICAncmVmcmVzaFRva2VuVmFsaWRpdHknLFxuICAnc3VwcG9ydGVkSWRlbnRpdHlQcm92aWRlcnMnLFxuICAndXNlclBvb2wnLFxuICAndXNlclBvb2xDbGllbnROYW1lJyxcbiAgJ3dyaXRlQXR0cmlidXRlcydcbl0pO1xuXG4vLyBEeW5hbW9FdmVudFNvdXJjZVByb3BzIGZyb20gYXdzLWNkay1saWIvYXdzLWxhbWJkYS1ldmVudC1zb3VyY2VzXG5leHBvcnQgY29uc3QgdmFsaWREeW5hbW9FdmVudFNvdXJjZVByb3BzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoW1xuICAnYmF0Y2hTaXplJyxcbiAgJ2Jpc2VjdEJhdGNoT25FcnJvcicsXG4gICdlbmFibGVkJyxcbiAgJ2ZpbHRlckVuY3J5cHRpb24nLFxuICAnZmlsdGVycycsXG4gICdtYXhCYXRjaGluZ1dpbmRvdycsXG4gICdtYXhSZWNvcmRBZ2UnLFxuICAnbWV0cmljc0NvbmZpZycsXG4gICdvbkZhaWx1cmUnLFxuICAncGFyYWxsZWxpemF0aW9uRmFjdG9yJyxcbiAgJ3Byb3Zpc2lvbmVkUG9sbGVyQ29uZmlnJyxcbiAgJ3JlcG9ydEJhdGNoSXRlbUZhaWx1cmVzJyxcbiAgJ3JldHJ5QXR0ZW1wdHMnLFxuICAnc3RhcnRpbmdQb3NpdGlvbicsXG4gICd0dW1ibGluZ1dpbmRvdydcbl0pO1xuXG4vLyBDZm5QaXBlUHJvcHMgZnJvbSBhd3MtY2RrLWxpYi9hd3MtcGlwZXNcbmV4cG9ydCBjb25zdCB2YWxpZENmblBpcGVQcm9wczogU2V0PHN0cmluZz4gPSBuZXcgU2V0KFtcbiAgJ2Rlc2NyaXB0aW9uJyxcbiAgJ2Rlc2lyZWRTdGF0ZScsXG4gICdlbnJpY2htZW50JyxcbiAgJ2VucmljaG1lbnRQYXJhbWV0ZXJzJyxcbiAgJ2ttc0tleUlkZW50aWZpZXInLFxuICAnbG9nQ29uZmlndXJhdGlvbicsXG4gICduYW1lJyxcbiAgJ3JvbGVBcm4nLFxuICAnc291cmNlJyxcbiAgJ3NvdXJjZVBhcmFtZXRlcnMnLFxuICAndGFncycsXG4gICd0YXJnZXQnLFxuICAndGFyZ2V0UGFyYW1ldGVycydcbl0pO1xuXG4vLyBDZm5EZWxpdmVyeVN0cmVhbVByb3BzIGZyb20gYXdzLWNkay1saWIvYXdzLWtpbmVzaXNmaXJlaG9zZVxuZXhwb3J0IGNvbnN0IHZhbGlkQ2ZuRGVsaXZlcnlTdHJlYW1Qcm9wczogU2V0PHN0cmluZz4gPSBuZXcgU2V0KFtcbiAgJ2FtYXpvbk9wZW5TZWFyY2hTZXJ2ZXJsZXNzRGVzdGluYXRpb25Db25maWd1cmF0aW9uJyxcbiAgJ2FtYXpvbm9wZW5zZWFyY2hzZXJ2aWNlRGVzdGluYXRpb25Db25maWd1cmF0aW9uJyxcbiAgJ2RhdGFiYXNlU291cmNlQ29uZmlndXJhdGlvbicsXG4gICdkZWxpdmVyeVN0cmVhbUVuY3J5cHRpb25Db25maWd1cmF0aW9uSW5wdXQnLFxuICAnZGVsaXZlcnlTdHJlYW1OYW1lJyxcbiAgJ2RlbGl2ZXJ5U3RyZWFtVHlwZScsXG4gICdkaXJlY3RQdXRTb3VyY2VDb25maWd1cmF0aW9uJyxcbiAgJ2VsYXN0aWNzZWFyY2hEZXN0aW5hdGlvbkNvbmZpZ3VyYXRpb24nLFxuICAnZXh0ZW5kZWRTM0Rlc3RpbmF0aW9uQ29uZmlndXJhdGlvbicsXG4gICdodHRwRW5kcG9pbnREZXN0aW5hdGlvbkNvbmZpZ3VyYXRpb24nLFxuICAnaWNlYmVyZ0Rlc3RpbmF0aW9uQ29uZmlndXJhdGlvbicsXG4gICdraW5lc2lzU3RyZWFtU291cmNlQ29uZmlndXJhdGlvbicsXG4gICdtc2tTb3VyY2VDb25maWd1cmF0aW9uJyxcbiAgJ3JlZHNoaWZ0RGVzdGluYXRpb25Db25maWd1cmF0aW9uJyxcbiAgJ3MzRGVzdGluYXRpb25Db25maWd1cmF0aW9uJyxcbiAgJ3Nub3dmbGFrZURlc3RpbmF0aW9uQ29uZmlndXJhdGlvbicsXG4gICdzcGx1bmtEZXN0aW5hdGlvbkNvbmZpZ3VyYXRpb24nLFxuICAndGFncydcbl0pO1xuXG4vLyBTdHJlYW1Qcm9wcyBmcm9tIGF3cy1jZGstbGliL2F3cy1raW5lc2lzXG5leHBvcnQgY29uc3QgdmFsaWRTdHJlYW1Qcm9wczogU2V0PHN0cmluZz4gPSBuZXcgU2V0KFtcbiAgJ2VuY3J5cHRpb24nLFxuICAnZW5jcnlwdGlvbktleScsXG4gICdyZW1vdmFsUG9saWN5JyxcbiAgJ3JldGVudGlvblBlcmlvZCcsXG4gICdzaGFyZENvdW50JyxcbiAgJ3NoYXJkTGV2ZWxNZXRyaWNzJyxcbiAgJ3N0cmVhbU1vZGUnLFxuICAnc3RyZWFtTmFtZSdcbl0pO1xuXG4vLyBDZm5Kb2JQcm9wcyBmcm9tIGF3cy1jZGstbGliL2F3cy1nbHVlXG5leHBvcnQgY29uc3QgdmFsaWRDZm5Kb2JQcm9wczogU2V0PHN0cmluZz4gPSBuZXcgU2V0KFtcbiAgJ2FsbG9jYXRlZENhcGFjaXR5JyxcbiAgJ2NvbW1hbmQnLFxuICAnY29ubmVjdGlvbnMnLFxuICAnZGVmYXVsdEFyZ3VtZW50cycsXG4gICdkZXNjcmlwdGlvbicsXG4gICdleGVjdXRpb25DbGFzcycsXG4gICdleGVjdXRpb25Qcm9wZXJ0eScsXG4gICdnbHVlVmVyc2lvbicsXG4gICdqb2JNb2RlJyxcbiAgJ2pvYlJ1blF1ZXVpbmdFbmFibGVkJyxcbiAgJ2xvZ1VyaScsXG4gICdtYWludGVuYW5jZVdpbmRvdycsXG4gICdtYXhDYXBhY2l0eScsXG4gICdtYXhSZXRyaWVzJyxcbiAgJ25hbWUnLFxuICAnbm9uT3ZlcnJpZGFibGVBcmd1bWVudHMnLFxuICAnbm90aWZpY2F0aW9uUHJvcGVydHknLFxuICAnbnVtYmVyT2ZXb3JrZXJzJyxcbiAgJ3JvbGUnLFxuICAnc2VjdXJpdHlDb25maWd1cmF0aW9uJyxcbiAgJ3RhZ3MnLFxuICAndGltZW91dCcsXG4gICd3b3JrZXJUeXBlJ1xuXSk7XG5cbi8vIEtpbmVzaXNFdmVudFNvdXJjZVByb3BzIGZyb20gYXdzLWNkay1saWIvYXdzLWxhbWJkYS1ldmVudC1zb3VyY2VzXG5leHBvcnQgY29uc3QgdmFsaWRLaW5lc2lzRXZlbnRTb3VyY2VQcm9wczogU2V0PHN0cmluZz4gPSBuZXcgU2V0KFtcbiAgJ2JhdGNoU2l6ZScsXG4gICdiaXNlY3RCYXRjaE9uRXJyb3InLFxuICAnZW5hYmxlZCcsXG4gICdmaWx0ZXJFbmNyeXB0aW9uJyxcbiAgJ2ZpbHRlcnMnLFxuICAnbWF4QmF0Y2hpbmdXaW5kb3cnLFxuICAnbWF4UmVjb3JkQWdlJyxcbiAgJ21ldHJpY3NDb25maWcnLFxuICAnb25GYWlsdXJlJyxcbiAgJ3BhcmFsbGVsaXphdGlvbkZhY3RvcicsXG4gICdwcm92aXNpb25lZFBvbGxlckNvbmZpZycsXG4gICdyZXBvcnRCYXRjaEl0ZW1GYWlsdXJlcycsXG4gICdyZXRyeUF0dGVtcHRzJyxcbiAgJ3N0YXJ0aW5nUG9zaXRpb24nLFxuICAnc3RhcnRpbmdQb3NpdGlvblRpbWVzdGFtcCcsXG4gICd0dW1ibGluZ1dpbmRvdydcbl0pO1xuXG4vLyBDZm5DYWNoZUNsdXN0ZXJQcm9wcyBmcm9tIGF3cy1jZGstbGliL2F3cy1lbGFzdGljYWNoZVxuZXhwb3J0IGNvbnN0IHZhbGlkQ2ZuQ2FjaGVDbHVzdGVyUHJvcHM6IFNldDxzdHJpbmc+ID0gbmV3IFNldChbXG4gICdhdXRvTWlub3JWZXJzaW9uVXBncmFkZScsXG4gICdhek1vZGUnLFxuICAnY2FjaGVOb2RlVHlwZScsXG4gICdjYWNoZVBhcmFtZXRlckdyb3VwTmFtZScsXG4gICdjYWNoZVNlY3VyaXR5R3JvdXBOYW1lcycsXG4gICdjYWNoZVN1Ym5ldEdyb3VwTmFtZScsXG4gICdjbHVzdGVyTmFtZScsXG4gICdlbmdpbmUnLFxuICAnZW5naW5lVmVyc2lvbicsXG4gICdpcERpc2NvdmVyeScsXG4gICdsb2dEZWxpdmVyeUNvbmZpZ3VyYXRpb25zJyxcbiAgJ25ldHdvcmtUeXBlJyxcbiAgJ25vdGlmaWNhdGlvblRvcGljQXJuJyxcbiAgJ251bUNhY2hlTm9kZXMnLFxuICAncG9ydCcsXG4gICdwcmVmZXJyZWRBdmFpbGFiaWxpdHlab25lJyxcbiAgJ3ByZWZlcnJlZEF2YWlsYWJpbGl0eVpvbmVzJyxcbiAgJ3ByZWZlcnJlZE1haW50ZW5hbmNlV2luZG93JyxcbiAgJ3NuYXBzaG90QXJucycsXG4gICdzbmFwc2hvdE5hbWUnLFxuICAnc25hcHNob3RSZXRlbnRpb25MaW1pdCcsXG4gICdzbmFwc2hvdFdpbmRvdycsXG4gICd0YWdzJyxcbiAgJ3RyYW5zaXRFbmNyeXB0aW9uRW5hYmxlZCcsXG4gICd2cGNTZWN1cml0eUdyb3VwSWRzJ1xuXSk7XG5cbi8vIENmbkluZGV4UHJvcHMgZnJvbSBhd3MtY2RrLWxpYi9hd3Mta2VuZHJhXG5leHBvcnQgY29uc3QgdmFsaWRDZm5JbmRleFByb3BzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoW1xuICAnY2FwYWNpdHlVbml0cycsXG4gICdkZXNjcmlwdGlvbicsXG4gICdkb2N1bWVudE1ldGFkYXRhQ29uZmlndXJhdGlvbnMnLFxuICAnZWRpdGlvbicsXG4gICduYW1lJyxcbiAgJ3JvbGVBcm4nLFxuICAnc2VydmVyU2lkZUVuY3J5cHRpb25Db25maWd1cmF0aW9uJyxcbiAgJ3RhZ3MnLFxuICAndXNlckNvbnRleHRQb2xpY3knLFxuICAndXNlclRva2VuQ29uZmlndXJhdGlvbnMnXG5dKTtcblxuLy8gQ2ZuRGF0YVNvdXJjZVByb3BzIGZyb20gYXdzLWNkay1saWIvYXdzLWtlbmRyYVxuZXhwb3J0IGNvbnN0IHZhbGlkQ2ZuRGF0YVNvdXJjZVByb3BzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoW1xuICAnY3VzdG9tRG9jdW1lbnRFbnJpY2htZW50Q29uZmlndXJhdGlvbicsXG4gICdkYXRhU291cmNlQ29uZmlndXJhdGlvbicsXG4gICdkZXNjcmlwdGlvbicsXG4gICdpbmRleElkJyxcbiAgJ2xhbmd1YWdlQ29kZScsXG4gICduYW1lJyxcbiAgJ3JvbGVBcm4nLFxuICAnc2NoZWR1bGUnLFxuICAndGFncycsXG4gICd0eXBlJ1xuXSk7XG5cbi8vIEtleVByb3BzIGZyb20gYXdzLWNkay1saWIvYXdzLWttc1xuZXhwb3J0IGNvbnN0IHZhbGlkS2V5UHJvcHM6IFNldDxzdHJpbmc+ID0gbmV3IFNldChbXG4gICdhZG1pbnMnLFxuICAnYWxpYXMnLFxuICAnZGVzY3JpcHRpb24nLFxuICAnZW5hYmxlS2V5Um90YXRpb24nLFxuICAnZW5hYmxlZCcsXG4gICdrZXlTcGVjJyxcbiAgJ2tleVVzYWdlJyxcbiAgJ211bHRpUmVnaW9uJyxcbiAgJ3BlbmRpbmdXaW5kb3cnLFxuICAncG9saWN5JyxcbiAgJ3JlbW92YWxQb2xpY3knLFxuICAncm90YXRpb25QZXJpb2QnXG5dKTtcblxuLy8gVnBjUHJvcHMgZnJvbSBhd3MtY2RrLWxpYi9hd3MtZWMyXG5leHBvcnQgY29uc3QgdmFsaWRWcGNQcm9wczogU2V0PHN0cmluZz4gPSBuZXcgU2V0KFtcbiAgJ2F2YWlsYWJpbGl0eVpvbmVzJyxcbiAgJ2NpZHInLFxuICAnY3JlYXRlSW50ZXJuZXRHYXRld2F5JyxcbiAgJ2RlZmF1bHRJbnN0YW5jZVRlbmFuY3knLFxuICAnZW5hYmxlRG5zSG9zdG5hbWVzJyxcbiAgJ2VuYWJsZURuc1N1cHBvcnQnLFxuICAnZmxvd0xvZ3MnLFxuICAnZ2F0ZXdheUVuZHBvaW50cycsXG4gICdpcEFkZHJlc3NlcycsXG4gICdpcFByb3RvY29sJyxcbiAgJ2lwdjZBZGRyZXNzZXMnLFxuICAnbWF4QXpzJyxcbiAgJ25hdEdhdGV3YXlQcm92aWRlcicsXG4gICduYXRHYXRld2F5U3VibmV0cycsXG4gICduYXRHYXRld2F5cycsXG4gICdyZXNlcnZlZEF6cycsXG4gICdyZXN0cmljdERlZmF1bHRTZWN1cml0eUdyb3VwJyxcbiAgJ3N1Ym5ldENvbmZpZ3VyYXRpb24nLFxuICAndnBjTmFtZScsXG4gICd2cG5Db25uZWN0aW9ucycsXG4gICd2cG5HYXRld2F5JyxcbiAgJ3ZwbkdhdGV3YXlBc24nLFxuICAndnBuUm91dGVQcm9wYWdhdGlvbidcbl0pO1xuXG4vLyBDZm5Nb2RlbFByb3BzIGZyb20gYXdzLWNkay1saWIvYXdzLXNhZ2VtYWtlclxuZXhwb3J0IGNvbnN0IHZhbGlkQ2ZuTW9kZWxQcm9wczogU2V0PHN0cmluZz4gPSBuZXcgU2V0KFtcbiAgJ2NvbnRhaW5lcnMnLFxuICAnZW5hYmxlTmV0d29ya0lzb2xhdGlvbicsXG4gICdleGVjdXRpb25Sb2xlQXJuJyxcbiAgJ2luZmVyZW5jZUV4ZWN1dGlvbkNvbmZpZycsXG4gICdtb2RlbE5hbWUnLFxuICAncHJpbWFyeUNvbnRhaW5lcicsXG4gICd0YWdzJyxcbiAgJ3ZwY0NvbmZpZydcbl0pO1xuXG4vLyBQcml2YXRlSG9zdGVkWm9uZVByb3BzIGZyb20gYXdzLWNkay1saWIvYXdzLXJvdXRlNTNcbmV4cG9ydCBjb25zdCB2YWxpZFByaXZhdGVIb3N0ZWRab25lUHJvcHM6IFNldDxzdHJpbmc+ID0gbmV3IFNldChbXG4gICdhZGRUcmFpbGluZ0RvdCcsXG4gICdjb21tZW50JyxcbiAgJ3F1ZXJ5TG9nc0xvZ0dyb3VwQXJuJyxcbiAgJ3ZwYycsXG4gICd6b25lTmFtZSdcbl0pO1xuXG4vLyBDZm5XZWJBQ0xQcm9wcyBmcm9tIGF3cy1jZGstbGliL2F3cy13YWZ2MlxuZXhwb3J0IGNvbnN0IHZhbGlkQ2ZuV2ViQUNMUHJvcHM6IFNldDxzdHJpbmc+ID0gbmV3IFNldChbXG4gICdhcHBsaWNhdGlvbkNvbmZpZycsXG4gICdhc3NvY2lhdGlvbkNvbmZpZycsXG4gICdjYXB0Y2hhQ29uZmlnJyxcbiAgJ2NoYWxsZW5nZUNvbmZpZycsXG4gICdjdXN0b21SZXNwb25zZUJvZGllcycsXG4gICdkYXRhUHJvdGVjdGlvbkNvbmZpZycsXG4gICdkZWZhdWx0QWN0aW9uJyxcbiAgJ2Rlc2NyaXB0aW9uJyxcbiAgJ25hbWUnLFxuICAnb25Tb3VyY2VERG9TUHJvdGVjdGlvbkNvbmZpZycsXG4gICdydWxlcycsXG4gICdzY29wZScsXG4gICd0YWdzJyxcbiAgJ3Rva2VuRG9tYWlucycsXG4gICd2aXNpYmlsaXR5Q29uZmlnJ1xuXSk7XG5cbi8vIFNoYXJlZCB2YWxpZGF0aW9uIGltcGxlbWVudGF0aW9uXG4vLyBTY29wZSBpcyByZXF1aXJlZCBmb3IgZmVhdHVyZSBmbGFnIGNoZWNraW5nXG4vLyBUYXJnZXQgY2FuIGJlIHVuZGVmaW5lZCAtIHZhbGlkYXRpb24gaXMgc2tpcHBlZCBpZiB0YXJnZXQgaXMgdW5kZWZpbmVkXG5leHBvcnQgZnVuY3Rpb24gVmFsaWRhdGVQcm9wcyhzY29wZTogQ29uc3RydWN0LCB0YXJnZXQ6IGFueSB8IHVuZGVmaW5lZCwgdmFsaWRQcm9wczogU2V0PHN0cmluZz4sIHByb3BzVHlwZU5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAvLyBDaGVjayBpZiB2YWxpZGF0aW9uIGlzIGRpc2FibGVkIHZpYSBmZWF0dXJlIGZsYWdcbiAgaWYgKGNkay5GZWF0dXJlRmxhZ3Mub2Yoc2NvcGUpLmlzRW5hYmxlZChESVNBQkxFX1BST1BFUlRZX1ZBTElEQVRJT04pKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmICghdGFyZ2V0KSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGZvciAoY29uc3Qga2V5IGluIHRhcmdldCkge1xuICAgIGlmICghdmFsaWRQcm9wcy5oYXMoa2V5KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBFUlJPUiAtICR7a2V5fSBpcyBub3QgYSB2YWxpZCBwcm9wZXJ0eSBvZiAke3Byb3BzVHlwZU5hbWV9YCk7XG4gICAgfVxuICB9XG59XG5cbi8vIFZhbGlkYXRpb24gZnVuY3Rpb25zXG5leHBvcnQgZnVuY3Rpb24gVmFsaWRhdGVBcHBsaWNhdGlvbkxvYWRCYWxhbmNlclByb3BzKHNjb3BlOiBDb25zdHJ1Y3QsIHRhcmdldD86IGFueSk6IHZvaWQge1xuICBWYWxpZGF0ZVByb3BzKHNjb3BlLCB0YXJnZXQsIHZhbGlkQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJQcm9wcywgJ0FwcGxpY2F0aW9uTG9hZEJhbGFuY2VyUHJvcHMnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFZhbGlkYXRlQXBwbGljYXRpb25MaXN0ZW5lclByb3BzKHNjb3BlOiBDb25zdHJ1Y3QsIHRhcmdldD86IGFueSk6IHZvaWQge1xuICBWYWxpZGF0ZVByb3BzKHNjb3BlLCB0YXJnZXQsIHZhbGlkQXBwbGljYXRpb25MaXN0ZW5lclByb3BzLCAnQXBwbGljYXRpb25MaXN0ZW5lclByb3BzJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBWYWxpZGF0ZUNvbnRhaW5lckRlZmluaXRpb25Qcm9wcyhzY29wZTogQ29uc3RydWN0LCB0YXJnZXQ/OiBhbnkpOiB2b2lkIHtcbiAgVmFsaWRhdGVQcm9wcyhzY29wZSwgdGFyZ2V0LCB2YWxpZENvbnRhaW5lckRlZmluaXRpb25Qcm9wcywgJ0NvbnRhaW5lckRlZmluaXRpb25Qcm9wcycpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gVmFsaWRhdGVGYXJnYXRlVGFza0RlZmluaXRpb25Qcm9wcyhzY29wZTogQ29uc3RydWN0LCB0YXJnZXQ/OiBhbnkpOiB2b2lkIHtcbiAgVmFsaWRhdGVQcm9wcyhzY29wZSwgdGFyZ2V0LCB2YWxpZEZhcmdhdGVUYXNrRGVmaW5pdGlvblByb3BzLCAnRmFyZ2F0ZVRhc2tEZWZpbml0aW9uUHJvcHMnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFZhbGlkYXRlRmFyZ2F0ZVNlcnZpY2VQcm9wcyhzY29wZTogQ29uc3RydWN0LCB0YXJnZXQ/OiBhbnkpOiB2b2lkIHtcbiAgVmFsaWRhdGVQcm9wcyhzY29wZSwgdGFyZ2V0LCB2YWxpZEZhcmdhdGVTZXJ2aWNlUHJvcHMsICdGYXJnYXRlU2VydmljZVByb3BzJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBWYWxpZGF0ZUxhbWJkYVJlc3RBcGlQcm9wcyhzY29wZTogQ29uc3RydWN0LCB0YXJnZXQ/OiBhbnkpOiB2b2lkIHtcbiAgVmFsaWRhdGVQcm9wcyhzY29wZSwgdGFyZ2V0LCB2YWxpZExhbWJkYVJlc3RBcGlQcm9wcywgJ0xhbWJkYVJlc3RBcGlQcm9wcycpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gVmFsaWRhdGVSZXN0QXBpUHJvcHMoc2NvcGU6IENvbnN0cnVjdCwgdGFyZ2V0PzogYW55KTogdm9pZCB7XG4gIFZhbGlkYXRlUHJvcHMoc2NvcGUsIHRhcmdldCwgdmFsaWRSZXN0QXBpUHJvcHMsICdSZXN0QXBpUHJvcHMnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFZhbGlkYXRlRGlzdHJpYnV0aW9uUHJvcHMoc2NvcGU6IENvbnN0cnVjdCwgdGFyZ2V0PzogYW55KTogdm9pZCB7XG4gIFZhbGlkYXRlUHJvcHMoc2NvcGUsIHRhcmdldCwgdmFsaWREaXN0cmlidXRpb25Qcm9wcywgJ0Rpc3RyaWJ1dGlvblByb3BzJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBWYWxpZGF0ZVVzZXJQb29sQ2xpZW50UHJvcHMoc2NvcGU6IENvbnN0cnVjdCwgdGFyZ2V0PzogYW55KTogdm9pZCB7XG4gIFZhbGlkYXRlUHJvcHMoc2NvcGUsIHRhcmdldCwgdmFsaWRVc2VyUG9vbENsaWVudFByb3BzLCAnVXNlclBvb2xDbGllbnRQcm9wcycpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gVmFsaWRhdGVEeW5hbW9FdmVudFNvdXJjZVByb3BzKHNjb3BlOiBDb25zdHJ1Y3QsIHRhcmdldD86IGFueSk6IHZvaWQge1xuICBWYWxpZGF0ZVByb3BzKHNjb3BlLCB0YXJnZXQsIHZhbGlkRHluYW1vRXZlbnRTb3VyY2VQcm9wcywgJ0R5bmFtb0V2ZW50U291cmNlUHJvcHMnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFZhbGlkYXRlQ2ZuUGlwZVByb3BzKHNjb3BlOiBDb25zdHJ1Y3QsIHRhcmdldD86IGFueSk6IHZvaWQge1xuICBWYWxpZGF0ZVByb3BzKHNjb3BlLCB0YXJnZXQsIHZhbGlkQ2ZuUGlwZVByb3BzLCAnQ2ZuUGlwZVByb3BzJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBWYWxpZGF0ZUNmbkRlbGl2ZXJ5U3RyZWFtUHJvcHMoc2NvcGU6IENvbnN0cnVjdCwgdGFyZ2V0PzogYW55KTogdm9pZCB7XG4gIFZhbGlkYXRlUHJvcHMoc2NvcGUsIHRhcmdldCwgdmFsaWRDZm5EZWxpdmVyeVN0cmVhbVByb3BzLCAnQ2ZuRGVsaXZlcnlTdHJlYW1Qcm9wcycpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gVmFsaWRhdGVTdHJlYW1Qcm9wcyhzY29wZTogQ29uc3RydWN0LCB0YXJnZXQ/OiBhbnkpOiB2b2lkIHtcbiAgVmFsaWRhdGVQcm9wcyhzY29wZSwgdGFyZ2V0LCB2YWxpZFN0cmVhbVByb3BzLCAnU3RyZWFtUHJvcHMnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFZhbGlkYXRlQ2ZuSm9iUHJvcHMoc2NvcGU6IENvbnN0cnVjdCwgdGFyZ2V0PzogYW55KTogdm9pZCB7XG4gIFZhbGlkYXRlUHJvcHMoc2NvcGUsIHRhcmdldCwgdmFsaWRDZm5Kb2JQcm9wcywgJ0NmbkpvYlByb3BzJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBWYWxpZGF0ZUtpbmVzaXNFdmVudFNvdXJjZVByb3BzKHNjb3BlOiBDb25zdHJ1Y3QsIHRhcmdldD86IGFueSk6IHZvaWQge1xuICBWYWxpZGF0ZVByb3BzKHNjb3BlLCB0YXJnZXQsIHZhbGlkS2luZXNpc0V2ZW50U291cmNlUHJvcHMsICdLaW5lc2lzRXZlbnRTb3VyY2VQcm9wcycpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gVmFsaWRhdGVDZm5DYWNoZUNsdXN0ZXJQcm9wcyhzY29wZTogQ29uc3RydWN0LCB0YXJnZXQ/OiBhbnkpOiB2b2lkIHtcbiAgVmFsaWRhdGVQcm9wcyhzY29wZSwgdGFyZ2V0LCB2YWxpZENmbkNhY2hlQ2x1c3RlclByb3BzLCAnQ2ZuQ2FjaGVDbHVzdGVyUHJvcHMnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFZhbGlkYXRlQ2ZuSW5kZXhQcm9wcyhzY29wZTogQ29uc3RydWN0LCB0YXJnZXQ/OiBhbnkpOiB2b2lkIHtcbiAgVmFsaWRhdGVQcm9wcyhzY29wZSwgdGFyZ2V0LCB2YWxpZENmbkluZGV4UHJvcHMsICdDZm5JbmRleFByb3BzJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBWYWxpZGF0ZUNmbkRhdGFTb3VyY2VQcm9wcyhzY29wZTogQ29uc3RydWN0LCB0YXJnZXQ/OiBhbnkpOiB2b2lkIHtcbiAgVmFsaWRhdGVQcm9wcyhzY29wZSwgdGFyZ2V0LCB2YWxpZENmbkRhdGFTb3VyY2VQcm9wcywgJ0NmbkRhdGFTb3VyY2VQcm9wcycpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gVmFsaWRhdGVLZXlQcm9wcyhzY29wZTogQ29uc3RydWN0LCB0YXJnZXQ/OiBhbnkpOiB2b2lkIHtcbiAgVmFsaWRhdGVQcm9wcyhzY29wZSwgdGFyZ2V0LCB2YWxpZEtleVByb3BzLCAnS2V5UHJvcHMnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFZhbGlkYXRlVnBjUHJvcHMoc2NvcGU6IENvbnN0cnVjdCwgdGFyZ2V0PzogYW55KTogdm9pZCB7XG4gIFZhbGlkYXRlUHJvcHMoc2NvcGUsIHRhcmdldCwgdmFsaWRWcGNQcm9wcywgJ1ZwY1Byb3BzJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBWYWxpZGF0ZUNmbk1vZGVsUHJvcHMoc2NvcGU6IENvbnN0cnVjdCwgdGFyZ2V0PzogYW55KTogdm9pZCB7XG4gIFZhbGlkYXRlUHJvcHMoc2NvcGUsIHRhcmdldCwgdmFsaWRDZm5Nb2RlbFByb3BzLCAnQ2ZuTW9kZWxQcm9wcycpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gVmFsaWRhdGVQcml2YXRlSG9zdGVkWm9uZVByb3BzKHNjb3BlOiBDb25zdHJ1Y3QsIHRhcmdldD86IGFueSk6IHZvaWQge1xuICBWYWxpZGF0ZVByb3BzKHNjb3BlLCB0YXJnZXQsIHZhbGlkUHJpdmF0ZUhvc3RlZFpvbmVQcm9wcywgJ1ByaXZhdGVIb3N0ZWRab25lUHJvcHMnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFZhbGlkYXRlQ2ZuV2ViQUNMUHJvcHMoc2NvcGU6IENvbnN0cnVjdCwgdGFyZ2V0PzogYW55KTogdm9pZCB7XG4gIFZhbGlkYXRlUHJvcHMoc2NvcGUsIHRhcmdldCwgdmFsaWRDZm5XZWJBQ0xQcm9wcywgJ0NmbldlYkFDTFByb3BzJyk7XG59XG4iXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aws-solutions-constructs/core",
3
- "version": "2.101.0",
3
+ "version": "2.103.0",
4
4
  "description": "Core CDK Construct for patterns library",
5
5
  "main": "index.js",
6
6
  "types": "index.ts",
@@ -57,7 +57,7 @@
57
57
  "deepmerge": "^4.0.0",
58
58
  "npmlog": "^7.0.0",
59
59
  "constructs": "^10.0.0",
60
- "@aws-cdk/cloud-assembly-schema": "^53.13.0"
60
+ "@aws-cdk/cloud-assembly-schema": "^54.0.0"
61
61
  },
62
62
  "devDependencies": {
63
63
  "@types/deep-diff": "^1.0.0",
@@ -66,7 +66,7 @@
66
66
  "@types/jest": "^27.4.0",
67
67
  "@types/node": "^20.0.0",
68
68
  "constructs": "^10.0.0",
69
- "aws-cdk-lib": "2.248.0"
69
+ "aws-cdk-lib": "2.260.0"
70
70
  },
71
71
  "jest": {
72
72
  "moduleFileExtensions": [
@@ -89,6 +89,6 @@
89
89
  ],
90
90
  "peerDependencies": {
91
91
  "constructs": "^10.0.0",
92
- "aws-cdk-lib": "^2.248.0"
92
+ "aws-cdk-lib": "^2.260.0"
93
93
  }
94
94
  }
@@ -369,18 +369,6 @@ test('Suppress cfn-nag warning for s3 bucket notification', () => {
369
369
  }
370
370
  }
371
371
  });
372
- template.hasResource("AWS::IAM::Policy", {
373
- Metadata: {
374
- cfn_nag: {
375
- rules_to_suppress: [
376
- {
377
- id: "W12",
378
- reason: "Bucket resource is '*' due to circular dependency with bucket and role creation at the same time"
379
- }
380
- ]
381
- }
382
- }
383
- });
384
372
  });
385
373
  test('test s3Bucket removalPolicy override', () => {
386
374
  const stack = new aws_cdk_lib_1.Stack();
@@ -427,4 +415,4 @@ test('Confirm Log Bucket lifecycle rules persist', () => {
427
415
  }
428
416
  });
429
417
  });
430
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiczMtYnVja2V0LWhlbHBlci50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiczMtYnVja2V0LWhlbHBlci50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7R0FXRzs7QUFFSCw2Q0FBNkQ7QUFDN0QseUNBQXlDO0FBQ3pDLHdEQUF3RDtBQUN4RCxxQ0FBcUM7QUFDckMsdURBQWtEO0FBQ2xELCtDQUEwRDtBQUMxRCwrQ0FBbUQ7QUFFbkQsSUFBSSxDQUFDLDZFQUE2RSxFQUFFLEdBQUcsRUFBRTtJQUN2RixNQUFNLEtBQUssR0FBRyxJQUFJLG1CQUFLLEVBQUUsQ0FBQztJQUUxQixJQUFJLENBQUM7UUFDSCxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNYLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEMsQ0FBQztBQUNILENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLHlCQUF5QixFQUFFLEdBQUcsRUFBRTtJQUNuQyxNQUFNLEtBQUssR0FBRyxJQUFJLG1CQUFLLEVBQUUsQ0FBQztJQUUxQixNQUFNLHFCQUFxQixHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUV0RSxNQUFNLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDbkQsTUFBTSxDQUFDLHFCQUFxQixDQUFDLGFBQWEsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBRTFELE1BQU0sUUFBUSxHQUFHLHFCQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxpQkFBaUIsRUFBRTtRQUNoRCxvQkFBb0IsRUFBRTtZQUNwQixx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QUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUM7QUFFSCxJQUFJLENBQUMsbUNBQW1DLEVBQUUsR0FBRyxFQUFFO0lBQzdDLE1BQU0sS0FBSyxHQUFHLElBQUksbUJBQUssRUFBRSxDQUFDO0lBRTFCLE1BQU0sNEJBQTRCLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUU7UUFDakUsZUFBZSxFQUFFLEtBQUs7S0FDdkIsQ0FBQyxDQUFDO0lBRUgsTUFBTSxDQUFDLDRCQUE0QixDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzFELE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQyxhQUFhLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7SUFFckUsSUFBQSxnQ0FBa0IsRUFBQyxLQUFLLEVBQUUsaUJBQWlCLEVBQUU7UUFDM0Msb0JBQW9CLEVBQUUsRUFDckI7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyw0Q0FBNEMsRUFBRyxHQUFHLEVBQUU7SUFDdkQsTUFBTSxLQUFLLEdBQUcsSUFBSSxtQkFBSyxFQUFFLENBQUM7SUFFMUIsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUU7UUFDNUIsa0JBQWtCLEVBQUU7WUFDbEIsY0FBYyxFQUFFO2dCQUNkO29CQUNFLFVBQVUsRUFBRSxzQkFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7aUJBQy9CO2FBQUM7U0FDTDtLQUNGLENBQUMsQ0FBQztJQUVILE1BQU0sUUFBUSxHQUFHLHFCQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNDLFFBQVEsQ0FBQyxXQUFXLENBQUMsaUJBQWlCLEVBQUU7UUFDdEMsVUFBVSxFQUFFO1lBQ1Ysc0JBQXNCLEVBQUUsRUFBRTtTQUMzQjtLQUNGLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIikuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2VcbiAqICB3aXRoIHRoZSBMaWNlbnNlLiBBIGNvcHkgb2YgdGhlIExpY2Vuc2UgaXMgbG9jYXRlZCBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIG9yIGluIHRoZSAnbGljZW5zZScgZmlsZSBhY2NvbXBhbnlpbmcgdGhpcyBmaWxlLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTXG4gKiAgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcbiAqICBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgRHVyYXRpb24sIFN0YWNrLCBSZW1vdmFsUG9saWN5IH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgczMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzJztcbmltcG9ydCAqIGFzIHMzbiBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMtbm90aWZpY2F0aW9ucyc7XG5pbXBvcnQgKiBhcyBkZWZhdWx0cyBmcm9tICcuLi9pbmRleCc7XG5pbXBvcnQgeyBUZW1wbGF0ZSB9IGZyb20gJ2F3cy1jZGstbGliL2Fzc2VydGlvbnMnO1xuaW1wb3J0IHsgQnVja2V0LCBTdG9yYWdlQ2xhc3MgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMnO1xuaW1wb3J0IHsgZXhwZWN0Tm9uZXhpc3RlbmNlIH0gZnJvbSBcIi4vdGVzdC1oZWxwZXJcIjtcblxudGVzdCgnY2hlY2sgZXhjZXB0aW9uIGZvciBNaXNzaW5nIGV4aXN0aW5nQnVja2V0T2JqIGZyb20gcHJvcHMgZm9yIGRlcGxveSA9IGZhbHNlJywgKCkgPT4ge1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuXG4gIHRyeSB7XG4gICAgZGVmYXVsdHMuYnVpbGRTM0J1Y2tldChzdGFjaywge30pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgZXhwZWN0KGUpLnRvQmVJbnN0YW5jZU9mKEVycm9yKTtcbiAgfVxufSk7XG5cbnRlc3QoJ3MzIGJ1Y2tldCB3aXRoIGJ1Y2tldElkJywgKCkgPT4ge1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuXG4gIGNvbnN0IGJ1aWxkUzNCdWNrZXRSZXNwb25zZSA9IGRlZmF1bHRzLmJ1aWxkUzNCdWNrZXQoc3RhY2ssIHt9LCAnbXknKTtcblxuICBleHBlY3QoYnVpbGRTM0J1Y2tldFJlc3BvbnNlLmJ1Y2tldCkudG9CZURlZmluZWQoKTtcbiAgZXhwZWN0KGJ1aWxkUzNCdWNrZXRSZXNwb25zZS5sb2dnaW5nQnVja2V0KS50b0JlRGVmaW5lZCgpO1xuXG4gIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKFwiQVdTOjpTMzo6QnVja2V0XCIsIHtcbiAgICBMb2dnaW5nQ29uZmlndXJhdGlvbjoge1xuICAgICAgRGVzdGluYXRpb25CdWNrZXROYW1lOiB7XG4gICAgICAgIFJlZjogXCJteVMzTG9nZ2luZ0J1Y2tldERFNDYxMzQ0XCJcbiAgICAgIH1cbiAgICB9LFxuICB9KTtcbn0pO1xuXG50ZXN0KCdzMyBidWNrZXQgd2l0aCBidWNrZXRQcm9wcycsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcblxuICBjb25zdCBidWlsZFMzQnVja2V0UmVzcG9uc2UgPSBkZWZhdWx0cy5idWlsZFMzQnVja2V0KHN0YWNrLCB7XG4gICAgYnVja2V0UHJvcHM6IHtcbiAgICAgIGJ1Y2tldE5hbWU6ICdteWJ1Y2tldCdcbiAgICB9XG4gIH0pO1xuXG4gIGV4cGVjdChidWlsZFMzQnVja2V0UmVzcG9uc2UuYnVja2V0KS50b0JlRGVmaW5lZCgpO1xuICBleHBlY3QoYnVpbGRTM0J1Y2tldFJlc3BvbnNlLmxvZ2dpbmdCdWNrZXQpLnRvQmVEZWZpbmVkKCk7XG5cbiAgY29uc3QgdGVtcGxhdGUgPSBUZW1wbGF0ZS5mcm9tU3RhY2soc3RhY2spO1xuICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoXCJBV1M6OlMzOjpCdWNrZXRcIiwge1xuICAgIEJ1Y2tldE5hbWU6IFwibXlidWNrZXRcIlxuICB9KTtcbn0pO1xuXG50ZXN0KCdzMyBidWNrZXQgd2l0aCBkZWZhdWx0IHByb3BzJywgKCkgPT4ge1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuXG4gIGNvbnN0IGJ1aWxkUzNCdWNrZXRSZXNwb25zZSA9IGRlZmF1bHRzLmJ1aWxkUzNCdWNrZXQoc3RhY2ssIHt9KTtcblxuICBleHBlY3QoYnVpbGRTM0J1Y2tldFJlc3BvbnNlLmJ1Y2tldCkudG9CZURlZmluZWQoKTtcbiAgZXhwZWN0KGJ1aWxkUzNCdWNrZXRSZXNwb25zZS5sb2dnaW5nQnVja2V0KS50b0JlRGVmaW5lZCgpO1xuXG4gIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKFwiQVdTOjpTMzo6QnVja2V0XCIsIHtcbiAgICBCdWNrZXRFbmNyeXB0aW9uOiB7XG4gICAgICBTZXJ2ZXJTaWRlRW5jcnlwdGlvbkNvbmZpZ3VyYXRpb246IFtcbiAgICAgICAge1xuICAgICAgICAgIFNlcnZlclNpZGVFbmNyeXB0aW9uQnlEZWZhdWx0OiB7XG4gICAgICAgICAgICBTU0VBbGdvcml0aG06IFwiQUVTMjU2XCJcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9LFxuICAgIFB1YmxpY0FjY2Vzc0Jsb2NrQ29uZmlndXJhdGlvbjoge1xuICAgICAgQmxvY2tQdWJsaWNBY2xzOiB0cnVlLFxuICAgICAgQmxvY2tQdWJsaWNQb2xpY3k6IHRydWUsXG4gICAgICBJZ25vcmVQdWJsaWNBY2xzOiB0cnVlLFxuICAgICAgUmVzdHJpY3RQdWJsaWNCdWNrZXRzOiB0cnVlXG4gICAgfSxcbiAgICBWZXJzaW9uaW5nQ29uZmlndXJhdGlvbjoge1xuICAgICAgU3RhdHVzOiBcIkVuYWJsZWRcIlxuICAgIH1cbiAgfSk7XG59KTtcblxudGVzdCgnczMgYnVja2V0IHdpdGggbGlmZSBjeWNsZSBwb2xpY3knLCAoKSA9PiB7XG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG5cbiAgY29uc3QgYnVpbGRTM0J1Y2tldFJlc3BvbnNlID0gZGVmYXVsdHMuYnVpbGRTM0J1Y2tldChzdGFjaywge1xuICAgIGJ1Y2tldFByb3BzOiB7XG4gICAgICBsaWZlY3ljbGVSdWxlczogW3tcbiAgICAgICAgZXhwaXJhdGlvbjogRHVyYXRpb24uZGF5cygzNjUpLFxuICAgICAgICB0cmFuc2l0aW9uczogW3tcbiAgICAgICAgICBzdG9yYWdlQ2xhc3M6IFN0b3JhZ2VDbGFzcy5JTkZSRVFVRU5UX0FDQ0VTUyxcbiAgICAgICAgICB0cmFuc2l0aW9uQWZ0ZXI6IER1cmF0aW9uLmRheXMoMzApXG4gICAgICAgIH0sIHtcbiAgICAgICAgICBzdG9yYWdlQ2xhc3M6IFN0b3JhZ2VDbGFzcy5HTEFDSUVSLFxuICAgICAgICAgIHRyYW5zaXRpb25BZnRlcjogRHVyYXRpb24uZGF5cyg5MClcbiAgICAgICAgfV1cbiAgICAgIH1dXG4gICAgfVxuICB9KTtcblxuICBleHBlY3QoYnVpbGRTM0J1Y2tldFJlc3BvbnNlLmJ1Y2tldCkudG9CZURlZmluZWQoKTtcbiAgZXhwZWN0KGJ1aWxkUzNCdWNrZXRSZXNwb25zZS5sb2dnaW5nQnVja2V0KS50b0JlRGVmaW5lZCgpO1xuXG4gIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKFwiQVdTOjpTMzo6QnVja2V0XCIsIHtcbiAgICBMaWZlY3ljbGVDb25maWd1cmF0aW9uOiB7XG4gICAgICBSdWxlczogW1xuICAgICAgICB7XG4gICAgICAgICAgRXhwaXJhdGlvbkluRGF5czogMzY1LFxuICAgICAgICAgIFN0YXR1czogXCJFbmFibGVkXCIsXG4gICAgICAgICAgVHJhbnNpdGlvbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgU3RvcmFnZUNsYXNzOiBcIlNUQU5EQVJEX0lBXCIsXG4gICAgICAgICAgICAgIFRyYW5zaXRpb25JbkRheXM6IDMwXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBTdG9yYWdlQ2xhc3M6IFwiR0xBQ0lFUlwiLFxuICAgICAgICAgICAgICBUcmFuc2l0aW9uSW5EYXlzOiA5MFxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH1cbiAgfSk7XG59KTtcblxudGVzdCgnczMgYnVja2V0IHdpdGggYWNjZXNzIGxvZ2dpbmcgY29uZmlndXJlZCcsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgY29uc3QgbXlidWNrZXQgPSBuZXcgQnVja2V0KHN0YWNrLCAnbXlidWNrZXQnLCB7XG4gICAgc2VydmVyQWNjZXNzTG9nc0J1Y2tldDogbmV3IEJ1Y2tldChzdGFjaywgJ215YWNjZXNzbG9nYnVja2V0Jywge30pXG4gIH0pO1xuXG4gIGNvbnN0IGJ1aWxkUzNCdWNrZXRSZXNwb25zZSA9IGRlZmF1bHRzLmJ1aWxkUzNCdWNrZXQoc3RhY2ssIHtcbiAgICBidWNrZXRQcm9wczoge1xuICAgICAgc2VydmVyQWNjZXNzTG9nc0J1Y2tldDogbXlidWNrZXRcbiAgICB9XG4gIH0pO1xuXG4gIGV4cGVjdChidWlsZFMzQnVja2V0UmVzcG9uc2UuYnVja2V0KS50b0JlRGVmaW5lZCgpO1xuICAvLyBUaGlzIHZhbHVlIHNob3VsZCBiZSBwb3B1bGF0ZWQsIGVudGVyZWQgSXNzdWUgOTA3XG4gIC8vIGV4cGVjdChyZXNwb25zZS5sb2dnaW5nQnVja2V0KS50b0JlRGVmaW5lZCgpO1xuXG4gIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKFwiQVdTOjpTMzo6QnVja2V0XCIsIHtcbiAgICBMb2dnaW5nQ29uZmlndXJhdGlvbjoge1xuICAgICAgRGVzdGluYXRpb25CdWNrZXROYW1lOiB7XG4gICAgICAgIFJlZjogXCJteWJ1Y2tldDE2MEY4MTMyXCJcbiAgICAgIH1cbiAgICB9LFxuICB9KTtcbn0pO1xuXG50ZXN0KCdDaGVjayBTMyBCdWNrZXQgcG9saWN5JywgKCkgPT4ge1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuICBkZWZhdWx0cy5idWlsZFMzQnVja2V0KHN0YWNrLCB7fSk7XG5cbiAgY29uc3QgdGVtcGxhdGUgPSBUZW1wbGF0ZS5mcm9tU3RhY2soc3RhY2spO1xuICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoXCJBV1M6OlMzOjpCdWNrZXRQb2xpY3lcIiwge1xuICAgIFBvbGljeURvY3VtZW50OiB7XG4gICAgICBTdGF0ZW1lbnQ6IFtcbiAgICAgICAge1xuICAgICAgICAgIEFjdGlvbjogXCJzMzoqXCIsXG4gICAgICAgICAgQ29uZGl0aW9uOiB7XG4gICAgICAgICAgICBCb29sOiB7XG4gICAgICAgICAgICAgIFwiYXdzOlNlY3VyZVRyYW5zcG9ydFwiOiBcImZhbHNlXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgRWZmZWN0OiBcIkRlbnlcIixcbiAgICAgICAgICBQcmluY2lwYWw6IHtcbiAgICAgICAgICAgIEFXUzogXCIqXCJcbiAgICAgICAgICB9LFxuICAgICAgICAgIFJlc291cmNlOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIFwiRm46OkdldEF0dFwiOiBbXG4gICAgICAgICAgICAgICAgXCJTM0J1Y2tldDA3NjgyOTkzXCIsXG4gICAgICAgICAgICAgICAgXCJBcm5cIlxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBcIkZuOjpKb2luXCI6IFtcbiAgICAgICAgICAgICAgICBcIlwiLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgXCJGbjo6R2V0QXR0XCI6IFtcbiAgICAgICAgICAgICAgICAgICAgICBcIlMzQnVja2V0MDc2ODI5OTNcIixcbiAgICAgICAgICAgICAgICAgICAgICBcIkFyblwiXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBcIi8qXCJcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBWZXJzaW9uOiBcIjIwMTItMTAtMTdcIixcbiAgICB9LFxuICB9KTtcbn0pO1xuXG50ZXN0KCdzMyBidWNrZXQgd2l0aCBMb2dnaW5nQnVja2V0IGFuZCB2ZXJzaW9uaW5nIHR1cm5lZCBvZmYnLCAoKSA9PiB7XG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG4gIGNvbnN0IG15YnVja2V0ID0gbmV3IEJ1Y2tldChzdGFjaywgJ215YnVja2V0Jywge1xuICAgIHNlcnZlckFjY2Vzc0xvZ3NCdWNrZXQ6IG5ldyBCdWNrZXQoc3RhY2ssICdteWFjY2Vzc2xvZ2J1Y2tldCcsIHt9KVxuICB9KTtcblxuICBjb25zdCBidWlsZFMzQnVja2V0UmVzcG9uc2UgPSBkZWZhdWx0cy5idWlsZFMzQnVja2V0KHN0YWNrLCB7XG4gICAgYnVja2V0UHJvcHM6IHtcbiAgICAgIHNlcnZlckFjY2Vzc0xvZ3NCdWNrZXQ6IG15YnVja2V0LFxuICAgICAgc2VydmVyQWNjZXNzTG9nc1ByZWZpeDogJ2FjY2Vzcy1sb2dzJyxcbiAgICAgIHZlcnNpb25lZDogZmFsc2VcbiAgICB9XG4gIH0pO1xuXG4gIGV4cGVjdChidWlsZFMzQnVja2V0UmVzcG9uc2UuYnVja2V0KS50b0JlRGVmaW5lZCgpO1xuICAvLyBUaGUgbGluZSBiZWxvdyBmYWlscywgdGhpcyBhcHBlYXJzIHRvIGJlIGEgYnVnLiBFbnRlcmVkIElzc3VlIDkwNlxuICBleHBlY3QoYnVpbGRTM0J1Y2tldFJlc3BvbnNlLmxvZ2dpbmdCdWNrZXQpLnRvQmVEZWZpbmVkKCk7XG5cbiAgY29uc3QgdGVtcGxhdGUgPSBUZW1wbGF0ZS5mcm9tU3RhY2soc3RhY2spO1xuICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoXCJBV1M6OlMzOjpCdWNrZXRcIiwge1xuICAgIEJ1Y2tldEVuY3J5cHRpb246IHtcbiAgICAgIFNlcnZlclNpZGVFbmNyeXB0aW9uQ29uZmlndXJhdGlvbjogW1xuICAgICAgICB7XG4gICAgICAgICAgU2VydmVyU2lkZUVuY3J5cHRpb25CeURlZmF1bHQ6IHtcbiAgICAgICAgICAgIFNTRUFsZ29yaXRobTogXCJBRVMyNTZcIlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0sXG4gICAgTG9nZ2luZ0NvbmZpZ3VyYXRpb246IHtcbiAgICAgIERlc3RpbmF0aW9uQnVja2V0TmFtZToge1xuICAgICAgICBSZWY6IFwibXlidWNrZXQxNjBGODEzMlwiXG4gICAgICB9LFxuICAgICAgTG9nRmlsZVByZWZpeDogXCJhY2Nlc3MtbG9nc1wiXG4gICAgfSxcbiAgICBQdWJsaWNBY2Nlc3NCbG9ja0NvbmZpZ3VyYXRpb246IHtcbiAgICAgIEJsb2NrUHVibGljQWNsczogdHJ1ZSxcbiAgICAgIEJsb2NrUHVibGljUG9saWN5OiB0cnVlLFxuICAgICAgSWdub3JlUHVibGljQWNsczogdHJ1ZSxcbiAgICAgIFJlc3RyaWN0UHVibGljQnVja2V0czogdHJ1ZVxuICAgIH1cbiAgfSk7XG59KTtcblxudGVzdCgnczMgYnVja2V0IHZlcnNpb25pbmcgdHVybmVkIG9mZicsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcblxuICBjb25zdCBidWlsZFMzQnVja2V0UmVzcG9uc2UgPSBkZWZhdWx0cy5idWlsZFMzQnVja2V0KHN0YWNrLCB7XG4gICAgYnVja2V0UHJvcHM6IHtcbiAgICAgIHNlcnZlckFjY2Vzc0xvZ3NQcmVmaXg6ICdhY2Nlc3MtbG9ncycsXG4gICAgICB2ZXJzaW9uZWQ6IGZhbHNlXG4gICAgfVxuICB9KTtcblxuICBleHBlY3QoYnVpbGRTM0J1Y2tldFJlc3BvbnNlLmJ1Y2tldCkudG9CZURlZmluZWQoKTtcbiAgZXhwZWN0KGJ1aWxkUzNCdWNrZXRSZXNwb25zZS5sb2dnaW5nQnVja2V0KS50b0JlRGVmaW5lZCgpO1xuXG4gIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKFwiQVdTOjpTMzo6QnVja2V0XCIsIHtcbiAgICBCdWNrZXRFbmNyeXB0aW9uOiB7XG4gICAgICBTZXJ2ZXJTaWRlRW5jcnlwdGlvbkNvbmZpZ3VyYXRpb246IFtcbiAgICAgICAge1xuICAgICAgICAgIFNlcnZlclNpZGVFbmNyeXB0aW9uQnlEZWZhdWx0OiB7XG4gICAgICAgICAgICBTU0VBbGdvcml0aG06IFwiQUVTMjU2XCJcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9LFxuICAgIExvZ2dpbmdDb25maWd1cmF0aW9uOiB7XG4gICAgICBEZXN0aW5hdGlvbkJ1Y2tldE5hbWU6IHtcbiAgICAgICAgUmVmOiBcIlMzTG9nZ2luZ0J1Y2tldDgwMEEyQjI3XCJcbiAgICAgIH0sXG4gICAgICBMb2dGaWxlUHJlZml4OiBcImFjY2Vzcy1sb2dzXCJcbiAgICB9LFxuICAgIFB1YmxpY0FjY2Vzc0Jsb2NrQ29uZmlndXJhdGlvbjoge1xuICAgICAgQmxvY2tQdWJsaWNBY2xzOiB0cnVlLFxuICAgICAgQmxvY2tQdWJsaWNQb2xpY3k6IHRydWUsXG4gICAgICBJZ25vcmVQdWJsaWNBY2xzOiB0cnVlLFxuICAgICAgUmVzdHJpY3RQdWJsaWNCdWNrZXRzOiB0cnVlXG4gICAgfVxuICB9KTtcbn0pO1xuXG50ZXN0KCdzMyBidWNrZXQgd2l0aCBMb2dnaW5nQnVja2V0IGFuZCBhdXRvIGRlbGV0ZSBvYmplY3RzJywgKCkgPT4ge1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuXG4gIGNvbnN0IGJ1aWxkUzNCdWNrZXRSZXNwb25zZSA9IGRlZmF1bHRzLmJ1aWxkUzNCdWNrZXQoc3RhY2ssIHtcbiAgICBsb2dnaW5nQnVja2V0UHJvcHM6IHtcbiAgICAgIHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICAgIGF1dG9EZWxldGVPYmplY3RzOiB0cnVlXG4gICAgfVxuICB9KTtcblxuICBleHBlY3QoYnVpbGRTM0J1Y2tldFJlc3BvbnNlLmJ1Y2tldCkudG9CZURlZmluZWQoKTtcbiAgZXhwZWN0KGJ1aWxkUzNCdWNrZXRSZXNwb25zZS5sb2dnaW5nQnVja2V0KS50b0JlRGVmaW5lZCgpO1xuXG4gIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKFwiQVdTOjpTMzo6QnVja2V0XCIsIHtcbiAgICBBY2Nlc3NDb250cm9sOiBcIkxvZ0RlbGl2ZXJ5V3JpdGVcIlxuICB9KTtcblxuICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoXCJDdXN0b206OlMzQXV0b0RlbGV0ZU9iamVjdHNcIiwge1xuICAgIFNlcnZpY2VUb2tlbjoge1xuICAgICAgXCJGbjo6R2V0QXR0XCI6IFtcbiAgICAgICAgXCJDdXN0b21TM0F1dG9EZWxldGVPYmplY3RzQ3VzdG9tUmVzb3VyY2VQcm92aWRlckhhbmRsZXI5RDkwMTg0RlwiLFxuICAgICAgICBcIkFyblwiXG4gICAgICBdXG4gICAgfSxcbiAgICBCdWNrZXROYW1lOiB7XG4gICAgICBSZWY6IFwiUzNMb2dnaW5nQnVja2V0ODAwQTJCMjdcIlxuICAgIH1cbiAgfSk7XG59KTtcblxudGVzdCgnczMgYnVja2V0IHZlcnNpb25pbmcgdHVybmVkIG9uJywgKCkgPT4ge1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuXG4gIGNvbnN0IGJ1aWxkUzNCdWNrZXRSZXNwb25zZSA9IGRlZmF1bHRzLmJ1aWxkUzNCdWNrZXQoc3RhY2ssIHtcbiAgICBidWNrZXRQcm9wczoge1xuICAgICAgc2VydmVyQWNjZXNzTG9nc1ByZWZpeDogJ2FjY2Vzcy1sb2dzJyxcbiAgICB9XG4gIH0pO1xuXG4gIGV4cGVjdChidWlsZFMzQnVja2V0UmVzcG9uc2UuYnVja2V0KS50b0JlRGVmaW5lZCgpO1xuICBleHBlY3QoYnVpbGRTM0J1Y2tldFJlc3BvbnNlLmxvZ2dpbmdCdWNrZXQpLnRvQmVEZWZpbmVkKCk7XG5cbiAgY29uc3QgdGVtcGxhdGUgPSBUZW1wbGF0ZS5mcm9tU3RhY2soc3RhY2spO1xuXG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcyhcIkFXUzo6UzM6OkJ1Y2tldFwiLCB7XG4gICAgQnVja2V0RW5jcnlwdGlvbjoge1xuICAgICAgU2VydmVyU2lkZUVuY3J5cHRpb25Db25maWd1cmF0aW9uOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBTZXJ2ZXJTaWRlRW5jcnlwdGlvbkJ5RGVmYXVsdDoge1xuICAgICAgICAgICAgU1NFQWxnb3JpdGhtOiBcIkFFUzI1NlwiXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSxcbiAgICBMaWZlY3ljbGVDb25maWd1cmF0aW9uOiB7XG4gICAgICBSdWxlczogW1xuICAgICAgICB7XG4gICAgICAgICAgTm9uY3VycmVudFZlcnNpb25UcmFuc2l0aW9uczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBTdG9yYWdlQ2xhc3M6IFwiR0xBQ0lFUlwiLFxuICAgICAgICAgICAgICBUcmFuc2l0aW9uSW5EYXlzOiA5MFxuICAgICAgICAgICAgfVxuICAgICAgICAgIF0sXG4gICAgICAgICAgU3RhdHVzOiBcIkVuYWJsZWRcIlxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSxcbiAgICBMb2dnaW5nQ29uZmlndXJhdGlvbjoge1xuICAgICAgRGVzdGluYXRpb25CdWNrZXROYW1lOiB7XG4gICAgICAgIFJlZjogXCJTM0xvZ2dpbmdCdWNrZXQ4MDBBMkIyN1wiXG4gICAgICB9LFxuICAgICAgTG9nRmlsZVByZWZpeDogXCJhY2Nlc3MtbG9nc1wiXG4gICAgfSxcbiAgICBQdWJsaWNBY2Nlc3NCbG9ja0NvbmZpZ3VyYXRpb246IHtcbiAgICAgIEJsb2NrUHVibGljQWNsczogdHJ1ZSxcbiAgICAgIEJsb2NrUHVibGljUG9saWN5OiB0cnVlLFxuICAgICAgSWdub3JlUHVibGljQWNsczogdHJ1ZSxcbiAgICAgIFJlc3RyaWN0UHVibGljQnVja2V0czogdHJ1ZVxuICAgIH0sXG4gICAgVmVyc2lvbmluZ0NvbmZpZ3VyYXRpb246IHtcbiAgICAgIFN0YXR1czogXCJFbmFibGVkXCJcbiAgICB9XG4gIH0pO1xufSk7XG5cbnRlc3QoJ1N1cHByZXNzIGNmbi1uYWcgd2FybmluZyBmb3IgczMgYnVja2V0IG5vdGlmaWNhdGlvbicsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgY29uc3QgYnVpbGRTM0J1Y2tldFJlc3BvbnNlID0gZGVmYXVsdHMuYnVpbGRTM0J1Y2tldChzdGFjaywge30pO1xuICBjb25zdCBidWlsZFF1ZXVlUmVzcG9uc2UgPSBkZWZhdWx0cy5idWlsZFF1ZXVlKHN0YWNrLCBcIlMzQnVja2V0Tm90aWZpY2F0aW9uUXVldWVcIiwge30pO1xuICBidWlsZFMzQnVja2V0UmVzcG9uc2UuYnVja2V0LmFkZEV2ZW50Tm90aWZpY2F0aW9uKHMzLkV2ZW50VHlwZS5PQkpFQ1RfQ1JFQVRFRCwgbmV3IHMzbi5TcXNEZXN0aW5hdGlvbihidWlsZFF1ZXVlUmVzcG9uc2UucXVldWUpKTtcbiAgZGVmYXVsdHMuYWRkQ2ZuTmFnUzNCdWNrZXROb3RpZmljYXRpb25SdWxlc1RvU3VwcHJlc3Moc3RhY2ssIFwiQnVja2V0Tm90aWZpY2F0aW9uc0hhbmRsZXIwNTBhMDU4N2I3NTQ0NTQ3YmYzMjVmMDk0YTNkYjgzNFwiKTtcblxuICBjb25zdCB0ZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjayk7XG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlKFwiQVdTOjpMYW1iZGE6OkZ1bmN0aW9uXCIsIHtcbiAgICBNZXRhZGF0YToge1xuICAgICAgY2ZuX25hZzoge1xuICAgICAgICBydWxlc190b19zdXBwcmVzczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlkOiBcIlc1OFwiLFxuICAgICAgICAgICAgcmVhc29uOiBcIkxhbWJkYSBmdW5jdGlvbnMgaGFzIHRoZSByZXF1aXJlZCBwZXJtaXNzaW9uIHRvIHdyaXRlIENsb3VkV2F0Y2ggTG9ncy4gSXQgdXNlcyBjdXN0b20gcG9saWN5IGluc3RlYWQgb2YgYXJuOmF3czppYW06OmF3czpwb2xpY3kvc2VydmljZS1yb2xlL0FXU0xhbWJkYUJhc2ljRXhlY3V0aW9uUm9sZSB3aXRoIHRpZ2h0ZXIgcGVybWlzc2lvbnMuXCJcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlkOiAnVzg5JyxcbiAgICAgICAgICAgIHJlYXNvbjogYFRoaXMgaXMgbm90IGEgcnVsZSBmb3IgdGhlIGdlbmVyYWwgY2FzZSwganVzdCBmb3Igc3BlY2lmaWMgdXNlIGNhc2VzL2luZHVzdHJpZXNgXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogJ1c5MicsXG4gICAgICAgICAgICByZWFzb246IGBJbXBvc3NpYmxlIGZvciB1cyB0byBkZWZpbmUgdGhlIGNvcnJlY3QgY29uY3VycmVuY3kgZm9yIGNsaWVudHNgXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZShcIkFXUzo6SUFNOjpQb2xpY3lcIiwge1xuICAgIE1ldGFkYXRhOiB7XG4gICAgICBjZm5fbmFnOiB7XG4gICAgICAgIHJ1bGVzX3RvX3N1cHByZXNzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6IFwiVzEyXCIsXG4gICAgICAgICAgICByZWFzb246IFwiQnVja2V0IHJlc291cmNlIGlzICcqJyBkdWUgdG8gY2lyY3VsYXIgZGVwZW5kZW5jeSB3aXRoIGJ1Y2tldCBhbmQgcm9sZSBjcmVhdGlvbiBhdCB0aGUgc2FtZSB0aW1lXCJcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICB9XG4gIH0pO1xufSk7XG5cbnRlc3QoJ3Rlc3QgczNCdWNrZXQgcmVtb3ZhbFBvbGljeSBvdmVycmlkZScsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcblxuICBkZWZhdWx0cy5idWlsZFMzQnVja2V0KHN0YWNrLCB7XG4gICAgYnVja2V0UHJvcHM6IHtcbiAgICAgIHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICB9LFxuICB9LCAndGVzdC1idWNrZXQnKTtcblxuICBUZW1wbGF0ZS5mcm9tU3RhY2soc3RhY2spLmhhc1Jlc291cmNlKFwiQVdTOjpTMzo6QnVja2V0XCIsIHtcbiAgICBUeXBlOiAnQVdTOjpTMzo6QnVja2V0JyxcbiAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICBBY2Nlc3NDb250cm9sOiBcIkxvZ0RlbGl2ZXJ5V3JpdGVcIlxuICAgIH0sXG4gICAgVXBkYXRlUmVwbGFjZVBvbGljeTogXCJEZWxldGVcIixcbiAgICBEZWxldGlvblBvbGljeTogXCJEZWxldGVcIlxuICB9KTtcbn0pO1xuXG50ZXN0KCdzMyBidWNrZXQgd2l0aCBsb2dnaW5nIHR1cm5lZCBvZmYnLCAoKSA9PiB7XG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG5cbiAgY29uc3QgcmVzcGJ1aWxkUzNCdWNrZXRSZXNwb25zZW5zZSA9IGRlZmF1bHRzLmJ1aWxkUzNCdWNrZXQoc3RhY2ssIHtcbiAgICBsb2dTM0FjY2Vzc0xvZ3M6IGZhbHNlLFxuICB9KTtcblxuICBleHBlY3QocmVzcGJ1aWxkUzNCdWNrZXRSZXNwb25zZW5zZS5idWNrZXQpLnRvQmVEZWZpbmVkKCk7XG4gIGV4cGVjdChyZXNwYnVpbGRTM0J1Y2tldFJlc3BvbnNlbnNlLmxvZ2dpbmdCdWNrZXQpLm5vdC50b0JlRGVmaW5lZCgpO1xuXG4gIGV4cGVjdE5vbmV4aXN0ZW5jZShzdGFjaywgXCJBV1M6OlMzOjpCdWNrZXRcIiwge1xuICAgIExvZ2dpbmdDb25maWd1cmF0aW9uOiB7XG4gICAgfVxuICB9KTtcbn0pO1xuXG50ZXN0KCdDb25maXJtIExvZyBCdWNrZXQgbGlmZWN5Y2xlIHJ1bGVzIHBlcnNpc3QnLCAgKCkgPT4ge1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuXG4gIGRlZmF1bHRzLmJ1aWxkUzNCdWNrZXQoc3RhY2ssIHtcbiAgICBsb2dnaW5nQnVja2V0UHJvcHM6IHtcbiAgICAgIGxpZmVjeWNsZVJ1bGVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBleHBpcmF0aW9uOiBEdXJhdGlvbi5kYXlzKDM2NSksXG4gICAgICAgIH1dLFxuICAgIH1cbiAgfSk7XG5cbiAgY29uc3QgdGVtcGxhdGUgPSBUZW1wbGF0ZS5mcm9tU3RhY2soc3RhY2spO1xuICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZShcIkFXUzo6UzM6OkJ1Y2tldFwiLCB7XG4gICAgUHJvcGVydGllczoge1xuICAgICAgTGlmZWN5Y2xlQ29uZmlndXJhdGlvbjoge31cbiAgICB9XG4gIH0pO1xufSk7Il19
418
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiczMtYnVja2V0LWhlbHBlci50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiczMtYnVja2V0LWhlbHBlci50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7R0FXRzs7QUFFSCw2Q0FBNkQ7QUFDN0QseUNBQXlDO0FBQ3pDLHdEQUF3RDtBQUN4RCxxQ0FBcUM7QUFDckMsdURBQWtEO0FBQ2xELCtDQUEwRDtBQUMxRCwrQ0FBbUQ7QUFFbkQsSUFBSSxDQUFDLDZFQUE2RSxFQUFFLEdBQUcsRUFBRTtJQUN2RixNQUFNLEtBQUssR0FBRyxJQUFJLG1CQUFLLEVBQUUsQ0FBQztJQUUxQixJQUFJLENBQUM7UUFDSCxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNYLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEMsQ0FBQztBQUNILENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLHlCQUF5QixFQUFFLEdBQUcsRUFBRTtJQUNuQyxNQUFNLEtBQUssR0FBRyxJQUFJLG1CQUFLLEVBQUUsQ0FBQztJQUUxQixNQUFNLHFCQUFxQixHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUV0RSxNQUFNLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDbkQsTUFBTSxDQUFDLHFCQUFxQixDQUFDLGFBQWEsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBRTFELE1BQU0sUUFBUSxHQUFHLHFCQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxpQkFBaUIsRUFBRTtRQUNoRCxvQkFBb0IsRUFBRTtZQUNwQixx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SztLQUN2QixDQUFDLENBQUM7SUFFSCxNQUFNLENBQUMsNEJBQTRCLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDMUQsTUFBTSxDQUFDLDRCQUE0QixDQUFDLGFBQWEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUVyRSxJQUFBLGdDQUFrQixFQUFDLEtBQUssRUFBRSxpQkFBaUIsRUFBRTtRQUMzQyxvQkFBb0IsRUFBRSxFQUNyQjtLQUNGLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLDRDQUE0QyxFQUFHLEdBQUcsRUFBRTtJQUN2RCxNQUFNLEtBQUssR0FBRyxJQUFJLG1CQUFLLEVBQUUsQ0FBQztJQUUxQixRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRTtRQUM1QixrQkFBa0IsRUFBRTtZQUNsQixjQUFjLEVBQUU7Z0JBQ2Q7b0JBQ0UsVUFBVSxFQUFFLHNCQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztpQkFDL0I7YUFBQztTQUNMO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsTUFBTSxRQUFRLEdBQUcscUJBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0MsUUFBUSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRTtRQUN0QyxVQUFVLEVBQUU7WUFDVixzQkFBc0IsRUFBRSxFQUFFO1NBQzNCO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuICogIHdpdGggdGhlIExpY2Vuc2UuIEEgY29weSBvZiB0aGUgTGljZW5zZSBpcyBsb2NhdGVkIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgb3IgaW4gdGhlICdsaWNlbnNlJyBmaWxlIGFjY29tcGFueWluZyB0aGlzIGZpbGUuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMnIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVNcbiAqICBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xuICogIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBEdXJhdGlvbiwgU3RhY2ssIFJlbW92YWxQb2xpY3kgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBzMyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMnO1xuaW1wb3J0ICogYXMgczNuIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMy1ub3RpZmljYXRpb25zJztcbmltcG9ydCAqIGFzIGRlZmF1bHRzIGZyb20gJy4uL2luZGV4JztcbmltcG9ydCB7IFRlbXBsYXRlIH0gZnJvbSAnYXdzLWNkay1saWIvYXNzZXJ0aW9ucyc7XG5pbXBvcnQgeyBCdWNrZXQsIFN0b3JhZ2VDbGFzcyB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQgeyBleHBlY3ROb25leGlzdGVuY2UgfSBmcm9tIFwiLi90ZXN0LWhlbHBlclwiO1xuXG50ZXN0KCdjaGVjayBleGNlcHRpb24gZm9yIE1pc3NpbmcgZXhpc3RpbmdCdWNrZXRPYmogZnJvbSBwcm9wcyBmb3IgZGVwbG95ID0gZmFsc2UnLCAoKSA9PiB7XG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG5cbiAgdHJ5IHtcbiAgICBkZWZhdWx0cy5idWlsZFMzQnVja2V0KHN0YWNrLCB7fSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBleHBlY3QoZSkudG9CZUluc3RhbmNlT2YoRXJyb3IpO1xuICB9XG59KTtcblxudGVzdCgnczMgYnVja2V0IHdpdGggYnVja2V0SWQnLCAoKSA9PiB7XG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG5cbiAgY29uc3QgYnVpbGRTM0J1Y2tldFJlc3BvbnNlID0gZGVmYXVsdHMuYnVpbGRTM0J1Y2tldChzdGFjaywge30sICdteScpO1xuXG4gIGV4cGVjdChidWlsZFMzQnVja2V0UmVzcG9uc2UuYnVja2V0KS50b0JlRGVmaW5lZCgpO1xuICBleHBlY3QoYnVpbGRTM0J1Y2tldFJlc3BvbnNlLmxvZ2dpbmdCdWNrZXQpLnRvQmVEZWZpbmVkKCk7XG5cbiAgY29uc3QgdGVtcGxhdGUgPSBUZW1wbGF0ZS5mcm9tU3RhY2soc3RhY2spO1xuICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoXCJBV1M6OlMzOjpCdWNrZXRcIiwge1xuICAgIExvZ2dpbmdDb25maWd1cmF0aW9uOiB7XG4gICAgICBEZXN0aW5hdGlvbkJ1Y2tldE5hbWU6IHtcbiAgICAgICAgUmVmOiBcIm15UzNMb2dnaW5nQnVja2V0REU0NjEzNDRcIlxuICAgICAgfVxuICAgIH0sXG4gIH0pO1xufSk7XG5cbnRlc3QoJ3MzIGJ1Y2tldCB3aXRoIGJ1Y2tldFByb3BzJywgKCkgPT4ge1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuXG4gIGNvbnN0IGJ1aWxkUzNCdWNrZXRSZXNwb25zZSA9IGRlZmF1bHRzLmJ1aWxkUzNCdWNrZXQoc3RhY2ssIHtcbiAgICBidWNrZXRQcm9wczoge1xuICAgICAgYnVja2V0TmFtZTogJ215YnVja2V0J1xuICAgIH1cbiAgfSk7XG5cbiAgZXhwZWN0KGJ1aWxkUzNCdWNrZXRSZXNwb25zZS5idWNrZXQpLnRvQmVEZWZpbmVkKCk7XG4gIGV4cGVjdChidWlsZFMzQnVja2V0UmVzcG9uc2UubG9nZ2luZ0J1Y2tldCkudG9CZURlZmluZWQoKTtcblxuICBjb25zdCB0ZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjayk7XG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcyhcIkFXUzo6UzM6OkJ1Y2tldFwiLCB7XG4gICAgQnVja2V0TmFtZTogXCJteWJ1Y2tldFwiXG4gIH0pO1xufSk7XG5cbnRlc3QoJ3MzIGJ1Y2tldCB3aXRoIGRlZmF1bHQgcHJvcHMnLCAoKSA9PiB7XG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG5cbiAgY29uc3QgYnVpbGRTM0J1Y2tldFJlc3BvbnNlID0gZGVmYXVsdHMuYnVpbGRTM0J1Y2tldChzdGFjaywge30pO1xuXG4gIGV4cGVjdChidWlsZFMzQnVja2V0UmVzcG9uc2UuYnVja2V0KS50b0JlRGVmaW5lZCgpO1xuICBleHBlY3QoYnVpbGRTM0J1Y2tldFJlc3BvbnNlLmxvZ2dpbmdCdWNrZXQpLnRvQmVEZWZpbmVkKCk7XG5cbiAgY29uc3QgdGVtcGxhdGUgPSBUZW1wbGF0ZS5mcm9tU3RhY2soc3RhY2spO1xuICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoXCJBV1M6OlMzOjpCdWNrZXRcIiwge1xuICAgIEJ1Y2tldEVuY3J5cHRpb246IHtcbiAgICAgIFNlcnZlclNpZGVFbmNyeXB0aW9uQ29uZmlndXJhdGlvbjogW1xuICAgICAgICB7XG4gICAgICAgICAgU2VydmVyU2lkZUVuY3J5cHRpb25CeURlZmF1bHQ6IHtcbiAgICAgICAgICAgIFNTRUFsZ29yaXRobTogXCJBRVMyNTZcIlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0sXG4gICAgUHVibGljQWNjZXNzQmxvY2tDb25maWd1cmF0aW9uOiB7XG4gICAgICBCbG9ja1B1YmxpY0FjbHM6IHRydWUsXG4gICAgICBCbG9ja1B1YmxpY1BvbGljeTogdHJ1ZSxcbiAgICAgIElnbm9yZVB1YmxpY0FjbHM6IHRydWUsXG4gICAgICBSZXN0cmljdFB1YmxpY0J1Y2tldHM6IHRydWVcbiAgICB9LFxuICAgIFZlcnNpb25pbmdDb25maWd1cmF0aW9uOiB7XG4gICAgICBTdGF0dXM6IFwiRW5hYmxlZFwiXG4gICAgfVxuICB9KTtcbn0pO1xuXG50ZXN0KCdzMyBidWNrZXQgd2l0aCBsaWZlIGN5Y2xlIHBvbGljeScsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcblxuICBjb25zdCBidWlsZFMzQnVja2V0UmVzcG9uc2UgPSBkZWZhdWx0cy5idWlsZFMzQnVja2V0KHN0YWNrLCB7XG4gICAgYnVja2V0UHJvcHM6IHtcbiAgICAgIGxpZmVjeWNsZVJ1bGVzOiBbe1xuICAgICAgICBleHBpcmF0aW9uOiBEdXJhdGlvbi5kYXlzKDM2NSksXG4gICAgICAgIHRyYW5zaXRpb25zOiBbe1xuICAgICAgICAgIHN0b3JhZ2VDbGFzczogU3RvcmFnZUNsYXNzLklORlJFUVVFTlRfQUNDRVNTLFxuICAgICAgICAgIHRyYW5zaXRpb25BZnRlcjogRHVyYXRpb24uZGF5cygzMClcbiAgICAgICAgfSwge1xuICAgICAgICAgIHN0b3JhZ2VDbGFzczogU3RvcmFnZUNsYXNzLkdMQUNJRVIsXG4gICAgICAgICAgdHJhbnNpdGlvbkFmdGVyOiBEdXJhdGlvbi5kYXlzKDkwKVxuICAgICAgICB9XVxuICAgICAgfV1cbiAgICB9XG4gIH0pO1xuXG4gIGV4cGVjdChidWlsZFMzQnVja2V0UmVzcG9uc2UuYnVja2V0KS50b0JlRGVmaW5lZCgpO1xuICBleHBlY3QoYnVpbGRTM0J1Y2tldFJlc3BvbnNlLmxvZ2dpbmdCdWNrZXQpLnRvQmVEZWZpbmVkKCk7XG5cbiAgY29uc3QgdGVtcGxhdGUgPSBUZW1wbGF0ZS5mcm9tU3RhY2soc3RhY2spO1xuICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoXCJBV1M6OlMzOjpCdWNrZXRcIiwge1xuICAgIExpZmVjeWNsZUNvbmZpZ3VyYXRpb246IHtcbiAgICAgIFJ1bGVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBFeHBpcmF0aW9uSW5EYXlzOiAzNjUsXG4gICAgICAgICAgU3RhdHVzOiBcIkVuYWJsZWRcIixcbiAgICAgICAgICBUcmFuc2l0aW9uczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBTdG9yYWdlQ2xhc3M6IFwiU1RBTkRBUkRfSUFcIixcbiAgICAgICAgICAgICAgVHJhbnNpdGlvbkluRGF5czogMzBcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIFN0b3JhZ2VDbGFzczogXCJHTEFDSUVSXCIsXG4gICAgICAgICAgICAgIFRyYW5zaXRpb25JbkRheXM6IDkwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfVxuICB9KTtcbn0pO1xuXG50ZXN0KCdzMyBidWNrZXQgd2l0aCBhY2Nlc3MgbG9nZ2luZyBjb25maWd1cmVkJywgKCkgPT4ge1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuICBjb25zdCBteWJ1Y2tldCA9IG5ldyBCdWNrZXQoc3RhY2ssICdteWJ1Y2tldCcsIHtcbiAgICBzZXJ2ZXJBY2Nlc3NMb2dzQnVja2V0OiBuZXcgQnVja2V0KHN0YWNrLCAnbXlhY2Nlc3Nsb2didWNrZXQnLCB7fSlcbiAgfSk7XG5cbiAgY29uc3QgYnVpbGRTM0J1Y2tldFJlc3BvbnNlID0gZGVmYXVsdHMuYnVpbGRTM0J1Y2tldChzdGFjaywge1xuICAgIGJ1Y2tldFByb3BzOiB7XG4gICAgICBzZXJ2ZXJBY2Nlc3NMb2dzQnVja2V0OiBteWJ1Y2tldFxuICAgIH1cbiAgfSk7XG5cbiAgZXhwZWN0KGJ1aWxkUzNCdWNrZXRSZXNwb25zZS5idWNrZXQpLnRvQmVEZWZpbmVkKCk7XG4gIC8vIFRoaXMgdmFsdWUgc2hvdWxkIGJlIHBvcHVsYXRlZCwgZW50ZXJlZCBJc3N1ZSA5MDdcbiAgLy8gZXhwZWN0KHJlc3BvbnNlLmxvZ2dpbmdCdWNrZXQpLnRvQmVEZWZpbmVkKCk7XG5cbiAgY29uc3QgdGVtcGxhdGUgPSBUZW1wbGF0ZS5mcm9tU3RhY2soc3RhY2spO1xuICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoXCJBV1M6OlMzOjpCdWNrZXRcIiwge1xuICAgIExvZ2dpbmdDb25maWd1cmF0aW9uOiB7XG4gICAgICBEZXN0aW5hdGlvbkJ1Y2tldE5hbWU6IHtcbiAgICAgICAgUmVmOiBcIm15YnVja2V0MTYwRjgxMzJcIlxuICAgICAgfVxuICAgIH0sXG4gIH0pO1xufSk7XG5cbnRlc3QoJ0NoZWNrIFMzIEJ1Y2tldCBwb2xpY3knLCAoKSA9PiB7XG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG4gIGRlZmF1bHRzLmJ1aWxkUzNCdWNrZXQoc3RhY2ssIHt9KTtcblxuICBjb25zdCB0ZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjayk7XG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcyhcIkFXUzo6UzM6OkJ1Y2tldFBvbGljeVwiLCB7XG4gICAgUG9saWN5RG9jdW1lbnQ6IHtcbiAgICAgIFN0YXRlbWVudDogW1xuICAgICAgICB7XG4gICAgICAgICAgQWN0aW9uOiBcInMzOipcIixcbiAgICAgICAgICBDb25kaXRpb246IHtcbiAgICAgICAgICAgIEJvb2w6IHtcbiAgICAgICAgICAgICAgXCJhd3M6U2VjdXJlVHJhbnNwb3J0XCI6IFwiZmFsc2VcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBFZmZlY3Q6IFwiRGVueVwiLFxuICAgICAgICAgIFByaW5jaXBhbDoge1xuICAgICAgICAgICAgQVdTOiBcIipcIlxuICAgICAgICAgIH0sXG4gICAgICAgICAgUmVzb3VyY2U6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgXCJGbjo6R2V0QXR0XCI6IFtcbiAgICAgICAgICAgICAgICBcIlMzQnVja2V0MDc2ODI5OTNcIixcbiAgICAgICAgICAgICAgICBcIkFyblwiXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIFwiRm46OkpvaW5cIjogW1xuICAgICAgICAgICAgICAgIFwiXCIsXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBcIkZuOjpHZXRBdHRcIjogW1xuICAgICAgICAgICAgICAgICAgICAgIFwiUzNCdWNrZXQwNzY4Mjk5M1wiLFxuICAgICAgICAgICAgICAgICAgICAgIFwiQXJuXCJcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIFwiLypcIlxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIFZlcnNpb246IFwiMjAxMi0xMC0xN1wiLFxuICAgIH0sXG4gIH0pO1xufSk7XG5cbnRlc3QoJ3MzIGJ1Y2tldCB3aXRoIExvZ2dpbmdCdWNrZXQgYW5kIHZlcnNpb25pbmcgdHVybmVkIG9mZicsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgY29uc3QgbXlidWNrZXQgPSBuZXcgQnVja2V0KHN0YWNrLCAnbXlidWNrZXQnLCB7XG4gICAgc2VydmVyQWNjZXNzTG9nc0J1Y2tldDogbmV3IEJ1Y2tldChzdGFjaywgJ215YWNjZXNzbG9nYnVja2V0Jywge30pXG4gIH0pO1xuXG4gIGNvbnN0IGJ1aWxkUzNCdWNrZXRSZXNwb25zZSA9IGRlZmF1bHRzLmJ1aWxkUzNCdWNrZXQoc3RhY2ssIHtcbiAgICBidWNrZXRQcm9wczoge1xuICAgICAgc2VydmVyQWNjZXNzTG9nc0J1Y2tldDogbXlidWNrZXQsXG4gICAgICBzZXJ2ZXJBY2Nlc3NMb2dzUHJlZml4OiAnYWNjZXNzLWxvZ3MnLFxuICAgICAgdmVyc2lvbmVkOiBmYWxzZVxuICAgIH1cbiAgfSk7XG5cbiAgZXhwZWN0KGJ1aWxkUzNCdWNrZXRSZXNwb25zZS5idWNrZXQpLnRvQmVEZWZpbmVkKCk7XG4gIC8vIFRoZSBsaW5lIGJlbG93IGZhaWxzLCB0aGlzIGFwcGVhcnMgdG8gYmUgYSBidWcuIEVudGVyZWQgSXNzdWUgOTA2XG4gIGV4cGVjdChidWlsZFMzQnVja2V0UmVzcG9uc2UubG9nZ2luZ0J1Y2tldCkudG9CZURlZmluZWQoKTtcblxuICBjb25zdCB0ZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjayk7XG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcyhcIkFXUzo6UzM6OkJ1Y2tldFwiLCB7XG4gICAgQnVja2V0RW5jcnlwdGlvbjoge1xuICAgICAgU2VydmVyU2lkZUVuY3J5cHRpb25Db25maWd1cmF0aW9uOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBTZXJ2ZXJTaWRlRW5jcnlwdGlvbkJ5RGVmYXVsdDoge1xuICAgICAgICAgICAgU1NFQWxnb3JpdGhtOiBcIkFFUzI1NlwiXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSxcbiAgICBMb2dnaW5nQ29uZmlndXJhdGlvbjoge1xuICAgICAgRGVzdGluYXRpb25CdWNrZXROYW1lOiB7XG4gICAgICAgIFJlZjogXCJteWJ1Y2tldDE2MEY4MTMyXCJcbiAgICAgIH0sXG4gICAgICBMb2dGaWxlUHJlZml4OiBcImFjY2Vzcy1sb2dzXCJcbiAgICB9LFxuICAgIFB1YmxpY0FjY2Vzc0Jsb2NrQ29uZmlndXJhdGlvbjoge1xuICAgICAgQmxvY2tQdWJsaWNBY2xzOiB0cnVlLFxuICAgICAgQmxvY2tQdWJsaWNQb2xpY3k6IHRydWUsXG4gICAgICBJZ25vcmVQdWJsaWNBY2xzOiB0cnVlLFxuICAgICAgUmVzdHJpY3RQdWJsaWNCdWNrZXRzOiB0cnVlXG4gICAgfVxuICB9KTtcbn0pO1xuXG50ZXN0KCdzMyBidWNrZXQgdmVyc2lvbmluZyB0dXJuZWQgb2ZmJywgKCkgPT4ge1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuXG4gIGNvbnN0IGJ1aWxkUzNCdWNrZXRSZXNwb25zZSA9IGRlZmF1bHRzLmJ1aWxkUzNCdWNrZXQoc3RhY2ssIHtcbiAgICBidWNrZXRQcm9wczoge1xuICAgICAgc2VydmVyQWNjZXNzTG9nc1ByZWZpeDogJ2FjY2Vzcy1sb2dzJyxcbiAgICAgIHZlcnNpb25lZDogZmFsc2VcbiAgICB9XG4gIH0pO1xuXG4gIGV4cGVjdChidWlsZFMzQnVja2V0UmVzcG9uc2UuYnVja2V0KS50b0JlRGVmaW5lZCgpO1xuICBleHBlY3QoYnVpbGRTM0J1Y2tldFJlc3BvbnNlLmxvZ2dpbmdCdWNrZXQpLnRvQmVEZWZpbmVkKCk7XG5cbiAgY29uc3QgdGVtcGxhdGUgPSBUZW1wbGF0ZS5mcm9tU3RhY2soc3RhY2spO1xuICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoXCJBV1M6OlMzOjpCdWNrZXRcIiwge1xuICAgIEJ1Y2tldEVuY3J5cHRpb246IHtcbiAgICAgIFNlcnZlclNpZGVFbmNyeXB0aW9uQ29uZmlndXJhdGlvbjogW1xuICAgICAgICB7XG4gICAgICAgICAgU2VydmVyU2lkZUVuY3J5cHRpb25CeURlZmF1bHQ6IHtcbiAgICAgICAgICAgIFNTRUFsZ29yaXRobTogXCJBRVMyNTZcIlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0sXG4gICAgTG9nZ2luZ0NvbmZpZ3VyYXRpb246IHtcbiAgICAgIERlc3RpbmF0aW9uQnVja2V0TmFtZToge1xuICAgICAgICBSZWY6IFwiUzNMb2dnaW5nQnVja2V0ODAwQTJCMjdcIlxuICAgICAgfSxcbiAgICAgIExvZ0ZpbGVQcmVmaXg6IFwiYWNjZXNzLWxvZ3NcIlxuICAgIH0sXG4gICAgUHVibGljQWNjZXNzQmxvY2tDb25maWd1cmF0aW9uOiB7XG4gICAgICBCbG9ja1B1YmxpY0FjbHM6IHRydWUsXG4gICAgICBCbG9ja1B1YmxpY1BvbGljeTogdHJ1ZSxcbiAgICAgIElnbm9yZVB1YmxpY0FjbHM6IHRydWUsXG4gICAgICBSZXN0cmljdFB1YmxpY0J1Y2tldHM6IHRydWVcbiAgICB9XG4gIH0pO1xufSk7XG5cbnRlc3QoJ3MzIGJ1Y2tldCB3aXRoIExvZ2dpbmdCdWNrZXQgYW5kIGF1dG8gZGVsZXRlIG9iamVjdHMnLCAoKSA9PiB7XG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG5cbiAgY29uc3QgYnVpbGRTM0J1Y2tldFJlc3BvbnNlID0gZGVmYXVsdHMuYnVpbGRTM0J1Y2tldChzdGFjaywge1xuICAgIGxvZ2dpbmdCdWNrZXRQcm9wczoge1xuICAgICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgICAgYXV0b0RlbGV0ZU9iamVjdHM6IHRydWVcbiAgICB9XG4gIH0pO1xuXG4gIGV4cGVjdChidWlsZFMzQnVja2V0UmVzcG9uc2UuYnVja2V0KS50b0JlRGVmaW5lZCgpO1xuICBleHBlY3QoYnVpbGRTM0J1Y2tldFJlc3BvbnNlLmxvZ2dpbmdCdWNrZXQpLnRvQmVEZWZpbmVkKCk7XG5cbiAgY29uc3QgdGVtcGxhdGUgPSBUZW1wbGF0ZS5mcm9tU3RhY2soc3RhY2spO1xuICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoXCJBV1M6OlMzOjpCdWNrZXRcIiwge1xuICAgIEFjY2Vzc0NvbnRyb2w6IFwiTG9nRGVsaXZlcnlXcml0ZVwiXG4gIH0pO1xuXG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcyhcIkN1c3RvbTo6UzNBdXRvRGVsZXRlT2JqZWN0c1wiLCB7XG4gICAgU2VydmljZVRva2VuOiB7XG4gICAgICBcIkZuOjpHZXRBdHRcIjogW1xuICAgICAgICBcIkN1c3RvbVMzQXV0b0RlbGV0ZU9iamVjdHNDdXN0b21SZXNvdXJjZVByb3ZpZGVySGFuZGxlcjlEOTAxODRGXCIsXG4gICAgICAgIFwiQXJuXCJcbiAgICAgIF1cbiAgICB9LFxuICAgIEJ1Y2tldE5hbWU6IHtcbiAgICAgIFJlZjogXCJTM0xvZ2dpbmdCdWNrZXQ4MDBBMkIyN1wiXG4gICAgfVxuICB9KTtcbn0pO1xuXG50ZXN0KCdzMyBidWNrZXQgdmVyc2lvbmluZyB0dXJuZWQgb24nLCAoKSA9PiB7XG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG5cbiAgY29uc3QgYnVpbGRTM0J1Y2tldFJlc3BvbnNlID0gZGVmYXVsdHMuYnVpbGRTM0J1Y2tldChzdGFjaywge1xuICAgIGJ1Y2tldFByb3BzOiB7XG4gICAgICBzZXJ2ZXJBY2Nlc3NMb2dzUHJlZml4OiAnYWNjZXNzLWxvZ3MnLFxuICAgIH1cbiAgfSk7XG5cbiAgZXhwZWN0KGJ1aWxkUzNCdWNrZXRSZXNwb25zZS5idWNrZXQpLnRvQmVEZWZpbmVkKCk7XG4gIGV4cGVjdChidWlsZFMzQnVja2V0UmVzcG9uc2UubG9nZ2luZ0J1Y2tldCkudG9CZURlZmluZWQoKTtcblxuICBjb25zdCB0ZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjayk7XG5cbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKFwiQVdTOjpTMzo6QnVja2V0XCIsIHtcbiAgICBCdWNrZXRFbmNyeXB0aW9uOiB7XG4gICAgICBTZXJ2ZXJTaWRlRW5jcnlwdGlvbkNvbmZpZ3VyYXRpb246IFtcbiAgICAgICAge1xuICAgICAgICAgIFNlcnZlclNpZGVFbmNyeXB0aW9uQnlEZWZhdWx0OiB7XG4gICAgICAgICAgICBTU0VBbGdvcml0aG06IFwiQUVTMjU2XCJcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9LFxuICAgIExpZmVjeWNsZUNvbmZpZ3VyYXRpb246IHtcbiAgICAgIFJ1bGVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBOb25jdXJyZW50VmVyc2lvblRyYW5zaXRpb25zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIFN0b3JhZ2VDbGFzczogXCJHTEFDSUVSXCIsXG4gICAgICAgICAgICAgIFRyYW5zaXRpb25JbkRheXM6IDkwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXSxcbiAgICAgICAgICBTdGF0dXM6IFwiRW5hYmxlZFwiXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9LFxuICAgIExvZ2dpbmdDb25maWd1cmF0aW9uOiB7XG4gICAgICBEZXN0aW5hdGlvbkJ1Y2tldE5hbWU6IHtcbiAgICAgICAgUmVmOiBcIlMzTG9nZ2luZ0J1Y2tldDgwMEEyQjI3XCJcbiAgICAgIH0sXG4gICAgICBMb2dGaWxlUHJlZml4OiBcImFjY2Vzcy1sb2dzXCJcbiAgICB9LFxuICAgIFB1YmxpY0FjY2Vzc0Jsb2NrQ29uZmlndXJhdGlvbjoge1xuICAgICAgQmxvY2tQdWJsaWNBY2xzOiB0cnVlLFxuICAgICAgQmxvY2tQdWJsaWNQb2xpY3k6IHRydWUsXG4gICAgICBJZ25vcmVQdWJsaWNBY2xzOiB0cnVlLFxuICAgICAgUmVzdHJpY3RQdWJsaWNCdWNrZXRzOiB0cnVlXG4gICAgfSxcbiAgICBWZXJzaW9uaW5nQ29uZmlndXJhdGlvbjoge1xuICAgICAgU3RhdHVzOiBcIkVuYWJsZWRcIlxuICAgIH1cbiAgfSk7XG59KTtcblxudGVzdCgnU3VwcHJlc3MgY2ZuLW5hZyB3YXJuaW5nIGZvciBzMyBidWNrZXQgbm90aWZpY2F0aW9uJywgKCkgPT4ge1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuICBjb25zdCBidWlsZFMzQnVja2V0UmVzcG9uc2UgPSBkZWZhdWx0cy5idWlsZFMzQnVja2V0KHN0YWNrLCB7fSk7XG4gIGNvbnN0IGJ1aWxkUXVldWVSZXNwb25zZSA9IGRlZmF1bHRzLmJ1aWxkUXVldWUoc3RhY2ssIFwiUzNCdWNrZXROb3RpZmljYXRpb25RdWV1ZVwiLCB7fSk7XG4gIGJ1aWxkUzNCdWNrZXRSZXNwb25zZS5idWNrZXQuYWRkRXZlbnROb3RpZmljYXRpb24oczMuRXZlbnRUeXBlLk9CSkVDVF9DUkVBVEVELCBuZXcgczNuLlNxc0Rlc3RpbmF0aW9uKGJ1aWxkUXVldWVSZXNwb25zZS5xdWV1ZSkpO1xuICBkZWZhdWx0cy5hZGRDZm5OYWdTM0J1Y2tldE5vdGlmaWNhdGlvblJ1bGVzVG9TdXBwcmVzcyhzdGFjaywgXCJCdWNrZXROb3RpZmljYXRpb25zSGFuZGxlcjA1MGEwNTg3Yjc1NDQ1NDdiZjMyNWYwOTRhM2RiODM0XCIpO1xuXG4gIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2UoXCJBV1M6OkxhbWJkYTo6RnVuY3Rpb25cIiwge1xuICAgIE1ldGFkYXRhOiB7XG4gICAgICBjZm5fbmFnOiB7XG4gICAgICAgIHJ1bGVzX3RvX3N1cHByZXNzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6IFwiVzU4XCIsXG4gICAgICAgICAgICByZWFzb246IFwiTGFtYmRhIGZ1bmN0aW9ucyBoYXMgdGhlIHJlcXVpcmVkIHBlcm1pc3Npb24gdG8gd3JpdGUgQ2xvdWRXYXRjaCBMb2dzLiBJdCB1c2VzIGN1c3RvbSBwb2xpY3kgaW5zdGVhZCBvZiBhcm46YXdzOmlhbTo6YXdzOnBvbGljeS9zZXJ2aWNlLXJvbGUvQVdTTGFtYmRhQmFzaWNFeGVjdXRpb25Sb2xlIHdpdGggdGlnaHRlciBwZXJtaXNzaW9ucy5cIlxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6ICdXODknLFxuICAgICAgICAgICAgcmVhc29uOiBgVGhpcyBpcyBub3QgYSBydWxlIGZvciB0aGUgZ2VuZXJhbCBjYXNlLCBqdXN0IGZvciBzcGVjaWZpYyB1c2UgY2FzZXMvaW5kdXN0cmllc2BcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlkOiAnVzkyJyxcbiAgICAgICAgICAgIHJlYXNvbjogYEltcG9zc2libGUgZm9yIHVzIHRvIGRlZmluZSB0aGUgY29ycmVjdCBjb25jdXJyZW5jeSBmb3IgY2xpZW50c2BcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuXG59KTtcblxudGVzdCgndGVzdCBzM0J1Y2tldCByZW1vdmFsUG9saWN5IG92ZXJyaWRlJywgKCkgPT4ge1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuXG4gIGRlZmF1bHRzLmJ1aWxkUzNCdWNrZXQoc3RhY2ssIHtcbiAgICBidWNrZXRQcm9wczoge1xuICAgICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgIH0sXG4gIH0sICd0ZXN0LWJ1Y2tldCcpO1xuXG4gIFRlbXBsYXRlLmZyb21TdGFjayhzdGFjaykuaGFzUmVzb3VyY2UoXCJBV1M6OlMzOjpCdWNrZXRcIiwge1xuICAgIFR5cGU6ICdBV1M6OlMzOjpCdWNrZXQnLFxuICAgIFByb3BlcnRpZXM6IHtcbiAgICAgIEFjY2Vzc0NvbnRyb2w6IFwiTG9nRGVsaXZlcnlXcml0ZVwiXG4gICAgfSxcbiAgICBVcGRhdGVSZXBsYWNlUG9saWN5OiBcIkRlbGV0ZVwiLFxuICAgIERlbGV0aW9uUG9saWN5OiBcIkRlbGV0ZVwiXG4gIH0pO1xufSk7XG5cbnRlc3QoJ3MzIGJ1Y2tldCB3aXRoIGxvZ2dpbmcgdHVybmVkIG9mZicsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcblxuICBjb25zdCByZXNwYnVpbGRTM0J1Y2tldFJlc3BvbnNlbnNlID0gZGVmYXVsdHMuYnVpbGRTM0J1Y2tldChzdGFjaywge1xuICAgIGxvZ1MzQWNjZXNzTG9nczogZmFsc2UsXG4gIH0pO1xuXG4gIGV4cGVjdChyZXNwYnVpbGRTM0J1Y2tldFJlc3BvbnNlbnNlLmJ1Y2tldCkudG9CZURlZmluZWQoKTtcbiAgZXhwZWN0KHJlc3BidWlsZFMzQnVja2V0UmVzcG9uc2Vuc2UubG9nZ2luZ0J1Y2tldCkubm90LnRvQmVEZWZpbmVkKCk7XG5cbiAgZXhwZWN0Tm9uZXhpc3RlbmNlKHN0YWNrLCBcIkFXUzo6UzM6OkJ1Y2tldFwiLCB7XG4gICAgTG9nZ2luZ0NvbmZpZ3VyYXRpb246IHtcbiAgICB9XG4gIH0pO1xufSk7XG5cbnRlc3QoJ0NvbmZpcm0gTG9nIEJ1Y2tldCBsaWZlY3ljbGUgcnVsZXMgcGVyc2lzdCcsICAoKSA9PiB7XG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG5cbiAgZGVmYXVsdHMuYnVpbGRTM0J1Y2tldChzdGFjaywge1xuICAgIGxvZ2dpbmdCdWNrZXRQcm9wczoge1xuICAgICAgbGlmZWN5Y2xlUnVsZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGV4cGlyYXRpb246IER1cmF0aW9uLmRheXMoMzY1KSxcbiAgICAgICAgfV0sXG4gICAgfVxuICB9KTtcblxuICBjb25zdCB0ZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjayk7XG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlKFwiQVdTOjpTMzo6QnVja2V0XCIsIHtcbiAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICBMaWZlY3ljbGVDb25maWd1cmF0aW9uOiB7fVxuICAgIH1cbiAgfSk7XG59KTsiXX0=