@rio-cloud/cdk-v2-constructs 5.1.0 → 6.0.1

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.
Files changed (34) hide show
  1. package/.jsii +41 -24
  2. package/API.md +26 -0
  3. package/CHANGELOG.md +20 -0
  4. package/lib/contributions/team-claid/datadog-usage-monitoring/datadog-usage-monitoring.js +1 -1
  5. package/lib/contributions/team-transport-two/datadog/datadog-dashboard-downloader.js +1 -1
  6. package/lib/contributions/team-transport-two/pipeline/pipeline-stack.js +1 -1
  7. package/lib/datadog/datadog-log-index-monitoring.js +1 -1
  8. package/lib/datadog/datadog-monitor.js +1 -1
  9. package/lib/datadogv2/datadog-log-index-monitoring.js +1 -1
  10. package/lib/datadogv2/datadog-monitor.js +1 -1
  11. package/lib/datadogv2/datadog-notification.js +1 -1
  12. package/lib/fargate/datadog.js +1 -1
  13. package/lib/fargate/rio-fargate-service.js +2 -2
  14. package/lib/kafka/kafka-event-spec.js +1 -1
  15. package/lib/kafka/kafka-topic.js +1 -1
  16. package/lib/pipeline/rio-backup-secrets-restore-stage.js +1 -1
  17. package/lib/toggle.js +1 -1
  18. package/lib/watchful/alb.d.ts +13 -13
  19. package/lib/watchful/alb.js +5 -2
  20. package/lib/watchful/aspect.js +1 -1
  21. package/lib/watchful/datadog-log-alarm.js +3 -3
  22. package/lib/watchful/datadog-metric-alarm.js +3 -3
  23. package/lib/watchful/ecs.js +2 -2
  24. package/lib/watchful/lambda.js +4 -4
  25. package/lib/watchful/metric-alarm.d.ts +4 -0
  26. package/lib/watchful/metric-alarm.js +1 -1
  27. package/lib/watchful/watchful.js +3 -3
  28. package/lib/watchfulv2/datadog-log-alarm.d.ts +1 -0
  29. package/lib/watchfulv2/datadog-log-alarm.js +19 -6
  30. package/lib/watchfulv2/datadog-metric-alarm.d.ts +4 -4
  31. package/lib/watchfulv2/datadog-metric-alarm.js +14 -7
  32. package/lib/watchfulv2/watchful.js +19 -9
  33. package/package.json +4 -4
  34. package/version.json +1 -1
package/.jsii CHANGED
@@ -3656,7 +3656,7 @@
3656
3656
  "stability": "stable"
3657
3657
  },
3658
3658
  "homepage": "https://bitbucket.collaboration-man.com/projects/RIODEV/repos/cdk-v2-constructs/",
3659
- "jsiiVersion": "5.2.32 (build fc5cc5c)",
3659
+ "jsiiVersion": "5.4.26 (build 23f0c56)",
3660
3660
  "keywords": [
3661
3661
  "cdk"
3662
3662
  ],
@@ -7636,6 +7636,23 @@
7636
7636
  "primitive": "number"
7637
7637
  }
7638
7638
  },
7639
+ {
7640
+ "abstract": true,
7641
+ "docs": {
7642
+ "stability": "stable",
7643
+ "summary": "Add as_count aggregator to the query."
7644
+ },
7645
+ "immutable": true,
7646
+ "locationInModule": {
7647
+ "filename": "src/watchful/metric-alarm.ts",
7648
+ "line": 42
7649
+ },
7650
+ "name": "aggregateQueryAsCount",
7651
+ "optional": true,
7652
+ "type": {
7653
+ "primitive": "boolean"
7654
+ }
7655
+ },
7639
7656
  {
7640
7657
  "abstract": true,
7641
7658
  "docs": {
@@ -9722,7 +9739,7 @@
9722
9739
  },
9723
9740
  "locationInModule": {
9724
9741
  "filename": "src/watchful/alb.ts",
9725
- "line": 54
9742
+ "line": 55
9726
9743
  },
9727
9744
  "parameters": [
9728
9745
  {
@@ -9748,7 +9765,7 @@
9748
9765
  "kind": "class",
9749
9766
  "locationInModule": {
9750
9767
  "filename": "src/watchful/alb.ts",
9751
- "line": 50
9768
+ "line": 51
9752
9769
  },
9753
9770
  "name": "WatchApplicationLoadBalancer",
9754
9771
  "symbolId": "src/watchful/alb:WatchApplicationLoadBalancer"
@@ -9835,7 +9852,7 @@
9835
9852
  "immutable": true,
9836
9853
  "locationInModule": {
9837
9854
  "filename": "src/watchful/alb.ts",
9838
- "line": 41
9855
+ "line": 42
9839
9856
  },
9840
9857
  "name": "alb",
9841
9858
  "type": {
@@ -9852,7 +9869,7 @@
9852
9869
  "immutable": true,
9853
9870
  "locationInModule": {
9854
9871
  "filename": "src/watchful/alb.ts",
9855
- "line": 35
9872
+ "line": 36
9856
9873
  },
9857
9874
  "name": "watchful",
9858
9875
  "type": {
@@ -15889,7 +15906,7 @@
15889
15906
  "kind": "interface",
15890
15907
  "locationInModule": {
15891
15908
  "filename": "src/watchfulv2/watchful.ts",
15892
- "line": 11
15909
+ "line": 21
15893
15910
  },
15894
15911
  "name": "LogErrorMonitorProps",
15895
15912
  "namespace": "watchfulv2",
@@ -15905,7 +15922,7 @@
15905
15922
  "immutable": true,
15906
15923
  "locationInModule": {
15907
15924
  "filename": "src/watchfulv2/watchful.ts",
15908
- "line": 31
15925
+ "line": 41
15909
15926
  },
15910
15927
  "name": "createCasesFromErrorLogMonitors",
15911
15928
  "optional": true,
@@ -15924,7 +15941,7 @@
15924
15941
  "immutable": true,
15925
15942
  "locationInModule": {
15926
15943
  "filename": "src/watchfulv2/watchful.ts",
15927
- "line": 16
15944
+ "line": 26
15928
15945
  },
15929
15946
  "name": "disableAutoClose",
15930
15947
  "optional": true,
@@ -15942,7 +15959,7 @@
15942
15959
  "immutable": true,
15943
15960
  "locationInModule": {
15944
15961
  "filename": "src/watchfulv2/watchful.ts",
15945
- "line": 22
15962
+ "line": 32
15946
15963
  },
15947
15964
  "name": "priority",
15948
15965
  "optional": true,
@@ -15959,7 +15976,7 @@
15959
15976
  "immutable": true,
15960
15977
  "locationInModule": {
15961
15978
  "filename": "src/watchfulv2/watchful.ts",
15962
- "line": 36
15979
+ "line": 46
15963
15980
  },
15964
15981
  "name": "renotifyInterval",
15965
15982
  "optional": true,
@@ -15981,7 +15998,7 @@
15981
15998
  "kind": "interface",
15982
15999
  "locationInModule": {
15983
16000
  "filename": "src/watchfulv2/watchful.ts",
15984
- "line": 42
16001
+ "line": 52
15985
16002
  },
15986
16003
  "name": "QueryErrorMonitorProps",
15987
16004
  "namespace": "watchfulv2",
@@ -15996,7 +16013,7 @@
15996
16013
  "immutable": true,
15997
16014
  "locationInModule": {
15998
16015
  "filename": "src/watchfulv2/watchful.ts",
15999
- "line": 47
16016
+ "line": 57
16000
16017
  },
16001
16018
  "name": "priority",
16002
16019
  "optional": true,
@@ -16022,7 +16039,7 @@
16022
16039
  },
16023
16040
  "locationInModule": {
16024
16041
  "filename": "src/watchfulv2/watchful.ts",
16025
- "line": 107
16042
+ "line": 117
16026
16043
  },
16027
16044
  "parameters": [
16028
16045
  {
@@ -16049,7 +16066,7 @@
16049
16066
  "kind": "class",
16050
16067
  "locationInModule": {
16051
16068
  "filename": "src/watchfulv2/watchful.ts",
16052
- "line": 100
16069
+ "line": 110
16053
16070
  },
16054
16071
  "methods": [
16055
16072
  {
@@ -16059,7 +16076,7 @@
16059
16076
  },
16060
16077
  "locationInModule": {
16061
16078
  "filename": "src/watchfulv2/watchful.ts",
16062
- "line": 131
16079
+ "line": 142
16063
16080
  },
16064
16081
  "name": "createAlarm",
16065
16082
  "overrides": "@rio-cloud/cdk-v2-constructs.AbstractWatchful",
@@ -16094,7 +16111,7 @@
16094
16111
  },
16095
16112
  "locationInModule": {
16096
16113
  "filename": "src/watchfulv2/watchful.ts",
16097
- "line": 151
16114
+ "line": 170
16098
16115
  },
16099
16116
  "name": "createLogAlarm",
16100
16117
  "overrides": "@rio-cloud/cdk-v2-constructs.AbstractWatchful",
@@ -16126,7 +16143,7 @@
16126
16143
  },
16127
16144
  "locationInModule": {
16128
16145
  "filename": "src/watchfulv2/watchful.ts",
16129
- "line": 177
16146
+ "line": 208
16130
16147
  },
16131
16148
  "name": "watchScope",
16132
16149
  "parameters": [
@@ -16154,7 +16171,7 @@
16154
16171
  "kind": "interface",
16155
16172
  "locationInModule": {
16156
16173
  "filename": "src/watchfulv2/watchful.ts",
16157
- "line": 53
16174
+ "line": 63
16158
16175
  },
16159
16176
  "name": "WatchfulProps",
16160
16177
  "namespace": "watchfulv2",
@@ -16170,7 +16187,7 @@
16170
16187
  "immutable": true,
16171
16188
  "locationInModule": {
16172
16189
  "filename": "src/watchfulv2/watchful.ts",
16173
- "line": 74
16190
+ "line": 84
16174
16191
  },
16175
16192
  "name": "createCasesFromErrorLogMonitors",
16176
16193
  "optional": true,
@@ -16187,7 +16204,7 @@
16187
16204
  "immutable": true,
16188
16205
  "locationInModule": {
16189
16206
  "filename": "src/watchfulv2/watchful.ts",
16190
- "line": 79
16207
+ "line": 89
16191
16208
  },
16192
16209
  "name": "logErrorMonitorConfig",
16193
16210
  "optional": true,
@@ -16205,7 +16222,7 @@
16205
16222
  "immutable": true,
16206
16223
  "locationInModule": {
16207
16224
  "filename": "src/watchfulv2/watchful.ts",
16208
- "line": 66
16225
+ "line": 76
16209
16226
  },
16210
16227
  "name": "notification",
16211
16228
  "optional": true,
@@ -16223,7 +16240,7 @@
16223
16240
  "immutable": true,
16224
16241
  "locationInModule": {
16225
16242
  "filename": "src/watchfulv2/watchful.ts",
16226
- "line": 85
16243
+ "line": 95
16227
16244
  },
16228
16245
  "name": "queryErrorMonitorConfig",
16229
16246
  "optional": true,
@@ -16241,7 +16258,7 @@
16241
16258
  "immutable": true,
16242
16259
  "locationInModule": {
16243
16260
  "filename": "src/watchfulv2/watchful.ts",
16244
- "line": 59
16261
+ "line": 69
16245
16262
  },
16246
16263
  "name": "serviceName",
16247
16264
  "optional": true,
@@ -16254,5 +16271,5 @@
16254
16271
  }
16255
16272
  },
16256
16273
  "version": "0.0.0",
16257
- "fingerprint": "+cFufSaZ5kmzgG20jmbchKfmEGh+MkNUFPaJGiDif6A="
16274
+ "fingerprint": "kTF6GygMDt60e/vn0s1VKYWl7IqZwwg6gseIISPj7qA="
16258
16275
  }
package/API.md CHANGED
@@ -8693,6 +8693,7 @@ const dataDogMetricAlarmProps: DataDogMetricAlarmProps = { ... }
8693
8693
  | <code><a href="#@rio-cloud/cdk-v2-constructs.DataDogMetricAlarmProps.property.metric">metric</a></code> | <code>aws-cdk-lib.aws_cloudwatch.Metric</code> | The CloudWatch metric used as source for the alarm. |
8694
8694
  | <code><a href="#@rio-cloud/cdk-v2-constructs.DataDogMetricAlarmProps.property.priority">priority</a></code> | <code>number</code> | priority. |
8695
8695
  | <code><a href="#@rio-cloud/cdk-v2-constructs.DataDogMetricAlarmProps.property.threshold">threshold</a></code> | <code>number</code> | The value against which the specified statistic is compared. |
8696
+ | <code><a href="#@rio-cloud/cdk-v2-constructs.DataDogMetricAlarmProps.property.aggregateQueryAsCount">aggregateQueryAsCount</a></code> | <code>boolean</code> | Add as_count aggregator to the query. |
8696
8697
  | <code><a href="#@rio-cloud/cdk-v2-constructs.DataDogMetricAlarmProps.property.treatMissingData">treatMissingData</a></code> | <code>aws-cdk-lib.aws_cloudwatch.TreatMissingData</code> | Sets how this alarm is to handle missing data points. |
8697
8698
  | <code><a href="#@rio-cloud/cdk-v2-constructs.DataDogMetricAlarmProps.property.dataDogOpsGenieIntegrationName">dataDogOpsGenieIntegrationName</a></code> | <code>string</code> | The name of DataDog's OpsGenie integration. |
8698
8699
  | <code><a href="#@rio-cloud/cdk-v2-constructs.DataDogMetricAlarmProps.property.serviceName">serviceName</a></code> | <code>string</code> | The service name used to name the montors (in datadog-integration). |
@@ -8773,6 +8774,18 @@ The value against which the specified statistic is compared.
8773
8774
 
8774
8775
  ---
8775
8776
 
8777
+ ##### `aggregateQueryAsCount`<sup>Optional</sup> <a name="aggregateQueryAsCount" id="@rio-cloud/cdk-v2-constructs.DataDogMetricAlarmProps.property.aggregateQueryAsCount"></a>
8778
+
8779
+ ```typescript
8780
+ public readonly aggregateQueryAsCount: boolean;
8781
+ ```
8782
+
8783
+ - *Type:* boolean
8784
+
8785
+ Add as_count aggregator to the query.
8786
+
8787
+ ---
8788
+
8776
8789
  ##### `treatMissingData`<sup>Optional</sup> <a name="treatMissingData" id="@rio-cloud/cdk-v2-constructs.DataDogMetricAlarmProps.property.treatMissingData"></a>
8777
8790
 
8778
8791
  ```typescript
@@ -11182,6 +11195,7 @@ const metricAlarmProps: MetricAlarmProps = { ... }
11182
11195
  | <code><a href="#@rio-cloud/cdk-v2-constructs.MetricAlarmProps.property.metric">metric</a></code> | <code>aws-cdk-lib.aws_cloudwatch.Metric</code> | The CloudWatch metric used as source for the alarm. |
11183
11196
  | <code><a href="#@rio-cloud/cdk-v2-constructs.MetricAlarmProps.property.priority">priority</a></code> | <code>number</code> | priority. |
11184
11197
  | <code><a href="#@rio-cloud/cdk-v2-constructs.MetricAlarmProps.property.threshold">threshold</a></code> | <code>number</code> | The value against which the specified statistic is compared. |
11198
+ | <code><a href="#@rio-cloud/cdk-v2-constructs.MetricAlarmProps.property.aggregateQueryAsCount">aggregateQueryAsCount</a></code> | <code>boolean</code> | Add as_count aggregator to the query. |
11185
11199
  | <code><a href="#@rio-cloud/cdk-v2-constructs.MetricAlarmProps.property.treatMissingData">treatMissingData</a></code> | <code>aws-cdk-lib.aws_cloudwatch.TreatMissingData</code> | Sets how this alarm is to handle missing data points. |
11186
11200
 
11187
11201
  ---
@@ -11259,6 +11273,18 @@ The value against which the specified statistic is compared.
11259
11273
 
11260
11274
  ---
11261
11275
 
11276
+ ##### `aggregateQueryAsCount`<sup>Optional</sup> <a name="aggregateQueryAsCount" id="@rio-cloud/cdk-v2-constructs.MetricAlarmProps.property.aggregateQueryAsCount"></a>
11277
+
11278
+ ```typescript
11279
+ public readonly aggregateQueryAsCount: boolean;
11280
+ ```
11281
+
11282
+ - *Type:* boolean
11283
+
11284
+ Add as_count aggregator to the query.
11285
+
11286
+ ---
11287
+
11262
11288
  ##### `treatMissingData`<sup>Optional</sup> <a name="treatMissingData" id="@rio-cloud/cdk-v2-constructs.MetricAlarmProps.property.treatMissingData"></a>
11263
11289
 
11264
11290
  ```typescript
package/CHANGELOG.md CHANGED
@@ -2,6 +2,26 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines.
4
4
 
5
+ ## [6.0.1](https://bitbucket.collaboration-man.com/projects/RIODEV/repos/cdk-v2-constructs/compare/commits?targetBranch=refs%2Ftags%2Fv6.0.0&sourceBranch=refs%2Ftags%2Fv6.0.1) (2024-07-10)
6
+
7
+
8
+ ### Bug Fixes
9
+
10
+ * use proper functionname tag with lowercase value in query of lambda log monitors ([58d1b1c](https://bitbucket.collaboration-man.com/projects/RIODEV/repos/cdk-v2-constructs/commits/58d1b1c777b2ba0ede367a8535d79b80e679ca49))
11
+
12
+ ## [6.0.0](https://bitbucket.collaboration-man.com/projects/RIODEV/repos/cdk-v2-constructs/compare/commits?targetBranch=refs%2Ftags%2Fv5.1.0&sourceBranch=refs%2Ftags%2Fv6.0.0) (2024-07-04)
13
+
14
+
15
+ ### ⚠ BREAKING CHANGES
16
+
17
+ * Without the as_count aggregator, the metrics are not calculated properly
18
+
19
+ RIOCLAID-3936
20
+
21
+ ### Bug Fixes
22
+
23
+ * :boom: Using as_count aggregator for alb 5xx error monitor ([a073c65](https://bitbucket.collaboration-man.com/projects/RIODEV/repos/cdk-v2-constructs/commits/a073c654b2d9177692856a429520d9e225abe056))
24
+
5
25
  ## [5.1.0](https://bitbucket.collaboration-man.com/projects/RIODEV/repos/cdk-v2-constructs/compare/commits?targetBranch=refs%2Ftags%2Fv5.0.0&sourceBranch=refs%2Ftags%2Fv5.1.0) (2024-06-27)
6
26
 
7
27
 
@@ -143,4 +143,4 @@ function addClaidometer(scope) {
143
143
  version: '0.0.8',
144
144
  });
145
145
  }
146
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWRvZy11c2FnZS1tb25pdG9yaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbnRyaWJ1dGlvbnMvdGVhbS1jbGFpZC9kYXRhZG9nLXVzYWdlLW1vbml0b3JpbmcvZGF0YWRvZy11c2FnZS1tb25pdG9yaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkJBQTZCO0FBQzdCLHlDQUF5QztBQUN6Qyw4Q0FBaUY7QUFFakYsa0RBQTJIO0FBQzNILDhEQUEyRTtBQWtCM0U7OztHQUdHO0FBQ0gsTUFBYSxzQkFBdUIsU0FBUSxVQUFVLENBQUMsU0FBUztJQUM5RCxZQUFZLEtBQTJCLEVBQUUsRUFBVSxFQUFFLEtBQWtDO1FBQ3JGLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxnQ0FBZ0MsR0FBd0I7WUFDNUQ7Z0JBQ0UsaUJBQWlCLEVBQUUsc0JBQXNCO2dCQUN6QyxLQUFLLEVBQUUsc0NBQXNDO2FBQzlDO1lBQ0Q7Z0JBQ0UsaUJBQWlCLEVBQUUsb0RBQW9EO2dCQUN2RSxLQUFLLEVBQUUsMERBQTBEO2FBQ2xFO1lBQ0QsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLDBDQUEwQyxFQUFFO1lBQ3pGLEVBQUUsaUJBQWlCLEVBQUUsd0JBQXdCLEVBQUUsS0FBSyxFQUFFLGtDQUFrQyxFQUFFO1lBQzFGO2dCQUNFLGlCQUFpQixFQUFFLGdCQUFnQjtnQkFDbkMsS0FBSyxFQUFFLCtDQUErQzthQUN2RDtZQUNEO2dCQUNFLGlCQUFpQixFQUFFLDhDQUE4QztnQkFDakUsS0FBSyxFQUFFLG1FQUFtRTthQUMzRTtTQUNGLENBQUM7UUFFRixNQUFNLHVEQUF1RCxHQUFHLDBCQUEwQixJQUFBLGtDQUF3QixFQUNoSCxLQUFLLENBQUMsWUFBWSxDQUNuQixxRkFBcUYsQ0FBQztRQUN2RixNQUFNLHVEQUF1RCxHQUFHLDBCQUEwQixJQUFBLGtD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aUJBQWlCLENBQUMsaUJBQWlCLFFBQVE7WUFDcEQsV0FBVztZQUNYLFlBQVk7WUFDWixPQUFPLEVBQUUsUUFBUSxpQkFBaUIsQ0FBQyxpQkFBaUIsZ0NBQ2xELGlCQUFpQixDQUFDLGlCQUFpQixJQUFJLEVBQ3pDLEVBQUU7WUFDRixXQUFXLEVBQUUsd0NBQTRCLENBQUMsV0FBVztZQUNyRCxLQUFLLEVBQUUsMkJBQTJCLGlCQUFpQixDQUFDLEtBQUsseUpBQXlKO1lBQ2xOLGVBQWUsRUFBRTtnQkFDZixXQUFXLEVBQUUsS0FBSztnQkFDbEIsWUFBWSxFQUFFLEtBQUs7Z0JBQ25CLGdCQUFnQixFQUFFO29CQUNoQixhQUFhLEVBQUUsVUFBVTtvQkFDekIsY0FBYyxFQUFFLFVBQVU7aUJBQzNCO2FBQ0Y7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDOztBQWpKSCx3REFrSkM7OztBQUVELFNBQVMsY0FBYyxDQUFDLEtBQTJCO0lBQ2pELE1BQU0sQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbkUsSUFBSSw2QkFBVyxDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUU7UUFDcEMsT0FBTyxFQUFFLG9DQUFrQixDQUFDLGdCQUFnQjtRQUM1QyxXQUFXO1FBQ1gsT0FBTztRQUNQLE9BQU8sRUFBRSxPQUFPO0tBQ2pCLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgY29uc3RydWN0cyBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IERhdGFkb2dPcmdhbml6YXRpb24sIGdldE9yZ2FuaXphdGlvblVybFByZWZpeCB9IGZyb20gJy4uLy4uLy4uL2RhdGFkb2cnO1xuaW1wb3J0IHsgRGF0YWRvZ0FsZXJ0VHlwZSB9IGZyb20gJy4uLy4uLy4uL2RhdGFkb2cvZGF0YWRvZy1tb25pdG9yJztcbmltcG9ydCB7IElOb3RpZmljYXRpb24sIERlZmF1bHRTbGFja05vdGlmaWNhdGlvbiwgRGF0YWRvZ01vbml0b3IsIERhdGFkb2dNb25pdG9yUXVlcnlBbGVydFR5cGUgfSBmcm9tICcuLi8uLi8uLi9kYXRhZG9ndjInO1xuaW1wb3J0IHsgQ2xhaWRvbWV0ZXIsIENsYWlkb21ldGVyUHJvZHVjdCB9IGZyb20gJy4uLy4uLy4uL3Jpby1jbGFpZG9tZXRlcic7XG5cbmludGVyZmFjZSBVc2FnZVNwaWtlTW9uaXRvciB7XG4gIGh1bWFuUmVhZGFibGVOYW1lOiBzdHJpbmc7XG4gIHF1ZXJ5OiBzdHJpbmc7XG4gIGFkZGl0aW9uYWxNZXNzYWdlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFkb2dVc2FnZU1vbml0b3JpbmdQcm9wcyB7XG4gIHJlYWRvbmx5IHNlcnZpY2VOYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBub3Qgc3VwcG9ydGVkIGFueW1vcmUuIHVzZSBgbm90aWZpY2F0aW9uYCBpbnN0ZWFkLlxuICAgKi9cbiAgcmVhZG9ubHkgYWxlcnRUeXBlPzogRGF0YWRvZ0FsZXJ0VHlwZTtcbiAgcmVhZG9ubHkgbm90aWZpY2F0aW9uPzogSU5vdGlmaWNhdGlvbjtcbiAgcmVhZG9ubHkgb3JnYW5pemF0aW9uOiBEYXRhZG9nT3JnYW5pemF0aW9uO1xufVxuXG4vKipcbiAqIFRoaXMgaXMgYSBiZXRhIGNvbnN0cnVjdCBhbmQgaXMgbGlrZWx5IHRvIGhhdmUgYnJlYWtpbmcgY2hhbmdlcy5cbiAqIFRoZSBjb25zdHJ1Y3QgY3JlYXRlcyBtb25pdG9yaW5nIChiYXNlZCBvbiBhbm9tYWx5IGRldGVjdGlvbikgZm9yIHRoZSB1c2FnZSBvZiB0aGUgbW9zdCByZWxldmFudCBEYXRhZG9nIHJlc291cmNlc1xuICovXG5leHBvcnQgY2xhc3MgRGF0YWRvZ1VzYWdlTW9uaXRvcmluZyBleHRlbmRzIGNvbnN0cnVjdHMuQ29uc3RydWN0IHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRGF0YWRvZ1VzYWdlTW9uaXRvcmluZ1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IGluZnJhc3RydWN0dXJlVXNhZ2VTcGlrZU1vbml0b3JzOiBVc2FnZVNwaWtlTW9uaXRvcltdID0gW1xuICAgICAge1xuICAgICAgICBodW1hblJlYWRhYmxlTmFtZTogJ2luZnJhc3RydWN0dXJlIGhvc3RzJyxcbiAgICAgICAgcXVlcnk6ICdzdW06ZGF0YWRvZy5lc3RpbWF0ZWRfdXNhZ2UuaG9zdHN7Kn0nLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaHVtYW5SZWFkYWJsZU5hbWU6IFwiaW5mcmFzdHJ1Y3R1cmUgaG9zdHMgZm9yICd7e2NoaWxkX29yZ19uYW1lLm5hbWV9fSdcIixcbiAgICAgICAgcXVlcnk6ICdzdW06ZGF0YWRvZy5lc3RpbWF0ZWRfdXNhZ2UuaG9zdHN7Kn0gYnkge2NoaWxkX29yZ19uYW1lfScsXG4gICAgICB9LFxuICAgICAgeyBodW1hblJlYWRhYmxlTmFtZTogJ0ZhcmdhdGUgdGFza3MnLCBxdWVyeTogJ3N1bTpkYXRhZG9nLmFwbS5mYXJnYXRlX3Rhc2tfaW5zdGFuY2V7Kn0nIH0sXG4gICAgICB7IGh1bWFuUmVhZGFibGVOYW1lOiAncHJvZmlsZWQgRmFyZ2F0ZSB0YXNrcycsIHF1ZXJ5OiAnc3VtOmRhdGFkb2cucHJvZmlsaW5nLmZhcmdhdGV7Kn0nIH0sXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiAnY3VzdG9tIG1ldHJpY3MnLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5tZXRyaWNzLmN1c3RvbXsqfScsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBodW1hblJlYWRhYmxlTmFtZTogXCJjdXN0b20gbWV0cmljcyBmb3IgJ3t7Y2hpbGRfb3JnX25hbWUubmFtZX19J1wiLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5tZXRyaWNzLmN1c3RvbXsqfSBieSB7Y2hpbGRfb3JnX25hbWV9JyxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIGNvbnN0IGFkZGl0aW9uYWxNZXNzYWdlTG9nTWFuYWdlbWVudEZvckdsb2JhbGx5U2NvcGVkTW9uaXRvcnMgPSBgVGFrZSBhIGxvb2sgYXQgaHR0cHM6Ly8ke2dldE9yZ2FuaXphdGlvblVybFByZWZpeChcbiAgICAgIHByb3BzLm9yZ2FuaXphdGlvbixcbiAgICApfS5kYXRhZG9naHEuZXUvZGFzaC9pbnRlZ3JhdGlvbi80NjUvbG9nLW1hbmFnZW1lbnQtZXN0aW1hdGVkLXVzYWdlIGZvciBtb3JlIGRldGFpbHMuYDtcbiAgICBjb25zdCBhZGRpdGlvbmFsTWVzc2FnZUxvZ01hbmFnZW1lbnRGb3JMb2dJbmRleFNjb3BlZE1vbml0b3JzID0gYFRha2UgYSBsb29rIGF0IGh0dHBzOi8vJHtnZXRPcmdhbml6YXRpb25VcmxQcmVmaXgoXG4gICAgICBwcm9wcy5vcmdhbml6YXRpb24sXG4gICAgKX0uZGF0YWRvZ2hxLmV1L2Rhc2gvaW50ZWdyYXRpb24vNDY1L2xvZy1tYW5hZ2VtZW50LWVzdGltYXRlZC11c2FnZT90cGxfdmFyX2RhdGFkb2dfaW5kZXg9e3tkYXRhZG9nX2luZGV4Lm5hbWV9fSBmb3IgbW9yZSBkZXRhaWxzLmA7XG4gICAgY29uc3QgbG9nTWFuYWdlbWVudFVzYWdlU3Bpa2VNb25pdG9yczogVXNhZ2VTcGlrZU1vbml0b3JbXSA9IFtcbiAgICAgIHtcbiAgICAgICAgaHVtYW5SZWFkYWJsZU5hbWU6ICdsb2cgaW5nZXN0aW9uJyxcbiAgICAgICAgcXVlcnk6ICdzdW06ZGF0YWRvZy5lc3RpbWF0ZWRfdXNhZ2UubG9ncy5pbmdlc3RlZF9ieXRlc3sqfS5hc19jb3VudCgpJyxcbiAgICAgICAgYWRkaXRpb25hbE1lc3NhZ2U6IGFkZGl0aW9uYWxNZXNzYWdlTG9nTWFuYWdlbWVudEZvckdsb2JhbGx5U2NvcGVkTW9uaXRvcnMsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBodW1hblJlYWRhYmxlTmFtZTogXCJsb2cgaW5nZXN0aW9uIGZvciAne3tkYXRhZG9nX2luZGV4Lm5hbWV9fSdcIixcbiAgICAgICAgcXVlcnk6ICdzdW06ZGF0YWRvZy5lc3RpbWF0ZWRfdXNhZ2UubG9ncy5pbmdlc3RlZF9ieXRlc3sqfSBieSB7ZGF0YWRvZ19pbmRleH0uYXNfY291bnQoKScsXG4gICAgICAgIGFkZGl0aW9uYWxNZXNzYWdlOiBhZGRpdGlvbmFsTWVzc2FnZUxvZ01hbmFnZW1lbnRGb3JMb2dJbmRleFNjb3BlZE1vbml0b3JzLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaHVtYW5SZWFkYWJsZU5hbWU6ICdsb2cgaW5kZXhpbmcnLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5sb2dzLmluZ2VzdGVkX2V2ZW50c3tkYXRhZG9nX2lzX2V4Y2x1ZGVkOmZhbHNlfS5hc19jb3VudCgpJyxcbiAgICAgICAgYWRkaXRpb25hbE1lc3NhZ2U6IGFkZGl0aW9uYWxNZXNzYWdlTG9nTWFuYWdlbWVudEZvckdsb2JhbGx5U2NvcGVkTW9uaXRvcnMsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBodW1hblJlYWRhYmxlTmFtZTogXCJsb2cgaW5kZXhpbmcgZm9yICd7e2RhdGFkb2dfaW5kZXgubmFtZX19J1wiLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5sb2dzLmluZ2VzdGVkX2V2ZW50c3tkYXRhZG9nX2lzX2V4Y2x1ZGVkOmZhbHNlfSBieSB7ZGF0YWRvZ19pbmRleH0uYXNfY291bnQoKScsXG4gICAgICAgIGFkZGl0aW9uYWxNZXNzYWdlOiBhZGRpdGlvbmFsTWVzc2FnZUxvZ01hbmFnZW1lbnRGb3JMb2dJbmRleFNjb3BlZE1vbml0b3JzLFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgY29uc3QgYWRkaXRpb25hbE1lc3NhZ2VBcG1Gb3JHbG9iYWxseVNjb3BlZE1vbml0b3JzID0gYFRha2UgYSBsb29rIGF0IGh0dHBzOi8vJHtnZXRPcmdhbml6YXRpb25VcmxQcmVmaXgoXG4gICAgICBwcm9wcy5vcmdhbml6YXRpb24sXG4gICAgKX0uZGF0YWRvZ2hxLmV1L2Rhc2gvaW50ZWdyYXRpb24vNDg5L2FwbS10cmFjZXMtZXN0aW1hdGVkLXVzYWdlIGZvciBtb3JlIGRldGFpbHMuYDtcbiAgICBjb25zdCBhZGRpdGlvbmFsTWVzc2FnZUFwbUZvckVudlNjb3BlZE1vbml0b3JzID0gYFRha2UgYSBsb29rIGF0IGh0dHBzOi8vJHtnZXRPcmdhbml6YXRpb25VcmxQcmVmaXgoXG4gICAgICBwcm9wcy5vcmdhbml6YXRpb24sXG4gICAgKX0uZGF0YWRvZ2hxLmV1L2Rhc2gvaW50ZWdyYXRpb24vNDg5L2FwbS10cmFjZXMtZXN0aW1hdGVkLXVzYWdlP3RwbF92YXJfZW52PXt7ZW52Lm5hbWV9fSBmb3IgbW9yZSBkZXRhaWxzLmA7XG4gICAgY29uc3QgYXBtVXNhZ2VTcGlrZU1vbml0b3JzOiBVc2FnZVNwaWtlTW9uaXRvcltdID0gW1xuICAgICAgeyBodW1hblJlYWRhYmxlTmFtZTogJ0FQTSBob3N0cycsIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLmFwbV9ob3N0c3sqfScgfSxcbiAgICAgIHtcbiAgICAgICAgaHVtYW5SZWFkYWJsZU5hbWU6IFwiQVBNIGhvc3RzIGZvciAne3tjaGlsZF9vcmdfbmFtZS5uYW1lfX0nXCIsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLmFwbV9ob3N0c3sqfSBieSB7Y2hpbGRfb3JnX25hbWV9JyxcbiAgICAgICAgYWRkaXRpb25hbE1lc3NhZ2U6IGFkZGl0aW9uYWxNZXNzYWdlQXBtRm9yR2xvYmFsbHlTY29wZWRNb25pdG9ycyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiAnc3BhbiBpbmdlc3Rpb24nLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5hcG0uaW5nZXN0ZWRfYnl0ZXN7Kn0uYXNfY291bnQoKScsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBodW1hblJlYWRhYmxlTmFtZTogXCJzcGFuIGluZ2VzdGlvbiBmb3IgJ3t7ZW52Lm5hbWV9fSdcIixcbiAgICAgICAgcXVlcnk6ICdzdW06ZGF0YWRvZy5lc3RpbWF0ZWRfdXNhZ2UuYXBtLmluZ2VzdGVkX2J5dGVzeyp9IGJ5IHtlbnZ9LmFzX2NvdW50KCknLFxuICAgICAgICBhZGRpdGlvbmFsTWVzc2FnZTogYWRkaXRpb25hbE1lc3NhZ2VBcG1Gb3JFbnZTY29wZWRNb25pdG9ycyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiAnc3BhbiBpbmRleGluZycsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLmFwbS5pbmRleGVkX3NwYW5zeyp9LmFzX2NvdW50KCknLFxuICAgICAgICBhZGRpdGlvbmFsTWVzc2FnZTogYWRkaXRpb25hbE1lc3NhZ2VBcG1Gb3JHbG9iYWxseVNjb3BlZE1vbml0b3JzLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaHVtYW5SZWFkYWJsZU5hbWU6IFwic3BhbiBpbmRleGluZyBmb3IgJ3t7ZW52Lm5hbWV9fSdcIixcbiAgICAgICAgcXVlcnk6ICdzdW06ZGF0YWRvZy5lc3RpbWF0ZWRfdXNhZ2UuYXBtLmluZGV4ZWRfc3BhbnN7Kn0gYnkge2Vudn0uYXNfY291bnQoKScsXG4gICAgICAgIGFkZGl0aW9uYWxNZXNzYWdlOiBhZGRpdGlvbmFsTWVzc2FnZUFwbUZvckVudlNjb3BlZE1vbml0b3JzLFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgY29uc3Qgc3ludGhldGljVXNhZ2VTcGlrZU1vbml0b3JzOiBVc2FnZVNwaWtlTW9uaXRvcltdID0gW1xuICAgICAge1xuICAgICAgICBodW1hblJlYWRhYmxlTmFtZTogJ1N5bnRoZXRpYyBBUEkgdGVzdHMnLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5zeW50aGV0aWNzLmFwaV90ZXN0X3J1bnN7Kn0uYXNfY291bnQoKScsXG4gICAgICB9LFxuICAgIF07XG5cbiAgICBjb25zdCBzZXJ2ZXJsZXNzVXNhZ2VTcGlrZU1vbml0b3JzOiBVc2FnZVNwaWtlTW9uaXRvcltdID0gW1xuICAgICAge1xuICAgICAgICBodW1hblJlYWRhYmxlTmFtZTogJ3NlcnZlcmxlc3MgZnVuY3Rpb25zJyxcbiAgICAgICAgcXVlcnk6ICdzdW06ZGF0YWRvZy5lc3RpbWF0ZWRfdXNhZ2Uuc2VydmVybGVzcy5hd3NfbGFtYmRhX2Z1bmN0aW9uc3sqfScsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBodW1hblJlYWRhYmxlTmFtZTogXCJzZXJ2ZXJsZXNzIGZ1bmN0aW9ucyBmb3IgJ3t7Y2hpbGRfb3JnX25hbWUubmFtZX19J1wiLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5zZXJ2ZXJsZXNzLmF3c19sYW1iZGFfZnVuY3Rpb25zeyp9IGJ5IHtjaGlsZF9vcmdfbmFtZX0nLFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgY29uc3Qgbm90aWZpY2F0aW9uID0gcHJvcHMubm90aWZpY2F0aW9uID8/IG5ldyBEZWZhdWx0U2xhY2tOb3RpZmljYXRpb24oKTtcbiAgICBmb3IgKGNvbnN0IHVzYWdlU3Bpa2VNb25pdG9yIG9mIChbXSBhcyBVc2FnZVNwaWtlTW9uaXRvcltdKS5jb25jYXQoXG4gICAgICBpbmZyYXN0cnVjdHVyZVVzYWdlU3Bpa2VNb25pdG9ycyxcbiAgICAgIGxvZ01hbmFnZW1lbnRVc2FnZVNwaWtlTW9uaXRvcnMsXG4gICAgICBhcG1Vc2FnZVNwaWtlTW9uaXRvcnMsXG4gICAgICBzZXJ2ZXJsZXNzVXNhZ2VTcGlrZU1vbml0b3JzLFxuICAgICAgc3ludGhldGljVXNhZ2VTcGlrZU1vbml0b3JzLFxuICAgICkpIHtcbiAgICAgIHRoaXMuY3JlYXRlQW5vbWFseU1vbml0b3JGb3JTcGlrZXMocHJvcHMuc2VydmljZU5hbWUsIHVzYWdlU3Bpa2VNb25pdG9yLCBub3RpZmljYXRpb24pO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5vcmdhbml6YXRpb24gPT09ICdFVScpIHtcbiAgICAgIGFkZENsYWlkb21ldGVyKHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQW5vbWFseU1vbml0b3JGb3JTcGlrZXMoXG4gICAgc2VydmljZU5hbWU6IHN0cmluZyxcbiAgICB1c2FnZVNwaWtlTW9uaXRvcjogVXNhZ2VTcGlrZU1vbml0b3IsXG4gICAgbm90aWZpY2F0aW9uOiBJTm90aWZpY2F0aW9uLFxuICApOiBEYXRhZG9nTW9uaXRvciB7XG4gICAgcmV0dXJuIG5ldyBEYXRhZG9nTW9uaXRvcih0aGlzLCB1c2FnZVNwaWtlTW9uaXRvci5odW1hblJlYWRhYmxlTmFtZSwge1xuICAgICAgbmFtZTogYCR7dXNhZ2VTcGlrZU1vbml0b3IuaHVtYW5SZWFkYWJsZU5hbWV9IHNwaWtlYCxcbiAgICAgIHNlcnZpY2VOYW1lLFxuICAgICAgbm90aWZpY2F0aW9uLFxuICAgICAgbWVzc2FnZTogYFtQNF0gJHt1c2FnZVNwaWtlTW9uaXRvci5odW1hblJlYWRhYmxlTmFtZX0gYXJlIGdldHRpbmcgb3V0LW9mLWNvbnRyb2wuICR7XG4gICAgICAgIHVzYWdlU3Bpa2VNb25pdG9yLmFkZGl0aW9uYWxNZXNzYWdlID8/ICcnXG4gICAgICB9YCxcbiAgICAgIG1vbml0b3JUeXBlOiBEYXRhZG9nTW9uaXRvclF1ZXJ5QWxlcnRUeXBlLlFVRVJZX0FMRVJULFxuICAgICAgcXVlcnk6IGBhdmcobGFzdF8xMmgpOmFub21hbGllcygke3VzYWdlU3Bpa2VNb25pdG9yLnF1ZXJ5fSwgJ2FnaWxlJywgMywgZGlyZWN0aW9uPSdhYm92ZScsIGludGVydmFsPTEyMCwgYWxlcnRfd2luZG93PSdsYXN0XzMwbScsIHNlYXNvbmFsaXR5PSd3ZWVrbHknLCB0aW1lem9uZT0nZXVyb3BlL2JlcmxpbicsIGNvdW50X2RlZmF1bHRfemVybz0ndHJ1ZScpID49IDFgLFxuICAgICAgb3B0aW9uT3ZlcnJpZGVzOiB7XG4gICAgICAgIGluY2x1ZGVUYWdzOiBmYWxzZSxcbiAgICAgICAgbm90aWZ5Tm9EYXRhOiBmYWxzZSxcbiAgICAgICAgdGhyZXNob2xkV2luZG93czoge1xuICAgICAgICAgIHRyaWdnZXJXaW5kb3c6ICdsYXN0XzMwbScsXG4gICAgICAgICAgcmVjb3ZlcnlXaW5kb3c6ICdsYXN0XzE1bScsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIGFkZENsYWlkb21ldGVyKHNjb3BlOiBjb25zdHJ1Y3RzLkNvbnN0cnVjdCkge1xuICBjb25zdCBbZmVhdHVyZSwgcGFja2FnZU5hbWVdID0gX19kaXJuYW1lLnNwbGl0KHBhdGguc2VwKS5yZXZlcnNlKCk7XG4gIG5ldyBDbGFpZG9tZXRlcihzY29wZSwgJ0NsYWlkb21ldGVyJywge1xuICAgIHByb2R1Y3Q6IENsYWlkb21ldGVyUHJvZHVjdC5DREtfQ09OVFJJQlVUSU9OLFxuICAgIHBhY2thZ2VOYW1lLFxuICAgIGZlYXR1cmUsXG4gICAgdmVyc2lvbjogJzAuMC44JyxcbiAgfSk7XG59XG4iXX0=
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWRvZy11c2FnZS1tb25pdG9yaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbnRyaWJ1dGlvbnMvdGVhbS1jbGFpZC9kYXRhZG9nLXVzYWdlLW1vbml0b3JpbmcvZGF0YWRvZy11c2FnZS1tb25pdG9yaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkJBQTZCO0FBQzdCLHlDQUF5QztBQUN6Qyw4Q0FBaUY7QUFFakYsa0RBQTJIO0FBQzNILDhEQUEyRTtBQWtCM0U7OztHQUdHO0FBQ0gsTUFBYSxzQkFBdUIsU0FBUSxVQUFVLENBQUMsU0FBUztJQUM5RCxZQUFZLEtBQTJCLEVBQUUsRUFBVSxFQUFFLEtBQWtDO1FBQ3JGLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxnQ0FBZ0MsR0FBd0I7WUFDNUQ7Z0JBQ0UsaUJBQWlCLEVBQUUsc0JBQXNCO2dCQUN6QyxLQUFLLEVBQUUsc0NBQXNDO2FBQzlDO1lBQ0Q7Z0JBQ0UsaUJBQWlCLEVBQUUsb0RBQW9EO2dCQUN2RSxLQUFLLEVBQUUsMERBQTBEO2FBQ2xFO1lBQ0QsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLDBDQUEwQyxFQUFFO1lBQ3pGLEVBQUUsaUJBQWlCLEVBQUUsd0JBQXdCLEVBQUUsS0FBSyxFQUFFLGtDQUFrQyxFQUFFO1lBQzFGO2dCQUNFLGlCQUFpQixFQUFFLGdCQUFnQjtnQkFDbkMsS0FBSyxFQUFFLCtDQUErQzthQUN2RDtZQUNEO2dCQUNFLGlCQUFpQixFQUFFLDhDQUE4QztnQkFDakUsS0FBSyxFQUFFLG1FQUFtRTthQUMzRTtTQUNGLENBQUM7UUFFRixNQUFNLHVEQUF1RCxHQUFHLDBCQUEwQixJQUFBLGtDQUF3QixFQUNoSCxLQUFLLENBQUMsWUFBWSxDQUNuQixxRkFBcUYsQ0FBQztRQUN2RixNQUFNLHVEQUF1RCxHQUFHLDBCQUEwQixJQUFBLGtDQUF3QixFQUNoSCxLQUFLLENBQUMsWUFBWSxDQUNuQixrSUFBa0ksQ0FBQztRQUNwSSxNQUFNLCtCQUErQixHQUF3QjtZQUMzRDtnQkFDRSxpQkFBaUIsRUFBRSxlQUFlO2dCQUNsQyxLQUFLLEVBQUUsK0RBQStEO2dCQUN0RSxpQkFBaUIsRUFBRSx1REFBdUQ7YUFDM0U7WUFDRDtnQkFDRSxpQkFBaUIsRUFBRSw0Q0FBNEM7Z0JBQy9ELEtBQUssRUFBRSxrRkFBa0Y7Z0JBQ3pGLGlCQUFpQixFQUFFLHVEQUF1RDthQUMzRTtZQUNEO2dCQUNFLGlCQUFpQixFQUFFLGNBQWM7Z0JBQ2pDLEtBQUssRUFBRSx3RkFBd0Y7Z0JBQy9GLGlCQUFpQixFQUFFLHVEQUF1RDthQUMzRTtZQUNEO2dCQUNFLGlCQUFpQixFQUFFLDJDQUEyQztnQkFDOUQsS0FBSyxFQUFFLDJHQUEyRztnQkFDbEgsaUJBQWlCLEVBQUUsdURBQXVEO2FBQzNFO1NBQ0YsQ0FBQztRQUVGLE1BQU0sNkNBQTZDLEdBQUcsMEJBQTBCLElBQUEsa0NBQXdCLEVBQ3RHLEtBQUssQ0FBQyxZQUFZLENBQ25CLGlGQUFpRixDQUFDO1FBQ25GLE1BQU0sd0NBQXdDLEdBQUcsMEJBQTBCLElBQUEsa0NBQXdCLEVBQ2pHLEtBQUssQ0FBQyxZQUFZLENBQ25CLDBHQUEwRyxDQUFDO1FBQzVHLE1BQU0scUJBQXFCLEdBQXdCO1lBQ2pELEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSwwQ0FBMEMsRUFBRTtZQUNyRjtnQkFDRSxpQkFBaUIsRUFBRSx5Q0FBeUM7Z0JBQzVELEtBQUssRUFBRSw4REFBOEQ7Z0JBQ3JFLGlCQUFpQixFQUFFLDZDQUE2QzthQUNqRTtZQUNEO2dCQUNFLGlCQUFpQixFQUFFLGdCQUFnQjtnQkFDbkMsS0FBSyxFQUFFLDhEQUE4RDthQUN0RTtZQUNEO2dCQUNFLGlCQUFpQixFQUFFLG1DQUFtQztnQkFDdEQsS0FBSyxFQUFFLHVFQUF1RTtnQkFDOUUsaUJBQWlCLEVBQUUsd0NBQXdDO2FBQzVEO1lBQ0Q7Z0JBQ0UsaUJBQWlCLEVBQUUsZUFBZTtnQkFDbEMsS0FBSyxFQUFFLDZEQUE2RDtnQkFDcEUsaUJBQWlCLEVBQUUsNkNBQTZDO2FBQ2pFO1lBQ0Q7Z0JBQ0UsaUJBQWlCLEVBQUUsa0NBQWtDO2dCQUNyRCxLQUFLLEVBQUUsc0VBQXNFO2dCQUM3RSxpQkFBaUIsRUFBRSx3Q0FBd0M7YUFDNUQ7U0FDRixDQUFDO1FBRUYsTUFBTSwyQkFBMkIsR0FBd0I7WUFDdkQ7Z0JBQ0UsaUJBQWlCLEVBQUUscUJBQXFCO2dCQUN4QyxLQUFLLEVBQUUsb0VBQW9FO2FBQzVFO1NBQ0YsQ0FBQztRQUVGLE1BQU0sNEJBQTRCLEdBQXdCO1lBQ3hEO2dCQUNFLGlCQUFpQixFQUFFLHNCQUFzQjtnQkFDekMsS0FBSyxFQUFFLGdFQUFnRTthQUN4RTtZQUNEO2dCQUNFLGlCQUFpQixFQUFFLG9EQUFvRDtnQkFDdkUsS0FBSyxFQUFFLG9GQUFvRjthQUM1RjtTQUNGLENBQUM7UUFFRixNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsWUFBWSxJQUFJLElBQUksb0NBQXdCLEVBQUUsQ0FBQztRQUMxRSxLQUFLLE1BQU0saUJBQWlCLElBQUssRUFBMEIsQ0FBQyxNQUFNLENBQ2hFLGdDQUFnQyxFQUNoQywrQkFBK0IsRUFDL0IscUJBQXFCLEVBQ3JCLDRCQUE0QixFQUM1QiwyQkFBMkIsQ0FDNUIsRUFBRSxDQUFDO1lBQ0YsSUFBSSxDQUFDLDZCQUE2QixDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDekYsQ0FBQztRQUVELElBQUksS0FBSyxDQUFDLFlBQVksS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNoQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkIsQ0FBQztJQUNILENBQUM7SUFFTyw2QkFBNkIsQ0FDbkMsV0FBbUIsRUFDbkIsaUJBQW9DLEVBQ3BDLFlBQTJCO1FBRTNCLE9BQU8sSUFBSSwwQkFBYyxDQUFDLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxpQkFBaUIsRUFBRTtZQUNuRSxJQUFJLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQyxpQkFBaUIsUUFBUTtZQUNwRCxXQUFXO1lBQ1gsWUFBWTtZQUNaLE9BQU8sRUFBRSxRQUFRLGlCQUFpQixDQUFDLGlCQUFpQixnQ0FDbEQsaUJBQWlCLENBQUMsaUJBQWlCLElBQUksRUFDekMsRUFBRTtZQUNGLFdBQVcsRUFBRSx3Q0FBNEIsQ0FBQyxXQUFXO1lBQ3JELEtBQUssRUFBRSwyQkFBMkIsaUJBQWlCLENBQUMsS0FBSyx5SkFBeUo7WUFDbE4sZUFBZSxFQUFFO2dCQUNmLFdBQVcsRUFBRSxLQUFLO2dCQUNsQixZQUFZLEVBQUUsS0FBSztnQkFDbkIsZ0JBQWdCLEVBQUU7b0JBQ2hCLGFBQWEsRUFBRSxVQUFVO29CQUN6QixjQUFjLEVBQUUsVUFBVTtpQkFDM0I7YUFDRjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBakpILHdEQWtKQzs7O0FBRUQsU0FBUyxjQUFjLENBQUMsS0FBMkI7SUFDakQsTUFBTSxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNuRSxJQUFJLDZCQUFXLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRTtRQUNwQyxPQUFPLEVBQUUsb0NBQWtCLENBQUMsZ0JBQWdCO1FBQzVDLFdBQVc7UUFDWCxPQUFPO1FBQ1AsT0FBTyxFQUFFLE9BQU87S0FDakIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyBjb25zdHJ1Y3RzIGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgRGF0YWRvZ09yZ2FuaXphdGlvbiwgZ2V0T3JnYW5pemF0aW9uVXJsUHJlZml4IH0gZnJvbSAnLi4vLi4vLi4vZGF0YWRvZyc7XG5pbXBvcnQgeyBEYXRhZG9nQWxlcnRUeXBlIH0gZnJvbSAnLi4vLi4vLi4vZGF0YWRvZy9kYXRhZG9nLW1vbml0b3InO1xuaW1wb3J0IHsgSU5vdGlmaWNhdGlvbiwgRGVmYXVsdFNsYWNrTm90aWZpY2F0aW9uLCBEYXRhZG9nTW9uaXRvciwgRGF0YWRvZ01vbml0b3JRdWVyeUFsZXJ0VHlwZSB9IGZyb20gJy4uLy4uLy4uL2RhdGFkb2d2Mic7XG5pbXBvcnQgeyBDbGFpZG9tZXRlciwgQ2xhaWRvbWV0ZXJQcm9kdWN0IH0gZnJvbSAnLi4vLi4vLi4vcmlvLWNsYWlkb21ldGVyJztcblxuaW50ZXJmYWNlIFVzYWdlU3Bpa2VNb25pdG9yIHtcbiAgaHVtYW5SZWFkYWJsZU5hbWU6IHN0cmluZztcbiAgcXVlcnk6IHN0cmluZztcbiAgYWRkaXRpb25hbE1lc3NhZ2U/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YWRvZ1VzYWdlTW9uaXRvcmluZ1Byb3BzIHtcbiAgcmVhZG9ubHkgc2VydmljZU5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIG5vdCBzdXBwb3J0ZWQgYW55bW9yZS4gdXNlIGBub3RpZmljYXRpb25gIGluc3RlYWQuXG4gICAqL1xuICByZWFkb25seSBhbGVydFR5cGU/OiBEYXRhZG9nQWxlcnRUeXBlO1xuICByZWFkb25seSBub3RpZmljYXRpb24/OiBJTm90aWZpY2F0aW9uO1xuICByZWFkb25seSBvcmdhbml6YXRpb246IERhdGFkb2dPcmdhbml6YXRpb247XG59XG5cbi8qKlxuICogVGhpcyBpcyBhIGJldGEgY29uc3RydWN0IGFuZCBpcyBsaWtlbHkgdG8gaGF2ZSBicmVha2luZyBjaGFuZ2VzLlxuICogVGhlIGNvbnN0cnVjdCBjcmVhdGVzIG1vbml0b3JpbmcgKGJhc2VkIG9uIGFub21hbHkgZGV0ZWN0aW9uKSBmb3IgdGhlIHVzYWdlIG9mIHRoZSBtb3N0IHJlbGV2YW50IERhdGFkb2cgcmVzb3VyY2VzXG4gKi9cbmV4cG9ydCBjbGFzcyBEYXRhZG9nVXNhZ2VNb25pdG9yaW5nIGV4dGVuZHMgY29uc3RydWN0cy5Db25zdHJ1Y3Qge1xuICBjb25zdHJ1Y3RvcihzY29wZTogY29uc3RydWN0cy5Db25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBEYXRhZG9nVXNhZ2VNb25pdG9yaW5nUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgaW5mcmFzdHJ1Y3R1cmVVc2FnZVNwaWtlTW9uaXRvcnM6IFVzYWdlU3Bpa2VNb25pdG9yW10gPSBbXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiAnaW5mcmFzdHJ1Y3R1cmUgaG9zdHMnLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5ob3N0c3sqfScsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBodW1hblJlYWRhYmxlTmFtZTogXCJpbmZyYXN0cnVjdHVyZSBob3N0cyBmb3IgJ3t7Y2hpbGRfb3JnX25hbWUubmFtZX19J1wiLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5ob3N0c3sqfSBieSB7Y2hpbGRfb3JnX25hbWV9JyxcbiAgICAgIH0sXG4gICAgICB7IGh1bWFuUmVhZGFibGVOYW1lOiAnRmFyZ2F0ZSB0YXNrcycsIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuYXBtLmZhcmdhdGVfdGFza19pbnN0YW5jZXsqfScgfSxcbiAgICAgIHsgaHVtYW5SZWFkYWJsZU5hbWU6ICdwcm9maWxlZCBGYXJnYXRlIHRhc2tzJywgcXVlcnk6ICdzdW06ZGF0YWRvZy5wcm9maWxpbmcuZmFyZ2F0ZXsqfScgfSxcbiAgICAgIHtcbiAgICAgICAgaHVtYW5SZWFkYWJsZU5hbWU6ICdjdXN0b20gbWV0cmljcycsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLm1ldHJpY3MuY3VzdG9teyp9JyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiBcImN1c3RvbSBtZXRyaWNzIGZvciAne3tjaGlsZF9vcmdfbmFtZS5uYW1lfX0nXCIsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLm1ldHJpY3MuY3VzdG9teyp9IGJ5IHtjaGlsZF9vcmdfbmFtZX0nLFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgY29uc3QgYWRkaXRpb25hbE1lc3NhZ2VMb2dNYW5hZ2VtZW50Rm9yR2xvYmFsbHlTY29wZWRNb25pdG9ycyA9IGBUYWtlIGEgbG9vayBhdCBodHRwczovLyR7Z2V0T3JnYW5pemF0aW9uVXJsUHJlZml4KFxuICAgICAgcHJvcHMub3JnYW5pemF0aW9uLFxuICAgICl9LmRhdGFkb2docS5ldS9kYXNoL2ludGVncmF0aW9uLzQ2NS9sb2ctbWFuYWdlbWVudC1lc3RpbWF0ZWQtdXNhZ2UgZm9yIG1vcmUgZGV0YWlscy5gO1xuICAgIGNvbnN0IGFkZGl0aW9uYWxNZXNzYWdlTG9nTWFuYWdlbWVudEZvckxvZ0luZGV4U2NvcGVkTW9uaXRvcnMgPSBgVGFrZSBhIGxvb2sgYXQgaHR0cHM6Ly8ke2dldE9yZ2FuaXphdGlvblVybFByZWZpeChcbiAgICAgIHByb3BzLm9yZ2FuaXphdGlvbixcbiAgICApfS5kYXRhZG9naHEuZXUvZGFzaC9pbnRlZ3JhdGlvbi80NjUvbG9nLW1hbmFnZW1lbnQtZXN0aW1hdGVkLXVzYWdlP3RwbF92YXJfZGF0YWRvZ19pbmRleD17e2RhdGFkb2dfaW5kZXgubmFtZX19IGZvciBtb3JlIGRldGFpbHMuYDtcbiAgICBjb25zdCBsb2dNYW5hZ2VtZW50VXNhZ2VTcGlrZU1vbml0b3JzOiBVc2FnZVNwaWtlTW9uaXRvcltdID0gW1xuICAgICAge1xuICAgICAgICBodW1hblJlYWRhYmxlTmFtZTogJ2xvZyBpbmdlc3Rpb24nLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5sb2dzLmluZ2VzdGVkX2J5dGVzeyp9LmFzX2NvdW50KCknLFxuICAgICAgICBhZGRpdGlvbmFsTWVzc2FnZTogYWRkaXRpb25hbE1lc3NhZ2VMb2dNYW5hZ2VtZW50Rm9yR2xvYmFsbHlTY29wZWRNb25pdG9ycyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiBcImxvZyBpbmdlc3Rpb24gZm9yICd7e2RhdGFkb2dfaW5kZXgubmFtZX19J1wiLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5sb2dzLmluZ2VzdGVkX2J5dGVzeyp9IGJ5IHtkYXRhZG9nX2luZGV4fS5hc19jb3VudCgpJyxcbiAgICAgICAgYWRkaXRpb25hbE1lc3NhZ2U6IGFkZGl0aW9uYWxNZXNzYWdlTG9nTWFuYWdlbWVudEZvckxvZ0luZGV4U2NvcGVkTW9uaXRvcnMsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBodW1hblJlYWRhYmxlTmFtZTogJ2xvZyBpbmRleGluZycsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLmxvZ3MuaW5nZXN0ZWRfZXZlbnRze2RhdGFkb2dfaXNfZXhjbHVkZWQ6ZmFsc2V9LmFzX2NvdW50KCknLFxuICAgICAgICBhZGRpdGlvbmFsTWVzc2FnZTogYWRkaXRpb25hbE1lc3NhZ2VMb2dNYW5hZ2VtZW50Rm9yR2xvYmFsbHlTY29wZWRNb25pdG9ycyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiBcImxvZyBpbmRleGluZyBmb3IgJ3t7ZGF0YWRvZ19pbmRleC5uYW1lfX0nXCIsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLmxvZ3MuaW5nZXN0ZWRfZXZlbnRze2RhdGFkb2dfaXNfZXhjbHVkZWQ6ZmFsc2V9IGJ5IHtkYXRhZG9nX2luZGV4fS5hc19jb3VudCgpJyxcbiAgICAgICAgYWRkaXRpb25hbE1lc3NhZ2U6IGFkZGl0aW9uYWxNZXNzYWdlTG9nTWFuYWdlbWVudEZvckxvZ0luZGV4U2NvcGVkTW9uaXRvcnMsXG4gICAgICB9LFxuICAgIF07XG5cbiAgICBjb25zdCBhZGRpdGlvbmFsTWVzc2FnZUFwbUZvckdsb2JhbGx5U2NvcGVkTW9uaXRvcnMgPSBgVGFrZSBhIGxvb2sgYXQgaHR0cHM6Ly8ke2dldE9yZ2FuaXphdGlvblVybFByZWZpeChcbiAgICAgIHByb3BzLm9yZ2FuaXphdGlvbixcbiAgICApfS5kYXRhZG9naHEuZXUvZGFzaC9pbnRlZ3JhdGlvbi80ODkvYXBtLXRyYWNlcy1lc3RpbWF0ZWQtdXNhZ2UgZm9yIG1vcmUgZGV0YWlscy5gO1xuICAgIGNvbnN0IGFkZGl0aW9uYWxNZXNzYWdlQXBtRm9yRW52U2NvcGVkTW9uaXRvcnMgPSBgVGFrZSBhIGxvb2sgYXQgaHR0cHM6Ly8ke2dldE9yZ2FuaXphdGlvblVybFByZWZpeChcbiAgICAgIHByb3BzLm9yZ2FuaXphdGlvbixcbiAgICApfS5kYXRhZG9naHEuZXUvZGFzaC9pbnRlZ3JhdGlvbi80ODkvYXBtLXRyYWNlcy1lc3RpbWF0ZWQtdXNhZ2U/dHBsX3Zhcl9lbnY9e3tlbnYubmFtZX19IGZvciBtb3JlIGRldGFpbHMuYDtcbiAgICBjb25zdCBhcG1Vc2FnZVNwaWtlTW9uaXRvcnM6IFVzYWdlU3Bpa2VNb25pdG9yW10gPSBbXG4gICAgICB7IGh1bWFuUmVhZGFibGVOYW1lOiAnQVBNIGhvc3RzJywgcXVlcnk6ICdzdW06ZGF0YWRvZy5lc3RpbWF0ZWRfdXNhZ2UuYXBtX2hvc3Rzeyp9JyB9LFxuICAgICAge1xuICAgICAgICBodW1hblJlYWRhYmxlTmFtZTogXCJBUE0gaG9zdHMgZm9yICd7e2NoaWxkX29yZ19uYW1lLm5hbWV9fSdcIixcbiAgICAgICAgcXVlcnk6ICdzdW06ZGF0YWRvZy5lc3RpbWF0ZWRfdXNhZ2UuYXBtX2hvc3Rzeyp9IGJ5IHtjaGlsZF9vcmdfbmFtZX0nLFxuICAgICAgICBhZGRpdGlvbmFsTWVzc2FnZTogYWRkaXRpb25hbE1lc3NhZ2VBcG1Gb3JHbG9iYWxseVNjb3BlZE1vbml0b3JzLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaHVtYW5SZWFkYWJsZU5hbWU6ICdzcGFuIGluZ2VzdGlvbicsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLmFwbS5pbmdlc3RlZF9ieXRlc3sqfS5hc19jb3VudCgpJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiBcInNwYW4gaW5nZXN0aW9uIGZvciAne3tlbnYubmFtZX19J1wiLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5hcG0uaW5nZXN0ZWRfYnl0ZXN7Kn0gYnkge2Vudn0uYXNfY291bnQoKScsXG4gICAgICAgIGFkZGl0aW9uYWxNZXNzYWdlOiBhZGRpdGlvbmFsTWVzc2FnZUFwbUZvckVudlNjb3BlZE1vbml0b3JzLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaHVtYW5SZWFkYWJsZU5hbWU6ICdzcGFuIGluZGV4aW5nJyxcbiAgICAgICAgcXVlcnk6ICdzdW06ZGF0YWRvZy5lc3RpbWF0ZWRfdXNhZ2UuYXBtLmluZGV4ZWRfc3BhbnN7Kn0uYXNfY291bnQoKScsXG4gICAgICAgIGFkZGl0aW9uYWxNZXNzYWdlOiBhZGRpdGlvbmFsTWVzc2FnZUFwbUZvckdsb2JhbGx5U2NvcGVkTW9uaXRvcnMsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBodW1hblJlYWRhYmxlTmFtZTogXCJzcGFuIGluZGV4aW5nIGZvciAne3tlbnYubmFtZX19J1wiLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5hcG0uaW5kZXhlZF9zcGFuc3sqfSBieSB7ZW52fS5hc19jb3VudCgpJyxcbiAgICAgICAgYWRkaXRpb25hbE1lc3NhZ2U6IGFkZGl0aW9uYWxNZXNzYWdlQXBtRm9yRW52U2NvcGVkTW9uaXRvcnMsXG4gICAgICB9LFxuICAgIF07XG5cbiAgICBjb25zdCBzeW50aGV0aWNVc2FnZVNwaWtlTW9uaXRvcnM6IFVzYWdlU3Bpa2VNb25pdG9yW10gPSBbXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiAnU3ludGhldGljIEFQSSB0ZXN0cycsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLnN5bnRoZXRpY3MuYXBpX3Rlc3RfcnVuc3sqfS5hc19jb3VudCgpJyxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIGNvbnN0IHNlcnZlcmxlc3NVc2FnZVNwaWtlTW9uaXRvcnM6IFVzYWdlU3Bpa2VNb25pdG9yW10gPSBbXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiAnc2VydmVybGVzcyBmdW5jdGlvbnMnLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5zZXJ2ZXJsZXNzLmF3c19sYW1iZGFfZnVuY3Rpb25zeyp9JyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiBcInNlcnZlcmxlc3MgZnVuY3Rpb25zIGZvciAne3tjaGlsZF9vcmdfbmFtZS5uYW1lfX0nXCIsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLnNlcnZlcmxlc3MuYXdzX2xhbWJkYV9mdW5jdGlvbnN7Kn0gYnkge2NoaWxkX29yZ19uYW1lfScsXG4gICAgICB9LFxuICAgIF07XG5cbiAgICBjb25zdCBub3RpZmljYXRpb24gPSBwcm9wcy5ub3RpZmljYXRpb24gPz8gbmV3IERlZmF1bHRTbGFja05vdGlmaWNhdGlvbigpO1xuICAgIGZvciAoY29uc3QgdXNhZ2VTcGlrZU1vbml0b3Igb2YgKFtdIGFzIFVzYWdlU3Bpa2VNb25pdG9yW10pLmNvbmNhdChcbiAgICAgIGluZnJhc3RydWN0dXJlVXNhZ2VTcGlrZU1vbml0b3JzLFxuICAgICAgbG9nTWFuYWdlbWVudFVzYWdlU3Bpa2VNb25pdG9ycyxcbiAgICAgIGFwbVVzYWdlU3Bpa2VNb25pdG9ycyxcbiAgICAgIHNlcnZlcmxlc3NVc2FnZVNwaWtlTW9uaXRvcnMsXG4gICAgICBzeW50aGV0aWNVc2FnZVNwaWtlTW9uaXRvcnMsXG4gICAgKSkge1xuICAgICAgdGhpcy5jcmVhdGVBbm9tYWx5TW9uaXRvckZvclNwaWtlcyhwcm9wcy5zZXJ2aWNlTmFtZSwgdXNhZ2VTcGlrZU1vbml0b3IsIG5vdGlmaWNhdGlvbik7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLm9yZ2FuaXphdGlvbiA9PT0gJ0VVJykge1xuICAgICAgYWRkQ2xhaWRvbWV0ZXIodGhpcyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVBbm9tYWx5TW9uaXRvckZvclNwaWtlcyhcbiAgICBzZXJ2aWNlTmFtZTogc3RyaW5nLFxuICAgIHVzYWdlU3Bpa2VNb25pdG9yOiBVc2FnZVNwaWtlTW9uaXRvcixcbiAgICBub3RpZmljYXRpb246IElOb3RpZmljYXRpb24sXG4gICk6IERhdGFkb2dNb25pdG9yIHtcbiAgICByZXR1cm4gbmV3IERhdGFkb2dNb25pdG9yKHRoaXMsIHVzYWdlU3Bpa2VNb25pdG9yLmh1bWFuUmVhZGFibGVOYW1lLCB7XG4gICAgICBuYW1lOiBgJHt1c2FnZVNwaWtlTW9uaXRvci5odW1hblJlYWRhYmxlTmFtZX0gc3Bpa2VgLFxuICAgICAgc2VydmljZU5hbWUsXG4gICAgICBub3RpZmljYXRpb24sXG4gICAgICBtZXNzYWdlOiBgW1A0XSAke3VzYWdlU3Bpa2VNb25pdG9yLmh1bWFuUmVhZGFibGVOYW1lfSBhcmUgZ2V0dGluZyBvdXQtb2YtY29udHJvbC4gJHtcbiAgICAgICAgdXNhZ2VTcGlrZU1vbml0b3IuYWRkaXRpb25hbE1lc3NhZ2UgPz8gJydcbiAgICAgIH1gLFxuICAgICAgbW9uaXRvclR5cGU6IERhdGFkb2dNb25pdG9yUXVlcnlBbGVydFR5cGUuUVVFUllfQUxFUlQsXG4gICAgICBxdWVyeTogYGF2ZyhsYXN0XzEyaCk6YW5vbWFsaWVzKCR7dXNhZ2VTcGlrZU1vbml0b3IucXVlcnl9LCAnYWdpbGUnLCAzLCBkaXJlY3Rpb249J2Fib3ZlJywgaW50ZXJ2YWw9MTIwLCBhbGVydF93aW5kb3c9J2xhc3RfMzBtJywgc2Vhc29uYWxpdHk9J3dlZWtseScsIHRpbWV6b25lPSdldXJvcGUvYmVybGluJywgY291bnRfZGVmYXVsdF96ZXJvPSd0cnVlJykgPj0gMWAsXG4gICAgICBvcHRpb25PdmVycmlkZXM6IHtcbiAgICAgICAgaW5jbHVkZVRhZ3M6IGZhbHNlLFxuICAgICAgICBub3RpZnlOb0RhdGE6IGZhbHNlLFxuICAgICAgICB0aHJlc2hvbGRXaW5kb3dzOiB7XG4gICAgICAgICAgdHJpZ2dlcldpbmRvdzogJ2xhc3RfMzBtJyxcbiAgICAgICAgICByZWNvdmVyeVdpbmRvdzogJ2xhc3RfMTVtJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gYWRkQ2xhaWRvbWV0ZXIoc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0KSB7XG4gIGNvbnN0IFtmZWF0dXJlLCBwYWNrYWdlTmFtZV0gPSBfX2Rpcm5hbWUuc3BsaXQocGF0aC5zZXApLnJldmVyc2UoKTtcbiAgbmV3IENsYWlkb21ldGVyKHNjb3BlLCAnQ2xhaWRvbWV0ZXInLCB7XG4gICAgcHJvZHVjdDogQ2xhaWRvbWV0ZXJQcm9kdWN0LkNES19DT05UUklCVVRJT04sXG4gICAgcGFja2FnZU5hbWUsXG4gICAgZmVhdHVyZSxcbiAgICB2ZXJzaW9uOiAnMC4wLjgnLFxuICB9KTtcbn1cbiJdfQ==
@@ -118,4 +118,4 @@ const datadogDashboardDownloader = (app) => {
118
118
  return Promise.resolve();
119
119
  };
120
120
  exports.datadogDashboardDownloader = datadogDashboardDownloader;
121
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWRvZy1kYXNoYm9hcmQtZG93bmxvYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb250cmlidXRpb25zL3RlYW0tdHJhbnNwb3J0LXR3by9kYXRhZG9nL2RhdGFkb2ctZGFzaGJvYXJkLWRvd25sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUJBQXlCO0FBQ3pCLDBFQUFpRztBQUNqRyxvREFBcUU7QUFDckUsb0VBQXlEO0FBR3pELE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQztBQUM3QixNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUM7QUFDNUIsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDO0FBRTVCOzs7Ozs7OztHQVFHO0FBQ0ksTUFBTSxrQkFBa0IsR0FBRyxLQUFLLEVBQUUsV0FBZ0IsRUFBRSxFQUFFO0lBQzNELE9BQU8sQ0FBQyxHQUFHLENBQUMsMkJBQTJCLENBQUMsQ0FBQztJQUN6QyxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7SUFFckMsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFO1FBQy9ELElBQUksZUFBZSxHQUFHLEtBQUssQ0FBQztRQUM1QixNQUFNLHdCQUF3QixHQUE4QixFQUFFLENBQUM7UUFDL0QsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFO1lBQy9FLElBQUssUUFBZ0IsQ0FBQyxJQUFJLEtBQUssZ0NBQWdDLEVBQUU7Z0JBQy9ELE1BQU0sUUFBUSxHQUFJLFFBQWdCLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQztnQkFDbEQsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFD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QUMsQ0FBQyxRQUFRLENBQUMsc0JBQXNCLENBQUMsRUFBRTtRQUNuRixPQUFPLElBQUEsMEJBQWtCLEVBQUMsR0FBRyxDQUFDO2FBQzNCLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7YUFDN0QsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLCtCQUErQixFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7S0FDNUU7SUFDRCxPQUFPLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUMzQixDQUFDLENBQUM7QUFSVyxRQUFBLDBCQUEwQiw4QkFRckMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgeyBDbG91ZEZvcm1hdGlvbkNsaWVudCwgTGlzdFN0YWNrUmVzb3VyY2VzQ29tbWFuZCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1jbG91ZGZvcm1hdGlvbic7XG5pbXBvcnQgeyBHZXRQYXJhbWV0ZXJDb21tYW5kLCBTU01DbGllbnQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtc3NtJztcbmltcG9ydCB7IGNsaWVudCwgdjEgfSBmcm9tICdAZGF0YWRvZy9kYXRhZG9nLWFwaS1jbGllbnQnO1xuaW1wb3J0IHsgQXBwIH0gZnJvbSAnYXdzLWNkay1saWInO1xuXG5jb25zdCBDTElfR1JFRU4gPSAnXFx4MWJbMzJtJztcbmNvbnN0IENMSV9CTFVFID0gJ1xceDFiWzM0bSc7XG5jb25zdCBDTElfUkVTRVQgPSAnXFx4MWJbMG0nO1xuXG4vKipcbiAqIERvd25sb2FkcyBkYXNoYm9hcmRzIGZyb20gRGF0YWRvZyBhbmQgc2F2ZXMgdGhlbSB0byB0aGUgbG9jYWwgZmlsZXN5c3RlbS5cbiAqIFJ1biB0aGlzIGZ1bmN0aW9uIHdpdGggYSByZWZlcmVuY2UgdG8geW91ciBDREsgYXBwbGljYXRpb24gdG8gZG93bmxvYWQgZGFzaGJvYXJkcyBkZWZpbmVkIHZpYSB7QGxpbmsgRG93bmxvYWRhYmxlRGF0YWRvZ0Rhc2hib2FyZH0gYW5kIHVwZGF0ZVxuICogdGhlIGV4aXN0aW5nIGRhc2hib2FyZCBkZWZpbml0aW9uIGZpbGVzIGluIHBsYWNlLlxuICpcbiAqIFNlZSB7QGxpbmsgZGF0YWRvZ0Rhc2hib2FyZERvd25sb2FkZXJ9IGZvciBhIGNvbnZlbmllbmNlIHdyYXBwZXIgdGhhdCBjYW4gYmUgdXNlZCBpbiB5b3VyIENESyBlbnRyeXBvaW50IHNjcmlwdC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gQ0RLIGFwcGxpY2F0aW9uIGluIGVudHJ5cG9pbnRcbiAqL1xuZXhwb3J0IGNvbnN0IGRvd25sb2FkRGFzaGJvYXJkcyA9IGFzeW5jIChhcHBsaWNhdGlvbjogQXBwKSA9PiB7XG4gIGNvbnNvbGUubG9nKCdEb3dubG9hZGluZyBkYXNoYm9hcmRzLi4uJyk7XG4gIGNvbnN0IGFzc2VtYmx5ID0gYXBwbGljYXRpb24uc3ludGgoKTtcblxuICBhd2FpdCBQcm9taXNlLmFsbChhc3NlbWJseS5zdGFja3NSZWN1cnNpdmVseS5tYXAoYXN5bmMgKHN0YWNrKSA9PiB7XG4gICAgbGV0IGlzU3RhY2tSZWxldmFudCA9IGZhbHNlO1xuICAgIGNvbnN0IGRhc2hib2FyZFBhdGhCeUxvZ2ljYWxJZDogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xuICAgIE9iamVjdC5lbnRyaWVzKHN0YWNrLnRlbXBsYXRlLlJlc291cmNlcyB8fCBbXSkuZm9yRWFjaCgoW2xvZ2ljYWxJZCwgcmVzb3VyY2VdKSA9PiB7XG4gICAgICBpZiAoKHJlc291cmNlIGFzIGFueSkuVHlwZSA9PT0gJ0RhdGFkb2c6OkRhc2hib2FyZHM6OkRhc2hib2FyZCcpIHtcbiAgICAgICAgY29uc3QgbWV0YWRhdGEgPSAocmVzb3VyY2UgYXMgYW55KS5NZXRhZGF0YSB8fCB7fTtcbiAgICAgICAgY29uc3QgZGFzaGJvYXJkUGF0aCA9IG1ldGFkYXRhWydyaW8tZGFzaGJvYXJkLXBhdGgnXTtcbiAgICAgICAgaWYgKGRhc2hib2FyZFBhdGgpIHtcbiAgICAgICAgICBkYXNoYm9hcmRQYXRoQnlMb2dpY2FsSWRbbG9naWNhbElkXSA9IGRhc2hib2FyZFBhdGg7XG4gICAgICAgICAgaXNTdGFja1JlbGV2YW50ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKCFpc1N0YWNrUmVsZXZhbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBkYXRhZG9nQ29uZmlndXJhdGlvbiA9IGF3YWl0IGdldERhdGFkb2dDb25maWd1cmF0aW9uKCk7XG5cbiAgICBjb25zdCBjbG91ZEZvcm1hdGlvbkNsaWVudCA9IG5ldyBDbG91ZEZvcm1hdGlvbkNsaWVudCgpO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xvdWRGb3JtYXRpb25DbGllbnQuc2VuZChuZXcgTGlzdFN0YWNrUmVzb3VyY2VzQ29tbWFuZCh7IFN0YWNrTmFtZTogc3RhY2suc3RhY2tOYW1lIH0pKTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbCgocmVzcG9uc2UuU3RhY2tSZXNvdXJjZVN1bW1hcmllcyB8fCBbXSlcbiAgICAgIC5tYXAoYXN5bmMgKHJlc291cmNlKSA9PiB7XG4gICAgICAgIGlmIChyZXNvdXJjZS5SZXNvdXJjZVR5cGUgPT09ICdEYXRhZG9nOjpEYXNoYm9hcmRzOjpEYXNoYm9hcmQnICYmIHJlc291cmNlLkxvZ2ljYWxSZXNvdXJjZUlkKSB7XG4gICAgICAgICAgY29uc3QgZGFzaGJvYXJkUGF0aCA9IGRhc2hib2FyZFBhdGhCeUxvZ2ljYWxJZFtyZXNvdXJjZS5Mb2dpY2FsUmVzb3VyY2VJZF07XG4gICAgICAgICAgaWYgKGRhc2hib2FyZFBhdGgpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBEb3dubG9hZGluZyAke0NMSV9HUkVFTn0ke3Jlc291cmNlLkxvZ2ljYWxSZXNvdXJjZUlkfSR7Q0xJX1JFU0VUfSAoJHtyZXNvdXJjZS5QaHlzaWNhbFJlc291cmNlSWR9KSB0byAke0NMSV9CTFVFfSR7ZGFzaGJvYXJkUGF0aH0ke0NMSV9SRVNFVH1gKTtcbiAgICAgICAgICAgIGNvbnN0IGRhc2hib2FyZCA9IGF3YWl0IGRvd25sb2FkRGFzaGJvYXJkVmlhRGF0YWRvZ0FwaShkYXRhZG9nQ29uZmlndXJhdGlvbiwgcmVzb3VyY2UuUGh5c2ljYWxSZXNvdXJjZUlkIGFzIHN0cmluZyk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnU2F2aW5nIC4uLicpO1xuICAgICAgICAgICAgZnMud3JpdGVGaWxlU3luYyhkYXNoYm9hcmRQYXRoLCBwcmV0dGlmeURhc2hib2FyZChkYXNoYm9hcmQpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgfSkpO1xufTtcblxuY29uc3QgZ2V0U3NtUGFyYW1ldGVyID0gYXN5bmMgKHBhcmFtZXRlck5hbWU6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiA9PiB7XG4gIGNvbnN0IHNzbUNsaWVudCA9IG5ldyBTU01DbGllbnQoKTtcbiAgY29uc3QgY29tbWFuZCA9IG5ldyBHZXRQYXJhbWV0ZXJDb21tYW5kKHsgTmFtZTogcGFyYW1ldGVyTmFtZSB9KTtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBzc21DbGllbnQuc2VuZChjb21tYW5kKTtcbiAgcmV0dXJuIHJlc3BvbnNlLlBhcmFtZXRlcj8uVmFsdWUgYXMgc3RyaW5nO1xufTtcblxuY29uc3QgZ2V0RGF0YWRvZ0NvbmZpZ3VyYXRpb24gPSBhc3luYyAoKTogUHJvbWlzZTx7IGFwaUtleTogc3RyaW5nOyBhcHBLZXk6IHN0cmluZzsgc2l0ZTogc3RyaW5nIH0+ID0+IHtcbiAgY29uc3QgYXBpS2V5ID0gYXdhaXQgZ2V0U3NtUGFyYW1ldGVyKCcvcmlvL2NvbmZpZy9kYXRhZG9nLWludGVncmF0aW9uL2FwaS1rZXknKTtcbiAgY29uc3QgYXBwS2V5ID0gYXdhaXQgZ2V0U3NtUGFyYW1ldGVyKCcvcmlvL2NvbmZpZy9kYXRhZG9nLWludGVncmF0aW9uL2FwcGxpY2F0aW9uLWtleScpO1xuICBjb25zdCBzaXRlID0gYXdhaXQgZ2V0U3NtUGFyYW1ldGVyKCcvcmlvL2NvbmZpZy9kYXRhZG9nLWludGVncmF0aW9uL3NpdGUnKTtcbiAgcmV0dXJuIHtcbiAgICBhcGlLZXksXG4gICAgYXBwS2V5LFxuICAgIHNpdGUsXG4gIH07XG59O1xuXG5jb25zdCBkb3dubG9hZERhc2hib2FyZFZpYURhdGFkb2dBcGkgPSBhc3luYyAoY29uZmlnOiB7XG4gIGFwaUtleTogc3RyaW5nO1xuICBhcHBLZXk6IHN0cmluZztcbiAgc2l0ZTogc3RyaW5nO1xufSwgZGFzaGJvYXJkSWQ6IHN0cmluZyk6IFByb21pc2U8djEuRGFzaGJvYXJkPiA9PiB7XG5cbiAgY29uc3QgY29uZmlndXJhdGlvbiA9IGNsaWVudC5jcmVhdGVDb25maWd1cmF0aW9uKHtcbiAgICBhdXRoTWV0aG9kczoge1xuICAgICAgYXBpS2V5QXV0aDogY29uZmlnLmFwaUtleSxcbiAgICAgIGFwcEtleUF1dGg6IGNvbmZpZy5hcHBLZXksXG4gICAgfSxcbiAgfSk7XG4gIGNvbmZpZ3VyYXRpb24uc2V0U2VydmVyVmFyaWFibGVzKHtcbiAgICBzaXRlOiBjb25maWcuc2l0ZSxcbiAgfSk7XG4gIGNvbnN0IGFwaUluc3RhbmNlID0gbmV3IHYxLkRhc2hib2FyZHNBcGkoY29uZmlndXJhdGlvbik7XG4gIHJldHVybiBhcGlJbnN0YW5jZS5nZXREYXNoYm9hcmQoe1xuICAgIGRhc2hib2FyZElkOiBkYXNoYm9hcmRJZCxcbiAgfSk7XG59O1xuXG5jb25zdCBwcmV0dGlmeURhc2hib2FyZCA9IChkYXNoYm9hcmQ6IHYxLkRhc2hib2FyZCk6IHN0cmluZyA9PiB7XG4gIC8vIGRyb3Aga2V5cyB0aGF0IGFyZSBub3QgcHJlc2VudCBpbiB0aGUgb3V0cHV0IHdoZW4gdXNpbmcgdGhlIFwiZXhwb3J0XCIgYnV0dG9uIGluIHRoZSBHVUlcbiAgZGVsZXRlIGRhc2hib2FyZC5pZDtcbiAgZGVsZXRlIGRhc2hib2FyZC5pc1JlYWRPbmx5O1xuICBkZWxldGUgZGFzaGJvYXJkLmF1dGhvckhhbmRsZTtcbiAgZGVsZXRlIGRhc2hib2FyZC5hdXRob3JOYW1lO1xuICBkZWxldGUgZGFzaGJvYXJkLnVybDtcbiAgZGVsZXRlIGRhc2hib2FyZC5jcmVhdGVkQXQ7XG4gIGRlbGV0ZSBkYXNoYm9hcmQubW9kaWZpZWRBdDtcbiAgZGVsZXRlIGRhc2hib2FyZC5yZXN0cmljdGVkUm9sZXM7XG5cbiAgY29uc3Qgc2VyaWFsaXplZERhc2hib2FyZCA9IHYxLk9iamVjdFNlcmlhbGl6ZXIuc2VyaWFsaXplKGRhc2hib2FyZCwgJ0Rhc2hib2FyZCcsICcnKTtcbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHNlcmlhbGl6ZWREYXNoYm9hcmQsIG51bGwsIDIpO1xufTtcblxuLyoqXG4gKiBEb3dubG9hZHMgZGFzaGJvYXJkcyBmcm9tIERhdGFkb2cgYW5kIHNhdmVzIHRoZW0gdG8gdGhlIGxvY2FsIGZpbGVzeXN0ZW0uXG4gKiBDYWxsIHRoaXMgd3JhcHBlciB3aXRoIHlvdXIgQ0RLIGFwcCBpbiB5b3VyIGVudHJ5cG9pbnQgc2NyaXB0LlxuICpcbiAqIFJ1biBgY2RrIHN5bnRoYCB3aXRoIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZVxuICogYERPV05MT0FEX0RBU0hCT0FSRFM9dHJ1ZWAsIHRvIGRvd25sb2FkIGRhc2hib2FyZHMgZGVmaW5lZCB2aWEge0BsaW5rIERvd25sb2FkYWJsZURhdGFkb2dEYXNoYm9hcmR9IGFuZCB1cGRhdGVcbiAqIHRoZSBleGlzdGluZyBkYXNoYm9hcmQgZGVmaW5pdGlvbiBmaWxlcyBpbiBwbGFjZS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gQ0RLIGFwcGxpY2F0aW9uIGluIGVudHJ5cG9pbnRcbiAqL1xuZXhwb3J0IGNvbnN0IGRhdGFkb2dEYXNoYm9hcmREb3dubG9hZGVyID0gKGFwcDogQXBwKSA9PiB7XG4gIGNvbnN0IGRvd25sb2FkRGFzaGJvYXJkc0ZsYWcgPSBwcm9jZXNzLmVudi5ET1dOTE9BRF9EQVNIQk9BUkRTPy50b0xvd2VyQ2FzZSgpO1xuICBpZiAoZG93bmxvYWREYXNoYm9hcmRzRmxhZyAmJiBbJ3RydWUnLCAnMScsICd5ZXMnXS5pbmNsdWRlcyhkb3dubG9hZERhc2hib2FyZHNGbGFnKSkge1xuICAgIHJldHVybiBkb3dubG9hZERhc2hib2FyZHMoYXBwKVxuICAgICAgLnRoZW4oKCkgPT4gY29uc29sZS5sb2coJ0Rhc2hib2FyZHMgZG93bmxvYWRlZCBzdWNjZXNzZnVsbHknKSlcbiAgICAgIC5jYXRjaCgoZXJyb3IpID0+IGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBkb3dubG9hZCBkYXNoYm9hcmRzJywgZXJyb3IpKTtcbiAgfVxuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG59O1xuIl19
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWRvZy1kYXNoYm9hcmQtZG93bmxvYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb250cmlidXRpb25zL3RlYW0tdHJhbnNwb3J0LXR3by9kYXRhZG9nL2RhdGFkb2ctZGFzaGJvYXJkLWRvd25sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUJBQXlCO0FBQ3pCLDBFQUFpRztBQUNqRyxvREFBcUU7QUFDckUsb0VBQXlEO0FBR3pELE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQztBQUM3QixNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUM7QUFDNUIsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDO0FBRTVCOzs7Ozs7OztHQVFHO0FBQ0ksTUFBTSxrQkFBa0IsR0FBRyxLQUFLLEVBQUUsV0FBZ0IsRUFBRSxFQUFFO0lBQzNELE9BQU8sQ0FBQyxHQUFHLENBQUMsMkJBQTJCLENBQUMsQ0FBQztJQUN6QyxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7SUFFckMsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFO1FBQy9ELElBQUksZUFBZSxHQUFHLEtBQUssQ0FBQztRQUM1QixNQUFNLHdCQUF3QixHQUE4QixFQUFFLENBQUM7UUFDL0QsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFO1lBQy9FLElBQUssUUFBZ0IsQ0FBQyxJQUFJLEtBQUssZ0NBQWdDLEVBQUUsQ0FBQztnQkFDaEUsTUFBTSxRQUFRLEdBQUksUUFBZ0IsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDO2dCQUNsRCxNQUFNLGFBQWEsR0FBRyxRQUFR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LElBQUksc0JBQXNCLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLENBQUM7UUFDcEYsT0FBTyxJQUFBLDBCQUFrQixFQUFDLEdBQUcsQ0FBQzthQUMzQixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO2FBQzdELEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQywrQkFBK0IsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFDRCxPQUFPLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUMzQixDQUFDLENBQUM7QUFSVyxRQUFBLDBCQUEwQiw4QkFRckMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgeyBDbG91ZEZvcm1hdGlvbkNsaWVudCwgTGlzdFN0YWNrUmVzb3VyY2VzQ29tbWFuZCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1jbG91ZGZvcm1hdGlvbic7XG5pbXBvcnQgeyBHZXRQYXJhbWV0ZXJDb21tYW5kLCBTU01DbGllbnQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtc3NtJztcbmltcG9ydCB7IGNsaWVudCwgdjEgfSBmcm9tICdAZGF0YWRvZy9kYXRhZG9nLWFwaS1jbGllbnQnO1xuaW1wb3J0IHsgQXBwIH0gZnJvbSAnYXdzLWNkay1saWInO1xuXG5jb25zdCBDTElfR1JFRU4gPSAnXFx4MWJbMzJtJztcbmNvbnN0IENMSV9CTFVFID0gJ1xceDFiWzM0bSc7XG5jb25zdCBDTElfUkVTRVQgPSAnXFx4MWJbMG0nO1xuXG4vKipcbiAqIERvd25sb2FkcyBkYXNoYm9hcmRzIGZyb20gRGF0YWRvZyBhbmQgc2F2ZXMgdGhlbSB0byB0aGUgbG9jYWwgZmlsZXN5c3RlbS5cbiAqIFJ1biB0aGlzIGZ1bmN0aW9uIHdpdGggYSByZWZlcmVuY2UgdG8geW91ciBDREsgYXBwbGljYXRpb24gdG8gZG93bmxvYWQgZGFzaGJvYXJkcyBkZWZpbmVkIHZpYSB7QGxpbmsgRG93bmxvYWRhYmxlRGF0YWRvZ0Rhc2hib2FyZH0gYW5kIHVwZGF0ZVxuICogdGhlIGV4aXN0aW5nIGRhc2hib2FyZCBkZWZpbml0aW9uIGZpbGVzIGluIHBsYWNlLlxuICpcbiAqIFNlZSB7QGxpbmsgZGF0YWRvZ0Rhc2hib2FyZERvd25sb2FkZXJ9IGZvciBhIGNvbnZlbmllbmNlIHdyYXBwZXIgdGhhdCBjYW4gYmUgdXNlZCBpbiB5b3VyIENESyBlbnRyeXBvaW50IHNjcmlwdC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gQ0RLIGFwcGxpY2F0aW9uIGluIGVudHJ5cG9pbnRcbiAqL1xuZXhwb3J0IGNvbnN0IGRvd25sb2FkRGFzaGJvYXJkcyA9IGFzeW5jIChhcHBsaWNhdGlvbjogQXBwKSA9PiB7XG4gIGNvbnNvbGUubG9nKCdEb3dubG9hZGluZyBkYXNoYm9hcmRzLi4uJyk7XG4gIGNvbnN0IGFzc2VtYmx5ID0gYXBwbGljYXRpb24uc3ludGgoKTtcblxuICBhd2FpdCBQcm9taXNlLmFsbChhc3NlbWJseS5zdGFja3NSZWN1cnNpdmVseS5tYXAoYXN5bmMgKHN0YWNrKSA9PiB7XG4gICAgbGV0IGlzU3RhY2tSZWxldmFudCA9IGZhbHNlO1xuICAgIGNvbnN0IGRhc2hib2FyZFBhdGhCeUxvZ2ljYWxJZDogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xuICAgIE9iamVjdC5lbnRyaWVzKHN0YWNrLnRlbXBsYXRlLlJlc291cmNlcyB8fCBbXSkuZm9yRWFjaCgoW2xvZ2ljYWxJZCwgcmVzb3VyY2VdKSA9PiB7XG4gICAgICBpZiAoKHJlc291cmNlIGFzIGFueSkuVHlwZSA9PT0gJ0RhdGFkb2c6OkRhc2hib2FyZHM6OkRhc2hib2FyZCcpIHtcbiAgICAgICAgY29uc3QgbWV0YWRhdGEgPSAocmVzb3VyY2UgYXMgYW55KS5NZXRhZGF0YSB8fCB7fTtcbiAgICAgICAgY29uc3QgZGFzaGJvYXJkUGF0aCA9IG1ldGFkYXRhWydyaW8tZGFzaGJvYXJkLXBhdGgnXTtcbiAgICAgICAgaWYgKGRhc2hib2FyZFBhdGgpIHtcbiAgICAgICAgICBkYXNoYm9hcmRQYXRoQnlMb2dpY2FsSWRbbG9naWNhbElkXSA9IGRhc2hib2FyZFBhdGg7XG4gICAgICAgICAgaXNTdGFja1JlbGV2YW50ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKCFpc1N0YWNrUmVsZXZhbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBkYXRhZG9nQ29uZmlndXJhdGlvbiA9IGF3YWl0IGdldERhdGFkb2dDb25maWd1cmF0aW9uKCk7XG5cbiAgICBjb25zdCBjbG91ZEZvcm1hdGlvbkNsaWVudCA9IG5ldyBDbG91ZEZvcm1hdGlvbkNsaWVudCgpO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xvdWRGb3JtYXRpb25DbGllbnQuc2VuZChuZXcgTGlzdFN0YWNrUmVzb3VyY2VzQ29tbWFuZCh7IFN0YWNrTmFtZTogc3RhY2suc3RhY2tOYW1lIH0pKTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbCgocmVzcG9uc2UuU3RhY2tSZXNvdXJjZVN1bW1hcmllcyB8fCBbXSlcbiAgICAgIC5tYXAoYXN5bmMgKHJlc291cmNlKSA9PiB7XG4gICAgICAgIGlmIChyZXNvdXJjZS5SZXNvdXJjZVR5cGUgPT09ICdEYXRhZG9nOjpEYXNoYm9hcmRzOjpEYXNoYm9hcmQnICYmIHJlc291cmNlLkxvZ2ljYWxSZXNvdXJjZUlkKSB7XG4gICAgICAgICAgY29uc3QgZGFzaGJvYXJkUGF0aCA9IGRhc2hib2FyZFBhdGhCeUxvZ2ljYWxJZFtyZXNvdXJjZS5Mb2dpY2FsUmVzb3VyY2VJZF07XG4gICAgICAgICAgaWYgKGRhc2hib2FyZFBhdGgpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBEb3dubG9hZGluZyAke0NMSV9HUkVFTn0ke3Jlc291cmNlLkxvZ2ljYWxSZXNvdXJjZUlkfSR7Q0xJX1JFU0VUfSAoJHtyZXNvdXJjZS5QaHlzaWNhbFJlc291cmNlSWR9KSB0byAke0NMSV9CTFVFfSR7ZGFzaGJvYXJkUGF0aH0ke0NMSV9SRVNFVH1gKTtcbiAgICAgICAgICAgIGNvbnN0IGRhc2hib2FyZCA9IGF3YWl0IGRvd25sb2FkRGFzaGJvYXJkVmlhRGF0YWRvZ0FwaShkYXRhZG9nQ29uZmlndXJhdGlvbiwgcmVzb3VyY2UuUGh5c2ljYWxSZXNvdXJjZUlkIGFzIHN0cmluZyk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnU2F2aW5nIC4uLicpO1xuICAgICAgICAgICAgZnMud3JpdGVGaWxlU3luYyhkYXNoYm9hcmRQYXRoLCBwcmV0dGlmeURhc2hib2FyZChkYXNoYm9hcmQpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgfSkpO1xufTtcblxuY29uc3QgZ2V0U3NtUGFyYW1ldGVyID0gYXN5bmMgKHBhcmFtZXRlck5hbWU6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiA9PiB7XG4gIGNvbnN0IHNzbUNsaWVudCA9IG5ldyBTU01DbGllbnQoKTtcbiAgY29uc3QgY29tbWFuZCA9IG5ldyBHZXRQYXJhbWV0ZXJDb21tYW5kKHsgTmFtZTogcGFyYW1ldGVyTmFtZSB9KTtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBzc21DbGllbnQuc2VuZChjb21tYW5kKTtcbiAgcmV0dXJuIHJlc3BvbnNlLlBhcmFtZXRlcj8uVmFsdWUgYXMgc3RyaW5nO1xufTtcblxuY29uc3QgZ2V0RGF0YWRvZ0NvbmZpZ3VyYXRpb24gPSBhc3luYyAoKTogUHJvbWlzZTx7IGFwaUtleTogc3RyaW5nOyBhcHBLZXk6IHN0cmluZzsgc2l0ZTogc3RyaW5nIH0+ID0+IHtcbiAgY29uc3QgYXBpS2V5ID0gYXdhaXQgZ2V0U3NtUGFyYW1ldGVyKCcvcmlvL2NvbmZpZy9kYXRhZG9nLWludGVncmF0aW9uL2FwaS1rZXknKTtcbiAgY29uc3QgYXBwS2V5ID0gYXdhaXQgZ2V0U3NtUGFyYW1ldGVyKCcvcmlvL2NvbmZpZy9kYXRhZG9nLWludGVncmF0aW9uL2FwcGxpY2F0aW9uLWtleScpO1xuICBjb25zdCBzaXRlID0gYXdhaXQgZ2V0U3NtUGFyYW1ldGVyKCcvcmlvL2NvbmZpZy9kYXRhZG9nLWludGVncmF0aW9uL3NpdGUnKTtcbiAgcmV0dXJuIHtcbiAgICBhcGlLZXksXG4gICAgYXBwS2V5LFxuICAgIHNpdGUsXG4gIH07XG59O1xuXG5jb25zdCBkb3dubG9hZERhc2hib2FyZFZpYURhdGFkb2dBcGkgPSBhc3luYyAoY29uZmlnOiB7XG4gIGFwaUtleTogc3RyaW5nO1xuICBhcHBLZXk6IHN0cmluZztcbiAgc2l0ZTogc3RyaW5nO1xufSwgZGFzaGJvYXJkSWQ6IHN0cmluZyk6IFByb21pc2U8djEuRGFzaGJvYXJkPiA9PiB7XG5cbiAgY29uc3QgY29uZmlndXJhdGlvbiA9IGNsaWVudC5jcmVhdGVDb25maWd1cmF0aW9uKHtcbiAgICBhdXRoTWV0aG9kczoge1xuICAgICAgYXBpS2V5QXV0aDogY29uZmlnLmFwaUtleSxcbiAgICAgIGFwcEtleUF1dGg6IGNvbmZpZy5hcHBLZXksXG4gICAgfSxcbiAgfSk7XG4gIGNvbmZpZ3VyYXRpb24uc2V0U2VydmVyVmFyaWFibGVzKHtcbiAgICBzaXRlOiBjb25maWcuc2l0ZSxcbiAgfSk7XG4gIGNvbnN0IGFwaUluc3RhbmNlID0gbmV3IHYxLkRhc2hib2FyZHNBcGkoY29uZmlndXJhdGlvbik7XG4gIHJldHVybiBhcGlJbnN0YW5jZS5nZXREYXNoYm9hcmQoe1xuICAgIGRhc2hib2FyZElkOiBkYXNoYm9hcmRJZCxcbiAgfSk7XG59O1xuXG5jb25zdCBwcmV0dGlmeURhc2hib2FyZCA9IChkYXNoYm9hcmQ6IHYxLkRhc2hib2FyZCk6IHN0cmluZyA9PiB7XG4gIC8vIGRyb3Aga2V5cyB0aGF0IGFyZSBub3QgcHJlc2VudCBpbiB0aGUgb3V0cHV0IHdoZW4gdXNpbmcgdGhlIFwiZXhwb3J0XCIgYnV0dG9uIGluIHRoZSBHVUlcbiAgZGVsZXRlIGRhc2hib2FyZC5pZDtcbiAgZGVsZXRlIGRhc2hib2FyZC5pc1JlYWRPbmx5O1xuICBkZWxldGUgZGFzaGJvYXJkLmF1dGhvckhhbmRsZTtcbiAgZGVsZXRlIGRhc2hib2FyZC5hdXRob3JOYW1lO1xuICBkZWxldGUgZGFzaGJvYXJkLnVybDtcbiAgZGVsZXRlIGRhc2hib2FyZC5jcmVhdGVkQXQ7XG4gIGRlbGV0ZSBkYXNoYm9hcmQubW9kaWZpZWRBdDtcbiAgZGVsZXRlIGRhc2hib2FyZC5yZXN0cmljdGVkUm9sZXM7XG5cbiAgY29uc3Qgc2VyaWFsaXplZERhc2hib2FyZCA9IHYxLk9iamVjdFNlcmlhbGl6ZXIuc2VyaWFsaXplKGRhc2hib2FyZCwgJ0Rhc2hib2FyZCcsICcnKTtcbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHNlcmlhbGl6ZWREYXNoYm9hcmQsIG51bGwsIDIpO1xufTtcblxuLyoqXG4gKiBEb3dubG9hZHMgZGFzaGJvYXJkcyBmcm9tIERhdGFkb2cgYW5kIHNhdmVzIHRoZW0gdG8gdGhlIGxvY2FsIGZpbGVzeXN0ZW0uXG4gKiBDYWxsIHRoaXMgd3JhcHBlciB3aXRoIHlvdXIgQ0RLIGFwcCBpbiB5b3VyIGVudHJ5cG9pbnQgc2NyaXB0LlxuICpcbiAqIFJ1biBgY2RrIHN5bnRoYCB3aXRoIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZVxuICogYERPV05MT0FEX0RBU0hCT0FSRFM9dHJ1ZWAsIHRvIGRvd25sb2FkIGRhc2hib2FyZHMgZGVmaW5lZCB2aWEge0BsaW5rIERvd25sb2FkYWJsZURhdGFkb2dEYXNoYm9hcmR9IGFuZCB1cGRhdGVcbiAqIHRoZSBleGlzdGluZyBkYXNoYm9hcmQgZGVmaW5pdGlvbiBmaWxlcyBpbiBwbGFjZS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gQ0RLIGFwcGxpY2F0aW9uIGluIGVudHJ5cG9pbnRcbiAqL1xuZXhwb3J0IGNvbnN0IGRhdGFkb2dEYXNoYm9hcmREb3dubG9hZGVyID0gKGFwcDogQXBwKSA9PiB7XG4gIGNvbnN0IGRvd25sb2FkRGFzaGJvYXJkc0ZsYWcgPSBwcm9jZXNzLmVudi5ET1dOTE9BRF9EQVNIQk9BUkRTPy50b0xvd2VyQ2FzZSgpO1xuICBpZiAoZG93bmxvYWREYXNoYm9hcmRzRmxhZyAmJiBbJ3RydWUnLCAnMScsICd5ZXMnXS5pbmNsdWRlcyhkb3dubG9hZERhc2hib2FyZHNGbGFnKSkge1xuICAgIHJldHVybiBkb3dubG9hZERhc2hib2FyZHMoYXBwKVxuICAgICAgLnRoZW4oKCkgPT4gY29uc29sZS5sb2coJ0Rhc2hib2FyZHMgZG93bmxvYWRlZCBzdWNjZXNzZnVsbHknKSlcbiAgICAgIC5jYXRjaCgoZXJyb3IpID0+IGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBkb3dubG9hZCBkYXNoYm9hcmRzJywgZXJyb3IpKTtcbiAgfVxuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG59O1xuIl19