@datagrok-libraries/statistics 1.3.1 → 1.3.3
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/CHANGELOG.md +14 -0
- package/package.json +1 -1
- package/src/fit/fit-curve.d.ts +4 -1
- package/src/fit/fit-curve.d.ts.map +1 -1
- package/src/fit/fit-curve.js +5 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,7 +1,21 @@
|
|
|
1
1
|
# statistics changelog
|
|
2
2
|
|
|
3
|
+
## 1.3.3 (2024-05-22)
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
* [#2855](https://github.com/datagrok-ai/public/issues/2855): Changed markerType to marker
|
|
8
|
+
|
|
9
|
+
## 1.3.2 (2024-05-21)
|
|
10
|
+
|
|
11
|
+
### Features
|
|
12
|
+
|
|
13
|
+
* [#2855](https://github.com/datagrok-ai/public/issues/2855): Added outlier marker option
|
|
14
|
+
|
|
3
15
|
## 1.3.1 (2024-05-21)
|
|
4
16
|
|
|
17
|
+
### Features
|
|
18
|
+
|
|
5
19
|
* [#2797](https://github.com/datagrok-ai/public/issues/2797): Added log-linear fit function
|
|
6
20
|
|
|
7
21
|
## 1.3.0 (2024-05-11)
|
package/package.json
CHANGED
package/src/fit/fit-curve.d.ts
CHANGED
|
@@ -39,6 +39,7 @@ export declare type FitInvertedFunctions = {
|
|
|
39
39
|
invertedBottom: (y: number) => number;
|
|
40
40
|
};
|
|
41
41
|
export declare type FitMarkerType = 'asterisk' | 'circle' | 'cross border' | 'diamond' | 'square' | 'star' | 'triangle bottom' | 'triangle left' | 'triangle right' | 'triangle top';
|
|
42
|
+
export declare type FitOutlierMarkerType = 'asterisk' | 'circle' | 'cross border' | 'diamond' | 'outlier' | 'square' | 'star' | 'triangle bottom' | 'triangle left' | 'triangle right' | 'triangle top';
|
|
42
43
|
export declare type FitLineStyle = 'solid' | 'dotted' | 'dashed' | 'dashdotted';
|
|
43
44
|
export declare type FitErrorModelType = 'constant' | 'proportional' | 'combined';
|
|
44
45
|
/** A point in the fit series. Only x and y are required. Can override some fields defined in IFitSeriesOptions. */
|
|
@@ -49,6 +50,7 @@ export interface IFitPoint {
|
|
|
49
50
|
color?: string;
|
|
50
51
|
outlierColor?: string;
|
|
51
52
|
marker?: FitMarkerType;
|
|
53
|
+
outlierMarker?: FitOutlierMarkerType;
|
|
52
54
|
size?: number;
|
|
53
55
|
stdev?: number;
|
|
54
56
|
}
|
|
@@ -98,7 +100,8 @@ export interface IFitSeriesOptions {
|
|
|
98
100
|
fitFunction?: string | IFitFunctionDescription;
|
|
99
101
|
parameters?: number[];
|
|
100
102
|
parameterBounds?: FitParamBounds[];
|
|
101
|
-
|
|
103
|
+
marker?: FitMarkerType;
|
|
104
|
+
outlierMarker?: FitOutlierMarkerType;
|
|
102
105
|
lineStyle?: FitLineStyle;
|
|
103
106
|
pointColor?: string;
|
|
104
107
|
fitLineColor?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fit-curve.d.ts","sourceRoot":"","sources":["fit-curve.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"fit-curve.d.ts","sourceRoot":"","sources":["fit-curve.ts"],"names":[],"mappings":"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"}
|
package/src/fit/fit-curve.js
CHANGED
|
@@ -198,9 +198,12 @@ export const fitSeriesProperties = [
|
|
|
198
198
|
DG.Property.js('showCurveConfidenceInterval', DG.TYPE.BOOL, { category: 'Fitting', description: 'Whether confidence intervals should be rendered', defaultValue: false,
|
|
199
199
|
//@ts-ignore
|
|
200
200
|
friendlyName: 'Confidence Interval' }),
|
|
201
|
-
DG.Property.js('
|
|
201
|
+
DG.Property.js('marker', DG.TYPE.STRING, { category: 'Rendering', defaultValue: 'circle',
|
|
202
202
|
choices: ['asterisk', 'circle', 'cross border', 'diamond', 'square', 'star',
|
|
203
203
|
'triangle bottom', 'triangle left', 'triangle right', 'triangle top'], nullable: false }),
|
|
204
|
+
DG.Property.js('outlierMarker', DG.TYPE.STRING, { category: 'Rendering', defaultValue: 'outlier',
|
|
205
|
+
choices: ['asterisk', 'circle', 'cross border', 'diamond', 'outlier', 'square', 'star',
|
|
206
|
+
'triangle bottom', 'triangle left', 'triangle right', 'triangle top'], nullable: false }),
|
|
204
207
|
DG.Property.js('lineStyle', DG.TYPE.STRING, { category: 'Rendering', defaultValue: 'solid',
|
|
205
208
|
choices: ['solid', 'dotted', 'dashed', 'dashdotted'], nullable: false }),
|
|
206
209
|
DG.Property.js('droplines', DG.TYPE.STRING_LIST, { description: 'Whether specific droplines should be rendered',
|
|
@@ -442,4 +445,4 @@ function getSigmasForCombinedErrorModel(sigmaA, sigmaB, residuesSquares, pred) {
|
|
|
442
445
|
sigmaA = sigmaA * finalProportion;
|
|
443
446
|
return { sigmaA, sigmaB };
|
|
444
447
|
}
|
|
445
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml0LWN1cnZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZml0LWN1cnZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDRCQUE0QjtBQUM1QixvQ0FBb0M7QUFDcEMsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0QyxzQkFBc0I7QUFDdEIsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFDLDZCQUE2QixFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDNUUsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFHL0UsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHO0lBQzNCLFFBQVEsRUFBRSxVQUFVO0lBQ3BCLFlBQVksRUFBRSxjQUFjO0lBQzVCLFFBQVEsRUFBRSxVQUFVO0NBQ3JCLENBQUM7QUEwQ0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBb0JFO0FBRUYsTUFBTSxTQUFTLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQWlFM0IsNERBQTREO0FBQzVELE1BQU0sT0FBTyxZQUFZO0lBQXpCO1FBQ0UsaUJBQVksR0FBcUIsRUFBRSxDQUFDO1FBQ3BDLGtCQUFhLEdBQXNCLEVBQUUsQ0FBQyxDQUFFLDZEQUE2RDtRQUNyRyxXQUFNLEdBQWlCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0NBQUE7QUF3QkQsK0VBQStFO0FBRS9FLDRFQUE0RTtBQUM1RSxrQ0FBa0M7QUFDbEMsTUFBTSxPQUFnQixXQUFXO0NBS2hDO0FBRUQsZ0RBQWdEO0FBQ2hELE1BQU0sT0FBTyxjQUFlLFNBQVEsV0FBVztJQUM3QyxJQUFJLElBQUk7UUFDTixPQUFPLG1CQUFtQixDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsQ0FBQyxDQUFDLE1BQW9CLEVBQUUsQ0FBUztRQUMvQixPQUFPLE1B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LGVBQWUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDL0MsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLEdBQUcsY0FBYyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM3RSx1QkFBdUIsSUFBSSxlQUFlLENBQUMsQ0FBQyxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ25IO1FBQ0QsSUFBSSx1QkFBdUIsR0FBRyxrQkFBa0IsRUFBRTtZQUNoRCxrQkFBa0IsR0FBRyx1QkFBdUIsQ0FBQztZQUM3QyxlQUFlLEdBQUcsVUFBVSxDQUFDO1NBQzlCO0tBQ0Y7SUFDRCxNQUFNLEdBQUcsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLGVBQWUsQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sR0FBRyxNQUFNLEdBQUcsZUFBZSxDQUFDO0lBRWxDLE9BQU8sRUFBQyxNQUFNLEVBQUUsTUFBTSxFQUFDLENBQUM7QUFDMUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLW11bHRpLXNwYWNlcyAqL1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbi8vQHRzLWlnbm9yZTogbm8gdHlwZXNcbmltcG9ydCAqIGFzIGpTdGF0IGZyb20gJ2pzdGF0JztcbmltcG9ydCB7cGVyZm9ybU5lbGRlck1lYWRPcHRpbWl6YXRpb259IGZyb20gJy4vZml0dGluZy1hbGdvcml0aG0vb3B0aW1pemVyJztcbmltcG9ydCB7TkVMREVSX01FQURfREVGQVVMVFN9IGZyb20gJy4vZml0dGluZy1hbGdvcml0aG0vb3B0aW1pemVyLW5lbGRlci1tZWFkJztcblxuXG5leHBvcnQgY29uc3QgRml0RXJyb3JNb2RlbCA9IHtcbiAgQ09OU1RBTlQ6ICdjb25zdGFudCcsXG4gIFBST1BPUlRJT05BTDogJ3Byb3BvcnRpb25hbCcsXG4gIENPTUJJTkVEOiAnY29tYmluZWQnLFxufTtcblxuZXhwb3J0IHR5cGUgRml0UGFyYW1Cb3VuZHMgPSB7XG4gIG1pbj86IG51bWJlcjtcbiAgbWF4PzogbnVtYmVyO1xufTtcblxuLyoqIEZpdCBmdW5jdGlvbiBkZXNjcmlwdGlvbi4gQXBwbGllcyB0byBjdXN0b20gdXNlciBmaXQgZnVuY3Rpb25zLlxuICogUmVxdWlyZXMgSlMgYXJyb3cgZnVuY3Rpb25zIGZvciB0aGUgZml0IGZ1bmN0aW9ucyBhbmQgaW5pdGlhbCBwYXJhbWV0ZXJzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBJRml0RnVuY3Rpb25EZXNjcmlwdGlvbiB7XG4gIG5hbWU6IHN0cmluZztcbiAgZnVuY3Rpb246IHN0cmluZztcbiAgZ2V0SW5pdGlhbFBhcmFtZXRlcnM6IHN0cmluZztcbiAgcGFyYW1ldGVyTmFtZXM6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgdHlwZSBGaXRDdXJ2ZSA9IHtcbiAgZml0dGVkQ3VydmU6ICh4OiBudW1iZXIpID0+IG51bWJlcjtcbiAgcGFyYW1ldGVyczogRmxvYXQzMkFycmF5O1xufTtcblxuZXhwb3J0IHR5cGUgRml0Q29uZmlkZW5jZUludGVydmFscyA9IHtcbiAgY29uZmlkZW5jZVRvcDogKHg6IG51bWJlcikgPT4gbnVtYmVyO1xuICBjb25maWRlbmNlQm90dG9tOiAoeDogbnVtYmVyKSA9PiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBGaXRTdGF0aXN0aWNzID0ge1xuICByU3F1YXJlZD86IG51bWJlcixcbiAgYXVjPzogbnVtYmVyLFxuICBpbnRlcmNlcHRYPzogbnVtYmVyLCAvLyBwYXJhbWV0ZXJzWzJdXG4gIGludGVyY2VwdFk/OiBudW1iZXIsIC8vIGZpdHRlZEN1cnZlW3BhcmFtZXRlcnNbMl1dXG4gIHNsb3BlPzogbnVtYmVyLCAvLyBwYXJhbWV0ZXJzWzFdXG4gIHRvcD86IG51bWJlciwgLy8gcGFyYW1ldGVyc1swXVxuICBib3R0b20/OiBudW1iZXIsIC8vIHBhcmFtZXRlcnNbM11cbn07XG5cbmV4cG9ydCB0eXBlIEZpdEludmVydGVkRnVuY3Rpb25zID0ge1xuICBpbnZlcnRlZDogKHk6IG51bWJlcikgPT4gbnVtYmVyLFxuICBpbnZlcnRlZFRvcDogKHk6IG51bWJlcikgPT4gbnVtYmVyLFxuICBpbnZlcnRlZEJvdHRvbTogKHk6IG51bWJlcikgPT4gbnVtYmVyLFxufTtcblxuLyoqXG4gKiAgRGF0YWdyb2sgY3VydmUgZml0dGluZ1xuICpcbiAqIC0gRml0dGluZzogY29tcHV0aW5nIHBhcmFtZXRlcnMgb2YgdGhlIHNwZWNpZmllZCBmdW5jdGlvbiB0byBiZXN0IGZpdCB0aGUgZGF0YVxuICogICAtIFVzZXMgQkZHUyBvcHRpbWl6YXRpb24gYWxnb3JpdGhtIChtdWx0aS10aHJlYWRpbmcgZm9yIHBlcmZvcm1hbmNlKS5cbiAqICAgICBGb3IgZG9zZS1yZXNwb25zZSBjdXJ2ZXMsIHdlIGFyZSB0eXBpY2FsbHkgZml0dGluZyB0aGUgc2lnbW9pZCBmdW5jdGlvblxuICogICAtIEFiaWxpdHkgdG8gZHluYW1pY2FsbHkgcmVnaXN0ZXIgY3VzdG9tIGZpdHRpbmcgZnVuY3Rpb25zXG4gKiAgICAgLSBBdXRvbWF0aWMgZml0IGZ1bmN0aW9uIGRldGVybWluYXRpb25cbiAqICAgICAtIENhY2hpbmcgb2YgY3VzdG9tIGZpdHRpbmcgZnVuY3Rpb25zXG4gKiAgIC0gQWJpbGl0eSB0byBnZXQgZml0dGluZyBwZXJmb3JtYW5jZSBjaGFyYWN0ZXJpc3RpY3MgKHItc3F1YXJlZCwgY2xhc3NpZmljYXRpb24sIGV0YylcbiAqIC0gRGVlcCBpbnRlZ3JhdGlvbiB3aXRoIHRoZSBEYXRhZ3JvayBncmlkXG4gKiAgIC0gRWl0aGVyIGZpdHRpbmcgb24gdGhlIGZseSwgb3IgdXNpbmcgdGhlIHN1cHBsaWVkIGZ1bmN0aW9uICsgcGFyYW1ldGVyc1xuICogICAtIE11bHRpcGxlIHNlcmllcyBpbiBvbmUgY2VsbFxuICogICAtIENhbmRsZXN0aWNrcywgY29uZmlkZW5jZSBpbnRlcnZhbHMsIGFuZCBkcm9wbGluZXMgZHJhd2luZ1xuICogICAtIEFiaWxpdHkgdG8gZGVmaW5lIGNoYXJ0LCBtYXJrZXIsIG9yIGZpdHRpbmcgb3B0aW9ucyAoc3VjaCBhcyBmaXQgZnVuY3Rpb24gb3IgbWFya2VyIGNvbG9yKVxuICogICAgIG9uIHRoZSBjb2x1bW4gbGV2ZWwsIHdpdGggdGhlIGFiaWxpdHkgdG8gb3ZlcnJpZGUgaXQgb24gYSBncmlkIGNlbGwgb3IgcG9pbnQgbGV2ZWxcbiAqICAgLSBDbGlja2luZyBhIHBvaW50IGluIGEgY2hhcnQgd2l0aGluIGEgZ3JpZCBtYWtlcyBpdCBhbiBvdXRsaWVyIC0+IGN1cnZlIGlzIHJlLWZpdHRlZCBvbiB0aGUgZmx5XG4gKiAgIC0gQWJpbGl0eSB0byBzcGVjaWZ5IGEgY2hhcnQgYXMgXCJyZWZlcmVuY2VcIiBzbyB0aGF0IGl0IGlzIHNob3duIG9uIGV2ZXJ5IG90aGVyIGNoYXJ0IGZvciBjb21wYXJpc29uXG4gKiAtIEFiaWxpdHkgdG8gb3ZlcmxheSBjdXJ2ZXMgZnJvbSBtdWx0aXBsZSBncmlkIGNlbGxzIChzcGVjaWFsIHZpZXdlcilcbiAqIC0gV29yayB3aXRoIHNlcmllcyBzdG9yZWQgaW4gbXVsdGlwbGUgZm9ybWF0cyAoYmluYXJ5IGZvciBwZXJmb3JtYW5jZSwganNvbiBmb3IgZmxleGliaWxpdHksIGV0YylcbiovXG5cbmNvbnN0IERST1BMSU5FUyA9IFsnSUM1MCddO1xuXG5leHBvcnQgdHlwZSBGaXRNYXJrZXJUeXBlID0gJ2FzdGVyaXNrJyB8ICdjaXJjbGUnIHwgJ2Nyb3NzIGJvcmRlcicgfCAnZGlhbW9uZCcgfCAnc3F1YXJlJyB8ICdzdGFyJyB8ICd0cmlhbmdsZSBib3R0b20nIHxcbiAgJ3RyaWFuZ2xlIGxlZnQnIHwgJ3RyaWFuZ2xlIHJpZ2h0JyB8ICd0cmlhbmdsZSB0b3AnO1xuXG5leHBvcnQgdHlwZSBGaXRMaW5lU3R5bGUgPSAnc29saWQnIHwgJ2RvdHRlZCcgfCAnZGFzaGVkJyB8ICdkYXNoZG90dGVkJztcblxuZXhwb3J0IHR5cGUgRml0RXJyb3JNb2RlbFR5cGUgPSAnY29uc3RhbnQnIHwgJ3Byb3BvcnRpb25hbCcgfCAnY29tYmluZWQnO1xuXG4vKiogQSBwb2ludCBpbiB0aGUgZml0IHNlcmllcy4gT25seSB4IGFuZCB5IGFyZSByZXF1aXJlZC4gQ2FuIG92ZXJyaWRlIHNvbWUgZmllbGRzIGRlZmluZWQgaW4gSUZpdFNlcmllc09wdGlvbnMuICovXG5leHBvcnQgaW50ZXJmYWNlIElGaXRQb2ludCB7XG4gIHg6IG51bWJlcjtcbiAgeTogbnVtYmVyO1xuICBvdXRsaWVyPzogYm9vbGVhbjsgICAgICAgLy8gaWYgdHJ1ZSwgcmVuZGVycyBhcyAneCcgYW5kIGdldHMgaWdub3JlZCBmb3IgY3VydmUgZml0dGluZ1xuICBjb2xvcj86IHN0cmluZzsgICAgICAgICAgLy8gb3ZlcnJpZGVzIHRoZSBtYXJrZXIgY29sb3IgZGVmaW5lZCBpbiBJRml0U2VyaWVzT3B0aW9uc1xuICBvdXRsaWVyQ29sb3I/OiBzdHJpbmc7ICAgLy8gb3ZlcnJpZGVzIHRoZSBvdXRsaWVyIGNvbG9yIGRlZmluZWQgaW4gSUZpdFNlcmllc09wdGlvbnNcbiAgbWFya2VyPzogRml0TWFya2VyVHlwZTsgIC8vIG92ZXJyaWRlcyB0aGUgbWFya2VyIHR5cGUgZGVmaW5lZCBpbiBJRml0U2VyaWVzT3B0aW9uc1xuICBzaXplPzogbnVtYmVyOyAgICAgICAgICAgLy8gb3ZlcnJpZGVzIHRoZSBkZWZhdWx0IG1hcmtlciBzaXplXG4gIHN0ZGV2PzogbnVtYmVyOyAgICAgICAgICAvLyB3aGVuIGRlZmluZWQsIHJlbmRlcnMgYW4gZXJyb3IgYmFyIGNhbmRsZXN0aWNrXG4gIC8vIG1pblk/OiBudW1iZXI7ICAgICAgICAgICAvLyB3aGVuIGRlZmluZWQsIHRoZSBtYXJrZXIgcmVuZGVycyBhcyBhIGNhbmRsZXN0aWNrIHdpdGggd2hpc2tlcnMgW21pblksIG1heFldXG4gIC8vIG1heFk/OiBudW1iZXI7ICAgICAgICAgICAvLyB3aGVuIGRlZmluZWQsIHRoZSBtYXJrZXIgcmVuZGVycyBhcyBhIGNhbmRsZXN0aWNrIHdpdGggd2hpc2tlcnMgW21pblksIG1heFldXG59XG5cbi8qKiBBIHNlcmllcyBjb25zaXN0cyBvZiBwb2ludHMsIGhhcyBhIG5hbWUsIGFuZCBvcHRpb25zLlxuICogSWYgZGVmaW5lZCwgc2VyaWVzT3B0aW9ucyBhcmUgbWVyZ2VkIHdpdGgge0BsaW5rIElGaXRDaGFydERhdGEuc2VyaWVzT3B0aW9uc30gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUZpdFNlcmllcyBleHRlbmRzIElGaXRTZXJpZXNPcHRpb25zIHtcbiAgcG9pbnRzOiBJRml0UG9pbnRbXTtcbn1cblxuLyoqIENoYXJ0IGxhYmVscyBvcHRpb25zLiBDb250cm9scyB0aGUgY2hhcnQgbGFiZWxzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBJRml0Q2hhcnRMYWJlbE9wdGlvbnMge1xuICB2aXNpYmxlOiBib29sZWFuOyAgICAgICAgIC8vIGlmIHRydWUsIHJlbmRlcnMgdGhlIGxhYmVsIG9uIHRoZSBwbG90XG4gIGNvbG9yOiBzdHJpbmc7ICAgICAgICAgICAgLy8gZGVmaW5lcyB0aGUgbGFiZWwgY29sb3JcbiAgbmFtZTogc3RyaW5nOyAgICAgICAgICAgICAvLyBkZWZpbmVzIHRoZSBsYWJlbCBuYW1lXG59XG5cbi8qKiBDaGFydCBvcHRpb25zLiBGb3IgZml0dGVkIGN1cnZlcywgdGhpcyBvYmplY3QgaXMgc3RvcmVkIGluIHRoZSBncmlkIGNvbHVtbiB0YWdzIGFuZCBpcyB1c2VkIGJ5IHRoZSByZW5kZXJlci4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUZpdENoYXJ0T3B0aW9ucyB7XG4gIG1pblg/OiBudW1iZXI7XG4gIG1pblk/OiBudW1iZXI7XG4gIG1heFg/OiBudW1iZXI7XG4gIG1heFk/OiBudW1iZXI7XG5cbiAgdGl0bGU/OiBzdHJpbmc7ICAgICAgICAgICAgLy8gZGVmaW5lcyB0aGUgcGxvdCB0aXRsZS4gSWYgdGhlIHBsb3Qgc2l6ZSBpcyBlbm91Z2gsIHdpbGwgcmVuZGVyIGl0LlxuICB4QXhpc05hbWU/OiBzdHJpbmc7ICAgICAgICAvLyBkZWZpbmVzIHRoZSB4IGF4aXMgbmFtZS4gSWYgdGhlIHBsb3Qgc2l6ZSBpcyBlbm91Z2gsIHdpbGwgcmVuZGVyIGl0LlxuICB5QXhpc05hbWU/OiBzdHJpbmc7ICAgICAgICAvLyBkZWZpbmVzIHRoZSBZIGF4aXMgbmFtZS4gSWYgdGhlIHBsb3Qgc2l6ZSBpcyBlbm91Z2gsIHdpbGwgcmVuZGVyIGl0LlxuXG4gIGxvZ1g/OiBib29sZWFuOyAgICAgICAgICAgIC8vIGRlZmluZXMgd2hldGhlciB0aGUgeCBkYXRhIHNob3VsZCBiZSBsb2dhcml0aG1pYyBvciBub3RcbiAgbG9nWT86IGJvb2xlYW47ICAgICAgICAgICAgLy8gZGVmaW5lcyB3aGV0aGVyIHRoZSB5IGRhdGEgc2hvdWxkIGJlIGxvZ2FyaXRobWljIG9yIG5vdFxuXG4gIGFsbG93WFplcm9lcz86IGJvb2xlYW47ICAgIC8vIGRlZmluZXMgd2hldGhlciB4IHplcm9lcyBhbGxvd2VkIGZvciBsb2dhcml0aG1pYyBkYXRhIG9yIG5vdFxuICBtZXJnZVNlcmllcz86IGJvb2xlYW47ICAgICAvLyBkZWZpbmVzIHdoZXRoZXIgdG8gbWVyZ2Ugc2VyaWVzIG9yIG5vdFxuXG4gIHNob3dDb2x1bW5MYWJlbD86IGJvb2xlYW47IC8vIGRlZmluZXMgd2hldGhlciB0byBzaG93IHRoZSBjb2x1bW4gbGFiZWwgaW4gdGhlIGxlZ2VuZCBvciBub3RcbiAgc2hvd1N0YXRpc3RpY3M/OiBzdHJpbmdbXTsgLy8gZGVmaW5lcyB0aGUgc3RhdGlzdGljcyB0aGF0IHdvdWxkIGJlIHNob3duIG9uIHRoZSBwbG90XG4gIGxhYmVsT3B0aW9ucz86IElGaXRDaGFydExhYmVsT3B0aW9uc1tdOyAvLyBjb250cm9scyB0aGUgcGxvdCBsYWJlbHNcbn1cblxuLyoqIERhdGEgZm9yIHRoZSBmaXQgY2hhcnQuICovXG5leHBvcnQgaW50ZXJmYWNlIElGaXRDaGFydERhdGEge1xuICBjaGFydE9wdGlvbnM/OiBJRml0Q2hhcnRPcHRpb25zO1xuICBzZXJpZXNPcHRpb25zPzogSUZpdFNlcmllc09wdGlvbnM7ICAvLyBEZWZhdWx0IHNlcmllcyBvcHRpb25zLiBJbmRpdmlkdWFsIHNlcmllcyBjYW4gb3ZlcnJpZGUgaXQuXG4gIHNlcmllcz86IElGaXRTZXJpZXNbXTtcbn1cblxuLyoqIENsYXNzIHRoYXQgaW1wbGVtZW50cyB7QGxpbmsgSUZpdENoYXJ0RGF0YX0gaW50ZXJmYWNlICovXG5leHBvcnQgY2xhc3MgRml0Q2hhcnREYXRhIGltcGxlbWVudHMgSUZpdENoYXJ0RGF0YSB7XG4gIGNoYXJ0T3B0aW9uczogSUZpdENoYXJ0T3B0aW9ucyA9IHt9O1xuICBzZXJpZXNPcHRpb25zOiBJRml0U2VyaWVzT3B0aW9ucyA9IHt9OyAgLy8gRGVmYXVsdCBzZXJpZXMgb3B0aW9ucy4gSW5kaXZpZHVhbCBzZXJpZXMgY2FuIG92ZXJyaWRlIGl0LlxuICBzZXJpZXM6IElGaXRTZXJpZXNbXSA9IFtdO1xufVxuXG4vKiogU2VyaWVzIG9wdGlvbnMgY2FuIGJlIGVpdGhlciBhcHBsaWVkIGdsb2JhbGx5IG9uIGEgY29sdW1uIGxldmVsLCBvciBwYXJ0aWFsbHkgb3ZlcnJpZGRlbiBpbiBwYXJ0aWN1bGFyIHNlcmllcyAqL1xuZXhwb3J0IGludGVyZmFjZSBJRml0U2VyaWVzT3B0aW9ucyB7XG4gIG5hbWU/OiBzdHJpbmc7ICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29udHJvbHMgdGhlIHNlcmllcyBuYW1lXG4gIGZpdEZ1bmN0aW9uPzogc3RyaW5nIHwgSUZpdEZ1bmN0aW9uRGVzY3JpcHRpb247IC8vIGNvbnRyb2xzIHRoZSBzZXJpZXMgZml0IGZ1bmN0aW9uXG4gIHBhcmFtZXRlcnM/OiBudW1iZXJbXTsgICAgICAgICAgICAgICAgLy8gY29udHJvbHMgdGhlIHNlcmllcyBwYXJhbWV0ZXJzLCBhdXRvLWZpdHRpbmcgd2hlbiBub3QgZGVmaW5lZFxuICBwYXJhbWV0ZXJCb3VuZHM/OiBGaXRQYXJhbUJvdW5kc1tdOyAgIC8vIGRlZmluZXMgdGhlIGFjY2VwdGFibGUgcmFuZ2Ugb2YgZWFjaCBwYXJhbWV0ZXIsIHdoaWNoIGlzIHRha2VuIGludG8gYWNjb3VudCBkdXJpbmcgdGhlIGZpdHRpbmcuIFNlZSBhbHNvIGBwYXJhbWV0ZXJzYC5cbiAgbWFya2VyVHlwZT86IEZpdE1hcmtlclR5cGU7ICAgICAgICAgICAvLyBkZWZpbmVzIHRoZSBzZXJpZXMgbWFya2VyIHR5cGVcbiAgbGluZVN0eWxlPzogRml0TGluZVN0eWxlOyAgICAgICAgICAgICAvLyBkZWZpbmVzIHRoZSBzZXJpZXMgbGluZSBzdHlsZVxuICBwb2ludENvbG9yPzogc3RyaW5nOyAgICAgICAgICAgICAgICAgIC8vIG92ZXJyaWRlcyB0aGUgc3RhbmRhcmRpemVkIHNlcmllcyBwb2ludCBjb2xvclxuICBmaXRMaW5lQ29sb3I/OiBzdHJpbmc7ICAgICAgICAgICAgICAgIC8vIG92ZXJyaWRlcyB0aGUgc3RhbmRhcmRpemVkIHNlcmllcyBmaXQgbGluZSBjb2xvclxuICBjb25maWRlbmNlSW50ZXJ2YWxDb2xvcj86IHN0cmluZzsgICAgIC8vIG92ZXJyaWRlcyB0aGUgc3RhbmRhcmRpemVkIHNlcmllcyBjb25maWRlbmNlIGludGVydmFsIGNvbG9yXG4gIG91dGxpZXJDb2xvcj86IHN0cmluZzsgICAgICAgICAgICAgICAgLy8gb3ZlcnJpZGVzIHRoZSBzdGFuZGFyZGl6ZWQgc2VyaWVzIG91dGxpZXIgY29sb3JcbiAgY29ubmVjdERvdHM/OiBib29sZWFuOyAgICAgICAgICAgICAgICAvLyBkZWZpbmVzIHdoZXRoZXIgdG8gY29ubmVjdCB0aGUgcG9pbnRzIHdpdGggbGluZXMgb3Igbm90LiBJZiB0cnVlIGFuZCBzaG93Rml0TGluZSBpcyBmYWxzZSAtIGZpdHRpbmcgaXMgZGlzYWJsZWQgLSBvdGhlcndpc2UsIGl0IHdpbGwgYmUgcmVuZGVyZWQgYWNjb3JkaW5nbHkgdG8gdGhlIHBhcmFtZXRlciB2YWx1ZS5cbiAgc2hvd0ZpdExpbmU/OiBib29sZWFuOyAgICAgICAgICAgICAgICAvLyBkZWZpbmVzIHdoZXRoZXIgdG8gc2hvdyB0aGUgZml0IGxpbmUgb3Igbm90XG4gIHNob3dQb2ludHM/OiBzdHJpbmc7ICAgICAgICAgICAgICAgICAgLy8gZGVmaW5lcyB0aGUgZGF0YSBkaXNwbGF5IG1vZGVcbiAgc2hvd0N1cnZlQ29uZmlkZW5jZUludGVydmFsPzogYm9vbGVhbjsgICAgLy8gZGVmaW5lcyB3aGV0aGVyIHRvIHNob3cgdGhlIGNvbmZpZGVuY2UgaW50ZXJ2YWxzIG9yIG5vdFxuICBlcnJvck1vZGVsPzogRml0RXJyb3JNb2RlbFR5cGU7ICAgICAgIC8vIGRlZmluZXMgdGhlIHNlcmllcyBlcnJvciBtb2RlbFxuICBjbGlja1RvVG9nZ2xlPzogYm9vbGVhbjsgICAgLy8gaWYgdHJ1ZSwgY2xpY2tpbmcgb24gdGhlIHBvaW50IHRvZ2dsZXMgaXRzIG91dGxpZXIgc3RhdHVzIGFuZCBjYXVzZXMgY3VydmUgcmVmaXR0aW5nXG4gIGxhYmVscz86IHtba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFufTsgLy8gY29udHJvbGxlZCBieSBJRml0Q2hhcnREYXRhIGxhYmVsT3B0aW9ucywgc2hvd3MgbGFiZWxzXG4gIGRyb3BsaW5lcz86IHN0cmluZ1tdOyAgICAgICAgICAgICAgICAgLy8gZGVmaW5lcyB0aGUgZHJvcGxpbmVzIHRoYXQgd291bGQgYmUgc2hvd24gb24gdGhlIHBsb3QgKElDNTApXG4gIGNvbHVtbk5hbWU/OiBzdHJpbmc7ICAgICAgICAgICAgICAgICAgLy8gZGVmaW5lcyB0aGUgY29sdW1uIG5hbWUgd2hlcmUgdGhlIHNlcmllcyBpcyBzdG9yZWRcbn1cbi8vIFRPRE86IHNob3cgbGFiZWxzIGluIHByb3BlcnR5IHBhbmVsIGlmIHByZXNlbnQsIGNvbG9yIGJ5IGRlZmF1bHQgZnJvbSBzZXJpZXNcblxuLy8gVE9ETz86IGFkZCBtZXRob2QgdG8gcmV0dXJuIHBhcmFtZXRlcnMgLSBnZXQgcGFyYW1ldGVycyBmcm9tIGZpdCBmdW5jdGlvblxuLyoqIENsYXNzIGZvciB0aGUgZml0IGZ1bmN0aW9ucyAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEZpdEZ1bmN0aW9uIHtcbiAgYWJzdHJhY3QgZ2V0IG5hbWUoKTogc3RyaW5nO1xuICBhYnN0cmFjdCBnZXQgcGFyYW1ldGVyTmFtZXMoKTogc3RyaW5nW107XG4gIGFic3RyYWN0IHkocGFyYW1zOiBGbG9hdDMyQXJyYXksIHg6IG51bWJlcik6IG51bWJlcjtcbiAgYWJzdHJhY3QgZ2V0SW5pdGlhbFBhcmFtZXRlcnMoeDogbnVtYmVyW10sIHk6IG51bWJlcltdKTogRmxvYXQzMkFycmF5O1xufVxuXG4vKiogQ2xhc3MgdGhhdCBpbXBsZW1lbnRzIHRoZSBsaW5lYXIgZnVuY3Rpb24gKi9cbmV4cG9ydCBjbGFzcyBMaW5lYXJGdW5jdGlvbiBleHRlbmRzIEZpdEZ1bmN0aW9uIHtcbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gRklUX0ZVTkNUSU9OX0xJTkVBUjtcbiAgfVxuXG4gIGdldCBwYXJhbWV0ZXJOYW1lcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFsnU2xvcGUnLCAnSW50ZXJjZXB0J107XG4gIH1cblxuICB5KHBhcmFtczogRmxvYXQzMkFycmF5LCB4OiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiBsaW5lYXIocGFyYW1zLCB4KTtcbiAgfVxuXG4gIGdldEluaXRpYWxQYXJhbWV0ZXJzKHg6IG51bWJlcltdLCB5OiBudW1iZXJbXSk6IEZsb2F0MzJBcnJheSB7XG4gICAgbGV0IG1pbkluZGV4ID0gMDtcbiAgICBsZXQgbWF4SW5kZXggPSAwO1xuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgeC5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHhbaV0gPCB4W21pbkluZGV4XSlcbiAgICAgICAgbWluSW5kZXggPSBpO1xuICAgICAgaWYgKHhbaV0gPiB4W21heEluZGV4XSlcbiAgICAgICAgbWF4SW5kZXggPSBpO1xuICAgIH1cblxuICAgIGNvbnN0IGRlbHRhWCA9IHhbbWF4SW5kZXhdIC0geFttaW5JbmRleF07XG4gICAgY29uc3QgZGVsdGFZID0geVttYXhJbmRleF0gLSB5W21pbkluZGV4XTtcbiAgICBjb25zdCBBID0gZGVsdGFZIC8gZGVsdGFYO1xuICAgIGNvbnN0IEIgPSB5W21heEluZGV4XSAtIEEgKiB4W21heEluZGV4XTtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgRmxvYXQzMkFycmF5KDIpO1xuICAgIHBhcmFtcy5zZXQoW0EsIEJdKTtcbiAgICByZXR1cm4gcGFyYW1zO1xuICB9XG59XG5cbi8qKiBDbGFzcyB0aGF0IGltcGxlbWVudHMgdGhlIHNpZ21vaWQgZnVuY3Rpb24gKi9cbmV4cG9ydCBjbGFzcyBTaWdtb2lkRnVuY3Rpb24gZXh0ZW5kcyBGaXRGdW5jdGlvbiB7XG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEZJVF9GVU5DVElPTl9TSUdNT0lEO1xuICB9XG5cbiAgZ2V0IHBhcmFtZXRlck5hbWVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gWydUb3AnLCAnQm90dG9tJywgJ1Nsb3BlJywgJ0lDNTAnXTtcbiAgfVxuXG4gIHkocGFyYW1zOiBGbG9hdDMyQXJyYXksIHg6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHNpZ21vaWQocGFyYW1zLCB4KTtcbiAgfVxuXG4gIGdldEluaXRpYWxQYXJhbWV0ZXJzKHg6IG51bWJlcltdLCB5OiBudW1iZXJbXSk6IEZsb2F0MzJBcnJheSB7XG4gICAgY29uc3QgZGF0YUJvdW5kcyA9IERHLlJlY3QuZnJvbVhZQXJyYXlzKHgsIHkpO1xuICAgIGNvbnN0IG1lZFkgPSAoZGF0YUJvdW5kcy5ib3R0b20gLSBkYXRhQm91bmRzLnRvcCkgLyAyICsgZGF0YUJvdW5kcy50b3A7XG4gICAgbGV0IG1heFlJbnRlcnZhbCA9IGRhdGFCb3VuZHMuYm90dG9tIC0gZGF0YUJvdW5kcy50b3A7XG4gICAgbGV0IG5lYXJlc3RYSW5kZXggPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgeC5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgY3VycmVudEludGVydmFsID0gTWF0aC5hYnMoeVtpXSAtIG1lZFkpO1xuICAgICAgaWYgKGN1cnJlbnRJbnRlcnZhbCA8IG1heFlJbnRlcnZhbCkge1xuICAgICAgICBtYXhZSW50ZXJ2YWwgPSBjdXJyZW50SW50ZXJ2YWw7XG4gICAgICAgIG5lYXJlc3RYSW5kZXggPSBpO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCB4QXRNZWRZID0geFtuZWFyZXN0WEluZGV4XTtcbiAgICBjb25zdCBzbG9wZSA9IHlbMF0gPiB5W3kubGVuZ3RoIC0gMV0gPyAxIDogLTE7XG5cbiAgICAvLyBwYXJhbXMgYXJlOiBbbWF4LCB0YW4sIElDNTAsIG1pbl1cbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgRmxvYXQzMkFycmF5KDQpO1xuICAgIHBhcmFtcy5zZXQoW2RhdGFCb3VuZHMuYm90dG9tLCBzbG9wZSwgeEF0TWVkWSwgZGF0YUJvdW5kcy50b3BdKTtcbiAgICByZXR1cm4gcGFyYW1zO1xuICB9XG59XG5cbi8qKiBDbGFzcyB0aGF0IGltcGxlbWVudHMgdGhlIGxpbmVhciBsb2dhcml0aG1pYyBmdW5jdGlvbiAqL1xuZXhwb3J0IGNsYXNzIExvZ0xpbmVhckZ1bmN0aW9uIGV4dGVuZHMgRml0RnVuY3Rpb24ge1xuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBGSVRfRlVOQ1RJT05fTE9HX0xJTkVBUjtcbiAgfVxuXG4gIGdldCBwYXJhbWV0ZXJOYW1lcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFsnU2xvcGUnLCAnSW50ZXJjZXB0J107XG4gIH1cblxuICB5KHBhcmFtczogRmxvYXQzMkFycmF5LCB4OiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiBsb2dMaW5lYXIocGFyYW1zLCB4KTtcbiAgfVxuXG4gIGdldEluaXRpYWxQYXJhbWV0ZXJzKHg6IG51bWJlcltdLCB5OiBudW1iZXJbXSk6IEZsb2F0MzJBcnJheSB7XG4gICAgY29uc3QgcGFyYW1zID0gbmV3IEZsb2F0MzJBcnJheSgyKTtcbiAgICBwYXJhbXMuc2V0KFstNSwgMTAwXSk7XG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxufVxuXG4vKiogQ2xhc3MgdGhhdCBpbXBsZW1lbnRzIHVzZXIgSlMgZnVuY3Rpb25zICovXG5leHBvcnQgY2xhc3MgSnNGdW5jdGlvbiBleHRlbmRzIEZpdEZ1bmN0aW9uIHtcbiAgcHJpdmF0ZSBfbmFtZTogc3RyaW5nO1xuICBwcml2YXRlIF9wYXJhbWV0ZXJOYW1lczogc3RyaW5nW107XG5cbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nLCB5RnVuYzogKHBhcmFtczogRmxvYXQzMkFycmF5LCB4OiBudW1iZXIpID0+IG51bWJlcixcbiAgICBnZXRJbml0UGFyYW1zRnVuYzogKHg6IG51bWJlcltdLCB5OiBudW1iZXJbXSkgPT4gRmxvYXQzMkFycmF5LCBwYXJhbWV0ZXJOYW1lczogc3RyaW5nW10pIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5fbmFtZSA9IG5hbWU7XG4gICAgdGhpcy5fcGFyYW1ldGVyTmFtZXMgPSBwYXJhbWV0ZXJOYW1lcztcblxuICAgIHRoaXMueSA9IHlGdW5jO1xuICAgIHRoaXMuZ2V0SW5pdGlhbFBhcmFtZXRlcnMgPSBnZXRJbml0UGFyYW1zRnVuYztcbiAgfVxuXG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX25hbWU7XG4gIH1cblxuICBnZXQgcGFyYW1ldGVyTmFtZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLl9wYXJhbWV0ZXJOYW1lcztcbiAgfVxuXG4gIHkocGFyYW1zOiBGbG9hdDMyQXJyYXksIHg6IG51bWJlcik6IG51bWJlciB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIGdldEluaXRpYWxQYXJhbWV0ZXJzKHg6IG51bWJlcltdLCB5OiBudW1iZXJbXSk6IEZsb2F0MzJBcnJheSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxufVxuXG4vLyBPYmplY3Qgd2l0aCBmaXQgZnVuY3Rpb25zXG5leHBvcnQgY29uc3QgZml0RnVuY3Rpb25zOiB7W2luZGV4OiBzdHJpbmddOiBGaXRGdW5jdGlvbn0gPSB7XG4gICdsaW5lYXInOiBuZXcgTGluZWFyRnVuY3Rpb24oKSxcbiAgJ3NpZ21vaWQnOiBuZXcgU2lnbW9pZEZ1bmN0aW9uKCksXG4gICdsb2ctbGluZWFyJzogbmV3IExvZ0xpbmVhckZ1bmN0aW9uKCksXG59O1xuXG4vKiogUHJvcGVydGllcyB0aGF0IGRlc2NyaWJlIHtAbGluayBGaXRTdGF0aXN0aWNzfS4gVXNlZnVsIGZvciBlZGl0aW5nLCBpbml0aWFsaXphdGlvbiwgdHJhbnNmb3JtYXRpb25zLCBldGMuICovXG5leHBvcnQgY29uc3Qgc3RhdGlzdGljc1Byb3BlcnRpZXM6IERHLlByb3BlcnR5W10gPSBbXG4gIERHLlByb3BlcnR5LmpzKCdyU3F1YXJlZCcsIERHLlRZUEUuRkxPQVQsIHt1c2VyRWRpdGFibGU6IGZhbHNlfSksXG4gIERHLlByb3BlcnR5LmpzKCdhdWMnLCBERy5UWVBFLkZMT0FULCB7dXNlckVkaXRhYmxlOiBmYWxzZX0pLFxuICBERy5Qcm9wZXJ0eS5qcygnaW50ZXJjZXB0WScsIERHLlRZUEUuRkxPQVQsIHt1c2VyRWRpdGFibGU6IGZhbHNlfSksXG4gIERHLlByb3BlcnR5LmpzKCdpbnRlcmNlcHRYJywgREcuVFlQRS5GTE9BVCwge3VzZXJFZGl0YWJsZTogZmFsc2V9KSxcbiAgREcuUHJvcGVydHkuanMoJ3Nsb3BlJywgREcuVFlQRS5GTE9BVCwge3VzZXJFZGl0YWJsZTogZmFsc2V9KSxcbiAgREcuUHJvcGVydHkuanMoJ3RvcCcsIERHLlRZUEUuRkxPQVQsIHt1c2VyRWRpdGFibGU6IGZhbHNlfSksXG4gIERHLlByb3BlcnR5LmpzKCdib3R0b20nLCBERy5UWVBFLkZMT0FULCB7dXNlckVkaXRhYmxlOiBmYWxzZX0pLFxuXTtcblxuLyoqIFByb3BlcnRpZXMgdGhhdCBkZXNjcmliZSB7QGxpbmsgSUZpdENoYXJ0T3B0aW9uc30uIFVzZWZ1bCBmb3IgZWRpdGluZywgaW5pdGlhbGl6YXRpb24sIHRyYW5zZm9ybWF0aW9ucywgZXRjLiAqL1xuZXhwb3J0IGNvbnN0IGZpdENoYXJ0RGF0YVByb3BlcnRpZXM6IERHLlByb3BlcnR5W10gPSBbXG4gIC8vIFN0eWxlIGFuZCB6b29tXG4gIC8vIHJlbW92ZSB1bm5lY2Vzc2FyeSB0b29sdGlwc1xuICBERy5Qcm9wZXJ0eS5qcygnbWluWCcsIERHLlRZUEUuRkxPQVQsIHtudWxsYWJsZTogdHJ1ZX0pLFxuICBERy5Qcm9wZXJ0eS5qcygnbWluWScsIERHLlRZUEUuRkxPQVQsIHtudWxsYWJsZTogdHJ1ZX0pLFxuICBERy5Qcm9wZXJ0eS5qcygnbWF4WCcsIERHLlRZUEUuRkxPQVQsIHtudWxsYWJsZTogdHJ1ZX0pLFxuICBERy5Qcm9wZXJ0eS5qcygnbWF4WScsIERHLlRZUEUuRkxPQVQsIHtudWxsYWJsZTogdHJ1ZX0pLFxuICBERy5Qcm9wZXJ0eS5qcygndGl0bGUnLCBERy5UWVBFLlNUUklORywge251bGxhYmxlOiB0cnVlfSksXG4gIERHLlByb3BlcnR5LmpzKCd4QXhpc05hbWUnLCBERy5UWVBFLlNUUklORywge2Rlc2NyaXB0aW9uOlxuICAgICdMYWJlbCB0byBzaG93IG9uIHRoZSBYIGF4aXMuIElmIG5vdCBzcGVjaWZpZWQsIGNvcnJlc3BvbmRpbmcgZGF0YSBjb2x1bW4gbmFtZSBpcyB1c2VkJywgbnVsbGFibGU6IHRydWV9KSxcbiAgREcuUHJvcGVydHkuanMoJ3lBeGlzTmFtZScsIERHLlRZUEUuU1RSSU5HLCB7ZGVzY3JpcHRpb246XG4gICAgJ0xhYmVsIHRvIHNob3cgb24gdGhlIFkgYXhpcy4gSWYgbm90IHNwZWNpZmllZCwgY29ycmVzcG9uZGluZyBkYXRhIGNvbHVtbiBuYW1lIGlzIHVzZWQnLCBudWxsYWJsZTogdHJ1ZX0pLFxuICBERy5Qcm9wZXJ0eS5qcygnbG9nWCcsIERHLlRZUEUuQk9PTCwge2Rlc2NyaXB0aW9uOiAnV2hldGhlciB0aGUgWCBheGlzIHNob3VsZCBiZSBsb2dhcml0aG1pYycsIGRlZmF1bHRWYWx1ZTogZmFsc2V9KSxcbiAgREcuUHJvcGVydHkuanMoJ2xvZ1knLCBERy5UWVBFLkJPT0wsIHtkZXNjcmlwdGlvbjogJ1doZXRoZXIgdGhlIFkgYXhpcyBzaG91bGQgYmUgbG9nYXJpdGhtaWMnLCBkZWZhdWx0VmFsdWU6IGZhbHNlfSksXG4gIERHLlByb3BlcnR5LmpzKCdhbGxvd1haZXJvZXMnLCBERy5UWVBFLkJPT0wsIHtkZXNjcmlwdGlvbjogJ1doZXRoZXIgeCB6ZXJvZXMgYWxsb3dlZCBmb3IgbG9nYXJpdGhtaWMgZGF0YSBvciBub3QnLCBkZWZhdWx0VmFsdWU6IHRydWV9KSxcbiAgREcuUHJvcGVydHkuanMoJ21lcmdlU2VyaWVzJywgREcuVFlQRS5CT09MLCB7ZGVzY3JpcHRpb246ICdNZXJnZXMgYWxsIHNlcmllcyB3aXRoaW4gb25lIGNlbGwgaW50byBvbmUgc2VyaWVzJywgZGVmYXVsdFZhbHVlOiBmYWxzZX0pLFxuICBERy5Qcm9wZXJ0eS5qcygnc2hvd0NvbHVtbkxhYmVsJywgREcuVFlQRS5CT09MLCB7ZGVzY3JpcHRpb246ICdXaGV0aGVyIHRvIHNob3cgdGhlIGNvbHVtbiBsYWJlbCBpbiB0aGUgbGVnZW5kIG9yIG5vdCcsIGRlZmF1bHRWYWx1ZTogZmFsc2V9KSxcbiAgREcuUHJvcGVydHkuanMoJ3Nob3dTdGF0aXN0aWNzJywgREcuVFlQRS5TVFJJTkdfTElTVCwge2Rlc2NyaXB0aW9uOiAnV2hldGhlciBzcGVjaWZpYyBzdGF0aXN0aWNzIHNob3VsZCBiZSByZW5kZXJlZCcsXG4gICAgY2hvaWNlczogc3RhdGlzdGljc1Byb3BlcnRpZXMubWFwKChmcnApID0+IGZycC5uYW1lKSwgaW5wdXRUeXBlOiAnTXVsdGlDaG9pY2UnLFxuICAgIC8vQHRzLWlnbm9yZVxuICAgIGZyaWVuZGx5TmFtZTogJ1N0YXRpc3RpY3MnfSksXG5dO1xuXG4vKiogUHJvcGVydGllcyB0aGF0IGRlc2NyaWJlIHtAbGluayBJRml0U2VyaWVzT3B0aW9uc30uIFVzZWZ1bCBmb3IgZWRpdGluZywgaW5pdGlhbGl6YXRpb24sIHRyYW5zZm9ybWF0aW9ucywgZXRjLiAqL1xuZXhwb3J0IGNvbnN0IGZpdFNlcmllc1Byb3BlcnRpZXM6IERHLlByb3BlcnR5W10gPSBbXG4gIERHLlByb3BlcnR5LmpzKCdmaXRGdW5jdGlvbicsIERHLlRZUEUuU1RSSU5HLFxuICAgIHtjYXRlZ29yeTogJ0ZpdHRpbmcnLCBjaG9pY2VzOiBPYmplY3Qua2V5cyhmaXRGdW5jdGlvbnMpLCBkZWZhdWx0VmFsdWU6ICdzaWdtb2lkJ30pLFxuICBERy5Qcm9wZXJ0eS5qcygncG9pbnRDb2xvcicsIERHLlRZUEUuU1RSSU5HLFxuICAgIHtjYXRlZ29yeTogJ1JlbmRlcmluZycsIG51bGxhYmxlOiB0cnVlLCBpbnB1dFR5cGU6ICdDb2xvcid9KSxcbiAgREcuUHJvcGVydHkuanMoJ2ZpdExpbmVDb2xvcicsIERHLlRZUEUuU1RSSU5HLFxuICAgIHtjYXRlZ29yeTogJ1JlbmRlcmluZycsIG51bGxhYmxlOiB0cnVlLCBpbnB1dFR5cGU6ICdDb2xvcid9KSxcbiAgREcuUHJvcGVydHkuanMoJ291dGxpZXJDb2xvcicsIERHLlRZUEUuU1RSSU5HLFxuICAgIHtjYXRlZ29yeTogJ1JlbmRlcmluZycsIG51bGxhYmxlOiB0cnVlLCBpbnB1dFR5cGU6ICdDb2xvcid9KSxcbiAgREcuUHJvcGVydHkuanMoJ2Vycm9yTW9kZWwnLCBERy5UWVBFLlNUUklORywge2NhdGVnb3J5OiAnRml0dGluZycsIGRlZmF1bHRWYWx1ZTogJ2NvbnN0YW50JyxcbiAgICBjaG9pY2VzOiBbJ2NvbnN0YW50JywgJ3Byb3BvcnRpb25hbCcsICdjb21iaW5lZCddLCBudWxsYWJsZTogZmFsc2V9KSxcbiAgREcuUHJvcGVydHkuanMoJ2Nvbm5lY3REb3RzJywgREcuVFlQRS5CT09MLCB7Y2F0ZWdvcnk6ICdGaXR0aW5nJywgZGVmYXVsdFZhbHVlOiBmYWxzZX0pLFxuICBERy5Qcm9wZXJ0eS5qcygnY2xpY2tUb1RvZ2dsZScsIERHLlRZUEUuQk9PTCwge2NhdGVnb3J5OiAnRml0dGluZycsIGRlc2NyaXB0aW9uOlxuICAgICdDbGljayBvbiBhIHBvaW50IHRvIG1hcmsgaXQgYXMgb3V0bGllciBhbmQgcmVmaXQnLCBudWxsYWJsZTogdHJ1ZSwgZGVmYXVsdFZhbHVlOiBmYWxzZX0pLFxuICBERy5Qcm9wZXJ0eS5qcygnc2hvd0ZpdExpbmUnLCBERy5UWVBFLkJPT0wsIHtjYXRlZ29yeTogJ0ZpdHRpbmcnLCBkZWZhdWx0VmFsdWU6IHRydWV9KSxcbiAgREcuUHJvcGVydHkuanMoJ3Nob3dQb2ludHMnLCBERy5UWVBFLlNUUklORywgLy8gcmV3cml0ZSBkZXNjcmlwdGlvblxuICAgIHtjYXRlZ29yeTogJ0ZpdHRpbmcnLCBkZXNjcmlwdGlvbjogJ1doZXRoZXIgcG9pbnRzL2NhbmRsZXN0aWNrcy9ub25lIHNob3VsZCBiZSByZW5kZXJlZCcsXG4gICAgICBkZWZhdWx0VmFsdWU6ICdwb2ludHMnLCBjaG9pY2VzOiBbJ3BvaW50cycsICdjYW5kbGVzdGlja3MnLCAnYm90aCddfSksXG4gIERHLlByb3BlcnR5LmpzKCdzaG93Q3VydmVDb25maWRlbmNlSW50ZXJ2YWwnLCBERy5UWVBFLkJPT0wsXG4gICAge2NhdGVnb3J5OiAnRml0dGluZycsIGRlc2NyaXB0aW9uOiAnV2hldGhlciBjb25maWRlbmNlIGludGVydmFscyBzaG91bGQgYmUgcmVuZGVyZWQnLCBkZWZhdWx0VmFsdWU6IGZhbHNlLFxuICAgICAgLy9AdHMtaWdub3JlXG4gICAgICBmcmllbmRseU5hbWU6ICdDb25maWRlbmNlIEludGVydmFsJ30pLFxuICBERy5Qcm9wZXJ0eS5qcygnbWFya2VyVHlwZScsIERHLlRZUEUuU1RSSU5HLCB7Y2F0ZWdvcnk6ICdSZW5kZXJpbmcnLCBkZWZhdWx0VmFsdWU6ICdjaXJjbGUnLFxuICAgIGNob2ljZXM6IFsnYXN0ZXJpc2snLCAnY2lyY2xlJywgJ2Nyb3NzIGJvcmRlcicsICdkaWFtb25kJywgJ3NxdWFyZScsICdzdGFyJyxcbiAgICAgICd0cmlhbmdsZSBib3R0b20nLCAndHJpYW5nbGUgbGVmdCcsICd0cmlhbmdsZSByaWdodCcsICd0cmlhbmdsZSB0b3AnXSwgbnVsbGFibGU6IGZhbHNlfSksXG4gIERHLlByb3BlcnR5LmpzKCdsaW5lU3R5bGUnLCBERy5UWVBFLlNUUklORywge2NhdGVnb3J5OiAnUmVuZGVyaW5nJywgZGVmYXVsdFZhbHVlOiAnc29saWQnLFxuICAgIGNob2ljZXM6IFsnc29saWQnLCAnZG90dGVkJywgJ2Rhc2hlZCcsICdkYXNoZG90dGVkJ10sIG51bGxhYmxlOiBmYWxzZX0pLFxuICBERy5Qcm9wZXJ0eS5qcygnZHJvcGxpbmVzJywgREcuVFlQRS5TVFJJTkdfTElTVCwge2Rlc2NyaXB0aW9uOiAnV2hldGhlciBzcGVjaWZpYyBkcm9wbGluZXMgc2hvdWxkIGJlIHJlbmRlcmVkJyxcbiAgICBjaG9pY2VzOiBEUk9QTElORVMsIGlucHV0VHlwZTogJ011bHRpQ2hvaWNlJ30pLFxuICBERy5Qcm9wZXJ0eS5qcygnY29sdW1uTmFtZScsIERHLlRZUEUuU1RSSU5HLCB7ZGVzY3JpcHRpb246ICdDb2x1bW4gbmFtZSB3aGVyZSB0aGUgc2VyaWVzIGlzIHN0b3JlZCcsIGRlZmF1bHRWYWx1ZTogJyd9KSxcbl07XG5cbmV4cG9ydCBjb25zdCBGSVRfRlVOQ1RJT05fU0lHTU9JRCA9ICdzaWdtb2lkJztcbmV4cG9ydCBjb25zdCBGSVRfRlVOQ1RJT05fTElORUFSID0gJ2xpbmVhcic7XG5leHBvcnQgY29uc3QgRklUX0ZVTkNUSU9OX0xPR19MSU5FQVIgPSAnbG9nLWxpbmVhcic7XG5cbmV4cG9ydCBjb25zdCBGSVRfU1RBVFNfUlNRVUFSRUQgPSAnclNxdWFyZWQnO1xuZXhwb3J0IGNvbnN0IEZJVF9TVEFUU19BVUMgPSAnYXVjJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldE9yQ3JlYXRlRml0RnVuY3Rpb24oc2VyaWVzRml0RnVuYzogc3RyaW5nIHwgSUZpdEZ1bmN0aW9uRGVzY3JpcHRpb24pOiBGaXRGdW5jdGlvbiB7XG4gIGlmICh0eXBlb2Ygc2VyaWVzRml0RnVuYyA9PT0gJ3N0cmluZycpXG4gICAgcmV0dXJuIGZpdEZ1bmN0aW9uc1tzZXJpZXNGaXRGdW5jXTtcbiAgZWxzZSBpZiAoIWZpdEZ1bmN0aW9uc1tzZXJpZXNGaXRGdW5jLm5hbWVdKSB7XG4gICAgY29uc3QgbmFtZSA9IHNlcmllc0ZpdEZ1bmMubmFtZTtcbiAgICBjb25zdCBwYXJhbU5hbWVzID0gc2VyaWVzRml0RnVuYy5wYXJhbWV0ZXJOYW1lcztcbiAgICBjb25zdCBmaXRGdW5jdGlvblBhcnRzID0gc2VyaWVzRml0RnVuYy5mdW5jdGlvbi5zcGxpdCgnPT4nKS5tYXAoKGVsZW0pID0+IGVsZW0udHJpbSgpKTtcbiAgICBjb25zdCBnZXRJbml0UGFyYW1zUGFydHMgPSBzZXJpZXNGaXRGdW5jLmdldEluaXRpYWxQYXJhbWV0ZXJzLnNwbGl0KCc9PicpLm1hcCgoZWxlbSkgPT4gZWxlbS50cmltKCkpO1xuICAgIGNvbnN0IGZpdEZ1bmN0aW9uID0gbmV3IEZ1bmN0aW9uKGZpdEZ1bmN0aW9uUGFydHNbMF0uc2xpY2UoMSwgZml0RnVuY3Rpb25QYXJ0c1swXS5sZW5ndGggLSAxKSxcbiAgICAgIGAke2ZpdEZ1bmN0aW9uUGFydHNbMV0uaW5jbHVkZXMoJzsnKSA/ICcnIDogJ3JldHVybiAnfSR7Zml0RnVuY3Rpb25QYXJ0c1sxXX1gKTtcbiAgICBjb25zdCBnZXRJbml0UGFyYW1zRnVuYyA9IG5ldyBGdW5jdGlvbihnZXRJbml0UGFyYW1zUGFydHNbMF0uc2xpY2UoMSwgZ2V0SW5pdFBhcmFtc1BhcnRzWzBdLmxlbmd0aCAtIDEpLFxuICAgICAgYHJldHVybiAke2dldEluaXRQYXJhbXNQYXJ0c1sxXX1gKTtcbiAgICBjb25zdCBmaXRGdW5jID0gbmV3IEpzRnVuY3Rpb24obmFtZSwgKGZpdEZ1bmN0aW9uIGFzIChwYXJhbXM6IEZsb2F0MzJBcnJheSwgeDogbnVtYmVyKSA9PiBudW1iZXIpLFxuICAgICAgKGdldEluaXRQYXJhbXNGdW5jIGFzICh4OiBudW1iZXJbXSwgeTogbnVtYmVyW10pID0+IEZsb2F0MzJBcnJheSksIHBhcmFtTmFtZXMpO1xuICAgIGZpdEZ1bmN0aW9uc1tuYW1lXSA9IGZpdEZ1bmM7XG4gIH1cblxuICByZXR1cm4gZml0RnVuY3Rpb25zW3Nlcmllc0ZpdEZ1bmMubmFtZV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaXREYXRhKGRhdGE6IHt4OiBudW1iZXJbXSwgeTogbnVtYmVyW119LCBmaXRGdW5jdGlvbjogRml0RnVuY3Rpb24sIGVycm9yTW9kZWw6IEZpdEVycm9yTW9kZWxUeXBlLFxuICBwYXJhbWV0ZXJCb3VuZHM/OiBGaXRQYXJhbUJvdW5kc1tdKTogRml0Q3VydmUge1xuICBjb25zdCBjdXJ2ZUZ1bmN0aW9uID0gZml0RnVuY3Rpb24ueTtcbiAgbGV0IHBhcmFtVmFsdWVzID0gZml0RnVuY3Rpb24uZ2V0SW5pdGlhbFBhcmFtZXRlcnMoZGF0YS54LCBkYXRhLnkpO1xuXG4gIGNvbnN0IG9mID0gb2JqZWN0aXZlRmFjdG9yeShjdXJ2ZUZ1bmN0aW9uLCBkYXRhLCBlcnJvck1vZGVsKTtcbiAgbGV0IGJvdHRvbVBhcmFtQm91bmRzID0gbmV3IEZsb2F0MzJBcnJheShmaXRGdW5jdGlvbi5wYXJhbWV0ZXJOYW1lcy5sZW5ndGgpO1xuICBsZXQgdG9wUGFyYW1Cb3VuZHMgPSBuZXcgRmxvYXQzMkFycmF5KGZpdEZ1bmN0aW9uLnBhcmFtZXRlck5hbWVzLmxlbmd0aCk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZml0RnVuY3Rpb24ucGFyYW1ldGVyTmFtZXMubGVuZ3RoOyBpKyspIHtcbiAgICBib3R0b21QYXJhbUJvdW5kc1tpXSA9IHBhcmFtVmFsdWVzW2ldID09PSAwID8gLTEgOiBwYXJhbVZhbHVlc1tpXSAtIE1hdGguYWJzKHBhcmFtVmFsdWVzW2ldICogMC41KTtcbiAgICB0b3BQYXJhbUJvdW5kc1tpXSA9IHBhcmFtVmFsdWVzW2ldID09PSAwID8gMSA6IHBhcmFtVmFsdWVzW2ldICsgTWF0aC5hYnMocGFyYW1WYWx1ZXNbaV0gKiAwLjUpO1xuICB9XG4gIGlmIChwYXJhbWV0ZXJCb3VuZHMgJiYgcGFyYW1ldGVyQm91bmRzLmxlbmd0aCAhPT0gMCkge1xuICAgIGJvdHRvbVBhcmFtQm91bmRzID0gbmV3IEZsb2F0MzJBcnJheShwYXJhbWV0ZXJCb3VuZHMubGVuZ3RoKTtcbiAgICBib3R0b21QYXJhbUJvdW5kcy5zZXQocGFyYW1ldGVyQm91bmRzLm1hcCgocGIpID0+IHBiLm1pbiEpKTtcbiAgICB0b3BQYXJhbUJvdW5kcyA9IG5ldyBGbG9hdDMyQXJyYXkocGFyYW1ldGVyQm91bmRzLmxlbmd0aCk7XG4gICAgdG9wUGFyYW1Cb3VuZHMuc2V0KHBhcmFtZXRlckJvdW5kcy5tYXAoKHBiKSA9PiBwYi5tYXghKSk7XG4gIH1cblxuICBjb25zdCBvcHRpbWl6YXRpb24gPSBwZXJmb3JtTmVsZGVyTWVhZE9wdGltaXphdGlvbihvZiwgYm90dG9tUGFyYW1Cb3VuZHMsIHRvcFBhcmFtQm91bmRzLCB7XG4gICAgdG9sZXJhbmNlOiBORUxERVJfTUVBRF9ERUZBVUxUUy5UT0xFUkFOQ0UsXG4gICAgbWF4SXRlcjogTkVMREVSX01FQURfREVGQVVMVFMuTUFYX0lURVIsXG4gICAgbm9uWmVyb1BhcmFtOiBORUxERVJfTUVBRF9ERUZBVUxUUy5OT05fWkVST19QQVJBTSxcbiAgICBpbml0aWFsU2NhbGU6IE5FTERFUl9NRUFEX0RFRkFVTFRTLklOSVRJQUxfU0NBTEUsXG4gICAgc2NhbGVSZWZsZWN0aW9uOiBORUxERVJfTUVBRF9ERUZBVUxUUy5TQ0FMRV9SRUZMRUNUSU9OLFxuICAgIHNjYWxlRXhwYW5zaW9uOiBORUxERVJfTUVBRF9ERUZBVUxUUy5TQ0FMRV9FWFBBTlNJT04sXG4gICAgc2NhbGVDb250cmFjdGlvbjogTkVMREVSX01FQURfREVGQVVMVFMuU0NBTEVfQ09OVFJBQ1RJT04sXG4gIH0sIDEsIHBhcmFtVmFsdWVzKTtcblxuICBwYXJhbVZhbHVlcyA9IG9wdGltaXphdGlvbi5leHRyZW11bXNbMF0ucG9pbnQ7XG4gIGNvbnN0IGZpdHRlZEN1cnZlID0gZ2V0Rml0dGVkQ3VydmUoY3VydmVGdW5jdGlvbiwgcGFyYW1WYWx1ZXMpO1xuXG4gIHJldHVybiB7XG4gICAgZml0dGVkQ3VydmU6IGZpdHRlZEN1cnZlLFxuICAgIHBhcmFtZXRlcnM6IHBhcmFtVmFsdWVzLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rml0dGVkQ3VydmUoY3VydmVGdW5jdGlvbjogKHBhcmFtczogRmxvYXQzMkFycmF5LCB4OiBudW1iZXIpID0+IG51bWJlciwgcGFyYW1WYWx1ZXM6IEZsb2F0MzJBcnJheSk6XG4gKHg6IG51bWJlcikgPT4gbnVtYmVyIHtcbiAgcmV0dXJuICh4OiBudW1iZXIpID0+IHtcbiAgICByZXR1cm4gY3VydmVGdW5jdGlvbihwYXJhbVZhbHVlcywgeCk7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDdXJ2ZUNvbmZpZGVuY2VJbnRlcnZhbHMoZGF0YToge3g6IG51bWJlcltdLCB5OiBudW1iZXJbXX0sIHBhcmFtVmFsdWVzOiBGbG9hdDMyQXJyYXksXG4gIGN1cnZlRnVuY3Rpb246IChwYXJhbXM6IEZsb2F0MzJBcnJheSwgeDogbnVtYmVyKSA9PiBudW1iZXIsIGNvbmZpZGVuY2VMZXZlbDogbnVtYmVyID0gMC4wNSwgZXJyb3JNb2RlbDogRml0RXJyb3JNb2RlbFR5cGUpOlxuICBGaXRDb25maWRlbmNlSW50ZXJ2YWxzIHtcbiAgY29uc3QgZXJyb3IgPSBnZXRTaWdtYShjdXJ2ZUZ1bmN0aW9uLCBkYXRhLCBlcnJvck1vZGVsLCBwYXJhbVZhbHVlcyk7XG4gIGNvbnN0IHF1YW50aWxlID0galN0YXQubm9ybWFsLmludigxIC0gY29uZmlkZW5jZUxldmVsLzIsIDAsIDEpO1xuXG4gIGNvbnN0IHRvcCA9ICh4OiBudW1iZXIpID0+IHtcbiAgICBjb25zdCB2YWx1ZSA9IGN1cnZlRnVuY3Rpb24ocGFyYW1WYWx1ZXMsIHgpO1xuICAgIHJldHVybiB2YWx1ZSArIHF1YW50aWxlICogKGVycm9yLnNpZ21hQSArIE1hdGguYWJzKHZhbHVlKSAqIGVycm9yLnNpZ21hQik7XG4gIH07XG5cbiAgY29uc3QgYm90dG9tID0gKHg6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IHZhbHVlID0gY3VydmVGdW5jdGlvbihwYXJhbVZhbHVlcywgeCk7XG4gICAgcmV0dXJuIHZhbHVlIC0gcXVhbnRpbGUgKiAoZXJyb3Iuc2lnbWFBICsgTWF0aC5hYnModmFsdWUpICogZXJyb3Iuc2lnbWFCKTtcbiAgfTtcblxuICByZXR1cm4ge2NvbmZpZGVuY2VUb3A6IHRvcCwgY29uZmlkZW5jZUJvdHRvbTogYm90dG9tfTtcbn1cblxuLy8gVE9ETzogZm9yIGxpbmVhciAtIHNsb3BlIC0gQSwgaW50ZXJjZXB0WSAtIEJcbmV4cG9ydCBmdW5jdGlvbiBnZXRTdGF0aXN0aWNzKGRhdGE6IHt4OiBudW1iZXJbXSwgeTogbnVtYmVyW119LCBwYXJhbVZhbHVlczogRmxvYXQzMkFycmF5LFxuICBjdXJ2ZUZ1bmN0aW9uOiAocGFyYW1zOiBGbG9hdDMyQXJyYXksIHg6IG51bWJlcikgPT4gbnVtYmVyLCBzdGF0aXN0aWNzOiBib29sZWFuID0gdHJ1ZSk6IEZpdFN0YXRpc3RpY3Mge1xuICBjb25zdCBmaXR0ZWRDdXJ2ZSA9IGdldEZpdHRlZEN1cnZlKGN1cnZlRnVuY3Rpb24sIHBhcmFtVmFsdWVzKTtcblxuICByZXR1cm4ge1xuICAgIHJTcXVhcmVkOiBzdGF0aXN0aWNzID8gZ2V0RGV0Q29lZmYoZml0dGVkQ3VydmUsIGRhdGEpIDogdW5kZWZpbmVkLFxuICAgIGF1Yzogc3RhdGlzdGljcyA/IGdldEF1YyhmaXR0ZWRDdXJ2ZSwgZGF0YSkgOiB1bmRlZmluZWQsXG4gICAgaW50ZXJjZXB0WDogcGFyYW1WYWx1ZXNbMl0sXG4gICAgaW50ZXJjZXB0WTogZml0dGVkQ3VydmUocGFyYW1WYWx1ZXNbMl0pLFxuICAgIHNsb3BlOiBwYXJhbVZhbHVlc1sxXSxcbiAgICB0b3A6IHBhcmFtVmFsdWVzWzBdLFxuICAgIGJvdHRvbTogcGFyYW1WYWx1ZXNbM10sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbnZlcnRlZEZ1bmN0aW9ucyhkYXRhOiB7eDogbnVtYmVyW10sIHk6IG51bWJlcltdfSwgcGFyYW1WYWx1ZXM6IG51bWJlcltdLFxuICBjb25maWRlbmNlTGV2ZWw6IG51bWJlciA9IDAuMDUsIHN0YXRpc3RpY3M6IGJvb2xlYW4gPSB0cnVlKTogRml0SW52ZXJ0ZWRGdW5jdGlvbnMgfCBudWxsIHtcbiAgY29uc3Qgc3R1ZGVudFEgPSBqU3RhdC5zdHVkZW50dC5pbnYoMSAtIGNvbmZpZGVuY2VMZXZlbCAvIDIsIGRhdGEueC5sZW5ndGggLSBwYXJhbVZhbHVlcy5sZW5ndGgpO1xuXG4gIGxldCBpbnY6ICh5OiBudW1iZXIpID0+IG51bWJlciA9ICh5OiBudW1iZXIpID0+IHtcbiAgICByZXR1cm4gMDtcbiAgfTtcbiAgbGV0IGludlRvcDogKHk6IG51bWJlcikgPT4gbnVtYmVyID0gKHk6IG51bWJlcikgPT4ge1xuICAgIHJldHVybiAwO1xuICB9O1xuICBsZXQgaW52Qm90dG9tOiAoeTogbnVtYmVyKSA9PiBudW1iZXIgPSAoeTogbnVtYmVyKSA9PiB7XG4gICAgcmV0dXJuIDA7XG4gIH07XG5cbiAgaWYgKHN0YXRpc3RpY3MpIHtcbiAgICBpbnYgPSAoeTogbnVtYmVyKSA9PiB7XG4gICAgICAvL3Nob3VsZCBjaGVjayBpZiBtb3JlIHRoYW4gYm90dG9tIGFuZCBsZXNzIHRoYW4gdG9wXG4gICAgICByZXR1cm4gcGFyYW1WYWx1ZXNbMl0gLyBNYXRoLnBvdygocGFyYW1WYWx1ZXNbMF0gLSB5KSAvICh5IC0gcGFyYW1WYWx1ZXNbM10pLCAxIC8gcGFyYW1WYWx1ZXNbMV0pO1xuICAgIH07XG5cbiAgICBjb25zdCBlcnJvciA9IGdldEludkVycm9yKGludiwgZGF0YSk7XG5cbiAgICBpbnZUb3AgPSAoeTogbnVtYmVyKSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGludih5KTtcbiAgICAgIHJldHVybiB2YWx1ZSArIHN0dWRlbnRRICogZXJyb3IgLyBNYXRoLnNxcnQoZGF0YS55Lmxlbmd0aCk7XG4gICAgfTtcblxuICAgIGludkJvdHRvbSA9ICh5OiBudW1iZXIpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gaW52KHkpO1xuICAgICAgcmV0dXJuIHZhbHVlIC0gc3R1ZGVudFEgKiBlcnJvciAvIE1hdGguc3FydChkYXRhLnkubGVuZ3RoKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGludmVydGVkOiBpbnYsXG4gICAgICBpbnZlcnRlZFRvcDogaW52VG9wLFxuICAgICAgaW52ZXJ0ZWRCb3R0b206IGludkJvdHRvbSxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaWdtb2lkKHBhcmFtczogRmxvYXQzMkFycmF5LCB4OiBudW1iZXIpOiBudW1iZXIge1xuICBjb25zdCBBID0gcGFyYW1zWzBdO1xuICBjb25zdCBCID0gcGFyYW1zWzFdO1xuICBjb25zdCBDID0gcGFyYW1zWzJdO1xuICBjb25zdCBEID0gcGFyYW1zWzNdO1xuICByZXR1cm4gKEQgKyAoQSAtIEQpIC8gKDEgKyBNYXRoLnBvdygxMCwgKHggLSBDKSAqIEIpKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsaW5lYXIocGFyYW1zOiBGbG9hdDMyQXJyYXksIHg6IG51bWJlcik6IG51bWJlciB7XG4gIGNvbnN0IEEgPSBwYXJhbXNbMF07XG4gIGNvbnN0IEIgPSBwYXJhbXNbMV07XG4gIHJldHVybiBBICogeCArIEI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2dMaW5lYXIocGFyYW1zOiBGbG9hdDMyQXJyYXksIHg6IG51bWJlcik6IG51bWJlciB7XG4gIGNvbnN0IEEgPSBwYXJhbXNbMF07XG4gIGNvbnN0IEIgPSBwYXJhbXNbMV07XG4gIHJldHVybiBBICogTWF0aC5sb2coeCArIDEpICsgQjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEF1YyhmaXR0ZWRDdXJ2ZTogKHg6IG51bWJlcikgPT4gbnVtYmVyLCBkYXRhOiB7eDogbnVtYmVyW10sIHk6IG51bWJlcltdfSk6IG51bWJlciB7XG4gIGxldCBhdWMgPSAwO1xuICBjb25zdCBtaW4gPSBNYXRoLm1pbiguLi5kYXRhLngpO1xuICBjb25zdCBtYXggPSBNYXRoLm1heCguLi5kYXRhLngpO1xuICBjb25zdCBpbnRlZ3JhdGlvblN0ZXAgPSAobWF4IC0gbWluKSAvIDEwMDA7XG4gIGZvciAobGV0IHggPSBtaW47IHggPCBtYXg7IHgrPSBpbnRlZ3JhdGlvblN0ZXApXG4gICAgYXVjICs9IGludGVncmF0aW9uU3RlcCAqIGZpdHRlZEN1cnZlKHgpO1xuXG4gIHJldHVybiBhdWM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZXRDb2VmZihmaXR0ZWRDdXJ2ZTogKHg6IG51bWJlcikgPT4gbnVtYmVyLCBkYXRhOiB7eDogbnVtYmVyW10sIHk6IG51bWJlcltdfSk6IG51bWJlciB7XG4gIGxldCBzc1JlcyA9IDA7XG4gIGxldCBzc1RvdCA9IDA7XG4gIGNvbnN0IHlNZWFuID0galN0YXQubWVhbihkYXRhLnkpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEueC5sZW5ndGg7IGkrKykge1xuICAgIHNzUmVzICs9IE1hdGgucG93KGRhdGEueVtpXSAtIGZpdHRlZEN1cnZlKGRhdGEueFtpXSksIDIpO1xuICAgIHNzVG90ICs9IE1hdGgucG93KGRhdGEueVtpXSAtIHlNZWFuLCAyKTtcbiAgfVxuXG4gIHJldHVybiAxIC0gc3NSZXMgLyBzc1RvdDtcbn1cblxuZnVuY3Rpb24gZ2V0SW52RXJyb3IodGFyZ2V0RnVuYzogKHk6IG51bWJlcikgPT4gbnVtYmVyLCBkYXRhOiB7eTogbnVtYmVyW10sIHg6IG51bWJlcltdfSk6IG51bWJlciB7XG4gIGxldCBzaWdtYSA9IDA7XG4gIGxldCBzaWdtYVNxID0gMDtcbiAgY29uc3QgcmVzaWR1ZXNTcXVhcmVzID0gbmV3IEZsb2F0MzJBcnJheShkYXRhLnkubGVuZ3RoKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLnkubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBvYnMgPSBkYXRhLnhbaV07XG4gICAgY29uc3QgcHJlZCA9IHRhcmdldEZ1bmMoZGF0YS55W2ldKTtcbiAgICByZXNpZHVlc1NxdWFyZXNbaV0gPSBNYXRoLnBvdyhvYnMgLSBwcmVkLCAyKTtcbiAgfVxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzaWR1ZXNTcXVhcmVzLmxlbmd0aDsgaSsrKVxuICAgIHNpZ21hU3EgKz0gcmVzaWR1ZXNTcXVhcmVzW2ldO1xuXG4gIHNpZ21hU3EgLz0gcmVzaWR1ZXNTcXVhcmVzLmxlbmd0aDtcbiAgc2lnbWEgPSBNYXRoLnNxcnQoc2lnbWFTcSk7XG5cbiAgcmV0dXJuIHNpZ21hO1xufVxuXG5mdW5jdGlvbiBvYmplY3RpdmVGYWN0b3J5KHRhcmdldEZ1bmM6IChwYXJhbXM6IEZsb2F0MzJBcnJheSwgeDogbnVtYmVyKSA9PiBudW1iZXIsXG4gIGRhdGE6IHt5OiBudW1iZXJbXSwgeDogbnVtYmVyW119LCBlcnJvck1vZGVsOiBGaXRFcnJvck1vZGVsVHlwZSk6IChwYXJhbXM6IEZsb2F0MzJBcnJheSkgPT4gbnVtYmVyIHtcbiAgcmV0dXJuIChwYXJhbXM6IEZsb2F0MzJBcnJheSkgPT4ge1xuICAgIGxldCBsaWtlbGlob29kID0gMDtcbiAgICBsZXQgc2lnbWFBID0gMDtcbiAgICBsZXQgc2lnbWFCID0gMDtcblxuICAgIGNvbnN0IG9icyA9IGRhdGEueTtcbiAgICBjb25zdCBwcmVkID0gZGF0YS54Lm1hcCgoeCkgPT4gdGFyZ2V0RnVuYyhwYXJhbXMsIHgpKTtcbiAgICBjb25zdCByZXNpZHVhbHMgPSBvYnMubWFwKChvYnMsIGkpID0+IG9icyAtIHByZWRbaV0pO1xuICAgIGNvbnN0IHJlc2lkdWVzU3F1YXJlcyA9IHJlc2lkdWFscy5tYXAoKHJlcykgPT4gTWF0aC5wb3cocmVzLCAyKSk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlc2lkdWVzU3F1YXJlcy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKFtGaXRFcnJvck1vZGVsLkNPTlNUQU5ULCBGaXRFcnJvck1vZGVsLkNPTUJJTkVEXS5pbmNsdWRlcyhlcnJvck1vZGVsKSlcbiAgICAgICAgc2lnbWFBICs9IHJlc2lkdWVzU3F1YXJlc1tpXTtcbiAgICAgIGVsc2UgaWYgKGVycm9yTW9kZWwgPT09IEZpdEVycm9yTW9kZWwuUFJPUE9SVElPTkFMKVxuICAgICAgICBzaWdtYUIgKz0gcmVzaWR1ZXNTcXVhcmVzW2ldIC8gKHByZWRbaV0gKiBwcmVkW2ldKTtcbiAgICB9XG4gICAgc2lnbWFBID0gTWF0aC5zcXJ0KHNpZ21hQSAvIHJlc2lkdWVzU3F1YXJlcy5sZW5ndGgpO1xuICAgIHNpZ21hQiA9IE1hdGguc3FydChzaWdtYUIgLyByZXNpZHVlc1NxdWFyZXMubGVuZ3RoKTtcblxuICAgIGlmIChlcnJvck1vZGVsID09PSBGaXRFcnJvck1vZGVsLkNPTUJJTkVEKVxuICAgICAgKHtzaWdtYUEsIHNpZ21hQn0gPSBnZXRTaWdtYXNGb3JDb21iaW5lZEVycm9yTW9kZWwoc2lnbWFBLCBzaWdtYUIsIHJlc2lkdWVzU3F1YXJlcywgcHJlZCkpO1xuXG4gICAgY29uc3Qgc2lnbWFTcUk6IG51bWJlcltdID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXNpZHVlc1NxdWFyZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHNpZ21hU3FJW2ldID0gTWF0aC5wb3coc2lnbWFBICsgc2lnbWFCICogcHJlZFtpXSwgMik7XG4gICAgICBsaWtlbGlob29kICs9IHJlc2lkdWVzU3F1YXJlc1tpXSAvIHNpZ21hU3FJW2ldICsgTWF0aC5sb2coMiAqIE1hdGguUEkgKiBzaWdtYVNxSVtpXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxpa2VsaWhvb2Q7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldFNpZ21hKHRhcmdldEZ1bmM6IChwYXJhbXM6IEZsb2F0MzJBcnJheSwgeDogbnVtYmVyKSA9PiBudW1iZXIsXG4gIGRhdGE6IHt5OiBudW1iZXJbXSwgeDogbnVtYmVyW119LCBlcnJvck1vZGVsOiBGaXRFcnJvck1vZGVsVHlwZSwgcGFyYW1zOiBGbG9hdDMyQXJyYXkpOiB7c2lnbWFBOiBudW1iZXIsIHNpZ21hQjogbnVtYmVyfSB7XG4gIGxldCBzaWdtYUEgPSAwO1xuICBsZXQgc2lnbWFCID0gMDtcblxuICBjb25zdCBvYnMgPSBkYXRhLnk7XG4gIGNvbnN0IHByZWQgPSBkYXRhLngubWFwKCh4KSA9PiB0YXJnZXRGdW5jKHBhcmFtcywgeCkpO1xuICBjb25zdCByZXNpZHVhbHMgPSBvYnMubWFwKChvYnMsIGkpID0+IG9icyAtIHByZWRbaV0pO1xuICBjb25zdCByZXNpZHVlc1NxdWFyZXMgPSByZXNpZHVhbHMubWFwKChyZXMpID0+IE1hdGgucG93KHJlcywgMikpO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzaWR1ZXNTcXVhcmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKFtGaXRFcnJvck1vZGVsLkNPTlNUQU5ULCBGaXRFcnJvck1vZGVsLkNPTUJJTkVEXS5pbmNsdWRlcyhlcnJvck1vZGVsKSlcbiAgICAgIHNpZ21hQSArPSByZXNpZHVlc1NxdWFyZXNbaV07XG4gICAgZWxzZSBpZiAoZXJyb3JNb2RlbCA9PT0gRml0RXJyb3JNb2RlbC5QUk9QT1JUSU9OQUwpXG4gICAgICBzaWdtYUIgKz0gTWF0aC5wb3cocmVzaWR1YWxzW2ldIC8gTWF0aC5hYnMocHJlZFtpXSksIDIpO1xuICB9XG4gIHNpZ21hQSA9IE1hdGguc3FydChzaWdtYUEgLyByZXNpZHVlc1NxdWFyZXMubGVuZ3RoKTtcbiAgc2lnbWFCID0gTWF0aC5zcXJ0KHNpZ21hQiAvIHJlc2lkdWVzU3F1YXJlcy5sZW5ndGgpO1xuXG4gIGlmIChlcnJvck1vZGVsID09PSBGaXRFcnJvck1vZGVsLkNPTUJJTkVEKVxuICAgICh7c2lnbWFBLCBzaWdtYUJ9ID0gZ2V0U2lnbWFzRm9yQ29tYmluZWRFcnJvck1vZGVsKHNpZ21hQSwgc2lnbWFCLCByZXNpZHVlc1NxdWFyZXMsIHByZWQpKTtcblxuICByZXR1cm4ge3NpZ21hQSwgc2lnbWFCfTtcbn1cblxuZnVuY3Rpb24gZ2V0U2lnbWFzRm9yQ29tYmluZWRFcnJvck1vZGVsKHNpZ21hQTogbnVtYmVyLCBzaWdtYUI6IG51bWJlciwgcmVzaWR1ZXNTcXVhcmVzOiBudW1iZXJbXSwgcHJlZDogbnVtYmVyW10pOlxuICB7c2lnbWFBOiBudW1iZXIsIHNpZ21hQjogbnVtYmVyfSB7XG4gIGxldCBsaWtlbGlob29kQ29tYmluZWQgPSBOdW1iZXIuTUFYX1ZBTFVFO1xuICBsZXQgZmluYWxQcm9wb3J0aW9uID0gMDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPD0gMTA7IGkrKykge1xuICAgIGxldCBsaWtlbGlob29kQ29tYmluZWRMb2NhbCA9IDA7XG4gICAgY29uc3QgcHJvcG9ydGlvbiA9IGkgLyAxMDtcbiAgICBjb25zdCBzaWdtYUFDb21iaW5lZCA9IHNpZ21hQSAqIHByb3BvcnRpb247XG4gICAgY29uc3Qgc2lnbWFCQ29tYmluZWQgPSBzaWdtYUEgKiAoMSAtIHByb3BvcnRpb24pO1xuICAgIGNvbnN0IHNpZ21hU3FJQ29tYmluZWQ6IG51bWJlcltdID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXNpZHVlc1NxdWFyZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHNpZ21hU3FJQ29tYmluZWRbaV0gPSBNYXRoLnBvdyhzaWdtYUFDb21iaW5lZCArIHNpZ21hQkNvbWJpbmVkICogcHJlZFtpXSwgMik7XG4gICAgICBsaWtlbGlob29kQ29tYmluZWRMb2NhbCArPSByZXNpZHVlc1NxdWFyZXNbaV0gLyBzaWdtYVNxSUNvbWJpbmVkW2ldICsgTWF0aC5sb2coMiAqIE1hdGguUEkgKiBzaWdtYVNxSUNvbWJpbmVkW2ldKTtcbiAgICB9XG4gICAgaWYgKGxpa2VsaWhvb2RDb21iaW5lZExvY2FsIDwgbGlrZWxpaG9vZENvbWJpbmVkKSB7XG4gICAgICBsaWtlbGlob29kQ29tYmluZWQgPSBsaWtlbGlob29kQ29tYmluZWRMb2NhbDtcbiAgICAgIGZpbmFsUHJvcG9ydGlvbiA9IHByb3BvcnRpb247XG4gICAgfVxuICB9XG4gIHNpZ21hQiA9IHNpZ21hQSAqICgxIC0gZmluYWxQcm9wb3J0aW9uKTtcbiAgc2lnbWFBID0gc2lnbWFBICogZmluYWxQcm9wb3J0aW9uO1xuXG4gIHJldHVybiB7c2lnbWFBLCBzaWdtYUJ9O1xufVxuIl19
|
|
448
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml0LWN1cnZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZml0LWN1cnZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDRCQUE0QjtBQUM1QixvQ0FBb0M7QUFDcEMsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0QyxzQkFBc0I7QUFDdEIsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFDLDZCQUE2QixFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDNUUsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFHL0UsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHO0lBQzNCLFFBQVEsRUFBRSxVQUFVO0lBQ3BCLFlBQVksRUFBRSxjQUFjO0lBQzVCLFFBQVEsRUFBRSxVQUFVO0NBQ3JCLENBQUM7QUEwQ0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBb0JFO0FBRUYsTUFBTSxTQUFTLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQXFFM0IsNERBQTREO0FBQzVELE1BQU0sT0FBTyxZQUFZO0lBQXpCO1FBQ0UsaUJBQVksR0FBcUIsRUFBRSxDQUFDO1FBQ3BDLGtCQUFhLEdBQXNCLEVBQUUsQ0FBQyxDQUFFLDZEQUE2RDtRQUNyRyxXQUFNLEdBQWlCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0NBQUE7QUF5QkQsK0VBQStFO0FBRS9FLDRFQUE0RTtBQUM1RSxrQ0FBa0M7QUFDbEMsTUFBTSxPQUFnQixXQUFXO0NBS2hDO0FBRUQsZ0RBQWdEO0FBQ2hELE1BQU0sT0FBTyxjQUFlLFNBQVEsV0FBVztJQUM3QyxJQUFJLElBQUk7UUFDTixPQUFPLG1CQUFtQixDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsQ0FBQyxDQUFDLE1BQW9CLEVBQUUsQ0FBUztRQUMvQixPQUFPLE1B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IG5vLW11bHRpLXNwYWNlcyAqL1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbi8vQHRzLWlnbm9yZTogbm8gdHlwZXNcbmltcG9ydCAqIGFzIGpTdGF0IGZyb20gJ2pzdGF0JztcbmltcG9ydCB7cGVyZm9ybU5lbGRlck1lYWRPcHRpbWl6YXRpb259IGZyb20gJy4vZml0dGluZy1hbGdvcml0aG0vb3B0aW1pemVyJztcbmltcG9ydCB7TkVMREVSX01FQURfREVGQVVMVFN9IGZyb20gJy4vZml0dGluZy1hbGdvcml0aG0vb3B0aW1pemVyLW5lbGRlci1tZWFkJztcblxuXG5leHBvcnQgY29uc3QgRml0RXJyb3JNb2RlbCA9IHtcbiAgQ09OU1RBTlQ6ICdjb25zdGFudCcsXG4gIFBST1BPUlRJT05BTDogJ3Byb3BvcnRpb25hbCcsXG4gIENPTUJJTkVEOiAnY29tYmluZWQnLFxufTtcblxuZXhwb3J0IHR5cGUgRml0UGFyYW1Cb3VuZHMgPSB7XG4gIG1pbj86IG51bWJlcjtcbiAgbWF4PzogbnVtYmVyO1xufTtcblxuLyoqIEZpdCBmdW5jdGlvbiBkZXNjcmlwdGlvbi4gQXBwbGllcyB0byBjdXN0b20gdXNlciBmaXQgZnVuY3Rpb25zLlxuICogUmVxdWlyZXMgSlMgYXJyb3cgZnVuY3Rpb25zIGZvciB0aGUgZml0IGZ1bmN0aW9ucyBhbmQgaW5pdGlhbCBwYXJhbWV0ZXJzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBJRml0RnVuY3Rpb25EZXNjcmlwdGlvbiB7XG4gIG5hbWU6IHN0cmluZztcbiAgZnVuY3Rpb246IHN0cmluZztcbiAgZ2V0SW5pdGlhbFBhcmFtZXRlcnM6IHN0cmluZztcbiAgcGFyYW1ldGVyTmFtZXM6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgdHlwZSBGaXRDdXJ2ZSA9IHtcbiAgZml0dGVkQ3VydmU6ICh4OiBudW1iZXIpID0+IG51bWJlcjtcbiAgcGFyYW1ldGVyczogRmxvYXQzMkFycmF5O1xufTtcblxuZXhwb3J0IHR5cGUgRml0Q29uZmlkZW5jZUludGVydmFscyA9IHtcbiAgY29uZmlkZW5jZVRvcDogKHg6IG51bWJlcikgPT4gbnVtYmVyO1xuICBjb25maWRlbmNlQm90dG9tOiAoeDogbnVtYmVyKSA9PiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBGaXRTdGF0aXN0aWNzID0ge1xuICByU3F1YXJlZD86IG51bWJlcixcbiAgYXVjPzogbnVtYmVyLFxuICBpbnRlcmNlcHRYPzogbnVtYmVyLCAvLyBwYXJhbWV0ZXJzWzJdXG4gIGludGVyY2VwdFk/OiBudW1iZXIsIC8vIGZpdHRlZEN1cnZlW3BhcmFtZXRlcnNbMl1dXG4gIHNsb3BlPzogbnVtYmVyLCAvLyBwYXJhbWV0ZXJzWzFdXG4gIHRvcD86IG51bWJlciwgLy8gcGFyYW1ldGVyc1swXVxuICBib3R0b20/OiBudW1iZXIsIC8vIHBhcmFtZXRlcnNbM11cbn07XG5cbmV4cG9ydCB0eXBlIEZpdEludmVydGVkRnVuY3Rpb25zID0ge1xuICBpbnZlcnRlZDogKHk6IG51bWJlcikgPT4gbnVtYmVyLFxuICBpbnZlcnRlZFRvcDogKHk6IG51bWJlcikgPT4gbnVtYmVyLFxuICBpbnZlcnRlZEJvdHRvbTogKHk6IG51bWJlcikgPT4gbnVtYmVyLFxufTtcblxuLyoqXG4gKiAgRGF0YWdyb2sgY3VydmUgZml0dGluZ1xuICpcbiAqIC0gRml0dGluZzogY29tcHV0aW5nIHBhcmFtZXRlcnMgb2YgdGhlIHNwZWNpZmllZCBmdW5jdGlvbiB0byBiZXN0IGZpdCB0aGUgZGF0YVxuICogICAtIFVzZXMgQkZHUyBvcHRpbWl6YXRpb24gYWxnb3JpdGhtIChtdWx0aS10aHJlYWRpbmcgZm9yIHBlcmZvcm1hbmNlKS5cbiAqICAgICBGb3IgZG9zZS1yZXNwb25zZSBjdXJ2ZXMsIHdlIGFyZSB0eXBpY2FsbHkgZml0dGluZyB0aGUgc2lnbW9pZCBmdW5jdGlvblxuICogICAtIEFiaWxpdHkgdG8gZHluYW1pY2FsbHkgcmVnaXN0ZXIgY3VzdG9tIGZpdHRpbmcgZnVuY3Rpb25zXG4gKiAgICAgLSBBdXRvbWF0aWMgZml0IGZ1bmN0aW9uIGRldGVybWluYXRpb25cbiAqICAgICAtIENhY2hpbmcgb2YgY3VzdG9tIGZpdHRpbmcgZnVuY3Rpb25zXG4gKiAgIC0gQWJpbGl0eSB0byBnZXQgZml0dGluZyBwZXJmb3JtYW5jZSBjaGFyYWN0ZXJpc3RpY3MgKHItc3F1YXJlZCwgY2xhc3NpZmljYXRpb24sIGV0YylcbiAqIC0gRGVlcCBpbnRlZ3JhdGlvbiB3aXRoIHRoZSBEYXRhZ3JvayBncmlkXG4gKiAgIC0gRWl0aGVyIGZpdHRpbmcgb24gdGhlIGZseSwgb3IgdXNpbmcgdGhlIHN1cHBsaWVkIGZ1bmN0aW9uICsgcGFyYW1ldGVyc1xuICogICAtIE11bHRpcGxlIHNlcmllcyBpbiBvbmUgY2VsbFxuICogICAtIENhbmRsZXN0aWNrcywgY29uZmlkZW5jZSBpbnRlcnZhbHMsIGFuZCBkcm9wbGluZXMgZHJhd2luZ1xuICogICAtIEFiaWxpdHkgdG8gZGVmaW5lIGNoYXJ0LCBtYXJrZXIsIG9yIGZpdHRpbmcgb3B0aW9ucyAoc3VjaCBhcyBmaXQgZnVuY3Rpb24gb3IgbWFya2VyIGNvbG9yKVxuICogICAgIG9uIHRoZSBjb2x1bW4gbGV2ZWwsIHdpdGggdGhlIGFiaWxpdHkgdG8gb3ZlcnJpZGUgaXQgb24gYSBncmlkIGNlbGwgb3IgcG9pbnQgbGV2ZWxcbiAqICAgLSBDbGlja2luZyBhIHBvaW50IGluIGEgY2hhcnQgd2l0aGluIGEgZ3JpZCBtYWtlcyBpdCBhbiBvdXRsaWVyIC0+IGN1cnZlIGlzIHJlLWZpdHRlZCBvbiB0aGUgZmx5XG4gKiAgIC0gQWJpbGl0eSB0byBzcGVjaWZ5IGEgY2hhcnQgYXMgXCJyZWZlcmVuY2VcIiBzbyB0aGF0IGl0IGlzIHNob3duIG9uIGV2ZXJ5IG90aGVyIGNoYXJ0IGZvciBjb21wYXJpc29uXG4gKiAtIEFiaWxpdHkgdG8gb3ZlcmxheSBjdXJ2ZXMgZnJvbSBtdWx0aXBsZSBncmlkIGNlbGxzIChzcGVjaWFsIHZpZXdlcilcbiAqIC0gV29yayB3aXRoIHNlcmllcyBzdG9yZWQgaW4gbXVsdGlwbGUgZm9ybWF0cyAoYmluYXJ5IGZvciBwZXJmb3JtYW5jZSwganNvbiBmb3IgZmxleGliaWxpdHksIGV0YylcbiovXG5cbmNvbnN0IERST1BMSU5FUyA9IFsnSUM1MCddO1xuXG5leHBvcnQgdHlwZSBGaXRNYXJrZXJUeXBlID0gJ2FzdGVyaXNrJyB8ICdjaXJjbGUnIHwgJ2Nyb3NzIGJvcmRlcicgfCAnZGlhbW9uZCcgfCAnc3F1YXJlJyB8ICdzdGFyJyB8ICd0cmlhbmdsZSBib3R0b20nIHxcbiAgJ3RyaWFuZ2xlIGxlZnQnIHwgJ3RyaWFuZ2xlIHJpZ2h0JyB8ICd0cmlhbmdsZSB0b3AnO1xuXG5leHBvcnQgdHlwZSBGaXRPdXRsaWVyTWFya2VyVHlwZSA9ICdhc3RlcmlzaycgfCAnY2lyY2xlJyB8ICdjcm9zcyBib3JkZXInIHwgJ2RpYW1vbmQnIHwgJ291dGxpZXInIHwgJ3NxdWFyZScgfCAnc3RhcicgfFxuICAndHJpYW5nbGUgYm90dG9tJyB8ICd0cmlhbmdsZSBsZWZ0JyB8ICd0cmlhbmdsZSByaWdodCcgfCAndHJpYW5nbGUgdG9wJztcblxuZXhwb3J0IHR5cGUgRml0TGluZVN0eWxlID0gJ3NvbGlkJyB8ICdkb3R0ZWQnIHwgJ2Rhc2hlZCcgfCAnZGFzaGRvdHRlZCc7XG5cbmV4cG9ydCB0eXBlIEZpdEVycm9yTW9kZWxUeXBlID0gJ2NvbnN0YW50JyB8ICdwcm9wb3J0aW9uYWwnIHwgJ2NvbWJpbmVkJztcblxuLyoqIEEgcG9pbnQgaW4gdGhlIGZpdCBzZXJpZXMuIE9ubHkgeCBhbmQgeSBhcmUgcmVxdWlyZWQuIENhbiBvdmVycmlkZSBzb21lIGZpZWxkcyBkZWZpbmVkIGluIElGaXRTZXJpZXNPcHRpb25zLiAqL1xuZXhwb3J0IGludGVyZmFjZSBJRml0UG9pbnQge1xuICB4OiBudW1iZXI7XG4gIHk6IG51bWJlcjtcbiAgb3V0bGllcj86IGJvb2xlYW47ICAgICAgIC8vIGlmIHRydWUsIHJlbmRlcnMgYXMgJ3gnIGFuZCBnZXRzIGlnbm9yZWQgZm9yIGN1cnZlIGZpdHRpbmdcbiAgY29sb3I/OiBzdHJpbmc7ICAgICAgICAgIC8vIG92ZXJyaWRlcyB0aGUgbWFya2VyIGNvbG9yIGRlZmluZWQgaW4gSUZpdFNlcmllc09wdGlvbnNcbiAgb3V0bGllckNvbG9yPzogc3RyaW5nOyAgIC8vIG92ZXJyaWRlcyB0aGUgb3V0bGllciBjb2xvciBkZWZpbmVkIGluIElGaXRTZXJpZXNPcHRpb25zXG4gIG1hcmtlcj86IEZpdE1hcmtlclR5cGU7ICAvLyBvdmVycmlkZXMgdGhlIG1hcmtlciB0eXBlIGRlZmluZWQgaW4gSUZpdFNlcmllc09wdGlvbnNcbiAgb3V0bGllck1hcmtlcj86IEZpdE91dGxpZXJNYXJrZXJUeXBlOyAvLyBvdmVycmlkZXMgdGhlIG91dGxpZXIgbWFya2VyIHR5cGUgZGVmaW5lZCBpbiBJRml0U2VyaWVzT3B0aW9uc1xuICBzaXplPzogbnVtYmVyOyAgICAgICAgICAgLy8gb3ZlcnJpZGVzIHRoZSBkZWZhdWx0IG1hcmtlciBzaXplXG4gIHN0ZGV2PzogbnVtYmVyOyAgICAgICAgICAvLyB3aGVuIGRlZmluZWQsIHJlbmRlcnMgYW4gZXJyb3IgYmFyIGNhbmRsZXN0aWNrXG4gIC8vIG1pblk/OiBudW1iZXI7ICAgICAgICAgICAvLyB3aGVuIGRlZmluZWQsIHRoZSBtYXJrZXIgcmVuZGVycyBhcyBhIGNhbmRsZXN0aWNrIHdpdGggd2hpc2tlcnMgW21pblksIG1heFldXG4gIC8vIG1heFk/OiBudW1iZXI7ICAgICAgICAgICAvLyB3aGVuIGRlZmluZWQsIHRoZSBtYXJrZXIgcmVuZGVycyBhcyBhIGNhbmRsZXN0aWNrIHdpdGggd2hpc2tlcnMgW21pblksIG1heFldXG59XG5cbi8qKiBBIHNlcmllcyBjb25zaXN0cyBvZiBwb2ludHMsIGhhcyBhIG5hbWUsIGFuZCBvcHRpb25zLlxuICogSWYgZGVmaW5lZCwgc2VyaWVzT3B0aW9ucyBhcmUgbWVyZ2VkIHdpdGgge0BsaW5rIElGaXRDaGFydERhdGEuc2VyaWVzT3B0aW9uc30gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUZpdFNlcmllcyBleHRlbmRzIElGaXRTZXJpZXNPcHRpb25zIHtcbiAgcG9pbnRzOiBJRml0UG9pbnRbXTtcbn1cblxuLyoqIENoYXJ0IGxhYmVscyBvcHRpb25zLiBDb250cm9scyB0aGUgY2hhcnQgbGFiZWxzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBJRml0Q2hhcnRMYWJlbE9wdGlvbnMge1xuICB2aXNpYmxlOiBib29sZWFuOyAgICAgICAgIC8vIGlmIHRydWUsIHJlbmRlcnMgdGhlIGxhYmVsIG9uIHRoZSBwbG90XG4gIGNvbG9yOiBzdHJpbmc7ICAgICAgICAgICAgLy8gZGVmaW5lcyB0aGUgbGFiZWwgY29sb3JcbiAgbmFtZTogc3RyaW5nOyAgICAgICAgICAgICAvLyBkZWZpbmVzIHRoZSBsYWJlbCBuYW1lXG59XG5cbi8qKiBDaGFydCBvcHRpb25zLiBGb3IgZml0dGVkIGN1cnZlcywgdGhpcyBvYmplY3QgaXMgc3RvcmVkIGluIHRoZSBncmlkIGNvbHVtbiB0YWdzIGFuZCBpcyB1c2VkIGJ5IHRoZSByZW5kZXJlci4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUZpdENoYXJ0T3B0aW9ucyB7XG4gIG1pblg/OiBudW1iZXI7XG4gIG1pblk/OiBudW1iZXI7XG4gIG1heFg/OiBudW1iZXI7XG4gIG1heFk/OiBudW1iZXI7XG5cbiAgdGl0bGU/OiBzdHJpbmc7ICAgICAgICAgICAgLy8gZGVmaW5lcyB0aGUgcGxvdCB0aXRsZS4gSWYgdGhlIHBsb3Qgc2l6ZSBpcyBlbm91Z2gsIHdpbGwgcmVuZGVyIGl0LlxuICB4QXhpc05hbWU/OiBzdHJpbmc7ICAgICAgICAvLyBkZWZpbmVzIHRoZSB4IGF4aXMgbmFtZS4gSWYgdGhlIHBsb3Qgc2l6ZSBpcyBlbm91Z2gsIHdpbGwgcmVuZGVyIGl0LlxuICB5QXhpc05hbWU/OiBzdHJpbmc7ICAgICAgICAvLyBkZWZpbmVzIHRoZSBZIGF4aXMgbmFtZS4gSWYgdGhlIHBsb3Qgc2l6ZSBpcyBlbm91Z2gsIHdpbGwgcmVuZGVyIGl0LlxuXG4gIGxvZ1g/OiBib29sZWFuOyAgICAgICAgICAgIC8vIGRlZmluZXMgd2hldGhlciB0aGUgeCBkYXRhIHNob3VsZCBiZSBsb2dhcml0aG1pYyBvciBub3RcbiAgbG9nWT86IGJvb2xlYW47ICAgICAgICAgICAgLy8gZGVmaW5lcyB3aGV0aGVyIHRoZSB5IGRhdGEgc2hvdWxkIGJlIGxvZ2FyaXRobWljIG9yIG5vdFxuXG4gIGFsbG93WFplcm9lcz86IGJvb2xlYW47ICAgIC8vIGRlZmluZXMgd2hldGhlciB4IHplcm9lcyBhbGxvd2VkIGZvciBsb2dhcml0aG1pYyBkYXRhIG9yIG5vdFxuICBtZXJnZVNlcmllcz86IGJvb2xlYW47ICAgICAvLyBkZWZpbmVzIHdoZXRoZXIgdG8gbWVyZ2Ugc2VyaWVzIG9yIG5vdFxuXG4gIHNob3dDb2x1bW5MYWJlbD86IGJvb2xlYW47IC8vIGRlZmluZXMgd2hldGhlciB0byBzaG93IHRoZSBjb2x1bW4gbGFiZWwgaW4gdGhlIGxlZ2VuZCBvciBub3RcbiAgc2hvd1N0YXRpc3RpY3M/OiBzdHJpbmdbXTsgLy8gZGVmaW5lcyB0aGUgc3RhdGlzdGljcyB0aGF0IHdvdWxkIGJlIHNob3duIG9uIHRoZSBwbG90XG4gIGxhYmVsT3B0aW9ucz86IElGaXRDaGFydExhYmVsT3B0aW9uc1tdOyAvLyBjb250cm9scyB0aGUgcGxvdCBsYWJlbHNcbn1cblxuLyoqIERhdGEgZm9yIHRoZSBmaXQgY2hhcnQuICovXG5leHBvcnQgaW50ZXJmYWNlIElGaXRDaGFydERhdGEge1xuICBjaGFydE9wdGlvbnM/OiBJRml0Q2hhcnRPcHRpb25zO1xuICBzZXJpZXNPcHRpb25zPzogSUZpdFNlcmllc09wdGlvbnM7ICAvLyBEZWZhdWx0IHNlcmllcyBvcHRpb25zLiBJbmRpdmlkdWFsIHNlcmllcyBjYW4gb3ZlcnJpZGUgaXQuXG4gIHNlcmllcz86IElGaXRTZXJpZXNbXTtcbn1cblxuLyoqIENsYXNzIHRoYXQgaW1wbGVtZW50cyB7QGxpbmsgSUZpdENoYXJ0RGF0YX0gaW50ZXJmYWNlICovXG5leHBvcnQgY2xhc3MgRml0Q2hhcnREYXRhIGltcGxlbWVudHMgSUZpdENoYXJ0RGF0YSB7XG4gIGNoYXJ0T3B0aW9uczogSUZpdENoYXJ0T3B0aW9ucyA9IHt9O1xuICBzZXJpZXNPcHRpb25zOiBJRml0U2VyaWVzT3B0aW9ucyA9IHt9OyAgLy8gRGVmYXVsdCBzZXJpZXMgb3B0aW9ucy4gSW5kaXZpZHVhbCBzZXJpZXMgY2FuIG92ZXJyaWRlIGl0LlxuICBzZXJpZXM6IElGaXRTZXJpZXNbXSA9IFtdO1xufVxuXG4vKiogU2VyaWVzIG9wdGlvbnMgY2FuIGJlIGVpdGhlciBhcHBsaWVkIGdsb2JhbGx5IG9uIGEgY29sdW1uIGxldmVsLCBvciBwYXJ0aWFsbHkgb3ZlcnJpZGRlbiBpbiBwYXJ0aWN1bGFyIHNlcmllcyAqL1xuZXhwb3J0IGludGVyZmFjZSBJRml0U2VyaWVzT3B0aW9ucyB7XG4gIG5hbWU/OiBzdHJpbmc7ICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29udHJvbHMgdGhlIHNlcmllcyBuYW1lXG4gIGZpdEZ1bmN0aW9uPzogc3RyaW5nIHwgSUZpdEZ1bmN0aW9uRGVzY3JpcHRpb247IC8vIGNvbnRyb2xzIHRoZSBzZXJpZXMgZml0IGZ1bmN0aW9uXG4gIHBhcmFtZXRlcnM/OiBudW1iZXJbXTsgICAgICAgICAgICAgICAgLy8gY29udHJvbHMgdGhlIHNlcmllcyBwYXJhbWV0ZXJzLCBhdXRvLWZpdHRpbmcgd2hlbiBub3QgZGVmaW5lZFxuICBwYXJhbWV0ZXJCb3VuZHM/OiBGaXRQYXJhbUJvdW5kc1tdOyAgIC8vIGRlZmluZXMgdGhlIGFjY2VwdGFibGUgcmFuZ2Ugb2YgZWFjaCBwYXJhbWV0ZXIsIHdoaWNoIGlzIHRha2VuIGludG8gYWNjb3VudCBkdXJpbmcgdGhlIGZpdHRpbmcuIFNlZSBhbHNvIGBwYXJhbWV0ZXJzYC5cbiAgbWFya2VyPzogRml0TWFya2VyVHlwZTsgICAgICAgICAgIC8vIGRlZmluZXMgdGhlIHNlcmllcyBtYXJrZXIgdHlwZVxuICBvdXRsaWVyTWFya2VyPzogRml0T3V0bGllck1hcmtlclR5cGU7ICAvLyBkZWZpbmVzIHRoZSBzZXJpZXMgb3V0bGllciBtYXJrZXIgdHlwZVxuICBsaW5lU3R5bGU/OiBGaXRMaW5lU3R5bGU7ICAgICAgICAgICAgIC8vIGRlZmluZXMgdGhlIHNlcmllcyBsaW5lIHN0eWxlXG4gIHBvaW50Q29sb3I/OiBzdHJpbmc7ICAgICAgICAgICAgICAgICAgLy8gb3ZlcnJpZGVzIHRoZSBzdGFuZGFyZGl6ZWQgc2VyaWVzIHBvaW50IGNvbG9yXG4gIGZpdExpbmVDb2xvcj86IHN0cmluZzsgICAgICAgICAgICAgICAgLy8gb3ZlcnJpZGVzIHRoZSBzdGFuZGFyZGl6ZWQgc2VyaWVzIGZpdCBsaW5lIGNvbG9yXG4gIGNvbmZpZGVuY2VJbnRlcnZhbENvbG9yPzogc3RyaW5nOyAgICAgLy8gb3ZlcnJpZGVzIHRoZSBzdGFuZGFyZGl6ZWQgc2VyaWVzIGNvbmZpZGVuY2UgaW50ZXJ2YWwgY29sb3JcbiAgb3V0bGllckNvbG9yPzogc3RyaW5nOyAgICAgICAgICAgICAgICAvLyBvdmVycmlkZXMgdGhlIHN0YW5kYXJkaXplZCBzZXJpZXMgb3V0bGllciBjb2xvclxuICBjb25uZWN0RG90cz86IGJvb2xlYW47ICAgICAgICAgICAgICAgIC8vIGRlZmluZXMgd2hldGhlciB0byBjb25uZWN0IHRoZSBwb2ludHMgd2l0aCBsaW5lcyBvciBub3QuIElmIHRydWUgYW5kIHNob3dGaXRMaW5lIGlzIGZhbHNlIC0gZml0dGluZyBpcyBkaXNhYmxlZCAtIG90aGVyd2lzZSwgaXQgd2lsbCBiZSByZW5kZXJlZCBhY2NvcmRpbmdseSB0byB0aGUgcGFyYW1ldGVyIHZhbHVlLlxuICBzaG93Rml0TGluZT86IGJvb2xlYW47ICAgICAgICAgICAgICAgIC8vIGRlZmluZXMgd2hldGhlciB0byBzaG93IHRoZSBmaXQgbGluZSBvciBub3RcbiAgc2hvd1BvaW50cz86IHN0cmluZzsgICAgICAgICAgICAgICAgICAvLyBkZWZpbmVzIHRoZSBkYXRhIGRpc3BsYXkgbW9kZVxuICBzaG93Q3VydmVDb25maWRlbmNlSW50ZXJ2YWw/OiBib29sZWFuOyAgICAvLyBkZWZpbmVzIHdoZXRoZXIgdG8gc2hvdyB0aGUgY29uZmlkZW5jZSBpbnRlcnZhbHMgb3Igbm90XG4gIGVycm9yTW9kZWw/OiBGaXRFcnJvck1vZGVsVHlwZTsgICAgICAgLy8gZGVmaW5lcyB0aGUgc2VyaWVzIGVycm9yIG1vZGVsXG4gIGNsaWNrVG9Ub2dnbGU/OiBib29sZWFuOyAgICAvLyBpZiB0cnVlLCBjbGlja2luZyBvbiB0aGUgcG9pbnQgdG9nZ2xlcyBpdHMgb3V0bGllciBzdGF0dXMgYW5kIGNhdXNlcyBjdXJ2ZSByZWZpdHRpbmdcbiAgbGFiZWxzPzoge1trZXk6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW59OyAvLyBjb250cm9sbGVkIGJ5IElGaXRDaGFydERhdGEgbGFiZWxPcHRpb25zLCBzaG93cyBsYWJlbHNcbiAgZHJvcGxpbmVzPzogc3RyaW5nW107ICAgICAgICAgICAgICAgICAvLyBkZWZpbmVzIHRoZSBkcm9wbGluZXMgdGhhdCB3b3VsZCBiZSBzaG93biBvbiB0aGUgcGxvdCAoSUM1MClcbiAgY29sdW1uTmFtZT86IHN0cmluZzsgICAgICAgICAgICAgICAgICAvLyBkZWZpbmVzIHRoZSBjb2x1bW4gbmFtZSB3aGVyZSB0aGUgc2VyaWVzIGlzIHN0b3JlZFxufVxuLy8gVE9ETzogc2hvdyBsYWJlbHMgaW4gcHJvcGVydHkgcGFuZWwgaWYgcHJlc2VudCwgY29sb3IgYnkgZGVmYXVsdCBmcm9tIHNlcmllc1xuXG4vLyBUT0RPPzogYWRkIG1ldGhvZCB0byByZXR1cm4gcGFyYW1ldGVycyAtIGdldCBwYXJhbWV0ZXJzIGZyb20gZml0IGZ1bmN0aW9uXG4vKiogQ2xhc3MgZm9yIHRoZSBmaXQgZnVuY3Rpb25zICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRml0RnVuY3Rpb24ge1xuICBhYnN0cmFjdCBnZXQgbmFtZSgpOiBzdHJpbmc7XG4gIGFic3RyYWN0IGdldCBwYXJhbWV0ZXJOYW1lcygpOiBzdHJpbmdbXTtcbiAgYWJzdHJhY3QgeShwYXJhbXM6IEZsb2F0MzJBcnJheSwgeDogbnVtYmVyKTogbnVtYmVyO1xuICBhYnN0cmFjdCBnZXRJbml0aWFsUGFyYW1ldGVycyh4OiBudW1iZXJbXSwgeTogbnVtYmVyW10pOiBGbG9hdDMyQXJyYXk7XG59XG5cbi8qKiBDbGFzcyB0aGF0IGltcGxlbWVudHMgdGhlIGxpbmVhciBmdW5jdGlvbiAqL1xuZXhwb3J0IGNsYXNzIExpbmVhckZ1bmN0aW9uIGV4dGVuZHMgRml0RnVuY3Rpb24ge1xuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBGSVRfRlVOQ1RJT05fTElORUFSO1xuICB9XG5cbiAgZ2V0IHBhcmFtZXRlck5hbWVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gWydTbG9wZScsICdJbnRlcmNlcHQnXTtcbiAgfVxuXG4gIHkocGFyYW1zOiBGbG9hdDMyQXJyYXksIHg6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIGxpbmVhcihwYXJhbXMsIHgpO1xuICB9XG5cbiAgZ2V0SW5pdGlhbFBhcmFtZXRlcnMoeDogbnVtYmVyW10sIHk6IG51bWJlcltdKTogRmxvYXQzMkFycmF5IHtcbiAgICBsZXQgbWluSW5kZXggPSAwO1xuICAgIGxldCBtYXhJbmRleCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCB4Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoeFtpXSA8IHhbbWluSW5kZXhdKVxuICAgICAgICBtaW5JbmRleCA9IGk7XG4gICAgICBpZiAoeFtpXSA+IHhbbWF4SW5kZXhdKVxuICAgICAgICBtYXhJbmRleCA9IGk7XG4gICAgfVxuXG4gICAgY29uc3QgZGVsdGFYID0geFttYXhJbmRleF0gLSB4W21pbkluZGV4XTtcbiAgICBjb25zdCBkZWx0YVkgPSB5W21heEluZGV4XSAtIHlbbWluSW5kZXhdO1xuICAgIGNvbnN0IEEgPSBkZWx0YVkgLyBkZWx0YVg7XG4gICAgY29uc3QgQiA9IHlbbWF4SW5kZXhdIC0gQSAqIHhbbWF4SW5kZXhdO1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBGbG9hdDMyQXJyYXkoMik7XG4gICAgcGFyYW1zLnNldChbQSwgQl0pO1xuICAgIHJldHVybiBwYXJhbXM7XG4gIH1cbn1cblxuLyoqIENsYXNzIHRoYXQgaW1wbGVtZW50cyB0aGUgc2lnbW9pZCBmdW5jdGlvbiAqL1xuZXhwb3J0IGNsYXNzIFNpZ21vaWRGdW5jdGlvbiBleHRlbmRzIEZpdEZ1bmN0aW9uIHtcbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gRklUX0ZVTkNUSU9OX1NJR01PSUQ7XG4gIH1cblxuICBnZXQgcGFyYW1ldGVyTmFtZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbJ1RvcCcsICdCb3R0b20nLCAnU2xvcGUnLCAnSUM1MCddO1xuICB9XG5cbiAgeShwYXJhbXM6IEZsb2F0MzJBcnJheSwgeDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gc2lnbW9pZChwYXJhbXMsIHgpO1xuICB9XG5cbiAgZ2V0SW5pdGlhbFBhcmFtZXRlcnMoeDogbnVtYmVyW10sIHk6IG51bWJlcltdKTogRmxvYXQzMkFycmF5IHtcbiAgICBjb25zdCBkYXRhQm91bmRzID0gREcuUmVjdC5mcm9tWFlBcnJheXMoeCwgeSk7XG4gICAgY29uc3QgbWVkWSA9IChkYXRhQm91bmRzLmJvdHRvbSAtIGRhdGFCb3VuZHMudG9wKSAvIDIgKyBkYXRhQm91bmRzLnRvcDtcbiAgICBsZXQgbWF4WUludGVydmFsID0gZGF0YUJvdW5kcy5ib3R0b20gLSBkYXRhQm91bmRzLnRvcDtcbiAgICBsZXQgbmVhcmVzdFhJbmRleCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB4Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBjdXJyZW50SW50ZXJ2YWwgPSBNYXRoLmFicyh5W2ldIC0gbWVkWSk7XG4gICAgICBpZiAoY3VycmVudEludGVydmFsIDwgbWF4WUludGVydmFsKSB7XG4gICAgICAgIG1heFlJbnRlcnZhbCA9IGN1cnJlbnRJbnRlcnZhbDtcbiAgICAgICAgbmVhcmVzdFhJbmRleCA9IGk7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHhBdE1lZFkgPSB4W25lYXJlc3RYSW5kZXhdO1xuICAgIGNvbnN0IHNsb3BlID0geVswXSA+IHlbeS5sZW5ndGggLSAxXSA/IDEgOiAtMTtcblxuICAgIC8vIHBhcmFtcyBhcmU6IFttYXgsIHRhbiwgSUM1MCwgbWluXVxuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBGbG9hdDMyQXJyYXkoNCk7XG4gICAgcGFyYW1zLnNldChbZGF0YUJvdW5kcy5ib3R0b20sIHNsb3BlLCB4QXRNZWRZLCBkYXRhQm91bmRzLnRvcF0pO1xuICAgIHJldHVybiBwYXJhbXM7XG4gIH1cbn1cblxuLyoqIENsYXNzIHRoYXQgaW1wbGVtZW50cyB0aGUgbGluZWFyIGxvZ2FyaXRobWljIGZ1bmN0aW9uICovXG5leHBvcnQgY2xhc3MgTG9nTGluZWFyRnVuY3Rpb24gZXh0ZW5kcyBGaXRGdW5jdGlvbiB7XG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEZJVF9GVU5DVElPTl9MT0dfTElORUFSO1xuICB9XG5cbiAgZ2V0IHBhcmFtZXRlck5hbWVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gWydTbG9wZScsICdJbnRlcmNlcHQnXTtcbiAgfVxuXG4gIHkocGFyYW1zOiBGbG9hdDMyQXJyYXksIHg6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIGxvZ0xpbmVhcihwYXJhbXMsIHgpO1xuICB9XG5cbiAgZ2V0SW5pdGlhbFBhcmFtZXRlcnMoeDogbnVtYmVyW10sIHk6IG51bWJlcltdKTogRmxvYXQzMkFycmF5IHtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgRmxvYXQzMkFycmF5KDIpO1xuICAgIHBhcmFtcy5zZXQoWy01LCAxMDBdKTtcbiAgICByZXR1cm4gcGFyYW1zO1xuICB9XG59XG5cbi8qKiBDbGFzcyB0aGF0IGltcGxlbWVudHMgdXNlciBKUyBmdW5jdGlvbnMgKi9cbmV4cG9ydCBjbGFzcyBKc0Z1bmN0aW9uIGV4dGVuZHMgRml0RnVuY3Rpb24ge1xuICBwcml2YXRlIF9uYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgX3BhcmFtZXRlck5hbWVzOiBzdHJpbmdbXTtcblxuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcsIHlGdW5jOiAocGFyYW1zOiBGbG9hdDMyQXJyYXksIHg6IG51bWJlcikgPT4gbnVtYmVyLFxuICAgIGdldEluaXRQYXJhbXNGdW5jOiAoeDogbnVtYmVyW10sIHk6IG51bWJlcltdKSA9PiBGbG9hdDMyQXJyYXksIHBhcmFtZXRlck5hbWVzOiBzdHJpbmdbXSkge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLl9uYW1lID0gbmFtZTtcbiAgICB0aGlzLl9wYXJhbWV0ZXJOYW1lcyA9IHBhcmFtZXRlck5hbWVzO1xuXG4gICAgdGhpcy55ID0geUZ1bmM7XG4gICAgdGhpcy5nZXRJbml0aWFsUGFyYW1ldGVycyA9IGdldEluaXRQYXJhbXNGdW5jO1xuICB9XG5cbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fbmFtZTtcbiAgfVxuXG4gIGdldCBwYXJhbWV0ZXJOYW1lcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3BhcmFtZXRlck5hbWVzO1xuICB9XG5cbiAgeShwYXJhbXM6IEZsb2F0MzJBcnJheSwgeDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG5cbiAgZ2V0SW5pdGlhbFBhcmFtZXRlcnMoeDogbnVtYmVyW10sIHk6IG51bWJlcltdKTogRmxvYXQzMkFycmF5IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG59XG5cbi8vIE9iamVjdCB3aXRoIGZpdCBmdW5jdGlvbnNcbmV4cG9ydCBjb25zdCBmaXRGdW5jdGlvbnM6IHtbaW5kZXg6IHN0cmluZ106IEZpdEZ1bmN0aW9ufSA9IHtcbiAgJ2xpbmVhcic6IG5ldyBMaW5lYXJGdW5jdGlvbigpLFxuICAnc2lnbW9pZCc6IG5ldyBTaWdtb2lkRnVuY3Rpb24oKSxcbiAgJ2xvZy1saW5lYXInOiBuZXcgTG9nTGluZWFyRnVuY3Rpb24oKSxcbn07XG5cbi8qKiBQcm9wZXJ0aWVzIHRoYXQgZGVzY3JpYmUge0BsaW5rIEZpdFN0YXRpc3RpY3N9LiBVc2VmdWwgZm9yIGVkaXRpbmcsIGluaXRpYWxpemF0aW9uLCB0cmFuc2Zvcm1hdGlvbnMsIGV0Yy4gKi9cbmV4cG9ydCBjb25zdCBzdGF0aXN0aWNzUHJvcGVydGllczogREcuUHJvcGVydHlbXSA9IFtcbiAgREcuUHJvcGVydHkuanMoJ3JTcXVhcmVkJywgREcuVFlQRS5GTE9BVCwge3VzZXJFZGl0YWJsZTogZmFsc2V9KSxcbiAgREcuUHJvcGVydHkuanMoJ2F1YycsIERHLlRZUEUuRkxPQVQsIHt1c2VyRWRpdGFibGU6IGZhbHNlfSksXG4gIERHLlByb3BlcnR5LmpzKCdpbnRlcmNlcHRZJywgREcuVFlQRS5GTE9BVCwge3VzZXJFZGl0YWJsZTogZmFsc2V9KSxcbiAgREcuUHJvcGVydHkuanMoJ2ludGVyY2VwdFgnLCBERy5UWVBFLkZMT0FULCB7dXNlckVkaXRhYmxlOiBmYWxzZX0pLFxuICBERy5Qcm9wZXJ0eS5qcygnc2xvcGUnLCBERy5UWVBFLkZMT0FULCB7dXNlckVkaXRhYmxlOiBmYWxzZX0pLFxuICBERy5Qcm9wZXJ0eS5qcygndG9wJywgREcuVFlQRS5GTE9BVCwge3VzZXJFZGl0YWJsZTogZmFsc2V9KSxcbiAgREcuUHJvcGVydHkuanMoJ2JvdHRvbScsIERHLlRZUEUuRkxPQVQsIHt1c2VyRWRpdGFibGU6IGZhbHNlfSksXG5dO1xuXG4vKiogUHJvcGVydGllcyB0aGF0IGRlc2NyaWJlIHtAbGluayBJRml0Q2hhcnRPcHRpb25zfS4gVXNlZnVsIGZvciBlZGl0aW5nLCBpbml0aWFsaXphdGlvbiwgdHJhbnNmb3JtYXRpb25zLCBldGMuICovXG5leHBvcnQgY29uc3QgZml0Q2hhcnREYXRhUHJvcGVydGllczogREcuUHJvcGVydHlbXSA9IFtcbiAgLy8gU3R5bGUgYW5kIHpvb21cbiAgLy8gcmVtb3ZlIHVubmVjZXNzYXJ5IHRvb2x0aXBzXG4gIERHLlByb3BlcnR5LmpzKCdtaW5YJywgREcuVFlQRS5GTE9BVCwge251bGxhYmxlOiB0cnVlfSksXG4gIERHLlByb3BlcnR5LmpzKCdtaW5ZJywgREcuVFlQRS5GTE9BVCwge251bGxhYmxlOiB0cnVlfSksXG4gIERHLlByb3BlcnR5LmpzKCdtYXhYJywgREcuVFlQRS5GTE9BVCwge251bGxhYmxlOiB0cnVlfSksXG4gIERHLlByb3BlcnR5LmpzKCdtYXhZJywgREcuVFlQRS5GTE9BVCwge251bGxhYmxlOiB0cnVlfSksXG4gIERHLlByb3BlcnR5LmpzKCd0aXRsZScsIERHLlRZUEUuU1RSSU5HLCB7bnVsbGFibGU6IHRydWV9KSxcbiAgREcuUHJvcGVydHkuanMoJ3hBeGlzTmFtZScsIERHLlRZUEUuU1RSSU5HLCB7ZGVzY3JpcHRpb246XG4gICAgJ0xhYmVsIHRvIHNob3cgb24gdGhlIFggYXhpcy4gSWYgbm90IHNwZWNpZmllZCwgY29ycmVzcG9uZGluZyBkYXRhIGNvbHVtbiBuYW1lIGlzIHVzZWQnLCBudWxsYWJsZTogdHJ1ZX0pLFxuICBERy5Qcm9wZXJ0eS5qcygneUF4aXNOYW1lJywgREcuVFlQRS5TVFJJTkcsIHtkZXNjcmlwdGlvbjpcbiAgICAnTGFiZWwgdG8gc2hvdyBvbiB0aGUgWSBheGlzLiBJZiBub3Qgc3BlY2lmaWVkLCBjb3JyZXNwb25kaW5nIGRhdGEgY29sdW1uIG5hbWUgaXMgdXNlZCcsIG51bGxhYmxlOiB0cnVlfSksXG4gIERHLlByb3BlcnR5LmpzKCdsb2dYJywgREcuVFlQRS5CT09MLCB7ZGVzY3JpcHRpb246ICdXaGV0aGVyIHRoZSBYIGF4aXMgc2hvdWxkIGJlIGxvZ2FyaXRobWljJywgZGVmYXVsdFZhbHVlOiBmYWxzZX0pLFxuICBERy5Qcm9wZXJ0eS5qcygnbG9nWScsIERHLlRZUEUuQk9PTCwge2Rlc2NyaXB0aW9uOiAnV2hldGhlciB0aGUgWSBheGlzIHNob3VsZCBiZSBsb2dhcml0aG1pYycsIGRlZmF1bHRWYWx1ZTogZmFsc2V9KSxcbiAgREcuUHJvcGVydHkuanMoJ2FsbG93WFplcm9lcycsIERHLlRZUEUuQk9PTCwge2Rlc2NyaXB0aW9uOiAnV2hldGhlciB4IHplcm9lcyBhbGxvd2VkIGZvciBsb2dhcml0aG1pYyBkYXRhIG9yIG5vdCcsIGRlZmF1bHRWYWx1ZTogdHJ1ZX0pLFxuICBERy5Qcm9wZXJ0eS5qcygnbWVyZ2VTZXJpZXMnLCBERy5UWVBFLkJPT0wsIHtkZXNjcmlwdGlvbjogJ01lcmdlcyBhbGwgc2VyaWVzIHdpdGhpbiBvbmUgY2VsbCBpbnRvIG9uZSBzZXJpZXMnLCBkZWZhdWx0VmFsdWU6IGZhbHNlfSksXG4gIERHLlByb3BlcnR5LmpzKCdzaG93Q29sdW1uTGFiZWwnLCBERy5UWVBFLkJPT0wsIHtkZXNjcmlwdGlvbjogJ1doZXRoZXIgdG8gc2hvdyB0aGUgY29sdW1uIGxhYmVsIGluIHRoZSBsZWdlbmQgb3Igbm90JywgZGVmYXVsdFZhbHVlOiBmYWxzZX0pLFxuICBERy5Qcm9wZXJ0eS5qcygnc2hvd1N0YXRpc3RpY3MnLCBERy5UWVBFLlNUUklOR19MSVNULCB7ZGVzY3JpcHRpb246ICdXaGV0aGVyIHNwZWNpZmljIHN0YXRpc3RpY3Mgc2hvdWxkIGJlIHJlbmRlcmVkJyxcbiAgICBjaG9pY2VzOiBzdGF0aXN0aWNzUHJvcGVydGllcy5tYXAoKGZycCkgPT4gZnJwLm5hbWUpLCBpbnB1dFR5cGU6ICdNdWx0aUNob2ljZScsXG4gICAgLy9AdHMtaWdub3JlXG4gICAgZnJpZW5kbHlOYW1lOiAnU3RhdGlzdGljcyd9KSxcbl07XG5cbi8qKiBQcm9wZXJ0aWVzIHRoYXQgZGVzY3JpYmUge0BsaW5rIElGaXRTZXJpZXNPcHRpb25zfS4gVXNlZnVsIGZvciBlZGl0aW5nLCBpbml0aWFsaXphdGlvbiwgdHJhbnNmb3JtYXRpb25zLCBldGMuICovXG5leHBvcnQgY29uc3QgZml0U2VyaWVzUHJvcGVydGllczogREcuUHJvcGVydHlbXSA9IFtcbiAgREcuUHJvcGVydHkuanMoJ2ZpdEZ1bmN0aW9uJywgREcuVFlQRS5TVFJJTkcsXG4gICAge2NhdGVnb3J5OiAnRml0dGluZycsIGNob2ljZXM6IE9iamVjdC5rZXlzKGZpdEZ1bmN0aW9ucyksIGRlZmF1bHRWYWx1ZTogJ3NpZ21vaWQnfSksXG4gIERHLlByb3BlcnR5LmpzKCdwb2ludENvbG9yJywgREcuVFlQRS5TVFJJTkcsXG4gICAge2NhdGVnb3J5OiAnUmVuZGVyaW5nJywgbnVsbGFibGU6IHRydWUsIGlucHV0VHlwZTogJ0NvbG9yJ30pLFxuICBERy5Qcm9wZXJ0eS5qcygnZml0TGluZUNvbG9yJywgREcuVFlQRS5TVFJJTkcsXG4gICAge2NhdGVnb3J5OiAnUmVuZGVyaW5nJywgbnVsbGFibGU6IHRydWUsIGlucHV0VHlwZTogJ0NvbG9yJ30pLFxuICBERy5Qcm9wZXJ0eS5qcygnb3V0bGllckNvbG9yJywgREcuVFlQRS5TVFJJTkcsXG4gICAge2NhdGVnb3J5OiAnUmVuZGVyaW5nJywgbnVsbGFibGU6IHRydWUsIGlucHV0VHlwZTogJ0NvbG9yJ30pLFxuICBERy5Qcm9wZXJ0eS5qcygnZXJyb3JNb2RlbCcsIERHLlRZUEUuU1RSSU5HLCB7Y2F0ZWdvcnk6ICdGaXR0aW5nJywgZGVmYXVsdFZhbHVlOiAnY29uc3RhbnQnLFxuICAgIGNob2ljZXM6IFsnY29uc3RhbnQnLCAncHJvcG9ydGlvbmFsJywgJ2NvbWJpbmVkJ10sIG51bGxhYmxlOiBmYWxzZX0pLFxuICBERy5Qcm9wZXJ0eS5qcygnY29ubmVjdERvdHMnLCBERy5UWVBFLkJPT0wsIHtjYXRlZ29yeTogJ0ZpdHRpbmcnLCBkZWZhdWx0VmFsdWU6IGZhbHNlfSksXG4gIERHLlByb3BlcnR5LmpzKCdjbGlja1RvVG9nZ2xlJywgREcuVFlQRS5CT09MLCB7Y2F0ZWdvcnk6ICdGaXR0aW5nJywgZGVzY3JpcHRpb246XG4gICAgJ0NsaWNrIG9uIGEgcG9pbnQgdG8gbWFyayBpdCBhcyBvdXRsaWVyIGFuZCByZWZpdCcsIG51bGxhYmxlOiB0cnVlLCBkZWZhdWx0VmFsdWU6IGZhbHNlfSksXG4gIERHLlByb3BlcnR5LmpzKCdzaG93Rml0TGluZScsIERHLlRZUEUuQk9PTCwge2NhdGVnb3J5OiAnRml0dGluZycsIGRlZmF1bHRWYWx1ZTogdHJ1ZX0pLFxuICBERy5Qcm9wZXJ0eS5qcygnc2hvd1BvaW50cycsIERHLlRZUEUuU1RSSU5HLCAvLyByZXdyaXRlIGRlc2NyaXB0aW9uXG4gICAge2NhdGVnb3J5OiAnRml0dGluZycsIGRlc2NyaXB0aW9uOiAnV2hldGhlciBwb2ludHMvY2FuZGxlc3RpY2tzL25vbmUgc2hvdWxkIGJlIHJlbmRlcmVkJyxcbiAgICAgIGRlZmF1bHRWYWx1ZTogJ3BvaW50cycsIGNob2ljZXM6IFsncG9pbnRzJywgJ2NhbmRsZXN0aWNrcycsICdib3RoJ119KSxcbiAgREcuUHJvcGVydHkuanMoJ3Nob3dDdXJ2ZUNvbmZpZGVuY2VJbnRlcnZhbCcsIERHLlRZUEUuQk9PTCxcbiAgICB7Y2F0ZWdvcnk6ICdGaXR0aW5nJywgZGVzY3JpcHRpb246ICdXaGV0aGVyIGNvbmZpZGVuY2UgaW50ZXJ2YWxzIHNob3VsZCBiZSByZW5kZXJlZCcsIGRlZmF1bHRWYWx1ZTogZmFsc2UsXG4gICAgICAvL0B0cy1pZ25vcmVcbiAgICAgIGZyaWVuZGx5TmFtZTogJ0NvbmZpZGVuY2UgSW50ZXJ2YWwnfSksXG4gIERHLlByb3BlcnR5LmpzKCdtYXJrZXInLCBERy5UWVBFLlNUUklORywge2NhdGVnb3J5OiAnUmVuZGVyaW5nJywgZGVmYXVsdFZhbHVlOiAnY2lyY2xlJyxcbiAgICBjaG9pY2VzOiBbJ2FzdGVyaXNrJywgJ2NpcmNsZScsICdjcm9zcyBib3JkZXInLCAnZGlhbW9uZCcsICdzcXVhcmUnLCAnc3RhcicsXG4gICAgICAndHJpYW5nbGUgYm90dG9tJywgJ3RyaWFuZ2xlIGxlZnQnLCAndHJpYW5nbGUgcmlnaHQnLCAndHJpYW5nbGUgdG9wJ10sIG51bGxhYmxlOiBmYWxzZX0pLFxuICBERy5Qcm9wZXJ0eS5qcygnb3V0bGllck1hcmtlcicsIERHLlRZUEUuU1RSSU5HLCB7Y2F0ZWdvcnk6ICdSZW5kZXJpbmcnLCBkZWZhdWx0VmFsdWU6ICdvdXRsaWVyJyxcbiAgICBjaG9pY2VzOiBbJ2FzdGVyaXNrJywgJ2NpcmNsZScsICdjcm9zcyBib3JkZXInLCAnZGlhbW9uZCcsICdvdXRsaWVyJywgJ3NxdWFyZScsICdzdGFyJyxcbiAgICAgICd0cmlhbmdsZSBib3R0b20nLCAndHJpYW5nbGUgbGVmdCcsICd0cmlhbmdsZSByaWdodCcsICd0cmlhbmdsZSB0b3AnXSwgbnVsbGFibGU6IGZhbHNlfSksXG4gIERHLlByb3BlcnR5LmpzKCdsaW5lU3R5bGUnLCBERy5UWVBFLlNUUklORywge2NhdGVnb3J5OiAnUmVuZGVyaW5nJywgZGVmYXVsdFZhbHVlOiAnc29saWQnLFxuICAgIGNob2ljZXM6IFsnc29saWQnLCAnZG90dGVkJywgJ2Rhc2hlZCcsICdkYXNoZG90dGVkJ10sIG51bGxhYmxlOiBmYWxzZX0pLFxuICBERy5Qcm9wZXJ0eS5qcygnZHJvcGxpbmVzJywgREcuVFlQRS5TVFJJTkdfTElTVCwge2Rlc2NyaXB0aW9uOiAnV2hldGhlciBzcGVjaWZpYyBkcm9wbGluZXMgc2hvdWxkIGJlIHJlbmRlcmVkJyxcbiAgICBjaG9pY2VzOiBEUk9QTElORVMsIGlucHV0VHlwZTogJ011bHRpQ2hvaWNlJ30pLFxuICBERy5Qcm9wZXJ0eS5qcygnY29sdW1uTmFtZScsIERHLlRZUEUuU1RSSU5HLCB7ZGVzY3JpcHRpb246ICdDb2x1bW4gbmFtZSB3aGVyZSB0aGUgc2VyaWVzIGlzIHN0b3JlZCcsIGRlZmF1bHRWYWx1ZTogJyd9KSxcbl07XG5cbmV4cG9ydCBjb25zdCBGSVRfRlVOQ1RJT05fU0lHTU9JRCA9ICdzaWdtb2lkJztcbmV4cG9ydCBjb25zdCBGSVRfRlVOQ1RJT05fTElORUFSID0gJ2xpbmVhcic7XG5leHBvcnQgY29uc3QgRklUX0ZVTkNUSU9OX0xPR19MSU5FQVIgPSAnbG9nLWxpbmVhcic7XG5cbmV4cG9ydCBjb25zdCBGSVRfU1RBVFNfUlNRVUFSRUQgPSAnclNxdWFyZWQnO1xuZXhwb3J0IGNvbnN0IEZJVF9TVEFUU19BVUMgPSAnYXVjJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldE9yQ3JlYXRlRml0RnVuY3Rpb24oc2VyaWVzRml0RnVuYzogc3RyaW5nIHwgSUZpdEZ1bmN0aW9uRGVzY3JpcHRpb24pOiBGaXRGdW5jdGlvbiB7XG4gIGlmICh0eXBlb2Ygc2VyaWVzRml0RnVuYyA9PT0gJ3N0cmluZycpXG4gICAgcmV0dXJuIGZpdEZ1bmN0aW9uc1tzZXJpZXNGaXRGdW5jXTtcbiAgZWxzZSBpZiAoIWZpdEZ1bmN0aW9uc1tzZXJpZXNGaXRGdW5jLm5hbWVdKSB7XG4gICAgY29uc3QgbmFtZSA9IHNlcmllc0ZpdEZ1bmMubmFtZTtcbiAgICBjb25zdCBwYXJhbU5hbWVzID0gc2VyaWVzRml0RnVuYy5wYXJhbWV0ZXJOYW1lcztcbiAgICBjb25zdCBmaXRGdW5jdGlvblBhcnRzID0gc2VyaWVzRml0RnVuYy5mdW5jdGlvbi5zcGxpdCgnPT4nKS5tYXAoKGVsZW0pID0+IGVsZW0udHJpbSgpKTtcbiAgICBjb25zdCBnZXRJbml0UGFyYW1zUGFydHMgPSBzZXJpZXNGaXRGdW5jLmdldEluaXRpYWxQYXJhbWV0ZXJzLnNwbGl0KCc9PicpLm1hcCgoZWxlbSkgPT4gZWxlbS50cmltKCkpO1xuICAgIGNvbnN0IGZpdEZ1bmN0aW9uID0gbmV3IEZ1bmN0aW9uKGZpdEZ1bmN0aW9uUGFydHNbMF0uc2xpY2UoMSwgZml0RnVuY3Rpb25QYXJ0c1swXS5sZW5ndGggLSAxKSxcbiAgICAgIGAke2ZpdEZ1bmN0aW9uUGFydHNbMV0uaW5jbHVkZXMoJzsnKSA/ICcnIDogJ3JldHVybiAnfSR7Zml0RnVuY3Rpb25QYXJ0c1sxXX1gKTtcbiAgICBjb25zdCBnZXRJbml0UGFyYW1zRnVuYyA9IG5ldyBGdW5jdGlvbihnZXRJbml0UGFyYW1zUGFydHNbMF0uc2xpY2UoMSwgZ2V0SW5pdFBhcmFtc1BhcnRzWzBdLmxlbmd0aCAtIDEpLFxuICAgICAgYHJldHVybiAke2dldEluaXRQYXJhbXNQYXJ0c1sxXX1gKTtcbiAgICBjb25zdCBmaXRGdW5jID0gbmV3IEpzRnVuY3Rpb24obmFtZSwgKGZpdEZ1bmN0aW9uIGFzIChwYXJhbXM6IEZsb2F0MzJBcnJheSwgeDogbnVtYmVyKSA9PiBudW1iZXIpLFxuICAgICAgKGdldEluaXRQYXJhbXNGdW5jIGFzICh4OiBudW1iZXJbXSwgeTogbnVtYmVyW10pID0+IEZsb2F0MzJBcnJheSksIHBhcmFtTmFtZXMpO1xuICAgIGZpdEZ1bmN0aW9uc1tuYW1lXSA9IGZpdEZ1bmM7XG4gIH1cblxuICByZXR1cm4gZml0RnVuY3Rpb25zW3Nlcmllc0ZpdEZ1bmMubmFtZV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaXREYXRhKGRhdGE6IHt4OiBudW1iZXJbXSwgeTogbnVtYmVyW119LCBmaXRGdW5jdGlvbjogRml0RnVuY3Rpb24sIGVycm9yTW9kZWw6IEZpdEVycm9yTW9kZWxUeXBlLFxuICBwYXJhbWV0ZXJCb3VuZHM/OiBGaXRQYXJhbUJvdW5kc1tdKTogRml0Q3VydmUge1xuICBjb25zdCBjdXJ2ZUZ1bmN0aW9uID0gZml0RnVuY3Rpb24ueTtcbiAgbGV0IHBhcmFtVmFsdWVzID0gZml0RnVuY3Rpb24uZ2V0SW5pdGlhbFBhcmFtZXRlcnMoZGF0YS54LCBkYXRhLnkpO1xuXG4gIGNvbnN0IG9mID0gb2JqZWN0aXZlRmFjdG9yeShjdXJ2ZUZ1bmN0aW9uLCBkYXRhLCBlcnJvck1vZGVsKTtcbiAgbGV0IGJvdHRvbVBhcmFtQm91bmRzID0gbmV3IEZsb2F0MzJBcnJheShmaXRGdW5jdGlvbi5wYXJhbWV0ZXJOYW1lcy5sZW5ndGgpO1xuICBsZXQgdG9wUGFyYW1Cb3VuZHMgPSBuZXcgRmxvYXQzMkFycmF5KGZpdEZ1bmN0aW9uLnBhcmFtZXRlck5hbWVzLmxlbmd0aCk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZml0RnVuY3Rpb24ucGFyYW1ldGVyTmFtZXMubGVuZ3RoOyBpKyspIHtcbiAgICBib3R0b21QYXJhbUJvdW5kc1tpXSA9IHBhcmFtVmFsdWVzW2ldID09PSAwID8gLTEgOiBwYXJhbVZhbHVlc1tpXSAtIE1hdGguYWJzKHBhcmFtVmFsdWVzW2ldICogMC41KTtcbiAgICB0b3BQYXJhbUJvdW5kc1tpXSA9IHBhcmFtVmFsdWVzW2ldID09PSAwID8gMSA6IHBhcmFtVmFsdWVzW2ldICsgTWF0aC5hYnMocGFyYW1WYWx1ZXNbaV0gKiAwLjUpO1xuICB9XG4gIGlmIChwYXJhbWV0ZXJCb3VuZHMgJiYgcGFyYW1ldGVyQm91bmRzLmxlbmd0aCAhPT0gMCkge1xuICAgIGJvdHRvbVBhcmFtQm91bmRzID0gbmV3IEZsb2F0MzJBcnJheShwYXJhbWV0ZXJCb3VuZHMubGVuZ3RoKTtcbiAgICBib3R0b21QYXJhbUJvdW5kcy5zZXQocGFyYW1ldGVyQm91bmRzLm1hcCgocGIpID0+IHBiLm1pbiEpKTtcbiAgICB0b3BQYXJhbUJvdW5kcyA9IG5ldyBGbG9hdDMyQXJyYXkocGFyYW1ldGVyQm91bmRzLmxlbmd0aCk7XG4gICAgdG9wUGFyYW1Cb3VuZHMuc2V0KHBhcmFtZXRlckJvdW5kcy5tYXAoKHBiKSA9PiBwYi5tYXghKSk7XG4gIH1cblxuICBjb25zdCBvcHRpbWl6YXRpb24gPSBwZXJmb3JtTmVsZGVyTWVhZE9wdGltaXphdGlvbihvZiwgYm90dG9tUGFyYW1Cb3VuZHMsIHRvcFBhcmFtQm91bmRzLCB7XG4gICAgdG9sZXJhbmNlOiBORUxERVJfTUVBRF9ERUZBVUxUUy5UT0xFUkFOQ0UsXG4gICAgbWF4SXRlcjogTkVMREVSX01FQURfREVGQVVMVFMuTUFYX0lURVIsXG4gICAgbm9uWmVyb1BhcmFtOiBORUxERVJfTUVBRF9ERUZBVUxUUy5OT05fWkVST19QQVJBTSxcbiAgICBpbml0aWFsU2NhbGU6IE5FTERFUl9NRUFEX0RFRkFVTFRTLklOSVRJQUxfU0NBTEUsXG4gICAgc2NhbGVSZWZsZWN0aW9uOiBORUxERVJfTUVBRF9ERUZBVUxUUy5TQ0FMRV9SRUZMRUNUSU9OLFxuICAgIHNjYWxlRXhwYW5zaW9uOiBORUxERVJfTUVBRF9ERUZBVUxUUy5TQ0FMRV9FWFBBTlNJT04sXG4gICAgc2NhbGVDb250cmFjdGlvbjogTkVMREVSX01FQURfREVGQVVMVFMuU0NBTEVfQ09OVFJBQ1RJT04sXG4gIH0sIDEsIHBhcmFtVmFsdWVzKTtcblxuICBwYXJhbVZhbHVlcyA9IG9wdGltaXphdGlvbi5leHRyZW11bXNbMF0ucG9pbnQ7XG4gIGNvbnN0IGZpdHRlZEN1cnZlID0gZ2V0Rml0dGVkQ3VydmUoY3VydmVGdW5jdGlvbiwgcGFyYW1WYWx1ZXMpO1xuXG4gIHJldHVybiB7XG4gICAgZml0dGVkQ3VydmU6IGZpdHRlZEN1cnZlLFxuICAgIHBhcmFtZXRlcnM6IHBhcmFtVmFsdWVzLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rml0dGVkQ3VydmUoY3VydmVGdW5jdGlvbjogKHBhcmFtczogRmxvYXQzMkFycmF5LCB4OiBudW1iZXIpID0+IG51bWJlciwgcGFyYW1WYWx1ZXM6IEZsb2F0MzJBcnJheSk6XG4gKHg6IG51bWJlcikgPT4gbnVtYmVyIHtcbiAgcmV0dXJuICh4OiBudW1iZXIpID0+IHtcbiAgICByZXR1cm4gY3VydmVGdW5jdGlvbihwYXJhbVZhbHVlcywgeCk7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDdXJ2ZUNvbmZpZGVuY2VJbnRlcnZhbHMoZGF0YToge3g6IG51bWJlcltdLCB5OiBudW1iZXJbXX0sIHBhcmFtVmFsdWVzOiBGbG9hdDMyQXJyYXksXG4gIGN1cnZlRnVuY3Rpb246IChwYXJhbXM6IEZsb2F0MzJBcnJheSwgeDogbnVtYmVyKSA9PiBudW1iZXIsIGNvbmZpZGVuY2VMZXZlbDogbnVtYmVyID0gMC4wNSwgZXJyb3JNb2RlbDogRml0RXJyb3JNb2RlbFR5cGUpOlxuICBGaXRDb25maWRlbmNlSW50ZXJ2YWxzIHtcbiAgY29uc3QgZXJyb3IgPSBnZXRTaWdtYShjdXJ2ZUZ1bmN0aW9uLCBkYXRhLCBlcnJvck1vZGVsLCBwYXJhbVZhbHVlcyk7XG4gIGNvbnN0IHF1YW50aWxlID0galN0YXQubm9ybWFsLmludigxIC0gY29uZmlkZW5jZUxldmVsLzIsIDAsIDEpO1xuXG4gIGNvbnN0IHRvcCA9ICh4OiBudW1iZXIpID0+IHtcbiAgICBjb25zdCB2YWx1ZSA9IGN1cnZlRnVuY3Rpb24ocGFyYW1WYWx1ZXMsIHgpO1xuICAgIHJldHVybiB2YWx1ZSArIHF1YW50aWxlICogKGVycm9yLnNpZ21hQSArIE1hdGguYWJzKHZhbHVlKSAqIGVycm9yLnNpZ21hQik7XG4gIH07XG5cbiAgY29uc3QgYm90dG9tID0gKHg6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IHZhbHVlID0gY3VydmVGdW5jdGlvbihwYXJhbVZhbHVlcywgeCk7XG4gICAgcmV0dXJuIHZhbHVlIC0gcXVhbnRpbGUgKiAoZXJyb3Iuc2lnbWFBICsgTWF0aC5hYnModmFsdWUpICogZXJyb3Iuc2lnbWFCKTtcbiAgfTtcblxuICByZXR1cm4ge2NvbmZpZGVuY2VUb3A6IHRvcCwgY29uZmlkZW5jZUJvdHRvbTogYm90dG9tfTtcbn1cblxuLy8gVE9ETzogZm9yIGxpbmVhciAtIHNsb3BlIC0gQSwgaW50ZXJjZXB0WSAtIEJcbmV4cG9ydCBmdW5jdGlvbiBnZXRTdGF0aXN0aWNzKGRhdGE6IHt4OiBudW1iZXJbXSwgeTogbnVtYmVyW119LCBwYXJhbVZhbHVlczogRmxvYXQzMkFycmF5LFxuICBjdXJ2ZUZ1bmN0aW9uOiAocGFyYW1zOiBGbG9hdDMyQXJyYXksIHg6IG51bWJlcikgPT4gbnVtYmVyLCBzdGF0aXN0aWNzOiBib29sZWFuID0gdHJ1ZSk6IEZpdFN0YXRpc3RpY3Mge1xuICBjb25zdCBmaXR0ZWRDdXJ2ZSA9IGdldEZpdHRlZEN1cnZlKGN1cnZlRnVuY3Rpb24sIHBhcmFtVmFsdWVzKTtcblxuICByZXR1cm4ge1xuICAgIHJTcXVhcmVkOiBzdGF0aXN0aWNzID8gZ2V0RGV0Q29lZmYoZml0dGVkQ3VydmUsIGRhdGEpIDogdW5kZWZpbmVkLFxuICAgIGF1Yzogc3RhdGlzdGljcyA/IGdldEF1YyhmaXR0ZWRDdXJ2ZSwgZGF0YSkgOiB1bmRlZmluZWQsXG4gICAgaW50ZXJjZXB0WDogcGFyYW1WYWx1ZXNbMl0sXG4gICAgaW50ZXJjZXB0WTogZml0dGVkQ3VydmUocGFyYW1WYWx1ZXNbMl0pLFxuICAgIHNsb3BlOiBwYXJhbVZhbHVlc1sxXSxcbiAgICB0b3A6IHBhcmFtVmFsdWVzWzBdLFxuICAgIGJvdHRvbTogcGFyYW1WYWx1ZXNbM10sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbnZlcnRlZEZ1bmN0aW9ucyhkYXRhOiB7eDogbnVtYmVyW10sIHk6IG51bWJlcltdfSwgcGFyYW1WYWx1ZXM6IG51bWJlcltdLFxuICBjb25maWRlbmNlTGV2ZWw6IG51bWJlciA9IDAuMDUsIHN0YXRpc3RpY3M6IGJvb2xlYW4gPSB0cnVlKTogRml0SW52ZXJ0ZWRGdW5jdGlvbnMgfCBudWxsIHtcbiAgY29uc3Qgc3R1ZGVudFEgPSBqU3RhdC5zdHVkZW50dC5pbnYoMSAtIGNvbmZpZGVuY2VMZXZlbCAvIDIsIGRhdGEueC5sZW5ndGggLSBwYXJhbVZhbHVlcy5sZW5ndGgpO1xuXG4gIGxldCBpbnY6ICh5OiBudW1iZXIpID0+IG51bWJlciA9ICh5OiBudW1iZXIpID0+IHtcbiAgICByZXR1cm4gMDtcbiAgfTtcbiAgbGV0IGludlRvcDogKHk6IG51bWJlcikgPT4gbnVtYmVyID0gKHk6IG51bWJlcikgPT4ge1xuICAgIHJldHVybiAwO1xuICB9O1xuICBsZXQgaW52Qm90dG9tOiAoeTogbnVtYmVyKSA9PiBudW1iZXIgPSAoeTogbnVtYmVyKSA9PiB7XG4gICAgcmV0dXJuIDA7XG4gIH07XG5cbiAgaWYgKHN0YXRpc3RpY3MpIHtcbiAgICBpbnYgPSAoeTogbnVtYmVyKSA9PiB7XG4gICAgICAvL3Nob3VsZCBjaGVjayBpZiBtb3JlIHRoYW4gYm90dG9tIGFuZCBsZXNzIHRoYW4gdG9wXG4gICAgICByZXR1cm4gcGFyYW1WYWx1ZXNbMl0gLyBNYXRoLnBvdygocGFyYW1WYWx1ZXNbMF0gLSB5KSAvICh5IC0gcGFyYW1WYWx1ZXNbM10pLCAxIC8gcGFyYW1WYWx1ZXNbMV0pO1xuICAgIH07XG5cbiAgICBjb25zdCBlcnJvciA9IGdldEludkVycm9yKGludiwgZGF0YSk7XG5cbiAgICBpbnZUb3AgPSAoeTogbnVtYmVyKSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGludih5KTtcbiAgICAgIHJldHVybiB2YWx1ZSArIHN0dWRlbnRRICogZXJyb3IgLyBNYXRoLnNxcnQoZGF0YS55Lmxlbmd0aCk7XG4gICAgfTtcblxuICAgIGludkJvdHRvbSA9ICh5OiBudW1iZXIpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gaW52KHkpO1xuICAgICAgcmV0dXJuIHZhbHVlIC0gc3R1ZGVudFEgKiBlcnJvciAvIE1hdGguc3FydChkYXRhLnkubGVuZ3RoKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGludmVydGVkOiBpbnYsXG4gICAgICBpbnZlcnRlZFRvcDogaW52VG9wLFxuICAgICAgaW52ZXJ0ZWRCb3R0b206IGludkJvdHRvbSxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaWdtb2lkKHBhcmFtczogRmxvYXQzMkFycmF5LCB4OiBudW1iZXIpOiBudW1iZXIge1xuICBjb25zdCBBID0gcGFyYW1zWzBdO1xuICBjb25zdCBCID0gcGFyYW1zWzFdO1xuICBjb25zdCBDID0gcGFyYW1zWzJdO1xuICBjb25zdCBEID0gcGFyYW1zWzNdO1xuICByZXR1cm4gKEQgKyAoQSAtIEQpIC8gKDEgKyBNYXRoLnBvdygxMCwgKHggLSBDKSAqIEIpKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsaW5lYXIocGFyYW1zOiBGbG9hdDMyQXJyYXksIHg6IG51bWJlcik6IG51bWJlciB7XG4gIGNvbnN0IEEgPSBwYXJhbXNbMF07XG4gIGNvbnN0IEIgPSBwYXJhbXNbMV07XG4gIHJldHVybiBBICogeCArIEI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2dMaW5lYXIocGFyYW1zOiBGbG9hdDMyQXJyYXksIHg6IG51bWJlcik6IG51bWJlciB7XG4gIGNvbnN0IEEgPSBwYXJhbXNbMF07XG4gIGNvbnN0IEIgPSBwYXJhbXNbMV07XG4gIHJldHVybiBBICogTWF0aC5sb2coeCArIDEpICsgQjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEF1YyhmaXR0ZWRDdXJ2ZTogKHg6IG51bWJlcikgPT4gbnVtYmVyLCBkYXRhOiB7eDogbnVtYmVyW10sIHk6IG51bWJlcltdfSk6IG51bWJlciB7XG4gIGxldCBhdWMgPSAwO1xuICBjb25zdCBtaW4gPSBNYXRoLm1pbiguLi5kYXRhLngpO1xuICBjb25zdCBtYXggPSBNYXRoLm1heCguLi5kYXRhLngpO1xuICBjb25zdCBpbnRlZ3JhdGlvblN0ZXAgPSAobWF4IC0gbWluKSAvIDEwMDA7XG4gIGZvciAobGV0IHggPSBtaW47IHggPCBtYXg7IHgrPSBpbnRlZ3JhdGlvblN0ZXApXG4gICAgYXVjICs9IGludGVncmF0aW9uU3RlcCAqIGZpdHRlZEN1cnZlKHgpO1xuXG4gIHJldHVybiBhdWM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZXRDb2VmZihmaXR0ZWRDdXJ2ZTogKHg6IG51bWJlcikgPT4gbnVtYmVyLCBkYXRhOiB7eDogbnVtYmVyW10sIHk6IG51bWJlcltdfSk6IG51bWJlciB7XG4gIGxldCBzc1JlcyA9IDA7XG4gIGxldCBzc1RvdCA9IDA7XG4gIGNvbnN0IHlNZWFuID0galN0YXQubWVhbihkYXRhLnkpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEueC5sZW5ndGg7IGkrKykge1xuICAgIHNzUmVzICs9IE1hdGgucG93KGRhdGEueVtpXSAtIGZpdHRlZEN1cnZlKGRhdGEueFtpXSksIDIpO1xuICAgIHNzVG90ICs9IE1hdGgucG93KGRhdGEueVtpXSAtIHlNZWFuLCAyKTtcbiAgfVxuXG4gIHJldHVybiAxIC0gc3NSZXMgLyBzc1RvdDtcbn1cblxuZnVuY3Rpb24gZ2V0SW52RXJyb3IodGFyZ2V0RnVuYzogKHk6IG51bWJlcikgPT4gbnVtYmVyLCBkYXRhOiB7eTogbnVtYmVyW10sIHg6IG51bWJlcltdfSk6IG51bWJlciB7XG4gIGxldCBzaWdtYSA9IDA7XG4gIGxldCBzaWdtYVNxID0gMDtcbiAgY29uc3QgcmVzaWR1ZXNTcXVhcmVzID0gbmV3IEZsb2F0MzJBcnJheShkYXRhLnkubGVuZ3RoKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLnkubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBvYnMgPSBkYXRhLnhbaV07XG4gICAgY29uc3QgcHJlZCA9IHRhcmdldEZ1bmMoZGF0YS55W2ldKTtcbiAgICByZXNpZHVlc1NxdWFyZXNbaV0gPSBNYXRoLnBvdyhvYnMgLSBwcmVkLCAyKTtcbiAgfVxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzaWR1ZXNTcXVhcmVzLmxlbmd0aDsgaSsrKVxuICAgIHNpZ21hU3EgKz0gcmVzaWR1ZXNTcXVhcmVzW2ldO1xuXG4gIHNpZ21hU3EgLz0gcmVzaWR1ZXNTcXVhcmVzLmxlbmd0aDtcbiAgc2lnbWEgPSBNYXRoLnNxcnQoc2lnbWFTcSk7XG5cbiAgcmV0dXJuIHNpZ21hO1xufVxuXG5mdW5jdGlvbiBvYmplY3RpdmVGYWN0b3J5KHRhcmdldEZ1bmM6IChwYXJhbXM6IEZsb2F0MzJBcnJheSwgeDogbnVtYmVyKSA9PiBudW1iZXIsXG4gIGRhdGE6IHt5OiBudW1iZXJbXSwgeDogbnVtYmVyW119LCBlcnJvck1vZGVsOiBGaXRFcnJvck1vZGVsVHlwZSk6IChwYXJhbXM6IEZsb2F0MzJBcnJheSkgPT4gbnVtYmVyIHtcbiAgcmV0dXJuIChwYXJhbXM6IEZsb2F0MzJBcnJheSkgPT4ge1xuICAgIGxldCBsaWtlbGlob29kID0gMDtcbiAgICBsZXQgc2lnbWFBID0gMDtcbiAgICBsZXQgc2lnbWFCID0gMDtcblxuICAgIGNvbnN0IG9icyA9IGRhdGEueTtcbiAgICBjb25zdCBwcmVkID0gZGF0YS54Lm1hcCgoeCkgPT4gdGFyZ2V0RnVuYyhwYXJhbXMsIHgpKTtcbiAgICBjb25zdCByZXNpZHVhbHMgPSBvYnMubWFwKChvYnMsIGkpID0+IG9icyAtIHByZWRbaV0pO1xuICAgIGNvbnN0IHJlc2lkdWVzU3F1YXJlcyA9IHJlc2lkdWFscy5tYXAoKHJlcykgPT4gTWF0aC5wb3cocmVzLCAyKSk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlc2lkdWVzU3F1YXJlcy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKFtGaXRFcnJvck1vZGVsLkNPTlNUQU5ULCBGaXRFcnJvck1vZGVsLkNPTUJJTkVEXS5pbmNsdWRlcyhlcnJvck1vZGVsKSlcbiAgICAgICAgc2lnbWFBICs9IHJlc2lkdWVzU3F1YXJlc1tpXTtcbiAgICAgIGVsc2UgaWYgKGVycm9yTW9kZWwgPT09IEZpdEVycm9yTW9kZWwuUFJPUE9SVElPTkFMKVxuICAgICAgICBzaWdtYUIgKz0gcmVzaWR1ZXNTcXVhcmVzW2ldIC8gKHByZWRbaV0gKiBwcmVkW2ldKTtcbiAgICB9XG4gICAgc2lnbWFBID0gTWF0aC5zcXJ0KHNpZ21hQSAvIHJlc2lkdWVzU3F1YXJlcy5sZW5ndGgpO1xuICAgIHNpZ21hQiA9IE1hdGguc3FydChzaWdtYUIgLyByZXNpZHVlc1NxdWFyZXMubGVuZ3RoKTtcblxuICAgIGlmIChlcnJvck1vZGVsID09PSBGaXRFcnJvck1vZGVsLkNPTUJJTkVEKVxuICAgICAgKHtzaWdtYUEsIHNpZ21hQn0gPSBnZXRTaWdtYXNGb3JDb21iaW5lZEVycm9yTW9kZWwoc2lnbWFBLCBzaWdtYUIsIHJlc2lkdWVzU3F1YXJlcywgcHJlZCkpO1xuXG4gICAgY29uc3Qgc2lnbWFTcUk6IG51bWJlcltdID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXNpZHVlc1NxdWFyZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHNpZ21hU3FJW2ldID0gTWF0aC5wb3coc2lnbWFBICsgc2lnbWFCICogcHJlZFtpXSwgMik7XG4gICAgICBsaWtlbGlob29kICs9IHJlc2lkdWVzU3F1YXJlc1tpXSAvIHNpZ21hU3FJW2ldICsgTWF0aC5sb2coMiAqIE1hdGguUEkgKiBzaWdtYVNxSVtpXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxpa2VsaWhvb2Q7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldFNpZ21hKHRhcmdldEZ1bmM6IChwYXJhbXM6IEZsb2F0MzJBcnJheSwgeDogbnVtYmVyKSA9PiBudW1iZXIsXG4gIGRhdGE6IHt5OiBudW1iZXJbXSwgeDogbnVtYmVyW119LCBlcnJvck1vZGVsOiBGaXRFcnJvck1vZGVsVHlwZSwgcGFyYW1zOiBGbG9hdDMyQXJyYXkpOiB7c2lnbWFBOiBudW1iZXIsIHNpZ21hQjogbnVtYmVyfSB7XG4gIGxldCBzaWdtYUEgPSAwO1xuICBsZXQgc2lnbWFCID0gMDtcblxuICBjb25zdCBvYnMgPSBkYXRhLnk7XG4gIGNvbnN0IHByZWQgPSBkYXRhLngubWFwKCh4KSA9PiB0YXJnZXRGdW5jKHBhcmFtcywgeCkpO1xuICBjb25zdCByZXNpZHVhbHMgPSBvYnMubWFwKChvYnMsIGkpID0+IG9icyAtIHByZWRbaV0pO1xuICBjb25zdCByZXNpZHVlc1NxdWFyZXMgPSByZXNpZHVhbHMubWFwKChyZXMpID0+IE1hdGgucG93KHJlcywgMikpO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzaWR1ZXNTcXVhcmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKFtGaXRFcnJvck1vZGVsLkNPTlNUQU5ULCBGaXRFcnJvck1vZGVsLkNPTUJJTkVEXS5pbmNsdWRlcyhlcnJvck1vZGVsKSlcbiAgICAgIHNpZ21hQSArPSByZXNpZHVlc1NxdWFyZXNbaV07XG4gICAgZWxzZSBpZiAoZXJyb3JNb2RlbCA9PT0gRml0RXJyb3JNb2RlbC5QUk9QT1JUSU9OQUwpXG4gICAgICBzaWdtYUIgKz0gTWF0aC5wb3cocmVzaWR1YWxzW2ldIC8gTWF0aC5hYnMocHJlZFtpXSksIDIpO1xuICB9XG4gIHNpZ21hQSA9IE1hdGguc3FydChzaWdtYUEgLyByZXNpZHVlc1NxdWFyZXMubGVuZ3RoKTtcbiAgc2lnbWFCID0gTWF0aC5zcXJ0KHNpZ21hQiAvIHJlc2lkdWVzU3F1YXJlcy5sZW5ndGgpO1xuXG4gIGlmIChlcnJvck1vZGVsID09PSBGaXRFcnJvck1vZGVsLkNPTUJJTkVEKVxuICAgICh7c2lnbWFBLCBzaWdtYUJ9ID0gZ2V0U2lnbWFzRm9yQ29tYmluZWRFcnJvck1vZGVsKHNpZ21hQSwgc2lnbWFCLCByZXNpZHVlc1NxdWFyZXMsIHByZWQpKTtcblxuICByZXR1cm4ge3NpZ21hQSwgc2lnbWFCfTtcbn1cblxuZnVuY3Rpb24gZ2V0U2lnbWFzRm9yQ29tYmluZWRFcnJvck1vZGVsKHNpZ21hQTogbnVtYmVyLCBzaWdtYUI6IG51bWJlciwgcmVzaWR1ZXNTcXVhcmVzOiBudW1iZXJbXSwgcHJlZDogbnVtYmVyW10pOlxuICB7c2lnbWFBOiBudW1iZXIsIHNpZ21hQjogbnVtYmVyfSB7XG4gIGxldCBsaWtlbGlob29kQ29tYmluZWQgPSBOdW1iZXIuTUFYX1ZBTFVFO1xuICBsZXQgZmluYWxQcm9wb3J0aW9uID0gMDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPD0gMTA7IGkrKykge1xuICAgIGxldCBsaWtlbGlob29kQ29tYmluZWRMb2NhbCA9IDA7XG4gICAgY29uc3QgcHJvcG9ydGlvbiA9IGkgLyAxMDtcbiAgICBjb25zdCBzaWdtYUFDb21iaW5lZCA9IHNpZ21hQSAqIHByb3BvcnRpb247XG4gICAgY29uc3Qgc2lnbWFCQ29tYmluZWQgPSBzaWdtYUEgKiAoMSAtIHByb3BvcnRpb24pO1xuICAgIGNvbnN0IHNpZ21hU3FJQ29tYmluZWQ6IG51bWJlcltdID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXNpZHVlc1NxdWFyZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHNpZ21hU3FJQ29tYmluZWRbaV0gPSBNYXRoLnBvdyhzaWdtYUFDb21iaW5lZCArIHNpZ21hQkNvbWJpbmVkICogcHJlZFtpXSwgMik7XG4gICAgICBsaWtlbGlob29kQ29tYmluZWRMb2NhbCArPSByZXNpZHVlc1NxdWFyZXNbaV0gLyBzaWdtYVNxSUNvbWJpbmVkW2ldICsgTWF0aC5sb2coMiAqIE1hdGguUEkgKiBzaWdtYVNxSUNvbWJpbmVkW2ldKTtcbiAgICB9XG4gICAgaWYgKGxpa2VsaWhvb2RDb21iaW5lZExvY2FsIDwgbGlrZWxpaG9vZENvbWJpbmVkKSB7XG4gICAgICBsaWtlbGlob29kQ29tYmluZWQgPSBsaWtlbGlob29kQ29tYmluZWRMb2NhbDtcbiAgICAgIGZpbmFsUHJvcG9ydGlvbiA9IHByb3BvcnRpb247XG4gICAgfVxuICB9XG4gIHNpZ21hQiA9IHNpZ21hQSAqICgxIC0gZmluYWxQcm9wb3J0aW9uKTtcbiAgc2lnbWFBID0gc2lnbWFBICogZmluYWxQcm9wb3J0aW9uO1xuXG4gIHJldHVybiB7c2lnbWFBLCBzaWdtYUJ9O1xufVxuIl19
|