@rio-cloud/cdk-v2-constructs 8.1.0-alpha.0 → 8.1.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 +35 -35
- package/lib/ses/ses-observability.js +17 -11
- package/package.json +1 -1
- package/version.json +1 -1
package/.jsii
CHANGED
|
@@ -9977,7 +9977,7 @@
|
|
|
9977
9977
|
"kind": "interface",
|
|
9978
9978
|
"locationInModule": {
|
|
9979
9979
|
"filename": "src/ses/ses-observability.ts",
|
|
9980
|
-
"line":
|
|
9980
|
+
"line": 61
|
|
9981
9981
|
},
|
|
9982
9982
|
"name": "BounceThresholdsProps",
|
|
9983
9983
|
"properties": [
|
|
@@ -9989,7 +9989,7 @@
|
|
|
9989
9989
|
"immutable": true,
|
|
9990
9990
|
"locationInModule": {
|
|
9991
9991
|
"filename": "src/ses/ses-observability.ts",
|
|
9992
|
-
"line":
|
|
9992
|
+
"line": 63
|
|
9993
9993
|
},
|
|
9994
9994
|
"name": "critical",
|
|
9995
9995
|
"optional": true,
|
|
@@ -10005,7 +10005,7 @@
|
|
|
10005
10005
|
"immutable": true,
|
|
10006
10006
|
"locationInModule": {
|
|
10007
10007
|
"filename": "src/ses/ses-observability.ts",
|
|
10008
|
-
"line":
|
|
10008
|
+
"line": 62
|
|
10009
10009
|
},
|
|
10010
10010
|
"name": "warning",
|
|
10011
10011
|
"optional": true,
|
|
@@ -10394,7 +10394,7 @@
|
|
|
10394
10394
|
"kind": "interface",
|
|
10395
10395
|
"locationInModule": {
|
|
10396
10396
|
"filename": "src/ses/ses-observability.ts",
|
|
10397
|
-
"line":
|
|
10397
|
+
"line": 66
|
|
10398
10398
|
},
|
|
10399
10399
|
"name": "ComplaintThresholdsProps",
|
|
10400
10400
|
"properties": [
|
|
@@ -10406,7 +10406,7 @@
|
|
|
10406
10406
|
"immutable": true,
|
|
10407
10407
|
"locationInModule": {
|
|
10408
10408
|
"filename": "src/ses/ses-observability.ts",
|
|
10409
|
-
"line":
|
|
10409
|
+
"line": 68
|
|
10410
10410
|
},
|
|
10411
10411
|
"name": "critical",
|
|
10412
10412
|
"optional": true,
|
|
@@ -10422,7 +10422,7 @@
|
|
|
10422
10422
|
"immutable": true,
|
|
10423
10423
|
"locationInModule": {
|
|
10424
10424
|
"filename": "src/ses/ses-observability.ts",
|
|
10425
|
-
"line":
|
|
10425
|
+
"line": 67
|
|
10426
10426
|
},
|
|
10427
10427
|
"name": "warning",
|
|
10428
10428
|
"optional": true,
|
|
@@ -17721,7 +17721,7 @@
|
|
|
17721
17721
|
},
|
|
17722
17722
|
"locationInModule": {
|
|
17723
17723
|
"filename": "src/ses/ses-observability.ts",
|
|
17724
|
-
"line":
|
|
17724
|
+
"line": 170
|
|
17725
17725
|
},
|
|
17726
17726
|
"parameters": [
|
|
17727
17727
|
{
|
|
@@ -17747,7 +17747,7 @@
|
|
|
17747
17747
|
"kind": "class",
|
|
17748
17748
|
"locationInModule": {
|
|
17749
17749
|
"filename": "src/ses/ses-observability.ts",
|
|
17750
|
-
"line":
|
|
17750
|
+
"line": 163
|
|
17751
17751
|
},
|
|
17752
17752
|
"name": "SesObservability",
|
|
17753
17753
|
"properties": [
|
|
@@ -17759,7 +17759,7 @@
|
|
|
17759
17759
|
"immutable": true,
|
|
17760
17760
|
"locationInModule": {
|
|
17761
17761
|
"filename": "src/ses/ses-observability.ts",
|
|
17762
|
-
"line":
|
|
17762
|
+
"line": 165
|
|
17763
17763
|
},
|
|
17764
17764
|
"name": "CONFIGURATION_SET_NAME_SSM_PARAMETER",
|
|
17765
17765
|
"static": true,
|
|
@@ -17775,7 +17775,7 @@
|
|
|
17775
17775
|
"immutable": true,
|
|
17776
17776
|
"locationInModule": {
|
|
17777
17777
|
"filename": "src/ses/ses-observability.ts",
|
|
17778
|
-
"line":
|
|
17778
|
+
"line": 166
|
|
17779
17779
|
},
|
|
17780
17780
|
"name": "SNS_TOPIC_ARN_EXPORT_NAME",
|
|
17781
17781
|
"static": true,
|
|
@@ -17790,7 +17790,7 @@
|
|
|
17790
17790
|
"immutable": true,
|
|
17791
17791
|
"locationInModule": {
|
|
17792
17792
|
"filename": "src/ses/ses-observability.ts",
|
|
17793
|
-
"line":
|
|
17793
|
+
"line": 168
|
|
17794
17794
|
},
|
|
17795
17795
|
"name": "configurationSet",
|
|
17796
17796
|
"type": {
|
|
@@ -17804,7 +17804,7 @@
|
|
|
17804
17804
|
"immutable": true,
|
|
17805
17805
|
"locationInModule": {
|
|
17806
17806
|
"filename": "src/ses/ses-observability.ts",
|
|
17807
|
-
"line":
|
|
17807
|
+
"line": 167
|
|
17808
17808
|
},
|
|
17809
17809
|
"name": "snsTopic",
|
|
17810
17810
|
"type": {
|
|
@@ -17824,7 +17824,7 @@
|
|
|
17824
17824
|
"kind": "interface",
|
|
17825
17825
|
"locationInModule": {
|
|
17826
17826
|
"filename": "src/ses/ses-observability.ts",
|
|
17827
|
-
"line":
|
|
17827
|
+
"line": 71
|
|
17828
17828
|
},
|
|
17829
17829
|
"name": "SesObservabilityProps",
|
|
17830
17830
|
"properties": [
|
|
@@ -17839,7 +17839,7 @@
|
|
|
17839
17839
|
"immutable": true,
|
|
17840
17840
|
"locationInModule": {
|
|
17841
17841
|
"filename": "src/ses/ses-observability.ts",
|
|
17842
|
-
"line":
|
|
17842
|
+
"line": 87
|
|
17843
17843
|
},
|
|
17844
17844
|
"name": "bounceThresholds",
|
|
17845
17845
|
"optional": true,
|
|
@@ -17858,7 +17858,7 @@
|
|
|
17858
17858
|
"immutable": true,
|
|
17859
17859
|
"locationInModule": {
|
|
17860
17860
|
"filename": "src/ses/ses-observability.ts",
|
|
17861
|
-
"line":
|
|
17861
|
+
"line": 97
|
|
17862
17862
|
},
|
|
17863
17863
|
"name": "complaintThresholds",
|
|
17864
17864
|
"optional": true,
|
|
@@ -17876,7 +17876,7 @@
|
|
|
17876
17876
|
"immutable": true,
|
|
17877
17877
|
"locationInModule": {
|
|
17878
17878
|
"filename": "src/ses/ses-observability.ts",
|
|
17879
|
-
"line":
|
|
17879
|
+
"line": 104
|
|
17880
17880
|
},
|
|
17881
17881
|
"name": "createCasesFromMonitors",
|
|
17882
17882
|
"optional": true,
|
|
@@ -17894,7 +17894,7 @@
|
|
|
17894
17894
|
"immutable": true,
|
|
17895
17895
|
"locationInModule": {
|
|
17896
17896
|
"filename": "src/ses/ses-observability.ts",
|
|
17897
|
-
"line":
|
|
17897
|
+
"line": 77
|
|
17898
17898
|
},
|
|
17899
17899
|
"name": "loggedSesEvents",
|
|
17900
17900
|
"optional": true,
|
|
@@ -27575,7 +27575,7 @@
|
|
|
27575
27575
|
"kind": "interface",
|
|
27576
27576
|
"locationInModule": {
|
|
27577
27577
|
"filename": "src/ses/ses-observability.ts",
|
|
27578
|
-
"line":
|
|
27578
|
+
"line": 61
|
|
27579
27579
|
},
|
|
27580
27580
|
"name": "BounceThresholdsProps",
|
|
27581
27581
|
"namespace": "ses",
|
|
@@ -27588,7 +27588,7 @@
|
|
|
27588
27588
|
"immutable": true,
|
|
27589
27589
|
"locationInModule": {
|
|
27590
27590
|
"filename": "src/ses/ses-observability.ts",
|
|
27591
|
-
"line":
|
|
27591
|
+
"line": 63
|
|
27592
27592
|
},
|
|
27593
27593
|
"name": "critical",
|
|
27594
27594
|
"optional": true,
|
|
@@ -27604,7 +27604,7 @@
|
|
|
27604
27604
|
"immutable": true,
|
|
27605
27605
|
"locationInModule": {
|
|
27606
27606
|
"filename": "src/ses/ses-observability.ts",
|
|
27607
|
-
"line":
|
|
27607
|
+
"line": 62
|
|
27608
27608
|
},
|
|
27609
27609
|
"name": "warning",
|
|
27610
27610
|
"optional": true,
|
|
@@ -27625,7 +27625,7 @@
|
|
|
27625
27625
|
"kind": "interface",
|
|
27626
27626
|
"locationInModule": {
|
|
27627
27627
|
"filename": "src/ses/ses-observability.ts",
|
|
27628
|
-
"line":
|
|
27628
|
+
"line": 66
|
|
27629
27629
|
},
|
|
27630
27630
|
"name": "ComplaintThresholdsProps",
|
|
27631
27631
|
"namespace": "ses",
|
|
@@ -27638,7 +27638,7 @@
|
|
|
27638
27638
|
"immutable": true,
|
|
27639
27639
|
"locationInModule": {
|
|
27640
27640
|
"filename": "src/ses/ses-observability.ts",
|
|
27641
|
-
"line":
|
|
27641
|
+
"line": 68
|
|
27642
27642
|
},
|
|
27643
27643
|
"name": "critical",
|
|
27644
27644
|
"optional": true,
|
|
@@ -27654,7 +27654,7 @@
|
|
|
27654
27654
|
"immutable": true,
|
|
27655
27655
|
"locationInModule": {
|
|
27656
27656
|
"filename": "src/ses/ses-observability.ts",
|
|
27657
|
-
"line":
|
|
27657
|
+
"line": 67
|
|
27658
27658
|
},
|
|
27659
27659
|
"name": "warning",
|
|
27660
27660
|
"optional": true,
|
|
@@ -27680,7 +27680,7 @@
|
|
|
27680
27680
|
},
|
|
27681
27681
|
"locationInModule": {
|
|
27682
27682
|
"filename": "src/ses/ses-observability.ts",
|
|
27683
|
-
"line":
|
|
27683
|
+
"line": 170
|
|
27684
27684
|
},
|
|
27685
27685
|
"parameters": [
|
|
27686
27686
|
{
|
|
@@ -27706,7 +27706,7 @@
|
|
|
27706
27706
|
"kind": "class",
|
|
27707
27707
|
"locationInModule": {
|
|
27708
27708
|
"filename": "src/ses/ses-observability.ts",
|
|
27709
|
-
"line":
|
|
27709
|
+
"line": 163
|
|
27710
27710
|
},
|
|
27711
27711
|
"name": "SesObservability",
|
|
27712
27712
|
"namespace": "ses",
|
|
@@ -27719,7 +27719,7 @@
|
|
|
27719
27719
|
"immutable": true,
|
|
27720
27720
|
"locationInModule": {
|
|
27721
27721
|
"filename": "src/ses/ses-observability.ts",
|
|
27722
|
-
"line":
|
|
27722
|
+
"line": 165
|
|
27723
27723
|
},
|
|
27724
27724
|
"name": "CONFIGURATION_SET_NAME_SSM_PARAMETER",
|
|
27725
27725
|
"static": true,
|
|
@@ -27735,7 +27735,7 @@
|
|
|
27735
27735
|
"immutable": true,
|
|
27736
27736
|
"locationInModule": {
|
|
27737
27737
|
"filename": "src/ses/ses-observability.ts",
|
|
27738
|
-
"line":
|
|
27738
|
+
"line": 166
|
|
27739
27739
|
},
|
|
27740
27740
|
"name": "SNS_TOPIC_ARN_EXPORT_NAME",
|
|
27741
27741
|
"static": true,
|
|
@@ -27750,7 +27750,7 @@
|
|
|
27750
27750
|
"immutable": true,
|
|
27751
27751
|
"locationInModule": {
|
|
27752
27752
|
"filename": "src/ses/ses-observability.ts",
|
|
27753
|
-
"line":
|
|
27753
|
+
"line": 168
|
|
27754
27754
|
},
|
|
27755
27755
|
"name": "configurationSet",
|
|
27756
27756
|
"type": {
|
|
@@ -27764,7 +27764,7 @@
|
|
|
27764
27764
|
"immutable": true,
|
|
27765
27765
|
"locationInModule": {
|
|
27766
27766
|
"filename": "src/ses/ses-observability.ts",
|
|
27767
|
-
"line":
|
|
27767
|
+
"line": 167
|
|
27768
27768
|
},
|
|
27769
27769
|
"name": "snsTopic",
|
|
27770
27770
|
"type": {
|
|
@@ -27784,7 +27784,7 @@
|
|
|
27784
27784
|
"kind": "interface",
|
|
27785
27785
|
"locationInModule": {
|
|
27786
27786
|
"filename": "src/ses/ses-observability.ts",
|
|
27787
|
-
"line":
|
|
27787
|
+
"line": 71
|
|
27788
27788
|
},
|
|
27789
27789
|
"name": "SesObservabilityProps",
|
|
27790
27790
|
"namespace": "ses",
|
|
@@ -27800,7 +27800,7 @@
|
|
|
27800
27800
|
"immutable": true,
|
|
27801
27801
|
"locationInModule": {
|
|
27802
27802
|
"filename": "src/ses/ses-observability.ts",
|
|
27803
|
-
"line":
|
|
27803
|
+
"line": 87
|
|
27804
27804
|
},
|
|
27805
27805
|
"name": "bounceThresholds",
|
|
27806
27806
|
"optional": true,
|
|
@@ -27819,7 +27819,7 @@
|
|
|
27819
27819
|
"immutable": true,
|
|
27820
27820
|
"locationInModule": {
|
|
27821
27821
|
"filename": "src/ses/ses-observability.ts",
|
|
27822
|
-
"line":
|
|
27822
|
+
"line": 97
|
|
27823
27823
|
},
|
|
27824
27824
|
"name": "complaintThresholds",
|
|
27825
27825
|
"optional": true,
|
|
@@ -27837,7 +27837,7 @@
|
|
|
27837
27837
|
"immutable": true,
|
|
27838
27838
|
"locationInModule": {
|
|
27839
27839
|
"filename": "src/ses/ses-observability.ts",
|
|
27840
|
-
"line":
|
|
27840
|
+
"line": 104
|
|
27841
27841
|
},
|
|
27842
27842
|
"name": "createCasesFromMonitors",
|
|
27843
27843
|
"optional": true,
|
|
@@ -27855,7 +27855,7 @@
|
|
|
27855
27855
|
"immutable": true,
|
|
27856
27856
|
"locationInModule": {
|
|
27857
27857
|
"filename": "src/ses/ses-observability.ts",
|
|
27858
|
-
"line":
|
|
27858
|
+
"line": 77
|
|
27859
27859
|
},
|
|
27860
27860
|
"name": "loggedSesEvents",
|
|
27861
27861
|
"optional": true,
|
|
@@ -28262,5 +28262,5 @@
|
|
|
28262
28262
|
}
|
|
28263
28263
|
},
|
|
28264
28264
|
"version": "0.0.0",
|
|
28265
|
-
"fingerprint": "
|
|
28265
|
+
"fingerprint": "WyxyZiIWba3mGohT5V4oPKpWIaG6r9i2kO+lPtn6jWs="
|
|
28266
28266
|
}
|
|
@@ -30,18 +30,24 @@ const COMPLAINT_THRESHOLDS_DEFAULT = {
|
|
|
30
30
|
* Also creates a Datadog case when createCase is set to true.
|
|
31
31
|
*/
|
|
32
32
|
class SesMonitorNotification {
|
|
33
|
-
constructor(
|
|
34
|
-
this.
|
|
33
|
+
constructor(createDatadogCase) {
|
|
34
|
+
this.createDatadogCase = createDatadogCase;
|
|
35
|
+
this.slackNotification = new datadogv2_1.DefaultSlackNotification();
|
|
36
|
+
this.caseNotification = new datadogv2_1.DatadogCaseNotification();
|
|
35
37
|
}
|
|
36
38
|
generateMessageAnnotation(monitor) {
|
|
37
|
-
const slackHandle =
|
|
38
|
-
const caseHandle = this.
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
39
|
+
const slackHandle = this.slackNotification.generateMessageAnnotation(monitor);
|
|
40
|
+
const caseHandle = this.caseNotification.generateMessageAnnotation(monitor);
|
|
41
|
+
const alertHandles = [
|
|
42
|
+
slackHandle,
|
|
43
|
+
...(this.createDatadogCase ? [caseHandle] : []),
|
|
44
|
+
];
|
|
45
|
+
return [
|
|
46
|
+
'{{#is_alert}}',
|
|
47
|
+
...alertHandles,
|
|
48
|
+
'{{/is_alert}}',
|
|
49
|
+
`{{#is_alert_recovery}}${slackHandle}{{/is_alert_recovery}}`,
|
|
50
|
+
].join('\n');
|
|
45
51
|
}
|
|
46
52
|
}
|
|
47
53
|
/**
|
|
@@ -259,4 +265,4 @@ SesObservability[_a] = { fqn: "@rio-cloud/cdk-v2-constructs.SesObservability", v
|
|
|
259
265
|
// ! changing these values is a breaking change for users
|
|
260
266
|
SesObservability.CONFIGURATION_SET_NAME_SSM_PARAMETER = '/rio/config/ses-observability/configuration-set-name';
|
|
261
267
|
SesObservability.SNS_TOPIC_ARN_EXPORT_NAME = 'RioSesObservabilityTopicArn';
|
|
262
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VzLW9ic2VydmFiaWxpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VzL3Nlcy1vYnNlcnZhYmlsaXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkJBQTZCO0FBQzdCLDZDQUFvQztBQUNwQyxpREFBaUQ7QUFFakQsbURBQTRFO0FBQzVFLDJDQUEyQztBQUMzQywyQ0FBMkM7QUFDM0Msc0VBQXNFO0FBQ3RFLDJDQUEyQztBQUMzQyx3Q0FBd0M7QUFDeEMsMkNBQXVDO0FBQ3ZDLHFDQUFzQztBQUN0Qyw0Q0FBb0Q7QUFDcEQsNENBTXNCO0FBQ3RCLDBEQUFxRDtBQUVyRCxNQUFNLHlCQUF5QixHQUFHO0lBQ2hDLFFBQVEsRUFBRSxJQUFJO0lBQ2QsT0FBTyxFQUFFLElBQUk7Q0FDZCxDQUFDO0FBRUYsTUFBTSw0QkFBNEIsR0FBRztJQUNuQyxRQUFRLEVBQUUsS0FBSztJQUNmLE9BQU8sRUFBRSxNQUFNO0NBQ2hCLENBQUM7QUFFRjs7O0dBR0c7QUFDSCxNQUFNLHNCQUFzQjtJQUMxQixZQUE2QixVQUFtQjtRQUFuQixlQUFVLEdBQVYsVUFBVSxDQUFTO0lBQ2hELENBQUM7SUFFRCx5QkFBeUIsQ0FBQyxPQUF1QjtRQUMvQyxNQUFNLFdBQVcsR0FBRyxJQUFJLG9DQUF3QixFQUFFLENBQUMseUJBQXlCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEYsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVU7WUFDaEMsQ0FBQyxDQUFDLElBQUksbUNBQXVCLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQyxPQUFPLENBQUM7WUFDbEUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNQLE9BQU8sSUFBQSxtQkFBVSxFQUFBO21CQUNGLFdBQVcsR0FBRyxVQUFVOzRCQUNmLFdBQVc7S0FDbEMsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQWdERDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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QUUsR0FBRzthQUNyQjtZQUNELFlBQVksRUFBRSxtQkFBbUI7U0FDbEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ssNENBQTRDLENBQUMsV0FBMkI7UUFDOUUsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakMsS0FBSyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDdkIsUUFBUSxFQUFFLEdBQUcsRUFBRTtnQkFDYixNQUFNLE1BQU0sR0FBYSxFQUFFLENBQUM7Z0JBQzVCLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO29CQUNsQyxJQUFJLElBQUksWUFBWSxnQ0FBcUIsRUFBRSxDQUFDO3dCQUMxQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO3dCQUN2QyxJQUFJLFlBQVksS0FBSyxXQUFXLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDOzRCQUN2RCxNQUFNLENBQUMsSUFBSSxDQUFDLDBFQUEwRSxDQUFDLENBQUM7d0JBQzFGLENBQUM7b0JBQ0gsQ0FBQztnQkFDSCxDQUFDLENBQUMsQ0FBQztnQkFDSCxPQUFPLE1BQU0sQ0FBQztZQUNoQixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUExS0gsNENBMktDOzs7QUExS0MseURBQXlEO0FBQ3pDLHFEQUFvQyxHQUFHLHNEQUFzRCxDQUFDO0FBQzlGLDBDQUF5QixHQUFHLDZCQUE2QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IFN0YWNrIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgbGFtYmRhIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0IHsgTm9kZWpzRnVuY3Rpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhLW5vZGVqcyc7XG5pbXBvcnQgeyBDZm5TdWJzY3JpcHRpb25GaWx0ZXIsIFJldGVudGlvbkRheXMgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbG9ncyc7XG5pbXBvcnQgKiBhcyBzZXMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXNlcyc7XG5pbXBvcnQgKiBhcyBzbnMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXNucyc7XG5pbXBvcnQgKiBhcyBzbnNTdWJzY3JpcHRpb25zIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zbnMtc3Vic2NyaXB0aW9ucyc7XG5pbXBvcnQgKiBhcyBzc20gZnJvbSAnYXdzLWNkay1saWIvYXdzLXNzbSc7XG5pbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWIvY29yZSc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IHRyaW1JbmRlbnQgfSBmcm9tICcuL2hlbHBlcic7XG5pbXBvcnQgeyBERUZBVUxUX05PREVfUlVOVElNRSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICBEYXRhZG9nQ2FzZU5vdGlmaWNhdGlvbixcbiAgRGF0YWRvZ01vbml0b3IsXG4gIERhdGFkb2dNb25pdG9yUXVlcnlBbGVydFR5cGUsXG4gIERlZmF1bHRTbGFja05vdGlmaWNhdGlvbixcbiAgSU5vdGlmaWNhdGlvbixcbn0gZnJvbSAnLi4vZGF0YWRvZ3YyJztcbmltcG9ydCB7IFJpb0xhbmRpbmdab25lIH0gZnJvbSAnLi4vcmlvLWxhbmRpbmctem9uZSc7XG5cbmNvbnN0IEJPVU5DRV9USFJFU0hPTERTX0RFRkFVTFQgPSB7XG4gIGNyaXRpY2FsOiAwLjA1LFxuICB3YXJuaW5nOiAwLjA0LFxufTtcblxuY29uc3QgQ09NUExBSU5UX1RIUkVTSE9MRFNfREVGQVVMVCA9IHtcbiAgY3JpdGljYWw6IDAuMDAxLFxuICB3YXJuaW5nOiAwLjAwMDgsXG59O1xuXG4vKipcbiAqIFNlbmRzIGEgU2xhY2sgbm90aWZpY2F0aW9uIGZvciBtb25pdG9yIGFsZXJ0cyBhbmQgcmVjb3ZlcnkgKG5vIG5vdGlmaWNhdGlvbiBmb3IgbW9uaXRvciB3YXJuaW5ncykuXG4gKiBBbHNvIGNyZWF0ZXMgYSBEYXRhZG9nIGNhc2Ugd2hlbiBjcmVhdGVDYXNlIGlzIHNldCB0byB0cnVlLlxuICovXG5jbGFzcyBTZXNNb25pdG9yTm90aWZpY2F0aW9uIGltcGxlbWVudHMgSU5vdGlmaWNhdGlvbiB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgY3JlYXRlQ2FzZTogYm9vbGVhbikge1xuICB9XG5cbiAgZ2VuZXJhdGVNZXNzYWdlQW5ub3RhdGlvbihtb25pdG9yOiBEYXRhZG9nTW9uaXRvcik6IHN0cmluZyB7XG4gICAgY29uc3Qgc2xhY2tIYW5kbGUgPSBuZXcgRGVmYXVsdFNsYWNrTm90aWZpY2F0aW9uKCkuZ2VuZXJhdGVNZXNzYWdlQW5ub3RhdGlvbihtb25pdG9yKTtcbiAgICBjb25zdCBjYXNlSGFuZGxlID0gdGhpcy5jcmVhdGVDYXNlXG4gICAgICA/IG5ldyBEYXRhZG9nQ2FzZU5vdGlmaWNhdGlvbigpLmdlbmVyYXRlTWVzc2FnZUFubm90YXRpb24obW9uaXRvcilcbiAgICAgIDogJyc7XG4gICAgcmV0dXJuIHRyaW1JbmRlbnRgXG4gICAge3sjaXNfYWxlcnR9fSR7c2xhY2tIYW5kbGV9JHtjYXNlSGFuZGxlfXt7L2lzX2FsZXJ0fX1cbiAgICB7eyNpc19hbGVydF9yZWNvdmVyeX19JHtzbGFja0hhbmRsZX17ey9pc19hbGVydF9yZWNvdmVyeX19XG4gICAgYDtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJvdW5jZVRocmVzaG9sZHNQcm9wcyB7XG4gIHJlYWRvbmx5IHdhcm5pbmc/OiBudW1iZXI7XG4gIHJlYWRvbmx5IGNyaXRpY2FsPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBsYWludFRocmVzaG9sZHNQcm9wcyB7XG4gIHJlYWRvbmx5IHdhcm5pbmc/OiBudW1iZXI7XG4gIHJlYWRvbmx5IGNyaXRpY2FsPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlc09ic2VydmFiaWxpdHlQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgU0VTIGV2ZW50cyB0byBsb2cuXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgW0VtYWlsU2VuZGluZ0V2ZW50LkRFTElWRVJZLCBFbWFpbFNlbmRpbmdFdmVudC5CT1VOQ0UsIEVtYWlsU2VuZGluZ0V2ZW50LkNPTVBMQUlOVCwgRW1haWxTZW5kaW5nRXZlbnQuUkVKRUNUXVxuICAgKi9cbiAgcmVhZG9ubHkgbG9nZ2VkU2VzRXZlbnRzPzogc2VzLkVtYWlsU2VuZGluZ0V2ZW50W107XG5cbiAgLyoqXG4gICAqIFRoZSBUaHJlc2hvbGRzIGZvciBib3VuY2UgcmF0ZSBNb25pdG9ycy5cbiAgICpcbiAgICogVGhlIGRlZmF1bHQgc2hvdWxkIG9ubHkgYmUgb3ZlcndyaXR0ZW4sIGlmIHRoZXJlIGlzIHJlYWxseSBubyBwb3NzaWJpbGl0eSB0byByZWR1Y2UgdGhlIGJvdW5jZSByYXRlIG1lYW5pbmdmdWxseS5cbiAgICogSWYgdGhpcyBtZXRyaWMgcmVhY2hlcyBgMTAlYCB0aGUgZW1haWwgc2VuZGluZyBjYXBhYmlsaXR5IG9mIHlvdXIgYWNjb3VudCB3aWxsIGJlIGRpc2FibGVkIGJ5IEFXUy5cbiAgICpcbiAgICogQGRlZmF1bHQgeyBjcml0aWNhbDogMC4wNSwgd2FybmluZzogMC4wNCB9XG4gICAqL1xuICByZWFkb25seSBib3VuY2VUaHJlc2hvbGRzPzogQm91bmNlVGhyZXNob2xkc1Byb3BzO1xuXG4gIC8qKlxuICAgKiBUaGUgVGhyZXNob2xkcyBmb3IgYm91bmNlIHJhdGUgTW9uaXRvcnMuXG4gICAqXG4gICAqIFRoZSBkZWZhdWx0IHNob3VsZCBvbmx5IGJlIG92ZXJ3cml0dGVuLCBpZiB0aGVyZSBpcyByZWFsbHkgbm8gcG9zc2liaWxpdHkgdG8gcmVkdWNlIHRoZSBib3VuY2UgY29tcGxhaW50IG1lYW5pbmdmdWxseS5cbiAgICogSWYgdGhpcyBtZXRyaWMgcmVhY2hlcyBgMC41JWAgdGhlIGVtYWlsIHNlbmRpbmcgY2FwYWJpbGl0eSBvZiB5b3VyIGFjY291bnQgd2lsbCBiZSBkaXNhYmxlZCBieSBBV1MuXG4gICAqXG4gICAqIEBkZWZhdWx0IHsgY3JpdGljYWw6IDAuMDAxLCB3YXJuaW5nOiAwLjAwMDggfVxuICAgKi9cbiAgcmVhZG9ubHkgY29tcGxhaW50VGhyZXNob2xkcz86IENvbXBsYWludFRocmVzaG9sZHNQcm9wcztcblxuICAvKipcbiAgICogRW5hYmxlIHRoaXMgaWYgeW91IHdhbnQgdGhlIERhdGFkb2cgbW9uaXRvcnMgdG8gY3JlYXRlIGNhc2VzIGluIERhdGFkb2cgd2hlbiBhbiBhbGVydCBpcyB0cmlnZ2VyZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGNyZWF0ZUNhc2VzRnJvbU1vbml0b3JzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBSaW9TZXNPYnNlcnZhYmlsaXR5XG4gKlxuICogVGhpcyBjb25zdHJ1Y3Qgc2V0cyB1cCBvYnNlcnZhYmlsaXR5IGZvciBTRVMgYXMgZGVmaW5lZCBieSBbQURSIC0gU0VTIGRvbWFpbiByZXB1dGF0aW9uIG9ic2VydmFiaWxpdHldKGh0dHBzOi8vY29uZmx1ZW5jZS5jb2xsYWJvcmF0aW9uLW1hbi5jb20vZGlzcGxheS9NQU4vQURSKy0rU0VTK2RvbWFpbityZXB1dGF0aW9uK29ic2VydmFiaWxpdHkpLlxuICpcbiAqICMgV2FybmluZ1xuICogVGhpcyBjb25zdHJ1Y3QgcmVzdWx0cyBpbiBsb2dnaW5nIGFsbCBzZW50IGVtYWlscyBpbmNsdWRpbmcgdGhlIHJlY2lwaWVudCBhZGRyZXNzIGludG8gQ2xvdWRXYXRjaCBsb2dzLlxuICogQXMgdGhpcyBpcyBjb25zaWRlcmVkICoqUElJKiosIHRoaXMgaW5mb3JtYXRpb24gTVVTVCBiZSBoYW5kbGVkIGFjY29yZGluZ2x5LlxuICogSW4gcGFydGljdWxhciwgbG9ncyAqKk1VU1QgTk9UKiogYmUgc2VudCB0byBmdXJ0aGVyIHRoaXJkIHBhcnR5IHNlcnZpY2VzIChlLmcuIERhdGFkb2cpIGFuZCB0aGUgcmV0ZW50aW9uIHBlcmlvZCBmb3IgbG9ncyAqKk1VU1QgTk9UKiogYmUgZXh0ZW5kZWQuXG4gKlxuICogIyBVc2FnZVxuICogIyMgRGVmYXVsdCBDb25maWd1cmF0aW9uIFNldCBmb3IgSWRlbnRpdHlcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCByaW9TZXNPYnNlcnZhYmlsaXR5ID0gbmV3IFJpb1Nlc09ic2VydmFiaWxpdHkodGhpcywgJ0NvbmZpZ3VyYXRpb25TZXQnLCB7fSlcbiAqIGNvbnN0IGlkZW50aXR5ID0gbmV3IEVtYWlsSWRlbnRpdHkodGhpcywgJ0VtYWlsSWRlbnRpdHknLCB7XG4gKiAgICAgaWRlbnRpdHk6IElkZW50aXR5LmRvbWFpbignZXhhbXBsZS5jb20nKSxcbiAqICAgICBjb25maWd1cmF0aW9uU2V0OiByaW9TZXNPYnNlcnZhYmlsaXR5LmNvbmZpZ3VyYXRpb25TZXQsXG4gKiB9KTtcbiAqIGBgYFxuICpcbiAqICMjIFNwZWNpZmljYWxseSB1c2luZyB0aGUgY29uZmlndXJhdGlvbiBzZXQgcGVyIHJlcXVlc3RcbiAqXG4gKiBUaGlzIGlzIGlkZWFsIGlmIHlvdSB3YW50IHRvIHRyeSBvdXQgdGhlIGNvbnN0cnVjdCBmaXJzdCBvbmUgc29tZSBzcGVjaWZpYyBlbWFpbHMgKGUuZy4gZHVyaW5nIGluaXRpYWwgbWlncmF0aW9uKS5cbiAqIFRoZSBjb25maWd1cmF0aW9uIHNldCBuYW1lIGlzIGV4cG9ydGVkIGFzIGFuIFNTTSBwYXJhbWV0ZXIgYC9yaW8vY29uZmlnL3Nlcy1vYnNlcnZhYmlsaXR5L2NvbmZpZ3VyYXRpb24tc2V0LW5hbWVgLlxuICogVGh1cywgeW91IGNhbiBlYXNpbHkgbWFrZSBpdCBhdmFpbGFibGUgYXMgZW52aXJvbm1lbnQgdmFyaWFibGUgaW4geW91ciBjb2RlLlxuICpcbiAqIGBgYGtvdGxpblxuICogaW1wb3J0IGNvbS5hbWF6b25hd3Muc2VydmljZXMuc2ltcGxlZW1haWwubW9kZWwuU2VuZEVtYWlsUmVxdWVzdFxuICpcbiAqIHZhbCByZXF1ZXN0ID0gU2VuZEVtYWlsUmVxdWVzdCgpXG4gKiAgICAgICAgICAgICAgICAgLndpdGhDb25maWd1cmF0aW9uU2V0TmFtZShTU01fQ09ORklHVVJBVElPTl9TU01fUEFSQU1FVEVSX1ZBTFVFKVxuICogICAgICAgICAgICAgICAgIC4uLlxuICogYGBgXG4gKlxuICogIyMgQXV0b21hdGVkIGV2ZW50IHByb2Nlc3NpbmdcbiAqXG4gKiBJZiB5b3UgaGF2ZSBzcGVjaWZpYyBuZWVkcyBmb3Igd2hpY2ggeW91J2QgbGlrZSB0byBwcm9jZXNzIHRoZSBTTlMgZXZlbnRzIGRpcmVjdGx5XG4gKiAoZS5nLiBhdXRvbWF0aWNhbGx5IGNyZWF0aW5nIGEgc3VwcHJlc3Npb24gbGlzdCBmcm9tIGJvdW5jZXMpLCB5b3UgY2FuIHN1YnNjcmliZSB0byB0aGUgU05TIHRvcGljLlxuICogVG8gZW5hYmxlIHRoaXMgdGhlIFNOUyB0b3BpYyBBUk4gaXMgZXhwb3J0ZWQgdmlhIENsb3VkZm9ybWF0aW9uIGFzIGBSaW9TZXNPYnNlcnZhYmlsaXR5VG9waWNBcm5gLlxuICpcbiAqICMgTm90ZXNcbiAqICMjIEFkZCBuZWNlc3NhcnkgcGVybWlzc2lvbnMgZm9yIGZhcmdhdGUgdGFzayB0byBlbmFibGUgdXNpbmcgc2VzIGNvbmZpZ3VyYXRpb24gc2V0XG4gKiBNYWtlIHN1cmUgeW91IGhhdmUgdGhlIGZvbGxvd2luZyBwZXJtaXNzaW9ucyBpbiB0aGUgdGFzayByb2xlIG9mIHRoZSBmYXJnYXRlIHRhc2ssIGUuZy46XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAgICAgc2VydmljZS50YXNrRGVmaW5pdGlvbi50YXNrUm9sZS5hZGRUb1ByaW5jaXBhbFBvbGljeShcbiAqICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAqICAgICAgICAgYWN0aW9uczogWydzZXM6c2VuZEVtYWlsJywgJ3NlczpzZW5kUmF3RW1haWwnXSxcbiAqICAgICAgICAgcmVzb3VyY2VzOiBbYGFybjphd3M6c2VzOjx5b3VyX3JlZ2lvbj46PHlvdXJfYWNjb3VudD46Y29uZmlndXJhdGlvbi1zZXQvPHlvdXJfY29uZmlndXJhdGlvbl9zZXRfbmFtZT5gXSxcbiAqICAgICAgIH0pKTtcbiAqIGBgYFxuICpcbiAqICMjIFdhdGNoZnVsXG4gKiBJdCBtaWdodCBiZSBoZWxwZnVsIHRvIGFkZCB3YXRjaGZ1bCB0byB5b3VyIHN0YWNrIHRvXG4gKiBnZXQgbm90aWZpZWQgaWYgdGhlIHNlcy1sb2dnZXIgbGFtYmRhIGZhaWxzLlxuICovXG5leHBvcnQgY2xhc3MgU2VzT2JzZXJ2YWJpbGl0eSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIC8vICEgY2hhbmdpbmcgdGhlc2UgdmFsdWVzIGlzIGEgYnJlYWtpbmcgY2hhbmdlIGZvciB1c2Vyc1xuICBzdGF0aWMgcmVhZG9ubHkgQ09ORklHVVJBVElPTl9TRVRfTkFNRV9TU01fUEFSQU1FVEVSID0gJy9yaW8vY29uZmlnL3Nlcy1vYnNlcnZhYmlsaXR5L2NvbmZpZ3VyYXRpb24tc2V0LW5hbWUnO1xuICBzdGF0aWMgcmVhZG9ubHkgU05TX1RPUElDX0FSTl9FWFBPUlRfTkFNRSA9ICdSaW9TZXNPYnNlcnZhYmlsaXR5VG9waWNBcm4nO1xuICByZWFkb25seSBzbnNUb3BpYzogc25zLlRvcGljO1xuICByZWFkb25seSBjb25maWd1cmF0aW9uU2V0OiBzZXMuQ29uZmlndXJhdGlvblNldDtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogU2VzT2JzZXJ2YWJpbGl0eVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICBjb25zdCBhY2NvdW50SWQgPSBTdGFjay5vZih0aGlzKS5hY2NvdW50O1xuICAgIGNvbnN0IGFjY291bnROYW1lID0gUmlvTGFuZGluZ1pvbmUuZ2V0QWNjb3VudE5hbWVQYXJhbWV0ZXIodGhpcykuc3RyaW5nVmFsdWU7XG5cbiAgICBjb25zdCBwYXJhbWV0ZXIgPSBuZXcgc3NtLlN0cmluZ1BhcmFtZXRlcih0aGlzLCAnQ29uZmlndXJhdGlvblNldE5hbWUnLCB7XG4gICAgICBwYXJhbWV0ZXJOYW1lOiBTZXNPYnNlcnZhYmlsaXR5LkNPTkZJR1VSQVRJT05fU0VUX05BTUVfU1NNX1BBUkFNRVRFUixcbiAgICAgIHN0cmluZ1ZhbHVlOiAncmlvLXNlcy1vYnNlcnZhYmlsaXR5LWNvbmZpZ3VyYXRpb24tc2V0JyxcbiAgICB9KTtcblxuICAgIHRoaXMuc25zVG9waWMgPSBuZXcgc25zLlRvcGljKHRoaXMsICdTbnNUb3BpYycsIHtcbiAgICAgIHRvcGljTmFtZTogJ3Jpby1zZXMtb2JzZXJ2YWJpbGl0eS10b3BpYycsXG4gICAgfSk7XG5cbiAgICB0aGlzLmNvbmZpZ3VyYXRpb25TZXQgPSBuZXcgc2VzLkNvbmZpZ3VyYXRpb25TZXQodGhpcywgJ0NvbmZpZ3VyYXRpb25TZXQnLCB7XG4gICAgICBjb25maWd1cmF0aW9uU2V0TmFtZTogcGFyYW1ldGVyLnN0cmluZ1ZhbHVlLFxuICAgIH0pO1xuXG4gICAgdGhpcy5jb25maWd1cmF0aW9uU2V0LmFkZEV2ZW50RGVzdGluYXRpb24oJ0V2ZW50RGVzdGluYXRpb24nLCB7XG4gICAgICBjb25maWd1cmF0aW9uU2V0RXZlbnREZXN0aW5hdGlvbk5hbWU6ICdyaW8tc2VzLW9ic2VydmFiaWxpdHktZXZlbnQtZGVzdGluYXRpb24nLFxuICAgICAgZGVzdGluYXRpb246IHNlcy5FdmVudERlc3RpbmF0aW9uLnNuc1RvcGljKHRoaXMuc25zVG9waWMpLFxuICAgICAgZXZlbnRzOiBwcm9wcy5sb2dnZWRTZXNFdmVudHMgPz8gW1xuICAgICAgICBzZXMuRW1haWxTZW5kaW5nRXZlbnQuREVMSVZFUlksXG4gICAgICAgIHNlcy5FbWFpbFNlbmRpbmdFdmVudC5CT1VOQ0UsXG4gICAgICAgIHNlcy5FbWFpbFNlbmRpbmdFdmVudC5DT01QTEFJTlQsXG4gICAgICAgIHNlcy5FbWFpbFNlbmRpbmdFdmVudC5SRUpFQ1QsXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgY29uc3QgbG9nRnVuY3Rpb24gPSBuZXcgbGFtYmRhLkZ1bmN0aW9uKHRoaXMsICdMb2dGdW5jdGlvbicsIHtcbiAgICAgIGZ1bmN0aW9uTmFtZTogJ3Jpby1zZXMtb2JzZXJ2YWJpbGl0eS1sb2ctZnVuY3Rpb24nLFxuICAgICAgcnVudGltZTogREVGQVVMVF9OT0RFX1JVTlRJTUUsXG4gICAgICBhcmNoaXRlY3R1cmU6IGxhbWJkYS5BcmNoaXRlY3R1cmUuQVJNXzY0LFxuICAgICAgaGFuZGxlcjogJ3Nlcy1sb2dnZXIuaGFuZGxlcicsXG4gICAgICBsb2dSZXRlbnRpb246IFJldGVudGlvbkRheXMuVEhSRUVfTU9OVEhTLFxuICAgICAgc3lzdGVtTG9nTGV2ZWxWMjogbGFtYmRhLlN5c3RlbUxvZ0xldmVsLldBUk4sXG4gICAgICBsb2dnaW5nRm9ybWF0OiBsYW1iZGEuTG9nZ2luZ0Zvcm1hdC5KU09OLFxuICAgICAgY29kZTogbGFtYmRhLkNvZGUuZnJvbUFzc2V0KHBhdGguam9pbihfX2Rpcm5hbWUsICdsYW1iZGEnKSwge1xuICAgICAgICBleGNsdWRlOiBbJyouanMnLCAnKi5kLnRzJ10sXG4gICAgICB9KSxcbiAgICB9KTtcbiAgICB0aGlzLmVuc3VyZU5vU3Vic2NyaXB0aW9uRmlsdGVyc09uTGFtYmRhc0xvZ0dyb3VwKGxvZ0Z1bmN0aW9uKTtcblxuICAgIHRoaXMuc25zVG9waWMuYWRkU3Vic2NyaXB0aW9uKG5ldyBzbnNTdWJzY3JpcHRpb25zLkxhbWJkYVN1YnNjcmlwdGlvbihsb2dGdW5jdGlvbikpO1xuXG4gICAgbmV3IGNkay5DZm5PdXRwdXQodGhpcywgJ1Nuc1RvcGljQXJuJywge1xuICAgICAgdmFsdWU6IHRoaXMuc25zVG9waWMudG9waWNBcm4sXG4gICAgICBleHBvcnROYW1lOiBTZXNPYnNlcnZhYmlsaXR5LlNOU19UT1BJQ19BUk5fRVhQT1JUX05BTUUsXG4gICAgfSk7XG5cbiAgICBjb25zdCBtb25pdG9yTm90aWZpY2F0aW9uID0gbmV3IFNlc01vbml0b3JOb3RpZmljYXRpb24ocHJvcHMuY3JlYXRlQ2FzZXNGcm9tTW9uaXRvcnMgPz8gZmFsc2UpO1xuXG4gICAgbmV3IERhdGFkb2dNb25pdG9yKHRoaXMsICdRdW90YU1vbml0b3InLCB7XG4gICAgICBuYW1lOiBgJHthY2NvdW50TmFtZX0gU0VTIHF1b3RhIGFsbW9zdCByZWFjaGVkYCxcbiAgICAgIHNlcnZpY2VOYW1lOiAnYXdzLXNlcycsXG4gICAgICBtb25pdG9yVHlwZTogRGF0YWRvZ01vbml0b3JRdWVyeUFsZXJ0VHlwZS5RVUVSWV9BTEVSVCxcbiAgICAgIHF1ZXJ5OiBgbWF4KGxhc3RfMWgpOm1heDphd3Muc2VzLnNlbnRfbGFzdF8yNF9ob3Vyc3thY2NvdW50X2lkOiR7YWNjb3VudElkfX0gLyBtYXg6YXdzLnNlcy5tYXhfMjRfaG91cl9zZW5ke2FjY291bnRfaWQ6JHthY2NvdW50SWR9fSA+IDAuOGAsXG4gICAgICBtZXNzYWdlOiB0cmltSW5kZW50YFxuICAgICAgICBZb3UgYXJlIGFsbW9zdCB1c2luZyB1cCB5b3UncmUgbWF4aW11bSBlbWFpbCBzZW5kaW5nIHF1b3RhIHBlciAyNGguIFxuICAgICAgICBFaXRoZXIgW3JlcXVlc3QgYW4gaW5jcmVhc2VdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9zZXMvbGF0ZXN0L2RnL21hbmFnZS1zZW5kaW5nLXF1b3Rhcy1yZXF1ZXN0LWluY3JlYXNlLmh0bWwpIGZvciB5b3VyIHF1b3RhIGJ5IEFXUyBvciByZWR1Y2UgdGhlIGFtb3VudCBvZiBlbWFpbHMgc2VudC5cbiAgICAgICAgWW91IGNhbiBmaW5kIGxvZ3MgYWJvdXQgYWxsIG1haWxzIHNlbnQgYXQgXFxgJHtsb2dGdW5jdGlvbi5sb2dHcm91cC5sb2dHcm91cE5hbWV9XFxgLlxuICAgICAgICBgLFxuICAgICAgcHJpb3JpdHk6IDQsXG4gICAgICBvcHRpb25PdmVycmlkZXM6IHtcbiAgICAgICAgdGhyZXNob2xkczoge1xuICAgICAgICAgIGNyaXRpY2FsOiAwLjgsXG4gICAgICAgICAgd2FybmluZzogMC43LFxuICAgICAgICB9LFxuICAgICAgICBldmFsdWF0aW9uRGVsYXk6IDkwMCxcbiAgICAgIH0sXG4gICAgICBub3RpZmljYXRpb246IG1vbml0b3JOb3RpZmljYXRpb24sXG4gICAgfSk7XG5cbiAgICBuZXcgRGF0YWRvZ01vbml0b3IodGhpcywgJ0VtYWlsUmVqZWN0ZWRNb25pdG9yJywge1xuICAgICAgbmFtZTogYCR7YWNjb3VudE5hbWV9IFNFUyBFbWFpbCBSZWplY3RlZGAsXG4gICAgICBzZXJ2aWNlTmFtZTogJ2F3cy1zZXMnLFxuICAgICAgbW9uaXRvclR5cGU6IERhdGFkb2dNb25pdG9yUXVlcnlBbGVydFR5cGUuUVVFUllfQUxFUlQsXG4gICAgICBxdWVyeTogYHN1bShsYXN0XzFoKTptYXg6YXdzLnNlcy5yZWplY3Rze2FjY291bnRfaWQ6JHthY2NvdW50SWR9fSA+IDBgLFxuICAgICAgbWVzc2FnZTogdHJpbUluZGVudGBcbiAgICAgICAgU0VTIFtyZWplY3RlZF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3Nlcy9sYXRlc3QvZGcvbW9uaXRvci1zZW5kaW5nLWFjdGl2aXR5Lmh0bWwpIHNlbmRpbmcgYXQgbGVhc3Qgb25lIGVtYWlsLlxuICAgICAgICBQbGVhc2UgaW52ZXN0aWdhdGUgdGhlIHJvb3QgY2FzZSwgYXMgdGhpcyBpcyBub3QgZXhwZWN0ZWQgdG8gaGFwcGVuIGluIHByb2R1Y3Rpb24gZXZlci5cbiAgICAgICAgWW91IGNhbiBmaW5kIGxvZ3MgYWJvdXQgYWxsIG1haWxzIHNlbnQgYXQgXFxgJHtsb2dGdW5jdGlvbi5sb2dHcm91cC5sb2dHcm91cE5hbWV9XFxgLlxuICAgICAgICBgLFxuICAgICAgcHJpb3JpdHk6IDMsXG4gICAgICBvcHRpb25PdmVycmlkZXM6IHtcbiAgICAgICAgdGhyZXNob2xkczoge1xuICAgICAgICAgIGNyaXRpY2FsOiAwLFxuICAgICAgICB9LFxuICAgICAgICBldmFsdWF0aW9uRGVsYXk6IDkwMCxcbiAgICAgIH0sXG4gICAgICBub3RpZmljYXRpb246IG1vbml0b3JOb3RpZmljYXRpb24sXG4gICAgfSk7XG5cbiAgICBjb25zdCBjb21wbGFpbnRUaHJlc2hvbGRzID0ge1xuICAgICAgd2FybmluZzogcHJvcHMuY29tcGxhaW50VGhyZXNob2xkcz8ud2FybmluZyA/PyBDT01QTEFJTlRfVEhSRVNIT0xEU19ERUZBVUxULndhcm5pbmcsXG4gICAgICBjcml0aWNhbDogcHJvcHMuY29tcGxhaW50VGhyZXNob2xkcz8uY3JpdGljYWwgPz8gQ09NUExBSU5UX1RIUkVTSE9MRFNfREVGQVVMVC5jcml0aWNhbCxcbiAgICB9O1xuICAgIG5ldyBEYXRhZG9nTW9uaXRvcih0aGlzLCAnQ29tcGxhaW50UmF0ZU1vbml0b3InLCB7XG4gICAgICBuYW1lOiBgJHthY2NvdW50TmFtZX0gU0VTIHJlcHV0YXRpb24gZW5kYW5nZXJlZDogQ29tcGxhaW50IHJhdGUgSGlnaGAsXG4gICAgICBzZXJ2aWNlTmFtZTogJ2F3cy1zZXMnLFxuICAgICAgbW9uaXRvclR5cGU6IERhdGFkb2dNb25pdG9yUXVlcnlBbGVydFR5cGUuUVVFUllfQUxFUlQsXG4gICAgICBxdWVyeTogYG1heChsYXN0XzFoKTptYXg6YXdzLnNlcy5yZXB1dGF0aW9uX2NvbXBsYWludF9yYXRle2FjY291bnRfaWQ6JHthY2NvdW50SWR9IGFuZCBub3Qgc2VzOip9ID4gJHtjb21wbGFpbnRUaHJlc2hvbGRzLmNyaXRpY2FsfWAsXG4gICAgICBtZXNzYWdlOiB0cmltSW5kZW50YFxuICAgICAgICBXYXJuaW5nIFRocmVzaG9sZCBmb3IgQ29tcGxhaW50IHJhdGUge3sjaXNfd2FybmluZ319YWxtb3N0IHt7L2lzX3dhcm5pbmd9fXJlYWNoZWQgKGFzIGRlZmluZWQgaW4gQVdTKS5cbiAgICAgICAgXG4gICAgICAgIFBsZWFzZSByZWR1Y2UgdGhlIG51bWJlciBvZiBjb21wbGFpbnRzIHJlY2VpdmVkIGZvciBFLW1haWxzIHNlbnQgYnkgeW91ciBBY2NvdW50LlxuICAgICAgICBJZiB0aGlzIG1ldHJpYyByZWFjaGVzIFxcYDAuNSVcXGAgdGhlIGVtYWlsIHNlbmRpbmcgY2FwYWJpbGl0eSBvZiB5b3VyIGFjY291bnQgd2lsbCBiZSBkaXNhYmxlZCBieSBBV1MuXG4gICAgICAgIFlvdSBjYW4gZmluZCBsb2dzIGFib3V0IGFsbCBtYWlscyBzZW50IGF0IFxcYCR7bG9nRnVuY3Rpb24ubG9nR3JvdXAubG9nR3JvdXBOYW1lfVxcYC5cbiAgICAgICAgU2VlIFtBRFIgLSBTRVMgZG9tYWluIHJlcHV0YXRpb24gb2JzZXJ2YWJpbGl0eV0oaHR0cHM6Ly9jb25mbHVlbmNlLmNvbGxhYm9yYXRpb24tbWFuLmNvbS9kaXNwbGF5L01BTi9BRFIrLStTRVMrZG9tYWluK3JlcHV0YXRpb24rb2JzZXJ2YWJpbGl0eSkuXG4gICAgICAgIGAsXG4gICAgICBwcmlvcml0eTogMixcbiAgICAgIG9wdGlvbk92ZXJyaWRlczoge1xuICAgICAgICB0aHJlc2hvbGRzOiBjb21wbGFpbnRUaHJlc2hvbGRzLFxuICAgICAgICBldmFsdWF0aW9uRGVsYXk6IDkwMCxcbiAgICAgIH0sXG4gICAgICBub3RpZmljYXRpb246IG1vbml0b3JOb3RpZmljYXRpb24sXG4gICAgfSk7XG5cbiAgICBjb25zdCBib3VuY2VUaHJlc2hvbGRzID0ge1xuICAgICAgd2FybmluZzogcHJvcHMuYm91bmNlVGhyZXNob2xkcz8ud2FybmluZyA/PyBCT1VOQ0VfVEhSRVNIT0xEU19ERUZBVUxULndhcm5pbmcsXG4gICAgICBjcml0aWNhbDogcHJvcHMuYm91bmNlVGhyZXNob2xkcz8uY3JpdGljYWwgPz8gQk9VTkNFX1RIUkVTSE9MRFNfREVGQVVMVC5jcml0aWNhbCxcbiAgICB9O1xuICAgIG5ldyBEYXRhZG9nTW9uaXRvcih0aGlzLCAnQm91bmNlUmF0ZU1vbml0b3InLCB7XG4gICAgICBuYW1lOiBgJHthY2NvdW50TmFtZX0gU0VTIHJlcHV0YXRpb24gZW5kYW5nZXJlZDogQm91bmNlIFJhdGUgSGlnaGAsXG4gICAgICBzZXJ2aWNlTmFtZTogJ2F3cy1zZXMnLFxuICAgICAgbW9uaXRvclR5cGU6IERhdGFkb2dNb25pdG9yUXVlcnlBbGVydFR5cGUuUVVFUllfQUxFUlQsXG4gICAgICBxdWVyeTogYG1heChsYXN0XzFoKTptYXg6YXdzLnNlcy5yZXB1dGF0aW9uX2JvdW5jZV9yYXRle2FjY291bnRfaWQ6JHthY2NvdW50SWR9IGFuZCBub3Qgc2VzOip9ID4gJHtib3VuY2VUaHJlc2hvbGRzLmNyaXRpY2FsfWAsXG4gICAgICBtZXNzYWdlOiB0cmltSW5kZW50YFxuICAgICAgICBXYXJuaW5nIFRocmVzaG9sZCBmb3IgQm91bmNlIHJhdGUge3sjaXNfd2FybmluZ319YWxtb3N0IHt7L2lzX3dhcm5pbmd9fXJlYWNoZWQgKGFzIGRlZmluZWQgaW4gQVdTKS5cbiAgICAgICAgXG4gICAgICAgIFBsZWFzZSByZWR1Y2UgdGhlIG51bWJlciBvZiBib3VuY2VzIGZvciBFLW1haWxzIHNlbnQgYnkgeW91ciBBY2NvdW50LlxuICAgICAgICBJZiB0aGlzIG1ldHJpYyByZWFjaGVzIFxcYDEwJVxcYCB0aGUgZW1haWwgc2VuZGluZyBjYXBhYmlsaXR5IG9mIHlvdXIgYWNjb3VudCB3aWxsIGJlIGRpc2FibGVkIGJ5IEFXUy5cbiAgICAgICAgWW91IGNhbiBmaW5kIGxvZ3MgYWJvdXQgYWxsIG1haWxzIHNlbnQgYXQgXFxgJHtsb2dGdW5jdGlvbi5sb2dHcm91cC5sb2dHcm91cE5hbWV9XFxgLlxuICAgICAgICBTZWUgW0FEUiAtIFNFUyBkb21haW4gcmVwdXRhdGlvbiBvYnNlcnZhYmlsaXR5XShodHRwczovL2NvbmZsdWVuY2UuY29sbGFib3JhdGlvbi1tYW4uY29tL2Rpc3BsYXkvTUFOL0FEUistK1NFUytkb21haW4rcmVwdXRhdGlvbitvYnNlcnZhYmlsaXR5KS5cbiAgICAgICAgYCxcbiAgICAgIHByaW9yaXR5OiAyLFxuICAgICAgb3B0aW9uT3ZlcnJpZGVzOiB7XG4gICAgICAgIHRocmVzaG9sZHM6IGJvdW5jZVRocmVzaG9sZHMsXG4gICAgICAgIGV2YWx1YXRpb25EZWxheTogOTAwLFxuICAgICAgfSxcbiAgICAgIG5vdGlmaWNhdGlvbjogbW9uaXRvck5vdGlmaWNhdGlvbixcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGZ1bmN0aW9uIGVuc3VyZXMgdGhhdCBubyBQSUkgaXMgbGVha2VkIHRvIERhdGFkb2cgYnkgYWRkaW5nIGEgc3Vic2NyaXB0aW9uIGZpbHRlciB0byB0aGUgbG9nIGdyb3VwIG9mIHRoZSBsYW1iZGEuXG4gICAqL1xuICBwcml2YXRlIGVuc3VyZU5vU3Vic2NyaXB0aW9uRmlsdGVyc09uTGFtYmRhc0xvZ0dyb3VwKGxvZ0Z1bmN0aW9uOiBOb2RlanNGdW5jdGlvbikge1xuICAgIGNvbnN0IHN0YWNrID0gY2RrLlN0YWNrLm9mKHRoaXMpO1xuICAgIHN0YWNrLm5vZGUuYWRkVmFsaWRhdGlvbih7XG4gICAgICB2YWxpZGF0ZTogKCkgPT4ge1xuICAgICAgICBjb25zdCBlcnJvcnM6IHN0cmluZ1tdID0gW107XG4gICAgICAgIHN0YWNrLm5vZGUuZmluZEFsbCgpLmZvckVhY2gobm9kZSA9PiB7XG4gICAgICAgICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBDZm5TdWJzY3JpcHRpb25GaWx0ZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IGxvZ0dyb3VwTmFtZSA9IG5vZGUubG9nR3JvdXBOYW1lO1xuICAgICAgICAgICAgaWYgKGxvZ0dyb3VwTmFtZSA9PT0gbG9nRnVuY3Rpb24ubG9nR3JvdXAubG9nR3JvdXBOYW1lKSB7XG4gICAgICAgICAgICAgIGVycm9ycy5wdXNoKCdTdWJzY3JpcHRpb24gZmlsdGVycyBhcmUgbm90IGFsbG93ZWQgc2VzLW9ic2VydmFiaWxpdHkgbGFtYmRhcyBsb2cgZ3JvdXAnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gZXJyb3JzO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
268
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VzLW9ic2VydmFiaWxpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VzL3Nlcy1vYnNlcnZhYmlsaXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkJBQTZCO0FBQzdCLDZDQUFvQztBQUNwQyxpREFBaUQ7QUFFakQsbURBQTRFO0FBQzVFLDJDQUEyQztBQUMzQywyQ0FBMkM7QUFDM0Msc0VBQXNFO0FBQ3RFLDJDQUEyQztBQUMzQyx3Q0FBd0M7QUFDeEMsMkNBQXVDO0FBQ3ZDLHFDQUFzQztBQUN0Qyw0Q0FBb0Q7QUFDcEQsNENBTXNCO0FBQ3RCLDBEQUFxRDtBQUVyRCxNQUFNLHlCQUF5QixHQUFHO0lBQ2hDLFFBQVEsRUFBRSxJQUFJO0lBQ2QsT0FBTyxFQUFFLElBQUk7Q0FDZCxDQUFDO0FBRUYsTUFBTSw0QkFBNEIsR0FBRztJQUNuQyxRQUFRLEVBQUUsS0FBSztJQUNmLE9BQU8sRUFBRSxNQUFNO0NBQ2hCLENBQUM7QUFFRjs7O0dBR0c7QUFDSCxNQUFNLHNCQUFzQjtJQUkxQixZQUE2QixpQkFBMEI7UUFBMUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFTO1FBSHRDLHNCQUFpQixHQUFHLElBQUksb0NBQXdCLEVBQUUsQ0FBQztRQUNuRCxxQkFBZ0IsR0FBRyxJQUFJLG1DQUF1QixFQUFFLENBQUM7SUFHbEUsQ0FBQztJQUVELHlCQUF5QixDQUFDLE9BQXVCO1FBQy9DLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx5QkFBeUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5RSxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMseUJBQXlCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUUsTUFBTSxZQUFZLEdBQUc7WUFDbkIsV0FBVztZQUNYLEdBQUcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FB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Y2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgU3RhY2sgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBOb2RlanNGdW5jdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEtbm9kZWpzJztcbmltcG9ydCB7IENmblN1YnNjcmlwdGlvbkZpbHRlciwgUmV0ZW50aW9uRGF5cyB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1sb2dzJztcbmltcG9ydCAqIGFzIHNlcyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc2VzJztcbmltcG9ydCAqIGFzIHNucyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc25zJztcbmltcG9ydCAqIGFzIHNuc1N1YnNjcmlwdGlvbnMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXNucy1zdWJzY3JpcHRpb25zJztcbmltcG9ydCAqIGFzIHNzbSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc3NtJztcbmltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYi9jb3JlJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgdHJpbUluZGVudCB9IGZyb20gJy4vaGVscGVyJztcbmltcG9ydCB7IERFRkFVTFRfTk9ERV9SVU5USU1FIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIERhdGFkb2dDYXNlTm90aWZpY2F0aW9uLFxuICBEYXRhZG9nTW9uaXRvcixcbiAgRGF0YWRvZ01vbml0b3JRdWVyeUFsZXJ0VHlwZSxcbiAgRGVmYXVsdFNsYWNrTm90aWZpY2F0aW9uLFxuICBJTm90aWZpY2F0aW9uLFxufSBmcm9tICcuLi9kYXRhZG9ndjInO1xuaW1wb3J0IHsgUmlvTGFuZGluZ1pvbmUgfSBmcm9tICcuLi9yaW8tbGFuZGluZy16b25lJztcblxuY29uc3QgQk9VTkNFX1RIUkVTSE9MRFNfREVGQVVMVCA9IHtcbiAgY3JpdGljYWw6IDAuMDUsXG4gIHdhcm5pbmc6IDAuMDQsXG59O1xuXG5jb25zdCBDT01QTEFJTlRfVEhSRVNIT0xEU19ERUZBVUxUID0ge1xuICBjcml0aWNhbDogMC4wMDEsXG4gIHdhcm5pbmc6IDAuMDAwOCxcbn07XG5cbi8qKlxuICogU2VuZHMgYSBTbGFjayBub3RpZmljYXRpb24gZm9yIG1vbml0b3IgYWxlcnRzIGFuZCByZWNvdmVyeSAobm8gbm90aWZpY2F0aW9uIGZvciBtb25pdG9yIHdhcm5pbmdzKS5cbiAqIEFsc28gY3JlYXRlcyBhIERhdGFkb2cgY2FzZSB3aGVuIGNyZWF0ZUNhc2UgaXMgc2V0IHRvIHRydWUuXG4gKi9cbmNsYXNzIFNlc01vbml0b3JOb3RpZmljYXRpb24gaW1wbGVtZW50cyBJTm90aWZpY2F0aW9uIHtcbiAgcHJpdmF0ZSByZWFkb25seSBzbGFja05vdGlmaWNhdGlvbiA9IG5ldyBEZWZhdWx0U2xhY2tOb3RpZmljYXRpb24oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjYXNlTm90aWZpY2F0aW9uID0gbmV3IERhdGFkb2dDYXNlTm90aWZpY2F0aW9uKCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBjcmVhdGVEYXRhZG9nQ2FzZTogYm9vbGVhbikge1xuICB9XG5cbiAgZ2VuZXJhdGVNZXNzYWdlQW5ub3RhdGlvbihtb25pdG9yOiBEYXRhZG9nTW9uaXRvcik6IHN0cmluZyB7XG4gICAgY29uc3Qgc2xhY2tIYW5kbGUgPSB0aGlzLnNsYWNrTm90aWZpY2F0aW9uLmdlbmVyYXRlTWVzc2FnZUFubm90YXRpb24obW9uaXRvcik7XG4gICAgY29uc3QgY2FzZUhhbmRsZSA9IHRoaXMuY2FzZU5vdGlmaWNhdGlvbi5nZW5lcmF0ZU1lc3NhZ2VBbm5vdGF0aW9uKG1vbml0b3IpO1xuICAgIGNvbnN0IGFsZXJ0SGFuZGxlcyA9IFtcbiAgICAgIHNsYWNrSGFuZGxlLFxuICAgICAgLi4uKHRoaXMuY3JlYXRlRGF0YWRvZ0Nhc2UgPyBbY2FzZUhhbmRsZV0gOiBbXSksXG4gICAgXTtcblxuICAgIHJldHVybiBbXG4gICAgICAne3sjaXNfYWxlcnR9fScsXG4gICAgICAuLi5hbGVydEhhbmRsZXMsXG4gICAgICAne3svaXNfYWxlcnR9fScsXG4gICAgICBge3sjaXNfYWxlcnRfcmVjb3Zlcnl9fSR7c2xhY2tIYW5kbGV9e3svaXNfYWxlcnRfcmVjb3Zlcnl9fWAsXG4gICAgXS5qb2luKCdcXG4nKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJvdW5jZVRocmVzaG9sZHNQcm9wcyB7XG4gIHJlYWRvbmx5IHdhcm5pbmc/OiBudW1iZXI7XG4gIHJlYWRvbmx5IGNyaXRpY2FsPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBsYWludFRocmVzaG9sZHNQcm9wcyB7XG4gIHJlYWRvbmx5IHdhcm5pbmc/OiBudW1iZXI7XG4gIHJlYWRvbmx5IGNyaXRpY2FsPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlc09ic2VydmFiaWxpdHlQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgU0VTIGV2ZW50cyB0byBsb2cuXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgW0VtYWlsU2VuZGluZ0V2ZW50LkRFTElWRVJZLCBFbWFpbFNlbmRpbmdFdmVudC5CT1VOQ0UsIEVtYWlsU2VuZGluZ0V2ZW50LkNPTVBMQUlOVCwgRW1haWxTZW5kaW5nRXZlbnQuUkVKRUNUXVxuICAgKi9cbiAgcmVhZG9ubHkgbG9nZ2VkU2VzRXZlbnRzPzogc2VzLkVtYWlsU2VuZGluZ0V2ZW50W107XG5cbiAgLyoqXG4gICAqIFRoZSBUaHJlc2hvbGRzIGZvciBib3VuY2UgcmF0ZSBNb25pdG9ycy5cbiAgICpcbiAgICogVGhlIGRlZmF1bHQgc2hvdWxkIG9ubHkgYmUgb3ZlcndyaXR0ZW4sIGlmIHRoZXJlIGlzIHJlYWxseSBubyBwb3NzaWJpbGl0eSB0byByZWR1Y2UgdGhlIGJvdW5jZSByYXRlIG1lYW5pbmdmdWxseS5cbiAgICogSWYgdGhpcyBtZXRyaWMgcmVhY2hlcyBgMTAlYCB0aGUgZW1haWwgc2VuZGluZyBjYXBhYmlsaXR5IG9mIHlvdXIgYWNjb3VudCB3aWxsIGJlIGRpc2FibGVkIGJ5IEFXUy5cbiAgICpcbiAgICogQGRlZmF1bHQgeyBjcml0aWNhbDogMC4wNSwgd2FybmluZzogMC4wNCB9XG4gICAqL1xuICByZWFkb25seSBib3VuY2VUaHJlc2hvbGRzPzogQm91bmNlVGhyZXNob2xkc1Byb3BzO1xuXG4gIC8qKlxuICAgKiBUaGUgVGhyZXNob2xkcyBmb3IgYm91bmNlIHJhdGUgTW9uaXRvcnMuXG4gICAqXG4gICAqIFRoZSBkZWZhdWx0IHNob3VsZCBvbmx5IGJlIG92ZXJ3cml0dGVuLCBpZiB0aGVyZSBpcyByZWFsbHkgbm8gcG9zc2liaWxpdHkgdG8gcmVkdWNlIHRoZSBib3VuY2UgY29tcGxhaW50IG1lYW5pbmdmdWxseS5cbiAgICogSWYgdGhpcyBtZXRyaWMgcmVhY2hlcyBgMC41JWAgdGhlIGVtYWlsIHNlbmRpbmcgY2FwYWJpbGl0eSBvZiB5b3VyIGFjY291bnQgd2lsbCBiZSBkaXNhYmxlZCBieSBBV1MuXG4gICAqXG4gICAqIEBkZWZhdWx0IHsgY3JpdGljYWw6IDAuMDAxLCB3YXJuaW5nOiAwLjAwMDggfVxuICAgKi9cbiAgcmVhZG9ubHkgY29tcGxhaW50VGhyZXNob2xkcz86IENvbXBsYWludFRocmVzaG9sZHNQcm9wcztcblxuICAvKipcbiAgICogRW5hYmxlIHRoaXMgaWYgeW91IHdhbnQgdGhlIERhdGFkb2cgbW9uaXRvcnMgdG8gY3JlYXRlIGNhc2VzIGluIERhdGFkb2cgd2hlbiBhbiBhbGVydCBpcyB0cmlnZ2VyZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGNyZWF0ZUNhc2VzRnJvbU1vbml0b3JzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBSaW9TZXNPYnNlcnZhYmlsaXR5XG4gKlxuICogVGhpcyBjb25zdHJ1Y3Qgc2V0cyB1cCBvYnNlcnZhYmlsaXR5IGZvciBTRVMgYXMgZGVmaW5lZCBieSBbQURSIC0gU0VTIGRvbWFpbiByZXB1dGF0aW9uIG9ic2VydmFiaWxpdHldKGh0dHBzOi8vY29uZmx1ZW5jZS5jb2xsYWJvcmF0aW9uLW1hbi5jb20vZGlzcGxheS9NQU4vQURSKy0rU0VTK2RvbWFpbityZXB1dGF0aW9uK29ic2VydmFiaWxpdHkpLlxuICpcbiAqICMgV2FybmluZ1xuICogVGhpcyBjb25zdHJ1Y3QgcmVzdWx0cyBpbiBsb2dnaW5nIGFsbCBzZW50IGVtYWlscyBpbmNsdWRpbmcgdGhlIHJlY2lwaWVudCBhZGRyZXNzIGludG8gQ2xvdWRXYXRjaCBsb2dzLlxuICogQXMgdGhpcyBpcyBjb25zaWRlcmVkICoqUElJKiosIHRoaXMgaW5mb3JtYXRpb24gTVVTVCBiZSBoYW5kbGVkIGFjY29yZGluZ2x5LlxuICogSW4gcGFydGljdWxhciwgbG9ncyAqKk1VU1QgTk9UKiogYmUgc2VudCB0byBmdXJ0aGVyIHRoaXJkIHBhcnR5IHNlcnZpY2VzIChlLmcuIERhdGFkb2cpIGFuZCB0aGUgcmV0ZW50aW9uIHBlcmlvZCBmb3IgbG9ncyAqKk1VU1QgTk9UKiogYmUgZXh0ZW5kZWQuXG4gKlxuICogIyBVc2FnZVxuICogIyMgRGVmYXVsdCBDb25maWd1cmF0aW9uIFNldCBmb3IgSWRlbnRpdHlcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCByaW9TZXNPYnNlcnZhYmlsaXR5ID0gbmV3IFJpb1Nlc09ic2VydmFiaWxpdHkodGhpcywgJ0NvbmZpZ3VyYXRpb25TZXQnLCB7fSlcbiAqIGNvbnN0IGlkZW50aXR5ID0gbmV3IEVtYWlsSWRlbnRpdHkodGhpcywgJ0VtYWlsSWRlbnRpdHknLCB7XG4gKiAgICAgaWRlbnRpdHk6IElkZW50aXR5LmRvbWFpbignZXhhbXBsZS5jb20nKSxcbiAqICAgICBjb25maWd1cmF0aW9uU2V0OiByaW9TZXNPYnNlcnZhYmlsaXR5LmNvbmZpZ3VyYXRpb25TZXQsXG4gKiB9KTtcbiAqIGBgYFxuICpcbiAqICMjIFNwZWNpZmljYWxseSB1c2luZyB0aGUgY29uZmlndXJhdGlvbiBzZXQgcGVyIHJlcXVlc3RcbiAqXG4gKiBUaGlzIGlzIGlkZWFsIGlmIHlvdSB3YW50IHRvIHRyeSBvdXQgdGhlIGNvbnN0cnVjdCBmaXJzdCBvbmUgc29tZSBzcGVjaWZpYyBlbWFpbHMgKGUuZy4gZHVyaW5nIGluaXRpYWwgbWlncmF0aW9uKS5cbiAqIFRoZSBjb25maWd1cmF0aW9uIHNldCBuYW1lIGlzIGV4cG9ydGVkIGFzIGFuIFNTTSBwYXJhbWV0ZXIgYC9yaW8vY29uZmlnL3Nlcy1vYnNlcnZhYmlsaXR5L2NvbmZpZ3VyYXRpb24tc2V0LW5hbWVgLlxuICogVGh1cywgeW91IGNhbiBlYXNpbHkgbWFrZSBpdCBhdmFpbGFibGUgYXMgZW52aXJvbm1lbnQgdmFyaWFibGUgaW4geW91ciBjb2RlLlxuICpcbiAqIGBgYGtvdGxpblxuICogaW1wb3J0IGNvbS5hbWF6b25hd3Muc2VydmljZXMuc2ltcGxlZW1haWwubW9kZWwuU2VuZEVtYWlsUmVxdWVzdFxuICpcbiAqIHZhbCByZXF1ZXN0ID0gU2VuZEVtYWlsUmVxdWVzdCgpXG4gKiAgICAgICAgICAgICAgICAgLndpdGhDb25maWd1cmF0aW9uU2V0TmFtZShTU01fQ09ORklHVVJBVElPTl9TU01fUEFSQU1FVEVSX1ZBTFVFKVxuICogICAgICAgICAgICAgICAgIC4uLlxuICogYGBgXG4gKlxuICogIyMgQXV0b21hdGVkIGV2ZW50IHByb2Nlc3NpbmdcbiAqXG4gKiBJZiB5b3UgaGF2ZSBzcGVjaWZpYyBuZWVkcyBmb3Igd2hpY2ggeW91J2QgbGlrZSB0byBwcm9jZXNzIHRoZSBTTlMgZXZlbnRzIGRpcmVjdGx5XG4gKiAoZS5nLiBhdXRvbWF0aWNhbGx5IGNyZWF0aW5nIGEgc3VwcHJlc3Npb24gbGlzdCBmcm9tIGJvdW5jZXMpLCB5b3UgY2FuIHN1YnNjcmliZSB0byB0aGUgU05TIHRvcGljLlxuICogVG8gZW5hYmxlIHRoaXMgdGhlIFNOUyB0b3BpYyBBUk4gaXMgZXhwb3J0ZWQgdmlhIENsb3VkZm9ybWF0aW9uIGFzIGBSaW9TZXNPYnNlcnZhYmlsaXR5VG9waWNBcm5gLlxuICpcbiAqICMgTm90ZXNcbiAqICMjIEFkZCBuZWNlc3NhcnkgcGVybWlzc2lvbnMgZm9yIGZhcmdhdGUgdGFzayB0byBlbmFibGUgdXNpbmcgc2VzIGNvbmZpZ3VyYXRpb24gc2V0XG4gKiBNYWtlIHN1cmUgeW91IGhhdmUgdGhlIGZvbGxvd2luZyBwZXJtaXNzaW9ucyBpbiB0aGUgdGFzayByb2xlIG9mIHRoZSBmYXJnYXRlIHRhc2ssIGUuZy46XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAgICAgc2VydmljZS50YXNrRGVmaW5pdGlvbi50YXNrUm9sZS5hZGRUb1ByaW5jaXBhbFBvbGljeShcbiAqICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAqICAgICAgICAgYWN0aW9uczogWydzZXM6c2VuZEVtYWlsJywgJ3NlczpzZW5kUmF3RW1haWwnXSxcbiAqICAgICAgICAgcmVzb3VyY2VzOiBbYGFybjphd3M6c2VzOjx5b3VyX3JlZ2lvbj46PHlvdXJfYWNjb3VudD46Y29uZmlndXJhdGlvbi1zZXQvPHlvdXJfY29uZmlndXJhdGlvbl9zZXRfbmFtZT5gXSxcbiAqICAgICAgIH0pKTtcbiAqIGBgYFxuICpcbiAqICMjIFdhdGNoZnVsXG4gKiBJdCBtaWdodCBiZSBoZWxwZnVsIHRvIGFkZCB3YXRjaGZ1bCB0byB5b3VyIHN0YWNrIHRvXG4gKiBnZXQgbm90aWZpZWQgaWYgdGhlIHNlcy1sb2dnZXIgbGFtYmRhIGZhaWxzLlxuICovXG5leHBvcnQgY2xhc3MgU2VzT2JzZXJ2YWJpbGl0eSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIC8vICEgY2hhbmdpbmcgdGhlc2UgdmFsdWVzIGlzIGEgYnJlYWtpbmcgY2hhbmdlIGZvciB1c2Vyc1xuICBzdGF0aWMgcmVhZG9ubHkgQ09ORklHVVJBVElPTl9TRVRfTkFNRV9TU01fUEFSQU1FVEVSID0gJy9yaW8vY29uZmlnL3Nlcy1vYnNlcnZhYmlsaXR5L2NvbmZpZ3VyYXRpb24tc2V0LW5hbWUnO1xuICBzdGF0aWMgcmVhZG9ubHkgU05TX1RPUElDX0FSTl9FWFBPUlRfTkFNRSA9ICdSaW9TZXNPYnNlcnZhYmlsaXR5VG9waWNBcm4nO1xuICByZWFkb25seSBzbnNUb3BpYzogc25zLlRvcGljO1xuICByZWFkb25seSBjb25maWd1cmF0aW9uU2V0OiBzZXMuQ29uZmlndXJhdGlvblNldDtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogU2VzT2JzZXJ2YWJpbGl0eVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICBjb25zdCBhY2NvdW50SWQgPSBTdGFjay5vZih0aGlzKS5hY2NvdW50O1xuICAgIGNvbnN0IGFjY291bnROYW1lID0gUmlvTGFuZGluZ1pvbmUuZ2V0QWNjb3VudE5hbWVQYXJhbWV0ZXIodGhpcykuc3RyaW5nVmFsdWU7XG5cbiAgICBjb25zdCBwYXJhbWV0ZXIgPSBuZXcgc3NtLlN0cmluZ1BhcmFtZXRlcih0aGlzLCAnQ29uZmlndXJhdGlvblNldE5hbWUnLCB7XG4gICAgICBwYXJhbWV0ZXJOYW1lOiBTZXNPYnNlcnZhYmlsaXR5LkNPTkZJR1VSQVRJT05fU0VUX05BTUVfU1NNX1BBUkFNRVRFUixcbiAgICAgIHN0cmluZ1ZhbHVlOiAncmlvLXNlcy1vYnNlcnZhYmlsaXR5LWNvbmZpZ3VyYXRpb24tc2V0JyxcbiAgICB9KTtcblxuICAgIHRoaXMuc25zVG9waWMgPSBuZXcgc25zLlRvcGljKHRoaXMsICdTbnNUb3BpYycsIHtcbiAgICAgIHRvcGljTmFtZTogJ3Jpby1zZXMtb2JzZXJ2YWJpbGl0eS10b3BpYycsXG4gICAgfSk7XG5cbiAgICB0aGlzLmNvbmZpZ3VyYXRpb25TZXQgPSBuZXcgc2VzLkNvbmZpZ3VyYXRpb25TZXQodGhpcywgJ0NvbmZpZ3VyYXRpb25TZXQnLCB7XG4gICAgICBjb25maWd1cmF0aW9uU2V0TmFtZTogcGFyYW1ldGVyLnN0cmluZ1ZhbHVlLFxuICAgIH0pO1xuXG4gICAgdGhpcy5jb25maWd1cmF0aW9uU2V0LmFkZEV2ZW50RGVzdGluYXRpb24oJ0V2ZW50RGVzdGluYXRpb24nLCB7XG4gICAgICBjb25maWd1cmF0aW9uU2V0RXZlbnREZXN0aW5hdGlvbk5hbWU6ICdyaW8tc2VzLW9ic2VydmFiaWxpdHktZXZlbnQtZGVzdGluYXRpb24nLFxuICAgICAgZGVzdGluYXRpb246IHNlcy5FdmVudERlc3RpbmF0aW9uLnNuc1RvcGljKHRoaXMuc25zVG9waWMpLFxuICAgICAgZXZlbnRzOiBwcm9wcy5sb2dnZWRTZXNFdmVudHMgPz8gW1xuICAgICAgICBzZXMuRW1haWxTZW5kaW5nRXZlbnQuREVMSVZFUlksXG4gICAgICAgIHNlcy5FbWFpbFNlbmRpbmdFdmVudC5CT1VOQ0UsXG4gICAgICAgIHNlcy5FbWFpbFNlbmRpbmdFdmVudC5DT01QTEFJTlQsXG4gICAgICAgIHNlcy5FbWFpbFNlbmRpbmdFdmVudC5SRUpFQ1QsXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgY29uc3QgbG9nRnVuY3Rpb24gPSBuZXcgbGFtYmRhLkZ1bmN0aW9uKHRoaXMsICdMb2dGdW5jdGlvbicsIHtcbiAgICAgIGZ1bmN0aW9uTmFtZTogJ3Jpby1zZXMtb2JzZXJ2YWJpbGl0eS1sb2ctZnVuY3Rpb24nLFxuICAgICAgcnVudGltZTogREVGQVVMVF9OT0RFX1JVTlRJTUUsXG4gICAgICBhcmNoaXRlY3R1cmU6IGxhbWJkYS5BcmNoaXRlY3R1cmUuQVJNXzY0LFxuICAgICAgaGFuZGxlcjogJ3Nlcy1sb2dnZXIuaGFuZGxlcicsXG4gICAgICBsb2dSZXRlbnRpb246IFJldGVudGlvbkRheXMuVEhSRUVfTU9OVEhTLFxuICAgICAgc3lzdGVtTG9nTGV2ZWxWMjogbGFtYmRhLlN5c3RlbUxvZ0xldmVsLldBUk4sXG4gICAgICBsb2dnaW5nRm9ybWF0OiBsYW1iZGEuTG9nZ2luZ0Zvcm1hdC5KU09OLFxuICAgICAgY29kZTogbGFtYmRhLkNvZGUuZnJvbUFzc2V0KHBhdGguam9pbihfX2Rpcm5hbWUsICdsYW1iZGEnKSwge1xuICAgICAgICBleGNsdWRlOiBbJyouanMnLCAnKi5kLnRzJ10sXG4gICAgICB9KSxcbiAgICB9KTtcbiAgICB0aGlzLmVuc3VyZU5vU3Vic2NyaXB0aW9uRmlsdGVyc09uTGFtYmRhc0xvZ0dyb3VwKGxvZ0Z1bmN0aW9uKTtcblxuICAgIHRoaXMuc25zVG9waWMuYWRkU3Vic2NyaXB0aW9uKG5ldyBzbnNTdWJzY3JpcHRpb25zLkxhbWJkYVN1YnNjcmlwdGlvbihsb2dGdW5jdGlvbikpO1xuXG4gICAgbmV3IGNkay5DZm5PdXRwdXQodGhpcywgJ1Nuc1RvcGljQXJuJywge1xuICAgICAgdmFsdWU6IHRoaXMuc25zVG9waWMudG9waWNBcm4sXG4gICAgICBleHBvcnROYW1lOiBTZXNPYnNlcnZhYmlsaXR5LlNOU19UT1BJQ19BUk5fRVhQT1JUX05BTUUsXG4gICAgfSk7XG5cbiAgICBjb25zdCBtb25pdG9yTm90aWZpY2F0aW9uID0gbmV3IFNlc01vbml0b3JOb3RpZmljYXRpb24ocHJvcHMuY3JlYXRlQ2FzZXNGcm9tTW9uaXRvcnMgPz8gZmFsc2UpO1xuXG4gICAgbmV3IERhdGFkb2dNb25pdG9yKHRoaXMsICdRdW90YU1vbml0b3InLCB7XG4gICAgICBuYW1lOiBgJHthY2NvdW50TmFtZX0gU0VTIHF1b3RhIGFsbW9zdCByZWFjaGVkYCxcbiAgICAgIHNlcnZpY2VOYW1lOiAnYXdzLXNlcycsXG4gICAgICBtb25pdG9yVHlwZTogRGF0YWRvZ01vbml0b3JRdWVyeUFsZXJ0VHlwZS5RVUVSWV9BTEVSVCxcbiAgICAgIHF1ZXJ5OiBgbWF4KGxhc3RfMWgpOm1heDphd3Muc2VzLnNlbnRfbGFzdF8yNF9ob3Vyc3thY2NvdW50X2lkOiR7YWNjb3VudElkfX0gLyBtYXg6YXdzLnNlcy5tYXhfMjRfaG91cl9zZW5ke2FjY291bnRfaWQ6JHthY2NvdW50SWR9fSA+IDAuOGAsXG4gICAgICBtZXNzYWdlOiB0cmltSW5kZW50YFxuICAgICAgICBZb3UgYXJlIGFsbW9zdCB1c2luZyB1cCB5b3UncmUgbWF4aW11bSBlbWFpbCBzZW5kaW5nIHF1b3RhIHBlciAyNGguIFxuICAgICAgICBFaXRoZXIgW3JlcXVlc3QgYW4gaW5jcmVhc2VdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9zZXMvbGF0ZXN0L2RnL21hbmFnZS1zZW5kaW5nLXF1b3Rhcy1yZXF1ZXN0LWluY3JlYXNlLmh0bWwpIGZvciB5b3VyIHF1b3RhIGJ5IEFXUyBvciByZWR1Y2UgdGhlIGFtb3VudCBvZiBlbWFpbHMgc2VudC5cbiAgICAgICAgWW91IGNhbiBmaW5kIGxvZ3MgYWJvdXQgYWxsIG1haWxzIHNlbnQgYXQgXFxgJHtsb2dGdW5jdGlvbi5sb2dHcm91cC5sb2dHcm91cE5hbWV9XFxgLlxuICAgICAgICBgLFxuICAgICAgcHJpb3JpdHk6IDQsXG4gICAgICBvcHRpb25PdmVycmlkZXM6IHtcbiAgICAgICAgdGhyZXNob2xkczoge1xuICAgICAgICAgIGNyaXRpY2FsOiAwLjgsXG4gICAgICAgICAgd2FybmluZzogMC43LFxuICAgICAgICB9LFxuICAgICAgICBldmFsdWF0aW9uRGVsYXk6IDkwMCxcbiAgICAgIH0sXG4gICAgICBub3RpZmljYXRpb246IG1vbml0b3JOb3RpZmljYXRpb24sXG4gICAgfSk7XG5cbiAgICBuZXcgRGF0YWRvZ01vbml0b3IodGhpcywgJ0VtYWlsUmVqZWN0ZWRNb25pdG9yJywge1xuICAgICAgbmFtZTogYCR7YWNjb3VudE5hbWV9IFNFUyBFbWFpbCBSZWplY3RlZGAsXG4gICAgICBzZXJ2aWNlTmFtZTogJ2F3cy1zZXMnLFxuICAgICAgbW9uaXRvclR5cGU6IERhdGFkb2dNb25pdG9yUXVlcnlBbGVydFR5cGUuUVVFUllfQUxFUlQsXG4gICAgICBxdWVyeTogYHN1bShsYXN0XzFoKTptYXg6YXdzLnNlcy5yZWplY3Rze2FjY291bnRfaWQ6JHthY2NvdW50SWR9fSA+IDBgLFxuICAgICAgbWVzc2FnZTogdHJpbUluZGVudGBcbiAgICAgICAgU0VTIFtyZWplY3RlZF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3Nlcy9sYXRlc3QvZGcvbW9uaXRvci1zZW5kaW5nLWFjdGl2aXR5Lmh0bWwpIHNlbmRpbmcgYXQgbGVhc3Qgb25lIGVtYWlsLlxuICAgICAgICBQbGVhc2UgaW52ZXN0aWdhdGUgdGhlIHJvb3QgY2FzZSwgYXMgdGhpcyBpcyBub3QgZXhwZWN0ZWQgdG8gaGFwcGVuIGluIHByb2R1Y3Rpb24gZXZlci5cbiAgICAgICAgWW91IGNhbiBmaW5kIGxvZ3MgYWJvdXQgYWxsIG1haWxzIHNlbnQgYXQgXFxgJHtsb2dGdW5jdGlvbi5sb2dHcm91cC5sb2dHcm91cE5hbWV9XFxgLlxuICAgICAgICBgLFxuICAgICAgcHJpb3JpdHk6IDMsXG4gICAgICBvcHRpb25PdmVycmlkZXM6IHtcbiAgICAgICAgdGhyZXNob2xkczoge1xuICAgICAgICAgIGNyaXRpY2FsOiAwLFxuICAgICAgICB9LFxuICAgICAgICBldmFsdWF0aW9uRGVsYXk6IDkwMCxcbiAgICAgIH0sXG4gICAgICBub3RpZmljYXRpb246IG1vbml0b3JOb3RpZmljYXRpb24sXG4gICAgfSk7XG5cbiAgICBjb25zdCBjb21wbGFpbnRUaHJlc2hvbGRzID0ge1xuICAgICAgd2FybmluZzogcHJvcHMuY29tcGxhaW50VGhyZXNob2xkcz8ud2FybmluZyA/PyBDT01QTEFJTlRfVEhSRVNIT0xEU19ERUZBVUxULndhcm5pbmcsXG4gICAgICBjcml0aWNhbDogcHJvcHMuY29tcGxhaW50VGhyZXNob2xkcz8uY3JpdGljYWwgPz8gQ09NUExBSU5UX1RIUkVTSE9MRFNfREVGQVVMVC5jcml0aWNhbCxcbiAgICB9O1xuICAgIG5ldyBEYXRhZG9nTW9uaXRvcih0aGlzLCAnQ29tcGxhaW50UmF0ZU1vbml0b3InLCB7XG4gICAgICBuYW1lOiBgJHthY2NvdW50TmFtZX0gU0VTIHJlcHV0YXRpb24gZW5kYW5nZXJlZDogQ29tcGxhaW50IHJhdGUgSGlnaGAsXG4gICAgICBzZXJ2aWNlTmFtZTogJ2F3cy1zZXMnLFxuICAgICAgbW9uaXRvclR5cGU6IERhdGFkb2dNb25pdG9yUXVlcnlBbGVydFR5cGUuUVVFUllfQUxFUlQsXG4gICAgICBxdWVyeTogYG1heChsYXN0XzFoKTptYXg6YXdzLnNlcy5yZXB1dGF0aW9uX2NvbXBsYWludF9yYXRle2FjY291bnRfaWQ6JHthY2NvdW50SWR9IGFuZCBub3Qgc2VzOip9ID4gJHtjb21wbGFpbnRUaHJlc2hvbGRzLmNyaXRpY2FsfWAsXG4gICAgICBtZXNzYWdlOiB0cmltSW5kZW50YFxuICAgICAgICBXYXJuaW5nIFRocmVzaG9sZCBmb3IgQ29tcGxhaW50IHJhdGUge3sjaXNfd2FybmluZ319YWxtb3N0IHt7L2lzX3dhcm5pbmd9fXJlYWNoZWQgKGFzIGRlZmluZWQgaW4gQVdTKS5cbiAgICAgICAgXG4gICAgICAgIFBsZWFzZSByZWR1Y2UgdGhlIG51bWJlciBvZiBjb21wbGFpbnRzIHJlY2VpdmVkIGZvciBFLW1haWxzIHNlbnQgYnkgeW91ciBBY2NvdW50LlxuICAgICAgICBJZiB0aGlzIG1ldHJpYyByZWFjaGVzIFxcYDAuNSVcXGAgdGhlIGVtYWlsIHNlbmRpbmcgY2FwYWJpbGl0eSBvZiB5b3VyIGFjY291bnQgd2lsbCBiZSBkaXNhYmxlZCBieSBBV1MuXG4gICAgICAgIFlvdSBjYW4gZmluZCBsb2dzIGFib3V0IGFsbCBtYWlscyBzZW50IGF0IFxcYCR7bG9nRnVuY3Rpb24ubG9nR3JvdXAubG9nR3JvdXBOYW1lfVxcYC5cbiAgICAgICAgU2VlIFtBRFIgLSBTRVMgZG9tYWluIHJlcHV0YXRpb24gb2JzZXJ2YWJpbGl0eV0oaHR0cHM6Ly9jb25mbHVlbmNlLmNvbGxhYm9yYXRpb24tbWFuLmNvbS9kaXNwbGF5L01BTi9BRFIrLStTRVMrZG9tYWluK3JlcHV0YXRpb24rb2JzZXJ2YWJpbGl0eSkuXG4gICAgICAgIGAsXG4gICAgICBwcmlvcml0eTogMixcbiAgICAgIG9wdGlvbk92ZXJyaWRlczoge1xuICAgICAgICB0aHJlc2hvbGRzOiBjb21wbGFpbnRUaHJlc2hvbGRzLFxuICAgICAgICBldmFsdWF0aW9uRGVsYXk6IDkwMCxcbiAgICAgIH0sXG4gICAgICBub3RpZmljYXRpb246IG1vbml0b3JOb3RpZmljYXRpb24sXG4gICAgfSk7XG5cbiAgICBjb25zdCBib3VuY2VUaHJlc2hvbGRzID0ge1xuICAgICAgd2FybmluZzogcHJvcHMuYm91bmNlVGhyZXNob2xkcz8ud2FybmluZyA/PyBCT1VOQ0VfVEhSRVNIT0xEU19ERUZBVUxULndhcm5pbmcsXG4gICAgICBjcml0aWNhbDogcHJvcHMuYm91bmNlVGhyZXNob2xkcz8uY3JpdGljYWwgPz8gQk9VTkNFX1RIUkVTSE9MRFNfREVGQVVMVC5jcml0aWNhbCxcbiAgICB9O1xuICAgIG5ldyBEYXRhZG9nTW9uaXRvcih0aGlzLCAnQm91bmNlUmF0ZU1vbml0b3InLCB7XG4gICAgICBuYW1lOiBgJHthY2NvdW50TmFtZX0gU0VTIHJlcHV0YXRpb24gZW5kYW5nZXJlZDogQm91bmNlIFJhdGUgSGlnaGAsXG4gICAgICBzZXJ2aWNlTmFtZTogJ2F3cy1zZXMnLFxuICAgICAgbW9uaXRvclR5cGU6IERhdGFkb2dNb25pdG9yUXVlcnlBbGVydFR5cGUuUVVFUllfQUxFUlQsXG4gICAgICBxdWVyeTogYG1heChsYXN0XzFoKTptYXg6YXdzLnNlcy5yZXB1dGF0aW9uX2JvdW5jZV9yYXRle2FjY291bnRfaWQ6JHthY2NvdW50SWR9IGFuZCBub3Qgc2VzOip9ID4gJHtib3VuY2VUaHJlc2hvbGRzLmNyaXRpY2FsfWAsXG4gICAgICBtZXNzYWdlOiB0cmltSW5kZW50YFxuICAgICAgICBXYXJuaW5nIFRocmVzaG9sZCBmb3IgQm91bmNlIHJhdGUge3sjaXNfd2FybmluZ319YWxtb3N0IHt7L2lzX3dhcm5pbmd9fXJlYWNoZWQgKGFzIGRlZmluZWQgaW4gQVdTKS5cbiAgICAgICAgXG4gICAgICAgIFBsZWFzZSByZWR1Y2UgdGhlIG51bWJlciBvZiBib3VuY2VzIGZvciBFLW1haWxzIHNlbnQgYnkgeW91ciBBY2NvdW50LlxuICAgICAgICBJZiB0aGlzIG1ldHJpYyByZWFjaGVzIFxcYDEwJVxcYCB0aGUgZW1haWwgc2VuZGluZyBjYXBhYmlsaXR5IG9mIHlvdXIgYWNjb3VudCB3aWxsIGJlIGRpc2FibGVkIGJ5IEFXUy5cbiAgICAgICAgWW91IGNhbiBmaW5kIGxvZ3MgYWJvdXQgYWxsIG1haWxzIHNlbnQgYXQgXFxgJHtsb2dGdW5jdGlvbi5sb2dHcm91cC5sb2dHcm91cE5hbWV9XFxgLlxuICAgICAgICBTZWUgW0FEUiAtIFNFUyBkb21haW4gcmVwdXRhdGlvbiBvYnNlcnZhYmlsaXR5XShodHRwczovL2NvbmZsdWVuY2UuY29sbGFib3JhdGlvbi1tYW4uY29tL2Rpc3BsYXkvTUFOL0FEUistK1NFUytkb21haW4rcmVwdXRhdGlvbitvYnNlcnZhYmlsaXR5KS5cbiAgICAgICAgYCxcbiAgICAgIHByaW9yaXR5OiAyLFxuICAgICAgb3B0aW9uT3ZlcnJpZGVzOiB7XG4gICAgICAgIHRocmVzaG9sZHM6IGJvdW5jZVRocmVzaG9sZHMsXG4gICAgICAgIGV2YWx1YXRpb25EZWxheTogOTAwLFxuICAgICAgfSxcbiAgICAgIG5vdGlmaWNhdGlvbjogbW9uaXRvck5vdGlmaWNhdGlvbixcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGZ1bmN0aW9uIGVuc3VyZXMgdGhhdCBubyBQSUkgaXMgbGVha2VkIHRvIERhdGFkb2cgYnkgYWRkaW5nIGEgc3Vic2NyaXB0aW9uIGZpbHRlciB0byB0aGUgbG9nIGdyb3VwIG9mIHRoZSBsYW1iZGEuXG4gICAqL1xuICBwcml2YXRlIGVuc3VyZU5vU3Vic2NyaXB0aW9uRmlsdGVyc09uTGFtYmRhc0xvZ0dyb3VwKGxvZ0Z1bmN0aW9uOiBOb2RlanNGdW5jdGlvbikge1xuICAgIGNvbnN0IHN0YWNrID0gY2RrLlN0YWNrLm9mKHRoaXMpO1xuICAgIHN0YWNrLm5vZGUuYWRkVmFsaWRhdGlvbih7XG4gICAgICB2YWxpZGF0ZTogKCkgPT4ge1xuICAgICAgICBjb25zdCBlcnJvcnM6IHN0cmluZ1tdID0gW107XG4gICAgICAgIHN0YWNrLm5vZGUuZmluZEFsbCgpLmZvckVhY2gobm9kZSA9PiB7XG4gICAgICAgICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBDZm5TdWJzY3JpcHRpb25GaWx0ZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IGxvZ0dyb3VwTmFtZSA9IG5vZGUubG9nR3JvdXBOYW1lO1xuICAgICAgICAgICAgaWYgKGxvZ0dyb3VwTmFtZSA9PT0gbG9nRnVuY3Rpb24ubG9nR3JvdXAubG9nR3JvdXBOYW1lKSB7XG4gICAgICAgICAgICAgIGVycm9ycy5wdXNoKCdTdWJzY3JpcHRpb24gZmlsdGVycyBhcmUgbm90IGFsbG93ZWQgc2VzLW9ic2VydmFiaWxpdHkgbGFtYmRhcyBsb2cgZ3JvdXAnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gZXJyb3JzO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuIl19
|
package/package.json
CHANGED
package/version.json
CHANGED