@esfaenza/es-charts 11.2.28 → 11.2.31
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/bundles/esfaenza-es-charts.umd.js +19 -17
- package/bundles/esfaenza-es-charts.umd.js.map +1 -1
- package/bundles/esfaenza-es-charts.umd.min.js +1 -1
- package/bundles/esfaenza-es-charts.umd.min.js.map +1 -1
- package/esm2015/lib/models/data/Vertical2DChartData.js +4 -4
- package/esm2015/lib/services/LineChartService.js +15 -13
- package/esm2015/lib/services/Vertical2DChartService.js +3 -3
- package/fesm2015/esfaenza-es-charts.js +19 -17
- package/fesm2015/esfaenza-es-charts.js.map +1 -1
- package/lib/models/data/Vertical2DChartData.d.ts +3 -3
- package/package.json +1 -1
|
@@ -6,11 +6,11 @@ export class Vertical2DChartData {
|
|
|
6
6
|
* Costruttore
|
|
7
7
|
*
|
|
8
8
|
* @param {{ name: string; values: KeyValue[]; }[]} groups Gruppi di valori raggruppati per nome
|
|
9
|
-
* @param {{ color: string }[]}
|
|
9
|
+
* @param {{ color: string }[]} colorinfos Lista dei colori da utilizzare. Vanno a sovrascrivere quelli di default di amcharts
|
|
10
10
|
*/
|
|
11
|
-
constructor(groups = [],
|
|
11
|
+
constructor(groups = [], colorinfos) {
|
|
12
12
|
this.groups = groups;
|
|
13
|
-
this.
|
|
13
|
+
this.colorinfos = colorinfos;
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmVydGljYWwyRENoYXJ0RGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VzLWNoYXJ0cy9zcmMvbGliL21vZGVscy9kYXRhL1ZlcnRpY2FsMkRDaGFydERhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7O0dBRUc7QUFDSCxNQUFNLE9BQU8sbUJBQW1CO0lBRTVCOzs7OztPQUtHO0lBQ0gsWUFBbUIsU0FBaUQsRUFBRSxFQUFTLFVBQWdDO1FBQTVGLFdBQU0sR0FBTixNQUFNLENBQTZDO1FBQVMsZUFBVSxHQUFWLFVBQVUsQ0FBc0I7SUFBSSxDQUFDO0NBQ3ZIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgS2V5VmFsdWUgfSBmcm9tICcuL2Jhc2UvS2V5VmFsdWUnO1xyXG5cclxuLyoqXHJcbiAqIERhdGkgcmVsYXRpdmkgYSB1biBncmFmaWNvIGRpIHRpcG8gVmVydGljYWwyRENoYXJ0XHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgVmVydGljYWwyRENoYXJ0RGF0YSB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb3N0cnV0dG9yZVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3sgbmFtZTogc3RyaW5nOyB2YWx1ZXM6IEtleVZhbHVlW107IH1bXX0gZ3JvdXBzIEdydXBwaSBkaSB2YWxvcmkgcmFnZ3J1cHBhdGkgcGVyIG5vbWVcclxuICAgICAqIEBwYXJhbSB7eyBjb2xvcjogc3RyaW5nIH1bXX0gY29sb3JpbmZvcyBMaXN0YSBkZWkgY29sb3JpIGRhIHV0aWxpenphcmUuIFZhbm5vIGEgc292cmFzY3JpdmVyZSBxdWVsbGkgZGkgZGVmYXVsdCBkaSBhbWNoYXJ0c1xyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZ3JvdXBzOiB7IG5hbWU6IHN0cmluZywgdmFsdWVzOiBLZXlWYWx1ZVtdIH1bXSA9IFtdLCBwdWJsaWMgY29sb3JpbmZvcz86IHsgY29sb3I6IHN0cmluZyB9W10pIHsgfVxyXG59Il19
|
|
@@ -51,7 +51,7 @@ export class LineChartService {
|
|
|
51
51
|
let limits = limitNullOrUndef ? [] : !dataConverted.limit.length ? [dataConverted.limit] : dataConverted.limit;
|
|
52
52
|
if (limits.length > 0) {
|
|
53
53
|
for (let i = 0; i < limits.length; i++) {
|
|
54
|
-
let limit =
|
|
54
|
+
let limit = limits[i];
|
|
55
55
|
if (limit.upper != null && limit.upper != undefined && limit.lower != null && limit.lower != undefined) {
|
|
56
56
|
let range = yAxis.axisRanges.create();
|
|
57
57
|
range.value = limit.lower;
|
|
@@ -128,15 +128,8 @@ export class LineChartService {
|
|
|
128
128
|
let seriesToPush = [];
|
|
129
129
|
let seriesColors = [];
|
|
130
130
|
let defaultIndex = 0;
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
this.ChartInstance.data = this.generateSingleDataset(dataConverted);
|
|
134
|
-
;
|
|
135
|
-
dateAxis.cursorTooltipEnabled = false;
|
|
136
|
-
}
|
|
137
|
-
//-- Fine generazione
|
|
138
|
-
dataConverted.series.forEach((s, index) => {
|
|
139
|
-
var _a, _b, _c;
|
|
131
|
+
// Ordinamento dei dati se serve
|
|
132
|
+
dataConverted.series.forEach((s) => {
|
|
140
133
|
if (s.values[0] && !(s.values[0].d instanceof Date)) {
|
|
141
134
|
for (let v = 0; v < s.values.length; v++)
|
|
142
135
|
s.values[v].d = new Date(s.values[v].d);
|
|
@@ -153,6 +146,15 @@ export class LineChartService {
|
|
|
153
146
|
}
|
|
154
147
|
if (!correctOrder)
|
|
155
148
|
s.values.sort((d1, d2) => d1.d.getTime() - d2.d.getTime());
|
|
149
|
+
});
|
|
150
|
+
// Generazione di un unico dataset invece che N, per poter gestire un unico tooltip
|
|
151
|
+
if (this.singleDataSet) {
|
|
152
|
+
this.ChartInstance.data = this.generateSingleDataset(dataConverted);
|
|
153
|
+
;
|
|
154
|
+
dateAxis.cursorTooltipEnabled = false;
|
|
155
|
+
}
|
|
156
|
+
dataConverted.series.forEach((s, index) => {
|
|
157
|
+
var _a, _b, _c;
|
|
156
158
|
let fill = s.fill != null && s.fill != undefined ? s.fill : ((_a = settings === null || settings === void 0 ? void 0 : settings.Fill) !== null && _a !== void 0 ? _a : false);
|
|
157
159
|
let series = (settings === null || settings === void 0 ? void 0 : settings.Step) ? new am4charts.StepLineSeries() : new am4charts.LineSeries();
|
|
158
160
|
series.dataFields.valueY = "v" + (this.singleDataSet ? index : "");
|
|
@@ -178,7 +180,7 @@ export class LineChartService {
|
|
|
178
180
|
series.tooltip.hiddenState.transitionDuration = 0;
|
|
179
181
|
//Utilizzo il mio dateService per la formattazione della data in modo che non debba mai gestire n formati fra n librerie... bellissimo
|
|
180
182
|
series.dateFormatter.format = (source) => {
|
|
181
|
-
if (interval && finalInstant) {
|
|
183
|
+
if (interval && finalInstant && ["hour", "minute", "second"].includes(interval.timeunit)) {
|
|
182
184
|
let timepart = null;
|
|
183
185
|
switch (interval.timeunit) {
|
|
184
186
|
case "hour":
|
|
@@ -195,7 +197,7 @@ export class LineChartService {
|
|
|
195
197
|
return this.dateExts.adjustDateToFinalInstant(source, timepart, interval ? interval.timeunit == "second" : false);
|
|
196
198
|
}
|
|
197
199
|
else
|
|
198
|
-
return this.dateExts.getFormatted(source, false, interval ? interval.timeunit == "second" : false);
|
|
200
|
+
return this.dateExts.getFormatted(source, interval ? ["day", "week", "month", "year"].includes(interval.timeunit) : false, interval ? interval.timeunit == "second" : false);
|
|
199
201
|
};
|
|
200
202
|
series.adapter.add("tooltipText", () => {
|
|
201
203
|
var text = "[bold]{dateX.formatDate()}[/]\n";
|
|
@@ -364,4 +366,4 @@ export class LineChartService {
|
|
|
364
366
|
this.executionTimers[id] = setTimeout(() => { func(); this.executionTimers[id] = null; }, throttleTime);
|
|
365
367
|
}
|
|
366
368
|
}
|
|
367
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGluZUNoYXJ0U2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VzLWNoYXJ0cy9zcmMvbGliL3NlcnZpY2VzL0xpbmVDaGFydFNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUUEsT0FBTyxLQUFLLE9BQU8sTUFBTSwwQkFBMEIsQ0FBQztBQUNwRCxPQUFPLEtBQUssU0FBUyxNQUFNLDRCQUE0QixDQUFDO0FBRXhEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGdCQUFnQjtJQVN6QixjQUFjO0lBQ2QsWUFBbUIsT0FBb0IsRUFBVSxRQUFxQjtRQUFuRCxZQUFPLEdBQVAsT0FBTyxDQUFhO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQVB0RSxjQUFjO1FBQ04sd0JBQW1CLEdBQVcsSUFBSSxDQUFDO1FBQzNDLGNBQWM7UUFDTixzQkFBaUIsR0FBVyxHQUFHLENBQUM7UUFDeEMsY0FBYztRQUNOLGtCQUFhLEdBQVksS0FBSyxDQUFDO1FBc1l2Qyx1R0FBdUc7UUFDdkcsK0RBQStEO1FBQy9ELGNBQWM7UUFDTixvQkFBZSxHQUE2QixFQUFFLENBQUM7SUF2WW1CLENBQUM7SUFLM0U7O09BRUc7SUFDSSxVQUFVLENBQUMsSUFBeUIsRUFBRSxRQUEyQjs7UUFDcEUsSUFBSSxhQUFhLEdBQWtCLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNsRyxJQUFJLFNBQVMsU0FBRyxRQUFRLENBQUMscUJBQXFCLG1DQUFJLElBQUksQ0FBQztRQUN2RCxJQUFJLENBQUMsYUFBYSxTQUFHLFFBQVEsQ0FBQyxhQUFhLG1DQUFJLEtBQUssQ0FBQztRQUNyRCxJQUFJLFNBQVMsR0FBRyxRQUFRLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFD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ZCxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUN0QyxJQUFJLElBQUksR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDO1lBQ0gsTUFBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtnQkFDckQsT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLElBQUk7b0JBQ0wsT0FBTyxDQUFDLFVBQVUsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO1lBQzNDLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLElBQUk7Z0JBQ0wsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQzFFLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQU1ELGNBQWM7SUFDTixRQUFRLENBQUMsRUFBVSxFQUFFLElBQWMsRUFBRSxZQUFvQjtRQUM3RCw2REFBNkQ7UUFDN0QsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztZQUN4QixZQUFZLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRTNDLCtFQUErRTtRQUMvRSxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQzVHLENBQUM7Q0FFSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVTZXJ2aWNlIH0gZnJvbSBcIkBlc2ZhZW56YS9leHRlbnNpb25zXCI7XHJcbmltcG9ydCB7IElCYXNlU2VydmljZSB9IGZyb20gJy4vYmFzZS9JQmFzZVNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCYXNlQWRhcHRlciB9IGZyb20gJy4uL2FkYXB0ZXJzL0Jhc2VBZGFwdGVyJztcclxuXHJcbmltcG9ydCB7IExpbWl0IH0gZnJvbSBcIi4uL21vZGVscy9kYXRhL2Jhc2UvTGltaXRcIjtcclxuaW1wb3J0IHsgTGluZUNoYXJ0RGF0YSB9IGZyb20gJy4uL21vZGVscy9kYXRhL0xpbmVDaGFydERhdGEnO1xyXG5pbXBvcnQgeyBMaW5lQ2hhcnRTZXR0aW5ncyB9IGZyb20gJy4uL21vZGVscy9zZXR0aW5ncy9MaW5lQ2hhcnRTZXR0aW5ncyc7XHJcblxyXG5pbXBvcnQgKiBhcyBhbTRjb3JlIGZyb20gXCJAYW1jaGFydHMvYW1jaGFydHM0L2NvcmVcIjtcclxuaW1wb3J0ICogYXMgYW00Y2hhcnRzIGZyb20gXCJAYW1jaGFydHMvYW1jaGFydHM0L2NoYXJ0c1wiO1xyXG5cclxuLyoqXHJcbiAqIENsYXNzZSBpbCBjdWkgdW5pY28gc2NvcG8gw6ggZ2VzdGlyZSBpbCBzZXR1cCBlIHJlbmRlcmluZyBkaSB1biBMaW5lQ2hhcnRcclxuICovXHJcbmV4cG9ydCBjbGFzcyBMaW5lQ2hhcnRTZXJ2aWNlIGltcGxlbWVudHMgSUJhc2VTZXJ2aWNlPGFtNGNoYXJ0cy5YWUNoYXJ0PntcclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBwdWJsaWMgQ2hhcnRJbnN0YW5jZTogYW00Y2hhcnRzLlhZQ2hhcnQ7XHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgcHJpdmF0ZSBEYXRhR3JvdXBCdWNrZXRTaXplOiBudW1iZXIgPSAxNTAwO1xyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIHByaXZhdGUgT3BhY2l0eU9uU2VsZWN0ZWQ6IG51bWJlciA9IDAuMztcclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBwcml2YXRlIHNpbmdsZURhdGFTZXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgQWRhcHRlcjogQmFzZUFkYXB0ZXIsIHByaXZhdGUgZGF0ZUV4dHM6IERhdGVTZXJ2aWNlKSB7IH1cclxuXHJcbiAgICAvKiogUmlmZWlybWVudG8gaW50ZXJubyBhbGwnYXNzZSBkZWxsZSBEYXRlIHBlciBzZW1wbGljaXTDoCAqL1xyXG4gICAgcHJpdmF0ZSBkYXRlQXhpczogYW00Y2hhcnRzLkRhdGVBeGlzO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0b2RvIGNoZSBkYXRhIHVuYSBjb3BwaWEgRGF0aSAtIEltcG9zdGF6aW9uaSBsaSB1dGlsaXp6YSBwZXIgY3JlYXJlIGUgdmlzdWFsaXp6YXJlIHVuIExpbmVDaGFydFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ3JhcGhpY2F0ZShkYXRhOiBMaW5lQ2hhcnREYXRhIHwgYW55LCBzZXR0aW5nczogTGluZUNoYXJ0U2V0dGluZ3MpOiBJQmFzZVNlcnZpY2U8YW00Y2hhcnRzLlhZQ2hhcnQ+IHtcclxuICAgICAgICBsZXQgZGF0YUNvbnZlcnRlZDogTGluZUNoYXJ0RGF0YSA9IHRoaXMuQWRhcHRlciA/IHRoaXMuQWRhcHRlci5hZGFwdERhdGFGb3JMaW5lQ2hhcnQoZGF0YSkgOiBkYXRhO1xyXG4gICAgICAgIGxldCB0aHJlc2hvbGQgPSBzZXR0aW5ncy5EYXRhR3JvdXBpbmdUaHJlc2hvbGQgPz8gMzAwMDtcclxuICAgICAgICB0aGlzLnNpbmdsZURhdGFTZXQgPSBzZXR0aW5ncy5NZXJnZURhdGFzZXRzID8/IGZhbHNlO1xyXG4gICAgICAgIGxldCBzaG93VGlja3MgPSBzZXR0aW5ncy5TaG93VGlja3MgPT0gbnVsbCA/IHRydWUgOiBzZXR0aW5ncz8uU2hvd1RpY2tzO1xyXG4gICAgICAgIGxldCBkYXRhU2hvdWxkQmVHcm91cGVkID0gTWF0aC5tYXgoLi4uZGF0YUNvbnZlcnRlZC5zZXJpZXMubWFwKHQgPT4gdC52YWx1ZXMubGVuZ3RoKSkgPiB0aHJlc2hvbGQ7XHJcbiAgICAgICAgbGV0IHNob3dUaW1lbGluZSA9IHNldHRpbmdzLlRpbWVsaW5lIHx8IGRhdGFTaG91bGRCZUdyb3VwZWQ7XHJcbiAgICAgICAgbGV0IHNlcmllc1dpdGhJbnRlcnZhbCA9IGRhdGFDb252ZXJ0ZWQuc2VyaWVzLnNvbWUodCA9PiB0LmludGVydmFsKTtcclxuICAgICAgICBsZXQgaW50ZXJ2YWwgPSBzZXJpZXNXaXRoSW50ZXJ2YWwgPyBkYXRhQ29udmVydGVkLnNlcmllcy5maW5kKHQgPT4gdC5pbnRlcnZhbCkuaW50ZXJ2YWwgOiBudWxsO1xyXG4gICAgICAgIGxldCBnYXBzQWxsb3dlZCA9IHNldHRpbmdzPy5BbGxvd0dhcHMgPT0gbnVsbCA/IHNlcmllc1dpdGhJbnRlcnZhbCA6IHNldHRpbmdzPy5BbGxvd0dhcHM7XHJcbiAgICAgICAgbGV0IGZpbmFsSW5zdGFudCA9IHNldHRpbmdzPy5GaW5hbEluc3RhbnRzID8/IHRydWU7XHJcblxyXG4gICAgICAgIC8vUGVyIGV2aXRhcmUgZGkgZGltZW50aWNhcm1lbGkgZSBnZXN0aXJlIGNvbXVucXVlIGJlbmUgZ2xpIG5naWYgZWNjLi4uXHJcbiAgICAgICAgYW00Y29yZS5vcHRpb25zLmF1dG9EaXNwb3NlID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgdGhpcy5DaGFydEluc3RhbmNlID0gYW00Y29yZS5jcmVhdGUoc2V0dGluZ3MuTmFtZSwgYW00Y2hhcnRzLlhZQ2hhcnQpO1xyXG4gICAgICAgIGxldCBDaGFydEluc3RhbmNlQ2FzdGVkID0gPGFtNGNoYXJ0cy5YWUNoYXJ0PnRoaXMuQ2hhcnRJbnN0YW5jZTtcclxuXHJcbiAgICAgICAgbGV0IHlBeGlzID0gQ2hhcnRJbnN0YW5jZUNhc3RlZC55QXhlcy5wdXNoKG5ldyBhbTRjaGFydHMuVmFsdWVBeGlzKCkpO1xyXG4gICAgICAgIGlmIChzZXR0aW5ncy5ZQXhpc1RpdGxlKSB7XHJcbiAgICAgICAgICAgIHlBeGlzLnRpdGxlLnRleHQgPSBzZXR0aW5ncy5ZQXhpc1RpdGxlXHJcbiAgICAgICAgICAgIHlBeGlzLnRpdGxlLmZvbnRXZWlnaHQgPSBcImJvbGRcIjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChzZXR0aW5ncy5NaW4pXHJcbiAgICAgICAgICAgIHlBeGlzLm1pbiA9IHNldHRpbmdzLk1pbjtcclxuICAgICAgICBpZiAoc2V0dGluZ3MuTWF4KVxyXG4gICAgICAgICAgICB5QXhpcy5tYXggPSBzZXR0aW5ncy5NYXg7XHJcblxyXG4gICAgICAgIGxldCBsaW1pdE51bGxPclVuZGVmID0gZGF0YUNvbnZlcnRlZC5saW1pdCA9PSBudWxsIHx8IGRhdGFDb252ZXJ0ZWQubGltaXQgPT0gdW5kZWZpbmVkO1xyXG4gICAgICAgIGxldCBsaW1pdHMgPSBsaW1pdE51bGxPclVuZGVmID8gW10gOiAhKDxhbnk+ZGF0YUNvbnZlcnRlZC5saW1pdCkubGVuZ3RoID8gWzxMaW1pdD5kYXRhQ29udmVydGVkLmxpbWl0XSA6IDxMaW1pdFtdPmRhdGFDb252ZXJ0ZWQubGltaXQ7XHJcbiAgICAgICAgaWYgKGxpbWl0cy5sZW5ndGggPiAwKSB7XHJcblxyXG4gICAgICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgbGltaXRzLmxlbmd0aDsgaSsrKXtcclxuICAgICAgICAgICAgICAgIGxldCBsaW1pdCA9IGRhdGFDb252ZXJ0ZWQubGltaXRbaV1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAobGltaXQudXBwZXIgIT0gbnVsbCAmJiBsaW1pdC51cHBlciAhPSB1bmRlZmluZWQgJiYgbGltaXQubG93ZXIgIT0gbnVsbCAmJiBsaW1pdC5sb3dlciAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcmFuZ2UgPSB5QXhpcy5heGlzUmFuZ2VzLmNyZWF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLnZhbHVlID0gbGltaXQubG93ZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UuZW5kVmFsdWUgPSBsaW1pdC51cHBlcjtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxpbWl0LmZpbGxDb2xvcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByYW5nZS5jb250ZW50cy5zdHJva2UgPSBhbTRjb3JlLmNvbG9yKGxpbWl0LmZpbGxDb2xvcik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlLmNvbnRlbnRzLmZpbGwgPSByYW5nZS5jb250ZW50cy5zdHJva2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICByYW5nZS5sYWJlbC5pbnNpZGUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLmxhYmVsLnRleHQgPSBsaW1pdC51cHBlcmxhYmVsO1xyXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLmxhYmVsLmZpbGwgPSByYW5nZS5ncmlkLnN0cm9rZTtcclxuICAgICAgICAgICAgICAgICAgICByYW5nZS5sYWJlbC52ZXJ0aWNhbENlbnRlciA9IFwiYm90dG9tXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UubGFiZWwuc3Ryb2tlID0gYW00Y29yZS5jb2xvcihsaW1pdC51cHBlcmNvbG9yIHx8IFwiI0Y5MjIwMFwiKTtcclxuICAgICAgICAgICAgICAgICAgICByYW5nZS5ncmlkLnN0cm9rZSA9IGFtNGNvcmUuY29sb3IobGltaXQudXBwZXJjb2xvciB8fCBcIiNGOTIyMDBcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UuZ3JpZC5zdHJva2VXaWR0aCA9IDI7XHJcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UuZ3JpZC5zdHJva2VPcGFjaXR5ID0gMTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKChsaW1pdC5sb3dlciA9PSBudWxsIHx8IGxpbWl0Lmxvd2VyID09IHVuZGVmaW5lZCkgJiYgbGltaXQudXBwZXIgIT0gbnVsbCAmJiBsaW1pdC51cHBlciAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcmFuZ2UgPSB5QXhpcy5heGlzUmFuZ2VzLmNyZWF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLnZhbHVlID0gbGltaXQudXBwZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UubGFiZWwuaW5zaWRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICByYW5nZS5sYWJlbC50ZXh0ID0gbGltaXQudXBwZXJsYWJlbDtcclxuICAgICAgICAgICAgICAgICAgICByYW5nZS5sYWJlbC5maWxsID0gcmFuZ2UuZ3JpZC5zdHJva2U7XHJcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UubGFiZWwudmVydGljYWxDZW50ZXIgPSBcImJvdHRvbVwiO1xyXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLmxhYmVsLnN0cm9rZSA9IGFtNGNvcmUuY29sb3IobGltaXQudXBwZXJjb2xvciB8fCBcIiNGOTIyMDBcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UuZ3JpZC5zdHJva2UgPSBhbTRjb3JlLmNvbG9yKGxpbWl0LnVwcGVyY29sb3IgfHwgXCIjRjkyMjAwXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLmdyaWQuc3Ryb2tlV2lkdGggPSAyO1xyXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLmdyaWQuc3Ryb2tlT3BhY2l0eSA9IDE7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICgobGltaXQudXBwZXIgPT0gbnVsbCB8fCBsaW1pdC51cHBlciA9PSB1bmRlZmluZWQpICYmIGxpbWl0Lmxvd2VyICE9IG51bGwgJiYgbGltaXQubG93ZXIgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJhbmdlID0geUF4aXMuYXhpc1Jhbmdlcy5jcmVhdGUoKTtcclxuICAgICAgICAgICAgICAgICAgICByYW5nZS52YWx1ZSA9IGxpbWl0Lmxvd2VyO1xyXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLmxhYmVsLmluc2lkZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UubGFiZWwudGV4dCA9IGxpbWl0Lmxvd2VybGFiZWw7XHJcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UubGFiZWwuZmlsbCA9IHJhbmdlLmdyaWQuc3Ryb2tlO1xyXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLmxhYmVsLnZlcnRpY2FsQ2VudGVyID0gXCJib3R0b21cIjtcclxuICAgICAgICAgICAgICAgICAgICByYW5nZS5sYWJlbC5zdHJva2UgPSBhbTRjb3JlLmNvbG9yKGxpbWl0Lmxvd2VyY29sb3IgfHwgXCIjRjkyMjAwXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLmdyaWQuc3Ryb2tlID0gYW00Y29yZS5jb2xvcihsaW1pdC5sb3dlcmNvbG9yIHx8IFwiI0Y5MjIwMFwiKTtcclxuICAgICAgICAgICAgICAgICAgICByYW5nZS5ncmlkLnN0cm9rZVdpZHRoID0gMjtcclxuICAgICAgICAgICAgICAgICAgICByYW5nZS5ncmlkLnN0cm9rZU9wYWNpdHkgPSAxO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIHRoaXMuZGF0ZUF4aXMgPSBDaGFydEluc3RhbmNlQ2FzdGVkLnhBeGVzLnB1c2gobmV3IGFtNGNoYXJ0cy5EYXRlQXhpcygpKTtcclxuXHJcbiAgICAgICAgLy8gUGVyIGNvbWF0aWJpbGl0w6AgY29sIGNvZGljZSBzY3JpdHRvIHF1YW5kbyBub24gZXJhIGEgbGl2ZWxsbyBnbG9iYWxlLCBtaSBzY29jY2lhIHNvc3RpdHVpcmVcclxuICAgICAgICBsZXQgZGF0ZUF4aXMgPSB0aGlzLmRhdGVBeGlzO1xyXG5cclxuICAgICAgICBpZiAoc2V0dGluZ3MuWEF4aXNUaXRsZSkge1xyXG4gICAgICAgICAgICBkYXRlQXhpcy50aXRsZS50ZXh0ID0gc2V0dGluZ3MuWEF4aXNUaXRsZVxyXG4gICAgICAgICAgICBkYXRlQXhpcy50aXRsZS5mb250V2VpZ2h0ID0gXCJib2xkXCI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoc2hvd1RpY2tzKSB7XHJcbiAgICAgICAgICAgIGRhdGVBeGlzLnJlbmRlcmVyLnRpY2tzLnRlbXBsYXRlLmRpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGRhdGVBeGlzLnJlbmRlcmVyLnRpY2tzLnRlbXBsYXRlLnN0cm9rZU9wYWNpdHkgPSAxO1xyXG4gICAgICAgICAgICBkYXRlQXhpcy5yZW5kZXJlci50aWNrcy50ZW1wbGF0ZS5zdHJva2UgPSBhbTRjb3JlLmNvbG9yKFwiIzQ5NUM0M1wiKTtcclxuICAgICAgICAgICAgZGF0ZUF4aXMucmVuZGVyZXIudGlja3MudGVtcGxhdGUuc3Ryb2tlV2lkdGggPSAyO1xyXG4gICAgICAgICAgICBkYXRlQXhpcy5yZW5kZXJlci50aWNrcy50ZW1wbGF0ZS5sZW5ndGggPSAxMDtcclxuICAgICAgICAgICAgZGF0ZUF4aXMucmVuZGVyZXIudGlja3MudGVtcGxhdGUubG9jYXRpb24gPSAwO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZGF0ZUF4aXMucmVuZGVyZXIubWluR3JpZERpc3RhbmNlID0gc2V0dGluZ3M/Lk1pbkdyaWREaXN0YW5jZSA/PyA1MDtcclxuICAgICAgICBkYXRlQXhpcy5yZW5kZXJlci5ncmlkLnRlbXBsYXRlLmxvY2F0aW9uID0gMDtcclxuICAgICAgICBkYXRlQXhpcy5taW5ab29tQ291bnQgPSA1O1xyXG4gICAgICAgIGRhdGVBeGlzLmdyb3VwRGF0YSA9IGRhdGFTaG91bGRCZUdyb3VwZWQ7XHJcbiAgICAgICAgZGF0ZUF4aXMuZ3JvdXBDb3VudCA9IHNldHRpbmdzLkRhdGFHcm91cEJ1Y2tldFNpemUgPz8gdGhpcy5EYXRhR3JvdXBCdWNrZXRTaXplO1xyXG5cclxuICAgICAgICAvL1NlIGhvIGFsbWVubyB1bmEgc2VyaWUgYWQgaW50ZXJ2YWxsbyBlIGkgc2V0dGluZ3Mgbm9uIG1pIGltcGVkaXNjb25vIGVzcGxpY2l0YW1lbnRlIGRpIHVzYXJlIGkgZ2FwcywgdmlzdWFsaXp6byBpIGRhdGkgY29sIGdhcFxyXG5cclxuICAgICAgICBpZiAoZ2Fwc0FsbG93ZWQpIHtcclxuICAgICAgICAgICAgaWYgKCFzZXJpZXNXaXRoSW50ZXJ2YWwpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJQZXIgdXRpbGl6emFyZSBsYSBmdW56aW9uYWxpdMOgIGRlaSBnYXAgw6ggb2JibGlnYXRvcmlvIGRlZmluaXJlIHVuIGludGVydmFsbG8gbmVsbGUgc2VyaWUgZGVsIGdyYWZpY29cIik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgZGF0ZUF4aXMuYmFzZUludGVydmFsID0geyBjb3VudDogaW50ZXJ2YWwuY291bnQsIHRpbWVVbml0OiBpbnRlcnZhbC50aW1ldW5pdCB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoc2hvd1RpbWVsaW5lKVxyXG4gICAgICAgICAgICBDaGFydEluc3RhbmNlQ2FzdGVkLnNjcm9sbGJhclggPSBuZXcgYW00Y2hhcnRzLlhZQ2hhcnRTY3JvbGxiYXIoKTtcclxuXHJcbiAgICAgICAgbGV0IHNlcmllc1RvUHVzaCA9IFtdO1xyXG4gICAgICAgIGxldCBzZXJpZXNDb2xvcnM6IGFtNGNvcmUuQ29sb3JbXSA9IFtdO1xyXG4gICAgICAgIGxldCBkZWZhdWx0SW5kZXggPSAwO1xyXG5cclxuICAgICAgICAvLy0tIEdlbmVyYXppb25lIGRpIHVuIHVuaWNvIGRhdGFzZXQgaW52ZWNlIGNoZSBOLCBwZXIgcG90ZXIgZ2VzdGlyZSB1biB1bmljbyB0b29sdGlwXHJcbiAgICAgICAgaWYgKHRoaXMuc2luZ2xlRGF0YVNldCkge1xyXG4gICAgICAgICAgICB0aGlzLkNoYXJ0SW5zdGFuY2UuZGF0YSA9IHRoaXMuZ2VuZXJhdGVTaW5nbGVEYXRhc2V0KGRhdGFDb252ZXJ0ZWQpOztcclxuICAgICAgICAgICAgZGF0ZUF4aXMuY3Vyc29yVG9vbHRpcEVuYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8tLSBGaW5lIGdlbmVyYXppb25lXHJcblxyXG4gICAgICAgIGRhdGFDb252ZXJ0ZWQuc2VyaWVzLmZvckVhY2goKHMsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChzLnZhbHVlc1swXSAmJiAhKHMudmFsdWVzWzBdLmQgaW5zdGFuY2VvZiBEYXRlKSkge1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgdiA9IDA7IHYgPCBzLnZhbHVlcy5sZW5ndGg7IHYrKylcclxuICAgICAgICAgICAgICAgICAgICBzLnZhbHVlc1t2XS5kID0gbmV3IERhdGUocy52YWx1ZXNbdl0uZCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHZhciBjb3JyZWN0T3JkZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICB2YXIgcHJldkRhdGUgPSBudWxsO1xyXG4gICAgICAgICAgICBmb3IgKGxldCB2ID0gMDsgdiA8IHMudmFsdWVzLmxlbmd0aDsgdisrKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXByZXZEYXRlKVxyXG4gICAgICAgICAgICAgICAgICAgIHByZXZEYXRlID0gcy52YWx1ZXNbdl0uZDtcclxuICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICBpZiAocy52YWx1ZXNbdl0uZCA8IHByZXZEYXRlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvcnJlY3RPcmRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICghY29ycmVjdE9yZGVyKVxyXG4gICAgICAgICAgICAgICAgcy52YWx1ZXMuc29ydCgoZDEsIGQyKSA9PiBkMS5kLmdldFRpbWUoKSAtIGQyLmQuZ2V0VGltZSgpKTtcclxuXHJcbiAgICAgICAgICAgIGxldCBmaWxsID0gcy5maWxsICE9IG51bGwgJiYgcy5maWxsICE9IHVuZGVmaW5lZCA/IHMuZmlsbCA6IChzZXR0aW5ncz8uRmlsbCA/PyBmYWxzZSk7XHJcbiAgICAgICAgICAgIGxldCBzZXJpZXM6IGFtNGNoYXJ0cy5TdGVwTGluZVNlcmllcyB8IGFtNGNoYXJ0cy5MaW5lU2VyaWVzID0gc2V0dGluZ3M/LlN0ZXAgPyBuZXcgYW00Y2hhcnRzLlN0ZXBMaW5lU2VyaWVzKCkgOiBuZXcgYW00Y2hhcnRzLkxpbmVTZXJpZXMoKTtcclxuICAgICAgICAgICAgc2VyaWVzLmRhdGFGaWVsZHMudmFsdWVZID0gXCJ2XCIgKyAodGhpcy5zaW5nbGVEYXRhU2V0ID8gaW5kZXggOiBcIlwiKTtcclxuICAgICAgICAgICAgc2VyaWVzLmRhdGFGaWVsZHMuZGF0ZVggPSBcImRcIjtcclxuICAgICAgICAgICAgKDxhbnk+c2VyaWVzLmRhdGFGaWVsZHMpLm1lYXN1cmVVbml0ID0gcy51b207XHJcbiAgICAgICAgICAgIHNlcmllcy5uYW1lID0gcy5uYW1lO1xyXG4gICAgICAgICAgICBzZXJpZXMuc3Ryb2tlV2lkdGggPSBzZXR0aW5ncz8uU3Ryb2tlU2l6ZSA/PyAxO1xyXG4gICAgICAgICAgICBzZXJpZXMuY29ubmVjdCA9ICFnYXBzQWxsb3dlZDtcclxuICAgICAgICAgICAgc2VyaWVzLm1pbkJ1bGxldERpc3RhbmNlID0gMTA7XHJcbiAgICAgICAgICAgIHNlcmllcy50b29sdGlwVGV4dCA9IHRoaXMuc2luZ2xlRGF0YVNldCA/IFwiXCIgOiBzLm5hbWUgPyBcIntuYW1lfTogW2JvbGRde3ZhbHVlWX1bL11cIiA6IFwiW2JvbGRde3ZhbHVlWX1bL11cIjtcclxuICAgICAgICAgICAgc2VyaWVzLnRvb2x0aXAucG9pbnRlck9yaWVudGF0aW9uID0gXCJ2ZXJ0aWNhbFwiO1xyXG4gICAgICAgICAgICBzZXJpZXMudG9vbHRpcC5iYWNrZ3JvdW5kLmZpbGxPcGFjaXR5ID0gMC41O1xyXG4gICAgICAgICAgICBzZXJpZXMudG9vbHRpcC5sYWJlbC5wYWRkaW5nKDEyLCAxMiwgMTIsIDEyKTtcclxuICAgICAgICAgICAgc2VyaWVzLmZpbGxPcGFjaXR5ID0gZmlsbCA/IDEgOiAwLjAwMDE7XHJcbiAgICAgICAgICAgIHNlcmllcy5zdGFja2VkID0gZmlsbFxyXG5cclxuICAgICAgICAgICAgLy9EYXRhc2V0IHNpbmdvbG8sIGkgZGF0aSBzb25vIHJlZ2lzdHJhdGkgYSBsaXZlbGxvIGRpIGNoYXJ0LCBjcmVvIGlsIHRvb2x0aXAgY2hlIHBlcm1ldHRlIGRpIHZlZGVybGkgdHV0dGkgaW5zaWVtZVxyXG4gICAgICAgICAgICAvL2FsdHJpbWVudGkgYXNzZWdubyBpIGRhdGkgZGVsbGEgc2VyaWUgZGlyZXR0YW1lbnRlIGFsbGEgc2VyaWVcclxuICAgICAgICAgICAgaWYgKHRoaXMuc2luZ2xlRGF0YVNldCkge1xyXG4gICAgICAgICAgICAgICAgc2VyaWVzLnRvb2x0aXAuZ2V0RmlsbEZyb21PYmplY3QgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHNlcmllcy50b29sdGlwLmJhY2tncm91bmQuZmlsbCA9IGFtNGNvcmUuY29sb3IoXCIjZWVlXCIpO1xyXG4gICAgICAgICAgICAgICAgc2VyaWVzLnRvb2x0aXAubGFiZWwuZmlsbCA9IGFtNGNvcmUuY29sb3IoXCIjMDBcIik7XHJcbiAgICAgICAgICAgICAgICBzZXJpZXMudG9vbHRpcC5kZWZhdWx0U3RhdGUudHJhbnNpdGlvbkR1cmF0aW9uID0gMDtcclxuICAgICAgICAgICAgICAgIHNlcmllcy50b29sdGlwLmhpZGRlblN0YXRlLnRyYW5zaXRpb25EdXJhdGlvbiA9IDA7XHJcblxyXG4gICAgICAgICAgICAgICAgLy9VdGlsaXp6byBpbCBtaW8gZGF0ZVNlcnZpY2UgcGVyIGxhIGZvcm1hdHRhemlvbmUgZGVsbGEgZGF0YSBpbiBtb2RvIGNoZSBub24gZGViYmEgbWFpIGdlc3RpcmUgbiBmb3JtYXRpIGZyYSBuIGxpYnJlcmllLi4uIGJlbGxpc3NpbW9cclxuICAgICAgICAgICAgICAgIHNlcmllcy5kYXRlRm9ybWF0dGVyLmZvcm1hdCA9IChzb3VyY2U6IERhdGUpOiBzdHJpbmcgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnRlcnZhbCAmJiBmaW5hbEluc3RhbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRpbWVwYXJ0OiBcIm1pbnV0ZVwiIHwgXCJob3VyXCIgfCBcImRheVwiID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChpbnRlcnZhbC50aW1ldW5pdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcImhvdXJcIjogdGltZXBhcnQgPSAnZGF5JzsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwibWludXRlXCI6IHRpbWVwYXJ0ID0gJ2hvdXInOyBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJzZWNvbmRcIjogdGltZXBhcnQgPSAnbWludXRlJzsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRpbWVwYXJ0KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0ZUV4dHMuYWRqdXN0RGF0ZVRvRmluYWxJbnN0YW50KHNvdXJjZSwgdGltZXBhcnQsIGludGVydmFsID8gaW50ZXJ2YWwudGltZXVuaXQgPT0gXCJzZWNvbmRcIiA6IGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRlRXh0cy5nZXRGb3JtYXR0ZWQoc291cmNlLCBmYWxzZSwgaW50ZXJ2YWwgPyBpbnRlcnZhbC50aW1ldW5pdCA9PSBcInNlY29uZFwiIDogZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICg8YW55PnNlcmllcy5hZGFwdGVyKS5hZGQoXCJ0b29sdGlwVGV4dFwiLCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRleHQgPSBcIltib2xkXXtkYXRlWC5mb3JtYXREYXRlKCl9Wy9dXFxuXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5DaGFydEluc3RhbmNlLnNlcmllcy5lYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB1b20gPSBcIiBbZm9udC1zdHlsZTogaXRhbGljXVwiICsgKDxhbnk+c2VyaWVzLmRhdGFGaWVsZHMpLm1lYXN1cmVVbml0IHx8IFwiXCIgKyBcIlsvXVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0ICs9IFwiW1wiICsgKDxhbnk+aXRlbS5zdHJva2UpLmhleCArIFwiXeKXj1svXSBcIiArIChpdGVtLm5hbWUgPyAoaXRlbS5uYW1lICsgXCI6IFwiKSA6IFwiXCIpICsgXCJbYm9sZF17XCIgKyBpdGVtLmRhdGFGaWVsZHMudmFsdWVZICsgXCJ9Wy9dXCIgKyB1b20gKyBcIlxcblwiO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0O1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgc2VyaWVzLmRhdGEgPSBzLnZhbHVlcztcclxuXHJcbiAgICAgICAgICAgIGxldCBzZWdtZW50ID0gc2VyaWVzLnNlZ21lbnRzLnRlbXBsYXRlO1xyXG5cclxuICAgICAgICAgICAgbGV0IGhvdmVyU3RhdGUgPSBzZWdtZW50LnN0YXRlcy5jcmVhdGUoXCJob3ZlclwiKTtcclxuICAgICAgICAgICAgaG92ZXJTdGF0ZS5wcm9wZXJ0aWVzLnN0cm9rZVdpZHRoID0gKHNldHRpbmdzPy5TdHJva2VTaXplID8/IDEpICsgMTtcclxuXHJcbiAgICAgICAgICAgIGxldCBkaW1tZWQgPSBzZWdtZW50LnN0YXRlcy5jcmVhdGUoXCJkaW1tZWRcIik7XHJcbiAgICAgICAgICAgIGRpbW1lZC5wcm9wZXJ0aWVzLnN0cm9rZSA9IGFtNGNvcmUuY29sb3IoXCIjZGFkYWRhXCIpO1xyXG5cclxuICAgICAgICAgICAgLy9TZSBsYSBzZXJpZSBoYSB1biBjb2xvcmUsIHVzbyBxdWVsbG8sIGFsdHJpbWVudGkgcGVzY28gZGFpIGNvbG9yaSBkaSBkZWZhdWx0IGFuZGFuZG8gaW4gb3JkaW5lXHJcbiAgICAgICAgICAgIGlmIChzLmNvbG9yKVxyXG4gICAgICAgICAgICAgICAgc2VyaWVzQ29sb3JzLnB1c2goYW00Y29yZS5jb2xvcihzLmNvbG9yKSk7XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgc2VyaWVzQ29sb3JzLnB1c2goQ2hhcnRJbnN0YW5jZUNhc3RlZC5jb2xvcnMubGlzdFtkZWZhdWx0SW5kZXggJSBDaGFydEluc3RhbmNlQ2FzdGVkLmNvbG9ycy5saXN0Lmxlbmd0aF0pXHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0SW5kZXgrKztcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgc2VyaWVzVG9QdXNoLnB1c2goc2VyaWVzKTtcclxuICAgICAgICB9KTtcclxuXHJcblxyXG4gICAgICAgIENoYXJ0SW5zdGFuY2VDYXN0ZWQuY29sb3JzLmxpc3QgPSBzZXJpZXNDb2xvcnM7XHJcbiAgICAgICAgLy9TY3Jpdm8gbGUgc2VyaWUgbmVsIGdyYWZpY29cclxuICAgICAgICBzZXJpZXNUb1B1c2guZm9yRWFjaChzID0+IHtcclxuICAgICAgICAgICAgQ2hhcnRJbnN0YW5jZUNhc3RlZC5zZXJpZXMucHVzaChzKTtcclxuICAgICAgICAgICAgaWYgKHNob3dUaW1lbGluZSlcclxuICAgICAgICAgICAgICAgICg8YW00Y2hhcnRzLlhZQ2hhcnRTY3JvbGxiYXI+Q2hhcnRJbnN0YW5jZUNhc3RlZC5zY3JvbGxiYXJYKS5zZXJpZXMucHVzaChzKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgaWYgKHNldHRpbmdzLkxlZ2VuZCkge1xyXG4gICAgICAgICAgICB0aGlzLkNoYXJ0SW5zdGFuY2UubGVnZW5kID0gbmV3IGFtNGNoYXJ0cy5MZWdlbmQoKTtcclxuICAgICAgICAgICAgdGhpcy5DaGFydEluc3RhbmNlLmxlZ2VuZC5wb3NpdGlvbiA9IHNldHRpbmdzPy5MZWdlbmRQb3NpdGlvbiA/PyAncmlnaHQnO1xyXG4gICAgICAgICAgICB0aGlzLkNoYXJ0SW5zdGFuY2UubGVnZW5kLnNjcm9sbGFibGUgPSB0cnVlO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5DaGFydEluc3RhbmNlLmxlZ2VuZC5pdGVtQ29udGFpbmVycy50ZW1wbGF0ZS50b29sdGlwVGV4dCA9IFwie25hbWV9XCI7XHJcbiAgICAgICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZS5sZWdlbmQuaXRlbUNvbnRhaW5lcnMudGVtcGxhdGUuZXZlbnRzLm9uKFwib3ZlclwiLCAoZXZlbnQpID0+IHsgdGhpcy5wcm9jZXNzT3Zlcig8YW00Y2hhcnRzLkxpbmVTZXJpZXM+ZXZlbnQudGFyZ2V0LmRhdGFJdGVtLmRhdGFDb250ZXh0KTsgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZS5sZWdlbmQuaXRlbUNvbnRhaW5lcnMudGVtcGxhdGUuZXZlbnRzLm9uKFwib3V0XCIsICgpID0+IHsgdGhpcy5wcm9jZXNzT3V0KCk7IH0pO1xyXG5cclxuICAgICAgICAgICAgaWYgKHNldHRpbmdzLkxlZ2VuZFBhZGRpbmcpIHtcclxuICAgICAgICAgICAgICAgIGxldCB0ZW1wbGF0ZSA9IHRoaXMuQ2hhcnRJbnN0YW5jZS5sZWdlbmQuaXRlbUNvbnRhaW5lcnMudGVtcGxhdGU7XHJcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZS5wYWRkaW5nVG9wID0gc2V0dGluZ3MuTGVnZW5kUGFkZGluZy50b3AgPz8gMDtcclxuICAgICAgICAgICAgICAgIHRlbXBsYXRlLnBhZGRpbmdCb3R0b20gPSBzZXR0aW5ncy5MZWdlbmRQYWRkaW5nLmJvdHRvbSA/PyAwO1xyXG4gICAgICAgICAgICAgICAgdGVtcGxhdGUucGFkZGluZ0xlZnQgPSBzZXR0aW5ncy5MZWdlbmRQYWRkaW5nLmxlZnQgPz8gMDtcclxuICAgICAgICAgICAgICAgIHRlbXBsYXRlLnBhZGRpbmdSaWdodCA9IHNldHRpbmdzLkxlZ2VuZFBhZGRpbmcucmlnaHQgPz8gMDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5DaGFydEluc3RhbmNlLmN1cnNvciA9IG5ldyBhbTRjaGFydHMuWFlDdXJzb3IoKTtcclxuXHJcbiAgICAgICAgLy9Qcm92ZSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAgICAgIC8vIHRoaXMuQ2hhcnRJbnN0YW5jZS5jdXJzb3IuZXZlbnRzLm9uKFwiY3Vyc29ycG9zaXRpb25jaGFuZ2VkXCIsIChldikgPT4ge1xyXG4gICAgICAgIC8vICAgICAvL3ZhciB2YWx1ZSA9IGRhdGVBeGlzLnBvc2l0aW9uVG9EYXRlKGRhdGVBeGlzLnRvQXhpc1Bvc2l0aW9uKGV2LnRhcmdldC54UG9zaXRpb24pKTtcclxuICAgICAgICAvLyAgICAgdmFyIGR0ID0gZGF0ZUF4aXMuc2VyaWVzLnZhbHVlcy5maW5kKHQgPT4gdC5kYXRhSXRlbS52YWx1ZXMuZGF0ZVgpO1xyXG4gICAgICAgIC8vICAgICBpZiAoZHQgJiYgZHQuZGF0YUl0ZW0pIHtcclxuICAgICAgICAvLyAgICAgICAgIGNvbnNvbGUubG9nKGR0LmRhdGFJdGVtLnZhbHVlcyk7XHJcbiAgICAgICAgLy8gICAgICAgICAvLyB0aGlzLkNoYXJ0SW5zdGFuY2UudG9vbHRpcFRleHQgPSBkdDtcclxuICAgICAgICAvLyAgICAgfVxyXG4gICAgICAgIC8vICAgICBlbHNlIHtcclxuICAgICAgICAvLyAgICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZS50b29sdGlwVGV4dCA9IFwiXCI7XHJcbiAgICAgICAgLy8gICAgIH1cclxuICAgICAgICAvLyB9KTtcclxuICAgICAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuICAgICAgICB0aGlzLkNoYXJ0SW5zdGFuY2UuY3Vyc29yLnhBeGlzID0gZGF0ZUF4aXM7XHJcbiAgICAgICAgdGhpcy5DaGFydEluc3RhbmNlLmN1cnNvci55QXhpcyA9IHlBeGlzO1xyXG4gICAgICAgIGlmICh0aGlzLnNpbmdsZURhdGFTZXQpXHJcbiAgICAgICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZS5jdXJzb3IubWF4VG9vbHRpcERpc3RhbmNlID0gLTE7XHJcblxyXG4gICAgICAgIC8vVE9ETzogQ2VyY2FyZSBkaSBjYXBpcmUgcGVyY2jDqSDDqCBmaWdsaW8gZGkgcHV0dGFuYS4uLi4uLlxyXG4gICAgICAgIGRhdGVBeGlzLmV2ZW50cy5vbihcInN0YXJ0Y2hhbmdlZFwiLCB0ID0+IHRoaXMuZW1pdFNlbGVjdGlvbkNoYW5nZWQodCwgc2V0dGluZ3MpKTtcclxuICAgICAgICBkYXRlQXhpcy5ldmVudHMub24oXCJlbmRjaGFuZ2VkXCIsIHQgPT4gdGhpcy5lbWl0U2VsZWN0aW9uQ2hhbmdlZCh0LCBzZXR0aW5ncykpO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBzZXRTZWxlY3Rpb24oZnJvbTogRGF0ZSwgdG86IERhdGUpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmRhdGVBeGlzLnpvb21Ub0RhdGVzKGZyb20sIHRvLCB0cnVlLCB0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgcHVibGljIHJlZnJlc2hEYXRhKGRhdGE6IExpbmVDaGFydERhdGEgfCBhbnkpIHtcclxuICAgICAgICBsZXQgZGF0YUNvbnZlcnRlZDogTGluZUNoYXJ0RGF0YSA9IHRoaXMuQWRhcHRlciA/IHRoaXMuQWRhcHRlci5hZGFwdERhdGFGb3JMaW5lQ2hhcnQoZGF0YSkgOiBkYXRhO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5zaW5nbGVEYXRhU2V0KSB7XHJcbiAgICAgICAgICAgIHZhciBkYXRhID0gdGhpcy5nZW5lcmF0ZVNpbmdsZURhdGFzZXQoZGF0YUNvbnZlcnRlZCk7XHJcbiAgICAgICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZS5hZGREYXRhKGRhdGEpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aHJvdyBcIkltcG9zc2liaWxlIGFnZ2lvcm5hcmUgaSBkYXRpIHNlbnphIHVuaXJlIGlsIGRhdGFzZXQuIFNpIHByZWdhIGRpIGltcG9zdGFyZSBbTWVyZ2VEYXRhc2V0c10gYSB0cnVlXCJcclxuXHJcbiAgICB9XHJcblxyXG4gICAgLyoqIFBhcnRlbmRvIGRhIGRhdGkgZGl2aXNpIHBlciBzZXJpdWUgZ2VuZXJhIHVuIGRhdGFzZXQgdW5pdG8gY29uIGxhIGRhdGEgY29tZSBjaGlhdmUgZSBpIHZhcmkgdmFsb3JpIGRvcG8gKi9cclxuICAgIHByaXZhdGUgZ2VuZXJhdGVTaW5nbGVEYXRhc2V0KGRhdGE6IExpbmVDaGFydERhdGEpOiBhbnkge1xyXG4gICAgICAgIGxldCBkdG86IHsgW2luZGV4OiBudW1iZXJdOiB7IFtzaW5kZXg6IHN0cmluZ106IG51bWJlciB9IH0gPSB7fTtcclxuICAgICAgICBkYXRhLnNlcmllcy5mb3JFYWNoKCh2cywgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2cy52YWx1ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIHZhciBkYXRhaXRlbSA9IHZzLnZhbHVlc1tpXTtcclxuICAgICAgICAgICAgICAgIHZhciBpbmRleGVyID0gbmV3IERhdGUoZGF0YWl0ZW0uZCkudmFsdWVPZigpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmICghZHRvW2luZGV4ZXJdKVxyXG4gICAgICAgICAgICAgICAgICAgIGR0b1tpbmRleGVyXSA9IHt9O1xyXG5cclxuICAgICAgICAgICAgICAgIGR0b1tpbmRleGVyXVsndicgKyBpbmRleF0gPSBkYXRhaXRlbS52O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHZhciBkYXRlcyA9IE9iamVjdC5rZXlzKGR0byk7XHJcbiAgICAgICAgdmFyIHJldCA9IFtdO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgbGV0IHZhbHVlczogeyBbc2luZGV4OiBzdHJpbmddOiBudW1iZXIgfSA9IGR0b1tkYXRlc1tpXV07XHJcbiAgICAgICAgICAgIGxldCBpdGVtID0geyBkOiBuZXcgRGF0ZShwYXJzZUludChkYXRlc1tpXSkpIH1cclxuXHJcbiAgICAgICAgICAgIHZhciB2YWxzID0gT2JqZWN0LmtleXModmFsdWVzKTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaWkgPSAwOyBpaSA8IHZhbHMubGVuZ3RoOyBpaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgc2VyaWVzID0gdmFsc1tpaV07XHJcbiAgICAgICAgICAgICAgICBsZXQgc2luZ2xlVmFsID0gdmFsdWVzW3Nlcmllc107XHJcbiAgICAgICAgICAgICAgICBpdGVtW3Nlcmllc10gPSBzaW5nbGVWYWw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0LnB1c2goaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIHByaXZhdGUgZW1pdFNlbGVjdGlvbkNoYW5nZWQoZXYsIHNldHRpbmdzKSB7XHJcbiAgICAgICAgaWYgKCg8YW55PnNldHRpbmdzKS5PblNlbGVjdGlvbkNoYW5nZWRDYWxsYmFjaykge1xyXG4gICAgICAgICAgICB0aGlzLnRocm90dGxhKFwic2VsY2hhbmdlXCIsICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHZhciBheGlzID0gPGFtNGNoYXJ0cy5EYXRlQXhpcz5ldi50YXJnZXRcclxuICAgICAgICAgICAgICAgIHZhciBzdGFydCA9IG5ldyBEYXRlKGF4aXMubWluWm9vbWVkKTtcclxuICAgICAgICAgICAgICAgIHZhciBlbmQgPSBuZXcgRGF0ZShheGlzLm1heFpvb21lZCk7XHJcbiAgICAgICAgICAgICAgICB2YXIgaW5pdGlhbCA9IGF4aXMubWluID09IGF4aXMubWluWm9vbWVkICYmIGF4aXMubWF4ID09IGF4aXMubWF4Wm9vbWVkO1xyXG4gICAgICAgICAgICAgICAgKDxhbnk+c2V0dGluZ3MpLk9uU2VsZWN0aW9uQ2hhbmdlZENhbGxiYWNrKHsgZnJvbTogc3RhcnQsIHRvOiBlbmQsIGluaXRpYWw6IGluaXRpYWwgfSk7XHJcbiAgICAgICAgICAgIH0sIDE1MClcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIHByaXZhdGUgcHJvY2Vzc092ZXIoaG92ZXJlZFNlcmllczogYW00Y2hhcnRzLkxpbmVTZXJpZXMpIHtcclxuICAgICAgICBob3ZlcmVkU2VyaWVzLnRvRnJvbnQoKTtcclxuICAgICAgICBsZXQgZmlsbCA9IGhvdmVyZWRTZXJpZXMuc3RhY2tlZDtcclxuICAgICAgICBob3ZlcmVkU2VyaWVzLnNlZ21lbnRzLmVhY2goKHNlZ21lbnQpID0+IHtcclxuICAgICAgICAgICAgc2VnbWVudC5zZXRTdGF0ZShcImhvdmVyXCIpO1xyXG4gICAgICAgICAgICBpZiAoIWZpbGwpXHJcbiAgICAgICAgICAgICAgICBzZWdtZW50LmZpbGxTcHJpdGUuZmlsbE9wYWNpdHkgPSB0aGlzLk9wYWNpdHlPblNlbGVjdGVkO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmICghZmlsbClcclxuICAgICAgICAgICAgaG92ZXJlZFNlcmllcy5sZWdlbmREYXRhSXRlbS5tYXJrZXIuY2hpbGRyZW4uZ2V0SW5kZXgoMSkuZmlsbE9wYWNpdHkgPSB0aGlzLk9wYWNpdHlPblNlbGVjdGVkO1xyXG5cclxuICAgICAgICB0aGlzLkNoYXJ0SW5zdGFuY2Uuc2VyaWVzLmVhY2goKHNlcmllcykgPT4ge1xyXG4gICAgICAgICAgICBpZiAoc2VyaWVzICE9IGhvdmVyZWRTZXJpZXMpIHtcclxuICAgICAgICAgICAgICAgIGxldCBmaWxsID0gc2VyaWVzLnN0YWNrZWQ7XHJcbiAgICAgICAgICAgICAgICAoPGFtNGNoYXJ0cy5MaW5lU2VyaWVzPnNlcmllcykuc2VnbWVudHMuZWFjaCgoc2VnbWVudCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHNlZ21lbnQuc2V0U3RhdGUoXCJkaW1tZWRcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFmaWxsKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWdtZW50LmZpbGxTcHJpdGUuZmlsbE9wYWNpdHkgPSAwO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgcHJpdmF0ZSBwcm9jZXNzT3V0KCkge1xyXG4gICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZS5zZXJpZXMuZWFjaCgoc2VyaWVzKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBmaWxsID0gc2VyaWVzLnN0YWNrZWQ7XHJcbiAgICAgICAgICAgICg8YW00Y2hhcnRzLkxpbmVTZXJpZXM+c2VyaWVzKS5zZWdtZW50cy5lYWNoKChzZWdtZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBzZWdtZW50LnNldFN0YXRlKFwiZGVmYXVsdFwiKTtcclxuICAgICAgICAgICAgICAgIGlmICghZmlsbClcclxuICAgICAgICAgICAgICAgICAgICBzZWdtZW50LmZpbGxTcHJpdGUuZmlsbE9wYWNpdHkgPSAwO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgaWYgKCFmaWxsKVxyXG4gICAgICAgICAgICAgICAgc2VyaWVzLmxlZ2VuZERhdGFJdGVtLm1hcmtlci5jaGlsZHJlbi5nZXRJbmRleCgxKS5maWxsT3BhY2l0eSA9IDA7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8qKioqKioqKioqKioqKioqKioqKiBGdW56aW9uZSBkaSB0aHJvdHRsaW5nIHBlciBub24gc3BhbW1hcmUgcmljaGllc3RlIGluIGNhc28gZGkgYW5pbWF6aW9uaSBhdHRpdmF0ZVxyXG4gICAgLy9UT0RPOiBzcG9zdGFybGEgaW4gdW4gbWV0b2RvIGRpIHV0aWxpdMOgIChlc2ZhZW56YS9leHRlbnNpb25zKVxyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIHByaXZhdGUgZXhlY3V0aW9uVGltZXJzOiB7IFtpbmRleDogc3RyaW5nXTogYW55IH0gPSB7fTtcclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBwcml2YXRlIHRocm90dGxhKGlkOiBzdHJpbmcsIGZ1bmM6IEZ1bmN0aW9uLCB0aHJvdHRsZVRpbWU6IG51bWJlcik6IHZvaWQge1xyXG4gICAgICAgIC8vU2UgaG8gbGEgZnVuemlvbmUgY2hlIHZ1b2xlIGVzZWd1aXJlIHJpcHVsaXNjbyBxdWVsIHRpbWVvdXRcclxuICAgICAgICBpZiAodGhpcy5leGVjdXRpb25UaW1lcnNbaWRdKVxyXG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5leGVjdXRpb25UaW1lcnNbaWRdKTtcclxuXHJcbiAgICAgICAgLy9SaWNyZW8gaWwgdGltZW91dCBwZXIgZXNlZ3VpcmUgcXVlbGxhIGZ1bnppb25lIGRvcG8gdGhyb3R0bGVUaW1lIG1pbGxpc2Vjb25kaVxyXG4gICAgICAgIHRoaXMuZXhlY3V0aW9uVGltZXJzW2lkXSA9IHNldFRpbWVvdXQoKCkgPT4geyBmdW5jKCk7IHRoaXMuZXhlY3V0aW9uVGltZXJzW2lkXSA9IG51bGw7IH0sIHRocm90dGxlVGltZSk7XHJcbiAgICB9XHJcbiAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKipcclxufSJdfQ==
|
|
369
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGluZUNoYXJ0U2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VzLWNoYXJ0cy9zcmMvbGliL3NlcnZpY2VzL0xpbmVDaGFydFNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUUEsT0FBTyxLQUFLLE9BQU8sTUFBTSwwQkFBMEIsQ0FBQztBQUNwRCxPQUFPLEtBQUssU0FBUyxNQUFNLDRCQUE0QixDQUFDO0FBRXhEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGdCQUFnQjtJQVN6QixjQUFjO0lBQ2QsWUFBbUIsT0FBb0IsRUFBVSxRQUFxQjtRQUFuRCxZQUFPLEdBQVAsT0FBTyxDQUFhO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQVB0RSxjQUFjO1FBQ04sd0JBQW1CLEdBQVcsSUFBSSxDQUFDO1FBQzNDLGNBQWM7UUFDTixzQkFBaUIsR0FBVyxHQUFHLENBQUM7UUFDeEMsY0FBYztRQUNOLGtCQUFhLEdBQVksS0FBSyxDQUFDO1FBd1l2Qyx1R0FBdUc7UUFDdkcsK0RBQStEO1FBQy9ELGNBQWM7UUFDTixvQkFBZSxHQUE2QixFQUFFLENBQUM7SUF6WW1CLENBQUM7SUFLM0U7O09BRUc7SUFDSSxVQUFVLENBQUMsSUFBeUIsRUFBRSxRQUEyQjs7UUFDcEUsSUFBSSxhQUFhLEdBQWtCLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNsRyxJQUFJLFNBQVMsU0FBRyxRQUFRLENBQUMscUJBQXFCLG1DQUFJLElBQUksQ0FBQztRQUN2RCxJQUFJLENBQUMsYUFBYSxTQUFHLFFBQVEsQ0FBQyxhQUFhLG1DQUFJLEtBQUssQ0FBQztRQUNyRCxJQUFJLFNBQVMsR0FBRyxRQUFRLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFD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RyxVQUFVLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUM1RyxDQUFDO0NBRUoiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlU2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvZXh0ZW5zaW9uc1wiO1xyXG5pbXBvcnQgeyBJQmFzZVNlcnZpY2UgfSBmcm9tICcuL2Jhc2UvSUJhc2VTZXJ2aWNlJztcclxuaW1wb3J0IHsgQmFzZUFkYXB0ZXIgfSBmcm9tICcuLi9hZGFwdGVycy9CYXNlQWRhcHRlcic7XHJcblxyXG5pbXBvcnQgeyBMaW1pdCB9IGZyb20gXCIuLi9tb2RlbHMvZGF0YS9iYXNlL0xpbWl0XCI7XHJcbmltcG9ydCB7IExpbmVDaGFydERhdGEgfSBmcm9tICcuLi9tb2RlbHMvZGF0YS9MaW5lQ2hhcnREYXRhJztcclxuaW1wb3J0IHsgTGluZUNoYXJ0U2V0dGluZ3MgfSBmcm9tICcuLi9tb2RlbHMvc2V0dGluZ3MvTGluZUNoYXJ0U2V0dGluZ3MnO1xyXG5cclxuaW1wb3J0ICogYXMgYW00Y29yZSBmcm9tIFwiQGFtY2hhcnRzL2FtY2hhcnRzNC9jb3JlXCI7XHJcbmltcG9ydCAqIGFzIGFtNGNoYXJ0cyBmcm9tIFwiQGFtY2hhcnRzL2FtY2hhcnRzNC9jaGFydHNcIjtcclxuXHJcbi8qKlxyXG4gKiBDbGFzc2UgaWwgY3VpIHVuaWNvIHNjb3BvIMOoIGdlc3RpcmUgaWwgc2V0dXAgZSByZW5kZXJpbmcgZGkgdW4gTGluZUNoYXJ0XHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgTGluZUNoYXJ0U2VydmljZSBpbXBsZW1lbnRzIElCYXNlU2VydmljZTxhbTRjaGFydHMuWFlDaGFydD57XHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgcHVibGljIENoYXJ0SW5zdGFuY2U6IGFtNGNoYXJ0cy5YWUNoYXJ0O1xyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIHByaXZhdGUgRGF0YUdyb3VwQnVja2V0U2l6ZTogbnVtYmVyID0gMTUwMDtcclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBwcml2YXRlIE9wYWNpdHlPblNlbGVjdGVkOiBudW1iZXIgPSAwLjM7XHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgcHJpdmF0ZSBzaW5nbGVEYXRhU2V0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgY29uc3RydWN0b3IocHVibGljIEFkYXB0ZXI6IEJhc2VBZGFwdGVyLCBwcml2YXRlIGRhdGVFeHRzOiBEYXRlU2VydmljZSkgeyB9XHJcblxyXG4gICAgLyoqIFJpZmVpcm1lbnRvIGludGVybm8gYWxsJ2Fzc2UgZGVsbGUgRGF0ZSBwZXIgc2VtcGxpY2l0w6AgKi9cclxuICAgIHByaXZhdGUgZGF0ZUF4aXM6IGFtNGNoYXJ0cy5EYXRlQXhpcztcclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldG9kbyBjaGUgZGF0YSB1bmEgY29wcGlhIERhdGkgLSBJbXBvc3RhemlvbmkgbGkgdXRpbGl6emEgcGVyIGNyZWFyZSBlIHZpc3VhbGl6emFyZSB1biBMaW5lQ2hhcnRcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdyYXBoaWNhdGUoZGF0YTogTGluZUNoYXJ0RGF0YSB8IGFueSwgc2V0dGluZ3M6IExpbmVDaGFydFNldHRpbmdzKTogSUJhc2VTZXJ2aWNlPGFtNGNoYXJ0cy5YWUNoYXJ0PiB7XHJcbiAgICAgICAgbGV0IGRhdGFDb252ZXJ0ZWQ6IExpbmVDaGFydERhdGEgPSB0aGlzLkFkYXB0ZXIgPyB0aGlzLkFkYXB0ZXIuYWRhcHREYXRhRm9yTGluZUNoYXJ0KGRhdGEpIDogZGF0YTtcclxuICAgICAgICBsZXQgdGhyZXNob2xkID0gc2V0dGluZ3MuRGF0YUdyb3VwaW5nVGhyZXNob2xkID8/IDMwMDA7XHJcbiAgICAgICAgdGhpcy5zaW5nbGVEYXRhU2V0ID0gc2V0dGluZ3MuTWVyZ2VEYXRhc2V0cyA/PyBmYWxzZTtcclxuICAgICAgICBsZXQgc2hvd1RpY2tzID0gc2V0dGluZ3MuU2hvd1RpY2tzID09IG51bGwgPyB0cnVlIDogc2V0dGluZ3M/LlNob3dUaWNrcztcclxuICAgICAgICBsZXQgZGF0YVNob3VsZEJlR3JvdXBlZCA9IE1hdGgubWF4KC4uLmRhdGFDb252ZXJ0ZWQuc2VyaWVzLm1hcCh0ID0+IHQudmFsdWVzLmxlbmd0aCkpID4gdGhyZXNob2xkO1xyXG4gICAgICAgIGxldCBzaG93VGltZWxpbmUgPSBzZXR0aW5ncy5UaW1lbGluZSB8fCBkYXRhU2hvdWxkQmVHcm91cGVkO1xyXG4gICAgICAgIGxldCBzZXJpZXNXaXRoSW50ZXJ2YWwgPSBkYXRhQ29udmVydGVkLnNlcmllcy5zb21lKHQgPT4gdC5pbnRlcnZhbCk7XHJcbiAgICAgICAgbGV0IGludGVydmFsID0gc2VyaWVzV2l0aEludGVydmFsID8gZGF0YUNvbnZlcnRlZC5zZXJpZXMuZmluZCh0ID0+IHQuaW50ZXJ2YWwpLmludGVydmFsIDogbnVsbDtcclxuICAgICAgICBsZXQgZ2Fwc0FsbG93ZWQgPSBzZXR0aW5ncz8uQWxsb3dHYXBzID09IG51bGwgPyBzZXJpZXNXaXRoSW50ZXJ2YWwgOiBzZXR0aW5ncz8uQWxsb3dHYXBzO1xyXG4gICAgICAgIGxldCBmaW5hbEluc3RhbnQgPSBzZXR0aW5ncz8uRmluYWxJbnN0YW50cyA/PyB0cnVlO1xyXG5cclxuICAgICAgICAvL1BlciBldml0YXJlIGRpIGRpbWVudGljYXJtZWxpIGUgZ2VzdGlyZSBjb211bnF1ZSBiZW5lIGdsaSBuZ2lmIGVjYy4uLlxyXG4gICAgICAgIGFtNGNvcmUub3B0aW9ucy5hdXRvRGlzcG9zZSA9IHRydWU7XHJcblxyXG4gICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZSA9IGFtNGNvcmUuY3JlYXRlKHNldHRpbmdzLk5hbWUsIGFtNGNoYXJ0cy5YWUNoYXJ0KTtcclxuICAgICAgICBsZXQgQ2hhcnRJbnN0YW5jZUNhc3RlZCA9IDxhbTRjaGFydHMuWFlDaGFydD50aGlzLkNoYXJ0SW5zdGFuY2U7XHJcblxyXG4gICAgICAgIGxldCB5QXhpcyA9IENoYXJ0SW5zdGFuY2VDYXN0ZWQueUF4ZXMucHVzaChuZXcgYW00Y2hhcnRzLlZhbHVlQXhpcygpKTtcclxuICAgICAgICBpZiAoc2V0dGluZ3MuWUF4aXNUaXRsZSkge1xyXG4gICAgICAgICAgICB5QXhpcy50aXRsZS50ZXh0ID0gc2V0dGluZ3MuWUF4aXNUaXRsZVxyXG4gICAgICAgICAgICB5QXhpcy50aXRsZS5mb250V2VpZ2h0ID0gXCJib2xkXCI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoc2V0dGluZ3MuTWluKVxyXG4gICAgICAgICAgICB5QXhpcy5taW4gPSBzZXR0aW5ncy5NaW47XHJcbiAgICAgICAgaWYgKHNldHRpbmdzLk1heClcclxuICAgICAgICAgICAgeUF4aXMubWF4ID0gc2V0dGluZ3MuTWF4O1xyXG5cclxuICAgICAgICBsZXQgbGltaXROdWxsT3JVbmRlZiA9IGRhdGFDb252ZXJ0ZWQubGltaXQgPT0gbnVsbCB8fCBkYXRhQ29udmVydGVkLmxpbWl0ID09IHVuZGVmaW5lZDtcclxuICAgICAgICBsZXQgbGltaXRzID0gbGltaXROdWxsT3JVbmRlZiA/IFtdIDogISg8YW55PmRhdGFDb252ZXJ0ZWQubGltaXQpLmxlbmd0aCA/IFs8TGltaXQ+ZGF0YUNvbnZlcnRlZC5saW1pdF0gOiA8TGltaXRbXT5kYXRhQ29udmVydGVkLmxpbWl0O1xyXG4gICAgICAgIGlmIChsaW1pdHMubGVuZ3RoID4gMCkge1xyXG5cclxuICAgICAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IGxpbWl0cy5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgICAgICAgICBsZXQgbGltaXQgPSBsaW1pdHNbaV1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAobGltaXQudXBwZXIgIT0gbnVsbCAmJiBsaW1pdC51cHBlciAhPSB1bmRlZmluZWQgJiYgbGltaXQubG93ZXIgIT0gbnVsbCAmJiBsaW1pdC5sb3dlciAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcmFuZ2UgPSB5QXhpcy5heGlzUmFuZ2VzLmNyZWF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLnZhbHVlID0gbGltaXQubG93ZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UuZW5kVmFsdWUgPSBsaW1pdC51cHBlcjtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxpbWl0LmZpbGxDb2xvcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByYW5nZS5jb250ZW50cy5zdHJva2UgPSBhbTRjb3JlLmNvbG9yKGxpbWl0LmZpbGxDb2xvcik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlLmNvbnRlbnRzLmZpbGwgPSByYW5nZS5jb250ZW50cy5zdHJva2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICByYW5nZS5sYWJlbC5pbnNpZGUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLmxhYmVsLnRleHQgPSBsaW1pdC51cHBlcmxhYmVsO1xyXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLmxhYmVsLmZpbGwgPSByYW5nZS5ncmlkLnN0cm9rZTtcclxuICAgICAgICAgICAgICAgICAgICByYW5nZS5sYWJlbC52ZXJ0aWNhbENlbnRlciA9IFwiYm90dG9tXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UubGFiZWwuc3Ryb2tlID0gYW00Y29yZS5jb2xvcihsaW1pdC51cHBlcmNvbG9yIHx8IFwiI0Y5MjIwMFwiKTtcclxuICAgICAgICAgICAgICAgICAgICByYW5nZS5ncmlkLnN0cm9rZSA9IGFtNGNvcmUuY29sb3IobGltaXQudXBwZXJjb2xvciB8fCBcIiNGOTIyMDBcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UuZ3JpZC5zdHJva2VXaWR0aCA9IDI7XHJcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UuZ3JpZC5zdHJva2VPcGFjaXR5ID0gMTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKChsaW1pdC5sb3dlciA9PSBudWxsIHx8IGxpbWl0Lmxvd2VyID09IHVuZGVmaW5lZCkgJiYgbGltaXQudXBwZXIgIT0gbnVsbCAmJiBsaW1pdC51cHBlciAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcmFuZ2UgPSB5QXhpcy5heGlzUmFuZ2VzLmNyZWF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLnZhbHVlID0gbGltaXQudXBwZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UubGFiZWwuaW5zaWRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICByYW5nZS5sYWJlbC50ZXh0ID0gbGltaXQudXBwZXJsYWJlbDtcclxuICAgICAgICAgICAgICAgICAgICByYW5nZS5sYWJlbC5maWxsID0gcmFuZ2UuZ3JpZC5zdHJva2U7XHJcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UubGFiZWwudmVydGljYWxDZW50ZXIgPSBcImJvdHRvbVwiO1xyXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLmxhYmVsLnN0cm9rZSA9IGFtNGNvcmUuY29sb3IobGltaXQudXBwZXJjb2xvciB8fCBcIiNGOTIyMDBcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UuZ3JpZC5zdHJva2UgPSBhbTRjb3JlLmNvbG9yKGxpbWl0LnVwcGVyY29sb3IgfHwgXCIjRjkyMjAwXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLmdyaWQuc3Ryb2tlV2lkdGggPSAyO1xyXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLmdyaWQuc3Ryb2tlT3BhY2l0eSA9IDE7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICgobGltaXQudXBwZXIgPT0gbnVsbCB8fCBsaW1pdC51cHBlciA9PSB1bmRlZmluZWQpICYmIGxpbWl0Lmxvd2VyICE9IG51bGwgJiYgbGltaXQubG93ZXIgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJhbmdlID0geUF4aXMuYXhpc1Jhbmdlcy5jcmVhdGUoKTtcclxuICAgICAgICAgICAgICAgICAgICByYW5nZS52YWx1ZSA9IGxpbWl0Lmxvd2VyO1xyXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLmxhYmVsLmluc2lkZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UubGFiZWwudGV4dCA9IGxpbWl0Lmxvd2VybGFiZWw7XHJcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UubGFiZWwuZmlsbCA9IHJhbmdlLmdyaWQuc3Ryb2tlO1xyXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLmxhYmVsLnZlcnRpY2FsQ2VudGVyID0gXCJib3R0b21cIjtcclxuICAgICAgICAgICAgICAgICAgICByYW5nZS5sYWJlbC5zdHJva2UgPSBhbTRjb3JlLmNvbG9yKGxpbWl0Lmxvd2VyY29sb3IgfHwgXCIjRjkyMjAwXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLmdyaWQuc3Ryb2tlID0gYW00Y29yZS5jb2xvcihsaW1pdC5sb3dlcmNvbG9yIHx8IFwiI0Y5MjIwMFwiKTtcclxuICAgICAgICAgICAgICAgICAgICByYW5nZS5ncmlkLnN0cm9rZVdpZHRoID0gMjtcclxuICAgICAgICAgICAgICAgICAgICByYW5nZS5ncmlkLnN0cm9rZU9wYWNpdHkgPSAxO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIHRoaXMuZGF0ZUF4aXMgPSBDaGFydEluc3RhbmNlQ2FzdGVkLnhBeGVzLnB1c2gobmV3IGFtNGNoYXJ0cy5EYXRlQXhpcygpKTtcclxuXHJcbiAgICAgICAgLy8gUGVyIGNvbWF0aWJpbGl0w6AgY29sIGNvZGljZSBzY3JpdHRvIHF1YW5kbyBub24gZXJhIGEgbGl2ZWxsbyBnbG9iYWxlLCBtaSBzY29jY2lhIHNvc3RpdHVpcmVcclxuICAgICAgICBsZXQgZGF0ZUF4aXMgPSB0aGlzLmRhdGVBeGlzO1xyXG5cclxuICAgICAgICBpZiAoc2V0dGluZ3MuWEF4aXNUaXRsZSkge1xyXG4gICAgICAgICAgICBkYXRlQXhpcy50aXRsZS50ZXh0ID0gc2V0dGluZ3MuWEF4aXNUaXRsZVxyXG4gICAgICAgICAgICBkYXRlQXhpcy50aXRsZS5mb250V2VpZ2h0ID0gXCJib2xkXCI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoc2hvd1RpY2tzKSB7XHJcbiAgICAgICAgICAgIGRhdGVBeGlzLnJlbmRlcmVyLnRpY2tzLnRlbXBsYXRlLmRpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGRhdGVBeGlzLnJlbmRlcmVyLnRpY2tzLnRlbXBsYXRlLnN0cm9rZU9wYWNpdHkgPSAxO1xyXG4gICAgICAgICAgICBkYXRlQXhpcy5yZW5kZXJlci50aWNrcy50ZW1wbGF0ZS5zdHJva2UgPSBhbTRjb3JlLmNvbG9yKFwiIzQ5NUM0M1wiKTtcclxuICAgICAgICAgICAgZGF0ZUF4aXMucmVuZGVyZXIudGlja3MudGVtcGxhdGUuc3Ryb2tlV2lkdGggPSAyO1xyXG4gICAgICAgICAgICBkYXRlQXhpcy5yZW5kZXJlci50aWNrcy50ZW1wbGF0ZS5sZW5ndGggPSAxMDtcclxuICAgICAgICAgICAgZGF0ZUF4aXMucmVuZGVyZXIudGlja3MudGVtcGxhdGUubG9jYXRpb24gPSAwO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZGF0ZUF4aXMucmVuZGVyZXIubWluR3JpZERpc3RhbmNlID0gc2V0dGluZ3M/Lk1pbkdyaWREaXN0YW5jZSA/PyA1MDtcclxuICAgICAgICBkYXRlQXhpcy5yZW5kZXJlci5ncmlkLnRlbXBsYXRlLmxvY2F0aW9uID0gMDtcclxuICAgICAgICBkYXRlQXhpcy5taW5ab29tQ291bnQgPSA1O1xyXG4gICAgICAgIGRhdGVBeGlzLmdyb3VwRGF0YSA9IGRhdGFTaG91bGRCZUdyb3VwZWQ7XHJcbiAgICAgICAgZGF0ZUF4aXMuZ3JvdXBDb3VudCA9IHNldHRpbmdzLkRhdGFHcm91cEJ1Y2tldFNpemUgPz8gdGhpcy5EYXRhR3JvdXBCdWNrZXRTaXplO1xyXG5cclxuICAgICAgICAvL1NlIGhvIGFsbWVubyB1bmEgc2VyaWUgYWQgaW50ZXJ2YWxsbyBlIGkgc2V0dGluZ3Mgbm9uIG1pIGltcGVkaXNjb25vIGVzcGxpY2l0YW1lbnRlIGRpIHVzYXJlIGkgZ2FwcywgdmlzdWFsaXp6byBpIGRhdGkgY29sIGdhcFxyXG5cclxuICAgICAgICBpZiAoZ2Fwc0FsbG93ZWQpIHtcclxuICAgICAgICAgICAgaWYgKCFzZXJpZXNXaXRoSW50ZXJ2YWwpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJQZXIgdXRpbGl6emFyZSBsYSBmdW56aW9uYWxpdMOgIGRlaSBnYXAgw6ggb2JibGlnYXRvcmlvIGRlZmluaXJlIHVuIGludGVydmFsbG8gbmVsbGUgc2VyaWUgZGVsIGdyYWZpY29cIik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgZGF0ZUF4aXMuYmFzZUludGVydmFsID0geyBjb3VudDogaW50ZXJ2YWwuY291bnQsIHRpbWVVbml0OiBpbnRlcnZhbC50aW1ldW5pdCB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoc2hvd1RpbWVsaW5lKVxyXG4gICAgICAgICAgICBDaGFydEluc3RhbmNlQ2FzdGVkLnNjcm9sbGJhclggPSBuZXcgYW00Y2hhcnRzLlhZQ2hhcnRTY3JvbGxiYXIoKTtcclxuXHJcbiAgICAgICAgbGV0IHNlcmllc1RvUHVzaCA9IFtdO1xyXG4gICAgICAgIGxldCBzZXJpZXNDb2xvcnM6IGFtNGNvcmUuQ29sb3JbXSA9IFtdO1xyXG4gICAgICAgIGxldCBkZWZhdWx0SW5kZXggPSAwO1xyXG5cclxuICAgICAgICAvLyBPcmRpbmFtZW50byBkZWkgZGF0aSBzZSBzZXJ2ZVxyXG4gICAgICAgIGRhdGFDb252ZXJ0ZWQuc2VyaWVzLmZvckVhY2goKHMpID0+IHtcclxuICAgICAgICAgICAgaWYgKHMudmFsdWVzWzBdICYmICEocy52YWx1ZXNbMF0uZCBpbnN0YW5jZW9mIERhdGUpKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCB2ID0gMDsgdiA8IHMudmFsdWVzLmxlbmd0aDsgdisrKVxyXG4gICAgICAgICAgICAgICAgICAgIHMudmFsdWVzW3ZdLmQgPSBuZXcgRGF0ZShzLnZhbHVlc1t2XS5kKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdmFyIGNvcnJlY3RPcmRlciA9IHRydWU7XHJcbiAgICAgICAgICAgIHZhciBwcmV2RGF0ZSA9IG51bGw7XHJcbiAgICAgICAgICAgIGZvciAobGV0IHYgPSAwOyB2IDwgcy52YWx1ZXMubGVuZ3RoOyB2KyspIHtcclxuICAgICAgICAgICAgICAgIGlmICghcHJldkRhdGUpXHJcbiAgICAgICAgICAgICAgICAgICAgcHJldkRhdGUgPSBzLnZhbHVlc1t2XS5kO1xyXG4gICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChzLnZhbHVlc1t2XS5kIDwgcHJldkRhdGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29ycmVjdE9yZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKCFjb3JyZWN0T3JkZXIpXHJcbiAgICAgICAgICAgICAgICBzLnZhbHVlcy5zb3J0KChkMSwgZDIpID0+IGQxLmQuZ2V0VGltZSgpIC0gZDIuZC5nZXRUaW1lKCkpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICAvLyBHZW5lcmF6aW9uZSBkaSB1biB1bmljbyBkYXRhc2V0IGludmVjZSBjaGUgTiwgcGVyIHBvdGVyIGdlc3RpcmUgdW4gdW5pY28gdG9vbHRpcFxyXG4gICAgICAgIGlmICh0aGlzLnNpbmdsZURhdGFTZXQpIHtcclxuICAgICAgICAgICAgdGhpcy5DaGFydEluc3RhbmNlLmRhdGEgPSB0aGlzLmdlbmVyYXRlU2luZ2xlRGF0YXNldChkYXRhQ29udmVydGVkKTs7XHJcbiAgICAgICAgICAgIGRhdGVBeGlzLmN1cnNvclRvb2x0aXBFbmFibGVkID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBkYXRhQ29udmVydGVkLnNlcmllcy5mb3JFYWNoKChzLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgZmlsbCA9IHMuZmlsbCAhPSBudWxsICYmIHMuZmlsbCAhPSB1bmRlZmluZWQgPyBzLmZpbGwgOiAoc2V0dGluZ3M/LkZpbGwgPz8gZmFsc2UpO1xyXG4gICAgICAgICAgICBsZXQgc2VyaWVzOiBhbTRjaGFydHMuU3RlcExpbmVTZXJpZXMgfCBhbTRjaGFydHMuTGluZVNlcmllcyA9IHNldHRpbmdzPy5TdGVwID8gbmV3IGFtNGNoYXJ0cy5TdGVwTGluZVNlcmllcygpIDogbmV3IGFtNGNoYXJ0cy5MaW5lU2VyaWVzKCk7XHJcbiAgICAgICAgICAgIHNlcmllcy5kYXRhRmllbGRzLnZhbHVlWSA9IFwidlwiICsgKHRoaXMuc2luZ2xlRGF0YVNldCA/IGluZGV4IDogXCJcIik7XHJcbiAgICAgICAgICAgIHNlcmllcy5kYXRhRmllbGRzLmRhdGVYID0gXCJkXCI7XHJcbiAgICAgICAgICAgICg8YW55PnNlcmllcy5kYXRhRmllbGRzKS5tZWFzdXJlVW5pdCA9IHMudW9tO1xyXG4gICAgICAgICAgICBzZXJpZXMubmFtZSA9IHMubmFtZTtcclxuICAgICAgICAgICAgc2VyaWVzLnN0cm9rZVdpZHRoID0gc2V0dGluZ3M/LlN0cm9rZVNpemUgPz8gMTtcclxuICAgICAgICAgICAgc2VyaWVzLmNvbm5lY3QgPSAhZ2Fwc0FsbG93ZWQ7XHJcbiAgICAgICAgICAgIHNlcmllcy5taW5CdWxsZXREaXN0YW5jZSA9IDEwO1xyXG4gICAgICAgICAgICBzZXJpZXMudG9vbHRpcFRleHQgPSB0aGlzLnNpbmdsZURhdGFTZXQgPyBcIlwiIDogcy5uYW1lID8gXCJ7bmFtZX06IFtib2xkXXt2YWx1ZVl9Wy9dXCIgOiBcIltib2xkXXt2YWx1ZVl9Wy9dXCI7XHJcbiAgICAgICAgICAgIHNlcmllcy50b29sdGlwLnBvaW50ZXJPcmllbnRhdGlvbiA9IFwidmVydGljYWxcIjtcclxuICAgICAgICAgICAgc2VyaWVzLnRvb2x0aXAuYmFja2dyb3VuZC5maWxsT3BhY2l0eSA9IDAuNTtcclxuICAgICAgICAgICAgc2VyaWVzLnRvb2x0aXAubGFiZWwucGFkZGluZygxMiwgMTIsIDEyLCAxMik7XHJcbiAgICAgICAgICAgIHNlcmllcy5maWxsT3BhY2l0eSA9IGZpbGwgPyAxIDogMC4wMDAxO1xyXG4gICAgICAgICAgICBzZXJpZXMuc3RhY2tlZCA9IGZpbGxcclxuXHJcbiAgICAgICAgICAgIC8vRGF0YXNldCBzaW5nb2xvLCBpIGRhdGkgc29ubyByZWdpc3RyYXRpIGEgbGl2ZWxsbyBkaSBjaGFydCwgY3JlbyBpbCB0b29sdGlwIGNoZSBwZXJtZXR0ZSBkaSB2ZWRlcmxpIHR1dHRpIGluc2llbWVcclxuICAgICAgICAgICAgLy9hbHRyaW1lbnRpIGFzc2Vnbm8gaSBkYXRpIGRlbGxhIHNlcmllIGRpcmV0dGFtZW50ZSBhbGxhIHNlcmllXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNpbmdsZURhdGFTZXQpIHtcclxuICAgICAgICAgICAgICAgIHNlcmllcy50b29sdGlwLmdldEZpbGxGcm9tT2JqZWN0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBzZXJpZXMudG9vbHRpcC5iYWNrZ3JvdW5kLmZpbGwgPSBhbTRjb3JlLmNvbG9yKFwiI2VlZVwiKTtcclxuICAgICAgICAgICAgICAgIHNlcmllcy50b29sdGlwLmxhYmVsLmZpbGwgPSBhbTRjb3JlLmNvbG9yKFwiIzAwXCIpO1xyXG4gICAgICAgICAgICAgICAgc2VyaWVzLnRvb2x0aXAuZGVmYXVsdFN0YXRlLnRyYW5zaXRpb25EdXJhdGlvbiA9IDA7XHJcbiAgICAgICAgICAgICAgICBzZXJpZXMudG9vbHRpcC5oaWRkZW5TdGF0ZS50cmFuc2l0aW9uRHVyYXRpb24gPSAwO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vVXRpbGl6em8gaWwgbWlvIGRhdGVTZXJ2aWNlIHBlciBsYSBmb3JtYXR0YXppb25lIGRlbGxhIGRhdGEgaW4gbW9kbyBjaGUgbm9uIGRlYmJhIG1haSBnZXN0aXJlIG4gZm9ybWF0aSBmcmEgbiBsaWJyZXJpZS4uLiBiZWxsaXNzaW1vXHJcbiAgICAgICAgICAgICAgICBzZXJpZXMuZGF0ZUZvcm1hdHRlci5mb3JtYXQgPSAoc291cmNlOiBEYXRlKTogc3RyaW5nID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaW50ZXJ2YWwgJiYgZmluYWxJbnN0YW50ICYmIFtcImhvdXJcIiwgXCJtaW51dGVcIiwgXCJzZWNvbmRcIl0uaW5jbHVkZXMoaW50ZXJ2YWwudGltZXVuaXQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0aW1lcGFydDogXCJtaW51dGVcIiB8IFwiaG91clwiIHwgXCJkYXlcIiA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJ2YWwudGltZXVuaXQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJob3VyXCI6IHRpbWVwYXJ0ID0gJ2RheSc7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcIm1pbnV0ZVwiOiB0aW1lcGFydCA9ICdob3VyJzsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwic2Vjb25kXCI6IHRpbWVwYXJ0ID0gJ21pbnV0ZSc7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aW1lcGFydClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGVFeHRzLmFkanVzdERhdGVUb0ZpbmFsSW5zdGFudChzb3VyY2UsIHRpbWVwYXJ0LCBpbnRlcnZhbCA/IGludGVydmFsLnRpbWV1bml0ID09IFwic2Vjb25kXCIgOiBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0ZUV4dHMuZ2V0Rm9ybWF0dGVkKHNvdXJjZSwgaW50ZXJ2YWwgPyBbXCJkYXlcIiwgXCJ3ZWVrXCIsIFwibW9udGhcIiwgXCJ5ZWFyXCJdLmluY2x1ZGVzKGludGVydmFsLnRpbWV1bml0KSA6IGZhbHNlLCBpbnRlcnZhbCA/IGludGVydmFsLnRpbWV1bml0ID09IFwic2Vjb25kXCIgOiBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgKDxhbnk+c2VyaWVzLmFkYXB0ZXIpLmFkZChcInRvb2x0aXBUZXh0XCIsICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgdGV4dCA9IFwiW2JvbGRde2RhdGVYLmZvcm1hdERhdGUoKX1bL11cXG5cIjtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLkNoYXJ0SW5zdGFuY2Uuc2VyaWVzLmVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHVvbSA9IFwiIFtmb250LXN0eWxlOiBpdGFsaWNdXCIgKyAoPGFueT5zZXJpZXMuZGF0YUZpZWxkcykubWVhc3VyZVVuaXQgfHwgXCJcIiArIFwiWy9dXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQgKz0gXCJbXCIgKyAoPGFueT5pdGVtLnN0cm9rZSkuaGV4ICsgXCJd4pePWy9dIFwiICsgKGl0ZW0ubmFtZSA/IChpdGVtLm5hbWUgKyBcIjogXCIpIDogXCJcIikgKyBcIltib2xkXXtcIiArIGl0ZW0uZGF0YUZpZWxkcy52YWx1ZVkgKyBcIn1bL11cIiArIHVvbSArIFwiXFxuXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRleHQ7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICBzZXJpZXMuZGF0YSA9IHMudmFsdWVzO1xyXG5cclxuICAgICAgICAgICAgbGV0IHNlZ21lbnQgPSBzZXJpZXMuc2VnbWVudHMudGVtcGxhdGU7XHJcblxyXG4gICAgICAgICAgICBsZXQgaG92ZXJTdGF0ZSA9IHNlZ21lbnQuc3RhdGVzLmNyZWF0ZShcImhvdmVyXCIpO1xyXG4gICAgICAgICAgICBob3ZlclN0YXRlLnByb3BlcnRpZXMuc3Ryb2tlV2lkdGggPSAoc2V0dGluZ3M/LlN0cm9rZVNpemUgPz8gMSkgKyAxO1xyXG5cclxuICAgICAgICAgICAgbGV0IGRpbW1lZCA9IHNlZ21lbnQuc3RhdGVzLmNyZWF0ZShcImRpbW1lZFwiKTtcclxuICAgICAgICAgICAgZGltbWVkLnByb3BlcnRpZXMuc3Ryb2tlID0gYW00Y29yZS5jb2xvcihcIiNkYWRhZGFcIik7XHJcblxyXG4gICAgICAgICAgICAvL1NlIGxhIHNlcmllIGhhIHVuIGNvbG9yZSwgdXNvIHF1ZWxsbywgYWx0cmltZW50aSBwZXNjbyBkYWkgY29sb3JpIGRpIGRlZmF1bHQgYW5kYW5kbyBpbiBvcmRpbmVcclxuICAgICAgICAgICAgaWYgKHMuY29sb3IpXHJcbiAgICAgICAgICAgICAgICBzZXJpZXNDb2xvcnMucHVzaChhbTRjb3JlLmNvbG9yKHMuY29sb3IpKTtcclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBzZXJpZXNDb2xvcnMucHVzaChDaGFydEluc3RhbmNlQ2FzdGVkLmNvbG9ycy5saXN0W2RlZmF1bHRJbmRleCAlIENoYXJ0SW5zdGFuY2VDYXN0ZWQuY29sb3JzLmxpc3QubGVuZ3RoXSlcclxuICAgICAgICAgICAgICAgIGRlZmF1bHRJbmRleCsrO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBzZXJpZXNUb1B1c2gucHVzaChzZXJpZXMpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuXHJcbiAgICAgICAgQ2hhcnRJbnN0YW5jZUNhc3RlZC5jb2xvcnMubGlzdCA9IHNlcmllc0NvbG9ycztcclxuICAgICAgICAvL1Njcml2byBsZSBzZXJpZSBuZWwgZ3JhZmljb1xyXG4gICAgICAgIHNlcmllc1RvUHVzaC5mb3JFYWNoKHMgPT4ge1xyXG4gICAgICAgICAgICBDaGFydEluc3RhbmNlQ2FzdGVkLnNlcmllcy5wdXNoKHMpO1xyXG4gICAgICAgICAgICBpZiAoc2hvd1RpbWVsaW5lKVxyXG4gICAgICAgICAgICAgICAgKDxhbTRjaGFydHMuWFlDaGFydFNjcm9sbGJhcj5DaGFydEluc3RhbmNlQ2FzdGVkLnNjcm9sbGJhclgpLnNlcmllcy5wdXNoKHMpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBpZiAoc2V0dGluZ3MuTGVnZW5kKSB7XHJcbiAgICAgICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZS5sZWdlbmQgPSBuZXcgYW00Y2hhcnRzLkxlZ2VuZCgpO1xyXG4gICAgICAgICAgICB0aGlzLkNoYXJ0SW5zdGFuY2UubGVnZW5kLnBvc2l0aW9uID0gc2V0dGluZ3M/LkxlZ2VuZFBvc2l0aW9uID8/ICdyaWdodCc7XHJcbiAgICAgICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZS5sZWdlbmQuc2Nyb2xsYWJsZSA9IHRydWU7XHJcblxyXG4gICAgICAgICAgICB0aGlzLkNoYXJ0SW5zdGFuY2UubGVnZW5kLml0ZW1Db250YWluZXJzLnRlbXBsYXRlLnRvb2x0aXBUZXh0ID0gXCJ7bmFtZX1cIjtcclxuICAgICAgICAgICAgdGhpcy5DaGFydEluc3RhbmNlLmxlZ2VuZC5pdGVtQ29udGFpbmVycy50ZW1wbGF0ZS5ldmVudHMub24oXCJvdmVyXCIsIChldmVudCkgPT4geyB0aGlzLnByb2Nlc3NPdmVyKDxhbTRjaGFydHMuTGluZVNlcmllcz5ldmVudC50YXJnZXQuZGF0YUl0ZW0uZGF0YUNvbnRleHQpOyB9KTtcclxuICAgICAgICAgICAgdGhpcy5DaGFydEluc3RhbmNlLmxlZ2VuZC5pdGVtQ29udGFpbmVycy50ZW1wbGF0ZS5ldmVudHMub24oXCJvdXRcIiwgKCkgPT4geyB0aGlzLnByb2Nlc3NPdXQoKTsgfSk7XHJcblxyXG4gICAgICAgICAgICBpZiAoc2V0dGluZ3MuTGVnZW5kUGFkZGluZykge1xyXG4gICAgICAgICAgICAgICAgbGV0IHRlbXBsYXRlID0gdGhpcy5DaGFydEluc3RhbmNlLmxlZ2VuZC5pdGVtQ29udGFpbmVycy50ZW1wbGF0ZTtcclxuICAgICAgICAgICAgICAgIHRlbXBsYXRlLnBhZGRpbmdUb3AgPSBzZXR0aW5ncy5MZWdlbmRQYWRkaW5nLnRvcCA/PyAwO1xyXG4gICAgICAgICAgICAgICAgdGVtcGxhdGUucGFkZGluZ0JvdHRvbSA9IHNldHRpbmdzLkxlZ2VuZFBhZGRpbmcuYm90dG9tID8/IDA7XHJcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZS5wYWRkaW5nTGVmdCA9IHNldHRpbmdzLkxlZ2VuZFBhZGRpbmcubGVmdCA/PyAwO1xyXG4gICAgICAgICAgICAgICAgdGVtcGxhdGUucGFkZGluZ1JpZ2h0ID0gc2V0dGluZ3MuTGVnZW5kUGFkZGluZy5yaWdodCA/PyAwO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLkNoYXJ0SW5zdGFuY2UuY3Vyc29yID0gbmV3IGFtNGNoYXJ0cy5YWUN1cnNvcigpO1xyXG5cclxuICAgICAgICAvL1Byb3ZlKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICAgICAgLy8gdGhpcy5DaGFydEluc3RhbmNlLmN1cnNvci5ldmVudHMub24oXCJjdXJzb3Jwb3NpdGlvbmNoYW5nZWRcIiwgKGV2KSA9PiB7XHJcbiAgICAgICAgLy8gICAgIC8vdmFyIHZhbHVlID0gZGF0ZUF4aXMucG9zaXRpb25Ub0RhdGUoZGF0ZUF4aXMudG9BeGlzUG9zaXRpb24oZXYudGFyZ2V0LnhQb3NpdGlvbikpO1xyXG4gICAgICAgIC8vICAgICB2YXIgZHQgPSBkYXRlQXhpcy5zZXJpZXMudmFsdWVzLmZpbmQodCA9PiB0LmRhdGFJdGVtLnZhbHVlcy5kYXRlWCk7XHJcbiAgICAgICAgLy8gICAgIGlmIChkdCAmJiBkdC5kYXRhSXRlbSkge1xyXG4gICAgICAgIC8vICAgICAgICAgY29uc29sZS5sb2coZHQuZGF0YUl0ZW0udmFsdWVzKTtcclxuICAgICAgICAvLyAgICAgICAgIC8vIHRoaXMuQ2hhcnRJbnN0YW5jZS50b29sdGlwVGV4dCA9IGR0O1xyXG4gICAgICAgIC8vICAgICB9XHJcbiAgICAgICAgLy8gICAgIGVsc2Uge1xyXG4gICAgICAgIC8vICAgICAgICAgdGhpcy5DaGFydEluc3RhbmNlLnRvb2x0aXBUZXh0ID0gXCJcIjtcclxuICAgICAgICAvLyAgICAgfVxyXG4gICAgICAgIC8vIH0pO1xyXG4gICAgICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG4gICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZS5jdXJzb3IueEF4aXMgPSBkYXRlQXhpcztcclxuICAgICAgICB0aGlzLkNoYXJ0SW5zdGFuY2UuY3Vyc29yLnlBeGlzID0geUF4aXM7XHJcbiAgICAgICAgaWYgKHRoaXMuc2luZ2xlRGF0YVNldClcclxuICAgICAgICAgICAgdGhpcy5DaGFydEluc3RhbmNlLmN1cnNvci5tYXhUb29sdGlwRGlzdGFuY2UgPSAtMTtcclxuXHJcbiAgICAgICAgLy9UT0RPOiBDZXJjYXJlIGRpIGNhcGlyZSBwZXJjaMOpIMOoIGZpZ2xpbyBkaSBwdXR0YW5hLi4uLi4uXHJcbiAgICAgICAgZGF0ZUF4aXMuZXZlbnRzLm9uKFwic3RhcnRjaGFuZ2VkXCIsIHQgPT4gdGhpcy5lbWl0U2VsZWN0aW9uQ2hhbmdlZCh0LCBzZXR0aW5ncykpO1xyXG4gICAgICAgIGRhdGVBeGlzLmV2ZW50cy5vbihcImVuZGNoYW5nZWRcIiwgdCA9PiB0aGlzLmVtaXRTZWxlY3Rpb25DaGFuZ2VkKHQsIHNldHRpbmdzKSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIHNldFNlbGVjdGlvbihmcm9tOiBEYXRlLCB0bzogRGF0ZSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZGF0ZUF4aXMuem9vbVRvRGF0ZXMoZnJvbSwgdG8sIHRydWUsIHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBwdWJsaWMgcmVmcmVzaERhdGEoZGF0YTogTGluZUNoYXJ0RGF0YSB8IGFueSkge1xyXG4gICAgICAgIGxldCBkYXRhQ29udmVydGVkOiBMaW5lQ2hhcnREYXRhID0gdGhpcy5BZGFwdGVyID8gdGhpcy5BZGFwdGVyLmFkYXB0RGF0YUZvckxpbmVDaGFydChkYXRhKSA6IGRhdGE7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnNpbmdsZURhdGFTZXQpIHtcclxuICAgICAgICAgICAgdmFyIGRhdGEgPSB0aGlzLmdlbmVyYXRlU2luZ2xlRGF0YXNldChkYXRhQ29udmVydGVkKTtcclxuICAgICAgICAgICAgdGhpcy5DaGFydEluc3RhbmNlLmFkZERhdGEoZGF0YSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRocm93IFwiSW1wb3NzaWJpbGUgYWdnaW9ybmFyZSBpIGRhdGkgc2VuemEgdW5pcmUgaWwgZGF0YXNldC4gU2kgcHJlZ2EgZGkgaW1wb3N0YXJlIFtNZXJnZURhdGFzZXRzXSBhIHRydWVcIlxyXG5cclxuICAgIH1cclxuXHJcbiAgICAvKiogUGFydGVuZG8gZGEgZGF0aSBkaXZpc2kgcGVyIHNlcml1ZSBnZW5lcmEgdW4gZGF0YXNldCB1bml0byBjb24gbGEgZGF0YSBjb21lIGNoaWF2ZSBlIGkgdmFyaSB2YWxvcmkgZG9wbyAqL1xyXG4gICAgcHJpdmF0ZSBnZW5lcmF0ZVNpbmdsZURhdGFzZXQoZGF0YTogTGluZUNoYXJ0RGF0YSk6IGFueSB7XHJcbiAgICAgICAgbGV0IGR0bzogeyBbaW5kZXg6IG51bWJlcl06IHsgW3NpbmRleDogc3RyaW5nXTogbnVtYmVyIH0gfSA9IHt9O1xyXG4gICAgICAgIGRhdGEuc2VyaWVzLmZvckVhY2goKHZzLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZzLnZhbHVlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgdmFyIGRhdGFpdGVtID0gdnMudmFsdWVzW2ldO1xyXG4gICAgICAgICAgICAgICAgdmFyIGluZGV4ZXIgPSBuZXcgRGF0ZShkYXRhaXRlbS5kKS52YWx1ZU9mKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKCFkdG9baW5kZXhlcl0pXHJcbiAgICAgICAgICAgICAgICAgICAgZHRvW2luZGV4ZXJdID0ge307XHJcblxyXG4gICAgICAgICAgICAgICAgZHRvW2luZGV4ZXJdWyd2JyArIGluZGV4XSA9IGRhdGFpdGVtLnY7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdmFyIGRhdGVzID0gT2JqZWN0LmtleXMoZHRvKTtcclxuICAgICAgICB2YXIgcmV0ID0gW107XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBsZXQgdmFsdWVzOiB7IFtzaW5kZXg6IHN0cmluZ106IG51bWJlciB9ID0gZHRvW2RhdGVzW2ldXTtcclxuICAgICAgICAgICAgbGV0IGl0ZW0gPSB7IGQ6IG5ldyBEYXRlKHBhcnNlSW50KGRhdGVzW2ldKSkgfVxyXG5cclxuICAgICAgICAgICAgdmFyIHZhbHMgPSBPYmplY3Qua2V5cyh2YWx1ZXMpO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpaSA9IDA7IGlpIDwgdmFscy5sZW5ndGg7IGlpKyspIHtcclxuICAgICAgICAgICAgICAgIGxldCBzZXJpZXMgPSB2YWxzW2lpXTtcclxuICAgICAgICAgICAgICAgIGxldCBzaW5nbGVWYWwgPSB2YWx1ZXNbc2VyaWVzXTtcclxuICAgICAgICAgICAgICAgIGl0ZW1bc2VyaWVzXSA9IHNpbmdsZVZhbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXQucHVzaChpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH1cclxuXHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgcHJpdmF0ZSBlbWl0U2VsZWN0aW9uQ2hhbmdlZChldiwgc2V0dGluZ3MpIHtcclxuICAgICAgICBpZiAoKDxhbnk+c2V0dGluZ3MpLk9uU2VsZWN0aW9uQ2hhbmdlZENhbGxiYWNrKSB7XHJcbiAgICAgICAgICAgIHRoaXMudGhyb3R0bGEoXCJzZWxjaGFuZ2VcIiwgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdmFyIGF4aXMgPSA8YW00Y2hhcnRzLkRhdGVBeGlzPmV2LnRhcmdldFxyXG4gICAgICAgICAgICAgICAgdmFyIHN0YXJ0ID0gbmV3IERhdGUoYXhpcy5taW5ab29tZWQpO1xyXG4gICAgICAgICAgICAgICAgdmFyIGVuZCA9IG5ldyBEYXRlKGF4aXMubWF4Wm9vbWVkKTtcclxuICAgICAgICAgICAgICAgIHZhciBpbml0aWFsID0gYXhpcy5taW4gPT0gYXhpcy5taW5ab29tZWQgJiYgYXhpcy5tYXggPT0gYXhpcy5tYXhab29tZWQ7XHJcbiAgICAgICAgICAgICAgICAoPGFueT5zZXR0aW5ncykuT25TZWxlY3Rpb25DaGFuZ2VkQ2FsbGJhY2soeyBmcm9tOiBzdGFydCwgdG86IGVuZCwgaW5pdGlhbDogaW5pdGlhbCB9KTtcclxuICAgICAgICAgICAgfSwgMTUwKVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgcHJpdmF0ZSBwcm9jZXNzT3Zlcihob3ZlcmVkU2VyaWVzOiBhbTRjaGFydHMuTGluZVNlcmllcykge1xyXG4gICAgICAgIGhvdmVyZWRTZXJpZXMudG9Gcm9udCgpO1xyXG4gICAgICAgIGxldCBmaWxsID0gaG92ZXJlZFNlcmllcy5zdGFja2VkO1xyXG4gICAgICAgIGhvdmVyZWRTZXJpZXMuc2VnbWVudHMuZWFjaCgoc2VnbWVudCkgPT4ge1xyXG4gICAgICAgICAgICBzZWdtZW50LnNldFN0YXRlKFwiaG92ZXJcIik7XHJcbiAgICAgICAgICAgIGlmICghZmlsbClcclxuICAgICAgICAgICAgICAgIHNlZ21lbnQuZmlsbFNwcml0ZS5maWxsT3BhY2l0eSA9IHRoaXMuT3BhY2l0eU9uU2VsZWN0ZWQ7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKCFmaWxsKVxyXG4gICAgICAgICAgICBob3ZlcmVkU2VyaWVzLmxlZ2VuZERhdGFJdGVtLm1hcmtlci5jaGlsZHJlbi5nZXRJbmRleCgxKS5maWxsT3BhY2l0eSA9IHRoaXMuT3BhY2l0eU9uU2VsZWN0ZWQ7XHJcblxyXG4gICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZS5zZXJpZXMuZWFjaCgoc2VyaWVzKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChzZXJpZXMgIT0gaG92ZXJlZFNlcmllcykge1xyXG4gICAgICAgICAgICAgICAgbGV0IGZpbGwgPSBzZXJpZXMuc3RhY2tlZDtcclxuICAgICAgICAgICAgICAgICg8YW00Y2hhcnRzLkxpbmVTZXJpZXM+c2VyaWVzKS5zZWdtZW50cy5lYWNoKChzZWdtZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2VnbWVudC5zZXRTdGF0ZShcImRpbW1lZFwiKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIWZpbGwpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlZ21lbnQuZmlsbFNwcml0ZS5maWxsT3BhY2l0eSA9IDA7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBwcml2YXRlIHByb2Nlc3NPdXQoKSB7XHJcbiAgICAgICAgdGhpcy5DaGFydEluc3RhbmNlLnNlcmllcy5lYWNoKChzZXJpZXMpID0+IHtcclxuICAgICAgICAgICAgbGV0IGZpbGwgPSBzZXJpZXMuc3RhY2tlZDtcclxuICAgICAgICAgICAgKDxhbTRjaGFydHMuTGluZVNlcmllcz5zZXJpZXMpLnNlZ21lbnRzLmVhY2goKHNlZ21lbnQpID0+IHtcclxuICAgICAgICAgICAgICAgIHNlZ21lbnQuc2V0U3RhdGUoXCJkZWZhdWx0XCIpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFmaWxsKVxyXG4gICAgICAgICAgICAgICAgICAgIHNlZ21lbnQuZmlsbFNwcml0ZS5maWxsT3BhY2l0eSA9IDA7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBpZiAoIWZpbGwpXHJcbiAgICAgICAgICAgICAgICBzZXJpZXMubGVnZW5kRGF0YUl0ZW0ubWFya2VyLmNoaWxkcmVuLmdldEluZGV4KDEpLmZpbGxPcGFjaXR5ID0gMDtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyoqKioqKioqKioqKioqKioqKioqIEZ1bnppb25lIGRpIHRocm90dGxpbmcgcGVyIG5vbiBzcGFtbWFyZSByaWNoaWVzdGUgaW4gY2FzbyBkaSBhbmltYXppb25pIGF0dGl2YXRlXHJcbiAgICAvL1RPRE86IHNwb3N0YXJsYSBpbiB1biBtZXRvZG8gZGkgdXRpbGl0w6AgKGVzZmFlbnphL2V4dGVuc2lvbnMpXHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgcHJpdmF0ZSBleGVjdXRpb25UaW1lcnM6IHsgW2luZGV4OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIHByaXZhdGUgdGhyb3R0bGEoaWQ6IHN0cmluZywgZnVuYzogRnVuY3Rpb24sIHRocm90dGxlVGltZTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICAgICAgLy9TZSBobyBsYSBmdW56aW9uZSBjaGUgdnVvbGUgZXNlZ3VpcmUgcmlwdWxpc2NvIHF1ZWwgdGltZW91dFxyXG4gICAgICAgIGlmICh0aGlzLmV4ZWN1dGlvblRpbWVyc1tpZF0pXHJcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmV4ZWN1dGlvblRpbWVyc1tpZF0pO1xyXG5cclxuICAgICAgICAvL1JpY3JlbyBpbCB0aW1lb3V0IHBlciBlc2VndWlyZSBxdWVsbGEgZnVuemlvbmUgZG9wbyB0aHJvdHRsZVRpbWUgbWlsbGlzZWNvbmRpXHJcbiAgICAgICAgdGhpcy5leGVjdXRpb25UaW1lcnNbaWRdID0gc2V0VGltZW91dCgoKSA9PiB7IGZ1bmMoKTsgdGhpcy5leGVjdXRpb25UaW1lcnNbaWRdID0gbnVsbDsgfSwgdGhyb3R0bGVUaW1lKTtcclxuICAgIH1cclxuICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG59Il19
|
|
@@ -99,8 +99,8 @@ export class Vertical2DChartService {
|
|
|
99
99
|
dataConverted.push(obj);
|
|
100
100
|
}
|
|
101
101
|
ChartInstanceCasted.data = dataConverted;
|
|
102
|
-
if (dataPreConverted.
|
|
103
|
-
ChartInstanceCasted.colors.list = dataPreConverted.
|
|
102
|
+
if (dataPreConverted.colorinfos)
|
|
103
|
+
ChartInstanceCasted.colors.list = dataPreConverted.colorinfos.map(c => am4core.color(c.color));
|
|
104
104
|
//Prendo la prima categoria e mi baso sulle proprietà per dfeinire le serie
|
|
105
105
|
for (let prop in dataConverted[0])
|
|
106
106
|
if (prop !== "key")
|
|
@@ -163,4 +163,4 @@ export class Vertical2DChartService {
|
|
|
163
163
|
}
|
|
164
164
|
}
|
|
165
165
|
}
|
|
166
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmVydGljYWwyRENoYXJ0U2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VzLWNoYXJ0cy9zcmMvbGliL3NlcnZpY2VzL1ZlcnRpY2FsMkRDaGFydFNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxLQUFLLE9BQU8sTUFBTSwwQkFBMEIsQ0FBQztBQUNwRCxPQUFPLEtBQUssU0FBUyxNQUFNLDRCQUE0QixDQUFDO0FBRXhEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLHNCQUFzQjtJQWdCakMsY0FBYztJQUNkLFlBQW1CLE9BQW9CO1FBQXBCLFlBQU8sR0FBUCxPQUFPLENBQWE7UUFkdkMsY0FBYztRQUNOLGtDQUE2QixHQUFXLENBQUMsQ0FBQztRQUNsRCxjQUFjO1FBQ04sZUFBVSxHQUFXLEVBQUUsQ0FBQztRQUNoQyxjQUFjO1FBQ04sZUFBVSxHQUFXLEdBQUcsQ0FBQztRQUNqQyxjQUFjO1FBQ04sNkJBQXdCLEdBQVcsRUFBRSxDQUFDO1FBQzlDLGNBQWM7UUFDTiwyQkFBc0IsR0FBVyxDQUFDLENBQUMsQ0FBQztRQUM1QyxjQUFjO1FBQ04saUNBQTRCLEdBQVcsRUFBRSxDQUFDO0lBR1AsQ0FBQztJQUU1Qzs7T0FFRztJQUNJLFVBQVUsQ0FBQyxJQUErQixFQUFFLFFBQWlDOztRQUVsRixJQUFJLFFBQVEsQ0FBQyxRQUFRLEVBQUU7WUFDckIsT0FBTyxDQUFDLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO1lBQzNELE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCx1RUFBdUU7UUFDdkUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBRW5DLElBQUksQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0RSxJQUFJLG1CQUFtQixHQUFzQixJQUFJLENBQUMsYUFBYSxDQUFDO1FBRWhFLElBQUksUUFBUSxDQUFDLE1BQU0sRUFBRTtZQUNuQixtQkFBbUIsQ0FBQyxNQUFNLEdBQUcsSUFBSSxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDcEQsbUJBQW1CLENBQUMsTUFBTSxDQUFDLFFBQVEsU0FBRyxRQUFRLGFBQVIsUUFBUSx1QkFBUixRQUFRLENBQUUsY0FBYyxtQ0FBSSxPQUFPLENBQUM7WUFDMUUsbUJBQW1CLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsV0FBVyxHQUFHLFlBQVksQ0FBQztZQUU5RSxJQUFJLFFBQVEsQ0FBQyxhQUFhLEVBQUU7Z0JBQzFCLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUM7Z0JBQ2pFLFFBQVEsQ0FBQyxVQUFVLFNBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLG1DQUFJLENBQUMsQ0FBQztnQkFDdEQsUUFBUSxDQUFDLGFBQWEsU0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sbUNBQUksQ0FBQyxDQUFDO2dCQUM1RCxRQUFRLENBQUMsV0FBVyxTQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxtQ0FBSSxDQUFDLENBQUM7Z0JBQ3hELFFBQVEsQ0FBQyxZQUFZLFNBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLG1DQUFJLENBQUMsQ0FBQzthQUMzRDtTQUNGO1FBRUQsSUFBSSxLQUFLLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ3RFLElBQUksUUFBUSxDQUFDLFVBQVUsRUFBRTtZQUN2QixLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFBO1lBQ3RDLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQztTQUNqQztRQUNELElBQUksWUFBWSxHQUEyQixtQkFBbUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUE7UUFDdkcsSUFBSSxRQUFRLENBQUMsVUFBVSxFQUFFO1lBQ3ZCLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUE7WUFDN0MsWUFBWSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDO1NBQ3hDO1FBRUQsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDZCxZQUFZLENBQUMsVUFBVSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUE7UUFDeEMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsR0FBRyxPQUFPLENBQUMsT0FBTyxPQUFDLFFBQVEsQ0FBQyxzQkFBc0IsbUNBQUksSUFBSSxDQUFDLDZCQUE2QixDQUFDLENBQUMsS0FBSyxDQUFBO1FBQ3RJLFlBQVksQ0FBQyxRQUFRLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLE9BQUMsUUFBUSxDQUFDLHNCQUFzQixtQ0FBSSxJQUFJLENBQUMsNkJBQTZCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQTtRQUM1SSxZQUFZLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztRQUNqRCxZQUFZLENBQUMsUUFBUSxDQUFDLGVBQWUsU0FBRyxRQUFRLGFBQVIsUUFBUSx1QkFBUixRQUFRLENBQUUsZUFBZSxtQ0FBSSxFQUFFLENBQUM7UUFFeEUsSUFBSSxLQUFLLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1FBQ2xELEtBQUssQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLEtBQUssQ0FBQyxRQUFRLFNBQUcsUUFBUSxDQUFDLFVBQVUsbUNBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUN4RCxLQUFLLENBQUMsV0FBVyxHQUFHLFlBQVksQ0FBQztRQUVqQyxJQUFJLENBQUEsUUFBUSxhQUFSLFFBQVEsdUJBQVIsUUFBUSxDQUFFLDRCQUE0QixLQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLGFBQVIsUUFBUSx1QkFBUixRQUFRLENBQUUsNEJBQTRCLEVBQUU7WUFDbEcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUU7O2dCQUMzQyxJQUFJLElBQUksR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDO2dCQUNyQixJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ3BFLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUU7b0JBQ3RELElBQUksaUJBQWlCLEdBQUcsU0FBUyxHQUFHLE9BQUMsUUFBUSxhQUFSLFFBQVEsdUJBQVIsUUFBUSxDQUFFLG1DQUFtQyxtQ0FBSSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQ3ZHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDdkUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsR0FBRyxPQUFBLFFBQVEsQ0FBQyx3QkFBd0IsbUNBQUksaUJBQWlCLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDO29CQUM5SCxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxTQUFHLFFBQVEsQ0FBQyxzQkFBc0IsbUNBQUksSUFBSSxDQUFDLHNCQUFzQixDQUFDO29CQUNsRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDO29CQUN6RCxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsY0FBYyxHQUFHLFFBQVEsQ0FBQztpQkFDekQ7cUJBQ0k7b0JBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7b0JBQzNDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO29CQUNyQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztvQkFDckMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLGdCQUFnQixHQUFHLFFBQVEsQ0FBQztvQkFDMUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7aUJBQ3REO1lBQ0gsQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUVELElBQUksZ0JBQWdCLEdBQXdCLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUVqSCxJQUFJLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDdkIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDdkQsSUFBSSxJQUFJLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RDLElBQUksR0FBRyxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUM3QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQzNDLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzNCLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUN4QjtZQUNELGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDekI7UUFFRCxtQkFBbUIsQ0FBQyxJQUFJLEdBQUcsYUFBYSxDQUFDO1FBQ3pDLElBQUksZ0JBQWdCLENBQUMsVUFBVTtZQUM3QixtQkFBbUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxHQUFHLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBRWpHLDJFQUEyRTtRQUMzRSxLQUFLLElBQUksSUFBSSxJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUM7WUFDL0IsSUFBSSxJQUFJLEtBQUssS0FBSztnQkFDaEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRWpFLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGNBQWM7SUFDZCxZQUFZLENBQUMsSUFBVSxFQUFFLEVBQVE7SUFFakMsQ0FBQztJQUVELGNBQWM7SUFDUCxXQUFXLENBQUMsSUFBK0I7UUFDaEQsV0FBVztJQUNiLENBQUM7SUFFRCxjQUFjO0lBQ04sWUFBWSxDQUFDLEtBQUssRUFBRSxRQUFpQyxFQUFFLEtBQUssRUFBRSxJQUFJOztRQUN4RSxJQUFJLE1BQU0sR0FBMkIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQTtRQUNwRixNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDakMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3BDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ25CLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsR0FBRyx1Q0FBdUMsQ0FBQztRQUM5RSxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3pDLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsT0FBTyxPQUFDLFFBQVEsQ0FBQyxxQkFBcUIsbUNBQUksSUFBSSxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFFckgsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN0RCxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRXJELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxjQUFjO0lBQ04sY0FBYztRQUNwQixJQUFJLG1CQUFtQixHQUFzQixJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ2hFLElBQUksTUFBTSxHQUFHLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEQsSUFBSSxLQUFLLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVsRCxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3BGLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQy9CLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFDL0QsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQztZQUMvRCxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDaEUsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUMzQixJQUFJLE1BQU0sR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztnQkFFbkQsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDO2dCQUNqQixtQkFBbUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7b0JBQ3pDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRTt3QkFDeEMsTUFBTSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7d0JBQzVCLFFBQVEsRUFBRSxDQUFDO3FCQUNaO3lCQUNJO3dCQUNILE1BQU0sQ0FBQyxTQUFTLEdBQUcsbUJBQW1CLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztxQkFDL0Q7Z0JBQ0gsQ0FBQyxDQUFDLENBQUE7Z0JBQ0YsSUFBSSxZQUFZLEdBQUcsUUFBUSxDQUFDO2dCQUM1QixJQUFJLFNBQVMsR0FBRyxZQUFZLEdBQUcsQ0FBQyxDQUFDO2dCQUVqQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7b0JBQ3pDLElBQUksU0FBUyxHQUFHLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQzNELElBQUksUUFBUSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUM7b0JBRWhDLElBQUksRUFBRSxHQUFHLENBQUMsUUFBUSxHQUFHLFNBQVMsR0FBRyxNQUFNLEdBQUcsU0FBUyxDQUFDLEdBQUcsS0FBSyxDQUFBO29CQUU1RCxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsTUFBTSxDQUFDLHFCQUFxQixFQUFFLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO29CQUNyRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsTUFBTSxDQUFDLHFCQUFxQixFQUFFLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO2dCQUN4SCxDQUFDLENBQUMsQ0FBQTthQUNIO1NBQ0Y7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJQmFzZVNlcnZpY2UgfSBmcm9tICcuL2Jhc2UvSUJhc2VTZXJ2aWNlJztcclxuaW1wb3J0IHsgQmFzZUFkYXB0ZXIgfSBmcm9tICcuLi9hZGFwdGVycy9CYXNlQWRhcHRlcic7XHJcbmltcG9ydCB7IFZlcnRpY2FsMkRDaGFydERhdGEgfSBmcm9tICcuLi9tb2RlbHMvZGF0YS9WZXJ0aWNhbDJEQ2hhcnREYXRhJztcclxuaW1wb3J0IHsgVmVydGljYWwyRENoYXJ0U2V0dGluZ3MgfSBmcm9tICcuLi9tb2RlbHMvc2V0dGluZ3MvVmVydGljYWwyRENoYXJ0U2V0dGluZ3MnO1xyXG5cclxuaW1wb3J0ICogYXMgYW00Y29yZSBmcm9tIFwiQGFtY2hhcnRzL2FtY2hhcnRzNC9jb3JlXCI7XHJcbmltcG9ydCAqIGFzIGFtNGNoYXJ0cyBmcm9tIFwiQGFtY2hhcnRzL2FtY2hhcnRzNC9jaGFydHNcIjtcclxuXHJcbi8qKlxyXG4gKiBDbGFzc2UgaWwgY3VpIHVuaWNvIHNjb3BvIMOoIGdlc3RpcmUgaWwgc2V0dXAgZSByZW5kZXJpbmcgZGkgdW4gVmVydGljYWwyRENoYXJ0XHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgVmVydGljYWwyRENoYXJ0U2VydmljZSBpbXBsZW1lbnRzIElCYXNlU2VydmljZTxhbTRjaGFydHMuWFlDaGFydD57XHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwdWJsaWMgQ2hhcnRJbnN0YW5jZTogYW00Y2hhcnRzLlhZQ2hhcnQ7XHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcml2YXRlIERlZmF1bHRHcm91cFBhZGRpbmdQZXJjZW50YWdlOiBudW1iZXIgPSA1O1xyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJpdmF0ZSBkYW5nZXJab25lOiBudW1iZXIgPSA1MDtcclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByaXZhdGUgTGFiZWxXaWR0aDogbnVtYmVyID0gMTUwO1xyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJpdmF0ZSBMYWJlbFJpZ2h0V2hlbkNvbXByZXNzZWQ6IG51bWJlciA9IDIwO1xyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJpdmF0ZSBMYWJlbFRvcFdoZW5Db21wcmVzc2VkOiBudW1iZXIgPSAtNTtcclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByaXZhdGUgRGVmYXVsdENvbHVtbldpZHRoUGVyY2VudGFnZTogbnVtYmVyID0gODU7XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgY29uc3RydWN0b3IocHVibGljIEFkYXB0ZXI6IEJhc2VBZGFwdGVyKSB7IH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIGNoZSBkYXRhIHVuYSBjb3BwaWEgRGF0aSAtIEltcG9zdGF6aW9uaSBsaSB1dGlsaXp6YSBwZXIgY3JlYXJlIGUgdmlzdWFsaXp6YXJlIHVuIFZlcnRpY2FsMkRDaGFydFxyXG4gICAqL1xyXG4gIHB1YmxpYyBncmFwaGljYXRlKGRhdGE6IFZlcnRpY2FsMkRDaGFydERhdGEgfCBhbnksIHNldHRpbmdzOiBWZXJ0aWNhbDJEQ2hhcnRTZXR0aW5ncyk6IElCYXNlU2VydmljZTxhbTRjaGFydHMuWFlDaGFydD4ge1xyXG5cclxuICAgIGlmIChzZXR0aW5ncy5UaW1lbGluZSkge1xyXG4gICAgICBjb25zb2xlLmVycm9yKFwiVGltZWxpbmUgbm90IHN1cHBvcnRlZCBmb3IgdmVydGljYWwgY2hhcnRcIik7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8vUGVyIGV2aXRhcmUgZGkgZGltZW50aWNhcm1lbGkgZSBnZXN0aXJlIGNvbXVucXVlIGJlbmUgZ2xpIG5naWYgZWNjLi4uXHJcbiAgICBhbTRjb3JlLm9wdGlvbnMuYXV0b0Rpc3Bvc2UgPSB0cnVlO1xyXG5cclxuICAgIHRoaXMuQ2hhcnRJbnN0YW5jZSA9IGFtNGNvcmUuY3JlYXRlKHNldHRpbmdzLk5hbWUsIGFtNGNoYXJ0cy5YWUNoYXJ0KTtcclxuICAgIGxldCBDaGFydEluc3RhbmNlQ2FzdGVkID0gPGFtNGNoYXJ0cy5YWUNoYXJ0PnRoaXMuQ2hhcnRJbnN0YW5jZTtcclxuXHJcbiAgICBpZiAoc2V0dGluZ3MuTGVnZW5kKSB7XHJcbiAgICAgIENoYXJ0SW5zdGFuY2VDYXN0ZWQubGVnZW5kID0gbmV3IGFtNGNoYXJ0cy5MZWdlbmQoKTtcclxuICAgICAgQ2hhcnRJbnN0YW5jZUNhc3RlZC5sZWdlbmQucG9zaXRpb24gPSBzZXR0aW5ncz8uTGVnZW5kUG9zaXRpb24gPz8gJ3JpZ2h0JztcclxuICAgICAgQ2hhcnRJbnN0YW5jZUNhc3RlZC5sZWdlbmQuaXRlbUNvbnRhaW5lcnMudGVtcGxhdGUudG9vbHRpcFRleHQgPSBcIntjYXRlZ29yeX1cIjtcclxuICAgICAgXHJcbiAgICAgIGlmIChzZXR0aW5ncy5MZWdlbmRQYWRkaW5nKSB7XHJcbiAgICAgICAgbGV0IHRlbXBsYXRlID0gdGhpcy5DaGFydEluc3RhbmNlLmxlZ2VuZC5pdGVtQ29udGFpbmVycy50ZW1wbGF0ZTtcclxuICAgICAgICB0ZW1wbGF0ZS5wYWRkaW5nVG9wID0gc2V0dGluZ3MuTGVnZW5kUGFkZGluZy50b3AgPz8gMDtcclxuICAgICAgICB0ZW1wbGF0ZS5wYWRkaW5nQm90dG9tID0gc2V0dGluZ3MuTGVnZW5kUGFkZGluZy5ib3R0b20gPz8gMDtcclxuICAgICAgICB0ZW1wbGF0ZS5wYWRkaW5nTGVmdCA9IHNldHRpbmdzLkxlZ2VuZFBhZGRpbmcubGVmdCA/PyAwO1xyXG4gICAgICAgIHRlbXBsYXRlLnBhZGRpbmdSaWdodCA9IHNldHRpbmdzLkxlZ2VuZFBhZGRpbmcucmlnaHQgPz8gMDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGxldCB5QXhpcyA9IENoYXJ0SW5zdGFuY2VDYXN0ZWQueUF4ZXMucHVzaChuZXcgYW00Y2hhcnRzLlZhbHVlQXhpcygpKTtcclxuICAgIGlmIChzZXR0aW5ncy5ZQXhpc1RpdGxlKSB7XHJcbiAgICAgIHlBeGlzLnRpdGxlLnRleHQgPSBzZXR0aW5ncy5ZQXhpc1RpdGxlXHJcbiAgICAgIHlBeGlzLnRpdGxlLmZvbnRXZWlnaHQgPSBcImJvbGRcIjtcclxuICAgIH1cclxuICAgIGxldCBjYXRlZ29yeUF4aXM6IGFtNGNoYXJ0cy5DYXRlZ29yeUF4aXMgPSBDaGFydEluc3RhbmNlQ2FzdGVkLnhBeGVzLnB1c2gobmV3IGFtNGNoYXJ0cy5DYXRlZ29yeUF4aXMoKSlcclxuICAgIGlmIChzZXR0aW5ncy5YQXhpc1RpdGxlKSB7XHJcbiAgICAgIGNhdGVnb3J5QXhpcy50aXRsZS50ZXh0ID0gc2V0dGluZ3MuWEF4aXNUaXRsZVxyXG4gICAgICBjYXRlZ29yeUF4aXMudGl0bGUuZm9udFdlaWdodCA9IFwiYm9sZFwiO1xyXG4gICAgfVxyXG5cclxuICAgIHlBeGlzLm1pbiA9IDA7XHJcbiAgICBjYXRlZ29yeUF4aXMuZGF0YUZpZWxkcy5jYXRlZ29yeSA9ICdrZXknXHJcbiAgICBjYXRlZ29yeUF4aXMucmVuZGVyZXIuY2VsbFN0YXJ0TG9jYXRpb24gPSBhbTRjb3JlLnBlcmNlbnQoc2V0dGluZ3MuR3JvdXBQYWRkaW5nUGVyY2VudGFnZSA/PyB0aGlzLkRlZmF1bHRHcm91cFBhZGRpbmdQZXJjZW50YWdlKS52YWx1ZVxyXG4gICAgY2F0ZWdvcnlBeGlzLnJlbmRlcmVyLmNlbGxFbmRMb2NhdGlvbiA9IGFtNGNvcmUucGVyY2VudCgxMDAgLSAoc2V0dGluZ3MuR3JvdXBQYWRkaW5nUGVyY2VudGFnZSA/PyB0aGlzLkRlZmF1bHRHcm91cFBhZGRpbmdQZXJjZW50YWdlKSkudmFsdWVcclxuICAgIGNhdGVnb3J5QXhpcy5yZW5kZXJlci5ncmlkLnRlbXBsYXRlLmxvY2F0aW9uID0gMDtcclxuICAgIGNhdGVnb3J5QXhpcy5yZW5kZXJlci5taW5HcmlkRGlzdGFuY2UgPSBzZXR0aW5ncz8uTWluR3JpZERpc3RhbmNlID8/IDMwO1xyXG5cclxuICAgIGxldCBsYWJlbCA9IGNhdGVnb3J5QXhpcy5yZW5kZXJlci5sYWJlbHMudGVtcGxhdGU7XHJcbiAgICBsYWJlbC50cnVuY2F0ZSA9IHRydWU7XHJcbiAgICBsYWJlbC5tYXhXaWR0aCA9IHNldHRpbmdzLkxhYmVsV2lkdGggPz8gdGhpcy5MYWJlbFdpZHRoO1xyXG4gICAgbGFiZWwudG9vbHRpcFRleHQgPSBcIntjYXRlZ29yeX1cIjtcclxuXHJcbiAgICBpZiAoc2V0dGluZ3M/LkFkYXB0TGFiZWxTaXplQW5kT3JpZW50YXRpb24gPT0gbnVsbCA/IHRydWUgOiBzZXR0aW5ncz8uQWRhcHRMYWJlbFNpemVBbmRPcmllbnRhdGlvbikge1xyXG4gICAgICBjYXRlZ29yeUF4aXMuZXZlbnRzLm9uKFwic2l6ZWNoYW5nZWRcIiwgKGV2KSA9PiB7XHJcbiAgICAgICAgbGV0IGF4aXMgPSBldi50YXJnZXQ7XHJcbiAgICAgICAgdmFyIGNlbGxXaWR0aCA9IGF4aXMucGl4ZWxXaWR0aCAvIChheGlzLmVuZEluZGV4IC0gYXhpcy5zdGFydEluZGV4KTtcclxuICAgICAgICBpZiAoY2VsbFdpZHRoIDwgYXhpcy5yZW5kZXJlci5sYWJlbHMudGVtcGxhdGUubWF4V2lkdGgpIHtcclxuICAgICAgICAgIGxldCBhcmVXZUluRGFuZ2VyWm9uZSA9IGNlbGxXaWR0aCA8IChzZXR0aW5ncz8uTGFiZWxWZXJ0aWNhbE9yaWVudGF0aW9uQ3V0b2ZmV2lkdGggPz8gdGhpcy5kYW5nZXJab25lKTtcclxuICAgICAgICAgIGF4aXMucmVuZGVyZXIubGFiZWxzLnRlbXBsYXRlLnJvdGF0aW9uID0gYXJlV2VJbkRhbmdlclpvbmUgPyAtOTAgOiAtNDU7XHJcbiAgICAgICAgICBheGlzLnJlbmRlcmVyLmxhYmVscy50ZW1wbGF0ZS5keCA9IHNldHRpbmdzLkxhYmVsUmlnaHRXaGVuQ29tcHJlc3NlZCA/PyBhcmVXZUluRGFuZ2VyWm9uZSA/IDAgOiB0aGlzLkxhYmVsUmlnaHRXaGVuQ29tcHJlc3NlZDtcclxuICAgICAgICAgIGF4aXMucmVuZGVyZXIubGFiZWxzLnRlbXBsYXRlLmR5ID0gc2V0dGluZ3MuTGFiZWxUb3BXaGVuQ29tcHJlc3NlZCA/PyB0aGlzLkxhYmVsVG9wV2hlbkNvbXByZXNzZWQ7XHJcbiAgICAgICAgICBheGlzLnJlbmRlcmVyLmxhYmVscy50ZW1wbGF0ZS5ob3Jpem9udGFsQ2VudGVyID0gXCJyaWdodFwiO1xyXG4gICAgICAgICAgYXhpcy5yZW5kZXJlci5sYWJlbHMudGVtcGxhdGUudmVydGljYWxDZW50ZXIgPSBcIm1pZGRsZVwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGF4aXMucmVuZGVyZXIubGFiZWxzLnRlbXBsYXRlLnJvdGF0aW9uID0gMDtcclxuICAgICAgICAgIGF4aXMucmVuZGVyZXIubGFiZWxzLnRlbXBsYXRlLmR4ID0gMDtcclxuICAgICAgICAgIGF4aXMucmVuZGVyZXIubGFiZWxzLnRlbXBsYXRlLmR5ID0gMDtcclxuICAgICAgICAgIGF4aXMucmVuZGVyZXIubGFiZWxzLnRlbXBsYXRlLmhvcml6b250YWxDZW50ZXIgPSBcIm1pZGRsZVwiO1xyXG4gICAgICAgICAgYXhpcy5yZW5kZXJlci5sYWJlbHMudGVtcGxhdGUudmVydGljYWxDZW50ZXIgPSBcInRvcFwiO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGRhdGFQcmVDb252ZXJ0ZWQ6IFZlcnRpY2FsMkRDaGFydERhdGEgPSB0aGlzLkFkYXB0ZXIgPyB0aGlzLkFkYXB0ZXIuYWRhcHREYXRhRm9yVmVydGljYWwyRENoYXJ0KGRhdGEpIDogZGF0YTtcclxuXHJcbiAgICBsZXQgZGF0YUNvbnZlcnRlZCA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhUHJlQ29udmVydGVkLmdyb3Vwcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgaXRlbSA9IGRhdGFQcmVDb252ZXJ0ZWQuZ3JvdXBzW2ldO1xyXG4gICAgICBsZXQgb2JqID0geyBrZXk6IGl0ZW0ubmFtZSB9O1xyXG4gICAgICBmb3IgKGxldCBwID0gMDsgcCA8IGl0ZW0udmFsdWVzLmxlbmd0aDsgcCsrKSB7XHJcbiAgICAgICAgbGV0IHZhbHVlID0gaXRlbS52YWx1ZXNbcF07XHJcbiAgICAgICAgb2JqW3ZhbHVlLmtdID0gdmFsdWUudjtcclxuICAgICAgfVxyXG4gICAgICBkYXRhQ29udmVydGVkLnB1c2gob2JqKTtcclxuICAgIH1cclxuXHJcbiAgICBDaGFydEluc3RhbmNlQ2FzdGVkLmRhdGEgPSBkYXRhQ29udmVydGVkO1xyXG4gICAgaWYgKGRhdGFQcmVDb252ZXJ0ZWQuY29sb3JJbmZvcylcclxuICAgICAgQ2hhcnRJbnN0YW5jZUNhc3RlZC5jb2xvcnMubGlzdCA9IGRhdGFQcmVDb252ZXJ0ZWQuY29sb3JJbmZvcy5tYXAoYyA9PiBhbTRjb3JlLmNvbG9yKGMuY29sb3IpKTtcclxuXHJcbiAgICAvL1ByZW5kbyBsYSBwcmltYSBjYXRlZ29yaWEgZSBtaSBiYXNvIHN1bGxlIHByb3ByaWV0w6AgcGVyIGRmZWluaXJlIGxlIHNlcmllXHJcbiAgICBmb3IgKGxldCBwcm9wIGluIGRhdGFDb252ZXJ0ZWRbMF0pXHJcbiAgICAgIGlmIChwcm9wICE9PSBcImtleVwiKVxyXG4gICAgICAgIHRoaXMuY3JlYXRlU2VyaWVzKENoYXJ0SW5zdGFuY2VDYXN0ZWQsIHNldHRpbmdzLCBwcm9wLCBwcm9wKTtcclxuXHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgc2V0U2VsZWN0aW9uKGZyb206IERhdGUsIHRvOiBEYXRlKTogdm9pZCB7XHJcblxyXG4gIH1cclxuXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwdWJsaWMgcmVmcmVzaERhdGEoZGF0YTogVmVydGljYWwyRENoYXJ0RGF0YSB8IGFueSkge1xyXG4gICAgLy9UT0RPOklNUExcclxuICB9XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJpdmF0ZSBjcmVhdGVTZXJpZXMoY2hhcnQsIHNldHRpbmdzOiBWZXJ0aWNhbDJEQ2hhcnRTZXR0aW5ncywgdmFsdWUsIG5hbWUpIHtcclxuICAgIGxldCBzZXJpZXM6IGFtNGNoYXJ0cy5Db2x1bW5TZXJpZXMgPSBjaGFydC5zZXJpZXMucHVzaChuZXcgYW00Y2hhcnRzLkNvbHVtblNlcmllcygpKVxyXG4gICAgc2VyaWVzLmRhdGFGaWVsZHMudmFsdWVZID0gdmFsdWU7XHJcbiAgICBzZXJpZXMuZGF0YUZpZWxkcy5jYXRlZ29yeVggPSAna2V5JztcclxuICAgIHNlcmllcy5uYW1lID0gbmFtZTtcclxuICAgIHNlcmllcy5jb2x1bW5zLnRlbXBsYXRlLnRvb2x0aXBUZXh0ID0gXCJ7bmFtZX0ge2NhdGVnb3J5WH06IFtib2xkXXt2YWx1ZVl9Wy9dXCI7XHJcbiAgICBzZXJpZXMuY29sdW1ucy50ZW1wbGF0ZS5maWxsT3BhY2l0eSA9IC44O1xyXG4gICAgc2VyaWVzLmNvbHVtbnMudGVtcGxhdGUud2lkdGggPSBhbTRjb3JlLnBlcmNlbnQoc2V0dGluZ3MuQ29sdW1uV2lkdGhQZXJjZW50YWdlID8/IHRoaXMuRGVmYXVsdENvbHVtbldpZHRoUGVyY2VudGFnZSk7XHJcblxyXG4gICAgc2VyaWVzLmV2ZW50cy5vbihcImhpZGRlblwiLCAoKSA9PiB0aGlzLmFycmFuZ2VDb2x1bW5zKTtcclxuICAgIHNlcmllcy5ldmVudHMub24oXCJzaG93blwiLCAoKSA9PiB0aGlzLmFycmFuZ2VDb2x1bW5zKTtcclxuXHJcbiAgICByZXR1cm4gc2VyaWVzO1xyXG4gIH1cclxuXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcml2YXRlIGFycmFuZ2VDb2x1bW5zKCkge1xyXG4gICAgbGV0IENoYXJ0SW5zdGFuY2VDYXN0ZWQgPSA8YW00Y2hhcnRzLlhZQ2hhcnQ+dGhpcy5DaGFydEluc3RhbmNlO1xyXG4gICAgbGV0IHNlcmllcyA9IENoYXJ0SW5zdGFuY2VDYXN0ZWQuc2VyaWVzLmdldEluZGV4KDApO1xyXG4gICAgbGV0IHhBeGlzID0gQ2hhcnRJbnN0YW5jZUNhc3RlZC54QXhlcy5nZXRJbmRleCgwKTtcclxuXHJcbiAgICBsZXQgdyA9IDEgLSB4QXhpcy5yZW5kZXJlci5jZWxsU3RhcnRMb2NhdGlvbiAtICgxIC0geEF4aXMucmVuZGVyZXIuY2VsbEVuZExvY2F0aW9uKTtcclxuICAgIGlmIChzZXJpZXMuZGF0YUl0ZW1zLmxlbmd0aCA+IDEpIHtcclxuICAgICAgbGV0IHgwID0geEF4aXMuZ2V0WChzZXJpZXMuZGF0YUl0ZW1zLmdldEluZGV4KDApLCBcImNhdGVnb3J5WFwiKTtcclxuICAgICAgbGV0IHgxID0geEF4aXMuZ2V0WChzZXJpZXMuZGF0YUl0ZW1zLmdldEluZGV4KDEpLCBcImNhdGVnb3J5WFwiKTtcclxuICAgICAgbGV0IGRlbHRhID0gKCh4MSAtIHgwKSAvIENoYXJ0SW5zdGFuY2VDYXN0ZWQuc2VyaWVzLmxlbmd0aCkgKiB3O1xyXG4gICAgICBpZiAoYW00Y29yZS5pc051bWJlcihkZWx0YSkpIHtcclxuICAgICAgICBsZXQgbWlkZGxlID0gQ2hhcnRJbnN0YW5jZUNhc3RlZC5zZXJpZXMubGVuZ3RoIC8gMjtcclxuXHJcbiAgICAgICAgbGV0IG5ld0luZGV4ID0gMDtcclxuICAgICAgICBDaGFydEluc3RhbmNlQ2FzdGVkLnNlcmllcy5lYWNoKChzZXJpZXMpID0+IHtcclxuICAgICAgICAgIGlmICghc2VyaWVzLmlzSGlkZGVuICYmICFzZXJpZXMuaXNIaWRpbmcpIHtcclxuICAgICAgICAgICAgc2VyaWVzLmR1bW15RGF0YSA9IG5ld0luZGV4O1xyXG4gICAgICAgICAgICBuZXdJbmRleCsrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHNlcmllcy5kdW1teURhdGEgPSBDaGFydEluc3RhbmNlQ2FzdGVkLnNlcmllcy5pbmRleE9mKHNlcmllcyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICBsZXQgdmlzaWJsZUNvdW50ID0gbmV3SW5kZXg7XHJcbiAgICAgICAgbGV0IG5ld01pZGRsZSA9IHZpc2libGVDb3VudCAvIDI7XHJcblxyXG4gICAgICAgIENoYXJ0SW5zdGFuY2VDYXN0ZWQuc2VyaWVzLmVhY2goKHNlcmllcykgPT4ge1xyXG4gICAgICAgICAgbGV0IHRydWVJbmRleCA9IENoYXJ0SW5zdGFuY2VDYXN0ZWQuc2VyaWVzLmluZGV4T2Yoc2VyaWVzKTtcclxuICAgICAgICAgIGxldCBuZXdJbmRleCA9IHNlcmllcy5kdW1teURhdGE7XHJcblxyXG4gICAgICAgICAgbGV0IGR4ID0gKG5ld0luZGV4IC0gdHJ1ZUluZGV4ICsgbWlkZGxlIC0gbmV3TWlkZGxlKSAqIGRlbHRhXHJcblxyXG4gICAgICAgICAgc2VyaWVzLmFuaW1hdGUoeyBwcm9wZXJ0eTogXCJkeFwiLCB0bzogZHggfSwgc2VyaWVzLmludGVycG9sYXRpb25EdXJhdGlvbiwgc2VyaWVzLmludGVycG9sYXRpb25FYXNpbmcpO1xyXG4gICAgICAgICAgc2VyaWVzLmJ1bGxldHNDb250YWluZXIuYW5pbWF0ZSh7IHByb3BlcnR5OiBcImR4XCIsIHRvOiBkeCB9LCBzZXJpZXMuaW50ZXJwb2xhdGlvbkR1cmF0aW9uLCBzZXJpZXMuaW50ZXJwb2xhdGlvbkVhc2luZyk7XHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufSJdfQ==
|
|
166
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmVydGljYWwyRENoYXJ0U2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VzLWNoYXJ0cy9zcmMvbGliL3NlcnZpY2VzL1ZlcnRpY2FsMkRDaGFydFNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxLQUFLLE9BQU8sTUFBTSwwQkFBMEIsQ0FBQztBQUNwRCxPQUFPLEtBQUssU0FBUyxNQUFNLDRCQUE0QixDQUFDO0FBRXhEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLHNCQUFzQjtJQWdCakMsY0FBYztJQUNkLFlBQW1CLE9BQW9CO1FBQXBCLFlBQU8sR0FBUCxPQUFPLENBQWE7UUFkdkMsY0FBYztRQUNOLGtDQUE2QixHQUFXLENBQUMsQ0FBQztRQUNsRCxjQUFjO1FBQ04sZUFBVSxHQUFXLEVBQUUsQ0FBQztRQUNoQyxjQUFjO1FBQ04sZUFBVSxHQUFXLEdBQUcsQ0FBQztRQUNqQyxjQUFjO1FBQ04sNkJBQXdCLEdBQVcsRUFBRSxDQUFDO1FBQzlDLGNBQWM7UUFDTiwyQkFBc0IsR0FBVyxDQUFDLENBQUMsQ0FBQztRQUM1QyxjQUFjO1FBQ04saUNBQTRCLEdBQVcsRUFBRSxDQUFDO0lBR1AsQ0FBQztJQUU1Qzs7T0FFRztJQUNJLFVBQVUsQ0FBQyxJQUErQixFQUFFLFFBQWlDOztRQUVsRixJQUFJLFFBQVEsQ0FBQyxRQUFRLEVBQUU7WUFDckIsT0FBTyxDQUFDLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO1lBQzNELE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCx1RUFBdUU7UUFDdkUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBRW5DLElBQUksQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0RSxJQUFJLG1CQUFtQixHQUFzQixJ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QixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQzNELElBQUksUUFBUSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUM7b0JBRWhDLElBQUksRUFBRSxHQUFHLENBQUMsUUFBUSxHQUFHLFNBQVMsR0FBRyxNQUFNLEdBQUcsU0FBUyxDQUFDLEdBQUcsS0FBSyxDQUFBO29CQUU1RCxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsTUFBTSxDQUFDLHFCQUFxQixFQUFFLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO29CQUNyRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsTUFBTSxDQUFDLHFCQUFxQixFQUFFLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO2dCQUN4SCxDQUFDLENBQUMsQ0FBQTthQUNIO1NBQ0Y7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJQmFzZVNlcnZpY2UgfSBmcm9tICcuL2Jhc2UvSUJhc2VTZXJ2aWNlJztcclxuaW1wb3J0IHsgQmFzZUFkYXB0ZXIgfSBmcm9tICcuLi9hZGFwdGVycy9CYXNlQWRhcHRlcic7XHJcbmltcG9ydCB7IFZlcnRpY2FsMkRDaGFydERhdGEgfSBmcm9tICcuLi9tb2RlbHMvZGF0YS9WZXJ0aWNhbDJEQ2hhcnREYXRhJztcclxuaW1wb3J0IHsgVmVydGljYWwyRENoYXJ0U2V0dGluZ3MgfSBmcm9tICcuLi9tb2RlbHMvc2V0dGluZ3MvVmVydGljYWwyRENoYXJ0U2V0dGluZ3MnO1xyXG5cclxuaW1wb3J0ICogYXMgYW00Y29yZSBmcm9tIFwiQGFtY2hhcnRzL2FtY2hhcnRzNC9jb3JlXCI7XHJcbmltcG9ydCAqIGFzIGFtNGNoYXJ0cyBmcm9tIFwiQGFtY2hhcnRzL2FtY2hhcnRzNC9jaGFydHNcIjtcclxuXHJcbi8qKlxyXG4gKiBDbGFzc2UgaWwgY3VpIHVuaWNvIHNjb3BvIMOoIGdlc3RpcmUgaWwgc2V0dXAgZSByZW5kZXJpbmcgZGkgdW4gVmVydGljYWwyRENoYXJ0XHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgVmVydGljYWwyRENoYXJ0U2VydmljZSBpbXBsZW1lbnRzIElCYXNlU2VydmljZTxhbTRjaGFydHMuWFlDaGFydD57XHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwdWJsaWMgQ2hhcnRJbnN0YW5jZTogYW00Y2hhcnRzLlhZQ2hhcnQ7XHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcml2YXRlIERlZmF1bHRHcm91cFBhZGRpbmdQZXJjZW50YWdlOiBudW1iZXIgPSA1O1xyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJpdmF0ZSBkYW5nZXJab25lOiBudW1iZXIgPSA1MDtcclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByaXZhdGUgTGFiZWxXaWR0aDogbnVtYmVyID0gMTUwO1xyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJpdmF0ZSBMYWJlbFJpZ2h0V2hlbkNvbXByZXNzZWQ6IG51bWJlciA9IDIwO1xyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJpdmF0ZSBMYWJlbFRvcFdoZW5Db21wcmVzc2VkOiBudW1iZXIgPSAtNTtcclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByaXZhdGUgRGVmYXVsdENvbHVtbldpZHRoUGVyY2VudGFnZTogbnVtYmVyID0gODU7XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgY29uc3RydWN0b3IocHVibGljIEFkYXB0ZXI6IEJhc2VBZGFwdGVyKSB7IH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIGNoZSBkYXRhIHVuYSBjb3BwaWEgRGF0aSAtIEltcG9zdGF6aW9uaSBsaSB1dGlsaXp6YSBwZXIgY3JlYXJlIGUgdmlzdWFsaXp6YXJlIHVuIFZlcnRpY2FsMkRDaGFydFxyXG4gICAqL1xyXG4gIHB1YmxpYyBncmFwaGljYXRlKGRhdGE6IFZlcnRpY2FsMkRDaGFydERhdGEgfCBhbnksIHNldHRpbmdzOiBWZXJ0aWNhbDJEQ2hhcnRTZXR0aW5ncyk6IElCYXNlU2VydmljZTxhbTRjaGFydHMuWFlDaGFydD4ge1xyXG5cclxuICAgIGlmIChzZXR0aW5ncy5UaW1lbGluZSkge1xyXG4gICAgICBjb25zb2xlLmVycm9yKFwiVGltZWxpbmUgbm90IHN1cHBvcnRlZCBmb3IgdmVydGljYWwgY2hhcnRcIik7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8vUGVyIGV2aXRhcmUgZGkgZGltZW50aWNhcm1lbGkgZSBnZXN0aXJlIGNvbXVucXVlIGJlbmUgZ2xpIG5naWYgZWNjLi4uXHJcbiAgICBhbTRjb3JlLm9wdGlvbnMuYXV0b0Rpc3Bvc2UgPSB0cnVlO1xyXG5cclxuICAgIHRoaXMuQ2hhcnRJbnN0YW5jZSA9IGFtNGNvcmUuY3JlYXRlKHNldHRpbmdzLk5hbWUsIGFtNGNoYXJ0cy5YWUNoYXJ0KTtcclxuICAgIGxldCBDaGFydEluc3RhbmNlQ2FzdGVkID0gPGFtNGNoYXJ0cy5YWUNoYXJ0PnRoaXMuQ2hhcnRJbnN0YW5jZTtcclxuXHJcbiAgICBpZiAoc2V0dGluZ3MuTGVnZW5kKSB7XHJcbiAgICAgIENoYXJ0SW5zdGFuY2VDYXN0ZWQubGVnZW5kID0gbmV3IGFtNGNoYXJ0cy5MZWdlbmQoKTtcclxuICAgICAgQ2hhcnRJbnN0YW5jZUNhc3RlZC5sZWdlbmQucG9zaXRpb24gPSBzZXR0aW5ncz8uTGVnZW5kUG9zaXRpb24gPz8gJ3JpZ2h0JztcclxuICAgICAgQ2hhcnRJbnN0YW5jZUNhc3RlZC5sZWdlbmQuaXRlbUNvbnRhaW5lcnMudGVtcGxhdGUudG9vbHRpcFRleHQgPSBcIntjYXRlZ29yeX1cIjtcclxuICAgICAgXHJcbiAgICAgIGlmIChzZXR0aW5ncy5MZWdlbmRQYWRkaW5nKSB7XHJcbiAgICAgICAgbGV0IHRlbXBsYXRlID0gdGhpcy5DaGFydEluc3RhbmNlLmxlZ2VuZC5pdGVtQ29udGFpbmVycy50ZW1wbGF0ZTtcclxuICAgICAgICB0ZW1wbGF0ZS5wYWRkaW5nVG9wID0gc2V0dGluZ3MuTGVnZW5kUGFkZGluZy50b3AgPz8gMDtcclxuICAgICAgICB0ZW1wbGF0ZS5wYWRkaW5nQm90dG9tID0gc2V0dGluZ3MuTGVnZW5kUGFkZGluZy5ib3R0b20gPz8gMDtcclxuICAgICAgICB0ZW1wbGF0ZS5wYWRkaW5nTGVmdCA9IHNldHRpbmdzLkxlZ2VuZFBhZGRpbmcubGVmdCA/PyAwO1xyXG4gICAgICAgIHRlbXBsYXRlLnBhZGRpbmdSaWdodCA9IHNldHRpbmdzLkxlZ2VuZFBhZGRpbmcucmlnaHQgPz8gMDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGxldCB5QXhpcyA9IENoYXJ0SW5zdGFuY2VDYXN0ZWQueUF4ZXMucHVzaChuZXcgYW00Y2hhcnRzLlZhbHVlQXhpcygpKTtcclxuICAgIGlmIChzZXR0aW5ncy5ZQXhpc1RpdGxlKSB7XHJcbiAgICAgIHlBeGlzLnRpdGxlLnRleHQgPSBzZXR0aW5ncy5ZQXhpc1RpdGxlXHJcbiAgICAgIHlBeGlzLnRpdGxlLmZvbnRXZWlnaHQgPSBcImJvbGRcIjtcclxuICAgIH1cclxuICAgIGxldCBjYXRlZ29yeUF4aXM6IGFtNGNoYXJ0cy5DYXRlZ29yeUF4aXMgPSBDaGFydEluc3RhbmNlQ2FzdGVkLnhBeGVzLnB1c2gobmV3IGFtNGNoYXJ0cy5DYXRlZ29yeUF4aXMoKSlcclxuICAgIGlmIChzZXR0aW5ncy5YQXhpc1RpdGxlKSB7XHJcbiAgICAgIGNhdGVnb3J5QXhpcy50aXRsZS50ZXh0ID0gc2V0dGluZ3MuWEF4aXNUaXRsZVxyXG4gICAgICBjYXRlZ29yeUF4aXMudGl0bGUuZm9udFdlaWdodCA9IFwiYm9sZFwiO1xyXG4gICAgfVxyXG5cclxuICAgIHlBeGlzLm1pbiA9IDA7XHJcbiAgICBjYXRlZ29yeUF4aXMuZGF0YUZpZWxkcy5jYXRlZ29yeSA9ICdrZXknXHJcbiAgICBjYXRlZ29yeUF4aXMucmVuZGVyZXIuY2VsbFN0YXJ0TG9jYXRpb24gPSBhbTRjb3JlLnBlcmNlbnQoc2V0dGluZ3MuR3JvdXBQYWRkaW5nUGVyY2VudGFnZSA/PyB0aGlzLkRlZmF1bHRHcm91cFBhZGRpbmdQZXJjZW50YWdlKS52YWx1ZVxyXG4gICAgY2F0ZWdvcnlBeGlzLnJlbmRlcmVyLmNlbGxFbmRMb2NhdGlvbiA9IGFtNGNvcmUucGVyY2VudCgxMDAgLSAoc2V0dGluZ3MuR3JvdXBQYWRkaW5nUGVyY2VudGFnZSA/PyB0aGlzLkRlZmF1bHRHcm91cFBhZGRpbmdQZXJjZW50YWdlKSkudmFsdWVcclxuICAgIGNhdGVnb3J5QXhpcy5yZW5kZXJlci5ncmlkLnRlbXBsYXRlLmxvY2F0aW9uID0gMDtcclxuICAgIGNhdGVnb3J5QXhpcy5yZW5kZXJlci5taW5HcmlkRGlzdGFuY2UgPSBzZXR0aW5ncz8uTWluR3JpZERpc3RhbmNlID8/IDMwO1xyXG5cclxuICAgIGxldCBsYWJlbCA9IGNhdGVnb3J5QXhpcy5yZW5kZXJlci5sYWJlbHMudGVtcGxhdGU7XHJcbiAgICBsYWJlbC50cnVuY2F0ZSA9IHRydWU7XHJcbiAgICBsYWJlbC5tYXhXaWR0aCA9IHNldHRpbmdzLkxhYmVsV2lkdGggPz8gdGhpcy5MYWJlbFdpZHRoO1xyXG4gICAgbGFiZWwudG9vbHRpcFRleHQgPSBcIntjYXRlZ29yeX1cIjtcclxuXHJcbiAgICBpZiAoc2V0dGluZ3M/LkFkYXB0TGFiZWxTaXplQW5kT3JpZW50YXRpb24gPT0gbnVsbCA/IHRydWUgOiBzZXR0aW5ncz8uQWRhcHRMYWJlbFNpemVBbmRPcmllbnRhdGlvbikge1xyXG4gICAgICBjYXRlZ29yeUF4aXMuZXZlbnRzLm9uKFwic2l6ZWNoYW5nZWRcIiwgKGV2KSA9PiB7XHJcbiAgICAgICAgbGV0IGF4aXMgPSBldi50YXJnZXQ7XHJcbiAgICAgICAgdmFyIGNlbGxXaWR0aCA9IGF4aXMucGl4ZWxXaWR0aCAvIChheGlzLmVuZEluZGV4IC0gYXhpcy5zdGFydEluZGV4KTtcclxuICAgICAgICBpZiAoY2VsbFdpZHRoIDwgYXhpcy5yZW5kZXJlci5sYWJlbHMudGVtcGxhdGUubWF4V2lkdGgpIHtcclxuICAgICAgICAgIGxldCBhcmVXZUluRGFuZ2VyWm9uZSA9IGNlbGxXaWR0aCA8IChzZXR0aW5ncz8uTGFiZWxWZXJ0aWNhbE9yaWVudGF0aW9uQ3V0b2ZmV2lkdGggPz8gdGhpcy5kYW5nZXJab25lKTtcclxuICAgICAgICAgIGF4aXMucmVuZGVyZXIubGFiZWxzLnRlbXBsYXRlLnJvdGF0aW9uID0gYXJlV2VJbkRhbmdlclpvbmUgPyAtOTAgOiAtNDU7XHJcbiAgICAgICAgICBheGlzLnJlbmRlcmVyLmxhYmVscy50ZW1wbGF0ZS5keCA9IHNldHRpbmdzLkxhYmVsUmlnaHRXaGVuQ29tcHJlc3NlZCA/PyBhcmVXZUluRGFuZ2VyWm9uZSA/IDAgOiB0aGlzLkxhYmVsUmlnaHRXaGVuQ29tcHJlc3NlZDtcclxuICAgICAgICAgIGF4aXMucmVuZGVyZXIubGFiZWxzLnRlbXBsYXRlLmR5ID0gc2V0dGluZ3MuTGFiZWxUb3BXaGVuQ29tcHJlc3NlZCA/PyB0aGlzLkxhYmVsVG9wV2hlbkNvbXByZXNzZWQ7XHJcbiAgICAgICAgICBheGlzLnJlbmRlcmVyLmxhYmVscy50ZW1wbGF0ZS5ob3Jpem9udGFsQ2VudGVyID0gXCJyaWdodFwiO1xyXG4gICAgICAgICAgYXhpcy5yZW5kZXJlci5sYWJlbHMudGVtcGxhdGUudmVydGljYWxDZW50ZXIgPSBcIm1pZGRsZVwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGF4aXMucmVuZGVyZXIubGFiZWxzLnRlbXBsYXRlLnJvdGF0aW9uID0gMDtcclxuICAgICAgICAgIGF4aXMucmVuZGVyZXIubGFiZWxzLnRlbXBsYXRlLmR4ID0gMDtcclxuICAgICAgICAgIGF4aXMucmVuZGVyZXIubGFiZWxzLnRlbXBsYXRlLmR5ID0gMDtcclxuICAgICAgICAgIGF4aXMucmVuZGVyZXIubGFiZWxzLnRlbXBsYXRlLmhvcml6b250YWxDZW50ZXIgPSBcIm1pZGRsZVwiO1xyXG4gICAgICAgICAgYXhpcy5yZW5kZXJlci5sYWJlbHMudGVtcGxhdGUudmVydGljYWxDZW50ZXIgPSBcInRvcFwiO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGRhdGFQcmVDb252ZXJ0ZWQ6IFZlcnRpY2FsMkRDaGFydERhdGEgPSB0aGlzLkFkYXB0ZXIgPyB0aGlzLkFkYXB0ZXIuYWRhcHREYXRhRm9yVmVydGljYWwyRENoYXJ0KGRhdGEpIDogZGF0YTtcclxuXHJcbiAgICBsZXQgZGF0YUNvbnZlcnRlZCA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhUHJlQ29udmVydGVkLmdyb3Vwcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgaXRlbSA9IGRhdGFQcmVDb252ZXJ0ZWQuZ3JvdXBzW2ldO1xyXG4gICAgICBsZXQgb2JqID0geyBrZXk6IGl0ZW0ubmFtZSB9O1xyXG4gICAgICBmb3IgKGxldCBwID0gMDsgcCA8IGl0ZW0udmFsdWVzLmxlbmd0aDsgcCsrKSB7XHJcbiAgICAgICAgbGV0IHZhbHVlID0gaXRlbS52YWx1ZXNbcF07XHJcbiAgICAgICAgb2JqW3ZhbHVlLmtdID0gdmFsdWUudjtcclxuICAgICAgfVxyXG4gICAgICBkYXRhQ29udmVydGVkLnB1c2gob2JqKTtcclxuICAgIH1cclxuXHJcbiAgICBDaGFydEluc3RhbmNlQ2FzdGVkLmRhdGEgPSBkYXRhQ29udmVydGVkO1xyXG4gICAgaWYgKGRhdGFQcmVDb252ZXJ0ZWQuY29sb3JpbmZvcylcclxuICAgICAgQ2hhcnRJbnN0YW5jZUNhc3RlZC5jb2xvcnMubGlzdCA9IGRhdGFQcmVDb252ZXJ0ZWQuY29sb3JpbmZvcy5tYXAoYyA9PiBhbTRjb3JlLmNvbG9yKGMuY29sb3IpKTtcclxuXHJcbiAgICAvL1ByZW5kbyBsYSBwcmltYSBjYXRlZ29yaWEgZSBtaSBiYXNvIHN1bGxlIHByb3ByaWV0w6AgcGVyIGRmZWluaXJlIGxlIHNlcmllXHJcbiAgICBmb3IgKGxldCBwcm9wIGluIGRhdGFDb252ZXJ0ZWRbMF0pXHJcbiAgICAgIGlmIChwcm9wICE9PSBcImtleVwiKVxyXG4gICAgICAgIHRoaXMuY3JlYXRlU2VyaWVzKENoYXJ0SW5zdGFuY2VDYXN0ZWQsIHNldHRpbmdzLCBwcm9wLCBwcm9wKTtcclxuXHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgc2V0U2VsZWN0aW9uKGZyb206IERhdGUsIHRvOiBEYXRlKTogdm9pZCB7XHJcblxyXG4gIH1cclxuXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwdWJsaWMgcmVmcmVzaERhdGEoZGF0YTogVmVydGljYWwyRENoYXJ0RGF0YSB8IGFueSkge1xyXG4gICAgLy9UT0RPOklNUExcclxuICB9XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJpdmF0ZSBjcmVhdGVTZXJpZXMoY2hhcnQsIHNldHRpbmdzOiBWZXJ0aWNhbDJEQ2hhcnRTZXR0aW5ncywgdmFsdWUsIG5hbWUpIHtcclxuICAgIGxldCBzZXJpZXM6IGFtNGNoYXJ0cy5Db2x1bW5TZXJpZXMgPSBjaGFydC5zZXJpZXMucHVzaChuZXcgYW00Y2hhcnRzLkNvbHVtblNlcmllcygpKVxyXG4gICAgc2VyaWVzLmRhdGFGaWVsZHMudmFsdWVZID0gdmFsdWU7XHJcbiAgICBzZXJpZXMuZGF0YUZpZWxkcy5jYXRlZ29yeVggPSAna2V5JztcclxuICAgIHNlcmllcy5uYW1lID0gbmFtZTtcclxuICAgIHNlcmllcy5jb2x1bW5zLnRlbXBsYXRlLnRvb2x0aXBUZXh0ID0gXCJ7bmFtZX0ge2NhdGVnb3J5WH06IFtib2xkXXt2YWx1ZVl9Wy9dXCI7XHJcbiAgICBzZXJpZXMuY29sdW1ucy50ZW1wbGF0ZS5maWxsT3BhY2l0eSA9IC44O1xyXG4gICAgc2VyaWVzLmNvbHVtbnMudGVtcGxhdGUud2lkdGggPSBhbTRjb3JlLnBlcmNlbnQoc2V0dGluZ3MuQ29sdW1uV2lkdGhQZXJjZW50YWdlID8/IHRoaXMuRGVmYXVsdENvbHVtbldpZHRoUGVyY2VudGFnZSk7XHJcblxyXG4gICAgc2VyaWVzLmV2ZW50cy5vbihcImhpZGRlblwiLCAoKSA9PiB0aGlzLmFycmFuZ2VDb2x1bW5zKTtcclxuICAgIHNlcmllcy5ldmVudHMub24oXCJzaG93blwiLCAoKSA9PiB0aGlzLmFycmFuZ2VDb2x1bW5zKTtcclxuXHJcbiAgICByZXR1cm4gc2VyaWVzO1xyXG4gIH1cclxuXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcml2YXRlIGFycmFuZ2VDb2x1bW5zKCkge1xyXG4gICAgbGV0IENoYXJ0SW5zdGFuY2VDYXN0ZWQgPSA8YW00Y2hhcnRzLlhZQ2hhcnQ+dGhpcy5DaGFydEluc3RhbmNlO1xyXG4gICAgbGV0IHNlcmllcyA9IENoYXJ0SW5zdGFuY2VDYXN0ZWQuc2VyaWVzLmdldEluZGV4KDApO1xyXG4gICAgbGV0IHhBeGlzID0gQ2hhcnRJbnN0YW5jZUNhc3RlZC54QXhlcy5nZXRJbmRleCgwKTtcclxuXHJcbiAgICBsZXQgdyA9IDEgLSB4QXhpcy5yZW5kZXJlci5jZWxsU3RhcnRMb2NhdGlvbiAtICgxIC0geEF4aXMucmVuZGVyZXIuY2VsbEVuZExvY2F0aW9uKTtcclxuICAgIGlmIChzZXJpZXMuZGF0YUl0ZW1zLmxlbmd0aCA+IDEpIHtcclxuICAgICAgbGV0IHgwID0geEF4aXMuZ2V0WChzZXJpZXMuZGF0YUl0ZW1zLmdldEluZGV4KDApLCBcImNhdGVnb3J5WFwiKTtcclxuICAgICAgbGV0IHgxID0geEF4aXMuZ2V0WChzZXJpZXMuZGF0YUl0ZW1zLmdldEluZGV4KDEpLCBcImNhdGVnb3J5WFwiKTtcclxuICAgICAgbGV0IGRlbHRhID0gKCh4MSAtIHgwKSAvIENoYXJ0SW5zdGFuY2VDYXN0ZWQuc2VyaWVzLmxlbmd0aCkgKiB3O1xyXG4gICAgICBpZiAoYW00Y29yZS5pc051bWJlcihkZWx0YSkpIHtcclxuICAgICAgICBsZXQgbWlkZGxlID0gQ2hhcnRJbnN0YW5jZUNhc3RlZC5zZXJpZXMubGVuZ3RoIC8gMjtcclxuXHJcbiAgICAgICAgbGV0IG5ld0luZGV4ID0gMDtcclxuICAgICAgICBDaGFydEluc3RhbmNlQ2FzdGVkLnNlcmllcy5lYWNoKChzZXJpZXMpID0+IHtcclxuICAgICAgICAgIGlmICghc2VyaWVzLmlzSGlkZGVuICYmICFzZXJpZXMuaXNIaWRpbmcpIHtcclxuICAgICAgICAgICAgc2VyaWVzLmR1bW15RGF0YSA9IG5ld0luZGV4O1xyXG4gICAgICAgICAgICBuZXdJbmRleCsrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHNlcmllcy5kdW1teURhdGEgPSBDaGFydEluc3RhbmNlQ2FzdGVkLnNlcmllcy5pbmRleE9mKHNlcmllcyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICBsZXQgdmlzaWJsZUNvdW50ID0gbmV3SW5kZXg7XHJcbiAgICAgICAgbGV0IG5ld01pZGRsZSA9IHZpc2libGVDb3VudCAvIDI7XHJcblxyXG4gICAgICAgIENoYXJ0SW5zdGFuY2VDYXN0ZWQuc2VyaWVzLmVhY2goKHNlcmllcykgPT4ge1xyXG4gICAgICAgICAgbGV0IHRydWVJbmRleCA9IENoYXJ0SW5zdGFuY2VDYXN0ZWQuc2VyaWVzLmluZGV4T2Yoc2VyaWVzKTtcclxuICAgICAgICAgIGxldCBuZXdJbmRleCA9IHNlcmllcy5kdW1teURhdGE7XHJcblxyXG4gICAgICAgICAgbGV0IGR4ID0gKG5ld0luZGV4IC0gdHJ1ZUluZGV4ICsgbWlkZGxlIC0gbmV3TWlkZGxlKSAqIGRlbHRhXHJcblxyXG4gICAgICAgICAgc2VyaWVzLmFuaW1hdGUoeyBwcm9wZXJ0eTogXCJkeFwiLCB0bzogZHggfSwgc2VyaWVzLmludGVycG9sYXRpb25EdXJhdGlvbiwgc2VyaWVzLmludGVycG9sYXRpb25FYXNpbmcpO1xyXG4gICAgICAgICAgc2VyaWVzLmJ1bGxldHNDb250YWluZXIuYW5pbWF0ZSh7IHByb3BlcnR5OiBcImR4XCIsIHRvOiBkeCB9LCBzZXJpZXMuaW50ZXJwb2xhdGlvbkR1cmF0aW9uLCBzZXJpZXMuaW50ZXJwb2xhdGlvbkVhc2luZyk7XHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufSJdfQ==
|
|
@@ -104,11 +104,11 @@ class Vertical2DChartData {
|
|
|
104
104
|
* Costruttore
|
|
105
105
|
*
|
|
106
106
|
* @param {{ name: string; values: KeyValue[]; }[]} groups Gruppi di valori raggruppati per nome
|
|
107
|
-
* @param {{ color: string }[]}
|
|
107
|
+
* @param {{ color: string }[]} colorinfos Lista dei colori da utilizzare. Vanno a sovrascrivere quelli di default di amcharts
|
|
108
108
|
*/
|
|
109
|
-
constructor(groups = [],
|
|
109
|
+
constructor(groups = [], colorinfos) {
|
|
110
110
|
this.groups = groups;
|
|
111
|
-
this.
|
|
111
|
+
this.colorinfos = colorinfos;
|
|
112
112
|
}
|
|
113
113
|
}
|
|
114
114
|
|
|
@@ -1115,7 +1115,7 @@ class LineChartService {
|
|
|
1115
1115
|
let limits = limitNullOrUndef ? [] : !dataConverted.limit.length ? [dataConverted.limit] : dataConverted.limit;
|
|
1116
1116
|
if (limits.length > 0) {
|
|
1117
1117
|
for (let i = 0; i < limits.length; i++) {
|
|
1118
|
-
let limit =
|
|
1118
|
+
let limit = limits[i];
|
|
1119
1119
|
if (limit.upper != null && limit.upper != undefined && limit.lower != null && limit.lower != undefined) {
|
|
1120
1120
|
let range = yAxis.axisRanges.create();
|
|
1121
1121
|
range.value = limit.lower;
|
|
@@ -1192,15 +1192,8 @@ class LineChartService {
|
|
|
1192
1192
|
let seriesToPush = [];
|
|
1193
1193
|
let seriesColors = [];
|
|
1194
1194
|
let defaultIndex = 0;
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
this.ChartInstance.data = this.generateSingleDataset(dataConverted);
|
|
1198
|
-
;
|
|
1199
|
-
dateAxis.cursorTooltipEnabled = false;
|
|
1200
|
-
}
|
|
1201
|
-
//-- Fine generazione
|
|
1202
|
-
dataConverted.series.forEach((s, index) => {
|
|
1203
|
-
var _a, _b, _c;
|
|
1195
|
+
// Ordinamento dei dati se serve
|
|
1196
|
+
dataConverted.series.forEach((s) => {
|
|
1204
1197
|
if (s.values[0] && !(s.values[0].d instanceof Date)) {
|
|
1205
1198
|
for (let v = 0; v < s.values.length; v++)
|
|
1206
1199
|
s.values[v].d = new Date(s.values[v].d);
|
|
@@ -1217,6 +1210,15 @@ class LineChartService {
|
|
|
1217
1210
|
}
|
|
1218
1211
|
if (!correctOrder)
|
|
1219
1212
|
s.values.sort((d1, d2) => d1.d.getTime() - d2.d.getTime());
|
|
1213
|
+
});
|
|
1214
|
+
// Generazione di un unico dataset invece che N, per poter gestire un unico tooltip
|
|
1215
|
+
if (this.singleDataSet) {
|
|
1216
|
+
this.ChartInstance.data = this.generateSingleDataset(dataConverted);
|
|
1217
|
+
;
|
|
1218
|
+
dateAxis.cursorTooltipEnabled = false;
|
|
1219
|
+
}
|
|
1220
|
+
dataConverted.series.forEach((s, index) => {
|
|
1221
|
+
var _a, _b, _c;
|
|
1220
1222
|
let fill = s.fill != null && s.fill != undefined ? s.fill : ((_a = settings === null || settings === void 0 ? void 0 : settings.Fill) !== null && _a !== void 0 ? _a : false);
|
|
1221
1223
|
let series = (settings === null || settings === void 0 ? void 0 : settings.Step) ? new am4charts.StepLineSeries() : new am4charts.LineSeries();
|
|
1222
1224
|
series.dataFields.valueY = "v" + (this.singleDataSet ? index : "");
|
|
@@ -1242,7 +1244,7 @@ class LineChartService {
|
|
|
1242
1244
|
series.tooltip.hiddenState.transitionDuration = 0;
|
|
1243
1245
|
//Utilizzo il mio dateService per la formattazione della data in modo che non debba mai gestire n formati fra n librerie... bellissimo
|
|
1244
1246
|
series.dateFormatter.format = (source) => {
|
|
1245
|
-
if (interval && finalInstant) {
|
|
1247
|
+
if (interval && finalInstant && ["hour", "minute", "second"].includes(interval.timeunit)) {
|
|
1246
1248
|
let timepart = null;
|
|
1247
1249
|
switch (interval.timeunit) {
|
|
1248
1250
|
case "hour":
|
|
@@ -1259,7 +1261,7 @@ class LineChartService {
|
|
|
1259
1261
|
return this.dateExts.adjustDateToFinalInstant(source, timepart, interval ? interval.timeunit == "second" : false);
|
|
1260
1262
|
}
|
|
1261
1263
|
else
|
|
1262
|
-
return this.dateExts.getFormatted(source, false, interval ? interval.timeunit == "second" : false);
|
|
1264
|
+
return this.dateExts.getFormatted(source, interval ? ["day", "week", "month", "year"].includes(interval.timeunit) : false, interval ? interval.timeunit == "second" : false);
|
|
1263
1265
|
};
|
|
1264
1266
|
series.adapter.add("tooltipText", () => {
|
|
1265
1267
|
var text = "[bold]{dateX.formatDate()}[/]\n";
|
|
@@ -1747,8 +1749,8 @@ class Vertical2DChartService {
|
|
|
1747
1749
|
dataConverted.push(obj);
|
|
1748
1750
|
}
|
|
1749
1751
|
ChartInstanceCasted.data = dataConverted;
|
|
1750
|
-
if (dataPreConverted.
|
|
1751
|
-
ChartInstanceCasted.colors.list = dataPreConverted.
|
|
1752
|
+
if (dataPreConverted.colorinfos)
|
|
1753
|
+
ChartInstanceCasted.colors.list = dataPreConverted.colorinfos.map(c => am4core.color(c.color));
|
|
1752
1754
|
//Prendo la prima categoria e mi baso sulle proprietà per dfeinire le serie
|
|
1753
1755
|
for (let prop in dataConverted[0])
|
|
1754
1756
|
if (prop !== "key")
|