@esfaenza/es-charts 15.2.3 → 15.2.4
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/es-charts.module.mjs +3 -1
- package/esm2020/lib/models/core/ChartLoader.mjs +3 -5
- package/fesm2015/esfaenza-es-charts.mjs +1596 -1596
- package/fesm2015/esfaenza-es-charts.mjs.map +1 -1
- package/fesm2020/esfaenza-es-charts.mjs +1553 -1553
- package/fesm2020/esfaenza-es-charts.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -10,6 +10,7 @@ import { EsVerticalChartComponent } from "./components/specializations/es-vertic
|
|
|
10
10
|
import { EsVerticalStackedChartComponent } from "./components/specializations/es-vertical-stacked-chart.component";
|
|
11
11
|
import { PageChartSelector } from "./components/chart-pager/chart-pager.component";
|
|
12
12
|
import { EsChartComponent } from "./components/specializations/es-chart.component";
|
|
13
|
+
import { ChartLoader } from './models/core/ChartLoader';
|
|
13
14
|
import * as i0 from "@angular/core";
|
|
14
15
|
/** Componenti esportati dal modulo */
|
|
15
16
|
const COMPONENTS = [
|
|
@@ -27,6 +28,7 @@ export class EsChartsModule {
|
|
|
27
28
|
return {
|
|
28
29
|
ngModule: EsChartsModule,
|
|
29
30
|
providers: [
|
|
31
|
+
ChartLoader,
|
|
30
32
|
{ provide: ESC_ANIMATIONS, useValue: config?.animations == null || config?.animations == undefined ? true : config?.animations },
|
|
31
33
|
{ provide: ESC_THEME, useValue: config?.theme || 'spiritedaway' },
|
|
32
34
|
{ provide: ESC_LOGS, useValue: config?.debugMode || false },
|
|
@@ -60,4 +62,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
60
62
|
exports: [...COMPONENTS]
|
|
61
63
|
}]
|
|
62
64
|
}] });
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXMtY2hhcnRzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2VzLWNoYXJ0cy9zcmMvbGliL2VzLWNoYXJ0cy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVyRCxPQUFPLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFL0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDNUYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDNUYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDMUYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDekcsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDcEcsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sa0VBQWtFLENBQUM7QUFDbkgsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDbkYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFFbkYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDOztBQUV4RCxzQ0FBc0M7QUFDdEMsTUFBTSxVQUFVLEdBQUc7SUFDakIsZ0JBQWdCO0lBQ2hCLG9CQUFvQjtJQUNwQixtQkFBbUI7SUFDbkIsMEJBQTBCO0lBQzFCLHdCQUF3QjtJQUN4QiwrQkFBK0I7SUFDL0IsaUJBQWlCO0lBQ2pCLG9CQUFvQjtDQUNyQixDQUFBO0FBT0QsTUFBTSxPQUFPLGNBQWM7SUFFekIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUE2QjtRQUMxQyxPQUFPO1lBQ0wsUUFBUSxFQUFFLGNBQWM7WUFDeEIsU0FBUyxFQUFFO2dCQUNULFdBQVc7Z0JBQ1gsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsVUFBVSxJQUFJLElBQUksSUFBSSxNQUFNLEVBQUUsVUFBVSxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFO2dCQUNoSSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLElBQUksY0FBYyxFQUFFO2dCQUNqRSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxTQUFTLElBQUksS0FBSyxFQUFFO2dCQUMzRCxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxPQUFPLElBQUksV0FBVyxFQUFFO2FBQ25FO1NBQ0YsQ0FBQztJQUNKLENBQUM7OzJHQWJVLGNBQWM7NEdBQWQsY0FBYyxpQkFmekIsZ0JBQWdCO1FBQ2hCLG9CQUFvQjtRQUNwQixtQkFBbUI7UUFDbkIsMEJBQTBCO1FBQzFCLHdCQUF3QjtRQUN4QiwrQkFBK0I7UUFDL0IsaUJBQWlCO1FBQ2pCLG9CQUFvQixhQUlWLFlBQVksYUFYdEIsZ0JBQWdCO1FBQ2hCLG9CQUFvQjtRQUNwQixtQkFBbUI7UUFDbkIsMEJBQTBCO1FBQzFCLHdCQUF3QjtRQUN4QiwrQkFBK0I7UUFDL0IsaUJBQWlCO1FBQ2pCLG9CQUFvQjs0R0FRVCxjQUFjLFlBSmYsWUFBWTsyRkFJWCxjQUFjO2tCQUwxQixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsWUFBWSxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUM7b0JBQzdCLE9BQU8sRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDO2lCQUN6QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBNb2R1bGVXaXRoUHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcblxyXG5pbXBvcnQgeyBFc0NoYXJ0c01vZHVsZUNvbmZpZyB9IGZyb20gJy4vbW9kZWxzL0VzQ2hhYXJ0c01vZHVsZUNvbmZpZyc7XHJcbmltcG9ydCB7IEJhc2VBZGFwdGVyIH0gZnJvbSAnLi9hZGFwdGVycy9CYXNlQWRhcHRlcic7XHJcblxyXG5pbXBvcnQgeyBFU0NfQU5JTUFUSU9OUywgRVNDX1RIRU1FLCBFU0NfTE9HUyB9IGZyb20gJy4vdG9rZW5zJztcclxuXHJcbmltcG9ydCB7IEVzTGluZUNoYXJ0Q29tcG9uZW50IH0gZnJvbSBcIi4vY29tcG9uZW50cy9zcGVjaWFsaXphdGlvbnMvZXMtbGluZS1jaGFydC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgRXNBcmVhQ2hhcnRDb21wb25lbnQgfSBmcm9tIFwiLi9jb21wb25lbnRzL3NwZWNpYWxpemF0aW9ucy9lcy1hcmVhLWNoYXJ0LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBFc1BpZUNoYXJ0Q29tcG9uZW50IH0gZnJvbSBcIi4vY29tcG9uZW50cy9zcGVjaWFsaXphdGlvbnMvZXMtcGllLWNoYXJ0LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBFc1ZlcnRpY2FsMkRDaGFydENvbXBvbmVudCB9IGZyb20gXCIuL2NvbXBvbmVudHMvc3BlY2lhbGl6YXRpb25zL2VzLXZlcnRpY2FsLTJkLWNoYXJ0LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBFc1ZlcnRpY2FsQ2hhcnRDb21wb25lbnQgfSBmcm9tIFwiLi9jb21wb25lbnRzL3NwZWNpYWxpemF0aW9ucy9lcy12ZXJ0aWNhbC1jaGFydC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgRXNWZXJ0aWNhbFN0YWNrZWRDaGFydENvbXBvbmVudCB9IGZyb20gXCIuL2NvbXBvbmVudHMvc3BlY2lhbGl6YXRpb25zL2VzLXZlcnRpY2FsLXN0YWNrZWQtY2hhcnQuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFBhZ2VDaGFydFNlbGVjdG9yIH0gZnJvbSBcIi4vY29tcG9uZW50cy9jaGFydC1wYWdlci9jaGFydC1wYWdlci5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgRXNDaGFydENvbXBvbmVudCB9IGZyb20gXCIuL2NvbXBvbmVudHMvc3BlY2lhbGl6YXRpb25zL2VzLWNoYXJ0LmNvbXBvbmVudFwiO1xyXG5cclxuaW1wb3J0IHsgQ2hhcnRMb2FkZXIgfSBmcm9tICcuL21vZGVscy9jb3JlL0NoYXJ0TG9hZGVyJztcclxuXHJcbi8qKiBDb21wb25lbnRpIGVzcG9ydGF0aSBkYWwgbW9kdWxvICovXHJcbmNvbnN0IENPTVBPTkVOVFMgPSBbXHJcbiAgRXNDaGFydENvbXBvbmVudCxcclxuICBFc0xpbmVDaGFydENvbXBvbmVudCxcclxuICBFc1BpZUNoYXJ0Q29tcG9uZW50LFxyXG4gIEVzVmVydGljYWwyRENoYXJ0Q29tcG9uZW50LFxyXG4gIEVzVmVydGljYWxDaGFydENvbXBvbmVudCxcclxuICBFc1ZlcnRpY2FsU3RhY2tlZENoYXJ0Q29tcG9uZW50LFxyXG4gIFBhZ2VDaGFydFNlbGVjdG9yLFxyXG4gIEVzQXJlYUNoYXJ0Q29tcG9uZW50XHJcbl1cclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXHJcbiAgZGVjbGFyYXRpb25zOiBbLi4uQ09NUE9ORU5UU10sXHJcbiAgZXhwb3J0czogWy4uLkNPTVBPTkVOVFNdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFc0NoYXJ0c01vZHVsZSB7XHJcblxyXG4gIHN0YXRpYyBmb3JSb290KGNvbmZpZz86IEVzQ2hhcnRzTW9kdWxlQ29uZmlnKTogTW9kdWxlV2l0aFByb3ZpZGVyczxFc0NoYXJ0c01vZHVsZT4ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbmdNb2R1bGU6IEVzQ2hhcnRzTW9kdWxlLFxyXG4gICAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICBDaGFydExvYWRlcixcclxuICAgICAgICB7IHByb3ZpZGU6IEVTQ19BTklNQVRJT05TLCB1c2VWYWx1ZTogY29uZmlnPy5hbmltYXRpb25zID09IG51bGwgfHwgY29uZmlnPy5hbmltYXRpb25zID09IHVuZGVmaW5lZCA/IHRydWUgOiBjb25maWc/LmFuaW1hdGlvbnMgfSxcclxuICAgICAgICB7IHByb3ZpZGU6IEVTQ19USEVNRSwgdXNlVmFsdWU6IGNvbmZpZz8udGhlbWUgfHwgJ3NwaXJpdGVkYXdheScgfSxcclxuICAgICAgICB7IHByb3ZpZGU6IEVTQ19MT0dTLCB1c2VWYWx1ZTogY29uZmlnPy5kZWJ1Z01vZGUgfHwgZmFsc2UgfSxcclxuICAgICAgICB7IHByb3ZpZGU6IEJhc2VBZGFwdGVyLCB1c2VDbGFzczogY29uZmlnPy5hZGFwdGVyIHx8IEJhc2VBZGFwdGVyIH1cclxuICAgICAgXVxyXG4gICAgfTtcclxuICB9XHJcbn0iXX0=
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { Inject, Injectable } from '@angular/core';
|
|
2
2
|
import { ChartThemes } from './ChartThemes';
|
|
3
3
|
import { ESC_LOGS } from '../../tokens';
|
|
4
|
-
import { EsChartsModule } from '../../es-charts.module';
|
|
5
4
|
import * as i0 from "@angular/core";
|
|
6
5
|
/**
|
|
7
6
|
* Classe di supporto al caricamento dinamico dei vari pezzi di amcharts che mi servono per il grafico (temi, locali, ecc...)
|
|
@@ -203,12 +202,11 @@ export class ChartLoader {
|
|
|
203
202
|
}
|
|
204
203
|
}
|
|
205
204
|
ChartLoader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ChartLoader, deps: [{ token: ESC_LOGS }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
206
|
-
ChartLoader.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ChartLoader
|
|
205
|
+
ChartLoader.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ChartLoader });
|
|
207
206
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ChartLoader, decorators: [{
|
|
208
|
-
type: Injectable
|
|
209
|
-
args: [{ providedIn: EsChartsModule }]
|
|
207
|
+
type: Injectable
|
|
210
208
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
211
209
|
type: Inject,
|
|
212
210
|
args: [ESC_LOGS]
|
|
213
211
|
}] }]; } });
|
|
214
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2hhcnRMb2FkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcy1jaGFydHMvc3JjL2xpYi9tb2RlbHMvY29yZS9DaGFydExvYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzNDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDeEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQUV4RDs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUVILE1BQU0sT0FBTyxXQUFXO0lBc0J0Qjs7T0FFRztJQUNILFlBQXNDLElBQWE7UUFBYixTQUFJLEdBQUosSUFBSSxDQUFTO1FBdkJuRDs7V0FFRztRQUNLLHdCQUFtQixHQUFZLEtBQUssQ0FBQztRQUU3Qzs7V0FFRztRQUNLLG9CQUFlLEdBQVcsRUFBRSxDQUFDO1FBRXJDOztXQUVHO1FBQ0ssZUFBVSxHQUFPLEVBQUUsQ0FBQztRQUU1Qjs7V0FFRztRQUNLLHNCQUFpQixHQUFPLEVBQUUsQ0FBQztJQUtvQixDQUFDO0lBRXhEOzs7OztPQUtHO0lBQ0ksZUFBZSxDQUFDLFVBQWU7UUFDcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtZQUM3QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUNuRSxJQUFJLENBQUMsR0FBRyxDQUFDLHVCQUF1QixHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDekQsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxD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Q0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxHQUFHLENBQUMsSUFBWTtRQUNkLElBQUksSUFBSSxDQUFDLElBQUk7WUFDWCxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ2hELENBQUM7O3dHQXZNVSxXQUFXLGtCQXlCRixRQUFROzRHQXpCakIsV0FBVyxjQURFLGNBQWM7MkZBQzNCLFdBQVc7a0JBRHZCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFOzswQkEwQjNCLE1BQU07MkJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDaGFydFRoZW1lcyB9IGZyb20gJy4vQ2hhcnRUaGVtZXMnXHJcbmltcG9ydCB7IEVTQ19MT0dTIH0gZnJvbSAnLi4vLi4vdG9rZW5zJztcclxuaW1wb3J0IHsgRXNDaGFydHNNb2R1bGUgfSBmcm9tICcuLi8uLi9lcy1jaGFydHMubW9kdWxlJztcclxuXHJcbi8qKlxyXG4gKiBDbGFzc2UgZGkgc3VwcG9ydG8gYWwgY2FyaWNhbWVudG8gZGluYW1pY28gZGVpIHZhcmkgcGV6emkgZGkgYW1jaGFydHMgY2hlIG1pIHNlcnZvbm8gcGVyIGlsIGdyYWZpY28gKHRlbWksIGxvY2FsaSwgZWNjLi4uKVxyXG4gKiBcclxuICogRXNzZW56aWFsbWVudGUgb2duaSB2b2x0YSBjaGUgdmllbmUgY3JlYXRvIHVuIGdyYWZpY28sIHF1ZXN0byBhY3F1aXNpc2NlIGlsIHRlbWEgZSBpbCBsb2NhbGUgYXBwbGljYXRvIElOIFFVRUwgTU9NRU5UTyxcclxuICogcXVlc3RvIHNpZ25pZmljYSBjaGUgcGVyIGNyZWFyZSBkdWUgZ3JhZmljaSBjb24gdGVtaSBkaXZlcnNpIGJpc29nbmEgZmFyZTpcclxuICogXHJcbiAqIDEpIENhcmljYW1lbnRvIHRlbWEgMVxyXG4gKiBcclxuICogMikgQ3JlYXppb25lIGdyYWZpY28gMVxyXG4gKiBcclxuICogMykgU2NhcmljYW1lbnRvIHRlbWEgMVxyXG4gKiBcclxuICogMykgQ2FyaWNhbWVudG8gdGVtYSAyXHJcbiAqIFxyXG4gKiA0KSBDcmVhemlvbmUgZ3JhZmljbyAyXHJcbiAqIFxyXG4gKi9cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiBFc0NoYXJ0c01vZHVsZSB9KVxyXG5leHBvcnQgY2xhc3MgQ2hhcnRMb2FkZXIge1xyXG5cclxuICAvKipcclxuICAgKiBJbmRpY2Egc2UgYXR0dWFsbWVudGUgaG8gbGUgYW5pbWF6aW9uaSBjYXJpY2F0ZSBpbiBtb2RvIGRhIG5vbiByaWNhcmljYXJsZSBpbnV0aWxtZW50ZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgQW5pbWF0aW9uc0FyZUxvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBJbmRpY2EgbCd1bHRpbW8gdGVtYSBjYXJpY2F0byBpbiBtb2RvIGRhIG5vbiByaWNhcmljYXJsbyBpbnV0aWxtZW50ZSBxdWFsb3JhIGlsIHByb3NzaW1vIGdyYWZpY28gZGEgY3JlYXJlIHJpY2hpZWRhIGxvIHN0ZXNzbyB0ZW1hXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBMYXN0TG9hZGVkVGhlbWU6IHN0cmluZyA9IFwiXCI7XHJcblxyXG4gIC8qKlxyXG4gICAqIENhY2hlIGRlaSB0ZW1pIChtb2R1bGkgY2FyaWNhdGkgZGluYW1pY2FtZW50ZSlcclxuICAgKi9cclxuICBwcml2YXRlIHRoZW1lQ2FjaGU6IHt9ID0ge307XHJcblxyXG4gIC8qKlxyXG4gICAqIENhY2hlIGRlbGxlIGxvY2FsaXp6YXppb25pIChtb2R1bGkgY2FyaWNhdGkgZGluYW1pY2FtZW50ZSlcclxuICAgKi9cclxuICBwcml2YXRlIGxvY2FsaXphdGlvbkNhY2hlOiB7fSA9IHt9O1xyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IoQEluamVjdChFU0NfTE9HUykgcHJpdmF0ZSBsb2dzOiBib29sZWFuKSB7IH1cclxuXHJcbiAgLyoqXHJcbiAgICogQXBwbGljYSBpbCB0ZW1hIGNvbiBsZSBhbmltYXppb25pIGFsbCdpc3RhbnphIGdsb2JhbGUgZGkgYW1DaGFydHNcclxuICAgKiBcclxuICAgKiBAcGFyYW0ge09iamVjdH0gY2hhcnRzQ29yZSBJc3RhbnphIGdsb2JhbGUgZGkgYW1DaGFydHNcclxuICAgKiBAcmV0dXJucyB7UHJvbWlzZX0gUHJvbWlzZSBjaGUgaWRlbnRpZmljYSBsYSBmaW5lIGRlbCBjYXJpY2FtZW50b1xyXG4gICAqL1xyXG4gIHB1YmxpYyBhcHBseUFuaW1hdGlvbnMoY2hhcnRzQ29yZTogYW55KTogUHJvbWlzZTxhbnk+IHtcclxuICAgIGlmICghdGhpcy5BbmltYXRpb25zQXJlTG9hZGVkKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmltcG9ydElmTmVlZGVkKCd0aGVtZXMnLCBDaGFydFRoZW1lcy5hbmltYXRlZCkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2coXCJDT1JFOiBBcHBseWluZyB0aGVtZSBcIiArIENoYXJ0VGhlbWVzLmFuaW1hdGVkKTtcclxuICAgICAgICBjaGFydHNDb3JlLnVzZVRoZW1lKHRoaXMudGhlbWVDYWNoZVtDaGFydFRoZW1lcy5hbmltYXRlZF0pO1xyXG4gICAgICAgIHRoaXMuQW5pbWF0aW9uc0FyZUxvYWRlZCA9IHRydWU7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMubG9nKFwiQ09SRTogdGhlbWUgYWxyZWFkeSBhcHBseWVkIFwiICsgQ2hhcnRUaGVtZXMuYW5pbWF0ZWQpO1xyXG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHsgcmVzb2x2ZSh0cnVlKSB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlLWFwcGxpY2EgaWwgdGVtYSBjb24gbGUgYW5pbWF6aW9uaSBkYWxsJ2lzdGFuemEgZ2xvYmFsZSBkaSBhbUNoYXJ0c1xyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjaGFydHNDb3JlIElzdGFuemEgZ2xvYmFsZSBkaSBhbUNoYXJ0c1xyXG4gICAqIEByZXR1cm5zIHtQcm9taXNlfSBQcm9taXNlIGNoZSBpZGVudGlmaWNhIGxhIGZpbmUgZGVsbG8gc2Nhcmljb1xyXG4gICAqL1xyXG4gIHVuYXBwbHlBbmltYXRpb25zKGNoYXJ0c0NvcmU6IGFueSk6IFByb21pc2U8YW55PiB7XHJcbiAgICBpZiAodGhpcy5BbmltYXRpb25zQXJlTG9hZGVkKSB7XHJcbiAgICAgIHRoaXMubG9nKFwiQ09SRTogQW5pbWF0aW9ucyBpbiB1c2UsIHVuYXBwbHlpbmcgdGhlbWUgXCIgKyBDaGFydFRoZW1lcy5hbmltYXRlZCk7XHJcbiAgICAgIGNoYXJ0c0NvcmUudW51c2VUaGVtZSh0aGlzLnRoZW1lQ2FjaGVbQ2hhcnRUaGVtZXMuYW5pbWF0ZWRdKTtcclxuICAgICAgdGhpcy5BbmltYXRpb25zQXJlTG9hZGVkID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMubG9nKFwiQ09SRTogQW5pbWF0aW9ucyBhbHJlYWR5IHVudXNlZCwgbm8gbmVlZCB0byB1bmFwcGx5IHRoZW1cIik7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHsgcmVzb2x2ZSh0cnVlKSB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFwcGxpY2EgaWwgdGVtYSBzcGVjaWZpY2F0byBhbGwnaXN0YW56YSBnbG9iYWxlIGRpIGFtQ2hhcnRzXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtPYmplY3R9IGNoYXJ0c0NvcmUgSXN0YW56YSBnbG9iYWxlIGRpIGFtQ2hhcnRzXHJcbiAgICogQHBhcmFtIHsnc3Bpcml0ZWRhd2F5JyB8ICdtb29ucmlzZWtpbmdkb20nIHwgJ2Zyb3plbicgfCAnZGFyaycgfCAna2VsbHknIHwgJ21hdGVyaWFsJyB8ICdkYXRhdml6JyB8ICdub25lJ30gdGhlbWUgVGVtYSBkYSBhcHBsaWNhcmVcclxuICAgKiBAcmV0dXJucyB7UHJvbWlzZX0gUHJvbWlzZSBjaGUgaWRlbnRpZmljYSBsYSBmaW5lIGRlbCBjYXJpY2FtZW50b1xyXG4gICAqL1xyXG4gIGFwcGx5VGhlbWUoY2hhcnRzQ29yZTogYW55LCB0aGVtZTogJ3NwaXJpdGVkYXdheScgfCAnbW9vbnJpc2VraW5nZG9tJyB8ICdmcm96ZW4nIHwgJ2RhcmsnIHwgJ2tlbGx5JyB8ICdtYXRlcmlhbCcgfCAnZGF0YXZpeicgfCAnbm9uZScpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgLy8gVWx0aW1vIHRlbWEgYXBwbGljYXRvIMOoIGxvIHN0ZXNzbyBjaGUgbWkgw6ggc3RhdG8gcmljaGllc3RvIGRpIGFwcGxpY2FyZSAtLT4gTk8tT1BcclxuICAgIGlmICh0aGlzLkxhc3RMb2FkZWRUaGVtZSA9PSB0aGVtZSkge1xyXG4gICAgICB0aGlzLmxvZyhcIkNPUkU6IHRoZW1lIGFscmVhZHkgYXBwbGllZCBcIiArIHRoZW1lKTtcclxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7IHJlc29sdmUodHJ1ZSkgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gU2NhcmljbyBpbCB0ZW1hIHByZWNlZGVudGUgYSBwcmVzY2luZGVyZSwgb3JtYWkgbm9uIG1pIHNlcnZlIHBpw7lcclxuICAgIHRoaXMudW5hcHBseVByZXZpb3VzVGhlbWUoY2hhcnRzQ29yZSlcclxuXHJcbiAgICAvLyBJbCB0ZW1hIMOoIGlsIG5vbmUgLS0+IHJlZ2lzdHJvIGxhIGNvc2EgZSBiYXN0YSwgaWwgdGVtYSBwcmVjZWRlbnRlIMOoIHN0YXRvIHJpbW9zc28gc3ViaXRvIHF1aSBzb3ByYSBeXHJcbiAgICBpZiAodGhlbWUgPT0gQ2hhcnRUaGVtZXMubm9uZSkge1xyXG4gICAgICB0aGlzLkxhc3RMb2FkZWRUaGVtZSA9IENoYXJ0VGhlbWVzLm5vbmU7XHJcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4geyByZXNvbHZlKHRydWUpIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIElsIHRlbWEgw6ggZGl2ZXJzbyBkYWwgcHJlY2VkZW50ZSBlIG5vbiDDqCBpbCB0ZW1hIHZ1b3RvIC0tPiBJbXBvcnRvIGlsIHRlbWEgc3BlY2lmaWNhdG8gc2Ugbm9uIHByZXNlbnRlIGluIG1lbW9yaWEgZSBsbyBhcHBsaWNvIGFsIGdyYWZpY28gYXR0dWFsZVxyXG4gICAgcmV0dXJuIHRoaXMuaW1wb3J0SWZOZWVkZWQoJ3RoZW1lcycsIHRoZW1lKS50aGVuKCgpID0+IHtcclxuICAgICAgdGhpcy5sb2coXCJDT1JFOiBBcHBseWluZyB0aGVtZSBcIiArIHRoZW1lKTtcclxuICAgICAgY2hhcnRzQ29yZS51c2VUaGVtZSh0aGlzLnRoZW1lQ2FjaGVbdGhlbWVdKTtcclxuICAgICAgdGhpcy5MYXN0TG9hZGVkVGhlbWUgPSB0aGVtZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGUtYXBwbGljYSBpbCB0ZW1hIHByZWNlZGVudGUgZGFsbCdpc3RhbnphIGdsb2JhbGUgZGkgYW1DaGFydHNcclxuICAgKiBcclxuICAgKiBAcGFyYW0ge09iamVjdH0gY2hhcnRzQ29yZSBJc3RhbnphIGdsb2JhbGUgZGkgYW1DaGFydHNcclxuICAgKi9cclxuICB1bmFwcGx5UHJldmlvdXNUaGVtZShjaGFydHNDb3JlOiBhbnkpIHtcclxuICAgIGlmICghdGhpcy5MYXN0TG9hZGVkVGhlbWUgfHwgdGhpcy5MYXN0TG9hZGVkVGhlbWUgPT0gQ2hhcnRUaGVtZXMubm9uZSlcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMubG9nKFwiQ09SRTogVW5hcHBseWluZyBwcmV2aW91c2x5IHVzZWQgdGhlbWUgXCIgKyB0aGlzLkxhc3RMb2FkZWRUaGVtZSk7XHJcbiAgICBjaGFydHNDb3JlLnVudXNlVGhlbWUodGhpcy50aGVtZUNhY2hlW3RoaXMuTGFzdExvYWRlZFRoZW1lXSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFwcGxpY2EgaWwgbG9jYWxlIHNwZWNpZmljYXRvIGFsbCdpc3RhbnphIHNwZWNpZmljYSBkZWwgZ3JhZmljb1xyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7YW1DaGFydHMuQ2hhcnR9IGNoYXJ0IElzdGFuemEgc3BlY2lmaWNhIGRlbCBncmFmaWNvIGEgY3VpIGFwcGxpY2FyZSBpbCBsb2NhbGVcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gbG9jYWxlIExvY2FsZSBkYSBhcHBsaWNhcmVcclxuICAgKiBAcmV0dXJucyB7UHJvbWlzZX0gUHJvbWlzZSBjaGUgaWRlbnRpZmljYSBsYSBmaW5lIGRlbCBjYXJpY2FtZW50b1xyXG4gICAqL1xyXG4gIGFwcGx5TG9jYWxlKGNoYXJ0OiBhbnksIGxvY2FsZTogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmltcG9ydElmTmVlZGVkKCdsYW5nJywgbG9jYWxlKS50aGVuKCgpID0+IHtcclxuICAgICAgdGhpcy5sb2coXCJDaGFydCBcIiArIGNoYXJ0Lmh0bWxDb250YWluZXIuaWQgKyBcIjogYXBwbHlpbmcgbG9jYWxlIFwiICsgbG9jYWxlKTtcclxuICAgICAgY2hhcnQubGFuZ3VhZ2UubG9jYWxlID0gdGhpcy5sb2NhbGl6YXRpb25DYWNoZVtsb2NhbGVdO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQZXJtZXR0ZSBkaSBpbXBvcnRhcmUsIHNlIHNlcnZlIHVuIGRhdG8gdGVtYSBvIGxvY2FsaXp6YXppb25lXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHsnbGFuZycgfCAndGhlbWVzJ30gd2hhdCBPZ2dldHRvIGRhIGltcG9ydGFyZSwgc2UgbG9jYWxpenphemlvbmUgbyB0ZW1hXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGl0ZW0gQ2hpYXZlIGRlbGwnb2dnZXR0byBkYSBpbXBvcnRhcmVcclxuICAgKiBcclxuICAgKiBAcmV0dXJucyB7UHJvbWlzZX0gUHJvbWlzZSBjaGUgaWRlbnRpZmljYSBsYSBmaW5lIGRlbCBjYXJpY2FtZW50b1xyXG4gICAqL1xyXG4gIGltcG9ydElmTmVlZGVkKHdoYXQ6ICdsYW5nJyB8ICd0aGVtZXMnLCBpdGVtOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xyXG5cclxuICAgIC8vIFNlIHN0byBjZXJjYW5kbyBkaSBjYXJpY2FyZSBxdWFsY29zYSBkaSBnacOgIGNhcmljYXRvIG5vbiBmYWNjaW8gbnVsbGFcclxuICAgIGlmICghKHdoYXQgPT0gJ3RoZW1lcycgJiYgIXRoaXMudGhlbWVDYWNoZVtpdGVtXSkgJiYgISh3aGF0ID09ICdsYW5nJyAmJiAhdGhpcy5sb2NhbGl6YXRpb25DYWNoZVtpdGVtXSkpIHtcclxuICAgICAgdGhpcy5sb2coXCJDT1JFOiBcIiArICh3aGF0ID09ICdsYW5nJyA/IFwiTGFuZ3VhZ2UgXCIgOiBcIlRoZW1lIFwiKSArIGl0ZW0gKyBcIiBhbHJlYWR5IGxvYWRlZFwiKTtcclxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7IHJlc29sdmUodHJ1ZSkgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5sb2coXCJDT1JFOiBMb2FkaW5nIFwiICsgKHdoYXQgPT0gJ2xhbmcnID8gXCJsYW5ndWFnZSBcIiA6IFwidGhlbWUgXCIpICsgaXRlbSk7XHJcblxyXG4gICAgLypcclxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqKioqIEFUVEVOWklPTkUgKioqKioqKipcclxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgICAqIFxyXG4gICAgICogIFNlIHN0YWkgdmVkZW5kbyBxdWVzdG8gY29kaWNlIGRpIGltcG9ydCBlIHN0YWkgdmFsdXRhbmRvIGRpIHJpc2NyaXZlcmxvIGNvbWU6XHJcbiAgICAgKiBcclxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFYgICAgICAgViAgIFxyXG4gICAgICogICAgICBpbXBvcnQoYEBhbWNoYXJ0cy9hbWNoYXJ0czQvJHt3aGF0fS8ke2l0ZW19YCkudGhlbihtb2R1bGUgPT4ge1xyXG4gICAgICogICAgICAgIGlmICh3aGF0ID09ICd0aGVtZXMnKSB0aGlzLnRoZW1lQ2FjaGVbaXRlbV0gPSBtb2R1bGUuZGVmYXVsdDtcclxuICAgICAqICAgICAgICBlbHNlIGlmICh3aGF0ID09ICdsYW5nJykgdGhpcy5sb2NhbGl6YXRpb25DYWNoZVtpdGVtXSA9IG1vZHVsZS5kZWZhdWx0O1xyXG4gICAgICogICAgICB9KTtcclxuICAgICAqIFxyXG4gICAgICogIFNhcHBpIGNoZSDDqCB1bmEgcGVzc2ltYSBpZGVhLiBHbGkgaW1wb3J0IHNvbm8gdmFsdXRhdGkgZGEgd2VicGFjayBpbiBjb21waWxldGltZSBwZXIgZ2VuZXJhcmUgaSBjaHVuayxcclxuICAgICAqICBtZXR0ZXJlIGxhIG5hdmlnYXppb25lIGFnbGkgaW1wb3J0IGNvbiBsYSBjb25jYXRlbmF6aW9uZSB2aWVuZSBwcmVzbyBtYWxpc3NpbW8gZWQgZXNzZW56aWFsbWVudGUgZGljZSBhIHdlYnBhY2tcclxuICAgICAqICBkaSB0aXJhcmUgc3UgZSBidW5kbGFyZSBsJ2ludGVyYSBub2RlX21vZHVsZXMuIERpdmVydGVudGUsIG5vP1xyXG4gICAgICpcclxuICAgICAqL1xyXG5cclxuICAgIHN3aXRjaCAod2hhdCkge1xyXG4gICAgICBjYXNlICd0aGVtZXMnOlxyXG4gICAgICAgIHN3aXRjaCAoaXRlbSkge1xyXG4gICAgICAgICAgY2FzZSBDaGFydFRoZW1lcy5zcGlyaXRlZGF3YXk6XHJcbiAgICAgICAgICAgIHJldHVybiBpbXBvcnQoXCJAYW1jaGFydHMvYW1jaGFydHM0L3RoZW1lcy9zcGlyaXRlZGF3YXlcIikudGhlbih0aGVtZSA9PiB0aGlzLnRoZW1lQ2FjaGVbaXRlbV0gPSB0aGVtZS5kZWZhdWx0KTtcclxuICAgICAgICAgIGNhc2UgQ2hhcnRUaGVtZXMubW9vbnJpc2VraW5nZG9tOlxyXG4gICAgICAgICAgICByZXR1cm4gaW1wb3J0KFwiQGFtY2hhcnRzL2FtY2hhcnRzNC90aGVtZXMvbW9vbnJpc2VraW5nZG9tXCIpLnRoZW4odGhlbWUgPT4gdGhpcy50aGVtZUNhY2hlW2l0ZW1dID0gdGhlbWUuZGVmYXVsdCk7XHJcbiAgICAgICAgICBjYXNlIENoYXJ0VGhlbWVzLmZyb3plbjpcclxuICAgICAgICAgICAgcmV0dXJuIGltcG9ydChcIkBhbWNoYXJ0cy9hbWNoYXJ0czQvdGhlbWVzL2Zyb3plblwiKS50aGVuKHRoZW1lID0+IHRoaXMudGhlbWVDYWNoZVtpdGVtXSA9IHRoZW1lLmRlZmF1bHQpO1xyXG4gICAgICAgICAgY2FzZSBDaGFydFRoZW1lcy5kYXJrOlxyXG4gICAgICAgICAgICByZXR1cm4gaW1wb3J0KFwiQGFtY2hhcnRzL2FtY2hhcnRzNC90aGVtZXMvZGFya1wiKS50aGVuKHRoZW1lID0+IHRoaXMudGhlbWVDYWNoZVtpdGVtXSA9IHRoZW1lLmRlZmF1bHQpO1xyXG4gICAgICAgICAgY2FzZSBDaGFydFRoZW1lcy5rZWxseTpcclxuICAgICAgICAgICAgcmV0dXJuIGltcG9ydChcIkBhbWNoYXJ0cy9hbWNoYXJ0czQvdGhlbWVzL2tlbGx5XCIpLnRoZW4odGhlbWUgPT4gdGhpcy50aGVtZUNhY2hlW2l0ZW1dID0gdGhlbWUuZGVmYXVsdCk7XHJcbiAgICAgICAgICBjYXNlIENoYXJ0VGhlbWVzLm1hdGVyaWFsOlxyXG4gICAgICAgICAgICByZXR1cm4gaW1wb3J0KFwiQGFtY2hhcnRzL2FtY2hhcnRzNC90aGVtZXMvbWF0ZXJpYWxcIikudGhlbih0aGVtZSA9PiB0aGlzLnRoZW1lQ2FjaGVbaXRlbV0gPSB0aGVtZS5kZWZhdWx0KTtcclxuICAgICAgICAgIGNhc2UgQ2hhcnRUaGVtZXMuZGF0YXZpejpcclxuICAgICAgICAgICAgcmV0dXJuIGltcG9ydChcIkBhbWNoYXJ0cy9hbWNoYXJ0czQvdGhlbWVzL2RhdGF2aXpcIikudGhlbih0aGVtZSA9PiB0aGlzLnRoZW1lQ2FjaGVbaXRlbV0gPSB0aGVtZS5kZWZhdWx0KTtcclxuICAgICAgICAgIGNhc2UgQ2hhcnRUaGVtZXMuYW5pbWF0ZWQ6XHJcbiAgICAgICAgICAgIHJldHVybiBpbXBvcnQoXCJAYW1jaGFydHMvYW1jaGFydHM0L3RoZW1lcy9hbmltYXRlZFwiKS50aGVuKHRoZW1lID0+IHRoaXMudGhlbWVDYWNoZVtpdGVtXSA9IHRoZW1lLmRlZmF1bHQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnbGFuZyc6XHJcbiAgICAgICAgc3dpdGNoIChpdGVtKSB7XHJcbiAgICAgICAgICBjYXNlICdpdC1JVCc6XHJcbiAgICAgICAgICAgIHJldHVybiBpbXBvcnQoXCJAYW1jaGFydHMvYW1jaGFydHM0L2xhbmcvaXRfSVRcIikudGhlbihsYW5nID0+IHRoaXMubG9jYWxpemF0aW9uQ2FjaGVbaXRlbV0gPSBsYW5nLmRlZmF1bHQpO1xyXG4gICAgICAgICAgY2FzZSAnZW4tVVMnOlxyXG4gICAgICAgICAgICByZXR1cm4gaW1wb3J0KFwiQGFtY2hhcnRzL2FtY2hhcnRzNC9sYW5nL2VuX1VTXCIpLnRoZW4obGFuZyA9PiB0aGlzLmxvY2FsaXphdGlvbkNhY2hlW2l0ZW1dID0gbGFuZy5kZWZhdWx0KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5sb2coXCJDT1JFOiBMb2FkaW5nIEZhaWxlZC4gXCIgKyAod2hhdCA9PSAnbGFuZycgPyBcIkxhbmd1YWdlIFwiIDogXCJUaGVtZVwiKSArIFwiIG5vdCByZWNvZ25pemVkOiBcIiArIGl0ZW0pO1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7IHJlc29sdmUodHJ1ZSkgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgbG9nKHRleHQ6IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMubG9ncylcclxuICAgICAgY29uc29sZS5sb2coXCJAZXNmYWVuemEvZXMtY2hhcnRzOiBcIiArIHRleHQpO1xyXG4gIH1cclxufSJdfQ==
|
|
212
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2hhcnRMb2FkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcy1jaGFydHMvc3JjL2xpYi9tb2RlbHMvY29yZS9DaGFydExvYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzNDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBR3hDOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBRUgsTUFBTSxPQUFPLFdBQVc7SUFzQnRCOztPQUVHO0lBQ0gsWUFBc0MsSUFBYTtRQUFiLFNBQUksR0FBSixJQUFJLENBQVM7UUF2Qm5EOztXQUVHO1FBQ0ssd0JBQW1CLEdBQVksS0FBSyxDQUFDO1FBRTdDOztXQUVHO1FBQ0ssb0JBQWUsR0FBVyxFQUFFLENBQUM7UUFFckM7O1dBRUc7UUFDSyxlQUFVLEdBQU8sRUFBRSxDQUFDO1FBRTVCOztXQUVHO1FBQ0ssc0JBQWlCLEdBQU8sRUFBRSxDQUFDO0lBS29CLENBQUM7SUFFeEQ7Ozs7O09BS0c7SUFDSSxlQUFlLENBQUMsVUFBZTtRQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFO1lBQzdCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7Z0JBQ25FLElBQUksQ0FBQyxHQUFHLENBQUMsdUJBQXVCLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUN6RCxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7Z0JBQzNELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7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QUNILEdBQUcsQ0FBQyxJQUFZO1FBQ2QsSUFBSSxJQUFJLENBQUMsSUFBSTtZQUNYLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDaEQsQ0FBQzs7d0dBdk1VLFdBQVcsa0JBeUJGLFFBQVE7NEdBekJqQixXQUFXOzJGQUFYLFdBQVc7a0JBRHZCLFVBQVU7OzBCQTBCSSxNQUFNOzJCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ2hhcnRUaGVtZXMgfSBmcm9tICcuL0NoYXJ0VGhlbWVzJ1xyXG5pbXBvcnQgeyBFU0NfTE9HUyB9IGZyb20gJy4uLy4uL3Rva2Vucyc7XHJcbmltcG9ydCB7IEVzQ2hhcnRzTW9kdWxlIH0gZnJvbSAnLi4vLi4vZXMtY2hhcnRzLm1vZHVsZSc7XHJcblxyXG4vKipcclxuICogQ2xhc3NlIGRpIHN1cHBvcnRvIGFsIGNhcmljYW1lbnRvIGRpbmFtaWNvIGRlaSB2YXJpIHBlenppIGRpIGFtY2hhcnRzIGNoZSBtaSBzZXJ2b25vIHBlciBpbCBncmFmaWNvICh0ZW1pLCBsb2NhbGksIGVjYy4uLilcclxuICogXHJcbiAqIEVzc2VuemlhbG1lbnRlIG9nbmkgdm9sdGEgY2hlIHZpZW5lIGNyZWF0byB1biBncmFmaWNvLCBxdWVzdG8gYWNxdWlzaXNjZSBpbCB0ZW1hIGUgaWwgbG9jYWxlIGFwcGxpY2F0byBJTiBRVUVMIE1PTUVOVE8sXHJcbiAqIHF1ZXN0byBzaWduaWZpY2EgY2hlIHBlciBjcmVhcmUgZHVlIGdyYWZpY2kgY29uIHRlbWkgZGl2ZXJzaSBiaXNvZ25hIGZhcmU6XHJcbiAqIFxyXG4gKiAxKSBDYXJpY2FtZW50byB0ZW1hIDFcclxuICogXHJcbiAqIDIpIENyZWF6aW9uZSBncmFmaWNvIDFcclxuICogXHJcbiAqIDMpIFNjYXJpY2FtZW50byB0ZW1hIDFcclxuICogXHJcbiAqIDMpIENhcmljYW1lbnRvIHRlbWEgMlxyXG4gKiBcclxuICogNCkgQ3JlYXppb25lIGdyYWZpY28gMlxyXG4gKiBcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIENoYXJ0TG9hZGVyIHtcclxuXHJcbiAgLyoqXHJcbiAgICogSW5kaWNhIHNlIGF0dHVhbG1lbnRlIGhvIGxlIGFuaW1hemlvbmkgY2FyaWNhdGUgaW4gbW9kbyBkYSBub24gcmljYXJpY2FybGUgaW51dGlsbWVudGVcclxuICAgKi9cclxuICBwcml2YXRlIEFuaW1hdGlvbnNBcmVMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogSW5kaWNhIGwndWx0aW1vIHRlbWEgY2FyaWNhdG8gaW4gbW9kbyBkYSBub24gcmljYXJpY2FybG8gaW51dGlsbWVudGUgcXVhbG9yYSBpbCBwcm9zc2ltbyBncmFmaWNvIGRhIGNyZWFyZSByaWNoaWVkYSBsbyBzdGVzc28gdGVtYVxyXG4gICAqL1xyXG4gIHByaXZhdGUgTGFzdExvYWRlZFRoZW1lOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICAvKipcclxuICAgKiBDYWNoZSBkZWkgdGVtaSAobW9kdWxpIGNhcmljYXRpIGRpbmFtaWNhbWVudGUpXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB0aGVtZUNhY2hlOiB7fSA9IHt9O1xyXG5cclxuICAvKipcclxuICAgKiBDYWNoZSBkZWxsZSBsb2NhbGl6emF6aW9uaSAobW9kdWxpIGNhcmljYXRpIGRpbmFtaWNhbWVudGUpXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBsb2NhbGl6YXRpb25DYWNoZToge30gPSB7fTtcclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoRVNDX0xPR1MpIHByaXZhdGUgbG9nczogYm9vbGVhbikgeyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFwcGxpY2EgaWwgdGVtYSBjb24gbGUgYW5pbWF6aW9uaSBhbGwnaXN0YW56YSBnbG9iYWxlIGRpIGFtQ2hhcnRzXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtPYmplY3R9IGNoYXJ0c0NvcmUgSXN0YW56YSBnbG9iYWxlIGRpIGFtQ2hhcnRzXHJcbiAgICogQHJldHVybnMge1Byb21pc2V9IFByb21pc2UgY2hlIGlkZW50aWZpY2EgbGEgZmluZSBkZWwgY2FyaWNhbWVudG9cclxuICAgKi9cclxuICBwdWJsaWMgYXBwbHlBbmltYXRpb25zKGNoYXJ0c0NvcmU6IGFueSk6IFByb21pc2U8YW55PiB7XHJcbiAgICBpZiAoIXRoaXMuQW5pbWF0aW9uc0FyZUxvYWRlZCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5pbXBvcnRJZk5lZWRlZCgndGhlbWVzJywgQ2hhcnRUaGVtZXMuYW5pbWF0ZWQpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9nKFwiQ09SRTogQXBwbHlpbmcgdGhlbWUgXCIgKyBDaGFydFRoZW1lcy5hbmltYXRlZCk7XHJcbiAgICAgICAgY2hhcnRzQ29yZS51c2VUaGVtZSh0aGlzLnRoZW1lQ2FjaGVbQ2hhcnRUaGVtZXMuYW5pbWF0ZWRdKTtcclxuICAgICAgICB0aGlzLkFuaW1hdGlvbnNBcmVMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmxvZyhcIkNPUkU6IHRoZW1lIGFscmVhZHkgYXBwbHllZCBcIiArIENoYXJ0VGhlbWVzLmFuaW1hdGVkKTtcclxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7IHJlc29sdmUodHJ1ZSkgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZS1hcHBsaWNhIGlsIHRlbWEgY29uIGxlIGFuaW1hemlvbmkgZGFsbCdpc3RhbnphIGdsb2JhbGUgZGkgYW1DaGFydHNcclxuICAgKiBcclxuICAgKiBAcGFyYW0ge09iamVjdH0gY2hhcnRzQ29yZSBJc3RhbnphIGdsb2JhbGUgZGkgYW1DaGFydHNcclxuICAgKiBAcmV0dXJucyB7UHJvbWlzZX0gUHJvbWlzZSBjaGUgaWRlbnRpZmljYSBsYSBmaW5lIGRlbGxvIHNjYXJpY29cclxuICAgKi9cclxuICB1bmFwcGx5QW5pbWF0aW9ucyhjaGFydHNDb3JlOiBhbnkpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgaWYgKHRoaXMuQW5pbWF0aW9uc0FyZUxvYWRlZCkge1xyXG4gICAgICB0aGlzLmxvZyhcIkNPUkU6IEFuaW1hdGlvbnMgaW4gdXNlLCB1bmFwcGx5aW5nIHRoZW1lIFwiICsgQ2hhcnRUaGVtZXMuYW5pbWF0ZWQpO1xyXG4gICAgICBjaGFydHNDb3JlLnVudXNlVGhlbWUodGhpcy50aGVtZUNhY2hlW0NoYXJ0VGhlbWVzLmFuaW1hdGVkXSk7XHJcbiAgICAgIHRoaXMuQW5pbWF0aW9uc0FyZUxvYWRlZCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLmxvZyhcIkNPUkU6IEFuaW1hdGlvbnMgYWxyZWFkeSB1bnVzZWQsIG5vIG5lZWQgdG8gdW5hcHBseSB0aGVtXCIpO1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7IHJlc29sdmUodHJ1ZSkgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBcHBsaWNhIGlsIHRlbWEgc3BlY2lmaWNhdG8gYWxsJ2lzdGFuemEgZ2xvYmFsZSBkaSBhbUNoYXJ0c1xyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjaGFydHNDb3JlIElzdGFuemEgZ2xvYmFsZSBkaSBhbUNoYXJ0c1xyXG4gICAqIEBwYXJhbSB7J3NwaXJpdGVkYXdheScgfCAnbW9vbnJpc2VraW5nZG9tJyB8ICdmcm96ZW4nIHwgJ2RhcmsnIHwgJ2tlbGx5JyB8ICdtYXRlcmlhbCcgfCAnZGF0YXZpeicgfCAnbm9uZSd9IHRoZW1lIFRlbWEgZGEgYXBwbGljYXJlXHJcbiAgICogQHJldHVybnMge1Byb21pc2V9IFByb21pc2UgY2hlIGlkZW50aWZpY2EgbGEgZmluZSBkZWwgY2FyaWNhbWVudG9cclxuICAgKi9cclxuICBhcHBseVRoZW1lKGNoYXJ0c0NvcmU6IGFueSwgdGhlbWU6ICdzcGlyaXRlZGF3YXknIHwgJ21vb25yaXNla2luZ2RvbScgfCAnZnJvemVuJyB8ICdkYXJrJyB8ICdrZWxseScgfCAnbWF0ZXJpYWwnIHwgJ2RhdGF2aXonIHwgJ25vbmUnKTogUHJvbWlzZTxhbnk+IHtcclxuICAgIC8vIFVsdGltbyB0ZW1hIGFwcGxpY2F0byDDqCBsbyBzdGVzc28gY2hlIG1pIMOoIHN0YXRvIHJpY2hpZXN0byBkaSBhcHBsaWNhcmUgLS0+IE5PLU9QXHJcbiAgICBpZiAodGhpcy5MYXN0TG9hZGVkVGhlbWUgPT0gdGhlbWUpIHtcclxuICAgICAgdGhpcy5sb2coXCJDT1JFOiB0aGVtZSBhbHJlYWR5IGFwcGxpZWQgXCIgKyB0aGVtZSk7XHJcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4geyByZXNvbHZlKHRydWUpIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFNjYXJpY28gaWwgdGVtYSBwcmVjZWRlbnRlIGEgcHJlc2NpbmRlcmUsIG9ybWFpIG5vbiBtaSBzZXJ2ZSBwacO5XHJcbiAgICB0aGlzLnVuYXBwbHlQcmV2aW91c1RoZW1lKGNoYXJ0c0NvcmUpXHJcblxyXG4gICAgLy8gSWwgdGVtYSDDqCBpbCBub25lIC0tPiByZWdpc3RybyBsYSBjb3NhIGUgYmFzdGEsIGlsIHRlbWEgcHJlY2VkZW50ZSDDqCBzdGF0byByaW1vc3NvIHN1Yml0byBxdWkgc29wcmEgXlxyXG4gICAgaWYgKHRoZW1lID09IENoYXJ0VGhlbWVzLm5vbmUpIHtcclxuICAgICAgdGhpcy5MYXN0TG9hZGVkVGhlbWUgPSBDaGFydFRoZW1lcy5ub25lO1xyXG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHsgcmVzb2x2ZSh0cnVlKSB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBJbCB0ZW1hIMOoIGRpdmVyc28gZGFsIHByZWNlZGVudGUgZSBub24gw6ggaWwgdGVtYSB2dW90byAtLT4gSW1wb3J0byBpbCB0ZW1hIHNwZWNpZmljYXRvIHNlIG5vbiBwcmVzZW50ZSBpbiBtZW1vcmlhIGUgbG8gYXBwbGljbyBhbCBncmFmaWNvIGF0dHVhbGVcclxuICAgIHJldHVybiB0aGlzLmltcG9ydElmTmVlZGVkKCd0aGVtZXMnLCB0aGVtZSkudGhlbigoKSA9PiB7XHJcbiAgICAgIHRoaXMubG9nKFwiQ09SRTogQXBwbHlpbmcgdGhlbWUgXCIgKyB0aGVtZSk7XHJcbiAgICAgIGNoYXJ0c0NvcmUudXNlVGhlbWUodGhpcy50aGVtZUNhY2hlW3RoZW1lXSk7XHJcbiAgICAgIHRoaXMuTGFzdExvYWRlZFRoZW1lID0gdGhlbWU7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlLWFwcGxpY2EgaWwgdGVtYSBwcmVjZWRlbnRlIGRhbGwnaXN0YW56YSBnbG9iYWxlIGRpIGFtQ2hhcnRzXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtPYmplY3R9IGNoYXJ0c0NvcmUgSXN0YW56YSBnbG9iYWxlIGRpIGFtQ2hhcnRzXHJcbiAgICovXHJcbiAgdW5hcHBseVByZXZpb3VzVGhlbWUoY2hhcnRzQ29yZTogYW55KSB7XHJcbiAgICBpZiAoIXRoaXMuTGFzdExvYWRlZFRoZW1lIHx8IHRoaXMuTGFzdExvYWRlZFRoZW1lID09IENoYXJ0VGhlbWVzLm5vbmUpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmxvZyhcIkNPUkU6IFVuYXBwbHlpbmcgcHJldmlvdXNseSB1c2VkIHRoZW1lIFwiICsgdGhpcy5MYXN0TG9hZGVkVGhlbWUpO1xyXG4gICAgY2hhcnRzQ29yZS51bnVzZVRoZW1lKHRoaXMudGhlbWVDYWNoZVt0aGlzLkxhc3RMb2FkZWRUaGVtZV0pXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBcHBsaWNhIGlsIGxvY2FsZSBzcGVjaWZpY2F0byBhbGwnaXN0YW56YSBzcGVjaWZpY2EgZGVsIGdyYWZpY29cclxuICAgKiBcclxuICAgKiBAcGFyYW0ge2FtQ2hhcnRzLkNoYXJ0fSBjaGFydCBJc3RhbnphIHNwZWNpZmljYSBkZWwgZ3JhZmljbyBhIGN1aSBhcHBsaWNhcmUgaWwgbG9jYWxlXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGxvY2FsZSBMb2NhbGUgZGEgYXBwbGljYXJlXHJcbiAgICogQHJldHVybnMge1Byb21pc2V9IFByb21pc2UgY2hlIGlkZW50aWZpY2EgbGEgZmluZSBkZWwgY2FyaWNhbWVudG9cclxuICAgKi9cclxuICBhcHBseUxvY2FsZShjaGFydDogYW55LCBsb2NhbGU6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5pbXBvcnRJZk5lZWRlZCgnbGFuZycsIGxvY2FsZSkudGhlbigoKSA9PiB7XHJcbiAgICAgIHRoaXMubG9nKFwiQ2hhcnQgXCIgKyBjaGFydC5odG1sQ29udGFpbmVyLmlkICsgXCI6IGFwcGx5aW5nIGxvY2FsZSBcIiArIGxvY2FsZSk7XHJcbiAgICAgIGNoYXJ0Lmxhbmd1YWdlLmxvY2FsZSA9IHRoaXMubG9jYWxpemF0aW9uQ2FjaGVbbG9jYWxlXTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUGVybWV0dGUgZGkgaW1wb3J0YXJlLCBzZSBzZXJ2ZSB1biBkYXRvIHRlbWEgbyBsb2NhbGl6emF6aW9uZVxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7J2xhbmcnIHwgJ3RoZW1lcyd9IHdoYXQgT2dnZXR0byBkYSBpbXBvcnRhcmUsIHNlIGxvY2FsaXp6YXppb25lIG8gdGVtYVxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpdGVtIENoaWF2ZSBkZWxsJ29nZ2V0dG8gZGEgaW1wb3J0YXJlXHJcbiAgICogXHJcbiAgICogQHJldHVybnMge1Byb21pc2V9IFByb21pc2UgY2hlIGlkZW50aWZpY2EgbGEgZmluZSBkZWwgY2FyaWNhbWVudG9cclxuICAgKi9cclxuICBpbXBvcnRJZk5lZWRlZCh3aGF0OiAnbGFuZycgfCAndGhlbWVzJywgaXRlbTogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcclxuXHJcbiAgICAvLyBTZSBzdG8gY2VyY2FuZG8gZGkgY2FyaWNhcmUgcXVhbGNvc2EgZGkgZ2nDoCBjYXJpY2F0byBub24gZmFjY2lvIG51bGxhXHJcbiAgICBpZiAoISh3aGF0ID09ICd0aGVtZXMnICYmICF0aGlzLnRoZW1lQ2FjaGVbaXRlbV0pICYmICEod2hhdCA9PSAnbGFuZycgJiYgIXRoaXMubG9jYWxpemF0aW9uQ2FjaGVbaXRlbV0pKSB7XHJcbiAgICAgIHRoaXMubG9nKFwiQ09SRTogXCIgKyAod2hhdCA9PSAnbGFuZycgPyBcIkxhbmd1YWdlIFwiIDogXCJUaGVtZSBcIikgKyBpdGVtICsgXCIgYWxyZWFkeSBsb2FkZWRcIik7XHJcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4geyByZXNvbHZlKHRydWUpIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMubG9nKFwiQ09SRTogTG9hZGluZyBcIiArICh3aGF0ID09ICdsYW5nJyA/IFwibGFuZ3VhZ2UgXCIgOiBcInRoZW1lIFwiKSArIGl0ZW0pO1xyXG5cclxuICAgIC8qXHJcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKioqKiBBVFRFTlpJT05FICoqKioqKioqXHJcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICAgKiBcclxuICAgICAqICBTZSBzdGFpIHZlZGVuZG8gcXVlc3RvIGNvZGljZSBkaSBpbXBvcnQgZSBzdGFpIHZhbHV0YW5kbyBkaSByaXNjcml2ZXJsbyBjb21lOlxyXG4gICAgICogXHJcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWICAgICAgIFYgICBcclxuICAgICAqICAgICAgaW1wb3J0KGBAYW1jaGFydHMvYW1jaGFydHM0LyR7d2hhdH0vJHtpdGVtfWApLnRoZW4obW9kdWxlID0+IHtcclxuICAgICAqICAgICAgICBpZiAod2hhdCA9PSAndGhlbWVzJykgdGhpcy50aGVtZUNhY2hlW2l0ZW1dID0gbW9kdWxlLmRlZmF1bHQ7XHJcbiAgICAgKiAgICAgICAgZWxzZSBpZiAod2hhdCA9PSAnbGFuZycpIHRoaXMubG9jYWxpemF0aW9uQ2FjaGVbaXRlbV0gPSBtb2R1bGUuZGVmYXVsdDtcclxuICAgICAqICAgICAgfSk7XHJcbiAgICAgKiBcclxuICAgICAqICBTYXBwaSBjaGUgw6ggdW5hIHBlc3NpbWEgaWRlYS4gR2xpIGltcG9ydCBzb25vIHZhbHV0YXRpIGRhIHdlYnBhY2sgaW4gY29tcGlsZXRpbWUgcGVyIGdlbmVyYXJlIGkgY2h1bmssXHJcbiAgICAgKiAgbWV0dGVyZSBsYSBuYXZpZ2F6aW9uZSBhZ2xpIGltcG9ydCBjb24gbGEgY29uY2F0ZW5hemlvbmUgdmllbmUgcHJlc28gbWFsaXNzaW1vIGVkIGVzc2VuemlhbG1lbnRlIGRpY2UgYSB3ZWJwYWNrXHJcbiAgICAgKiAgZGkgdGlyYXJlIHN1IGUgYnVuZGxhcmUgbCdpbnRlcmEgbm9kZV9tb2R1bGVzLiBEaXZlcnRlbnRlLCBubz9cclxuICAgICAqXHJcbiAgICAgKi9cclxuXHJcbiAgICBzd2l0Y2ggKHdoYXQpIHtcclxuICAgICAgY2FzZSAndGhlbWVzJzpcclxuICAgICAgICBzd2l0Y2ggKGl0ZW0pIHtcclxuICAgICAgICAgIGNhc2UgQ2hhcnRUaGVtZXMuc3Bpcml0ZWRhd2F5OlxyXG4gICAgICAgICAgICByZXR1cm4gaW1wb3J0KFwiQGFtY2hhcnRzL2FtY2hhcnRzNC90aGVtZXMvc3Bpcml0ZWRhd2F5XCIpLnRoZW4odGhlbWUgPT4gdGhpcy50aGVtZUNhY2hlW2l0ZW1dID0gdGhlbWUuZGVmYXVsdCk7XHJcbiAgICAgICAgICBjYXNlIENoYXJ0VGhlbWVzLm1vb25yaXNla2luZ2RvbTpcclxuICAgICAgICAgICAgcmV0dXJuIGltcG9ydChcIkBhbWNoYXJ0cy9hbWNoYXJ0czQvdGhlbWVzL21vb25yaXNla2luZ2RvbVwiKS50aGVuKHRoZW1lID0+IHRoaXMudGhlbWVDYWNoZVtpdGVtXSA9IHRoZW1lLmRlZmF1bHQpO1xyXG4gICAgICAgICAgY2FzZSBDaGFydFRoZW1lcy5mcm96ZW46XHJcbiAgICAgICAgICAgIHJldHVybiBpbXBvcnQoXCJAYW1jaGFydHMvYW1jaGFydHM0L3RoZW1lcy9mcm96ZW5cIikudGhlbih0aGVtZSA9PiB0aGlzLnRoZW1lQ2FjaGVbaXRlbV0gPSB0aGVtZS5kZWZhdWx0KTtcclxuICAgICAgICAgIGNhc2UgQ2hhcnRUaGVtZXMuZGFyazpcclxuICAgICAgICAgICAgcmV0dXJuIGltcG9ydChcIkBhbWNoYXJ0cy9hbWNoYXJ0czQvdGhlbWVzL2RhcmtcIikudGhlbih0aGVtZSA9PiB0aGlzLnRoZW1lQ2FjaGVbaXRlbV0gPSB0aGVtZS5kZWZhdWx0KTtcclxuICAgICAgICAgIGNhc2UgQ2hhcnRUaGVtZXMua2VsbHk6XHJcbiAgICAgICAgICAgIHJldHVybiBpbXBvcnQoXCJAYW1jaGFydHMvYW1jaGFydHM0L3RoZW1lcy9rZWxseVwiKS50aGVuKHRoZW1lID0+IHRoaXMudGhlbWVDYWNoZVtpdGVtXSA9IHRoZW1lLmRlZmF1bHQpO1xyXG4gICAgICAgICAgY2FzZSBDaGFydFRoZW1lcy5tYXRlcmlhbDpcclxuICAgICAgICAgICAgcmV0dXJuIGltcG9ydChcIkBhbWNoYXJ0cy9hbWNoYXJ0czQvdGhlbWVzL21hdGVyaWFsXCIpLnRoZW4odGhlbWUgPT4gdGhpcy50aGVtZUNhY2hlW2l0ZW1dID0gdGhlbWUuZGVmYXVsdCk7XHJcbiAgICAgICAgICBjYXNlIENoYXJ0VGhlbWVzLmRhdGF2aXo6XHJcbiAgICAgICAgICAgIHJldHVybiBpbXBvcnQoXCJAYW1jaGFydHMvYW1jaGFydHM0L3RoZW1lcy9kYXRhdml6XCIpLnRoZW4odGhlbWUgPT4gdGhpcy50aGVtZUNhY2hlW2l0ZW1dID0gdGhlbWUuZGVmYXVsdCk7XHJcbiAgICAgICAgICBjYXNlIENoYXJ0VGhlbWVzLmFuaW1hdGVkOlxyXG4gICAgICAgICAgICByZXR1cm4gaW1wb3J0KFwiQGFtY2hhcnRzL2FtY2hhcnRzNC90aGVtZXMvYW5pbWF0ZWRcIikudGhlbih0aGVtZSA9PiB0aGlzLnRoZW1lQ2FjaGVbaXRlbV0gPSB0aGVtZS5kZWZhdWx0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2xhbmcnOlxyXG4gICAgICAgIHN3aXRjaCAoaXRlbSkge1xyXG4gICAgICAgICAgY2FzZSAnaXQtSVQnOlxyXG4gICAgICAgICAgICByZXR1cm4gaW1wb3J0KFwiQGFtY2hhcnRzL2FtY2hhcnRzNC9sYW5nL2l0X0lUXCIpLnRoZW4obGFuZyA9PiB0aGlzLmxvY2FsaXphdGlvbkNhY2hlW2l0ZW1dID0gbGFuZy5kZWZhdWx0KTtcclxuICAgICAgICAgIGNhc2UgJ2VuLVVTJzpcclxuICAgICAgICAgICAgcmV0dXJuIGltcG9ydChcIkBhbWNoYXJ0cy9hbWNoYXJ0czQvbGFuZy9lbl9VU1wiKS50aGVuKGxhbmcgPT4gdGhpcy5sb2NhbGl6YXRpb25DYWNoZVtpdGVtXSA9IGxhbmcuZGVmYXVsdCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMubG9nKFwiQ09SRTogTG9hZGluZyBGYWlsZWQuIFwiICsgKHdoYXQgPT0gJ2xhbmcnID8gXCJMYW5ndWFnZSBcIiA6IFwiVGhlbWVcIikgKyBcIiBub3QgcmVjb2duaXplZDogXCIgKyBpdGVtKTtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4geyByZXNvbHZlKHRydWUpIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIGxvZyh0ZXh0OiBzdHJpbmcpIHtcclxuICAgIGlmICh0aGlzLmxvZ3MpXHJcbiAgICAgIGNvbnNvbGUubG9nKFwiQGVzZmFlbnphL2VzLWNoYXJ0czogXCIgKyB0ZXh0KTtcclxuICB9XHJcbn0iXX0=
|