@tetacom/svg-charts 1.2.26 → 1.2.29
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/chart/chart-container/series/line/line-series.component.d.ts +8 -0
- package/chart/chart-container/series/linear-series-base.d.ts +3 -2
- package/chart/chart.module.d.ts +4 -3
- package/chart/directives/draggable-point.directive.d.ts +40 -0
- package/chart/model/marker-options.d.ts +14 -1
- package/esm2020/chart/chart-container/series/line/line-series.component.mjs +71 -3
- package/esm2020/chart/chart-container/series/linear-series-base.mjs +67 -47
- package/esm2020/chart/chart-container/x-axis/x-axis.component.mjs +2 -2
- package/esm2020/chart/chart.module.mjs +5 -2
- package/esm2020/chart/directives/draggable-point.directive.mjs +141 -0
- package/esm2020/chart/model/marker-options.mjs +1 -1
- package/fesm2015/tetacom-svg-charts.mjs +283 -58
- package/fesm2015/tetacom-svg-charts.mjs.map +1 -1
- package/fesm2020/tetacom-svg-charts.mjs +283 -55
- package/fesm2020/tetacom-svg-charts.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -12,6 +12,14 @@ export declare class LineSeriesComponent<T extends BasePoint> extends LinearSeri
|
|
|
12
12
|
protected zoomService: ZoomService;
|
|
13
13
|
protected element: ElementRef;
|
|
14
14
|
constructor(svc: ChartService, cdr: ChangeDetectorRef, scaleService: ScaleService, zoomService: ZoomService, element: ElementRef);
|
|
15
|
+
private start;
|
|
16
|
+
private labelStart;
|
|
17
|
+
moveStart(event: any, point: any): void;
|
|
18
|
+
moveEnd(event: any, point: any): void;
|
|
19
|
+
moveProcess(event: any, point: any): void;
|
|
20
|
+
startLabel(event: any, label: any): void;
|
|
21
|
+
moveLabel(event: any, label: any): void;
|
|
22
|
+
allowDrag: (point: BasePoint) => (newPoint: any) => boolean;
|
|
15
23
|
static ɵfac: i0.ɵɵFactoryDeclaration<LineSeriesComponent<any>, never>;
|
|
16
24
|
static ɵcmp: i0.ɵɵComponentDeclaration<LineSeriesComponent<any>, "svg:svg[teta-line-series]", never, {}, {}, never, never, false>;
|
|
17
25
|
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { BasePoint } from '../../model/base-point';
|
|
2
2
|
import { SeriesBaseComponent } from '../../base/series-base.component';
|
|
3
3
|
import { ChangeDetectorRef, ElementRef, OnDestroy, OnInit } from '@angular/core';
|
|
4
|
-
import { Observable } from 'rxjs';
|
|
4
|
+
import { BehaviorSubject, Observable } from 'rxjs';
|
|
5
5
|
import { ChartService } from '../../service/chart.service';
|
|
6
6
|
import { ScaleService } from '../../service/scale.service';
|
|
7
7
|
import { ZoomService } from '../../service/zoom.service';
|
|
8
8
|
import { ClipPointsDirection } from '../../model/enum/clip-points-direction';
|
|
9
|
-
import { Series } from
|
|
9
|
+
import { Series } from '../../model/series';
|
|
10
10
|
import * as i0 from "@angular/core";
|
|
11
11
|
export declare class LinearSeriesBase<T extends BasePoint> extends SeriesBaseComponent<T> implements OnInit, OnDestroy {
|
|
12
12
|
protected svc: ChartService;
|
|
@@ -24,6 +24,7 @@ export declare class LinearSeriesBase<T extends BasePoint> extends SeriesBaseCom
|
|
|
24
24
|
markers: BasePoint[];
|
|
25
25
|
markerListeners: any;
|
|
26
26
|
private __series;
|
|
27
|
+
protected _update: BehaviorSubject<void>;
|
|
27
28
|
set series(series: Series<T>);
|
|
28
29
|
get series(): Series<T>;
|
|
29
30
|
constructor(svc: ChartService, cdr: ChangeDetectorRef, scaleService: ScaleService, zoomService: ZoomService, element: ElementRef);
|
package/chart/chart.module.d.ts
CHANGED
|
@@ -21,10 +21,11 @@ import * as i19 from "./chart-container/series/block-series/block-series.compone
|
|
|
21
21
|
import * as i20 from "./chart-container/series/block-area-series/block-area-series.component";
|
|
22
22
|
import * as i21 from "./chart-container/annotation/annotation.component";
|
|
23
23
|
import * as i22 from "./chart-container/crosshair/crosshair.component";
|
|
24
|
-
import * as i23 from "
|
|
25
|
-
import * as i24 from "@
|
|
24
|
+
import * as i23 from "./directives/draggable-point.directive";
|
|
25
|
+
import * as i24 from "@angular/common";
|
|
26
|
+
import * as i25 from "@tetacom/ng-components";
|
|
26
27
|
export declare class ChartModule {
|
|
27
28
|
static ɵfac: i0.ɵɵFactoryDeclaration<ChartModule, never>;
|
|
28
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<ChartModule, [typeof i1.ChartComponent, typeof i2.SeriesHostComponent, typeof i3.ChartContainerComponent, typeof i4.LegendComponent, typeof i5.SeriesBaseComponent, typeof i6.LinearSeriesBase, typeof i7.LineSeriesComponent, typeof i8.GridlinesComponent, typeof i9.XAxisComponent, typeof i10.YAxisComponent, typeof i11.PlotlineComponent, typeof i12.PlotBandComponent, typeof i13.BarSeriesComponent, typeof i14.TooltipComponent, typeof i15.ZoomableDirective, typeof i16.BrushableDirective, typeof i17.AreaSeriesComponent, typeof i18.ScatterSeriesComponent, typeof i19.BlockSeriesComponent, typeof i20.BlockAreaSeriesComponent, typeof i21.AnnotationComponent, typeof i22.CrosshairComponent], [typeof
|
|
29
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<ChartModule, [typeof i1.ChartComponent, typeof i2.SeriesHostComponent, typeof i3.ChartContainerComponent, typeof i4.LegendComponent, typeof i5.SeriesBaseComponent, typeof i6.LinearSeriesBase, typeof i7.LineSeriesComponent, typeof i8.GridlinesComponent, typeof i9.XAxisComponent, typeof i10.YAxisComponent, typeof i11.PlotlineComponent, typeof i12.PlotBandComponent, typeof i13.BarSeriesComponent, typeof i14.TooltipComponent, typeof i15.ZoomableDirective, typeof i16.BrushableDirective, typeof i17.AreaSeriesComponent, typeof i18.ScatterSeriesComponent, typeof i19.BlockSeriesComponent, typeof i20.BlockAreaSeriesComponent, typeof i21.AnnotationComponent, typeof i22.CrosshairComponent, typeof i23.DraggablePointDirective], [typeof i24.CommonModule, typeof i25.LetModule], [typeof i1.ChartComponent, typeof i4.LegendComponent, typeof i5.SeriesBaseComponent, typeof i7.LineSeriesComponent, typeof i13.BarSeriesComponent, typeof i18.ScatterSeriesComponent, typeof i17.AreaSeriesComponent, typeof i19.BlockSeriesComponent, typeof i20.BlockAreaSeriesComponent]>;
|
|
29
30
|
static ɵinj: i0.ɵɵInjectorDeclaration<ChartModule>;
|
|
30
31
|
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { ElementRef, EventEmitter } from '@angular/core';
|
|
2
|
+
import { DragPointType } from '../model/enum/drag-point-type';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class DraggablePointDirective {
|
|
5
|
+
private _elementRef;
|
|
6
|
+
tetaDraggablePoint: boolean;
|
|
7
|
+
dragDirection: DragPointType;
|
|
8
|
+
allowDrag: (point: {
|
|
9
|
+
x: number;
|
|
10
|
+
y: number;
|
|
11
|
+
deltaX: number;
|
|
12
|
+
deltaY: number;
|
|
13
|
+
}) => boolean;
|
|
14
|
+
private startPosition;
|
|
15
|
+
private transformCache;
|
|
16
|
+
constructor(_elementRef: ElementRef);
|
|
17
|
+
moveStart: EventEmitter<{
|
|
18
|
+
x: number;
|
|
19
|
+
y: number;
|
|
20
|
+
}>;
|
|
21
|
+
moveProcess: EventEmitter<{
|
|
22
|
+
x: number;
|
|
23
|
+
y: number;
|
|
24
|
+
deltaX: number;
|
|
25
|
+
deltaY: number;
|
|
26
|
+
}>;
|
|
27
|
+
moveEnd: EventEmitter<{
|
|
28
|
+
x: number;
|
|
29
|
+
y: number;
|
|
30
|
+
deltaX: number;
|
|
31
|
+
deltaY: number;
|
|
32
|
+
}>;
|
|
33
|
+
mouseDown(event: MouseEvent): void;
|
|
34
|
+
mouseUp(event: MouseEvent): void;
|
|
35
|
+
mouseMove(event: MouseEvent): void;
|
|
36
|
+
setTransform(x: number, y: number): void;
|
|
37
|
+
resetTransform(): void;
|
|
38
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DraggablePointDirective, never>;
|
|
39
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<DraggablePointDirective, "[tetaDraggablePoint]", ["tetaDraggablePoint"], { "tetaDraggablePoint": "tetaDraggablePoint"; "dragDirection": "dragDirection"; "allowDrag": "allowDrag"; }, { "moveStart": "moveStart"; "moveProcess": "moveProcess"; "moveEnd": "moveEnd"; }, never, never, false>;
|
|
40
|
+
}
|
|
@@ -1,7 +1,20 @@
|
|
|
1
1
|
import { DragPointType } from './enum/drag-point-type';
|
|
2
2
|
import { SvgAttributes } from './svg-attributes';
|
|
3
|
-
export interface
|
|
3
|
+
export interface DragObjectOptions {
|
|
4
4
|
draggable?: boolean;
|
|
5
5
|
dragType: DragPointType;
|
|
6
|
+
minX?: number;
|
|
7
|
+
minY?: number;
|
|
8
|
+
maxX?: number;
|
|
9
|
+
maxY?: number;
|
|
10
|
+
}
|
|
11
|
+
export interface LabelOptions extends DragObjectOptions {
|
|
12
|
+
style?: SvgAttributes;
|
|
13
|
+
text?: string;
|
|
14
|
+
dx?: number;
|
|
15
|
+
dy?: number;
|
|
16
|
+
}
|
|
17
|
+
export interface MarkerOptions extends DragObjectOptions {
|
|
6
18
|
style?: SvgAttributes;
|
|
19
|
+
label?: LabelOptions;
|
|
7
20
|
}
|
|
@@ -5,6 +5,7 @@ import * as i1 from "../../../service/chart.service";
|
|
|
5
5
|
import * as i2 from "../../../service/scale.service";
|
|
6
6
|
import * as i3 from "../../../service/zoom.service";
|
|
7
7
|
import * as i4 from "@angular/common";
|
|
8
|
+
import * as i5 from "../../../directives/draggable-point.directive";
|
|
8
9
|
export class LineSeriesComponent extends LinearSeriesBase {
|
|
9
10
|
constructor(svc, cdr, scaleService, zoomService, element) {
|
|
10
11
|
super(svc, cdr, scaleService, zoomService, element);
|
|
@@ -13,12 +14,79 @@ export class LineSeriesComponent extends LinearSeriesBase {
|
|
|
13
14
|
this.scaleService = scaleService;
|
|
14
15
|
this.zoomService = zoomService;
|
|
15
16
|
this.element = element;
|
|
17
|
+
this.allowDrag = (point) => {
|
|
18
|
+
return (newPoint) => {
|
|
19
|
+
if (point.marker.minX !== null && point.marker.minX !== undefined) {
|
|
20
|
+
if (this.x.invert(this.x(this.start.x) + newPoint.deltaX) < point.marker.minX) {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
if (point.marker.maxX !== null && point.marker.maxX !== undefined) {
|
|
25
|
+
if (this.x.invert(this.x(this.start.x) + newPoint.deltaX) > point.marker.maxX) {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
if (point.marker.minY !== null && point.marker.minY !== undefined) {
|
|
30
|
+
if (this.y.invert(this.y(this.start.y) + newPoint.deltaY) < point.marker.minY) {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
if (point.marker.maxY !== null && point.marker.maxY !== undefined) {
|
|
35
|
+
if (this.y.invert(this.y(this.start.y) + newPoint.deltaY) > point.marker.maxY) {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return true;
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
moveStart(event, point) {
|
|
44
|
+
this.start = { x: point.x, y: point.y };
|
|
45
|
+
}
|
|
46
|
+
moveEnd(event, point) {
|
|
47
|
+
point.x = this.x.invert(this.x(this.start.x) + event.deltaX);
|
|
48
|
+
point.y = this.y.invert(this.y(this.start.y) + event.deltaY);
|
|
49
|
+
this._update.next();
|
|
50
|
+
const emitEvent = {
|
|
51
|
+
type: 'end',
|
|
52
|
+
sourceEvent: event
|
|
53
|
+
};
|
|
54
|
+
this.svc.emitPoint({
|
|
55
|
+
target: {
|
|
56
|
+
series: this.series,
|
|
57
|
+
point: point,
|
|
58
|
+
},
|
|
59
|
+
event: emitEvent,
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
moveProcess(event, point) {
|
|
63
|
+
point.x = this.x.invert(this.x(this.start.x) + event.deltaX);
|
|
64
|
+
point.y = this.y.invert(this.y(this.start.y) + event.deltaY);
|
|
65
|
+
this._update.next();
|
|
66
|
+
const emitEvent = {
|
|
67
|
+
type: 'drag',
|
|
68
|
+
sourceEvent: event
|
|
69
|
+
};
|
|
70
|
+
this.svc.emitPoint({
|
|
71
|
+
target: {
|
|
72
|
+
series: this.series,
|
|
73
|
+
point: point,
|
|
74
|
+
},
|
|
75
|
+
event: emitEvent,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
startLabel(event, label) {
|
|
79
|
+
this.labelStart = { dx: label.dx, dy: label.dy };
|
|
80
|
+
}
|
|
81
|
+
moveLabel(event, label) {
|
|
82
|
+
label.dx = this.labelStart.dx + event.deltaX;
|
|
83
|
+
label.dy = this.labelStart.dy + event.deltaY;
|
|
16
84
|
}
|
|
17
85
|
}
|
|
18
86
|
LineSeriesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: LineSeriesComponent, deps: [{ token: i1.ChartService }, { token: i0.ChangeDetectorRef }, { token: i2.ScaleService }, { token: i3.ZoomService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
19
|
-
LineSeriesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: LineSeriesComponent, selector: "svg:svg[teta-line-series]", usesInheritance: true, ngImport: i0, template: "<svg:path\n class=\"line\"\n [attr.d]=\"path | async\"\n [attr.stroke]=\"series.color\"\n [attr.stroke-dasharray]=\"series.style?.strokeDasharray\"\n [attr.stroke-width]=\"series.style?.strokeWidth\"\n fill=\"none\">\n</svg:path>\n<ng-container *ngIf=\"transform | async as t\">\n <svg:circle\n *ngIf=\"t?.x !=null && t?.y!=null\"\n r=\"3\"\n [attr.fill]=\"series.color\"\n [attr.transform]=\"'translate('+ t.x +', '+ t.y +')'\"\n >\n </svg:circle>\n</ng-container>\n<ng-container *ngIf=\"markers as draggablePoints\">\n <svg:
|
|
87
|
+
LineSeriesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: LineSeriesComponent, selector: "svg:svg[teta-line-series]", usesInheritance: true, ngImport: i0, template: "<svg:path\n class=\"line\"\n [attr.d]=\"path | async\"\n [attr.stroke]=\"series.color\"\n [attr.stroke-dasharray]=\"series.style?.strokeDasharray\"\n [attr.stroke-width]=\"series.style?.strokeWidth\"\n fill=\"none\">\n</svg:path>\n<ng-container *ngIf=\"transform | async as t\">\n <svg:circle\n *ngIf=\"t?.x !=null && t?.y!=null\"\n r=\"3\"\n [attr.fill]=\"series.color\"\n [attr.transform]=\"'translate('+ t.x +', '+ t.y +')'\"\n >\n </svg:circle>\n</ng-container>\n<ng-container *ngIf=\"markers as draggablePoints\">\n <svg:g\n *ngFor=\"let point of draggablePoints\"\n [attr.transform]=\"'translate(' + x(point.x)+ ',' +y(point.y) + ')'\">\n <svg:g [tetaDraggablePoint]=\"point.marker.draggable\"\n [dragDirection]=\"point.marker.dragType\"\n [allowDrag]=\"allowDrag(point)\"\n #dragPoint=\"tetaDraggablePoint\"\n (moveStart)=\"moveStart($event, point)\"\n (moveEnd)=\"moveEnd($event, point);dragPoint.resetTransform();\"\n (moveProcess)=\"moveProcess($event, point);dragPoint.resetTransform();\"\n [class.draggable-marker]=\"point?.marker?.draggable\">\n <svg:circle\n class=\"marker\"\n [attr.r]=\"point.marker.style?.radius ?? 5\"\n [attr.fill]=\"point.marker.style?.fill ?? 'transparent'\"\n [attr.stroke]=\"point.marker.style?.stroke ?? 'none'\"\n [attr.stroke-width]=\"point.marker.style?.strokeWidth\"\n [attr.stroke-dasharray]=\"point.marker.style?.strokeDasharray\"\n [attr.cx]=\"0\"\n [attr.cy]=\"0\">\n </svg:circle>\n <ng-container *ngIf=\"point.marker.label?.text\">\n <svg:line\n [attr.x1]=\"0\"\n [attr.y1]=\"0\"\n [attr.x2]=\"point.marker.label?.dx\"\n [attr.y2]=\"point.marker.label?.dy\"\n [attr.stroke]=\"point.marker.label?.style?.stroke ?? 'var(--color-text-90)'\"\n [attr.stroke-width]=\"point.marker.label?.style?.strokeWidth ?? 1\"\n [attr.stroke-dasharray]=\"point.marker.label?.style?.strokeDasharray ?? null\">\n </svg:line>\n <svg:foreignObject\n [tetaDraggablePoint]=\"point.marker.label?.draggable\"\n [dragDirection]=\"point.marker.label.dragType\"\n #labelPoint=\"tetaDraggablePoint\"\n (moveStart)=\"startLabel($event, point.marker.label)\"\n (moveProcess)=\"moveLabel($event, point.marker.label); labelPoint.resetTransform();\"\n (moveEnd)=\"labelPoint.resetTransform();\"\n [attr.width]=\"annotationNode?.offsetWidth ?? 0\"\n [attr.height]=\"annotationNode?.offsetHeight ?? 0\"\n [attr.x]=\"point.marker.label?.dx\"\n [attr.y]=\"point.marker.label?.dy\"\n class=\"position-absolute\">\n <div\n #annotationNode\n class=\"shadow-2 padding-2\"\n [style.color]=\"'var(--color-text-90)'\"\n [style.background-color]=\"'var(--color-background-50)'\"\n [style.cursor]=\"'move'\"\n style=\"border-radius: 2px; display: inline-block;\">\n {{point.marker.label?.text}}\n </div>\n </svg:foreignObject>\n </ng-container>\n </svg:g>\n </svg:g>\n</ng-container>\n\n\n\n", styles: [".draggable-marker{cursor:move}.active{stroke-opacity:.5}.marker-grab{opacity:0}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DraggablePointDirective, selector: "[tetaDraggablePoint]", inputs: ["tetaDraggablePoint", "dragDirection", "allowDrag"], outputs: ["moveStart", "moveProcess", "moveEnd"], exportAs: ["tetaDraggablePoint"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
20
88
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: LineSeriesComponent, decorators: [{
|
|
21
89
|
type: Component,
|
|
22
|
-
args: [{ selector: 'svg:svg[teta-line-series]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<svg:path\n class=\"line\"\n [attr.d]=\"path | async\"\n [attr.stroke]=\"series.color\"\n [attr.stroke-dasharray]=\"series.style?.strokeDasharray\"\n [attr.stroke-width]=\"series.style?.strokeWidth\"\n fill=\"none\">\n</svg:path>\n<ng-container *ngIf=\"transform | async as t\">\n <svg:circle\n *ngIf=\"t?.x !=null && t?.y!=null\"\n r=\"3\"\n [attr.fill]=\"series.color\"\n [attr.transform]=\"'translate('+ t.x +', '+ t.y +')'\"\n >\n </svg:circle>\n</ng-container>\n<ng-container *ngIf=\"markers as draggablePoints\">\n <svg:
|
|
90
|
+
args: [{ selector: 'svg:svg[teta-line-series]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<svg:path\n class=\"line\"\n [attr.d]=\"path | async\"\n [attr.stroke]=\"series.color\"\n [attr.stroke-dasharray]=\"series.style?.strokeDasharray\"\n [attr.stroke-width]=\"series.style?.strokeWidth\"\n fill=\"none\">\n</svg:path>\n<ng-container *ngIf=\"transform | async as t\">\n <svg:circle\n *ngIf=\"t?.x !=null && t?.y!=null\"\n r=\"3\"\n [attr.fill]=\"series.color\"\n [attr.transform]=\"'translate('+ t.x +', '+ t.y +')'\"\n >\n </svg:circle>\n</ng-container>\n<ng-container *ngIf=\"markers as draggablePoints\">\n <svg:g\n *ngFor=\"let point of draggablePoints\"\n [attr.transform]=\"'translate(' + x(point.x)+ ',' +y(point.y) + ')'\">\n <svg:g [tetaDraggablePoint]=\"point.marker.draggable\"\n [dragDirection]=\"point.marker.dragType\"\n [allowDrag]=\"allowDrag(point)\"\n #dragPoint=\"tetaDraggablePoint\"\n (moveStart)=\"moveStart($event, point)\"\n (moveEnd)=\"moveEnd($event, point);dragPoint.resetTransform();\"\n (moveProcess)=\"moveProcess($event, point);dragPoint.resetTransform();\"\n [class.draggable-marker]=\"point?.marker?.draggable\">\n <svg:circle\n class=\"marker\"\n [attr.r]=\"point.marker.style?.radius ?? 5\"\n [attr.fill]=\"point.marker.style?.fill ?? 'transparent'\"\n [attr.stroke]=\"point.marker.style?.stroke ?? 'none'\"\n [attr.stroke-width]=\"point.marker.style?.strokeWidth\"\n [attr.stroke-dasharray]=\"point.marker.style?.strokeDasharray\"\n [attr.cx]=\"0\"\n [attr.cy]=\"0\">\n </svg:circle>\n <ng-container *ngIf=\"point.marker.label?.text\">\n <svg:line\n [attr.x1]=\"0\"\n [attr.y1]=\"0\"\n [attr.x2]=\"point.marker.label?.dx\"\n [attr.y2]=\"point.marker.label?.dy\"\n [attr.stroke]=\"point.marker.label?.style?.stroke ?? 'var(--color-text-90)'\"\n [attr.stroke-width]=\"point.marker.label?.style?.strokeWidth ?? 1\"\n [attr.stroke-dasharray]=\"point.marker.label?.style?.strokeDasharray ?? null\">\n </svg:line>\n <svg:foreignObject\n [tetaDraggablePoint]=\"point.marker.label?.draggable\"\n [dragDirection]=\"point.marker.label.dragType\"\n #labelPoint=\"tetaDraggablePoint\"\n (moveStart)=\"startLabel($event, point.marker.label)\"\n (moveProcess)=\"moveLabel($event, point.marker.label); labelPoint.resetTransform();\"\n (moveEnd)=\"labelPoint.resetTransform();\"\n [attr.width]=\"annotationNode?.offsetWidth ?? 0\"\n [attr.height]=\"annotationNode?.offsetHeight ?? 0\"\n [attr.x]=\"point.marker.label?.dx\"\n [attr.y]=\"point.marker.label?.dy\"\n class=\"position-absolute\">\n <div\n #annotationNode\n class=\"shadow-2 padding-2\"\n [style.color]=\"'var(--color-text-90)'\"\n [style.background-color]=\"'var(--color-background-50)'\"\n [style.cursor]=\"'move'\"\n style=\"border-radius: 2px; display: inline-block;\">\n {{point.marker.label?.text}}\n </div>\n </svg:foreignObject>\n </ng-container>\n </svg:g>\n </svg:g>\n</ng-container>\n\n\n\n", styles: [".draggable-marker{cursor:move}.active{stroke-opacity:.5}.marker-grab{opacity:0}\n"] }]
|
|
23
91
|
}], ctorParameters: function () { return [{ type: i1.ChartService }, { type: i0.ChangeDetectorRef }, { type: i2.ScaleService }, { type: i3.ZoomService }, { type: i0.ElementRef }]; } });
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1zZXJpZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L2NoYXJ0LWNvbnRhaW5lci9zZXJpZXMvbGluZS9saW5lLXNlcmllcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2hhcnQvY2hhcnQtY29udGFpbmVyL3Nlcmllcy9saW5lL2xpbmUtc2VyaWVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFFdkIsU0FBUyxHQUdWLE1BQU0sZUFBZSxDQUFDO0FBS3ZCLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7QUFRdkQsTUFBTSxPQUFPLG1CQUNYLFNBQVEsZ0JBQW1CO0lBRzNCLFlBQ3FCLEdBQWlCLEVBQ2pCLEdBQXNCLEVBQ3RCLFlBQTBCLEVBQzFCLFdBQXdCLEVBQ3hCLE9BQW1CO1FBRXRDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFOakMsUUFBRyxHQUFILEdBQUcsQ0FBYztRQUNqQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixZQUFPLEdBQVAsT0FBTyxDQUFZO0lBR3hDLENBQUM7O2dIQVpVLG1CQUFtQjtvR0FBbkIsbUJBQW1CLHdGQ3BCaEMsb2tDQW1DQTsyRkRmYSxtQkFBbUI7a0JBTi9CLFNBQVM7K0JBQ0UsMkJBQTJCLG1CQUdwQix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsIE5nWm9uZSwgT25EZXN0cm95LFxuICBPbkluaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDaGFydFNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2UvY2hhcnQuc2VydmljZSc7XG5pbXBvcnQge0Jhc2VQb2ludH0gZnJvbSAnLi4vLi4vLi4vbW9kZWwvYmFzZS1wb2ludCc7XG5pbXBvcnQge1NjYWxlU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS9zY2FsZS5zZXJ2aWNlJztcbmltcG9ydCB7Wm9vbVNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2Uvem9vbS5zZXJ2aWNlJztcbmltcG9ydCB7TGluZWFyU2VyaWVzQmFzZX0gZnJvbSAnLi4vbGluZWFyLXNlcmllcy1iYXNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3ZnOnN2Z1t0ZXRhLWxpbmUtc2VyaWVzXScsXG4gIHRlbXBsYXRlVXJsOiAnLi9saW5lLXNlcmllcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2xpbmUtc2VyaWVzLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBMaW5lU2VyaWVzQ29tcG9uZW50PFQgZXh0ZW5kcyBCYXNlUG9pbnQ+XG4gIGV4dGVuZHMgTGluZWFyU2VyaWVzQmFzZTxUPlxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgc3ZjOiBDaGFydFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHNjYWxlU2VydmljZTogU2NhbGVTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBvdmVycmlkZSB6b29tU2VydmljZTogWm9vbVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIGVsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICkge1xuICAgIHN1cGVyKHN2YywgY2RyLCBzY2FsZVNlcnZpY2UsIHpvb21TZXJ2aWNlLCBlbGVtZW50KTtcbiAgfVxufVxuIiwiPHN2ZzpwYXRoXG4gIGNsYXNzPVwibGluZVwiXG4gIFthdHRyLmRdPVwicGF0aCB8IGFzeW5jXCJcbiAgW2F0dHIuc3Ryb2tlXT1cInNlcmllcy5jb2xvclwiXG4gIFthdHRyLnN0cm9rZS1kYXNoYXJyYXldPVwic2VyaWVzLnN0eWxlPy5zdHJva2VEYXNoYXJyYXlcIlxuICBbYXR0ci5zdHJva2Utd2lkdGhdPVwic2VyaWVzLnN0eWxlPy5zdHJva2VXaWR0aFwiXG4gIGZpbGw9XCJub25lXCI+XG48L3N2ZzpwYXRoPlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInRyYW5zZm9ybSB8IGFzeW5jIGFzIHRcIj5cbiAgPHN2ZzpjaXJjbGVcbiAgICAqbmdJZj1cInQ/LnggIT1udWxsICYmIHQ/LnkhPW51bGxcIlxuICAgIHI9XCIzXCJcbiAgICBbYXR0ci5maWxsXT1cInNlcmllcy5jb2xvclwiXG4gICAgW2F0dHIudHJhbnNmb3JtXT1cIid0cmFuc2xhdGUoJysgdC54ICsnLCAnKyB0LnkgKycpJ1wiXG4gID5cbiAgPC9zdmc6Y2lyY2xlPlxuPC9uZy1jb250YWluZXI+XG48bmctY29udGFpbmVyICpuZ0lmPVwibWFya2VycyBhcyBkcmFnZ2FibGVQb2ludHNcIj5cbiAgPHN2ZzpjaXJjbGVcbiAgICBjbGFzcz1cIm1hcmtlclwiXG4gICAgKm5nRm9yPVwibGV0IHBvaW50IG9mIGRyYWdnYWJsZVBvaW50c1wiXG4gICAgW2NsYXNzLmRyYWdnYWJsZS1tYXJrZXJdPVwicG9pbnQ/Lm1hcmtlcj8uZHJhZ2dhYmxlXCJcbiAgICBbYXR0ci5yXT1cInBvaW50Lm1hcmtlci5zdHlsZT8ucmFkaXVzID8/IDVcIlxuICAgIFthdHRyLmZpbGxdPVwicG9pbnQubWFya2VyLnN0eWxlPy5maWxsID8/ICd0cmFuc3BhcmVudCdcIlxuICAgIFthdHRyLnN0cm9rZV09XCJwb2ludC5tYXJrZXIuc3R5bGU/LnN0cm9rZSA/PyAnbm9uZSdcIlxuICAgIFthdHRyLnN0cm9rZS13aWR0aF09XCJwb2ludC5tYXJrZXIuc3R5bGU/LnN0cm9rZVdpZHRoXCJcbiAgICBbYXR0ci5zdHJva2UtZGFzaGFycmF5XT1cInBvaW50Lm1hcmtlci5zdHlsZT8uc3Ryb2tlRGFzaGFycmF5XCJcbiAgICBbYXR0ci5jeF09XCJ4KHBvaW50LngpXCJcbiAgICBbYXR0ci5jeV09XCJ5KHBvaW50LnkpXCJcbiAgPlxuICA8L3N2ZzpjaXJjbGU+XG48L25nLWNvbnRhaW5lcj5cblxuXG5cbiJdfQ==
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1zZXJpZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L2NoYXJ0LWNvbnRhaW5lci9zZXJpZXMvbGluZS9saW5lLXNlcmllcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2hhcnQvY2hhcnQtY29udGFpbmVyL3Nlcmllcy9saW5lL2xpbmUtc2VyaWVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxHQUlWLE1BQU0sZUFBZSxDQUFDO0FBS3ZCLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7O0FBUXZELE1BQU0sT0FBTyxtQkFDWCxTQUFRLGdCQUFtQjtJQUczQixZQUNxQixHQUFpQixFQUNqQixHQUFzQixFQUN0QixZQUEwQixFQUMxQixXQUF3QixFQUN4QixPQUFtQjtRQUV0QyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBTmpDLFFBQUcsR0FBSCxHQUFHLENBQWM7UUFDakIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQXVEeEMsY0FBUyxHQUFHLENBQUMsS0FBZ0IsRUFBRSxFQUFFO1lBQy9CLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRTtnQkFDbEIsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxJQUFJLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFO29CQUNqRSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFB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MkJBQTJCLG1CQUdwQix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q2hhcnRTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL2NoYXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHtCYXNlUG9pbnR9IGZyb20gJy4uLy4uLy4uL21vZGVsL2Jhc2UtcG9pbnQnO1xuaW1wb3J0IHtTY2FsZVNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2Uvc2NhbGUuc2VydmljZSc7XG5pbXBvcnQge1pvb21TZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL3pvb20uc2VydmljZSc7XG5pbXBvcnQge0xpbmVhclNlcmllc0Jhc2V9IGZyb20gJy4uL2xpbmVhci1zZXJpZXMtYmFzZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3N2ZzpzdmdbdGV0YS1saW5lLXNlcmllc10nLFxuICB0ZW1wbGF0ZVVybDogJy4vbGluZS1zZXJpZXMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9saW5lLXNlcmllcy5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTGluZVNlcmllc0NvbXBvbmVudDxUIGV4dGVuZHMgQmFzZVBvaW50PlxuICBleHRlbmRzIExpbmVhclNlcmllc0Jhc2U8VD5cbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHN2YzogQ2hhcnRTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBzY2FsZVNlcnZpY2U6IFNjYWxlU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgem9vbVNlcnZpY2U6IFpvb21TZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBlbGVtZW50OiBFbGVtZW50UmVmLFxuICApIHtcbiAgICBzdXBlcihzdmMsIGNkciwgc2NhbGVTZXJ2aWNlLCB6b29tU2VydmljZSwgZWxlbWVudCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXJ0OiB7IHg6IG51bWJlciwgeTogbnVtYmVyIH07XG4gIHByaXZhdGUgbGFiZWxTdGFydDogeyBkeDogbnVtYmVyLCBkeTogbnVtYmVyIH07XG5cbiAgbW92ZVN0YXJ0KGV2ZW50LCBwb2ludCkge1xuICAgIHRoaXMuc3RhcnQgPSB7eDogcG9pbnQueCwgeTogcG9pbnQueX07XG4gIH1cblxuICBtb3ZlRW5kKGV2ZW50LCBwb2ludCkge1xuICAgIHBvaW50LnggPSB0aGlzLnguaW52ZXJ0KHRoaXMueCh0aGlzLnN0YXJ0LngpICsgZXZlbnQuZGVsdGFYKTtcbiAgICBwb2ludC55ID0gdGhpcy55LmludmVydCh0aGlzLnkodGhpcy5zdGFydC55KSArIGV2ZW50LmRlbHRhWSk7XG4gICAgdGhpcy5fdXBkYXRlLm5leHQoKTtcbiAgICBjb25zdCBlbWl0RXZlbnQgPSB7XG4gICAgICB0eXBlOiAnZW5kJyxcbiAgICAgIHNvdXJjZUV2ZW50OiBldmVudFxuICAgIH07XG4gICAgdGhpcy5zdmMuZW1pdFBvaW50KHtcbiAgICAgIHRhcmdldDoge1xuICAgICAgICBzZXJpZXM6IHRoaXMuc2VyaWVzLFxuICAgICAgICBwb2ludDogcG9pbnQsXG4gICAgICB9LFxuICAgICAgZXZlbnQ6IGVtaXRFdmVudCxcbiAgICB9KTtcbiAgfVxuXG4gIG1vdmVQcm9jZXNzKGV2ZW50LCBwb2ludCkge1xuICAgIHBvaW50LnggPSB0aGlzLnguaW52ZXJ0KHRoaXMueCh0aGlzLnN0YXJ0LngpICsgZXZlbnQuZGVsdGFYKTtcbiAgICBwb2ludC55ID0gdGhpcy55LmludmVydCh0aGlzLnkodGhpcy5zdGFydC55KSArIGV2ZW50LmRlbHRhWSk7XG4gICAgdGhpcy5fdXBkYXRlLm5leHQoKTtcbiAgICBjb25zdCBlbWl0RXZlbnQgPSB7XG4gICAgICB0eXBlOiAnZHJhZycsXG4gICAgICBzb3VyY2VFdmVudDogZXZlbnRcbiAgICB9O1xuICAgIHRoaXMuc3ZjLmVtaXRQb2ludCh7XG4gICAgICB0YXJnZXQ6IHtcbiAgICAgICAgc2VyaWVzOiB0aGlzLnNlcmllcyxcbiAgICAgICAgcG9pbnQ6IHBvaW50LFxuICAgICAgfSxcbiAgICAgIGV2ZW50OiBlbWl0RXZlbnQsXG4gICAgfSk7XG4gIH1cblxuICBzdGFydExhYmVsKGV2ZW50LCBsYWJlbCkge1xuICAgIHRoaXMubGFiZWxTdGFydCA9IHtkeDogbGFiZWwuZHgsIGR5OiBsYWJlbC5keX07XG4gIH1cblxuICBtb3ZlTGFiZWwoZXZlbnQsIGxhYmVsKSB7XG4gICAgbGFiZWwuZHggPSB0aGlzLmxhYmVsU3RhcnQuZHggKyBldmVudC5kZWx0YVg7XG4gICAgbGFiZWwuZHkgPSB0aGlzLmxhYmVsU3RhcnQuZHkgKyBldmVudC5kZWx0YVk7XG4gIH1cblxuICBhbGxvd0RyYWcgPSAocG9pbnQ6IEJhc2VQb2ludCkgPT4ge1xuICAgIHJldHVybiAobmV3UG9pbnQpID0+IHtcbiAgICAgIGlmIChwb2ludC5tYXJrZXIubWluWCAhPT0gbnVsbCAmJiBwb2ludC5tYXJrZXIubWluWCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICh0aGlzLnguaW52ZXJ0KHRoaXMueCh0aGlzLnN0YXJ0LngpICsgbmV3UG9pbnQuZGVsdGFYKSA8IHBvaW50Lm1hcmtlci5taW5YKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAocG9pbnQubWFya2VyLm1heFggIT09IG51bGwgJiYgcG9pbnQubWFya2VyLm1heFggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodGhpcy54LmludmVydCh0aGlzLngodGhpcy5zdGFydC54KSArIG5ld1BvaW50LmRlbHRhWCkgPiBwb2ludC5tYXJrZXIubWF4WCkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHBvaW50Lm1hcmtlci5taW5ZICE9PSBudWxsICYmIHBvaW50Lm1hcmtlci5taW5ZICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHRoaXMueS5pbnZlcnQodGhpcy55KHRoaXMuc3RhcnQueSkgKyBuZXdQb2ludC5kZWx0YVkpIDwgcG9pbnQubWFya2VyLm1pblkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChwb2ludC5tYXJrZXIubWF4WSAhPT0gbnVsbCAmJiBwb2ludC5tYXJrZXIubWF4WSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICh0aGlzLnkuaW52ZXJ0KHRoaXMueSh0aGlzLnN0YXJ0LnkpICsgbmV3UG9pbnQuZGVsdGFZKSA+IHBvaW50Lm1hcmtlci5tYXhZKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xuICB9O1xufVxuIiwiPHN2ZzpwYXRoXG4gIGNsYXNzPVwibGluZVwiXG4gIFthdHRyLmRdPVwicGF0aCB8IGFzeW5jXCJcbiAgW2F0dHIuc3Ryb2tlXT1cInNlcmllcy5jb2xvclwiXG4gIFthdHRyLnN0cm9rZS1kYXNoYXJyYXldPVwic2VyaWVzLnN0eWxlPy5zdHJva2VEYXNoYXJyYXlcIlxuICBbYXR0ci5zdHJva2Utd2lkdGhdPVwic2VyaWVzLnN0eWxlPy5zdHJva2VXaWR0aFwiXG4gIGZpbGw9XCJub25lXCI+XG48L3N2ZzpwYXRoPlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInRyYW5zZm9ybSB8IGFzeW5jIGFzIHRcIj5cbiAgPHN2ZzpjaXJjbGVcbiAgICAqbmdJZj1cInQ/LnggIT1udWxsICYmIHQ/LnkhPW51bGxcIlxuICAgIHI9XCIzXCJcbiAgICBbYXR0ci5maWxsXT1cInNlcmllcy5jb2xvclwiXG4gICAgW2F0dHIudHJhbnNmb3JtXT1cIid0cmFuc2xhdGUoJysgdC54ICsnLCAnKyB0LnkgKycpJ1wiXG4gID5cbiAgPC9zdmc6Y2lyY2xlPlxuPC9uZy1jb250YWluZXI+XG48bmctY29udGFpbmVyICpuZ0lmPVwibWFya2VycyBhcyBkcmFnZ2FibGVQb2ludHNcIj5cbiAgPHN2ZzpnXG4gICAgKm5nRm9yPVwibGV0IHBvaW50IG9mIGRyYWdnYWJsZVBvaW50c1wiXG4gICAgW2F0dHIudHJhbnNmb3JtXT1cIid0cmFuc2xhdGUoJyArIHgocG9pbnQueCkrICcsJyAreShwb2ludC55KSArICcpJ1wiPlxuICAgIDxzdmc6ZyBbdGV0YURyYWdnYWJsZVBvaW50XT1cInBvaW50Lm1hcmtlci5kcmFnZ2FibGVcIlxuICAgICAgICAgICBbZHJhZ0RpcmVjdGlvbl09XCJwb2ludC5tYXJrZXIuZHJhZ1R5cGVcIlxuICAgICAgICAgICBbYWxsb3dEcmFnXT1cImFsbG93RHJhZyhwb2ludClcIlxuICAgICAgICAgICAjZHJhZ1BvaW50PVwidGV0YURyYWdnYWJsZVBvaW50XCJcbiAgICAgICAgICAgKG1vdmVTdGFydCk9XCJtb3ZlU3RhcnQoJGV2ZW50LCBwb2ludClcIlxuICAgICAgICAgICAobW92ZUVuZCk9XCJtb3ZlRW5kKCRldmVudCwgcG9pbnQpO2RyYWdQb2ludC5yZXNldFRyYW5zZm9ybSgpO1wiXG4gICAgICAgICAgIChtb3ZlUHJvY2Vzcyk9XCJtb3ZlUHJvY2VzcygkZXZlbnQsIHBvaW50KTtkcmFnUG9pbnQucmVzZXRUcmFuc2Zvcm0oKTtcIlxuICAgICAgICAgICBbY2xhc3MuZHJhZ2dhYmxlLW1hcmtlcl09XCJwb2ludD8ubWFya2VyPy5kcmFnZ2FibGVcIj5cbiAgICAgIDxzdmc6Y2lyY2xlXG4gICAgICAgIGNsYXNzPVwibWFya2VyXCJcbiAgICAgICAgW2F0dHIucl09XCJwb2ludC5tYXJrZXIuc3R5bGU/LnJhZGl1cyA/PyA1XCJcbiAgICAgICAgW2F0dHIuZmlsbF09XCJwb2ludC5tYXJrZXIuc3R5bGU/LmZpbGwgPz8gJ3RyYW5zcGFyZW50J1wiXG4gICAgICAgIFthdHRyLnN0cm9rZV09XCJwb2ludC5tYXJrZXIuc3R5bGU/LnN0cm9rZSA/PyAnbm9uZSdcIlxuICAgICAgICBbYXR0ci5zdHJva2Utd2lkdGhdPVwicG9pbnQubWFya2VyLnN0eWxlPy5zdHJva2VXaWR0aFwiXG4gICAgICAgIFthdHRyLnN0cm9rZS1kYXNoYXJyYXldPVwicG9pbnQubWFya2VyLnN0eWxlPy5zdHJva2VEYXNoYXJyYXlcIlxuICAgICAgICBbYXR0ci5jeF09XCIwXCJcbiAgICAgICAgW2F0dHIuY3ldPVwiMFwiPlxuICAgICAgPC9zdmc6Y2lyY2xlPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBvaW50Lm1hcmtlci5sYWJlbD8udGV4dFwiPlxuICAgICAgICA8c3ZnOmxpbmVcbiAgICAgICAgICBbYXR0ci54MV09XCIwXCJcbiAgICAgICAgICBbYXR0ci55MV09XCIwXCJcbiAgICAgICAgICBbYXR0ci54Ml09XCJwb2ludC5tYXJrZXIubGFiZWw/LmR4XCJcbiAgICAgICAgICBbYXR0ci55Ml09XCJwb2ludC5tYXJrZXIubGFiZWw/LmR5XCJcbiAgICAgICAgICBbYXR0ci5zdHJva2VdPVwicG9pbnQubWFya2VyLmxhYmVsPy5zdHlsZT8uc3Ryb2tlID8/ICd2YXIoLS1jb2xvci10ZXh0LTkwKSdcIlxuICAgICAgICAgIFthdHRyLnN0cm9rZS13aWR0aF09XCJwb2ludC5tYXJrZXIubGFiZWw/LnN0eWxlPy5zdHJva2VXaWR0aCA/PyAxXCJcbiAgICAgICAgICBbYXR0ci5zdHJva2UtZGFzaGFycmF5XT1cInBvaW50Lm1hcmtlci5sYWJlbD8uc3R5bGU/LnN0cm9rZURhc2hhcnJheSA/PyBudWxsXCI+XG4gICAgICAgIDwvc3ZnOmxpbmU+XG4gICAgICAgIDxzdmc6Zm9yZWlnbk9iamVjdFxuICAgICAgICAgIFt0ZXRhRHJhZ2dhYmxlUG9pbnRdPVwicG9pbnQubWFya2VyLmxhYmVsPy5kcmFnZ2FibGVcIlxuICAgICAgICAgIFtkcmFnRGlyZWN0aW9uXT1cInBvaW50Lm1hcmtlci5sYWJlbC5kcmFnVHlwZVwiXG4gICAgICAgICAgI2xhYmVsUG9pbnQ9XCJ0ZXRhRHJhZ2dhYmxlUG9pbnRcIlxuICAgICAgICAgIChtb3ZlU3RhcnQpPVwic3RhcnRMYWJlbCgkZXZlbnQsIHBvaW50Lm1hcmtlci5sYWJlbClcIlxuICAgICAgICAgIChtb3ZlUHJvY2Vzcyk9XCJtb3ZlTGFiZWwoJGV2ZW50LCBwb2ludC5tYXJrZXIubGFiZWwpOyBsYWJlbFBvaW50LnJlc2V0VHJhbnNmb3JtKCk7XCJcbiAgICAgICAgICAobW92ZUVuZCk9XCJsYWJlbFBvaW50LnJlc2V0VHJhbnNmb3JtKCk7XCJcbiAgICAgICAgICBbYXR0ci53aWR0aF09XCJhbm5vdGF0aW9uTm9kZT8ub2Zmc2V0V2lkdGggPz8gMFwiXG4gICAgICAgICAgW2F0dHIuaGVpZ2h0XT1cImFubm90YXRpb25Ob2RlPy5vZmZzZXRIZWlnaHQgPz8gMFwiXG4gICAgICAgICAgW2F0dHIueF09XCJwb2ludC5tYXJrZXIubGFiZWw/LmR4XCJcbiAgICAgICAgICBbYXR0ci55XT1cInBvaW50Lm1hcmtlci5sYWJlbD8uZHlcIlxuICAgICAgICAgIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGVcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAjYW5ub3RhdGlvbk5vZGVcbiAgICAgICAgICAgIGNsYXNzPVwic2hhZG93LTIgcGFkZGluZy0yXCJcbiAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCIndmFyKC0tY29sb3ItdGV4dC05MCknXCJcbiAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cIid2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLTUwKSdcIlxuICAgICAgICAgICAgW3N0eWxlLmN1cnNvcl09XCInbW92ZSdcIlxuICAgICAgICAgICAgc3R5bGU9XCJib3JkZXItcmFkaXVzOiAycHg7IGRpc3BsYXk6IGlubGluZS1ibG9jaztcIj5cbiAgICAgICAgICAgIHt7cG9pbnQubWFya2VyLmxhYmVsPy50ZXh0fX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9zdmc6Zm9yZWlnbk9iamVjdD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvc3ZnOmc+XG4gIDwvc3ZnOmc+XG48L25nLWNvbnRhaW5lcj5cblxuXG5cbiJdfQ==
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { SeriesBaseComponent } from '../../base/series-base.component';
|
|
2
|
-
import { Component, Input } from '@angular/core';
|
|
3
|
-
import { map, tap, withLatestFrom } from 'rxjs';
|
|
2
|
+
import { Component, Input, } from '@angular/core';
|
|
3
|
+
import { BehaviorSubject, combineLatest, map, tap, withLatestFrom } from 'rxjs';
|
|
4
4
|
import * as d3 from 'd3';
|
|
5
|
-
import { DragPointType } from '../../model/enum/drag-point-type';
|
|
6
5
|
import { TooltipTracking } from '../../model/enum/tooltip-tracking';
|
|
7
6
|
import { ClipPointsDirection } from '../../model/enum/clip-points-direction';
|
|
8
7
|
import * as i0 from "@angular/core";
|
|
@@ -18,6 +17,7 @@ export class LinearSeriesBase extends SeriesBaseComponent {
|
|
|
18
17
|
this.zoomService = zoomService;
|
|
19
18
|
this.element = element;
|
|
20
19
|
this.defaultClipPointsMapping = new Map();
|
|
20
|
+
this._update = new BehaviorSubject(null);
|
|
21
21
|
}
|
|
22
22
|
set series(series) {
|
|
23
23
|
this.__series = series;
|
|
@@ -57,7 +57,8 @@ export class LinearSeriesBase extends SeriesBaseComponent {
|
|
|
57
57
|
const [event, { x, y }] = data;
|
|
58
58
|
return this.getTransform(event, x.get(this.series.xAxisIndex).scale, y.get(this.series.yAxisIndex).scale);
|
|
59
59
|
}), tap(() => setTimeout(() => this.cdr.detectChanges())));
|
|
60
|
-
this.path = this.scaleService.scales.pipe(map((data) => {
|
|
60
|
+
this.path = combineLatest([this.scaleService.scales, this._update]).pipe(map(([data]) => {
|
|
61
|
+
// console.log(data);
|
|
61
62
|
const { x, y } = data;
|
|
62
63
|
this.x = x.get(this.series.xAxisIndex)?.scale;
|
|
63
64
|
this.y = y.get(this.series.yAxisIndex)?.scale;
|
|
@@ -89,16 +90,17 @@ export class LinearSeriesBase extends SeriesBaseComponent {
|
|
|
89
90
|
filteredData = filteredData?.filter(filter(min, max));
|
|
90
91
|
}
|
|
91
92
|
return line(filteredData);
|
|
92
|
-
}), tap(() => {
|
|
93
|
+
}), tap((_) => {
|
|
94
|
+
// console.log(_)
|
|
93
95
|
setTimeout(() => {
|
|
94
96
|
if (this.markers?.length > 0) {
|
|
95
|
-
this.addDragEvents();
|
|
97
|
+
// this.addDragEvents();
|
|
96
98
|
}
|
|
97
99
|
});
|
|
98
100
|
}));
|
|
99
101
|
}
|
|
100
102
|
ngOnDestroy() {
|
|
101
|
-
this.markerListeners?.on('start drag end', null);
|
|
103
|
+
// this.markerListeners?.on('start drag end', null);
|
|
102
104
|
this.svc.setTooltip({
|
|
103
105
|
point: null,
|
|
104
106
|
series: this.series,
|
|
@@ -107,45 +109,63 @@ export class LinearSeriesBase extends SeriesBaseComponent {
|
|
|
107
109
|
ngAfterViewInit() {
|
|
108
110
|
}
|
|
109
111
|
addDragEvents() {
|
|
110
|
-
this.markerListeners?.on('start drag end', null);
|
|
111
|
-
const drag = (node, event, d) => {
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
const
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
112
|
+
// this.markerListeners?.on('start drag end', null);
|
|
113
|
+
// const drag = (node, event: d3.D3DragEvent<any, any, any>, d: BasePoint) => {
|
|
114
|
+
// if (
|
|
115
|
+
// d.marker?.dragType === DragPointType.x ||
|
|
116
|
+
// d.marker?.dragType === DragPointType.xy
|
|
117
|
+
// ) {
|
|
118
|
+
// d.x = this.x.invert(event.x);
|
|
119
|
+
// }
|
|
120
|
+
//
|
|
121
|
+
// if (
|
|
122
|
+
// d.marker?.dragType === DragPointType.y ||
|
|
123
|
+
// d.marker?.dragType === DragPointType.xy
|
|
124
|
+
// ) {
|
|
125
|
+
// d.y = this.y.invert(event.y);
|
|
126
|
+
// }
|
|
127
|
+
//
|
|
128
|
+
// this.svc.emitPoint({
|
|
129
|
+
// target: {
|
|
130
|
+
// series: this.series,
|
|
131
|
+
// point: d,
|
|
132
|
+
// },
|
|
133
|
+
// event,
|
|
134
|
+
// });
|
|
135
|
+
//
|
|
136
|
+
// this.cdr.detectChanges();
|
|
137
|
+
// };
|
|
138
|
+
// this.markerListeners = d3
|
|
139
|
+
// .drag()
|
|
140
|
+
// .subject(function (event, d: BasePoint) {
|
|
141
|
+
// const node = d3.select(this);
|
|
142
|
+
// return {x: node.attr('cx'), y: node.attr('cy')};
|
|
143
|
+
// });
|
|
144
|
+
// const dragMarkers =
|
|
145
|
+
// this.markerListeners.on(
|
|
146
|
+
// 'start drag end',
|
|
147
|
+
// function (event: d3.D3DragEvent<any, any, any>, d: BasePoint) {
|
|
148
|
+
// const node = d3.select(this);
|
|
149
|
+
//
|
|
150
|
+
// drag(node, event, d);
|
|
151
|
+
// }
|
|
152
|
+
// );
|
|
153
|
+
//
|
|
154
|
+
// const draggableMarkers = this.series.data?.filter(
|
|
155
|
+
// (_) => _?.marker && _?.marker?.draggable
|
|
156
|
+
// );
|
|
157
|
+
//
|
|
158
|
+
// const element = d3
|
|
159
|
+
// .select(this.element.nativeElement)
|
|
160
|
+
// .selectAll('.draggable-marker')
|
|
161
|
+
// .data(draggableMarkers);
|
|
162
|
+
//
|
|
163
|
+
// element.call(dragMarkers as any);
|
|
164
|
+
//
|
|
165
|
+
// this.svgElement = d3
|
|
166
|
+
// .select(this.element.nativeElement)
|
|
167
|
+
// .select('.line')
|
|
168
|
+
// .node() as SVGGeometryElement;
|
|
149
169
|
}
|
|
150
170
|
getTransform(event, scaleX, scaleY) {
|
|
151
171
|
if (event.type === 'mouseleave') {
|
|
@@ -243,4 +263,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
|
|
|
243
263
|
}], ctorParameters: function () { return [{ type: i1.ChartService }, { type: i0.ChangeDetectorRef }, { type: i2.ScaleService }, { type: i3.ZoomService }, { type: i0.ElementRef }]; }, propDecorators: { series: [{
|
|
244
264
|
type: Input
|
|
245
265
|
}] } });
|
|
246
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZWFyLXNlcmllcy1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L2NoYXJ0LWNvbnRhaW5lci9zZXJpZXMvbGluZWFyLXNlcmllcy1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFHTCxTQUFTLEVBQ0csS0FBSyxFQUtsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLEdBQUcsRUFBYyxHQUFHLEVBQUUsY0FBYyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBSWpGLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3pCLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUMvRCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDbEUsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sd0NBQXdDLENBQUM7Ozs7O0FBTzNFLE1BQU0sT0FBTyxnQkFDWCxTQUFRLG1CQUFzQjtJQTJCOUIsWUFDcUIsR0FBaUIsRUFDakIsR0FBc0IsRUFDdEIsWUFBMEIsRUFDMUIsV0FBd0IsRUFDeEIsT0FBbUI7UUFFdEMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztRQU5qQyxRQUFHLEdBQUgsR0FBRyxDQUFjO1FBQ2pCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLFlBQU8sR0FBUCxPQUFPLENBQVk7UUE3QmpDLDZCQUF3QixHQUF5SCxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBZ0NsSyxDQUFDO0lBbkJELElBQ2EsTUFBTSxDQUFDLE1BQWlCO1FBQ25DLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDO1FBRXZCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELElBQWEsTUFBTTtRQUNqQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUE7SUFDdEIsQ0FBQztJQVlRLFFBQVE7UUFDZixNQUFNLE9BQU8sR0FBRyxDQUFDLEdBQVcsRUFBRSxHQUFXLEVBQUUsRUFBRSxDQUFDLENBQzVDLEtBQWdCLEVBQ2hCLEdBQVcsRUFDWCxHQUFxQixFQUNyQixFQUFFO1lBQ0YsTUFBTSxNQUFNLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7WUFDckMsTUFBTSxPQUFPLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7WUFDdEMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksTUFBTTtnQkFDckIsS0FBSyxDQUFDLEVBQUUsSUFBSSxNQUFNO2dCQUNsQixDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDO2dCQUMxQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksTUFBTSxDQUFDLENBQUM7Z0JBQzlDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxPQUFPO29CQUNqQixLQUFLLENBQUMsRUFBRSxJQUFJLE9BQU87b0JBQ25CLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUM7b0JBQzNDLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUM5QztRQUNMLENBQUMsQ0FBQztRQUVGLE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBVyxFQUFFLEdBQVcsRUFBRSxFQUFFLENBQUMsQ0FDNUMsS0FBZ0IsRUFDaEIsR0FBVyxFQUNYLEdBQXFCLEVBQ3JCLEVBQUU7WUFDRixNQUFNLE1BQU0sR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUNyQyxNQUFNLE9BQU8sR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUN0QyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxNQUFNO2dCQUNyQixLQUFLLENBQUMsRUFBRSxJQUFJLE1BQU07Z0JBQ2xCLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUM7Z0JBQzFDLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxNQUFNLENBQUMsQ0FBQztnQkFDOUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLE9BQU87b0JBQ2pCLEtBQUssQ0FBQyxFQUFFLElBQUksT0FBTztvQkFDbkIsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQztvQkFDM0MsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDcEQsQ0FBQyxDQUFDO1FBRUYsSUFBSSxDQUFDLHdCQUF3QixDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLHdCQUF3QixDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFbEUsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQ3hDLGNBQWMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUN4QyxHQUFHLENBQUMsQ0FBQyxJQUFnQyxFQUFFLEVBQUU7WUFDdkMsTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFDLENBQUMsRUFBRSxDQUFDLEVBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztZQUU3QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVHLENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQ3RELENBQUM7UUFFRixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDdkMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDWCxNQUFNLEVBQUMsQ0FBQyxFQUFFLENBQUMsRUFBQyxHQUFHLElBQUksQ0FBQztZQUNwQixJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLENBQUM7WUFDOUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxDQUFDO1lBRTlDLElBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRTtnQkFDckIsT0FBTyxFQUFFLENBQUE7YUFDVjtZQUVELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1lBRWxGLE1BQU0sSUFBSSxHQUFHLEVBQUU7aUJBQ1osSUFBSSxFQUFhO2lCQUNqQixPQUFPLENBQ04sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUNSLEtBQUssQ0FBQyxDQUFDLEtBQUssSUFBSTtnQkFDaEIsS0FBSyxDQUFDLENBQUMsS0FBSyxJQUFJO2dCQUNoQixLQUFLLENBQUMsQ0FBQyxLQUFLLFNBQVM7Z0JBQ3JCLEtBQUssQ0FBQyxDQUFDLEtBQUssU0FBUztnQkFDckIsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFDZixDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQ2xCO2lCQUNBLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQzdCLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUVqQyxJQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztZQUVwQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLEtBQUssbUJBQW1CLENBQUMsQ0FBQyxFQUFFO2dCQUM3RCxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBRWpDLEdBQUcsR0FBRyxHQUFHLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztnQkFDaEQsR0FBRyxHQUFHLEdBQUcsWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO2dCQUVoRCxZQUFZLEdBQUcsWUFBWSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDdkQ7WUFHRCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLEtBQUssbUJBQW1CLENBQUMsQ0FBQyxFQUFFO2dCQUM3RCxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBRWpDLEdBQUcsR0FBRyxHQUFHLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztnQkFDaEQsR0FBRyxHQUFHLEdBQUcsWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO2dCQUVoRCxZQUFZLEdBQUcsWUFBWSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDdkQ7WUFFRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM1QixDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ1AsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRTtvQkFDM0IsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2lCQUN0QjtZQUNILENBQUMsQ0FBQyxDQUFBO1FBQ0osQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDakQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUM7WUFDbEIsS0FBSyxFQUFFLElBQUk7WUFDWCxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07U0FDcEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGVBQWU7SUFFZixDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2pELE1BQU0sSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFLEtBQW9DLEVBQUUsQ0FBWSxFQUFFLEVBQUU7WUFDeEUsSUFDRSxDQUFDLENBQUMsTUFBTSxFQUFFLFFBQVEsS0FBSyxhQUFhLENBQUMsQ0FBQztnQkFDdEMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxRQUFRLEtBQUssYUFBYSxDQUFDLEVBQUUsRUFDdkM7Z0JBQ0EsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDOUI7WUFFRCxJQUNFLENBQUMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxLQUFLLGFBQWEsQ0FBQyxDQUFDO2dCQUN0QyxDQUFDLENBQUMsTUFBTSxFQUFFLFFBQVEsS0FBSyxhQUFhLENBQUMsRUFBRSxFQUN2QztnQkFDQSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUM5QjtZQUVELElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDO2dCQUNqQixNQUFNLEVBQUU7b0JBQ04sTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO29CQUNuQixLQUFLLEVBQUUsQ0FBQztpQkFDVDtnQkFDRCxLQUFLO2FBQ04sQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMzQixDQUFDLENBQUM7UUFFRixJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUU7YUFDdEIsSUFBSSxFQUFFO2FBQ04sT0FBTyxDQUFDLFVBQVUsS0FBSyxFQUFFLENBQVk7WUFDcEMsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM3QixPQUFPLEVBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUMsQ0FBQztRQUNsRCxDQUFDLENBQUMsQ0FBQztRQUNMLE1BQU0sV0FBVyxHQUNmLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUNyQixnQkFBZ0IsRUFDaEIsVUFBVSxLQUFvQyxFQUFFLENBQVk7WUFDMUQsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUU3QixJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN2QixDQUFDLENBQ0YsQ0FBQztRQUVKLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUMvQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLFNBQVMsQ0FDekMsQ0FBQztRQUVGLE1BQU0sT0FBTyxHQUFHLEVBQUU7YUFDZixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUM7YUFDbEMsU0FBUyxDQUFDLG1CQUFtQixDQUFDO2FBQzlCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRTFCLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBa0IsQ0FBQyxDQUFDO1FBRWpDLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRTthQUNqQixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUM7YUFDbEMsTUFBTSxDQUFDLE9BQU8sQ0FBQzthQUNmLElBQUksRUFBd0IsQ0FBQztJQUNsQyxDQUFDO0lBRUQsWUFBWSxDQUNWLEtBQVUsRUFDVixNQUFXLEVBQ1gsTUFBVztRQUVYLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxZQUFZLEVBQUU7WUFDL0IsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE1BQU0sS0FBSyxHQUFHLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFL0MsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDO1FBQ3ZELE1BQU0sZ0JBQWdCLEdBQUcsQ0FDdkIsSUFBSSxFQUNKLElBQUksRUFDSixJQUFJLEVBQ0osSUFBSSxFQUNKLElBQUksRUFDSixJQUFJLEVBQ0osSUFBSSxFQUNKLElBQUksRUFDSixFQUFFO1lBQ0YsTUFBTSxFQUFFLEdBQUcsRUFBUyxDQUFDO1lBQ3JCLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDO1lBQzNCLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDO1lBQ25CLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDO1lBQ25CLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDO1lBQ25CLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDO1lBRW5CLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNULENBQUM7Z0JBQ0MsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUM7b0JBQzlDLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQztZQUMvQixDQUFDO2dCQUNDLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQztvQkFDN0MsQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDO1lBRS9CLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDeEMscUJBQXFCO2dCQUNyQixFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO2dCQUN2QixFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO2FBQ3hCO1lBRUQsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDLENBQUM7UUFFRixJQUFJLGVBQWUsS0FBSyxlQUFlLENBQUMsQ0FBQyxFQUFFO1lBQ3pDLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFZLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7WUFDeEQsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRXpCLElBQUksRUFBRSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDaEMsSUFBSSxFQUFFLFlBQVksSUFBSSxFQUFFO2dCQUN0QixFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQ25CO1lBQ0QsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzdDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUU3QixNQUFNLFNBQVMsR0FBRyxnQkFBZ0IsQ0FDaEMsT0FBTyxFQUNQLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFDUixPQUFPLEVBQ1AsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUNSLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQ3hDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQ3hDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsRUFDcEMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUNyQyxDQUFDO1lBQ0YsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDckMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDckMsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxTQUFTLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssU0FBUyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUM1RixJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQztvQkFDbEIsS0FBSyxFQUFFLEVBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBQztvQkFDckUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO2lCQUNwQixDQUFDLENBQUM7YUFDSjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQztvQkFDbEIsS0FBSyxFQUFFLElBQUk7b0JBQ1gsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO2lCQUNwQixDQUFDLENBQUM7YUFDSjtZQUVELE9BQU87Z0JBQ0wsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUNkLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQzthQUNmLENBQUM7U0FDSDtRQUVELElBQUksZUFBZSxLQUFLLGVBQWUsQ0FBQyxDQUFDLEVBQUU7WUFDekMsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQVksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUV4RCxJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pDLElBQUksRUFBRSxZQUFZLElBQUksRUFBRTtnQkFDdEIsRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUNuQjtZQUNELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM3QyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7WUFFN0IsTUFBTSxTQUFTLEdBQUcsZ0JBQWdCLENBQ2hDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFDUixLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQ1IsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUNSLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFDUixNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUN4QyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUN4QyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQ3BDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FDckMsQ0FBQztZQUVGLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3JDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRXJDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssU0FBUyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLFNBQVMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDNUYsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUM7b0JBQ2xCLEtBQUssRUFBRSxFQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUM7b0JBQ3JFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtpQkFDcEIsQ0FBQyxDQUFDO2FBQ0o7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUM7b0JBQ2xCLEtBQUssRUFBRSxJQUFJO29CQUNYLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtpQkFDcEIsQ0FBQyxDQUFDO2FBQ0o7WUFFRCxPQUFPO2dCQUNMLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDZCxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7YUFDZixDQUFDO1NBQ0g7SUFDSCxDQUFDOzs2R0ExVlUsZ0JBQWdCO2lHQUFoQixnQkFBZ0IseUdBRmpCLEVBQUU7MkZBRUQsZ0JBQWdCO2tCQUg1QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxFQUFFO2lCQUNiO2lOQW1CYyxNQUFNO3NCQURsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtCYXNlUG9pbnR9IGZyb20gJy4uLy4uL21vZGVsL2Jhc2UtcG9pbnQnO1xuaW1wb3J0IHtTZXJpZXNCYXNlQ29tcG9uZW50fSBmcm9tICcuLi8uLi9iYXNlL3Nlcmllcy1iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLCBJbnB1dCxcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Y29tYmluZUxhdGVzdCwgZmlsdGVyLCBtYXAsIE9ic2VydmFibGUsIHRhcCwgd2l0aExhdGVzdEZyb219IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtDaGFydFNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2UvY2hhcnQuc2VydmljZSc7XG5pbXBvcnQge1NjYWxlU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZS9zY2FsZS5zZXJ2aWNlJztcbmltcG9ydCB7Wm9vbVNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2Uvem9vbS5zZXJ2aWNlJztcbmltcG9ydCAqIGFzIGQzIGZyb20gJ2QzJztcbmltcG9ydCB7RHJhZ1BvaW50VHlwZX0gZnJvbSAnLi4vLi4vbW9kZWwvZW51bS9kcmFnLXBvaW50LXR5cGUnO1xuaW1wb3J0IHtUb29sdGlwVHJhY2tpbmd9IGZyb20gJy4uLy4uL21vZGVsL2VudW0vdG9vbHRpcC10cmFja2luZyc7XG5pbXBvcnQge0NsaXBQb2ludHNEaXJlY3Rpb259IGZyb20gJy4uLy4uL21vZGVsL2VudW0vY2xpcC1wb2ludHMtZGlyZWN0aW9uJztcbmltcG9ydCB7SVNjYWxlc01hcH0gZnJvbSBcIi4uLy4uL21vZGVsL2ktc2NhbGVzLW1hcFwiO1xuaW1wb3J0IHtTZXJpZXN9IGZyb20gXCIuLi8uLi9tb2RlbC9zZXJpZXNcIjtcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlOiAnJyxcbn0pXG5leHBvcnQgY2xhc3MgTGluZWFyU2VyaWVzQmFzZTxUIGV4dGVuZHMgQmFzZVBvaW50PlxuICBleHRlbmRzIFNlcmllc0Jhc2VDb21wb25lbnQ8VD5cbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgcHVibGljIGRlZmF1bHRDbGlwUG9pbnRzTWFwcGluZzogTWFwPENsaXBQb2ludHNEaXJlY3Rpb24sIChtaW46IG51bWJlciwgbWF4OiBudW1iZXIpID0+IChwb2ludDogQmFzZVBvaW50LCBpZHg6IG51bWJlciwgYXJyOiBBcnJheTxCYXNlUG9pbnQ+KSA9PiB7fT4gPSBuZXcgTWFwKCk7XG5cbiAgdHJhbnNmb3JtOiBPYnNlcnZhYmxlPFBpY2s8QmFzZVBvaW50LCAneCcgfCAneSc+PjtcbiAgZGlzcGxheTogT2JzZXJ2YWJsZTxudW1iZXI+O1xuICBwYXRoOiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIHN2Z0VsZW1lbnQ6IFNWR0dlb21ldHJ5RWxlbWVudDtcbiAgeDogYW55O1xuICB5OiBhbnk7XG4gIG1hcmtlcnM6IEJhc2VQb2ludFtdO1xuICBtYXJrZXJMaXN0ZW5lcnM6IGFueTtcblxuICBwcml2YXRlIF9fc2VyaWVzOiBTZXJpZXM8VD47XG5cbiAgQElucHV0KClcbiAgb3ZlcnJpZGUgc2V0IHNlcmllcyhzZXJpZXM6IFNlcmllczxUPikge1xuICAgIHRoaXMuX19zZXJpZXMgPSBzZXJpZXM7XG5cbiAgICB0aGlzLm1hcmtlcnMgPSB0aGlzLl9fc2VyaWVzLmRhdGE/LmZpbHRlcigoXykgPT4gXz8ubWFya2VyKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGdldCBzZXJpZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX19zZXJpZXNcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBzdmM6IENoYXJ0U2VydmljZSxcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgc2NhbGVTZXJ2aWNlOiBTY2FsZVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHpvb21TZXJ2aWNlOiBab29tU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZWxlbWVudDogRWxlbWVudFJlZlxuICApIHtcbiAgICBzdXBlcihzdmMsIGNkciwgc2NhbGVTZXJ2aWNlLCB6b29tU2VydmljZSwgZWxlbWVudCk7XG4gIH1cblxuICBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBmaWx0ZXJYID0gKG1pbjogbnVtYmVyLCBtYXg6IG51bWJlcikgPT4gKFxuICAgICAgcG9pbnQ6IEJhc2VQb2ludCxcbiAgICAgIGlkeDogbnVtYmVyLFxuICAgICAgYXJyOiBBcnJheTxCYXNlUG9pbnQ+XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBiaWdnZXIgPSBtaW4gPiBtYXggPyBtaW4gOiBtYXg7XG4gICAgICBjb25zdCBzbWFsbGVyID0gbWluID4gbWF4ID8gbWF4IDogbWluO1xuICAgICAgcmV0dXJuIChwb2ludC54IDw9IGJpZ2dlciB8fFxuICAgICAgICAgIHBvaW50LngxIDw9IGJpZ2dlciB8fFxuICAgICAgICAgIChhcnJbaWR4IC0gMV0gJiYgYXJyW2lkeCAtIDFdLnggPD0gYmlnZ2VyKSB8fFxuICAgICAgICAgIChhcnJbaWR4IC0gMV0gJiYgYXJyW2lkeCAtIDFdLngxIDw9IGJpZ2dlcikpICYmXG4gICAgICAgIChwb2ludC54ID49IHNtYWxsZXIgfHxcbiAgICAgICAgICBwb2ludC54MSA+PSBzbWFsbGVyIHx8XG4gICAgICAgICAgKGFycltpZHggKyAxXSAmJiBhcnJbaWR4ICsgMV0ueCA+PSBzbWFsbGVyKSB8fFxuICAgICAgICAgIChhcnJbaWR4ICsgMV0gJiYgYXJyW2lkeCArIDFdLngxID49IHNtYWxsZXIpKVxuICAgICAgICA7XG4gICAgfTtcblxuICAgIGNvbnN0IGZpbHRlclkgPSAobWluOiBudW1iZXIsIG1heDogbnVtYmVyKSA9PiAoXG4gICAgICBwb2ludDogQmFzZVBvaW50LFxuICAgICAgaWR4OiBudW1iZXIsXG4gICAgICBhcnI6IEFycmF5PEJhc2VQb2ludD5cbiAgICApID0+IHtcbiAgICAgIGNvbnN0IGJpZ2dlciA9IG1pbiA+IG1heCA/IG1pbiA6IG1heDtcbiAgICAgIGNvbnN0IHNtYWxsZXIgPSBtaW4gPiBtYXggPyBtYXggOiBtaW47XG4gICAgICByZXR1cm4gKHBvaW50LnkgPD0gYmlnZ2VyIHx8XG4gICAgICAgICAgcG9pbnQueTEgPD0gYmlnZ2VyIHx8XG4gICAgICAgICAgKGFycltpZHggLSAxXSAmJiBhcnJbaWR4IC0gMV0ueSA8PSBiaWdnZXIpIHx8XG4gICAgICAgICAgKGFycltpZHggLSAxXSAmJiBhcnJbaWR4IC0gMV0ueTEgPD0gYmlnZ2VyKSkgJiZcbiAgICAgICAgKHBvaW50LnkgPj0gc21hbGxlciB8fFxuICAgICAgICAgIHBvaW50LnkxID49IHNtYWxsZXIgfHxcbiAgICAgICAgICAoYXJyW2lkeCArIDFdICYmIGFycltpZHggKyAxXS55ID49IHNtYWxsZXIpIHx8XG4gICAgICAgICAgKGFycltpZHggKyAxXSAmJiBhcnJbaWR4ICsgMV0ueTEgPj0gc21hbGxlcikpO1xuICAgIH07XG5cbiAgICB0aGlzLmRlZmF1bHRDbGlwUG9pbnRzTWFwcGluZy5zZXQoQ2xpcFBvaW50c0RpcmVjdGlvbi54LCBmaWx0ZXJYKTtcbiAgICB0aGlzLmRlZmF1bHRDbGlwUG9pbnRzTWFwcGluZy5zZXQoQ2xpcFBvaW50c0RpcmVjdGlvbi55LCBmaWx0ZXJZKTtcblxuICAgIHRoaXMudHJhbnNmb3JtID0gdGhpcy5zdmMucG9pbnRlck1vdmUucGlwZShcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc2NhbGVTZXJ2aWNlLnNjYWxlcyksXG4gICAgICBtYXAoKGRhdGE6IFtQb2ludGVyRXZlbnQsIElTY2FsZXNNYXBdKSA9PiB7XG4gICAgICAgIGNvbnN0IFtldmVudCwge3gsIHl9XSA9IGRhdGE7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VHJhbnNmb3JtKGV2ZW50LCB4LmdldCh0aGlzLnNlcmllcy54QXhpc0luZGV4KS5zY2FsZSwgeS5nZXQodGhpcy5zZXJpZXMueUF4aXNJbmRleCkuc2NhbGUpO1xuICAgICAgfSksXG4gICAgICB0YXAoKCkgPT4gc2V0VGltZW91dCgoKSA9PiB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCkpKVxuICAgICk7XG5cbiAgICB0aGlzLnBhdGggPSB0aGlzLnNjYWxlU2VydmljZS5zY2FsZXMucGlwZShcbiAgICAgIG1hcCgoZGF0YSkgPT4ge1xuICAgICAgICBjb25zdCB7eCwgeX0gPSBkYXRhO1xuICAgICAgICB0aGlzLnggPSB4LmdldCh0aGlzLnNlcmllcy54QXhpc0luZGV4KT8uc2NhbGU7XG4gICAgICAgIHRoaXMueSA9IHkuZ2V0KHRoaXMuc2VyaWVzLnlBeGlzSW5kZXgpPy5zY2FsZTtcblxuICAgICAgICBpZighdGhpcy54IHx8ICF0aGlzLnkpIHtcbiAgICAgICAgICByZXR1cm4gJydcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpbHRlciA9IHRoaXMuZGVmYXVsdENsaXBQb2ludHNNYXBwaW5nLmdldCh0aGlzLnNlcmllcy5jbGlwUG9pbnRzRGlyZWN0aW9uKTtcblxuICAgICAgICBjb25zdCBsaW5lID0gZDNcbiAgICAgICAgICAubGluZTxCYXNlUG9pbnQ+KClcbiAgICAgICAgICAuZGVmaW5lZChcbiAgICAgICAgICAgIChwb2ludCkgPT5cbiAgICAgICAgICAgICAgcG9pbnQueCAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgICBwb2ludC55ICE9PSBudWxsICYmXG4gICAgICAgICAgICAgIHBvaW50LnggIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICBwb2ludC55ICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgIWlzTmFOKHBvaW50LngpICYmXG4gICAgICAgICAgICAgICFpc05hTihwb2ludC55KVxuICAgICAgICAgIClcbiAgICAgICAgICAueCgocG9pbnQpID0+IHRoaXMueChwb2ludC54KSlcbiAgICAgICAgICAueSgocG9pbnQpID0+IHRoaXMueShwb2ludC55KSk7XG5cbiAgICAgICAgbGV0IGZpbHRlcmVkRGF0YSA9IHRoaXMuc2VyaWVzLmRhdGE7XG5cbiAgICAgICAgaWYgKHRoaXMuc2VyaWVzLmNsaXBQb2ludHNEaXJlY3Rpb24gPT09IENsaXBQb2ludHNEaXJlY3Rpb24ueCkge1xuICAgICAgICAgIGxldCBbbWluLCBtYXhdID0gdGhpcy54LmRvbWFpbigpO1xuXG4gICAgICAgICAgbWluID0gbWluIGluc3RhbmNlb2YgRGF0ZSA/IG1pbi5nZXRUaW1lKCkgOiBtaW47XG4gICAgICAgICAgbWF4ID0gbWF4IGluc3RhbmNlb2YgRGF0ZSA/IG1heC5nZXRUaW1lKCkgOiBtYXg7XG5cbiAgICAgICAgICBmaWx0ZXJlZERhdGEgPSBmaWx0ZXJlZERhdGE/LmZpbHRlcihmaWx0ZXIobWluLCBtYXgpKTtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgaWYgKHRoaXMuc2VyaWVzLmNsaXBQb2ludHNEaXJlY3Rpb24gPT09IENsaXBQb2ludHNEaXJlY3Rpb24ueSkge1xuICAgICAgICAgIGxldCBbbWluLCBtYXhdID0gdGhpcy55LmRvbWFpbigpO1xuXG4gICAgICAgICAgbWluID0gbWluIGluc3RhbmNlb2YgRGF0ZSA/IG1pbi5nZXRUaW1lKCkgOiBtaW47XG4gICAgICAgICAgbWF4ID0gbWF4IGluc3RhbmNlb2YgRGF0ZSA/IG1heC5nZXRUaW1lKCkgOiBtYXg7XG5cbiAgICAgICAgICBmaWx0ZXJlZERhdGEgPSBmaWx0ZXJlZERhdGE/LmZpbHRlcihmaWx0ZXIobWluLCBtYXgpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBsaW5lKGZpbHRlcmVkRGF0YSk7XG4gICAgICB9KSxcbiAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGlmKHRoaXMubWFya2Vycz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5hZGREcmFnRXZlbnRzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5tYXJrZXJMaXN0ZW5lcnM/Lm9uKCdzdGFydCBkcmFnIGVuZCcsIG51bGwpO1xuICAgIHRoaXMuc3ZjLnNldFRvb2x0aXAoe1xuICAgICAgcG9pbnQ6IG51bGwsXG4gICAgICBzZXJpZXM6IHRoaXMuc2VyaWVzLFxuICAgIH0pO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuXG4gIH1cblxuICBhZGREcmFnRXZlbnRzKCkge1xuICAgIHRoaXMubWFya2VyTGlzdGVuZXJzPy5vbignc3RhcnQgZHJhZyBlbmQnLCBudWxsKTtcbiAgICBjb25zdCBkcmFnID0gKG5vZGUsIGV2ZW50OiBkMy5EM0RyYWdFdmVudDxhbnksIGFueSwgYW55PiwgZDogQmFzZVBvaW50KSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgIGQubWFya2VyPy5kcmFnVHlwZSA9PT0gRHJhZ1BvaW50VHlwZS54IHx8XG4gICAgICAgIGQubWFya2VyPy5kcmFnVHlwZSA9PT0gRHJhZ1BvaW50VHlwZS54eVxuICAgICAgKSB7XG4gICAgICAgIGQueCA9IHRoaXMueC5pbnZlcnQoZXZlbnQueCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgZC5tYXJrZXI/LmRyYWdUeXBlID09PSBEcmFnUG9pbnRUeXBlLnkgfHxcbiAgICAgICAgZC5tYXJrZXI/LmRyYWdUeXBlID09PSBEcmFnUG9pbnRUeXBlLnh5XG4gICAgICApIHtcbiAgICAgICAgZC55ID0gdGhpcy55LmludmVydChldmVudC55KTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zdmMuZW1pdFBvaW50KHtcbiAgICAgICAgdGFyZ2V0OiB7XG4gICAgICAgICAgc2VyaWVzOiB0aGlzLnNlcmllcyxcbiAgICAgICAgICBwb2ludDogZCxcbiAgICAgICAgfSxcbiAgICAgICAgZXZlbnQsXG4gICAgICB9KTtcblxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH07XG5cbiAgICB0aGlzLm1hcmtlckxpc3RlbmVycyA9IGQzXG4gICAgICAuZHJhZygpXG4gICAgICAuc3ViamVjdChmdW5jdGlvbiAoZXZlbnQsIGQ6IEJhc2VQb2ludCkge1xuICAgICAgICBjb25zdCBub2RlID0gZDMuc2VsZWN0KHRoaXMpO1xuICAgICAgICByZXR1cm4ge3g6IG5vZGUuYXR0cignY3gnKSwgeTogbm9kZS5hdHRyKCdjeScpfTtcbiAgICAgIH0pO1xuICAgIGNvbnN0IGRyYWdNYXJrZXJzID1cbiAgICAgIHRoaXMubWFya2VyTGlzdGVuZXJzLm9uKFxuICAgICAgICAnc3RhcnQgZHJhZyBlbmQnLFxuICAgICAgICBmdW5jdGlvbiAoZXZlbnQ6IGQzLkQzRHJhZ0V2ZW50PGFueSwgYW55LCBhbnk+LCBkOiBCYXNlUG9pbnQpIHtcbiAgICAgICAgICBjb25zdCBub2RlID0gZDMuc2VsZWN0KHRoaXMpO1xuXG4gICAgICAgICAgZHJhZyhub2RlLCBldmVudCwgZCk7XG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICBjb25zdCBkcmFnZ2FibGVNYXJrZXJzID0gdGhpcy5zZXJpZXMuZGF0YT8uZmlsdGVyKFxuICAgICAgKF8pID0+IF8/Lm1hcmtlciAmJiBfPy5tYXJrZXI/LmRyYWdnYWJsZVxuICAgICk7XG5cbiAgICBjb25zdCBlbGVtZW50ID0gZDNcbiAgICAgIC5zZWxlY3QodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQpXG4gICAgICAuc2VsZWN0QWxsKCcuZHJhZ2dhYmxlLW1hcmtlcicpXG4gICAgICAuZGF0YShkcmFnZ2FibGVNYXJrZXJzKTtcblxuICAgIGVsZW1lbnQuY2FsbChkcmFnTWFya2VycyBhcyBhbnkpO1xuXG4gICAgdGhpcy5zdmdFbGVtZW50ID0gZDNcbiAgICAgIC5zZWxlY3QodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQpXG4gICAgICAuc2VsZWN0KCcubGluZScpXG4gICAgICAubm9kZSgpIGFzIFNWR0dlb21ldHJ5RWxlbWVudDtcbiAgfVxuXG4gIGdldFRyYW5zZm9ybShcbiAgICBldmVudDogYW55LFxuICAgIHNjYWxlWDogYW55LFxuICAgIHNjYWxlWTogYW55XG4gICk6IFBpY2s8QmFzZVBvaW50LCAneCcgfCAneSc+IHtcbiAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ21vdXNlbGVhdmUnKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgbW91c2UgPSBbZXZlbnQ/Lm9mZnNldFgsIGV2ZW50Py5vZmZzZXRZXTtcblxuICAgIGNvbnN0IHRvb2x0aXBUcmFja2luZyA9IHRoaXMuY29uZmlnPy50b29sdGlwPy50cmFja2luZztcbiAgICBjb25zdCBsaW5lSW50ZXJzZWN0aW9uID0gKFxuICAgICAgcDBfeCxcbiAgICAgIHAwX3ksXG4gICAgICBwMV94LFxuICAgICAgcDFfeSxcbiAgICAgIHAyX3gsXG4gICAgICBwMl95LFxuICAgICAgcDNfeCxcbiAgICAgIHAzX3lcbiAgICApID0+IHtcbiAgICAgIGNvbnN0IHJWID0ge30gYXMgYW55O1xuICAgICAgbGV0IHMxX3gsIHMxX3ksIHMyX3gsIHMyX3k7XG4gICAgICBzMV94ID0gcDFfeCAtIHAwX3g7XG4gICAgICBzMV95ID0gcDFfeSAtIHAwX3k7XG4gICAgICBzMl94ID0gcDNfeCAtIHAyX3g7XG4gICAgICBzMl95ID0gcDNfeSAtIHAyX3k7XG5cbiAgICAgIGxldCBzLCB0O1xuICAgICAgcyA9XG4gICAgICAgICgtczFfeSAqIChwMF94IC0gcDJfeCkgKyBzMV94ICogKHAwX3kgLSBwMl95KSkgL1xuICAgICAgICAoLXMyX3ggKiBzMV95ICsgczFfeCAqIHMyX3kpO1xuICAgICAgdCA9XG4gICAgICAgIChzMl94ICogKHAwX3kgLSBwMl95KSAtIHMyX3kgKiAocDBfeCAtIHAyX3gpKSAvXG4gICAgICAgICgtczJfeCAqIHMxX3kgKyBzMV94ICogczJfeSk7XG5cbiAgICAgIGlmIChzID49IDAgJiYgcyA8PSAxICYmIHQgPj0gMCAmJiB0IDw9IDEpIHtcbiAgICAgICAgLy8gQ29sbGlzaW9uIGRldGVjdGVkXG4gICAgICAgIHJWLnggPSBwMF94ICsgdCAqIHMxX3g7XG4gICAgICAgIHJWLnkgPSBwMF95ICsgdCAqIHMxX3k7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByVjtcbiAgICB9O1xuXG4gICAgaWYgKHRvb2x0aXBUcmFja2luZyA9PT0gVG9vbHRpcFRyYWNraW5nLngpIHtcbiAgICAgIGNvbnN0IGJpc2VjdCA9IGQzLmJpc2VjdG9yKChfOiBCYXNlUG9pbnQpID0+IF8ueCkucmlnaHQ7XG4gICAgICBjb25zdCBwb2ludGVyID0gbW91c2VbMF07XG5cbiAgICAgIGxldCB4MCA9IHNjYWxlWC5pbnZlcnQocG9pbnRlcik7XG4gICAgICBpZiAoeDAgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgIHgwID0geDAuZ2V0VGltZSgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcmlnaHRJZCA9IGJpc2VjdCh0aGlzLnNlcmllcy5kYXRhLCB4MCk7XG4gICAgICBjb25zdCByYW5nZSA9IHNjYWxlWS5yYW5nZSgpO1xuXG4gICAgICBjb25zdCBpbnRlcnNlY3QgPSBsaW5lSW50ZXJzZWN0aW9uKFxuICAgICAgICBwb2ludGVyLFxuICAgICAgICByYW5nZVswXSxcbiAgICAgICAgcG9pbnRlcixcbiAgICAgICAgcmFuZ2VbMV0sXG4gICAgICAgIHNjYWxlWCh0aGlzLnNlcmllcy5kYXRhW3JpZ2h0SWQgLSAxXT8ueCksXG4gICAgICAgIHNjYWxlWSh0aGlzLnNlcmllcy5kYXRhW3JpZ2h0SWQgLSAxXT8ueSksXG4gICAgICAgIHNjYWxlWCh0aGlzLnNlcmllcy5kYXRhW3JpZ2h0SWRdPy54KSxcbiAgICAgICAgc2NhbGVZKHRoaXMuc2VyaWVzLmRhdGFbcmlnaHRJZF0/LnkpXG4gICAgICApO1xuICAgICAgY29uc3QgeCA9IHNjYWxlWC5pbnZlcnQoaW50ZXJzZWN0LngpO1xuICAgICAgY29uc3QgeSA9IHNjYWxlWS5pbnZlcnQoaW50ZXJzZWN0LnkpO1xuICAgICAgaWYgKHggIT09IG51bGwgJiYgeCAhPT0gdW5kZWZpbmVkICYmICFpc05hTih4KSAmJiB5ICE9PSBudWxsICYmIHkgIT09IHVuZGVmaW5lZCAmJiAhaXNOYU4oeSkpIHtcbiAgICAgICAgdGhpcy5zdmMuc2V0VG9vbHRpcCh7XG4gICAgICAgICAgcG9pbnQ6IHt4OiBzY2FsZVguaW52ZXJ0KGludGVyc2VjdC54KSwgeTogc2NhbGVZLmludmVydChpbnRlcnNlY3QueSl9LFxuICAgICAgICAgIHNlcmllczogdGhpcy5zZXJpZXMsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zdmMuc2V0VG9vbHRpcCh7XG4gICAgICAgICAgcG9pbnQ6IG51bGwsXG4gICAgICAgICAgc2VyaWVzOiB0aGlzLnNlcmllcyxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHg6IGludGVyc2VjdC54LFxuICAgICAgICB5OiBpbnRlcnNlY3QueSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHRvb2x0aXBUcmFja2luZyA9PT0gVG9vbHRpcFRyYWNraW5nLnkpIHtcbiAgICAgIGNvbnN0IGJpc2VjdCA9IGQzLmJpc2VjdG9yKChfOiBCYXNlUG9pbnQpID0+IF8ueSkucmlnaHQ7XG5cbiAgICAgIGxldCB5MCA9IHNjYWxlWS5pbnZlcnQobW91c2VbMV0pO1xuICAgICAgaWYgKHkwIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICB5MCA9IHkwLmdldFRpbWUoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJpZ2h0SWQgPSBiaXNlY3QodGhpcy5zZXJpZXMuZGF0YSwgeTApO1xuICAgICAgY29uc3QgcmFuZ2UgPSBzY2FsZVgucmFuZ2UoKTtcblxuICAgICAgY29uc3QgaW50ZXJzZWN0ID0gbGluZUludGVyc2VjdGlvbihcbiAgICAgICAgcmFuZ2VbMF0sXG4gICAgICAgIG1vdXNlWzFdLFxuICAgICAgICByYW5nZVsxXSxcbiAgICAgICAgbW91c2VbMV0sXG4gICAgICAgIHNjYWxlWCh0aGlzLnNlcmllcy5kYXRhW3JpZ2h0SWQgLSAxXT8ueCksXG4gICAgICAgIHNjYWxlWSh0aGlzLnNlcmllcy5kYXRhW3JpZ2h0SWQgLSAxXT8ueSksXG4gICAgICAgIHNjYWxlWCh0aGlzLnNlcmllcy5kYXRhW3JpZ2h0SWRdPy54KSxcbiAgICAgICAgc2NhbGVZKHRoaXMuc2VyaWVzLmRhdGFbcmlnaHRJZF0/LnkpXG4gICAgICApO1xuXG4gICAgICBjb25zdCB4ID0gc2NhbGVYLmludmVydChpbnRlcnNlY3QueCk7XG4gICAgICBjb25zdCB5ID0gc2NhbGVZLmludmVydChpbnRlcnNlY3QueSk7XG5cbiAgICAgIGlmICh4ICE9PSBudWxsICYmIHggIT09IHVuZGVmaW5lZCAmJiAhaXNOYU4oeCkgJiYgeSAhPT0gbnVsbCAmJiB5ICE9PSB1bmRlZmluZWQgJiYgIWlzTmFOKHkpKSB7XG4gICAgICAgIHRoaXMuc3ZjLnNldFRvb2x0aXAoe1xuICAgICAgICAgIHBvaW50OiB7eDogc2NhbGVYLmludmVydChpbnRlcnNlY3QueCksIHk6IHNjYWxlWS5pbnZlcnQoaW50ZXJzZWN0LnkpfSxcbiAgICAgICAgICBzZXJpZXM6IHRoaXMuc2VyaWVzLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc3ZjLnNldFRvb2x0aXAoe1xuICAgICAgICAgIHBvaW50OiBudWxsLFxuICAgICAgICAgIHNlcmllczogdGhpcy5zZXJpZXMsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICB4OiBpbnRlcnNlY3QueCxcbiAgICAgICAgeTogaW50ZXJzZWN0LnksXG4gICAgICB9O1xuICAgIH1cbiAgfVxufVxuIl19
|
|
266
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZWFyLXNlcmllcy1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L2NoYXJ0LWNvbnRhaW5lci9zZXJpZXMvbGluZWFyLXNlcmllcy1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFFTCxTQUFTLEVBRVQsS0FBSyxHQUdOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFVLEdBQUcsRUFBYyxHQUFHLEVBQUUsY0FBYyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBSWxHLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBRXpCLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUNsRSxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx3Q0FBd0MsQ0FBQzs7Ozs7QUFPM0UsTUFBTSxPQUFPLGdCQUNYLFNBQVEsbUJBQXNCO0lBNEI5QixZQUNxQixHQUFpQixFQUNqQixHQUFzQixFQUN0QixZQUEwQixFQUMxQixXQUF3QixFQUN4QixPQUFtQjtRQUV0QyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBTmpDLFFBQUcsR0FBSCxHQUFHLENBQWM7UUFDakIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQTlCakMsNkJBQXdCLEdBQXlILElBQUksR0FBRyxFQUFFLENBQUM7UUFZeEosWUFBTyxHQUFHLElBQUksZUFBZSxDQUFPLElBQUksQ0FBQyxDQUFDO0lBcUJwRCxDQUFDO0lBbkJELElBQ2EsTUFBTSxDQUFDLE1BQWlC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O2FBQ2YsQ0FBQztTQUNIO0lBQ0gsQ0FBQzs7NkdBN1ZVLGdCQUFnQjtpR0FBaEIsZ0JBQWdCLHlHQUZqQixFQUFFOzJGQUVELGdCQUFnQjtrQkFINUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsRUFBRTtpQkFDYjtpTkFvQmMsTUFBTTtzQkFEbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QmFzZVBvaW50fSBmcm9tICcuLi8uLi9tb2RlbC9iYXNlLXBvaW50JztcbmltcG9ydCB7U2VyaWVzQmFzZUNvbXBvbmVudH0gZnJvbSAnLi4vLi4vYmFzZS9zZXJpZXMtYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBmaWx0ZXIsIG1hcCwgT2JzZXJ2YWJsZSwgdGFwLCB3aXRoTGF0ZXN0RnJvbX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0NoYXJ0U2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZS9jaGFydC5zZXJ2aWNlJztcbmltcG9ydCB7U2NhbGVTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlL3NjYWxlLnNlcnZpY2UnO1xuaW1wb3J0IHtab29tU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZS96b29tLnNlcnZpY2UnO1xuaW1wb3J0ICogYXMgZDMgZnJvbSAnZDMnO1xuaW1wb3J0IHtEcmFnUG9pbnRUeXBlfSBmcm9tICcuLi8uLi9tb2RlbC9lbnVtL2RyYWctcG9pbnQtdHlwZSc7XG5pbXBvcnQge1Rvb2x0aXBUcmFja2luZ30gZnJvbSAnLi4vLi4vbW9kZWwvZW51bS90b29sdGlwLXRyYWNraW5nJztcbmltcG9ydCB7Q2xpcFBvaW50c0RpcmVjdGlvbn0gZnJvbSAnLi4vLi4vbW9kZWwvZW51bS9jbGlwLXBvaW50cy1kaXJlY3Rpb24nO1xuaW1wb3J0IHtJU2NhbGVzTWFwfSBmcm9tICcuLi8uLi9tb2RlbC9pLXNjYWxlcy1tYXAnO1xuaW1wb3J0IHtTZXJpZXN9IGZyb20gJy4uLy4uL21vZGVsL3Nlcmllcyc7XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZTogJycsXG59KVxuZXhwb3J0IGNsYXNzIExpbmVhclNlcmllc0Jhc2U8VCBleHRlbmRzIEJhc2VQb2ludD5cbiAgZXh0ZW5kcyBTZXJpZXNCYXNlQ29tcG9uZW50PFQ+XG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIHB1YmxpYyBkZWZhdWx0Q2xpcFBvaW50c01hcHBpbmc6IE1hcDxDbGlwUG9pbnRzRGlyZWN0aW9uLCAobWluOiBudW1iZXIsIG1heDogbnVtYmVyKSA9PiAocG9pbnQ6IEJhc2VQb2ludCwgaWR4OiBudW1iZXIsIGFycjogQXJyYXk8QmFzZVBvaW50PikgPT4ge30+ID0gbmV3IE1hcCgpO1xuXG4gIHRyYW5zZm9ybTogT2JzZXJ2YWJsZTxQaWNrPEJhc2VQb2ludCwgJ3gnIHwgJ3knPj47XG4gIGRpc3BsYXk6IE9ic2VydmFibGU8bnVtYmVyPjtcbiAgcGF0aDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBzdmdFbGVtZW50OiBTVkdHZW9tZXRyeUVsZW1lbnQ7XG4gIHg6IGFueTtcbiAgeTogYW55O1xuICBtYXJrZXJzOiBCYXNlUG9pbnRbXTtcbiAgbWFya2VyTGlzdGVuZXJzOiBhbnk7XG5cbiAgcHJpdmF0ZSBfX3NlcmllczogU2VyaWVzPFQ+O1xuICBwcm90ZWN0ZWQgX3VwZGF0ZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8dm9pZD4obnVsbCk7XG5cbiAgQElucHV0KClcbiAgb3ZlcnJpZGUgc2V0IHNlcmllcyhzZXJpZXM6IFNlcmllczxUPikge1xuICAgIHRoaXMuX19zZXJpZXMgPSBzZXJpZXM7XG5cbiAgICB0aGlzLm1hcmtlcnMgPSB0aGlzLl9fc2VyaWVzLmRhdGE/LmZpbHRlcigoXykgPT4gXz8ubWFya2VyKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGdldCBzZXJpZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX19zZXJpZXM7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgc3ZjOiBDaGFydFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHNjYWxlU2VydmljZTogU2NhbGVTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBvdmVycmlkZSB6b29tU2VydmljZTogWm9vbVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIGVsZW1lbnQ6IEVsZW1lbnRSZWZcbiAgKSB7XG4gICAgc3VwZXIoc3ZjLCBjZHIsIHNjYWxlU2VydmljZSwgem9vbVNlcnZpY2UsIGVsZW1lbnQpO1xuICB9XG5cbiAgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgY29uc3QgZmlsdGVyWCA9IChtaW46IG51bWJlciwgbWF4OiBudW1iZXIpID0+IChcbiAgICAgIHBvaW50OiBCYXNlUG9pbnQsXG4gICAgICBpZHg6IG51bWJlcixcbiAgICAgIGFycjogQXJyYXk8QmFzZVBvaW50PlxuICAgICkgPT4ge1xuICAgICAgY29uc3QgYmlnZ2VyID0gbWluID4gbWF4ID8gbWluIDogbWF4O1xuICAgICAgY29uc3Qgc21hbGxlciA9IG1pbiA+IG1heCA/IG1heCA6IG1pbjtcbiAgICAgIHJldHVybiAocG9pbnQueCA8PSBiaWdnZXIgfHxcbiAgICAgICAgICBwb2ludC54MSA8PSBiaWdnZXIgfHxcbiAgICAgICAgICAoYXJyW2lkeCAtIDFdICYmIGFycltpZHggLSAxXS54IDw9IGJpZ2dlcikgfHxcbiAgICAgICAgICAoYXJyW2lkeCAtIDFdICYmIGFycltpZHggLSAxXS54MSA8PSBiaWdnZXIpKSAmJlxuICAgICAgICAocG9pbnQueCA+PSBzbWFsbGVyIHx8XG4gICAgICAgICAgcG9pbnQueDEgPj0gc21hbGxlciB8fFxuICAgICAgICAgIChhcnJbaWR4ICsgMV0gJiYgYXJyW2lkeCArIDFdLnggPj0gc21hbGxlcikgfHxcbiAgICAgICAgICAoYXJyW2lkeCArIDFdICYmIGFycltpZHggKyAxXS54MSA+PSBzbWFsbGVyKSlcbiAgICAgICAgO1xuICAgIH07XG5cbiAgICBjb25zdCBmaWx0ZXJZID0gKG1pbjogbnVtYmVyLCBtYXg6IG51bWJlcikgPT4gKFxuICAgICAgcG9pbnQ6IEJhc2VQb2ludCxcbiAgICAgIGlkeDogbnVtYmVyLFxuICAgICAgYXJyOiBBcnJheTxCYXNlUG9pbnQ+XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBiaWdnZXIgPSBtaW4gPiBtYXggPyBtaW4gOiBtYXg7XG4gICAgICBjb25zdCBzbWFsbGVyID0gbWluID4gbWF4ID8gbWF4IDogbWluO1xuICAgICAgcmV0dXJuIChwb2ludC55IDw9IGJpZ2dlciB8fFxuICAgICAgICAgIHBvaW50LnkxIDw9IGJpZ2dlciB8fFxuICAgICAgICAgIChhcnJbaWR4IC0gMV0gJiYgYXJyW2lkeCAtIDFdLnkgPD0gYmlnZ2VyKSB8fFxuICAgICAgICAgIChhcnJbaWR4IC0gMV0gJiYgYXJyW2lkeCAtIDFdLnkxIDw9IGJpZ2dlcikpICYmXG4gICAgICAgIChwb2ludC55ID49IHNtYWxsZXIgfHxcbiAgICAgICAgICBwb2ludC55MSA+PSBzbWFsbGVyIHx8XG4gICAgICAgICAgKGFycltpZHggKyAxXSAmJiBhcnJbaWR4ICsgMV0ueSA+PSBzbWFsbGVyKSB8fFxuICAgICAgICAgIChhcnJbaWR4ICsgMV0gJiYgYXJyW2lkeCArIDFdLnkxID49IHNtYWxsZXIpKTtcbiAgICB9O1xuXG4gICAgdGhpcy5kZWZhdWx0Q2xpcFBvaW50c01hcHBpbmcuc2V0KENsaXBQb2ludHNEaXJlY3Rpb24ueCwgZmlsdGVyWCk7XG4gICAgdGhpcy5kZWZhdWx0Q2xpcFBvaW50c01hcHBpbmcuc2V0KENsaXBQb2ludHNEaXJlY3Rpb24ueSwgZmlsdGVyWSk7XG5cbiAgICB0aGlzLnRyYW5zZm9ybSA9IHRoaXMuc3ZjLnBvaW50ZXJNb3ZlLnBpcGUoXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnNjYWxlU2VydmljZS5zY2FsZXMpLFxuICAgICAgbWFwKChkYXRhOiBbUG9pbnRlckV2ZW50LCBJU2NhbGVzTWFwXSkgPT4ge1xuICAgICAgICBjb25zdCBbZXZlbnQsIHt4LCB5fV0gPSBkYXRhO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmdldFRyYW5zZm9ybShldmVudCwgeC5nZXQodGhpcy5zZXJpZXMueEF4aXNJbmRleCkuc2NhbGUsIHkuZ2V0KHRoaXMuc2VyaWVzLnlBeGlzSW5kZXgpLnNjYWxlKTtcbiAgICAgIH0pLFxuICAgICAgdGFwKCgpID0+IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpKSlcbiAgICApO1xuXG4gICAgdGhpcy5wYXRoID0gY29tYmluZUxhdGVzdChbdGhpcy5zY2FsZVNlcnZpY2Uuc2NhbGVzLCB0aGlzLl91cGRhdGVdKS5waXBlKFxuICAgICAgbWFwKChbZGF0YV0pID0+IHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coZGF0YSk7XG4gICAgICAgIGNvbnN0IHt4LCB5fSA9IGRhdGE7XG4gICAgICAgIHRoaXMueCA9IHguZ2V0KHRoaXMuc2VyaWVzLnhBeGlzSW5kZXgpPy5zY2FsZTtcbiAgICAgICAgdGhpcy55ID0geS5nZXQodGhpcy5zZXJpZXMueUF4aXNJbmRleCk/LnNjYWxlO1xuXG4gICAgICAgIGlmICghdGhpcy54IHx8ICF0aGlzLnkpIHtcbiAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmaWx0ZXIgPSB0aGlzLmRlZmF1bHRDbGlwUG9pbnRzTWFwcGluZy5nZXQodGhpcy5zZXJpZXMuY2xpcFBvaW50c0RpcmVjdGlvbik7XG5cbiAgICAgICAgY29uc3QgbGluZSA9IGQzXG4gICAgICAgICAgLmxpbmU8QmFzZVBvaW50PigpXG4gICAgICAgICAgLmRlZmluZWQoXG4gICAgICAgICAgICAocG9pbnQpID0+XG4gICAgICAgICAgICAgIHBvaW50LnggIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgcG9pbnQueSAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgICBwb2ludC54ICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgcG9pbnQueSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICFpc05hTihwb2ludC54KSAmJlxuICAgICAgICAgICAgICAhaXNOYU4ocG9pbnQueSlcbiAgICAgICAgICApXG4gICAgICAgICAgLngoKHBvaW50KSA9PiB0aGlzLngocG9pbnQueCkpXG4gICAgICAgICAgLnkoKHBvaW50KSA9PiB0aGlzLnkocG9pbnQueSkpO1xuXG4gICAgICAgIGxldCBmaWx0ZXJlZERhdGEgPSB0aGlzLnNlcmllcy5kYXRhO1xuXG4gICAgICAgIGlmICh0aGlzLnNlcmllcy5jbGlwUG9pbnRzRGlyZWN0aW9uID09PSBDbGlwUG9pbnRzRGlyZWN0aW9uLngpIHtcbiAgICAgICAgICBsZXQgW21pbiwgbWF4XSA9IHRoaXMueC5kb21haW4oKTtcblxuICAgICAgICAgIG1pbiA9IG1pbiBpbnN0YW5jZW9mIERhdGUgPyBtaW4uZ2V0VGltZSgpIDogbWluO1xuICAgICAgICAgIG1heCA9IG1heCBpbnN0YW5jZW9mIERhdGUgPyBtYXguZ2V0VGltZSgpIDogbWF4O1xuXG4gICAgICAgICAgZmlsdGVyZWREYXRhID0gZmlsdGVyZWREYXRhPy5maWx0ZXIoZmlsdGVyKG1pbiwgbWF4KSk7XG4gICAgICAgIH1cblxuXG4gICAgICAgIGlmICh0aGlzLnNlcmllcy5jbGlwUG9pbnRzRGlyZWN0aW9uID09PSBDbGlwUG9pbnRzRGlyZWN0aW9uLnkpIHtcbiAgICAgICAgICBsZXQgW21pbiwgbWF4XSA9IHRoaXMueS5kb21haW4oKTtcblxuICAgICAgICAgIG1pbiA9IG1pbiBpbnN0YW5jZW9mIERhdGUgPyBtaW4uZ2V0VGltZSgpIDogbWluO1xuICAgICAgICAgIG1heCA9IG1heCBpbnN0YW5jZW9mIERhdGUgPyBtYXguZ2V0VGltZSgpIDogbWF4O1xuXG4gICAgICAgICAgZmlsdGVyZWREYXRhID0gZmlsdGVyZWREYXRhPy5maWx0ZXIoZmlsdGVyKG1pbiwgbWF4KSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbGluZShmaWx0ZXJlZERhdGEpO1xuICAgICAgfSksXG4gICAgICB0YXAoKF8pID0+IHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coXylcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMubWFya2Vycz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgLy8gdGhpcy5hZGREcmFnRXZlbnRzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIC8vIHRoaXMubWFya2VyTGlzdGVuZXJzPy5vbignc3RhcnQgZHJhZyBlbmQnLCBudWxsKTtcbiAgICB0aGlzLnN2Yy5zZXRUb29sdGlwKHtcbiAgICAgIHBvaW50OiBudWxsLFxuICAgICAgc2VyaWVzOiB0aGlzLnNlcmllcyxcbiAgICB9KTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcblxuICB9XG5cbiAgYWRkRHJhZ0V2ZW50cygpIHtcbiAgICAvLyB0aGlzLm1hcmtlckxpc3RlbmVycz8ub24oJ3N0YXJ0IGRyYWcgZW5kJywgbnVsbCk7XG4gICAgLy8gY29uc3QgZHJhZyA9IChub2RlLCBldmVudDogZDMuRDNEcmFnRXZlbnQ8YW55LCBhbnksIGFueT4sIGQ6IEJhc2VQb2ludCkgPT4ge1xuICAgIC8vICAgaWYgKFxuICAgIC8vICAgICBkLm1hcmtlcj8uZHJhZ1R5cGUgPT09IERyYWdQb2ludFR5cGUueCB8fFxuICAgIC8vICAgICBkLm1hcmtlcj8uZHJhZ1R5cGUgPT09IERyYWdQb2ludFR5cGUueHlcbiAgICAvLyAgICkge1xuICAgIC8vICAgICBkLnggPSB0aGlzLnguaW52ZXJ0KGV2ZW50LngpO1xuICAgIC8vICAgfVxuICAgIC8vXG4gICAgLy8gICBpZiAoXG4gICAgLy8gICAgIGQubWFya2VyPy5kcmFnVHlwZSA9PT0gRHJhZ1BvaW50VHlwZS55IHx8XG4gICAgLy8gICAgIGQubWFya2VyPy5kcmFnVHlwZSA9PT0gRHJhZ1BvaW50VHlwZS54eVxuICAgIC8vICAgKSB7XG4gICAgLy8gICAgIGQueSA9IHRoaXMueS5pbnZlcnQoZXZlbnQueSk7XG4gICAgLy8gICB9XG4gICAgLy9cbiAgICAvLyAgIHRoaXMuc3ZjLmVtaXRQb2ludCh7XG4gICAgLy8gICAgIHRhcmdldDoge1xuICAgIC8vICAgICAgIHNlcmllczogdGhpcy5zZXJpZXMsXG4gICAgLy8gICAgICAgcG9pbnQ6IGQsXG4gICAgLy8gICAgIH0sXG4gICAgLy8gICAgIGV2ZW50LFxuICAgIC8vICAgfSk7XG4gICAgLy9cbiAgICAvLyAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAvLyB9O1xuXG4gICAgLy8gdGhpcy5tYXJrZXJMaXN0ZW5lcnMgPSBkM1xuICAgIC8vICAgLmRyYWcoKVxuICAgIC8vICAgLnN1YmplY3QoZnVuY3Rpb24gKGV2ZW50LCBkOiBCYXNlUG9pbnQpIHtcbiAgICAvLyAgICAgY29uc3Qgbm9kZSA9IGQzLnNlbGVjdCh0aGlzKTtcbiAgICAvLyAgICAgcmV0dXJuIHt4OiBub2RlLmF0dHIoJ2N4JyksIHk6IG5vZGUuYXR0cignY3knKX07XG4gICAgLy8gICB9KTtcbiAgICAvLyBjb25zdCBkcmFnTWFya2VycyA9XG4gICAgLy8gICB0aGlzLm1hcmtlckxpc3RlbmVycy5vbihcbiAgICAvLyAgICAgJ3N0YXJ0IGRyYWcgZW5kJyxcbiAgICAvLyAgICAgZnVuY3Rpb24gKGV2ZW50OiBkMy5EM0RyYWdFdmVudDxhbnksIGFueSwgYW55PiwgZDogQmFzZVBvaW50KSB7XG4gICAgLy8gICAgICAgY29uc3Qgbm9kZSA9IGQzLnNlbGVjdCh0aGlzKTtcbiAgICAvL1xuICAgIC8vICAgICAgIGRyYWcobm9kZSwgZXZlbnQsIGQpO1xuICAgIC8vICAgICB9XG4gICAgLy8gICApO1xuICAgIC8vXG4gICAgLy8gY29uc3QgZHJhZ2dhYmxlTWFya2VycyA9IHRoaXMuc2VyaWVzLmRhdGE/LmZpbHRlcihcbiAgICAvLyAgIChfKSA9PiBfPy5tYXJrZXIgJiYgXz8ubWFya2VyPy5kcmFnZ2FibGVcbiAgICAvLyApO1xuICAgIC8vXG4gICAgLy8gY29uc3QgZWxlbWVudCA9IGQzXG4gICAgLy8gICAuc2VsZWN0KHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50KVxuICAgIC8vICAgLnNlbGVjdEFsbCgnLmRyYWdnYWJsZS1tYXJrZXInKVxuICAgIC8vICAgLmRhdGEoZHJhZ2dhYmxlTWFya2Vycyk7XG4gICAgLy9cbiAgICAvLyBlbGVtZW50LmNhbGwoZHJhZ01hcmtlcnMgYXMgYW55KTtcbiAgICAvL1xuICAgIC8vIHRoaXMuc3ZnRWxlbWVudCA9IGQzXG4gICAgLy8gICAuc2VsZWN0KHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50KVxuICAgIC8vICAgLnNlbGVjdCgnLmxpbmUnKVxuICAgIC8vICAgLm5vZGUoKSBhcyBTVkdHZW9tZXRyeUVsZW1lbnQ7XG4gIH1cblxuICBnZXRUcmFuc2Zvcm0oXG4gICAgZXZlbnQ6IGFueSxcbiAgICBzY2FsZVg6IGFueSxcbiAgICBzY2FsZVk6IGFueVxuICApOiBQaWNrPEJhc2VQb2ludCwgJ3gnIHwgJ3knPiB7XG4gICAgaWYgKGV2ZW50LnR5cGUgPT09ICdtb3VzZWxlYXZlJykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IG1vdXNlID0gW2V2ZW50Py5vZmZzZXRYLCBldmVudD8ub2Zmc2V0WV07XG5cbiAgICBjb25zdCB0b29sdGlwVHJhY2tpbmcgPSB0aGlzLmNvbmZpZz8udG9vbHRpcD8udHJhY2tpbmc7XG4gICAgY29uc3QgbGluZUludGVyc2VjdGlvbiA9IChcbiAgICAgIHAwX3gsXG4gICAgICBwMF95LFxuICAgICAgcDFfeCxcbiAgICAgIHAxX3ksXG4gICAgICBwMl94LFxuICAgICAgcDJfeSxcbiAgICAgIHAzX3gsXG4gICAgICBwM195XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCByViA9IHt9IGFzIGFueTtcbiAgICAgIGxldCBzMV94LCBzMV95LCBzMl94LCBzMl95O1xuICAgICAgczFfeCA9IHAxX3ggLSBwMF94O1xuICAgICAgczFfeSA9IHAxX3kgLSBwMF95O1xuICAgICAgczJfeCA9IHAzX3ggLSBwMl94O1xuICAgICAgczJfeSA9IHAzX3kgLSBwMl95O1xuXG4gICAgICBsZXQgcywgdDtcbiAgICAgIHMgPVxuICAgICAgICAoLXMxX3kgKiAocDBfeCAtIHAyX3gpICsgczFfeCAqIChwMF95IC0gcDJfeSkpIC9cbiAgICAgICAgKC1zMl94ICogczFfeSArIHMxX3ggKiBzMl95KTtcbiAgICAgIHQgPVxuICAgICAgICAoczJfeCAqIChwMF95IC0gcDJfeSkgLSBzMl95ICogKHAwX3ggLSBwMl94KSkgL1xuICAgICAgICAoLXMyX3ggKiBzMV95ICsgczFfeCAqIHMyX3kpO1xuXG4gICAgICBpZiAocyA+PSAwICYmIHMgPD0gMSAmJiB0ID49IDAgJiYgdCA8PSAxKSB7XG4gICAgICAgIC8vIENvbGxpc2lvbiBkZXRlY3RlZFxuICAgICAgICByVi54ID0gcDBfeCArIHQgKiBzMV94O1xuICAgICAgICByVi55ID0gcDBfeSArIHQgKiBzMV95O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gclY7XG4gICAgfTtcblxuICAgIGlmICh0b29sdGlwVHJhY2tpbmcgPT09IFRvb2x0aXBUcmFja2luZy54KSB7XG4gICAgICBjb25zdCBiaXNlY3QgPSBkMy5iaXNlY3RvcigoXzogQmFzZVBvaW50KSA9PiBfLngpLnJpZ2h0O1xuICAgICAgY29uc3QgcG9pbnRlciA9IG1vdXNlWzBdO1xuXG4gICAgICBsZXQgeDAgPSBzY2FsZVguaW52ZXJ0KHBvaW50ZXIpO1xuICAgICAgaWYgKHgwIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICB4MCA9IHgwLmdldFRpbWUoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJpZ2h0SWQgPSBiaXNlY3QodGhpcy5zZXJpZXMuZGF0YSwgeDApO1xuICAgICAgY29uc3QgcmFuZ2UgPSBzY2FsZVkucmFuZ2UoKTtcblxuICAgICAgY29uc3QgaW50ZXJzZWN0ID0gbGluZUludGVyc2VjdGlvbihcbiAgICAgICAgcG9pbnRlcixcbiAgICAgICAgcmFuZ2VbMF0sXG4gICAgICAgIHBvaW50ZXIsXG4gICAgICAgIHJhbmdlWzFdLFxuICAgICAgICBzY2FsZVgodGhpcy5zZXJpZXMuZGF0YVtyaWdodElkIC0gMV0/LngpLFxuICAgICAgICBzY2FsZVkodGhpcy5zZXJpZXMuZGF0YVtyaWdodElkIC0gMV0/LnkpLFxuICAgICAgICBzY2FsZVgodGhpcy5zZXJpZXMuZGF0YVtyaWdodElkXT8ueCksXG4gICAgICAgIHNjYWxlWSh0aGlzLnNlcmllcy5kYXRhW3JpZ2h0SWRdPy55KVxuICAgICAgKTtcbiAgICAgIGNvbnN0IHggPSBzY2FsZVguaW52ZXJ0KGludGVyc2VjdC54KTtcbiAgICAgIGNvbnN0IHkgPSBzY2FsZVkuaW52ZXJ0KGludGVyc2VjdC55KTtcbiAgICAgIGlmICh4ICE9PSBudWxsICYmIHggIT09IHVuZGVmaW5lZCAmJiAhaXNOYU4oeCkgJiYgeSAhPT0gbnVsbCAmJiB5ICE9PSB1bmRlZmluZWQgJiYgIWlzTmFOKHkpKSB7XG4gICAgICAgIHRoaXMuc3ZjLnNldFRvb2x0aXAoe1xuICAgICAgICAgIHBvaW50OiB7eDogc2NhbGVYLmludmVydChpbnRlcnNlY3QueCksIHk6IHNjYWxlWS5pbnZlcnQoaW50ZXJzZWN0LnkpfSxcbiAgICAgICAgICBzZXJpZXM6IHRoaXMuc2VyaWVzLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc3ZjLnNldFRvb2x0aXAoe1xuICAgICAgICAgIHBvaW50OiBudWxsLFxuICAgICAgICAgIHNlcmllczogdGhpcy5zZXJpZXMsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICB4OiBpbnRlcnNlY3QueCxcbiAgICAgICAgeTogaW50ZXJzZWN0LnksXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICh0b29sdGlwVHJhY2tpbmcgPT09IFRvb2x0aXBUcmFja2luZy55KSB7XG4gICAgICBjb25zdCBiaXNlY3QgPSBkMy5iaXNlY3RvcigoXzogQmFzZVBvaW50KSA9PiBfLnkpLnJpZ2h0O1xuXG4gICAgICBsZXQgeTAgPSBzY2FsZVkuaW52ZXJ0KG1vdXNlWzFdKTtcbiAgICAgIGlmICh5MCBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgeTAgPSB5MC5nZXRUaW1lKCk7XG4gICAgICB9XG4gICAgICBjb25zdCByaWdodElkID0gYmlzZWN0KHRoaXMuc2VyaWVzLmRhdGEsIHkwKTtcbiAgICAgIGNvbnN0IHJhbmdlID0gc2NhbGVYLnJhbmdlKCk7XG5cbiAgICAgIGNvbnN0IGludGVyc2VjdCA9IGxpbmVJbnRlcnNlY3Rpb24oXG4gICAgICAgIHJhbmdlWzBdLFxuICAgICAgICBtb3VzZVsxXSxcbiAgICAgICAgcmFuZ2VbMV0sXG4gICAgICAgIG1vdXNlWzFdLFxuICAgICAgICBzY2FsZVgodGhpcy5zZXJpZXMuZGF0YVtyaWdodElkIC0gMV0/LngpLFxuICAgICAgICBzY2FsZVkodGhpcy5zZXJpZXMuZGF0YVtyaWdodElkIC0gMV0/LnkpLFxuICAgICAgICBzY2FsZVgodGhpcy5zZXJpZXMuZGF0YVtyaWdodElkXT8ueCksXG4gICAgICAgIHNjYWxlWSh0aGlzLnNlcmllcy5kYXRhW3JpZ2h0SWRdPy55KVxuICAgICAgKTtcblxuICAgICAgY29uc3QgeCA9IHNjYWxlWC5pbnZlcnQoaW50ZXJzZWN0LngpO1xuICAgICAgY29uc3QgeSA9IHNjYWxlWS5pbnZlcnQoaW50ZXJzZWN0LnkpO1xuXG4gICAgICBpZiAoeCAhPT0gbnVsbCAmJiB4ICE9PSB1bmRlZmluZWQgJiYgIWlzTmFOKHgpICYmIHkgIT09IG51bGwgJiYgeSAhPT0gdW5kZWZpbmVkICYmICFpc05hTih5KSkge1xuICAgICAgICB0aGlzLnN2Yy5zZXRUb29sdGlwKHtcbiAgICAgICAgICBwb2ludDoge3g6IHNjYWxlWC5pbnZlcnQoaW50ZXJzZWN0LngpLCB5OiBzY2FsZVkuaW52ZXJ0KGludGVyc2VjdC55KX0sXG4gICAgICAgICAgc2VyaWVzOiB0aGlzLnNlcmllcyxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnN2Yy5zZXRUb29sdGlwKHtcbiAgICAgICAgICBwb2ludDogbnVsbCxcbiAgICAgICAgICBzZXJpZXM6IHRoaXMuc2VyaWVzLFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgeDogaW50ZXJzZWN0LngsXG4gICAgICAgIHk6IGludGVyc2VjdC55LFxuICAgICAgfTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -17,7 +17,7 @@ export class XAxisComponent {
|
|
|
17
17
|
this.ticks = this.x.pipe(withLatestFrom(this._svc.size), map((_) => {
|
|
18
18
|
const [x, size] = _;
|
|
19
19
|
const tickSize = x.ticks().map((_) => getTextWidth(this.axis.options.tickFormat ? this.axis.options.tickFormat(_) : this.axis.defaultFormatter()(_), 0.45, 11));
|
|
20
|
-
return x.ticks(size.width / parseInt(d3.max(tickSize), 10) /
|
|
20
|
+
return x.ticks(size.width / parseInt(d3.max(tickSize), 10) / 10);
|
|
21
21
|
}));
|
|
22
22
|
}
|
|
23
23
|
getLabelTransform() {
|
|
@@ -39,4 +39,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
|
|
|
39
39
|
}], size: [{
|
|
40
40
|
type: Input
|
|
41
41
|
}] } });
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieC1heGlzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jaGFydC9jaGFydC1jb250YWluZXIveC1heGlzL3gtYXhpcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY2hhcnQvY2hhcnQtY29udGFpbmVyL3gtYXhpcy94LWF4aXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxHQUVOLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxHQUFHLEVBQWMsY0FBYyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRXRELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUM3RCxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQzs7Ozs7QUFTekIsTUFBTSxPQUFPLGNBQWM7SUFTekIsWUFBb0IsWUFBMEIsRUFBVSxJQUFrQjtRQUF0RCxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUFVLFNBQUksR0FBSixJQUFJLENBQWM7UUFGbEUsV0FBTSxHQUFHLElBQUksQ0FBQztRQUdwQixJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUMvQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFBO1FBQ3hDLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFHSCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUN0QixjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFDOUIsR0FBRyxDQUFDLENBQUMsQ0FBaUIsRUFBRSxFQUFFO1lBQ3hCLE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBRXBCLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFBO1lBQy9KLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFBO1FBQ2xFLENBQUMsQ0FBQyxDQUNILENBQUE7SUFDSCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsT0FBTyxhQUNMLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQ3BCLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUM7SUFDaEQsQ0FBQztJQUVELFFBQVE7SUFDUixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLENBQUM7OzJHQXJDVSxjQUFjOytGQUFkLGNBQWMsNkZDbkIzQix5eUJBV0E7MkZEUWEsY0FBYztrQkFOMUIsU0FBUzsrQkFDRSxlQUFlLG1CQUdSLHVCQUF1QixDQUFDLE1BQU07OEhBTXRDLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25Jbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QXhpc30gZnJvbSAnLi4vLi4vY29yZS9heGlzL2F4aXMnO1xuaW1wb3J0IHsgbWFwLCBPYnNlcnZhYmxlLCB3aXRoTGF0ZXN0RnJvbX0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7U2NhbGVTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZS9zY2FsZS5zZXJ2aWNlXCI7XG5pbXBvcnQge2dldFRleHRXaWR0aH0gZnJvbSBcIi4uLy4uL2NvcmUvdXRpbHMvZ2V0LXRleHQtd2lkdGhcIjtcbmltcG9ydCAqIGFzIGQzIGZyb20gJ2QzJztcbmltcG9ydCB7Q2hhcnRTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZS9jaGFydC5zZXJ2aWNlXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ1t0ZXRhLXgtYXhpc10nLFxuICB0ZW1wbGF0ZVVybDogJy4veC1heGlzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4veC1heGlzLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBYQXhpc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHg6IE9ic2VydmFibGU8YW55PjtcbiAgdGlja3M6IE9ic2VydmFibGU8YW55W10+XG5cbiAgQElucHV0KCkgYXhpczogQXhpcztcbiAgQElucHV0KCkgc2l6ZTogRE9NUmVjdDtcblxuICBwcml2YXRlIF9hbGl2ZSA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzY2FsZVNlcnZpY2U6IFNjYWxlU2VydmljZSwgcHJpdmF0ZSBfc3ZjOiBDaGFydFNlcnZpY2UpIHtcbiAgICB0aGlzLnggPSB0aGlzLnNjYWxlU2VydmljZS5zY2FsZXMucGlwZShtYXAoKF8pID0+IHtcbiAgICAgIHJldHVybiBfLnguZ2V0KHRoaXMuYXhpcy5pbmRleCk/LnNjYWxlXG4gICAgfSkpXG5cblxuICAgIHRoaXMudGlja3MgPSB0aGlzLngucGlwZShcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuX3N2Yy5zaXplKSxcbiAgICAgIG1hcCgoXzogW2FueSwgRE9NUmVjdF0pID0+IHtcbiAgICAgICAgY29uc3QgW3gsIHNpemVdID0gXztcblxuICAgICAgICBjb25zdCB0aWNrU2l6ZSA9IHgudGlja3MoKS5tYXAoKF8pID0+IGdldFRleHRXaWR0aCh0aGlzLmF4aXMub3B0aW9ucy50aWNrRm9ybWF0ID8gdGhpcy5heGlzLm9wdGlvbnMudGlja0Zvcm1hdChfKSA6IHRoaXMuYXhpcy5kZWZhdWx0Rm9ybWF0dGVyKCkoXyksIDAuNDUsIDExKSlcbiAgICAgICAgcmV0dXJuIHgudGlja3Moc2l6ZS53aWR0aCAvIHBhcnNlSW50KGQzLm1heCh0aWNrU2l6ZSksIDEwKSAvIDEwKVxuICAgICAgfSlcbiAgICApXG4gIH1cblxuICBnZXRMYWJlbFRyYW5zZm9ybSgpIHtcbiAgICByZXR1cm4gYHRyYW5zbGF0ZSgke1xuICAgICAgdGhpcy5zaXplLndpZHRoIC8gMlxuICAgIH0sICR7dGhpcy5heGlzLm9wdGlvbnMub3Bwb3NpdGUgPyAtMzIgOiAzMn0pYDtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fYWxpdmUgPSBmYWxzZTtcbiAgfVxuXG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwie3g6IHggfCBhc3luYywgdGlja3M6IHRpY2tzIHwgYXN5bmN9IGFzIGRhdGFcIj5cbiAgPHN2ZzpnIHRleHQtYW5jaG9yPVwibWlkZGxlXCIgKm5nRm9yPVwibGV0IHRpY2sgb2YgZGF0YS50aWNrc1wiIFthdHRyLnRyYW5zZm9ybV09XCIndHJhbnNsYXRlKCcrIGRhdGEueCh0aWNrKSArJywgMCknXCI+XG4gICAgPHRleHQgZmlsbD1cInZhcigtLWNvbG9yLXRleHQtNzApXCIgW2F0dHIuZHldPVwiYXhpcy5vcHRpb25zLm9wcG9zaXRlID8gJy0wLjcxZW0nIDogJzAuNzFlbSdcIiBbYXR0ci55XT1cImF4aXMub3B0aW9ucy5vcHBvc2l0ZSA/IDAgOiA5XCI+e3sgdGhpcy5heGlzLm9wdGlvbnMudGlja0Zvcm1hdCA/IHRoaXMuYXhpcy5vcHRpb25zLnRpY2tGb3JtYXQodGljaykgOiB0aGlzLmF4aXMuZGVmYXVsdEZvcm1hdHRlcigpKHRpY2spIH19PC90ZXh0PlxuICAgIDxsaW5lIHN0cm9rZT1cInZhcigtLWNvbG9yLXRleHQtMzApXCIgW2F0dHIueTJdPVwiYXhpcy5vcHRpb25zLm9wcG9zaXRlID8gLTYgOiA2XCI+PC9saW5lPlxuICA8L3N2ZzpnPlxuXG4gIDxzdmc6ZyBjbGFzcz1cImxhYmVsLWF4aXMgZm9udC1jYXB0aW9uXCIgW2F0dHIudHJhbnNmb3JtXT1cImdldExhYmVsVHJhbnNmb3JtKClcIj5cbiAgICA8dGV4dCBmaWxsPVwidmFyKC0tY29sb3ItdGV4dC03MClcIiAgdGV4dC1hbmNob3I9XCJtaWRkbGVcIiBkb21pbmFudC1iYXNlbGluZT1cIm1pZGRsZVwiPnt7IGF4aXMub3B0aW9ucy50aXRsZSB9fTwvdGV4dD5cbiAgPC9zdmc6Zz5cbjwvbmctY29udGFpbmVyPlxuXG4iXX0=
|