@aws-solutions-constructs/core 2.76.0 → 2.78.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 +98 -57
- package/lib/alb-defaults.js +2 -3
- package/lib/alb-helper.js +8 -10
- package/lib/apigateway-defaults.d.ts +6 -6
- package/lib/apigateway-defaults.js +17 -18
- package/lib/apigateway-helper.d.ts +2 -2
- package/lib/apigateway-helper.js +14 -17
- package/lib/cloudfront-distribution-defaults.js +4 -5
- package/lib/cloudfront-distribution-helper.js +7 -9
- package/lib/cloudwatch-log-group-defaults.js +2 -3
- package/lib/cloudwatch-log-group-helper.js +3 -6
- package/lib/cognito-defaults.d.ts +2 -2
- package/lib/cognito-defaults.js +6 -6
- package/lib/cognito-helper.js +8 -11
- package/lib/dynamodb-table-defaults.d.ts +3 -3
- package/lib/dynamodb-table-defaults.js +6 -6
- package/lib/dynamodb-table-helper.js +7 -8
- package/lib/elasticache-defaults.js +3 -4
- package/lib/elasticache-helper.js +4 -5
- package/lib/elasticsearch-defaults.js +2 -3
- package/lib/elasticsearch-helper.js +7 -8
- package/lib/eventbridge-helper.d.ts +2 -2
- package/lib/eventbridge-helper.js +6 -7
- package/lib/events-rule-defaults.d.ts +1 -1
- package/lib/events-rule-defaults.js +5 -6
- package/lib/fargate-defaults.js +6 -7
- package/lib/fargate-helper.js +7 -9
- package/lib/glue-database-defaults.js +4 -5
- package/lib/glue-database-helper.js +2 -3
- package/lib/glue-job-defaults.js +2 -3
- package/lib/glue-job-helper.js +9 -9
- package/lib/glue-table-defaults.js +7 -8
- package/lib/glue-table-helper.js +3 -4
- package/lib/iot-topic-rule-defaults.d.ts +1 -1
- package/lib/iot-topic-rule-defaults.js +7 -8
- package/lib/kendra-defaults.js +2 -3
- package/lib/kendra-helper.d.ts +1 -1
- package/lib/kendra-helper.js +5 -6
- package/lib/kinesis-analytics-defaults.d.ts +2 -2
- package/lib/kinesis-analytics-defaults.js +4 -4
- package/lib/kinesis-analytics-helper.js +3 -4
- package/lib/kinesis-firehose-s3-defaults.d.ts +1 -1
- package/lib/kinesis-firehose-s3-defaults.js +8 -9
- package/lib/kinesis-streams-defaults.d.ts +2 -2
- package/lib/kinesis-streams-defaults.js +4 -4
- package/lib/kinesis-streams-helper.js +5 -7
- package/lib/kms-defaults.d.ts +2 -2
- package/lib/kms-defaults.js +4 -4
- package/lib/kms-helper.js +3 -6
- package/lib/lambda-defaults.js +2 -3
- package/lib/lambda-event-source-mapping-defaults.d.ts +3 -3
- package/lib/lambda-event-source-mapping-defaults.js +16 -17
- package/lib/lambda-helper.js +6 -7
- package/lib/mediastore-defaults.js +2 -3
- package/lib/mediastore-helper.js +4 -6
- package/lib/opensearch-defaults.js +2 -3
- package/lib/opensearch-helper.js +5 -6
- package/lib/override-warning-service.js +10 -8
- package/lib/pipes-defaults.js +5 -6
- package/lib/pipes-helper.js +7 -7
- package/lib/s3-bucket-defaults.js +3 -3
- package/lib/s3-bucket-helper.js +13 -8
- package/lib/sagemaker-defaults.js +5 -6
- package/lib/sagemaker-helper.d.ts +5 -0
- package/lib/sagemaker-helper.js +17 -17
- package/lib/secretsmanager-defaults.d.ts +2 -2
- package/lib/secretsmanager-defaults.js +4 -4
- package/lib/secretsmanager-helper.js +4 -6
- package/lib/security-group-helper.js +3 -4
- package/lib/sns-defaults.d.ts +2 -2
- package/lib/sns-defaults.js +4 -4
- package/lib/sns-helper.js +4 -5
- package/lib/sqs-defaults.js +5 -5
- package/lib/sqs-helper.d.ts +1 -1
- package/lib/sqs-helper.js +5 -6
- package/lib/ssm-string-parameter-helper.js +2 -3
- package/lib/step-function-defaults.d.ts +1 -1
- package/lib/step-function-defaults.js +4 -5
- package/lib/step-function-helper.js +5 -5
- package/lib/utils.d.ts +1 -1
- package/lib/utils.js +32 -30
- package/lib/vpc-defaults.js +4 -5
- package/lib/vpc-helper.js +6 -8
- package/lib/waf-defaults.js +4 -5
- package/lib/waf-helper.js +4 -6
- package/lib/websocket-api-helper.js +4 -6
- package/package.json +6 -5
- package/test/apigateway-helper.test.js +3 -3
- package/test/cloudfront-distribution-api-gateway-helper.test.js +11 -11
- package/test/dynamo-table.test.js +9 -9
- package/test/glue-job-helper.test.js +7 -7
- package/test/glue-table-helper.test.js +5 -5
- package/test/kinesis-analytics.test.js +2 -2
- package/test/kinesis-streams-defaults.test.js +2 -2
- package/test/lambda-event-source.test.js +10 -10
- package/test/override-warning-service.test.js +25 -26
- package/test/pipes-helper.test.js +2 -2
- package/test/step-function-helper.test.js +5 -5
- package/test/test-helper.js +16 -16
- package/test/utils.test.js +11 -12
- package/.eslintignore +0 -9
- package/node_modules/ansi-regex/index.d.ts +0 -37
- package/node_modules/ansi-regex/index.js +0 -10
- package/node_modules/ansi-regex/license +0 -9
- package/node_modules/ansi-regex/package.json +0 -55
- package/node_modules/ansi-regex/readme.md +0 -78
- package/node_modules/aproba/LICENSE +0 -14
- package/node_modules/aproba/README.md +0 -94
- package/node_modules/aproba/index.js +0 -105
- package/node_modules/aproba/package.json +0 -35
- package/node_modules/are-we-there-yet/LICENSE.md +0 -18
- package/node_modules/are-we-there-yet/README.md +0 -208
- package/node_modules/are-we-there-yet/lib/index.js +0 -4
- package/node_modules/are-we-there-yet/lib/tracker-base.js +0 -13
- package/node_modules/are-we-there-yet/lib/tracker-group.js +0 -112
- package/node_modules/are-we-there-yet/lib/tracker-stream.js +0 -42
- package/node_modules/are-we-there-yet/lib/tracker.js +0 -34
- package/node_modules/are-we-there-yet/package.json +0 -53
- package/node_modules/color-support/LICENSE +0 -15
- package/node_modules/color-support/README.md +0 -129
- package/node_modules/color-support/bin.js +0 -3
- package/node_modules/color-support/browser.js +0 -14
- package/node_modules/color-support/index.js +0 -134
- package/node_modules/color-support/package.json +0 -36
- package/node_modules/console-control-strings/LICENSE +0 -13
- package/node_modules/console-control-strings/README.md +0 -145
- package/node_modules/console-control-strings/index.js +0 -125
- package/node_modules/console-control-strings/package.json +0 -27
- package/node_modules/deep-diff/.circleci/config.yml +0 -76
- package/node_modules/deep-diff/.eslintrc +0 -72
- package/node_modules/deep-diff/.vscode/launch.json +0 -30
- package/node_modules/deep-diff/.vscode/tasks.json +0 -12
- package/node_modules/deep-diff/ChangeLog.md +0 -63
- package/node_modules/deep-diff/LICENSE +0 -7
- package/node_modules/deep-diff/Readme.md +0 -239
- package/node_modules/deep-diff/dist/deep-diff.min.js +0 -1
- package/node_modules/deep-diff/dist/deep-diff.min.js.map +0 -1
- package/node_modules/deep-diff/examples/apply-diff-from-any.js +0 -39
- package/node_modules/deep-diff/examples/array-change.js +0 -45
- package/node_modules/deep-diff/examples/capture_change_apply_elsewhere.js +0 -53
- package/node_modules/deep-diff/examples/diff-ignoring-fun.js +0 -88
- package/node_modules/deep-diff/examples/diff-scenarios.js +0 -49
- package/node_modules/deep-diff/examples/example1.js +0 -41
- package/node_modules/deep-diff/examples/issue-111.js +0 -6
- package/node_modules/deep-diff/examples/issue-113-1.js +0 -14
- package/node_modules/deep-diff/examples/issue-113-2.js +0 -11
- package/node_modules/deep-diff/examples/issue-115.js +0 -17
- package/node_modules/deep-diff/examples/issue-124.js +0 -8
- package/node_modules/deep-diff/examples/issue-125.js +0 -19
- package/node_modules/deep-diff/examples/issue-126.js +0 -33
- package/node_modules/deep-diff/examples/issue-35.js +0 -11
- package/node_modules/deep-diff/examples/issue-47.js +0 -17
- package/node_modules/deep-diff/examples/issue-48.js +0 -48
- package/node_modules/deep-diff/examples/issue-62.js +0 -14
- package/node_modules/deep-diff/examples/issue-70.js +0 -6
- package/node_modules/deep-diff/examples/issue-71.js +0 -15
- package/node_modules/deep-diff/examples/issue-72.js +0 -21
- package/node_modules/deep-diff/examples/issue-74.js +0 -9
- package/node_modules/deep-diff/examples/issue-78.js +0 -24
- package/node_modules/deep-diff/examples/issue-83.js +0 -11
- package/node_modules/deep-diff/examples/issue-88.js +0 -26
- package/node_modules/deep-diff/examples/performance.js +0 -64
- package/node_modules/deep-diff/examples/practice-data.json +0 -2501
- package/node_modules/deep-diff/index.js +0 -526
- package/node_modules/deep-diff/package.json +0 -74
- package/node_modules/deep-diff/test/.eslintrc +0 -10
- package/node_modules/deep-diff/test/tests.html +0 -34
- package/node_modules/deep-diff/test/tests.js +0 -759
- package/node_modules/deepmerge/.editorconfig +0 -7
- package/node_modules/deepmerge/.eslintcache +0 -1
- package/node_modules/deepmerge/changelog.md +0 -167
- package/node_modules/deepmerge/dist/cjs.js +0 -133
- package/node_modules/deepmerge/dist/umd.js +0 -139
- package/node_modules/deepmerge/index.d.ts +0 -20
- package/node_modules/deepmerge/index.js +0 -106
- package/node_modules/deepmerge/license.txt +0 -21
- package/node_modules/deepmerge/package.json +0 -42
- package/node_modules/deepmerge/readme.md +0 -264
- package/node_modules/deepmerge/rollup.config.js +0 -22
- package/node_modules/emoji-regex/LICENSE-MIT.txt +0 -20
- package/node_modules/emoji-regex/README.md +0 -73
- package/node_modules/emoji-regex/es2015/index.js +0 -6
- package/node_modules/emoji-regex/es2015/text.js +0 -6
- package/node_modules/emoji-regex/index.d.ts +0 -23
- package/node_modules/emoji-regex/index.js +0 -6
- package/node_modules/emoji-regex/package.json +0 -50
- package/node_modules/emoji-regex/text.js +0 -6
- package/node_modules/gauge/LICENSE.md +0 -20
- package/node_modules/gauge/README.md +0 -402
- package/node_modules/gauge/lib/base-theme.js +0 -18
- package/node_modules/gauge/lib/error.js +0 -24
- package/node_modules/gauge/lib/has-color.js +0 -4
- package/node_modules/gauge/lib/index.js +0 -289
- package/node_modules/gauge/lib/plumbing.js +0 -50
- package/node_modules/gauge/lib/process.js +0 -3
- package/node_modules/gauge/lib/progress-bar.js +0 -41
- package/node_modules/gauge/lib/render-template.js +0 -222
- package/node_modules/gauge/lib/set-immediate.js +0 -7
- package/node_modules/gauge/lib/set-interval.js +0 -3
- package/node_modules/gauge/lib/spin.js +0 -5
- package/node_modules/gauge/lib/template-item.js +0 -87
- package/node_modules/gauge/lib/theme-set.js +0 -122
- package/node_modules/gauge/lib/themes.js +0 -56
- package/node_modules/gauge/lib/wide-truncate.js +0 -31
- package/node_modules/gauge/package.json +0 -68
- package/node_modules/has-unicode/LICENSE +0 -14
- package/node_modules/has-unicode/README.md +0 -43
- package/node_modules/has-unicode/index.js +0 -16
- package/node_modules/has-unicode/package.json +0 -30
- package/node_modules/is-fullwidth-code-point/index.d.ts +0 -17
- package/node_modules/is-fullwidth-code-point/index.js +0 -50
- package/node_modules/is-fullwidth-code-point/license +0 -9
- package/node_modules/is-fullwidth-code-point/package.json +0 -42
- package/node_modules/is-fullwidth-code-point/readme.md +0 -39
- package/node_modules/npmlog/LICENSE.md +0 -20
- package/node_modules/npmlog/README.md +0 -216
- package/node_modules/npmlog/lib/log.js +0 -400
- package/node_modules/npmlog/package.json +0 -52
- package/node_modules/set-blocking/LICENSE.txt +0 -14
- package/node_modules/set-blocking/README.md +0 -31
- package/node_modules/set-blocking/index.js +0 -7
- package/node_modules/set-blocking/package.json +0 -42
- package/node_modules/signal-exit/LICENSE.txt +0 -16
- package/node_modules/signal-exit/README.md +0 -74
- package/node_modules/signal-exit/dist/cjs/browser.d.ts +0 -12
- package/node_modules/signal-exit/dist/cjs/browser.d.ts.map +0 -1
- package/node_modules/signal-exit/dist/cjs/browser.js +0 -10
- package/node_modules/signal-exit/dist/cjs/browser.js.map +0 -1
- package/node_modules/signal-exit/dist/cjs/index.d.ts +0 -48
- package/node_modules/signal-exit/dist/cjs/index.d.ts.map +0 -1
- package/node_modules/signal-exit/dist/cjs/index.js +0 -279
- package/node_modules/signal-exit/dist/cjs/index.js.map +0 -1
- package/node_modules/signal-exit/dist/cjs/package.json +0 -3
- package/node_modules/signal-exit/dist/cjs/signals.d.ts +0 -29
- package/node_modules/signal-exit/dist/cjs/signals.d.ts.map +0 -1
- package/node_modules/signal-exit/dist/cjs/signals.js +0 -42
- package/node_modules/signal-exit/dist/cjs/signals.js.map +0 -1
- package/node_modules/signal-exit/dist/mjs/browser.d.ts +0 -12
- package/node_modules/signal-exit/dist/mjs/browser.d.ts.map +0 -1
- package/node_modules/signal-exit/dist/mjs/browser.js +0 -4
- package/node_modules/signal-exit/dist/mjs/browser.js.map +0 -1
- package/node_modules/signal-exit/dist/mjs/index.d.ts +0 -48
- package/node_modules/signal-exit/dist/mjs/index.d.ts.map +0 -1
- package/node_modules/signal-exit/dist/mjs/index.js +0 -275
- package/node_modules/signal-exit/dist/mjs/index.js.map +0 -1
- package/node_modules/signal-exit/dist/mjs/package.json +0 -3
- package/node_modules/signal-exit/dist/mjs/signals.d.ts +0 -29
- package/node_modules/signal-exit/dist/mjs/signals.d.ts.map +0 -1
- package/node_modules/signal-exit/dist/mjs/signals.js +0 -39
- package/node_modules/signal-exit/dist/mjs/signals.js.map +0 -1
- package/node_modules/signal-exit/package.json +0 -106
- package/node_modules/string-width/index.d.ts +0 -29
- package/node_modules/string-width/index.js +0 -47
- package/node_modules/string-width/license +0 -9
- package/node_modules/string-width/package.json +0 -56
- package/node_modules/string-width/readme.md +0 -50
- package/node_modules/strip-ansi/index.d.ts +0 -17
- package/node_modules/strip-ansi/index.js +0 -4
- package/node_modules/strip-ansi/license +0 -9
- package/node_modules/strip-ansi/package.json +0 -54
- package/node_modules/strip-ansi/readme.md +0 -46
- package/node_modules/wide-align/LICENSE +0 -14
- package/node_modules/wide-align/README.md +0 -47
- package/node_modules/wide-align/align.js +0 -65
- package/node_modules/wide-align/package.json +0 -33
|
@@ -12,7 +12,6 @@
|
|
|
12
12
|
* and limitations under the License.
|
|
13
13
|
*/
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
const log = require("npmlog");
|
|
16
15
|
const process = require("process");
|
|
17
16
|
const override_warning_service_1 = require("../lib/override-warning-service");
|
|
18
17
|
const __1 = require("../");
|
|
@@ -34,10 +33,10 @@ test('Test override detection: positive, not-nested', () => {
|
|
|
34
33
|
keyD: 'valueD'
|
|
35
34
|
};
|
|
36
35
|
// Act
|
|
37
|
-
const
|
|
36
|
+
const consoleLogSpy = jest.spyOn(console, 'log');
|
|
38
37
|
(0, override_warning_service_1.flagOverriddenDefaults)(a, b);
|
|
39
38
|
// Assert
|
|
40
|
-
expect(
|
|
39
|
+
expect(consoleLogSpy).toBeCalledTimes(1);
|
|
41
40
|
});
|
|
42
41
|
test('Test override detection: negative, not-nested', () => {
|
|
43
42
|
// Arrange
|
|
@@ -50,10 +49,10 @@ test('Test override detection: negative, not-nested', () => {
|
|
|
50
49
|
keyD: 'valueD'
|
|
51
50
|
};
|
|
52
51
|
// Act
|
|
53
|
-
const
|
|
52
|
+
const consoleLogSpy = jest.spyOn(console, 'log');
|
|
54
53
|
(0, override_warning_service_1.flagOverriddenDefaults)(a, b);
|
|
55
54
|
// Assert
|
|
56
|
-
expect(
|
|
55
|
+
expect(consoleLogSpy).toBeCalledTimes(0);
|
|
57
56
|
});
|
|
58
57
|
test('Test override detection: positive, nested', () => {
|
|
59
58
|
// Arrange
|
|
@@ -73,10 +72,10 @@ test('Test override detection: positive, nested', () => {
|
|
|
73
72
|
}
|
|
74
73
|
};
|
|
75
74
|
// Act
|
|
76
|
-
const
|
|
75
|
+
const consoleLogSpy = jest.spyOn(console, 'log');
|
|
77
76
|
(0, override_warning_service_1.flagOverriddenDefaults)(a, b);
|
|
78
77
|
// Assert
|
|
79
|
-
expect(
|
|
78
|
+
expect(consoleLogSpy).toBeCalledTimes(2);
|
|
80
79
|
});
|
|
81
80
|
test('Test override detection: negative, nested', () => {
|
|
82
81
|
// Arrange
|
|
@@ -95,10 +94,10 @@ test('Test override detection: negative, nested', () => {
|
|
|
95
94
|
}
|
|
96
95
|
};
|
|
97
96
|
// Act
|
|
98
|
-
const
|
|
97
|
+
const consoleLogSpy = jest.spyOn(console, 'log');
|
|
99
98
|
(0, override_warning_service_1.flagOverriddenDefaults)(a, b);
|
|
100
99
|
// Assert
|
|
101
|
-
expect(
|
|
100
|
+
expect(consoleLogSpy).toBeCalledTimes(0);
|
|
102
101
|
});
|
|
103
102
|
test('Test override warning on/off: default on', () => {
|
|
104
103
|
// Arrange
|
|
@@ -112,10 +111,10 @@ test('Test override warning on/off: default on', () => {
|
|
|
112
111
|
keyD: 'valueD'
|
|
113
112
|
};
|
|
114
113
|
// Act
|
|
115
|
-
const
|
|
114
|
+
const consoleLogSpy = jest.spyOn(console, 'log');
|
|
116
115
|
(0, __1.overrideProps)(a, b);
|
|
117
116
|
// Assert
|
|
118
|
-
expect(
|
|
117
|
+
expect(consoleLogSpy).toBeCalledTimes(1);
|
|
119
118
|
});
|
|
120
119
|
test('Test override warning on/off: explicit on', () => {
|
|
121
120
|
// Arrange
|
|
@@ -130,10 +129,10 @@ test('Test override warning on/off: explicit on', () => {
|
|
|
130
129
|
};
|
|
131
130
|
process.env.overrideWarningsEnabled = 'true';
|
|
132
131
|
// Act
|
|
133
|
-
const
|
|
132
|
+
const consoleLogSpy = jest.spyOn(console, 'log');
|
|
134
133
|
(0, __1.overrideProps)(a, b);
|
|
135
134
|
// Assert
|
|
136
|
-
expect(
|
|
135
|
+
expect(consoleLogSpy).toBeCalledTimes(1);
|
|
137
136
|
});
|
|
138
137
|
test('Test override warning on/off: explicit off', () => {
|
|
139
138
|
// Arrange
|
|
@@ -147,11 +146,11 @@ test('Test override warning on/off: explicit off', () => {
|
|
|
147
146
|
keyD: 'valueD'
|
|
148
147
|
};
|
|
149
148
|
// Act
|
|
150
|
-
const
|
|
149
|
+
const consoleLogSpy = jest.spyOn(console, 'log');
|
|
151
150
|
process.env.overrideWarningsEnabled = 'false';
|
|
152
151
|
const result = (0, __1.overrideProps)(a, b);
|
|
153
152
|
// Assert
|
|
154
|
-
expect(
|
|
153
|
+
expect(consoleLogSpy).toBeCalledTimes(0);
|
|
155
154
|
expect(result).toEqual({
|
|
156
155
|
keyA: 'new-valueA',
|
|
157
156
|
keyB: 'valueB',
|
|
@@ -171,11 +170,11 @@ test('Test override warning on/off: undefined on', () => {
|
|
|
171
170
|
keyD: 'valueD'
|
|
172
171
|
};
|
|
173
172
|
// Act
|
|
174
|
-
const
|
|
173
|
+
const consoleLogSpy = jest.spyOn(console, 'log');
|
|
175
174
|
process.env.overrideWarningsEnabled = undefined;
|
|
176
175
|
const result = (0, __1.overrideProps)(a, b);
|
|
177
176
|
// Assert
|
|
178
|
-
expect(
|
|
177
|
+
expect(consoleLogSpy).toBeCalledTimes(1);
|
|
179
178
|
expect(result).toEqual({
|
|
180
179
|
keyA: 'new-valueA',
|
|
181
180
|
keyB: 'valueB',
|
|
@@ -204,11 +203,11 @@ test('Test current prefilters', () => {
|
|
|
204
203
|
node: 'sampleNodeA'
|
|
205
204
|
};
|
|
206
205
|
// Act
|
|
207
|
-
const
|
|
206
|
+
const consoleLogSpy = jest.spyOn(console, 'log');
|
|
208
207
|
process.env.overrideWarningsEnabled = undefined;
|
|
209
208
|
const result = (0, __1.overrideProps)(a, b);
|
|
210
209
|
// Assert
|
|
211
|
-
expect(
|
|
210
|
+
expect(consoleLogSpy).toBeCalledTimes(6);
|
|
212
211
|
expect(result).toEqual({
|
|
213
212
|
destination: 'sampleDestinationValueB',
|
|
214
213
|
maxRecordAge: 'sampleMaxRecordAgeValueB',
|
|
@@ -231,10 +230,10 @@ test('Test overrideProps with warnings disabled in argument', () => {
|
|
|
231
230
|
keyD: 'valueD'
|
|
232
231
|
};
|
|
233
232
|
// Act
|
|
234
|
-
const
|
|
233
|
+
const consoleLogSpy = jest.spyOn(console, 'log');
|
|
235
234
|
(0, __1.overrideProps)(a, b, undefined, true);
|
|
236
235
|
// Assert
|
|
237
|
-
expect(
|
|
236
|
+
expect(consoleLogSpy).toBeCalledTimes(0);
|
|
238
237
|
});
|
|
239
238
|
test('Test overrideProps with deep arguments', () => {
|
|
240
239
|
const a = {
|
|
@@ -258,10 +257,10 @@ test('Test overrideProps with deep arguments', () => {
|
|
|
258
257
|
}
|
|
259
258
|
};
|
|
260
259
|
// Act
|
|
261
|
-
const
|
|
260
|
+
const consoleLogSpy = jest.spyOn(console, 'log');
|
|
262
261
|
(0, __1.overrideProps)(a, b);
|
|
263
262
|
// Assert
|
|
264
|
-
expect(
|
|
263
|
+
expect(consoleLogSpy).toBeCalledTimes(3);
|
|
265
264
|
});
|
|
266
265
|
test('Confirm node stops circular reference traversal', () => {
|
|
267
266
|
// Arrange
|
|
@@ -278,9 +277,9 @@ test('Confirm node stops circular reference traversal', () => {
|
|
|
278
277
|
}
|
|
279
278
|
};
|
|
280
279
|
b.keyE.node = b;
|
|
281
|
-
const
|
|
280
|
+
const consoleLogSpy = jest.spyOn(console, 'log');
|
|
282
281
|
(0, override_warning_service_1.flagOverriddenDefaults)(a, b);
|
|
283
282
|
// Assert
|
|
284
|
-
expect(
|
|
283
|
+
expect(consoleLogSpy).toBeCalledTimes(1);
|
|
285
284
|
});
|
|
286
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcnJpZGUtd2FybmluZy1zZXJ2aWNlLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJvdmVycmlkZS13YXJuaW5nLXNlcnZpY2UudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7O0FBRUgsOEJBQThCO0FBQzlCLG1DQUFtQztBQUNuQyw4RUFBeUU7QUFDekUsMkJBQW9DO0FBRXBDLGFBQWE7QUFDYixVQUFVLENBQUMsR0FBRyxFQUFFO0lBQ2QsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3BCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUNyQixPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLENBQUM7QUFDN0MsQ0FBQyxDQUFDLENBQUM7QUFFSCxJQUFJLENBQUMsK0NBQStDLEVBQUUsR0FBRyxFQUFFO0lBQ3pELFVBQVU7SUFDVixNQUFNLENBQUMsR0FBRztRQUNSLElBQUksRUFBRSxRQUFRO1FBQ2QsSUFBSSxFQUFFLFFBQVE7UUFDZCxJQUFJLEVBQUUsUUFBUTtLQUNmLENBQUM7SUFDRixNQUFNLENBQUMsR0FBRztRQUNSLElBQUksRUFBRSxZQUFZO1FBQ2xCLElBQUksRUFBRSxRQUFRO0tBQ2YsQ0FBQztJQUNGLE1BQU07SUFDTixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNyQyxJQUFBLGlEQUFzQixFQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM3QixTQUFTO0lBQ1QsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQyxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQywrQ0FBK0MsRUFBRSxHQUFHLEVBQUU7SUFDekQsVUFBVTtJQUNWLE1BQU0sQ0FBQyxHQUFHO1FBQ1IsSUFBSSxFQUFFLFFBQVE7UUFDZCxJQUFJLEVBQUUsUUFB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VUFBVTtJQUNWLE1BQU0sQ0FBQyxHQUFHO1FBQ1IsSUFBSSxFQUFFLFFBQVE7UUFDZCxJQUFJLEVBQUUsUUFBUTtRQUNkLElBQUksRUFBRSxRQUFRO0tBQ2YsQ0FBQztJQUNGLE1BQU0sQ0FBQyxHQUFHO1FBQ1IsSUFBSSxFQUFFLFlBQVk7UUFDbEIsSUFBSSxFQUFFLFFBQVE7UUFDZCxJQUFJLEVBQUU7WUFDSixJQUFJLEVBQUUsRUFBRTtTQUNUO0tBQ0YsQ0FBQztJQUNGLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztJQUVoQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNyQyxJQUFBLGlEQUFzQixFQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM3QixTQUFTO0lBQ1QsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQyxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4gKiAgd2l0aCB0aGUgTGljZW5zZS4gQSBjb3B5IG9mIHRoZSBMaWNlbnNlIGlzIGxvY2F0ZWQgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBvciBpbiB0aGUgJ2xpY2Vuc2UnIGZpbGUgYWNjb21wYW55aW5nIHRoaXMgZmlsZS4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFU1xuICogIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXG4gKiAgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCAqIGFzIGxvZyBmcm9tICducG1sb2cnO1xuaW1wb3J0ICogYXMgcHJvY2VzcyBmcm9tICdwcm9jZXNzJztcbmltcG9ydCB7IGZsYWdPdmVycmlkZGVuRGVmYXVsdHMgfSBmcm9tICcuLi9saWIvb3ZlcnJpZGUtd2FybmluZy1zZXJ2aWNlJztcbmltcG9ydCB7IG92ZXJyaWRlUHJvcHMgfSBmcm9tICcuLi8nO1xuXG4vLyBNb2NrIHNldHVwXG5iZWZvcmVFYWNoKCgpID0+IHtcbiAgamVzdC5yZXNldE1vZHVsZXMoKTtcbiAgamVzdC5jbGVhckFsbE1vY2tzKCk7XG4gIGRlbGV0ZSBwcm9jZXNzLmVudi5vdmVycmlkZVdhcm5pbmdzRW5hYmxlZDtcbn0pO1xuXG50ZXN0KCdUZXN0IG92ZXJyaWRlIGRldGVjdGlvbjogcG9zaXRpdmUsIG5vdC1uZXN0ZWQnLCAoKSA9PiB7XG4gIC8vIEFycmFuZ2VcbiAgY29uc3QgYSA9IHtcbiAgICBrZXlBOiAndmFsdWVBJyxcbiAgICBrZXlCOiAndmFsdWVCJyxcbiAgICBrZXlDOiAndmFsdWVDJ1xuICB9O1xuICBjb25zdCBiID0ge1xuICAgIGtleUE6ICduZXctdmFsdWVBJyxcbiAgICBrZXlEOiAndmFsdWVEJ1xuICB9O1xuICAvLyBBY3RcbiAgY29uc3Qgd2FybiA9IGplc3Quc3B5T24obG9nLCAnd2FybicpO1xuICBmbGFnT3ZlcnJpZGRlbkRlZmF1bHRzKGEsIGIpO1xuICAvLyBBc3NlcnRcbiAgZXhwZWN0KHdhcm4pLnRvQmVDYWxsZWRUaW1lcygxKTtcbn0pO1xuXG50ZXN0KCdUZXN0IG92ZXJyaWRlIGRldGVjdGlvbjogbmVnYXRpdmUsIG5vdC1uZXN0ZWQnLCAoKSA9PiB7XG4gIC8vIEFycmFuZ2VcbiAgY29uc3QgYSA9IHtcbiAgICBrZXlBOiAndmFsdWVBJyxcbiAgICBrZXlCOiAndmFsdWVCJyxcbiAgICBrZXlDOiAndmFsdWVDJ1xuICB9O1xuICBjb25zdCBiID0ge1xuICAgIGtleUQ6ICd2YWx1ZUQnXG4gIH07XG4gIC8vIEFjdFxuICBjb25zdCB3YXJuID0gamVzdC5zcHlPbihsb2csICd3YXJuJyk7XG4gIGZsYWdPdmVycmlkZGVuRGVmYXVsdHMoYSwgYik7XG4gIC8vIEFzc2VydFxuICBleHBlY3Qod2FybikudG9CZUNhbGxlZFRpbWVzKDApO1xufSk7XG5cbnRlc3QoJ1Rlc3Qgb3ZlcnJpZGUgZGV0ZWN0aW9uOiBwb3NpdGl2ZSwgbmVzdGVkJywgKCkgPT4ge1xuICAvLyBBcnJhbmdlXG4gIGNvbnN0IGEgPSB7XG4gICAga2V5QTogJ3ZhbHVlQScsXG4gICAga2V5QjogJ3ZhbHVlQicsXG4gICAga2V5QzogJ3ZhbHVlQycsXG4gICAga2V5RDoge1xuICAgICAga2V5REE6ICd2YWx1ZURBJyxcbiAgICAgIGtleURCOiAndmFsdWVEQidcbiAgICB9XG4gIH07XG4gIGNvbnN0IGIgPSB7XG4gICAga2V5QzogJ3ZhbHVlQ0FuZXcnLFxuICAgIGtleUQ6IHtcbiAgICAgIGtleURBOiAndmFsdWVEQW5ldydcbiAgICB9XG4gIH07XG4gIC8vIEFjdFxuICBjb25zdCB3YXJuID0gamVzdC5zcHlPbihsb2csICd3YXJuJyk7XG4gIGZsYWdPdmVycmlkZGVuRGVmYXVsdHMoYSwgYik7XG4gIC8vIEFzc2VydFxuICBleHBlY3Qod2FybikudG9CZUNhbGxlZFRpbWVzKDIpO1xufSk7XG5cbnRlc3QoJ1Rlc3Qgb3ZlcnJpZGUgZGV0ZWN0aW9uOiBuZWdhdGl2ZSwgbmVzdGVkJywgKCkgPT4ge1xuICAvLyBBcnJhbmdlXG4gIGNvbnN0IGEgPSB7XG4gICAga2V5QTogJ3ZhbHVlQScsXG4gICAga2V5QjogJ3ZhbHVlQicsXG4gICAga2V5QzogJ3ZhbHVlQycsXG4gICAga2V5RDoge1xuICAgICAga2V5REE6ICd2YWx1ZURBJyxcbiAgICAgIGtleURCOiAndmFsdWVEQidcbiAgICB9XG4gIH07XG4gIGNvbnN0IGIgPSB7XG4gICAga2V5RDoge1xuICAgICAga2V5REE6ICd2YWx1ZURBJ1xuICAgIH1cbiAgfTtcbiAgLy8gQWN0XG4gIGNvbnN0IHdhcm4gPSBqZXN0LnNweU9uKGxvZywgJ3dhcm4nKTtcbiAgZmxhZ092ZXJyaWRkZW5EZWZhdWx0cyhhLCBiKTtcbiAgLy8gQXNzZXJ0XG4gIGV4cGVjdCh3YXJuKS50b0JlQ2FsbGVkVGltZXMoMCk7XG59KTtcblxudGVzdCgnVGVzdCBvdmVycmlkZSB3YXJuaW5nIG9uL29mZjogZGVmYXVsdCBvbicsICgpID0+IHtcbiAgLy8gQXJyYW5nZVxuICBjb25zdCBhID0ge1xuICAgIGtleUE6ICd2YWx1ZUEnLFxuICAgIGtleUI6ICd2YWx1ZUInLFxuICAgIGtleUM6ICd2YWx1ZUMnXG4gIH07XG4gIGNvbnN0IGIgPSB7XG4gICAga2V5QTogJ25ldy12YWx1ZUEnLFxuICAgIGtleUQ6ICd2YWx1ZUQnXG4gIH07XG4gIC8vIEFjdFxuICBjb25zdCB3YXJuID0gamVzdC5zcHlPbihsb2csICd3YXJuJyk7XG4gIG92ZXJyaWRlUHJvcHMoYSwgYik7XG4gIC8vIEFzc2VydFxuICBleHBlY3Qod2FybikudG9CZUNhbGxlZFRpbWVzKDEpO1xufSk7XG5cbnRlc3QoJ1Rlc3Qgb3ZlcnJpZGUgd2FybmluZyBvbi9vZmY6IGV4cGxpY2l0IG9uJywgKCkgPT4ge1xuICAvLyBBcnJhbmdlXG4gIGNvbnN0IGEgPSB7XG4gICAga2V5QTogJ3ZhbHVlQScsXG4gICAga2V5QjogJ3ZhbHVlQicsXG4gICAga2V5QzogJ3ZhbHVlQydcbiAgfTtcbiAgY29uc3QgYiA9IHtcbiAgICBrZXlBOiAnbmV3LXZhbHVlQScsXG4gICAga2V5RDogJ3ZhbHVlRCdcbiAgfTtcbiAgcHJvY2Vzcy5lbnYub3ZlcnJpZGVXYXJuaW5nc0VuYWJsZWQgPSAndHJ1ZSc7XG4gIC8vIEFjdFxuICBjb25zdCB3YXJuID0gamVzdC5zcHlPbihsb2csICd3YXJuJyk7XG4gIG92ZXJyaWRlUHJvcHMoYSwgYik7XG4gIC8vIEFzc2VydFxuICBleHBlY3Qod2FybikudG9CZUNhbGxlZFRpbWVzKDEpO1xufSk7XG5cbnRlc3QoJ1Rlc3Qgb3ZlcnJpZGUgd2FybmluZyBvbi9vZmY6IGV4cGxpY2l0IG9mZicsICgpID0+IHtcbiAgLy8gQXJyYW5nZVxuICBjb25zdCBhID0ge1xuICAgIGtleUE6ICd2YWx1ZUEnLFxuICAgIGtleUI6ICd2YWx1ZUInLFxuICAgIGtleUM6ICd2YWx1ZUMnXG4gIH07XG4gIGNvbnN0IGIgPSB7XG4gICAga2V5QTogJ25ldy12YWx1ZUEnLFxuICAgIGtleUQ6ICd2YWx1ZUQnXG4gIH07XG4gIC8vIEFjdFxuICBjb25zdCB3YXJuID0gamVzdC5zcHlPbihsb2csICd3YXJuJyk7XG4gIHByb2Nlc3MuZW52Lm92ZXJyaWRlV2FybmluZ3NFbmFibGVkID0gJ2ZhbHNlJztcbiAgY29uc3QgcmVzdWx0ID0gb3ZlcnJpZGVQcm9wcyhhLCBiKTtcbiAgLy8gQXNzZXJ0XG4gIGV4cGVjdCh3YXJuKS50b0JlQ2FsbGVkVGltZXMoMCk7XG5cbiAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbCh7XG4gICAga2V5QTogJ25ldy12YWx1ZUEnLFxuICAgIGtleUI6ICd2YWx1ZUInLFxuICAgIGtleUM6ICd2YWx1ZUMnLFxuICAgIGtleUQ6ICd2YWx1ZUQnXG4gIH0pO1xuXG59KTtcblxudGVzdCgnVGVzdCBvdmVycmlkZSB3YXJuaW5nIG9uL29mZjogdW5kZWZpbmVkIG9uJywgKCkgPT4ge1xuICAvLyBBcnJhbmdlXG4gIGNvbnN0IGEgPSB7XG4gICAga2V5QTogJ3ZhbHVlQScsXG4gICAga2V5QjogJ3ZhbHVlQicsXG4gICAga2V5QzogJ3ZhbHVlQydcbiAgfTtcbiAgY29uc3QgYiA9IHtcbiAgICBrZXlBOiAnbmV3LXZhbHVlQScsXG4gICAga2V5RDogJ3ZhbHVlRCdcbiAgfTtcbiAgLy8gQWN0XG4gIGNvbnN0IHdhcm4gPSBqZXN0LnNweU9uKGxvZywgJ3dhcm4nKTtcbiAgcHJvY2Vzcy5lbnYub3ZlcnJpZGVXYXJuaW5nc0VuYWJsZWQgPSB1bmRlZmluZWQ7XG4gIGNvbnN0IHJlc3VsdCA9IG92ZXJyaWRlUHJvcHMoYSwgYik7XG4gIC8vIEFzc2VydFxuICBleHBlY3Qod2FybikudG9CZUNhbGxlZFRpbWVzKDEpO1xuXG4gIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoe1xuICAgIGtleUE6ICduZXctdmFsdWVBJyxcbiAgICBrZXlCOiAndmFsdWVCJyxcbiAgICBrZXlDOiAndmFsdWVDJyxcbiAgICBrZXlEOiAndmFsdWVEJ1xuICB9KTtcblxufSk7XG5cbnRlc3QoJ1Rlc3QgY3VycmVudCBwcmVmaWx0ZXJzJywgKCkgPT4ge1xuICAvLyBBcnJhbmdlXG4gIGNvbnN0IGEgPSB7XG4gICAgZGVzdGluYXRpb246ICdzYW1wbGVEZXN0aW5hdGlvblZhbHVlQScsXG4gICAgbWF4UmVjb3JkQWdlOiAnc2FtcGxlTWF4UmVjb3JkQWdlVmFsdWVBJyxcbiAgICBleHBpcmF0aW9uOiAnc2FtcGxlRXhwaXJhdGlvblZhbHVlQScsXG4gICAgdHJhbnNpdGlvbkFmdGVyOiAnc2FtcGxlVHJhbnNpdGlvblZhbHVlQScsXG4gICAgdGltZW91dDogJ3NhbXBsZVRpbWVvdXRWYWx1ZUEnLFxuICAgIHBlcmlvZDogJ3NhbXBsZVBlcmlvZFZhbHVlQScsXG4gICAgbm9kZTogJ3NhbXBsZU5vZGVBJ1xuICB9O1xuICBjb25zdCBiID0ge1xuICAgIGRlc3RpbmF0aW9uOiAnc2FtcGxlRGVzdGluYXRpb25WYWx1ZUInLFxuICAgIG1heFJlY29yZEFnZTogJ3NhbXBsZU1heFJlY29yZEFnZVZhbHVlQicsXG4gICAgZXhwaXJhdGlvbjogJ3NhbXBsZUV4cGlyYXRpb25WYWx1ZUInLFxuICAgIHRyYW5zaXRpb25BZnRlcjogJ3NhbXBsZVRyYW5zaXRpb25WYWx1ZUInLFxuICAgIHRpbWVvdXQ6ICdzYW1wbGVUaW1lb3V0VmFsdWVCJyxcbiAgICBwZXJpb2Q6ICdzYW1wbGVQZXJpb2RWYWx1ZUEnLFxuICAgIG5vZGU6ICdzYW1wbGVOb2RlQSdcbiAgfTtcbiAgLy8gQWN0XG4gIGNvbnN0IHdhcm4gPSBqZXN0LnNweU9uKGxvZywgJ3dhcm4nKTtcbiAgcHJvY2Vzcy5lbnYub3ZlcnJpZGVXYXJuaW5nc0VuYWJsZWQgPSB1bmRlZmluZWQ7XG4gIGNvbnN0IHJlc3VsdCA9IG92ZXJyaWRlUHJvcHMoYSwgYik7XG4gIC8vIEFzc2VydFxuICBleHBlY3Qod2FybikudG9CZUNhbGxlZFRpbWVzKDYpO1xuICBleHBlY3QocmVzdWx0KS50b0VxdWFsKHtcbiAgICBkZXN0aW5hdGlvbjogJ3NhbXBsZURlc3RpbmF0aW9uVmFsdWVCJyxcbiAgICBtYXhSZWNvcmRBZ2U6ICdzYW1wbGVNYXhSZWNvcmRBZ2VWYWx1ZUInLFxuICAgIGV4cGlyYXRpb246ICdzYW1wbGVFeHBpcmF0aW9uVmFsdWVCJyxcbiAgICB0cmFuc2l0aW9uQWZ0ZXI6ICdzYW1wbGVUcmFuc2l0aW9uVmFsdWVCJyxcbiAgICB0aW1lb3V0OiAnc2FtcGxlVGltZW91dFZhbHVlQicsXG4gICAgcGVyaW9kOiAnc2FtcGxlUGVyaW9kVmFsdWVBJyxcbiAgICBub2RlOiAnc2FtcGxlTm9kZUEnXG4gIH0pO1xufSk7XG5cbnRlc3QoJ1Rlc3Qgb3ZlcnJpZGVQcm9wcyB3aXRoIHdhcm5pbmdzIGRpc2FibGVkIGluIGFyZ3VtZW50JywgKCkgPT4ge1xuICBwcm9jZXNzLmVudi5vdmVycmlkZVdhcm5pbmdzRW5hYmxlZCA9ICd0cnVlJztcbiAgY29uc3QgYSA9IHtcbiAgICBrZXlBOiAndmFsdWVBJyxcbiAgICBrZXlCOiAndmFsdWVCJyxcbiAgICBrZXlDOiAndmFsdWVDJ1xuICB9O1xuICBjb25zdCBiID0ge1xuICAgIGtleUE6ICduZXctdmFsdWVBJyxcbiAgICBrZXlEOiAndmFsdWVEJ1xuICB9O1xuICAvLyBBY3RcbiAgY29uc3Qgd2FybiA9IGplc3Quc3B5T24obG9nLCAnd2FybicpO1xuICBvdmVycmlkZVByb3BzKGEsIGIsIHVuZGVmaW5lZCwgdHJ1ZSk7XG4gIC8vIEFzc2VydFxuICBleHBlY3Qod2FybikudG9CZUNhbGxlZFRpbWVzKDApO1xuXG59KTtcblxudGVzdCgnVGVzdCBvdmVycmlkZVByb3BzIHdpdGggZGVlcCBhcmd1bWVudHMnLCAoKSA9PiB7XG4gIGNvbnN0IGEgPSB7XG4gICAga2V5QTogJ3ZhbHVlQScsXG4gICAga2V5QjogJ3ZhbHVlQicsXG4gICAga2V5Qzoge1xuICAgICAga2V5Q0E6ICd2YWx1ZUNBJyxcbiAgICAgIGtleUNCOiAndmFsdWVDQidcbiAgICB9LFxuICAgIGtleUQ6ICd2YWx1ZUQnXG4gIH07XG4gIGNvbnN0IGIgPSB7XG4gICAga2V5QTogJ25ldy12YWx1ZUEnLFxuICAgIGtleUI6ICd2YWx1ZUInLFxuICAgIGtleUM6IHtcbiAgICAgIGtleUNBOiAndmFsdWVDQU5ldycsXG4gICAgfSxcbiAgICBrZXlEOiB7XG4gICAgICBrZXlEQTogJ3ZhbHVlREFOZXcnLFxuICAgICAga2V5REI6ICd2YWx1ZURCTmV3J1xuICAgIH1cbiAgfTtcbiAgLy8gQWN0XG4gIGNvbnN0IHdhcm4gPSBqZXN0LnNweU9uKGxvZywgJ3dhcm4nKTtcbiAgb3ZlcnJpZGVQcm9wcyhhLCBiKTtcbiAgLy8gQXNzZXJ0XG4gIGV4cGVjdCh3YXJuKS50b0JlQ2FsbGVkVGltZXMoMyk7XG59KTtcblxudGVzdCgnQ29uZmlybSBub2RlIHN0b3BzIGNpcmN1bGFyIHJlZmVyZW5jZSB0cmF2ZXJzYWwnLCAoKSA9PiB7XG4gIC8vIEFycmFuZ2VcbiAgY29uc3QgYSA9IHtcbiAgICBrZXlBOiAndmFsdWVBJyxcbiAgICBrZXlCOiAndmFsdWVCJyxcbiAgICBrZXlDOiAndmFsdWVDJ1xuICB9O1xuICBjb25zdCBiID0ge1xuICAgIGtleUE6ICduZXctdmFsdWVBJyxcbiAgICBrZXlEOiAndmFsdWVEJyxcbiAgICBrZXlFOiB7XG4gICAgICBub2RlOiB7fVxuICAgIH1cbiAgfTtcbiAgYi5rZXlFLm5vZGUgPSBiO1xuXG4gIGNvbnN0IHdhcm4gPSBqZXN0LnNweU9uKGxvZywgJ3dhcm4nKTtcbiAgZmxhZ092ZXJyaWRkZW5EZWZhdWx0cyhhLCBiKTtcbiAgLy8gQXNzZXJ0XG4gIGV4cGVjdCh3YXJuKS50b0JlQ2FsbGVkVGltZXMoMSk7XG59KTtcbiJdfQ==
|
|
285
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcnJpZGUtd2FybmluZy1zZXJ2aWNlLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJvdmVycmlkZS13YXJuaW5nLXNlcnZpY2UudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7O0FBRUgsbUNBQW1DO0FBQ25DLDhFQUF5RTtBQUN6RSwyQkFBb0M7QUFFcEMsYUFBYTtBQUNiLFVBQVUsQ0FBQyxHQUFHLEVBQUU7SUFDZCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDcEIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3JCLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQztBQUM3QyxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQywrQ0FBK0MsRUFBRSxHQUFHLEVBQUU7SUFDekQsVUFBVTtJQUNWLE1BQU0sQ0FBQyxHQUFHO1FBQ1IsSUFBSSxFQUFFLFFBQVE7UUFDZCxJQUFJLEVBQUUsUUFBUTtRQUNkLElBQUksRUFBRSxRQUFRO0tBQ2YsQ0FBQztJQUNGLE1BQU0sQ0FBQyxHQUFHO1FBQ1IsSUFBSSxFQUFFLFlBQVk7UUFDbEIsSUFBSSxFQUFFLFFBQVE7S0FDZixDQUFDO0lBQ0YsTUFBTTtJQUNOLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pELElBQUEsaURBQXNCLEVBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzdCLFNBQVM7SUFDVCxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNDLENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLCtDQUErQyxFQUFFLEdBQUcsRUFBRTtJQUN6RCxVQUFVO0lBQ1YsTUFBTSxDQUFDLEdBQUc7UUFDUixJQUFJLEVBQUUsUUFBUTtRQUNkLElBQUksRUFBRSxRQUFRO1FBQ2QsSUFBSSxF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TSxDQUFDLEdBQUc7UUFDUixJQUFJLEVBQUUsUUFBUTtRQUNkLElBQUksRUFBRSxRQUFRO1FBQ2QsSUFBSSxFQUFFLFFBQVE7S0FDZixDQUFDO0lBQ0YsTUFBTSxDQUFDLEdBQUc7UUFDUixJQUFJLEVBQUUsWUFBWTtRQUNsQixJQUFJLEVBQUUsUUFBUTtRQUNkLElBQUksRUFBRTtZQUNKLElBQUksRUFBRSxFQUFFO1NBQ1Q7S0FDRixDQUFDO0lBQ0YsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBRWhCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pELElBQUEsaURBQXNCLEVBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzdCLFNBQVM7SUFDVCxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNDLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIikuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2VcbiAqICB3aXRoIHRoZSBMaWNlbnNlLiBBIGNvcHkgb2YgdGhlIExpY2Vuc2UgaXMgbG9jYXRlZCBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIG9yIGluIHRoZSAnbGljZW5zZScgZmlsZSBhY2NvbXBhbnlpbmcgdGhpcyBmaWxlLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTXG4gKiAgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcbiAqICBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0ICogYXMgcHJvY2VzcyBmcm9tICdwcm9jZXNzJztcbmltcG9ydCB7IGZsYWdPdmVycmlkZGVuRGVmYXVsdHMgfSBmcm9tICcuLi9saWIvb3ZlcnJpZGUtd2FybmluZy1zZXJ2aWNlJztcbmltcG9ydCB7IG92ZXJyaWRlUHJvcHMgfSBmcm9tICcuLi8nO1xuXG4vLyBNb2NrIHNldHVwXG5iZWZvcmVFYWNoKCgpID0+IHtcbiAgamVzdC5yZXNldE1vZHVsZXMoKTtcbiAgamVzdC5jbGVhckFsbE1vY2tzKCk7XG4gIGRlbGV0ZSBwcm9jZXNzLmVudi5vdmVycmlkZVdhcm5pbmdzRW5hYmxlZDtcbn0pO1xuXG50ZXN0KCdUZXN0IG92ZXJyaWRlIGRldGVjdGlvbjogcG9zaXRpdmUsIG5vdC1uZXN0ZWQnLCAoKSA9PiB7XG4gIC8vIEFycmFuZ2VcbiAgY29uc3QgYSA9IHtcbiAgICBrZXlBOiAndmFsdWVBJyxcbiAgICBrZXlCOiAndmFsdWVCJyxcbiAgICBrZXlDOiAndmFsdWVDJ1xuICB9O1xuICBjb25zdCBiID0ge1xuICAgIGtleUE6ICduZXctdmFsdWVBJyxcbiAgICBrZXlEOiAndmFsdWVEJ1xuICB9O1xuICAvLyBBY3RcbiAgY29uc3QgY29uc29sZUxvZ1NweSA9IGplc3Quc3B5T24oY29uc29sZSwgJ2xvZycpO1xuICBmbGFnT3ZlcnJpZGRlbkRlZmF1bHRzKGEsIGIpO1xuICAvLyBBc3NlcnRcbiAgZXhwZWN0KGNvbnNvbGVMb2dTcHkpLnRvQmVDYWxsZWRUaW1lcygxKTtcbn0pO1xuXG50ZXN0KCdUZXN0IG92ZXJyaWRlIGRldGVjdGlvbjogbmVnYXRpdmUsIG5vdC1uZXN0ZWQnLCAoKSA9PiB7XG4gIC8vIEFycmFuZ2VcbiAgY29uc3QgYSA9IHtcbiAgICBrZXlBOiAndmFsdWVBJyxcbiAgICBrZXlCOiAndmFsdWVCJyxcbiAgICBrZXlDOiAndmFsdWVDJ1xuICB9O1xuICBjb25zdCBiID0ge1xuICAgIGtleUQ6ICd2YWx1ZUQnXG4gIH07XG4gIC8vIEFjdFxuICBjb25zdCBjb25zb2xlTG9nU3B5ID0gamVzdC5zcHlPbihjb25zb2xlLCAnbG9nJyk7XG4gIGZsYWdPdmVycmlkZGVuRGVmYXVsdHMoYSwgYik7XG4gIC8vIEFzc2VydFxuICBleHBlY3QoY29uc29sZUxvZ1NweSkudG9CZUNhbGxlZFRpbWVzKDApO1xufSk7XG5cbnRlc3QoJ1Rlc3Qgb3ZlcnJpZGUgZGV0ZWN0aW9uOiBwb3NpdGl2ZSwgbmVzdGVkJywgKCkgPT4ge1xuICAvLyBBcnJhbmdlXG4gIGNvbnN0IGEgPSB7XG4gICAga2V5QTogJ3ZhbHVlQScsXG4gICAga2V5QjogJ3ZhbHVlQicsXG4gICAga2V5QzogJ3ZhbHVlQycsXG4gICAga2V5RDoge1xuICAgICAga2V5REE6ICd2YWx1ZURBJyxcbiAgICAgIGtleURCOiAndmFsdWVEQidcbiAgICB9XG4gIH07XG4gIGNvbnN0IGIgPSB7XG4gICAga2V5QzogJ3ZhbHVlQ0FuZXcnLFxuICAgIGtleUQ6IHtcbiAgICAgIGtleURBOiAndmFsdWVEQW5ldydcbiAgICB9XG4gIH07XG4gIC8vIEFjdFxuICBjb25zdCBjb25zb2xlTG9nU3B5ID0gamVzdC5zcHlPbihjb25zb2xlLCAnbG9nJyk7XG4gIGZsYWdPdmVycmlkZGVuRGVmYXVsdHMoYSwgYik7XG4gIC8vIEFzc2VydFxuICBleHBlY3QoY29uc29sZUxvZ1NweSkudG9CZUNhbGxlZFRpbWVzKDIpO1xufSk7XG5cbnRlc3QoJ1Rlc3Qgb3ZlcnJpZGUgZGV0ZWN0aW9uOiBuZWdhdGl2ZSwgbmVzdGVkJywgKCkgPT4ge1xuICAvLyBBcnJhbmdlXG4gIGNvbnN0IGEgPSB7XG4gICAga2V5QTogJ3ZhbHVlQScsXG4gICAga2V5QjogJ3ZhbHVlQicsXG4gICAga2V5QzogJ3ZhbHVlQycsXG4gICAga2V5RDoge1xuICAgICAga2V5REE6ICd2YWx1ZURBJyxcbiAgICAgIGtleURCOiAndmFsdWVEQidcbiAgICB9XG4gIH07XG4gIGNvbnN0IGIgPSB7XG4gICAga2V5RDoge1xuICAgICAga2V5REE6ICd2YWx1ZURBJ1xuICAgIH1cbiAgfTtcbiAgLy8gQWN0XG4gIGNvbnN0IGNvbnNvbGVMb2dTcHkgPSBqZXN0LnNweU9uKGNvbnNvbGUsICdsb2cnKTtcbiAgZmxhZ092ZXJyaWRkZW5EZWZhdWx0cyhhLCBiKTtcbiAgLy8gQXNzZXJ0XG4gIGV4cGVjdChjb25zb2xlTG9nU3B5KS50b0JlQ2FsbGVkVGltZXMoMCk7XG59KTtcblxudGVzdCgnVGVzdCBvdmVycmlkZSB3YXJuaW5nIG9uL29mZjogZGVmYXVsdCBvbicsICgpID0+IHtcbiAgLy8gQXJyYW5nZVxuICBjb25zdCBhID0ge1xuICAgIGtleUE6ICd2YWx1ZUEnLFxuICAgIGtleUI6ICd2YWx1ZUInLFxuICAgIGtleUM6ICd2YWx1ZUMnXG4gIH07XG4gIGNvbnN0IGIgPSB7XG4gICAga2V5QTogJ25ldy12YWx1ZUEnLFxuICAgIGtleUQ6ICd2YWx1ZUQnXG4gIH07XG4gIC8vIEFjdFxuICBjb25zdCBjb25zb2xlTG9nU3B5ID0gamVzdC5zcHlPbihjb25zb2xlLCAnbG9nJyk7XG4gIG92ZXJyaWRlUHJvcHMoYSwgYik7XG4gIC8vIEFzc2VydFxuICBleHBlY3QoY29uc29sZUxvZ1NweSkudG9CZUNhbGxlZFRpbWVzKDEpO1xufSk7XG5cbnRlc3QoJ1Rlc3Qgb3ZlcnJpZGUgd2FybmluZyBvbi9vZmY6IGV4cGxpY2l0IG9uJywgKCkgPT4ge1xuICAvLyBBcnJhbmdlXG4gIGNvbnN0IGEgPSB7XG4gICAga2V5QTogJ3ZhbHVlQScsXG4gICAga2V5QjogJ3ZhbHVlQicsXG4gICAga2V5QzogJ3ZhbHVlQydcbiAgfTtcbiAgY29uc3QgYiA9IHtcbiAgICBrZXlBOiAnbmV3LXZhbHVlQScsXG4gICAga2V5RDogJ3ZhbHVlRCdcbiAgfTtcbiAgcHJvY2Vzcy5lbnYub3ZlcnJpZGVXYXJuaW5nc0VuYWJsZWQgPSAndHJ1ZSc7XG4gIC8vIEFjdFxuICBjb25zdCBjb25zb2xlTG9nU3B5ID0gamVzdC5zcHlPbihjb25zb2xlLCAnbG9nJyk7XG4gIG92ZXJyaWRlUHJvcHMoYSwgYik7XG4gIC8vIEFzc2VydFxuICBleHBlY3QoY29uc29sZUxvZ1NweSkudG9CZUNhbGxlZFRpbWVzKDEpO1xufSk7XG5cbnRlc3QoJ1Rlc3Qgb3ZlcnJpZGUgd2FybmluZyBvbi9vZmY6IGV4cGxpY2l0IG9mZicsICgpID0+IHtcbiAgLy8gQXJyYW5nZVxuICBjb25zdCBhID0ge1xuICAgIGtleUE6ICd2YWx1ZUEnLFxuICAgIGtleUI6ICd2YWx1ZUInLFxuICAgIGtleUM6ICd2YWx1ZUMnXG4gIH07XG4gIGNvbnN0IGIgPSB7XG4gICAga2V5QTogJ25ldy12YWx1ZUEnLFxuICAgIGtleUQ6ICd2YWx1ZUQnXG4gIH07XG4gIC8vIEFjdFxuICBjb25zdCBjb25zb2xlTG9nU3B5ID0gamVzdC5zcHlPbihjb25zb2xlLCAnbG9nJyk7XG4gIHByb2Nlc3MuZW52Lm92ZXJyaWRlV2FybmluZ3NFbmFibGVkID0gJ2ZhbHNlJztcbiAgY29uc3QgcmVzdWx0ID0gb3ZlcnJpZGVQcm9wcyhhLCBiKTtcbiAgLy8gQXNzZXJ0XG4gIGV4cGVjdChjb25zb2xlTG9nU3B5KS50b0JlQ2FsbGVkVGltZXMoMCk7XG5cbiAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbCh7XG4gICAga2V5QTogJ25ldy12YWx1ZUEnLFxuICAgIGtleUI6ICd2YWx1ZUInLFxuICAgIGtleUM6ICd2YWx1ZUMnLFxuICAgIGtleUQ6ICd2YWx1ZUQnXG4gIH0pO1xuXG59KTtcblxudGVzdCgnVGVzdCBvdmVycmlkZSB3YXJuaW5nIG9uL29mZjogdW5kZWZpbmVkIG9uJywgKCkgPT4ge1xuICAvLyBBcnJhbmdlXG4gIGNvbnN0IGEgPSB7XG4gICAga2V5QTogJ3ZhbHVlQScsXG4gICAga2V5QjogJ3ZhbHVlQicsXG4gICAga2V5QzogJ3ZhbHVlQydcbiAgfTtcbiAgY29uc3QgYiA9IHtcbiAgICBrZXlBOiAnbmV3LXZhbHVlQScsXG4gICAga2V5RDogJ3ZhbHVlRCdcbiAgfTtcbiAgLy8gQWN0XG4gIGNvbnN0IGNvbnNvbGVMb2dTcHkgPSBqZXN0LnNweU9uKGNvbnNvbGUsICdsb2cnKTtcbiAgcHJvY2Vzcy5lbnYub3ZlcnJpZGVXYXJuaW5nc0VuYWJsZWQgPSB1bmRlZmluZWQ7XG4gIGNvbnN0IHJlc3VsdCA9IG92ZXJyaWRlUHJvcHMoYSwgYik7XG4gIC8vIEFzc2VydFxuICBleHBlY3QoY29uc29sZUxvZ1NweSkudG9CZUNhbGxlZFRpbWVzKDEpO1xuXG4gIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoe1xuICAgIGtleUE6ICduZXctdmFsdWVBJyxcbiAgICBrZXlCOiAndmFsdWVCJyxcbiAgICBrZXlDOiAndmFsdWVDJyxcbiAgICBrZXlEOiAndmFsdWVEJ1xuICB9KTtcblxufSk7XG5cbnRlc3QoJ1Rlc3QgY3VycmVudCBwcmVmaWx0ZXJzJywgKCkgPT4ge1xuICAvLyBBcnJhbmdlXG4gIGNvbnN0IGEgPSB7XG4gICAgZGVzdGluYXRpb246ICdzYW1wbGVEZXN0aW5hdGlvblZhbHVlQScsXG4gICAgbWF4UmVjb3JkQWdlOiAnc2FtcGxlTWF4UmVjb3JkQWdlVmFsdWVBJyxcbiAgICBleHBpcmF0aW9uOiAnc2FtcGxlRXhwaXJhdGlvblZhbHVlQScsXG4gICAgdHJhbnNpdGlvbkFmdGVyOiAnc2FtcGxlVHJhbnNpdGlvblZhbHVlQScsXG4gICAgdGltZW91dDogJ3NhbXBsZVRpbWVvdXRWYWx1ZUEnLFxuICAgIHBlcmlvZDogJ3NhbXBsZVBlcmlvZFZhbHVlQScsXG4gICAgbm9kZTogJ3NhbXBsZU5vZGVBJ1xuICB9O1xuICBjb25zdCBiID0ge1xuICAgIGRlc3RpbmF0aW9uOiAnc2FtcGxlRGVzdGluYXRpb25WYWx1ZUInLFxuICAgIG1heFJlY29yZEFnZTogJ3NhbXBsZU1heFJlY29yZEFnZVZhbHVlQicsXG4gICAgZXhwaXJhdGlvbjogJ3NhbXBsZUV4cGlyYXRpb25WYWx1ZUInLFxuICAgIHRyYW5zaXRpb25BZnRlcjogJ3NhbXBsZVRyYW5zaXRpb25WYWx1ZUInLFxuICAgIHRpbWVvdXQ6ICdzYW1wbGVUaW1lb3V0VmFsdWVCJyxcbiAgICBwZXJpb2Q6ICdzYW1wbGVQZXJpb2RWYWx1ZUEnLFxuICAgIG5vZGU6ICdzYW1wbGVOb2RlQSdcbiAgfTtcbiAgLy8gQWN0XG4gIGNvbnN0IGNvbnNvbGVMb2dTcHkgPSBqZXN0LnNweU9uKGNvbnNvbGUsICdsb2cnKTtcbiAgcHJvY2Vzcy5lbnYub3ZlcnJpZGVXYXJuaW5nc0VuYWJsZWQgPSB1bmRlZmluZWQ7XG4gIGNvbnN0IHJlc3VsdCA9IG92ZXJyaWRlUHJvcHMoYSwgYik7XG4gIC8vIEFzc2VydFxuICBleHBlY3QoY29uc29sZUxvZ1NweSkudG9CZUNhbGxlZFRpbWVzKDYpO1xuICBleHBlY3QocmVzdWx0KS50b0VxdWFsKHtcbiAgICBkZXN0aW5hdGlvbjogJ3NhbXBsZURlc3RpbmF0aW9uVmFsdWVCJyxcbiAgICBtYXhSZWNvcmRBZ2U6ICdzYW1wbGVNYXhSZWNvcmRBZ2VWYWx1ZUInLFxuICAgIGV4cGlyYXRpb246ICdzYW1wbGVFeHBpcmF0aW9uVmFsdWVCJyxcbiAgICB0cmFuc2l0aW9uQWZ0ZXI6ICdzYW1wbGVUcmFuc2l0aW9uVmFsdWVCJyxcbiAgICB0aW1lb3V0OiAnc2FtcGxlVGltZW91dFZhbHVlQicsXG4gICAgcGVyaW9kOiAnc2FtcGxlUGVyaW9kVmFsdWVBJyxcbiAgICBub2RlOiAnc2FtcGxlTm9kZUEnXG4gIH0pO1xufSk7XG5cbnRlc3QoJ1Rlc3Qgb3ZlcnJpZGVQcm9wcyB3aXRoIHdhcm5pbmdzIGRpc2FibGVkIGluIGFyZ3VtZW50JywgKCkgPT4ge1xuICBwcm9jZXNzLmVudi5vdmVycmlkZVdhcm5pbmdzRW5hYmxlZCA9ICd0cnVlJztcbiAgY29uc3QgYSA9IHtcbiAgICBrZXlBOiAndmFsdWVBJyxcbiAgICBrZXlCOiAndmFsdWVCJyxcbiAgICBrZXlDOiAndmFsdWVDJ1xuICB9O1xuICBjb25zdCBiID0ge1xuICAgIGtleUE6ICduZXctdmFsdWVBJyxcbiAgICBrZXlEOiAndmFsdWVEJ1xuICB9O1xuICAvLyBBY3RcbiAgY29uc3QgY29uc29sZUxvZ1NweSA9IGplc3Quc3B5T24oY29uc29sZSwgJ2xvZycpO1xuICBvdmVycmlkZVByb3BzKGEsIGIsIHVuZGVmaW5lZCwgdHJ1ZSk7XG4gIC8vIEFzc2VydFxuICBleHBlY3QoY29uc29sZUxvZ1NweSkudG9CZUNhbGxlZFRpbWVzKDApO1xuXG59KTtcblxudGVzdCgnVGVzdCBvdmVycmlkZVByb3BzIHdpdGggZGVlcCBhcmd1bWVudHMnLCAoKSA9PiB7XG4gIGNvbnN0IGEgPSB7XG4gICAga2V5QTogJ3ZhbHVlQScsXG4gICAga2V5QjogJ3ZhbHVlQicsXG4gICAga2V5Qzoge1xuICAgICAga2V5Q0E6ICd2YWx1ZUNBJyxcbiAgICAgIGtleUNCOiAndmFsdWVDQidcbiAgICB9LFxuICAgIGtleUQ6ICd2YWx1ZUQnXG4gIH07XG4gIGNvbnN0IGIgPSB7XG4gICAga2V5QTogJ25ldy12YWx1ZUEnLFxuICAgIGtleUI6ICd2YWx1ZUInLFxuICAgIGtleUM6IHtcbiAgICAgIGtleUNBOiAndmFsdWVDQU5ldycsXG4gICAgfSxcbiAgICBrZXlEOiB7XG4gICAgICBrZXlEQTogJ3ZhbHVlREFOZXcnLFxuICAgICAga2V5REI6ICd2YWx1ZURCTmV3J1xuICAgIH1cbiAgfTtcbiAgLy8gQWN0XG4gIGNvbnN0IGNvbnNvbGVMb2dTcHkgPSBqZXN0LnNweU9uKGNvbnNvbGUsICdsb2cnKTtcbiAgb3ZlcnJpZGVQcm9wcyhhLCBiKTtcbiAgLy8gQXNzZXJ0XG4gIGV4cGVjdChjb25zb2xlTG9nU3B5KS50b0JlQ2FsbGVkVGltZXMoMyk7XG59KTtcblxudGVzdCgnQ29uZmlybSBub2RlIHN0b3BzIGNpcmN1bGFyIHJlZmVyZW5jZSB0cmF2ZXJzYWwnLCAoKSA9PiB7XG4gIC8vIEFycmFuZ2VcbiAgY29uc3QgYSA9IHtcbiAgICBrZXlBOiAndmFsdWVBJyxcbiAgICBrZXlCOiAndmFsdWVCJyxcbiAgICBrZXlDOiAndmFsdWVDJ1xuICB9O1xuICBjb25zdCBiID0ge1xuICAgIGtleUE6ICduZXctdmFsdWVBJyxcbiAgICBrZXlEOiAndmFsdWVEJyxcbiAgICBrZXlFOiB7XG4gICAgICBub2RlOiB7fVxuICAgIH1cbiAgfTtcbiAgYi5rZXlFLm5vZGUgPSBiO1xuXG4gIGNvbnN0IGNvbnNvbGVMb2dTcHkgPSBqZXN0LnNweU9uKGNvbnNvbGUsICdsb2cnKTtcbiAgZmxhZ092ZXJyaWRkZW5EZWZhdWx0cyhhLCBiKTtcbiAgLy8gQXNzZXJ0XG4gIGV4cGVjdChjb25zb2xlTG9nU3B5KS50b0JlQ2FsbGVkVGltZXMoMSk7XG59KTtcbiJdfQ==
|
|
@@ -772,7 +772,7 @@ function CheckLogGroup(template) {
|
|
|
772
772
|
"Fn::Join": [
|
|
773
773
|
"",
|
|
774
774
|
[
|
|
775
|
-
assertions_1.Match.stringLikeRegexp('
|
|
775
|
+
assertions_1.Match.stringLikeRegexp('/aws/vendedlogs/pipes/constructs'),
|
|
776
776
|
{
|
|
777
777
|
"Fn::Select": [
|
|
778
778
|
2,
|
|
@@ -784,4 +784,4 @@ function CheckLogGroup(template) {
|
|
|
784
784
|
},
|
|
785
785
|
});
|
|
786
786
|
}
|
|
787
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZXMtaGVscGVyLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwaXBlcy1oZWxwZXIudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7O0FBRUgsa0RBQStDO0FBQy9DLHNFQUFnRTtBQUNoRSx3RUFBNEU7QUFDNUUsNkNBQW9DO0FBQ3BDLGdDQUFnQztBQUVoQyxpREFBaUQ7QUFFakQseUNBQXlDO0FBQ3pDLHVEQUF5RDtBQUN6RCxtREFBcUQ7QUFFckQsb0NBQW9DO0FBQ3BDLHNDQUFzQztBQUN0QyxvQ0FBb0M7QUFFcEMsSUFBSSxDQUFDLDZCQUE2QixFQUFFLEdBQUcsRUFBRTtJQUN2QyxRQUFRO0lBQ1IsTUFBTSxLQUFLLEdBQUcsSUFBSSxtQkFBSyxFQUFFLENBQUM7SUFFMUIsTUFBTSxrQkFBa0IsR0FBRyxJQUFBLHVCQUFVLEVBQUMsS0FBSyxFQUFFLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMvRCxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRXJFLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN2RSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEUsMEVBQTBFO0lBQzFFLE1BQU0sQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6RCxxQkFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM1QixDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyxxQ0FBcUMsRUFBRSxHQUFH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RTtvQkFDZCxTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsTUFBTSxFQUFFO2dDQUNOLG9CQUFvQjtnQ0FDcEIsbUJBQW1CO2dDQUNuQix3QkFBd0I7NkJBQ3pCOzRCQUNELE1BQU0sRUFBRSxPQUFPOzRCQUNmLFFBQVEsRUFBRTtnQ0FDUixZQUFZLEVBQUU7b0NBQ1osa0JBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLGNBQWMsZUFBZSxDQUFDO29DQUN4RCxLQUFLO2lDQUNOOzZCQUNGO3lCQUNGO3FCQUNGO29CQUNELE9BQU8sRUFBRSxZQUFZO2lCQUN0QjtnQkFDRCxVQUFVLEVBQUUsY0FBYzthQUMzQjtZQUNEO2dCQUNFLGNBQWMsRUFBRTtvQkFDZCxTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsTUFBTSxFQUFFLHVCQUF1Qjs0QkFDL0IsTUFBTSxFQUFFLE9BQU87NEJBQ2YsUUFBUSxFQUFFO2dDQUNSLEdBQUcsRUFBRSxrQkFBSyxDQUFDLGdCQUFnQixDQUFDLGVBQWUsY0FBYyxzQkFBc0IsQ0FBQzs2QkFDakY7eUJBQ0Y7cUJBQ0Y7b0JBQ0QsT0FBTyxFQUFFLFlBQVk7aUJBQ3RCO2dCQUNELFVBQVUsRUFBRSxjQUFjO2FBQzNCO1NBQ0Y7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsU0FBUyxhQUFhLENBQUMsUUFBa0I7SUFDdkMsUUFBUSxDQUFDLHFCQUFxQixDQUFDLHFCQUFxQixFQUFFO1FBQ3BELFlBQVksRUFBRTtZQUNaLFVBQVUsRUFBRTtnQkFDVixFQUFFO2dCQUNGO29CQUNFLGtCQUFLLENBQUMsZ0JBQWdCLENBQUMsc0NBQXNDLENBQUM7b0JBQzlEO3dCQUNFLFlBQVksRUFBRTs0QkFDWixDQUFDOzRCQUNELGtCQUFLLENBQUMsUUFBUSxFQUFFO3lCQUNqQjtxQkFDRjtpQkFDRjthQUNGO1NBQ0Y7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIikuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2VcbiAqICB3aXRoIHRoZSBMaWNlbnNlLiBBIGNvcHkgb2YgdGhlIExpY2Vuc2UgaXMgbG9jYXRlZCBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIG9yIGluIHRoZSAnbGljZW5zZScgZmlsZSBhY2NvbXBhbnlpbmcgdGhpcyBmaWxlLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTXG4gKiAgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcbiAqICBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgYnVpbGRRdWV1ZSB9IGZyb20gXCIuLi9saWIvc3FzLWhlbHBlclwiO1xuaW1wb3J0IHsgYnVpbGRTdGF0ZU1hY2hpbmUgfSBmcm9tIFwiLi4vbGliL3N0ZXAtZnVuY3Rpb24taGVscGVyXCI7XG5pbXBvcnQgeyBidWlsZER5bmFtb0RCVGFibGVXaXRoU3RyZWFtIH0gZnJvbSBcIi4uL2xpYi9keW5hbW9kYi10YWJsZS1oZWxwZXJcIjtcbmltcG9ydCB7IFN0YWNrIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgKiBhcyBkZWZhdWx0cyBmcm9tICcuLi8nO1xuaW1wb3J0ICogYXMgcGlwZXMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXBpcGVzJztcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCAqIGFzIHNmbiBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc3RlcGZ1bmN0aW9ucyc7XG5pbXBvcnQgKiBhcyBzMyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMnO1xuaW1wb3J0IHsgTWF0Y2gsIFRlbXBsYXRlIH0gZnJvbSBcImF3cy1jZGstbGliL2Fzc2VydGlvbnNcIjtcbmltcG9ydCB7IFJldGVudGlvbkRheXMgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxvZ3NcIjtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUZXN0IHNvdXJjZXMgYW5kIHRhcmdldHMgZ2VuZXJhdGlvblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbnRlc3QoJ0NyZWF0ZSBhIGRlZmF1bHQgU1FTIFNvdXJjZScsICgpID0+IHtcbiAgLy8gU3RhY2tcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcblxuICBjb25zdCBidWlsZFF1ZXVlUmVzcG9uc2UgPSBidWlsZFF1ZXVlKHN0YWNrLCAndGVzdC1xdWV1ZScsIHt9KTtcbiAgY29uc3Qgc3FzU291cmNlID0gZGVmYXVsdHMuQ3JlYXRlU3FzU291cmNlKGJ1aWxkUXVldWVSZXNwb25zZS5xdWV1ZSk7XG5cbiAgZXhwZWN0KHNxc1NvdXJjZS5zb3VyY2VBcm4pLnRvRXF1YWwoYnVpbGRRdWV1ZVJlc3BvbnNlLnF1ZXVlLnF1ZXVlQXJuKTtcbiAgZXhwZWN0KE9iamVjdC5rZXlzKHNxc1NvdXJjZS5zb3VyY2VQYXJhbWV0ZXJzKS5sZW5ndGgpLnRvRXF1YWwoMCk7XG4gIC8vIGJlc3Qgd2UgY2FuIGRvIGhlcmUsIGNvbmZpcm0gdmFsdWVzIHdoZW4gd2UgaW5zdGFudGlhdGUgdGhlIGFjdHVhbCBwaXBlXG4gIGV4cGVjdChzcXNTb3VyY2Uuc291cmNlUG9saWN5LnN0YXRlbWVudENvdW50KS50b0VxdWFsKDEpO1xuICBUZW1wbGF0ZS5mcm9tU3RhY2soc3RhY2spO1xufSk7XG5cbnRlc3QoJ0NyZWF0ZSBhbiBTUVMgU291cmNlIHdpdGggb3ZlcnJpZGVzJywgKCkgPT4ge1xuICAvLyBTdGFja1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuXG4gIGNvbnN0IGJ1aWxkUXVldWVSZXNwb25zZSA9IGJ1aWxkUXVldWUoc3RhY2ssICd0ZXN0LXF1ZXVlJywge30pO1xuICBjb25zdCBzcXNTb3VyY2UgPSBkZWZhdWx0cy5DcmVhdGVTcXNTb3VyY2UoYnVpbGRRdWV1ZVJlc3BvbnNlLnF1ZXVlLCB7XG4gICAgc3FzUXVldWVQYXJhbWV0ZXJzOiB7XG4gICAgICBiYXRjaFNpemU6IDEyMyxcbiAgICB9LFxuICB9KTtcblxuICBleHBlY3Qoc3FzU291cmNlLnNvdXJjZUFybikudG9FcXVhbChidWlsZFF1ZXVlUmVzcG9uc2UucXVldWUucXVldWVBcm4pO1xuICAvLyBCZWNhdXNlIHNxc1F1ZXVlUGFyYW1ldGVycyB0eXBlIGluY2x1ZGUgJ0lSZXNvbHZhYmxlIHwnLCB3ZSBuZWVkIHRvIGV4dHJhY3QgdGhlIHByb3BlcnR5IHRoaXMgd2F5XG4gIGNvbnN0IGJhdGNoU2l6ZVByb3AgPVxuICAgIChzcXNTb3VyY2Uuc291cmNlUGFyYW1ldGVycy5zcXNRdWV1ZVBhcmFtZXRlcnMgYXMgcGlwZXMuQ2ZuUGlwZS5QaXBlU291cmNlU3FzUXVldWVQYXJhbWV0ZXJzUHJvcGVydHkpIS5iYXRjaFNpemU7XG4gIGV4cGVjdChiYXRjaFNpemVQcm9wKS50b0VxdWFsKDEyMyk7XG4gIC8vIGJlc3Qgd2UgY2FuIGRvIGhlcmUsIGNvbmZpcm0gdmFsdWVzIHdoZW4gd2UgaW5zdGFudGlhdGUgdGhlIGFjdHVhbCBwaXBlXG4gIGV4cGVjdChzcXNTb3VyY2Uuc291cmNlUG9saWN5LnN0YXRlbWVudENvdW50KS50b0VxdWFsKDEpO1xufSk7XG5cbnRlc3QoJ0NyZWF0ZSBhIGRlZmF1bHQgRERCIFN0cmVhbXMgU291cmNlJywgKCkgPT4ge1xuICAvLyBTdGFja1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuXG4gIGNvbnN0IGJ1aWxkVGFibGVSZXNwb25zZSA9IGJ1aWxkRHluYW1vREJUYWJsZVdpdGhTdHJlYW0oc3RhY2ssIHt9KTtcbiAgY29uc3QgdGFibGVTb3VyY2UgPSBkZWZhdWx0cy5DcmVhdGVEeW5hbW9EQlN0cmVhbXNTb3VyY2Uoc3RhY2ssIHtcbiAgICB0YWJsZTogYnVpbGRUYWJsZVJlc3BvbnNlLnRhYmxlT2JqZWN0IVxuICB9KTtcblxuICBleHBlY3QodGFibGVTb3VyY2Uuc291cmNlQXJuKS50b0VxdWFsKGJ1aWxkVGFibGVSZXNwb25zZS50YWJsZU9iamVjdD8udGFibGVTdHJlYW1Bcm4pO1xuICBleHBlY3QoT2JqZWN0LmtleXModGFibGVTb3VyY2Uuc291cmNlUGFyYW1ldGVycykubGVuZ3RoKS50b0VxdWFsKDEpO1xuICBleHBlY3QodGFibGVTb3VyY2Uuc291cmNlUG9saWN5LnN0YXRlbWVudENvdW50KS50b0VxdWFsKDIpO1xuICBleHBlY3QodGFibGVTb3VyY2UuZGxxKS50b0JlRGVmaW5lZCgpO1xuICBjb25zdCBzdHJlYW1QYXJhbXRlcnMgPSAodGFibGVTb3VyY2Uuc291cmNlUGFyYW1ldGVycy5keW5hbW9EYlN0cmVhbVBhcmFtZXRlcnMhIGFzIHBpcGVzLkNmblBpcGUuUGlwZVNvdXJjZUR5bmFtb0RCU3RyZWFtUGFyYW1ldGVyc1Byb3BlcnR5KTtcbiAgZXhwZWN0KHN0cmVhbVBhcmFtdGVycy5kZWFkTGV0dGVyQ29uZmlnKS50b0JlRGVmaW5lZCgpO1xufSk7XG5cbnRlc3QoJ0NvbmZpcm0gdGhhdCB3ZSB1c2UgY3VzdG9tIERMUSBwcm9wcycsICgpID0+IHtcbiAgY29uc3QgcXVldWVOYW1lID0gJ3NvbWV0aGluZy11bmlxdWUtYXNkZic7XG4gIC8vIFN0YWNrXG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG5cbiAgY29uc3QgYnVpbGRUYWJsZVJlc3BvbnNlID0gYnVpbGREeW5hbW9EQlRhYmxlV2l0aFN0cmVhbShzdGFjaywge30pO1xuICBkZWZhdWx0cy5DcmVhdGVEeW5hbW9EQlN0cmVhbXNTb3VyY2Uoc3RhY2ssIHtcbiAgICB0YWJsZTogYnVpbGRUYWJsZVJlc3BvbnNlLnRhYmxlT2JqZWN0ISxcbiAgICBzcXNEbHFRdWV1ZVByb3BzOiB7XG4gICAgICBxdWV1ZU5hbWUsXG4gICAgfVxuICB9KTtcblxuICBjb25zdCB0ZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjayk7XG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcyhcIkFXUzo6U1FTOjpRdWV1ZVwiLCB7XG4gICAgUXVldWVOYW1lOiBxdWV1ZU5hbWVcbiAgfSk7XG59KTtcblxudGVzdCgnQ3JlYXRlIEREQiBTdHJlYW1zIFNvdXJjZSB3aXRoIG5vIERMUScsICgpID0+IHtcbiAgLy8gU3RhY2tcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcblxuICBjb25zdCBidWlsZFRhYmxlUmVzcG9uc2UgPSBidWlsZER5bmFtb0RCVGFibGVXaXRoU3RyZWFtKHN0YWNrLCB7fSk7XG4gIGNvbnN0IHRhYmxlU291cmNlID0gZGVmYXVsdHMuQ3JlYXRlRHluYW1vREJTdHJlYW1zU291cmNlKHN0YWNrLCB7XG4gICAgdGFibGU6IGJ1aWxkVGFibGVSZXNwb25zZS50YWJsZU9iamVjdCEsXG4gICAgZGVwbG95U3FzRGxxUXVldWU6IGZhbHNlXG4gIH0pO1xuXG4gIGV4cGVjdCh0YWJsZVNvdXJjZS5zb3VyY2VBcm4pLnRvRXF1YWwoYnVpbGRUYWJsZVJlc3BvbnNlLnRhYmxlT2JqZWN0Py50YWJsZVN0cmVhbUFybik7XG4gIGV4cGVjdChPYmplY3Qua2V5cyh0YWJsZVNvdXJjZS5zb3VyY2VQYXJhbWV0ZXJzKS5sZW5ndGgpLnRvRXF1YWwoMSk7XG4gIGV4cGVjdCh0YWJsZVNvdXJjZS5zb3VyY2VQb2xpY3kuc3RhdGVtZW50Q291bnQpLnRvRXF1YWwoMSk7XG4gIGV4cGVjdCh0YWJsZVNvdXJjZS5kbHEpLnRvQmVVbmRlZmluZWQoKTtcbiAgY29uc3Qgc3RyZWFtUGFyYW10ZXJzID0gKHRhYmxlU291cmNlLnNvdXJjZVBhcmFtZXRlcnMuZHluYW1vRGJTdHJlYW1QYXJhbWV0ZXJzISBhcyBwaXBlcy5DZm5QaXBlLlBpcGVTb3VyY2VEeW5hbW9EQlN0cmVhbVBhcmFtZXRlcnNQcm9wZXJ0eSk7XG4gIGV4cGVjdChzdHJlYW1QYXJhbXRlcnMubWF4aW11bVJldHJ5QXR0ZW1wdHMpLnRvQmVVbmRlZmluZWQoKTtcbiAgZXhwZWN0KHN0cmVhbVBhcmFtdGVycy5kZWFkTGV0dGVyQ29uZmlnKS50b0JlVW5kZWZpbmVkKCk7XG4gIGV4cGVjdChzdHJlYW1QYXJhbXRlcnMuc3RhcnRpbmdQb3NpdGlvbikudG9CZURlZmluZWQoKTtcblxufSk7XG5cbnRlc3QoJ0NyZWF0ZSBhbiBEREIgU3RyZWFtcyBTb3VyY2Ugd2l0aCBvdmVycmlkZXMnLCAoKSA9PiB7XG4gIGNvbnN0IGJhdGNoU2l6ZVZhbHVlID0gNDY0MjtcbiAgLy8gU3RhY2tcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcblxuICBjb25zdCBidWlsZFRhYmxlUmVzcG9uc2UgPSBidWlsZER5bmFtb0RCVGFibGVXaXRoU3RyZWFtKHN0YWNrLCB7fSk7XG4gIGNvbnN0IHRhYmxlU291cmNlID0gZGVmYXVsdHMuQ3JlYXRlRHluYW1vREJTdHJlYW1zU291cmNlKHN0YWNrLCB7XG4gICAgdGFibGU6IGJ1aWxkVGFibGVSZXNwb25zZS50YWJsZU9iamVjdCEsXG4gICAgY2xpZW50UHJvcHM6IHtcbiAgICAgIGR5bmFtb0RiU3RyZWFtUGFyYW1ldGVyczoge1xuICAgICAgICBzdGFydGluZ1Bvc2l0aW9uOiAnTEFURVNUJyxcbiAgICAgICAgYmF0Y2hTaXplOiBiYXRjaFNpemVWYWx1ZVxuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgZXhwZWN0KHRhYmxlU291cmNlLnNvdXJjZUFybikudG9FcXVhbChidWlsZFRhYmxlUmVzcG9uc2UudGFibGVPYmplY3Q/LnRhYmxlU3RyZWFtQXJuKTtcbiAgLy8gQmVjYXVzZSBzcXNRdWV1ZVBhcmFtZXRlcnMgdHlwZSBpbmNsdWRlICdJUmVzb2x2YWJsZSB8Jywgd2UgbmVlZCB0byBleHRyYWN0IHRoZSBwcm9wZXJ0eSB0aGlzIHdheVxuICBjb25zdCBiYXRjaFNpemVQcm9wID1cbiAgICAodGFibGVTb3VyY2Uuc291cmNlUGFyYW1ldGVycy5keW5hbW9EYlN0cmVhbVBhcmFtZXRlcnMgYXMgcGlwZXMuQ2ZuUGlwZS5QaXBlU291cmNlRHluYW1vREJTdHJlYW1QYXJhbWV0ZXJzUHJvcGVydHkpIS5iYXRjaFNpemU7XG4gIGV4cGVjdChiYXRjaFNpemVQcm9wKS50b0VxdWFsKGJhdGNoU2l6ZVZhbHVlKTtcbiAgLy8gYmVzdCB3ZSBjYW4gZG8gaGVyZSwgY29uZmlybSB2YWx1ZXMgd2hlbiB3ZSBpbnN0YW50aWF0ZSB0aGUgYWN0dWFsIHBpcGVcbiAgZXhwZWN0KHRhYmxlU291cmNlLnNvdXJjZVBvbGljeS5zdGF0ZW1lbnRDb3VudCkudG9FcXVhbCgyKTtcblxuICBjb25zdCBzdHJlYW1QYXJhbXRlcnMgPSAodGFibGVTb3VyY2Uuc291cmNlUGFyYW1ldGVycy5keW5hbW9EYlN0cmVhbVBhcmFtZXRlcnMhIGFzIHBpcGVzLkNmblBpcGUuUGlwZVNvdXJjZUR5bmFtb0RCU3RyZWFtUGFyYW1ldGVyc1Byb3BlcnR5KTtcbiAgZXhwZWN0KHN0cmVhbVBhcmFtdGVycy5tYXhpbXVtUmV0cnlBdHRlbXB0cykudG9FcXVhbCgzKTtcbiAgZXhwZWN0KHN0cmVhbVBhcmFtdGVycy5kZWFkTGV0dGVyQ29uZmlnKS50b0JlRGVmaW5lZCgpO1xuICBleHBlY3Qoc3RyZWFtUGFyYW10ZXJzLnN0YXJ0aW5nUG9zaXRpb24pLnRvQmVEZWZpbmVkKCk7XG59KTtcblxudGVzdCgnQ3JlYXRlIGEgZGVmYXVsdCBTdGVwIEZ1bmN0aW9ucyBUYXJnZXQnLCAoKSA9PiB7XG5cbiAgLy8gU3RhY2tcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcblxuICBjb25zdCBidWlsZFN0YXRlTWFjaGluZVJlc3BvbnNlID0gYnVpbGRTdGF0ZU1hY2hpbmUoc3RhY2ssICd0ZXN0LXN0YXRlLW1hY2hpbmUnLCB7XG4gICAgc3RhdGVNYWNoaW5lUHJvcHM6IHtcbiAgICAgIGRlZmluaXRpb25Cb2R5OiBkZWZhdWx0cy5DcmVhdGVUZXN0U3RhdGVNYWNoaW5lRGVmaW5pdGlvbkJvZHkoc3RhY2ssICdzdHViLXN0YXRlLW1hY2hpbmUnKVxuICAgIH1cbiAgfSk7XG4gIGNvbnN0IHN0YXRlTWFjaGluZVRhcmdldCA9IGRlZmF1bHRzLkNyZWF0ZVN0YXRlTWFjaGluZVRhcmdldChidWlsZFN0YXRlTWFjaGluZVJlc3BvbnNlLnN0YXRlTWFjaGluZSk7XG5cbiAgZXhwZWN0KHN0YXRlTWFjaGluZVRhcmdldC50YXJnZXRBcm4pLnRvRXF1YWwoYnVpbGRTdGF0ZU1hY2hpbmVSZXNwb25zZS5zdGF0ZU1hY2hpbmUuc3RhdGVNYWNoaW5lQXJuKTtcbiAgZXhwZWN0KHN0YXRlTWFjaGluZVRhcmdldC50YXJnZXRQYXJhbWV0ZXJzLnN0ZXBGdW5jdGlvblN0YXRlTWFjaGluZVBhcmFtZXRlcnMpLnRvQmVEZWZpbmVkKCk7XG4gIGNvbnN0IGludm9jYXRpb25UeXBlOiBzdHJpbmcgfCB1bmRlZmluZWQgPVxuICAgIChzdGF0ZU1hY2hpbmVUYXJnZXQudGFyZ2V0UGFyYW1ldGVycy5zdGVwRnVuY3Rpb25TdGF0ZU1hY2hpbmVQYXJhbWV0ZXJzIGFzIHBpcGVzLkNmblBpcGUuUGlwZVRhcmdldFN0YXRlTWFjaGluZVBhcmFtZXRlcnNQcm9wZXJ0eSkuaW52b2NhdGlvblR5cGU7XG4gIGV4cGVjdChpbnZvY2F0aW9uVHlwZSkudG9FcXVhbCgnRklSRV9BTkRfRk9SR0VUJyk7XG4gIGV4cGVjdChPYmplY3Qua2V5cyhzdGF0ZU1hY2hpbmVUYXJnZXQudGFyZ2V0UGFyYW1ldGVycykubGVuZ3RoKS50b0VxdWFsKDEpO1xuICAvLyBiZXN0IHdlIGNhbiBkbyBoZXJlLCBjb25maXJtIHZhbHVlcyB3aGVuIHdlIGluc3RhbnRpYXRlIHRoZSBhY3R1YWwgcGlwZVxuICBleHBlY3Qoc3RhdGVNYWNoaW5lVGFyZ2V0LnRhcmdldFBvbGljeS5zdGF0ZW1lbnRDb3VudCkudG9FcXVhbCgxKTtcbiAgVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcblxufSk7XG5cbnRlc3QoJ0NyZWF0ZSBhIFN0ZXAgRnVuY3Rpb25zIFRhcmdldCB3aXRoIG92ZXJyaWRlcycsICgpID0+IHtcblxuICAvLyBTdGFja1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuXG4gIGNvbnN0IGJ1aWxkU3RhdGVNYWNoaW5lUmVzcG9uc2UgPSBidWlsZFN0YXRlTWFjaGluZShzdGFjaywgJ3Rlc3Qtc3RhdGUtbWFjaGluZScsIHtcbiAgICBzdGF0ZU1hY2hpbmVQcm9wczoge1xuICAgICAgZGVmaW5pdGlvbkJvZHk6IGRlZmF1bHRzLkNyZWF0ZVRlc3RTdGF0ZU1hY2hpbmVEZWZpbml0aW9uQm9keShzdGFjaywgJ3N0dWItc3RhdGUtbWFjaGluZScpXG4gICAgfVxuICB9KTtcbiAgY29uc3Qgc3RhdGVNYWNoaW5lVGFyZ2V0ID0gZGVmYXVsdHMuQ3JlYXRlU3RhdGVNYWNoaW5lVGFyZ2V0KGJ1aWxkU3RhdGVNYWNoaW5lUmVzcG9uc2Uuc3RhdGVNYWNoaW5lLCB7XG4gICAgc3RlcEZ1bmN0aW9uU3RhdGVNYWNoaW5lUGFyYW1ldGVyczoge1xuICAgICAgaW52b2NhdGlvblR5cGU6ICdSRVFVRVNUX1JFU1BPTlNFJ1xuICAgIH1cbiAgfSk7XG5cbiAgZXhwZWN0KHN0YXRlTWFjaGluZVRhcmdldC50YXJnZXRBcm4pLnRvRXF1YWwoYnVpbGRTdGF0ZU1hY2hpbmVSZXNwb25zZS5zdGF0ZU1hY2hpbmUuc3RhdGVNYWNoaW5lQXJuKTtcbiAgZXhwZWN0KHN0YXRlTWFjaGluZVRhcmdldC50YXJnZXRQYXJhbWV0ZXJzLnN0ZXBGdW5jdGlvblN0YXRlTWFjaGluZVBhcmFtZXRlcnMpLnRvQmVEZWZpbmVkKCk7XG4gIGNvbnN0IGludm9jYXRpb25UeXBlOiBzdHJpbmcgfCB1bmRlZmluZWQgPVxuICAgIChzdGF0ZU1hY2hpbmVUYXJnZXQudGFyZ2V0UGFyYW1ldGVycy5zdGVwRnVuY3Rpb25TdGF0ZU1hY2hpbmVQYXJhbWV0ZXJzIGFzIHBpcGVzLkNmblBpcGUuUGlwZVRhcmdldFN0YXRlTWFjaGluZVBhcmFtZXRlcnNQcm9wZXJ0eSkuaW52b2NhdGlvblR5cGU7XG4gIGV4cGVjdChpbnZvY2F0aW9uVHlwZSkudG9FcXVhbCgnUkVRVUVTVF9SRVNQT05TRScpO1xuICBleHBlY3QoT2JqZWN0LmtleXMoc3RhdGVNYWNoaW5lVGFyZ2V0LnRhcmdldFBhcmFtZXRlcnMpLmxlbmd0aCkudG9FcXVhbCgxKTtcbiAgLy8gYmVzdCB3ZSBjYW4gZG8gaGVyZSwgY29uZmlybSB2YWx1ZXMgd2hlbiB3ZSBpbnN0YW50aWF0ZSB0aGUgYWN0dWFsIHBpcGVcbiAgZXhwZWN0KHN0YXRlTWFjaGluZVRhcmdldC50YXJnZXRQb2xpY3kuc3RhdGVtZW50Q291bnQpLnRvRXF1YWwoMSk7XG59KTtcblxudGVzdCgnQ2hlY2sgZm9yIGVycm9yIHdoZW4gRExRIGlzIG9mZiBidXQgbWF4IGNvbnN0cmFpbnQgc2V0JywgKCkgPT4ge1xuICAvLyBTdGFja1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuXG4gIGNvbnN0IGJ1aWxkVGFibGVSZXNwb25zZSA9IGJ1aWxkRHluYW1vREJUYWJsZVdpdGhTdHJlYW0oc3RhY2ssIHt9KTtcblxuICBjb25zdCBhcHAgPSAoKSA9PiB7XG4gICAgZGVmYXVsdHMuQ3JlYXRlRHluYW1vREJTdHJlYW1zU291cmNlKHN0YWNrLCB7XG4gICAgICBjbGllbnRQcm9wczoge1xuICAgICAgICBkeW5hbW9EYlN0cmVhbVBhcmFtZXRlcnM6IHtcbiAgICAgICAgICBzdGFydGluZ1Bvc2l0aW9uOiAnTEFURVNUJyxcbiAgICAgICAgICBtYXhpbXVtUmVjb3JkQWdlSW5TZWNvbmRzOiAxMDBcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHRhYmxlOiBidWlsZFRhYmxlUmVzcG9uc2UudGFibGVPYmplY3QhLFxuICAgICAgZGVwbG95U3FzRGxxUXVldWU6IGZhbHNlXG4gICAgfSk7XG4gIH07XG4gIC8vIEFzc2VydGlvblxuICBleHBlY3QoYXBwKS50b1Rocm93RXJyb3IoJ0VSUk9SIC0gcmV0cnkgYW5kIHJlY29yZCBhZ2UgY29uc3RyYWludHMgY2Fubm90IGJlIHNwZWNpZmllZCB3aXRoIG5vIERMUVxcbicpO1xufSk7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVGVzdCBwaXBlIGNyZWF0aW9uXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxudGVzdCgnQ3JlYXRlIGEgZGVmYXVsdCBwaXBlJywgKCkgPT4ge1xuICBjb25zdCBwcmVyZXF1aXNpdGVJZCA9ICdhbGxkZWZhdWx0JztcbiAgY29uc3QgcGlwZUlkID0gJ2RlZmF1bHRwaXBlJztcblxuICAvLyBTdGFja1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuICBjb25zdCBwcmVyZXF1aXNpdGVzID0gQ3JlYXRlUHJlcmVxdWlzaXRlcyhzdGFjaywgcHJlcmVxdWlzaXRlSWQpO1xuXG4gIGNvbnN0IHBpcGVSZXNwb25zZSA9IGRlZmF1bHRzLkJ1aWxkUGlwZShzdGFjaywgcGlwZUlkLCB7XG4gICAgc291cmNlOiBwcmVyZXF1aXNpdGVzLnNvdXJjZSxcbiAgICB0YXJnZXQ6IHByZXJlcXVpc2l0ZXMudGFyZ2V0LFxuICAgIGNsaWVudFByb3BzOiB7fVxuICB9KTtcblxuICBDaGVja1BpcGVSZXNwb25zZVByb3BlcnRpZXMocGlwZVJlc3BvbnNlLCBwcmVyZXF1aXNpdGVzKTtcblxuICBjb25zdCB0ZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjayk7XG4gIHRlbXBsYXRlLnJlc291cmNlQ291bnRJcygnQVdTOjpQaXBlczo6UGlwZScsIDEpO1xuICBDaGVja1BpcGVSZXNvdXJjZSh0ZW1wbGF0ZSwgcGlwZUlkLCBwcmVyZXF1aXNpdGVJZCk7XG4gIENoZWNrUGlwZVJvbGUodGVtcGxhdGUsIHByZXJlcXVpc2l0ZUlkKTtcbiAgQ2hlY2tMb2dHcm91cCh0ZW1wbGF0ZSk7XG59KTtcblxudGVzdCgnQ3JlYXRlIGEgcGlwZSB3aXRoIG92ZXJyaWRlcycsICgpID0+IHtcbiAgY29uc3QgcHJlcmVxdWlzaXRlSWQgPSAnb3ZlcnJpZGVzdGVzdCc7XG4gIGNvbnN0IHBpcGVJZCA9ICdvdmVycmlkZXNwaXBlJztcbiAgLy8gU3RhY2tcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgY29uc3QgcHJlcmVxdWlzaXRlcyA9IENyZWF0ZVByZXJlcXVpc2l0ZXMoc3RhY2ssIHByZXJlcXVpc2l0ZUlkKTtcblxuICBjb25zdCB0ZXN0RGVzY3JpcHRpb24gPSAndGVzdC1kZXNjcmlwdGlvbic7XG4gIGNvbnN0IHBpcGVSZXNwb25zZSA9IGRlZmF1bHRzLkJ1aWxkUGlwZShzdGFjaywgcGlwZUlkLCB7XG4gICAgc291cmNlOiBwcmVyZXF1aXNpdGVzLnNvdXJjZSxcbiAgICB0YXJnZXQ6IHByZXJlcXVpc2l0ZXMudGFyZ2V0LFxuICAgIGNsaWVudFByb3BzOiB7XG4gICAgICBkZXNjcmlwdGlvbjogdGVzdERlc2NyaXB0aW9uXG4gICAgfVxuICB9KTtcbiAgQ2hlY2tQaXBlUmVzcG9uc2VQcm9wZXJ0aWVzKHBpcGVSZXNwb25zZSwgcHJlcmVxdWlzaXRlcyk7XG5cbiAgY29uc3QgdGVtcGxhdGUgPSBUZW1wbGF0ZS5mcm9tU3RhY2soc3RhY2spO1xuICBDaGVja1BpcGVSZXNvdXJjZSh0ZW1wbGF0ZSwgcGlwZUlkLCBwcmVyZXF1aXNpdGVJZCk7XG4gIENoZWNrUGlwZVJvbGUodGVtcGxhdGUsIHByZXJlcXVpc2l0ZUlkKTtcbiAgQ2hlY2tMb2dHcm91cCh0ZW1wbGF0ZSk7XG5cbiAgLy8gVGhlIGRlc2NyaXB0aW9uIGlzIHVuaXF1ZSB0byB0aGlzIHRlc3QsIHNvIGNoZWNrIGl0IGhlcmVcbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OlBpcGVzOjpQaXBlJywge1xuICAgIERlc2NyaXB0aW9uOiB0ZXN0RGVzY3JpcHRpb25cbiAgfSk7XG5cbn0pO1xuXG50ZXN0KCdDcmVhdGUgYSBwaXBlIHdpdGggYSBmaWx0ZXInLCAoKSA9PiB7XG4gIGNvbnN0IHByZXJlcXVpc2l0ZUlkID0gJ2ZpbHRlcnRlc3QnO1xuICBjb25zdCBwaXBlSWQgPSAnZmlsdGVycGlwZSc7XG5cbiAgLy8gU3RhY2tcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgY29uc3QgcHJlcmVxdWlzaXRlcyA9IENyZWF0ZVByZXJlcXVpc2l0ZXMoc3RhY2ssIHByZXJlcXVpc2l0ZUlkKTtcblxuICBjb25zdCB0ZXN0RmlsdGVyUGF0dGVybiA9IGB7XG4gICAgXCJib2R5XCI6IHtcbiAgICAgIFwic3RhdGVcIjogW1wib3BlblwiXVxuICAgIH1cbiAgfWA7XG5cbiAgY29uc3QgcGlwZVJlc3BvbnNlID0gZGVmYXVsdHMuQnVpbGRQaXBlKHN0YWNrLCBwaXBlSWQsIHtcbiAgICBzb3VyY2U6IHByZXJlcXVpc2l0ZXMuc291cmNlLFxuICAgIHRhcmdldDogcHJlcmVxdWlzaXRlcy50YXJnZXQsXG4gICAgY2xpZW50UHJvcHM6IHtcbiAgICAgIHNvdXJjZVBhcmFtZXRlcnM6IHtcbiAgICAgICAgZmlsdGVyQ3JpdGVyaWE6IHtcbiAgICAgICAgICBmaWx0ZXJzOiBbeyBwYXR0ZXJuOiB0ZXN0RmlsdGVyUGF0dGVybiB9XSxcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICB9LFxuICB9KTtcbiAgQ2hlY2tQaXBlUmVzcG9uc2VQcm9wZXJ0aWVzKHBpcGVSZXNwb25zZSwgcHJlcmVxdWlzaXRlcyk7XG5cbiAgY29uc3QgdGVtcGxhdGUgPSBUZW1wbGF0ZS5mcm9tU3RhY2soc3RhY2spO1xuICBDaGVja1BpcGVSZXNvdXJjZSh0ZW1wbGF0ZSwgcGlwZUlkLCBwcmVyZXF1aXNpdGVJZCk7XG4gIENoZWNrUGlwZVJvbGUodGVtcGxhdGUsIHByZXJlcXVpc2l0ZUlkKTtcbiAgQ2hlY2tMb2dHcm91cCh0ZW1wbGF0ZSk7XG5cbiAgLy8gU291cmNlUGFyYW1ldGVycyBpcyB1bmlxdWUgdG8gdGhpcyB0ZXN0LCBzbyBjaGVjayBpdCBoZXJlXG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpQaXBlczo6UGlwZScsIHtcbiAgICBTb3VyY2VQYXJhbWV0ZXJzOiB7XG4gICAgICBGaWx0ZXJDcml0ZXJpYToge1xuICAgICAgICBGaWx0ZXJzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgUGF0dGVybjogdGVzdEZpbHRlclBhdHRlcm5cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICB9XG4gIH0pO1xufSk7XG5cbnRlc3QoJ0NyZWF0ZSBhIHBpcGUgd2l0aCBMYW1iZGEgZnVuY3Rpb24gZW5yaWNobWVudCcsICgpID0+IHtcbiAgY29uc3QgcHJlcmVxdWlzaXRlSWQgPSAnbGFtYmRhZW5yaWNodGVzdCc7XG4gIGNvbnN0IHBpcGVJZCA9ICdsYW1iZGFlbnJpY2hwaXBlJztcblxuICAvLyBTdGFja1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuICBjb25zdCBwcmVyZXF1aXNpdGVzID0gQ3JlYXRlUHJlcmVxdWlzaXRlcyhzdGFjaywgcHJlcmVxdWlzaXRlSWQpO1xuXG4gIGNvbnN0IGVucmljaG1lbnRGdW5jdGlvbiA9IG5ldyBsYW1iZGEuRnVuY3Rpb24oc3RhY2ssICdlbnJpY2htZW50LWZ1bmN0aW9uJywge1xuICAgIGNvZGU6IGxhbWJkYS5Db2RlLmZyb21Bc3NldChgJHtfX2Rpcm5hbWV9L2xhbWJkYS10ZXN0YCksXG4gICAgaGFuZGxlcjogXCJpbmRleC5oYW5kbGVyXCIsXG4gICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzIwX1gsXG4gIH0pO1xuXG4gIGNvbnN0IHBpcGVSZXNwb25zZSA9IGRlZmF1bHRzLkJ1aWxkUGlwZShzdGFjaywgcGlwZUlkLCB7XG4gICAgc291cmNlOiBwcmVyZXF1aXNpdGVzLnNvdXJjZSxcbiAgICB0YXJnZXQ6IHByZXJlcXVpc2l0ZXMudGFyZ2V0LFxuICAgIGVucmljaG1lbnRGdW5jdGlvblxuICB9KTtcbiAgQ2hlY2tQaXBlUmVzcG9uc2VQcm9wZXJ0aWVzKHBpcGVSZXNwb25zZSwgcHJlcmVxdWlzaXRlcyk7XG5cbiAgY29uc3QgdGVtcGxhdGUgPSBUZW1wbGF0ZS5mcm9tU3RhY2soc3RhY2spO1xuICB0ZW1wbGF0ZS5yZXNvdXJjZUNvdW50SXMoJ0FXUzo6UGlwZXM6OlBpcGUnLCAxKTtcbiAgQ2hlY2tQaXBlUmVzb3VyY2UodGVtcGxhdGUsIHBpcGVJZCwgcHJlcmVxdWlzaXRlSWQpO1xuICBDaGVja0xvZ0dyb3VwKHRlbXBsYXRlKTtcblxuICAvLyBFbnJpY2htZW50IGlzIHVuaXF1ZSB0byB0aGlzIHRlc3Qgc28gY2hlY2sgaXQgaGVyZVxuICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoJ0FXUzo6UGlwZXM6OlBpcGUnLCB7XG4gICAgRW5yaWNobWVudDoge1xuICAgICAgXCJGbjo6R2V0QXR0XCI6IFtcbiAgICAgICAgTWF0Y2guc3RyaW5nTGlrZVJlZ2V4cCgnZW5yaWNobWVudGZ1bmN0aW9uLionKSxcbiAgICAgICAgXCJBcm5cIlxuICAgICAgXVxuICAgIH0sXG4gIH0pO1xuICAvLyBUaGlzIGNoZWNrcyBmb3IgZXZlcnl0aGluZyBidXQgZW5yaWNobWVudFxuICBDaGVja1BpcGVSb2xlKHRlbXBsYXRlLCBwcmVyZXF1aXNpdGVJZCk7XG4gIC8vIFRoaXMgY2hlY2tzIGZvciBlbnJpY2htZW50IHBlcm1pc3Npb25zXG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpJQU06OlBvbGljeScsIHtcbiAgICBQb2xpY3lEb2N1bWVudDoge1xuICAgICAgU3RhdGVtZW50OiBbXG4gICAgICAgIHtcbiAgICAgICAgICBBY3Rpb246IFwibGFtYmRhOkludm9rZUZ1bmN0aW9uXCIsXG4gICAgICAgICAgRWZmZWN0OiBcIkFsbG93XCIsXG4gICAgICAgICAgUmVzb3VyY2U6IHtcbiAgICAgICAgICAgIFwiRm46OkdldEF0dFwiOiBbXG4gICAgICAgICAgICAgIE1hdGNoLnN0cmluZ0xpa2VSZWdleHAoJ2VucmljaG1lbnRmdW5jdGlvbi4qJyksXG4gICAgICAgICAgICAgIFwiQXJuXCJcbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBWZXJzaW9uOiBcIjIwMTItMTAtMTdcIlxuICAgIH0sXG4gICAgUG9saWN5TmFtZTogTWF0Y2guc3RyaW5nTGlrZVJlZ2V4cChgZW5yaWNobWVudHBvbGljeSR7cGlwZUlkfS4qYCksXG4gICAgUm9sZXM6IFtcbiAgICAgIHtcbiAgICAgICAgUmVmOiBNYXRjaC5zdHJpbmdMaWtlUmVnZXhwKGBQaXBlUm9sZSR7cGlwZUlkfS4qYClcbiAgICAgIH1cbiAgICBdXG4gIH0pO1xufSk7XG5cbnRlc3QoJ0NyZWF0ZSBhIHBpcGUgd2l0aCBzdGF0ZSBtYWNoaW5lIGVucmljaG1lbnQnLCAoKSA9PiB7XG4gIGNvbnN0IHByZXJlcXVpc2l0ZUlkID0gJ3NtZW5yaWNodGVzdCc7XG4gIGNvbnN0IHBpcGVJZCA9ICdzbWVucmljaHBpcGUnO1xuXG4gIC8vIFN0YWNrXG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG4gIGNvbnN0IHByZXJlcXVpc2l0ZXMgPSBDcmVhdGVQcmVyZXF1aXNpdGVzKHN0YWNrLCBwcmVyZXF1aXNpdGVJZCk7XG5cbiAgY29uc3QgZW5yaWNobWVudFN0YXRlTWFjaGluZSA9IGRlZmF1bHRzLkNyZWF0ZVRlc3RTdGF0ZU1hY2hpbmUoc3RhY2ssICdzdGF0ZS1tYWNoaW5lLWVucmljaG1lbnQnKTtcblxuICBjb25zdCBwaXBlUmVzcG9uc2UgPSBkZWZhdWx0cy5CdWlsZFBpcGUoc3RhY2ssIHBpcGVJZCwge1xuICAgIHNvdXJjZTogcHJlcmVxdWlzaXRlcy5zb3VyY2UsXG4gICAgdGFyZ2V0OiBwcmVyZXF1aXNpdGVzLnRhcmdldCxcbiAgICBlbnJpY2htZW50U3RhdGVNYWNoaW5lXG4gIH0pO1xuICBDaGVja1BpcGVSZXNwb25zZVByb3BlcnRpZXMocGlwZVJlc3BvbnNlLCBwcmVyZXF1aXNpdGVzKTtcblxuICBjb25zdCB0ZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjayk7XG4gIHRlbXBsYXRlLnJlc291cmNlQ291bnRJcygnQVdTOjpQaXBlczo6UGlwZScsIDEpO1xuICBDaGVja1BpcGVSZXNvdXJjZSh0ZW1wbGF0ZSwgcGlwZUlkLCBwcmVyZXF1aXNpdGVJZCk7XG4gIENoZWNrUGlwZVJvbGUodGVtcGxhdGUsIHByZXJlcXVpc2l0ZUlkKTtcbiAgQ2hlY2tMb2dHcm91cCh0ZW1wbGF0ZSk7XG5cbiAgLy8gTG9vayBmb3IgYWRkaXRpb25hbCBlbnJpY2htZW50IHBlcm1pc2lvblxuICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoJ0FXUzo6SUFNOjpQb2xpY3knLCB7XG4gICAgUG9saWN5RG9jdW1lbnQ6IHtcbiAgICAgIFN0YXRlbWVudDogW1xuICAgICAgICB7XG4gICAgICAgICAgLy8gVGhpcyB3b24ndCBydW4gaWYgd2UgYWN0dWFsbHkgbGF1bmNoZWQgaXQgYXMgdGhlIGVucmljaG1lbnRTdGF0ZU1hY2hpbmUgaXMgbm90IEVYUFJFU1NcbiAgICAgICAgICBBY3Rpb246IFwic3RhdGVzOlN0YXJ0U3luY0V4ZWN1dGlvblwiLFxuICAgICAgICAgIEVmZmVjdDogXCJBbGxvd1wiLFxuICAgICAgICAgIFJlc291cmNlOiB7XG4gICAgICAgICAgICBSZWY6IE1hdGNoLnN0cmluZ0xpa2VSZWdleHAoJ3N0YXRlbWFjaGluZWVucmljaG1lbnQuKicpLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIFZlcnNpb246IFwiMjAxMi0xMC0xN1wiXG4gICAgfSxcbiAgICBQb2xpY3lOYW1lOiBNYXRjaC5zdHJpbmdMaWtlUmVnZXhwKGBlbnJpY2htZW50cG9saWN5JHtwaXBlSWR9LipgKSxcbiAgICBSb2xlczogW1xuICAgICAge1xuICAgICAgICBSZWY6IE1hdGNoLnN0cmluZ0xpa2VSZWdleHAoYFBpcGVSb2xlJHtwaXBlSWR9LipgKVxuICAgICAgfVxuICAgIF1cbiAgfSk7XG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpQaXBlczo6UGlwZScsIHtcbiAgICBFbnJpY2htZW50OiB7XG4gICAgICBSZWY6IE1hdGNoLnN0cmluZ0xpa2VSZWdleHAoXCJzdGF0ZW1hY2hpbmVlbnJpY2htZW50LipcIilcbiAgICB9LFxuICB9KTtcbn0pO1xuXG50ZXN0KCdQcm92aWRlIHJlcGxhY2VtZW50IExvZ0NvbmZpZ3VyYXRpb24nLCAoKSA9PiB7XG4gIGNvbnN0IHByZXJlcXVpc2l0ZUlkID0gJ2xvZ2NvbmZpZ3Rlc3QnO1xuICBjb25zdCBwaXBlSWQgPSAnbG9nY29uZmlncGlwZSc7XG5cbiAgLy8gU3RhY2tcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgY29uc3QgcHJlcmVxdWlzaXRlcyA9IENyZWF0ZVByZXJlcXVpc2l0ZXMoc3RhY2ssIHByZXJlcXVpc2l0ZUlkKTtcblxuICBjb25zdCBjdXN0b21Mb2dDb25maWd1cmF0aW9uOiBwaXBlcy5DZm5QaXBlLlBpcGVMb2dDb25maWd1cmF0aW9uUHJvcGVydHkgPSB7XG4gICAgczNMb2dEZXN0aW5hdGlvbjoge1xuICAgICAgYnVja2V0TmFtZTogbmV3IHMzLkJ1Y2tldChzdGFjaywgJ3Rlc3QnKS5idWNrZXROYW1lLFxuICAgIH0sXG4gICAgbGV2ZWw6IGRlZmF1bHRzLlBpcGVzTG9nTGV2ZWwuRVJST1JcbiAgfTtcbiAgY29uc3QgcGlwZVJlc3BvbnNlID0gZGVmYXVsdHMuQnVpbGRQaXBlKHN0YWNrLCBwaXBlSWQsIHtcbiAgICBzb3VyY2U6IHByZXJlcXVpc2l0ZXMuc291cmNlLFxuICAgIHRhcmdldDogcHJlcmVxdWlzaXRlcy50YXJnZXQsXG4gICAgY2xpZW50UHJvcHM6IHtcbiAgICAgIGxvZ0NvbmZpZ3VyYXRpb246IGN1c3RvbUxvZ0NvbmZpZ3VyYXRpb25cbiAgICB9XG4gIH0pO1xuICBDaGVja1BpcGVSZXNwb25zZVByb3BlcnRpZXMocGlwZVJlc3BvbnNlLCBwcmVyZXF1aXNpdGVzKTtcblxuICBjb25zdCB0ZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjayk7XG4gIENoZWNrUGlwZVNvdXJjZUFuZFRhcmdldCh0ZW1wbGF0ZSwgcHJlcmVxdWlzaXRlSWQpO1xuXG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpQaXBlczo6UGlwZScsIHtcbiAgICBMb2dDb25maWd1cmF0aW9uOiB7XG4gICAgICBMZXZlbDogXCJFUlJPUlwiLFxuICAgICAgUzNMb2dEZXN0aW5hdGlvbjoge1xuICAgICAgICBCdWNrZXROYW1lOiB7XG4gICAgICAgICAgUmVmOiBNYXRjaC5zdHJpbmdMaWtlUmVnZXhwKFwidGVzdC4qXCIpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuXG4gIHRlbXBsYXRlLnJlc291cmNlQ291bnRJcygnQVdTOjpQaXBlczo6UGlwZScsIDEpO1xuICBDaGVja1BpcGVSb2xlKHRlbXBsYXRlLCBwcmVyZXF1aXNpdGVJZCk7XG59KTtcblxudGVzdCgnT3ZlcnJpZGUgdGhlIGRlZmF1bHQgbG9nIGxldmVsJywgKCkgPT4ge1xuICBjb25zdCBwcmVyZXF1aXNpdGVJZCA9ICdsb2dsZXZlbHR0ZXN0JztcbiAgY29uc3QgcGlwZUlkID0gJ2xvZ2xldmVscGlwZSc7XG5cbiAgLy8gU3RhY2tcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgY29uc3QgcHJlcmVxdWlzaXRlcyA9IENyZWF0ZVByZXJlcXVpc2l0ZXMoc3RhY2ssIHByZXJlcXVpc2l0ZUlkKTtcblxuICBjb25zdCBwaXBlUmVzcG9uc2UgPSBkZWZhdWx0cy5CdWlsZFBpcGUoc3RhY2ssIHBpcGVJZCwge1xuICAgIHNvdXJjZTogcHJlcmVxdWlzaXRlcy5zb3VyY2UsXG4gICAgdGFyZ2V0OiBwcmVyZXF1aXNpdGVzLnRhcmdldCxcbiAgICBsb2dMZXZlbDogZGVmYXVsdHMuUGlwZXNMb2dMZXZlbC5FUlJPUlxuICB9KTtcbiAgQ2hlY2tQaXBlUmVzcG9uc2VQcm9wZXJ0aWVzKHBpcGVSZXNwb25zZSwgcHJlcmVxdWlzaXRlcyk7XG5cbiAgY29uc3QgdGVtcGxhdGUgPSBUZW1wbGF0ZS5mcm9tU3RhY2soc3RhY2spO1xuICB0ZW1wbGF0ZS5yZXNvdXJjZUNvdW50SXMoJ0FXUzo6UGlwZXM6OlBpcGUnLCAxKTtcbiAgQ2hlY2tQaXBlUmVzb3VyY2UodGVtcGxhdGUsIHBpcGVJZCwgcHJlcmVxdWlzaXRlSWQpO1xuICBDaGVja1BpcGVSb2xlKHRlbXBsYXRlLCBwcmVyZXF1aXNpdGVJZCk7XG4gIENoZWNrTG9nR3JvdXAodGVtcGxhdGUpO1xuXG4gIC8vIExldmVsIGlzIHVuaXF1ZSB0byB0aGlzIHRlc3RcbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OlBpcGVzOjpQaXBlJywge1xuICAgIExvZ0NvbmZpZ3VyYXRpb246IHtcbiAgICAgIExldmVsOiBkZWZhdWx0cy5QaXBlc0xvZ0xldmVsLkVSUk9SLFxuICAgIH1cbiAgfSk7XG59KTtcblxudGVzdCgnVGVzdCBubyBsb2dnaW5nJywgKCkgPT4ge1xuICBjb25zdCBwcmVyZXF1aXNpdGVJZCA9ICdub2xvZ3MnO1xuICBjb25zdCBwaXBlSWQgPSAndGVzdHBpcGUnO1xuXG4gIC8vIFN0YWNrXG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG4gIGNvbnN0IHByZXJlcXVpc2l0ZXMgPSBDcmVhdGVQcmVyZXF1aXNpdGVzKHN0YWNrLCBwcmVyZXF1aXNpdGVJZCk7XG5cbiAgY29uc3QgcGlwZVJlc3BvbnNlID0gZGVmYXVsdHMuQnVpbGRQaXBlKHN0YWNrLCBwaXBlSWQsIHtcbiAgICBzb3VyY2U6IHByZXJlcXVpc2l0ZXMuc291cmNlLFxuICAgIHRhcmdldDogcHJlcmVxdWlzaXRlcy50YXJnZXQsXG4gICAgbG9nTGV2ZWw6IGRlZmF1bHRzLlBpcGVzTG9nTGV2ZWwuT0ZGXG4gIH0pO1xuICBDaGVja1BpcGVSZXNwb25zZVByb3BlcnRpZXMocGlwZVJlc3BvbnNlLCBwcmVyZXF1aXNpdGVzKTtcblxuICBjb25zdCB0ZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjayk7XG4gIHRlbXBsYXRlLnJlc291cmNlQ291bnRJcygnQVdTOjpQaXBlczo6UGlwZScsIDEpO1xuICBDaGVja1BpcGVTb3VyY2VBbmRUYXJnZXQodGVtcGxhdGUsIHByZXJlcXVpc2l0ZUlkKTtcbiAgQ2hlY2tQaXBlUm9sZSh0ZW1wbGF0ZSwgcHJlcmVxdWlzaXRlSWQpO1xuXG4gIC8vIE9uZSBsb2cgZ3JvdXAgZm9yIHRoZSBzdGF0ZSBtYWNoaW5lLCBub25lIGZvciB0aGUgcGlwZVxuICB0ZW1wbGF0ZS5yZXNvdXJjZUNvdW50SXMoJ0FXUzo6TG9nczo6TG9nR3JvdXAnLCAxKTtcbn0pO1xuXG50ZXN0KCdPdmVycmlkZSBhIHN1YnNldCBvZiBTUVMgc291cmNlIHBhcmFtdGVycycsICgpID0+IHtcbiAgY29uc3QgcHJlcmVxdWlzaXRlSWQgPSAnc3JjcGFyYW10ZXN0JztcbiAgY29uc3QgcGlwZUlkID0gJ3NyY3BhcmFtcGlwZSc7XG4gIGNvbnN0IHRlc3RCYXRjaFNpemUgPSA3O1xuXG4gIC8vIFN0YWNrXG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG4gIGNvbnN0IHByZXJlcXVpc2l0ZXMgPSBDcmVhdGVQcmVyZXF1aXNpdGVzKHN0YWNrLCBwcmVyZXF1aXNpdGVJZCk7XG5cbiAgY29uc3QgcGlwZVJlc3BvbnNlID0gZGVmYXVsdHMuQnVpbGRQaXBlKHN0YWNrLCBwaXBlSWQsIHtcbiAgICBzb3VyY2U6IHByZXJlcXVpc2l0ZXMuc291cmNlLFxuICAgIHRhcmdldDogcHJlcmVxdWlzaXRlcy50YXJnZXQsXG4gICAgY2xpZW50UHJvcHM6IHtcbiAgICAgIHNvdXJjZVBhcmFtZXRlcnM6IHtcbiAgICAgICAgc3FzUXVldWVQYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgYmF0Y2hTaXplOiB0ZXN0QmF0Y2hTaXplLFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICBDaGVja1BpcGVSZXNwb25zZVByb3BlcnRpZXMocGlwZVJlc3BvbnNlLCBwcmVyZXF1aXNpdGVzKTtcblxuICBjb25zdCB0ZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjayk7XG4gIHRlbXBsYXRlLnJlc291cmNlQ291bnRJcygnQVdTOjpQaXBlczo6UGlwZScsIDEpO1xuICBDaGVja1BpcGVSZXNvdXJjZSh0ZW1wbGF0ZSwgcGlwZUlkLCBwcmVyZXF1aXNpdGVJZCk7XG4gIENoZWNrUGlwZVJvbGUodGVtcGxhdGUsIHByZXJlcXVpc2l0ZUlkKTtcbiAgQ2hlY2tMb2dHcm91cCh0ZW1wbGF0ZSk7XG5cbiAgdGVtcGxhdGUucmVzb3VyY2VDb3VudElzKCdBV1M6OlBpcGVzOjpQaXBlJywgMSk7XG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpQaXBlczo6UGlwZScsIHtcbiAgICBTb3VyY2VQYXJhbWV0ZXJzOiB7XG4gICAgICBTcXNRdWV1ZVBhcmFtZXRlcnM6IHtcbiAgICAgICAgQmF0Y2hTaXplOiB0ZXN0QmF0Y2hTaXplXG4gICAgICB9XG4gICAgfSxcbiAgfSk7XG59KTtcblxudGVzdCgnUHJvdmlkZSBwaXBlTG9nUHJvcHMnLCAoKSA9PiB7XG4gIGNvbnN0IHByZXJlcXVpc2l0ZUlkID0gJ3BpcGVsb2dwcm9wc3Rlc3QnO1xuICBjb25zdCBwaXBlSWQgPSAncGlwZWxvZ3Byb3BzcGlwZSc7XG4gIC8vIFdoaWxlIHRoaXMgaXMgYW4gZW51bSB3ZSBuZWVkIHRvIHVzZSwgaW4gdGhlIHRlbXBsYXRlXG4gIC8vIGl0IGlzIGNvbnZlcnRlZCB0byBkYXlzLCBpbiB0aGlzIGNhc2UgMTIwXG4gIGNvbnN0IHRlc3RSZXRlbnRpb24gPSBSZXRlbnRpb25EYXlzLkZPVVJfTU9OVEhTO1xuXG4gIC8vIFN0YWNrXG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG4gIGNvbnN0IHByZXJlcXVpc2l0ZXMgPSBDcmVhdGVQcmVyZXF1aXNpdGVzKHN0YWNrLCBwcmVyZXF1aXNpdGVJZCk7XG5cbiAgY29uc3QgcGlwZVJlc3BvbnNlID0gZGVmYXVsdHMuQnVpbGRQaXBlKHN0YWNrLCBwaXBlSWQsIHtcbiAgICBzb3VyY2U6IHByZXJlcXVpc2l0ZXMuc291cmNlLFxuICAgIHRhcmdldDogcHJlcmVxdWlzaXRlcy50YXJnZXQsXG4gICAgcGlwZUxvZ1Byb3BzOiB7XG4gICAgICByZXRlbnRpb246IHRlc3RSZXRlbnRpb25cbiAgICB9XG4gIH0pO1xuXG4gIENoZWNrUGlwZVJlc3BvbnNlUHJvcGVydGllcyhwaXBlUmVzcG9uc2UsIHByZXJlcXVpc2l0ZXMpO1xuXG4gIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcbiAgdGVtcGxhdGUucmVzb3VyY2VDb3VudElzKCdBV1M6OlBpcGVzOjpQaXBlJywgMSk7XG4gIENoZWNrUGlwZVJlc291cmNlKHRlbXBsYXRlLCBwaXBlSWQsIHByZXJlcXVpc2l0ZUlkKTtcbiAgQ2hlY2tQaXBlUm9sZSh0ZW1wbGF0ZSwgcHJlcmVxdWlzaXRlSWQpO1xuICBDaGVja0xvZ0dyb3VwKHRlbXBsYXRlKTtcbiAgQ2hlY2tQaXBlTG9nQ29uZmlndXJhdGlvbih0ZW1wbGF0ZSwgcGlwZUlkKTtcblxuICAvLyBMb29rIGZvciBhZGRpdGlvbmFsIHByb3BlcnR5IHdlIHBhc3NlZCBpbiBwaXBlTG9nUHJvcHNcbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OkxvZ3M6OkxvZ0dyb3VwJywge1xuICAgIFJldGVudGlvbkluRGF5czogMTIwLFxuICB9KTtcbn0pO1xuXG50ZXN0KCdDaGVjayBmb3IgZXJyb3Igd2hlbiBwcm92aWRpbmcgc291cmNlIGluIENmblByb3BzJywgKCkgPT4ge1xuICAvLyBTdGFja1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuICBjb25zdCBwcmVyZXF1aXNpdGVzID0gQ3JlYXRlUHJlcmVxdWlzaXRlcyhzdGFjaywgJ2xvZy1sZXZlbC10ZXN0Jyk7XG5cbiAgY29uc3QgYXBwID0gKCkgPT4ge1xuICAgIGRlZmF1bHRzLkJ1aWxkUGlwZShzdGFjaywgJ3Rlc3QtcGlwZScsIHtcbiAgICAgIHNvdXJjZTogcHJlcmVxdWlzaXRlcy5zb3VyY2UsXG4gICAgICB0YXJnZXQ6IHByZXJlcXVpc2l0ZXMudGFyZ2V0LFxuICAgICAgY2xpZW50UHJvcHM6IHtcbiAgICAgICAgc291cmNlOiBwcmVyZXF1aXNpdGVzLnNvdXJjZS5zb3VyY2VBcm5cbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcbiAgLy8gQXNzZXJ0aW9uXG4gIGV4cGVjdChhcHApLnRvVGhyb3dFcnJvcignRVJST1IgLSBCdWlsZFBpcGVQcm9wcyBjYW5ub3Qgc3BlY2lmeSBzb3VyY2UsIHRhcmdldCwgcm9sZUFybiwgb3IgZW5yaWNobWVudCcpO1xufSk7XG5cbnRlc3QoJ0NoZWNrIGZvciBlcnJvciB3aGVuIHByb3ZpZGluZyB0YXJnZXQgaW4gQ2ZuUHJvcHMnLCAoKSA9PiB7XG4gIC8vIFN0YWNrXG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG4gIGNvbnN0IHByZXJlcXVpc2l0ZXMgPSBDcmVhdGVQcmVyZXF1aXNpdGVzKHN0YWNrLCAnbG9nLWxldmVsLXRlc3QnKTtcblxuICBjb25zdCBhcHAgPSAoKSA9PiB7XG4gICAgZGVmYXVsdHMuQnVpbGRQaXBlKHN0YWNrLCAndGVzdC1waXBlJywge1xuICAgICAgc291cmNlOiBwcmVyZXF1aXNpdGVzLnNvdXJjZSxcbiAgICAgIHRhcmdldDogcHJlcmVxdWlzaXRlcy50YXJnZXQsXG4gICAgICBjbGllbnRQcm9wczoge1xuICAgICAgICB0YXJnZXQ6IHByZXJlcXVpc2l0ZXMudGFyZ2V0LnRhcmdldEFybixcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcbiAgLy8gQXNzZXJ0aW9uXG4gIGV4cGVjdChhcHApLnRvVGhyb3dFcnJvcignRVJST1IgLSBCdWlsZFBpcGVQcm9wcyBjYW5ub3Qgc3BlY2lmeSBzb3VyY2UsIHRhcmdldCwgcm9sZUFybiwgb3IgZW5yaWNobWVudCcpO1xufSk7XG5cbnRlc3QoJ0NoZWNrIGZvciBlcnJvciB3aGVuIHByb3ZpZGluZyBhIHJvbGVBcm4nLCAoKSA9PiB7XG4gIC8vIFN0YWNrXG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG4gIGNvbnN0IHByZXJlcXVpc2l0ZXMgPSBDcmVhdGVQcmVyZXF1aXNpdGVzKHN0YWNrLCAnbG9nLWxldmVsLXRlc3QnKTtcblxuICBjb25zdCBhcHAgPSAoKSA9PiB7XG4gICAgZGVmYXVsdHMuQnVpbGRQaXBlKHN0YWNrLCAndGVzdC1waXBlJywge1xuICAgICAgc291cmNlOiBwcmVyZXF1aXNpdGVzLnNvdXJjZSxcbiAgICAgIHRhcmdldDogcHJlcmVxdWlzaXRlcy50YXJnZXQsXG4gICAgICBjbGllbnRQcm9wczoge1xuICAgICAgICByb2xlQXJuOiBcInNvbWUtYXJuXCIsXG4gICAgICB9XG4gICAgfSk7XG4gIH07XG4gIC8vIEFzc2VydGlvblxuICBleHBlY3QoYXBwKS50b1Rocm93RXJyb3IoJ0VSUk9SIC0gQnVpbGRQaXBlUHJvcHMgY2Fubm90IHNwZWNpZnkgc291cmNlLCB0YXJnZXQsIHJvbGVBcm4sIG9yIGVucmljaG1lbnQnKTtcbn0pO1xuXG50ZXN0KCdDaGVjayBmb3IgZXJyb3Igd2hlbiBwcm92aWRpbmcgZW5yaWNobWVudCcsICgpID0+IHtcbiAgLy8gU3RhY2tcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgY29uc3QgcHJlcmVxdWlzaXRlcyA9IENyZWF0ZVByZXJlcXVpc2l0ZXMoc3RhY2ssICdsb2ctbGV2ZWwtdGVzdCcpO1xuXG4gIGNvbnN0IGFwcCA9ICgpID0+IHtcbiAgICBkZWZhdWx0cy5CdWlsZFBpcGUoc3RhY2ssICd0ZXN0LXBpcGUnLCB7XG4gICAgICBzb3VyY2U6IHByZXJlcXVpc2l0ZXMuc291cmNlLFxuICAgICAgdGFyZ2V0OiBwcmVyZXF1aXNpdGVzLnRhcmdldCxcbiAgICAgIGNsaWVudFByb3BzOiB7XG4gICAgICAgIGVucmljaG1lbnQ6IFwiZnVuY3Rpb25Bcm5cIixcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcbiAgLy8gQXNzZXJ0aW9uXG4gIGV4cGVjdChhcHApLnRvVGhyb3dFcnJvcignRVJST1IgLSBCdWlsZFBpcGVQcm9wcyBjYW5ub3Qgc3BlY2lmeSBzb3VyY2UsIHRhcmdldCwgcm9sZUFybiwgb3IgZW5yaWNobWVudCcpO1xufSk7XG5cbnRlc3QoJ0NoZWNrIGZvciBlcnJvciB3aGVuIGxvZyBsZXZlbCBhbmQgbG9nIGNvbmZpZ3VyYXRpb24gYXJlIGJvdGggcHJvdmlkZWQnLCAoKSA9PiB7XG4gIC8vIFN0YWNrXG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG4gIGNvbnN0IHByZXJlcXVpc2l0ZXMgPSBDcmVhdGVQcmVyZXF1aXNpdGVzKHN0YWNrLCAnbG9nLWxldmVsLXRlc3QnKTtcblxuICBjb25zdCBhcHAgPSAoKSA9PiB7XG4gICAgZGVmYXVsdHMuQnVpbGRQaXBlKHN0YWNrLCAndGVzdC1waXBlJywge1xuICAgICAgc291cmNlOiBwcmVyZXF1aXNpdGVzLnNvdXJjZSxcbiAgICAgIHRhcmdldDogcHJlcmVxdWlzaXRlcy50YXJnZXQsXG4gICAgICBsb2dMZXZlbDogZGVmYXVsdHMuUGlwZXNMb2dMZXZlbC5FUlJPUixcbiAgICAgIGNsaWVudFByb3BzOiB7XG4gICAgICAgIGxvZ0NvbmZpZ3VyYXRpb246IHsgc29tZTogXCJvYmplY3RcIiB9LFxuICAgICAgfVxuICAgIH0pO1xuICB9O1xuICAvLyBBc3NlcnRpb25cbiAgZXhwZWN0KGFwcCkudG9UaHJvd0Vycm9yKCdFUlJPUiAtIEJ1aWxkUGlwZVByb3BzIGNhbm5vdCBzcGVjaWZ5IGxvZ0xldmVsIGFuZCBsb2dDb25maWd1cmF0aW9uJyk7XG59KTtcblxudGVzdCgnQ2hlY2sgZm9yIGVycm9yIHdoZW4gcGlwZUxvZ1Byb3BzIGFuZCBsb2cgY29uZmlndXJhdGlvbiBhcmUgYm90aCBwcm92aWRlZCcsICgpID0+IHtcbiAgLy8gU3RhY2tcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgY29uc3QgcHJlcmVxdWlzaXRlcyA9IENyZWF0ZVByZXJlcXVpc2l0ZXMoc3RhY2ssICdsb2ctbGV2ZWwtdGVzdCcpO1xuXG4gIGNvbnN0IGFwcCA9ICgpID0+IHtcbiAgICBkZWZhdWx0cy5CdWlsZFBpcGUoc3RhY2ssICd0ZXN0LXBpcGUnLCB7XG4gICAgICBzb3VyY2U6IHByZXJlcXVpc2l0ZXMuc291cmNlLFxuICAgICAgdGFyZ2V0OiBwcmVyZXF1aXNpdGVzLnRhcmdldCxcbiAgICAgIHBpcGVMb2dQcm9wczogeyBsb2dHcm91cE5hbWU6IFwiYW55dmFsdWVcIiB9LFxuICAgICAgY2xpZW50UHJvcHM6IHtcbiAgICAgICAgbG9nQ29uZmlndXJhdGlvbjogeyBzb21lOiBcIm9iamVjdFwiIH0sXG4gICAgICB9XG4gICAgfSk7XG4gIH07XG4gIC8vIEFzc2VydGlvblxuICBleHBlY3QoYXBwKS50b1Rocm93RXJyb3IoJ0VSUk9SIC0gQnVpbGRQaXBlUHJvcHMgY2Fubm90IHNwZWNpZnkgcGlwZUxvZ1Byb3BzIGFuZCBsb2dDb25maWd1cmF0aW9uJyk7XG59KTtcblxudGVzdCgnQ2hlY2sgZm9yIGVycm9yIHdoZW4gZW5yaWNobWVudEZ1bmN0aW9uIGFuZCBlbnJpY2htZW50U3RhdGVNYWNoaW5lIGFyZSBib3RoIHByb3ZpZGVkJywgKCkgPT4ge1xuICAvLyBTdGFja1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuICBjb25zdCBwcmVyZXF1aXNpdGVzID0gQ3JlYXRlUHJlcmVxdWlzaXRlcyhzdGFjaywgJ2xvZy1sZXZlbC10ZXN0Jyk7XG5cbiAgY29uc3QgYXBwID0gKCkgPT4ge1xuICAgIGRlZmF1bHRzLkJ1aWxkUGlwZShzdGFjaywgJ3Rlc3QtcGlwZScsIHtcbiAgICAgIHNvdXJjZTogcHJlcmVxdWlzaXRlcy5zb3VyY2UsXG4gICAgICB0YXJnZXQ6IHByZXJlcXVpc2l0ZXMudGFyZ2V0LFxuICAgICAgZW5yaWNobWVudEZ1bmN0aW9uOiB7IHBsYWNlOiBcImhvbGRlclwiIH0gYXMgdW5rbm93biBhcyBsYW1iZGEuRnVuY3Rpb24sXG4gICAgICBlbnJpY2htZW50U3RhdGVNYWNoaW5lOiB7IHBsYWNlOiBcImhvbGRlclwiIH0gYXMgdW5rbm93biBhcyBzZm4uU3RhdGVNYWNoaW5lXG4gICAgfSk7XG4gIH07XG4gIC8vIEFzc2VydGlvblxuICBleHBlY3QoYXBwKS50b1Rocm93RXJyb3IoJ0VSUk9SIC0gT25seSBvbmUgb2YgZW5yaWNobWVudEZ1bmN0aW9uIG9yIGVucmljaG1lbnRTdGF0ZU1hY2hpbmUgY2FuIGJlIHByb3ZpZGVkJyk7XG59KTtcblxudGVzdCgnQ2hlY2sgZm9yIGVycm9yIHdoZW4gcGlwZUxvZ1Byb3BzIGFuZCBsb2cgbGV2ZWwgaXMgc2V0IHRvIE9GRicsICgpID0+IHtcbiAgLy8gU3RhY2tcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgY29uc3QgcHJlcmVxdWlzaXRlcyA9IENyZWF0ZVByZXJlcXVpc2l0ZXMoc3RhY2ssICdsb2ctbGV2ZWwtdGVzdCcpO1xuXG4gIGNvbnN0IGFwcCA9ICgpID0+IHtcbiAgICBkZWZhdWx0cy5CdWlsZFBpcGUoc3RhY2ssICd0ZXN0LXBpcGUnLCB7XG4gICAgICBzb3VyY2U6IHByZXJlcXVpc2l0ZXMuc291cmNlLFxuICAgICAgdGFyZ2V0OiBwcmVyZXF1aXNpdGVzLnRhcmdldCxcbiAgICAgIGxvZ0xldmVsOiBkZWZhdWx0cy5QaXBlc0xvZ0xldmVsLk9GRixcbiAgICAgIHBpcGVMb2dQcm9wczogeyBsb2dHcm91cE5hbWU6IFwiYW55dmFsdWVcIiB9LFxuICAgIH0pO1xuICB9O1xuICAvLyBBc3NlcnRpb25cbiAgZXhwZWN0KGFwcCkudG9UaHJvd0Vycm9yKCdFUlJPUiAtIEJ1aWxkUGlwZVByb3BzIGNhbm5vdCBzcGVjaWZ5IHBpcGVMb2dQcm9wcyBhbmQgbG9nIGxldmVsIE9GRicpO1xufSk7XG5cbnRlc3QoJ1Rlc3QgYWxsIG9mIENoZWNrUGlwZXNQcm9wcycsICgpID0+IHtcbiAgY29uc3QgYXBwID0gKCkgPT4ge1xuICAgIGRlZmF1bHRzLkNoZWNrUGlwZXNQcm9wcyh7XG4gICAgICBwaXBlc1Byb3BzOiB7IHNvdXJjZTogXCJ2YWx1ZVwiIH0sXG4gICAgfSk7XG4gIH07XG4gIC8vIEFzc2VydGlvblxuICBleHBlY3QoYXBwKS50b1Rocm93RXJyb3IoJ0RvIG5vdCBzZXQgc291cmNlIGluIHBpcGVzUHJvcHMuIEl0IGlzIHNldCBieSB0aGUgY29uc3RydWN0LlxcbicpO1xuXG4gIGNvbnN0IGFwcFR3byA9ICgpID0+IHtcbiAgICBkZWZhdWx0cy5DaGVja1BpcGVzUHJvcHMoe1xuICAgICAgcGlwZXNQcm9wczogeyB0YXJnZXQ6IFwidmFsdWVcIiB9LFxuICAgIH0pO1xuICB9O1xuICAvLyBBc3NlcnRpb25cbiAgZXhwZWN0KGFwcFR3bykudG9UaHJvd0Vycm9yKCdEbyBub3Qgc2V0IHRhcmdldCBpbiBwaXBlc1Byb3BzLiBJdCBpcyBzZXQgYnkgdGhlIGNvbnN0cnVjdC5cXG4nKTtcblxufSk7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU2hhcmVkIHNldHVwIGZ1bmN0aW9uXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuaW50ZXJmYWNlIFByZXJlcXVpc2l0ZXMge1xuICBzb3VyY2U6IGRlZmF1bHRzLkNyZWF0ZVNvdXJjZVJlc3BvbnNlLFxuICB0YXJnZXQ6IGRlZmF1bHRzLkNyZWF0ZVRhcmdldFJlc3BvbnNlLFxufVxuXG5mdW5jdGlvbiBDcmVhdGVQcmVyZXF1aXNpdGVzKHNjb3BlOiBTdGFjaywgaWQ6IHN0cmluZyk6IFByZXJlcXVpc2l0ZXMge1xuICBjb25zdCBidWlsZFF1ZXVlUmVzcG9uc2UgPSBidWlsZFF1ZXVlKHNjb3BlLCBgJHtpZH0tc291cmNlLXF1ZXVlYCwge30pO1xuICBjb25zdCBzcXNTb3VyY2UgPSBkZWZhdWx0cy5DcmVhdGVTcXNTb3VyY2UoYnVpbGRRdWV1ZVJlc3BvbnNlLnF1ZXVlKTtcblxuICBjb25zdCBidWlsZFN0YXRlTWFjaGluZVJlc3BvbnNlID0gYnVpbGRTdGF0ZU1hY2hpbmUoc2NvcGUsIGAke2lkfS10YXJnZXQtc3RhdGUtbWFjaGluZWAsIHtcbiAgICBzdGF0ZU1hY2hpbmVQcm9wczoge1xuICAgICAgZGVmaW5pdGlvbkJvZHk6IGRlZmF1bHRzLkNyZWF0ZVRlc3RTdGF0ZU1hY2hpbmVEZWZpbml0aW9uQm9keShzY29wZSwgYCR7aWR9LXN0ZXBzYClcbiAgICB9XG4gIH0pO1xuICBjb25zdCBzdGF0ZU1hY2hpbmVUYXJnZXQgPSBkZWZhdWx0cy5DcmVhdGVTdGF0ZU1hY2hpbmVUYXJnZXQoYnVpbGRTdGF0ZU1hY2hpbmVSZXNwb25zZS5zdGF0ZU1hY2hpbmUsIHtcbiAgICBzdGVwRnVuY3Rpb25TdGF0ZU1hY2hpbmVQYXJhbWV0ZXJzOiB7XG4gICAgICBpbnZvY2F0aW9uVHlwZTogJ1JFUVVFU1RfUkVTUE9OU0UnXG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBzb3VyY2U6IHNxc1NvdXJjZSxcbiAgICB0YXJnZXQ6IHN0YXRlTWFjaGluZVRhcmdldFxuICB9O1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNoYXJlZCBmdW5jdGlvbnMgdGhhdCBjaGVjayBkZWZhdWx0IHNldHRpbmdzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZnVuY3Rpb24gQ2hlY2tQaXBlUmVzcG9uc2VQcm9wZXJ0aWVzKHBpcGVSZXNwb25zZTogZGVmYXVsdHMuQnVpbGRQaXBlc1Jlc3BvbnNlLCBwcmVyZXF1aXNpdGVzOiBQcmVyZXF1aXNpdGVzKSB7XG4gIGV4cGVjdChwaXBlUmVzcG9uc2UucGlwZSkudG9CZURlZmluZWQoKTtcbiAgZXhwZWN0KHBpcGVSZXNwb25zZS5waXBlLnNvdXJjZSkudG9FcXVhbChwcmVyZXF1aXNpdGVzLnNvdXJjZS5zb3VyY2VBcm4pO1xuICBleHBlY3QocGlwZVJlc3BvbnNlLnBpcGUudGFyZ2V0KS50b0VxdWFsKHByZXJlcXVpc2l0ZXMudGFyZ2V0LnRhcmdldEFybik7XG4gIGV4cGVjdChwaXBlUmVzcG9uc2UucGlwZVJvbGUpLnRvQmVEZWZpbmVkKCk7XG4gIGV4cGVjdChwaXBlUmVzcG9uc2UucGlwZVJvbGUubm9kZSkudG9CZURlZmluZWQoKTtcbn1cblxuZnVuY3Rpb24gQ2hlY2tQaXBlUmVzb3VyY2UodGVtcGxhdGU6IFRlbXBsYXRlLFxuICBwaXBlSWQ6IHN0cmluZyxcbiAgcHJlcmVxdWlzaXRlSWQ6IHN0cmluZ1xuKSB7XG4gIENoZWNrUGlwZVNvdXJjZUFuZFRhcmdldCh0ZW1wbGF0ZSwgcHJlcmVxdWlzaXRlSWQpO1xuICBDaGVja1BpcGVMb2dDb25maWd1cmF0aW9uKHRlbXBsYXRlLCBwaXBlSWQpO1xufVxuXG5mdW5jdGlvbiBDaGVja1BpcGVTb3VyY2VBbmRUYXJnZXQodGVtcGxhdGU6IFRlbXBsYXRlLCBwcmVyZXF1aXNpdGVJZDogc3RyaW5nKSB7XG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpQaXBlczo6UGlwZScsIHtcbiAgICBTb3VyY2U6IHtcbiAgICAgIFwiRm46OkdldEF0dFwiOiBbXG4gICAgICAgIE1hdGNoLnN0cmluZ0xpa2VSZWdleHAoYCR7cHJlcmVxdWlzaXRlSWR9c291cmNlcXVldWUuKmApLFxuICAgICAgICBcIkFyblwiXG4gICAgICBdXG4gICAgfSxcbiAgICBUYXJnZXQ6IHtcbiAgICAgIFJlZjogTWF0Y2guc3RyaW5nTGlrZVJlZ2V4cChgU3RhdGVNYWNoaW5lJHtwcmVyZXF1aXNpdGVJZH10YXJnZXRzdGF0ZW1hY2hpbmUuKmApLFxuICAgIH0sXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBDaGVja1BpcGVMb2dDb25maWd1cmF0aW9uKHRlbXBsYXRlOiBUZW1wbGF0ZSwgcGlwZUlkOiBzdHJpbmcpIHtcbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OlBpcGVzOjpQaXBlJywge1xuICAgIExvZ0NvbmZpZ3VyYXRpb246IHtcbiAgICAgIENsb3Vkd2F0Y2hMb2dzTG9nRGVzdGluYXRpb246IHtcbiAgICAgICAgTG9nR3JvdXBBcm46IHtcbiAgICAgICAgICBcIkZuOjpHZXRBdHRcIjogW1xuICAgICAgICAgICAgTWF0Y2guc3RyaW5nTGlrZVJlZ2V4cChgTG9nR3JvdXAke3BpcGVJZH0uKmApLFxuICAgICAgICAgICAgXCJBcm5cIlxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIENoZWNrUGlwZVJvbGUodGVtcGxhdGU6IFRlbXBsYXRlLCBwcmVyZXF1aXNpdGVJZDogc3RyaW5nKSB7XG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpJQU06OlJvbGUnLCB7XG4gICAgQXNzdW1lUm9sZVBvbGljeURvY3VtZW50OiB7XG4gICAgICBTdGF0ZW1lbnQ6IFtcbiAgICAgICAge1xuICAgICAgICAgIEFjdGlvbjogXCJzdHM6QXNzdW1lUm9sZVwiLFxuICAgICAgICAgIEVmZmVjdDogXCJBbGxvd1wiLFxuICAgICAgICAgIFByaW5jaXBhbDoge1xuICAgICAgICAgICAgU2VydmljZTogXCJwaXBlcy5hbWF6b25hd3MuY29tXCJcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBWZXJzaW9uOiBcIjIwMTItMTAtMTdcIlxuICAgIH0sXG4gICAgUG9saWNpZXM6IFtcbiAgICAgIHtcbiAgICAgICAgUG9saWN5RG9jdW1lbnQ6IHtcbiAgICAgICAgICBTdGF0ZW1lbnQ6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgQWN0aW9uOiBbXG4gICAgICAgICAgICAgICAgXCJzcXM6UmVjZWl2ZU1lc3NhZ2VcIixcbiAgICAgICAgICAgICAgICBcInNxczpEZWxldGVNZXNzYWdlXCIsXG4gICAgICAgICAgICAgICAgXCJzcXM6R2V0UXVldWVBdHRyaWJ1dGVzXCJcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgRWZmZWN0OiBcIkFsbG93XCIsXG4gICAgICAgICAgICAgIFJlc291cmNlOiB7XG4gICAgICAgICAgICAgICAgXCJGbjo6R2V0QXR0XCI6IFtcbiAgICAgICAgICAgICAgICAgIE1hdGNoLnN0cmluZ0xpa2VSZWdleHAoYCR7cHJlcmVxdWlzaXRlSWR9c291cmNlcXVldWUuKmApLFxuICAgICAgICAgICAgICAgICAgXCJBcm5cIlxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIF0sXG4gICAgICAgICAgVmVyc2lvbjogXCIyMDEyLTEwLTE3XCJcbiAgICAgICAgfSxcbiAgICAgICAgUG9saWN5TmFtZTogXCJzb3VyY2VQb2xpY3lcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgUG9saWN5RG9jdW1lbnQ6IHtcbiAgICAgICAgICBTdGF0ZW1lbnQ6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgQWN0aW9uOiBcInN0YXRlczpTdGFydEV4ZWN1dGlvblwiLFxuICAgICAgICAgICAgICBFZmZlY3Q6IFwiQWxsb3dcIixcbiAgICAgICAgICAgICAgUmVzb3VyY2U6IHtcbiAgICAgICAgICAgICAgICBSZWY6IE1hdGNoLnN0cmluZ0xpa2VSZWdleHAoYFN0YXRlTWFjaGluZSR7cHJlcmVxdWlzaXRlSWR9dGFyZ2V0c3RhdGVtYWNoaW5lLipgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgXSxcbiAgICAgICAgICBWZXJzaW9uOiBcIjIwMTItMTAtMTdcIlxuICAgICAgICB9LFxuICAgICAgICBQb2xpY3lOYW1lOiBcInRhcmdldFBvbGljeVwiXG4gICAgICB9XG4gICAgXVxuICB9KTtcbn1cblxuZnVuY3Rpb24gQ2hlY2tMb2dHcm91cCh0ZW1wbGF0ZTogVGVtcGxhdGUpIHtcbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OkxvZ3M6OkxvZ0dyb3VwJywge1xuICAgIExvZ0dyb3VwTmFtZToge1xuICAgICAgXCJGbjo6Sm9pblwiOiBbXG4gICAgICAgIFwiXCIsXG4gICAgICAgIFtcbiAgICAgICAgICBNYXRjaC5zdHJpbmdMaWtlUmVnZXhwKCdcXC9hd3NcXC92ZW5kZWRsb2dzXFwvcGlwZXNcXC9jb25zdHJ1Y3RzJyksXG4gICAgICAgICAge1xuICAgICAgICAgICAgXCJGbjo6U2VsZWN0XCI6IFtcbiAgICAgICAgICAgICAgMixcbiAgICAgICAgICAgICAgTWF0Y2guYW55VmFsdWUoKVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgXVxuICAgIH0sXG4gIH0pO1xufSJdfQ==
|
|
787
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZXMtaGVscGVyLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwaXBlcy1oZWxwZXIudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7O0FBRUgsa0RBQStDO0FBQy9DLHNFQUFnRTtBQUNoRSx3RUFBNEU7QUFDNUUsNkNBQW9DO0FBQ3BDLGdDQUFnQztBQUVoQyxpREFBaUQ7QUFFakQseUNBQXlDO0FBQ3pDLHVEQUF5RDtBQUN6RCxtREFBcUQ7QUFFckQsb0NBQW9DO0FBQ3BDLHNDQUFzQztBQUN0QyxvQ0FBb0M7QUFFcEMsSUFBSSxDQUFDLDZCQUE2QixFQUFFLEdBQUcsRUFBRTtJQUN2QyxRQUFRO0lBQ1IsTUFBTSxLQUFLLEdBQUcsSUFBSSxtQkFBSyxFQUFFLENBQUM7SUFFMUIsTUFBTSxrQkFBa0IsR0FBRyxJQUFBLHVCQUFVLEVBQUMsS0FBSyxFQUFFLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMvRCxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRXJFLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN2RSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEUsMEVBQTBFO0lBQzFFLE1BQU0sQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6RCxxQkFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM1QixDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyxxQ0FBcUMsRUFBRSxHQUFHLEVBQUU7SUFDL0MsUUFBUTtJQUNSLE1BQU0sS0FBSyxHQUFHLElBQUksbUJBQUssRUFBRSxDQUFDO0lBRTFCLE1BQU0sa0JBQWtCLEdBQUcsSUFBQSx1QkFBVSxFQUFDLEtBQUssRUFBRSxZQUFZLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDL0QsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUU7UUFDbkUsa0JBQWtCLEVBQUU7WUFDbEIsU0FBUyxFQUFFLEdBQUc7U0FDZjtLQUNGLENBQUMsQ0FBQztJQUVILE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN2RSxvR0FBb0c7SUFDcEcsTUFBTSxhQUFhLEdBQ2hCLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBMEUsQ0FBQyxTQUFTLENBQUM7SUFDbkgsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQywwRUFBMEU7SUFDMUUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNELENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLHFDQUFxQyxFQUFFLEdBQUcsRUFBRTtJQUMvQyxRQUFRO0lBQ1IsTUFBTSxLQUFLLEdBQUcsSUFBSSxtQkFBSyxFQUFFLENBQUM7SUFFMUIsTUFBTSxrQkFBa0IsR0FBRyxJQUFBLG9EQUE0QixFQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNuRSxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsMkJBQTJCLENBQUMsS0FBSyxFQUFFO1FBQzlELEtBQUssRUFBRSxrQkFBa0IsQ0FBQyxXQUFZO0tBQ3ZDLENBQUMsQ0FBQztJQUVILE1BQU0sQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUN0RixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNELE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdEMsTUFBTSxlQUFlLEdBQUksV0FBVyxDQUFDLGdCQUFnQixDQUFDLHdCQUFzRixDQUFDO0lBQzdJLE1BQU0sQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUN6RCxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyxzQ0FBc0MsRUFBRSxHQUFHLEVBQUU7SUFDaEQsTUFBTSxTQUFTLEdBQUcsdUJBQXVCLENBQUM7SUFDMUMsUUFBUTtJQUNSLE1BQU0sS0FBSyxHQUFHLElBQUksbUJBQUssRUFBRSxDQUFDO0lBRTFCLE1BQU0sa0JBQWtCLEdBQUcsSUFBQSxvREFBNEIsRUFBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbkUsUUFBUSxDQUFDLDJCQUEyQixDQUFDLEtBQUssRUFBRTtRQUMxQyxLQUFLLEVBQUUsa0JBQWtCLENBQUMsV0FBWTtRQUN0QyxnQkFBZ0IsRUFBRTtZQUNoQixTQUFTO1NBQ1Y7S0FDRixDQUFDLENBQUM7SUFFSCxNQUFNLFFBQVEsR0FBRyxxQkFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQyxRQUFRLENBQUMscUJBQXFCLENBQUMsaUJBQWlCLEVBQUU7UUFDaEQsU0FBUyxFQUFFLFNBQVM7S0FDckIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUM7QUFFSCxJQUFJLENBQUMsdUNBQXVDLEVBQUUsR0FBRyxFQUFFO0lBQ2pELFFBQVE7SUFDUixNQUFNLEtBQUssR0FBRyxJQUFJLG1CQUFLLEVBQUUsQ0FBQztJQUUxQixNQUFNLGtCQUFrQixHQUFHLElBQUEsb0RBQTRCLEVBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ25FLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQywyQkFBMkIsQ0FBQyxLQUFLLEVBQUU7UUFDOUQsS0FBSyxFQUFFLGtCQUFrQixDQUFDLFdBQVk7UUFDdEMsaUJBQWlCLEVBQUUsS0FBSztLQUN6QixDQUFDLENBQUM7SUFFSCxNQUFNLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDdEYsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLE1BQU0sQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzRCxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3hDLE1BQU0sZUFBZSxHQUFJLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyx3QkFBc0YsQ0FBQztJQUM3SSxNQUFNLENBQUMsZUFBZSxDQUFDLG9CQUFvQixDQUFDLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDN0QsTUFBTSxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3pELE1BQU0sQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUV6RCxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyw2Q0FBNkMsRUFBRSxHQUFHLEVBQUU7SUFDdkQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDO0lBQzVCLFFBQVE7SUFDUixNQUFNLEtBQUssR0FBRyxJQUFJLG1CQUFLLEVBQUUsQ0FBQztJQUUxQixNQUFNLGtCQUFrQixHQUFHLElBQUEsb0RBQTRCLEVBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ25FLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQywyQkFBMkIsQ0FBQyxLQUFLLEVBQUU7UUFDOUQsS0FBSyxFQUFFLGtCQUFrQixDQUFDLFdBQVk7UUFDdEMsV0FBVyxFQUFFO1lBQ1gsd0JBQXdCLEVBQUU7Z0JBQ3hCLGdCQUFnQixFQUFFLFFBQVE7Z0JBQzFCLFNBQVMsRUFBRSxjQUFjO2FBQzFCO1NBQ0Y7S0FDRixDQUFDLENBQUM7SUFFSCxNQUFNLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDdEYsb0dBQW9HO0lBQ3BHLE1BQU0sYUFBYSxHQUNoQixXQUFXLENBQUMsZ0JBQWdCLENBQUMsd0JBQXNGLENBQUMsU0FBUyxDQUFDO0lBQ2pJLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDOUMsMEVBQTBFO0lBQzFFLE1BQU0sQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUUzRCxNQUFNLGVBQWUsR0FBSSxXQUFXLENBQUMsZ0JBQWdCLENBQUMsd0JBQXNGLENBQUM7SUFDN0ksTUFBTSxDQUFDLGVBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RCxNQUFNLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdkQsTUFBTSxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBQ3pELENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLHdDQUF3QyxFQUFFLEdBQUcsRUFBRTtJQUVsRCxRQUFRO0lBQ1IsTUFBTSxLQUFLLEdBQUcsSUFBSSxtQkFBSyxFQUFFLENBQUM7SUFFMUIsTUFBTSx5QkFBeUIsR0FBRyxJQUFBLHdDQUFpQixFQUFDLEtBQUssRUFBRSxvQkFBb0IsRUFBRTtRQUMvRSxpQkFBaUIsRUFBRTtZQUNqQixjQUFjLEVBQUUsUUFBUSxDQUFDLG9DQUFvQyxDQUFDLEtBQUssRUFBRSxvQkFBb0IsQ0FBQztTQUMzRjtLQUNGLENBQUMsQ0FBQztJQUNILE1BQU0sa0JBQWtCLEdBQUcsUUFBUSxDQUFDLHdCQUF3QixDQUFDLHlCQUF5QixDQUFDLFlBQVksQ0FBQyxDQUFDO0lBRXJHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMseUJBQXlCLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3JHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzdGLE1BQU0sY0FBYyxHQUNqQixrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FBQyxrQ0FBNkYsQ0FBQyxjQUFjLENBQUM7SUFDcEosTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ2xELE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGdCQUFnQixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNFLDBFQUEwRTtJQUMxRSxNQUFNLENBQUMsa0JBQWtCLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRSxxQkFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUU1QixDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQywrQ0FBK0MsRUFBRSxHQUFHLEVBQUU7SUFFekQsUUFBUTtJQUNSLE1BQU0sS0FBSyxHQUFHLElBQUksbUJBQUssRUFBRSxDQUFDO0lBRTFCLE1BQU0seUJBQXlCLEdBQUcsSUFBQSx3Q0FBaUIsRUFBQyxLQUFLLEVBQUUsb0JBQW9CLEVBQUU7UUFDL0UsaUJBQWlCLEVBQUU7WUFDakIsY0FBYyxFQUFFLFFBQVEsQ0FBQyxvQ0FBb0MsQ0FBQyxLQUFLLEVBQUUsb0JBQW9CLENBQUM7U0FDM0Y7S0FDRixDQUFDLENBQUM7SUFDSCxNQUFNLGtCQUFrQixHQUFHLFFBQVEsQ0FBQyx3QkFBd0IsQ0FBQyx5QkFBeUIsQ0FBQyxZQUFZLEVBQUU7UUFDbkcsa0NBQWtDLEVBQUU7WUFDbEMsY0FBYyxFQUFFLGtCQUFrQjtTQUNuQztLQUNGLENBQUMsQ0FBQztJQUVILE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMseUJBQXlCLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3JHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzdGLE1BQU0sY0FBYyxHQUNqQixrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FBQyxrQ0FBNkYsQ0FBQyxjQUFjLENBQUM7SUFDcEosTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ25ELE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGdCQUFnQixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNFLDBFQUEwRTtJQUMxRSxNQUFNLENBQUMsa0JBQWtCLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwRSxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyx3REFBd0QsRUFBRSxHQUFHLEVBQUU7SUFDbEUsUUFBUTtJQUNSLE1BQU0sS0FBSyxHQUFHLElBQUksbUJBQUssRUFBRSxDQUFDO0lBRTFCLE1BQU0sa0JBQWtCLEdBQUcsSUFBQSxvREFBNEIsRUFBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFbkUsTUFBTSxHQUFHLEdBQUcsR0FBRyxFQUFFO1FBQ2YsUUFBUSxDQUFDLDJCQUEyQixDQUFDLEtBQUssRUFBRTtZQUMxQyxXQUFXLEVBQUU7Z0JBQ1gsd0JBQXdCLEVBQUU7b0JBQ3hCLGdCQUFnQixFQUFFLFFBQVE7b0JBQzFCLHlCQUF5QixFQUFFLEdBQUc7aUJBQy9CO2FBQ0Y7WUFDRCxLQUFLLEVBQUUsa0JBQWtCLENBQUMsV0FBWTtZQUN0QyxpQkFBaUIsRUFBRSxLQUFLO1NBQ3pCLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQztJQUNGLFlBQVk7SUFDWixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsWUFBWSxDQUFDLDRFQUE0RSxDQUFDLENBQUM7QUFDekcsQ0FBQyxDQUFDLENBQUM7QUFFSCxvQ0FBb0M7QUFDcEMscUJBQXFCO0FBQ3JCLG9DQUFvQztBQUVwQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsR0FBRyxFQUFFO0lBQ2pDLE1BQU0sY0FBYyxHQUFHLFlBQVksQ0FBQztJQUNwQyxNQUFNLE1BQU0sR0FBRyxhQUFhLENBQUM7SUFFN0IsUUFBUTtJQUNSLE1BQU0sS0FBSyxHQUFHLElBQUksbUJBQUssRUFBRSxDQUFDO0lBQzFCLE1BQU0sYUFBYSxHQUFHLG1CQUFtQixDQUFDLEtBQUssRUFBRSxjQUFjLENBQUMsQ0FBQztJQUVqRSxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUU7UUFDckQsTUFBTSxFQUFFLGFBQWEsQ0FBQyxNQUFNO1FBQzVCLE1BQU0sRUFBRSxhQUFhLENBQUMsTUFBTTtRQUM1QixXQUFXLEVBQUUsRUFBRTtLQUNoQixDQUFDLENBQUM7SUFFSCwyQkFBMkIsQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFFekQsTUFBTSxRQUFRLEdBQUcscUJBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0MsUUFBUSxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRCxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ3BELGFBQWEsQ0FBQyxRQUFRLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDeEMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzFCLENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLDhCQUE4QixFQUFFLEdBQUcsRUFBRTtJQUN4QyxNQUFNLGNBQWMsR0FBRyxlQUFlLENBQUM7SUFDdkMsTUFBTSxNQUFNLEdBQUcsZUFBZSxDQUFDO0lBQy9CLFFBQVE7SUFDUixNQUFNLEtBQUssR0FBRyxJQUFJLG1CQUFLLEVBQUUsQ0FBQztJQUMxQixNQUFNLGFBQWEsR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFFakUsTUFBTSxlQUFlLEdBQUcsa0JBQWtCLENBQUM7SUFDM0MsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFO1FBQ3JELE1BQU0sRUFBRSxhQUFhLENBQUMsTUFBTTtRQUM1QixNQUFNLEVBQUUsYUFBYSxDQUFDLE1BQU07UUFDNUIsV0FBVyxFQUFFO1lBQ1gsV0FBVyxFQUFFLGVBQWU7U0FDN0I7S0FDRixDQUFDLENBQUM7SUFDSCwyQkFBMkIsQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFFekQsTUFBTSxRQUFRLEdBQUcscUJBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0MsaUJBQWlCLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxjQUFjLENBQUMsQ0FBQztJQUNwRCxhQUFhLENBQUMsUUFBUSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ3hDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUV4QiwyREFBMkQ7SUFDM0QsUUFBUSxDQUFDLHFCQUFxQixDQUFDLGtCQUFrQixFQUFFO1FBQ2pELFdBQVcsRUFBRSxlQUFlO0tBQzdCLENBQUMsQ0FBQztBQUVMLENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLDZCQUE2QixFQUFFLEdBQUcsRUFBRTtJQUN2QyxNQUFNLGNBQWMsR0FBRyxZQUFZLENBQUM7SUFDcEMsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDO0lBRTVCLFFBQVE7SUFDUixNQUFNLEtBQUssR0FBRyxJQUFJLG1CQUFLLEVBQUUsQ0FBQztJQUMxQixNQUFNLGFBQWEsR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFFakUsTUFBTSxpQkFBaUIsR0FBRzs7OztJQUl4QixDQUFDO0lBRUgsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFO1FBQ3JELE1BQU0sRUFBRSxhQUFhLENBQUMsTUFBTTtRQUM1QixNQUFNLEVBQUUsYUFBYSxDQUFDLE1BQU07UUFDNUIsV0FBVyxFQUFFO1lBQ1gsZ0JBQWdCLEVBQUU7Z0JBQ2hCLGNBQWMsRUFBRTtvQkFDZCxPQUFPLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxDQUFDO2lCQUMxQzthQUNGO1NBQ0Y7S0FDRixDQUFDLENBQUM7SUFDSCwyQkFBMkIsQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFFekQsTUFBTSxRQUFRLEdBQUcscUJBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0MsaUJBQWlCLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxjQUFjLENBQUMsQ0FBQztJQUNwRCxhQUFhLENBQUMsUUFBUSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ3hDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUV4Qiw0REFBNEQ7SUFDNUQsUUFBUSxDQUFDLHFCQUFxQixDQUFDLGtCQUFrQixFQUFFO1FBQ2pELGdCQUFnQixFQUFFO1lBQ2hCLGNBQWMsRUFBRTtnQkFDZCxPQUFPLEVBQUU7b0JBQ1A7d0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtxQkFDM0I7aUJBQ0Y7YUFDRjtTQUNGO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUM7QUFFSCxJQUFJLENBQUMsK0NBQStDLEVBQUUsR0FBRyxFQUFFO0lBQ3pELE1BQU0sY0FBYyxHQUFHLGtCQUFrQixDQUFDO0lBQzFDLE1BQU0sTUFBTSxHQUFHLGtCQUFrQixDQUFDO0lBRWxDLFFBQVE7SUFDUixNQUFNLEtBQUssR0FBRyxJQUFJLG1CQUFLLEVBQUUsQ0FBQztJQUMxQixNQUFNLGFBQWEsR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFFakUsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLHFCQUFxQixFQUFFO1FBQzNFLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLFNBQVMsY0FBYyxDQUFDO1FBQ3ZELE9BQU8sRUFBRSxlQUFlO1FBQ3hCLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVc7S0FDcEMsQ0FBQyxDQUFDO0lBRUgsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFO1FBQ3JELE1BQU0sRUFBRSxhQUFhLENBQUMsTUFBTTtRQUM1QixNQUFNLEVBQUUsYUFBYSxDQUFDLE1BQU07UUFDNUIsa0JBQWtCO0tBQ25CLENBQUMsQ0FBQztJQUNILDJCQUEyQixDQUFDLFlBQVksRUFBRSxhQUFhLENBQUMsQ0FBQztJQUV6RCxNQUFNLFFBQVEsR0FBRyxxQkFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQyxRQUFRLENBQUMsZUFBZSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hELGlCQUFpQixDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDcEQsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRXhCLHFEQUFxRDtJQUNyRCxRQUFRLENBQUMscUJBQXFCLENBQUMsa0JBQWtCLEVBQUU7UUFDakQsVUFBVSxFQUFFO1lBQ1YsWUFBWSxFQUFFO2dCQUNaLGtCQUFLLENBQUMsZ0JBQWdCLENBQUMsc0JBQXNCLENBQUM7Z0JBQzlDLEtBQUs7YUFDTjtTQUNGO0tBQ0YsQ0FBQyxDQUFDO0lBQ0gsNENBQTRDO0lBQzVDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDeEMseUNBQXlDO0lBQ3pDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxrQkFBa0IsRUFBRTtRQUNqRCxjQUFjLEVBQUU7WUFDZCxTQUFTLEVBQUU7Z0JBQ1Q7b0JBQ0UsTUFBTSxFQUFFLHVCQUF1QjtvQkFDL0IsTUFBTSxFQUFFLE9BQU87b0JBQ2YsUUFBUSxFQUFFO3dCQUNSLFlBQVksRUFBRTs0QkFDWixrQkFBSyxDQUFDLGdCQUFnQixDQUFDLHNCQUFzQixDQUFDOzRCQUM5QyxLQUFLO3lCQUNOO3FCQUNGO2lCQUNGO2FBQ0Y7WUFDRCxPQUFPLEVBQUUsWUFBWTtTQUN0QjtRQUNELFVBQVUsRUFBRSxrQkFBSyxDQUFDLGdCQUFnQixDQUFDLG1CQUFtQixNQUFNLElBQUksQ0FBQztRQUNqRSxLQUFLLEVBQUU7WUFDTDtnQkFDRSxHQUFHLEVBQUUsa0JBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLE1BQU0sSUFBSSxDQUFDO2FBQ25EO1NBQ0Y7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyw2Q0FBNkMsRUFBRSxHQUFHLEVBQUU7SUFDdkQsTUFBTSxjQUFjLEdBQUcsY0FBYyxDQUFDO0lBQ3RDLE1BQU0sTUFBTSxHQUFHLGNBQWMsQ0FBQztJQUU5QixRQUFRO0lBQ1IsTUFBTSxLQUFLLEdBQUcsSUFBSSxtQkFBSyxFQUFFLENBQUM7SUFDMUIsTUFBTSxhQUFhLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBRWpFLE1BQU0sc0JBQXNCLEdBQUcsUUFBUSxDQUFDLHNCQUFzQixDQUFDLEtBQUssRUFBRSwwQkFBMEIsQ0FBQyxDQUFDO0lBRWxHLE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRTtRQUNyRCxNQUFNLEVBQUUsYUFBYSxDQUFDLE1BQU07UUFDNUIsTUFBTSxFQUFFLGFBQWEsQ0FBQyxNQUFNO1FBQzVCLHNCQUFzQjtLQUN2QixDQUFDLENBQUM7SUFDSCwyQkFBMkIsQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFFekQsTUFBTSxRQUFRLEdBQUcscUJBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0MsUUFBUSxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRCxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ3BELGFBQWEsQ0FBQyxRQUFRLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDeEMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRXhCLDJDQUEyQztJQUMzQyxRQUFRLENBQUMscUJBQXFCLENBQUMsa0JBQWtCLEVBQUU7UUFDakQsY0FBYyxFQUFFO1lBQ2QsU0FBUyxFQUFFO2dCQUNUO29CQUNFLHlGQUF5RjtvQkFDekYsTUFBTSxFQUFFLDJCQUEyQjtvQkFDbkMsTUFBTSxFQUFFLE9BQU87b0JBQ2YsUUFBUSxFQUFFO3dCQUNSLEdBQUcsRUFBRSxrQkFBSyxDQUFDLGdCQUFnQixDQUFDLDBCQUEwQixDQUFDO3FCQUN4RDtpQkFDRjthQUNGO1lBQ0QsT0FBTyxFQUFFLFlBQVk7U0FDdEI7UUFDRCxVQUFVLEVBQUUsa0JBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxtQkFBbUIsTUFBTSxJQUFJLENBQUM7UUFDakUsS0FBSyxFQUFFO1lBQ0w7Z0JBQ0UsR0FBRyxFQUFFLGtCQUFLLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxNQUFNLElBQUksQ0FBQzthQUNuRDtTQUNGO0tBQ0YsQ0FBQyxDQUFDO0lBQ0gsUUFBUSxDQUFDLHFCQUFxQixDQUFDLGtCQUFrQixFQUFFO1FBQ2pELFVBQVUsRUFBRTtZQUNWLEdBQUcsRUFBRSxrQkFBSyxDQUFDLGdCQUFnQixDQUFDLDBCQUEwQixDQUFDO1NBQ3hEO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUM7QUFFSCxJQUFJLENBQUMsc0NBQXNDLEVBQUUsR0FBRyxFQUFFO0lBQ2hELE1BQU0sY0FBYyxHQUFHLGVBQWUsQ0FBQztJQUN2QyxNQUFNLE1BQU0sR0FBRyxlQUFlLENBQUM7SUFFL0IsUUFBUTtJQUNSLE1BQU0sS0FBSyxHQUFHLElBQUksbUJBQUssRUFBRSxDQUFDO0lBQzFCLE1BQU0sYUFBYSxHQUFHLG1CQUFtQixDQUFDLEtBQUssRUFBRSxjQUFjLENBQUMsQ0FBQztJQUVqRSxNQUFNLHNCQUFzQixHQUErQztRQUN6RSxnQkFBZ0IsRUFBRTtZQUNoQixVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxVQUFVO1NBQ3BEO1FBQ0QsS0FBSyxFQUFFLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSztLQUNwQyxDQUFDO0lBQ0YsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFO1FBQ3JELE1BQU0sRUFBRSxhQUFhLENBQUMsTUFBTTtRQUM1QixNQUFNLEVBQUUsYUFBYSxDQUFDLE1BQU07UUFDNUIsV0FBVyxFQUFFO1lBQ1gsZ0JBQWdCLEVBQUUsc0JBQXNCO1NBQ3pDO0tBQ0YsQ0FBQyxDQUFDO0lBQ0gsMkJBQTJCLENBQUMsWUFBWSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBRXpELE1BQU0sUUFBUSxHQUFHLHFCQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNDLHdCQUF3QixDQUFDLFFBQVEsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUVuRCxRQUFRLENBQUMscUJBQXFCLENBQUMsa0JBQWtCLEVBQUU7UUFDakQsZ0JBQWdCLEVBQUU7WUFDaEIsS0FBSyxFQUFFLE9BQU87WUFDZCxnQkFBZ0IsRUFBRTtnQkFDaEIsVUFBVSxFQUFFO29CQUNWLEdBQUcsRUFBRSxrQkFBSyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQztpQkFDdEM7YUFDRjtTQUNGO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRCxhQUFhLENBQUMsUUFBUSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0FBQzFDLENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLGdDQUFnQyxFQUFFLEdBQUcsRUFBRTtJQUMxQyxNQUFNLGNBQWMsR0FBRyxlQUFlLENBQUM7SUFDdkMsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDO0lBRTlCLFFBQVE7SUFDUixNQUFNLEtBQUssR0FBRyxJQUFJLG1CQUFLLEVBQUUsQ0FBQztJQUMxQixNQUFNLGFBQWEsR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFFakUsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFO1FBQ3JELE1BQU0sRUFBRSxhQUFhLENBQUMsTUFBTTtRQUM1QixNQUFNLEVBQUUsYUFBYSxDQUFDLE1BQU07UUFDNUIsUUFBUSxFQUFFLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSztLQUN2QyxDQUFDLENBQUM7SUFDSCwyQkFBMkIsQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFFekQsTUFBTSxRQUFRLEdBQUcscUJBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0MsUUFBUSxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRCxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ3BELGFBQWEsQ0FBQyxRQUFRLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDeEMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRXhCLCtCQUErQjtJQUMvQixRQUFRLENBQUMscUJBQXFCLENBQUMsa0JBQWtCLEVBQUU7UUFDakQsZ0JBQWdCLEVBQUU7WUFDaEIsS0FBSyxFQUFFLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSztTQUNwQztLQUNGLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEdBQUcsRUFBRTtJQUMzQixNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUM7SUFDaEMsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDO0lBRTFCLFFBQVE7SUFDUixNQUFNLEtBQUssR0FBRyxJQUFJLG1CQUFLLEVBQUUsQ0FBQztJQUMxQixNQUFNLGFBQWEsR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFFakUsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFO1FBQ3JELE1BQU0sRUFBRSxhQUFhLENBQUMsTUFBTTtRQUM1QixNQUFNLEVBQUUsYUFBYSxDQUFDLE1BQU07UUFDNUIsUUFBUSxFQUFFLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRztLQUNyQyxDQUFDLENBQUM7SUFDSCwyQkFBMkIsQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFFekQsTUFBTSxRQUFRLEdBQUcscUJBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0MsUUFBUSxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRCx3QkFBd0IsQ0FBQyxRQUFRLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDbkQsYUFBYSxDQUFDLFFBQVEsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUV4Qyx5REFBeUQ7SUFDekQsUUFBUSxDQUFDLGVBQWUsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNyRCxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQywyQ0FBMkMsRUFBRSxHQUFHLEVBQUU7SUFDckQsTUFBTSxjQUFjLEdBQUcsY0FBYyxDQUFDO0lBQ3RDLE1BQU0sTUFBTSxHQUFHLGNBQWMsQ0FBQztJQUM5QixNQUFNLGFBQWEsR0FBRyxDQUFDLENBQUM7SUFFeEIsUUFBUTtJQUNSLE1BQU0sS0FBSyxHQUFHLElBQUksbUJBQUssRUFBRSxDQUFDO0lBQzFCLE1BQU0sYUFBYSxHQUFHLG1CQUFtQixDQUFDLEtBQUssRUFBRSxjQUFjLENBQUMsQ0FBQztJQUVqRSxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUU7UUFDckQsTUFBTSxFQUFFLGFBQWEsQ0FBQyxNQUFNO1FBQzVCLE1BQU0sRUFBRSxhQUFhLENBQUMsTUFBTTtRQUM1QixXQUFXLEVBQUU7WUFDWCxnQkFBZ0IsRUFBRTtnQkFDaEIsa0JBQWtCLEVBQUU7b0JBQ2xCLFNBQVMsRUFBRSxhQUFhO2lCQUN6QjthQUNGO1NBQ0Y7S0FDRixDQUFDLENBQUM7SUFFSCwyQkFBMkIsQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFFekQsTUFBTSxRQUFRLEdBQUcscUJBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0MsUUFBUSxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRCxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ3BELGFBQWEsQ0FBQyxRQUFRLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDeEMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRXhCLFFBQVEsQ0FBQyxlQUFlLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEQsUUFBUSxDQUFDLHFCQUFxQixDQUFDLGtCQUFrQixFQUFFO1FBQ2pELGdCQUFnQixFQUFFO1lBQ2hCLGtCQUFrQixFQUFFO2dCQUNsQixTQUFTLEVBQUUsYUFBYTthQUN6QjtTQUNGO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUM7QUFFSCxJQUFJLENBQUMsc0JBQXNCLEVBQUUsR0FBRyxFQUFFO0lBQ2hDLE1BQU0sY0FBYyxHQUFHLGtCQUFrQixDQUFDO0lBQzFDLE1BQU0sTUFBTSxHQUFHLGtCQUFrQixDQUFDO0lBQ2xDLHdEQUF3RDtJQUN4RCw0Q0FBNEM7SUFDNUMsTUFBTSxhQUFhLEdBQUcsd0JBQWEsQ0FBQyxXQUFXLENBQUM7SUFFaEQsUUFBUTtJQUNSLE1BQU0sS0FBSyxHQUFHLElBQUksbUJBQUssRUFBRSxDQUFDO0lBQzFCLE1BQU0sYUFBYSxHQUFHLG1CQUFtQixDQUFDLEtBQUssRUFBRSxjQUFjLENBQUMsQ0FBQztJQUVqRSxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUU7UUFDckQsTUFBTSxFQUFFLGFBQWEsQ0FBQyxNQUFNO1FBQzVCLE1BQU0sRUFBRSxhQUFhLENBQUMsTUFBTTtRQUM1QixZQUFZLEVBQUU7WUFDWixTQUFTLEVBQUUsYUFBYTtTQUN6QjtLQUNGLENBQUMsQ0FBQztJQUVILDJCQUEyQixDQUFDLFlBQVksRUFBRSxhQUFhLENBQUMsQ0FBQztJQUV6RCxNQUFNLFFBQVEsR0FBRyxxQkFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQyxRQUFRLENBQUMsZUFBZSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hELGlCQUFpQixDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDcEQsYUFBYSxDQUFDLFFBQVEsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUN4QyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDeEIseUJBQXlCLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBRTVDLHlEQUF5RDtJQUN6RCxRQUFRLENBQUMscUJBQXFCLENBQUMscUJBQXFCLEVBQUU7UUFDcEQsZUFBZSxFQUFFLEdBQUc7S0FDckIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUM7QUFFSCxJQUFJLENBQUMsbURBQW1ELEVBQUUsR0FBRyxFQUFFO0lBQzdELFFBQVE7SUFDUixNQUFNLEtBQUssR0FBRyxJQUFJLG1CQUFLLEVBQUUsQ0FBQztJQUMxQixNQUFNLGFBQWEsR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztJQUVuRSxNQUFNLEdBQUcsR0FBRyxHQUFHLEVBQUU7UUFDZixRQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUU7WUFDckMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxNQUFNO1lBQzVCLE1BQU0sRUFBRSxhQUFhLENBQUMsTUFBTTtZQUM1QixXQUFXLEVBQUU7Z0JBQ1gsTUFBTSxFQUFFLGFBQWEsQ0FBQyxNQUFNLENBQUMsU0FBUzthQUN2QztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQztJQUNGLFlBQVk7SUFDWixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsWUFBWSxDQUFDLDhFQUE4RSxDQUFDLENBQUM7QUFDM0csQ0FBQyxDQUFDLENBQUM7QUFFSCxJQUFJLENBQUMsbURBQW1ELEVBQUUsR0FBRyxFQUFFO0lBQzdELFFBQVE7SUFDUixNQUFNLEtBQUssR0FBRyxJQUFJLG1CQUFLLEVBQUUsQ0FBQztJQUMxQixNQUFNLGFBQWEsR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztJQUVuRSxNQUFNLEdBQUcsR0FBRyxHQUFHLEVBQUU7UUFDZixRQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUU7WUFDckMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxNQUFNO1lBQzVCLE1BQU0sRUFBRSxhQUFhLENBQUMsTUFBTTtZQUM1QixXQUFXLEVBQUU7Z0JBQ1gsTUFBTSxFQUFFLGFBQWEsQ0FBQyxNQUFNLENBQUMsU0FBUzthQUN2QztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQztJQUNGLFlBQVk7SUFDWixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsWUFBWSxDQUFDLDhFQUE4RSxDQUFDLENBQUM7QUFDM0csQ0FBQyxDQUFDLENBQUM7QUFFSCxJQUFJLENBQUMsMENBQTBDLEVBQUUsR0FBRyxFQUFFO0lBQ3BELFFBQVE7SUFDUixNQUFNLEtBQUssR0FBRyxJQUFJLG1CQUFLLEVBQUUsQ0FBQztJQUMxQixNQUFNLGFBQWEsR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztJQUVuRSxNQUFNLEdBQUcsR0FBRyxHQUFHLEVBQUU7UUFDZixRQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUU7WUFDckMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxNQUFNO1lBQzVCLE1BQU0sRUFBRSxhQUFhLENBQUMsTUFBTTtZQUM1QixXQUFXLEVBQUU7Z0JBQ1gsT0FBTyxFQUFFLFVBQVU7YUFDcEI7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDLENBQUM7SUFDRixZQUFZO0lBQ1osTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFlBQVksQ0FBQyw4RUFBOEUsQ0FBQyxDQUFDO0FBQzNHLENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLDJDQUEyQyxFQUFFLEdBQUcsRUFBRTtJQUNyRCxRQUFRO0lBQ1IsTUFBTSxLQUFLLEdBQUcsSUFBSSxtQkFBSyxFQUFFLENBQUM7SUFDMUIsTUFBTSxhQUFhLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLENBQUM7SUFFbkUsTUFBTSxHQUFHLEdBQUcsR0FBRyxFQUFFO1FBQ2YsUUFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFO1lBQ3JDLE1BQU0sRUFBRSxhQUFhLENBQUMsTUFBTTtZQUM1QixNQUFNLEVBQUUsYUFBYSxDQUFDLE1BQU07WUFDNUIsV0FBVyxFQUFFO2dCQUNYLFVBQVUsRUFBRSxhQUFhO2FBQzFCO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDO0lBQ0YsWUFBWTtJQUNaLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLENBQUMsOEVBQThFLENBQUMsQ0FBQztBQUMzRyxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyx3RUFBd0UsRUFBRSxHQUFHLEVBQUU7SUFDbEYsUUFBUTtJQUNSLE1BQU0sS0FBSyxHQUFHLElBQUksbUJBQUssRUFBRSxDQUFDO0lBQzFCLE1BQU0sYUFBYSxHQUFHLG1CQUFtQixDQUFDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBRW5FLE1BQU0sR0FBRyxHQUFHLEdBQUcsRUFBRTtRQUNmLFFBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRTtZQUNyQyxNQUFNLEVBQUUsYUFBYSxDQUFDLE1BQU07WUFDNUIsTUFBTSxFQUFFLGFBQWEsQ0FBQyxNQUFNO1lBQzVCLFFBQVEsRUFBRSxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUs7WUFDdEMsV0FBVyxFQUFFO2dCQUNYLGdCQUFnQixFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTthQUNyQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQztJQUNGLFlBQVk7SUFDWixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsWUFBWSxDQUFDLHFFQUFxRSxDQUFDLENBQUM7QUFDbEcsQ0FBQyxDQUFDLENBQUM7QUFFSCxJQUFJLENBQUMsMkVBQTJFLEVBQUUsR0FBRyxFQUFFO0lBQ3JGLFFBQVE7SUFDUixNQUFNLEtBQUssR0FBRyxJQUFJLG1CQUFLLEVBQUUsQ0FBQztJQUMxQixNQUFNLGFBQWEsR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztJQUVuRSxNQUFNLEdBQUcsR0FBRyxHQUFHLEVBQUU7UUFDZixRQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUU7WUFDckMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxNQUFNO1lBQzVCLE1BQU0sRUFBRSxhQUFhLENBQUMsTUFBTTtZQUM1QixZQUFZLEVBQUUsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFO1lBQzFDLFdBQVcsRUFBRTtnQkFDWCxnQkFBZ0IsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7YUFDckM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDLENBQUM7SUFDRixZQUFZO0lBQ1osTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFlBQVksQ0FBQyx5RUFBeUUsQ0FBQyxDQUFDO0FBQ3RHLENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLHNGQUFzRixFQUFFLEdBQUcsRUFBRTtJQUNoRyxRQUFRO0lBQ1IsTUFBTSxLQUFLLEdBQUcsSUFBSSxtQkFBSyxFQUFFLENBQUM7SUFDMUIsTUFBTSxhQUFhLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLENBQUM7SUFFbkUsTUFBTSxHQUFHLEdBQUcsR0FBRyxFQUFFO1FBQ2YsUUFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFO1lBQ3JDLE1BQU0sRUFBRSxhQUFhLENBQUMsTUFBTTtZQUM1QixNQUFNLEVBQUUsYUFBYSxDQUFDLE1BQU07WUFDNUIsa0JBQWtCLEVBQUUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFnQztZQUNyRSxzQkFBc0IsRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQWlDO1NBQzNFLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQztJQUNGLFlBQVk7SUFDWixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsWUFBWSxDQUFDLGtGQUFrRixDQUFDLENBQUM7QUFDL0csQ0FBQyxDQUFDLENBQUM7QUFFSCxJQUFJLENBQUMsK0RBQStELEVBQUUsR0FBRyxFQUFFO0lBQ3pFLFFBQVE7SUFDUixNQUFNLEtBQUssR0FBRyxJQUFJLG1CQUFLLEVBQUUsQ0FBQztJQUMxQixNQUFNLGFBQWEsR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztJQUVuRSxNQUFNLEdBQUcsR0FBRyxHQUFHLEVBQUU7UUFDZixRQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUU7WUFDckMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxNQUFNO1lBQzVCLE1BQU0sRUFBRSxhQUFhLENBQUMsTUFBTTtZQUM1QixRQUFRLEVBQUUsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHO1lBQ3BDLFlBQVksRUFBRSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUU7U0FDM0MsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDO0lBQ0YsWUFBWTtJQUNaLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLENBQUMsc0VBQXNFLENBQUMsQ0FBQztBQUNuRyxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyw2QkFBNkIsRUFBRSxHQUFHLEVBQUU7SUFDdkMsTUFBTSxHQUFHLEdBQUcsR0FBRyxFQUFFO1FBQ2YsUUFBUSxDQUFDLGVBQWUsQ0FBQztZQUN2QixVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFO1NBQ2hDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQztJQUNGLFlBQVk7SUFDWixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsWUFBWSxDQUFDLGdFQUFnRSxDQUFDLENBQUM7SUFFM0YsTUFBTSxNQUFNLEdBQUcsR0FBRyxFQUFFO1FBQ2xCLFFBQVEsQ0FBQyxlQUFlLENBQUM7WUFDdkIsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRTtTQUNoQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUM7SUFDRixZQUFZO0lBQ1osTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxnRUFBZ0UsQ0FBQyxDQUFDO0FBRWhHLENBQUMsQ0FBQyxDQUFDO0FBV0gsU0FBUyxtQkFBbUIsQ0FBQyxLQUFZLEVBQUUsRUFBVTtJQUNuRCxNQUFNLGtCQUFrQixHQUFHLElBQUEsdUJBQVUsRUFBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLGVBQWUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN2RSxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRXJFLE1BQU0seUJBQXlCLEdBQUcsSUFBQSx3Q0FBaUIsRUFBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLHVCQUF1QixFQUFFO1FBQ3ZGLGlCQUFpQixFQUFFO1lBQ2pCLGNBQWMsRUFBRSxRQUFRLENBQUMsb0NBQW9DLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxRQUFRLENBQUM7U0FDcEY7S0FDRixDQUFDLENBQUM7SUFDSCxNQUFNLGtCQUFrQixHQUFHLFFBQVEsQ0FBQyx3QkFBd0IsQ0FBQyx5QkFBeUIsQ0FBQyxZQUFZLEVBQUU7UUFDbkcsa0NBQWtDLEVBQUU7WUFDbEMsY0FBYyxFQUFFLGtCQUFrQjtTQUNuQztLQUNGLENBQUMsQ0FBQztJQUNILE9BQU87UUFDTCxNQUFNLEVBQUUsU0FBUztRQUNqQixNQUFNLEVBQUUsa0JBQWtCO0tBQzNCLENBQUM7QUFDSixDQUFDO0FBRUQsaUNBQWlDO0FBQ2pDLCtDQUErQztBQUMvQyxpQ0FBaUM7QUFFakMsU0FBUywyQkFBMkIsQ0FBQyxZQUF5QyxFQUFFLGFBQTRCO0lBQzFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDeEMsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDekUsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDekUsTUFBTSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUM1QyxNQUFNLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUNuRCxDQUFDO0FBRUQsU0FBUyxpQkFBaUIsQ0FBQyxRQUFrQixFQUMzQyxNQUFjLEVBQ2QsY0FBc0I7SUFFdEIsd0JBQXdCLENBQUMsUUFBUSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ25ELHlCQUF5QixDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUM5QyxDQUFDO0FBRUQsU0FBUyx3QkFBd0IsQ0FBQyxRQUFrQixFQUFFLGNBQXNCO0lBQzFFLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxrQkFBa0IsRUFBRTtRQUNqRCxNQUFNLEVBQUU7WUFDTixZQUFZLEVBQUU7Z0JBQ1osa0JBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLGNBQWMsZUFBZSxDQUFDO2dCQUN4RCxLQUFLO2FBQ047U0FDRjtRQUNELE1BQU0sRUFBRTtZQUNOLEdBQUcsRUFBRSxrQkFBSyxDQUFDLGdCQUFnQixDQUFDLGVBQWUsY0FBYyxzQkFBc0IsQ0FBQztTQUNqRjtLQUNGLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxTQUFTLHlCQUF5QixDQUFDLFFBQWtCLEVBQUUsTUFBYztJQUNuRSxRQUFRLENBQUMscUJBQXFCLENBQUMsa0JBQWtCLEVBQUU7UUFDakQsZ0JBQWdCLEVBQUU7WUFDaEIsNEJBQTRCLEVBQUU7Z0JBQzVCLFdBQVcsRUFBRTtvQkFDWCxZQUFZLEVBQUU7d0JBQ1osa0JBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLE1BQU0sSUFBSSxDQUFDO3dCQUM3QyxLQUFLO3FCQUNOO2lCQUNGO2FBQ0Y7U0FDRjtLQUNGLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxTQUFTLGFBQWEsQ0FBQyxRQUFrQixFQUFFLGNBQXNCO0lBQy9ELFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxnQkFBZ0IsRUFBRTtRQUMvQyx3QkFBd0IsRUFBRTtZQUN4QixTQUFTLEVBQUU7Z0JBQ1Q7b0JBQ0UsTUFBTSxFQUFFLGdCQUFnQjtvQkFDeEIsTUFBTSxFQUFFLE9BQU87b0JBQ2YsU0FBUyxFQUFFO3dCQUNULE9BQU8sRUFBRSxxQkFBcUI7cUJBQy9CO2lCQUNGO2FBQ0Y7WUFDRCxPQUFPLEVBQUUsWUFBWTtTQUN0QjtRQUNELFFBQVEsRUFBRTtZQUNSO2dCQUNFLGNBQWMsRUFBRTtvQkFDZCxTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsTUFBTSxFQUFFO2dDQUNOLG9CQUFvQjtnQ0FDcEIsbUJBQW1CO2dDQUNuQix3QkFBd0I7NkJBQ3pCOzRCQUNELE1BQU0sRUFBRSxPQUFPOzRCQUNmLFFBQVEsRUFBRTtnQ0FDUixZQUFZLEVBQUU7b0NBQ1osa0JBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLGNBQWMsZUFBZSxDQUFDO29DQUN4RCxLQUFLO2lDQUNOOzZCQUNGO3lCQUNGO3FCQUNGO29CQUNELE9BQU8sRUFBRSxZQUFZO2lCQUN0QjtnQkFDRCxVQUFVLEVBQUUsY0FBYzthQUMzQjtZQUNEO2dCQUNFLGNBQWMsRUFBRTtvQkFDZCxTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsTUFBTSxFQUFFLHVCQUF1Qjs0QkFDL0IsTUFBTSxFQUFFLE9BQU87NEJBQ2YsUUFBUSxFQUFFO2dDQUNSLEdBQUcsRUFBRSxrQkFBSyxDQUFDLGdCQUFnQixDQUFDLGVBQWUsY0FBYyxzQkFBc0IsQ0FBQzs2QkFDakY7eUJBQ0Y7cUJBQ0Y7b0JBQ0QsT0FBTyxFQUFFLFlBQVk7aUJBQ3RCO2dCQUNELFVBQVUsRUFBRSxjQUFjO2FBQzNCO1NBQ0Y7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsU0FBUyxhQUFhLENBQUMsUUFBa0I7SUFDdkMsUUFBUSxDQUFDLHFCQUFxQixDQUFDLHFCQUFxQixFQUFFO1FBQ3BELFlBQVksRUFBRTtZQUNaLFVBQVUsRUFBRTtnQkFDVixFQUFFO2dCQUNGO29CQUNFLGtCQUFLLENBQUMsZ0JBQWdCLENBQUMsa0NBQWtDLENBQUM7b0JBQzFEO3dCQUNFLFlBQVksRUFBRTs0QkFDWixDQUFDOzRCQUNELGtCQUFLLENBQUMsUUFBUSxFQUFFO3lCQUNqQjtxQkFDRjtpQkFDRjthQUNGO1NBQ0Y7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIikuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2VcbiAqICB3aXRoIHRoZSBMaWNlbnNlLiBBIGNvcHkgb2YgdGhlIExpY2Vuc2UgaXMgbG9jYXRlZCBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIG9yIGluIHRoZSAnbGljZW5zZScgZmlsZSBhY2NvbXBhbnlpbmcgdGhpcyBmaWxlLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTXG4gKiAgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcbiAqICBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgYnVpbGRRdWV1ZSB9IGZyb20gXCIuLi9saWIvc3FzLWhlbHBlclwiO1xuaW1wb3J0IHsgYnVpbGRTdGF0ZU1hY2hpbmUgfSBmcm9tIFwiLi4vbGliL3N0ZXAtZnVuY3Rpb24taGVscGVyXCI7XG5pbXBvcnQgeyBidWlsZER5bmFtb0RCVGFibGVXaXRoU3RyZWFtIH0gZnJvbSBcIi4uL2xpYi9keW5hbW9kYi10YWJsZS1oZWxwZXJcIjtcbmltcG9ydCB7IFN0YWNrIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgKiBhcyBkZWZhdWx0cyBmcm9tICcuLi8nO1xuaW1wb3J0ICogYXMgcGlwZXMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXBpcGVzJztcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCAqIGFzIHNmbiBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc3RlcGZ1bmN0aW9ucyc7XG5pbXBvcnQgKiBhcyBzMyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMnO1xuaW1wb3J0IHsgTWF0Y2gsIFRlbXBsYXRlIH0gZnJvbSBcImF3cy1jZGstbGliL2Fzc2VydGlvbnNcIjtcbmltcG9ydCB7IFJldGVudGlvbkRheXMgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxvZ3NcIjtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUZXN0IHNvdXJjZXMgYW5kIHRhcmdldHMgZ2VuZXJhdGlvblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbnRlc3QoJ0NyZWF0ZSBhIGRlZmF1bHQgU1FTIFNvdXJjZScsICgpID0+IHtcbiAgLy8gU3RhY2tcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcblxuICBjb25zdCBidWlsZFF1ZXVlUmVzcG9uc2UgPSBidWlsZFF1ZXVlKHN0YWNrLCAndGVzdC1xdWV1ZScsIHt9KTtcbiAgY29uc3Qgc3FzU291cmNlID0gZGVmYXVsdHMuQ3JlYXRlU3FzU291cmNlKGJ1aWxkUXVldWVSZXNwb25zZS5xdWV1ZSk7XG5cbiAgZXhwZWN0KHNxc1NvdXJjZS5zb3VyY2VBcm4pLnRvRXF1YWwoYnVpbGRRdWV1ZVJlc3BvbnNlLnF1ZXVlLnF1ZXVlQXJuKTtcbiAgZXhwZWN0KE9iamVjdC5rZXlzKHNxc1NvdXJjZS5zb3VyY2VQYXJhbWV0ZXJzKS5sZW5ndGgpLnRvRXF1YWwoMCk7XG4gIC8vIGJlc3Qgd2UgY2FuIGRvIGhlcmUsIGNvbmZpcm0gdmFsdWVzIHdoZW4gd2UgaW5zdGFudGlhdGUgdGhlIGFjdHVhbCBwaXBlXG4gIGV4cGVjdChzcXNTb3VyY2Uuc291cmNlUG9saWN5LnN0YXRlbWVudENvdW50KS50b0VxdWFsKDEpO1xuICBUZW1wbGF0ZS5mcm9tU3RhY2soc3RhY2spO1xufSk7XG5cbnRlc3QoJ0NyZWF0ZSBhbiBTUVMgU291cmNlIHdpdGggb3ZlcnJpZGVzJywgKCkgPT4ge1xuICAvLyBTdGFja1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuXG4gIGNvbnN0IGJ1aWxkUXVldWVSZXNwb25zZSA9IGJ1aWxkUXVldWUoc3RhY2ssICd0ZXN0LXF1ZXVlJywge30pO1xuICBjb25zdCBzcXNTb3VyY2UgPSBkZWZhdWx0cy5DcmVhdGVTcXNTb3VyY2UoYnVpbGRRdWV1ZVJlc3BvbnNlLnF1ZXVlLCB7XG4gICAgc3FzUXVldWVQYXJhbWV0ZXJzOiB7XG4gICAgICBiYXRjaFNpemU6IDEyMyxcbiAgICB9LFxuICB9KTtcblxuICBleHBlY3Qoc3FzU291cmNlLnNvdXJjZUFybikudG9FcXVhbChidWlsZFF1ZXVlUmVzcG9uc2UucXVldWUucXVldWVBcm4pO1xuICAvLyBCZWNhdXNlIHNxc1F1ZXVlUGFyYW1ldGVycyB0eXBlIGluY2x1ZGUgJ0lSZXNvbHZhYmxlIHwnLCB3ZSBuZWVkIHRvIGV4dHJhY3QgdGhlIHByb3BlcnR5IHRoaXMgd2F5XG4gIGNvbnN0IGJhdGNoU2l6ZVByb3AgPVxuICAgIChzcXNTb3VyY2Uuc291cmNlUGFyYW1ldGVycy5zcXNRdWV1ZVBhcmFtZXRlcnMgYXMgcGlwZXMuQ2ZuUGlwZS5QaXBlU291cmNlU3FzUXVldWVQYXJhbWV0ZXJzUHJvcGVydHkpIS5iYXRjaFNpemU7XG4gIGV4cGVjdChiYXRjaFNpemVQcm9wKS50b0VxdWFsKDEyMyk7XG4gIC8vIGJlc3Qgd2UgY2FuIGRvIGhlcmUsIGNvbmZpcm0gdmFsdWVzIHdoZW4gd2UgaW5zdGFudGlhdGUgdGhlIGFjdHVhbCBwaXBlXG4gIGV4cGVjdChzcXNTb3VyY2Uuc291cmNlUG9saWN5LnN0YXRlbWVudENvdW50KS50b0VxdWFsKDEpO1xufSk7XG5cbnRlc3QoJ0NyZWF0ZSBhIGRlZmF1bHQgRERCIFN0cmVhbXMgU291cmNlJywgKCkgPT4ge1xuICAvLyBTdGFja1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuXG4gIGNvbnN0IGJ1aWxkVGFibGVSZXNwb25zZSA9IGJ1aWxkRHluYW1vREJUYWJsZVdpdGhTdHJlYW0oc3RhY2ssIHt9KTtcbiAgY29uc3QgdGFibGVTb3VyY2UgPSBkZWZhdWx0cy5DcmVhdGVEeW5hbW9EQlN0cmVhbXNTb3VyY2Uoc3RhY2ssIHtcbiAgICB0YWJsZTogYnVpbGRUYWJsZVJlc3BvbnNlLnRhYmxlT2JqZWN0IVxuICB9KTtcblxuICBleHBlY3QodGFibGVTb3VyY2Uuc291cmNlQXJuKS50b0VxdWFsKGJ1aWxkVGFibGVSZXNwb25zZS50YWJsZU9iamVjdD8udGFibGVTdHJlYW1Bcm4pO1xuICBleHBlY3QoT2JqZWN0LmtleXModGFibGVTb3VyY2Uuc291cmNlUGFyYW1ldGVycykubGVuZ3RoKS50b0VxdWFsKDEpO1xuICBleHBlY3QodGFibGVTb3VyY2Uuc291cmNlUG9saWN5LnN0YXRlbWVudENvdW50KS50b0VxdWFsKDIpO1xuICBleHBlY3QodGFibGVTb3VyY2UuZGxxKS50b0JlRGVmaW5lZCgpO1xuICBjb25zdCBzdHJlYW1QYXJhbXRlcnMgPSAodGFibGVTb3VyY2Uuc291cmNlUGFyYW1ldGVycy5keW5hbW9EYlN0cmVhbVBhcmFtZXRlcnMhIGFzIHBpcGVzLkNmblBpcGUuUGlwZVNvdXJjZUR5bmFtb0RCU3RyZWFtUGFyYW1ldGVyc1Byb3BlcnR5KTtcbiAgZXhwZWN0KHN0cmVhbVBhcmFtdGVycy5kZWFkTGV0dGVyQ29uZmlnKS50b0JlRGVmaW5lZCgpO1xufSk7XG5cbnRlc3QoJ0NvbmZpcm0gdGhhdCB3ZSB1c2UgY3VzdG9tIERMUSBwcm9wcycsICgpID0+IHtcbiAgY29uc3QgcXVldWVOYW1lID0gJ3NvbWV0aGluZy11bmlxdWUtYXNkZic7XG4gIC8vIFN0YWNrXG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG5cbiAgY29uc3QgYnVpbGRUYWJsZVJlc3BvbnNlID0gYnVpbGREeW5hbW9EQlRhYmxlV2l0aFN0cmVhbShzdGFjaywge30pO1xuICBkZWZhdWx0cy5DcmVhdGVEeW5hbW9EQlN0cmVhbXNTb3VyY2Uoc3RhY2ssIHtcbiAgICB0YWJsZTogYnVpbGRUYWJsZVJlc3BvbnNlLnRhYmxlT2JqZWN0ISxcbiAgICBzcXNEbHFRdWV1ZVByb3BzOiB7XG4gICAgICBxdWV1ZU5hbWUsXG4gICAgfVxuICB9KTtcblxuICBjb25zdCB0ZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjayk7XG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcyhcIkFXUzo6U1FTOjpRdWV1ZVwiLCB7XG4gICAgUXVldWVOYW1lOiBxdWV1ZU5hbWVcbiAgfSk7XG59KTtcblxudGVzdCgnQ3JlYXRlIEREQiBTdHJlYW1zIFNvdXJjZSB3aXRoIG5vIERMUScsICgpID0+IHtcbiAgLy8gU3RhY2tcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcblxuICBjb25zdCBidWlsZFRhYmxlUmVzcG9uc2UgPSBidWlsZER5bmFtb0RCVGFibGVXaXRoU3RyZWFtKHN0YWNrLCB7fSk7XG4gIGNvbnN0IHRhYmxlU291cmNlID0gZGVmYXVsdHMuQ3JlYXRlRHluYW1vREJTdHJlYW1zU291cmNlKHN0YWNrLCB7XG4gICAgdGFibGU6IGJ1aWxkVGFibGVSZXNwb25zZS50YWJsZU9iamVjdCEsXG4gICAgZGVwbG95U3FzRGxxUXVldWU6IGZhbHNlXG4gIH0pO1xuXG4gIGV4cGVjdCh0YWJsZVNvdXJjZS5zb3VyY2VBcm4pLnRvRXF1YWwoYnVpbGRUYWJsZVJlc3BvbnNlLnRhYmxlT2JqZWN0Py50YWJsZVN0cmVhbUFybik7XG4gIGV4cGVjdChPYmplY3Qua2V5cyh0YWJsZVNvdXJjZS5zb3VyY2VQYXJhbWV0ZXJzKS5sZW5ndGgpLnRvRXF1YWwoMSk7XG4gIGV4cGVjdCh0YWJsZVNvdXJjZS5zb3VyY2VQb2xpY3kuc3RhdGVtZW50Q291bnQpLnRvRXF1YWwoMSk7XG4gIGV4cGVjdCh0YWJsZVNvdXJjZS5kbHEpLnRvQmVVbmRlZmluZWQoKTtcbiAgY29uc3Qgc3RyZWFtUGFyYW10ZXJzID0gKHRhYmxlU291cmNlLnNvdXJjZVBhcmFtZXRlcnMuZHluYW1vRGJTdHJlYW1QYXJhbWV0ZXJzISBhcyBwaXBlcy5DZm5QaXBlLlBpcGVTb3VyY2VEeW5hbW9EQlN0cmVhbVBhcmFtZXRlcnNQcm9wZXJ0eSk7XG4gIGV4cGVjdChzdHJlYW1QYXJhbXRlcnMubWF4aW11bVJldHJ5QXR0ZW1wdHMpLnRvQmVVbmRlZmluZWQoKTtcbiAgZXhwZWN0KHN0cmVhbVBhcmFtdGVycy5kZWFkTGV0dGVyQ29uZmlnKS50b0JlVW5kZWZpbmVkKCk7XG4gIGV4cGVjdChzdHJlYW1QYXJhbXRlcnMuc3RhcnRpbmdQb3NpdGlvbikudG9CZURlZmluZWQoKTtcblxufSk7XG5cbnRlc3QoJ0NyZWF0ZSBhbiBEREIgU3RyZWFtcyBTb3VyY2Ugd2l0aCBvdmVycmlkZXMnLCAoKSA9PiB7XG4gIGNvbnN0IGJhdGNoU2l6ZVZhbHVlID0gNDY0MjtcbiAgLy8gU3RhY2tcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcblxuICBjb25zdCBidWlsZFRhYmxlUmVzcG9uc2UgPSBidWlsZER5bmFtb0RCVGFibGVXaXRoU3RyZWFtKHN0YWNrLCB7fSk7XG4gIGNvbnN0IHRhYmxlU291cmNlID0gZGVmYXVsdHMuQ3JlYXRlRHluYW1vREJTdHJlYW1zU291cmNlKHN0YWNrLCB7XG4gICAgdGFibGU6IGJ1aWxkVGFibGVSZXNwb25zZS50YWJsZU9iamVjdCEsXG4gICAgY2xpZW50UHJvcHM6IHtcbiAgICAgIGR5bmFtb0RiU3RyZWFtUGFyYW1ldGVyczoge1xuICAgICAgICBzdGFydGluZ1Bvc2l0aW9uOiAnTEFURVNUJyxcbiAgICAgICAgYmF0Y2hTaXplOiBiYXRjaFNpemVWYWx1ZVxuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgZXhwZWN0KHRhYmxlU291cmNlLnNvdXJjZUFybikudG9FcXVhbChidWlsZFRhYmxlUmVzcG9uc2UudGFibGVPYmplY3Q/LnRhYmxlU3RyZWFtQXJuKTtcbiAgLy8gQmVjYXVzZSBzcXNRdWV1ZVBhcmFtZXRlcnMgdHlwZSBpbmNsdWRlICdJUmVzb2x2YWJsZSB8Jywgd2UgbmVlZCB0byBleHRyYWN0IHRoZSBwcm9wZXJ0eSB0aGlzIHdheVxuICBjb25zdCBiYXRjaFNpemVQcm9wID1cbiAgICAodGFibGVTb3VyY2Uuc291cmNlUGFyYW1ldGVycy5keW5hbW9EYlN0cmVhbVBhcmFtZXRlcnMgYXMgcGlwZXMuQ2ZuUGlwZS5QaXBlU291cmNlRHluYW1vREJTdHJlYW1QYXJhbWV0ZXJzUHJvcGVydHkpIS5iYXRjaFNpemU7XG4gIGV4cGVjdChiYXRjaFNpemVQcm9wKS50b0VxdWFsKGJhdGNoU2l6ZVZhbHVlKTtcbiAgLy8gYmVzdCB3ZSBjYW4gZG8gaGVyZSwgY29uZmlybSB2YWx1ZXMgd2hlbiB3ZSBpbnN0YW50aWF0ZSB0aGUgYWN0dWFsIHBpcGVcbiAgZXhwZWN0KHRhYmxlU291cmNlLnNvdXJjZVBvbGljeS5zdGF0ZW1lbnRDb3VudCkudG9FcXVhbCgyKTtcblxuICBjb25zdCBzdHJlYW1QYXJhbXRlcnMgPSAodGFibGVTb3VyY2Uuc291cmNlUGFyYW1ldGVycy5keW5hbW9EYlN0cmVhbVBhcmFtZXRlcnMhIGFzIHBpcGVzLkNmblBpcGUuUGlwZVNvdXJjZUR5bmFtb0RCU3RyZWFtUGFyYW1ldGVyc1Byb3BlcnR5KTtcbiAgZXhwZWN0KHN0cmVhbVBhcmFtdGVycy5tYXhpbXVtUmV0cnlBdHRlbXB0cykudG9FcXVhbCgzKTtcbiAgZXhwZWN0KHN0cmVhbVBhcmFtdGVycy5kZWFkTGV0dGVyQ29uZmlnKS50b0JlRGVmaW5lZCgpO1xuICBleHBlY3Qoc3RyZWFtUGFyYW10ZXJzLnN0YXJ0aW5nUG9zaXRpb24pLnRvQmVEZWZpbmVkKCk7XG59KTtcblxudGVzdCgnQ3JlYXRlIGEgZGVmYXVsdCBTdGVwIEZ1bmN0aW9ucyBUYXJnZXQnLCAoKSA9PiB7XG5cbiAgLy8gU3RhY2tcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcblxuICBjb25zdCBidWlsZFN0YXRlTWFjaGluZVJlc3BvbnNlID0gYnVpbGRTdGF0ZU1hY2hpbmUoc3RhY2ssICd0ZXN0LXN0YXRlLW1hY2hpbmUnLCB7XG4gICAgc3RhdGVNYWNoaW5lUHJvcHM6IHtcbiAgICAgIGRlZmluaXRpb25Cb2R5OiBkZWZhdWx0cy5DcmVhdGVUZXN0U3RhdGVNYWNoaW5lRGVmaW5pdGlvbkJvZHkoc3RhY2ssICdzdHViLXN0YXRlLW1hY2hpbmUnKVxuICAgIH1cbiAgfSk7XG4gIGNvbnN0IHN0YXRlTWFjaGluZVRhcmdldCA9IGRlZmF1bHRzLkNyZWF0ZVN0YXRlTWFjaGluZVRhcmdldChidWlsZFN0YXRlTWFjaGluZVJlc3BvbnNlLnN0YXRlTWFjaGluZSk7XG5cbiAgZXhwZWN0KHN0YXRlTWFjaGluZVRhcmdldC50YXJnZXRBcm4pLnRvRXF1YWwoYnVpbGRTdGF0ZU1hY2hpbmVSZXNwb25zZS5zdGF0ZU1hY2hpbmUuc3RhdGVNYWNoaW5lQXJuKTtcbiAgZXhwZWN0KHN0YXRlTWFjaGluZVRhcmdldC50YXJnZXRQYXJhbWV0ZXJzLnN0ZXBGdW5jdGlvblN0YXRlTWFjaGluZVBhcmFtZXRlcnMpLnRvQmVEZWZpbmVkKCk7XG4gIGNvbnN0IGludm9jYXRpb25UeXBlOiBzdHJpbmcgfCB1bmRlZmluZWQgPVxuICAgIChzdGF0ZU1hY2hpbmVUYXJnZXQudGFyZ2V0UGFyYW1ldGVycy5zdGVwRnVuY3Rpb25TdGF0ZU1hY2hpbmVQYXJhbWV0ZXJzIGFzIHBpcGVzLkNmblBpcGUuUGlwZVRhcmdldFN0YXRlTWFjaGluZVBhcmFtZXRlcnNQcm9wZXJ0eSkuaW52b2NhdGlvblR5cGU7XG4gIGV4cGVjdChpbnZvY2F0aW9uVHlwZSkudG9FcXVhbCgnRklSRV9BTkRfRk9SR0VUJyk7XG4gIGV4cGVjdChPYmplY3Qua2V5cyhzdGF0ZU1hY2hpbmVUYXJnZXQudGFyZ2V0UGFyYW1ldGVycykubGVuZ3RoKS50b0VxdWFsKDEpO1xuICAvLyBiZXN0IHdlIGNhbiBkbyBoZXJlLCBjb25maXJtIHZhbHVlcyB3aGVuIHdlIGluc3RhbnRpYXRlIHRoZSBhY3R1YWwgcGlwZVxuICBleHBlY3Qoc3RhdGVNYWNoaW5lVGFyZ2V0LnRhcmdldFBvbGljeS5zdGF0ZW1lbnRDb3VudCkudG9FcXVhbCgxKTtcbiAgVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcblxufSk7XG5cbnRlc3QoJ0NyZWF0ZSBhIFN0ZXAgRnVuY3Rpb25zIFRhcmdldCB3aXRoIG92ZXJyaWRlcycsICgpID0+IHtcblxuICAvLyBTdGFja1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuXG4gIGNvbnN0IGJ1aWxkU3RhdGVNYWNoaW5lUmVzcG9uc2UgPSBidWlsZFN0YXRlTWFjaGluZShzdGFjaywgJ3Rlc3Qtc3RhdGUtbWFjaGluZScsIHtcbiAgICBzdGF0ZU1hY2hpbmVQcm9wczoge1xuICAgICAgZGVmaW5pdGlvbkJvZHk6IGRlZmF1bHRzLkNyZWF0ZVRlc3RTdGF0ZU1hY2hpbmVEZWZpbml0aW9uQm9keShzdGFjaywgJ3N0dWItc3RhdGUtbWFjaGluZScpXG4gICAgfVxuICB9KTtcbiAgY29uc3Qgc3RhdGVNYWNoaW5lVGFyZ2V0ID0gZGVmYXVsdHMuQ3JlYXRlU3RhdGVNYWNoaW5lVGFyZ2V0KGJ1aWxkU3RhdGVNYWNoaW5lUmVzcG9uc2Uuc3RhdGVNYWNoaW5lLCB7XG4gICAgc3RlcEZ1bmN0aW9uU3RhdGVNYWNoaW5lUGFyYW1ldGVyczoge1xuICAgICAgaW52b2NhdGlvblR5cGU6ICdSRVFVRVNUX1JFU1BPTlNFJ1xuICAgIH1cbiAgfSk7XG5cbiAgZXhwZWN0KHN0YXRlTWFjaGluZVRhcmdldC50YXJnZXRBcm4pLnRvRXF1YWwoYnVpbGRTdGF0ZU1hY2hpbmVSZXNwb25zZS5zdGF0ZU1hY2hpbmUuc3RhdGVNYWNoaW5lQXJuKTtcbiAgZXhwZWN0KHN0YXRlTWFjaGluZVRhcmdldC50YXJnZXRQYXJhbWV0ZXJzLnN0ZXBGdW5jdGlvblN0YXRlTWFjaGluZVBhcmFtZXRlcnMpLnRvQmVEZWZpbmVkKCk7XG4gIGNvbnN0IGludm9jYXRpb25UeXBlOiBzdHJpbmcgfCB1bmRlZmluZWQgPVxuICAgIChzdGF0ZU1hY2hpbmVUYXJnZXQudGFyZ2V0UGFyYW1ldGVycy5zdGVwRnVuY3Rpb25TdGF0ZU1hY2hpbmVQYXJhbWV0ZXJzIGFzIHBpcGVzLkNmblBpcGUuUGlwZVRhcmdldFN0YXRlTWFjaGluZVBhcmFtZXRlcnNQcm9wZXJ0eSkuaW52b2NhdGlvblR5cGU7XG4gIGV4cGVjdChpbnZvY2F0aW9uVHlwZSkudG9FcXVhbCgnUkVRVUVTVF9SRVNQT05TRScpO1xuICBleHBlY3QoT2JqZWN0LmtleXMoc3RhdGVNYWNoaW5lVGFyZ2V0LnRhcmdldFBhcmFtZXRlcnMpLmxlbmd0aCkudG9FcXVhbCgxKTtcbiAgLy8gYmVzdCB3ZSBjYW4gZG8gaGVyZSwgY29uZmlybSB2YWx1ZXMgd2hlbiB3ZSBpbnN0YW50aWF0ZSB0aGUgYWN0dWFsIHBpcGVcbiAgZXhwZWN0KHN0YXRlTWFjaGluZVRhcmdldC50YXJnZXRQb2xpY3kuc3RhdGVtZW50Q291bnQpLnRvRXF1YWwoMSk7XG59KTtcblxudGVzdCgnQ2hlY2sgZm9yIGVycm9yIHdoZW4gRExRIGlzIG9mZiBidXQgbWF4IGNvbnN0cmFpbnQgc2V0JywgKCkgPT4ge1xuICAvLyBTdGFja1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuXG4gIGNvbnN0IGJ1aWxkVGFibGVSZXNwb25zZSA9IGJ1aWxkRHluYW1vREJUYWJsZVdpdGhTdHJlYW0oc3RhY2ssIHt9KTtcblxuICBjb25zdCBhcHAgPSAoKSA9PiB7XG4gICAgZGVmYXVsdHMuQ3JlYXRlRHluYW1vREJTdHJlYW1zU291cmNlKHN0YWNrLCB7XG4gICAgICBjbGllbnRQcm9wczoge1xuICAgICAgICBkeW5hbW9EYlN0cmVhbVBhcmFtZXRlcnM6IHtcbiAgICAgICAgICBzdGFydGluZ1Bvc2l0aW9uOiAnTEFURVNUJyxcbiAgICAgICAgICBtYXhpbXVtUmVjb3JkQWdlSW5TZWNvbmRzOiAxMDBcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHRhYmxlOiBidWlsZFRhYmxlUmVzcG9uc2UudGFibGVPYmplY3QhLFxuICAgICAgZGVwbG95U3FzRGxxUXVldWU6IGZhbHNlXG4gICAgfSk7XG4gIH07XG4gIC8vIEFzc2VydGlvblxuICBleHBlY3QoYXBwKS50b1Rocm93RXJyb3IoJ0VSUk9SIC0gcmV0cnkgYW5kIHJlY29yZCBhZ2UgY29uc3RyYWludHMgY2Fubm90IGJlIHNwZWNpZmllZCB3aXRoIG5vIERMUVxcbicpO1xufSk7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVGVzdCBwaXBlIGNyZWF0aW9uXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxudGVzdCgnQ3JlYXRlIGEgZGVmYXVsdCBwaXBlJywgKCkgPT4ge1xuICBjb25zdCBwcmVyZXF1aXNpdGVJZCA9ICdhbGxkZWZhdWx0JztcbiAgY29uc3QgcGlwZUlkID0gJ2RlZmF1bHRwaXBlJztcblxuICAvLyBTdGFja1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuICBjb25zdCBwcmVyZXF1aXNpdGVzID0gQ3JlYXRlUHJlcmVxdWlzaXRlcyhzdGFjaywgcHJlcmVxdWlzaXRlSWQpO1xuXG4gIGNvbnN0IHBpcGVSZXNwb25zZSA9IGRlZmF1bHRzLkJ1aWxkUGlwZShzdGFjaywgcGlwZUlkLCB7XG4gICAgc291cmNlOiBwcmVyZXF1aXNpdGVzLnNvdXJjZSxcbiAgICB0YXJnZXQ6IHByZXJlcXVpc2l0ZXMudGFyZ2V0LFxuICAgIGNsaWVudFByb3BzOiB7fVxuICB9KTtcblxuICBDaGVja1BpcGVSZXNwb25zZVByb3BlcnRpZXMocGlwZVJlc3BvbnNlLCBwcmVyZXF1aXNpdGVzKTtcblxuICBjb25zdCB0ZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjayk7XG4gIHRlbXBsYXRlLnJlc291cmNlQ291bnRJcygnQVdTOjpQaXBlczo6UGlwZScsIDEpO1xuICBDaGVja1BpcGVSZXNvdXJjZSh0ZW1wbGF0ZSwgcGlwZUlkLCBwcmVyZXF1aXNpdGVJZCk7XG4gIENoZWNrUGlwZVJvbGUodGVtcGxhdGUsIHByZXJlcXVpc2l0ZUlkKTtcbiAgQ2hlY2tMb2dHcm91cCh0ZW1wbGF0ZSk7XG59KTtcblxudGVzdCgnQ3JlYXRlIGEgcGlwZSB3aXRoIG92ZXJyaWRlcycsICgpID0+IHtcbiAgY29uc3QgcHJlcmVxdWlzaXRlSWQgPSAnb3ZlcnJpZGVzdGVzdCc7XG4gIGNvbnN0IHBpcGVJZCA9ICdvdmVycmlkZXNwaXBlJztcbiAgLy8gU3RhY2tcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgY29uc3QgcHJlcmVxdWlzaXRlcyA9IENyZWF0ZVByZXJlcXVpc2l0ZXMoc3RhY2ssIHByZXJlcXVpc2l0ZUlkKTtcblxuICBjb25zdCB0ZXN0RGVzY3JpcHRpb24gPSAndGVzdC1kZXNjcmlwdGlvbic7XG4gIGNvbnN0IHBpcGVSZXNwb25zZSA9IGRlZmF1bHRzLkJ1aWxkUGlwZShzdGFjaywgcGlwZUlkLCB7XG4gICAgc291cmNlOiBwcmVyZXF1aXNpdGVzLnNvdXJjZSxcbiAgICB0YXJnZXQ6IHByZXJlcXVpc2l0ZXMudGFyZ2V0LFxuICAgIGNsaWVudFByb3BzOiB7XG4gICAgICBkZXNjcmlwdGlvbjogdGVzdERlc2NyaXB0aW9uXG4gICAgfVxuICB9KTtcbiAgQ2hlY2tQaXBlUmVzcG9uc2VQcm9wZXJ0aWVzKHBpcGVSZXNwb25zZSwgcHJlcmVxdWlzaXRlcyk7XG5cbiAgY29uc3QgdGVtcGxhdGUgPSBUZW1wbGF0ZS5mcm9tU3RhY2soc3RhY2spO1xuICBDaGVja1BpcGVSZXNvdXJjZSh0ZW1wbGF0ZSwgcGlwZUlkLCBwcmVyZXF1aXNpdGVJZCk7XG4gIENoZWNrUGlwZVJvbGUodGVtcGxhdGUsIHByZXJlcXVpc2l0ZUlkKTtcbiAgQ2hlY2tMb2dHcm91cCh0ZW1wbGF0ZSk7XG5cbiAgLy8gVGhlIGRlc2NyaXB0aW9uIGlzIHVuaXF1ZSB0byB0aGlzIHRlc3QsIHNvIGNoZWNrIGl0IGhlcmVcbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OlBpcGVzOjpQaXBlJywge1xuICAgIERlc2NyaXB0aW9uOiB0ZXN0RGVzY3JpcHRpb25cbiAgfSk7XG5cbn0pO1xuXG50ZXN0KCdDcmVhdGUgYSBwaXBlIHdpdGggYSBmaWx0ZXInLCAoKSA9PiB7XG4gIGNvbnN0IHByZXJlcXVpc2l0ZUlkID0gJ2ZpbHRlcnRlc3QnO1xuICBjb25zdCBwaXBlSWQgPSAnZmlsdGVycGlwZSc7XG5cbiAgLy8gU3RhY2tcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgY29uc3QgcHJlcmVxdWlzaXRlcyA9IENyZWF0ZVByZXJlcXVpc2l0ZXMoc3RhY2ssIHByZXJlcXVpc2l0ZUlkKTtcblxuICBjb25zdCB0ZXN0RmlsdGVyUGF0dGVybiA9IGB7XG4gICAgXCJib2R5XCI6IHtcbiAgICAgIFwic3RhdGVcIjogW1wib3BlblwiXVxuICAgIH1cbiAgfWA7XG5cbiAgY29uc3QgcGlwZVJlc3BvbnNlID0gZGVmYXVsdHMuQnVpbGRQaXBlKHN0YWNrLCBwaXBlSWQsIHtcbiAgICBzb3VyY2U6IHByZXJlcXVpc2l0ZXMuc291cmNlLFxuICAgIHRhcmdldDogcHJlcmVxdWlzaXRlcy50YXJnZXQsXG4gICAgY2xpZW50UHJvcHM6IHtcbiAgICAgIHNvdXJjZVBhcmFtZXRlcnM6IHtcbiAgICAgICAgZmlsdGVyQ3JpdGVyaWE6IHtcbiAgICAgICAgICBmaWx0ZXJzOiBbeyBwYXR0ZXJuOiB0ZXN0RmlsdGVyUGF0dGVybiB9XSxcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICB9LFxuICB9KTtcbiAgQ2hlY2tQaXBlUmVzcG9uc2VQcm9wZXJ0aWVzKHBpcGVSZXNwb25zZSwgcHJlcmVxdWlzaXRlcyk7XG5cbiAgY29uc3QgdGVtcGxhdGUgPSBUZW1wbGF0ZS5mcm9tU3RhY2soc3RhY2spO1xuICBDaGVja1BpcGVSZXNvdXJjZSh0ZW1wbGF0ZSwgcGlwZUlkLCBwcmVyZXF1aXNpdGVJZCk7XG4gIENoZWNrUGlwZVJvbGUodGVtcGxhdGUsIHByZXJlcXVpc2l0ZUlkKTtcbiAgQ2hlY2tMb2dHcm91cCh0ZW1wbGF0ZSk7XG5cbiAgLy8gU291cmNlUGFyYW1ldGVycyBpcyB1bmlxdWUgdG8gdGhpcyB0ZXN0LCBzbyBjaGVjayBpdCBoZXJlXG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpQaXBlczo6UGlwZScsIHtcbiAgICBTb3VyY2VQYXJhbWV0ZXJzOiB7XG4gICAgICBGaWx0ZXJDcml0ZXJpYToge1xuICAgICAgICBGaWx0ZXJzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgUGF0dGVybjogdGVzdEZpbHRlclBhdHRlcm5cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICB9XG4gIH0pO1xufSk7XG5cbnRlc3QoJ0NyZWF0ZSBhIHBpcGUgd2l0aCBMYW1iZGEgZnVuY3Rpb24gZW5yaWNobWVudCcsICgpID0+IHtcbiAgY29uc3QgcHJlcmVxdWlzaXRlSWQgPSAnbGFtYmRhZW5yaWNodGVzdCc7XG4gIGNvbnN0IHBpcGVJZCA9ICdsYW1iZGFlbnJpY2hwaXBlJztcblxuICAvLyBTdGFja1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuICBjb25zdCBwcmVyZXF1aXNpdGVzID0gQ3JlYXRlUHJlcmVxdWlzaXRlcyhzdGFjaywgcHJlcmVxdWlzaXRlSWQpO1xuXG4gIGNvbnN0IGVucmljaG1lbnRGdW5jdGlvbiA9IG5ldyBsYW1iZGEuRnVuY3Rpb24oc3RhY2ssICdlbnJpY2htZW50LWZ1bmN0aW9uJywge1xuICAgIGNvZGU6IGxhbWJkYS5Db2RlLmZyb21Bc3NldChgJHtfX2Rpcm5hbWV9L2xhbWJkYS10ZXN0YCksXG4gICAgaGFuZGxlcjogXCJpbmRleC5oYW5kbGVyXCIsXG4gICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzIwX1gsXG4gIH0pO1xuXG4gIGNvbnN0IHBpcGVSZXNwb25zZSA9IGRlZmF1bHRzLkJ1aWxkUGlwZShzdGFjaywgcGlwZUlkLCB7XG4gICAgc291cmNlOiBwcmVyZXF1aXNpdGVzLnNvdXJjZSxcbiAgICB0YXJnZXQ6IHByZXJlcXVpc2l0ZXMudGFyZ2V0LFxuICAgIGVucmljaG1lbnRGdW5jdGlvblxuICB9KTtcbiAgQ2hlY2tQaXBlUmVzcG9uc2VQcm9wZXJ0aWVzKHBpcGVSZXNwb25zZSwgcHJlcmVxdWlzaXRlcyk7XG5cbiAgY29uc3QgdGVtcGxhdGUgPSBUZW1wbGF0ZS5mcm9tU3RhY2soc3RhY2spO1xuICB0ZW1wbGF0ZS5yZXNvdXJjZUNvdW50SXMoJ0FXUzo6UGlwZXM6OlBpcGUnLCAxKTtcbiAgQ2hlY2tQaXBlUmVzb3VyY2UodGVtcGxhdGUsIHBpcGVJZCwgcHJlcmVxdWlzaXRlSWQpO1xuICBDaGVja0xvZ0dyb3VwKHRlbXBsYXRlKTtcblxuICAvLyBFbnJpY2htZW50IGlzIHVuaXF1ZSB0byB0aGlzIHRlc3Qgc28gY2hlY2sgaXQgaGVyZVxuICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoJ0FXUzo6UGlwZXM6OlBpcGUnLCB7XG4gICAgRW5yaWNobWVudDoge1xuICAgICAgXCJGbjo6R2V0QXR0XCI6IFtcbiAgICAgICAgTWF0Y2guc3RyaW5nTGlrZVJlZ2V4cCgnZW5yaWNobWVudGZ1bmN0aW9uLionKSxcbiAgICAgICAgXCJBcm5cIlxuICAgICAgXVxuICAgIH0sXG4gIH0pO1xuICAvLyBUaGlzIGNoZWNrcyBmb3IgZXZlcnl0aGluZyBidXQgZW5yaWNobWVudFxuICBDaGVja1BpcGVSb2xlKHRlbXBsYXRlLCBwcmVyZXF1aXNpdGVJZCk7XG4gIC8vIFRoaXMgY2hlY2tzIGZvciBlbnJpY2htZW50IHBlcm1pc3Npb25zXG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpJQU06OlBvbGljeScsIHtcbiAgICBQb2xpY3lEb2N1bWVudDoge1xuICAgICAgU3RhdGVtZW50OiBbXG4gICAgICAgIHtcbiAgICAgICAgICBBY3Rpb246IFwibGFtYmRhOkludm9rZUZ1bmN0aW9uXCIsXG4gICAgICAgICAgRWZmZWN0OiBcIkFsbG93XCIsXG4gICAgICAgICAgUmVzb3VyY2U6IHtcbiAgICAgICAgICAgIFwiRm46OkdldEF0dFwiOiBbXG4gICAgICAgICAgICAgIE1hdGNoLnN0cmluZ0xpa2VSZWdleHAoJ2VucmljaG1lbnRmdW5jdGlvbi4qJyksXG4gICAgICAgICAgICAgIFwiQXJuXCJcbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBWZXJzaW9uOiBcIjIwMTItMTAtMTdcIlxuICAgIH0sXG4gICAgUG9saWN5TmFtZTogTWF0Y2guc3RyaW5nTGlrZVJlZ2V4cChgZW5yaWNobWVudHBvbGljeSR7cGlwZUlkfS4qYCksXG4gICAgUm9sZXM6IFtcbiAgICAgIHtcbiAgICAgICAgUmVmOiBNYXRjaC5zdHJpbmdMaWtlUmVnZXhwKGBQaXBlUm9sZSR7cGlwZUlkfS4qYClcbiAgICAgIH1cbiAgICBdXG4gIH0pO1xufSk7XG5cbnRlc3QoJ0NyZWF0ZSBhIHBpcGUgd2l0aCBzdGF0ZSBtYWNoaW5lIGVucmljaG1lbnQnLCAoKSA9PiB7XG4gIGNvbnN0IHByZXJlcXVpc2l0ZUlkID0gJ3NtZW5yaWNodGVzdCc7XG4gIGNvbnN0IHBpcGVJZCA9ICdzbWVucmljaHBpcGUnO1xuXG4gIC8vIFN0YWNrXG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG4gIGNvbnN0IHByZXJlcXVpc2l0ZXMgPSBDcmVhdGVQcmVyZXF1aXNpdGVzKHN0YWNrLCBwcmVyZXF1aXNpdGVJZCk7XG5cbiAgY29uc3QgZW5yaWNobWVudFN0YXRlTWFjaGluZSA9IGRlZmF1bHRzLkNyZWF0ZVRlc3RTdGF0ZU1hY2hpbmUoc3RhY2ssICdzdGF0ZS1tYWNoaW5lLWVucmljaG1lbnQnKTtcblxuICBjb25zdCBwaXBlUmVzcG9uc2UgPSBkZWZhdWx0cy5CdWlsZFBpcGUoc3RhY2ssIHBpcGVJZCwge1xuICAgIHNvdXJjZTogcHJlcmVxdWlzaXRlcy5zb3VyY2UsXG4gICAgdGFyZ2V0OiBwcmVyZXF1aXNpdGVzLnRhcmdldCxcbiAgICBlbnJpY2htZW50U3RhdGVNYWNoaW5lXG4gIH0pO1xuICBDaGVja1BpcGVSZXNwb25zZVByb3BlcnRpZXMocGlwZVJlc3BvbnNlLCBwcmVyZXF1aXNpdGVzKTtcblxuICBjb25zdCB0ZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjayk7XG4gIHRlbXBsYXRlLnJlc291cmNlQ291bnRJcygnQVdTOjpQaXBlczo6UGlwZScsIDEpO1xuICBDaGVja1BpcGVSZXNvdXJjZSh0ZW1wbGF0ZSwgcGlwZUlkLCBwcmVyZXF1aXNpdGVJZCk7XG4gIENoZWNrUGlwZVJvbGUodGVtcGxhdGUsIHByZXJlcXVpc2l0ZUlkKTtcbiAgQ2hlY2tMb2dHcm91cCh0ZW1wbGF0ZSk7XG5cbiAgLy8gTG9vayBmb3IgYWRkaXRpb25hbCBlbnJpY2htZW50IHBlcm1pc2lvblxuICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoJ0FXUzo6SUFNOjpQb2xpY3knLCB7XG4gICAgUG9saWN5RG9jdW1lbnQ6IHtcbiAgICAgIFN0YXRlbWVudDogW1xuICAgICAgICB7XG4gICAgICAgICAgLy8gVGhpcyB3b24ndCBydW4gaWYgd2UgYWN0dWFsbHkgbGF1bmNoZWQgaXQgYXMgdGhlIGVucmljaG1lbnRTdGF0ZU1hY2hpbmUgaXMgbm90IEVYUFJFU1NcbiAgICAgICAgICBBY3Rpb246IFwic3RhdGVzOlN0YXJ0U3luY0V4ZWN1dGlvblwiLFxuICAgICAgICAgIEVmZmVjdDogXCJBbGxvd1wiLFxuICAgICAgICAgIFJlc291cmNlOiB7XG4gICAgICAgICAgICBSZWY6IE1hdGNoLnN0cmluZ0xpa2VSZWdleHAoJ3N0YXRlbWFjaGluZWVucmljaG1lbnQuKicpLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIFZlcnNpb246IFwiMjAxMi0xMC0xN1wiXG4gICAgfSxcbiAgICBQb2xpY3lOYW1lOiBNYXRjaC5zdHJpbmdMaWtlUmVnZXhwKGBlbnJpY2htZW50cG9saWN5JHtwaXBlSWR9LipgKSxcbiAgICBSb2xlczogW1xuICAgICAge1xuICAgICAgICBSZWY6IE1hdGNoLnN0cmluZ0xpa2VSZWdleHAoYFBpcGVSb2xlJHtwaXBlSWR9LipgKVxuICAgICAgfVxuICAgIF1cbiAgfSk7XG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpQaXBlczo6UGlwZScsIHtcbiAgICBFbnJpY2htZW50OiB7XG4gICAgICBSZWY6IE1hdGNoLnN0cmluZ0xpa2VSZWdleHAoXCJzdGF0ZW1hY2hpbmVlbnJpY2htZW50LipcIilcbiAgICB9LFxuICB9KTtcbn0pO1xuXG50ZXN0KCdQcm92aWRlIHJlcGxhY2VtZW50IExvZ0NvbmZpZ3VyYXRpb24nLCAoKSA9PiB7XG4gIGNvbnN0IHByZXJlcXVpc2l0ZUlkID0gJ2xvZ2NvbmZpZ3Rlc3QnO1xuICBjb25zdCBwaXBlSWQgPSAnbG9nY29uZmlncGlwZSc7XG5cbiAgLy8gU3RhY2tcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgY29uc3QgcHJlcmVxdWlzaXRlcyA9IENyZWF0ZVByZXJlcXVpc2l0ZXMoc3RhY2ssIHByZXJlcXVpc2l0ZUlkKTtcblxuICBjb25zdCBjdXN0b21Mb2dDb25maWd1cmF0aW9uOiBwaXBlcy5DZm5QaXBlLlBpcGVMb2dDb25maWd1cmF0aW9uUHJvcGVydHkgPSB7XG4gICAgczNMb2dEZXN0aW5hdGlvbjoge1xuICAgICAgYnVja2V0TmFtZTogbmV3IHMzLkJ1Y2tldChzdGFjaywgJ3Rlc3QnKS5idWNrZXROYW1lLFxuICAgIH0sXG4gICAgbGV2ZWw6IGRlZmF1bHRzLlBpcGVzTG9nTGV2ZWwuRVJST1JcbiAgfTtcbiAgY29uc3QgcGlwZVJlc3BvbnNlID0gZGVmYXVsdHMuQnVpbGRQaXBlKHN0YWNrLCBwaXBlSWQsIHtcbiAgICBzb3VyY2U6IHByZXJlcXVpc2l0ZXMuc291cmNlLFxuICAgIHRhcmdldDogcHJlcmVxdWlzaXRlcy50YXJnZXQsXG4gICAgY2xpZW50UHJvcHM6IHtcbiAgICAgIGxvZ0NvbmZpZ3VyYXRpb246IGN1c3RvbUxvZ0NvbmZpZ3VyYXRpb25cbiAgICB9XG4gIH0pO1xuICBDaGVja1BpcGVSZXNwb25zZVByb3BlcnRpZXMocGlwZVJlc3BvbnNlLCBwcmVyZXF1aXNpdGVzKTtcblxuICBjb25zdCB0ZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjayk7XG4gIENoZWNrUGlwZVNvdXJjZUFuZFRhcmdldCh0ZW1wbGF0ZSwgcHJlcmVxdWlzaXRlSWQpO1xuXG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpQaXBlczo6UGlwZScsIHtcbiAgICBMb2dDb25maWd1cmF0aW9uOiB7XG4gICAgICBMZXZlbDogXCJFUlJPUlwiLFxuICAgICAgUzNMb2dEZXN0aW5hdGlvbjoge1xuICAgICAgICBCdWNrZXROYW1lOiB7XG4gICAgICAgICAgUmVmOiBNYXRjaC5zdHJpbmdMaWtlUmVnZXhwKFwidGVzdC4qXCIpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuXG4gIHRlbXBsYXRlLnJlc291cmNlQ291bnRJcygnQVdTOjpQaXBlczo6UGlwZScsIDEpO1xuICBDaGVja1BpcGVSb2xlKHRlbXBsYXRlLCBwcmVyZXF1aXNpdGVJZCk7XG59KTtcblxudGVzdCgnT3ZlcnJpZGUgdGhlIGRlZmF1bHQgbG9nIGxldmVsJywgKCkgPT4ge1xuICBjb25zdCBwcmVyZXF1aXNpdGVJZCA9ICdsb2dsZXZlbHR0ZXN0JztcbiAgY29uc3QgcGlwZUlkID0gJ2xvZ2xldmVscGlwZSc7XG5cbiAgLy8gU3RhY2tcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgY29uc3QgcHJlcmVxdWlzaXRlcyA9IENyZWF0ZVByZXJlcXVpc2l0ZXMoc3RhY2ssIHByZXJlcXVpc2l0ZUlkKTtcblxuICBjb25zdCBwaXBlUmVzcG9uc2UgPSBkZWZhdWx0cy5CdWlsZFBpcGUoc3RhY2ssIHBpcGVJZCwge1xuICAgIHNvdXJjZTogcHJlcmVxdWlzaXRlcy5zb3VyY2UsXG4gICAgdGFyZ2V0OiBwcmVyZXF1aXNpdGVzLnRhcmdldCxcbiAgICBsb2dMZXZlbDogZGVmYXVsdHMuUGlwZXNMb2dMZXZlbC5FUlJPUlxuICB9KTtcbiAgQ2hlY2tQaXBlUmVzcG9uc2VQcm9wZXJ0aWVzKHBpcGVSZXNwb25zZSwgcHJlcmVxdWlzaXRlcyk7XG5cbiAgY29uc3QgdGVtcGxhdGUgPSBUZW1wbGF0ZS5mcm9tU3RhY2soc3RhY2spO1xuICB0ZW1wbGF0ZS5yZXNvdXJjZUNvdW50SXMoJ0FXUzo6UGlwZXM6OlBpcGUnLCAxKTtcbiAgQ2hlY2tQaXBlUmVzb3VyY2UodGVtcGxhdGUsIHBpcGVJZCwgcHJlcmVxdWlzaXRlSWQpO1xuICBDaGVja1BpcGVSb2xlKHRlbXBsYXRlLCBwcmVyZXF1aXNpdGVJZCk7XG4gIENoZWNrTG9nR3JvdXAodGVtcGxhdGUpO1xuXG4gIC8vIExldmVsIGlzIHVuaXF1ZSB0byB0aGlzIHRlc3RcbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OlBpcGVzOjpQaXBlJywge1xuICAgIExvZ0NvbmZpZ3VyYXRpb246IHtcbiAgICAgIExldmVsOiBkZWZhdWx0cy5QaXBlc0xvZ0xldmVsLkVSUk9SLFxuICAgIH1cbiAgfSk7XG59KTtcblxudGVzdCgnVGVzdCBubyBsb2dnaW5nJywgKCkgPT4ge1xuICBjb25zdCBwcmVyZXF1aXNpdGVJZCA9ICdub2xvZ3MnO1xuICBjb25zdCBwaXBlSWQgPSAndGVzdHBpcGUnO1xuXG4gIC8vIFN0YWNrXG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG4gIGNvbnN0IHByZXJlcXVpc2l0ZXMgPSBDcmVhdGVQcmVyZXF1aXNpdGVzKHN0YWNrLCBwcmVyZXF1aXNpdGVJZCk7XG5cbiAgY29uc3QgcGlwZVJlc3BvbnNlID0gZGVmYXVsdHMuQnVpbGRQaXBlKHN0YWNrLCBwaXBlSWQsIHtcbiAgICBzb3VyY2U6IHByZXJlcXVpc2l0ZXMuc291cmNlLFxuICAgIHRhcmdldDogcHJlcmVxdWlzaXRlcy50YXJnZXQsXG4gICAgbG9nTGV2ZWw6IGRlZmF1bHRzLlBpcGVzTG9nTGV2ZWwuT0ZGXG4gIH0pO1xuICBDaGVja1BpcGVSZXNwb25zZVByb3BlcnRpZXMocGlwZVJlc3BvbnNlLCBwcmVyZXF1aXNpdGVzKTtcblxuICBjb25zdCB0ZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjayk7XG4gIHRlbXBsYXRlLnJlc291cmNlQ291bnRJcygnQVdTOjpQaXBlczo6UGlwZScsIDEpO1xuICBDaGVja1BpcGVTb3VyY2VBbmRUYXJnZXQodGVtcGxhdGUsIHByZXJlcXVpc2l0ZUlkKTtcbiAgQ2hlY2tQaXBlUm9sZSh0ZW1wbGF0ZSwgcHJlcmVxdWlzaXRlSWQpO1xuXG4gIC8vIE9uZSBsb2cgZ3JvdXAgZm9yIHRoZSBzdGF0ZSBtYWNoaW5lLCBub25lIGZvciB0aGUgcGlwZVxuICB0ZW1wbGF0ZS5yZXNvdXJjZUNvdW50SXMoJ0FXUzo6TG9nczo6TG9nR3JvdXAnLCAxKTtcbn0pO1xuXG50ZXN0KCdPdmVycmlkZSBhIHN1YnNldCBvZiBTUVMgc291cmNlIHBhcmFtdGVycycsICgpID0+IHtcbiAgY29uc3QgcHJlcmVxdWlzaXRlSWQgPSAnc3JjcGFyYW10ZXN0JztcbiAgY29uc3QgcGlwZUlkID0gJ3NyY3BhcmFtcGlwZSc7XG4gIGNvbnN0IHRlc3RCYXRjaFNpemUgPSA3O1xuXG4gIC8vIFN0YWNrXG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG4gIGNvbnN0IHByZXJlcXVpc2l0ZXMgPSBDcmVhdGVQcmVyZXF1aXNpdGVzKHN0YWNrLCBwcmVyZXF1aXNpdGVJZCk7XG5cbiAgY29uc3QgcGlwZVJlc3BvbnNlID0gZGVmYXVsdHMuQnVpbGRQaXBlKHN0YWNrLCBwaXBlSWQsIHtcbiAgICBzb3VyY2U6IHByZXJlcXVpc2l0ZXMuc291cmNlLFxuICAgIHRhcmdldDogcHJlcmVxdWlzaXRlcy50YXJnZXQsXG4gICAgY2xpZW50UHJvcHM6IHtcbiAgICAgIHNvdXJjZVBhcmFtZXRlcnM6IHtcbiAgICAgICAgc3FzUXVldWVQYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgYmF0Y2hTaXplOiB0ZXN0QmF0Y2hTaXplLFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICBDaGVja1BpcGVSZXNwb25zZVByb3BlcnRpZXMocGlwZVJlc3BvbnNlLCBwcmVyZXF1aXNpdGVzKTtcblxuICBjb25zdCB0ZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjayk7XG4gIHRlbXBsYXRlLnJlc291cmNlQ291bnRJcygnQVdTOjpQaXBlczo6UGlwZScsIDEpO1xuICBDaGVja1BpcGVSZXNvdXJjZSh0ZW1wbGF0ZSwgcGlwZUlkLCBwcmVyZXF1aXNpdGVJZCk7XG4gIENoZWNrUGlwZVJvbGUodGVtcGxhdGUsIHByZXJlcXVpc2l0ZUlkKTtcbiAgQ2hlY2tMb2dHcm91cCh0ZW1wbGF0ZSk7XG5cbiAgdGVtcGxhdGUucmVzb3VyY2VDb3VudElzKCdBV1M6OlBpcGVzOjpQaXBlJywgMSk7XG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpQaXBlczo6UGlwZScsIHtcbiAgICBTb3VyY2VQYXJhbWV0ZXJzOiB7XG4gICAgICBTcXNRdWV1ZVBhcmFtZXRlcnM6IHtcbiAgICAgICAgQmF0Y2hTaXplOiB0ZXN0QmF0Y2hTaXplXG4gICAgICB9XG4gICAgfSxcbiAgfSk7XG59KTtcblxudGVzdCgnUHJvdmlkZSBwaXBlTG9nUHJvcHMnLCAoKSA9PiB7XG4gIGNvbnN0IHByZXJlcXVpc2l0ZUlkID0gJ3BpcGVsb2dwcm9wc3Rlc3QnO1xuICBjb25zdCBwaXBlSWQgPSAncGlwZWxvZ3Byb3BzcGlwZSc7XG4gIC8vIFdoaWxlIHRoaXMgaXMgYW4gZW51bSB3ZSBuZWVkIHRvIHVzZSwgaW4gdGhlIHRlbXBsYXRlXG4gIC8vIGl0IGlzIGNvbnZlcnRlZCB0byBkYXlzLCBpbiB0aGlzIGNhc2UgMTIwXG4gIGNvbnN0IHRlc3RSZXRlbnRpb24gPSBSZXRlbnRpb25EYXlzLkZPVVJfTU9OVEhTO1xuXG4gIC8vIFN0YWNrXG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG4gIGNvbnN0IHByZXJlcXVpc2l0ZXMgPSBDcmVhdGVQcmVyZXF1aXNpdGVzKHN0YWNrLCBwcmVyZXF1aXNpdGVJZCk7XG5cbiAgY29uc3QgcGlwZVJlc3BvbnNlID0gZGVmYXVsdHMuQnVpbGRQaXBlKHN0YWNrLCBwaXBlSWQsIHtcbiAgICBzb3VyY2U6IHByZXJlcXVpc2l0ZXMuc291cmNlLFxuICAgIHRhcmdldDogcHJlcmVxdWlzaXRlcy50YXJnZXQsXG4gICAgcGlwZUxvZ1Byb3BzOiB7XG4gICAgICByZXRlbnRpb246IHRlc3RSZXRlbnRpb25cbiAgICB9XG4gIH0pO1xuXG4gIENoZWNrUGlwZVJlc3BvbnNlUHJvcGVydGllcyhwaXBlUmVzcG9uc2UsIHByZXJlcXVpc2l0ZXMpO1xuXG4gIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcbiAgdGVtcGxhdGUucmVzb3VyY2VDb3VudElzKCdBV1M6OlBpcGVzOjpQaXBlJywgMSk7XG4gIENoZWNrUGlwZVJlc291cmNlKHRlbXBsYXRlLCBwaXBlSWQsIHByZXJlcXVpc2l0ZUlkKTtcbiAgQ2hlY2tQaXBlUm9sZSh0ZW1wbGF0ZSwgcHJlcmVxdWlzaXRlSWQpO1xuICBDaGVja0xvZ0dyb3VwKHRlbXBsYXRlKTtcbiAgQ2hlY2tQaXBlTG9nQ29uZmlndXJhdGlvbih0ZW1wbGF0ZSwgcGlwZUlkKTtcblxuICAvLyBMb29rIGZvciBhZGRpdGlvbmFsIHByb3BlcnR5IHdlIHBhc3NlZCBpbiBwaXBlTG9nUHJvcHNcbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OkxvZ3M6OkxvZ0dyb3VwJywge1xuICAgIFJldGVudGlvbkluRGF5czogMTIwLFxuICB9KTtcbn0pO1xuXG50ZXN0KCdDaGVjayBmb3IgZXJyb3Igd2hlbiBwcm92aWRpbmcgc291cmNlIGluIENmblByb3BzJywgKCkgPT4ge1xuICAvLyBTdGFja1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuICBjb25zdCBwcmVyZXF1aXNpdGVzID0gQ3JlYXRlUHJlcmVxdWlzaXRlcyhzdGFjaywgJ2xvZy1sZXZlbC10ZXN0Jyk7XG5cbiAgY29uc3QgYXBwID0gKCkgPT4ge1xuICAgIGRlZmF1bHRzLkJ1aWxkUGlwZShzdGFjaywgJ3Rlc3QtcGlwZScsIHtcbiAgICAgIHNvdXJjZTogcHJlcmVxdWlzaXRlcy5zb3VyY2UsXG4gICAgICB0YXJnZXQ6IHByZXJlcXVpc2l0ZXMudGFyZ2V0LFxuICAgICAgY2xpZW50UHJvcHM6IHtcbiAgICAgICAgc291cmNlOiBwcmVyZXF1aXNpdGVzLnNvdXJjZS5zb3VyY2VBcm5cbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcbiAgLy8gQXNzZXJ0aW9uXG4gIGV4cGVjdChhcHApLnRvVGhyb3dFcnJvcignRVJST1IgLSBCdWlsZFBpcGVQcm9wcyBjYW5ub3Qgc3BlY2lmeSBzb3VyY2UsIHRhcmdldCwgcm9sZUFybiwgb3IgZW5yaWNobWVudCcpO1xufSk7XG5cbnRlc3QoJ0NoZWNrIGZvciBlcnJvciB3aGVuIHByb3ZpZGluZyB0YXJnZXQgaW4gQ2ZuUHJvcHMnLCAoKSA9PiB7XG4gIC8vIFN0YWNrXG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG4gIGNvbnN0IHByZXJlcXVpc2l0ZXMgPSBDcmVhdGVQcmVyZXF1aXNpdGVzKHN0YWNrLCAnbG9nLWxldmVsLXRlc3QnKTtcblxuICBjb25zdCBhcHAgPSAoKSA9PiB7XG4gICAgZGVmYXVsdHMuQnVpbGRQaXBlKHN0YWNrLCAndGVzdC1waXBlJywge1xuICAgICAgc291cmNlOiBwcmVyZXF1aXNpdGVzLnNvdXJjZSxcbiAgICAgIHRhcmdldDogcHJlcmVxdWlzaXRlcy50YXJnZXQsXG4gICAgICBjbGllbnRQcm9wczoge1xuICAgICAgICB0YXJnZXQ6IHByZXJlcXVpc2l0ZXMudGFyZ2V0LnRhcmdldEFybixcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcbiAgLy8gQXNzZXJ0aW9uXG4gIGV4cGVjdChhcHApLnRvVGhyb3dFcnJvcignRVJST1IgLSBCdWlsZFBpcGVQcm9wcyBjYW5ub3Qgc3BlY2lmeSBzb3VyY2UsIHRhcmdldCwgcm9sZUFybiwgb3IgZW5yaWNobWVudCcpO1xufSk7XG5cbnRlc3QoJ0NoZWNrIGZvciBlcnJvciB3aGVuIHByb3ZpZGluZyBhIHJvbGVBcm4nLCAoKSA9PiB7XG4gIC8vIFN0YWNrXG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG4gIGNvbnN0IHByZXJlcXVpc2l0ZXMgPSBDcmVhdGVQcmVyZXF1aXNpdGVzKHN0YWNrLCAnbG9nLWxldmVsLXRlc3QnKTtcblxuICBjb25zdCBhcHAgPSAoKSA9PiB7XG4gICAgZGVmYXVsdHMuQnVpbGRQaXBlKHN0YWNrLCAndGVzdC1waXBlJywge1xuICAgICAgc291cmNlOiBwcmVyZXF1aXNpdGVzLnNvdXJjZSxcbiAgICAgIHRhcmdldDogcHJlcmVxdWlzaXRlcy50YXJnZXQsXG4gICAgICBjbGllbnRQcm9wczoge1xuICAgICAgICByb2xlQXJuOiBcInNvbWUtYXJuXCIsXG4gICAgICB9XG4gICAgfSk7XG4gIH07XG4gIC8vIEFzc2VydGlvblxuICBleHBlY3QoYXBwKS50b1Rocm93RXJyb3IoJ0VSUk9SIC0gQnVpbGRQaXBlUHJvcHMgY2Fubm90IHNwZWNpZnkgc291cmNlLCB0YXJnZXQsIHJvbGVBcm4sIG9yIGVucmljaG1lbnQnKTtcbn0pO1xuXG50ZXN0KCdDaGVjayBmb3IgZXJyb3Igd2hlbiBwcm92aWRpbmcgZW5yaWNobWVudCcsICgpID0+IHtcbiAgLy8gU3RhY2tcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgY29uc3QgcHJlcmVxdWlzaXRlcyA9IENyZWF0ZVByZXJlcXVpc2l0ZXMoc3RhY2ssICdsb2ctbGV2ZWwtdGVzdCcpO1xuXG4gIGNvbnN0IGFwcCA9ICgpID0+IHtcbiAgICBkZWZhdWx0cy5CdWlsZFBpcGUoc3RhY2ssICd0ZXN0LXBpcGUnLCB7XG4gICAgICBzb3VyY2U6IHByZXJlcXVpc2l0ZXMuc291cmNlLFxuICAgICAgdGFyZ2V0OiBwcmVyZXF1aXNpdGVzLnRhcmdldCxcbiAgICAgIGNsaWVudFByb3BzOiB7XG4gICAgICAgIGVucmljaG1lbnQ6IFwiZnVuY3Rpb25Bcm5cIixcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcbiAgLy8gQXNzZXJ0aW9uXG4gIGV4cGVjdChhcHApLnRvVGhyb3dFcnJvcignRVJST1IgLSBCdWlsZFBpcGVQcm9wcyBjYW5ub3Qgc3BlY2lmeSBzb3VyY2UsIHRhcmdldCwgcm9sZUFybiwgb3IgZW5yaWNobWVudCcpO1xufSk7XG5cbnRlc3QoJ0NoZWNrIGZvciBlcnJvciB3aGVuIGxvZyBsZXZlbCBhbmQgbG9nIGNvbmZpZ3VyYXRpb24gYXJlIGJvdGggcHJvdmlkZWQnLCAoKSA9PiB7XG4gIC8vIFN0YWNrXG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG4gIGNvbnN0IHByZXJlcXVpc2l0ZXMgPSBDcmVhdGVQcmVyZXF1aXNpdGVzKHN0YWNrLCAnbG9nLWxldmVsLXRlc3QnKTtcblxuICBjb25zdCBhcHAgPSAoKSA9PiB7XG4gICAgZGVmYXVsdHMuQnVpbGRQaXBlKHN0YWNrLCAndGVzdC1waXBlJywge1xuICAgICAgc291cmNlOiBwcmVyZXF1aXNpdGVzLnNvdXJjZSxcbiAgICAgIHRhcmdldDogcHJlcmVxdWlzaXRlcy50YXJnZXQsXG4gICAgICBsb2dMZXZlbDogZGVmYXVsdHMuUGlwZXNMb2dMZXZlbC5FUlJPUixcbiAgICAgIGNsaWVudFByb3BzOiB7XG4gICAgICAgIGxvZ0NvbmZpZ3VyYXRpb246IHsgc29tZTogXCJvYmplY3RcIiB9LFxuICAgICAgfVxuICAgIH0pO1xuICB9O1xuICAvLyBBc3NlcnRpb25cbiAgZXhwZWN0KGFwcCkudG9UaHJvd0Vycm9yKCdFUlJPUiAtIEJ1aWxkUGlwZVByb3BzIGNhbm5vdCBzcGVjaWZ5IGxvZ0xldmVsIGFuZCBsb2dDb25maWd1cmF0aW9uJyk7XG59KTtcblxudGVzdCgnQ2hlY2sgZm9yIGVycm9yIHdoZW4gcGlwZUxvZ1Byb3BzIGFuZCBsb2cgY29uZmlndXJhdGlvbiBhcmUgYm90aCBwcm92aWRlZCcsICgpID0+IHtcbiAgLy8gU3RhY2tcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgY29uc3QgcHJlcmVxdWlzaXRlcyA9IENyZWF0ZVByZXJlcXVpc2l0ZXMoc3RhY2ssICdsb2ctbGV2ZWwtdGVzdCcpO1xuXG4gIGNvbnN0IGFwcCA9ICgpID0+IHtcbiAgICBkZWZhdWx0cy5CdWlsZFBpcGUoc3RhY2ssICd0ZXN0LXBpcGUnLCB7XG4gICAgICBzb3VyY2U6IHByZXJlcXVpc2l0ZXMuc291cmNlLFxuICAgICAgdGFyZ2V0OiBwcmVyZXF1aXNpdGVzLnRhcmdldCxcbiAgICAgIHBpcGVMb2dQcm9wczogeyBsb2dHcm91cE5hbWU6IFwiYW55dmFsdWVcIiB9LFxuICAgICAgY2xpZW50UHJvcHM6IHtcbiAgICAgICAgbG9nQ29uZmlndXJhdGlvbjogeyBzb21lOiBcIm9iamVjdFwiIH0sXG4gICAgICB9XG4gICAgfSk7XG4gIH07XG4gIC8vIEFzc2VydGlvblxuICBleHBlY3QoYXBwKS50b1Rocm93RXJyb3IoJ0VSUk9SIC0gQnVpbGRQaXBlUHJvcHMgY2Fubm90IHNwZWNpZnkgcGlwZUxvZ1Byb3BzIGFuZCBsb2dDb25maWd1cmF0aW9uJyk7XG59KTtcblxudGVzdCgnQ2hlY2sgZm9yIGVycm9yIHdoZW4gZW5yaWNobWVudEZ1bmN0aW9uIGFuZCBlbnJpY2htZW50U3RhdGVNYWNoaW5lIGFyZSBib3RoIHByb3ZpZGVkJywgKCkgPT4ge1xuICAvLyBTdGFja1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuICBjb25zdCBwcmVyZXF1aXNpdGVzID0gQ3JlYXRlUHJlcmVxdWlzaXRlcyhzdGFjaywgJ2xvZy1sZXZlbC10ZXN0Jyk7XG5cbiAgY29uc3QgYXBwID0gKCkgPT4ge1xuICAgIGRlZmF1bHRzLkJ1aWxkUGlwZShzdGFjaywgJ3Rlc3QtcGlwZScsIHtcbiAgICAgIHNvdXJjZTogcHJlcmVxdWlzaXRlcy5zb3VyY2UsXG4gICAgICB0YXJnZXQ6IHByZXJlcXVpc2l0ZXMudGFyZ2V0LFxuICAgICAgZW5yaWNobWVudEZ1bmN0aW9uOiB7IHBsYWNlOiBcImhvbGRlclwiIH0gYXMgdW5rbm93biBhcyBsYW1iZGEuRnVuY3Rpb24sXG4gICAgICBlbnJpY2htZW50U3RhdGVNYWNoaW5lOiB7IHBsYWNlOiBcImhvbGRlclwiIH0gYXMgdW5rbm93biBhcyBzZm4uU3RhdGVNYWNoaW5lXG4gICAgfSk7XG4gIH07XG4gIC8vIEFzc2VydGlvblxuICBleHBlY3QoYXBwKS50b1Rocm93RXJyb3IoJ0VSUk9SIC0gT25seSBvbmUgb2YgZW5yaWNobWVudEZ1bmN0aW9uIG9yIGVucmljaG1lbnRTdGF0ZU1hY2hpbmUgY2FuIGJlIHByb3ZpZGVkJyk7XG59KTtcblxudGVzdCgnQ2hlY2sgZm9yIGVycm9yIHdoZW4gcGlwZUxvZ1Byb3BzIGFuZCBsb2cgbGV2ZWwgaXMgc2V0IHRvIE9GRicsICgpID0+IHtcbiAgLy8gU3RhY2tcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgY29uc3QgcHJlcmVxdWlzaXRlcyA9IENyZWF0ZVByZXJlcXVpc2l0ZXMoc3RhY2ssICdsb2ctbGV2ZWwtdGVzdCcpO1xuXG4gIGNvbnN0IGFwcCA9ICgpID0+IHtcbiAgICBkZWZhdWx0cy5CdWlsZFBpcGUoc3RhY2ssICd0ZXN0LXBpcGUnLCB7XG4gICAgICBzb3VyY2U6IHByZXJlcXVpc2l0ZXMuc291cmNlLFxuICAgICAgdGFyZ2V0OiBwcmVyZXF1aXNpdGVzLnRhcmdldCxcbiAgICAgIGxvZ0xldmVsOiBkZWZhdWx0cy5QaXBlc0xvZ0xldmVsLk9GRixcbiAgICAgIHBpcGVMb2dQcm9wczogeyBsb2dHcm91cE5hbWU6IFwiYW55dmFsdWVcIiB9LFxuICAgIH0pO1xuICB9O1xuICAvLyBBc3NlcnRpb25cbiAgZXhwZWN0KGFwcCkudG9UaHJvd0Vycm9yKCdFUlJPUiAtIEJ1aWxkUGlwZVByb3BzIGNhbm5vdCBzcGVjaWZ5IHBpcGVMb2dQcm9wcyBhbmQgbG9nIGxldmVsIE9GRicpO1xufSk7XG5cbnRlc3QoJ1Rlc3QgYWxsIG9mIENoZWNrUGlwZXNQcm9wcycsICgpID0+IHtcbiAgY29uc3QgYXBwID0gKCkgPT4ge1xuICAgIGRlZmF1bHRzLkNoZWNrUGlwZXNQcm9wcyh7XG4gICAgICBwaXBlc1Byb3BzOiB7IHNvdXJjZTogXCJ2YWx1ZVwiIH0sXG4gICAgfSk7XG4gIH07XG4gIC8vIEFzc2VydGlvblxuICBleHBlY3QoYXBwKS50b1Rocm93RXJyb3IoJ0RvIG5vdCBzZXQgc291cmNlIGluIHBpcGVzUHJvcHMuIEl0IGlzIHNldCBieSB0aGUgY29uc3RydWN0LlxcbicpO1xuXG4gIGNvbnN0IGFwcFR3byA9ICgpID0+IHtcbiAgICBkZWZhdWx0cy5DaGVja1BpcGVzUHJvcHMoe1xuICAgICAgcGlwZXNQcm9wczogeyB0YXJnZXQ6IFwidmFsdWVcIiB9LFxuICAgIH0pO1xuICB9O1xuICAvLyBBc3NlcnRpb25cbiAgZXhwZWN0KGFwcFR3bykudG9UaHJvd0Vycm9yKCdEbyBub3Qgc2V0IHRhcmdldCBpbiBwaXBlc1Byb3BzLiBJdCBpcyBzZXQgYnkgdGhlIGNvbnN0cnVjdC5cXG4nKTtcblxufSk7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU2hhcmVkIHNldHVwIGZ1bmN0aW9uXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuaW50ZXJmYWNlIFByZXJlcXVpc2l0ZXMge1xuICBzb3VyY2U6IGRlZmF1bHRzLkNyZWF0ZVNvdXJjZVJlc3BvbnNlLFxuICB0YXJnZXQ6IGRlZmF1bHRzLkNyZWF0ZVRhcmdldFJlc3BvbnNlLFxufVxuXG5mdW5jdGlvbiBDcmVhdGVQcmVyZXF1aXNpdGVzKHNjb3BlOiBTdGFjaywgaWQ6IHN0cmluZyk6IFByZXJlcXVpc2l0ZXMge1xuICBjb25zdCBidWlsZFF1ZXVlUmVzcG9uc2UgPSBidWlsZFF1ZXVlKHNjb3BlLCBgJHtpZH0tc291cmNlLXF1ZXVlYCwge30pO1xuICBjb25zdCBzcXNTb3VyY2UgPSBkZWZhdWx0cy5DcmVhdGVTcXNTb3VyY2UoYnVpbGRRdWV1ZVJlc3BvbnNlLnF1ZXVlKTtcblxuICBjb25zdCBidWlsZFN0YXRlTWFjaGluZVJlc3BvbnNlID0gYnVpbGRTdGF0ZU1hY2hpbmUoc2NvcGUsIGAke2lkfS10YXJnZXQtc3RhdGUtbWFjaGluZWAsIHtcbiAgICBzdGF0ZU1hY2hpbmVQcm9wczoge1xuICAgICAgZGVmaW5pdGlvbkJvZHk6IGRlZmF1bHRzLkNyZWF0ZVRlc3RTdGF0ZU1hY2hpbmVEZWZpbml0aW9uQm9keShzY29wZSwgYCR7aWR9LXN0ZXBzYClcbiAgICB9XG4gIH0pO1xuICBjb25zdCBzdGF0ZU1hY2hpbmVUYXJnZXQgPSBkZWZhdWx0cy5DcmVhdGVTdGF0ZU1hY2hpbmVUYXJnZXQoYnVpbGRTdGF0ZU1hY2hpbmVSZXNwb25zZS5zdGF0ZU1hY2hpbmUsIHtcbiAgICBzdGVwRnVuY3Rpb25TdGF0ZU1hY2hpbmVQYXJhbWV0ZXJzOiB7XG4gICAgICBpbnZvY2F0aW9uVHlwZTogJ1JFUVVFU1RfUkVTUE9OU0UnXG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBzb3VyY2U6IHNxc1NvdXJjZSxcbiAgICB0YXJnZXQ6IHN0YXRlTWFjaGluZVRhcmdldFxuICB9O1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNoYXJlZCBmdW5jdGlvbnMgdGhhdCBjaGVjayBkZWZhdWx0IHNldHRpbmdzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZnVuY3Rpb24gQ2hlY2tQaXBlUmVzcG9uc2VQcm9wZXJ0aWVzKHBpcGVSZXNwb25zZTogZGVmYXVsdHMuQnVpbGRQaXBlc1Jlc3BvbnNlLCBwcmVyZXF1aXNpdGVzOiBQcmVyZXF1aXNpdGVzKSB7XG4gIGV4cGVjdChwaXBlUmVzcG9uc2UucGlwZSkudG9CZURlZmluZWQoKTtcbiAgZXhwZWN0KHBpcGVSZXNwb25zZS5waXBlLnNvdXJjZSkudG9FcXVhbChwcmVyZXF1aXNpdGVzLnNvdXJjZS5zb3VyY2VBcm4pO1xuICBleHBlY3QocGlwZVJlc3BvbnNlLnBpcGUudGFyZ2V0KS50b0VxdWFsKHByZXJlcXVpc2l0ZXMudGFyZ2V0LnRhcmdldEFybik7XG4gIGV4cGVjdChwaXBlUmVzcG9uc2UucGlwZVJvbGUpLnRvQmVEZWZpbmVkKCk7XG4gIGV4cGVjdChwaXBlUmVzcG9uc2UucGlwZVJvbGUubm9kZSkudG9CZURlZmluZWQoKTtcbn1cblxuZnVuY3Rpb24gQ2hlY2tQaXBlUmVzb3VyY2UodGVtcGxhdGU6IFRlbXBsYXRlLFxuICBwaXBlSWQ6IHN0cmluZyxcbiAgcHJlcmVxdWlzaXRlSWQ6IHN0cmluZ1xuKSB7XG4gIENoZWNrUGlwZVNvdXJjZUFuZFRhcmdldCh0ZW1wbGF0ZSwgcHJlcmVxdWlzaXRlSWQpO1xuICBDaGVja1BpcGVMb2dDb25maWd1cmF0aW9uKHRlbXBsYXRlLCBwaXBlSWQpO1xufVxuXG5mdW5jdGlvbiBDaGVja1BpcGVTb3VyY2VBbmRUYXJnZXQodGVtcGxhdGU6IFRlbXBsYXRlLCBwcmVyZXF1aXNpdGVJZDogc3RyaW5nKSB7XG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpQaXBlczo6UGlwZScsIHtcbiAgICBTb3VyY2U6IHtcbiAgICAgIFwiRm46OkdldEF0dFwiOiBbXG4gICAgICAgIE1hdGNoLnN0cmluZ0xpa2VSZWdleHAoYCR7cHJlcmVxdWlzaXRlSWR9c291cmNlcXVldWUuKmApLFxuICAgICAgICBcIkFyblwiXG4gICAgICBdXG4gICAgfSxcbiAgICBUYXJnZXQ6IHtcbiAgICAgIFJlZjogTWF0Y2guc3RyaW5nTGlrZVJlZ2V4cChgU3RhdGVNYWNoaW5lJHtwcmVyZXF1aXNpdGVJZH10YXJnZXRzdGF0ZW1hY2hpbmUuKmApLFxuICAgIH0sXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBDaGVja1BpcGVMb2dDb25maWd1cmF0aW9uKHRlbXBsYXRlOiBUZW1wbGF0ZSwgcGlwZUlkOiBzdHJpbmcpIHtcbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OlBpcGVzOjpQaXBlJywge1xuICAgIExvZ0NvbmZpZ3VyYXRpb246IHtcbiAgICAgIENsb3Vkd2F0Y2hMb2dzTG9nRGVzdGluYXRpb246IHtcbiAgICAgICAgTG9nR3JvdXBBcm46IHtcbiAgICAgICAgICBcIkZuOjpHZXRBdHRcIjogW1xuICAgICAgICAgICAgTWF0Y2guc3RyaW5nTGlrZVJlZ2V4cChgTG9nR3JvdXAke3BpcGVJZH0uKmApLFxuICAgICAgICAgICAgXCJBcm5cIlxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIENoZWNrUGlwZVJvbGUodGVtcGxhdGU6IFRlbXBsYXRlLCBwcmVyZXF1aXNpdGVJZDogc3RyaW5nKSB7XG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpJQU06OlJvbGUnLCB7XG4gICAgQXNzdW1lUm9sZVBvbGljeURvY3VtZW50OiB7XG4gICAgICBTdGF0ZW1lbnQ6IFtcbiAgICAgICAge1xuICAgICAgICAgIEFjdGlvbjogXCJzdHM6QXNzdW1lUm9sZVwiLFxuICAgICAgICAgIEVmZmVjdDogXCJBbGxvd1wiLFxuICAgICAgICAgIFByaW5jaXBhbDoge1xuICAgICAgICAgICAgU2VydmljZTogXCJwaXBlcy5hbWF6b25hd3MuY29tXCJcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBWZXJzaW9uOiBcIjIwMTItMTAtMTdcIlxuICAgIH0sXG4gICAgUG9saWNpZXM6IFtcbiAgICAgIHtcbiAgICAgICAgUG9saWN5RG9jdW1lbnQ6IHtcbiAgICAgICAgICBTdGF0ZW1lbnQ6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgQWN0aW9uOiBbXG4gICAgICAgICAgICAgICAgXCJzcXM6UmVjZWl2ZU1lc3NhZ2VcIixcbiAgICAgICAgICAgICAgICBcInNxczpEZWxldGVNZXNzYWdlXCIsXG4gICAgICAgICAgICAgICAgXCJzcXM6R2V0UXVldWVBdHRyaWJ1dGVzXCJcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgRWZmZWN0OiBcIkFsbG93XCIsXG4gICAgICAgICAgICAgIFJlc291cmNlOiB7XG4gICAgICAgICAgICAgICAgXCJGbjo6R2V0QXR0XCI6IFtcbiAgICAgICAgICAgICAgICAgIE1hdGNoLnN0cmluZ0xpa2VSZWdleHAoYCR7cHJlcmVxdWlzaXRlSWR9c291cmNlcXVldWUuKmApLFxuICAgICAgICAgICAgICAgICAgXCJBcm5cIlxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIF0sXG4gICAgICAgICAgVmVyc2lvbjogXCIyMDEyLTEwLTE3XCJcbiAgICAgICAgfSxcbiAgICAgICAgUG9saWN5TmFtZTogXCJzb3VyY2VQb2xpY3lcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgUG9saWN5RG9jdW1lbnQ6IHtcbiAgICAgICAgICBTdGF0ZW1lbnQ6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgQWN0aW9uOiBcInN0YXRlczpTdGFydEV4ZWN1dGlvblwiLFxuICAgICAgICAgICAgICBFZmZlY3Q6IFwiQWxsb3dcIixcbiAgICAgICAgICAgICAgUmVzb3VyY2U6IHtcbiAgICAgICAgICAgICAgICBSZWY6IE1hdGNoLnN0cmluZ0xpa2VSZWdleHAoYFN0YXRlTWFjaGluZSR7cHJlcmVxdWlzaXRlSWR9dGFyZ2V0c3RhdGVtYWNoaW5lLipgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgXSxcbiAgICAgICAgICBWZXJzaW9uOiBcIjIwMTItMTAtMTdcIlxuICAgICAgICB9LFxuICAgICAgICBQb2xpY3lOYW1lOiBcInRhcmdldFBvbGljeVwiXG4gICAgICB9XG4gICAgXVxuICB9KTtcbn1cblxuZnVuY3Rpb24gQ2hlY2tMb2dHcm91cCh0ZW1wbGF0ZTogVGVtcGxhdGUpIHtcbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OkxvZ3M6OkxvZ0dyb3VwJywge1xuICAgIExvZ0dyb3VwTmFtZToge1xuICAgICAgXCJGbjo6Sm9pblwiOiBbXG4gICAgICAgIFwiXCIsXG4gICAgICAgIFtcbiAgICAgICAgICBNYXRjaC5zdHJpbmdMaWtlUmVnZXhwKCcvYXdzL3ZlbmRlZGxvZ3MvcGlwZXMvY29uc3RydWN0cycpLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFwiRm46OlNlbGVjdFwiOiBbXG4gICAgICAgICAgICAgIDIsXG4gICAgICAgICAgICAgIE1hdGNoLmFueVZhbHVlKClcbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIF1cbiAgICB9LFxuICB9KTtcbn0iXX0=
|