@tetacom/svg-charts 1.2.7 → 1.2.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/chart/chart-container/chart-container.component.mjs +5 -5
- package/esm2020/chart/chart-container/gridlines/gridlines.component.mjs +2 -2
- package/esm2020/chart/core/axis/builders/axis-size-builder.mjs +4 -4
- package/esm2020/chart/directives/zoomable.directive.mjs +3 -3
- package/fesm2015/tetacom-svg-charts.mjs +14 -14
- package/fesm2015/tetacom-svg-charts.mjs.map +1 -1
- package/fesm2020/tetacom-svg-charts.mjs +11 -11
- package/fesm2020/tetacom-svg-charts.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -113,10 +113,10 @@ export class ChartContainerComponent {
|
|
|
113
113
|
const nonOppositeOffsetY = yAxesArray.filter(nonOppositeFilter(axis));
|
|
114
114
|
const oppositeOffsetX = xAxesArray.filter(oppositeFilter(axis));
|
|
115
115
|
const nonOppositeOffsetX = xAxesArray.filter(nonOppositeFilter(axis));
|
|
116
|
-
const oppositeTranslateY = oppositeOffsetY.reduce((acc, curr) => acc + curr.selfSize,
|
|
117
|
-
const nonOppisteTranslateY = nonOppositeOffsetY.reduce((acc, curr) => acc + curr.selfSize,
|
|
118
|
-
const oppositeTranslateX = oppositeOffsetX.reduce((acc, curr) => acc + curr.selfSize,
|
|
119
|
-
const nonOppisteTranslateX = nonOppositeOffsetX.reduce((acc, curr) => acc + curr.selfSize,
|
|
116
|
+
const oppositeTranslateY = oppositeOffsetY.reduce((acc, curr) => acc + curr.selfSize, config.bounds?.top);
|
|
117
|
+
const nonOppisteTranslateY = nonOppositeOffsetY.reduce((acc, curr) => acc + curr.selfSize, config.bounds?.left);
|
|
118
|
+
const oppositeTranslateX = oppositeOffsetX.reduce((acc, curr) => acc + curr.selfSize, config.bounds?.right);
|
|
119
|
+
const nonOppisteTranslateX = nonOppositeOffsetX.reduce((acc, curr) => acc + curr.selfSize, config.bounds?.bottom);
|
|
120
120
|
const left = yAxesArray
|
|
121
121
|
.filter((_) => _.options.visible && _.options.opposite !== true)
|
|
122
122
|
.reduce((acc, curr) => acc + curr.selfSize, config.bounds?.left);
|
|
@@ -174,4 +174,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
|
|
|
174
174
|
type: Component,
|
|
175
175
|
args: [{ selector: 'teta-chart-container', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"{\n size: size | async,\n config: config | async,\n scales: scales | async,\n visibleRect: visibleRect | async,\n brushScale: brushScale | async\n} as data\" xmlns:svg=\"http://www.w3.org/1999/html\">\n <teta-tooltip *ngIf=\"data.config?.tooltip?.enable\"\n [size]=\"data.size\"\n [config]=\"data.config\"></teta-tooltip>\n <ng-container *ngIf=\"data.visibleRect?.width > 0 && data.visibleRect?.height > 0 && data.scales.x && data.scales.y\">\n <svg height=\"100%\" width=\"100%\" class=\"position-absolute\">\n <g class=\"y-axis-container\">\n <ng-container *ngFor=\"let item of data.scales.y | keyvalue; trackBy: identify\">\n <ng-container *ngIf=\"item.value.options.visible\">\n <g\n teta-y-axis\n [axis]=\"item.value\"\n [size]=\"data.visibleRect\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></g>\n <rect\n tetaZoomable\n fill-opacity=\"0\"\n [brushScale]=\"data.brushScale\"\n [scale]=\"data.scales.y.get(item.key).scale\"\n [axis]=\"item.value\"\n [config]=\"data.config\"\n [size]=\"data.visibleRect\"\n [attr.x]=\"item.value.options.opposite ? 0 : -item.value.selfSize\"\n [attr.y]=\"0\"\n [attr.height]=\"data.visibleRect.height\"\n [attr.width]=\"item.value.selfSize\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></rect>\n </ng-container>\n\n </ng-container>\n </g>\n <g class=\"x-axis-container\">\n <ng-container *ngFor=\"let item of data.scales.x | keyvalue; trackBy: identify\">\n <ng-container *ngIf=\"item.value.options.visible && data.scales.x && data.scales.y\">\n <g\n teta-x-axis\n [axis]=\"item.value\"\n [size]=\"data.visibleRect\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></g>\n <rect\n tetaZoomable\n fill-opacity=\"0\"\n [brushScale]=\"data.brushScale\"\n [scale]=\"data.scales.x.get(item.key).scale\"\n [axis]=\"item.value\"\n [config]=\"data.config\"\n [size]=\"data.visibleRect\"\n [attr.x]=\"0\"\n [attr.y]=\"item.value.options.opposite ? -item.value.selfSize : 0\"\n [attr.width]=\"data.visibleRect.width\"\n [attr.height]=\"item.value.selfSize\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></rect>\n </ng-container>\n </ng-container>\n </g>\n </svg>\n </ng-container>\n <ng-container *ngIf=\"data.visibleRect?.width > 0 && data.visibleRect?.height > 0 && data.scales.x && data.scales.y\">\n <svg\n tetaBrushable\n tetaZoomable\n class=\"position-absolute\"\n [size]=\"data.visibleRect\"\n [brushScale]=\"data.brushScale\"\n [scale]=\"data.brushScale\"\n [config]=\"data.config\"\n [axis]=\"data.config?.zoom?.type === zoomType.x ? data.scales.x.get(0) : data.scales.y.get(0)\"\n [attr.width]=\"data.visibleRect.width\"\n [attr.height]=\"data.visibleRect.height\"\n [attr.viewBox]=\"'0 0 ' + data.visibleRect.width + ' ' + data.visibleRect.height\"\n [style.transform]=\"'translate('+ data.visibleRect.x +'px, '+ data.visibleRect.y +'px)'\"\n (contextmenu)=\"contextMenu($event, data.scales.x, data.scales.y)\"\n (click)=\"click($event, data.scales.x, data.scales.y)\"\n (mouseleave)=\"mouseLeave($event)\"\n (mousemove)=\"mouseMove($event)\">\n\n <g class=\"gridlines\"\n teta-gridlines\n *ngIf=\"data.config.gridLines?.enable !== false\"\n [size]=\"data.size\"></g>\n\n <g class=\"x-axis-plotband-container\">\n <ng-container *ngFor=\"let axis of data.config.xAxis; let i = index\">\n <g teta-plot-band *ngFor=\"let plotBand of axis.plotBands\"\n [plotBand]=\"plotBand\"\n [scale]=\"data.scales.x.get(i).scale\"\n [size]=\"data.size\"\n [axis]=\"data.scales.x.get(i)\"></g>\n </ng-container>\n </g>\n <g class=\"y-axis-plotband-container\">\n <ng-container *ngFor=\"let axis of data.config.yAxis; let i = index\">\n <g teta-plot-band *ngFor=\"let plotBand of axis.plotBands\"\n [plotBand]=\"plotBand\"\n [scale]=\"data.scales.y.get(i).scale\"\n [size]=\"data.size\"\n [axis]=\"data.scales.y.get(i)\"></g>\n </ng-container>\n </g>\n <g class=\"x-axis-plotline-container\">\n <ng-container *ngFor=\"let axis of data.config.xAxis; let i = index\">\n <g teta-plot-line *ngFor=\"let plotLine of axis.plotLines\"\n [plotLine]=\"plotLine\"\n [scale]=\"data.scales.x.get(i).scale\"\n [size]=\"data.size\"\n [axis]=\"data.scales.x.get(i)\"></g>\n </ng-container>\n </g>\n <g class=\"y-axis-plotline-container\">\n <ng-container *ngFor=\"let axis of data.config.yAxis; let i = index\">\n <g teta-plot-line *ngFor=\"let plotLine of axis.plotLines\"\n [plotLine]=\"plotLine\"\n [scale]=\"data.scales.y.get(i).scale\"\n [size]=\"data.size\"\n [axis]=\"data.scales.x.get(i)\"></g>\n </ng-container>\n </g>\n <g class=\"series-container\">\n <ng-container *ngFor=\"let series of data.config.series\">\n <g teta-series-host\n *ngIf=\"series.visible\"\n [config]=\"data.config\"\n [series]=\"series\"></g>\n </ng-container>\n </g>\n <g class=\"annotations\">\n <g teta-annotation\n *ngFor=\"let annotation of data.config.annotations\"\n [annotation]=\"annotation\"></g>\n </g>\n <g class=\"crosshair\" *ngIf=\"data.config.tooltip?.showCrosshair\">\n <g teta-crosshair [size]=\"data.visibleRect\"></g>\n </g>\n </svg>\n\n </ng-container>\n</ng-container>\n", styles: [":host{display:flex;flex-direction:column;flex-grow:1;min-width:0;min-height:0}:host .zoomable:hover{cursor:grab}:host .zoomable:active{cursor:grabbing}:host .crosshair{cursor:crosshair}\n"] }]
|
|
176
176
|
}], ctorParameters: function () { return [{ type: i1.ChartService }, { type: i0.ChangeDetectorRef }, { type: i2.ScaleService }, { type: i3.ZoomService }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
|
|
177
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9jaGFydC1jb250YWluZXIvY2hhcnQtY29udGFpbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9jaGFydC1jb250YWluZXIvY2hhcnQtY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxHQUtWLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLEdBQUcsRUFDUyxTQUFTLEVBQ3JCLFdBQVcsRUFDWCxjQUFjLEdBQ2YsTUFBTSxNQUFNLENBQUM7QUFFZCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFHL0QsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ25ELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBV3BELE1BQU0sT0FBTyx1QkFBdUI7SUF3QmxDLFlBQ1UsSUFBa0IsRUFDbEIsSUFBdUIsRUFDdkIsYUFBMkIsRUFDM0IsWUFBeUIsRUFDekIsV0FBdUIsRUFDdkIsS0FBYTtRQUxiLFNBQUksR0FBSixJQUFJLENBQWM7UUFDbEIsU0FBSSxHQUFKLElBQUksQ0FBbUI7UUFDdkIsa0JBQWEsR0FBYixhQUFhLENBQWM7UUFDM0IsaUJBQVksR0FBWixZQUFZLENBQWE7UUFDekIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDdkIsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQXhCdkIsYUFBUSxHQUFHLFFBQVEsQ0FBQztRQUdaLHNCQUFpQixHQUFHLElBQUksR0FBRyxFQUNNO2FB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Q0FBQyxDQUFDLEtBQUssQ0FBQztRQUMvQixNQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDO1lBQzdCLEtBQUssRUFBRSxLQUFLO1lBQ1osTUFBTSxFQUFFO2dCQUNOLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7Z0JBQzFCLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7YUFDM0I7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQUs7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQUs7UUFDZCxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDOztvSEFuUFUsdUJBQXVCO3dHQUF2Qix1QkFBdUIsNERDcENwQyxtbU1BK0lBOzJGRDNHYSx1QkFBdUI7a0JBTm5DLFNBQVM7K0JBQ0Usc0JBQXNCLG1CQUdmLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0lDaGFydENvbmZpZ30gZnJvbSAnLi4vbW9kZWwvaS1jaGFydC1jb25maWcnO1xuaW1wb3J0IHtDaGFydFNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2UvY2hhcnQuc2VydmljZSc7XG5pbXBvcnQge1xuICBhbmltYXRpb25GcmFtZVNjaGVkdWxlcixcbiAgY29tYmluZUxhdGVzdFdpdGgsXG4gIG1hcCxcbiAgT2JzZXJ2YWJsZSwgb2JzZXJ2ZU9uLFxuICBzaGFyZVJlcGxheSxcbiAgd2l0aExhdGVzdEZyb20sXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtBeGlzfSBmcm9tICcuLi9jb3JlL2F4aXMvYXhpcyc7XG5pbXBvcnQge0F4aXNPcmllbnRhdGlvbn0gZnJvbSAnLi4vbW9kZWwvZW51bS9heGlzLW9yaWVudGF0aW9uJztcbmltcG9ydCB7U2NhbGVTZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlL3NjYWxlLnNlcnZpY2UnO1xuaW1wb3J0IHtab29tU2VydmljZX0gZnJvbSAnLi4vc2VydmljZS96b29tLnNlcnZpY2UnO1xuaW1wb3J0IHtCcnVzaFR5cGV9IGZyb20gJy4uL21vZGVsL2VudW0vYnJ1c2gtdHlwZSc7XG5pbXBvcnQge1pvb21UeXBlfSBmcm9tICcuLi9tb2RlbC9lbnVtL3pvb20tdHlwZSc7XG5pbXBvcnQge3RldGFab25lRnVsbH0gZnJvbSAnQHRldGFjb20vbmctY29tcG9uZW50cyc7XG5pbXBvcnQge0lTY2FsZXNNYXB9IGZyb20gJy4uL21vZGVsL2ktc2NhbGVzLW1hcCc7XG5cbnR5cGUgT3Bwb3NpdGUgPSBib29sZWFuO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0ZXRhLWNoYXJ0LWNvbnRhaW5lcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGFydC1jb250YWluZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGFydC1jb250YWluZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIENoYXJ0Q29udGFpbmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBjb25maWc6IE9ic2VydmFibGU8SUNoYXJ0Q29uZmlnPjtcbiAgc2NhbGVzOiBPYnNlcnZhYmxlPElTY2FsZXNNYXA+O1xuICBzaXplOiBPYnNlcnZhYmxlPERPTVJlY3Q+O1xuICB2aXNpYmxlUmVjdDogT2JzZXJ2YWJsZTxhbnk+O1xuICBicnVzaFNjYWxlOiBPYnNlcnZhYmxlPGFueT47XG4gIHpvb21UeXBlID0gWm9vbVR5cGU7XG5cbiAgcHJpdmF0ZSBfb2JzZXJ2ZXI6IFJlc2l6ZU9ic2VydmVyO1xuICBwcml2YXRlIGZpbHRlclBvc2l0aW9uTWFwID0gbmV3IE1hcDxPcHBvc2l0ZSxcbiAgICAoYXhpczogQXhpcykgPT4gKF86IEF4aXMpID0+IGJvb2xlYW4+KClcbiAgICAuc2V0KFxuICAgICAgdHJ1ZSxcbiAgICAgIChheGlzKSA9PiAoXzogQXhpcykgPT5cbiAgICAgICAgXy5vcHRpb25zLm9wcG9zaXRlICYmIF8ub3B0aW9ucy52aXNpYmxlICYmIGF4aXMuaW5kZXggPD0gXy5pbmRleFxuICAgIClcbiAgICAuc2V0KFxuICAgICAgZmFsc2UsXG4gICAgICAoYXhpcykgPT4gKF86IEF4aXMpID0+XG4gICAgICAgIF8ub3B0aW9ucy5vcHBvc2l0ZSAhPT0gdHJ1ZSAmJlxuICAgICAgICBfLm9wdGlvbnMudmlzaWJsZSAmJlxuICAgICAgICBfLmluZGV4IDw9IGF4aXMuaW5kZXhcbiAgICApO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX3N2YzogQ2hhcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBfc2NhbGVTZXJ2aWNlOiBTY2FsZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfem9vbVNlcnZpY2U6IFpvb21TZXJ2aWNlLFxuICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBfem9uZTogTmdab25lXG4gICkge1xuICAgIHRoaXMuY29uZmlnID0gdGhpcy5fc3ZjLmNvbmZpZztcbiAgICB0aGlzLnNpemUgPSB0aGlzLl9zdmMuc2l6ZTtcblxuICAgIHRoaXMuc2NhbGVzID0gdGhpcy5fc2NhbGVTZXJ2aWNlLnNjYWxlcy5waXBlKFxuICAgICAgb2JzZXJ2ZU9uKGFuaW1hdGlvbkZyYW1lU2NoZWR1bGVyKSxcbiAgICAgIHRldGFab25lRnVsbCh0aGlzLl96b25lKSxcbiAgICAgIHNoYXJlUmVwbGF5KHtcbiAgICAgICAgYnVmZmVyU2l6ZTogMSxcbiAgICAgICAgcmVmQ291bnQ6IHRydWUsXG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLmJydXNoU2NhbGUgPSB0aGlzLl9zY2FsZVNlcnZpY2Uuc2NhbGVzLnBpcGUoXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLmNvbmZpZyksXG4gICAgICBtYXAoKGRhdGE6IFtJU2NhbGVzTWFwLCBJQ2hhcnRDb25maWddKSA9PiB7XG4gICAgICAgIGNvbnN0IFt7eCwgeX0sIGNvbmZpZ10gPSBkYXRhO1xuXG4gICAgICAgIHJldHVybiBjb25maWcuYnJ1c2g/LnR5cGUgPT09IEJydXNoVHlwZS54IHx8IGNvbmZpZz8uem9vbT8udHlwZSA9PT0gWm9vbVR5cGUueCA/IHguZ2V0KDApLnNjYWxlIDogeS5nZXQoMCkuc2NhbGU7XG4gICAgICB9KSxcbiAgICAgIHNoYXJlUmVwbGF5KHtcbiAgICAgICAgYnVmZmVyU2l6ZTogMSxcbiAgICAgICAgcmVmQ291bnQ6IHRydWUsXG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLnZpc2libGVSZWN0ID0gdGhpcy5zaXplLnBpcGUoXG4gICAgICBjb21iaW5lTGF0ZXN0V2l0aCh0aGlzLnNjYWxlcylcbiAgICApLnBpcGUoXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLmNvbmZpZyksXG4gICAgICBtYXAoXG4gICAgICAgIChcbiAgICAgICAgICBkYXRhOiBbW0RPTVJlY3QsIElTY2FsZXNNYXBdLCBJQ2hhcnRDb25maWddXG4gICAgICAgICkgPT4ge1xuICAgICAgICAgIGNvbnN0IFtbc2l6ZSwge3gsIHl9XSwgY29uZmlnXSA9IGRhdGE7XG4gICAgICAgICAgY29uc3QgeUF4ZXNBcnJheSA9IEFycmF5LmZyb20oeS52YWx1ZXMoKSk7XG4gICAgICAgICAgY29uc3QgeEF4ZXNBcnJheSA9IEFycmF5LmZyb20oeC52YWx1ZXMoKSk7XG4gICAgICAgICAgY29uc3QgbGVmdCA9IHlBeGVzQXJyYXlcbiAgICAgICAgICAgIC5maWx0ZXIoKF8pID0+IF8ub3B0aW9ucy5vcHBvc2l0ZSAhPT0gdHJ1ZSAmJiBfLm9wdGlvbnMudmlzaWJsZSlcbiAgICAgICAgICAgIC5yZWR1Y2UodGhpcy5zdW1TaXplLCAwKTtcblxuICAgICAgICAgIGNvbnN0IHJpZ2h0ID0geUF4ZXNBcnJheVxuICAgICAgICAgICAgLmZpbHRlcigoXykgPT4gXy5vcHRpb25zLm9wcG9zaXRlICYmIF8ub3B0aW9ucy52aXNpYmxlKVxuICAgICAgICAgICAgLnJlZHVjZSh0aGlzLnN1bVNpemUsIDApO1xuXG4gICAgICAgICAgY29uc3QgYm90dG9tID0geEF4ZXNBcnJheVxuICAgICAgICAgICAgLmZpbHRlcigoXykgPT4gXy5vcHRpb25zLm9wcG9zaXRlICE9PSB0cnVlICYmIF8ub3B0aW9ucy52aXNpYmxlKVxuICAgICAgICAgICAgLnJlZHVjZSh0aGlzLnN1bVNpemUsIDApO1xuXG4gICAgICAgICAgY29uc3QgdG9wID0geEF4ZXNBcnJheVxuICAgICAgICAgICAgLmZpbHRlcigoXykgPT4gXy5vcHRpb25zLm9wcG9zaXRlICYmIF8ub3B0aW9ucy52aXNpYmxlKVxuICAgICAgICAgICAgLnJlZHVjZSh0aGlzLnN1bVNpemUsIDApO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiBsZWZ0ICsgY29uZmlnLmJvdW5kcz8ubGVmdCxcbiAgICAgICAgICAgIHk6IHRvcCArIGNvbmZpZy5ib3VuZHM/LnRvcCxcbiAgICAgICAgICAgIHdpZHRoOlxuICAgICAgICAgICAgICBzaXplLndpZHRoIC1cbiAgICAgICAgICAgICAgbGVmdCAtXG4gICAgICAgICAgICAgIHJpZ2h0IC1cbiAgICAgICAgICAgICAgY29uZmlnLmJvdW5kcz8ubGVmdCAtXG4gICAgICAgICAgICAgIGNvbmZpZy5ib3VuZHM/LnJpZ2h0LFxuICAgICAgICAgICAgaGVpZ2h0OlxuICAgICAgICAgICAgICBzaXplLmhlaWdodCAtXG4gICAgICAgICAgICAgIHRvcCAtXG4gICAgICAgICAgICAgIGJvdHRvbSAtXG4gICAgICAgICAgICAgIGNvbmZpZy5ib3VuZHM/LnRvcCAtXG4gICAgICAgICAgICAgIGNvbmZpZy5ib3VuZHM/LmJvdHRvbSxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICApLFxuICAgICAgdGV0YVpvbmVGdWxsKHRoaXMuX3pvbmUpLFxuICAgICAgc2hhcmVSZXBsYXkoe1xuICAgICAgICBidWZmZXJTaXplOiAxLFxuICAgICAgICByZWZDb3VudDogdHJ1ZSxcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICB9XG5cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fb2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKGVudHJpZXM6IFJlc2l6ZU9ic2VydmVyRW50cnlbXSkgPT4ge1xuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICFBcnJheS5pc0FycmF5KGVudHJpZXMpIHx8XG4gICAgICAgICAgIWVudHJpZXMubGVuZ3RoIHx8XG4gICAgICAgICAgZW50cmllc1swXS5jb250ZW50UmVjdC53aWR0aCA8PSAwIHx8XG4gICAgICAgICAgZW50cmllc1swXS5jb250ZW50UmVjdC5oZWlnaHQgPD0gMFxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc3ZjLnNldFNpemUoZW50cmllc1swXS5jb250ZW50UmVjdCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICB0aGlzLl9vYnNlcnZlci5vYnNlcnZlKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9vYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gIH1cblxuICBwcml2YXRlIHN1bVNpemUgPSAoYWNjLCBjdXJyKSA9PiBhY2MgKyBjdXJyLnNlbGZTaXplO1xuXG4gIGdldFRyYW5zbGF0ZShheGlzPzogQXhpcywgc2l6ZT86IERPTVJlY3QpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLnNjYWxlcy5waXBlKFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5jb25maWcpLFxuICAgICAgbWFwKChkYXRhOiBbSVNjYWxlc01hcCwgSUNoYXJ0Q29uZmlnXSkgPT4ge1xuICAgICAgICBjb25zdCBbe3gsIHl9LCBjb25maWddID0gZGF0YTtcbiAgICAgICAgY29uc3QgeEF4ZXNBcnJheSA9IEFycmF5LmZyb20oeC52YWx1ZXMoKSk7XG4gICAgICAgIGNvbnN0IHlBeGVzQXJyYXkgPSBBcnJheS5mcm9tKHkudmFsdWVzKCkpO1xuXG4gICAgICAgIGNvbnN0IG9wcG9zaXRlRmlsdGVyID0gdGhpcy5maWx0ZXJQb3NpdGlvbk1hcC5nZXQodHJ1ZSk7XG4gICAgICAgIGNvbnN0IG5vbk9wcG9zaXRlRmlsdGVyID0gdGhpcy5maWx0ZXJQb3NpdGlvbk1hcC5nZXQoZmFsc2UpO1xuXG4gICAgICAgIGNvbnN0IG9wcG9zaXRlT2Zmc2V0WSA9IHlBeGVzQXJyYXkuZmlsdGVyKG9wcG9zaXRlRmlsdGVyKGF4aXMpKTtcbiAgICAgICAgY29uc3Qgbm9uT3Bwb3NpdGVPZmZzZXRZID0geUF4ZXNBcnJheS5maWx0ZXIobm9uT3Bwb3NpdGVGaWx0ZXIoYXhpcykpO1xuXG4gICAgICAgIGNvbnN0IG9wcG9zaXRlT2Zmc2V0WCA9IHhBeGVzQXJyYXkuZmlsdGVyKG9wcG9zaXRlRmlsdGVyKGF4aXMpKTtcbiAgICAgICAgY29uc3Qgbm9uT3Bwb3NpdGVPZmZzZXRYID0geEF4ZXNBcnJheS5maWx0ZXIobm9uT3Bwb3NpdGVGaWx0ZXIoYXhpcykpO1xuXG4gICAgICAgIGNvbnN0IG9wcG9zaXRlVHJhbnNsYXRlWSA9IG9wcG9zaXRlT2Zmc2V0WS5yZWR1Y2UoXG4gICAgICAgICAgKGFjYywgY3VycikgPT4gYWNjICsgY3Vyci5zZWxmU2l6ZSxcbiAgICAgICAgICAwXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IG5vbk9wcGlzdGVUcmFuc2xhdGVZID0gbm9uT3Bwb3NpdGVPZmZzZXRZLnJlZHVjZShcbiAgICAgICAgICAoYWNjLCBjdXJyKSA9PiBhY2MgKyBjdXJyLnNlbGZTaXplLFxuICAgICAgICAgIDBcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBvcHBvc2l0ZVRyYW5zbGF0ZVggPSBvcHBvc2l0ZU9mZnNldFgucmVkdWNlKFxuICAgICAgICAgIChhY2MsIGN1cnIpID0+IGFjYyArIGN1cnIuc2VsZlNpemUsXG4gICAgICAgICAgMFxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IG5vbk9wcGlzdGVUcmFuc2xhdGVYID0gbm9uT3Bwb3NpdGVPZmZzZXRYLnJlZHVjZShcbiAgICAgICAgICAoYWNjLCBjdXJyKSA9PiBhY2MgKyBjdXJyLnNlbGZTaXplLFxuICAgICAgICAgIDBcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBsZWZ0ID0geUF4ZXNBcnJheVxuICAgICAgICAgIC5maWx0ZXIoKF8pID0+IF8ub3B0aW9ucy52aXNpYmxlICYmIF8ub3B0aW9ucy5vcHBvc2l0ZSAhPT0gdHJ1ZSlcbiAgICAgICAgICAucmVkdWNlKChhY2MsIGN1cnIpID0+IGFjYyArIGN1cnIuc2VsZlNpemUsIGNvbmZpZy5ib3VuZHM/LmxlZnQpO1xuXG4gICAgICAgIGNvbnN0IHRvcCA9IHhBeGVzQXJyYXlcbiAgICAgICAgICAuZmlsdGVyKChfKSA9PiBfLm9wdGlvbnMudmlzaWJsZSAmJiBfLm9wdGlvbnMub3Bwb3NpdGUgPT09IHRydWUpXG4gICAgICAgICAgLnJlZHVjZSgoYWNjLCBjdXJyKSA9PiBhY2MgKyBjdXJyLnNlbGZTaXplLCBjb25maWcuYm91bmRzPy50b3ApO1xuXG4gICAgICAgIGlmIChheGlzLm9yaWVudGF0aW9uID09PSBBeGlzT3JpZW50YXRpb24ueCkge1xuICAgICAgICAgIHJldHVybiBgdHJhbnNsYXRlKCR7bGVmdH0sICR7XG4gICAgICAgICAgICBheGlzLm9wdGlvbnMub3Bwb3NpdGVcbiAgICAgICAgICAgICAgPyBvcHBvc2l0ZVRyYW5zbGF0ZVhcbiAgICAgICAgICAgICAgOiBzaXplLmhlaWdodCAtIG5vbk9wcGlzdGVUcmFuc2xhdGVYXG4gICAgICAgICAgfSlgO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGF4aXMub3JpZW50YXRpb24gPT09IEF4aXNPcmllbnRhdGlvbi55KSB7XG4gICAgICAgICAgcmV0dXJuIGB0cmFuc2xhdGUoJHtcbiAgICAgICAgICAgIGF4aXMub3B0aW9ucy5vcHBvc2l0ZVxuICAgICAgICAgICAgICA/IHNpemUud2lkdGggLSBvcHBvc2l0ZVRyYW5zbGF0ZVlcbiAgICAgICAgICAgICAgOiBub25PcHBpc3RlVHJhbnNsYXRlWVxuICAgICAgICAgIH0sICR7dG9wfSlgO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICd0cmFuc2xhdGUoMCwgMCknO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgaWRlbnRpZnkoaW5kZXgsIGl0ZW0pIHtcbiAgICByZXR1cm4gaXRlbS52YWx1ZS5pbmRleDtcbiAgfVxuXG4gIGNsaWNrKFxuICAgIGV2ZW50OiBQb2ludGVyRXZlbnQsXG4gICAgeFNjYWxlczogTWFwPG51bWJlciwgQXhpcz4sXG4gICAgeVNjYWxlczogTWFwPG51bWJlciwgQXhpcz5cbiAgKSB7XG4gICAgY29uc3QgeCA9IHhTY2FsZXMuZ2V0KDApLnNjYWxlO1xuICAgIGNvbnN0IHkgPSB5U2NhbGVzLmdldCgwKS5zY2FsZTtcbiAgICB0aGlzLl9zdmMuZW1pdENoYXJ0Q2xpY2soe1xuICAgICAgZXZlbnQ6IGV2ZW50LFxuICAgICAgdGFyZ2V0OiB7XG4gICAgICAgIHg6IHguaW52ZXJ0KGV2ZW50Lm9mZnNldFgpLFxuICAgICAgICB5OiB5LmludmVydChldmVudC5vZmZzZXRZKSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBjb250ZXh0TWVudShcbiAgICBldmVudDogTW91c2VFdmVudCxcbiAgICB4U2NhbGVzOiBNYXA8bnVtYmVyLCBBeGlzPixcbiAgICB5U2NhbGVzOiBNYXA8bnVtYmVyLCBBeGlzPlxuICApIHtcbiAgICBjb25zdCB4ID0geFNjYWxlcy5nZXQoMCkuc2NhbGU7XG4gICAgY29uc3QgeSA9IHlTY2FsZXMuZ2V0KDApLnNjYWxlO1xuICAgIHRoaXMuX3N2Yy5lbWl0Q2hhcnRDb250ZXh0TWVudSh7XG4gICAgICBldmVudDogZXZlbnQsXG4gICAgICB0YXJnZXQ6IHtcbiAgICAgICAgeDogeC5pbnZlcnQoZXZlbnQub2Zmc2V0WCksXG4gICAgICAgIHk6IHkuaW52ZXJ0KGV2ZW50Lm9mZnNldFkpLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIG1vdXNlTW92ZShldmVudCkge1xuICAgIHRoaXMuX3N2Yy5zZXRQb2ludGVyTW92ZShldmVudCk7XG4gIH1cblxuICBtb3VzZUxlYXZlKGV2ZW50KSB7XG4gICAgdGhpcy5fc3ZjLnNldFBvaW50ZXJNb3ZlKGV2ZW50KTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIntcbiAgc2l6ZTogc2l6ZSB8IGFzeW5jLFxuICBjb25maWc6IGNvbmZpZyB8IGFzeW5jLFxuICBzY2FsZXM6IHNjYWxlcyB8IGFzeW5jLFxuICB2aXNpYmxlUmVjdDogdmlzaWJsZVJlY3QgfCBhc3luYyxcbiAgYnJ1c2hTY2FsZTogYnJ1c2hTY2FsZSB8IGFzeW5jXG59IGFzIGRhdGFcIiB4bWxuczpzdmc9XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L2h0bWxcIj5cbiAgPHRldGEtdG9vbHRpcCAqbmdJZj1cImRhdGEuY29uZmlnPy50b29sdGlwPy5lbmFibGVcIlxuICAgICAgICAgICAgICAgIFtzaXplXT1cImRhdGEuc2l6ZVwiXG4gICAgICAgICAgICAgICAgW2NvbmZpZ109XCJkYXRhLmNvbmZpZ1wiPjwvdGV0YS10b29sdGlwPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YS52aXNpYmxlUmVjdD8ud2lkdGggPiAwICYmIGRhdGEudmlzaWJsZVJlY3Q/LmhlaWdodCA+IDAgJiYgZGF0YS5zY2FsZXMueCAmJiBkYXRhLnNjYWxlcy55XCI+XG4gICAgPHN2ZyBoZWlnaHQ9XCIxMDAlXCIgd2lkdGg9XCIxMDAlXCIgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZVwiPlxuICAgICAgPGcgY2xhc3M9XCJ5LWF4aXMtY29udGFpbmVyXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZGF0YS5zY2FsZXMueSB8IGtleXZhbHVlOyB0cmFja0J5OiBpZGVudGlmeVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLnZhbHVlLm9wdGlvbnMudmlzaWJsZVwiPlxuICAgICAgICAgICAgPGdcbiAgICAgICAgICAgICAgdGV0YS15LWF4aXNcbiAgICAgICAgICAgICAgW2F4aXNdPVwiaXRlbS52YWx1ZVwiXG4gICAgICAgICAgICAgIFtzaXplXT1cImRhdGEudmlzaWJsZVJlY3RcIlxuICAgICAgICAgICAgICBbYXR0ci50cmFuc2Zvcm1dPVwiZ2V0VHJhbnNsYXRlKGl0ZW0udmFsdWUsIGRhdGEuc2l6ZSkgfCBhc3luY1wiPjwvZz5cbiAgICAgICAgICAgIDxyZWN0XG4gICAgICAgICAgICAgIHRldGFab29tYWJsZVxuICAgICAgICAgICAgICBmaWxsLW9wYWNpdHk9XCIwXCJcbiAgICAgICAgICAgICAgW2JydXNoU2NhbGVdPVwiZGF0YS5icnVzaFNjYWxlXCJcbiAgICAgICAgICAgICAgW3NjYWxlXT1cImRhdGEuc2NhbGVzLnkuZ2V0KGl0ZW0ua2V5KS5zY2FsZVwiXG4gICAgICAgICAgICAgIFtheGlzXT1cIml0ZW0udmFsdWVcIlxuICAgICAgICAgICAgICBbY29uZmlnXT1cImRhdGEuY29uZmlnXCJcbiAgICAgICAgICAgICAgW3NpemVdPVwiZGF0YS52aXNpYmxlUmVjdFwiXG4gICAgICAgICAgICAgIFthdHRyLnhdPVwiaXRlbS52YWx1ZS5vcHRpb25zLm9wcG9zaXRlID8gMCA6IC1pdGVtLnZhbHVlLnNlbGZTaXplXCJcbiAgICAgICAgICAgICAgW2F0dHIueV09XCIwXCJcbiAgICAgICAgICAgICAgW2F0dHIuaGVpZ2h0XT1cImRhdGEudmlzaWJsZVJlY3QuaGVpZ2h0XCJcbiAgICAgICAgICAgICAgW2F0dHIud2lkdGhdPVwiaXRlbS52YWx1ZS5zZWxmU2l6ZVwiXG4gICAgICAgICAgICAgIFthdHRyLnRyYW5zZm9ybV09XCJnZXRUcmFuc2xhdGUoaXRlbS52YWx1ZSwgZGF0YS5zaXplKSB8IGFzeW5jXCI+PC9yZWN0PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9nPlxuICAgICAgPGcgY2xhc3M9XCJ4LWF4aXMtY29udGFpbmVyXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZGF0YS5zY2FsZXMueCB8IGtleXZhbHVlOyB0cmFja0J5OiBpZGVudGlmeVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLnZhbHVlLm9wdGlvbnMudmlzaWJsZSAmJiBkYXRhLnNjYWxlcy54ICYmIGRhdGEuc2NhbGVzLnlcIj5cbiAgICAgICAgICAgIDxnXG4gICAgICAgICAgICAgIHRldGEteC1heGlzXG4gICAgICAgICAgICAgIFtheGlzXT1cIml0ZW0udmFsdWVcIlxuICAgICAgICAgICAgICBbc2l6ZV09XCJkYXRhLnZpc2libGVSZWN0XCJcbiAgICAgICAgICAgICAgW2F0dHIudHJhbnNmb3JtXT1cImdldFRyYW5zbGF0ZShpdGVtLnZhbHVlLCBkYXRhLnNpemUpIHwgYXN5bmNcIj48L2c+XG4gICAgICAgICAgICA8cmVjdFxuICAgICAgICAgICAgICB0ZXRhWm9vbWFibGVcbiAgICAgICAgICAgICAgZmlsbC1vcGFjaXR5PVwiMFwiXG4gICAgICAgICAgICAgIFticnVzaFNjYWxlXT1cImRhdGEuYnJ1c2hTY2FsZVwiXG4gICAgICAgICAgICAgIFtzY2FsZV09XCJkYXRhLnNjYWxlcy54LmdldChpdGVtLmtleSkuc2NhbGVcIlxuICAgICAgICAgICAgICBbYXhpc109XCJpdGVtLnZhbHVlXCJcbiAgICAgICAgICAgICAgW2NvbmZpZ109XCJkYXRhLmNvbmZpZ1wiXG4gICAgICAgICAgICAgIFtzaXplXT1cImRhdGEudmlzaWJsZVJlY3RcIlxuICAgICAgICAgICAgICBbYXR0ci54XT1cIjBcIlxuICAgICAgICAgICAgICBbYXR0ci55XT1cIml0ZW0udmFsdWUub3B0aW9ucy5vcHBvc2l0ZSA/IC1pdGVtLnZhbHVlLnNlbGZTaXplIDogMFwiXG4gICAgICAgICAgICAgIFthdHRyLndpZHRoXT1cImRhdGEudmlzaWJsZVJlY3Qud2lkdGhcIlxuICAgICAgICAgICAgICBbYXR0ci5oZWlnaHRdPVwiaXRlbS52YWx1ZS5zZWxmU2l6ZVwiXG4gICAgICAgICAgICAgIFthdHRyLnRyYW5zZm9ybV09XCJnZXRUcmFuc2xhdGUoaXRlbS52YWx1ZSwgZGF0YS5zaXplKSB8IGFzeW5jXCI+PC9yZWN0PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZz5cbiAgICA8L3N2Zz5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRhLnZpc2libGVSZWN0Py53aWR0aCA+IDAgJiYgZGF0YS52aXNpYmxlUmVjdD8uaGVpZ2h0ID4gMCAmJiBkYXRhLnNjYWxlcy54ICYmIGRhdGEuc2NhbGVzLnlcIj5cbiAgICA8c3ZnXG4gICAgICB0ZXRhQnJ1c2hhYmxlXG4gICAgICB0ZXRhWm9vbWFibGVcbiAgICAgIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGVcIlxuICAgICAgW3NpemVdPVwiZGF0YS52aXNpYmxlUmVjdFwiXG4gICAgICBbYnJ1c2hTY2FsZV09XCJkYXRhLmJydXNoU2NhbGVcIlxuICAgICAgW3NjYWxlXT1cImRhdGEuYnJ1c2hTY2FsZVwiXG4gICAgICBbY29uZmlnXT1cImRhdGEuY29uZmlnXCJcbiAgICAgIFtheGlzXT1cImRhdGEuY29uZmlnPy56b29tPy50eXBlID09PSB6b29tVHlwZS54ID8gZGF0YS5zY2FsZXMueC5nZXQoMCkgOiBkYXRhLnNjYWxlcy55LmdldCgwKVwiXG4gICAgICBbYXR0ci53aWR0aF09XCJkYXRhLnZpc2libGVSZWN0LndpZHRoXCJcbiAgICAgIFthdHRyLmhlaWdodF09XCJkYXRhLnZpc2libGVSZWN0LmhlaWdodFwiXG4gICAgICBbYXR0ci52aWV3Qm94XT1cIicwIDAgJyArIGRhdGEudmlzaWJsZVJlY3Qud2lkdGggKyAnICcgKyBkYXRhLnZpc2libGVSZWN0LmhlaWdodFwiXG4gICAgICBbc3R5bGUudHJhbnNmb3JtXT1cIid0cmFuc2xhdGUoJysgZGF0YS52aXNpYmxlUmVjdC54ICsncHgsICcrIGRhdGEudmlzaWJsZVJlY3QueSArJ3B4KSdcIlxuICAgICAgKGNvbnRleHRtZW51KT1cImNvbnRleHRNZW51KCRldmVudCwgZGF0YS5zY2FsZXMueCwgZGF0YS5zY2FsZXMueSlcIlxuICAgICAgKGNsaWNrKT1cImNsaWNrKCRldmVudCwgZGF0YS5zY2FsZXMueCwgZGF0YS5zY2FsZXMueSlcIlxuICAgICAgKG1vdXNlbGVhdmUpPVwibW91c2VMZWF2ZSgkZXZlbnQpXCJcbiAgICAgIChtb3VzZW1vdmUpPVwibW91c2VNb3ZlKCRldmVudClcIj5cblxuICAgICAgPGcgY2xhc3M9XCJncmlkbGluZXNcIlxuICAgICAgICAgdGV0YS1ncmlkbGluZXNcbiAgICAgICAgICpuZ0lmPVwiZGF0YS5jb25maWcuZ3JpZExpbmVzPy5lbmFibGUgIT09IGZhbHNlXCJcbiAgICAgICAgIFtzaXplXT1cImRhdGEuc2l6ZVwiPjwvZz5cblxuICAgICAgPGcgY2xhc3M9XCJ4LWF4aXMtcGxvdGJhbmQtY29udGFpbmVyXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGF4aXMgb2YgZGF0YS5jb25maWcueEF4aXM7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICA8ZyB0ZXRhLXBsb3QtYmFuZCAqbmdGb3I9XCJsZXQgcGxvdEJhbmQgb2YgYXhpcy5wbG90QmFuZHNcIlxuICAgICAgICAgICAgIFtwbG90QmFuZF09XCJwbG90QmFuZFwiXG4gICAgICAgICAgICAgW3NjYWxlXT1cImRhdGEuc2NhbGVzLnguZ2V0KGkpLnNjYWxlXCJcbiAgICAgICAgICAgICBbc2l6ZV09XCJkYXRhLnNpemVcIlxuICAgICAgICAgICAgIFtheGlzXT1cImRhdGEuc2NhbGVzLnguZ2V0KGkpXCI+PC9nPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZz5cbiAgICAgIDxnIGNsYXNzPVwieS1heGlzLXBsb3RiYW5kLWNvbnRhaW5lclwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBheGlzIG9mIGRhdGEuY29uZmlnLnlBeGlzOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgPGcgdGV0YS1wbG90LWJhbmQgKm5nRm9yPVwibGV0IHBsb3RCYW5kIG9mIGF4aXMucGxvdEJhbmRzXCJcbiAgICAgICAgICAgICBbcGxvdEJhbmRdPVwicGxvdEJhbmRcIlxuICAgICAgICAgICAgIFtzY2FsZV09XCJkYXRhLnNjYWxlcy55LmdldChpKS5zY2FsZVwiXG4gICAgICAgICAgICAgW3NpemVdPVwiZGF0YS5zaXplXCJcbiAgICAgICAgICAgICBbYXhpc109XCJkYXRhLnNjYWxlcy55LmdldChpKVwiPjwvZz5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2c+XG4gICAgICA8ZyBjbGFzcz1cIngtYXhpcy1wbG90bGluZS1jb250YWluZXJcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYXhpcyBvZiBkYXRhLmNvbmZpZy54QXhpczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgIDxnIHRldGEtcGxvdC1saW5lICpuZ0Zvcj1cImxldCBwbG90TGluZSBvZiBheGlzLnBsb3RMaW5lc1wiXG4gICAgICAgICAgICAgW3Bsb3RMaW5lXT1cInBsb3RMaW5lXCJcbiAgICAgICAgICAgICBbc2NhbGVdPVwiZGF0YS5zY2FsZXMueC5nZXQoaSkuc2NhbGVcIlxuICAgICAgICAgICAgIFtzaXplXT1cImRhdGEuc2l6ZVwiXG4gICAgICAgICAgICAgW2F4aXNdPVwiZGF0YS5zY2FsZXMueC5nZXQoaSlcIj48L2c+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9nPlxuICAgICAgPGcgY2xhc3M9XCJ5LWF4aXMtcGxvdGxpbmUtY29udGFpbmVyXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGF4aXMgb2YgZGF0YS5jb25maWcueUF4aXM7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICA8ZyB0ZXRhLXBsb3QtbGluZSAqbmdGb3I9XCJsZXQgcGxvdExpbmUgb2YgYXhpcy5wbG90TGluZXNcIlxuICAgICAgICAgICAgIFtwbG90TGluZV09XCJwbG90TGluZVwiXG4gICAgICAgICAgICAgW3NjYWxlXT1cImRhdGEuc2NhbGVzLnkuZ2V0KGkpLnNjYWxlXCJcbiAgICAgICAgICAgICBbc2l6ZV09XCJkYXRhLnNpemVcIlxuICAgICAgICAgICAgIFtheGlzXT1cImRhdGEuc2NhbGVzLnguZ2V0KGkpXCI+PC9nPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZz5cbiAgICAgIDxnIGNsYXNzPVwic2VyaWVzLWNvbnRhaW5lclwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzZXJpZXMgb2YgZGF0YS5jb25maWcuc2VyaWVzXCI+XG4gICAgICAgICAgPGcgdGV0YS1zZXJpZXMtaG9zdFxuICAgICAgICAgICAgICpuZ0lmPVwic2VyaWVzLnZpc2libGVcIlxuICAgICAgICAgICAgIFtjb25maWddPVwiZGF0YS5jb25maWdcIlxuICAgICAgICAgICAgIFtzZXJpZXNdPVwic2VyaWVzXCI+PC9nPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZz5cbiAgICAgIDxnIGNsYXNzPVwiYW5ub3RhdGlvbnNcIj5cbiAgICAgICAgPGcgdGV0YS1hbm5vdGF0aW9uXG4gICAgICAgICAgICpuZ0Zvcj1cImxldCBhbm5vdGF0aW9uIG9mIGRhdGEuY29uZmlnLmFubm90YXRpb25zXCJcbiAgICAgICAgICAgW2Fubm90YXRpb25dPVwiYW5ub3RhdGlvblwiPjwvZz5cbiAgICAgIDwvZz5cbiAgICAgIDxnIGNsYXNzPVwiY3Jvc3NoYWlyXCIgKm5nSWY9XCJkYXRhLmNvbmZpZy50b29sdGlwPy5zaG93Q3Jvc3NoYWlyXCI+XG4gICAgICAgIDxnIHRldGEtY3Jvc3NoYWlyIFtzaXplXT1cImRhdGEudmlzaWJsZVJlY3RcIj48L2c+XG4gICAgICA8L2c+XG4gICAgPC9zdmc+XG5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|
|
177
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9jaGFydC1jb250YWluZXIvY2hhcnQtY29udGFpbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9jaGFydC1jb250YWluZXIvY2hhcnQtY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxHQUtWLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLEdBQUcsRUFDUyxTQUFTLEVBQ3JCLFdBQVcsRUFDWCxjQUFjLEdBQ2YsTUFBTSxNQUFNLENBQUM7QUFFZCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFHL0QsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ25ELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBV3BELE1BQU0sT0FBTyx1QkFBdUI7SUF3QmxDLFlBQ1UsSUFBa0IsRUFDbEIsSUFBdUIsRUFDdkIsYUFBMkIsRUFDM0IsWUFBeUIsRUFDekIsV0FBdUIsRUFDdkIsS0FBYTtRQUxiLFNBQUksR0FBSixJQUFJLENBQWM7UUFDbEIsU0FBSSxHQUFKLElBQUksQ0FBbUI7UUFDdkIsa0JBQWEsR0FBYixhQUFhLENBQWM7UUFDM0IsaUJBQVksR0FBWixZQUFZLENBQWE7UUFDekIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDdkIsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQXhCdkIsYUFBUSxHQUFHLFFBQVEsQ0FBQztRQUdaLHNCQUFpQixHQUFHLElBQUksR0FBRyxFQUNNO2FB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QVcsQ0FDVCxLQUFpQixFQUNqQixPQUEwQixFQUMxQixPQUEwQjtRQUUxQixNQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUMvQixNQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDO1lBQzdCLEtBQUssRUFBRSxLQUFLO1lBQ1osTUFBTSxFQUFFO2dCQUNOLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7Z0JBQzFCLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7YUFDM0I7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQUs7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQUs7UUFDZCxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDOztvSEFuUFUsdUJBQXVCO3dHQUF2Qix1QkFBdUIsNERDcENwQyxtbU1BK0lBOzJGRDNHYSx1QkFBdUI7a0JBTm5DLFNBQVM7K0JBQ0Usc0JBQXNCLG1CQUdmLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0lDaGFydENvbmZpZ30gZnJvbSAnLi4vbW9kZWwvaS1jaGFydC1jb25maWcnO1xuaW1wb3J0IHtDaGFydFNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2UvY2hhcnQuc2VydmljZSc7XG5pbXBvcnQge1xuICBhbmltYXRpb25GcmFtZVNjaGVkdWxlcixcbiAgY29tYmluZUxhdGVzdFdpdGgsXG4gIG1hcCxcbiAgT2JzZXJ2YWJsZSwgb2JzZXJ2ZU9uLFxuICBzaGFyZVJlcGxheSxcbiAgd2l0aExhdGVzdEZyb20sXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtBeGlzfSBmcm9tICcuLi9jb3JlL2F4aXMvYXhpcyc7XG5pbXBvcnQge0F4aXNPcmllbnRhdGlvbn0gZnJvbSAnLi4vbW9kZWwvZW51bS9heGlzLW9yaWVudGF0aW9uJztcbmltcG9ydCB7U2NhbGVTZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlL3NjYWxlLnNlcnZpY2UnO1xuaW1wb3J0IHtab29tU2VydmljZX0gZnJvbSAnLi4vc2VydmljZS96b29tLnNlcnZpY2UnO1xuaW1wb3J0IHtCcnVzaFR5cGV9IGZyb20gJy4uL21vZGVsL2VudW0vYnJ1c2gtdHlwZSc7XG5pbXBvcnQge1pvb21UeXBlfSBmcm9tICcuLi9tb2RlbC9lbnVtL3pvb20tdHlwZSc7XG5pbXBvcnQge3RldGFab25lRnVsbH0gZnJvbSAnQHRldGFjb20vbmctY29tcG9uZW50cyc7XG5pbXBvcnQge0lTY2FsZXNNYXB9IGZyb20gJy4uL21vZGVsL2ktc2NhbGVzLW1hcCc7XG5cbnR5cGUgT3Bwb3NpdGUgPSBib29sZWFuO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0ZXRhLWNoYXJ0LWNvbnRhaW5lcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGFydC1jb250YWluZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGFydC1jb250YWluZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIENoYXJ0Q29udGFpbmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBjb25maWc6IE9ic2VydmFibGU8SUNoYXJ0Q29uZmlnPjtcbiAgc2NhbGVzOiBPYnNlcnZhYmxlPElTY2FsZXNNYXA+O1xuICBzaXplOiBPYnNlcnZhYmxlPERPTVJlY3Q+O1xuICB2aXNpYmxlUmVjdDogT2JzZXJ2YWJsZTxhbnk+O1xuICBicnVzaFNjYWxlOiBPYnNlcnZhYmxlPGFueT47XG4gIHpvb21UeXBlID0gWm9vbVR5cGU7XG5cbiAgcHJpdmF0ZSBfb2JzZXJ2ZXI6IFJlc2l6ZU9ic2VydmVyO1xuICBwcml2YXRlIGZpbHRlclBvc2l0aW9uTWFwID0gbmV3IE1hcDxPcHBvc2l0ZSxcbiAgICAoYXhpczogQXhpcykgPT4gKF86IEF4aXMpID0+IGJvb2xlYW4+KClcbiAgICAuc2V0KFxuICAgICAgdHJ1ZSxcbiAgICAgIChheGlzKSA9PiAoXzogQXhpcykgPT5cbiAgICAgICAgXy5vcHRpb25zLm9wcG9zaXRlICYmIF8ub3B0aW9ucy52aXNpYmxlICYmIGF4aXMuaW5kZXggPD0gXy5pbmRleFxuICAgIClcbiAgICAuc2V0KFxuICAgICAgZmFsc2UsXG4gICAgICAoYXhpcykgPT4gKF86IEF4aXMpID0+XG4gICAgICAgIF8ub3B0aW9ucy5vcHBvc2l0ZSAhPT0gdHJ1ZSAmJlxuICAgICAgICBfLm9wdGlvbnMudmlzaWJsZSAmJlxuICAgICAgICBfLmluZGV4IDw9IGF4aXMuaW5kZXhcbiAgICApO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX3N2YzogQ2hhcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBfc2NhbGVTZXJ2aWNlOiBTY2FsZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfem9vbVNlcnZpY2U6IFpvb21TZXJ2aWNlLFxuICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBfem9uZTogTmdab25lXG4gICkge1xuICAgIHRoaXMuY29uZmlnID0gdGhpcy5fc3ZjLmNvbmZpZztcbiAgICB0aGlzLnNpemUgPSB0aGlzLl9zdmMuc2l6ZTtcblxuICAgIHRoaXMuc2NhbGVzID0gdGhpcy5fc2NhbGVTZXJ2aWNlLnNjYWxlcy5waXBlKFxuICAgICAgb2JzZXJ2ZU9uKGFuaW1hdGlvbkZyYW1lU2NoZWR1bGVyKSxcbiAgICAgIHRldGFab25lRnVsbCh0aGlzLl96b25lKSxcbiAgICAgIHNoYXJlUmVwbGF5KHtcbiAgICAgICAgYnVmZmVyU2l6ZTogMSxcbiAgICAgICAgcmVmQ291bnQ6IHRydWUsXG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLmJydXNoU2NhbGUgPSB0aGlzLl9zY2FsZVNlcnZpY2Uuc2NhbGVzLnBpcGUoXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLmNvbmZpZyksXG4gICAgICBtYXAoKGRhdGE6IFtJU2NhbGVzTWFwLCBJQ2hhcnRDb25maWddKSA9PiB7XG4gICAgICAgIGNvbnN0IFt7eCwgeX0sIGNvbmZpZ10gPSBkYXRhO1xuXG4gICAgICAgIHJldHVybiBjb25maWcuYnJ1c2g/LnR5cGUgPT09IEJydXNoVHlwZS54IHx8IGNvbmZpZz8uem9vbT8udHlwZSA9PT0gWm9vbVR5cGUueCA/IHguZ2V0KDApLnNjYWxlIDogeS5nZXQoMCkuc2NhbGU7XG4gICAgICB9KSxcbiAgICAgIHNoYXJlUmVwbGF5KHtcbiAgICAgICAgYnVmZmVyU2l6ZTogMSxcbiAgICAgICAgcmVmQ291bnQ6IHRydWUsXG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLnZpc2libGVSZWN0ID0gdGhpcy5zaXplLnBpcGUoXG4gICAgICBjb21iaW5lTGF0ZXN0V2l0aCh0aGlzLnNjYWxlcylcbiAgICApLnBpcGUoXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLmNvbmZpZyksXG4gICAgICBtYXAoXG4gICAgICAgIChcbiAgICAgICAgICBkYXRhOiBbW0RPTVJlY3QsIElTY2FsZXNNYXBdLCBJQ2hhcnRDb25maWddXG4gICAgICAgICkgPT4ge1xuICAgICAgICAgIGNvbnN0IFtbc2l6ZSwge3gsIHl9XSwgY29uZmlnXSA9IGRhdGE7XG4gICAgICAgICAgY29uc3QgeUF4ZXNBcnJheSA9IEFycmF5LmZyb20oeS52YWx1ZXMoKSk7XG4gICAgICAgICAgY29uc3QgeEF4ZXNBcnJheSA9IEFycmF5LmZyb20oeC52YWx1ZXMoKSk7XG4gICAgICAgICAgY29uc3QgbGVmdCA9IHlBeGVzQXJyYXlcbiAgICAgICAgICAgIC5maWx0ZXIoKF8pID0+IF8ub3B0aW9ucy5vcHBvc2l0ZSAhPT0gdHJ1ZSAmJiBfLm9wdGlvbnMudmlzaWJsZSlcbiAgICAgICAgICAgIC5yZWR1Y2UodGhpcy5zdW1TaXplLCAwKTtcblxuICAgICAgICAgIGNvbnN0IHJpZ2h0ID0geUF4ZXNBcnJheVxuICAgICAgICAgICAgLmZpbHRlcigoXykgPT4gXy5vcHRpb25zLm9wcG9zaXRlICYmIF8ub3B0aW9ucy52aXNpYmxlKVxuICAgICAgICAgICAgLnJlZHVjZSh0aGlzLnN1bVNpemUsIDApO1xuXG4gICAgICAgICAgY29uc3QgYm90dG9tID0geEF4ZXNBcnJheVxuICAgICAgICAgICAgLmZpbHRlcigoXykgPT4gXy5vcHRpb25zLm9wcG9zaXRlICE9PSB0cnVlICYmIF8ub3B0aW9ucy52aXNpYmxlKVxuICAgICAgICAgICAgLnJlZHVjZSh0aGlzLnN1bVNpemUsIDApO1xuXG4gICAgICAgICAgY29uc3QgdG9wID0geEF4ZXNBcnJheVxuICAgICAgICAgICAgLmZpbHRlcigoXykgPT4gXy5vcHRpb25zLm9wcG9zaXRlICYmIF8ub3B0aW9ucy52aXNpYmxlKVxuICAgICAgICAgICAgLnJlZHVjZSh0aGlzLnN1bVNpemUsIDApO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiBsZWZ0ICsgY29uZmlnLmJvdW5kcz8ubGVmdCxcbiAgICAgICAgICAgIHk6IHRvcCArIGNvbmZpZy5ib3VuZHM/LnRvcCxcbiAgICAgICAgICAgIHdpZHRoOlxuICAgICAgICAgICAgICBzaXplLndpZHRoIC1cbiAgICAgICAgICAgICAgbGVmdCAtXG4gICAgICAgICAgICAgIHJpZ2h0IC1cbiAgICAgICAgICAgICAgY29uZmlnLmJvdW5kcz8ubGVmdCAtXG4gICAgICAgICAgICAgIGNvbmZpZy5ib3VuZHM/LnJpZ2h0LFxuICAgICAgICAgICAgaGVpZ2h0OlxuICAgICAgICAgICAgICBzaXplLmhlaWdodCAtXG4gICAgICAgICAgICAgIHRvcCAtXG4gICAgICAgICAgICAgIGJvdHRvbSAtXG4gICAgICAgICAgICAgIGNvbmZpZy5ib3VuZHM/LnRvcCAtXG4gICAgICAgICAgICAgIGNvbmZpZy5ib3VuZHM/LmJvdHRvbSxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICApLFxuICAgICAgdGV0YVpvbmVGdWxsKHRoaXMuX3pvbmUpLFxuICAgICAgc2hhcmVSZXBsYXkoe1xuICAgICAgICBidWZmZXJTaXplOiAxLFxuICAgICAgICByZWZDb3VudDogdHJ1ZSxcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICB9XG5cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fb2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKGVudHJpZXM6IFJlc2l6ZU9ic2VydmVyRW50cnlbXSkgPT4ge1xuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICFBcnJheS5pc0FycmF5KGVudHJpZXMpIHx8XG4gICAgICAgICAgIWVudHJpZXMubGVuZ3RoIHx8XG4gICAgICAgICAgZW50cmllc1swXS5jb250ZW50UmVjdC53aWR0aCA8PSAwIHx8XG4gICAgICAgICAgZW50cmllc1swXS5jb250ZW50UmVjdC5oZWlnaHQgPD0gMFxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc3ZjLnNldFNpemUoZW50cmllc1swXS5jb250ZW50UmVjdCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICB0aGlzLl9vYnNlcnZlci5vYnNlcnZlKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9vYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gIH1cblxuICBwcml2YXRlIHN1bVNpemUgPSAoYWNjLCBjdXJyKSA9PiBhY2MgKyBjdXJyLnNlbGZTaXplO1xuXG4gIGdldFRyYW5zbGF0ZShheGlzPzogQXhpcywgc2l6ZT86IERPTVJlY3QpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLnNjYWxlcy5waXBlKFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5jb25maWcpLFxuICAgICAgbWFwKChkYXRhOiBbSVNjYWxlc01hcCwgSUNoYXJ0Q29uZmlnXSkgPT4ge1xuICAgICAgICBjb25zdCBbe3gsIHl9LCBjb25maWddID0gZGF0YTtcbiAgICAgICAgY29uc3QgeEF4ZXNBcnJheSA9IEFycmF5LmZyb20oeC52YWx1ZXMoKSk7XG4gICAgICAgIGNvbnN0IHlBeGVzQXJyYXkgPSBBcnJheS5mcm9tKHkudmFsdWVzKCkpO1xuXG4gICAgICAgIGNvbnN0IG9wcG9zaXRlRmlsdGVyID0gdGhpcy5maWx0ZXJQb3NpdGlvbk1hcC5nZXQodHJ1ZSk7XG4gICAgICAgIGNvbnN0IG5vbk9wcG9zaXRlRmlsdGVyID0gdGhpcy5maWx0ZXJQb3NpdGlvbk1hcC5nZXQoZmFsc2UpO1xuXG4gICAgICAgIGNvbnN0IG9wcG9zaXRlT2Zmc2V0WSA9IHlBeGVzQXJyYXkuZmlsdGVyKG9wcG9zaXRlRmlsdGVyKGF4aXMpKTtcbiAgICAgICAgY29uc3Qgbm9uT3Bwb3NpdGVPZmZzZXRZID0geUF4ZXNBcnJheS5maWx0ZXIobm9uT3Bwb3NpdGVGaWx0ZXIoYXhpcykpO1xuXG4gICAgICAgIGNvbnN0IG9wcG9zaXRlT2Zmc2V0WCA9IHhBeGVzQXJyYXkuZmlsdGVyKG9wcG9zaXRlRmlsdGVyKGF4aXMpKTtcbiAgICAgICAgY29uc3Qgbm9uT3Bwb3NpdGVPZmZzZXRYID0geEF4ZXNBcnJheS5maWx0ZXIobm9uT3Bwb3NpdGVGaWx0ZXIoYXhpcykpO1xuXG4gICAgICAgIGNvbnN0IG9wcG9zaXRlVHJhbnNsYXRlWSA9IG9wcG9zaXRlT2Zmc2V0WS5yZWR1Y2UoXG4gICAgICAgICAgKGFjYywgY3VycikgPT4gYWNjICsgY3Vyci5zZWxmU2l6ZSxcbiAgICAgICAgICBjb25maWcuYm91bmRzPy50b3BcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3Qgbm9uT3BwaXN0ZVRyYW5zbGF0ZVkgPSBub25PcHBvc2l0ZU9mZnNldFkucmVkdWNlKFxuICAgICAgICAgIChhY2MsIGN1cnIpID0+IGFjYyArIGN1cnIuc2VsZlNpemUsXG4gICAgICAgICAgY29uZmlnLmJvdW5kcz8ubGVmdFxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IG9wcG9zaXRlVHJhbnNsYXRlWCA9IG9wcG9zaXRlT2Zmc2V0WC5yZWR1Y2UoXG4gICAgICAgICAgKGFjYywgY3VycikgPT4gYWNjICsgY3Vyci5zZWxmU2l6ZSxcbiAgICAgICAgICBjb25maWcuYm91bmRzPy5yaWdodFxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IG5vbk9wcGlzdGVUcmFuc2xhdGVYID0gbm9uT3Bwb3NpdGVPZmZzZXRYLnJlZHVjZShcbiAgICAgICAgICAoYWNjLCBjdXJyKSA9PiBhY2MgKyBjdXJyLnNlbGZTaXplLFxuICAgICAgICAgIGNvbmZpZy5ib3VuZHM/LmJvdHRvbVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGxlZnQgPSB5QXhlc0FycmF5XG4gICAgICAgICAgLmZpbHRlcigoXykgPT4gXy5vcHRpb25zLnZpc2libGUgJiYgXy5vcHRpb25zLm9wcG9zaXRlICE9PSB0cnVlKVxuICAgICAgICAgIC5yZWR1Y2UoKGFjYywgY3VycikgPT4gYWNjICsgY3Vyci5zZWxmU2l6ZSwgY29uZmlnLmJvdW5kcz8ubGVmdCk7XG5cbiAgICAgICAgY29uc3QgdG9wID0geEF4ZXNBcnJheVxuICAgICAgICAgIC5maWx0ZXIoKF8pID0+IF8ub3B0aW9ucy52aXNpYmxlICYmIF8ub3B0aW9ucy5vcHBvc2l0ZSA9PT0gdHJ1ZSlcbiAgICAgICAgICAucmVkdWNlKChhY2MsIGN1cnIpID0+IGFjYyArIGN1cnIuc2VsZlNpemUsIGNvbmZpZy5ib3VuZHM/LnRvcCk7XG5cbiAgICAgICAgaWYgKGF4aXMub3JpZW50YXRpb24gPT09IEF4aXNPcmllbnRhdGlvbi54KSB7XG4gICAgICAgICAgcmV0dXJuIGB0cmFuc2xhdGUoJHtsZWZ0fSwgJHtcbiAgICAgICAgICAgIGF4aXMub3B0aW9ucy5vcHBvc2l0ZVxuICAgICAgICAgICAgICA/IG9wcG9zaXRlVHJhbnNsYXRlWFxuICAgICAgICAgICAgICA6IHNpemUuaGVpZ2h0IC0gbm9uT3BwaXN0ZVRyYW5zbGF0ZVhcbiAgICAgICAgICB9KWA7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYXhpcy5vcmllbnRhdGlvbiA9PT0gQXhpc09yaWVudGF0aW9uLnkpIHtcbiAgICAgICAgICByZXR1cm4gYHRyYW5zbGF0ZSgke1xuICAgICAgICAgICAgYXhpcy5vcHRpb25zLm9wcG9zaXRlXG4gICAgICAgICAgICAgID8gc2l6ZS53aWR0aCAtIG9wcG9zaXRlVHJhbnNsYXRlWVxuICAgICAgICAgICAgICA6IG5vbk9wcGlzdGVUcmFuc2xhdGVZXG4gICAgICAgICAgfSwgJHt0b3B9KWA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gJ3RyYW5zbGF0ZSgwLCAwKSc7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBpZGVudGlmeShpbmRleCwgaXRlbSkge1xuICAgIHJldHVybiBpdGVtLnZhbHVlLmluZGV4O1xuICB9XG5cbiAgY2xpY2soXG4gICAgZXZlbnQ6IFBvaW50ZXJFdmVudCxcbiAgICB4U2NhbGVzOiBNYXA8bnVtYmVyLCBBeGlzPixcbiAgICB5U2NhbGVzOiBNYXA8bnVtYmVyLCBBeGlzPlxuICApIHtcbiAgICBjb25zdCB4ID0geFNjYWxlcy5nZXQoMCkuc2NhbGU7XG4gICAgY29uc3QgeSA9IHlTY2FsZXMuZ2V0KDApLnNjYWxlO1xuICAgIHRoaXMuX3N2Yy5lbWl0Q2hhcnRDbGljayh7XG4gICAgICBldmVudDogZXZlbnQsXG4gICAgICB0YXJnZXQ6IHtcbiAgICAgICAgeDogeC5pbnZlcnQoZXZlbnQub2Zmc2V0WCksXG4gICAgICAgIHk6IHkuaW52ZXJ0KGV2ZW50Lm9mZnNldFkpLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGNvbnRleHRNZW51KFxuICAgIGV2ZW50OiBNb3VzZUV2ZW50LFxuICAgIHhTY2FsZXM6IE1hcDxudW1iZXIsIEF4aXM+LFxuICAgIHlTY2FsZXM6IE1hcDxudW1iZXIsIEF4aXM+XG4gICkge1xuICAgIGNvbnN0IHggPSB4U2NhbGVzLmdldCgwKS5zY2FsZTtcbiAgICBjb25zdCB5ID0geVNjYWxlcy5nZXQoMCkuc2NhbGU7XG4gICAgdGhpcy5fc3ZjLmVtaXRDaGFydENvbnRleHRNZW51KHtcbiAgICAgIGV2ZW50OiBldmVudCxcbiAgICAgIHRhcmdldDoge1xuICAgICAgICB4OiB4LmludmVydChldmVudC5vZmZzZXRYKSxcbiAgICAgICAgeTogeS5pbnZlcnQoZXZlbnQub2Zmc2V0WSksXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgbW91c2VNb3ZlKGV2ZW50KSB7XG4gICAgdGhpcy5fc3ZjLnNldFBvaW50ZXJNb3ZlKGV2ZW50KTtcbiAgfVxuXG4gIG1vdXNlTGVhdmUoZXZlbnQpIHtcbiAgICB0aGlzLl9zdmMuc2V0UG9pbnRlck1vdmUoZXZlbnQpO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwie1xuICBzaXplOiBzaXplIHwgYXN5bmMsXG4gIGNvbmZpZzogY29uZmlnIHwgYXN5bmMsXG4gIHNjYWxlczogc2NhbGVzIHwgYXN5bmMsXG4gIHZpc2libGVSZWN0OiB2aXNpYmxlUmVjdCB8IGFzeW5jLFxuICBicnVzaFNjYWxlOiBicnVzaFNjYWxlIHwgYXN5bmNcbn0gYXMgZGF0YVwiIHhtbG5zOnN2Zz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkvaHRtbFwiPlxuICA8dGV0YS10b29sdGlwICpuZ0lmPVwiZGF0YS5jb25maWc/LnRvb2x0aXA/LmVuYWJsZVwiXG4gICAgICAgICAgICAgICAgW3NpemVdPVwiZGF0YS5zaXplXCJcbiAgICAgICAgICAgICAgICBbY29uZmlnXT1cImRhdGEuY29uZmlnXCI+PC90ZXRhLXRvb2x0aXA+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRhLnZpc2libGVSZWN0Py53aWR0aCA+IDAgJiYgZGF0YS52aXNpYmxlUmVjdD8uaGVpZ2h0ID4gMCAmJiBkYXRhLnNjYWxlcy54ICYmIGRhdGEuc2NhbGVzLnlcIj5cbiAgICA8c3ZnIGhlaWdodD1cIjEwMCVcIiB3aWR0aD1cIjEwMCVcIiBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlXCI+XG4gICAgICA8ZyBjbGFzcz1cInktYXhpcy1jb250YWluZXJcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkYXRhLnNjYWxlcy55IHwga2V5dmFsdWU7IHRyYWNrQnk6IGlkZW50aWZ5XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0udmFsdWUub3B0aW9ucy52aXNpYmxlXCI+XG4gICAgICAgICAgICA8Z1xuICAgICAgICAgICAgICB0ZXRhLXktYXhpc1xuICAgICAgICAgICAgICBbYXhpc109XCJpdGVtLnZhbHVlXCJcbiAgICAgICAgICAgICAgW3NpemVdPVwiZGF0YS52aXNpYmxlUmVjdFwiXG4gICAgICAgICAgICAgIFthdHRyLnRyYW5zZm9ybV09XCJnZXRUcmFuc2xhdGUoaXRlbS52YWx1ZSwgZGF0YS5zaXplKSB8IGFzeW5jXCI+PC9nPlxuICAgICAgICAgICAgPHJlY3RcbiAgICAgICAgICAgICAgdGV0YVpvb21hYmxlXG4gICAgICAgICAgICAgIGZpbGwtb3BhY2l0eT1cIjBcIlxuICAgICAgICAgICAgICBbYnJ1c2hTY2FsZV09XCJkYXRhLmJydXNoU2NhbGVcIlxuICAgICAgICAgICAgICBbc2NhbGVdPVwiZGF0YS5zY2FsZXMueS5nZXQoaXRlbS5rZXkpLnNjYWxlXCJcbiAgICAgICAgICAgICAgW2F4aXNdPVwiaXRlbS52YWx1ZVwiXG4gICAgICAgICAgICAgIFtjb25maWddPVwiZGF0YS5jb25maWdcIlxuICAgICAgICAgICAgICBbc2l6ZV09XCJkYXRhLnZpc2libGVSZWN0XCJcbiAgICAgICAgICAgICAgW2F0dHIueF09XCJpdGVtLnZhbHVlLm9wdGlvbnMub3Bwb3NpdGUgPyAwIDogLWl0ZW0udmFsdWUuc2VsZlNpemVcIlxuICAgICAgICAgICAgICBbYXR0ci55XT1cIjBcIlxuICAgICAgICAgICAgICBbYXR0ci5oZWlnaHRdPVwiZGF0YS52aXNpYmxlUmVjdC5oZWlnaHRcIlxuICAgICAgICAgICAgICBbYXR0ci53aWR0aF09XCJpdGVtLnZhbHVlLnNlbGZTaXplXCJcbiAgICAgICAgICAgICAgW2F0dHIudHJhbnNmb3JtXT1cImdldFRyYW5zbGF0ZShpdGVtLnZhbHVlLCBkYXRhLnNpemUpIHwgYXN5bmNcIj48L3JlY3Q+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2c+XG4gICAgICA8ZyBjbGFzcz1cIngtYXhpcy1jb250YWluZXJcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkYXRhLnNjYWxlcy54IHwga2V5dmFsdWU7IHRyYWNrQnk6IGlkZW50aWZ5XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0udmFsdWUub3B0aW9ucy52aXNpYmxlICYmIGRhdGEuc2NhbGVzLnggJiYgZGF0YS5zY2FsZXMueVwiPlxuICAgICAgICAgICAgPGdcbiAgICAgICAgICAgICAgdGV0YS14LWF4aXNcbiAgICAgICAgICAgICAgW2F4aXNdPVwiaXRlbS52YWx1ZVwiXG4gICAgICAgICAgICAgIFtzaXplXT1cImRhdGEudmlzaWJsZVJlY3RcIlxuICAgICAgICAgICAgICBbYXR0ci50cmFuc2Zvcm1dPVwiZ2V0VHJhbnNsYXRlKGl0ZW0udmFsdWUsIGRhdGEuc2l6ZSkgfCBhc3luY1wiPjwvZz5cbiAgICAgICAgICAgIDxyZWN0XG4gICAgICAgICAgICAgIHRldGFab29tYWJsZVxuICAgICAgICAgICAgICBmaWxsLW9wYWNpdHk9XCIwXCJcbiAgICAgICAgICAgICAgW2JydXNoU2NhbGVdPVwiZGF0YS5icnVzaFNjYWxlXCJcbiAgICAgICAgICAgICAgW3NjYWxlXT1cImRhdGEuc2NhbGVzLnguZ2V0KGl0ZW0ua2V5KS5zY2FsZVwiXG4gICAgICAgICAgICAgIFtheGlzXT1cIml0ZW0udmFsdWVcIlxuICAgICAgICAgICAgICBbY29uZmlnXT1cImRhdGEuY29uZmlnXCJcbiAgICAgICAgICAgICAgW3NpemVdPVwiZGF0YS52aXNpYmxlUmVjdFwiXG4gICAgICAgICAgICAgIFthdHRyLnhdPVwiMFwiXG4gICAgICAgICAgICAgIFthdHRyLnldPVwiaXRlbS52YWx1ZS5vcHRpb25zLm9wcG9zaXRlID8gLWl0ZW0udmFsdWUuc2VsZlNpemUgOiAwXCJcbiAgICAgICAgICAgICAgW2F0dHIud2lkdGhdPVwiZGF0YS52aXNpYmxlUmVjdC53aWR0aFwiXG4gICAgICAgICAgICAgIFthdHRyLmhlaWdodF09XCJpdGVtLnZhbHVlLnNlbGZTaXplXCJcbiAgICAgICAgICAgICAgW2F0dHIudHJhbnNmb3JtXT1cImdldFRyYW5zbGF0ZShpdGVtLnZhbHVlLCBkYXRhLnNpemUpIHwgYXN5bmNcIj48L3JlY3Q+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9nPlxuICAgIDwvc3ZnPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGEudmlzaWJsZVJlY3Q/LndpZHRoID4gMCAmJiBkYXRhLnZpc2libGVSZWN0Py5oZWlnaHQgPiAwICYmIGRhdGEuc2NhbGVzLnggJiYgZGF0YS5zY2FsZXMueVwiPlxuICAgIDxzdmdcbiAgICAgIHRldGFCcnVzaGFibGVcbiAgICAgIHRldGFab29tYWJsZVxuICAgICAgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZVwiXG4gICAgICBbc2l6ZV09XCJkYXRhLnZpc2libGVSZWN0XCJcbiAgICAgIFticnVzaFNjYWxlXT1cImRhdGEuYnJ1c2hTY2FsZVwiXG4gICAgICBbc2NhbGVdPVwiZGF0YS5icnVzaFNjYWxlXCJcbiAgICAgIFtjb25maWddPVwiZGF0YS5jb25maWdcIlxuICAgICAgW2F4aXNdPVwiZGF0YS5jb25maWc/Lnpvb20/LnR5cGUgPT09IHpvb21UeXBlLnggPyBkYXRhLnNjYWxlcy54LmdldCgwKSA6IGRhdGEuc2NhbGVzLnkuZ2V0KDApXCJcbiAgICAgIFthdHRyLndpZHRoXT1cImRhdGEudmlzaWJsZVJlY3Qud2lkdGhcIlxuICAgICAgW2F0dHIuaGVpZ2h0XT1cImRhdGEudmlzaWJsZVJlY3QuaGVpZ2h0XCJcbiAgICAgIFthdHRyLnZpZXdCb3hdPVwiJzAgMCAnICsgZGF0YS52aXNpYmxlUmVjdC53aWR0aCArICcgJyArIGRhdGEudmlzaWJsZVJlY3QuaGVpZ2h0XCJcbiAgICAgIFtzdHlsZS50cmFuc2Zvcm1dPVwiJ3RyYW5zbGF0ZSgnKyBkYXRhLnZpc2libGVSZWN0LnggKydweCwgJysgZGF0YS52aXNpYmxlUmVjdC55ICsncHgpJ1wiXG4gICAgICAoY29udGV4dG1lbnUpPVwiY29udGV4dE1lbnUoJGV2ZW50LCBkYXRhLnNjYWxlcy54LCBkYXRhLnNjYWxlcy55KVwiXG4gICAgICAoY2xpY2spPVwiY2xpY2soJGV2ZW50LCBkYXRhLnNjYWxlcy54LCBkYXRhLnNjYWxlcy55KVwiXG4gICAgICAobW91c2VsZWF2ZSk9XCJtb3VzZUxlYXZlKCRldmVudClcIlxuICAgICAgKG1vdXNlbW92ZSk9XCJtb3VzZU1vdmUoJGV2ZW50KVwiPlxuXG4gICAgICA8ZyBjbGFzcz1cImdyaWRsaW5lc1wiXG4gICAgICAgICB0ZXRhLWdyaWRsaW5lc1xuICAgICAgICAgKm5nSWY9XCJkYXRhLmNvbmZpZy5ncmlkTGluZXM/LmVuYWJsZSAhPT0gZmFsc2VcIlxuICAgICAgICAgW3NpemVdPVwiZGF0YS5zaXplXCI+PC9nPlxuXG4gICAgICA8ZyBjbGFzcz1cIngtYXhpcy1wbG90YmFuZC1jb250YWluZXJcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYXhpcyBvZiBkYXRhLmNvbmZpZy54QXhpczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgIDxnIHRldGEtcGxvdC1iYW5kICpuZ0Zvcj1cImxldCBwbG90QmFuZCBvZiBheGlzLnBsb3RCYW5kc1wiXG4gICAgICAgICAgICAgW3Bsb3RCYW5kXT1cInBsb3RCYW5kXCJcbiAgICAgICAgICAgICBbc2NhbGVdPVwiZGF0YS5zY2FsZXMueC5nZXQoaSkuc2NhbGVcIlxuICAgICAgICAgICAgIFtzaXplXT1cImRhdGEuc2l6ZVwiXG4gICAgICAgICAgICAgW2F4aXNdPVwiZGF0YS5zY2FsZXMueC5nZXQoaSlcIj48L2c+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9nPlxuICAgICAgPGcgY2xhc3M9XCJ5LWF4aXMtcGxvdGJhbmQtY29udGFpbmVyXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGF4aXMgb2YgZGF0YS5jb25maWcueUF4aXM7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICA8ZyB0ZXRhLXBsb3QtYmFuZCAqbmdGb3I9XCJsZXQgcGxvdEJhbmQgb2YgYXhpcy5wbG90QmFuZHNcIlxuICAgICAgICAgICAgIFtwbG90QmFuZF09XCJwbG90QmFuZFwiXG4gICAgICAgICAgICAgW3NjYWxlXT1cImRhdGEuc2NhbGVzLnkuZ2V0KGkpLnNjYWxlXCJcbiAgICAgICAgICAgICBbc2l6ZV09XCJkYXRhLnNpemVcIlxuICAgICAgICAgICAgIFtheGlzXT1cImRhdGEuc2NhbGVzLnkuZ2V0KGkpXCI+PC9nPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZz5cbiAgICAgIDxnIGNsYXNzPVwieC1heGlzLXBsb3RsaW5lLWNvbnRhaW5lclwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBheGlzIG9mIGRhdGEuY29uZmlnLnhBeGlzOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgPGcgdGV0YS1wbG90LWxpbmUgKm5nRm9yPVwibGV0IHBsb3RMaW5lIG9mIGF4aXMucGxvdExpbmVzXCJcbiAgICAgICAgICAgICBbcGxvdExpbmVdPVwicGxvdExpbmVcIlxuICAgICAgICAgICAgIFtzY2FsZV09XCJkYXRhLnNjYWxlcy54LmdldChpKS5zY2FsZVwiXG4gICAgICAgICAgICAgW3NpemVdPVwiZGF0YS5zaXplXCJcbiAgICAgICAgICAgICBbYXhpc109XCJkYXRhLnNjYWxlcy54LmdldChpKVwiPjwvZz5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2c+XG4gICAgICA8ZyBjbGFzcz1cInktYXhpcy1wbG90bGluZS1jb250YWluZXJcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYXhpcyBvZiBkYXRhLmNvbmZpZy55QXhpczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgIDxnIHRldGEtcGxvdC1saW5lICpuZ0Zvcj1cImxldCBwbG90TGluZSBvZiBheGlzLnBsb3RMaW5lc1wiXG4gICAgICAgICAgICAgW3Bsb3RMaW5lXT1cInBsb3RMaW5lXCJcbiAgICAgICAgICAgICBbc2NhbGVdPVwiZGF0YS5zY2FsZXMueS5nZXQoaSkuc2NhbGVcIlxuICAgICAgICAgICAgIFtzaXplXT1cImRhdGEuc2l6ZVwiXG4gICAgICAgICAgICAgW2F4aXNdPVwiZGF0YS5zY2FsZXMueC5nZXQoaSlcIj48L2c+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9nPlxuICAgICAgPGcgY2xhc3M9XCJzZXJpZXMtY29udGFpbmVyXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHNlcmllcyBvZiBkYXRhLmNvbmZpZy5zZXJpZXNcIj5cbiAgICAgICAgICA8ZyB0ZXRhLXNlcmllcy1ob3N0XG4gICAgICAgICAgICAgKm5nSWY9XCJzZXJpZXMudmlzaWJsZVwiXG4gICAgICAgICAgICAgW2NvbmZpZ109XCJkYXRhLmNvbmZpZ1wiXG4gICAgICAgICAgICAgW3Nlcmllc109XCJzZXJpZXNcIj48L2c+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9nPlxuICAgICAgPGcgY2xhc3M9XCJhbm5vdGF0aW9uc1wiPlxuICAgICAgICA8ZyB0ZXRhLWFubm90YXRpb25cbiAgICAgICAgICAgKm5nRm9yPVwibGV0IGFubm90YXRpb24gb2YgZGF0YS5jb25maWcuYW5ub3RhdGlvbnNcIlxuICAgICAgICAgICBbYW5ub3RhdGlvbl09XCJhbm5vdGF0aW9uXCI+PC9nPlxuICAgICAgPC9nPlxuICAgICAgPGcgY2xhc3M9XCJjcm9zc2hhaXJcIiAqbmdJZj1cImRhdGEuY29uZmlnLnRvb2x0aXA/LnNob3dDcm9zc2hhaXJcIj5cbiAgICAgICAgPGcgdGV0YS1jcm9zc2hhaXIgW3NpemVdPVwiZGF0YS52aXNpYmxlUmVjdFwiPjwvZz5cbiAgICAgIDwvZz5cbiAgICA8L3N2Zz5cblxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuIl19
|
|
@@ -24,10 +24,10 @@ export class GridlinesComponent {
|
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
26
|
GridlinesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: GridlinesComponent, deps: [{ token: i1.ScaleService }, { token: i2.ChartService }], target: i0.ɵɵFactoryTarget.Component });
|
|
27
|
-
GridlinesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: GridlinesComponent, selector: "[teta-gridlines]", inputs: { size: "size" }, ngImport: i0, template: "<ng-container *ngIf=\"{\n xValues: tickXValues | async,\n yValues: tickYValues | async,\n x: x | async,\n y: y | async,\n config: config | async\n} as data\">\n <ng-container *ngIf=\"data.config.gridLines?.showY !== false\">\n <ng-container *ngFor=\"let tick of data.yValues\">\n <svg:line [attr.x1]=\"0\"\n [attr.y1]=\"data.y(tick)\"\n [attr.x2]=\"size?.width\"\n [attr.y2]=\"data.y(tick)\"></svg:line>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"data.config.gridLines?.showX !== false\">\n <ng-container *ngFor=\"let tick of data.xValues\">\n <svg:line [attr.x1]=\"data.x(tick)\"\n [attr.y1]=\"0\"\n [attr.x2]=\"data.x(tick)\"\n [attr.y2]=\"size?.height\"></svg:line>\n </ng-container>\n </ng-container>\n\n</ng-container>\n\n\n", styles: [":host{shape-rendering:crispEdges}:host line{stroke:var(--color-text-
|
|
27
|
+
GridlinesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: GridlinesComponent, selector: "[teta-gridlines]", inputs: { size: "size" }, ngImport: i0, template: "<ng-container *ngIf=\"{\n xValues: tickXValues | async,\n yValues: tickYValues | async,\n x: x | async,\n y: y | async,\n config: config | async\n} as data\">\n <ng-container *ngIf=\"data.config.gridLines?.showY !== false\">\n <ng-container *ngFor=\"let tick of data.yValues\">\n <svg:line [attr.x1]=\"0\"\n [attr.y1]=\"data.y(tick)\"\n [attr.x2]=\"size?.width\"\n [attr.y2]=\"data.y(tick)\"></svg:line>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"data.config.gridLines?.showX !== false\">\n <ng-container *ngFor=\"let tick of data.xValues\">\n <svg:line [attr.x1]=\"data.x(tick)\"\n [attr.y1]=\"0\"\n [attr.x2]=\"data.x(tick)\"\n [attr.y2]=\"size?.height\"></svg:line>\n </ng-container>\n </ng-container>\n\n</ng-container>\n\n\n", styles: [":host{shape-rendering:crispEdges}:host line{stroke:var(--color-text-5)}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
28
28
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: GridlinesComponent, decorators: [{
|
|
29
29
|
type: Component,
|
|
30
|
-
args: [{ selector: '[teta-gridlines]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"{\n xValues: tickXValues | async,\n yValues: tickYValues | async,\n x: x | async,\n y: y | async,\n config: config | async\n} as data\">\n <ng-container *ngIf=\"data.config.gridLines?.showY !== false\">\n <ng-container *ngFor=\"let tick of data.yValues\">\n <svg:line [attr.x1]=\"0\"\n [attr.y1]=\"data.y(tick)\"\n [attr.x2]=\"size?.width\"\n [attr.y2]=\"data.y(tick)\"></svg:line>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"data.config.gridLines?.showX !== false\">\n <ng-container *ngFor=\"let tick of data.xValues\">\n <svg:line [attr.x1]=\"data.x(tick)\"\n [attr.y1]=\"0\"\n [attr.x2]=\"data.x(tick)\"\n [attr.y2]=\"size?.height\"></svg:line>\n </ng-container>\n </ng-container>\n\n</ng-container>\n\n\n", styles: [":host{shape-rendering:crispEdges}:host line{stroke:var(--color-text-
|
|
30
|
+
args: [{ selector: '[teta-gridlines]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"{\n xValues: tickXValues | async,\n yValues: tickYValues | async,\n x: x | async,\n y: y | async,\n config: config | async\n} as data\">\n <ng-container *ngIf=\"data.config.gridLines?.showY !== false\">\n <ng-container *ngFor=\"let tick of data.yValues\">\n <svg:line [attr.x1]=\"0\"\n [attr.y1]=\"data.y(tick)\"\n [attr.x2]=\"size?.width\"\n [attr.y2]=\"data.y(tick)\"></svg:line>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"data.config.gridLines?.showX !== false\">\n <ng-container *ngFor=\"let tick of data.xValues\">\n <svg:line [attr.x1]=\"data.x(tick)\"\n [attr.y1]=\"0\"\n [attr.x2]=\"data.x(tick)\"\n [attr.y2]=\"size?.height\"></svg:line>\n </ng-container>\n </ng-container>\n\n</ng-container>\n\n\n", styles: [":host{shape-rendering:crispEdges}:host line{stroke:var(--color-text-5)}\n"] }]
|
|
31
31
|
}], ctorParameters: function () { return [{ type: i1.ScaleService }, { type: i2.ChartService }]; }, propDecorators: { size: [{
|
|
32
32
|
type: Input
|
|
33
33
|
}] } });
|
|
@@ -3,17 +3,17 @@ import { maxIndex } from 'd3-array';
|
|
|
3
3
|
import { getTextWidth } from '../../utils/public-api';
|
|
4
4
|
export class AxisSizeBuilder {
|
|
5
5
|
constructor() {
|
|
6
|
-
this.titlePadding =
|
|
6
|
+
this.titlePadding = 11;
|
|
7
7
|
this.basePadding = 16;
|
|
8
8
|
this.backupRatio = 0.58;
|
|
9
9
|
}
|
|
10
10
|
build(settings) {
|
|
11
11
|
let finalPadding = this.basePadding;
|
|
12
12
|
if (settings.orientation === AxisOrientation.y) {
|
|
13
|
-
const formatter = settings.defaultFormatter();
|
|
13
|
+
const formatter = settings.options.tickFormat || settings.defaultFormatter();
|
|
14
14
|
finalPadding += settings.options.title ? this.titlePadding : 0;
|
|
15
15
|
const scale = settings.defaultScale();
|
|
16
|
-
const ticks = scale().domain(settings.extremes).ticks();
|
|
16
|
+
const ticks = scale().domain(settings.extremes).ticks(20);
|
|
17
17
|
const maxElementLengthIndex = maxIndex(ticks, (_) => formatter(_).length);
|
|
18
18
|
finalPadding += getTextWidth(formatter(ticks[maxElementLengthIndex]), this.backupRatio);
|
|
19
19
|
}
|
|
@@ -23,4 +23,4 @@ export class AxisSizeBuilder {
|
|
|
23
23
|
return finalPadding;
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXhpcy1zaXplLWJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2hhcnQvY29yZS9heGlzL2J1aWxkZXJzL2F4aXMtc2l6ZS1idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUd0RCxNQUFNLE9BQU8sZUFBZTtJQUE1QjtRQUNVLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLGdCQUFXLEdBQUcsSUFBSSxDQUFDO0lBK0I3QixDQUFDO0lBN0JDLEtBQUssQ0FBQyxRQUFjO1FBQ2xCLElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFFcEMsSUFBSSxRQUFRLENBQUMsV0FBVyxLQUFLLGVBQWUsQ0FBQyxDQUFDLEVBQUU7WUFDOUMsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFVLElBQUksUUFBUSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFFN0UsWUFBWSxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFL0QsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RDLE1BQU0sS0FBSyxHQUFHLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBRTFELE1BQU0scUJBQXFCLEdBQUcsUUFBUSxDQUNwQyxLQUFLLEVBQ0wsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQzNCLENBQUM7WUFHRixZQUFZLElBQUksWUFBWSxDQUMxQixTQUFTLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUMsRUFDdkMsSUFBSSxDQUFDLFdBQVcsQ0FDakIsQ0FBQztTQUNIO1FBRUQsSUFBSSxRQUFRLENBQUMsV0FBVyxLQUFLLGVBQWUsQ0FBQyxDQUFDLEVBQUU7WUFDOUMsWUFBWSxJQUFJLFlBQVksR0FBRyxFQUFFLENBQUM7U0FDbkM7UUFFRCxPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBeGlzIH0gZnJvbSAnLi4vYXhpcyc7XG5pbXBvcnQgeyBBeGlzT3JpZW50YXRpb24gfSBmcm9tICcuLi8uLi8uLi9tb2RlbC9lbnVtL2F4aXMtb3JpZW50YXRpb24nO1xuaW1wb3J0IHsgbWF4SW5kZXggfSBmcm9tICdkMy1hcnJheSc7XG5pbXBvcnQgeyBnZXRUZXh0V2lkdGggfSBmcm9tICcuLi8uLi91dGlscy9wdWJsaWMtYXBpJztcbmltcG9ydCB7IElCdWlsZGVyIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWwvaS1idWlsZGVyJztcblxuZXhwb3J0IGNsYXNzIEF4aXNTaXplQnVpbGRlciBpbXBsZW1lbnRzIElCdWlsZGVyPEF4aXMsIG51bWJlcj4ge1xuICBwcml2YXRlIHRpdGxlUGFkZGluZyA9IDExO1xuICBwcml2YXRlIGJhc2VQYWRkaW5nID0gMTY7XG4gIHByaXZhdGUgYmFja3VwUmF0aW8gPSAwLjU4O1xuXG4gIGJ1aWxkKHNldHRpbmdzOiBBeGlzKTogbnVtYmVyIHtcbiAgICBsZXQgZmluYWxQYWRkaW5nID0gdGhpcy5iYXNlUGFkZGluZztcblxuICAgIGlmIChzZXR0aW5ncy5vcmllbnRhdGlvbiA9PT0gQXhpc09yaWVudGF0aW9uLnkpIHtcbiAgICAgIGNvbnN0IGZvcm1hdHRlciA9IHNldHRpbmdzLm9wdGlvbnMudGlja0Zvcm1hdCB8fCBzZXR0aW5ncy5kZWZhdWx0Rm9ybWF0dGVyKCk7XG5cbiAgICAgIGZpbmFsUGFkZGluZyArPSBzZXR0aW5ncy5vcHRpb25zLnRpdGxlID8gdGhpcy50aXRsZVBhZGRpbmcgOiAwO1xuXG4gICAgICBjb25zdCBzY2FsZSA9IHNldHRpbmdzLmRlZmF1bHRTY2FsZSgpO1xuICAgICAgY29uc3QgdGlja3MgPSBzY2FsZSgpLmRvbWFpbihzZXR0aW5ncy5leHRyZW1lcykudGlja3MoMjApO1xuXG4gICAgICBjb25zdCBtYXhFbGVtZW50TGVuZ3RoSW5kZXggPSBtYXhJbmRleChcbiAgICAgICAgdGlja3MsXG4gICAgICAgIChfKSA9PiBmb3JtYXR0ZXIoXykubGVuZ3RoXG4gICAgICApO1xuXG5cbiAgICAgIGZpbmFsUGFkZGluZyArPSBnZXRUZXh0V2lkdGgoXG4gICAgICAgIGZvcm1hdHRlcih0aWNrc1ttYXhFbGVtZW50TGVuZ3RoSW5kZXhdKSxcbiAgICAgICAgdGhpcy5iYWNrdXBSYXRpb1xuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoc2V0dGluZ3Mub3JpZW50YXRpb24gPT09IEF4aXNPcmllbnRhdGlvbi54KSB7XG4gICAgICBmaW5hbFBhZGRpbmcgKz0gZmluYWxQYWRkaW5nICsgMjA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpbmFsUGFkZGluZztcbiAgfVxufVxuIl19
|
|
@@ -130,10 +130,10 @@ export class ZoomableDirective {
|
|
|
130
130
|
let transform = zoomIdentity.scale(scale);
|
|
131
131
|
if (this.config?.zoom?.type === ZoomType.x) {
|
|
132
132
|
if (this.config.xAxis[0]?.inverted) {
|
|
133
|
-
transform = transform.translate(
|
|
133
|
+
transform = transform.translate(this.brushScale(-m.message.domain[1]), 0);
|
|
134
134
|
}
|
|
135
135
|
else {
|
|
136
|
-
transform = transform.translate(this.brushScale(
|
|
136
|
+
transform = transform.translate(-this.brushScale(m.message.domain[0]), 0);
|
|
137
137
|
}
|
|
138
138
|
}
|
|
139
139
|
if (this.config?.zoom?.type === ZoomType.y) {
|
|
@@ -300,4 +300,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
|
|
|
300
300
|
type: HostBinding,
|
|
301
301
|
args: ['class.crosshair']
|
|
302
302
|
}] } });
|
|
303
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9vbWFibGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L2RpcmVjdGl2ZXMvem9vbWFibGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsV0FBVyxFQUNYLEtBQUssR0FJTixNQUFNLGVBQWUsQ0FBQztBQUl2QixPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUN6QixPQUFPLEVBQTRCLFlBQVksRUFBQyxNQUFNLElBQUksQ0FBQztBQUMzRCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDakQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQy9ELE9BQU8sRUFBa0MsV0FBVyxHQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0YsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBRW5ELE9BQU8sRUFBZSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUUxRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUNsRSxPQUFPLFVBQVUsTUFBTSxhQUFhLENBQUM7Ozs7O0FBS3JDLE1BQU0sT0FBTyxpQkFBaUI7SUFrQjVCLFlBQ1UsVUFBc0IsRUFDdEIsV0FBd0IsRUFDeEIsZ0JBQWtDLEVBQ2xDLFlBQTBCLEVBQzFCLElBQVk7UUFKWixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQWhCaUIsYUFBUSxHQUFHLEtBQUssQ0FB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LFFBQVEsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO29CQUN6QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO29CQUVuQixJQUFJLEdBQUcsT0FBTyxDQUFDO2dCQUNqQixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDVCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUwsQ0FBQzs7OEdBelhVLGlCQUFpQjtrR0FBakIsaUJBQWlCOzJGQUFqQixpQkFBaUI7a0JBSDdCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtpQkFDM0I7ME1BRVUsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRWlDLFFBQVE7c0JBQTlDLFdBQVc7dUJBQUMsZ0JBQWdCO2dCQUNXLFNBQVM7c0JBQWhELFdBQVc7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Wm9vbVNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2Uvem9vbS5zZXJ2aWNlJztcbmltcG9ydCB7SUNoYXJ0Q29uZmlnfSBmcm9tICcuLi9tb2RlbC9pLWNoYXJ0LWNvbmZpZyc7XG5pbXBvcnQge0F4aXN9IGZyb20gJy4uL2NvcmUvYXhpcy9heGlzJztcbmltcG9ydCAqIGFzIGQzIGZyb20gJ2QzJztcbmltcG9ydCB7RDNab29tRXZlbnQsIFpvb21CZWhhdmlvciwgem9vbUlkZW50aXR5fSBmcm9tICdkMyc7XG5pbXBvcnQge1pvb21UeXBlfSBmcm9tICcuLi9tb2RlbC9lbnVtL3pvb20tdHlwZSc7XG5pbXBvcnQge0F4aXNPcmllbnRhdGlvbn0gZnJvbSAnLi4vbW9kZWwvZW51bS9heGlzLW9yaWVudGF0aW9uJztcbmltcG9ydCB7QnJ1c2hNZXNzYWdlLCBJQnJvYWRjYXN0TWVzc2FnZSwgWm9vbU1lc3NhZ2UsfSBmcm9tICcuLi9tb2RlbC9pLWJyb2FkY2FzdC1tZXNzYWdlJztcbmltcG9ydCB7QnJ1c2hUeXBlfSBmcm9tICcuLi9tb2RlbC9lbnVtL2JydXNoLXR5cGUnO1xuaW1wb3J0IHtCcm9hZGNhc3RTZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlL2Jyb2FkY2FzdC5zZXJ2aWNlJztcbmltcG9ydCB7ZGVib3VuY2VUaW1lLCB0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7Y29tYmluZUxhdGVzdFdpdGgsIGZpbHRlciwgdGFrZVdoaWxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7Q2hhcnRTZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlL2NoYXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHtab29tQmVoYXZpb3JUeXBlfSBmcm9tICcuLi9tb2RlbC9lbnVtL3pvb20tYmVoYXZpb3ItdHlwZSc7XG5pbXBvcnQgb2JqZWN0SGFzaCBmcm9tICdvYmplY3QtaGFzaCc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1t0ZXRhWm9vbWFibGVdJyxcbn0pXG5leHBvcnQgY2xhc3MgWm9vbWFibGVEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xuICBASW5wdXQoKSBjb25maWc6IElDaGFydENvbmZpZztcbiAgQElucHV0KCkgYXhpczogQXhpcztcbiAgQElucHV0KCkgc2l6ZTogRE9NUmVjdDtcbiAgQElucHV0KCkgYnJ1c2hTY2FsZT86IGFueTtcbiAgQElucHV0KCkgc2NhbGU/OiBhbnk7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy56b29tYWJsZScpIHByaXZhdGUgem9vbWFibGUgPSBmYWxzZTtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jcm9zc2hhaXInKSBwcml2YXRlIGNyb3NzaGFpciA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX2VsZW1lbnQ6IGQzLlNlbGVjdGlvbjxTVkdFbGVtZW50LCBhbnksIGFueSwgYW55PjtcbiAgcHJpdmF0ZSB6b29tOiBab29tQmVoYXZpb3I8YW55LCBhbnk+O1xuICBwcml2YXRlIGFsaXZlID0gdHJ1ZTtcblxuICBwcml2YXRlIGN1cnJlbnRUcmFuc2Zvcm0gPSB6b29tSWRlbnRpdHk7XG4gIHByaXZhdGUgY3VycmVudFNlbGVjdGlvbjtcbiAgcHJpdmF0ZSBoYXNoOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgem9vbVNlcnZpY2U6IFpvb21TZXJ2aWNlLFxuICAgIHByaXZhdGUgYnJvYWRjYXN0U2VydmljZTogQnJvYWRjYXN0U2VydmljZSxcbiAgICBwcml2YXRlIGNoYXJ0U2VydmljZTogQ2hhcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgem9uZTogTmdab25lXG4gICkge1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuYXhpcz8ub3B0aW9ucz8uem9vbSB8fCB0aGlzLmNvbmZpZz8uem9vbT8uZW5hYmxlKSB7XG4gICAgICB0aGlzLnpvb21hYmxlID0gdGhpcy5jb25maWc/Lnpvb20/Lnpvb21CZWhhdmlvciA9PT0gWm9vbUJlaGF2aW9yVHlwZS5tb3ZlICYmICF0aGlzLmNvbmZpZz8udG9vbHRpcD8uc2hvd0Nyb3NzaGFpcjtcbiAgICAgIHRoaXMuY3Jvc3NoYWlyID0gdGhpcy5jb25maWc/LnRvb2x0aXA/LnNob3dDcm9zc2hhaXI7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzLmhhc093blByb3BlcnR5KCdicnVzaFNjYWxlJykgfHwgY2hhbmdlcy5oYXNPd25Qcm9wZXJ0eSgnc2NhbGUnKSB8fCBjaGFuZ2VzLmhhc093blByb3BlcnR5KCdheGlzJykpIHtcbiAgICAgIGlmICh0aGlzLmhhc2gpIHtcbiAgICAgICAgdGhpcy56b29tU2VydmljZS5zY2FsZUhhc2hNYXAuc2V0KHRoaXMuaGFzaCwgdGhpcy5zY2FsZSk7XG4gICAgICAgIHRoaXMuem9vbVNlcnZpY2UuYXhpc0hhc2hNYXAuc2V0KHRoaXMuaGFzaCwgdGhpcy5heGlzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgY29uc3QgZW5hYmxlID1cbiAgICAgICh0aGlzLmF4aXM/Lm9wdGlvbnM/Lnpvb20gJiYgdGhpcy5heGlzPy5vcHRpb25zLnZpc2libGUgIT09IGZhbHNlKSB8fFxuICAgICAgdGhpcy5jb25maWc/Lnpvb20/LmVuYWJsZTtcblxuICAgIGlmICghZW5hYmxlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG5cbiAgICBpZiAoZW5hYmxlKSB7XG4gICAgICB0aGlzLl9lbGVtZW50ID0gZDMuc2VsZWN0KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICAgIHRoaXMuaGFzaCA9IG9iamVjdEhhc2guc2hhMSh7aW5kZXg6IHRoaXMuYXhpcy5pbmRleCwgb3JpZW50YXRpb246IHRoaXMuYXhpcy5vcmllbnRhdGlvbn0pO1xuXG4gICAgICB0aGlzLnpvb20gPSBkMy56b29tKCkuZXh0ZW50KFtcbiAgICAgICAgWzAsIDBdLFxuICAgICAgICBbdGhpcy5zaXplLndpZHRoLCB0aGlzLnNpemUuaGVpZ2h0XSxcbiAgICAgIF0pO1xuXG4gICAgICBpZiAodGhpcy5jb25maWcuem9vbT8ubGltaXRUcmFuc2xhdGVCeURhdGEpIHtcbiAgICAgICAgdGhpcy56b29tLnRyYW5zbGF0ZUV4dGVudChbXG4gICAgICAgICAgWzAsIDBdLFxuICAgICAgICAgIFt0aGlzLnNpemUud2lkdGgsIHRoaXMuc2l6ZS5oZWlnaHRdLFxuICAgICAgICBdKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy56b29tU2VydmljZS5heGlzSGFzaE1hcC5zZXQodGhpcy5oYXNoLCB0aGlzLmF4aXMpO1xuICAgICAgdGhpcy56b29tU2VydmljZS5lbGVtZW50SGFzaE1hcC5zZXQodGhpcy5oYXNoLCB0aGlzLl9lbGVtZW50KTtcbiAgICAgIHRoaXMuem9vbVNlcnZpY2Uuc2NhbGVIYXNoTWFwLnNldCh0aGlzLmhhc2gsIHRoaXMuc2NhbGUpO1xuICAgICAgdGhpcy56b29tU2VydmljZS56b29tSGFzaE1hcC5zZXQodGhpcy5oYXNoLCB0aGlzLnpvb20pO1xuICAgICAgdGhpcy56b29tU2VydmljZS5zZXRCcm9hZGNhc3RDaGFubmVsKHRoaXMuY29uZmlnPy56b29tLnN5bmNDaGFubmVsKTtcblxuXG4gICAgICBjb25zdCBtYXhab29tID0gdGhpcy5jb25maWcuem9vbT8ubWF4XG4gICAgICAgID8gKHRoaXMuYXhpcy5leHRyZW1lc1sxXSAtIHRoaXMuYXhpcy5leHRyZW1lc1swXSkgL1xuICAgICAgICB0aGlzLmNvbmZpZy56b29tPy5tYXhcbiAgICAgICAgOiB0aGlzLmNvbmZpZy56b29tPy5saW1pdFpvb21CeURhdGFcbiAgICAgICAgICA/IDFcbiAgICAgICAgICA6IDA7XG5cbiAgICAgIGNvbnN0IG1pblpvb20gPSB0aGlzLmNvbmZpZy56b29tPy5taW5cbiAgICAgICAgPyAodGhpcy5heGlzLmV4dHJlbWVzWzFdIC0gdGhpcy5heGlzLmV4dHJlbWVzWzBdKSAvXG4gICAgICAgIHRoaXMuY29uZmlnLnpvb20/Lm1pblxuICAgICAgICA6IEluZmluaXR5O1xuXG4gICAgICB0aGlzLnpvb20uc2NhbGVFeHRlbnQoW21heFpvb20sIG1pblpvb21dKTtcblxuICAgICAgdGhpcy56b29tLm9uKCd6b29tIGVuZCcsIHRoaXMuem9vbWVkKTtcbiAgICAgIHRoaXMuX2VsZW1lbnQuY2FsbCh0aGlzLnpvb20pLm9uKCdkYmxjbGljay56b29tJywgbnVsbCk7IC8vIERpc2FibGUgZGJjbGljayB6b29tXG5cblxuICAgICAgdGhpcy5jaGFydFNlcnZpY2UuZW1pdFpvb21JbnN0YW5jZSh0aGlzLnpvb21TZXJ2aWNlKTtcblxuICAgICAgaWYgKHRoaXMuY29uZmlnPy56b29tPy56b29tQmVoYXZpb3IgPT09IFpvb21CZWhhdmlvclR5cGUud2hlZWwpIHtcbiAgICAgICAgdGhpcy5ydW5XaGVlbFpvb20oKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTdWJzY3JpYmUgdG8gem9vbSBldmVudHNcbiAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2Uuc3Vic2NyaWJlVG9ab29tKHRoaXMuY29uZmlnPy56b29tLnN5bmNDaGFubmVsKS5waXBlKFxuICAgICAgdGFrZVdoaWxlKChfKSA9PiB0aGlzLmFsaXZlKSxcbiAgICAgIHRhcCgobTogSUJyb2FkY2FzdE1lc3NhZ2U8Wm9vbU1lc3NhZ2U+KSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLmF4aXMuaW5kZXggPT09IG0ubWVzc2FnZT8uYXhpcz8uaW5kZXggJiYgdGhpcy5heGlzLm9yaWVudGF0aW9uID09PSBtLm1lc3NhZ2U/LmF4aXM/Lm9yaWVudGF0aW9uXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnRab29tID0gZDMuem9vbVRyYW5zZm9ybSh0aGlzLl9lbGVtZW50Lm5vZGUoKSk7XG5cbiAgICAgICAgICBpZiAoY3VycmVudFpvb20gIT09IG0ubWVzc2FnZS5ldmVudC50cmFuc2Zvcm0gJiYgdGhpcy5jb25maWcuaWQgPT09IG0ubWVzc2FnZT8uY2hhcnRJZCkge1xuICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jYWxsKFxuICAgICAgICAgICAgICB0aGlzLnpvb20udHJhbnNmb3JtLFxuICAgICAgICAgICAgICBtLm1lc3NhZ2UuZXZlbnQudHJhbnNmb3JtXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBmaWx0ZXIoXG4gICAgICAgIChtOiBJQnJvYWRjYXN0TWVzc2FnZTxab29tTWVzc2FnZT4pID0+XG4gICAgICAgICAgbS5tZXNzYWdlLmV2ZW50LnNvdXJjZUV2ZW50IGluc3RhbmNlb2YgTW91c2VFdmVudCB8fFxuICAgICAgICAgIG0ubWVzc2FnZS5ldmVudC5zb3VyY2VFdmVudCBpbnN0YW5jZW9mIFdoZWVsRXZlbnQgfHxcbiAgICAgICAgICAod2luZG93LlRvdWNoRXZlbnQgJiZcbiAgICAgICAgICAgIG0ubWVzc2FnZS5ldmVudC5zb3VyY2VFdmVudCBpbnN0YW5jZW9mIFRvdWNoRXZlbnQpXG4gICAgICApLFxuICAgICAgZmlsdGVyKChtOiBJQnJvYWRjYXN0TWVzc2FnZTxab29tTWVzc2FnZT4pID0+IHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICB0aGlzLmF4aXMuaW5kZXggPT09IG0ubWVzc2FnZT8uYXhpcz8uaW5kZXggJiZcbiAgICAgICAgICB0aGlzLmF4aXMub3JpZW50YXRpb24gPT09IG0ubWVzc2FnZT8uYXhpcz8ub3JpZW50YXRpb25cbiAgICAgICAgKTtcbiAgICAgIH0pLFxuICAgICAgdGFwKChtOiBJQnJvYWRjYXN0TWVzc2FnZTxab29tTWVzc2FnZT4pID0+IHtcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLmlkICE9PSBtLm1lc3NhZ2U/LmNoYXJ0SWQpIHtcblxuICAgICAgICAgIHRoaXMuYnJ1c2hTY2FsZS5kb21haW4odGhpcy5heGlzLm9yaWdpbkRvbWFpbik7XG5cbiAgICAgICAgICBjb25zdCBzY2FsZSA9IE1hdGguYWJzKHRoaXMuYXhpcy5vcmlnaW5Eb21haW5bMV0gLSB0aGlzLmF4aXMub3JpZ2luRG9tYWluWzBdKSAvIE1hdGguYWJzKG0ubWVzc2FnZS5kb21haW5bMV0gLSBtLm1lc3NhZ2UuZG9tYWluWzBdKTtcblxuICAgICAgICAgIGxldCB0cmFuc2Zvcm0gPSB6b29tSWRlbnRpdHkuc2NhbGUoc2NhbGUpO1xuXG4gICAgICAgICAgaWYgKHRoaXMuY29uZmlnPy56b29tPy50eXBlID09PSBab29tVHlwZS54KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5jb25maWcueEF4aXNbMF0/LmludmVydGVkKSB7XG4gICAgICAgICAgICAgIHRyYW5zZm9ybSA9IHRyYW5zZm9ybS50cmFuc2xhdGUoLXRoaXMuYnJ1c2hTY2FsZShtLm1lc3NhZ2UuZG9tYWluWzBdKSwgMCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0cmFuc2Zvcm0gPSB0cmFuc2Zvcm0udHJhbnNsYXRlKHRoaXMuYnJ1c2hTY2FsZSgtbS5tZXNzYWdlLmRvbWFpblsxXSksIDApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0aGlzLmNvbmZpZz8uem9vbT8udHlwZSA9PT0gWm9vbVR5cGUueSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuY29uZmlnLnlBeGlzWzBdPy5pbnZlcnRlZCkge1xuICAgICAgICAgICAgICB0cmFuc2Zvcm0gPSB0cmFuc2Zvcm0udHJhbnNsYXRlKDAsIC10aGlzLmJydXNoU2NhbGUobS5tZXNzYWdlLmRvbWFpblswXSkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdHJhbnNmb3JtID0gdHJhbnNmb3JtLnRyYW5zbGF0ZSgwLCAtdGhpcy5icnVzaFNjYWxlKG0ubWVzc2FnZS5kb21haW5bMV0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLl9lbGVtZW50LmNhbGwoXG4gICAgICAgICAgICB0aGlzLnpvb20udHJhbnNmb3JtLFxuICAgICAgICAgICAgdHJhbnNmb3JtLFxuICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgIHt9XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICAvLyBTdWJzY3JpYmUgdG8gYnJ1c2ggZXZlbnRzIHggb3IgeVxuXG4gICAgaWYgKFxuICAgICAgKHRoaXMuY29uZmlnLmJydXNoPy50eXBlID09PSBCcnVzaFR5cGUueCAmJlxuICAgICAgICB0aGlzLmF4aXMub3JpZW50YXRpb24gPT09IEF4aXNPcmllbnRhdGlvbi54KSB8fFxuICAgICAgKHRoaXMuY29uZmlnLmJydXNoPy50eXBlID09PSBCcnVzaFR5cGUueSAmJlxuICAgICAgICB0aGlzLmF4aXMub3JpZW50YXRpb24gPT09IEF4aXNPcmllbnRhdGlvbi55KVxuICAgICkge1xuXG4gICAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2Uuc3Vic2NyaWJlVG9CcnVzaCh0aGlzLmNvbmZpZz8uem9vbS5zeW5jQ2hhbm5lbClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgY29tYmluZUxhdGVzdFdpdGgodGhpcy5jaGFydFNlcnZpY2Uuc2l6ZSksXG4gICAgICAgICAgdGFrZVdoaWxlKChfKSA9PiB0aGlzLmFsaXZlKSxcbiAgICAgICAgICBmaWx0ZXIoKGRhdGE6IFtJQnJvYWRjYXN0TWVzc2FnZTxCcnVzaE1lc3NhZ2U+LCBET01SZWN0XSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgW21dID0gZGF0YTtcbiAgICAgICAgICAgIHJldHVybiBCb29sZWFuKG0ubWVzc2FnZS5zZWxlY3Rpb24pXG4gICAgICAgICAgfSksXG4gICAgICAgICAgdGFwKChkYXRhOiBbSUJyb2FkY2FzdE1lc3NhZ2U8QnJ1c2hNZXNzYWdlPiwgRE9NUmVjdF0pID0+IHtcblxuICAgICAgICAgICAgY29uc3QgW21dID0gZGF0YTtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRUcmFuc2Zvcm0gPSBkMy56b29tVHJhbnNmb3JtKHRoaXMuX2VsZW1lbnQubm9kZSgpKTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgIW0ubWVzc2FnZS5ldmVudCAmJlxuICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRTZWxlY3Rpb24gJiZcbiAgICAgICAgICAgICAgY3VycmVudFRyYW5zZm9ybS5rICE9PSAxXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBzID0gbS5tZXNzYWdlLnNlbGVjdGlvbjtcblxuICAgICAgICAgICAgdGhpcy5icnVzaFNjYWxlLmRvbWFpbih0aGlzLmF4aXMub3JpZ2luRG9tYWluKTtcbiAgICAgICAgICAgIGNvbnN0IGRvbWFpbiA9IHRoaXMuYnJ1c2hTY2FsZS5kb21haW4oKTtcblxuICAgICAgICAgICAgY29uc3Qgc2NhbGUgPSBNYXRoLmFicyhkb21haW5bMV0gLSBkb21haW5bMF0pIC8gTWF0aC5hYnMoc1sxXSAtIHNbMF0pO1xuICAgICAgICAgICAgbGV0IHRyYW5zZm9ybSA9IHpvb21JZGVudGl0eS5zY2FsZShzY2FsZSk7XG5cbiAgICAgICAgICAgIGlmIChtLm1lc3NhZ2U/LmJydXNoVHlwZSA9PT0gQnJ1c2hUeXBlLngpIHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMuY29uZmlnLnhBeGlzWzBdPy5pbnZlcnRlZCkge1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybSA9IHRyYW5zZm9ybS50cmFuc2xhdGUoLXRoaXMuYnJ1c2hTY2FsZShzWzBdKSwgMCk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtID0gdHJhbnNmb3JtLnRyYW5zbGF0ZSgtdGhpcy5icnVzaFNjYWxlKHNbMV0pLCAwKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobS5tZXNzYWdlPy5icnVzaFR5cGUgPT09IEJydXNoVHlwZS55KSB7XG4gICAgICAgICAgICAgIGlmICh0aGlzLmNvbmZpZy55QXhpc1swXT8uaW52ZXJ0ZWQpIHtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm0gPSB0cmFuc2Zvcm0udHJhbnNsYXRlKDAsIC10aGlzLmJydXNoU2NhbGUoc1swXSkpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybSA9IHRyYW5zZm9ybS50cmFuc2xhdGUoMCwgLXRoaXMuYnJ1c2hTY2FsZShzWzFdKSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG0ubWVzc2FnZT8uc3R5bGU/LnRyYW5zaXRpb24pIHtcbiAgICAgICAgICAgICAgdGhpcy5fZWxlbWVudC50cmFuc2l0aW9uKCkuY2FsbCh0aGlzLnpvb20udHJhbnNmb3JtLCB0cmFuc2Zvcm0sIG51bGwsIHt9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2FsbCh0aGlzLnpvb20udHJhbnNmb3JtLCB0cmFuc2Zvcm0sIG51bGwsIHt9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5jdXJyZW50U2VsZWN0aW9uID0gbS5tZXNzYWdlLnNlbGVjdGlvbjtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnpvb20/Lm9uKCdzdGFydCB6b29tIGVuZCcsIG51bGwpO1xuICAgIHRoaXMuX2VsZW1lbnQ/Lm9uKCd3aGVlbCcsIG51bGwpO1xuICAgIHRoaXMuYWxpdmUgPSBmYWxzZTtcbiAgfVxuXG5cbiAgem9vbWVkID0gKGV2ZW50OiBEM1pvb21FdmVudDxhbnksIGFueT4pID0+IHtcbiAgICBpZiAoZXZlbnQuc291cmNlRXZlbnQpIHtcbiAgICAgIGlmIChPYmplY3Qua2V5cyhldmVudC5zb3VyY2VFdmVudCkubGVuZ3RoICE9PSAwKSB7XG5cbiAgICAgICAgaWYgKHRoaXMuY3VycmVudFRyYW5zZm9ybSA9PT0gZXZlbnQudHJhbnNmb3JtKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgb3JpZ2luID0gdGhpcy5icnVzaFNjYWxlLmNvcHkoKS5kb21haW4odGhpcy5heGlzLmV4dHJlbWVzKTtcblxuICAgICAgICBsZXQgZG9tYWluID1cbiAgICAgICAgICB0aGlzLmNvbmZpZy56b29tPy50eXBlID09PSBab29tVHlwZS55XG4gICAgICAgICAgICA/IGV2ZW50LnRyYW5zZm9ybS5yZXNjYWxlWShvcmlnaW4pLmRvbWFpbigpXG4gICAgICAgICAgICA6IGV2ZW50LnRyYW5zZm9ybS5yZXNjYWxlWChvcmlnaW4pLmRvbWFpbigpO1xuXG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBuZXcgWm9vbU1lc3NhZ2Uoe1xuICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgIGF4aXM6IHRoaXMuYXhpcyxcbiAgICAgICAgICBkb21haW4sXG4gICAgICAgICAgY2hhcnRJZDogdGhpcy5jb25maWcuaWQsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuYnJvYWRjYXN0U2VydmljZS5icm9hZGNhc3Rab29tKHtcbiAgICAgICAgICBjaGFubmVsOiB0aGlzLmNvbmZpZz8uem9vbT8uc3luY0NoYW5uZWwsXG4gICAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuem9vbVNlcnZpY2UuZmlyZVpvb20oe1xuICAgICAgICBldmVudCxcbiAgICAgICAgdGFyZ2V0OiB0aGlzLmF4aXMsXG4gICAgICB9KTtcblxuICAgICAgdGhpcy5jdXJyZW50VHJhbnNmb3JtID0gZXZlbnQudHJhbnNmb3JtO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIHJ1bldoZWVsWm9vbSgpIHtcbiAgICBsZXQgdHlwZTogJ3N0YXJ0JyB8ICd6b29tJyB8ICdlbmQnID0gJ3N0YXJ0JztcbiAgICBsZXQgd2hlZWxpbmc7XG5cbiAgICB0aGlzLnpvb21cbiAgICAgIC5maWx0ZXIoXG4gICAgICAgIChldmVudCkgPT4ge1xuICAgICAgICAgIHJldHVybiAoZXZlbnQuY3RybEtleSAmJiBldmVudC50eXBlID09PSAnd2hlZWwnKSB8fFxuICAgICAgICAgICAgQm9vbGVhbih3aW5kb3cuVG91Y2hFdmVudCAmJiBldmVudC50eXBlICE9PSAnd2hlZWwnKTtcbiAgICAgICAgfVxuICAgICAgKVxuICAgICAgLndoZWVsRGVsdGEoKGV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGRlbHRhID1cbiAgICAgICAgICB0aGlzLmNvbmZpZz8uem9vbS50eXBlID09PSBab29tVHlwZS54XG4gICAgICAgICAgICA/IC1ldmVudC5kZWx0YVhcbiAgICAgICAgICAgIDogLWV2ZW50LmRlbHRhWTtcbiAgICAgICAgcmV0dXJuIGRlbHRhICogMC4wMDI7XG4gICAgICB9KTtcblxuICAgIGNvbnN0IGVtaXQgPSAodHlwZTogc3RyaW5nLCBldmVudDogV2hlZWxFdmVudCkgPT4ge1xuICAgICAgY29uc3Qgb3JpZ2luID0gdGhpcy5icnVzaFNjYWxlLmNvcHkoKS5kb21haW4odGhpcy5heGlzLmV4dHJlbWVzKTtcbiAgICAgIGxldCB0cmFuc2Zvcm0gPSB6b29tSWRlbnRpdHk7XG4gICAgICBjb25zdCBkZWx0YSA9XG4gICAgICAgIHR5cGUgPT09ICdlbmQnXG4gICAgICAgICAgPyAwXG4gICAgICAgICAgOiB0aGlzLmNvbmZpZy56b29tPy50eXBlID09PSBab29tVHlwZS55XG4gICAgICAgICAgICA/IGV2ZW50LmRlbHRhWVxuICAgICAgICAgICAgOiBldmVudC5kZWx0YVg7XG5cbiAgICAgIGlmICh0aGlzLmNvbmZpZy56b29tPy50eXBlID09PSBab29tVHlwZS55KSB7XG4gICAgICAgIHRyYW5zZm9ybSA9IHRyYW5zZm9ybS50cmFuc2xhdGUoXG4gICAgICAgICAgMCxcbiAgICAgICAgICB0aGlzLmN1cnJlbnRUcmFuc2Zvcm0ueSAtIGRlbHRhIC8gMlxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5jb25maWcuem9vbT8udHlwZSA9PT0gWm9vbVR5cGUueCkge1xuICAgICAgICB0cmFuc2Zvcm0gPSB0cmFuc2Zvcm0udHJhbnNsYXRlKFxuICAgICAgICAgIHRoaXMuY3VycmVudFRyYW5zZm9ybS54IC0gZGVsdGEgLyAyLFxuICAgICAgICAgIDBcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgdHJhbnNmb3JtID0gdHJhbnNmb3JtLnNjYWxlKHRoaXMuY3VycmVudFRyYW5zZm9ybS5rKTtcblxuICAgICAgbGV0IGRvbWFpbiA9XG4gICAgICAgIHRoaXMuY29uZmlnLnpvb20/LnR5cGUgPT09IFpvb21UeXBlLnlcbiAgICAgICAgICA/IHRyYW5zZm9ybS5yZXNjYWxlWShvcmlnaW4pLmRvbWFpbigpXG4gICAgICAgICAgOiB0cmFuc2Zvcm0ucmVzY2FsZVgob3JpZ2luKS5kb21haW4oKTtcblxuICAgICAgY29uc3QgbWVzc2FnZSA9IG5ldyBab29tTWVzc2FnZSh7XG4gICAgICAgIGV2ZW50OiB7XG4gICAgICAgICAgc291cmNlRXZlbnQ6IGV2ZW50LFxuICAgICAgICAgIHRyYW5zZm9ybSxcbiAgICAgICAgICB0eXBlLFxuICAgICAgICB9LFxuICAgICAgICBheGlzOiB0aGlzLmF4aXMsXG4gICAgICAgIGRvbWFpbixcbiAgICAgICAgY2hhcnRJZDogdGhpcy5jb25maWcuaWQsXG4gICAgICB9KTtcblxuICAgICAgdGhpcy56b29tU2VydmljZS5maXJlWm9vbSh7XG4gICAgICAgIGV2ZW50OiB7XG4gICAgICAgICAgc291cmNlRXZlbnQ6IGV2ZW50LFxuICAgICAgICAgIHRyYW5zZm9ybSxcbiAgICAgICAgICB0eXBlLFxuICAgICAgICB9LFxuICAgICAgICB0YXJnZXQ6IHRoaXMuYXhpcyxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLl9lbGVtZW50LmNhbGwodGhpcy56b29tLnRyYW5zZm9ybSwgdHJhbnNmb3JtKTtcbiAgICAgIHRoaXMuY3VycmVudFRyYW5zZm9ybSA9IHRyYW5zZm9ybTtcblxuICAgICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlLmJyb2FkY2FzdFpvb20oe1xuICAgICAgICBjaGFubmVsOiB0aGlzLmNvbmZpZz8uem9vbT8uc3luY0NoYW5uZWwsXG4gICAgICAgIG1lc3NhZ2UsXG4gICAgICB9KTtcbiAgICB9O1xuXG5cbiAgICB0aGlzLl9lbGVtZW50Lm9uKCd3aGVlbCcsIChldmVudDogV2hlZWxFdmVudCkgPT4ge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgaWYgKGV2ZW50LmN0cmxLZXkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICBjbGVhclRpbWVvdXQod2hlZWxpbmcpO1xuICAgICAgICBlbWl0KHR5cGUsIGV2ZW50KTtcbiAgICAgICAgdHlwZSA9ICd6b29tJztcblxuICAgICAgICB3aGVlbGluZyA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGVtaXQoJ2VuZCcsIGV2ZW50KTtcblxuICAgICAgICAgIHR5cGUgPSAnc3RhcnQnO1xuICAgICAgICB9LCA1MCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICB9XG59XG4iXX0=
|
|
303
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9vbWFibGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L2RpcmVjdGl2ZXMvem9vbWFibGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsV0FBVyxFQUNYLEtBQUssR0FJTixNQUFNLGVBQWUsQ0FBQztBQUl2QixPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUN6QixPQUFPLEVBQTRCLFlBQVksRUFBQyxNQUFNLElBQUksQ0FBQztBQUMzRCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDakQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQy9ELE9BQU8sRUFBa0MsV0FBVyxHQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0YsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBRW5ELE9BQU8sRUFBZSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUUxRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUNsRSxPQUFPLFVBQVUsTUFBTSxhQUFhLENBQUM7Ozs7O0FBS3JDLE1BQU0sT0FBTyxpQkFBaUI7SUFrQjVCLFlBQ1UsVUFBc0IsRUFDdEIsV0FBd0IsRUFDeEIsZ0JBQWtDLEVBQ2xDLFlBQTBCLEVBQzFCLElBQVk7UUFKWixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQWhCaUIsYUFBUSxHQUFHLEtBQUssQ0FB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LFFBQVEsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO29CQUN6QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO29CQUVuQixJQUFJLEdBQUcsT0FBTyxDQUFDO2dCQUNqQixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDVCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUwsQ0FBQzs7OEdBelhVLGlCQUFpQjtrR0FBakIsaUJBQWlCOzJGQUFqQixpQkFBaUI7a0JBSDdCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtpQkFDM0I7ME1BRVUsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRWlDLFFBQVE7c0JBQTlDLFdBQVc7dUJBQUMsZ0JBQWdCO2dCQUNXLFNBQVM7c0JBQWhELFdBQVc7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Wm9vbVNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2Uvem9vbS5zZXJ2aWNlJztcbmltcG9ydCB7SUNoYXJ0Q29uZmlnfSBmcm9tICcuLi9tb2RlbC9pLWNoYXJ0LWNvbmZpZyc7XG5pbXBvcnQge0F4aXN9IGZyb20gJy4uL2NvcmUvYXhpcy9heGlzJztcbmltcG9ydCAqIGFzIGQzIGZyb20gJ2QzJztcbmltcG9ydCB7RDNab29tRXZlbnQsIFpvb21CZWhhdmlvciwgem9vbUlkZW50aXR5fSBmcm9tICdkMyc7XG5pbXBvcnQge1pvb21UeXBlfSBmcm9tICcuLi9tb2RlbC9lbnVtL3pvb20tdHlwZSc7XG5pbXBvcnQge0F4aXNPcmllbnRhdGlvbn0gZnJvbSAnLi4vbW9kZWwvZW51bS9heGlzLW9yaWVudGF0aW9uJztcbmltcG9ydCB7QnJ1c2hNZXNzYWdlLCBJQnJvYWRjYXN0TWVzc2FnZSwgWm9vbU1lc3NhZ2UsfSBmcm9tICcuLi9tb2RlbC9pLWJyb2FkY2FzdC1tZXNzYWdlJztcbmltcG9ydCB7QnJ1c2hUeXBlfSBmcm9tICcuLi9tb2RlbC9lbnVtL2JydXNoLXR5cGUnO1xuaW1wb3J0IHtCcm9hZGNhc3RTZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlL2Jyb2FkY2FzdC5zZXJ2aWNlJztcbmltcG9ydCB7ZGVib3VuY2VUaW1lLCB0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7Y29tYmluZUxhdGVzdFdpdGgsIGZpbHRlciwgdGFrZVdoaWxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7Q2hhcnRTZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlL2NoYXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHtab29tQmVoYXZpb3JUeXBlfSBmcm9tICcuLi9tb2RlbC9lbnVtL3pvb20tYmVoYXZpb3ItdHlwZSc7XG5pbXBvcnQgb2JqZWN0SGFzaCBmcm9tICdvYmplY3QtaGFzaCc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1t0ZXRhWm9vbWFibGVdJyxcbn0pXG5leHBvcnQgY2xhc3MgWm9vbWFibGVEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xuICBASW5wdXQoKSBjb25maWc6IElDaGFydENvbmZpZztcbiAgQElucHV0KCkgYXhpczogQXhpcztcbiAgQElucHV0KCkgc2l6ZTogRE9NUmVjdDtcbiAgQElucHV0KCkgYnJ1c2hTY2FsZT86IGFueTtcbiAgQElucHV0KCkgc2NhbGU/OiBhbnk7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy56b29tYWJsZScpIHByaXZhdGUgem9vbWFibGUgPSBmYWxzZTtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jcm9zc2hhaXInKSBwcml2YXRlIGNyb3NzaGFpciA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX2VsZW1lbnQ6IGQzLlNlbGVjdGlvbjxTVkdFbGVtZW50LCBhbnksIGFueSwgYW55PjtcbiAgcHJpdmF0ZSB6b29tOiBab29tQmVoYXZpb3I8YW55LCBhbnk+O1xuICBwcml2YXRlIGFsaXZlID0gdHJ1ZTtcblxuICBwcml2YXRlIGN1cnJlbnRUcmFuc2Zvcm0gPSB6b29tSWRlbnRpdHk7XG4gIHByaXZhdGUgY3VycmVudFNlbGVjdGlvbjtcbiAgcHJpdmF0ZSBoYXNoOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgem9vbVNlcnZpY2U6IFpvb21TZXJ2aWNlLFxuICAgIHByaXZhdGUgYnJvYWRjYXN0U2VydmljZTogQnJvYWRjYXN0U2VydmljZSxcbiAgICBwcml2YXRlIGNoYXJ0U2VydmljZTogQ2hhcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgem9uZTogTmdab25lXG4gICkge1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuYXhpcz8ub3B0aW9ucz8uem9vbSB8fCB0aGlzLmNvbmZpZz8uem9vbT8uZW5hYmxlKSB7XG4gICAgICB0aGlzLnpvb21hYmxlID0gdGhpcy5jb25maWc/Lnpvb20/Lnpvb21CZWhhdmlvciA9PT0gWm9vbUJlaGF2aW9yVHlwZS5tb3ZlICYmICF0aGlzLmNvbmZpZz8udG9vbHRpcD8uc2hvd0Nyb3NzaGFpcjtcbiAgICAgIHRoaXMuY3Jvc3NoYWlyID0gdGhpcy5jb25maWc/LnRvb2x0aXA/LnNob3dDcm9zc2hhaXI7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzLmhhc093blByb3BlcnR5KCdicnVzaFNjYWxlJykgfHwgY2hhbmdlcy5oYXNPd25Qcm9wZXJ0eSgnc2NhbGUnKSB8fCBjaGFuZ2VzLmhhc093blByb3BlcnR5KCdheGlzJykpIHtcbiAgICAgIGlmICh0aGlzLmhhc2gpIHtcbiAgICAgICAgdGhpcy56b29tU2VydmljZS5zY2FsZUhhc2hNYXAuc2V0KHRoaXMuaGFzaCwgdGhpcy5zY2FsZSk7XG4gICAgICAgIHRoaXMuem9vbVNlcnZpY2UuYXhpc0hhc2hNYXAuc2V0KHRoaXMuaGFzaCwgdGhpcy5heGlzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgY29uc3QgZW5hYmxlID1cbiAgICAgICh0aGlzLmF4aXM/Lm9wdGlvbnM/Lnpvb20gJiYgdGhpcy5heGlzPy5vcHRpb25zLnZpc2libGUgIT09IGZhbHNlKSB8fFxuICAgICAgdGhpcy5jb25maWc/Lnpvb20/LmVuYWJsZTtcblxuICAgIGlmICghZW5hYmxlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG5cbiAgICBpZiAoZW5hYmxlKSB7XG4gICAgICB0aGlzLl9lbGVtZW50ID0gZDMuc2VsZWN0KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICAgIHRoaXMuaGFzaCA9IG9iamVjdEhhc2guc2hhMSh7aW5kZXg6IHRoaXMuYXhpcy5pbmRleCwgb3JpZW50YXRpb246IHRoaXMuYXhpcy5vcmllbnRhdGlvbn0pO1xuXG4gICAgICB0aGlzLnpvb20gPSBkMy56b29tKCkuZXh0ZW50KFtcbiAgICAgICAgWzAsIDBdLFxuICAgICAgICBbdGhpcy5zaXplLndpZHRoLCB0aGlzLnNpemUuaGVpZ2h0XSxcbiAgICAgIF0pO1xuXG4gICAgICBpZiAodGhpcy5jb25maWcuem9vbT8ubGltaXRUcmFuc2xhdGVCeURhdGEpIHtcbiAgICAgICAgdGhpcy56b29tLnRyYW5zbGF0ZUV4dGVudChbXG4gICAgICAgICAgWzAsIDBdLFxuICAgICAgICAgIFt0aGlzLnNpemUud2lkdGgsIHRoaXMuc2l6ZS5oZWlnaHRdLFxuICAgICAgICBdKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy56b29tU2VydmljZS5heGlzSGFzaE1hcC5zZXQodGhpcy5oYXNoLCB0aGlzLmF4aXMpO1xuICAgICAgdGhpcy56b29tU2VydmljZS5lbGVtZW50SGFzaE1hcC5zZXQodGhpcy5oYXNoLCB0aGlzLl9lbGVtZW50KTtcbiAgICAgIHRoaXMuem9vbVNlcnZpY2Uuc2NhbGVIYXNoTWFwLnNldCh0aGlzLmhhc2gsIHRoaXMuc2NhbGUpO1xuICAgICAgdGhpcy56b29tU2VydmljZS56b29tSGFzaE1hcC5zZXQodGhpcy5oYXNoLCB0aGlzLnpvb20pO1xuICAgICAgdGhpcy56b29tU2VydmljZS5zZXRCcm9hZGNhc3RDaGFubmVsKHRoaXMuY29uZmlnPy56b29tLnN5bmNDaGFubmVsKTtcblxuXG4gICAgICBjb25zdCBtYXhab29tID0gdGhpcy5jb25maWcuem9vbT8ubWF4XG4gICAgICAgID8gKHRoaXMuYXhpcy5leHRyZW1lc1sxXSAtIHRoaXMuYXhpcy5leHRyZW1lc1swXSkgL1xuICAgICAgICB0aGlzLmNvbmZpZy56b29tPy5tYXhcbiAgICAgICAgOiB0aGlzLmNvbmZpZy56b29tPy5saW1pdFpvb21CeURhdGFcbiAgICAgICAgICA/IDFcbiAgICAgICAgICA6IDA7XG5cbiAgICAgIGNvbnN0IG1pblpvb20gPSB0aGlzLmNvbmZpZy56b29tPy5taW5cbiAgICAgICAgPyAodGhpcy5heGlzLmV4dHJlbWVzWzFdIC0gdGhpcy5heGlzLmV4dHJlbWVzWzBdKSAvXG4gICAgICAgIHRoaXMuY29uZmlnLnpvb20/Lm1pblxuICAgICAgICA6IEluZmluaXR5O1xuXG4gICAgICB0aGlzLnpvb20uc2NhbGVFeHRlbnQoW21heFpvb20sIG1pblpvb21dKTtcblxuICAgICAgdGhpcy56b29tLm9uKCd6b29tIGVuZCcsIHRoaXMuem9vbWVkKTtcbiAgICAgIHRoaXMuX2VsZW1lbnQuY2FsbCh0aGlzLnpvb20pLm9uKCdkYmxjbGljay56b29tJywgbnVsbCk7IC8vIERpc2FibGUgZGJjbGljayB6b29tXG5cblxuICAgICAgdGhpcy5jaGFydFNlcnZpY2UuZW1pdFpvb21JbnN0YW5jZSh0aGlzLnpvb21TZXJ2aWNlKTtcblxuICAgICAgaWYgKHRoaXMuY29uZmlnPy56b29tPy56b29tQmVoYXZpb3IgPT09IFpvb21CZWhhdmlvclR5cGUud2hlZWwpIHtcbiAgICAgICAgdGhpcy5ydW5XaGVlbFpvb20oKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTdWJzY3JpYmUgdG8gem9vbSBldmVudHNcbiAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2Uuc3Vic2NyaWJlVG9ab29tKHRoaXMuY29uZmlnPy56b29tLnN5bmNDaGFubmVsKS5waXBlKFxuICAgICAgdGFrZVdoaWxlKChfKSA9PiB0aGlzLmFsaXZlKSxcbiAgICAgIHRhcCgobTogSUJyb2FkY2FzdE1lc3NhZ2U8Wm9vbU1lc3NhZ2U+KSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLmF4aXMuaW5kZXggPT09IG0ubWVzc2FnZT8uYXhpcz8uaW5kZXggJiYgdGhpcy5heGlzLm9yaWVudGF0aW9uID09PSBtLm1lc3NhZ2U/LmF4aXM/Lm9yaWVudGF0aW9uXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnRab29tID0gZDMuem9vbVRyYW5zZm9ybSh0aGlzLl9lbGVtZW50Lm5vZGUoKSk7XG5cbiAgICAgICAgICBpZiAoY3VycmVudFpvb20gIT09IG0ubWVzc2FnZS5ldmVudC50cmFuc2Zvcm0gJiYgdGhpcy5jb25maWcuaWQgPT09IG0ubWVzc2FnZT8uY2hhcnRJZCkge1xuICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jYWxsKFxuICAgICAgICAgICAgICB0aGlzLnpvb20udHJhbnNmb3JtLFxuICAgICAgICAgICAgICBtLm1lc3NhZ2UuZXZlbnQudHJhbnNmb3JtXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBmaWx0ZXIoXG4gICAgICAgIChtOiBJQnJvYWRjYXN0TWVzc2FnZTxab29tTWVzc2FnZT4pID0+XG4gICAgICAgICAgbS5tZXNzYWdlLmV2ZW50LnNvdXJjZUV2ZW50IGluc3RhbmNlb2YgTW91c2VFdmVudCB8fFxuICAgICAgICAgIG0ubWVzc2FnZS5ldmVudC5zb3VyY2VFdmVudCBpbnN0YW5jZW9mIFdoZWVsRXZlbnQgfHxcbiAgICAgICAgICAod2luZG93LlRvdWNoRXZlbnQgJiZcbiAgICAgICAgICAgIG0ubWVzc2FnZS5ldmVudC5zb3VyY2VFdmVudCBpbnN0YW5jZW9mIFRvdWNoRXZlbnQpXG4gICAgICApLFxuICAgICAgZmlsdGVyKChtOiBJQnJvYWRjYXN0TWVzc2FnZTxab29tTWVzc2FnZT4pID0+IHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICB0aGlzLmF4aXMuaW5kZXggPT09IG0ubWVzc2FnZT8uYXhpcz8uaW5kZXggJiZcbiAgICAgICAgICB0aGlzLmF4aXMub3JpZW50YXRpb24gPT09IG0ubWVzc2FnZT8uYXhpcz8ub3JpZW50YXRpb25cbiAgICAgICAgKTtcbiAgICAgIH0pLFxuICAgICAgdGFwKChtOiBJQnJvYWRjYXN0TWVzc2FnZTxab29tTWVzc2FnZT4pID0+IHtcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLmlkICE9PSBtLm1lc3NhZ2U/LmNoYXJ0SWQpIHtcblxuICAgICAgICAgIHRoaXMuYnJ1c2hTY2FsZS5kb21haW4odGhpcy5heGlzLm9yaWdpbkRvbWFpbik7XG5cbiAgICAgICAgICBjb25zdCBzY2FsZSA9IE1hdGguYWJzKHRoaXMuYXhpcy5vcmlnaW5Eb21haW5bMV0gLSB0aGlzLmF4aXMub3JpZ2luRG9tYWluWzBdKSAvIE1hdGguYWJzKG0ubWVzc2FnZS5kb21haW5bMV0gLSBtLm1lc3NhZ2UuZG9tYWluWzBdKTtcblxuICAgICAgICAgIGxldCB0cmFuc2Zvcm0gPSB6b29tSWRlbnRpdHkuc2NhbGUoc2NhbGUpO1xuXG4gICAgICAgICAgaWYgKHRoaXMuY29uZmlnPy56b29tPy50eXBlID09PSBab29tVHlwZS54KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5jb25maWcueEF4aXNbMF0/LmludmVydGVkKSB7XG4gICAgICAgICAgICAgIHRyYW5zZm9ybSA9IHRyYW5zZm9ybS50cmFuc2xhdGUodGhpcy5icnVzaFNjYWxlKC1tLm1lc3NhZ2UuZG9tYWluWzFdKSwgMCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0cmFuc2Zvcm0gPSB0cmFuc2Zvcm0udHJhbnNsYXRlKC10aGlzLmJydXNoU2NhbGUobS5tZXNzYWdlLmRvbWFpblswXSksIDApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0aGlzLmNvbmZpZz8uem9vbT8udHlwZSA9PT0gWm9vbVR5cGUueSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuY29uZmlnLnlBeGlzWzBdPy5pbnZlcnRlZCkge1xuICAgICAgICAgICAgICB0cmFuc2Zvcm0gPSB0cmFuc2Zvcm0udHJhbnNsYXRlKDAsIC10aGlzLmJydXNoU2NhbGUobS5tZXNzYWdlLmRvbWFpblswXSkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdHJhbnNmb3JtID0gdHJhbnNmb3JtLnRyYW5zbGF0ZSgwLCAtdGhpcy5icnVzaFNjYWxlKG0ubWVzc2FnZS5kb21haW5bMV0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLl9lbGVtZW50LmNhbGwoXG4gICAgICAgICAgICB0aGlzLnpvb20udHJhbnNmb3JtLFxuICAgICAgICAgICAgdHJhbnNmb3JtLFxuICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgIHt9XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICAvLyBTdWJzY3JpYmUgdG8gYnJ1c2ggZXZlbnRzIHggb3IgeVxuXG4gICAgaWYgKFxuICAgICAgKHRoaXMuY29uZmlnLmJydXNoPy50eXBlID09PSBCcnVzaFR5cGUueCAmJlxuICAgICAgICB0aGlzLmF4aXMub3JpZW50YXRpb24gPT09IEF4aXNPcmllbnRhdGlvbi54KSB8fFxuICAgICAgKHRoaXMuY29uZmlnLmJydXNoPy50eXBlID09PSBCcnVzaFR5cGUueSAmJlxuICAgICAgICB0aGlzLmF4aXMub3JpZW50YXRpb24gPT09IEF4aXNPcmllbnRhdGlvbi55KVxuICAgICkge1xuXG4gICAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2Uuc3Vic2NyaWJlVG9CcnVzaCh0aGlzLmNvbmZpZz8uem9vbS5zeW5jQ2hhbm5lbClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgY29tYmluZUxhdGVzdFdpdGgodGhpcy5jaGFydFNlcnZpY2Uuc2l6ZSksXG4gICAgICAgICAgdGFrZVdoaWxlKChfKSA9PiB0aGlzLmFsaXZlKSxcbiAgICAgICAgICBmaWx0ZXIoKGRhdGE6IFtJQnJvYWRjYXN0TWVzc2FnZTxCcnVzaE1lc3NhZ2U+LCBET01SZWN0XSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgW21dID0gZGF0YTtcbiAgICAgICAgICAgIHJldHVybiBCb29sZWFuKG0ubWVzc2FnZS5zZWxlY3Rpb24pXG4gICAgICAgICAgfSksXG4gICAgICAgICAgdGFwKChkYXRhOiBbSUJyb2FkY2FzdE1lc3NhZ2U8QnJ1c2hNZXNzYWdlPiwgRE9NUmVjdF0pID0+IHtcblxuICAgICAgICAgICAgY29uc3QgW21dID0gZGF0YTtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRUcmFuc2Zvcm0gPSBkMy56b29tVHJhbnNmb3JtKHRoaXMuX2VsZW1lbnQubm9kZSgpKTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgIW0ubWVzc2FnZS5ldmVudCAmJlxuICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRTZWxlY3Rpb24gJiZcbiAgICAgICAgICAgICAgY3VycmVudFRyYW5zZm9ybS5rICE9PSAxXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBzID0gbS5tZXNzYWdlLnNlbGVjdGlvbjtcblxuICAgICAgICAgICAgdGhpcy5icnVzaFNjYWxlLmRvbWFpbih0aGlzLmF4aXMub3JpZ2luRG9tYWluKTtcbiAgICAgICAgICAgIGNvbnN0IGRvbWFpbiA9IHRoaXMuYnJ1c2hTY2FsZS5kb21haW4oKTtcblxuICAgICAgICAgICAgY29uc3Qgc2NhbGUgPSBNYXRoLmFicyhkb21haW5bMV0gLSBkb21haW5bMF0pIC8gTWF0aC5hYnMoc1sxXSAtIHNbMF0pO1xuICAgICAgICAgICAgbGV0IHRyYW5zZm9ybSA9IHpvb21JZGVudGl0eS5zY2FsZShzY2FsZSk7XG5cbiAgICAgICAgICAgIGlmIChtLm1lc3NhZ2U/LmJydXNoVHlwZSA9PT0gQnJ1c2hUeXBlLngpIHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMuY29uZmlnLnhBeGlzWzBdPy5pbnZlcnRlZCkge1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybSA9IHRyYW5zZm9ybS50cmFuc2xhdGUoLXRoaXMuYnJ1c2hTY2FsZShzWzBdKSwgMCk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtID0gdHJhbnNmb3JtLnRyYW5zbGF0ZSgtdGhpcy5icnVzaFNjYWxlKHNbMV0pLCAwKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobS5tZXNzYWdlPy5icnVzaFR5cGUgPT09IEJydXNoVHlwZS55KSB7XG4gICAgICAgICAgICAgIGlmICh0aGlzLmNvbmZpZy55QXhpc1swXT8uaW52ZXJ0ZWQpIHtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm0gPSB0cmFuc2Zvcm0udHJhbnNsYXRlKDAsIC10aGlzLmJydXNoU2NhbGUoc1swXSkpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybSA9IHRyYW5zZm9ybS50cmFuc2xhdGUoMCwgLXRoaXMuYnJ1c2hTY2FsZShzWzFdKSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG0ubWVzc2FnZT8uc3R5bGU/LnRyYW5zaXRpb24pIHtcbiAgICAgICAgICAgICAgdGhpcy5fZWxlbWVudC50cmFuc2l0aW9uKCkuY2FsbCh0aGlzLnpvb20udHJhbnNmb3JtLCB0cmFuc2Zvcm0sIG51bGwsIHt9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2FsbCh0aGlzLnpvb20udHJhbnNmb3JtLCB0cmFuc2Zvcm0sIG51bGwsIHt9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5jdXJyZW50U2VsZWN0aW9uID0gbS5tZXNzYWdlLnNlbGVjdGlvbjtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnpvb20/Lm9uKCdzdGFydCB6b29tIGVuZCcsIG51bGwpO1xuICAgIHRoaXMuX2VsZW1lbnQ/Lm9uKCd3aGVlbCcsIG51bGwpO1xuICAgIHRoaXMuYWxpdmUgPSBmYWxzZTtcbiAgfVxuXG5cbiAgem9vbWVkID0gKGV2ZW50OiBEM1pvb21FdmVudDxhbnksIGFueT4pID0+IHtcbiAgICBpZiAoZXZlbnQuc291cmNlRXZlbnQpIHtcbiAgICAgIGlmIChPYmplY3Qua2V5cyhldmVudC5zb3VyY2VFdmVudCkubGVuZ3RoICE9PSAwKSB7XG5cbiAgICAgICAgaWYgKHRoaXMuY3VycmVudFRyYW5zZm9ybSA9PT0gZXZlbnQudHJhbnNmb3JtKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgb3JpZ2luID0gdGhpcy5icnVzaFNjYWxlLmNvcHkoKS5kb21haW4odGhpcy5heGlzLmV4dHJlbWVzKTtcblxuICAgICAgICBsZXQgZG9tYWluID1cbiAgICAgICAgICB0aGlzLmNvbmZpZy56b29tPy50eXBlID09PSBab29tVHlwZS55XG4gICAgICAgICAgICA/IGV2ZW50LnRyYW5zZm9ybS5yZXNjYWxlWShvcmlnaW4pLmRvbWFpbigpXG4gICAgICAgICAgICA6IGV2ZW50LnRyYW5zZm9ybS5yZXNjYWxlWChvcmlnaW4pLmRvbWFpbigpO1xuXG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBuZXcgWm9vbU1lc3NhZ2Uoe1xuICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgIGF4aXM6IHRoaXMuYXhpcyxcbiAgICAgICAgICBkb21haW4sXG4gICAgICAgICAgY2hhcnRJZDogdGhpcy5jb25maWcuaWQsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuYnJvYWRjYXN0U2VydmljZS5icm9hZGNhc3Rab29tKHtcbiAgICAgICAgICBjaGFubmVsOiB0aGlzLmNvbmZpZz8uem9vbT8uc3luY0NoYW5uZWwsXG4gICAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuem9vbVNlcnZpY2UuZmlyZVpvb20oe1xuICAgICAgICBldmVudCxcbiAgICAgICAgdGFyZ2V0OiB0aGlzLmF4aXMsXG4gICAgICB9KTtcblxuICAgICAgdGhpcy5jdXJyZW50VHJhbnNmb3JtID0gZXZlbnQudHJhbnNmb3JtO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIHJ1bldoZWVsWm9vbSgpIHtcbiAgICBsZXQgdHlwZTogJ3N0YXJ0JyB8ICd6b29tJyB8ICdlbmQnID0gJ3N0YXJ0JztcbiAgICBsZXQgd2hlZWxpbmc7XG5cbiAgICB0aGlzLnpvb21cbiAgICAgIC5maWx0ZXIoXG4gICAgICAgIChldmVudCkgPT4ge1xuICAgICAgICAgIHJldHVybiAoZXZlbnQuY3RybEtleSAmJiBldmVudC50eXBlID09PSAnd2hlZWwnKSB8fFxuICAgICAgICAgICAgQm9vbGVhbih3aW5kb3cuVG91Y2hFdmVudCAmJiBldmVudC50eXBlICE9PSAnd2hlZWwnKTtcbiAgICAgICAgfVxuICAgICAgKVxuICAgICAgLndoZWVsRGVsdGEoKGV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGRlbHRhID1cbiAgICAgICAgICB0aGlzLmNvbmZpZz8uem9vbS50eXBlID09PSBab29tVHlwZS54XG4gICAgICAgICAgICA/IC1ldmVudC5kZWx0YVhcbiAgICAgICAgICAgIDogLWV2ZW50LmRlbHRhWTtcbiAgICAgICAgcmV0dXJuIGRlbHRhICogMC4wMDI7XG4gICAgICB9KTtcblxuICAgIGNvbnN0IGVtaXQgPSAodHlwZTogc3RyaW5nLCBldmVudDogV2hlZWxFdmVudCkgPT4ge1xuICAgICAgY29uc3Qgb3JpZ2luID0gdGhpcy5icnVzaFNjYWxlLmNvcHkoKS5kb21haW4odGhpcy5heGlzLmV4dHJlbWVzKTtcbiAgICAgIGxldCB0cmFuc2Zvcm0gPSB6b29tSWRlbnRpdHk7XG4gICAgICBjb25zdCBkZWx0YSA9XG4gICAgICAgIHR5cGUgPT09ICdlbmQnXG4gICAgICAgICAgPyAwXG4gICAgICAgICAgOiB0aGlzLmNvbmZpZy56b29tPy50eXBlID09PSBab29tVHlwZS55XG4gICAgICAgICAgICA/IGV2ZW50LmRlbHRhWVxuICAgICAgICAgICAgOiBldmVudC5kZWx0YVg7XG5cbiAgICAgIGlmICh0aGlzLmNvbmZpZy56b29tPy50eXBlID09PSBab29tVHlwZS55KSB7XG4gICAgICAgIHRyYW5zZm9ybSA9IHRyYW5zZm9ybS50cmFuc2xhdGUoXG4gICAgICAgICAgMCxcbiAgICAgICAgICB0aGlzLmN1cnJlbnRUcmFuc2Zvcm0ueSAtIGRlbHRhIC8gMlxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5jb25maWcuem9vbT8udHlwZSA9PT0gWm9vbVR5cGUueCkge1xuICAgICAgICB0cmFuc2Zvcm0gPSB0cmFuc2Zvcm0udHJhbnNsYXRlKFxuICAgICAgICAgIHRoaXMuY3VycmVudFRyYW5zZm9ybS54IC0gZGVsdGEgLyAyLFxuICAgICAgICAgIDBcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgdHJhbnNmb3JtID0gdHJhbnNmb3JtLnNjYWxlKHRoaXMuY3VycmVudFRyYW5zZm9ybS5rKTtcblxuICAgICAgbGV0IGRvbWFpbiA9XG4gICAgICAgIHRoaXMuY29uZmlnLnpvb20/LnR5cGUgPT09IFpvb21UeXBlLnlcbiAgICAgICAgICA/IHRyYW5zZm9ybS5yZXNjYWxlWShvcmlnaW4pLmRvbWFpbigpXG4gICAgICAgICAgOiB0cmFuc2Zvcm0ucmVzY2FsZVgob3JpZ2luKS5kb21haW4oKTtcblxuICAgICAgY29uc3QgbWVzc2FnZSA9IG5ldyBab29tTWVzc2FnZSh7XG4gICAgICAgIGV2ZW50OiB7XG4gICAgICAgICAgc291cmNlRXZlbnQ6IGV2ZW50LFxuICAgICAgICAgIHRyYW5zZm9ybSxcbiAgICAgICAgICB0eXBlLFxuICAgICAgICB9LFxuICAgICAgICBheGlzOiB0aGlzLmF4aXMsXG4gICAgICAgIGRvbWFpbixcbiAgICAgICAgY2hhcnRJZDogdGhpcy5jb25maWcuaWQsXG4gICAgICB9KTtcblxuICAgICAgdGhpcy56b29tU2VydmljZS5maXJlWm9vbSh7XG4gICAgICAgIGV2ZW50OiB7XG4gICAgICAgICAgc291cmNlRXZlbnQ6IGV2ZW50LFxuICAgICAgICAgIHRyYW5zZm9ybSxcbiAgICAgICAgICB0eXBlLFxuICAgICAgICB9LFxuICAgICAgICB0YXJnZXQ6IHRoaXMuYXhpcyxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLl9lbGVtZW50LmNhbGwodGhpcy56b29tLnRyYW5zZm9ybSwgdHJhbnNmb3JtKTtcbiAgICAgIHRoaXMuY3VycmVudFRyYW5zZm9ybSA9IHRyYW5zZm9ybTtcblxuICAgICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlLmJyb2FkY2FzdFpvb20oe1xuICAgICAgICBjaGFubmVsOiB0aGlzLmNvbmZpZz8uem9vbT8uc3luY0NoYW5uZWwsXG4gICAgICAgIG1lc3NhZ2UsXG4gICAgICB9KTtcbiAgICB9O1xuXG5cbiAgICB0aGlzLl9lbGVtZW50Lm9uKCd3aGVlbCcsIChldmVudDogV2hlZWxFdmVudCkgPT4ge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgaWYgKGV2ZW50LmN0cmxLZXkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICBjbGVhclRpbWVvdXQod2hlZWxpbmcpO1xuICAgICAgICBlbWl0KHR5cGUsIGV2ZW50KTtcbiAgICAgICAgdHlwZSA9ICd6b29tJztcblxuICAgICAgICB3aGVlbGluZyA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGVtaXQoJ2VuZCcsIGV2ZW50KTtcblxuICAgICAgICAgIHR5cGUgPSAnc3RhcnQnO1xuICAgICAgICB9LCA1MCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICB9XG59XG4iXX0=
|
|
@@ -446,17 +446,17 @@ function generateTicks(extremes) {
|
|
|
446
446
|
|
|
447
447
|
class AxisSizeBuilder {
|
|
448
448
|
constructor() {
|
|
449
|
-
this.titlePadding =
|
|
449
|
+
this.titlePadding = 11;
|
|
450
450
|
this.basePadding = 16;
|
|
451
451
|
this.backupRatio = 0.58;
|
|
452
452
|
}
|
|
453
453
|
build(settings) {
|
|
454
454
|
let finalPadding = this.basePadding;
|
|
455
455
|
if (settings.orientation === AxisOrientation.y) {
|
|
456
|
-
const formatter = settings.defaultFormatter();
|
|
456
|
+
const formatter = settings.options.tickFormat || settings.defaultFormatter();
|
|
457
457
|
finalPadding += settings.options.title ? this.titlePadding : 0;
|
|
458
458
|
const scale = settings.defaultScale();
|
|
459
|
-
const ticks = scale().domain(settings.extremes).ticks();
|
|
459
|
+
const ticks = scale().domain(settings.extremes).ticks(20);
|
|
460
460
|
const maxElementLengthIndex = maxIndex(ticks, (_) => formatter(_).length);
|
|
461
461
|
finalPadding += getTextWidth(formatter(ticks[maxElementLengthIndex]), this.backupRatio);
|
|
462
462
|
}
|
|
@@ -1568,10 +1568,10 @@ class GridlinesComponent {
|
|
|
1568
1568
|
}
|
|
1569
1569
|
}
|
|
1570
1570
|
GridlinesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: GridlinesComponent, deps: [{ token: ScaleService }, { token: ChartService }], target: i0.ɵɵFactoryTarget.Component });
|
|
1571
|
-
GridlinesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: GridlinesComponent, selector: "[teta-gridlines]", inputs: { size: "size" }, ngImport: i0, template: "<ng-container *ngIf=\"{\n xValues: tickXValues | async,\n yValues: tickYValues | async,\n x: x | async,\n y: y | async,\n config: config | async\n} as data\">\n <ng-container *ngIf=\"data.config.gridLines?.showY !== false\">\n <ng-container *ngFor=\"let tick of data.yValues\">\n <svg:line [attr.x1]=\"0\"\n [attr.y1]=\"data.y(tick)\"\n [attr.x2]=\"size?.width\"\n [attr.y2]=\"data.y(tick)\"></svg:line>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"data.config.gridLines?.showX !== false\">\n <ng-container *ngFor=\"let tick of data.xValues\">\n <svg:line [attr.x1]=\"data.x(tick)\"\n [attr.y1]=\"0\"\n [attr.x2]=\"data.x(tick)\"\n [attr.y2]=\"size?.height\"></svg:line>\n </ng-container>\n </ng-container>\n\n</ng-container>\n\n\n", styles: [":host{shape-rendering:crispEdges}:host line{stroke:var(--color-text-
|
|
1571
|
+
GridlinesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: GridlinesComponent, selector: "[teta-gridlines]", inputs: { size: "size" }, ngImport: i0, template: "<ng-container *ngIf=\"{\n xValues: tickXValues | async,\n yValues: tickYValues | async,\n x: x | async,\n y: y | async,\n config: config | async\n} as data\">\n <ng-container *ngIf=\"data.config.gridLines?.showY !== false\">\n <ng-container *ngFor=\"let tick of data.yValues\">\n <svg:line [attr.x1]=\"0\"\n [attr.y1]=\"data.y(tick)\"\n [attr.x2]=\"size?.width\"\n [attr.y2]=\"data.y(tick)\"></svg:line>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"data.config.gridLines?.showX !== false\">\n <ng-container *ngFor=\"let tick of data.xValues\">\n <svg:line [attr.x1]=\"data.x(tick)\"\n [attr.y1]=\"0\"\n [attr.x2]=\"data.x(tick)\"\n [attr.y2]=\"size?.height\"></svg:line>\n </ng-container>\n </ng-container>\n\n</ng-container>\n\n\n", styles: [":host{shape-rendering:crispEdges}:host line{stroke:var(--color-text-5)}\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: "pipe", type: i4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1572
1572
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: GridlinesComponent, decorators: [{
|
|
1573
1573
|
type: Component,
|
|
1574
|
-
args: [{ selector: '[teta-gridlines]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"{\n xValues: tickXValues | async,\n yValues: tickYValues | async,\n x: x | async,\n y: y | async,\n config: config | async\n} as data\">\n <ng-container *ngIf=\"data.config.gridLines?.showY !== false\">\n <ng-container *ngFor=\"let tick of data.yValues\">\n <svg:line [attr.x1]=\"0\"\n [attr.y1]=\"data.y(tick)\"\n [attr.x2]=\"size?.width\"\n [attr.y2]=\"data.y(tick)\"></svg:line>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"data.config.gridLines?.showX !== false\">\n <ng-container *ngFor=\"let tick of data.xValues\">\n <svg:line [attr.x1]=\"data.x(tick)\"\n [attr.y1]=\"0\"\n [attr.x2]=\"data.x(tick)\"\n [attr.y2]=\"size?.height\"></svg:line>\n </ng-container>\n </ng-container>\n\n</ng-container>\n\n\n", styles: [":host{shape-rendering:crispEdges}:host line{stroke:var(--color-text-
|
|
1574
|
+
args: [{ selector: '[teta-gridlines]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"{\n xValues: tickXValues | async,\n yValues: tickYValues | async,\n x: x | async,\n y: y | async,\n config: config | async\n} as data\">\n <ng-container *ngIf=\"data.config.gridLines?.showY !== false\">\n <ng-container *ngFor=\"let tick of data.yValues\">\n <svg:line [attr.x1]=\"0\"\n [attr.y1]=\"data.y(tick)\"\n [attr.x2]=\"size?.width\"\n [attr.y2]=\"data.y(tick)\"></svg:line>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"data.config.gridLines?.showX !== false\">\n <ng-container *ngFor=\"let tick of data.xValues\">\n <svg:line [attr.x1]=\"data.x(tick)\"\n [attr.y1]=\"0\"\n [attr.x2]=\"data.x(tick)\"\n [attr.y2]=\"size?.height\"></svg:line>\n </ng-container>\n </ng-container>\n\n</ng-container>\n\n\n", styles: [":host{shape-rendering:crispEdges}:host line{stroke:var(--color-text-5)}\n"] }]
|
|
1575
1575
|
}], ctorParameters: function () { return [{ type: ScaleService }, { type: ChartService }]; }, propDecorators: { size: [{
|
|
1576
1576
|
type: Input
|
|
1577
1577
|
}] } });
|
|
@@ -2070,10 +2070,10 @@ class ZoomableDirective {
|
|
|
2070
2070
|
let transform = zoomIdentity.scale(scale);
|
|
2071
2071
|
if (((_c = (_b = this.config) === null || _b === void 0 ? void 0 : _b.zoom) === null || _c === void 0 ? void 0 : _c.type) === ZoomType.x) {
|
|
2072
2072
|
if ((_d = this.config.xAxis[0]) === null || _d === void 0 ? void 0 : _d.inverted) {
|
|
2073
|
-
transform = transform.translate(
|
|
2073
|
+
transform = transform.translate(this.brushScale(-m.message.domain[1]), 0);
|
|
2074
2074
|
}
|
|
2075
2075
|
else {
|
|
2076
|
-
transform = transform.translate(this.brushScale(
|
|
2076
|
+
transform = transform.translate(-this.brushScale(m.message.domain[0]), 0);
|
|
2077
2077
|
}
|
|
2078
2078
|
}
|
|
2079
2079
|
if (((_f = (_e = this.config) === null || _e === void 0 ? void 0 : _e.zoom) === null || _f === void 0 ? void 0 : _f.type) === ZoomType.y) {
|
|
@@ -2465,7 +2465,7 @@ class ChartContainerComponent {
|
|
|
2465
2465
|
}
|
|
2466
2466
|
getTranslate(axis, size) {
|
|
2467
2467
|
return this.scales.pipe(withLatestFrom(this.config), map((data) => {
|
|
2468
|
-
var _a, _b;
|
|
2468
|
+
var _a, _b, _c, _d, _e, _f;
|
|
2469
2469
|
const [{ x, y }, config] = data;
|
|
2470
2470
|
const xAxesArray = Array.from(x.values());
|
|
2471
2471
|
const yAxesArray = Array.from(y.values());
|
|
@@ -2475,16 +2475,16 @@ class ChartContainerComponent {
|
|
|
2475
2475
|
const nonOppositeOffsetY = yAxesArray.filter(nonOppositeFilter(axis));
|
|
2476
2476
|
const oppositeOffsetX = xAxesArray.filter(oppositeFilter(axis));
|
|
2477
2477
|
const nonOppositeOffsetX = xAxesArray.filter(nonOppositeFilter(axis));
|
|
2478
|
-
const oppositeTranslateY = oppositeOffsetY.reduce((acc, curr) => acc + curr.selfSize, 0);
|
|
2479
|
-
const nonOppisteTranslateY = nonOppositeOffsetY.reduce((acc, curr) => acc + curr.selfSize, 0);
|
|
2480
|
-
const oppositeTranslateX = oppositeOffsetX.reduce((acc, curr) => acc + curr.selfSize, 0);
|
|
2481
|
-
const nonOppisteTranslateX = nonOppositeOffsetX.reduce((acc, curr) => acc + curr.selfSize, 0);
|
|
2478
|
+
const oppositeTranslateY = oppositeOffsetY.reduce((acc, curr) => acc + curr.selfSize, (_a = config.bounds) === null || _a === void 0 ? void 0 : _a.top);
|
|
2479
|
+
const nonOppisteTranslateY = nonOppositeOffsetY.reduce((acc, curr) => acc + curr.selfSize, (_b = config.bounds) === null || _b === void 0 ? void 0 : _b.left);
|
|
2480
|
+
const oppositeTranslateX = oppositeOffsetX.reduce((acc, curr) => acc + curr.selfSize, (_c = config.bounds) === null || _c === void 0 ? void 0 : _c.right);
|
|
2481
|
+
const nonOppisteTranslateX = nonOppositeOffsetX.reduce((acc, curr) => acc + curr.selfSize, (_d = config.bounds) === null || _d === void 0 ? void 0 : _d.bottom);
|
|
2482
2482
|
const left = yAxesArray
|
|
2483
2483
|
.filter((_) => _.options.visible && _.options.opposite !== true)
|
|
2484
|
-
.reduce((acc, curr) => acc + curr.selfSize, (
|
|
2484
|
+
.reduce((acc, curr) => acc + curr.selfSize, (_e = config.bounds) === null || _e === void 0 ? void 0 : _e.left);
|
|
2485
2485
|
const top = xAxesArray
|
|
2486
2486
|
.filter((_) => _.options.visible && _.options.opposite === true)
|
|
2487
|
-
.reduce((acc, curr) => acc + curr.selfSize, (
|
|
2487
|
+
.reduce((acc, curr) => acc + curr.selfSize, (_f = config.bounds) === null || _f === void 0 ? void 0 : _f.top);
|
|
2488
2488
|
if (axis.orientation === AxisOrientation.x) {
|
|
2489
2489
|
return `translate(${left}, ${axis.options.opposite
|
|
2490
2490
|
? oppositeTranslateX
|