@esfaenza/es-charts 13.1.2 → 13.1.6
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/esm2020/lib/adapters/BaseAdapter.mjs +50 -0
- package/esm2020/lib/adapters/IBaseAdapter.mjs +2 -0
- package/esm2020/lib/components/base/base-chart.component.mjs +20 -5
- package/esm2020/lib/components/chart-pager/chart-pager.component.mjs +1 -1
- package/esm2020/lib/components/specializations/es-area-chart.component.mjs +11 -10
- package/esm2020/lib/components/specializations/es-chart.component.mjs +24 -11
- package/esm2020/lib/components/specializations/es-line-chart.component.mjs +12 -11
- package/esm2020/lib/components/specializations/es-pie-chart.component.mjs +11 -10
- package/esm2020/lib/components/specializations/es-vertical-2d-chart.component.mjs +11 -10
- package/esm2020/lib/components/specializations/es-vertical-chart.component.mjs +11 -10
- package/esm2020/lib/components/specializations/es-vertical-stacked-chart.component.mjs +11 -10
- package/esm2020/lib/es-charts.module.mjs +13 -5
- package/esm2020/lib/models/core/ChartDispatcher.mjs +91 -0
- package/esm2020/lib/models/core/ChartLoader.mjs +201 -0
- package/esm2020/lib/models/core/ChartThemes.mjs +61 -0
- package/esm2020/lib/models/data/AreaChartData.mjs +16 -0
- package/esm2020/lib/models/data/LineChartData.mjs +16 -0
- package/esm2020/lib/models/data/PagedChartData.mjs +20 -0
- package/esm2020/lib/models/data/PieChartData.mjs +14 -0
- package/esm2020/lib/models/data/Vertical2DChartData.mjs +16 -0
- package/esm2020/lib/models/data/VerticalChartData.mjs +14 -0
- package/esm2020/lib/models/data/VerticalStackedChartData.mjs +14 -0
- package/esm2020/lib/models/data/base/DateValue.mjs +11 -0
- package/esm2020/lib/models/data/base/KeyValue.mjs +11 -0
- package/esm2020/lib/models/data/base/KeyValueColor.mjs +12 -0
- package/esm2020/lib/models/data/base/Limit.mjs +15 -0
- package/esm2020/lib/models/data/base/LineSerie.mjs +24 -0
- package/esm2020/lib/models/settings/AreaChartSettings.mjs +11 -0
- package/esm2020/lib/models/settings/LineChartSettings.mjs +11 -0
- package/esm2020/lib/models/settings/PieChartSettings.mjs +7 -0
- package/esm2020/lib/models/settings/Vertical2DChartSettings.mjs +11 -0
- package/esm2020/lib/models/settings/VerticalChartSettings.mjs +11 -0
- package/esm2020/lib/models/settings/VerticalStackedChartSettings.mjs +11 -0
- package/esm2020/lib/models/settings/base/BaseInterval.mjs +6 -0
- package/esm2020/lib/models/settings/base/BaseSettings.mjs +6 -0
- package/esm2020/lib/models/settings/base/LegendPad.mjs +6 -0
- package/esm2020/lib/services/AreaChartService.mjs +134 -0
- package/esm2020/lib/services/LineChartService.mjs +337 -0
- package/esm2020/lib/services/PieChartService.mjs +111 -0
- package/esm2020/lib/services/Vertical2DChartService.mjs +160 -0
- package/esm2020/lib/services/VerticalChartService.mjs +103 -0
- package/esm2020/lib/services/VerticalStackedChartService.mjs +124 -0
- package/esm2020/lib/services/base/IBaseService.mjs +2 -0
- package/esm2020/public-api.mjs +26 -25
- package/fesm2015/esfaenza-es-charts.mjs +420 -393
- package/fesm2015/esfaenza-es-charts.mjs.map +1 -1
- package/fesm2020/esfaenza-es-charts.mjs +409 -382
- package/fesm2020/esfaenza-es-charts.mjs.map +1 -1
- package/lib/adapters/{classes/BaseAdapter.d.ts → BaseAdapter.d.ts} +6 -1
- package/lib/adapters/{classes/IBaseAdapter.d.ts → IBaseAdapter.d.ts} +6 -1
- package/lib/components/base/base-chart.component.d.ts +20 -5
- package/lib/components/chart-pager/chart-pager.component.d.ts +1 -1
- package/lib/components/specializations/es-area-chart.component.d.ts +6 -4
- package/lib/components/specializations/es-chart.component.d.ts +17 -5
- package/lib/components/specializations/es-line-chart.component.d.ts +6 -4
- package/lib/components/specializations/es-pie-chart.component.d.ts +6 -4
- package/lib/components/specializations/es-vertical-2d-chart.component.d.ts +6 -4
- package/lib/components/specializations/es-vertical-chart.component.d.ts +6 -4
- package/lib/components/specializations/es-vertical-stacked-chart.component.d.ts +6 -4
- package/lib/models/core/{classes/ChartDispatcher.d.ts → ChartDispatcher.d.ts} +0 -0
- package/lib/models/core/{classes/ChartLoader.d.ts → ChartLoader.d.ts} +0 -0
- package/lib/models/core/{classes/ChartThemes.d.ts → ChartThemes.d.ts} +0 -0
- package/lib/models/data/{classes/AreaChartData.d.ts → AreaChartData.d.ts} +1 -1
- package/lib/models/data/{classes/LineChartData.d.ts → LineChartData.d.ts} +0 -0
- package/lib/models/data/{classes/PagedChartData.d.ts → PagedChartData.d.ts} +0 -0
- package/lib/models/data/{classes/PieChartData.d.ts → PieChartData.d.ts} +0 -0
- package/lib/models/data/{classes/Vertical2DChartData.d.ts → Vertical2DChartData.d.ts} +0 -0
- package/lib/models/data/{classes/VerticalChartData.d.ts → VerticalChartData.d.ts} +0 -0
- package/lib/models/data/{classes/VerticalStackedChartData.d.ts → VerticalStackedChartData.d.ts} +0 -0
- package/lib/models/data/{classes/base → base}/DateValue.d.ts +0 -0
- package/lib/models/data/{classes/base → base}/KeyValue.d.ts +0 -0
- package/lib/models/data/{classes/base → base}/KeyValueColor.d.ts +0 -0
- package/lib/models/data/{classes/base → base}/Limit.d.ts +0 -0
- package/lib/models/data/{classes/base → base}/LineSerie.d.ts +1 -1
- package/lib/models/settings/{classes/AreaChartSettings.d.ts → AreaChartSettings.d.ts} +0 -0
- package/lib/models/settings/{classes/LineChartSettings.d.ts → LineChartSettings.d.ts} +0 -0
- package/lib/models/settings/{classes/PieChartSettings.d.ts → PieChartSettings.d.ts} +0 -0
- package/lib/models/settings/{classes/Vertical2DChartSettings.d.ts → Vertical2DChartSettings.d.ts} +0 -0
- package/lib/models/settings/{classes/VerticalChartSettings.d.ts → VerticalChartSettings.d.ts} +0 -0
- package/lib/models/settings/{classes/VerticalStackedChartSettings.d.ts → VerticalStackedChartSettings.d.ts} +0 -0
- package/lib/models/settings/{classes/base → base}/BaseInterval.d.ts +0 -0
- package/lib/models/settings/{classes/base → base}/BaseSettings.d.ts +1 -1
- package/lib/models/settings/{classes/base → base}/LegendPad.d.ts +0 -0
- package/lib/services/{classes/AreaChartService.d.ts → AreaChartService.d.ts} +3 -3
- package/lib/services/{classes/LineChartService.d.ts → LineChartService.d.ts} +7 -3
- package/lib/services/{classes/PieChartService.d.ts → PieChartService.d.ts} +3 -3
- package/lib/services/{classes/Vertical2DChartService.d.ts → Vertical2DChartService.d.ts} +3 -3
- package/lib/services/{classes/VerticalChartService.d.ts → VerticalChartService.d.ts} +3 -3
- package/lib/services/{classes/VerticalStackedChartService.d.ts → VerticalStackedChartService.d.ts} +3 -3
- package/lib/services/{classes/base → base}/IBaseService.d.ts +1 -1
- package/package.json +2 -2
- package/public-api.d.ts +25 -24
- package/esm2020/lib/adapters/classes/BaseAdapter.mjs +0 -50
- package/esm2020/lib/adapters/classes/IBaseAdapter.mjs +0 -2
- package/esm2020/lib/adapters/index.mjs +0 -3
- package/esm2020/lib/components/index.mjs +0 -9
- package/esm2020/lib/models/core/classes/ChartDispatcher.mjs +0 -91
- package/esm2020/lib/models/core/classes/ChartLoader.mjs +0 -201
- package/esm2020/lib/models/core/classes/ChartThemes.mjs +0 -61
- package/esm2020/lib/models/core/index.mjs +0 -4
- package/esm2020/lib/models/data/classes/AreaChartData.mjs +0 -16
- package/esm2020/lib/models/data/classes/LineChartData.mjs +0 -16
- package/esm2020/lib/models/data/classes/PagedChartData.mjs +0 -20
- package/esm2020/lib/models/data/classes/PieChartData.mjs +0 -14
- package/esm2020/lib/models/data/classes/Vertical2DChartData.mjs +0 -16
- package/esm2020/lib/models/data/classes/VerticalChartData.mjs +0 -14
- package/esm2020/lib/models/data/classes/VerticalStackedChartData.mjs +0 -14
- package/esm2020/lib/models/data/classes/base/DateValue.mjs +0 -11
- package/esm2020/lib/models/data/classes/base/KeyValue.mjs +0 -11
- package/esm2020/lib/models/data/classes/base/KeyValueColor.mjs +0 -12
- package/esm2020/lib/models/data/classes/base/Limit.mjs +0 -15
- package/esm2020/lib/models/data/classes/base/LineSerie.mjs +0 -24
- package/esm2020/lib/models/data/index.mjs +0 -13
- package/esm2020/lib/models/settings/classes/AreaChartSettings.mjs +0 -11
- package/esm2020/lib/models/settings/classes/LineChartSettings.mjs +0 -11
- package/esm2020/lib/models/settings/classes/PieChartSettings.mjs +0 -7
- package/esm2020/lib/models/settings/classes/Vertical2DChartSettings.mjs +0 -11
- package/esm2020/lib/models/settings/classes/VerticalChartSettings.mjs +0 -11
- package/esm2020/lib/models/settings/classes/VerticalStackedChartSettings.mjs +0 -11
- package/esm2020/lib/models/settings/classes/base/BaseInterval.mjs +0 -6
- package/esm2020/lib/models/settings/classes/base/BaseSettings.mjs +0 -6
- package/esm2020/lib/models/settings/classes/base/LegendPad.mjs +0 -6
- package/esm2020/lib/models/settings/index.mjs +0 -10
- package/esm2020/lib/services/classes/AreaChartService.mjs +0 -134
- package/esm2020/lib/services/classes/LineChartService.mjs +0 -324
- package/esm2020/lib/services/classes/PieChartService.mjs +0 -111
- package/esm2020/lib/services/classes/Vertical2DChartService.mjs +0 -160
- package/esm2020/lib/services/classes/VerticalChartService.mjs +0 -103
- package/esm2020/lib/services/classes/VerticalStackedChartService.mjs +0 -124
- package/esm2020/lib/services/classes/base/IBaseService.mjs +0 -2
- package/esm2020/lib/services/index.mjs +0 -8
- package/lib/adapters/index.d.ts +0 -2
- package/lib/components/index.d.ts +0 -8
- package/lib/models/core/index.d.ts +0 -3
- package/lib/models/data/index.d.ts +0 -12
- package/lib/models/settings/index.d.ts +0 -9
- package/lib/services/index.d.ts +0 -7
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* Adapter Base da reimplementare per trasformare i dati da una libreria di grafici a questa per evitare di riscrivere tutto il codice di
|
|
5
|
+
* generazione delle serie in caso si fossero usati grafici di altre librerie
|
|
6
|
+
*/
|
|
7
|
+
export class BaseAdapter {
|
|
8
|
+
/**
|
|
9
|
+
* Trasformatore dai dati della libreria vecchia ai dati della libreria nuova per gli Area Chart
|
|
10
|
+
*/
|
|
11
|
+
adaptDataForAreaChart(anyData) {
|
|
12
|
+
return anyData;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Trasformatore dai dati della libreria vecchia ai dati della libreria nuova per i Line Chart
|
|
16
|
+
*/
|
|
17
|
+
adaptDataForLineChart(anyData) {
|
|
18
|
+
return anyData;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Trasformatore dai dati della libreria vecchia ai dati della libreria nuova per i Line Chart
|
|
22
|
+
*/
|
|
23
|
+
adaptDataForPieChart(anyData) {
|
|
24
|
+
return anyData;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Trasformatore dai dati della libreria vecchia ai dati della libreria nuova per i Vertical Chart
|
|
28
|
+
*/
|
|
29
|
+
adaptDataForVerticalChart(anyData) {
|
|
30
|
+
return anyData;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Trasformatore dai dati della libreria vecchia ai dati della libreria nuova per i Vertical Chart a due dimensioni
|
|
34
|
+
*/
|
|
35
|
+
adaptDataForVertical2DChart(anyData) {
|
|
36
|
+
return anyData;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Trasformatore dai dati della libreria vecchia ai dati della libreria nuova per i Vertical Chart sovrapposti
|
|
40
|
+
*/
|
|
41
|
+
adaptDataForVerticalStackedChart(anyData) {
|
|
42
|
+
return anyData;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
BaseAdapter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BaseAdapter, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
46
|
+
BaseAdapter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BaseAdapter });
|
|
47
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BaseAdapter, decorators: [{
|
|
48
|
+
type: Injectable
|
|
49
|
+
}] });
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzZUFkYXB0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcy1jaGFydHMvc3JjL2xpYi9hZGFwdGVycy9CYXNlQWRhcHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVUzQzs7O0dBR0c7QUFFSCxNQUFNLE9BQU8sV0FBVztJQUVwQjs7T0FFRztJQUNILHFCQUFxQixDQUFDLE9BQVk7UUFDOUIsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQztJQUVEOztPQUVHO0lBQ0gscUJBQXFCLENBQUMsT0FBWTtRQUM5QixPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxvQkFBb0IsQ0FBQyxPQUFZO1FBQzdCLE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7SUFFRDs7T0FFRztJQUNILHlCQUF5QixDQUFDLE9BQVk7UUFDbEMsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsMkJBQTJCLENBQUMsT0FBWTtRQUNwQyxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxnQ0FBZ0MsQ0FBQyxPQUFZO1FBQ3pDLE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7O3dHQTFDUSxXQUFXOzRHQUFYLFdBQVc7MkZBQVgsV0FBVztrQkFEdkIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IExpbmVDaGFydERhdGEgfSBmcm9tIFwiLi4vbW9kZWxzL2RhdGEvTGluZUNoYXJ0RGF0YVwiO1xyXG5pbXBvcnQgeyBQaWVDaGFydERhdGEgfSBmcm9tIFwiLi4vbW9kZWxzL2RhdGEvUGllQ2hhcnREYXRhXCI7XHJcbmltcG9ydCB7IFZlcnRpY2FsQ2hhcnREYXRhIH0gZnJvbSBcIi4uL21vZGVscy9kYXRhL1ZlcnRpY2FsQ2hhcnREYXRhXCI7XHJcbmltcG9ydCB7IFZlcnRpY2FsMkRDaGFydERhdGEgfSBmcm9tIFwiLi4vbW9kZWxzL2RhdGEvVmVydGljYWwyRENoYXJ0RGF0YVwiO1xyXG5pbXBvcnQgeyBWZXJ0aWNhbFN0YWNrZWRDaGFydERhdGEgfSBmcm9tIFwiLi4vbW9kZWxzL2RhdGEvVmVydGljYWxTdGFja2VkQ2hhcnREYXRhXCI7XHJcbmltcG9ydCB7IEFyZWFDaGFydERhdGEgfSBmcm9tIFwiLi4vbW9kZWxzL2RhdGEvQXJlYUNoYXJ0RGF0YVwiO1xyXG5pbXBvcnQgeyBJQmFzZUFkYXB0ZXIgfSBmcm9tICcuL0lCYXNlQWRhcHRlcic7XHJcblxyXG4vKipcclxuICogQWRhcHRlciBCYXNlIGRhIHJlaW1wbGVtZW50YXJlIHBlciB0cmFzZm9ybWFyZSBpIGRhdGkgZGEgdW5hIGxpYnJlcmlhIGRpIGdyYWZpY2kgYSBxdWVzdGEgcGVyIGV2aXRhcmUgZGkgcmlzY3JpdmVyZSB0dXR0byBpbCBjb2RpY2UgZGlcclxuICogZ2VuZXJhemlvbmUgZGVsbGUgc2VyaWUgaW4gY2FzbyBzaSBmb3NzZXJvIHVzYXRpIGdyYWZpY2kgZGkgYWx0cmUgbGlicmVyaWVcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEJhc2VBZGFwdGVyIGltcGxlbWVudHMgSUJhc2VBZGFwdGVyIHtcclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBUcmFzZm9ybWF0b3JlIGRhaSBkYXRpIGRlbGxhIGxpYnJlcmlhIHZlY2NoaWEgYWkgZGF0aSBkZWxsYSBsaWJyZXJpYSBudW92YSBwZXIgZ2xpIEFyZWEgQ2hhcnRcclxuICAgICAqL1xyXG4gICAgYWRhcHREYXRhRm9yQXJlYUNoYXJ0KGFueURhdGE6IGFueSk6IEFyZWFDaGFydERhdGEge1xyXG4gICAgICAgIHJldHVybiBhbnlEYXRhO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVHJhc2Zvcm1hdG9yZSBkYWkgZGF0aSBkZWxsYSBsaWJyZXJpYSB2ZWNjaGlhIGFpIGRhdGkgZGVsbGEgbGlicmVyaWEgbnVvdmEgcGVyIGkgTGluZSBDaGFydFxyXG4gICAgICovXHJcbiAgICBhZGFwdERhdGFGb3JMaW5lQ2hhcnQoYW55RGF0YTogYW55KTogTGluZUNoYXJ0RGF0YSB7XHJcbiAgICAgICAgcmV0dXJuIGFueURhdGE7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUcmFzZm9ybWF0b3JlIGRhaSBkYXRpIGRlbGxhIGxpYnJlcmlhIHZlY2NoaWEgYWkgZGF0aSBkZWxsYSBsaWJyZXJpYSBudW92YSBwZXIgaSBMaW5lIENoYXJ0XHJcbiAgICAgKi9cclxuICAgIGFkYXB0RGF0YUZvclBpZUNoYXJ0KGFueURhdGE6IGFueSk6IFBpZUNoYXJ0RGF0YSB7XHJcbiAgICAgICAgcmV0dXJuIGFueURhdGE7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUcmFzZm9ybWF0b3JlIGRhaSBkYXRpIGRlbGxhIGxpYnJlcmlhIHZlY2NoaWEgYWkgZGF0aSBkZWxsYSBsaWJyZXJpYSBudW92YSBwZXIgaSBWZXJ0aWNhbCBDaGFydFxyXG4gICAgICovXHJcbiAgICBhZGFwdERhdGFGb3JWZXJ0aWNhbENoYXJ0KGFueURhdGE6IGFueSk6IFZlcnRpY2FsQ2hhcnREYXRhIHtcclxuICAgICAgICByZXR1cm4gYW55RGF0YTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRyYXNmb3JtYXRvcmUgZGFpIGRhdGkgZGVsbGEgbGlicmVyaWEgdmVjY2hpYSBhaSBkYXRpIGRlbGxhIGxpYnJlcmlhIG51b3ZhIHBlciBpIFZlcnRpY2FsIENoYXJ0IGEgZHVlIGRpbWVuc2lvbmlcclxuICAgICAqL1xyXG4gICAgYWRhcHREYXRhRm9yVmVydGljYWwyRENoYXJ0KGFueURhdGE6IGFueSk6IFZlcnRpY2FsMkRDaGFydERhdGEge1xyXG4gICAgICAgIHJldHVybiBhbnlEYXRhO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIFRyYXNmb3JtYXRvcmUgZGFpIGRhdGkgZGVsbGEgbGlicmVyaWEgdmVjY2hpYSBhaSBkYXRpIGRlbGxhIGxpYnJlcmlhIG51b3ZhIHBlciBpIFZlcnRpY2FsIENoYXJ0IHNvdnJhcHBvc3RpXHJcbiAgICAgKi9cclxuICAgIGFkYXB0RGF0YUZvclZlcnRpY2FsU3RhY2tlZENoYXJ0KGFueURhdGE6IGFueSk6IFZlcnRpY2FsU3RhY2tlZENoYXJ0RGF0YSB7XHJcbiAgICAgICAgcmV0dXJuIGFueURhdGE7XHJcbiAgICB9XHJcbn0iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSUJhc2VBZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXMtY2hhcnRzL3NyYy9saWIvYWRhcHRlcnMvSUJhc2VBZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMaW5lQ2hhcnREYXRhIH0gZnJvbSBcIi4uL21vZGVscy9kYXRhL0xpbmVDaGFydERhdGFcIjtcclxuaW1wb3J0IHsgUGllQ2hhcnREYXRhIH0gZnJvbSBcIi4uL21vZGVscy9kYXRhL1BpZUNoYXJ0RGF0YVwiO1xyXG5pbXBvcnQgeyBWZXJ0aWNhbENoYXJ0RGF0YSB9IGZyb20gXCIuLi9tb2RlbHMvZGF0YS9WZXJ0aWNhbENoYXJ0RGF0YVwiO1xyXG5pbXBvcnQgeyBWZXJ0aWNhbDJEQ2hhcnREYXRhIH0gZnJvbSBcIi4uL21vZGVscy9kYXRhL1ZlcnRpY2FsMkRDaGFydERhdGFcIjtcclxuaW1wb3J0IHsgVmVydGljYWxTdGFja2VkQ2hhcnREYXRhIH0gZnJvbSBcIi4uL21vZGVscy9kYXRhL1ZlcnRpY2FsU3RhY2tlZENoYXJ0RGF0YVwiO1xyXG5pbXBvcnQgeyBBcmVhQ2hhcnREYXRhIH0gZnJvbSBcIi4uL21vZGVscy9kYXRhL0FyZWFDaGFydERhdGFcIjtcclxuXHJcbi8qKlxyXG4gKiBJbnRlcmZhY2NpYSBwZXIgbCdpbXBsZW1lbnRhemlvbmUgZGkgdW4gYWRhcHRlciBjaGUgcG9zc2EgZXNzZXJlIHV0aWxpenphdG8gYWwgcG9zdG8gZGVsIEJhc2VBZGFwdGVyIHF1YWxvcmEgc2Vydmlzc2VcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUJhc2VBZGFwdGVyIHtcclxuICAgIC8qKlxyXG4gICAgICogVHJhc2Zvcm1hdG9yZSBkYWkgZGF0aSBkZWxsYSBsaWJyZXJpYSB2ZWNjaGlhIGFpIGRhdGkgZGVsbGEgbGlicmVyaWEgbnVvdmEgcGVyIGdsaSBBcmVhIENoYXJ0XHJcbiAgICAgKi9cclxuICAgIGFkYXB0RGF0YUZvckFyZWFDaGFydChhbnlEYXRhOiBhbnkpOiBBcmVhQ2hhcnREYXRhO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVHJhc2Zvcm1hdG9yZSBkYWkgZGF0aSBkZWxsYSBsaWJyZXJpYSB2ZWNjaGlhIGFpIGRhdGkgZGVsbGEgbGlicmVyaWEgbnVvdmEgcGVyIGkgTGluZSBDaGFydFxyXG4gICAgICovXHJcbiAgICBhZGFwdERhdGFGb3JMaW5lQ2hhcnQoYW55RGF0YTogYW55KTogTGluZUNoYXJ0RGF0YTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRyYXNmb3JtYXRvcmUgZGFpIGRhdGkgZGVsbGEgbGlicmVyaWEgdmVjY2hpYSBhaSBkYXRpIGRlbGxhIGxpYnJlcmlhIG51b3ZhIHBlciBpIFBpZSBDaGFydFxyXG4gICAgICovXHJcbiAgICBhZGFwdERhdGFGb3JQaWVDaGFydChhbnlEYXRhOiBhbnkpOiBQaWVDaGFydERhdGE7XHJcblxyXG4gICAgIC8qKlxyXG4gICAgICogVHJhc2Zvcm1hdG9yZSBkYWkgZGF0aSBkZWxsYSBsaWJyZXJpYSB2ZWNjaGlhIGFpIGRhdGkgZGVsbGEgbGlicmVyaWEgbnVvdmEgcGVyIGkgVmVydGljYWwgQ2hhcnRcclxuICAgICAqL1xyXG4gICAgYWRhcHREYXRhRm9yVmVydGljYWxDaGFydChhbnlEYXRhOiBhbnkpOiBWZXJ0aWNhbENoYXJ0RGF0YTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRyYXNmb3JtYXRvcmUgZGFpIGRhdGkgZGVsbGEgbGlicmVyaWEgdmVjY2hpYSBhaSBkYXRpIGRlbGxhIGxpYnJlcmlhIG51b3ZhIHBlciBpIFZlcnRpY2FsIENoYXJ0IGEgZHVlIGRpbWVuc2lvbmlcclxuICAgICAqL1xyXG4gICAgYWRhcHREYXRhRm9yVmVydGljYWwyRENoYXJ0KGFueURhdGE6IGFueSk6IFZlcnRpY2FsMkRDaGFydERhdGE7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUcmFzZm9ybWF0b3JlIGRhaSBkYXRpIGRlbGxhIGxpYnJlcmlhIHZlY2NoaWEgYWkgZGF0aSBkZWxsYSBsaWJyZXJpYSBudW92YSBwZXIgaSBWZXJ0aWNhbCBDaGFydCBzb3ZyYXBwb3N0aVxyXG4gICAgICovXHJcbiAgICBhZGFwdERhdGFGb3JWZXJ0aWNhbFN0YWNrZWRDaGFydChhbnlEYXRhOiBhbnkpOiBWZXJ0aWNhbFN0YWNrZWRDaGFydERhdGE7XHJcbn0iXX0=
|
|
@@ -2,7 +2,8 @@ import { isPlatformBrowser } from '@angular/common';
|
|
|
2
2
|
import { Input, Output, EventEmitter, ContentChild, Directive } from '@angular/core';
|
|
3
3
|
import * as am4core from "@amcharts/amcharts4/core";
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "../../models/core";
|
|
5
|
+
import * as i1 from "../../models/core/ChartLoader";
|
|
6
|
+
import * as i2 from "../../models/core/ChartDispatcher";
|
|
6
7
|
/**
|
|
7
8
|
* Componente Grafico Base che gestisce tutte le cose comuni dei vari grafici istanziabili, come la presenza o menu di una legenda,
|
|
8
9
|
* il tema utilizzato, il locale del singolo grafico, ecc ecc...
|
|
@@ -57,6 +58,11 @@ export class BaseChartComponent {
|
|
|
57
58
|
* Evento lanciato al termine del caricamento di una nuova pagina del grafico
|
|
58
59
|
*/
|
|
59
60
|
this.onLoadEnd = new EventEmitter();
|
|
61
|
+
/**
|
|
62
|
+
* Evento lanciato al termine della creazione del grafico referenziando l'istanza nativa del grafico creato in modo da poter effettuare modifiche
|
|
63
|
+
* post inizializzazione lato applicativo
|
|
64
|
+
*/
|
|
65
|
+
this.chartLoaded = new EventEmitter();
|
|
60
66
|
/**
|
|
61
67
|
* Serve a decidere se sarà presente l'interfaccia di paginazione
|
|
62
68
|
*/
|
|
@@ -144,7 +150,7 @@ export class BaseChartComponent {
|
|
|
144
150
|
this.Chart = this.ChartService.ChartInstance;
|
|
145
151
|
if (!this.Chart)
|
|
146
152
|
this.log("Chart " + this.name + ": Could not create graph");
|
|
147
|
-
return this.Charter.applyLocale(this.Chart, this.Locale).then(() => this.initDone = true);
|
|
153
|
+
return this.Charter.applyLocale(this.Chart, this.Locale).then(() => { this.initDone = true; this.chartLoaded.emit(this); });
|
|
148
154
|
})
|
|
149
155
|
]);
|
|
150
156
|
}
|
|
@@ -239,6 +245,13 @@ export class BaseChartComponent {
|
|
|
239
245
|
this.Chart.dispose(); this.Dispatcher.deregisterGraph(this.name); });
|
|
240
246
|
this.Dispatcher.register(this.name, () => { return this.loadChart(); });
|
|
241
247
|
}
|
|
248
|
+
/**
|
|
249
|
+
* Permette di aggiungere un blocco di dati in maniera "live" ad un grafico
|
|
250
|
+
*/
|
|
251
|
+
addData(chartData) {
|
|
252
|
+
this.ChartService.refreshData(chartData);
|
|
253
|
+
}
|
|
254
|
+
;
|
|
242
255
|
/**
|
|
243
256
|
* Funzione che si occupa di caricare i temi necessari per il grafico in oggetto. Prima applica il tema, poi, se serve, applica le animazioni
|
|
244
257
|
*/
|
|
@@ -268,10 +281,10 @@ export class BaseChartComponent {
|
|
|
268
281
|
}
|
|
269
282
|
}
|
|
270
283
|
BaseChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BaseChartComponent, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
|
|
271
|
-
BaseChartComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BaseChartComponent, inputs: { XTitle: "XTitle", YTitle: "YTitle", Settings: "Settings", Legend: "Legend", LegendPosition: "LegendPosition", Timeline: "Timeline", name: "name", Animations: "Animations", Theme: "Theme", Locale: "Locale", HideSeriesOnLabelClick: "HideSeriesOnLabelClick", MinGridDistance: "MinGridDistance", AdaptLabelSizeAndOrientation: "AdaptLabelSizeAndOrientation", LegendPadding: "LegendPadding", DataDtos: "DataDtos", DataDtoStartIndex: "DataDtoStartIndex", DataRetrieve: "DataRetrieve", BrowseDelayMs: "BrowseDelayMs" }, outputs: { onSelectionChanged: "onSelectionChanged", onSeriesClicked: "onSeriesClicked", onLoadStart: "onLoadStart", onLoadEnd: "onLoadEnd" }, queries: [{ propertyName: "header_tr", first: true, predicate: ["header"], descendants: true }, { propertyName: "loading_template", first: true, predicate: ["loading"], descendants: true }], usesOnChanges: true, ngImport: i0 });
|
|
284
|
+
BaseChartComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BaseChartComponent, inputs: { XTitle: "XTitle", YTitle: "YTitle", Settings: "Settings", Legend: "Legend", LegendPosition: "LegendPosition", Timeline: "Timeline", name: "name", Animations: "Animations", Theme: "Theme", Locale: "Locale", HideSeriesOnLabelClick: "HideSeriesOnLabelClick", MinGridDistance: "MinGridDistance", AdaptLabelSizeAndOrientation: "AdaptLabelSizeAndOrientation", LegendPadding: "LegendPadding", DataDtos: "DataDtos", DataDtoStartIndex: "DataDtoStartIndex", DataRetrieve: "DataRetrieve", BrowseDelayMs: "BrowseDelayMs" }, outputs: { onSelectionChanged: "onSelectionChanged", onSeriesClicked: "onSeriesClicked", onLoadStart: "onLoadStart", onLoadEnd: "onLoadEnd", chartLoaded: "chartLoaded" }, queries: [{ propertyName: "header_tr", first: true, predicate: ["header"], descendants: true }, { propertyName: "loading_template", first: true, predicate: ["loading"], descendants: true }], usesOnChanges: true, ngImport: i0 });
|
|
272
285
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BaseChartComponent, decorators: [{
|
|
273
286
|
type: Directive
|
|
274
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: Object }, { type: i0.NgZone }, { type: i1.ChartLoader }, { type:
|
|
287
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: Object }, { type: i0.NgZone }, { type: i1.ChartLoader }, { type: i2.ChartDispatcher }, { type: undefined }, { type: undefined }, { type: undefined }, { type: undefined }]; }, propDecorators: { XTitle: [{
|
|
275
288
|
type: Input
|
|
276
289
|
}], YTitle: [{
|
|
277
290
|
type: Input
|
|
@@ -321,5 +334,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
|
|
|
321
334
|
type: Output
|
|
322
335
|
}], onLoadEnd: [{
|
|
323
336
|
type: Output
|
|
337
|
+
}], chartLoaded: [{
|
|
338
|
+
type: Output
|
|
324
339
|
}] } });
|
|
325
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jaGFydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcy1jaGFydHMvc3JjL2xpYi9jb21wb25lbnRzL2Jhc2UvYmFzZS1jaGFydC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLEtBQUssRUFBc0UsTUFBTSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQVksU0FBUyxFQUFjLE1BQU0sZUFBZSxDQUFDO0FBTy9LLE9BQU8sS0FBSyxPQUFPLE1BQU0sMEJBQTBCLENBQUM7OztBQUdwRDs7O0dBR0c7QUFFSCxNQUFNLE9BQWdCLGtCQUFrQjtJQXlMdEM7Ozs7Ozs7Ozs7OztPQVlHO0lBQ0gsWUFBb0IsRUFBYyxFQUFVLFVBQWtCLEVBQVUsSUFBWSxFQUFVLE9BQW9CLEVBQVUsVUFBMkIsRUFBVSxJQUFhLEVBQ3BLLFVBQW1CLEVBQVUsTUFBYyxFQUFVLEtBQWE7UUFEeEQsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUFVLGVBQVUsR0FBVixVQUFVLENBQVE7UUFBVSxTQUFJLEdBQUosSUFBSSxDQUFRO1FBQVUsWUFBTyxHQUFQLE9BQU8sQ0FBYTtRQUFVLGVBQVUsR0FBVixVQUFVLENBQWlCO1FBQVUsU0FBSSxHQUFKLElBQUksQ0FBUztRQUNwSyxlQUFVLEdBQVYsVUFBVSxDQUFTO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFVLFVBQUssR0FBTCxLQUFLLENBQVE7UUF2SzVFOztXQUVHO1FBQ00sU0FBSSxHQUFXLEVBQUUsQ0FBQztRQTBEM0I7Ozs7V0FJRztRQUNNLGtCQUFhLEdBQVcsR0FBRyxDQUFDO1FBWXJDOztXQUVHO1FBQ08sdUJBQWtCLEdBQTZELElBQUksWUFBWSxFQUE4QyxDQUFDO1FBRXhKOztXQUVHO1FBQ08sb0JBQWUsR0FBeUIsSUFB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QUFJLENBQUMsTUFBTSxDQUFDO1FBQzFFLFFBQVEsQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUMxRCxRQUFRLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ2xGLFFBQVEsQ0FBQyw0QkFBNEIsR0FBRyxRQUFRLENBQUMsNEJBQTRCLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQztRQUNsSyxRQUFRLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDOUUsUUFBUSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzlFLFFBQVEsQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUNsRyxRQUFRLENBQUMsc0JBQXNCLEdBQUcsUUFBUSxDQUFDLHNCQUFzQixJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUM7UUFDMUksUUFBUSxDQUFDLGVBQWUsR0FBRyxRQUFRLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENB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QTNhbUIsa0JBQWtCO21HQUFsQixrQkFBa0I7MkZBQWxCLGtCQUFrQjtrQkFEdkMsU0FBUzttRkF1TWdELE1BQU0sMkxBak1yRCxNQUFNO3NCQUFkLEtBQUs7Z0JBS0csTUFBTTtzQkFBZCxLQUFLO2dCQUtHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBS0csTUFBTTtzQkFBZCxLQUFLO2dCQUtHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBS0csUUFBUTtzQkFBaEIsS0FBSztnQkFLRyxJQUFJO3NCQUFaLEtBQUs7Z0JBS0csVUFBVTtzQkFBbEIsS0FBSztnQkFPRyxLQUFLO3NCQUFiLEtBQUs7Z0JBS0csTUFBTTtzQkFBZCxLQUFLO2dCQU1HLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFPRyxlQUFlO3NCQUF2QixLQUFLO2dCQUtHLDRCQUE0QjtzQkFBcEMsS0FBSztnQkFLRyxhQUFhO3NCQUFyQixLQUFLO2dCQU1HLFFBQVE7c0JBQWhCLEtBQUs7Z0JBS0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUtHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBT0csYUFBYTtzQkFBckIsS0FBSztnQkFLcUMsU0FBUztzQkFBbkQsWUFBWTt1QkFBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUtHLGdCQUFnQjtzQkFBM0QsWUFBWTt1QkFBQyxTQUFTLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUtoQyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBS0csZUFBZTtzQkFBeEIsTUFBTTtnQkFLRyxXQUFXO3NCQUFwQixNQUFNO2dCQUtHLFNBQVM7c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IElucHV0LCBTaW1wbGVDaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBOZ1pvbmUsIE9uRGVzdHJveSwgT25Jbml0LCBPbkNoYW5nZXMsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBDb250ZW50Q2hpbGQsIE9wdGlvbmFsLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IElCYXNlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcclxuaW1wb3J0IHsgQmFzZVNldHRpbmdzLCBMZWdlbmRQYWQgfSBmcm9tICcuLi8uLi9tb2RlbHMvc2V0dGluZ3MnO1xyXG5pbXBvcnQgeyBDaGFydExvYWRlciwgQ2hhcnREaXNwYXRjaGVyIH0gZnJvbSBcIi4uLy4uL21vZGVscy9jb3JlXCI7XHJcbmltcG9ydCB7IFBhZ2VkQ2hhcnREYXRhLCBMaW5lQ2hhcnREYXRhLCBQaWVDaGFydERhdGEsIFZlcnRpY2FsMkRDaGFydERhdGEsIFZlcnRpY2FsQ2hhcnREYXRhIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2RhdGEnO1xyXG5cclxuaW1wb3J0ICogYXMgYW00Y29yZSBmcm9tIFwiQGFtY2hhcnRzL2FtY2hhcnRzNC9jb3JlXCI7XHJcbmltcG9ydCAqIGFzIGFtNGNoYXJ0cyBmcm9tIFwiQGFtY2hhcnRzL2FtY2hhcnRzNC9jaGFydHNcIjtcclxuXHJcbi8qKlxyXG4gKiBDb21wb25lbnRlIEdyYWZpY28gQmFzZSBjaGUgZ2VzdGlzY2UgdHV0dGUgbGUgY29zZSBjb211bmkgZGVpIHZhcmkgZ3JhZmljaSBpc3RhbnppYWJpbGksIGNvbWUgbGEgcHJlc2VuemEgbyBtZW51IGRpIHVuYSBsZWdlbmRhLFxyXG4gKiBpbCB0ZW1hIHV0aWxpenphdG8sIGlsIGxvY2FsZSBkZWwgc2luZ29sbyBncmFmaWNvLCBlY2MgZWNjLi4uXHJcbiAqL1xyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VDaGFydENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgT25Jbml0LCBPbkNoYW5nZXMge1xyXG5cclxuICAvKipcclxuICAgKiBUaXRvbG8gcGVyIGwnYXNzZSBYXHJcbiAgICovXHJcbiAgQElucHV0KCkgWFRpdGxlOiBzdHJpbmc7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRpdG9sbyBwZXIgbCdhc3NlIFlcclxuICAgKi9cclxuICBASW5wdXQoKSBZVGl0bGU6IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogSW1wb3N0YXppb25pIGRpIGJhc2VcclxuICAgKi9cclxuICBASW5wdXQoKSBTZXR0aW5nczogQmFzZVNldHRpbmdzO1xyXG5cclxuICAvKipcclxuICAgKiBQcmVzZW56YSBvIG1lbm8gZGVsbGEgbGVnZW5kYVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIExlZ2VuZDogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogUG9zaXppb25lIGRlbGxhIGxlZ2VuZGFcclxuICAgKi9cclxuICBASW5wdXQoKSBMZWdlbmRQb3NpdGlvbjogXCJ0b3BcIiB8IFwiYm90dG9tXCIgfCBcImxlZnRcIiB8IFwicmlnaHRcIjtcclxuXHJcbiAgLyoqXHJcbiAgICogUHJlc2VuemEgbyBtZW5vIGRlbGxhIHRpbWVsaW5lXHJcbiAgICovXHJcbiAgQElucHV0KCkgVGltZWxpbmU6IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIE5vbWUgZGVsIGdyYWZpY28sIGZvbmRhbWVudGFsZSBhc3NlZ25hcmxvIHBlciBwZXJtZXR0ZXJlIGFsbGEgbGlicmVyaWEgZGkgc2NoZWR1bGFybmUgbGEgY3JlYXppb25lXHJcbiAgICovXHJcbiAgQElucHV0KCkgbmFtZTogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgLyoqXHJcbiAgICogVXRpbGl6em8gbyBtZW5vIGRlbGxlIGFuaW1hemlvbmkuIFNlbnphIGFuaW1hemlvbmkgaWwgZ3JhZmljbyDDqCBsZWdnZXJtZW50ZSBwacO5IHBlcmZvcm1hbnRlLCBzcGVjaWFsbWVudGUgYWxsJ2F1bWVudGFyZSBkZWkgcHVudGkgbmVsbGEgc2VyaWVcclxuICAgKi9cclxuICBASW5wdXQoKSBBbmltYXRpb25zOiBib29sZWFuO1xyXG5cclxuICAvKipcclxuICAgKiBUZW1hIGRhIHV0aWxpenphcmUsIHZhbGlkbyBzb2xvIHBlciBpbCBncmFmaWNvIGluIHF1ZXN0aW9uZS4gR2xpIGFsdHJpIGdyYWZpY2kgZGVsbGEgcGFnaW5hIHBvc3Nvbm8gYXZlcmUgc3RpbGkgZGl2ZXJzaS5cclxuICAgKiBcclxuICAgKiBFc3NlbmRvIGkgdGVtaSBjYXJpY2F0aSBpbiBtYW5pZXJhIGFzaW5jcm9uYSBpbiBiYXNlIGFsbCd1dGlsaXp6byB1dGlsaXp6YXJuZSB0YW50aSBkaXZlcnNpIGluIHVuJ3VuaWNhIHBhZ2luYSBwb3RyZWJiZSByYWxsZW50YXJlIGlsIHByaW1vIGNhcmljYW1lbnRvXHJcbiAgICovXHJcbiAgQElucHV0KCkgVGhlbWU6ICdzcGlyaXRlZGF3YXknIHwgJ21vb25yaXNla2luZ2RvbScgfCAnZnJvemVuJyB8ICdkYXJrJyB8ICdrZWxseScgfCAnbWF0ZXJpYWwnIHwgJ2RhdGF2aXonIHwgJ25vbmUnO1xyXG5cclxuICAvKipcclxuICAgKiBMb2NhbGUgZGVsIHNpbmdvbG8gZ3JhZmljb1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIExvY2FsZTogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBJbmRpY2Egc2UgdXRpbGl6emFyZSBpbCBjb21wb3J0YW1lbnRvIGRpIGRlZmF1bHQgcGVyIGkgY2xpY2sgZGVsbGUgc2VyaWUgc3VsbGEgTGVnZW5kYS4gTWV0dGVuZG8gcXVlc3RhIHZhcmlhYmlsZSBhICoqZmFsc2UqKlxyXG4gICAqIGUgY29sbGVnYW5kbyBsJ291dHB1dCAqKm9uU2VyaWVzQ2xpY2tlZCoqIMOoIHBvc3NpYmlsZSBnZW5lcmFyZSB1biBldmVudG8gb2duaSB2b2x0YSBjaGUgbCd1dGVudGUgZmEgY2xpY2sgc3UgdW5hIHNlcmllIGRlbGxhIExlZ2VuZGFcclxuICAgKi9cclxuICBASW5wdXQoKSBIaWRlU2VyaWVzT25MYWJlbENsaWNrOiBib29sZWFuO1xyXG5cclxuICAvKipcclxuICAgKiBNaW5pbWEgZGlzdGFuemEgbmVsbGEgZ3JpZ2xpYSBmcmEgaSB2YWxvcmksIG1vZGlmaWNhIGxhIHF1YW50aXTDoCBkaSBzdGVwIGZyYSBpIHZhbG9yaSBkZWxsJ2Fzc2UgWCBlIHF1aW5kaSBsYSBncmFudWxhcml0w6AgZGVpIGRhdGkuXHJcbiAgICogXHJcbiAgICogUGnDuSBwaWNjb2xhIMOoLCBwacO5IHZhbG9yaSB2ZXJyYW5ubyBpbnNlcml0aSBuZWxsJ2Fzc2UgWFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIE1pbkdyaWREaXN0YW5jZTogbnVtYmVyO1xyXG5cclxuICAvKipcclxuICAgKiBDZXJjYSBkaSBhZ2dpdXN0YXJlIGkgdmFyaSBzdGVwIGRlbGwnYXNzZSBYIHJ1b3RhbmRvbGkgZSBkaW1pbnVlbmRvbmUgbGUgZGltZW5zaW9uaSBhYmJhc3RhbnphIHBlciBtb3N0cmFybmUgaWwgcGnDuSBwb3NzaWJpbGVcclxuICAgKi9cclxuICBASW5wdXQoKSBBZGFwdExhYmVsU2l6ZUFuZE9yaWVudGF0aW9uOiBib29sZWFuO1xyXG5cclxuICAvKipcclxuICAgKiBQYWRkaW5nIGRhIGFwcGxpY2FyZSBhbGxhIExlZ2VuZGEgaW4gY2FzbyBzaSB2b2dsaWEgc3Bvc3RhcmUgdW4gcG8nXHJcbiAgICovXHJcbiAgQElucHV0KCkgTGVnZW5kUGFkZGluZzogTGVnZW5kUGFkO1xyXG5cclxuICAvKipcclxuICAgKiBMaXN0YSBkaSBkdG8gZ2VuZXJpY2kgY2hlIHZlcnJhbm5vIGVtZXNzaSBkYWwgc2lzdGVtYSBkaSBncmFmaWNpIHVubyBwZXIgdW5vIGF0dHJhdmVyc28gbGEgZnVuemlvbmUgKipEYXRhUmV0cmlldmUqKiwgY2hlIGRvdnJhbm5vIGVzc2VyZVxyXG4gICAqIHVzYXRpIHBlciB1YW4gc29ydGEgZGkgY2FyaWNhbWVudG8gXCJwYWdpbmF0b1wiIGRlaSBncmFmaWNpXHJcbiAgICovXHJcbiAgQElucHV0KCkgRGF0YUR0b3M6IGFueVtdO1xyXG5cclxuICAvKipcclxuICAgKiBJbmRpY2UgZGVsbCdhcnJheSAqKkRhdGFEdG9zKiogbyBkZWxsJ2FycmF5ICoqRGF0YUFycmF5KiogZGEgY3VpIGluaXppYXJlIGFkIGVtZXR0ZXJlIGkgdmFsb3JpLCB1dGlsZSBwZXIgc3VwcG9ydGFyZSBpbCBcImJhY2tcIiBkYSB1biBldmVudHVhbGUgcGFnaW5hIGRpIGRldHRhZ2xpb1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIERhdGFEdG9TdGFydEluZGV4OiBudW1iZXI7XHJcblxyXG4gIC8qKlxyXG4gICAqIEZ1bnppb25lIGRlZmluaXRhIGxhdG8gYXBwbGljYXRpdm8gY2hlIGluIGJhc2UgYWwgKipEYXRhRHRvKiogY29ycmVudGUgcmVzdGl0dWlzY2UgdW5hIFByb21pc2UgZGVsIHRpcG8gZGkgZGF0aSByaWNoaWVzdG8gcGVyIGlsIGdyYWZpY28gY29ycmVudGVcclxuICAgKi9cclxuICBASW5wdXQoKSBEYXRhUmV0cmlldmU6IChkdG86IGFueSwgaW5kZXg6IG51bWJlcikgPT4gUHJvbWlzZTxhbnk+O1xyXG5cclxuICAvKipcclxuICAgKiBEb3BvIGF2ZXIgbmF2aWdhdG8gYSB1biBudW92byBncmFmaWNvIHZlcnJhbm5vIGF0dGVzaSBxdWVzdGkgbWlsbGlzZWNvbmRpIHByaW1hIGRpIHJpY2hpZWRlcmUgaSBkYXRpIGF0dHJhdmVyc28gbGEgKipEYXRhUmV0cmlldmUqKi5cclxuICAgKiBcclxuICAgKiBRdWVzdG8gcGVyIGV2aXRhcmUgY2hlIGwndXRlbnRlIGNsaWNjYW5kbyB2ZWxvY2VtZW50ZSBcImF2YW50aVwiIGdlbmVyaSB0b25uZWxsYXRlIGRpIHJpY2hpZXN0ZSBpbnV0aWxpXHJcbiAgICovXHJcbiAgQElucHV0KCkgQnJvd3NlRGVsYXlNczogbnVtYmVyID0gNTAwO1xyXG5cclxuICAvKipcclxuICAgKiBJbnRlc3RhemlvbmUgZGVpIGdyYWZpY2kgbmVsIGNhc28gc2kgdXRpbGl6emkgbGEgbW9kYWxpdMOgIHBhZ2luYXRhXHJcbiAgICovXHJcbiAgQENvbnRlbnRDaGlsZCgnaGVhZGVyJywgeyBzdGF0aWM6IGZhbHNlIH0pIGhlYWRlcl90cjtcclxuXHJcbiAgLyoqXHJcbiAgICogTWVzc2FnZ2lvIGRpIGNhcmljYW1lbnRvIGZyYSB1biBncmFmaWNvIGUgbCdhbHRybyBcclxuICAgKi9cclxuICBAQ29udGVudENoaWxkKCdsb2FkaW5nJywgeyBzdGF0aWM6IGZhbHNlIH0pIGxvYWRpbmdfdGVtcGxhdGU7XHJcblxyXG4gIC8qKlxyXG4gICAqIEV2ZW50byBsYW5jaWF0byBzdWxsYSBzZWxlemlvbmUgZGkgdW4gcmFuZ2UgZGkgZGF0aSBvIGRhbGxhIHRpbWVsaW5lIG8gZGFsIGdyYWZpY28uIFZhbGlkbyBwZXIgdHV0dGkgaSBncmFmaWNpIGNoZSBzdXBwb3J0YW5vIHNlcmllIGJhc2F0ZSBzdWxsZSBkYXRlXHJcbiAgICovXHJcbiAgQE91dHB1dCgpIG9uU2VsZWN0aW9uQ2hhbmdlZDogRXZlbnRFbWl0dGVyPHsgZnJvbTogRGF0ZSwgdG86IERhdGUsIGluaXRpYWw6IGJvb2xlYW4gfT4gPSBuZXcgRXZlbnRFbWl0dGVyPHsgZnJvbTogRGF0ZSwgdG86IERhdGUsIGluaXRpYWw6IGJvb2xlYW4gfT4oKTtcclxuXHJcbiAgLyoqXHJcbiAgICogRXZlbnRvIGxhbmNpYXRvIGRhbCBjbGljayBkaSB1bmEgc2VyaWUgZGFsbGEgTGVnZW5kYSwgYSBwYXR0byBjaGUgbCdJbnB1dCAqKkhpZGVTZXJpZXNPbkxhYmVsQ2xpY2sqKiBzaWEgaW1wb3N0YXRvIGEgZmFsc2VcclxuICAgKi9cclxuICBAT3V0cHV0KCkgb25TZXJpZXNDbGlja2VkOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICAvKipcclxuICAgKiBFdmVudG8gbGFuY2lhdG8gYWxsJ2luaXppbyBkZWwgY2FyaWNhbWVudG8gZGkgdW5hIG51b3ZhIHBhZ2luYSBkZWwgZ3JhZmljb1xyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBvbkxvYWRTdGFydDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICAvKipcclxuICAgKiBFdmVudG8gbGFuY2lhdG8gYWwgdGVybWluZSBkZWwgY2FyaWNhbWVudG8gZGkgdW5hIG51b3ZhIHBhZ2luYSBkZWwgZ3JhZmljb1xyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBvbkxvYWRFbmQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgLyoqXHJcbiAgICogU2VydmUgYSBkZWNpZGVyZSBzZSBzYXLDoCBwcmVzZW50ZSBsJ2ludGVyZmFjY2lhIGRpIHBhZ2luYXppb25lXHJcbiAgICovXHJcbiAgcHVibGljIGlzUGFnZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgaW5pdERvbmU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogSXN0YW56YSBuYXRpdmEgZGVsIGdyYWZpY28gYW1jaGFydHMuIFF1YWxzaWFzaSBjb3NhIG5vbiBmYSBxdWVzdGEgbGlicmVyaWEgc2kgcHXDsiBwcmVuZGVyZSBxdWVzdGEgaXN0YW56YSBlIG1vZGlmaWNhcmUgYSBwaWFjaW1lbnRvXHJcbiAgICovXHJcbiAgcHVibGljIENoYXJ0OiBhbTRjaGFydHMuQ2hhcnQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlcnZpemlvIGRpIGdyYWZpY2F6aW9uZSBkZWwgZ3JhZmljb1xyXG4gICAqL1xyXG4gIHB1YmxpYyBDaGFydFNlcnZpY2U6IElCYXNlU2VydmljZTxhbnk+O1xyXG5cclxuICAvKipcclxuICAgKiBWYXJpYWJpbGUgY2hlIGluZGljYSBzZSB1bmEgbnVvdmEgcGFnaW5hIGRlbCBncmFmaWNvIMOoIGluIGZhc2UgZGkgY2FyaWNhbWVudG9cclxuICAgKi9cclxuICBwdWJsaWMgbG9hZGluZ0NoYXJ0OiBib29sZWFuO1xyXG5cclxuICAvKipcclxuICAgKiBEYXRpIGRlbCBncmFmaWNvLiBPZ25pIGltcGxlbWVudGF6aW9uZSBnZXN0aXLDoCBxdWVzdGEgdmFyaWFiaWxlIGluIGJhc2UgYWwgcHJvcHJpbyB0aXBvIGRpIERhdGlcclxuICAgKi9cclxuICBhYnN0cmFjdCBEYXRhOiBhbnk7XHJcblxyXG4gIC8qKlxyXG4gICAqIERhdGkgZGVsIGdyYWZpY28gaW4gbW9kYWxpdMOgIHBhZ2luYXRhLCBwZXIgcXVhbmRvIHR1dHRlIGxlIHBhZ2luZSBzb25vIHByZWNhcmljYXRlIGluIG1lbW9yaWEgKGluIGNhc28gY29udHJhcmlvIHZlcnJlYmJlcsOyIHV0aWxpenphdGkgaSAqKkRhdGFEdG9zKiopXHJcbiAgICovXHJcbiAgYWJzdHJhY3QgRGF0YUFycmF5OiBQYWdlZENoYXJ0RGF0YTxhbnk+W107XHJcblxyXG4gIC8qKlxyXG4gICAqIEluZGljYSBsZSBwcm9wcmlldMOgIHNwZWNpZmljYSBwZXIgdW5hIGRhdGEgaW1wbGVtZW50YXppb25lIGNoZSBkZXZvbm8gY2F1c2FyZSB1biByZXBhaW50IGRlbCBncmFmaWNvXHJcbiAgICovXHJcbiAgYWJzdHJhY3QgZ2V0U3BlY2lmaWNQcm9wZXJ0aWVzVG9DaGVjaygpOiBzdHJpbmdbXTtcclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIGdlbmVyaWNvIGRpIGdyYWZpY2F6aW9uZSwgcmVpbXBsZW1lbnRhdG8gZGFsbGUgdmFyaWUgaW1wbGVtZW50YXppb25pXHJcbiAgICovXHJcbiAgYWJzdHJhY3QgZ3JhcGhpY2F0ZShjYXN0ZWRTZXR0aW5ncyk6IElCYXNlU2VydmljZTxhbnk+O1xyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gZ2VuZXJpY28gY2hlIHByZW5kZSBsZSBpbXBvc3RhemlvbmkgZ2VuZXJpY2hlIGRlbCBncmFmaWNvIGUgbGUgY2FzdGEgYWxsYSB0aXBvbG9naWEgZ2l1c3RhIHBlciBpbCBncmFmaWNvIHNwZWNpZmljb1xyXG4gICAqL1xyXG4gIGFic3RyYWN0IGdldENhc3RlZFNldHRpbmdzKCk6IGFueTtcclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIGNoZSBcIlJpZW1waWVcIiBsYSBjbGFzc2UgZGVsbGUgaW1wb3N0YXppb25pIGNvbiB0dXR0ZSBsZSBpbXBvc3Rhemlvbmkgc3BlY2lmaWNoZSBwYXNzYXRlIGEgdW4gZGF0byBncmFmaWNvIGNvbWUgSW5wdXRcclxuICAgKi9cclxuICBhYnN0cmFjdCBmaWxsU3BlY2lmaWNTZXR0aW5ncyhzZXR0aW5nc0Nhc3RlZCk6IHZvaWQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIENvc3RydXR0b3JlXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtFbGVtZW50UmVmfSBlbCBDb250ZW5pdG9yZSBhbGwnaW50ZXJubyBkZWwgY3VpIHZpZW5lIGNyZWF0byBpbCBncmFmaWNvLiBVdGlsaXp6YXRvIHBlciBlc3RyYXBvbGFybmUgbGEgKipDb250YWluZXJIZWlnaHQqKlxyXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwbGF0Zm9ybUlkIHBpYXR0YWZvcm1hIEFuZ3VsYXIgKGJyb3dzZXIsIGVjYy4uLikgcGVyIGVzc2VyZSBzaWN1cmkgY2hlIGFtY2hhcnRzIHZlbmdhIGF0dGl2YXRvIHNvbG8gbGF0byBicm93c2VyLiBOb24gdXRpbGl6emFuZG8gU1NSIG5lbGxlIGFwcGxpY2F6aW9uaSBjaGUgY29uc3VtYW5vIHF1ZXN0YSBsaWJyZXJpYSBub24gw6ggcGFydGljb2xhcm1lbnRlIHNpZ25pZmljYXRpdm8sIG1hIG5vbiBzaSBzYSBtYWlcclxuICAgKiBAcGFyYW0ge05nWm9uZX0gem9uZSBOZ1pvbmUgZGkgZGVmYXVsdCBwZXIgcGVybWV0dGVyZSBkaSBpbml6aWFsaXp6YXJlIGlsIGdyYWZpY28gYWxsJ2luZnVvcmkgZGkgQW5ndWxhciBwZXIgYXZlcmUgcXVhbGNoZSBwcmVzdGF6aW9uZSBpbiBwacO5XHJcbiAgICogQHBhcmFtIHtDaGFydExvYWRlcn0gQ2hhcnRlciBJc3RhbnphIGRlbCBMb2FkZXIgY2hlIHNpIG9jY3VwZXLDoCBkaSBjYXJpY2FyZSBpbiBtZW1vcmlhIHR1dHRvIGNpw7IgY2hlIHNlcnZlIHBlciBpbCBncmFmaWNvIGF0dHVhbGUgKHRlbWksIGxvY2FsZSwgYW5pbWF6aW9uaSwgZWNjLi4uKVxyXG4gICAqIEBwYXJhbSB7Q2hhcnREaXNwYXRjaGVyfSBEaXNwYXRjaGVyIElzdGFuemEgZGVsIERpc3BhdGNoZXIgY2hlIHNpIG9jY3VwYSBkaSBkaWZmZXJpcmUgaWwgY2FyaWNhbWVudG8gZGVpIGdyYWZpY2kgMSBkb3BvIGwnYWx0cm8gaW4gbW9kbyBjaGUgY2FyaWNhbWVudGkgcHNldWRvIHBhcmFsbGVsaSBpbmNhc2luaW5vIHR1dHRvXHJcbiAgICogQHBhcmFtIHtib29sZWFufSBsb2dzIEluZGljYSBzZSBlZmZldHR1YXJlIGxvZyBhIGNvbnNvbGUgbyBtZW5vLCBpbmlldHRhdG8gZGFsbGUgY2xhc3NpIHNwZWNpYWxpenphdGUgZGFsIHRva2VuIEVTQ19MT0dTXHJcbiAgICogQHBhcmFtIHtib29sZWFufSBhbmltYXRpb25zIEluZGljYSBzZSBwZXIgcXVlc3RvIGdyYWZpY28gZGV2b25vIGVzc2VyZSBhdHRpdmUgbyBtZW5vIGxlIGFuaW1hemlvbmkuIEltcG9zdGF6aW9uZSBnZW5lcmljYSBwcmVzYSBkYWwgdG9rZW4gRVNDX0FOSU1BVElPTlNcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gbG9jYWxlIEluZGljYSBpbCBsb2NhbGUgc3BlY2lmaWNvIHBlciBxdWVzdG8gZ3JhZmljby4gSW1wb3N0YXppb25lIGdlbmVyaWNhIHByZXNhIGRhbCB0b2tlbiBFU0NfTE9DQUxFXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRoZW1lIEluZGljYSBpbCB0ZW1hIHNwZWNpZmljbyBwZXIgcXVlc3RvIGdyYWZpY28uIEltcG9zdGF6aW9uZSBnZW5lcmljYSBwcmVzYSBkYWwgdG9rZW4gRVNDX1RIRU1FXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZiwgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBPYmplY3QsIHByaXZhdGUgem9uZTogTmdab25lLCBwcml2YXRlIENoYXJ0ZXI6IENoYXJ0TG9hZGVyLCBwcml2YXRlIERpc3BhdGNoZXI6IENoYXJ0RGlzcGF0Y2hlciwgcHJpdmF0ZSBsb2dzOiBib29sZWFuLCBcclxuICAgIHByaXZhdGUgYW5pbWF0aW9uczogYm9vbGVhbiwgcHJpdmF0ZSBsb2NhbGU6IHN0cmluZywgcHJpdmF0ZSB0aGVtZTogc3RyaW5nKSB7IH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIGRpIGluaXppYWxpenphemlvbmUgcG9zdCB2YWxvcml6emF6aW9uZSBkZWdsaSBpbnB1dCwgdXRpbGl6emF0byBwZXIgdmFsb3JpenphcmUgY29ycmV0dGFtZW50ZSBsZSBwcm9wcmlldMOgIGVzc2VuemlhbGkgZGVsIGdyYWZpY28gKEFuaW1hemlvbmksIFRlbWEgZSBMb2NhbGUpXHJcbiAgICogXHJcbiAgICogVmllbmUgZGF0YSBwcmlvcml0w6AgYWkgU2V0dGluZ3MgKEhUTUwpLCBwcmlvcml0w6Agc2Vjb25kYXJpYSBhZ2xpIElucHV0IGRpcmV0dGkgKExhdG8gSFRNTCksIHByaW9yaXTDoCB1bHRpbWEgYWxsZSBpbXBvc3RhemlvbmkgZ2xvYmFsaSxcclxuICAgKiBpbXBvc3RhdGUgaW4gZmFzZSBkaSBpbXBvcnQgZGVsIG1vZHVsbyBhc3NlZ25hbmRvIHZhbG9yaSBhaSB0b2tlbiBFU0NfTE9DQUxFLCBFU0NfQU5JTUFUSU9OUywgRVNDX1RIRU1FXHJcbiAgICovXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICAvLyBRdWkgc2Vydm9ubyBzb2xvIGxlIHZhcmlhYmlsaSBkYSBjb25vc2NlcmUgUFJFLWdyYWZpY2F6aW9uZSBwZXIgaWwgY2FyaWNhbWVudG8gZGVpIG1vZHVsaSBsYXp5IGRlbCBncmFmaWNvXHJcblxyXG4gICAgdGhpcy5BbmltYXRpb25zID0gdGhpcy5TZXR0aW5ncz8uQW5pbWF0aW9ucyAhPSBudWxsID8gdGhpcy5TZXR0aW5ncz8uQW5pbWF0aW9ucyA6ICh0aGlzLkFuaW1hdGlvbnMgIT0gbnVsbCA/IHRoaXMuQW5pbWF0aW9ucyA6IHRoaXMuYW5pbWF0aW9ucylcclxuICAgIHRoaXMuVGhlbWUgPSB0aGlzLlNldHRpbmdzPy5UaGVtZSAhPSBudWxsID8gdGhpcy5TZXR0aW5ncz8uVGhlbWUgOiAodGhpcy5UaGVtZSAhPSBudWxsID8gdGhpcy5UaGVtZSA6IDxhbnk+dGhpcy50aGVtZSlcclxuICAgIHRoaXMuTG9jYWxlID0gdGhpcy5TZXR0aW5ncz8uTG9jYWxlICE9IG51bGwgPyB0aGlzLlNldHRpbmdzPy5Mb2NhbGUgOiAodGhpcy5Mb2NhbGUgIT0gbnVsbCA/IHRoaXMuTG9jYWxlIDogdGhpcy5sb2NhbGUpXHJcblxyXG4gICAgdGhpcy5pc1BhZ2VkID0gKHRoaXMuRGF0YUFycmF5ICYmIHRoaXMuRGF0YUFycmF5Lmxlbmd0aCA+IDAgJiYgIXRoaXMuRGF0YSkgfHwgKHRoaXMuRGF0YUR0b3MgJiYgdGhpcy5EYXRhRHRvcy5sZW5ndGggPiAwICYmICEhdGhpcy5EYXRhUmV0cmlldmUpO1xyXG4gICAgdGhpcy5sb2coXCJDaGFydCBcIiArIHRoaXMubmFtZSArIFwiOiBuZ09uSW5pdFwiKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEltcGxlbWVudGF6aW9uZSB1dGlsaXp6YXRhIHBlciBjb250cm9sbGFyZSBldmVudHVhbGkgcHJvcHJpZXTDoCBjaGlhdmUgZGVsIGdyYWZpY28gZSByaWdyYWZpY2FyZSB0dXR0byBxdWFsb3JhIHNpIHJpdmVsYXNzZSBuZWNlc3NhcmlvXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtTaW1wbGVDaGFuZ2VzfSBjaGFuZ2VzIEluZGljYXppb25lIGRlaSBjYW1iaWFtZW50aSBzdWxsZSBwcm9wcmlldMOgIGRlbCBncmFmaWNvLiBWZWRlcmUgZG9jdW1lbnRhemlvbmUgQW5ndWxhciBpbiBtZXJpdG9cclxuICAgKi9cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBpZiAoIXRoaXMuaW5pdERvbmUpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmxvZyhcIkNoYXJ0IFwiICsgdGhpcy5uYW1lICsgXCI6IG5nT25DaGFuZ2VzXCIpO1xyXG5cclxuICAgIGxldCBwcm9wc1RvQ2hlY2sgPSBbXCJUaW1lbGluZVwiLCBcIkxlZ2VuZFwiLCBcIlNldHRpbmdzXCIsIFwiQW5pbWF0aW9uc1wiLCBcIlRoZW1lXCIsIFwiTG9jYWxlXCIsIC4uLnRoaXMuZ2V0U3BlY2lmaWNQcm9wZXJ0aWVzVG9DaGVjaygpXTtcclxuICAgIHRoaXMuY2hlY2tQcm9wZXJ0aWVzQW5kUmVncmFwaGljYXRlQXNOZWVkZWQoY2hhbmdlcywgcHJvcHNUb0NoZWNrKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE5lbCBwb3N0IGluaXppYWxpenphemlvbmUsIGEgcGF0dG8gY2hlIG1pIHRyb3ZpIGluIGFtYmllbnRlIFwiYnJvd3NlclwiLCBwcm9zZWd1byBhbCBjYXJpY2FtZW50byBkZWwgZ3JhZmljbyBzdWxsJ0hUTUxcclxuICAgKi9cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICBpZiAoIXRoaXMubmFtZSlcclxuICAgICAgdGhyb3cgXCJhIFVuaXF1ZSBuYW1lIGlzIG1hbmRhdG9yeSB0byBjcmVhdGUgYSBjaGFydFwiO1xyXG5cclxuICAgIHRoaXMubG9nKFwiQ2hhcnQgXCIgKyB0aGlzLm5hbWUgKyBcIjogbmdBZnRlclZpZXdJbml0LCBncmFwaGljYXRpbmcgY2hhcnQgb3V0c2lkZSBBbmd1bGFyXCIpO1xyXG5cclxuICAgIGlmKCF0aGlzLmlzUGFnZWQpXHJcbiAgICAgIHRoaXMuZGlzcGF0Y2hMb2FkQ2hhcnQoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFsbCdvbkRlc3Ryb3kgc2NhcmljbyBpbCBncmFmaWNvIHBlciBsaWJlcmFyZSBtZW1vcmlhXHJcbiAgICovXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICBpZiAodGhpcy5DaGFydCkge1xyXG4gICAgICB0aGlzLmxvZyhcIkNoYXJ0IFwiICsgdGhpcy5uYW1lICsgXCI6IFVubG9hZGluZyBkZXN0cm95ZWQgY2hhcnRcIik7XHJcbiAgICAgIHRoaXMuYnJvd3Nlck9ubHkoKCkgPT4geyB0aGlzLkNoYXJ0LmRpc3Bvc2UoKTsgdGhpcy5EaXNwYXRjaGVyLmRlcmVnaXN0ZXJHcmFwaCh0aGlzLm5hbWUpIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLmxvZyhcIkNoYXJ0IFwiICsgdGhpcy5uYW1lICsgXCI6IFVubG9hZGluZyB1bmNyZWF0ZWQgY2hhcnQgY29tcG9uZW50LiBJdCBwcm9iYWJseSB3YXMgYSBkdXBsaWNhdGVkXCIpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVnaXN0cmEgaWwgZ3JhZmljbyBhdHR1YWxlIG5lbCBEaXNwYXRjaGVyIGluIG1vZG8gY2hlIHZlbmdhIGNhcmljYXRvIGFwcGVuYSBwb3NzaWJpbGVcclxuICAgKi9cclxuICBwcml2YXRlIGRpc3BhdGNoTG9hZENoYXJ0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5icm93c2VyT25seSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuRGlzcGF0Y2hlci5yZWdpc3Rlcih0aGlzLm5hbWUsICgpID0+IHsgcmV0dXJuIHRoaXMubG9hZENoYXJ0KCk7IH0pO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIElsIGNhcmljYW1lbnRvIGRlbCBncmFmaWNvIGZ1bnppb25hIG5lbCBzZWd1ZW50ZSBtb2RvOlxyXG4gICAqIFxyXG4gICAqIDEpIENhcmljYW1lbnRvIGRlbCB0ZW1hIGUgZGVsbGUgYW5pbWF6aW9uaSwgcXVhbG9yYSBuZWNlc3NhcmlcclxuICAgKiBcclxuICAgKiAyKSBDYXJpY2FtZW50byBkZWxsZSBpbXBvc3Rhemlvbmkgc3BlY2lmaWNoZSBlIGludGVncmF6aW9uZSBjb24gbGUgaW1wb3N0YXppb25pIGdlbmVyaWNoZVxyXG4gICAqIFxyXG4gICAqIDMpIEdyYWZpY2F6aW9uZVxyXG4gICAqIFxyXG4gICAqIDQpIENhcmljYW1lbnRvIGRlbCBsb2NhbGVcclxuICAgKi9cclxuICBwcml2YXRlIGxvYWRDaGFydCgpIHtcclxuICAgIHRoaXMubG9nKFwiQ2hhcnQgXCIgKyB0aGlzLm5hbWUgKyBcIjogU3RhcnQgbG9hZGluZyBNb2R1bGVzIGlmIG5lZWRlZFwiKTtcclxuICAgIHJldHVybiBQcm9taXNlLmFsbChbXHJcbiAgICAgIHRoaXMuc2V0dXBBbUNoYXJ0c1RoZW1lcygpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9nKFwiQ2hhcnQgXCIgKyB0aGlzLm5hbWUgKyBcIjogR3JhcGhpY2F0aW5nIGFmdGVyIG1vZHVsZXMgbG9hZFwiKTtcclxuXHJcbiAgICAgICAgdmFyIGNhc3RlZFNldHRpbmdzID0gdGhpcy5nZXRDYXN0ZWRTZXR0aW5ncygpO1xyXG4gICAgICAgIHRoaXMuZmlsbFNldHRpbmdzKGNhc3RlZFNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLmZpbGxTcGVjaWZpY1NldHRpbmdzKGNhc3RlZFNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLkNoYXJ0U2VydmljZSA9IHRoaXMuZ3JhcGhpY2F0ZShjYXN0ZWRTZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5DaGFydCA9IHRoaXMuQ2hhcnRTZXJ2aWNlLkNoYXJ0SW5zdGFuY2U7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5DaGFydCkgdGhpcy5sb2coXCJDaGFydCBcIiArIHRoaXMubmFtZSArIFwiOiBDb3VsZCBub3QgY3JlYXRlIGdyYXBoXCIpO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5DaGFydGVyLmFwcGx5TG9jYWxlKHRoaXMuQ2hhcnQsIHRoaXMuTG9jYWxlKS50aGVuKCgpID0+IHRoaXMuaW5pdERvbmUgPSB0cnVlKTtcclxuICAgICAgfSlcclxuICAgIF0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmllbXBpbWVudG8gZGVsbGUgaW1wb3N0YXppb25pIG5lbGxhIGNsYXNzZSBTZXR0aW5ncy4gU2kgZGFubm8gcHJpb3JpdMOgIGFpIHZhbG9yaSBnacOgIGltcG9zdGF0aSBuZWkgU2V0dGluZ3MsIFxyXG4gICAqIGludGVncmFuZG8gZXZlbnR1YWxtZW50ZSBjb24gbGUgIHByb3ByaWV0w6AgZGVsIGdyYWZpY29cclxuICAgKiBcclxuICAgKiBAcGFyYW0ge0Jhc2VTZXR0aW5nc30gc2V0dGluZ3MgSW1wb3N0YXppb25pIGJhc2UgcmljZXZ1dGUgZGFsbGEgc3BlY2lhbGl6emF6aW9uZSBkZWwgZ3JhZmljb1xyXG4gICAqL1xyXG4gIHByaXZhdGUgZmlsbFNldHRpbmdzKHNldHRpbmdzOiBCYXNlU2V0dGluZ3MpIHtcclxuXHJcbiAgICAvLyBNZXJnZSBkZWdsaSBJbnB1dCBjb24gaSBTZXR0aW5ncywgZGFuZG8gcHJpb3JpdMOgIGFpIFNldHRpbmdzXHJcblxyXG4gICAgc2V0dGluZ3MuVGhlbWUgPSBzZXR0aW5ncy5UaGVtZSA/IHNldHRpbmdzLlRoZW1lIDogdGhpcy5UaGVtZTtcclxuICAgIHNldHRpbmdzLkxvY2FsZSA9IHNldHRpbmdzLkxvY2FsZSA/IHNldHRpbmdzLkxvY2FsZSA6IHRoaXMuTG9jYWxlO1xyXG4gICAgc2V0dGluZ3MuQW5pbWF0aW9ucyA9IHNldHRpbmdzLkFuaW1hdGlvbnMgIT0gbnVsbCA/IHNldHRpbmdzLkFuaW1hdGlvbnMgOiB0aGlzLkFuaW1hdGlvbnM7XHJcblxyXG4gICAgc2V0dGluZ3MuTGVnZW5kID0gc2V0dGluZ3MuTGVnZW5kICE9IG51bGwgPyBzZXR0aW5ncy5MZWdlbmQgOiB0aGlzLkxlZ2VuZDtcclxuICAgIHNldHRpbmdzLk5hbWUgPSBzZXR0aW5ncy5OYW1lID8gc2V0dGluZ3MuTmFtZSA6IHRoaXMubmFtZTtcclxuICAgIHNldHRpbmdzLlRpbWVsaW5lID0gc2V0dGluZ3MuVGltZWxpbmUgIT0gbnVsbCA/IHNldHRpbmdzLlRpbWVsaW5lIDogdGhpcy5UaW1lbGluZTtcclxuICAgIHNldHRpbmdzLkFkYXB0TGFiZWxTaXplQW5kT3JpZW50YXRpb24gPSBzZXR0aW5ncy5BZGFwdExhYmVsU2l6ZUFuZE9yaWVudGF0aW9uICE9IG51bGwgPyBzZXR0aW5ncy5BZGFwdExhYmVsU2l6ZUFuZE9yaWVudGF0aW9uIDogdGhpcy5BZGFwdExhYmVsU2l6ZUFuZE9yaWVudGF0aW9uO1xyXG4gICAgc2V0dGluZ3MuWEF4aXNUaXRsZSA9IHNldHRpbmdzLlhBeGlzVGl0bGUgPyBzZXR0aW5ncy5YQXhpc1RpdGxlIDogdGhpcy5YVGl0bGU7XHJcbiAgICBzZXR0aW5ncy5ZQXhpc1RpdGxlID0gc2V0dGluZ3MuWUF4aXNUaXRsZSA/IHNldHRpbmdzLllBeGlzVGl0bGUgOiB0aGlzLllUaXRsZTtcclxuICAgIHNldHRpbmdzLkxlZ2VuZFBvc2l0aW9uID0gc2V0dGluZ3MuTGVnZW5kUG9zaXRpb24gPyBzZXR0aW5ncy5MZWdlbmRQb3NpdGlvbiA6IHRoaXMuTGVnZW5kUG9zaXRpb247XHJcbiAgICBzZXR0aW5ncy5IaWRlU2VyaWVzT25MYWJlbENsaWNrID0gc2V0dGluZ3MuSGlkZVNlcmllc09uTGFiZWxDbGljayAhPSBudWxsID8gc2V0dGluZ3MuSGlkZVNlcmllc09uTGFiZWxDbGljayA6IHRoaXMuSGlkZVNlcmllc09uTGFiZWxDbGljaztcclxuICAgIHNldHRpbmdzLk1pbkdyaWREaXN0YW5jZSA9IHNldHRpbmdzLk1pbkdyaWREaXN0YW5jZSAhPSBudWxsID8gc2V0dGluZ3MuTWluR3JpZERpc3RhbmNlIDogdGhpcy5NaW5HcmlkRGlzdGFuY2U7XHJcbiAgICBzZXR0aW5ncy5MZWdlbmRQYWRkaW5nID0gc2V0dGluZ3MuTGVnZW5kUGFkZGluZyA/IHNldHRpbmdzLkxlZ2VuZFBhZGRpbmcgOiB0aGlzLkxlZ2VuZFBhZGRpbmcgPz8gbnVsbDtcclxuXHJcbiAgICAoPGFueT5zZXR0aW5ncykuQ29udGFpbmVySGVpZ2h0ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xyXG4gICAgKDxhbnk+c2V0dGluZ3MpLk9uU2VyaWVzQ2xpY2tDYWxsYmFjayA9IChzZXJpZXMpID0+IHsgdGhpcy5vblNlcmllc0NsaWNrZWQuZW1pdChzZXJpZXMpOyB9O1xyXG4gICAgKDxhbnk+c2V0dGluZ3MpLk9uU2VsZWN0aW9uQ2hhbmdlZENhbGxiYWNrID0gKGV2ZW50OiB7IGZyb206IERhdGUsIHRvOiBEYXRlLCBpbml0aWFsOiBib29sZWFuIH0pID0+IHsgdGhpcy5vblNlbGVjdGlvbkNoYW5nZWQuZW1pdCh7IGZyb206IGV2ZW50LmZyb20sIHRvOiBldmVudC50bywgaW5pdGlhbDogZXZlbnQuaW5pdGlhbCB9KTsgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbnRyb2xsYSBpIGNhbWJpYW1lbnRpIGF2dmVudXRpIGFsbGUgcHJvcHJpZXTDoCBjaGlhdmUgZSByaWVmZmV0dHVhIGxhIGdyYWZpY2F6aW9uZSBxdWFsb3JhIG5lY2Vzc2FyaW9cclxuICAgKiBcclxuICAgKiBAcGFyYW0ge1NpbXBsZUNoYW5nZXN9IGNoYW5nZXMgSW5kaWNhemlvbmUgZGVsbGEgbW9kaWZpY2hlIGF2dmVudXRlIG5laSB2YXJpIElucHV0XHJcbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gcHJvcHNUb0NoZWNrIExpc3RhIGRlZ2xpIElucHV0IGRhIGNvbnRyb2xsYXJlIHBlciBjdWkgdW5hIG1vZGlmaWNhIGNhdXNhIHVuYSByaWdyYWZpY2F6aW9uZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgY2hlY2tQcm9wZXJ0aWVzQW5kUmVncmFwaGljYXRlQXNOZWVkZWQoY2hhbmdlczogU2ltcGxlQ2hhbmdlcywgcHJvcHNUb0NoZWNrOiBzdHJpbmdbXSkge1xyXG4gICAgbGV0IHRvUmVHcmFwaGljYXRlID0gZmFsc2U7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByb3BzVG9DaGVjay5sZW5ndGg7IGkrKylcclxuICAgICAgdG9SZUdyYXBoaWNhdGUgPSB0b1JlR3JhcGhpY2F0ZSB8fCAoY2hhbmdlc1twcm9wc1RvQ2hlY2tbaV1dICYmIGNoYW5nZXNbcHJvcHNUb0NoZWNrW2ldXS5jdXJyZW50VmFsdWUpXHJcblxyXG4gICAgaWYgKHRvUmVHcmFwaGljYXRlKVxyXG4gICAgICB0aGlzLnJlbG9hZENoYXJ0KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGdW56aW9uZSBjaGUgZWZmZXR0dWEgdW4gY2FtYmlvIGRpIHBhZ2luYSBwZXIgaSBncmFmaWNpIHBhZ2luYXRpLiBRdWFsb3JhICoqZGF0YSoqIGZvc3NlIG51bGxvIHNpZ25pZmljYSBjaGUgw6ggaW5pemlhdG8gdW4gY2FyaWNhbWVudG8gXHJcbiAgICogZSBhbmNoZSBsYXRvIGFwcGxpY2F0aXZvIGlsIERhdGFSZXRyaWV2ZSBkb3Zyw6AgY29uc2lkZXJhcmUgY2hlIGwnYXNzZW56YSBkaSB2YWxvcmkgbm9uIMOoIGFsdHJvIGNoZSB1bidpbmRpY2F6aW9uZSBkaSBpbml6aW8gY2FyaWNhbWVudG9cclxuICAgKiBcclxuICAgKiBJbCBjYXJpY2FtZW50byBkaSBxdWFsc2lhc2kgcGFnaW5hIGdlbmVyZXLDoCBjb211bnF1ZSB1bmEgcHJpbW8gZXZlbnRvIGNvbiAqKmRhdGEqKiBudWxsbyBpbiBtb2RvIGRhIGluZGljYXJlIGwnaW5pemlvIGNhcmljYW1lbnRvIGVcclxuICAgKiBpbiBzZWNvbmRhIGlzdGFuemEgdW4gYWx0cm8gZXZlbnRvIGluIGN1aSAqKmRhdGEqKiBzYXLDoCBzZW1wcmUgdmFsb3JpenphdG8sIG8gY29uIGlsIER0byBkYSB1c2FyZSBwZXIgcmVjdXBlcmFyZSBpIGRhdGksIG8gY29uIGkgZGF0aVxyXG4gICAqIHZlcmkgZSBwcm9wcmkgZ2nDoCBwcmVzZW50aSBuZWwgKipEYXRhQXJyYXkqKlxyXG4gICAqIFxyXG4gICAqIEkgY2FsbGJhY2sgKipvbkxvYWRTdGFydCoqIGUgKipvbkxvYWRFbmQqKiB2ZW5nb25vIHNlbXByZSBjaGlhbWF0aVxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7eyBkYXRhOiBMaW5lQ2hhcnREYXRhIHwgUGllQ2hhcnREYXRhIHwgVmVydGljYWwyRENoYXJ0RGF0YSB8IFZlcnRpY2FsQ2hhcnREYXRhIHwgYW55LCBpbmRleDogbnVtYmVyIH19IG5kIEluZGljZSBkZWwgY2FyaWNhbWVudG8gZGF0aSwgY29uIGV2ZW50dWFsbWVudGUgZ2nDoCBpIGRhdGkgc2UgZGlzcG9uaWJpbGlcclxuICAgKi9cclxuICBwdWJsaWMgY2hhbmdlUGFnZShuZDogeyBkYXRhOiBMaW5lQ2hhcnREYXRhIHwgUGllQ2hhcnREYXRhIHwgVmVydGljYWwyRENoYXJ0RGF0YSB8IFZlcnRpY2FsQ2hhcnREYXRhIHwgYW55LCBpbmRleDogbnVtYmVyIH0pIHtcclxuICAgIGlmICghbmQuZGF0YSkge1xyXG4gICAgICB0aGlzLmxvYWRpbmdDaGFydCA9IHRydWU7XHJcbiAgICAgIC8vIFNlcnZlIHBlciBpbmZvcm1hcmUgbCdhcHBsaWNhdGl2byBpbiBsaXN0ZW5pbmcgc3VsbCdpbmRpY2UgYXR0dWFsbWVudGUgaW4gdmlzdWFsaXp6YXppb25lLiBcclxuICAgICAgLy8gTGEgbWFuY2FuemEgZGkgZGF0aSBpbmRpY2EgY2hlIG5vbiBkZXZvbm8gZXNzZXJlIGVmZmV0dHVhdGUgcmljZXJjaGUgcGVyIG9yYVxyXG4gICAgICBpZiAodGhpcy5EYXRhUmV0cmlldmUpXHJcbiAgICAgICAgdGhpcy5EYXRhUmV0cmlldmUobnVsbCwgbmQuaW5kZXgpXHJcbiAgICAgIHRoaXMub25Mb2FkU3RhcnQuZW1pdCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuRGF0YVJldHJpZXZlKVxyXG4gICAgICB0aGlzLkRhdGFSZXRyaWV2ZShuZC5kYXRhLCBuZC5pbmRleCkudGhlbih0ID0+IHsgdGhpcy5jaGFuZ2VQYWdlRGF0YVJlY2VpdmVkKHQpOyB9KTtcclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5jaGFuZ2VQYWdlRGF0YVJlY2VpdmVkKG5kLmRhdGEpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWwgdGVybWluZSBkZWwgY2FyaWNhbWVudG8gZGVpIGRhdGkgZGkgdW5hIHBhZ2luYSBxdWVzdG8gbWV0b2RvIHZpZW5lIGNoaWFtYXRvIHBlciByaWdyYWZpY2FyZSBsYSBzaXR1YXppb25lIGNvbiBpIG51b3ZpIGRhdGlcclxuICAgKiBcclxuICAgKiBAcGFyYW0ge0xpbmVDaGFydERhdGEgfCBQaWVDaGFydERhdGEgfCBWZXJ0aWNhbDJEQ2hhcnREYXRhIHwgVmVydGljYWxDaGFydERhdGEgfCBhbnl9IGRhdGEgRGF0aSBkZWwgZ3JhZmljb1xyXG4gICAqL1xyXG4gIHByaXZhdGUgY2hhbmdlUGFnZURhdGFSZWNlaXZlZChkYXRhOiBMaW5lQ2hhcnREYXRhIHwgUGllQ2hhcnREYXRhIHwgVmVydGljYWwyRENoYXJ0RGF0YSB8IFZlcnRpY2FsQ2hhcnREYXRhIHwgYW55KSB7XHJcbiAgICB0aGlzLmxvYWRpbmdDaGFydCA9IGZhbHNlO1xyXG4gICAgdGhpcy5vbkxvYWRFbmQuZW1pdCgpO1xyXG4gICAgbGV0IGZpcnN0QmluZCA9ICF0aGlzLkRhdGE7XHJcbiAgICB0aGlzLkRhdGEgPSBkYXRhO1xyXG5cclxuICAgIGlmICghZmlyc3RCaW5kKVxyXG4gICAgICB0aGlzLnJlbG9hZENoYXJ0KCk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMuZGlzcGF0Y2hMb2FkQ2hhcnQoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJpY2FyaWNhIGlsIGdyYWZpY28gZGlzdHJ1Z2dlbmRvIGlsIHZlY2NoaW8gZSByaWNyZWFuZG8gaWwgbnVvdm9cclxuICAgKiBcclxuICAgKiBMZSBjaGlhbWF0ZSBhIHF1ZXN0byBtZXRvZG8gcG9zc29ubyBlc3NlcmUgdHJhc2Zvcm1hdGUgaW4gY2hpYW1hdGUgYWwgbWV0b2RvICoqZ3JhcGhpY2F0ZSoqIGRlbGxhIFNlcnZpY2UsIHNlIHNvbG8gcXVlbCBtZXRvZG8gZm9zc2UgYWJiYXN0YW56YSBpbnRlbGxpZ2VudGUgcGVyIGNhcGlyZVxyXG4gICAqIGxlIGRpZmZlcmVuemUgZnJhIGlsIGdyYWZpY28gY29tJ2VyYSBwcmltYSBlIGNvbWUgZGV2ZSBkaXZlbnRhcmUsIGluIG1vZG8gZGEgbm9uIHJpY3JlYXJsbyBtYSBzZW1wbGljZW1lbnRlIG1vZGlmaWNhcmUgcXVlbGxvIGNoZSBnacOgIMOoIGRpc2VnbmF0b1xyXG4gICAqL1xyXG4gIHByaXZhdGUgcmVsb2FkQ2hhcnQoKSB7XHJcbiAgICB0aGlzLmJyb3dzZXJPbmx5KCgpID0+IHsgaWYgKCF0aGlzLkNoYXJ0LmlzRGlzcG9zZWQoKSkgdGhpcy5DaGFydC5kaXNwb3NlKCk7IHRoaXMuRGlzcGF0Y2hlci5kZXJlZ2lzdGVyR3JhcGgodGhpcy5uYW1lKSB9KTtcclxuICAgIHRoaXMuRGlzcGF0Y2hlci5yZWdpc3Rlcih0aGlzLm5hbWUsICgpID0+IHsgcmV0dXJuIHRoaXMubG9hZENoYXJ0KCk7IH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRnVuemlvbmUgY2hlIHNpIG9jY3VwYSBkaSBjYXJpY2FyZSBpIHRlbWkgbmVjZXNzYXJpIHBlciBpbCBncmFmaWNvIGluIG9nZ2V0dG8uIFByaW1hIGFwcGxpY2EgaWwgdGVtYSwgcG9pLCBzZSBzZXJ2ZSwgYXBwbGljYSBsZSBhbmltYXppb25pXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzZXR1cEFtQ2hhcnRzVGhlbWVzKCkge1xyXG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFtcclxuICAgICAgdGhpcy5DaGFydGVyLmFwcGx5VGhlbWUoYW00Y29yZSwgdGhpcy5UaGVtZSkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuQW5pbWF0aW9ucyA/IHRoaXMuQ2hhcnRlci5hcHBseUFuaW1hdGlvbnMoYW00Y29yZSkgOiB0aGlzLkNoYXJ0ZXIudW5hcHBseUFuaW1hdGlvbnMoYW00Y29yZSk7XHJcbiAgICAgIH0pXHJcbiAgICBdKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBwcml2YXRlIGxvZyhsb2c6IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMubG9ncylcclxuICAgICAgY29uc29sZS5sb2coXCJAZXNmYWVuemEvZXMtY2hhcnRzOiBcIiArIGxvZyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgYnJvd3Nlck9ubHkoZjogKCkgPT4gdm9pZCkge1xyXG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcclxuICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcclxuICAgICAgICBmKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxufSJdfQ==
|
|
340
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jaGFydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcy1jaGFydHMvc3JjL2xpYi9jb21wb25lbnRzL2Jhc2UvYmFzZS1jaGFydC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLEtBQUssRUFBc0UsTUFBTSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQVksU0FBUyxFQUFjLE1BQU0sZUFBZSxDQUFDO0FBYy9LLE9BQU8sS0FBSyxPQUFPLE1BQU0sMEJBQTBCLENBQUM7Ozs7QUFHcEQ7OztHQUdHO0FBRUgsTUFBTSxPQUFnQixrQkFBa0I7SUErTHRDOzs7Ozs7Ozs7Ozs7T0FZRztJQUNILFlBQW9CLEVBQWMsRUFBVSxVQUFrQixFQUFVLElBQVksRUFBVSxPQUFvQixFQUFVLFVBQTJCLEVBQVUsSUFBYSxFQUNwSyxVQUFtQixFQUFVLE1BQWMsRUFBVSxLQUFhO1FBRHhELE9BQUUsR0FBRixFQUFFLENBQVk7UUFBVSxlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQVUsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUFVLFlBQU8sR0FBUCxPQUFPLENBQWE7UUFBVSxlQUFVLEdBQVYsVUFBVSxDQUFpQjtRQUFVLFNBQUksR0FBSixJQUFJLENBQVM7UUFDcEssZUFBVSxHQUFWLFVBQVUsQ0FBUztRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBVSxVQUFLLEdBQUwsS0FBSyxDQUFRO1FBN0s1RTs7V0FFRztRQUNNLFNBQUksR0FBVyxFQUFFLENBQUM7UUEwRDNCOzs7O1dBSUc7UUFDTSxrQkFBYSxHQUFXLEdBQUcsQ0FBQztRQVlyQzs7V0FFRztRQUNPLHVCQUFrQixHQUE2RCxJQUFJLFlBQVksRUFBOEMsQ0FBQztRQUV4Sjs7V0FFRztRQUNPLG9CQUFlLEdBQXlCLElB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SUFBSSxDQUFDLFVBQVUsQ0FBQztRQUUxRixRQUFRLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzFFLFFBQVEsQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUMxRCxRQUFRLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ2xGLFFBQVEsQ0FBQyw0QkFBNEIsR0FBRyxRQUFRLENBQUMsNEJBQTRCLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQztRQUNsSyxRQUFRLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDOUUsUUFBUSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzlFLFFBQVEsQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUNsRyxRQUFRLENBQUMsc0JBQXNCLEdBQUcsUUFBUSxDQUFDLHNCQUFzQixJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FB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TUFBTTtnQkFLRyxTQUFTO3NCQUFsQixNQUFNO2dCQU1HLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IElucHV0LCBTaW1wbGVDaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBOZ1pvbmUsIE9uRGVzdHJveSwgT25Jbml0LCBPbkNoYW5nZXMsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBDb250ZW50Q2hpbGQsIE9wdGlvbmFsLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IElCYXNlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Jhc2UvSUJhc2VTZXJ2aWNlJztcclxuaW1wb3J0IHsgQmFzZVNldHRpbmdzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NldHRpbmdzL2Jhc2UvQmFzZVNldHRpbmdzJztcclxuaW1wb3J0IHsgTGVnZW5kUGFkIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NldHRpbmdzL2Jhc2UvTGVnZW5kUGFkJztcclxuaW1wb3J0IHsgQ2hhcnRMb2FkZXIgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2NvcmUvQ2hhcnRMb2FkZXJcIjtcclxuaW1wb3J0IHsgQ2hhcnREaXNwYXRjaGVyIH0gZnJvbSBcIi4uLy4uL21vZGVscy9jb3JlL0NoYXJ0RGlzcGF0Y2hlclwiO1xyXG5cclxuaW1wb3J0IHsgTGluZUNoYXJ0RGF0YSB9IGZyb20gXCIuLi8uLi9tb2RlbHMvZGF0YS9MaW5lQ2hhcnREYXRhXCI7XHJcbmltcG9ydCB7IFBpZUNoYXJ0RGF0YSB9IGZyb20gXCIuLi8uLi9tb2RlbHMvZGF0YS9QaWVDaGFydERhdGFcIjtcclxuaW1wb3J0IHsgVmVydGljYWxDaGFydERhdGEgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2RhdGEvVmVydGljYWxDaGFydERhdGFcIjtcclxuaW1wb3J0IHsgVmVydGljYWwyRENoYXJ0RGF0YSB9IGZyb20gXCIuLi8uLi9tb2RlbHMvZGF0YS9WZXJ0aWNhbDJEQ2hhcnREYXRhXCI7XHJcbmltcG9ydCB7IFBhZ2VkQ2hhcnREYXRhIH0gZnJvbSBcIi4uLy4uL21vZGVscy9kYXRhL1BhZ2VkQ2hhcnREYXRhXCI7XHJcblxyXG5pbXBvcnQgKiBhcyBhbTRjb3JlIGZyb20gXCJAYW1jaGFydHMvYW1jaGFydHM0L2NvcmVcIjtcclxuaW1wb3J0ICogYXMgYW00Y2hhcnRzIGZyb20gXCJAYW1jaGFydHMvYW1jaGFydHM0L2NoYXJ0c1wiO1xyXG5cclxuLyoqXHJcbiAqIENvbXBvbmVudGUgR3JhZmljbyBCYXNlIGNoZSBnZXN0aXNjZSB0dXR0ZSBsZSBjb3NlIGNvbXVuaSBkZWkgdmFyaSBncmFmaWNpIGlzdGFuemlhYmlsaSwgY29tZSBsYSBwcmVzZW56YSBvIG1lbnUgZGkgdW5hIGxlZ2VuZGEsXHJcbiAqIGlsIHRlbWEgdXRpbGl6emF0bywgaWwgbG9jYWxlIGRlbCBzaW5nb2xvIGdyYWZpY28sIGVjYyBlY2MuLi5cclxuICovXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUNoYXJ0Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBPbkluaXQsIE9uQ2hhbmdlcyB7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRpdG9sbyBwZXIgbCdhc3NlIFhcclxuICAgKi9cclxuICBASW5wdXQoKSBYVGl0bGU6IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogVGl0b2xvIHBlciBsJ2Fzc2UgWVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIFlUaXRsZTogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBJbXBvc3RhemlvbmkgZGkgYmFzZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIFNldHRpbmdzOiBCYXNlU2V0dGluZ3M7XHJcblxyXG4gIC8qKlxyXG4gICAqIFByZXNlbnphIG8gbWVubyBkZWxsYSBsZWdlbmRhXHJcbiAgICovXHJcbiAgQElucHV0KCkgTGVnZW5kOiBib29sZWFuO1xyXG5cclxuICAvKipcclxuICAgKiBQb3NpemlvbmUgZGVsbGEgbGVnZW5kYVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIExlZ2VuZFBvc2l0aW9uOiBcInRvcFwiIHwgXCJib3R0b21cIiB8IFwibGVmdFwiIHwgXCJyaWdodFwiO1xyXG5cclxuICAvKipcclxuICAgKiBQcmVzZW56YSBvIG1lbm8gZGVsbGEgdGltZWxpbmVcclxuICAgKi9cclxuICBASW5wdXQoKSBUaW1lbGluZTogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogTm9tZSBkZWwgZ3JhZmljbywgZm9uZGFtZW50YWxlIGFzc2VnbmFybG8gcGVyIHBlcm1ldHRlcmUgYWxsYSBsaWJyZXJpYSBkaSBzY2hlZHVsYXJuZSBsYSBjcmVhemlvbmVcclxuICAgKi9cclxuICBASW5wdXQoKSBuYW1lOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICAvKipcclxuICAgKiBVdGlsaXp6byBvIG1lbm8gZGVsbGUgYW5pbWF6aW9uaS4gU2VuemEgYW5pbWF6aW9uaSBpbCBncmFmaWNvIMOoIGxlZ2dlcm1lbnRlIHBpw7kgcGVyZm9ybWFudGUsIHNwZWNpYWxtZW50ZSBhbGwnYXVtZW50YXJlIGRlaSBwdW50aSBuZWxsYSBzZXJpZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEFuaW1hdGlvbnM6IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIFRlbWEgZGEgdXRpbGl6emFyZSwgdmFsaWRvIHNvbG8gcGVyIGlsIGdyYWZpY28gaW4gcXVlc3Rpb25lLiBHbGkgYWx0cmkgZ3JhZmljaSBkZWxsYSBwYWdpbmEgcG9zc29ubyBhdmVyZSBzdGlsaSBkaXZlcnNpLlxyXG4gICAqIFxyXG4gICAqIEVzc2VuZG8gaSB0ZW1pIGNhcmljYXRpIGluIG1hbmllcmEgYXNpbmNyb25hIGluIGJhc2UgYWxsJ3V0aWxpenpvIHV0aWxpenphcm5lIHRhbnRpIGRpdmVyc2kgaW4gdW4ndW5pY2EgcGFnaW5hIHBvdHJlYmJlIHJhbGxlbnRhcmUgaWwgcHJpbW8gY2FyaWNhbWVudG9cclxuICAgKi9cclxuICBASW5wdXQoKSBUaGVtZTogJ3NwaXJpdGVkYXdheScgfCAnbW9vbnJpc2VraW5nZG9tJyB8ICdmcm96ZW4nIHwgJ2RhcmsnIHwgJ2tlbGx5JyB8ICdtYXRlcmlhbCcgfCAnZGF0YXZpeicgfCAnbm9uZSc7XHJcblxyXG4gIC8qKlxyXG4gICAqIExvY2FsZSBkZWwgc2luZ29sbyBncmFmaWNvXHJcbiAgICovXHJcbiAgQElucHV0KCkgTG9jYWxlOiBzdHJpbmc7XHJcblxyXG4gIC8qKlxyXG4gICAqIEluZGljYSBzZSB1dGlsaXp6YXJlIGlsIGNvbXBvcnRhbWVudG8gZGkgZGVmYXVsdCBwZXIgaSBjbGljayBkZWxsZSBzZXJpZSBzdWxsYSBMZWdlbmRhLiBNZXR0ZW5kbyBxdWVzdGEgdmFyaWFiaWxlIGEgKipmYWxzZSoqXHJcbiAgICogZSBjb2xsZWdhbmRvIGwnb3V0cHV0ICoqb25TZXJpZXNDbGlja2VkKiogw6ggcG9zc2liaWxlIGdlbmVyYXJlIHVuIGV2ZW50byBvZ25pIHZvbHRhIGNoZSBsJ3V0ZW50ZSBmYSBjbGljayBzdSB1bmEgc2VyaWUgZGVsbGEgTGVnZW5kYVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEhpZGVTZXJpZXNPbkxhYmVsQ2xpY2s6IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIE1pbmltYSBkaXN0YW56YSBuZWxsYSBncmlnbGlhIGZyYSBpIHZhbG9yaSwgbW9kaWZpY2EgbGEgcXVhbnRpdMOgIGRpIHN0ZXAgZnJhIGkgdmFsb3JpIGRlbGwnYXNzZSBYIGUgcXVpbmRpIGxhIGdyYW51bGFyaXTDoCBkZWkgZGF0aS5cclxuICAgKiBcclxuICAgKiBQacO5IHBpY2NvbGEgw6gsIHBpw7kgdmFsb3JpIHZlcnJhbm5vIGluc2VyaXRpIG5lbGwnYXNzZSBYXHJcbiAgICovXHJcbiAgQElucHV0KCkgTWluR3JpZERpc3RhbmNlOiBudW1iZXI7XHJcblxyXG4gIC8qKlxyXG4gICAqIENlcmNhIGRpIGFnZ2l1c3RhcmUgaSB2YXJpIHN0ZXAgZGVsbCdhc3NlIFggcnVvdGFuZG9saSBlIGRpbWludWVuZG9uZSBsZSBkaW1lbnNpb25pIGFiYmFzdGFuemEgcGVyIG1vc3RyYXJuZSBpbCBwacO5IHBvc3NpYmlsZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEFkYXB0TGFiZWxTaXplQW5kT3JpZW50YXRpb246IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIFBhZGRpbmcgZGEgYXBwbGljYXJlIGFsbGEgTGVnZW5kYSBpbiBjYXNvIHNpIHZvZ2xpYSBzcG9zdGFyZSB1biBwbydcclxuICAgKi9cclxuICBASW5wdXQoKSBMZWdlbmRQYWRkaW5nOiBMZWdlbmRQYWQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIExpc3RhIGRpIGR0byBnZW5lcmljaSBjaGUgdmVycmFubm8gZW1lc3NpIGRhbCBzaXN0ZW1hIGRpIGdyYWZpY2kgdW5vIHBlciB1bm8gYXR0cmF2ZXJzbyBsYSBmdW56aW9uZSAqKkRhdGFSZXRyaWV2ZSoqLCBjaGUgZG92cmFubm8gZXNzZXJlXHJcbiAgICogdXNhdGkgcGVyIHVhbiBzb3J0YSBkaSBjYXJpY2FtZW50byBcInBhZ2luYXRvXCIgZGVpIGdyYWZpY2lcclxuICAgKi9cclxuICBASW5wdXQoKSBEYXRhRHRvczogYW55W107XHJcblxyXG4gIC8qKlxyXG4gICAqIEluZGljZSBkZWxsJ2FycmF5ICoqRGF0YUR0b3MqKiBvIGRlbGwnYXJyYXkgKipEYXRhQXJyYXkqKiBkYSBjdWkgaW5pemlhcmUgYWQgZW1ldHRlcmUgaSB2YWxvcmksIHV0aWxlIHBlciBzdXBwb3J0YXJlIGlsIFwiYmFja1wiIGRhIHVuIGV2ZW50dWFsZSBwYWdpbmEgZGkgZGV0dGFnbGlvXHJcbiAgICovXHJcbiAgQElucHV0KCkgRGF0YUR0b1N0YXJ0SW5kZXg6IG51bWJlcjtcclxuXHJcbiAgLyoqXHJcbiAgICogRnVuemlvbmUgZGVmaW5pdGEgbGF0byBhcHBsaWNhdGl2byBjaGUgaW4gYmFzZSBhbCAqKkRhdGFEdG8qKiBjb3JyZW50ZSByZXN0aXR1aXNjZSB1bmEgUHJvbWlzZSBkZWwgdGlwbyBkaSBkYXRpIHJpY2hpZXN0byBwZXIgaWwgZ3JhZmljbyBjb3JyZW50ZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIERhdGFSZXRyaWV2ZTogKGR0bzogYW55LCBpbmRleDogbnVtYmVyKSA9PiBQcm9taXNlPGFueT47XHJcblxyXG4gIC8qKlxyXG4gICAqIERvcG8gYXZlciBuYXZpZ2F0byBhIHVuIG51b3ZvIGdyYWZpY28gdmVycmFubm8gYXR0ZXNpIHF1ZXN0aSBtaWxsaXNlY29uZGkgcHJpbWEgZGkgcmljaGllZGVyZSBpIGRhdGkgYXR0cmF2ZXJzbyBsYSAqKkRhdGFSZXRyaWV2ZSoqLlxyXG4gICAqIFxyXG4gICAqIFF1ZXN0byBwZXIgZXZpdGFyZSBjaGUgbCd1dGVudGUgY2xpY2NhbmRvIHZlbG9jZW1lbnRlIFwiYXZhbnRpXCIgZ2VuZXJpIHRvbm5lbGxhdGUgZGkgcmljaGllc3RlIGludXRpbGlcclxuICAgKi9cclxuICBASW5wdXQoKSBCcm93c2VEZWxheU1zOiBudW1iZXIgPSA1MDA7XHJcblxyXG4gIC8qKlxyXG4gICAqIEludGVzdGF6aW9uZSBkZWkgZ3JhZmljaSBuZWwgY2FzbyBzaSB1dGlsaXp6aSBsYSBtb2RhbGl0w6AgcGFnaW5hdGFcclxuICAgKi9cclxuICBAQ29udGVudENoaWxkKCdoZWFkZXInLCB7IHN0YXRpYzogZmFsc2UgfSkgaGVhZGVyX3RyO1xyXG5cclxuICAvKipcclxuICAgKiBNZXNzYWdnaW8gZGkgY2FyaWNhbWVudG8gZnJhIHVuIGdyYWZpY28gZSBsJ2FsdHJvIFxyXG4gICAqL1xyXG4gIEBDb250ZW50Q2hpbGQoJ2xvYWRpbmcnLCB7IHN0YXRpYzogZmFsc2UgfSkgbG9hZGluZ190ZW1wbGF0ZTtcclxuXHJcbiAgLyoqXHJcbiAgICogRXZlbnRvIGxhbmNpYXRvIHN1bGxhIHNlbGV6aW9uZSBkaSB1biByYW5nZSBkaSBkYXRpIG8gZGFsbGEgdGltZWxpbmUgbyBkYWwgZ3JhZmljby4gVmFsaWRvIHBlciB0dXR0aSBpIGdyYWZpY2kgY2hlIHN1cHBvcnRhbm8gc2VyaWUgYmFzYXRlIHN1bGxlIGRhdGVcclxuICAgKi9cclxuICBAT3V0cHV0KCkgb25TZWxlY3Rpb25DaGFuZ2VkOiBFdmVudEVtaXR0ZXI8eyBmcm9tOiBEYXRlLCB0bzogRGF0ZSwgaW5pdGlhbDogYm9vbGVhbiB9PiA9IG5ldyBFdmVudEVtaXR0ZXI8eyBmcm9tOiBEYXRlLCB0bzogRGF0ZSwgaW5pdGlhbDogYm9vbGVhbiB9PigpO1xyXG5cclxuICAvKipcclxuICAgKiBFdmVudG8gbGFuY2lhdG8gZGFsIGNsaWNrIGRpIHVuYSBzZXJpZSBkYWxsYSBMZWdlbmRhLCBhIHBhdHRvIGNoZSBsJ0lucHV0ICoqSGlkZVNlcmllc09uTGFiZWxDbGljayoqIHNpYSBpbXBvc3RhdG8gYSBmYWxzZVxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBvblNlcmllc0NsaWNrZWQ6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIEV2ZW50byBsYW5jaWF0byBhbGwnaW5pemlvIGRlbCBjYXJpY2FtZW50byBkaSB1bmEgbnVvdmEgcGFnaW5hIGRlbCBncmFmaWNvXHJcbiAgICovXHJcbiAgQE91dHB1dCgpIG9uTG9hZFN0YXJ0OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIEV2ZW50byBsYW5jaWF0byBhbCB0ZXJtaW5lIGRlbCBjYXJpY2FtZW50byBkaSB1bmEgbnVvdmEgcGFnaW5hIGRlbCBncmFmaWNvXHJcbiAgICovXHJcbiAgQE91dHB1dCgpIG9uTG9hZEVuZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICAvKipcclxuICAqIEV2ZW50byBsYW5jaWF0byBhbCB0ZXJtaW5lIGRlbGxhIGNyZWF6aW9uZSBkZWwgZ3JhZmljbyByZWZlcmVuemlhbmRvIGwnaXN0YW56YSBuYXRpdmEgZGVsIGdyYWZpY28gY3JlYXRvIGluIG1vZG8gZGEgcG90ZXIgZWZmZXR0dWFyZSBtb2RpZmljaGVcclxuICAqIHBvc3QgaW5pemlhbGl6emF6aW9uZSBsYXRvIGFwcGxpY2F0aXZvXHJcbiAgKi9cclxuICBAT3V0cHV0KCkgY2hhcnRMb2FkZWQ6IEV2ZW50RW1pdHRlcjxCYXNlQ2hhcnRDb21wb25lbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxCYXNlQ2hhcnRDb21wb25lbnQ+KCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlcnZlIGEgZGVjaWRlcmUgc2Ugc2Fyw6AgcHJlc2VudGUgbCdpbnRlcmZhY2NpYSBkaSBwYWdpbmF6aW9uZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBpc1BhZ2VkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBwcml2YXRlIGluaXREb25lOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIElzdGFuemEgbmF0aXZhIGRlbCBncmFmaWNvIGFtY2hhcnRzLiBRdWFsc2lhc2kgY29zYSBub24gZmEgcXVlc3RhIGxpYnJlcmlhIHNpIHB1w7IgcHJlbmRlcmUgcXVlc3RhIGlzdGFuemEgZSBtb2RpZmljYXJlIGEgcGlhY2ltZW50b1xyXG4gICAqL1xyXG4gIHB1YmxpYyBDaGFydDogYW00Y2hhcnRzLkNoYXJ0O1xyXG5cclxuICAvKipcclxuICAgKiBTZXJ2aXppbyBkaSBncmFmaWNhemlvbmUgZGVsIGdyYWZpY29cclxuICAgKi9cclxuICBwdWJsaWMgQ2hhcnRTZXJ2aWNlOiBJQmFzZVNlcnZpY2U8YW55PjtcclxuXHJcbiAgLyoqXHJcbiAgICogVmFyaWFiaWxlIGNoZSBpbmRpY2Egc2UgdW5hIG51b3ZhIHBhZ2luYSBkZWwgZ3JhZmljbyDDqCBpbiBmYXNlIGRpIGNhcmljYW1lbnRvXHJcbiAgICovXHJcbiAgcHVibGljIGxvYWRpbmdDaGFydDogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogRGF0aSBkZWwgZ3JhZmljby4gT2duaSBpbXBsZW1lbnRhemlvbmUgZ2VzdGlyw6AgcXVlc3RhIHZhcmlhYmlsZSBpbiBiYXNlIGFsIHByb3ByaW8gdGlwbyBkaSBEYXRpXHJcbiAgICovXHJcbiAgYWJzdHJhY3QgRGF0YTogYW55O1xyXG5cclxuICAvKipcclxuICAgKiBEYXRpIGRlbCBncmFmaWNvIGluIG1vZGFsaXTDoCBwYWdpbmF0YSwgcGVyIHF1YW5kbyB0dXR0ZSBsZSBwYWdpbmUgc29ubyBwcmVjYXJpY2F0ZSBpbiBtZW1vcmlhIChpbiBjYXNvIGNvbnRyYXJpbyB2ZXJyZWJiZXLDsiB1dGlsaXp6YXRpIGkgKipEYXRhRHRvcyoqKVxyXG4gICAqL1xyXG4gIGFic3RyYWN0IERhdGFBcnJheTogUGFnZWRDaGFydERhdGE8YW55PltdO1xyXG5cclxuICAvKipcclxuICAgKiBJbmRpY2EgbGUgcHJvcHJpZXTDoCBzcGVjaWZpY2EgcGVyIHVuYSBkYXRhIGltcGxlbWVudGF6aW9uZSBjaGUgZGV2b25vIGNhdXNhcmUgdW4gcmVwYWludCBkZWwgZ3JhZmljb1xyXG4gICAqL1xyXG4gIGFic3RyYWN0IGdldFNwZWNpZmljUHJvcGVydGllc1RvQ2hlY2soKTogc3RyaW5nW107XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBnZW5lcmljbyBkaSBncmFmaWNhemlvbmUsIHJlaW1wbGVtZW50YXRvIGRhbGxlIHZhcmllIGltcGxlbWVudGF6aW9uaVxyXG4gICAqL1xyXG4gIGFic3RyYWN0IGdyYXBoaWNhdGUoY2FzdGVkU2V0dGluZ3MpOiBJQmFzZVNlcnZpY2U8YW55PjtcclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIGdlbmVyaWNvIGNoZSBwcmVuZGUgbGUgaW1wb3N0YXppb25pIGdlbmVyaWNoZSBkZWwgZ3JhZmljbyBlIGxlIGNhc3RhIGFsbGEgdGlwb2xvZ2lhIGdpdXN0YSBwZXIgaWwgZ3JhZmljbyBzcGVjaWZpY29cclxuICAgKi9cclxuICBhYnN0cmFjdCBnZXRDYXN0ZWRTZXR0aW5ncygpOiBhbnk7XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBjaGUgXCJSaWVtcGllXCIgbGEgY2xhc3NlIGRlbGxlIGltcG9zdGF6aW9uaSBjb24gdHV0dGUgbGUgaW1wb3N0YXppb25pIHNwZWNpZmljaGUgcGFzc2F0ZSBhIHVuIGRhdG8gZ3JhZmljbyBjb21lIElucHV0XHJcbiAgICovXHJcbiAgYWJzdHJhY3QgZmlsbFNwZWNpZmljU2V0dGluZ3Moc2V0dGluZ3NDYXN0ZWQpOiB2b2lkO1xyXG5cclxuICAvKipcclxuICAgKiBDb3N0cnV0dG9yZVxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7RWxlbWVudFJlZn0gZWwgQ29udGVuaXRvcmUgYWxsJ2ludGVybm8gZGVsIGN1aSB2aWVuZSBjcmVhdG8gaWwgZ3JhZmljby4gVXRpbGl6emF0byBwZXIgZXN0cmFwb2xhcm5lIGxhICoqQ29udGFpbmVySGVpZ2h0KipcclxuICAgKiBAcGFyYW0ge09iamVjdH0gcGxhdGZvcm1JZCBwaWF0dGFmb3JtYSBBbmd1bGFyIChicm93c2VyLCBlY2MuLi4pIHBlciBlc3NlcmUgc2ljdXJpIGNoZSBhbWNoYXJ0cyB2ZW5nYSBhdHRpdmF0byBzb2xvIGxhdG8gYnJvd3Nlci4gTm9uIHV0aWxpenphbmRvIFNTUiBuZWxsZSBhcHBsaWNhemlvbmkgY2hlIGNvbnN1bWFubyBxdWVzdGEgbGlicmVyaWEgbm9uIMOoIHBhcnRpY29sYXJtZW50ZSBzaWduaWZpY2F0aXZvLCBtYSBub24gc2kgc2EgbWFpXHJcbiAgICogQHBhcmFtIHtOZ1pvbmV9IHpvbmUgTmdab25lIGRpIGRlZmF1bHQgcGVyIHBlcm1ldHRlcmUgZGkgaW5pemlhbGl6emFyZSBpbCBncmFmaWNvIGFsbCdpbmZ1b3JpIGRpIEFuZ3VsYXIgcGVyIGF2ZXJlIHF1YWxjaGUgcHJlc3RhemlvbmUgaW4gcGnDuVxyXG4gICAqIEBwYXJhbSB7Q2hhcnRMb2FkZXJ9IENoYXJ0ZXIgSXN0YW56YSBkZWwgTG9hZGVyIGNoZSBzaSBvY2N1cGVyw6AgZGkgY2FyaWNhcmUgaW4gbWVtb3JpYSB0dXR0byBjacOyIGNoZSBzZXJ2ZSBwZXIgaWwgZ3JhZmljbyBhdHR1YWxlICh0ZW1pLCBsb2NhbGUsIGFuaW1hemlvbmksIGVjYy4uLilcclxuICAgKiBAcGFyYW0ge0NoYXJ0RGlzcGF0Y2hlcn0gRGlzcGF0Y2hlciBJc3RhbnphIGRlbCBEaXNwYXRjaGVyIGNoZSBzaSBvY2N1cGEgZGkgZGlmZmVyaXJlIGlsIGNhcmljYW1lbnRvIGRlaSBncmFmaWNpIDEgZG9wbyBsJ2FsdHJvIGluIG1vZG8gY2hlIGNhcmljYW1lbnRpIHBzZXVkbyBwYXJhbGxlbGkgaW5jYXNpbmlubyB0dXR0b1xyXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gbG9ncyBJbmRpY2Egc2UgZWZmZXR0dWFyZSBsb2cgYSBjb25zb2xlIG8gbWVubywgaW5pZXR0YXRvIGRhbGxlIGNsYXNzaSBzcGVjaWFsaXp6YXRlIGRhbCB0b2tlbiBFU0NfTE9HU1xyXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gYW5pbWF0aW9ucyBJbmRpY2Egc2UgcGVyIHF1ZXN0byBncmFmaWNvIGRldm9ubyBlc3NlcmUgYXR0aXZlIG8gbWVubyBsZSBhbmltYXppb25pLiBJbXBvc3RhemlvbmUgZ2VuZXJpY2EgcHJlc2EgZGFsIHRva2VuIEVTQ19BTklNQVRJT05TXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGxvY2FsZSBJbmRpY2EgaWwgbG9jYWxlIHNwZWNpZmljbyBwZXIgcXVlc3RvIGdyYWZpY28uIEltcG9zdGF6aW9uZSBnZW5lcmljYSBwcmVzYSBkYWwgdG9rZW4gRVNDX0xPQ0FMRVxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0aGVtZSBJbmRpY2EgaWwgdGVtYSBzcGVjaWZpY28gcGVyIHF1ZXN0byBncmFmaWNvLiBJbXBvc3RhemlvbmUgZ2VuZXJpY2EgcHJlc2EgZGFsIHRva2VuIEVTQ19USEVNRVxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsIHByaXZhdGUgcGxhdGZvcm1JZDogT2JqZWN0LCBwcml2YXRlIHpvbmU6IE5nWm9uZSwgcHJpdmF0ZSBDaGFydGVyOiBDaGFydExvYWRlciwgcHJpdmF0ZSBEaXNwYXRjaGVyOiBDaGFydERpc3BhdGNoZXIsIHByaXZhdGUgbG9nczogYm9vbGVhbixcclxuICAgIHByaXZhdGUgYW5pbWF0aW9uczogYm9vbGVhbiwgcHJpdmF0ZSBsb2NhbGU6IHN0cmluZywgcHJpdmF0ZSB0aGVtZTogc3RyaW5nKSB7IH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIGRpIGluaXppYWxpenphemlvbmUgcG9zdCB2YWxvcml6emF6aW9uZSBkZWdsaSBpbnB1dCwgdXRpbGl6emF0byBwZXIgdmFsb3JpenphcmUgY29ycmV0dGFtZW50ZSBsZSBwcm9wcmlldMOgIGVzc2VuemlhbGkgZGVsIGdyYWZpY28gKEFuaW1hemlvbmksIFRlbWEgZSBMb2NhbGUpXHJcbiAgICogXHJcbiAgICogVmllbmUgZGF0YSBwcmlvcml0w6AgYWkgU2V0dGluZ3MgKEhUTUwpLCBwcmlvcml0w6Agc2Vjb25kYXJpYSBhZ2xpIElucHV0IGRpcmV0dGkgKExhdG8gSFRNTCksIHByaW9yaXTDoCB1bHRpbWEgYWxsZSBpbXBvc3RhemlvbmkgZ2xvYmFsaSxcclxuICAgKiBpbXBvc3RhdGUgaW4gZmFzZSBkaSBpbXBvcnQgZGVsIG1vZHVsbyBhc3NlZ25hbmRvIHZhbG9yaSBhaSB0b2tlbiBFU0NfTE9DQUxFLCBFU0NfQU5JTUFUSU9OUywgRVNDX1RIRU1FXHJcbiAgICovXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICAvLyBRdWkgc2Vydm9ubyBzb2xvIGxlIHZhcmlhYmlsaSBkYSBjb25vc2NlcmUgUFJFLWdyYWZpY2F6aW9uZSBwZXIgaWwgY2FyaWNhbWVudG8gZGVpIG1vZHVsaSBsYXp5IGRlbCBncmFmaWNvXHJcblxyXG4gICAgdGhpcy5BbmltYXRpb25zID0gdGhpcy5TZXR0aW5ncz8uQW5pbWF0aW9ucyAhPSBudWxsID8gdGhpcy5TZXR0aW5ncz8uQW5pbWF0aW9ucyA6ICh0aGlzLkFuaW1hdGlvbnMgIT0gbnVsbCA/IHRoaXMuQW5pbWF0aW9ucyA6IHRoaXMuYW5pbWF0aW9ucylcclxuICAgIHRoaXMuVGhlbWUgPSB0aGlzLlNldHRpbmdzPy5UaGVtZSAhPSBudWxsID8gdGhpcy5TZXR0aW5ncz8uVGhlbWUgOiAodGhpcy5UaGVtZSAhPSBudWxsID8gdGhpcy5UaGVtZSA6IDxhbnk+dGhpcy50aGVtZSlcclxuICAgIHRoaXMuTG9jYWxlID0gdGhpcy5TZXR0aW5ncz8uTG9jYWxlICE9IG51bGwgPyB0aGlzLlNldHRpbmdzPy5Mb2NhbGUgOiAodGhpcy5Mb2NhbGUgIT0gbnVsbCA/IHRoaXMuTG9jYWxlIDogdGhpcy5sb2NhbGUpXHJcblxyXG4gICAgdGhpcy5pc1BhZ2VkID0gKHRoaXMuRGF0YUFycmF5ICYmIHRoaXMuRGF0YUFycmF5Lmxlbmd0aCA+IDAgJiYgIXRoaXMuRGF0YSkgfHwgKHRoaXMuRGF0YUR0b3MgJiYgdGhpcy5EYXRhRHRvcy5sZW5ndGggPiAwICYmICEhdGhpcy5EYXRhUmV0cmlldmUpO1xyXG4gICAgdGhpcy5sb2coXCJDaGFydCBcIiArIHRoaXMubmFtZSArIFwiOiBuZ09uSW5pdFwiKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEltcGxlbWVudGF6aW9uZSB1dGlsaXp6YXRhIHBlciBjb250cm9sbGFyZSBldmVudHVhbGkgcHJvcHJpZXTDoCBjaGlhdmUgZGVsIGdyYWZpY28gZSByaWdyYWZpY2FyZSB0dXR0byBxdWFsb3JhIHNpIHJpdmVsYXNzZSBuZWNlc3NhcmlvXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtTaW1wbGVDaGFuZ2VzfSBjaGFuZ2VzIEluZGljYXppb25lIGRlaSBjYW1iaWFtZW50aSBzdWxsZSBwcm9wcmlldMOgIGRlbCBncmFmaWNvLiBWZWRlcmUgZG9jdW1lbnRhemlvbmUgQW5ndWxhciBpbiBtZXJpdG9cclxuICAgKi9cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBpZiAoIXRoaXMuaW5pdERvbmUpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmxvZyhcIkNoYXJ0IFwiICsgdGhpcy5uYW1lICsgXCI6IG5nT25DaGFuZ2VzXCIpO1xyXG5cclxuICAgIGxldCBwcm9wc1RvQ2hlY2sgPSBbXCJUaW1lbGluZVwiLCBcIkxlZ2VuZFwiLCBcIlNldHRpbmdzXCIsIFwiQW5pbWF0aW9uc1wiLCBcIlRoZW1lXCIsIFwiTG9jYWxlXCIsIC4uLnRoaXMuZ2V0U3BlY2lmaWNQcm9wZXJ0aWVzVG9DaGVjaygpXTtcclxuICAgIHRoaXMuY2hlY2tQcm9wZXJ0aWVzQW5kUmVncmFwaGljYXRlQXNOZWVkZWQoY2hhbmdlcywgcHJvcHNUb0NoZWNrKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE5lbCBwb3N0IGluaXppYWxpenphemlvbmUsIGEgcGF0dG8gY2hlIG1pIHRyb3ZpIGluIGFtYmllbnRlIFwiYnJvd3NlclwiLCBwcm9zZWd1byBhbCBjYXJpY2FtZW50byBkZWwgZ3JhZmljbyBzdWxsJ0hUTUxcclxuICAgKi9cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICBpZiAoIXRoaXMubmFtZSlcclxuICAgICAgdGhyb3cgXCJhIFVuaXF1ZSBuYW1lIGlzIG1hbmRhdG9yeSB0byBjcmVhdGUgYSBjaGFydFwiO1xyXG5cclxuICAgIHRoaXMubG9nKFwiQ2hhcnQgXCIgKyB0aGlzLm5hbWUgKyBcIjogbmdBZnRlclZpZXdJbml0LCBncmFwaGljYXRpbmcgY2hhcnQgb3V0c2lkZSBBbmd1bGFyXCIpO1xyXG5cclxuICAgIGlmICghdGhpcy5pc1BhZ2VkKVxyXG4gICAgICB0aGlzLmRpc3BhdGNoTG9hZENoYXJ0KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBbGwnb25EZXN0cm95IHNjYXJpY28gaWwgZ3JhZmljbyBwZXIgbGliZXJhcmUgbWVtb3JpYVxyXG4gICAqL1xyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgaWYgKHRoaXMuQ2hhcnQpIHtcclxuICAgICAgdGhpcy5sb2coXCJDaGFydCBcIiArIHRoaXMubmFtZSArIFwiOiBVbmxvYWRpbmcgZGVzdHJveWVkIGNoYXJ0XCIpO1xyXG4gICAgICB0aGlzLmJyb3dzZXJPbmx5KCgpID0+IHsgdGhpcy5DaGFydC5kaXNwb3NlKCk7IHRoaXMuRGlzcGF0Y2hlci5kZXJlZ2lzdGVyR3JhcGgodGhpcy5uYW1lKSB9KTtcclxuICAgIH1cclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5sb2coXCJDaGFydCBcIiArIHRoaXMubmFtZSArIFwiOiBVbmxvYWRpbmcgdW5jcmVhdGVkIGNoYXJ0IGNvbXBvbmVudC4gSXQgcHJvYmFibHkgd2FzIGEgZHVwbGljYXRlZFwiKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlZ2lzdHJhIGlsIGdyYWZpY28gYXR0dWFsZSBuZWwgRGlzcGF0Y2hlciBpbiBtb2RvIGNoZSB2ZW5nYSBjYXJpY2F0byBhcHBlbmEgcG9zc2liaWxlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBkaXNwYXRjaExvYWRDaGFydCgpOiB2b2lkIHtcclxuICAgIHRoaXMuYnJvd3Nlck9ubHkoKCkgPT4ge1xyXG4gICAgICB0aGlzLkRpc3BhdGNoZXIucmVnaXN0ZXIodGhpcy5uYW1lLCAoKSA9PiB7IHJldHVybiB0aGlzLmxvYWRDaGFydCgpOyB9KTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJbCBjYXJpY2FtZW50byBkZWwgZ3JhZmljbyBmdW56aW9uYSBuZWwgc2VndWVudGUgbW9kbzpcclxuICAgKiBcclxuICAgKiAxKSBDYXJpY2FtZW50byBkZWwgdGVtYSBlIGRlbGxlIGFuaW1hemlvbmksIHF1YWxvcmEgbmVjZXNzYXJpXHJcbiAgICogXHJcbiAgICogMikgQ2FyaWNhbWVudG8gZGVsbGUgaW1wb3N0YXppb25pIHNwZWNpZmljaGUgZSBpbnRlZ3JhemlvbmUgY29uIGxlIGltcG9zdGF6aW9uaSBnZW5lcmljaGVcclxuICAgKiBcclxuICAgKiAzKSBHcmFmaWNhemlvbmVcclxuICAgKiBcclxuICAgKiA0KSBDYXJpY2FtZW50byBkZWwgbG9jYWxlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBsb2FkQ2hhcnQoKSB7XHJcbiAgICB0aGlzLmxvZyhcIkNoYXJ0IFwiICsgdGhpcy5uYW1lICsgXCI6IFN0YXJ0IGxvYWRpbmcgTW9kdWxlcyBpZiBuZWVkZWRcIik7XHJcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoW1xyXG4gICAgICB0aGlzLnNldHVwQW1DaGFydHNUaGVtZXMoKS50aGVuKCgpID0+IHtcclxuICAgICAgICB0aGlzLmxvZyhcIkNoYXJ0IFwiICsgdGhpcy5uYW1lICsgXCI6IEdyYXBoaWNhdGluZyBhZnRlciBtb2R1bGVzIGxvYWRcIik7XHJcblxyXG4gICAgICAgIHZhciBjYXN0ZWRTZXR0aW5ncyA9IHRoaXMuZ2V0Q2FzdGVkU2V0dGluZ3MoKTtcclxuICAgICAgICB0aGlzLmZpbGxTZXR0aW5ncyhjYXN0ZWRTZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5maWxsU3BlY2lmaWNTZXR0aW5ncyhjYXN0ZWRTZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5DaGFydFNlcnZpY2UgPSB0aGlzLmdyYXBoaWNhdGUoY2FzdGVkU2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMuQ2hhcnQgPSB0aGlzLkNoYXJ0U2VydmljZS5DaGFydEluc3RhbmNlO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuQ2hhcnQpIHRoaXMubG9nKFwiQ2hhcnQgXCIgKyB0aGlzLm5hbWUgKyBcIjogQ291bGQgbm90IGNyZWF0ZSBncmFwaFwiKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuQ2hhcnRlci5hcHBseUxvY2FsZSh0aGlzLkNoYXJ0LCB0aGlzLkxvY2FsZSkudGhlbigoKSA9PiB7IHRoaXMuaW5pdERvbmUgPSB0cnVlOyB0aGlzLmNoYXJ0TG9hZGVkLmVtaXQodGhpcykgfSk7XHJcbiAgICAgIH0pXHJcbiAgICBdKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJpZW1waW1lbnRvIGRlbGxlIGltcG9zdGF6aW9uaSBuZWxsYSBjbGFzc2UgU2V0dGluZ3MuIFNpIGRhbm5vIHByaW9yaXTDoCBhaSB2YWxvcmkgZ2nDoCBpbXBvc3RhdGkgbmVpIFNldHRpbmdzLCBcclxuICAgKiBpbnRlZ3JhbmRvIGV2ZW50dWFsbWVudGUgY29uIGxlICBwcm9wcmlldMOgIGRlbCBncmFmaWNvXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtCYXNlU2V0dGluZ3N9IHNldHRpbmdzIEltcG9zdGF6aW9uaSBiYXNlIHJpY2V2dXRlIGRhbGxhIHNwZWNpYWxpenphemlvbmUgZGVsIGdyYWZpY29cclxuICAgKi9cclxuICBwcml2YXRlIGZpbGxTZXR0aW5ncyhzZXR0aW5nczogQmFzZVNldHRpbmdzKSB7XHJcblxyXG4gICAgLy8gTWVyZ2UgZGVnbGkgSW5wdXQgY29uIGkgU2V0dGluZ3MsIGRhbmRvIHByaW9yaXTDoCBhaSBTZXR0aW5nc1xyXG5cclxuICAgIHNldHRpbmdzLlRoZW1lID0gc2V0dGluZ3MuVGhlbWUgPyBzZXR0aW5ncy5UaGVtZSA6IHRoaXMuVGhlbWU7XHJcbiAgICBzZXR0aW5ncy5Mb2NhbGUgPSBzZXR0aW5ncy5Mb2NhbGUgPyBzZXR0aW5ncy5Mb2NhbGUgOiB0aGlzLkxvY2FsZTtcclxuICAgIHNldHRpbmdzLkFuaW1hdGlvbnMgPSBzZXR0aW5ncy5BbmltYXRpb25zICE9IG51bGwgPyBzZXR0aW5ncy5BbmltYXRpb25zIDogdGhpcy5BbmltYXRpb25zO1xyXG5cclxuICAgIHNldHRpbmdzLkxlZ2VuZCA9IHNldHRpbmdzLkxlZ2VuZCAhPSBudWxsID8gc2V0dGluZ3MuTGVnZW5kIDogdGhpcy5MZWdlbmQ7XHJcbiAgICBzZXR0aW5ncy5OYW1lID0gc2V0dGluZ3MuTmFtZSA/IHNldHRpbmdzLk5hbWUgOiB0aGlzLm5hbWU7XHJcbiAgICBzZXR0aW5ncy5UaW1lbGluZSA9IHNldHRpbmdzLlRpbWVsaW5lICE9IG51bGwgPyBzZXR0aW5ncy5UaW1lbGluZSA6IHRoaXMuVGltZWxpbmU7XHJcbiAgICBzZXR0aW5ncy5BZGFwdExhYmVsU2l6ZUFuZE9yaWVudGF0aW9uID0gc2V0dGluZ3MuQWRhcHRMYWJlbFNpemVBbmRPcmllbnRhdGlvbiAhPSBudWxsID8gc2V0dGluZ3MuQWRhcHRMYWJlbFNpemVBbmRPcmllbnRhdGlvbiA6IHRoaXMuQWRhcHRMYWJlbFNpemVBbmRPcmllbnRhdGlvbjtcclxuICAgIHNldHRpbmdzLlhBeGlzVGl0bGUgPSBzZXR0aW5ncy5YQXhpc1RpdGxlID8gc2V0dGluZ3MuWEF4aXNUaXRsZSA6IHRoaXMuWFRpdGxlO1xyXG4gICAgc2V0dGluZ3MuWUF4aXNUaXRsZSA9IHNldHRpbmdzLllBeGlzVGl0bGUgPyBzZXR0aW5ncy5ZQXhpc1RpdGxlIDogdGhpcy5ZVGl0bGU7XHJcbiAgICBzZXR0aW5ncy5MZWdlbmRQb3NpdGlvbiA9IHNldHRpbmdzLkxlZ2VuZFBvc2l0aW9uID8gc2V0dGluZ3MuTGVnZW5kUG9zaXRpb24gOiB0aGlzLkxlZ2VuZFBvc2l0aW9uO1xyXG4gICAgc2V0dGluZ3MuSGlkZVNlcmllc09uTGFiZWxDbGljayA9IHNldHRpbmdzLkhpZGVTZXJpZXNPbkxhYmVsQ2xpY2sgIT0gbnVsbCA/IHNldHRpbmdzLkhpZGVTZXJpZXNPbkxhYmVsQ2xpY2sgOiB0aGlzLkhpZGVTZXJpZXNPbkxhYmVsQ2xpY2s7XHJcbiAgICBzZXR0aW5ncy5NaW5HcmlkRGlzdGFuY2UgPSBzZXR0aW5ncy5NaW5HcmlkRGlzdGFuY2UgIT0gbnVsbCA/IHNldHRpbmdzLk1pbkdyaWREaXN0YW5jZSA6IHRoaXMuTWluR3JpZERpc3RhbmNlO1xyXG4gICAgc2V0dGluZ3MuTGVnZW5kUGFkZGluZyA9IHNldHRpbmdzLkxlZ2VuZFBhZGRpbmcgPyBzZXR0aW5ncy5MZWdlbmRQYWRkaW5nIDogdGhpcy5MZWdlbmRQYWRkaW5nID8/IG51bGw7XHJcblxyXG4gICAgKDxhbnk+c2V0dGluZ3MpLkNvbnRhaW5lckhlaWdodCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50Lm9mZnNldEhlaWdodDtcclxuICAgICg8YW55PnNldHRpbmdzKS5PblNlcmllc0NsaWNrQ2FsbGJhY2sgPSAoc2VyaWVzKSA9PiB7IHRoaXMub25TZXJpZXNDbGlja2VkLmVtaXQoc2VyaWVzKTsgfTtcclxuICAgICg8YW55PnNldHRpbmdzKS5PblNlbGVjdGlvbkNoYW5nZWRDYWxsYmFjayA9IChldmVudDogeyBmcm9tOiBEYXRlLCB0bzogRGF0ZSwgaW5pdGlhbDogYm9vbGVhbiB9KSA9PiB7IHRoaXMub25TZWxlY3Rpb25DaGFuZ2VkLmVtaXQoeyBmcm9tOiBldmVudC5mcm9tLCB0bzogZXZlbnQudG8sIGluaXRpYWw6IGV2ZW50LmluaXRpYWwgfSk7IH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDb250cm9sbGEgaSBjYW1iaWFtZW50aSBhdnZlbnV0aSBhbGxlIHByb3ByaWV0w6AgY2hpYXZlIGUgcmllZmZldHR1YSBsYSBncmFmaWNhemlvbmUgcXVhbG9yYSBuZWNlc3NhcmlvXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtTaW1wbGVDaGFuZ2VzfSBjaGFuZ2VzIEluZGljYXppb25lIGRlbGxhIG1vZGlmaWNoZSBhdnZlbnV0ZSBuZWkgdmFyaSBJbnB1dFxyXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IHByb3BzVG9DaGVjayBMaXN0YSBkZWdsaSBJbnB1dCBkYSBjb250cm9sbGFyZSBwZXIgY3VpIHVuYSBtb2RpZmljYSBjYXVzYSB1bmEgcmlncmFmaWNhemlvbmVcclxuICAgKi9cclxuICBwcml2YXRlIGNoZWNrUHJvcGVydGllc0FuZFJlZ3JhcGhpY2F0ZUFzTmVlZGVkKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMsIHByb3BzVG9DaGVjazogc3RyaW5nW10pIHtcclxuICAgIGxldCB0b1JlR3JhcGhpY2F0ZSA9IGZhbHNlO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcm9wc1RvQ2hlY2subGVuZ3RoOyBpKyspXHJcbiAgICAgIHRvUmVHcmFwaGljYXRlID0gdG9SZUdyYXBoaWNhdGUgfHwgKGNoYW5nZXNbcHJvcHNUb0NoZWNrW2ldXSAmJiBjaGFuZ2VzW3Byb3BzVG9DaGVja1tpXV0uY3VycmVudFZhbHVlKVxyXG5cclxuICAgIGlmICh0b1JlR3JhcGhpY2F0ZSlcclxuICAgICAgdGhpcy5yZWxvYWRDaGFydCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRnVuemlvbmUgY2hlIGVmZmV0dHVhIHVuIGNhbWJpbyBkaSBwYWdpbmEgcGVyIGkgZ3JhZmljaSBwYWdpbmF0aS4gUXVhbG9yYSAqKmRhdGEqKiBmb3NzZSBudWxsbyBzaWduaWZpY2EgY2hlIMOoIGluaXppYXRvIHVuIGNhcmljYW1lbnRvIFxyXG4gICAqIGUgYW5jaGUgbGF0byBhcHBsaWNhdGl2byBpbCBEYXRhUmV0cmlldmUgZG92csOgIGNvbnNpZGVyYXJlIGNoZSBsJ2Fzc2VuemEgZGkgdmFsb3JpIG5vbiDDqCBhbHRybyBjaGUgdW4naW5kaWNhemlvbmUgZGkgaW5pemlvIGNhcmljYW1lbnRvXHJcbiAgICogXHJcbiAgICogSWwgY2FyaWNhbWVudG8gZGkgcXVhbHNpYXNpIHBhZ2luYSBnZW5lcmVyw6AgY29tdW5xdWUgdW5hIHByaW1vIGV2ZW50byBjb24gKipkYXRhKiogbnVsbG8gaW4gbW9kbyBkYSBpbmRpY2FyZSBsJ2luaXppbyBjYXJpY2FtZW50byBlXHJcbiAgICogaW4gc2Vjb25kYSBpc3RhbnphIHVuIGFsdHJvIGV2ZW50byBpbiBjdWkgKipkYXRhKiogc2Fyw6Agc2VtcHJlIHZhbG9yaXp6YXRvLCBvIGNvbiBpbCBEdG8gZGEgdXNhcmUgcGVyIHJlY3VwZXJhcmUgaSBkYXRpLCBvIGNvbiBpIGRhdGlcclxuICAgKiB2ZXJpIGUgcHJvcHJpIGdpw6AgcHJlc2VudGkgbmVsICoqRGF0YUFycmF5KipcclxuICAgKiBcclxuICAgKiBJIGNhbGxiYWNrICoqb25Mb2FkU3RhcnQqKiBlICoqb25Mb2FkRW5kKiogdmVuZ29ubyBzZW1wcmUgY2hpYW1hdGlcclxuICAgKiBcclxuICAgKiBAcGFyYW0ge3sgZGF0YTogTGluZUNoYXJ0RGF0YSB8IFBpZUNoYXJ0RGF0YSB8IFZlcnRpY2FsMkRDaGFydERhdGEgfCBWZXJ0aWNhbENoYXJ0RGF0YSB8IGFueSwgaW5kZXg6IG51bWJlciB9fSBuZCBJbmRpY2UgZGVsIGNhcmljYW1lbnRvIGRhdGksIGNvbiBldmVudHVhbG1lbnRlIGdpw6AgaSBkYXRpIHNlIGRpc3BvbmliaWxpXHJcbiAgICovXHJcbiAgcHVibGljIGNoYW5nZVBhZ2UobmQ6IHsgZGF0YTogTGluZUNoYXJ0RGF0YSB8IFBpZUNoYXJ0RGF0YSB8IFZlcnRpY2FsMkRDaGFydERhdGEgfCBWZXJ0aWNhbENoYXJ0RGF0YSB8IGFueSwgaW5kZXg6IG51bWJlciB9KSB7XHJcbiAgICBpZiAoIW5kLmRhdGEpIHtcclxuICAgICAgdGhpcy5sb2FkaW5nQ2hhcnQgPSB0cnVlO1xyXG4gICAgICAvLyBTZXJ2ZSBwZXIgaW5mb3JtYXJlIGwnYXBwbGljYXRpdm8gaW4gbGlzdGVuaW5nIHN1bGwnaW5kaWNlIGF0dHVhbG1lbnRlIGluIHZpc3VhbGl6emF6aW9uZS4gXHJcbiAgICAgIC8vIExhIG1hbmNhbnphIGRpIGRhdGkgaW5kaWNhIGNoZSBub24gZGV2b25vIGVzc2VyZSBlZmZldHR1YXRlIHJpY2VyY2hlIHBlciBvcmFcclxuICAgICAgaWYgKHRoaXMuRGF0YVJldHJpZXZlKVxyXG4gICAgICAgIHRoaXMuRGF0YVJldHJpZXZlKG51bGwsIG5kLmluZGV4KVxyXG4gICAgICB0aGlzLm9uTG9hZFN0YXJ0LmVtaXQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLkRhdGFSZXRyaWV2ZSlcclxuICAgICAgdGhpcy5EYXRhUmV0cmlldmUobmQuZGF0YSwgbmQuaW5kZXgpLnRoZW4odCA9PiB7IHRoaXMuY2hhbmdlUGFnZURhdGFSZWNlaXZlZCh0KTsgfSk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMuY2hhbmdlUGFnZURhdGFSZWNlaXZlZChuZC5kYXRhKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFsIHRlcm1pbmUgZGVsIGNhcmljYW1lbnRvIGRlaSBkYXRpIGRpIHVuYSBwYWdpbmEgcXVlc3RvIG1ldG9kbyB2aWVuZSBjaGlhbWF0byBwZXIgcmlncmFmaWNhcmUgbGEgc2l0dWF6aW9uZSBjb24gaSBudW92aSBkYXRpXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtMaW5lQ2hhcnREYXRhIHwgUGllQ2hhcnREYXRhIHwgVmVydGljYWwyRENoYXJ0RGF0YSB8IFZlcnRpY2FsQ2hhcnREYXRhIHwgYW55fSBkYXRhIERhdGkgZGVsIGdyYWZpY29cclxuICAgKi9cclxuICBwcml2YXRlIGNoYW5nZVBhZ2VEYXRhUmVjZWl2ZWQoZGF0YTogTGluZUNoYXJ0RGF0YSB8IFBpZUNoYXJ0RGF0YSB8IFZlcnRpY2FsMkRDaGFydERhdGEgfCBWZXJ0aWNhbENoYXJ0RGF0YSB8IGFueSkge1xyXG4gICAgdGhpcy5sb2FkaW5nQ2hhcnQgPSBmYWxzZTtcclxuICAgIHRoaXMub25Mb2FkRW5kLmVtaXQoKTtcclxuICAgIGxldCBmaXJzdEJpbmQgPSAhdGhpcy5EYXRhO1xyXG4gICAgdGhpcy5EYXRhID0gZGF0YTtcclxuXHJcbiAgICBpZiAoIWZpcnN0QmluZClcclxuICAgICAgdGhpcy5yZWxvYWRDaGFydCgpO1xyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLmRpc3BhdGNoTG9hZENoYXJ0KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSaWNhcmljYSBpbCBncmFmaWNvIGRpc3RydWdnZW5kbyBpbCB2ZWNjaGlvIGUgcmljcmVhbmRvIGlsIG51b3ZvXHJcbiAgICogXHJcbiAgICogTGUgY2hpYW1hdGUgYSBxdWVzdG8gbWV0b2RvIHBvc3Nvbm8gZXNzZXJlIHRyYXNmb3JtYXRlIGluIGNoaWFtYXRlIGFsIG1ldG9kbyAqKmdyYXBoaWNhdGUqKiBkZWxsYSBTZXJ2aWNlLCBzZSBzb2xvIHF1ZWwgbWV0b2RvIGZvc3NlIGFiYmFzdGFuemEgaW50ZWxsaWdlbnRlIHBlciBjYXBpcmVcclxuICAgKiBsZSBkaWZmZXJlbnplIGZyYSBpbCBncmFmaWNvIGNvbSdlcmEgcHJpbWEgZSBjb21lIGRldmUgZGl2ZW50YXJlLCBpbiBtb2RvIGRhIG5vbiByaWNyZWFybG8gbWEgc2VtcGxpY2VtZW50ZSBtb2RpZmljYXJlIHF1ZWxsbyBjaGUgZ2nDoCDDqCBkaXNlZ25hdG9cclxuICAgKi9cclxuICBwcml2YXRlIHJlbG9hZENoYXJ0KCkge1xyXG4gICAgdGhpcy5icm93c2VyT25seSgoKSA9PiB7IGlmICghdGhpcy5DaGFydC5pc0Rpc3Bvc2VkKCkpIHRoaXMuQ2hhcnQuZGlzcG9zZSgpOyB0aGlzLkRpc3BhdGNoZXIuZGVyZWdpc3RlckdyYXBoKHRoaXMubmFtZSkgfSk7XHJcbiAgICB0aGlzLkRpc3BhdGNoZXIucmVnaXN0ZXIodGhpcy5uYW1lLCAoKSA9PiB7IHJldHVybiB0aGlzLmxvYWRDaGFydCgpOyB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFBlcm1ldHRlIGRpIGFnZ2l1bmdlcmUgdW4gYmxvY2NvIGRpIGRhdGkgaW4gbWFuaWVyYSBcImxpdmVcIiBhZCB1biBncmFmaWNvXHJcbiAgICovXHJcbiAgcHVibGljIGFkZERhdGEoY2hhcnREYXRhOiBhbnkpIHtcclxuICAgIHRoaXMuQ2hhcnRTZXJ2aWNlLnJlZnJlc2hEYXRhKGNoYXJ0RGF0YSk7XHJcbiAgfTtcclxuXHJcbiAgLyoqXHJcbiAgICogRnVuemlvbmUgY2hlIHNpIG9jY3VwYSBkaSBjYXJpY2FyZSBpIHRlbWkgbmVjZXNzYXJpIHBlciBpbCBncmFmaWNvIGluIG9nZ2V0dG8uIFByaW1hIGFwcGxpY2EgaWwgdGVtYSwgcG9pLCBzZSBzZXJ2ZSwgYXBwbGljYSBsZSBhbmltYXppb25pXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzZXR1cEFtQ2hhcnRzVGhlbWVzKCkge1xyXG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFtcclxuICAgICAgdGhpcy5DaGFydGVyLmFwcGx5VGhlbWUoYW00Y29yZSwgdGhpcy5UaGVtZSkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuQW5pbWF0aW9ucyA/IHRoaXMuQ2hhcnRlci5hcHBseUFuaW1hdGlvbnMoYW00Y29yZSkgOiB0aGlzLkNoYXJ0ZXIudW5hcHBseUFuaW1hdGlvbnMoYW00Y29yZSk7XHJcbiAgICAgIH0pXHJcbiAgICBdKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBwcml2YXRlIGxvZyhsb2c6IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMubG9ncylcclxuICAgICAgY29uc29sZS5sb2coXCJAZXNmYWVuemEvZXMtY2hhcnRzOiBcIiArIGxvZyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgYnJvd3Nlck9ubHkoZjogKCkgPT4gdm9pZCkge1xyXG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcclxuICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcclxuICAgICAgICBmKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxufSJdfQ==
|
|
@@ -86,4 +86,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
|
|
|
86
86
|
type: ContentChild,
|
|
87
87
|
args: ['header_inner', { static: false }]
|
|
88
88
|
}] } });
|
|
89
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtcGFnZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXMtY2hhcnRzL3NyYy9saWIvY29tcG9uZW50cy9jaGFydC1wYWdlci9jaGFydC1wYWdlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcy1jaGFydHMvc3JjL2xpYi9jb21wb25lbnRzL2NoYXJ0LXBhZ2VyL2NoYXJ0LXBhZ2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSx1QkFBdUIsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFHOUc7O0dBRUc7QUFPSCxNQUFNLE9BQU8saUJBQWlCO0lBTjlCO1FBOEJJOzs7O1dBSUc7UUFDTyxpQkFBWSxHQUErQyxJQUFJLFlBQVksRUFBZ0MsQ0FBQztLQStFekg7SUEzREc7O09BRUc7SUFDSCxXQUFXO1FBQ1AsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQztZQUNuRSxNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUM7UUFFcEQsSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssZ0JBQWdCO1FBQ3BCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztRQUN6QyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUM5RyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRDs7T0FFRztJQUNJLElBQUk7UUFDUCw2Q0FBNkM7UUFDN0MsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXBFLG1EQUFtRDtRQUNuRCx3R0FBd0c7UUFDeEcsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUM7Z0JBQ3pDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDOztnQkFFeEIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzVCLENBQUMsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsUUFBUTtRQUNKLDZDQUE2QztRQUM3QyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFcEUsbURBQW1EO1FBQ25ELDBHQUEwRztRQUMxRyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxXQUFXO2dCQUNyQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQzs7Z0JBRXhCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUM1QixDQUFDLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzNCLENBQUM7OzhHQTNHUSxpQkFBaUI7a0dBQWpCLGlCQUFpQixtVUNaOUIsaWlFQXlCTTsyRkRiTyxpQkFBaUI7a0JBTjdCLFNBQVM7K0JBQ0ksYUFBYSxtQkFHTix1QkFBdUIsQ0FBQyxNQUFNOzhCQU90QyxLQUFLO3NCQUFiLEtBQUs7Z0JBS0csSUFBSTtzQkFBWixLQUFLO2dCQU9HLGFBQWE7c0JBQXJCLEtBQUs7Z0JBS0csVUFBVTtzQkFBbEIsS0FBSztnQkFPSSxZQUFZO3NCQUFyQixNQUFNO2dCQUswQyxjQUFjO3NCQUE5RCxZQUFZO3VCQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIsIENvbXBvbmVudCwgSW5wdXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBPdXRwdXQsIENvbnRlbnRDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBQYWdlZENoYXJ0RGF0YSB9IGZyb20gJy4uLy4uL21vZGVscy9kYXRhJztcclxuXHJcbi8qKlxyXG4gKiBDb21wb25lbnRlIGNoZSBzaSBvY2N1cGEgZGVsbGEgcGFnaW5hemlvbmUgZGVpIGdyYWZpY2kgcXVhbG9yYSBzZXJ2aXNzZVxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJjaGFydC1wYWdlclwiLFxyXG4gICAgdGVtcGxhdGVVcmw6IFwiY2hhcnQtcGFnZXIuY29tcG9uZW50Lmh0bWxcIixcclxuICAgIHN0eWxlVXJsczogWydjaGFydC1wYWdlci5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIFBhZ2VDaGFydFNlbGVjdG9yIHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIExpc3RhIGRlaSBkYXRpIHByZWNhcmljYXRhIGluIG1lbW9yaWFcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgSXRlbXM6IFBhZ2VkQ2hhcnREYXRhPGFueT5bXTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIExpc3RhIGRlaSBEdG8gZGEgdXRpbGl6emFyZSBwZXIgY2FyaWNhcmUgaSB2YWxvcmkgZGVpIHZhcmkgZ3JhZmljaVxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBEdG9zOiBhbnlbXTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIERvcG8gYXZlciBuYXZpZ2F0byBhIHVuIG51b3ZvIGdyYWZpY28gdmVycmFubm8gYXR0ZXNpIHF1ZXN0aSBtaWxsaXNlY29uZGkgcHJpbWEgZGkgcmljaGllZGVyZSBpIGRhdGkgYXR0cmF2ZXJzbyBsYSAqKkRhdGFSZXRyaWV2ZSoqLlxyXG4gICAgICogXHJcbiAgICAgKiBRdWVzdG8gcGVyIGV2aXRhcmUgY2hlIGwndXRlbnRlIGNsaWNjYW5kbyB2ZWxvY2VtZW50ZSBcImF2YW50aVwiIGdlbmVyaSB0b25uZWxsYXRlIGRpIHJpY2hpZXN0ZSBpbnV0aWxpXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIEJyb3dzZURlbGF5TXM7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2UgZGVsbCdhcnJheSAqKkR0b3MqKiBvIGRlbGwnYXJyYXkgKipJdGVtcyoqIGRhIGN1aSBpbml6aWFyZSBhZCBlbWV0dGVyZSBpIHZhbG9yaSwgdXRpbGUgcGVyIHN1cHBvcnRhcmUgaWwgXCJiYWNrXCIgZGEgdW4gZXZlbnR1YWxlIHBhZ2luYSBkaSBkZXR0YWdsaW9cclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgU3RhcnRJbmRleDogbnVtYmVyO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5kaWNhIHVuIGNhbWJpbyBkaSBwYWdpbmEgZWQgZW1ldHRlIHVuIG9nZ2V0dG8gY29uIGkgZGF0aSBhdHR1YWxpIGUgbCdpbmRpY2UgYXR0dWFsZS5cclxuICAgICAqIFxyXG4gICAgICogUXVhbG9yYSBsYSBwcm9wcmlldMOgICoqZGF0YSoqIGZvc3NlIG51bGwgaW5kaWNhIHVuIGV2ZW50byBkaSBcImxvYWRpbmdcIlxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KCkgb25QYWdlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8eyBkYXRhOiBhbnksIGluZGV4OiBudW1iZXIgfT4gPSBuZXcgRXZlbnRFbWl0dGVyPHsgZGF0YTogYW55LCBpbmRleDogbnVtYmVyIH0+KCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBPdmVycmlkZSBkZWwgdGl0b2xvIGRpIGRlZmF1bHRcclxuICAgICAqL1xyXG4gICAgQENvbnRlbnRDaGlsZCgnaGVhZGVyX2lubmVyJywgeyBzdGF0aWM6IGZhbHNlIH0pIGhlYWRlcklubmVyX3RyO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGlnbm9yZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY3VycmVudHBhZ2U6IG51bWJlcjtcclxuICAgIC8qKlxyXG4gICAgICogQGlnbm9yZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGN1cnJlbnRpbmRleDogbnVtYmVyO1xyXG4gICAgLyoqXHJcbiAgICAgKiBAaWdub3JlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZmluYWxJbmRleDogbnVtYmVyO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGlnbm9yZVxyXG4gICAgICovXHJcbiAgICBuZ09uQ2hhbmdlcygpIHtcclxuICAgICAgICBpZiAoISh0aGlzLkl0ZW1zIHx8IHRoaXMuRHRvcykgfHwgKHRoaXMuSXRlbXMgfHwgdGhpcy5EdG9zKS5sZW5ndGggPT0gMClcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2hhcnQgYXJyYXkgY2Fubm90IGJlIGVtcHR5IVwiKTtcclxuXHJcbiAgICAgICAgdmFyIGlkeCA9ICh0aGlzLlN0YXJ0SW5kZXggfHwgMCk7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50aW5kZXggPSBpZHg7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50cGFnZSA9IGlkeCArIDE7XHJcbiAgICAgICAgdGhpcy5oYW5kbGVQYWdlQ2hhbmdlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXN0aXNjZSB1biBjYW1iaW8gcGFnaW5hIGludmlhbmRvIGFsIGNhbGxiYWNrICoqb25QYWdlQ2hhbmdlKiogaSBkYXRpIGF0dHVhbGkgKHNpYW5vIGVzc2kgaWwgRHRvIHBlciBpbCBjYXJpY2FtZW50byBkYXRpIGkgXHJcbiAgICAgKiBvIGkgZGF0aSBnacOgIHByZXNlbnRpKSBlIGwnaW5kaWNlIGRpIHZpc3VhbGl6emF6aW9uZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGhhbmRsZVBhZ2VDaGFuZ2UoKSB7XHJcbiAgICAgICAgdGhpcy5maW5hbEluZGV4ID0gdGhpcy5jdXJyZW50cGFnZSAtIDE7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50aW5kZXggPSB0aGlzLmN1cnJlbnRwYWdlIC0gMTtcclxuICAgICAgICBsZXQgZGF0YSA9IHRoaXMuSXRlbXMgJiYgdGhpcy5JdGVtcy5sZW5ndGggPiAwID8gdGhpcy5JdGVtc1t0aGlzLmZpbmFsSW5kZXhdLmRhdGEgOiB0aGlzLkR0b3NbdGhpcy5maW5hbEluZGV4XVxyXG4gICAgICAgIHRoaXMub25QYWdlQ2hhbmdlLmVtaXQoeyBkYXRhOiBkYXRhLCBpbmRleDogdGhpcy5maW5hbEluZGV4IH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmlzdWFsaXp6YSBpbCBncmFmaWNvIHN1Y2Nlc3Npdm9cclxuICAgICAqL1xyXG4gICAgcHVibGljIE5leHQoKSB7XHJcbiAgICAgICAgLy8gUGVyIHBhc3NhcmUgZGEgcGFnZSBhIGluZGV4IMOoIHNlbXByZSB1biAtMVxyXG4gICAgICAgIHRoaXMuY3VycmVudHBhZ2UrKztcclxuICAgICAgICB0aGlzLm9uUGFnZUNoYW5nZS5lbWl0KHsgZGF0YTogbnVsbCwgaW5kZXg6IHRoaXMuY3VycmVudHBhZ2UgLSAxIH0pO1xyXG5cclxuICAgICAgICAvLyBEZWxheSBwc2V1ZG8taW50ZWxsaWdlbnRlIHBlciBjbGljayBjb21wdWxzaXZpLiBcclxuICAgICAgICAvLyBTZSBkb3BvIHF1ZXN0byBkZWxheSBzb25vIGFuZGF0byBhdmFudGkgc29sbyBkaSAxIGVmZmV0dHVvIGlsIGNhbGxiYWNrIGFsdHJpbWVudGkgaW5jcmVtZW50byBsJ2luZGljZVxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50aW5kZXggPT0gdGhpcy5jdXJyZW50cGFnZSAtIDIpXHJcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVBhZ2VDaGFuZ2UoKTtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50aW5kZXgrKztcclxuICAgICAgICB9LCB0aGlzLkJyb3dzZURlbGF5TXMpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmlzdWFsaXp6YSBpbCBncmFmaWNvIHByZWNlZGVudGVcclxuICAgICAqL1xyXG4gICAgUHJldmlvdXMoKSB7XHJcbiAgICAgICAgLy8gUGVyIHBhc3NhcmUgZGEgcGFnZSBhIGluZGV4IMOoIHNlbXByZSB1biAtMVxyXG4gICAgICAgIHRoaXMuY3VycmVudHBhZ2UtLTtcclxuICAgICAgICB0aGlzLm9uUGFnZUNoYW5nZS5lbWl0KHsgZGF0YTogbnVsbCwgaW5kZXg6IHRoaXMuY3VycmVudHBhZ2UgLSAxIH0pO1xyXG5cclxuICAgICAgICAvLyBEZWxheSBwc2V1ZG8taW50ZWxsaWdlbnRlIHBlciBjbGljayBjb21wdWxzaXZpLiBcclxuICAgICAgICAvLyBTZSBkb3BvIHF1ZXN0byBkZWxheSBzb25vIGFuZGF0byBpbmRpZXRybyBzb2xvIGRpIDEgZWZmZXR0dW8gaWwgY2FsbGJhY2sgYWx0cmltZW50aSBkZWNyZW1lbnRvIGwnaW5kaWNlXHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRpbmRleCA9PSB0aGlzLmN1cnJlbnRwYWdlKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVQYWdlQ2hhbmdlKCk7XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudGluZGV4LS07XHJcbiAgICAgICAgfSwgdGhpcy5Ccm93c2VEZWxheU1zKTtcclxuICAgIH1cclxufSIsIjxkaXYgKm5nSWY9XCIoSXRlbXMgfHwgRHRvcykgJiYgKEl0ZW1zIHx8IER0b3MpLmxlbmd0aCA+IDBcIiBjbGFzcz1cInBjcy1uby1zZWxlY3Rpb25cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJwY3MtYnV0dG9uIHBjcy1iYWNrd2FyZFwiPlxyXG4gICAgICAgIDxzdmcgY2xhc3M9XCJwY3Mtc3ZnLWhlYWRlclwiPlxyXG4gICAgICAgICAgICA8ZyBjbGFzcz1cInBjcy1zdmctYnV0dG9uLWNvbnRhaW5lclwiIHJvbGU9XCJidXR0b25cIiAoY2xpY2spPVwiY3VycmVudHBhZ2UgIT0gMSAmJiBQcmV2aW91cygpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1wiPlxyXG4gICAgICAgICAgICAgICAgPCEtLVB1bHNhbnRlIGUgZnJlY2NldHRpbmEgYWxsJ2ludGVybm8tLT5cclxuICAgICAgICAgICAgICAgIDxnIGNsYXNzPVwicGNzLXN2Zy1idXR0b25cIiAgW3N0eWxlLmN1cnNvcl09XCJjdXJyZW50cGFnZSA9PSAxID8gJ25vdC1hbGxvd2VkJyA6ICdwb2ludGVyJ1wiPjxwYXRoIGQ9XCJNMywwIEw1My4wMjcsMCBhMywzIDAgMCAxIDMsMyBMNTYuMDI3LDM2LjgxNyBhMywzIDAgMCAxIC0zLDMgTDMsMzkuODE3IGEzLDMgMCAwIDEgLTMsLTMgTDAsMyBhMywzIDAgMCAxIDMsLTMgWlwiPjwvcGF0aD48L2c+XHJcbiAgICAgICAgICAgICAgICA8ZyBjbGFzcz1cInBjcy1zdmctYXJyb3cgcGNzLXN2Zy1hcnJvdy1sZWZ0XCI+PHBhdGggZD1cIk0yNiwxNEgxMGw1LjE3LTYuNzlBMiwyLDAsMCwwLDEyLDQuNzlsLTcuNjIsMTBhMiwyLDAsMCwwLDAsMi40Mmw3LjYyLDEwYTIsMiwwLDAsMCwzLjE4LTIuNDJMMTAsMThIMjZhMiwyLDAsMCwwLDAtNFpcIj48L3BhdGg+PC9nPlxyXG4gICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJwY3MtaW5mb3NcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGVhZGVySW5uZXJfdHJcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImhlYWRlcklubmVyX3RyOyBjb250ZXh0IDogeyRpbXBsaWNpdDogKEl0ZW1zIHx8IER0b3MpW2N1cnJlbnRwYWdlIC0gMV19XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJwY3MtYnV0dG9uIHBjcy1mb3J3YXJkXCI+XHJcbiAgICAgICAgPHN2ZyBjbGFzcz1cInBjcy1zdmctaGVhZGVyXCI+XHJcbiAgICAgICAgICAgIDxnIGNsYXNzPVwicGNzLXN2Zy1idXR0b24tY29udGFpbmVyXCIgcm9sZT1cImJ1dHRvblwiIChjbGljayk9XCIoSXRlbXMgfHwgRHRvcykubGVuZ3RoICE9IGN1cnJlbnRwYWdlICYmIE5leHQoKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcIj5cclxuICAgICAgICAgICAgICAgIDwhLS1QdWxzYW50ZSBlIGZyZWNjZXR0aW5hIGFsbCdpbnRlcm5vLS0+XHJcbiAgICAgICAgICAgICAgICA8ZyBjbGFzcz1cInBjcy1zdmctYnV0dG9uXCIgW3N0eWxlLmN1cnNvcl09XCIoSXRlbXMgfHwgRHRvcykubGVuZ3RoID09IGN1cnJlbnRwYWdlID8gJ25vdC1hbGxvd2VkJyA6ICdwb2ludGVyJ1wiPjxwYXRoIGQ9XCJNMywwIEw1My4wMjcsMCBhMywzIDAgMCAxIDMsMyBMNTYuMDI3LDM2LjgxNyBhMywzIDAgMCAxIC0zLDMgTDMsMzkuODE3IGEzLDMgMCAwIDEgLTMsLTMgTDAsMyBhMywzIDAgMCAxIDMsLTMgWlwiPjwvcGF0aD48L2c+XHJcbiAgICAgICAgICAgICAgICA8ZyBjbGFzcz1cInBjcy1zdmctYXJyb3cgcGNzLXN2Zy1hcnJvdy1yaWdodFwiPjxwYXRoIGQ9XCJNMjYsMTRIMTBsNS4xNy02Ljc5QTIsMiwwLDAsMCwxMiw0Ljc5bC03LjYyLDEwYTIsMiwwLDAsMCwwLDIuNDJsNy42MiwxMGEyLDIsMCwwLDAsMy4xOC0yLjQyTDEwLDE4SDI2YTIsMiwwLDAsMCwwLTRaXCI+PC9wYXRoPjwvZz5cclxuICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IHN0eWxlPVwiY2xlYXI6IGJvdGg7XCI+PC9kaXY+XHJcbjwvZGl2PiJdfQ==
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtcGFnZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXMtY2hhcnRzL3NyYy9saWIvY29tcG9uZW50cy9jaGFydC1wYWdlci9jaGFydC1wYWdlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcy1jaGFydHMvc3JjL2xpYi9jb21wb25lbnRzL2NoYXJ0LXBhZ2VyL2NoYXJ0LXBhZ2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSx1QkFBdUIsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFHOUc7O0dBRUc7QUFPSCxNQUFNLE9BQU8saUJBQWlCO0lBTjlCO1FBOEJJOzs7O1dBSUc7UUFDTyxpQkFBWSxHQUErQyxJQUFJLFlBQVksRUFBZ0MsQ0FBQztLQStFekg7SUEzREc7O09BRUc7SUFDSCxXQUFXO1FBQ1AsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQztZQUNuRSxNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUM7UUFFcEQsSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssZ0JBQWdCO1FBQ3BCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztRQUN6QyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUM5RyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRDs7T0FFRztJQUNJLElBQUk7UUFDUCw2Q0FBNkM7UUFDN0MsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXBFLG1EQUFtRDtRQUNuRCx3R0FBd0c7UUFDeEcsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUM7Z0JBQ3pDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDOztnQkFFeEIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzVCLENBQUMsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsUUFBUTtRQUNKLDZDQUE2QztRQUM3QyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFcEUsbURBQW1EO1FBQ25ELDBHQUEwRztRQUMxRyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxXQUFXO2dCQUNyQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQzs7Z0JBRXhCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUM1QixDQUFDLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzNCLENBQUM7OzhHQTNHUSxpQkFBaUI7a0dBQWpCLGlCQUFpQixtVUNaOUIsaWlFQXlCTTsyRkRiTyxpQkFBaUI7a0JBTjdCLFNBQVM7K0JBQ0ksYUFBYSxtQkFHTix1QkFBdUIsQ0FBQyxNQUFNOzhCQU90QyxLQUFLO3NCQUFiLEtBQUs7Z0JBS0csSUFBSTtzQkFBWixLQUFLO2dCQU9HLGFBQWE7c0JBQXJCLEtBQUs7Z0JBS0csVUFBVTtzQkFBbEIsS0FBSztnQkFPSSxZQUFZO3NCQUFyQixNQUFNO2dCQUswQyxjQUFjO3NCQUE5RCxZQUFZO3VCQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIsIENvbXBvbmVudCwgSW5wdXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBPdXRwdXQsIENvbnRlbnRDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBQYWdlZENoYXJ0RGF0YSB9IGZyb20gJy4uLy4uL21vZGVscy9kYXRhL1BhZ2VkQ2hhcnREYXRhJztcclxuXHJcbi8qKlxyXG4gKiBDb21wb25lbnRlIGNoZSBzaSBvY2N1cGEgZGVsbGEgcGFnaW5hemlvbmUgZGVpIGdyYWZpY2kgcXVhbG9yYSBzZXJ2aXNzZVxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJjaGFydC1wYWdlclwiLFxyXG4gICAgdGVtcGxhdGVVcmw6IFwiY2hhcnQtcGFnZXIuY29tcG9uZW50Lmh0bWxcIixcclxuICAgIHN0eWxlVXJsczogWydjaGFydC1wYWdlci5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIFBhZ2VDaGFydFNlbGVjdG9yIHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIExpc3RhIGRlaSBkYXRpIHByZWNhcmljYXRhIGluIG1lbW9yaWFcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgSXRlbXM6IFBhZ2VkQ2hhcnREYXRhPGFueT5bXTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIExpc3RhIGRlaSBEdG8gZGEgdXRpbGl6emFyZSBwZXIgY2FyaWNhcmUgaSB2YWxvcmkgZGVpIHZhcmkgZ3JhZmljaVxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBEdG9zOiBhbnlbXTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIERvcG8gYXZlciBuYXZpZ2F0byBhIHVuIG51b3ZvIGdyYWZpY28gdmVycmFubm8gYXR0ZXNpIHF1ZXN0aSBtaWxsaXNlY29uZGkgcHJpbWEgZGkgcmljaGllZGVyZSBpIGRhdGkgYXR0cmF2ZXJzbyBsYSAqKkRhdGFSZXRyaWV2ZSoqLlxyXG4gICAgICogXHJcbiAgICAgKiBRdWVzdG8gcGVyIGV2aXRhcmUgY2hlIGwndXRlbnRlIGNsaWNjYW5kbyB2ZWxvY2VtZW50ZSBcImF2YW50aVwiIGdlbmVyaSB0b25uZWxsYXRlIGRpIHJpY2hpZXN0ZSBpbnV0aWxpXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIEJyb3dzZURlbGF5TXM7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2UgZGVsbCdhcnJheSAqKkR0b3MqKiBvIGRlbGwnYXJyYXkgKipJdGVtcyoqIGRhIGN1aSBpbml6aWFyZSBhZCBlbWV0dGVyZSBpIHZhbG9yaSwgdXRpbGUgcGVyIHN1cHBvcnRhcmUgaWwgXCJiYWNrXCIgZGEgdW4gZXZlbnR1YWxlIHBhZ2luYSBkaSBkZXR0YWdsaW9cclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgU3RhcnRJbmRleDogbnVtYmVyO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5kaWNhIHVuIGNhbWJpbyBkaSBwYWdpbmEgZWQgZW1ldHRlIHVuIG9nZ2V0dG8gY29uIGkgZGF0aSBhdHR1YWxpIGUgbCdpbmRpY2UgYXR0dWFsZS5cclxuICAgICAqIFxyXG4gICAgICogUXVhbG9yYSBsYSBwcm9wcmlldMOgICoqZGF0YSoqIGZvc3NlIG51bGwgaW5kaWNhIHVuIGV2ZW50byBkaSBcImxvYWRpbmdcIlxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KCkgb25QYWdlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8eyBkYXRhOiBhbnksIGluZGV4OiBudW1iZXIgfT4gPSBuZXcgRXZlbnRFbWl0dGVyPHsgZGF0YTogYW55LCBpbmRleDogbnVtYmVyIH0+KCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBPdmVycmlkZSBkZWwgdGl0b2xvIGRpIGRlZmF1bHRcclxuICAgICAqL1xyXG4gICAgQENvbnRlbnRDaGlsZCgnaGVhZGVyX2lubmVyJywgeyBzdGF0aWM6IGZhbHNlIH0pIGhlYWRlcklubmVyX3RyO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGlnbm9yZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY3VycmVudHBhZ2U6IG51bWJlcjtcclxuICAgIC8qKlxyXG4gICAgICogQGlnbm9yZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGN1cnJlbnRpbmRleDogbnVtYmVyO1xyXG4gICAgLyoqXHJcbiAgICAgKiBAaWdub3JlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZmluYWxJbmRleDogbnVtYmVyO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGlnbm9yZVxyXG4gICAgICovXHJcbiAgICBuZ09uQ2hhbmdlcygpIHtcclxuICAgICAgICBpZiAoISh0aGlzLkl0ZW1zIHx8IHRoaXMuRHRvcykgfHwgKHRoaXMuSXRlbXMgfHwgdGhpcy5EdG9zKS5sZW5ndGggPT0gMClcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2hhcnQgYXJyYXkgY2Fubm90IGJlIGVtcHR5IVwiKTtcclxuXHJcbiAgICAgICAgdmFyIGlkeCA9ICh0aGlzLlN0YXJ0SW5kZXggfHwgMCk7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50aW5kZXggPSBpZHg7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50cGFnZSA9IGlkeCArIDE7XHJcbiAgICAgICAgdGhpcy5oYW5kbGVQYWdlQ2hhbmdlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXN0aXNjZSB1biBjYW1iaW8gcGFnaW5hIGludmlhbmRvIGFsIGNhbGxiYWNrICoqb25QYWdlQ2hhbmdlKiogaSBkYXRpIGF0dHVhbGkgKHNpYW5vIGVzc2kgaWwgRHRvIHBlciBpbCBjYXJpY2FtZW50byBkYXRpIGkgXHJcbiAgICAgKiBvIGkgZGF0aSBnacOgIHByZXNlbnRpKSBlIGwnaW5kaWNlIGRpIHZpc3VhbGl6emF6aW9uZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGhhbmRsZVBhZ2VDaGFuZ2UoKSB7XHJcbiAgICAgICAgdGhpcy5maW5hbEluZGV4ID0gdGhpcy5jdXJyZW50cGFnZSAtIDE7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50aW5kZXggPSB0aGlzLmN1cnJlbnRwYWdlIC0gMTtcclxuICAgICAgICBsZXQgZGF0YSA9IHRoaXMuSXRlbXMgJiYgdGhpcy5JdGVtcy5sZW5ndGggPiAwID8gdGhpcy5JdGVtc1t0aGlzLmZpbmFsSW5kZXhdLmRhdGEgOiB0aGlzLkR0b3NbdGhpcy5maW5hbEluZGV4XVxyXG4gICAgICAgIHRoaXMub25QYWdlQ2hhbmdlLmVtaXQoeyBkYXRhOiBkYXRhLCBpbmRleDogdGhpcy5maW5hbEluZGV4IH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmlzdWFsaXp6YSBpbCBncmFmaWNvIHN1Y2Nlc3Npdm9cclxuICAgICAqL1xyXG4gICAgcHVibGljIE5leHQoKSB7XHJcbiAgICAgICAgLy8gUGVyIHBhc3NhcmUgZGEgcGFnZSBhIGluZGV4IMOoIHNlbXByZSB1biAtMVxyXG4gICAgICAgIHRoaXMuY3VycmVudHBhZ2UrKztcclxuICAgICAgICB0aGlzLm9uUGFnZUNoYW5nZS5lbWl0KHsgZGF0YTogbnVsbCwgaW5kZXg6IHRoaXMuY3VycmVudHBhZ2UgLSAxIH0pO1xyXG5cclxuICAgICAgICAvLyBEZWxheSBwc2V1ZG8taW50ZWxsaWdlbnRlIHBlciBjbGljayBjb21wdWxzaXZpLiBcclxuICAgICAgICAvLyBTZSBkb3BvIHF1ZXN0byBkZWxheSBzb25vIGFuZGF0byBhdmFudGkgc29sbyBkaSAxIGVmZmV0dHVvIGlsIGNhbGxiYWNrIGFsdHJpbWVudGkgaW5jcmVtZW50byBsJ2luZGljZVxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50aW5kZXggPT0gdGhpcy5jdXJyZW50cGFnZSAtIDIpXHJcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVBhZ2VDaGFuZ2UoKTtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50aW5kZXgrKztcclxuICAgICAgICB9LCB0aGlzLkJyb3dzZURlbGF5TXMpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmlzdWFsaXp6YSBpbCBncmFmaWNvIHByZWNlZGVudGVcclxuICAgICAqL1xyXG4gICAgUHJldmlvdXMoKSB7XHJcbiAgICAgICAgLy8gUGVyIHBhc3NhcmUgZGEgcGFnZSBhIGluZGV4IMOoIHNlbXByZSB1biAtMVxyXG4gICAgICAgIHRoaXMuY3VycmVudHBhZ2UtLTtcclxuICAgICAgICB0aGlzLm9uUGFnZUNoYW5nZS5lbWl0KHsgZGF0YTogbnVsbCwgaW5kZXg6IHRoaXMuY3VycmVudHBhZ2UgLSAxIH0pO1xyXG5cclxuICAgICAgICAvLyBEZWxheSBwc2V1ZG8taW50ZWxsaWdlbnRlIHBlciBjbGljayBjb21wdWxzaXZpLiBcclxuICAgICAgICAvLyBTZSBkb3BvIHF1ZXN0byBkZWxheSBzb25vIGFuZGF0byBpbmRpZXRybyBzb2xvIGRpIDEgZWZmZXR0dW8gaWwgY2FsbGJhY2sgYWx0cmltZW50aSBkZWNyZW1lbnRvIGwnaW5kaWNlXHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRpbmRleCA9PSB0aGlzLmN1cnJlbnRwYWdlKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVQYWdlQ2hhbmdlKCk7XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudGluZGV4LS07XHJcbiAgICAgICAgfSwgdGhpcy5Ccm93c2VEZWxheU1zKTtcclxuICAgIH1cclxufSIsIjxkaXYgKm5nSWY9XCIoSXRlbXMgfHwgRHRvcykgJiYgKEl0ZW1zIHx8IER0b3MpLmxlbmd0aCA+IDBcIiBjbGFzcz1cInBjcy1uby1zZWxlY3Rpb25cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJwY3MtYnV0dG9uIHBjcy1iYWNrd2FyZFwiPlxyXG4gICAgICAgIDxzdmcgY2xhc3M9XCJwY3Mtc3ZnLWhlYWRlclwiPlxyXG4gICAgICAgICAgICA8ZyBjbGFzcz1cInBjcy1zdmctYnV0dG9uLWNvbnRhaW5lclwiIHJvbGU9XCJidXR0b25cIiAoY2xpY2spPVwiY3VycmVudHBhZ2UgIT0gMSAmJiBQcmV2aW91cygpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1wiPlxyXG4gICAgICAgICAgICAgICAgPCEtLVB1bHNhbnRlIGUgZnJlY2NldHRpbmEgYWxsJ2ludGVybm8tLT5cclxuICAgICAgICAgICAgICAgIDxnIGNsYXNzPVwicGNzLXN2Zy1idXR0b25cIiAgW3N0eWxlLmN1cnNvcl09XCJjdXJyZW50cGFnZSA9PSAxID8gJ25vdC1hbGxvd2VkJyA6ICdwb2ludGVyJ1wiPjxwYXRoIGQ9XCJNMywwIEw1My4wMjcsMCBhMywzIDAgMCAxIDMsMyBMNTYuMDI3LDM2LjgxNyBhMywzIDAgMCAxIC0zLDMgTDMsMzkuODE3IGEzLDMgMCAwIDEgLTMsLTMgTDAsMyBhMywzIDAgMCAxIDMsLTMgWlwiPjwvcGF0aD48L2c+XHJcbiAgICAgICAgICAgICAgICA8ZyBjbGFzcz1cInBjcy1zdmctYXJyb3cgcGNzLXN2Zy1hcnJvdy1sZWZ0XCI+PHBhdGggZD1cIk0yNiwxNEgxMGw1LjE3LTYuNzlBMiwyLDAsMCwwLDEyLDQuNzlsLTcuNjIsMTBhMiwyLDAsMCwwLDAsMi40Mmw3LjYyLDEwYTIsMiwwLDAsMCwzLjE4LTIuNDJMMTAsMThIMjZhMiwyLDAsMCwwLDAtNFpcIj48L3BhdGg+PC9nPlxyXG4gICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJwY3MtaW5mb3NcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGVhZGVySW5uZXJfdHJcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImhlYWRlcklubmVyX3RyOyBjb250ZXh0IDogeyRpbXBsaWNpdDogKEl0ZW1zIHx8IER0b3MpW2N1cnJlbnRwYWdlIC0gMV19XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJwY3MtYnV0dG9uIHBjcy1mb3J3YXJkXCI+XHJcbiAgICAgICAgPHN2ZyBjbGFzcz1cInBjcy1zdmctaGVhZGVyXCI+XHJcbiAgICAgICAgICAgIDxnIGNsYXNzPVwicGNzLXN2Zy1idXR0b24tY29udGFpbmVyXCIgcm9sZT1cImJ1dHRvblwiIChjbGljayk9XCIoSXRlbXMgfHwgRHRvcykubGVuZ3RoICE9IGN1cnJlbnRwYWdlICYmIE5leHQoKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcIj5cclxuICAgICAgICAgICAgICAgIDwhLS1QdWxzYW50ZSBlIGZyZWNjZXR0aW5hIGFsbCdpbnRlcm5vLS0+XHJcbiAgICAgICAgICAgICAgICA8ZyBjbGFzcz1cInBjcy1zdmctYnV0dG9uXCIgW3N0eWxlLmN1cnNvcl09XCIoSXRlbXMgfHwgRHRvcykubGVuZ3RoID09IGN1cnJlbnRwYWdlID8gJ25vdC1hbGxvd2VkJyA6ICdwb2ludGVyJ1wiPjxwYXRoIGQ9XCJNMywwIEw1My4wMjcsMCBhMywzIDAgMCAxIDMsMyBMNTYuMDI3LDM2LjgxNyBhMywzIDAgMCAxIC0zLDMgTDMsMzkuODE3IGEzLDMgMCAwIDEgLTMsLTMgTDAsMyBhMywzIDAgMCAxIDMsLTMgWlwiPjwvcGF0aD48L2c+XHJcbiAgICAgICAgICAgICAgICA8ZyBjbGFzcz1cInBjcy1zdmctYXJyb3cgcGNzLXN2Zy1hcnJvdy1yaWdodFwiPjxwYXRoIGQ9XCJNMjYsMTRIMTBsNS4xNy02Ljc5QTIsMiwwLDAsMCwxMiw0Ljc5bC03LjYyLDEwYTIsMiwwLDAsMCwwLDIuNDJsNy42MiwxMGEyLDIsMCwwLDAsMy4xOC0yLjQyTDEwLDE4SDI2YTIsMiwwLDAsMCwwLTRaXCI+PC9wYXRoPjwvZz5cclxuICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IHN0eWxlPVwiY2xlYXI6IGJvdGg7XCI+PC9kaXY+XHJcbjwvZGl2PiJdfQ==
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { Component, Input, Inject, PLATFORM_ID, ChangeDetectionStrategy } from '@angular/core';
|
|
2
2
|
import { ESC_ANIMATIONS, ESC_LOCALE, ESC_THEME, ESC_LOGS } from '../../tokens';
|
|
3
3
|
import { BaseChartComponent } from '../base/base-chart.component';
|
|
4
|
-
import { AreaChartSettings } from '../../models/settings';
|
|
5
|
-
import { AreaChartService } from '../../services';
|
|
4
|
+
import { AreaChartSettings } from '../../models/settings/AreaChartSettings';
|
|
5
|
+
import { AreaChartService } from '../../services/AreaChartService';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "../../models/core";
|
|
8
|
-
import * as i2 from "../../
|
|
9
|
-
import * as i3 from "
|
|
10
|
-
import * as i4 from "
|
|
7
|
+
import * as i1 from "../../models/core/ChartLoader";
|
|
8
|
+
import * as i2 from "../../models/core/ChartDispatcher";
|
|
9
|
+
import * as i3 from "../../adapters/BaseAdapter";
|
|
10
|
+
import * as i4 from "../chart-pager/chart-pager.component";
|
|
11
|
+
import * as i5 from "@angular/common";
|
|
11
12
|
/**
|
|
12
13
|
* Componente specifico per la graficazione di un grafico ad Area
|
|
13
14
|
*/
|
|
@@ -50,12 +51,12 @@ export class EsAreaChartComponent extends BaseChartComponent {
|
|
|
50
51
|
return new AreaChartService(this.adapter).graphicate(this.Data, settingsCasted);
|
|
51
52
|
}
|
|
52
53
|
}
|
|
53
|
-
EsAreaChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsAreaChartComponent, deps: [{ token: i0.ElementRef }, { token: i1.ChartLoader }, { token:
|
|
54
|
-
EsAreaChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: EsAreaChartComponent, selector: "es-area-chart", inputs: { Data: "Data", DataArray: "DataArray" }, usesInheritance: true, ngImport: i0, template: "<chart-pager *ngIf=\"isPaged\" (onPageChange)=\"changePage($event)\" [Items]=\"DataArray\" [Dtos]=\"DataDtos\" [StartIndex]=\"DataDtoStartIndex\"\r\n [BrowseDelayMs]=\"BrowseDelayMs\">\r\n <ng-template #header_inner let-headerItem>\r\n <ng-container *ngTemplateOutlet=\"header_tr; context : {$implicit: headerItem}\"></ng-container>\r\n </ng-template>\r\n</chart-pager>\r\n\r\n<ng-container *ngIf=\"loadingChart && loading_template\">\r\n <div style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <ng-container *ngTemplateOutlet=\"loading_template\"></ng-container>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"loadingChart && !loading_template\">\r\n <div class=\"esc-loading-overlay\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <p class=\"label\">Loading....</p>\r\n </div>\r\n</ng-container>\r\n\r\n<div [class.hide-block]=\"loadingChart\" id=\"{{name}}\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\"></div>", styles: [".esc-loading-overlay{background:#9999;text-transform:uppercase;font-size:30px;font-weight:700;color:#fff;text-align:center;font-family:monospace}.esc-loading-overlay .label{margin:0;padding-top:7%}.hide-block{display:none}\n"], components: [{ type:
|
|
54
|
+
EsAreaChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsAreaChartComponent, deps: [{ token: i0.ElementRef }, { token: i1.ChartLoader }, { token: i2.ChartDispatcher }, { token: i3.BaseAdapter }, { token: i0.NgZone }, { token: PLATFORM_ID }, { token: ESC_LOGS }, { token: ESC_ANIMATIONS }, { token: ESC_LOCALE }, { token: ESC_THEME }], target: i0.ɵɵFactoryTarget.Component });
|
|
55
|
+
EsAreaChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: EsAreaChartComponent, selector: "es-area-chart", inputs: { Data: "Data", DataArray: "DataArray" }, usesInheritance: true, ngImport: i0, template: "<chart-pager *ngIf=\"isPaged\" (onPageChange)=\"changePage($event)\" [Items]=\"DataArray\" [Dtos]=\"DataDtos\" [StartIndex]=\"DataDtoStartIndex\"\r\n [BrowseDelayMs]=\"BrowseDelayMs\">\r\n <ng-template #header_inner let-headerItem>\r\n <ng-container *ngTemplateOutlet=\"header_tr; context : {$implicit: headerItem}\"></ng-container>\r\n </ng-template>\r\n</chart-pager>\r\n\r\n<ng-container *ngIf=\"loadingChart && loading_template\">\r\n <div style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <ng-container *ngTemplateOutlet=\"loading_template\"></ng-container>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"loadingChart && !loading_template\">\r\n <div class=\"esc-loading-overlay\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <p class=\"label\">Loading....</p>\r\n </div>\r\n</ng-container>\r\n\r\n<div [class.hide-block]=\"loadingChart\" id=\"{{name}}\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\"></div>", styles: [".esc-loading-overlay{background:#9999;text-transform:uppercase;font-size:30px;font-weight:700;color:#fff;text-align:center;font-family:monospace}.esc-loading-overlay .label{margin:0;padding-top:7%}.hide-block{display:none}\n"], components: [{ type: i4.PageChartSelector, selector: "chart-pager", inputs: ["Items", "Dtos", "BrowseDelayMs", "StartIndex"], outputs: ["onPageChange"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
55
56
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsAreaChartComponent, decorators: [{
|
|
56
57
|
type: Component,
|
|
57
58
|
args: [{ selector: 'es-area-chart', changeDetection: ChangeDetectionStrategy.OnPush, template: "<chart-pager *ngIf=\"isPaged\" (onPageChange)=\"changePage($event)\" [Items]=\"DataArray\" [Dtos]=\"DataDtos\" [StartIndex]=\"DataDtoStartIndex\"\r\n [BrowseDelayMs]=\"BrowseDelayMs\">\r\n <ng-template #header_inner let-headerItem>\r\n <ng-container *ngTemplateOutlet=\"header_tr; context : {$implicit: headerItem}\"></ng-container>\r\n </ng-template>\r\n</chart-pager>\r\n\r\n<ng-container *ngIf=\"loadingChart && loading_template\">\r\n <div style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <ng-container *ngTemplateOutlet=\"loading_template\"></ng-container>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"loadingChart && !loading_template\">\r\n <div class=\"esc-loading-overlay\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <p class=\"label\">Loading....</p>\r\n </div>\r\n</ng-container>\r\n\r\n<div [class.hide-block]=\"loadingChart\" id=\"{{name}}\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\"></div>", styles: [".esc-loading-overlay{background:#9999;text-transform:uppercase;font-size:30px;font-weight:700;color:#fff;text-align:center;font-family:monospace}.esc-loading-overlay .label{margin:0;padding-top:7%}.hide-block{display:none}\n"] }]
|
|
58
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.ChartLoader }, { type:
|
|
59
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.ChartLoader }, { type: i2.ChartDispatcher }, { type: i3.BaseAdapter }, { type: i0.NgZone }, { type: Object, decorators: [{
|
|
59
60
|
type: Inject,
|
|
60
61
|
args: [PLATFORM_ID]
|
|
61
62
|
}] }, { type: undefined, decorators: [{
|
|
@@ -75,4 +76,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
|
|
|
75
76
|
}], DataArray: [{
|
|
76
77
|
type: Input
|
|
77
78
|
}] } });
|
|
78
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXMtYXJlYS1jaGFydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcy1jaGFydHMvc3JjL2xpYi9jb21wb25lbnRzL3NwZWNpYWxpemF0aW9ucy9lcy1hcmVhLWNoYXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VzLWNoYXJ0cy9zcmMvbGliL2NvbXBvbmVudHMvYmFzZS9iYXNlLWNoYXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQVUsdUJBQXVCLEVBQWMsTUFBTSxlQUFlLENBQUM7QUFHbkgsT0FBTyxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUUvRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUtsRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7OztBQUluRTs7R0FFRztBQU9ILE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxrQkFBa0I7SUFZMUQ7O09BRUc7SUFDSCxZQUFZLEVBQWMsRUFBRSxXQUF3QixFQUFFLGVBQWdDLEVBQVUsT0FBb0IsRUFBRSxJQUFZLEVBQzNHLFVBQWtCLEVBQ3JCLFFBQWlCLEVBQ1gsY0FBdUIsRUFDM0IsVUFBa0IsRUFDbkIsU0FBaUI7UUFDcEMsS0FBSyxDQUFDLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFOYixZQUFPLEdBQVAsT0FBTyxDQUFhO0lBT3BILENBQUM7SUFFRDs7T0FFRztJQUNILDRCQUE0QjtRQUMxQixPQUFPLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsaUJBQWlCO1FBQ2YsT0FBMEIsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsb0JBQW9CLENBQUMsY0FBaUM7SUFFdEQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsVUFBVSxDQUFDLGNBQWlDO1FBQzFDLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFnQixJQUFJLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ2pHLENBQUM7O2lIQXpEVSxvQkFBb0IsdUpBZ0JyQixXQUFXLGFBQ1gsUUFBUSxhQUNSLGNBQWMsYUFDZCxVQUFVLGFBQ1YsU0FBUztxR0FwQlIsb0JBQW9CLDhIQ3hCakMsd2pDQW1Cd0k7MkZESzNILG9CQUFvQjtrQkFOaEMsU0FBUzsrQkFDRSxlQUFlLG1CQUdSLHVCQUF1QixDQUFDLE1BQU07MExBa0JaLE1BQU07MEJBQXRDLE1BQU07MkJBQUMsV0FBVzs7MEJBQ2xCLE1BQU07MkJBQUMsUUFBUTs7MEJBQ2YsTUFBTTsyQkFBQyxjQUFjOzswQkFDckIsTUFBTTsyQkFBQyxVQUFVOzswQkFDakIsTUFBTTsyQkFBQyxTQUFTOzRDQWZWLElBQUk7c0JBQVosS0FBSztnQkFLRyxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgSW5qZWN0LCBQTEFURk9STV9JRCwgTmdab25lLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgQmFzZUFkYXB0ZXIgfSBmcm9tICcuLi8uLi9hZGFwdGVycy9CYXNlQWRhcHRlcic7XHJcbmltcG9ydCB7IEVTQ19BTklNQVRJT05TLCBFU0NfTE9DQUxFLCBFU0NfVEhFTUUsIEVTQ19MT0dTIH0gZnJvbSAnLi4vLi4vdG9rZW5zJztcclxuXHJcbmltcG9ydCB7IEJhc2VDaGFydENvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2UvYmFzZS1jaGFydC5jb21wb25lbnQnO1xyXG5cclxuaW1wb3J0IHsgQ2hhcnRMb2FkZXIgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2NvcmUvQ2hhcnRMb2FkZXJcIjtcclxuaW1wb3J0IHsgQ2hhcnREaXNwYXRjaGVyIH0gZnJvbSBcIi4uLy4uL21vZGVscy9jb3JlL0NoYXJ0RGlzcGF0Y2hlclwiO1xyXG5cclxuaW1wb3J0IHsgQXJlYUNoYXJ0U2V0dGluZ3MgfSBmcm9tICcuLi8uLi9tb2RlbHMvc2V0dGluZ3MvQXJlYUNoYXJ0U2V0dGluZ3MnO1xyXG5pbXBvcnQgeyBBcmVhQ2hhcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvQXJlYUNoYXJ0U2VydmljZSc7XHJcbmltcG9ydCB7IEFyZWFDaGFydERhdGEgfSBmcm9tICcuLi8uLi9tb2RlbHMvZGF0YS9BcmVhQ2hhcnREYXRhJztcclxuaW1wb3J0IHsgUGFnZWRDaGFydERhdGEgfSBmcm9tICcuLi8uLi9tb2RlbHMvZGF0YS9QYWdlZENoYXJ0RGF0YSc7XHJcblxyXG4vKipcclxuICogQ29tcG9uZW50ZSBzcGVjaWZpY28gcGVyIGxhIGdyYWZpY2F6aW9uZSBkaSB1biBncmFmaWNvIGFkIEFyZWFcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZXMtYXJlYS1jaGFydCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuLi9iYXNlL2Jhc2UtY2hhcnQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuLi9iYXNlL2Jhc2UtY2hhcnQuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRXNBcmVhQ2hhcnRDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ2hhcnRDb21wb25lbnQge1xyXG5cclxuICAvKipcclxuICAgKiBEYXRpIHNwZWNpZmljaSBwZXIgaWwgZ3JhZmljbyBvIGRpIHVuIHRpcG8gdHJhbXV0YWJpbGUgYWwgdGlwbyAqKkFyZWFDaGFydERhdGEqKiBjb2wgc3VwcG9ydG8gZGVsICoqQmFzZUFkYXB0ZXIqKlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIERhdGE6IEFyZWFDaGFydERhdGEgfCBhbnk7XHJcblxyXG4gIC8qKlxyXG4gICAqIExpc3RhIGRpIERhdGkgc3BlY2lmaWNpIHBlciB1biBncmFmaWNvIHBhZ2luYXRvIG8gZGkgY3VpIG9nbmkgYmxvY2NvIGRhdGkgw6ggdHJhbXV0YWJpbGUgYWwgdGlwbyAqKkFyZWFDaGFydERhdGEqKiBjb2wgc3VwcG9ydG8gZGVsICoqQmFzZUFkYXB0ZXIqKlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIERhdGFBcnJheTogUGFnZWRDaGFydERhdGE8QXJlYUNoYXJ0RGF0YT5bXSB8IFBhZ2VkQ2hhcnREYXRhPGFueT5bXTtcclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKGVsOiBFbGVtZW50UmVmLCBDaGFydExvYWRlcjogQ2hhcnRMb2FkZXIsIENoYXJ0RGlzcGF0Y2hlcjogQ2hhcnREaXNwYXRjaGVyLCBwcml2YXRlIGFkYXB0ZXI6IEJhc2VBZGFwdGVyLCB6b25lOiBOZ1pvbmUsXHJcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwbGF0Zm9ybUlkOiBPYmplY3QsXHJcbiAgICBASW5qZWN0KEVTQ19MT0dTKSBFU0NfTE9HUzogYm9vbGVhbixcclxuICAgIEBJbmplY3QoRVNDX0FOSU1BVElPTlMpIEVTQ19BTklNQVRJT05TOiBib29sZWFuLFxyXG4gICAgQEluamVjdChFU0NfTE9DQUxFKSBFU0NfTE9DQUxFOiBzdHJpbmcsXHJcbiAgICBASW5qZWN0KEVTQ19USEVNRSkgRVNDX1RIRU1FOiBzdHJpbmcpIHtcclxuICAgIHN1cGVyKGVsLCBwbGF0Zm9ybUlkLCB6b25lLCBDaGFydExvYWRlciwgQ2hhcnREaXNwYXRjaGVyLCBFU0NfTE9HUywgRVNDX0FOSU1BVElPTlMsIEVTQ19MT0NBTEUsIEVTQ19USEVNRSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPdHRpZW5lIGxlIHByb3ByaWV0w6Agc3BlY2lmaWNoZSBwZXIgcXVlc3RhIHRpcG9sb2dpYSBkaSBncmFmaWNvIHBlciBjdWkgc2VydmUgcmlncmFmaWNhcmVcclxuICAgKi9cclxuICBnZXRTcGVjaWZpY1Byb3BlcnRpZXNUb0NoZWNrKCk6IHN0cmluZ1tdIHtcclxuICAgIHJldHVybiBbXCJEYXRhXCIsIFwiRGF0YUFycmF5XCJdO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogT3R0aWVuZSBpIFNldHRpbmdzIChFcmVkaXRhdGkgZGFsbGEgY2xhc3NlIGJhc2UsIHF1aW5kaSBkZWwgdGlwbyBnZW5lcmljbyAqKkJhc2VTZXR0aW5ncyoqKSBjYXN0YXRpIGFsIHRpcG8gc3BlY2lmaWNvIHBlciBxdWVzdG8gZ3JhZmljb1xyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIHtBcmVhQ2hhcnRTZXR0aW5nc30gU2V0dGluZ3MgY2FzdGF0aSBhbCB0aXBvIGdpdXN0b1xyXG4gICAqL1xyXG4gIGdldENhc3RlZFNldHRpbmdzKCk6IEFyZWFDaGFydFNldHRpbmdzIHtcclxuICAgIHJldHVybiA8QXJlYUNoYXJ0U2V0dGluZ3M+KHRoaXMuU2V0dGluZ3MgPz8gbmV3IEFyZWFDaGFydFNldHRpbmdzKCkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW50ZWdyYSBpIFNldHRpbmdzIGJhc2UgY29uIHR1dHRpIGdsaSBJbnB1dCBzcGVjaWZpY2kgZGkgcXVlc3RvIGdyYWZpY28sIGRhbmRvIHByaW9yaXTDoCBhaSBTZXR0aW5ncyBzZSBkZWZpbml0aVxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7QXJlYUNoYXJ0U2V0dGluZ3N9IHNldHRpbmdzQ2FzdGVkIFNldHRpbmdzIGNhc3RhdGkgYWwgdGlwbyBnaXVzdG9cclxuICAgKi9cclxuICBmaWxsU3BlY2lmaWNTZXR0aW5ncyhzZXR0aW5nc0Nhc3RlZDogQXJlYUNoYXJ0U2V0dGluZ3MpOiB2b2lkIHtcclxuXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFZmZldHR1YSBpbCByZW5kZXJpbmcgZGkgcXVlc3RvIGdyYWZpY28gaW4gYmFzZSBhaSBTZXR0aW5nc1xyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7QXJlYUNoYXJ0U2V0dGluZ3N9IHNldHRpbmdzQ2FzdGVkIEltcG9zdGF6aW9uaSBkaSBncmFmaWNhemlvbmVcclxuICAgKiBAcmV0dXJucyB7QXJlYUNoYXJ0U2VydmljZX0gTGEgc2VydmljZSB1dGlsaXp6YXRhIHBlciBpbCByZW5kZXJpbmcgbmVsbG8gc3RhdG8gc3ViaXRvIHN1Y2Nlc3Npdm8gYWwgcmVuZGVyaW5nIGVmZmV0dHVhdG9cclxuICAgKi9cclxuICBncmFwaGljYXRlKHNldHRpbmdzQ2FzdGVkOiBBcmVhQ2hhcnRTZXR0aW5ncyk6IGFueSB7XHJcbiAgICByZXR1cm4gbmV3IEFyZWFDaGFydFNlcnZpY2UodGhpcy5hZGFwdGVyKS5ncmFwaGljYXRlKDxBcmVhQ2hhcnREYXRhPnRoaXMuRGF0YSwgc2V0dGluZ3NDYXN0ZWQpO1xyXG4gIH1cclxufSIsIjxjaGFydC1wYWdlciAqbmdJZj1cImlzUGFnZWRcIiAob25QYWdlQ2hhbmdlKT1cImNoYW5nZVBhZ2UoJGV2ZW50KVwiIFtJdGVtc109XCJEYXRhQXJyYXlcIiBbRHRvc109XCJEYXRhRHRvc1wiIFtTdGFydEluZGV4XT1cIkRhdGFEdG9TdGFydEluZGV4XCJcclxuICAgIFtCcm93c2VEZWxheU1zXT1cIkJyb3dzZURlbGF5TXNcIj5cclxuICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyX2lubmVyIGxldC1oZWFkZXJJdGVtPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJoZWFkZXJfdHI7IGNvbnRleHQgOiB7JGltcGxpY2l0OiBoZWFkZXJJdGVtfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuPC9jaGFydC1wYWdlcj5cclxuXHJcbjxuZy1jb250YWluZXIgKm5nSWY9XCJsb2FkaW5nQ2hhcnQgJiYgbG9hZGluZ190ZW1wbGF0ZVwiPlxyXG4gICAgPGRpdiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiIFtzdHlsZS5oZWlnaHRdPVwiaXNQYWdlZCA/ICdjYWxjKDEwMCUgLSA0NHB4KScgOiAnMTAwJSdcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibG9hZGluZ190ZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRpbmdDaGFydCAmJiAhbG9hZGluZ190ZW1wbGF0ZVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImVzYy1sb2FkaW5nLW92ZXJsYXlcIiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiIFtzdHlsZS5oZWlnaHRdPVwiaXNQYWdlZCA/ICdjYWxjKDEwMCUgLSA0NHB4KScgOiAnMTAwJSdcIj5cclxuICAgICAgICA8cCBjbGFzcz1cImxhYmVsXCI+TG9hZGluZy4uLi48L3A+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG48ZGl2IFtjbGFzcy5oaWRlLWJsb2NrXT1cImxvYWRpbmdDaGFydFwiIGlkPVwie3tuYW1lfX1cIiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiIFtzdHlsZS5oZWlnaHRdPVwiaXNQYWdlZCA/ICdjYWxjKDEwMCUgLSA0NHB4KScgOiAnMTAwJSdcIj48L2Rpdj4iXX0=
|