@tetacom/ng-components 1.0.12 → 1.0.13
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/component/chart/chart/chart.component.d.ts +2 -1
- package/component/chart/core/chart.d.ts +2 -0
- package/component/chart/model/enum/dispatch-type.d.ts +2 -1
- package/component/chart/model/point/base-point.d.ts +2 -0
- package/component/chart/model/point/marker-options.d.ts +9 -0
- package/esm2020/component/chart/chart/chart.component.mjs +11 -4
- package/esm2020/component/chart/core/chart.mjs +9 -1
- package/esm2020/component/chart/drawer/line-drawer.mjs +38 -2
- package/esm2020/component/chart/model/enum/dispatch-type.mjs +2 -1
- package/esm2020/component/chart/model/point/base-point.mjs +1 -1
- package/esm2020/component/chart/model/point/marker-options.mjs +2 -0
- package/fesm2015/tetacom-ng-components.mjs +56 -5
- package/fesm2015/tetacom-ng-components.mjs.map +1 -1
- package/fesm2020/tetacom-ng-components.mjs +56 -4
- package/fesm2020/tetacom-ng-components.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -14,6 +14,7 @@ export declare class ChartComponent implements OnInit, AfterViewInit, OnDestroy,
|
|
|
14
14
|
plotLinesMove: EventEmitter<IDragEvent<PlotLine>>;
|
|
15
15
|
plotBandsMove: EventEmitter<IDragEvent<PlotBand>>;
|
|
16
16
|
seriesMove: EventEmitter<IDragEvent<Series<BasePoint>>>;
|
|
17
|
+
pointMove: EventEmitter<IDragEvent<Series<BasePoint>>>;
|
|
17
18
|
zoomChange: EventEmitter<IZoomEvent>;
|
|
18
19
|
chart: ElementRef;
|
|
19
20
|
hasSeriesData: boolean;
|
|
@@ -33,5 +34,5 @@ export declare class ChartComponent implements OnInit, AfterViewInit, OnDestroy,
|
|
|
33
34
|
private resize;
|
|
34
35
|
private setConfig;
|
|
35
36
|
static ɵfac: i0.ɵɵFactoryDeclaration<ChartComponent, never>;
|
|
36
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ChartComponent, "teta-chart", never, { "zoom": "zoom"; "config": "config"; }, { "plotLinesMove": "plotLinesMove"; "plotBandsMove": "plotBandsMove"; "seriesMove": "seriesMove"; "zoomChange": "zoomChange"; }, never, never>;
|
|
37
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ChartComponent, "teta-chart", never, { "zoom": "zoom"; "config": "config"; }, { "plotLinesMove": "plotLinesMove"; "plotBandsMove": "plotBandsMove"; "seriesMove": "seriesMove"; "pointMove": "pointMove"; "zoomChange": "zoomChange"; }, never, never>;
|
|
37
38
|
}
|
|
@@ -16,9 +16,11 @@ export declare class TetaChart {
|
|
|
16
16
|
plotBandsMove: Observable<IDragEvent<PlotBand>>;
|
|
17
17
|
zoom: Observable<IZoomEvent>;
|
|
18
18
|
seriesMove: Observable<IDragEvent<Series<BasePoint>>>;
|
|
19
|
+
pointMove: Observable<IDragEvent<Series<BasePoint>>>;
|
|
19
20
|
private plotLinesMove$;
|
|
20
21
|
private plotBandsMove$;
|
|
21
22
|
private seriesMove$;
|
|
23
|
+
private pointMove$;
|
|
22
24
|
private zoom$;
|
|
23
25
|
private _container;
|
|
24
26
|
private _canvas;
|
|
@@ -10,6 +10,7 @@ export class ChartComponent {
|
|
|
10
10
|
this.plotLinesMove = new EventEmitter();
|
|
11
11
|
this.plotBandsMove = new EventEmitter();
|
|
12
12
|
this.seriesMove = new EventEmitter();
|
|
13
|
+
this.pointMove = new EventEmitter();
|
|
13
14
|
this.zoomChange = new EventEmitter();
|
|
14
15
|
this._alive = true;
|
|
15
16
|
this.size$ = new Subject();
|
|
@@ -61,8 +62,7 @@ export class ChartComponent {
|
|
|
61
62
|
this._chart?.setZoom(this.zoom);
|
|
62
63
|
}
|
|
63
64
|
}
|
|
64
|
-
ngOnInit() {
|
|
65
|
-
}
|
|
65
|
+
ngOnInit() { }
|
|
66
66
|
ngAfterViewInit() {
|
|
67
67
|
this._observer = new ResizeObserver((entries) => {
|
|
68
68
|
const { contentRect } = entries[0];
|
|
@@ -108,6 +108,11 @@ export class ChartComponent {
|
|
|
108
108
|
this._chart.seriesMove
|
|
109
109
|
.pipe(takeWhile((_) => this._alive))
|
|
110
110
|
.subscribe((_) => this.seriesMove.emit(_));
|
|
111
|
+
this._chart.pointMove
|
|
112
|
+
.pipe(takeWhile((_) => this._alive))
|
|
113
|
+
.subscribe((_) => {
|
|
114
|
+
this.pointMove.emit(_);
|
|
115
|
+
});
|
|
111
116
|
this._chart.zoom
|
|
112
117
|
.pipe(takeWhile((_) => this._alive), map((_) => {
|
|
113
118
|
this.zoomChange.emit(_);
|
|
@@ -125,7 +130,7 @@ export class ChartComponent {
|
|
|
125
130
|
}
|
|
126
131
|
}
|
|
127
132
|
ChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: ChartComponent, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
128
|
-
ChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: ChartComponent, selector: "teta-chart", inputs: { zoom: "zoom", config: "config" }, outputs: { plotLinesMove: "plotLinesMove", plotBandsMove: "plotBandsMove", seriesMove: "seriesMove", zoomChange: "zoomChange" }, host: { listeners: { "click": "click($event)" } }, viewQueries: [{ propertyName: "chart", first: true, predicate: ["chart"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div [style.display]=\"hasSeriesData ? 'contents' : 'none'\">\n <div #chart class=\"chart-container\"></div>\n <div class=\"legend-container\"></div>\n</div>\n<div [style.display]=\"!hasSeriesData ? 'block' : 'none'\" class=\"chart-placeholder text-align-center\">\n <span class=\"font-body-3 color-text-40\">\u0414\u0430\u043D\u043D\u044B\u0435 \u043E\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044E\u0442</span>\n</div>\n\n\n", styles: [":host{display:flex;width:100%;height:100%;flex-direction:column}.chart-container{position:relative;min-height:0;flex-grow:1;flex-basis:1px}.chart-placeholder{margin:auto;width:100%}.chart-placeholder span{text-overflow:ellipsis;overflow:hidden;display:block}.legend-container{flex-shrink:0;flex-basis:1px}::ng-deep .grid line{stroke-dasharray:1,4}::ng-deep .tooltip-chart{padding:8px 12px;border-radius:2px}::ng-deep .legend{grid-gap:8px;padding-bottom:5px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-evenly}::ng-deep .legend .item{display:flex;align-items:center;cursor:pointer}::ng-deep .legend .item .swatch{width:10px;height:10px}::ng-deep .legend .item .line{width:12px;height:2px}::ng-deep .legend .item .label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-left:5px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
133
|
+
ChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: ChartComponent, selector: "teta-chart", inputs: { zoom: "zoom", config: "config" }, outputs: { plotLinesMove: "plotLinesMove", plotBandsMove: "plotBandsMove", seriesMove: "seriesMove", pointMove: "pointMove", zoomChange: "zoomChange" }, host: { listeners: { "click": "click($event)" } }, viewQueries: [{ propertyName: "chart", first: true, predicate: ["chart"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div [style.display]=\"hasSeriesData ? 'contents' : 'none'\">\n <div #chart class=\"chart-container\"></div>\n <div class=\"legend-container\"></div>\n</div>\n<div [style.display]=\"!hasSeriesData ? 'block' : 'none'\" class=\"chart-placeholder text-align-center\">\n <span class=\"font-body-3 color-text-40\">\u0414\u0430\u043D\u043D\u044B\u0435 \u043E\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044E\u0442</span>\n</div>\n\n\n", styles: [":host{display:flex;width:100%;height:100%;flex-direction:column}.chart-container{position:relative;min-height:0;flex-grow:1;flex-basis:1px}.chart-placeholder{margin:auto;width:100%}.chart-placeholder span{text-overflow:ellipsis;overflow:hidden;display:block}.legend-container{flex-shrink:0;flex-basis:1px}::ng-deep .grid line{stroke-dasharray:1,4}::ng-deep .tooltip-chart{padding:8px 12px;border-radius:2px}::ng-deep .legend{grid-gap:8px;padding-bottom:5px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-evenly}::ng-deep .legend .item{display:flex;align-items:center;cursor:pointer}::ng-deep .legend .item .swatch{width:10px;height:10px}::ng-deep .legend .item .line{width:12px;height:2px}::ng-deep .legend .item .label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-left:5px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
129
134
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: ChartComponent, decorators: [{
|
|
130
135
|
type: Component,
|
|
131
136
|
args: [{ selector: 'teta-chart', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [style.display]=\"hasSeriesData ? 'contents' : 'none'\">\n <div #chart class=\"chart-container\"></div>\n <div class=\"legend-container\"></div>\n</div>\n<div [style.display]=\"!hasSeriesData ? 'block' : 'none'\" class=\"chart-placeholder text-align-center\">\n <span class=\"font-body-3 color-text-40\">\u0414\u0430\u043D\u043D\u044B\u0435 \u043E\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044E\u0442</span>\n</div>\n\n\n", styles: [":host{display:flex;width:100%;height:100%;flex-direction:column}.chart-container{position:relative;min-height:0;flex-grow:1;flex-basis:1px}.chart-placeholder{margin:auto;width:100%}.chart-placeholder span{text-overflow:ellipsis;overflow:hidden;display:block}.legend-container{flex-shrink:0;flex-basis:1px}::ng-deep .grid line{stroke-dasharray:1,4}::ng-deep .tooltip-chart{padding:8px 12px;border-radius:2px}::ng-deep .legend{grid-gap:8px;padding-bottom:5px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-evenly}::ng-deep .legend .item{display:flex;align-items:center;cursor:pointer}::ng-deep .legend .item .swatch{width:10px;height:10px}::ng-deep .legend .item .line{width:12px;height:2px}::ng-deep .legend .item .label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-left:5px}\n"] }]
|
|
@@ -139,6 +144,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImpor
|
|
|
139
144
|
type: Output
|
|
140
145
|
}], seriesMove: [{
|
|
141
146
|
type: Output
|
|
147
|
+
}], pointMove: [{
|
|
148
|
+
type: Output
|
|
142
149
|
}], zoomChange: [{
|
|
143
150
|
type: Output
|
|
144
151
|
}], chart: [{
|
|
@@ -150,4 +157,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImpor
|
|
|
150
157
|
type: HostListener,
|
|
151
158
|
args: ['click', ['$event']]
|
|
152
159
|
}] } });
|
|
153
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvY29tcG9uZW50L2NoYXJ0L2NoYXJ0L2NoYXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2NvbXBvbmVudC9jaGFydC9jaGFydC9jaGFydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFLTCxNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUQsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQVF4QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7O0FBU3JELE1BQU0sT0FBTyxjQUFjO0lBOEJ6QixZQUFvQixLQUFhO1FBQWIsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQXZCakMsa0JBQWEsR0FBdUMsSUFBSSxZQUFZLEVBQXdCLENBQUM7UUFFN0Ysa0JBQWEsR0FBdUMsSUFBSSxZQUFZLEVBQXdCLENBQUM7UUFHN0YsZUFBVSxHQUFnRCxJQUFJLFlBQVksRUFBaUMsQ0FBQztRQUc1RyxlQUFVLEdBQTZCLElBQUksWUFBWSxFQUFjLENBQUM7UUFTOUQsV0FBTSxHQUFHLElBQUksQ0FBQztRQUNkLFVBQUssR0FBRyxJQUFJLE9BQU8sRUFBTyxDQUFDO0lBTW5DLENBQUM7SUFFa0MsS0FBSyxDQUFDLEtBQVU7UUFDakQsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLFlB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QU07Z0JBSVAsVUFBVTtzQkFEVCxNQUFNO2dCQUlQLFVBQVU7c0JBRFQsTUFBTTtnQkFNUCxLQUFLO3NCQUhKLFNBQVM7dUJBQUMsT0FBTyxFQUFFO3dCQUNsQixNQUFNLEVBQUUsSUFBSTtxQkFDYjtnQkFja0MsS0FBSztzQkFBdkMsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1N1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXAsIHRha2VXaGlsZSwgdGhyb3R0bGVUaW1lfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1RldGFDaGFydH0gZnJvbSAnLi4vY29yZS9jaGFydCc7XG5pbXBvcnQge0NoYXJ0T3B0aW9uc30gZnJvbSAnLi4vbW9kZWwvY2hhcnQtb3B0aW9ucyc7XG5pbXBvcnQge0Jhc2VQb2ludH0gZnJvbSAnLi4vbW9kZWwvcG9pbnQvYmFzZS1wb2ludCc7XG5pbXBvcnQge1Nlcmllc30gZnJvbSAnLi4vbW9kZWwvc2VyaWVzJztcbmltcG9ydCB7UGxvdExpbmV9IGZyb20gJy4uL21vZGVsL3Bsb3QtbGluZSc7XG5pbXBvcnQge1Bsb3RCYW5kfSBmcm9tICcuLi9tb2RlbC9wbG90LWJhbmQnO1xuaW1wb3J0IHtJRHJhZ0V2ZW50fSBmcm9tICcuLi9tb2RlbC9pLWRyYWctZXZlbnQnO1xuaW1wb3J0IHtJWm9vbUV2ZW50fSBmcm9tICcuLi9tb2RlbC9pLXpvb20tZXZlbnQnO1xuaW1wb3J0IHtTZXJpZXNUeXBlfSBmcm9tICcuLi9tb2RlbC9lbnVtL3Nlcmllcy10eXBlJztcbmltcG9ydCB7QmFyUG9pbnR9IGZyb20gJy4uL21vZGVsL3BvaW50L2Jhci1wb2ludCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RldGEtY2hhcnQnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hhcnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGFydC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQ2hhcnRDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgem9vbTogSVpvb21FdmVudDtcblxuICBASW5wdXQoKSBjb25maWc6IENoYXJ0T3B0aW9ucztcblxuICBAT3V0cHV0KClcbiAgcGxvdExpbmVzTW92ZTogRXZlbnRFbWl0dGVyPElEcmFnRXZlbnQ8UGxvdExpbmU+PiA9IG5ldyBFdmVudEVtaXR0ZXI8SURyYWdFdmVudDxQbG90TGluZT4+KCk7XG4gIEBPdXRwdXQoKVxuICBwbG90QmFuZHNNb3ZlOiBFdmVudEVtaXR0ZXI8SURyYWdFdmVudDxQbG90QmFuZD4+ID0gbmV3IEV2ZW50RW1pdHRlcjxJRHJhZ0V2ZW50PFBsb3RCYW5kPj4oKTtcblxuICBAT3V0cHV0KClcbiAgc2VyaWVzTW92ZTogRXZlbnRFbWl0dGVyPElEcmFnRXZlbnQ8U2VyaWVzPEJhc2VQb2ludD4+PiA9IG5ldyBFdmVudEVtaXR0ZXI8SURyYWdFdmVudDxTZXJpZXM8QmFzZVBvaW50Pj4+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHpvb21DaGFuZ2U6IEV2ZW50RW1pdHRlcjxJWm9vbUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8SVpvb21FdmVudD4oKTtcblxuICBAVmlld0NoaWxkKCdjaGFydCcsIHtcbiAgICBzdGF0aWM6IHRydWUsXG4gIH0pXG4gIGNoYXJ0OiBFbGVtZW50UmVmO1xuICBoYXNTZXJpZXNEYXRhOiBib29sZWFuO1xuXG4gIHByaXZhdGUgX2NvbmZpZzogQ2hhcnRPcHRpb25zO1xuICBwcml2YXRlIF9hbGl2ZSA9IHRydWU7XG4gIHByaXZhdGUgc2l6ZSQgPSBuZXcgU3ViamVjdDxhbnk+KCk7XG4gIHByaXZhdGUgX29ic2VydmVyOiBSZXNpemVPYnNlcnZlcjtcbiAgcHJpdmF0ZSBfY2hhcnQ6IFRldGFDaGFydDtcbiAgcHJpdmF0ZSBfem9vbTogSVpvb21FdmVudDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF96b25lOiBOZ1pvbmUpIHtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSkgY2xpY2soZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IGNvbXBvc2VkUGF0aCA9IGV2ZW50LmNvbXBvc2VkUGF0aCgpO1xuICAgIGNvbnN0IHRyaWdnZXJUb2tlbiA9ICdsZWdlbmQnO1xuXG4gICAgY29uc3QgaXNMZWdlbmQgPSBjb21wb3NlZFBhdGguc29tZSgoXykgPT5cbiAgICAgIF8uY2xhc3NMaXN0Py5jb250YWlucyh0cmlnZ2VyVG9rZW4pXG4gICAgKTtcblxuICAgIGlmIChpc0xlZ2VuZCkge1xuICAgICAgY29uc3QgY2xpY2tlZEVsZW1lbnQ6IGFueSA9IGV2ZW50LnRhcmdldD8uX19kYXRhX187XG5cbiAgICAgIGlmICghY2xpY2tlZEVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBzZXJpZUluZGV4ID0gdGhpcy5fY29uZmlnPy5zZXJpZXM/LmluZGV4T2YoY2xpY2tlZEVsZW1lbnQpO1xuXG4gICAgICBpZiAoY2xpY2tlZEVsZW1lbnQuc2VyaWVUeXBlID09PSBTZXJpZXNUeXBlLmJhcikge1xuICAgICAgICBjb25zdCBmb3VuZFNlcmllID0gdGhpcy5fY29uZmlnLnNlcmllc1tjbGlja2VkRWxlbWVudC5zZXJpZUluZGV4XTtcblxuICAgICAgICB0aGlzLl9jb25maWcuc2VyaWVzW2ZvdW5kU2VyaWUuaWRdLmRhdGEgPSB0aGlzLl9jb25maWcuc2VyaWVzW1xuICAgICAgICAgIGZvdW5kU2VyaWUuaWRcbiAgICAgICAgICBdLmRhdGEubWFwKChfOiBCYXNlUG9pbnQgJiBCYXJQb2ludCkgPT4ge1xuICAgICAgICAgIGlmIChjbGlja2VkRWxlbWVudC5pZCA9PT0gXy5pZCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgLi4uXyxcbiAgICAgICAgICAgICAgdmlzaWJsZTogIV8udmlzaWJsZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIF87XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMucmVkcmF3KHRoaXMuX2NvbmZpZyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChzZXJpZUluZGV4ICE9PSAtMSkge1xuICAgICAgICBjb25zdCBmb3VuZFNlcmllID0gdGhpcy5fY29uZmlnLnNlcmllc1tzZXJpZUluZGV4XTtcblxuICAgICAgICBjb25zdCB5QXhpc0luZGV4ID0gZm91bmRTZXJpZT8ueUF4aXNJbmRleDtcblxuICAgICAgICB0aGlzLl9jb25maWcuc2VyaWVzW3NlcmllSW5kZXhdLnZpc2libGUgPSAhZm91bmRTZXJpZS52aXNpYmxlO1xuXG4gICAgICAgIGNvbnN0IGF0dGFjaGVkWUF4ZXMgPSB0aGlzLl9jb25maWcuc2VyaWVzXG4gICAgICAgICAgPy5maWx0ZXIoKF8pID0+IF8udmlzaWJsZSlcbiAgICAgICAgICAubWFwKChfKSA9PiBfLnlBeGlzSW5kZXgpO1xuXG4gICAgICAgIGNvbnN0IHNob3VsZFZpc2libGVZQXhpcyA9IGF0dGFjaGVkWUF4ZXM/LmluY2x1ZGVzKHlBeGlzSW5kZXgpO1xuXG4gICAgICAgIHRoaXMuX2NvbmZpZy55QXhpc1t5QXhpc0luZGV4XS52aXNpYmxlID0gc2hvdWxkVmlzaWJsZVlBeGlzO1xuICAgICAgICB0aGlzLnJlZHJhdyh0aGlzLl9jb25maWcpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAodGhpcy5jb25maWcgJiYgY2hhbmdlcy5oYXNPd25Qcm9wZXJ0eSgnY29uZmlnJykpIHtcbiAgICAgIHRoaXMuc2V0Q29uZmlnKHRoaXMuY29uZmlnKTtcblxuICAgICAgaWYgKHRoaXMuem9vbSkge1xuICAgICAgICB0aGlzLl9jaGFydD8uc2V0Wm9vbSh0aGlzLnpvb20pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLnpvb20gJiYgY2hhbmdlcy5oYXNPd25Qcm9wZXJ0eSgnem9vbScpKSB7XG4gICAgICB0aGlzLl9jaGFydD8uc2V0Wm9vbSh0aGlzLnpvb20pO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX29ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKChlbnRyaWVzKSA9PiB7XG4gICAgICBjb25zdCB7Y29udGVudFJlY3R9ID0gZW50cmllc1swXTtcbiAgICAgIHRoaXMuc2l6ZSQubmV4dChjb250ZW50UmVjdCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9vYnNlcnZlci5vYnNlcnZlKHRoaXMuY2hhcnQubmF0aXZlRWxlbWVudCk7XG5cbiAgICB0aGlzLnNpemUkXG4gICAgICAucGlwZSh0aHJvdHRsZVRpbWUoMTAwLCB1bmRlZmluZWQsIHt0cmFpbGluZzogdHJ1ZX0pKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VXaGlsZSgoXykgPT4gdGhpcy5fYWxpdmUpLFxuICAgICAgICBtYXAoKF8pID0+IHtcbiAgICAgICAgICB0aGlzLnJlc2l6ZShfKTtcbiAgICAgICAgICB0aGlzLnJlZHJhdyh0aGlzLl9jb25maWcpO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fYWxpdmUgPSBmYWxzZTtcbiAgICB0aGlzLl9vYnNlcnZlcj8udW5vYnNlcnZlKHRoaXMuY2hhcnQubmF0aXZlRWxlbWVudCk7XG4gIH1cblxuICBwcml2YXRlIHJlZHJhdyhjb25maWc6IGFueSkge1xuICAgIGlmIChjb25maWcpIHtcbiAgICAgIHRoaXMuX2NoYXJ0LnJlZHJhdyhjb25maWcpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVzaXplKGNvbnRlbnRSZWN0OiBhbnkpIHtcbiAgICBjb25zdCB7d2lkdGgsIGhlaWdodH0gPSBjb250ZW50UmVjdDtcbiAgICB0aGlzLl9jaGFydC5zZXRTaXplKHtcbiAgICAgIHdpZHRoLFxuICAgICAgaGVpZ2h0LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRDb25maWcoY29uZmlnOiBDaGFydE9wdGlvbnMpIHtcbiAgICBpZiAoY29uZmlnKSB7XG4gICAgICB0aGlzLl9jb25maWcgPSBjb25maWc7XG4gICAgICB0aGlzLmhhc1Nlcmllc0RhdGEgPSAhIXRoaXMuX2NvbmZpZz8uc2VyaWVzPy5zb21lKChfKSA9PiBfLmRhdGEubGVuZ3RoKTtcblxuICAgICAgaWYgKCF0aGlzLl9jaGFydCkge1xuICAgICAgICB0aGlzLl9jaGFydCA9IG5ldyBUZXRhQ2hhcnQodGhpcy5fY29uZmlnLCB0aGlzLmNoYXJ0KTtcblxuICAgICAgICB0aGlzLl9jaGFydC5wbG90TGluZXNNb3ZlXG4gICAgICAgICAgLnBpcGUodGFrZVdoaWxlKChfKSA9PiB0aGlzLl9hbGl2ZSkpXG4gICAgICAgICAgLnN1YnNjcmliZSgoXykgPT4gdGhpcy5wbG90TGluZXNNb3ZlLmVtaXQoXykpO1xuXG4gICAgICAgIHRoaXMuX2NoYXJ0LnBsb3RCYW5kc01vdmVcbiAgICAgICAgICAucGlwZSh0YWtlV2hpbGUoKF8pID0+IHRoaXMuX2FsaXZlKSlcbiAgICAgICAgICAuc3Vic2NyaWJlKChfKSA9PiB0aGlzLnBsb3RCYW5kc01vdmUuZW1pdChfKSk7XG5cbiAgICAgICAgdGhpcy5fY2hhcnQuc2VyaWVzTW92ZVxuICAgICAgICAgIC5waXBlKHRha2VXaGlsZSgoXykgPT4gdGhpcy5fYWxpdmUpKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKF8pID0+IHRoaXMuc2VyaWVzTW92ZS5lbWl0KF8pKTtcblxuICAgICAgICB0aGlzLl9jaGFydC56b29tXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICB0YWtlV2hpbGUoKF8pID0+IHRoaXMuX2FsaXZlKSxcbiAgICAgICAgICAgIG1hcCgoXykgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnpvb21DaGFuZ2UuZW1pdChfKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuY2hhcnQpIHtcbiAgICAgICAgaWYgKHRoaXMuaGFzU2VyaWVzRGF0YSkge1xuICAgICAgICAgIGlmICghdGhpcy5fem9vbSB8fCB0aGlzLl96b29tPy5ldmVudD8udHlwZSA9PT0gJ2VuZCcpIHtcbiAgICAgICAgICAgIHRoaXMucmVkcmF3KHRoaXMuX2NvbmZpZyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IFtzdHlsZS5kaXNwbGF5XT1cImhhc1Nlcmllc0RhdGEgPyAnY29udGVudHMnIDogJ25vbmUnXCI+XG4gIDxkaXYgI2NoYXJ0IGNsYXNzPVwiY2hhcnQtY29udGFpbmVyXCI+PC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJsZWdlbmQtY29udGFpbmVyXCI+PC9kaXY+XG48L2Rpdj5cbjxkaXYgW3N0eWxlLmRpc3BsYXldPVwiIWhhc1Nlcmllc0RhdGEgPyAnYmxvY2snIDogJ25vbmUnXCIgY2xhc3M9XCJjaGFydC1wbGFjZWhvbGRlciB0ZXh0LWFsaWduLWNlbnRlclwiPlxuICA8c3BhbiBjbGFzcz1cImZvbnQtYm9keS0zIGNvbG9yLXRleHQtNDBcIj7QlNCw0L3QvdGL0LUg0L7RgtGB0YPRgtGB0YLQstGD0Y7Rgjwvc3Bhbj5cbjwvZGl2PlxuXG5cbiJdfQ==
|
|
160
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvY29tcG9uZW50L2NoYXJ0L2NoYXJ0L2NoYXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2NvbXBvbmVudC9jaGFydC9jaGFydC9jaGFydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFLTCxNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVExQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBU3ZELE1BQU0sT0FBTyxjQUFjO0lBMEN6QixZQUFvQixLQUFhO1FBQWIsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQWxDakMsa0JBQWEsR0FBdUMsSUFBSSxZQUFZLEVBRWpFLENBQUM7UUFFSixrQkFBYSxHQUF1QyxJQUFJLFlBQVksRUFFakUsQ0FBQztRQUdKLGVBQVUsR0FBZ0QsSUFBSSxZQUFZLEVBRXZFLENBQUM7UUFHSixjQUFTLEdBQWdELElBQUksWUFBWSxFQUV0RSxDQUFDO1FBR0osZUFBVSxHQUE2QixJQUFJLFlBQVksRUFBYyxDQUFDO1FBUzlELFdBQU0sR0FBRyxJQUFJLENBQUM7UUFDZCxVQUFLLEdBQUcsSUFBSSxPQUFPLEVBQU8sQ0FBQztJQUtDLENBQUM7SUFFRixLQUFLLENBQUMsS0FBVTtR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LE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7cUJBQzNCO2lCQUNGO2FBQ0Y7U0FDRjtJQUNILENBQUM7OzJHQXRNVSxjQUFjOytGQUFkLGNBQWMsNmFDcEMzQixzYkFTQTsyRkQyQmEsY0FBYztrQkFOMUIsU0FBUzsrQkFDRSxZQUFZLG1CQUdMLHVCQUF1QixDQUFDLE1BQU07NkZBS3RDLElBQUk7c0JBQVosS0FBSztnQkFFRyxNQUFNO3NCQUFkLEtBQUs7Z0JBR04sYUFBYTtzQkFEWixNQUFNO2dCQUtQLGFBQWE7c0JBRFosTUFBTTtnQkFNUCxVQUFVO3NCQURULE1BQU07Z0JBTVAsU0FBUztzQkFEUixNQUFNO2dCQU1QLFVBQVU7c0JBRFQsTUFBTTtnQkFNUCxLQUFLO3NCQUhKLFNBQVM7dUJBQUMsT0FBTyxFQUFFO3dCQUNsQixNQUFNLEVBQUUsSUFBSTtxQkFDYjtnQkFha0MsS0FBSztzQkFBdkMsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHRha2VXaGlsZSwgdGhyb3R0bGVUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVGV0YUNoYXJ0IH0gZnJvbSAnLi4vY29yZS9jaGFydCc7XG5pbXBvcnQgeyBDaGFydE9wdGlvbnMgfSBmcm9tICcuLi9tb2RlbC9jaGFydC1vcHRpb25zJztcbmltcG9ydCB7IEJhc2VQb2ludCB9IGZyb20gJy4uL21vZGVsL3BvaW50L2Jhc2UtcG9pbnQnO1xuaW1wb3J0IHsgU2VyaWVzIH0gZnJvbSAnLi4vbW9kZWwvc2VyaWVzJztcbmltcG9ydCB7IFBsb3RMaW5lIH0gZnJvbSAnLi4vbW9kZWwvcGxvdC1saW5lJztcbmltcG9ydCB7IFBsb3RCYW5kIH0gZnJvbSAnLi4vbW9kZWwvcGxvdC1iYW5kJztcbmltcG9ydCB7IElEcmFnRXZlbnQgfSBmcm9tICcuLi9tb2RlbC9pLWRyYWctZXZlbnQnO1xuaW1wb3J0IHsgSVpvb21FdmVudCB9IGZyb20gJy4uL21vZGVsL2ktem9vbS1ldmVudCc7XG5pbXBvcnQgeyBTZXJpZXNUeXBlIH0gZnJvbSAnLi4vbW9kZWwvZW51bS9zZXJpZXMtdHlwZSc7XG5pbXBvcnQgeyBCYXJQb2ludCB9IGZyb20gJy4uL21vZGVsL3BvaW50L2Jhci1wb2ludCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RldGEtY2hhcnQnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hhcnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGFydC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQ2hhcnRDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzXG57XG4gIEBJbnB1dCgpIHpvb206IElab29tRXZlbnQ7XG5cbiAgQElucHV0KCkgY29uZmlnOiBDaGFydE9wdGlvbnM7XG5cbiAgQE91dHB1dCgpXG4gIHBsb3RMaW5lc01vdmU6IEV2ZW50RW1pdHRlcjxJRHJhZ0V2ZW50PFBsb3RMaW5lPj4gPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgIElEcmFnRXZlbnQ8UGxvdExpbmU+XG4gID4oKTtcbiAgQE91dHB1dCgpXG4gIHBsb3RCYW5kc01vdmU6IEV2ZW50RW1pdHRlcjxJRHJhZ0V2ZW50PFBsb3RCYW5kPj4gPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgIElEcmFnRXZlbnQ8UGxvdEJhbmQ+XG4gID4oKTtcblxuICBAT3V0cHV0KClcbiAgc2VyaWVzTW92ZTogRXZlbnRFbWl0dGVyPElEcmFnRXZlbnQ8U2VyaWVzPEJhc2VQb2ludD4+PiA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgSURyYWdFdmVudDxTZXJpZXM8QmFzZVBvaW50Pj5cbiAgPigpO1xuXG4gIEBPdXRwdXQoKVxuICBwb2ludE1vdmU6IEV2ZW50RW1pdHRlcjxJRHJhZ0V2ZW50PFNlcmllczxCYXNlUG9pbnQ+Pj4gPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgIElEcmFnRXZlbnQ8U2VyaWVzPEJhc2VQb2ludD4+XG4gID4oKTtcblxuICBAT3V0cHV0KClcbiAgem9vbUNoYW5nZTogRXZlbnRFbWl0dGVyPElab29tRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxJWm9vbUV2ZW50PigpO1xuXG4gIEBWaWV3Q2hpbGQoJ2NoYXJ0Jywge1xuICAgIHN0YXRpYzogdHJ1ZSxcbiAgfSlcbiAgY2hhcnQ6IEVsZW1lbnRSZWY7XG4gIGhhc1Nlcmllc0RhdGE6IGJvb2xlYW47XG5cbiAgcHJpdmF0ZSBfY29uZmlnOiBDaGFydE9wdGlvbnM7XG4gIHByaXZhdGUgX2FsaXZlID0gdHJ1ZTtcbiAgcHJpdmF0ZSBzaXplJCA9IG5ldyBTdWJqZWN0PGFueT4oKTtcbiAgcHJpdmF0ZSBfb2JzZXJ2ZXI6IFJlc2l6ZU9ic2VydmVyO1xuICBwcml2YXRlIF9jaGFydDogVGV0YUNoYXJ0O1xuICBwcml2YXRlIF96b29tOiBJWm9vbUV2ZW50O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3pvbmU6IE5nWm9uZSkge31cblxuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pIGNsaWNrKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBjb21wb3NlZFBhdGggPSBldmVudC5jb21wb3NlZFBhdGgoKTtcbiAgICBjb25zdCB0cmlnZ2VyVG9rZW4gPSAnbGVnZW5kJztcblxuICAgIGNvbnN0IGlzTGVnZW5kID0gY29tcG9zZWRQYXRoLnNvbWUoKF8pID0+XG4gICAgICBfLmNsYXNzTGlzdD8uY29udGFpbnModHJpZ2dlclRva2VuKVxuICAgICk7XG5cbiAgICBpZiAoaXNMZWdlbmQpIHtcbiAgICAgIGNvbnN0IGNsaWNrZWRFbGVtZW50OiBhbnkgPSBldmVudC50YXJnZXQ/Ll9fZGF0YV9fO1xuXG4gICAgICBpZiAoIWNsaWNrZWRFbGVtZW50KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc2VyaWVJbmRleCA9IHRoaXMuX2NvbmZpZz8uc2VyaWVzPy5pbmRleE9mKGNsaWNrZWRFbGVtZW50KTtcblxuICAgICAgaWYgKGNsaWNrZWRFbGVtZW50LnNlcmllVHlwZSA9PT0gU2VyaWVzVHlwZS5iYXIpIHtcbiAgICAgICAgY29uc3QgZm91bmRTZXJpZSA9IHRoaXMuX2NvbmZpZy5zZXJpZXNbY2xpY2tlZEVsZW1lbnQuc2VyaWVJbmRleF07XG5cbiAgICAgICAgdGhpcy5fY29uZmlnLnNlcmllc1tmb3VuZFNlcmllLmlkXS5kYXRhID0gdGhpcy5fY29uZmlnLnNlcmllc1tcbiAgICAgICAgICBmb3VuZFNlcmllLmlkXG4gICAgICAgIF0uZGF0YS5tYXAoKF86IEJhc2VQb2ludCAmIEJhclBvaW50KSA9PiB7XG4gICAgICAgICAgaWYgKGNsaWNrZWRFbGVtZW50LmlkID09PSBfLmlkKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAuLi5fLFxuICAgICAgICAgICAgICB2aXNpYmxlOiAhXy52aXNpYmxlLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gXztcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5yZWRyYXcodGhpcy5fY29uZmlnKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHNlcmllSW5kZXggIT09IC0xKSB7XG4gICAgICAgIGNvbnN0IGZvdW5kU2VyaWUgPSB0aGlzLl9jb25maWcuc2VyaWVzW3NlcmllSW5kZXhdO1xuXG4gICAgICAgIGNvbnN0IHlBeGlzSW5kZXggPSBmb3VuZFNlcmllPy55QXhpc0luZGV4O1xuXG4gICAgICAgIHRoaXMuX2NvbmZpZy5zZXJpZXNbc2VyaWVJbmRleF0udmlzaWJsZSA9ICFmb3VuZFNlcmllLnZpc2libGU7XG5cbiAgICAgICAgY29uc3QgYXR0YWNoZWRZQXhlcyA9IHRoaXMuX2NvbmZpZy5zZXJpZXNcbiAgICAgICAgICA/LmZpbHRlcigoXykgPT4gXy52aXNpYmxlKVxuICAgICAgICAgIC5tYXAoKF8pID0+IF8ueUF4aXNJbmRleCk7XG5cbiAgICAgICAgY29uc3Qgc2hvdWxkVmlzaWJsZVlBeGlzID0gYXR0YWNoZWRZQXhlcz8uaW5jbHVkZXMoeUF4aXNJbmRleCk7XG5cbiAgICAgICAgdGhpcy5fY29uZmlnLnlBeGlzW3lBeGlzSW5kZXhdLnZpc2libGUgPSBzaG91bGRWaXNpYmxlWUF4aXM7XG4gICAgICAgIHRoaXMucmVkcmF3KHRoaXMuX2NvbmZpZyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmICh0aGlzLmNvbmZpZyAmJiBjaGFuZ2VzLmhhc093blByb3BlcnR5KCdjb25maWcnKSkge1xuICAgICAgdGhpcy5zZXRDb25maWcodGhpcy5jb25maWcpO1xuXG4gICAgICBpZiAodGhpcy56b29tKSB7XG4gICAgICAgIHRoaXMuX2NoYXJ0Py5zZXRab29tKHRoaXMuem9vbSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuem9vbSAmJiBjaGFuZ2VzLmhhc093blByb3BlcnR5KCd6b29tJykpIHtcbiAgICAgIHRoaXMuX2NoYXJ0Py5zZXRab29tKHRoaXMuem9vbSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7fVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9vYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoZW50cmllcykgPT4ge1xuICAgICAgY29uc3QgeyBjb250ZW50UmVjdCB9ID0gZW50cmllc1swXTtcbiAgICAgIHRoaXMuc2l6ZSQubmV4dChjb250ZW50UmVjdCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9vYnNlcnZlci5vYnNlcnZlKHRoaXMuY2hhcnQubmF0aXZlRWxlbWVudCk7XG5cbiAgICB0aGlzLnNpemUkXG4gICAgICAucGlwZSh0aHJvdHRsZVRpbWUoMTAwLCB1bmRlZmluZWQsIHsgdHJhaWxpbmc6IHRydWUgfSkpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVdoaWxlKChfKSA9PiB0aGlzLl9hbGl2ZSksXG4gICAgICAgIG1hcCgoXykgPT4ge1xuICAgICAgICAgIHRoaXMucmVzaXplKF8pO1xuICAgICAgICAgIHRoaXMucmVkcmF3KHRoaXMuX2NvbmZpZyk7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9hbGl2ZSA9IGZhbHNlO1xuICAgIHRoaXMuX29ic2VydmVyPy51bm9ic2VydmUodGhpcy5jaGFydC5uYXRpdmVFbGVtZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVkcmF3KGNvbmZpZzogYW55KSB7XG4gICAgaWYgKGNvbmZpZykge1xuICAgICAgdGhpcy5fY2hhcnQucmVkcmF3KGNvbmZpZyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZXNpemUoY29udGVudFJlY3Q6IGFueSkge1xuICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gY29udGVudFJlY3Q7XG4gICAgdGhpcy5fY2hhcnQuc2V0U2l6ZSh7XG4gICAgICB3aWR0aCxcbiAgICAgIGhlaWdodCxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Q29uZmlnKGNvbmZpZzogQ2hhcnRPcHRpb25zKSB7XG4gICAgaWYgKGNvbmZpZykge1xuICAgICAgdGhpcy5fY29uZmlnID0gY29uZmlnO1xuICAgICAgdGhpcy5oYXNTZXJpZXNEYXRhID0gISF0aGlzLl9jb25maWc/LnNlcmllcz8uc29tZSgoXykgPT4gXy5kYXRhLmxlbmd0aCk7XG5cbiAgICAgIGlmICghdGhpcy5fY2hhcnQpIHtcbiAgICAgICAgdGhpcy5fY2hhcnQgPSBuZXcgVGV0YUNoYXJ0KHRoaXMuX2NvbmZpZywgdGhpcy5jaGFydCk7XG5cbiAgICAgICAgdGhpcy5fY2hhcnQucGxvdExpbmVzTW92ZVxuICAgICAgICAgIC5waXBlKHRha2VXaGlsZSgoXykgPT4gdGhpcy5fYWxpdmUpKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKF8pID0+IHRoaXMucGxvdExpbmVzTW92ZS5lbWl0KF8pKTtcblxuICAgICAgICB0aGlzLl9jaGFydC5wbG90QmFuZHNNb3ZlXG4gICAgICAgICAgLnBpcGUodGFrZVdoaWxlKChfKSA9PiB0aGlzLl9hbGl2ZSkpXG4gICAgICAgICAgLnN1YnNjcmliZSgoXykgPT4gdGhpcy5wbG90QmFuZHNNb3ZlLmVtaXQoXykpO1xuXG4gICAgICAgIHRoaXMuX2NoYXJ0LnNlcmllc01vdmVcbiAgICAgICAgICAucGlwZSh0YWtlV2hpbGUoKF8pID0+IHRoaXMuX2FsaXZlKSlcbiAgICAgICAgICAuc3Vic2NyaWJlKChfKSA9PiB0aGlzLnNlcmllc01vdmUuZW1pdChfKSk7XG5cbiAgICAgICAgdGhpcy5fY2hhcnQucG9pbnRNb3ZlXG4gICAgICAgICAgLnBpcGUodGFrZVdoaWxlKChfKSA9PiB0aGlzLl9hbGl2ZSkpXG4gICAgICAgICAgLnN1YnNjcmliZSgoXykgPT4ge1xuICAgICAgICAgICAgdGhpcy5wb2ludE1vdmUuZW1pdChfKTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9jaGFydC56b29tXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICB0YWtlV2hpbGUoKF8pID0+IHRoaXMuX2FsaXZlKSxcbiAgICAgICAgICAgIG1hcCgoXykgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnpvb21DaGFuZ2UuZW1pdChfKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuY2hhcnQpIHtcbiAgICAgICAgaWYgKHRoaXMuaGFzU2VyaWVzRGF0YSkge1xuICAgICAgICAgIGlmICghdGhpcy5fem9vbSB8fCB0aGlzLl96b29tPy5ldmVudD8udHlwZSA9PT0gJ2VuZCcpIHtcbiAgICAgICAgICAgIHRoaXMucmVkcmF3KHRoaXMuX2NvbmZpZyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IFtzdHlsZS5kaXNwbGF5XT1cImhhc1Nlcmllc0RhdGEgPyAnY29udGVudHMnIDogJ25vbmUnXCI+XG4gIDxkaXYgI2NoYXJ0IGNsYXNzPVwiY2hhcnQtY29udGFpbmVyXCI+PC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJsZWdlbmQtY29udGFpbmVyXCI+PC9kaXY+XG48L2Rpdj5cbjxkaXYgW3N0eWxlLmRpc3BsYXldPVwiIWhhc1Nlcmllc0RhdGEgPyAnYmxvY2snIDogJ25vbmUnXCIgY2xhc3M9XCJjaGFydC1wbGFjZWhvbGRlciB0ZXh0LWFsaWduLWNlbnRlclwiPlxuICA8c3BhbiBjbGFzcz1cImZvbnQtYm9keS0zIGNvbG9yLXRleHQtNDBcIj7QlNCw0L3QvdGL0LUg0L7RgtGB0YPRgtGB0YLQstGD0Y7Rgjwvc3Bhbj5cbjwvZGl2PlxuXG5cbiJdfQ==
|