igniteui-angular 18.0.5 → 18.0.7

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.
@@ -260,11 +260,11 @@ export class IgxGridHeaderGroupComponent {
260
260
  };
261
261
  }
262
262
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: IgxGridHeaderGroupComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: IGX_GRID_BASE }, { token: i0.ElementRef }, { token: i1.IgxColumnResizingService }, { token: i2.IgxFilteringService }, { token: i3.PlatformUtil }], target: i0.ɵɵFactoryTarget.Component }); }
263
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.1", type: IgxGridHeaderGroupComponent, isStandalone: true, selector: "igx-grid-header-group", inputs: { column: "column" }, host: { listeners: { "mousedown": "onMouseDown($event)" }, properties: { "style.grid-row-end": "this.rowEnd", "style.grid-column-end": "this.colEnd", "style.grid-row-start": "this.rowStart", "style.grid-column-start": "this.colStart", "attr.id": "this.headerID", "class.igx-grid-th--active": "this.active", "class.igx-grid-thead__item": "this.defaultCss", "class.igx-grid-th--pinned": "this.pinnedCss", "class.igx-grid-th--pinned-last": "this.pinnedLastCss", "class.igx-grid-th--pinned-first": "this.pinnedFirstCSS", "class.igx-grid__drag-col-header": "this.headerDragCss", "class.igx-grid-th--filtering": "this.filteringCss", "style.z-index": "this.zIndex", "style.display": "this.groupDisplayStyle" } }, viewQueries: [{ propertyName: "header", first: true, predicate: IgxGridHeaderComponent, descendants: true }, { propertyName: "filter", first: true, predicate: IgxGridFilteringCellComponent, descendants: true }, { propertyName: "children", predicate: i0.forwardRef(() => IgxGridHeaderGroupComponent), descendants: true, read: IgxGridHeaderGroupComponent }], ngImport: i0, template: "<ng-container *ngIf=\"grid.hasColumnLayouts && column.columnGroup\">\n <span *ngIf=\"grid.moving\" class=\"igx-grid-th__drop-indicator-left\"></span>\n <div class=\"igx-grid-thead__group igx-grid__mrl-block\"\n [ngClass]=\"{\n 'igx-grid-th--pinned-last': hasLastPinnedChildColumn,\n 'igx-grid-th--pinned-first': hasFirstPinnedChildColumn\n }\"\n [ngStyle]=\"{'grid-template-rows':column.getGridTemplate(true),\n 'grid-template-columns':column.getGridTemplate(false)}\">\n <ng-container *ngFor=\"let child of column.children\" >\n <igx-grid-header-group *ngIf=\"!child.hidden\" class=\"igx-grid-thead__subgroup\"\n [ngClass]=\"child.headerGroupClasses\"\n [ngStyle]=\"child.headerGroupStyles | igxHeaderGroupStyle:child:grid.pipeTrigger\"\n [column]=\"child\"\n [igxColumnMovingDrag]=\"child\"\n [ghostHost]=\"grid.outlet.nativeElement\"\n [attr.droppable]=\"true\"\n [igxColumnMovingDrop]=\"child\">\n </igx-grid-header-group>\n </ng-container>\n </div>\n <span *ngIf=\"grid.moving\" class=\"igx-grid-th__drop-indicator-right\"></span>\n</ng-container>\n\n\n<ng-template #defaultColumn>\n <span class=\"igx-grid-th__group-title\" [title]=\"title\">{{column.header}}</span>\n</ng-template>\n\n<ng-template #defaultCollapseIndicator>\n <igx-icon>{{column.expanded ? 'expand_more' : 'chevron_right'}} </igx-icon>\n</ng-template>\n\n<ng-container *ngIf=\"!grid.hasColumnLayouts && column.columnGroup\">\n <span *ngIf=\"grid.moving\" class=\"igx-grid-th__drop-indicator-left\"></span>\n <div class=\"igx-grid-thead__title\"\n role=\"columnheader\"\n [attr.aria-label]=\"column.header || column.field\"\n [attr.aria-expanded]=\"column.expanded\"\n [attr.aria-selected]=\"column.selected\"\n [ngClass]=\"{\n 'igx-grid-th--pinned-last': hasLastPinnedChildColumn,\n 'igx-grid-th--pinned-first': hasFirstPinnedChildColumn,\n 'igx-grid-th--collapsible': column.collapsible,\n 'igx-grid-th--selectable': selectable,\n 'igx-grid-th--selected': selected,\n 'igx-grid-th--active': activeGroup}\"\n [igxColumnMovingDrag]=\"column\"\n [ghostHost]=\"grid.outlet.nativeElement\"\n [attr.droppable]=\"true\"\n [igxColumnMovingDrop]=\"column\"\n (pointerdown)=\"pointerdown($event)\"\n (click)=\"groupClicked($event)\"\n (pointerenter)=\"onPinterEnter()\"\n (pointerleave)=\"onPointerLeave()\"\n >\n <ng-container *ngIf=\"column.collapsible\">\n <div class=\"igx-grid-th__expander\" (pointerdown)=\"onPointerDownIndicator($event)\" (click)=\"toggleExpandState($event)\">\n <ng-container\n *ngTemplateOutlet=\"column.collapsibleIndicatorTemplate ? column.collapsibleIndicatorTemplate : defaultCollapseIndicator; context: {$implicit: column, column: column}\">\n </ng-container>\n </div>\n </ng-container>\n <ng-container *ngTemplateOutlet=\"column.headerTemplate ? column.headerTemplate : defaultColumn; context: { $implicit: column, column: column}\">\n </ng-container>\n </div>\n <div class=\"igx-grid-thead__group\" *ngIf='!grid.isPivot'>\n <ng-container *ngFor=\"let child of column.children\">\n <igx-grid-header-group *ngIf=\"!child.hidden\" class=\"igx-grid-thead__subgroup\"\n [ngClass]=\"child.headerGroupClasses\"\n [ngStyle]=\"child.headerGroupStyles | igxHeaderGroupStyle:child:grid.pipeTrigger\"\n [column]=\"child\"\n [style.min-width]=\"child.calcWidth | igxHeaderGroupWidth:grid.defaultHeaderGroupMinWidth:grid.hasColumnLayouts\"\n [style.flex-basis]=\"child.calcWidth | igxHeaderGroupWidth:grid.defaultHeaderGroupMinWidth:grid.hasColumnLayouts\">\n </igx-grid-header-group>\n </ng-container>\n </div>\n <span *ngIf=\"grid.moving\" class=\"igx-grid-th__drop-indicator-right\"></span>\n</ng-container>\n\n<ng-container *ngIf=\"!column.columnGroup\">\n <span *ngIf=\"grid.moving\" class=\"igx-grid-th__drop-indicator-left\"></span>\n <igx-grid-header\n role=\"columnheader\"\n class=\"igx-grid-th--fw\"\n [id]=\"grid.id + '_' + column.field\"\n [ngClass]=\"column.headerClasses\"\n [ngStyle]=\"column.headerStyles | igxHeaderGroupStyle:column:grid.pipeTrigger\"\n [igxColumnMovingDrag]=\"column\"\n [ghostHost]=\"grid.outlet.nativeElement\"\n [attr.droppable]=\"true\"\n (pointerdown)=\"activate()\"\n [igxColumnMovingDrop]=\"column\"\n [column]=\"column\"\n >\n </igx-grid-header>\n <igx-grid-filtering-cell *ngIf=\"grid.allowFiltering && grid.filterMode === 'quickFilter'\" [column]=\"column\" [attr.draggable]=\"false\"></igx-grid-filtering-cell>\n <span *ngIf=\"!column.columnGroup && column.resizable\" class=\"igx-grid-th__resize-handle\"\n [igxResizeHandle]=\"column\"\n [attr.draggable]=\"false\"\n [style.cursor]=\"colResizingService.resizeCursor\">\n </span>\n <span *ngIf=\"grid.moving\" class=\"igx-grid-th__drop-indicator-right\"></span>\n</ng-container>\n", dependencies: [{ kind: "component", type: IgxGridHeaderGroupComponent, selector: "igx-grid-header-group", inputs: ["column"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: IgxColumnMovingDragDirective, selector: "[igxColumnMovingDrag]", inputs: ["igxColumnMovingDrag"] }, { kind: "directive", type: IgxColumnMovingDropDirective, selector: "[igxColumnMovingDrop]", inputs: ["igxColumnMovingDrop"] }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["family", "active", "name"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: IgxGridHeaderComponent, selector: "igx-grid-header", inputs: ["column"] }, { kind: "component", type: IgxGridFilteringCellComponent, selector: "igx-grid-filtering-cell", inputs: ["column"] }, { kind: "directive", type: IgxResizeHandleDirective, selector: "[igxResizeHandle]", inputs: ["igxResizeHandle"] }, { kind: "pipe", type: IgxHeaderGroupWidthPipe, name: "igxHeaderGroupWidth" }, { kind: "pipe", type: IgxHeaderGroupStylePipe, name: "igxHeaderGroupStyle" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
263
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.1", type: IgxGridHeaderGroupComponent, isStandalone: true, selector: "igx-grid-header-group", inputs: { column: "column" }, host: { listeners: { "mousedown": "onMouseDown($event)" }, properties: { "style.grid-row-end": "this.rowEnd", "style.grid-column-end": "this.colEnd", "style.grid-row-start": "this.rowStart", "style.grid-column-start": "this.colStart", "attr.id": "this.headerID", "class.igx-grid-th--active": "this.active", "class.igx-grid-thead__item": "this.defaultCss", "class.igx-grid-th--pinned": "this.pinnedCss", "class.igx-grid-th--pinned-last": "this.pinnedLastCss", "class.igx-grid-th--pinned-first": "this.pinnedFirstCSS", "class.igx-grid__drag-col-header": "this.headerDragCss", "class.igx-grid-th--filtering": "this.filteringCss", "style.z-index": "this.zIndex", "style.display": "this.groupDisplayStyle" } }, viewQueries: [{ propertyName: "header", first: true, predicate: IgxGridHeaderComponent, descendants: true }, { propertyName: "filter", first: true, predicate: IgxGridFilteringCellComponent, descendants: true }, { propertyName: "children", predicate: i0.forwardRef(() => IgxGridHeaderGroupComponent), descendants: true, read: IgxGridHeaderGroupComponent }], ngImport: i0, template: "<ng-container *ngIf=\"grid.hasColumnLayouts && column.columnGroup\">\n <span *ngIf=\"grid.moving\" class=\"igx-grid-th__drop-indicator-left\"></span>\n <div class=\"igx-grid-thead__group igx-grid__mrl-block\"\n [ngClass]=\"{\n 'igx-grid-th--pinned-last': hasLastPinnedChildColumn,\n 'igx-grid-th--pinned-first': hasFirstPinnedChildColumn\n }\"\n [ngStyle]=\"{'grid-template-rows':column.getGridTemplate(true),\n 'grid-template-columns':column.getGridTemplate(false)}\">\n <ng-container *ngFor=\"let child of column.children\" >\n <igx-grid-header-group *ngIf=\"!child.hidden\" class=\"igx-grid-thead__subgroup\"\n [ngClass]=\"child.headerGroupClasses\"\n [ngStyle]=\"child.headerGroupStyles | igxHeaderGroupStyle:child:grid.pipeTrigger\"\n [column]=\"child\">\n </igx-grid-header-group>\n </ng-container>\n </div>\n <span *ngIf=\"grid.moving\" class=\"igx-grid-th__drop-indicator-right\"></span>\n</ng-container>\n\n\n<ng-template #defaultColumn>\n <span class=\"igx-grid-th__group-title\" [title]=\"title\">{{column.header}}</span>\n</ng-template>\n\n<ng-template #defaultCollapseIndicator>\n <igx-icon>{{column.expanded ? 'expand_more' : 'chevron_right'}} </igx-icon>\n</ng-template>\n\n<ng-container *ngIf=\"!grid.hasColumnLayouts && column.columnGroup\">\n <span *ngIf=\"grid.moving\" class=\"igx-grid-th__drop-indicator-left\"></span>\n <div class=\"igx-grid-thead__title\"\n role=\"columnheader\"\n [attr.aria-label]=\"column.header || column.field\"\n [attr.aria-expanded]=\"column.expanded\"\n [attr.aria-selected]=\"column.selected\"\n [ngClass]=\"{\n 'igx-grid-th--pinned-last': hasLastPinnedChildColumn,\n 'igx-grid-th--pinned-first': hasFirstPinnedChildColumn,\n 'igx-grid-th--collapsible': column.collapsible,\n 'igx-grid-th--selectable': selectable,\n 'igx-grid-th--selected': selected,\n 'igx-grid-th--active': activeGroup}\"\n [igxColumnMovingDrag]=\"column\"\n [ghostHost]=\"grid.outlet.nativeElement\"\n [attr.droppable]=\"true\"\n [igxColumnMovingDrop]=\"column\"\n (pointerdown)=\"pointerdown($event)\"\n (click)=\"groupClicked($event)\"\n (pointerenter)=\"onPinterEnter()\"\n (pointerleave)=\"onPointerLeave()\"\n >\n <ng-container *ngIf=\"column.collapsible\">\n <div class=\"igx-grid-th__expander\" (pointerdown)=\"onPointerDownIndicator($event)\" (click)=\"toggleExpandState($event)\">\n <ng-container\n *ngTemplateOutlet=\"column.collapsibleIndicatorTemplate ? column.collapsibleIndicatorTemplate : defaultCollapseIndicator; context: {$implicit: column, column: column}\">\n </ng-container>\n </div>\n </ng-container>\n <ng-container *ngTemplateOutlet=\"column.headerTemplate ? column.headerTemplate : defaultColumn; context: { $implicit: column, column: column}\">\n </ng-container>\n </div>\n <div class=\"igx-grid-thead__group\" *ngIf='!grid.isPivot'>\n <ng-container *ngFor=\"let child of column.children\">\n <igx-grid-header-group *ngIf=\"!child.hidden\" class=\"igx-grid-thead__subgroup\"\n [ngClass]=\"child.headerGroupClasses\"\n [ngStyle]=\"child.headerGroupStyles | igxHeaderGroupStyle:child:grid.pipeTrigger\"\n [column]=\"child\"\n [style.min-width]=\"child.resolvedWidth | igxHeaderGroupWidth:grid.defaultHeaderGroupMinWidth:grid.hasColumnLayouts\"\n [style.flex-basis]=\"child.resolvedWidth | igxHeaderGroupWidth:grid.defaultHeaderGroupMinWidth:grid.hasColumnLayouts\">\n </igx-grid-header-group>\n </ng-container>\n </div>\n <span *ngIf=\"grid.moving\" class=\"igx-grid-th__drop-indicator-right\"></span>\n</ng-container>\n\n<ng-container *ngIf=\"!column.columnGroup\">\n <span *ngIf=\"grid.moving\" class=\"igx-grid-th__drop-indicator-left\"></span>\n <igx-grid-header\n role=\"columnheader\"\n class=\"igx-grid-th--fw\"\n [id]=\"grid.id + '_' + column.field\"\n [ngClass]=\"column.headerClasses\"\n [ngStyle]=\"column.headerStyles | igxHeaderGroupStyle:column:grid.pipeTrigger\"\n [igxColumnMovingDrag]=\"column\"\n [ghostHost]=\"grid.outlet.nativeElement\"\n [attr.droppable]=\"true\"\n (pointerdown)=\"activate()\"\n [igxColumnMovingDrop]=\"column\"\n [column]=\"column\"\n >\n </igx-grid-header>\n <igx-grid-filtering-cell *ngIf=\"grid.allowFiltering && grid.filterMode === 'quickFilter'\" [column]=\"column\" [attr.draggable]=\"false\"></igx-grid-filtering-cell>\n <span *ngIf=\"!column.columnGroup && column.resizable\" class=\"igx-grid-th__resize-handle\"\n [igxResizeHandle]=\"column\"\n [attr.draggable]=\"false\"\n [style.cursor]=\"colResizingService.resizeCursor\">\n </span>\n <span *ngIf=\"grid.moving\" class=\"igx-grid-th__drop-indicator-right\"></span>\n</ng-container>\n", dependencies: [{ kind: "component", type: IgxGridHeaderGroupComponent, selector: "igx-grid-header-group", inputs: ["column"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: IgxColumnMovingDragDirective, selector: "[igxColumnMovingDrag]", inputs: ["igxColumnMovingDrag"] }, { kind: "directive", type: IgxColumnMovingDropDirective, selector: "[igxColumnMovingDrop]", inputs: ["igxColumnMovingDrop"] }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["family", "active", "name"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: IgxGridHeaderComponent, selector: "igx-grid-header", inputs: ["column"] }, { kind: "component", type: IgxGridFilteringCellComponent, selector: "igx-grid-filtering-cell", inputs: ["column"] }, { kind: "directive", type: IgxResizeHandleDirective, selector: "[igxResizeHandle]", inputs: ["igxResizeHandle"] }, { kind: "pipe", type: IgxHeaderGroupWidthPipe, name: "igxHeaderGroupWidth" }, { kind: "pipe", type: IgxHeaderGroupStylePipe, name: "igxHeaderGroupStyle" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
264
264
  }
265
265
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: IgxGridHeaderGroupComponent, decorators: [{
266
266
  type: Component,
267
- args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'igx-grid-header-group', standalone: true, imports: [NgIf, NgClass, NgStyle, NgFor, IgxColumnMovingDragDirective, IgxColumnMovingDropDirective, IgxIconComponent, NgTemplateOutlet, IgxGridHeaderComponent, IgxGridFilteringCellComponent, IgxResizeHandleDirective, IgxHeaderGroupWidthPipe, IgxHeaderGroupStylePipe], template: "<ng-container *ngIf=\"grid.hasColumnLayouts && column.columnGroup\">\n <span *ngIf=\"grid.moving\" class=\"igx-grid-th__drop-indicator-left\"></span>\n <div class=\"igx-grid-thead__group igx-grid__mrl-block\"\n [ngClass]=\"{\n 'igx-grid-th--pinned-last': hasLastPinnedChildColumn,\n 'igx-grid-th--pinned-first': hasFirstPinnedChildColumn\n }\"\n [ngStyle]=\"{'grid-template-rows':column.getGridTemplate(true),\n 'grid-template-columns':column.getGridTemplate(false)}\">\n <ng-container *ngFor=\"let child of column.children\" >\n <igx-grid-header-group *ngIf=\"!child.hidden\" class=\"igx-grid-thead__subgroup\"\n [ngClass]=\"child.headerGroupClasses\"\n [ngStyle]=\"child.headerGroupStyles | igxHeaderGroupStyle:child:grid.pipeTrigger\"\n [column]=\"child\"\n [igxColumnMovingDrag]=\"child\"\n [ghostHost]=\"grid.outlet.nativeElement\"\n [attr.droppable]=\"true\"\n [igxColumnMovingDrop]=\"child\">\n </igx-grid-header-group>\n </ng-container>\n </div>\n <span *ngIf=\"grid.moving\" class=\"igx-grid-th__drop-indicator-right\"></span>\n</ng-container>\n\n\n<ng-template #defaultColumn>\n <span class=\"igx-grid-th__group-title\" [title]=\"title\">{{column.header}}</span>\n</ng-template>\n\n<ng-template #defaultCollapseIndicator>\n <igx-icon>{{column.expanded ? 'expand_more' : 'chevron_right'}} </igx-icon>\n</ng-template>\n\n<ng-container *ngIf=\"!grid.hasColumnLayouts && column.columnGroup\">\n <span *ngIf=\"grid.moving\" class=\"igx-grid-th__drop-indicator-left\"></span>\n <div class=\"igx-grid-thead__title\"\n role=\"columnheader\"\n [attr.aria-label]=\"column.header || column.field\"\n [attr.aria-expanded]=\"column.expanded\"\n [attr.aria-selected]=\"column.selected\"\n [ngClass]=\"{\n 'igx-grid-th--pinned-last': hasLastPinnedChildColumn,\n 'igx-grid-th--pinned-first': hasFirstPinnedChildColumn,\n 'igx-grid-th--collapsible': column.collapsible,\n 'igx-grid-th--selectable': selectable,\n 'igx-grid-th--selected': selected,\n 'igx-grid-th--active': activeGroup}\"\n [igxColumnMovingDrag]=\"column\"\n [ghostHost]=\"grid.outlet.nativeElement\"\n [attr.droppable]=\"true\"\n [igxColumnMovingDrop]=\"column\"\n (pointerdown)=\"pointerdown($event)\"\n (click)=\"groupClicked($event)\"\n (pointerenter)=\"onPinterEnter()\"\n (pointerleave)=\"onPointerLeave()\"\n >\n <ng-container *ngIf=\"column.collapsible\">\n <div class=\"igx-grid-th__expander\" (pointerdown)=\"onPointerDownIndicator($event)\" (click)=\"toggleExpandState($event)\">\n <ng-container\n *ngTemplateOutlet=\"column.collapsibleIndicatorTemplate ? column.collapsibleIndicatorTemplate : defaultCollapseIndicator; context: {$implicit: column, column: column}\">\n </ng-container>\n </div>\n </ng-container>\n <ng-container *ngTemplateOutlet=\"column.headerTemplate ? column.headerTemplate : defaultColumn; context: { $implicit: column, column: column}\">\n </ng-container>\n </div>\n <div class=\"igx-grid-thead__group\" *ngIf='!grid.isPivot'>\n <ng-container *ngFor=\"let child of column.children\">\n <igx-grid-header-group *ngIf=\"!child.hidden\" class=\"igx-grid-thead__subgroup\"\n [ngClass]=\"child.headerGroupClasses\"\n [ngStyle]=\"child.headerGroupStyles | igxHeaderGroupStyle:child:grid.pipeTrigger\"\n [column]=\"child\"\n [style.min-width]=\"child.calcWidth | igxHeaderGroupWidth:grid.defaultHeaderGroupMinWidth:grid.hasColumnLayouts\"\n [style.flex-basis]=\"child.calcWidth | igxHeaderGroupWidth:grid.defaultHeaderGroupMinWidth:grid.hasColumnLayouts\">\n </igx-grid-header-group>\n </ng-container>\n </div>\n <span *ngIf=\"grid.moving\" class=\"igx-grid-th__drop-indicator-right\"></span>\n</ng-container>\n\n<ng-container *ngIf=\"!column.columnGroup\">\n <span *ngIf=\"grid.moving\" class=\"igx-grid-th__drop-indicator-left\"></span>\n <igx-grid-header\n role=\"columnheader\"\n class=\"igx-grid-th--fw\"\n [id]=\"grid.id + '_' + column.field\"\n [ngClass]=\"column.headerClasses\"\n [ngStyle]=\"column.headerStyles | igxHeaderGroupStyle:column:grid.pipeTrigger\"\n [igxColumnMovingDrag]=\"column\"\n [ghostHost]=\"grid.outlet.nativeElement\"\n [attr.droppable]=\"true\"\n (pointerdown)=\"activate()\"\n [igxColumnMovingDrop]=\"column\"\n [column]=\"column\"\n >\n </igx-grid-header>\n <igx-grid-filtering-cell *ngIf=\"grid.allowFiltering && grid.filterMode === 'quickFilter'\" [column]=\"column\" [attr.draggable]=\"false\"></igx-grid-filtering-cell>\n <span *ngIf=\"!column.columnGroup && column.resizable\" class=\"igx-grid-th__resize-handle\"\n [igxResizeHandle]=\"column\"\n [attr.draggable]=\"false\"\n [style.cursor]=\"colResizingService.resizeCursor\">\n </span>\n <span *ngIf=\"grid.moving\" class=\"igx-grid-th__drop-indicator-right\"></span>\n</ng-container>\n" }]
267
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'igx-grid-header-group', standalone: true, imports: [NgIf, NgClass, NgStyle, NgFor, IgxColumnMovingDragDirective, IgxColumnMovingDropDirective, IgxIconComponent, NgTemplateOutlet, IgxGridHeaderComponent, IgxGridFilteringCellComponent, IgxResizeHandleDirective, IgxHeaderGroupWidthPipe, IgxHeaderGroupStylePipe], template: "<ng-container *ngIf=\"grid.hasColumnLayouts && column.columnGroup\">\n <span *ngIf=\"grid.moving\" class=\"igx-grid-th__drop-indicator-left\"></span>\n <div class=\"igx-grid-thead__group igx-grid__mrl-block\"\n [ngClass]=\"{\n 'igx-grid-th--pinned-last': hasLastPinnedChildColumn,\n 'igx-grid-th--pinned-first': hasFirstPinnedChildColumn\n }\"\n [ngStyle]=\"{'grid-template-rows':column.getGridTemplate(true),\n 'grid-template-columns':column.getGridTemplate(false)}\">\n <ng-container *ngFor=\"let child of column.children\" >\n <igx-grid-header-group *ngIf=\"!child.hidden\" class=\"igx-grid-thead__subgroup\"\n [ngClass]=\"child.headerGroupClasses\"\n [ngStyle]=\"child.headerGroupStyles | igxHeaderGroupStyle:child:grid.pipeTrigger\"\n [column]=\"child\">\n </igx-grid-header-group>\n </ng-container>\n </div>\n <span *ngIf=\"grid.moving\" class=\"igx-grid-th__drop-indicator-right\"></span>\n</ng-container>\n\n\n<ng-template #defaultColumn>\n <span class=\"igx-grid-th__group-title\" [title]=\"title\">{{column.header}}</span>\n</ng-template>\n\n<ng-template #defaultCollapseIndicator>\n <igx-icon>{{column.expanded ? 'expand_more' : 'chevron_right'}} </igx-icon>\n</ng-template>\n\n<ng-container *ngIf=\"!grid.hasColumnLayouts && column.columnGroup\">\n <span *ngIf=\"grid.moving\" class=\"igx-grid-th__drop-indicator-left\"></span>\n <div class=\"igx-grid-thead__title\"\n role=\"columnheader\"\n [attr.aria-label]=\"column.header || column.field\"\n [attr.aria-expanded]=\"column.expanded\"\n [attr.aria-selected]=\"column.selected\"\n [ngClass]=\"{\n 'igx-grid-th--pinned-last': hasLastPinnedChildColumn,\n 'igx-grid-th--pinned-first': hasFirstPinnedChildColumn,\n 'igx-grid-th--collapsible': column.collapsible,\n 'igx-grid-th--selectable': selectable,\n 'igx-grid-th--selected': selected,\n 'igx-grid-th--active': activeGroup}\"\n [igxColumnMovingDrag]=\"column\"\n [ghostHost]=\"grid.outlet.nativeElement\"\n [attr.droppable]=\"true\"\n [igxColumnMovingDrop]=\"column\"\n (pointerdown)=\"pointerdown($event)\"\n (click)=\"groupClicked($event)\"\n (pointerenter)=\"onPinterEnter()\"\n (pointerleave)=\"onPointerLeave()\"\n >\n <ng-container *ngIf=\"column.collapsible\">\n <div class=\"igx-grid-th__expander\" (pointerdown)=\"onPointerDownIndicator($event)\" (click)=\"toggleExpandState($event)\">\n <ng-container\n *ngTemplateOutlet=\"column.collapsibleIndicatorTemplate ? column.collapsibleIndicatorTemplate : defaultCollapseIndicator; context: {$implicit: column, column: column}\">\n </ng-container>\n </div>\n </ng-container>\n <ng-container *ngTemplateOutlet=\"column.headerTemplate ? column.headerTemplate : defaultColumn; context: { $implicit: column, column: column}\">\n </ng-container>\n </div>\n <div class=\"igx-grid-thead__group\" *ngIf='!grid.isPivot'>\n <ng-container *ngFor=\"let child of column.children\">\n <igx-grid-header-group *ngIf=\"!child.hidden\" class=\"igx-grid-thead__subgroup\"\n [ngClass]=\"child.headerGroupClasses\"\n [ngStyle]=\"child.headerGroupStyles | igxHeaderGroupStyle:child:grid.pipeTrigger\"\n [column]=\"child\"\n [style.min-width]=\"child.resolvedWidth | igxHeaderGroupWidth:grid.defaultHeaderGroupMinWidth:grid.hasColumnLayouts\"\n [style.flex-basis]=\"child.resolvedWidth | igxHeaderGroupWidth:grid.defaultHeaderGroupMinWidth:grid.hasColumnLayouts\">\n </igx-grid-header-group>\n </ng-container>\n </div>\n <span *ngIf=\"grid.moving\" class=\"igx-grid-th__drop-indicator-right\"></span>\n</ng-container>\n\n<ng-container *ngIf=\"!column.columnGroup\">\n <span *ngIf=\"grid.moving\" class=\"igx-grid-th__drop-indicator-left\"></span>\n <igx-grid-header\n role=\"columnheader\"\n class=\"igx-grid-th--fw\"\n [id]=\"grid.id + '_' + column.field\"\n [ngClass]=\"column.headerClasses\"\n [ngStyle]=\"column.headerStyles | igxHeaderGroupStyle:column:grid.pipeTrigger\"\n [igxColumnMovingDrag]=\"column\"\n [ghostHost]=\"grid.outlet.nativeElement\"\n [attr.droppable]=\"true\"\n (pointerdown)=\"activate()\"\n [igxColumnMovingDrop]=\"column\"\n [column]=\"column\"\n >\n </igx-grid-header>\n <igx-grid-filtering-cell *ngIf=\"grid.allowFiltering && grid.filterMode === 'quickFilter'\" [column]=\"column\" [attr.draggable]=\"false\"></igx-grid-filtering-cell>\n <span *ngIf=\"!column.columnGroup && column.resizable\" class=\"igx-grid-th__resize-handle\"\n [igxResizeHandle]=\"column\"\n [attr.draggable]=\"false\"\n [style.cursor]=\"colResizingService.resizeCursor\">\n </span>\n <span *ngIf=\"grid.moving\" class=\"igx-grid-th__drop-indicator-right\"></span>\n</ng-container>\n" }]
268
268
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
269
269
  type: Inject,
270
270
  args: [IGX_GRID_BASE]
@@ -325,4 +325,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImpor
325
325
  type: HostListener,
326
326
  args: ['mousedown', ['$event']]
327
327
  }] } });
328
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1oZWFkZXItZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2dyaWRzL2hlYWRlcnMvZ3JpZC1oZWFkZXItZ3JvdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2dyaWRzL2hlYWRlcnMvZ3JpZC1oZWFkZXItZ3JvdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUV2QixTQUFTLEVBR1QsVUFBVSxFQUNWLFdBQVcsRUFDWCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxTQUFTLEVBQ1QsWUFBWSxFQUNmLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ2hHLE9BQU8sRUFBd0IsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFcEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLHVCQUF1QixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzNFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsZ0JB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QixRQUFRO3NCQURsQixXQUFXO3VCQUFDLFNBQVM7Z0JBV2YsTUFBTTtzQkFEWixLQUFLO2dCQUlLLE1BQU07c0JBRGhCLFdBQVc7dUJBQUMsMkJBQTJCO2dCQWdCakMsTUFBTTtzQkFEWixTQUFTO3VCQUFDLHNCQUFzQjtnQkFPMUIsTUFBTTtzQkFEWixTQUFTO3VCQUFDLDZCQUE2QjtnQkFPakMsUUFBUTtzQkFEZCxZQUFZO3VCQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLDJCQUEyQixFQUFFO2dCQWEzRixVQUFVO3NCQURoQixXQUFXO3VCQUFDLDRCQUE0QjtnQkFXOUIsU0FBUztzQkFEbkIsV0FBVzt1QkFBQywyQkFBMkI7Z0JBTTdCLGFBQWE7c0JBRHZCLFdBQVc7dUJBQUMsZ0NBQWdDO2dCQU1sQyxjQUFjO3NCQUR4QixXQUFXO3VCQUFDLGlDQUFpQztnQkFNbkMsYUFBYTtzQkFEdkIsV0FBVzt1QkFBQyxpQ0FBaUM7Z0JBTW5DLFlBQVk7c0JBRHRCLFdBQVc7dUJBQUMsOEJBQThCO2dCQVNoQyxNQUFNO3NCQURoQixXQUFXO3VCQUFDLGVBQWU7Z0JBa0NqQixpQkFBaUI7c0JBRDNCLFdBQVc7dUJBQUMsZUFBZTtnQkE2RXJCLFdBQVc7c0JBRGpCLFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRG9DaGVjayxcbiAgICBFbGVtZW50UmVmLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDaGlsZHJlblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElneEZpbHRlcmluZ1NlcnZpY2UgfSBmcm9tICcuLi9maWx0ZXJpbmcvZ3JpZC1maWx0ZXJpbmcuc2VydmljZSc7XG5pbXBvcnQgeyBJZ3hDb2x1bW5SZXNpemluZ1NlcnZpY2UgfSBmcm9tICcuLi9yZXNpemluZy9yZXNpemluZy5zZXJ2aWNlJztcbmltcG9ydCB7IElneEdyaWRIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuL2dyaWQtaGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZ3hHcmlkRmlsdGVyaW5nQ2VsbENvbXBvbmVudCB9IGZyb20gJy4uL2ZpbHRlcmluZy9iYXNlL2dyaWQtZmlsdGVyaW5nLWNlbGwuY29tcG9uZW50JztcbmltcG9ydCB7IENvbHVtblR5cGUsIEdyaWRUeXBlLCBJR1hfR1JJRF9CQVNFIH0gZnJvbSAnLi4vY29tbW9uL2dyaWQuaW50ZXJmYWNlJztcbmltcG9ydCB7IEdyaWRTZWxlY3Rpb25Nb2RlIH0gZnJvbSAnLi4vY29tbW9uL2VudW1zJztcbmltcG9ydCB7IFBsYXRmb3JtVXRpbCB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgSWd4SGVhZGVyR3JvdXBXaWR0aFBpcGUsIElneEhlYWRlckdyb3VwU3R5bGVQaXBlIH0gZnJvbSAnLi9waXBlcyc7XG5pbXBvcnQgeyBJZ3hSZXNpemVIYW5kbGVEaXJlY3RpdmUgfSBmcm9tICcuLi9yZXNpemluZy9yZXNpemUtaGFuZGxlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJZ3hJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vaWNvbi9pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZ3hDb2x1bW5Nb3ZpbmdEcm9wRGlyZWN0aXZlIH0gZnJvbSAnLi4vbW92aW5nL21vdmluZy5kcm9wLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJZ3hDb2x1bW5Nb3ZpbmdEcmFnRGlyZWN0aXZlIH0gZnJvbSAnLi4vbW92aW5nL21vdmluZy5kcmFnLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBOZ0lmLCBOZ0NsYXNzLCBOZ1N0eWxlLCBOZ0ZvciwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmNvbnN0IFpfSU5ERVggPSA5OTk5O1xuXG4vKipcbiAqIEBoaWRkZW5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgc2VsZWN0b3I6ICdpZ3gtZ3JpZC1oZWFkZXItZ3JvdXAnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9ncmlkLWhlYWRlci1ncm91cC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTmdJZiwgTmdDbGFzcywgTmdTdHlsZSwgTmdGb3IsIElneENvbHVtbk1vdmluZ0RyYWdEaXJlY3RpdmUsIElneENvbHVtbk1vdmluZ0Ryb3BEaXJlY3RpdmUsIElneEljb25Db21wb25lbnQsIE5nVGVtcGxhdGVPdXRsZXQsIElneEdyaWRIZWFkZXJDb21wb25lbnQsIElneEdyaWRGaWx0ZXJpbmdDZWxsQ29tcG9uZW50LCBJZ3hSZXNpemVIYW5kbGVEaXJlY3RpdmUsIElneEhlYWRlckdyb3VwV2lkdGhQaXBlLCBJZ3hIZWFkZXJHcm91cFN0eWxlUGlwZV1cbn0pXG5leHBvcnQgY2xhc3MgSWd4R3JpZEhlYWRlckdyb3VwQ29tcG9uZW50IGltcGxlbWVudHMgRG9DaGVjayB7XG5cbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLmdyaWQtcm93LWVuZCcpXG4gICAgcHVibGljIGdldCByb3dFbmQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sdW1uLnJvd0VuZDtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLmdyaWQtY29sdW1uLWVuZCcpXG4gICAgcHVibGljIGdldCBjb2xFbmQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sdW1uLmNvbEVuZDtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLmdyaWQtcm93LXN0YXJ0JylcbiAgICBwdWJsaWMgZ2V0IHJvd1N0YXJ0KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbHVtbi5yb3dTdGFydDtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLmdyaWQtY29sdW1uLXN0YXJ0JylcbiAgICBwdWJsaWMgZ2V0IGNvbFN0YXJ0KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbHVtbi5jb2xTdGFydDtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuaWQnKVxuICAgIHB1YmxpYyBnZXQgaGVhZGVySUQoKSB7XG4gICAgICAgIHJldHVybiBgJHt0aGlzLmdyaWQuaWR9Xy0xXyR7dGhpcy5jb2x1bW4ubGV2ZWx9XyR7dGhpcy5jb2x1bW4udmlzaWJsZUluZGV4fWA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgY29sdW1uIG9mIHRoZSBoZWFkZXIgZ3JvdXAuXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgSWd4R3JpZEhlYWRlckdyb3VwQ29tcG9uZW50XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgY29sdW1uOiBDb2x1bW5UeXBlO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtZ3JpZC10aC0tYWN0aXZlJylcbiAgICBwdWJsaWMgZ2V0IGFjdGl2ZSgpIHtcbiAgICAgICAgY29uc3Qgbm9kZSA9IHRoaXMuZ3JpZC5uYXZpZ2F0aW9uLmFjdGl2ZU5vZGU7XG4gICAgICAgIHJldHVybiBub2RlICYmICF0aGlzLmNvbHVtbi5jb2x1bW5Hcm91cCA/XG4gICAgICAgICAgICBub2RlLnJvdyA9PT0gLTEgJiYgbm9kZS5jb2x1bW4gPT09IHRoaXMuY29sdW1uLnZpc2libGVJbmRleCAmJiBub2RlLmxldmVsID09PSB0aGlzLmNvbHVtbi5sZXZlbCA6IGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYWN0aXZlR3JvdXAoKSB7XG4gICAgICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdyaWQubmF2aWdhdGlvbi5hY3RpdmVOb2RlO1xuICAgICAgICByZXR1cm4gbm9kZSA/IG5vZGUucm93ID09PSAtMSAmJiBub2RlLmNvbHVtbiA9PT0gdGhpcy5jb2x1bW4udmlzaWJsZUluZGV4ICYmIG5vZGUubGV2ZWwgPT09IHRoaXMuY29sdW1uLmxldmVsIDogZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoSWd4R3JpZEhlYWRlckNvbXBvbmVudClcbiAgICBwdWJsaWMgaGVhZGVyOiBJZ3hHcmlkSGVhZGVyQ29tcG9uZW50O1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoSWd4R3JpZEZpbHRlcmluZ0NlbGxDb21wb25lbnQpXG4gICAgcHVibGljIGZpbHRlcjogSWd4R3JpZEZpbHRlcmluZ0NlbGxDb21wb25lbnQ7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQFZpZXdDaGlsZHJlbihmb3J3YXJkUmVmKCgpID0+IElneEdyaWRIZWFkZXJHcm91cENvbXBvbmVudCksIHsgcmVhZDogSWd4R3JpZEhlYWRlckdyb3VwQ29tcG9uZW50IH0pXG4gICAgcHVibGljIGNoaWxkcmVuOiBRdWVyeUxpc3Q8SWd4R3JpZEhlYWRlckdyb3VwQ29tcG9uZW50PjtcblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHdpZHRoIG9mIHRoZSBoZWFkZXIgZ3JvdXAuXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgSWd4R3JpZEhlYWRlckdyb3VwQ29tcG9uZW50XG4gICAgICovXG4gICAgcHVibGljIGdldCB3aWR0aCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JpZC5nZXRIZWFkZXJHcm91cFdpZHRoKHRoaXMuY29sdW1uKTtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1ncmlkLXRoZWFkX19pdGVtJylcbiAgICBwdWJsaWMgZGVmYXVsdENzcyA9IHRydWU7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIEBJbmplY3QoSUdYX0dSSURfQkFTRSkgcHVibGljIGdyaWQ6IEdyaWRUeXBlLFxuICAgICAgICBwcml2YXRlIHJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIHB1YmxpYyBjb2xSZXNpemluZ1NlcnZpY2U6IElneENvbHVtblJlc2l6aW5nU2VydmljZSxcbiAgICAgICAgcHVibGljIGZpbHRlcmluZ1NlcnZpY2U6IElneEZpbHRlcmluZ1NlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCBwbGF0Zm9ybTogUGxhdGZvcm1VdGlsKSB7IH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWdyaWQtdGgtLXBpbm5lZCcpXG4gICAgcHVibGljIGdldCBwaW5uZWRDc3MoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzUGlubmVkO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWdyaWQtdGgtLXBpbm5lZC1sYXN0JylcbiAgICBwdWJsaWMgZ2V0IHBpbm5lZExhc3RDc3MoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzTGFzdFBpbm5lZDtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1ncmlkLXRoLS1waW5uZWQtZmlyc3QnKVxuICAgIHB1YmxpYyBnZXQgcGlubmVkRmlyc3RDU1MoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzRmlyc3RQaW5uZWQ7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtZ3JpZF9fZHJhZy1jb2wtaGVhZGVyJylcbiAgICBwdWJsaWMgZ2V0IGhlYWRlckRyYWdDc3MoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzSGVhZGVyRHJhZ2dlZDtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1ncmlkLXRoLS1maWx0ZXJpbmcnKVxuICAgIHB1YmxpYyBnZXQgZmlsdGVyaW5nQ3NzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0ZpbHRlcmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLnotaW5kZXgnKVxuICAgIHB1YmxpYyBnZXQgekluZGV4KCkge1xuICAgICAgICBpZiAoIXRoaXMuY29sdW1uLnBpbm5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFpfSU5ERVggLSB0aGlzLmdyaWQucGlubmVkQ29sdW1ucy5pbmRleE9mKHRoaXMuY29sdW1uKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHdoZXRoZXIgdGhlIGhlYWRlciBncm91cCBiZWxvbmdzIHRvIGEgY29sdW1uIHRoYXQgaXMgZmlsdGVyZWQuXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgSWd4R3JpZEhlYWRlckdyb3VwQ29tcG9uZW50XG4gICAgICovXG4gICAgcHVibGljIGdldCBpc0ZpbHRlcmVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXJpbmdTZXJ2aWNlLmZpbHRlcmVkQ29sdW1uID09PSB0aGlzLmNvbHVtbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHdoZXRoZXIgdGhlIGhlYWRlciBncm91cCBpcyBzdG9yZWQgaW4gdGhlIGxhc3QgY29sdW1uIGluIHRoZSBwaW5uZWQgYXJlYS5cbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBJZ3hHcmlkSGVhZGVyR3JvdXBDb21wb25lbnRcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGlzTGFzdFBpbm5lZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmdyaWQuaGFzQ29sdW1uTGF5b3V0cyA/IHRoaXMuY29sdW1uLmlzTGFzdFBpbm5lZCA6IGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgd2hldGhlciB0aGUgaGVhZGVyIGdyb3VwIGlzIHN0b3JlZCBpbiB0aGUgZmlyc3QgY29sdW1uIG9mIHRoZSByaWdodCBwaW5uZWQgYXJlYS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGlzRmlyc3RQaW5uZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy5ncmlkLmhhc0NvbHVtbkxheW91dHMgPyB0aGlzLmNvbHVtbi5pc0ZpcnN0UGlubmVkIDogZmFsc2U7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5kaXNwbGF5JylcbiAgICBwdWJsaWMgZ2V0IGdyb3VwRGlzcGxheVN0eWxlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmdyaWQuaGFzQ29sdW1uTGF5b3V0cyAmJiB0aGlzLmNvbHVtbi5jaGlsZHJlbiA/ICdmbGV4JyA6ICcnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgd2hldGhlciB0aGUgaGVhZGVyIGdyb3VwIGlzIHN0b3JlZCBpbiBhIHBpbm5lZCBjb2x1bW4uXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgSWd4R3JpZEhlYWRlckdyb3VwQ29tcG9uZW50XG4gICAgICovXG4gICAgcHVibGljIGdldCBpc1Bpbm5lZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sdW1uLnBpbm5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHdoZXRoZXIgdGhlIGhlYWRlciBncm91cCBiZWxvbmdzIHRvIGEgY29sdW1uIHRoYXQgaXMgbW92ZWQuXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgSWd4R3JpZEhlYWRlckdyb3VwQ29tcG9uZW50XG4gICAgICovXG4gICAgcHVibGljIGdldCBpc0hlYWRlckRyYWdnZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdyaWQuY29sdW1uSW5EcmFnID09PSB0aGlzLmNvbHVtbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGdldCBoYXNMYXN0UGlubmVkQ2hpbGRDb2x1bW4oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbHVtbi5hbGxDaGlsZHJlbi5zb21lKGNoaWxkID0+IGNoaWxkLmlzTGFzdFBpbm5lZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgaGFzRmlyc3RQaW5uZWRDaGlsZENvbHVtbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sdW1uLmFsbENoaWxkcmVuLnNvbWUoY2hpbGQgPT4gY2hpbGQuaXNGaXJzdFBpbm5lZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgc2VsZWN0YWJsZSgpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0YWJsZUNoaWxkcmVuID0gdGhpcy5jb2x1bW4uYWxsQ2hpbGRyZW4uZmlsdGVyKGMgPT4gIWMuaGlkZGVuICYmIGMuc2VsZWN0YWJsZSAmJiAhYy5jb2x1bW5Hcm91cCk7XG4gICAgICAgIHJldHVybiB0aGlzLmdyaWQuY29sdW1uU2VsZWN0aW9uICE9PSBHcmlkU2VsZWN0aW9uTW9kZS5ub25lICYmXG4gICAgICAgICAgICB0aGlzLmNvbHVtbi5hcHBseVNlbGVjdGFibGVDbGFzc1xuICAgICAgICAgICAgJiYgIXRoaXMuc2VsZWN0ZWQgJiYgc2VsZWN0YWJsZUNoaWxkcmVuLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICYmICF0aGlzLmdyaWQuZmlsdGVyaW5nU2VydmljZS5pc0ZpbHRlclJvd1Zpc2libGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgc2VsZWN0ZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbHVtbi5zZWxlY3RlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGdldCBoZWlnaHQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHRpdGxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb2x1bW4udGl0bGUgfHwgdGhpcy5jb2x1bW4uaGVhZGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbmF0aXZlRWxlbWVudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlZG93bicsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uTW91c2VEb3duKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5ncmlkLmFsbG93RmlsdGVyaW5nIHx8IFxuICAgICAgICAgICAgKGV2ZW50LmNvbXBvc2VkUGF0aCgpLmZpbmRJbmRleChlbCA9PlxuICAgICAgICAgICAgICAgIChlbCBhcyBFbGVtZW50KS50YWdOYW1lPy50b0xvd2VyQ2FzZSgpID09PSAnaWd4LWdyaWQtZmlsdGVyaW5nLWNlbGwnKSA8IDEpKSB7XG4gICAgICAgICAgICAgICAgLy8gSGFjayBmb3IgcHJldmVudGluZyB0ZXh0IHNlbGVjdGlvbiBpbiBJRSBhbmQgRWRnZSB3aGlsZSBkcmFnZ2luZyB0aGUgcmVzaXplIGVsZW1lbnRcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBncm91cENsaWNrZWQoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY29sdW1uc1RvU2VsZWN0ID0gdGhpcy5jb2x1bW4uYWxsQ2hpbGRyZW4uZmlsdGVyKGMgPT4gIWMuaGlkZGVuICYmIGMuc2VsZWN0YWJsZSAmJiAhYy5jb2x1bW5Hcm91cCkubWFwKGMgPT4gYy5maWVsZCk7XG4gICAgICAgIGlmICh0aGlzLmdyaWQuY29sdW1uU2VsZWN0aW9uICE9PSBHcmlkU2VsZWN0aW9uTW9kZS5ub25lXG4gICAgICAgICAgICAmJiBjb2x1bW5zVG9TZWxlY3QubGVuZ3RoID4gMCAmJiAhdGhpcy5ncmlkLmZpbHRlcmluZ1NlcnZpY2UuaXNGaWx0ZXJSb3dWaXNpYmxlKSB7XG4gICAgICAgICAgICBjb25zdCBjbGVhclNlbGVjdGlvbiA9IHRoaXMuZ3JpZC5jb2x1bW5TZWxlY3Rpb24gPT09IEdyaWRTZWxlY3Rpb25Nb2RlLnNpbmdsZSB8fCAhZXZlbnQuY3RybEtleTtcbiAgICAgICAgICAgIGNvbnN0IHJhbmdlU2VsZWN0aW9uID0gdGhpcy5ncmlkLmNvbHVtblNlbGVjdGlvbiA9PT0gR3JpZFNlbGVjdGlvbk1vZGUubXVsdGlwbGUgJiYgZXZlbnQuc2hpZnRLZXk7XG4gICAgICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdyaWQuc2VsZWN0aW9uU2VydmljZS5zZWxlY3RDb2x1bW5zKGNvbHVtbnNUb1NlbGVjdCwgY2xlYXJTZWxlY3Rpb24sIHJhbmdlU2VsZWN0aW9uLCBldmVudCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkRmllbGRzID0gdGhpcy5ncmlkLnNlbGVjdGlvblNlcnZpY2UuZ2V0U2VsZWN0ZWRDb2x1bW5zKCk7XG4gICAgICAgICAgICAgICAgaWYgKChzZWxlY3RlZEZpZWxkcy5sZW5ndGggPT09IGNvbHVtbnNUb1NlbGVjdC5sZW5ndGgpICYmIHNlbGVjdGVkRmllbGRzLmV2ZXJ5KGVsID0+IGNvbHVtbnNUb1NlbGVjdC5pbmNsdWRlcyhlbCkpXG4gICAgICAgICAgICAgICAgICAgIHx8ICFjbGVhclNlbGVjdGlvbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmdyaWQuc2VsZWN0aW9uU2VydmljZS5kZXNlbGVjdENvbHVtbnMoY29sdW1uc1RvU2VsZWN0LCBldmVudCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ncmlkLnNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0Q29sdW1ucyhjb2x1bW5zVG9TZWxlY3QsIGNsZWFyU2VsZWN0aW9uLCByYW5nZVNlbGVjdGlvbiwgZXZlbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG9uUG9pbnRlckRvd25JbmRpY2F0b3IoZXZlbnQpIHtcbiAgICAgICAgLy8gU3RvcCBwcm9wYWdhdGlvbiBvZiBwb2ludGVyIGV2ZW50cyB0byBub3cgYWxsb3cgY29sdW1uIGRyYWdnaW5nIHVzaW5nIHRoZSBoZWFkZXIgaW5kaWNhdG9ycy5cbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgdG9nZ2xlRXhwYW5kU3RhdGUoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMuY29sdW1uLmV4cGFuZGVkID0gIXRoaXMuY29sdW1uLmV4cGFuZGVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIHBvaW50ZXJkb3duKGV2ZW50OiBQb2ludGVyRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMuYWN0aXZhdGUoKTtcbiAgICAgICAgdGhpcy5ncmlkLnRoZWFkUm93Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICAvKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIG5lY2Vzc2FyeSBkdWUgdG8gc29tZSBzcGVjaWZpY3MgcmVsYXRlZCB3aXRoIGltcGxlbWVudGF0aW9uIG9mIGNvbHVtbiBtb3ZpbmdcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGFjdGl2YXRlKCkge1xuICAgICAgICB0aGlzLmdyaWQubmF2aWdhdGlvbi5zZXRBY3RpdmVOb2RlKHRoaXMuYWN0aXZlTm9kZSk7XG4gICAgICAgIHRoaXMuZ3JpZC50aGVhZFJvdy5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nRG9DaGVjaygpIHtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgb25QaW50ZXJFbnRlcigpIHtcbiAgICAgICAgdGhpcy5jb2x1bW4uYXBwbHlTZWxlY3RhYmxlQ2xhc3MgPSB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgb25Qb2ludGVyTGVhdmUoKSB7XG4gICAgICAgIHRoaXMuY29sdW1uLmFwcGx5U2VsZWN0YWJsZUNsYXNzID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBhY3RpdmVOb2RlKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcm93OiAtMSwgY29sdW1uOiB0aGlzLmNvbHVtbi52aXNpYmxlSW5kZXgsIGxldmVsOiB0aGlzLmNvbHVtbi5sZXZlbCxcbiAgICAgICAgICAgIG1jaENhY2hlOiB7IGxldmVsOiB0aGlzLmNvbHVtbi5sZXZlbCwgdmlzaWJsZUluZGV4OiB0aGlzLmNvbHVtbi52aXNpYmxlSW5kZXggfSxcbiAgICAgICAgICAgIGxheW91dDogdGhpcy5jb2x1bW4uY29sdW1uTGF5b3V0Q2hpbGQgPyB7XG4gICAgICAgICAgICAgICAgcm93U3RhcnQ6IHRoaXMuY29sdW1uLnJvd1N0YXJ0LFxuICAgICAgICAgICAgICAgIGNvbFN0YXJ0OiB0aGlzLmNvbHVtbi5jb2xTdGFydCxcbiAgICAgICAgICAgICAgICByb3dFbmQ6IHRoaXMuY29sdW1uLnJvd0VuZCxcbiAgICAgICAgICAgICAgICBjb2xFbmQ6IHRoaXMuY29sdW1uLmNvbEVuZCxcbiAgICAgICAgICAgICAgICBjb2x1bW5WaXNpYmxlSW5kZXg6IHRoaXMuY29sdW1uLnZpc2libGVJbmRleFxuICAgICAgICAgICAgfSA6IG51bGxcbiAgICAgICAgfTtcbiAgICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiZ3JpZC5oYXNDb2x1bW5MYXlvdXRzICYmIGNvbHVtbi5jb2x1bW5Hcm91cFwiPlxuICAgIDxzcGFuICpuZ0lmPVwiZ3JpZC5tb3ZpbmdcIiBjbGFzcz1cImlneC1ncmlkLXRoX19kcm9wLWluZGljYXRvci1sZWZ0XCI+PC9zcGFuPlxuICAgIDxkaXYgY2xhc3M9XCJpZ3gtZ3JpZC10aGVhZF9fZ3JvdXAgaWd4LWdyaWRfX21ybC1ibG9ja1wiXG4gICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICdpZ3gtZ3JpZC10aC0tcGlubmVkLWxhc3QnOiBoYXNMYXN0UGlubmVkQ2hpbGRDb2x1bW4sXG4gICAgICAgICAnaWd4LWdyaWQtdGgtLXBpbm5lZC1maXJzdCc6IGhhc0ZpcnN0UGlubmVkQ2hpbGRDb2x1bW5cbiAgICAgICAgfVwiXG4gICAgIFtuZ1N0eWxlXT1cInsnZ3JpZC10ZW1wbGF0ZS1yb3dzJzpjb2x1bW4uZ2V0R3JpZFRlbXBsYXRlKHRydWUpLFxuICAgICAnZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zJzpjb2x1bW4uZ2V0R3JpZFRlbXBsYXRlKGZhbHNlKX1cIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY2hpbGQgb2YgY29sdW1uLmNoaWxkcmVuXCIgPlxuICAgICAgICAgICAgPGlneC1ncmlkLWhlYWRlci1ncm91cCAqbmdJZj1cIiFjaGlsZC5oaWRkZW5cIiBjbGFzcz1cImlneC1ncmlkLXRoZWFkX19zdWJncm91cFwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiY2hpbGQuaGVhZGVyR3JvdXBDbGFzc2VzXCJcbiAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJjaGlsZC5oZWFkZXJHcm91cFN0eWxlcyB8IGlneEhlYWRlckdyb3VwU3R5bGU6Y2hpbGQ6Z3JpZC5waXBlVHJpZ2dlclwiXG4gICAgICAgICAgICAgICAgW2NvbHVtbl09XCJjaGlsZFwiXG4gICAgICAgICAgICAgICAgW2lneENvbHVtbk1vdmluZ0RyYWddPVwiY2hpbGRcIlxuICAgICAgICAgICAgICAgIFtnaG9zdEhvc3RdPVwiZ3JpZC5vdXRsZXQubmF0aXZlRWxlbWVudFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuZHJvcHBhYmxlXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtpZ3hDb2x1bW5Nb3ZpbmdEcm9wXT1cImNoaWxkXCI+XG4gICAgICAgICAgICA8L2lneC1ncmlkLWhlYWRlci1ncm91cD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPHNwYW4gKm5nSWY9XCJncmlkLm1vdmluZ1wiIGNsYXNzPVwiaWd4LWdyaWQtdGhfX2Ryb3AtaW5kaWNhdG9yLXJpZ2h0XCI+PC9zcGFuPlxuPC9uZy1jb250YWluZXI+XG5cblxuPG5nLXRlbXBsYXRlICNkZWZhdWx0Q29sdW1uPlxuICAgIDxzcGFuIGNsYXNzPVwiaWd4LWdyaWQtdGhfX2dyb3VwLXRpdGxlXCIgW3RpdGxlXT1cInRpdGxlXCI+e3tjb2x1bW4uaGVhZGVyfX08L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2RlZmF1bHRDb2xsYXBzZUluZGljYXRvcj5cbiAgICA8aWd4LWljb24+e3tjb2x1bW4uZXhwYW5kZWQgPyAnZXhwYW5kX21vcmUnIDogJ2NoZXZyb25fcmlnaHQnfX0gPC9pZ3gtaWNvbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCIhZ3JpZC5oYXNDb2x1bW5MYXlvdXRzICYmIGNvbHVtbi5jb2x1bW5Hcm91cFwiPlxuICAgIDxzcGFuICpuZ0lmPVwiZ3JpZC5tb3ZpbmdcIiBjbGFzcz1cImlneC1ncmlkLXRoX19kcm9wLWluZGljYXRvci1sZWZ0XCI+PC9zcGFuPlxuICAgIDxkaXYgY2xhc3M9XCJpZ3gtZ3JpZC10aGVhZF9fdGl0bGVcIlxuICAgICAgICByb2xlPVwiY29sdW1uaGVhZGVyXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJjb2x1bW4uaGVhZGVyIHx8IGNvbHVtbi5maWVsZFwiXG4gICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiY29sdW1uLmV4cGFuZGVkXCJcbiAgICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJjb2x1bW4uc2VsZWN0ZWRcIlxuICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAnaWd4LWdyaWQtdGgtLXBpbm5lZC1sYXN0JzogaGFzTGFzdFBpbm5lZENoaWxkQ29sdW1uLFxuICAgICAgICAgICAgJ2lneC1ncmlkLXRoLS1waW5uZWQtZmlyc3QnOiBoYXNGaXJzdFBpbm5lZENoaWxkQ29sdW1uLFxuICAgICAgICAgICAgJ2lneC1ncmlkLXRoLS1jb2xsYXBzaWJsZSc6IGNvbHVtbi5jb2xsYXBzaWJsZSxcbiAgICAgICAgICAgICdpZ3gtZ3JpZC10aC0tc2VsZWN0YWJsZSc6IHNlbGVjdGFibGUsXG4gICAgICAgICAgICAnaWd4LWdyaWQtdGgtLXNlbGVjdGVkJzogc2VsZWN0ZWQsXG4gICAgICAgICAgICAnaWd4LWdyaWQtdGgtLWFjdGl2ZSc6IGFjdGl2ZUdyb3VwfVwiXG4gICAgICAgIFtpZ3hDb2x1bW5Nb3ZpbmdEcmFnXT1cImNvbHVtblwiXG4gICAgICAgIFtnaG9zdEhvc3RdPVwiZ3JpZC5vdXRsZXQubmF0aXZlRWxlbWVudFwiXG4gICAgICAgIFthdHRyLmRyb3BwYWJsZV09XCJ0cnVlXCJcbiAgICAgICAgW2lneENvbHVtbk1vdmluZ0Ryb3BdPVwiY29sdW1uXCJcbiAgICAgICAgKHBvaW50ZXJkb3duKT1cInBvaW50ZXJkb3duKCRldmVudClcIlxuICAgICAgICAoY2xpY2spPVwiZ3JvdXBDbGlja2VkKCRldmVudClcIlxuICAgICAgICAocG9pbnRlcmVudGVyKT1cIm9uUGludGVyRW50ZXIoKVwiXG4gICAgICAgIChwb2ludGVybGVhdmUpPVwib25Qb2ludGVyTGVhdmUoKVwiXG4gICAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi5jb2xsYXBzaWJsZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlneC1ncmlkLXRoX19leHBhbmRlclwiIChwb2ludGVyZG93bik9XCJvblBvaW50ZXJEb3duSW5kaWNhdG9yKCRldmVudClcIiAoY2xpY2spPVwidG9nZ2xlRXhwYW5kU3RhdGUoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2x1bW4uY29sbGFwc2libGVJbmRpY2F0b3JUZW1wbGF0ZSA/IGNvbHVtbi5jb2xsYXBzaWJsZUluZGljYXRvclRlbXBsYXRlIDogZGVmYXVsdENvbGxhcHNlSW5kaWNhdG9yOyBjb250ZXh0OiB7JGltcGxpY2l0OiBjb2x1bW4sIGNvbHVtbjogY29sdW1ufVwiPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29sdW1uLmhlYWRlclRlbXBsYXRlID8gY29sdW1uLmhlYWRlclRlbXBsYXRlIDogZGVmYXVsdENvbHVtbjsgY29udGV4dDogeyAkaW1wbGljaXQ6IGNvbHVtbiwgY29sdW1uOiBjb2x1bW59XCI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJpZ3gtZ3JpZC10aGVhZF9fZ3JvdXBcIiAqbmdJZj0nIWdyaWQuaXNQaXZvdCc+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNoaWxkIG9mIGNvbHVtbi5jaGlsZHJlblwiPlxuICAgICAgICAgICAgPGlneC1ncmlkLWhlYWRlci1ncm91cCAqbmdJZj1cIiFjaGlsZC5oaWRkZW5cIiBjbGFzcz1cImlneC1ncmlkLXRoZWFkX19zdWJncm91cFwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiY2hpbGQuaGVhZGVyR3JvdXBDbGFzc2VzXCJcbiAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJjaGlsZC5oZWFkZXJHcm91cFN0eWxlcyB8IGlneEhlYWRlckdyb3VwU3R5bGU6Y2hpbGQ6Z3JpZC5waXBlVHJpZ2dlclwiXG4gICAgICAgICAgICAgICAgW2NvbHVtbl09XCJjaGlsZFwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLm1pbi13aWR0aF09XCJjaGlsZC5jYWxjV2lkdGggfCBpZ3hIZWFkZXJHcm91cFdpZHRoOmdyaWQuZGVmYXVsdEhlYWRlckdyb3VwTWluV2lkdGg6Z3JpZC5oYXNDb2x1bW5MYXlvdXRzXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuZmxleC1iYXNpc109XCJjaGlsZC5jYWxjV2lkdGggfCBpZ3hIZWFkZXJHcm91cFdpZHRoOmdyaWQuZGVmYXVsdEhlYWRlckdyb3VwTWluV2lkdGg6Z3JpZC5oYXNDb2x1bW5MYXlvdXRzXCI+XG4gICAgICAgICAgICA8L2lneC1ncmlkLWhlYWRlci1ncm91cD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPHNwYW4gKm5nSWY9XCJncmlkLm1vdmluZ1wiIGNsYXNzPVwiaWd4LWdyaWQtdGhfX2Ryb3AtaW5kaWNhdG9yLXJpZ2h0XCI+PC9zcGFuPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCIhY29sdW1uLmNvbHVtbkdyb3VwXCI+XG4gICAgPHNwYW4gKm5nSWY9XCJncmlkLm1vdmluZ1wiIGNsYXNzPVwiaWd4LWdyaWQtdGhfX2Ryb3AtaW5kaWNhdG9yLWxlZnRcIj48L3NwYW4+XG4gICAgPGlneC1ncmlkLWhlYWRlclxuICAgICAgICByb2xlPVwiY29sdW1uaGVhZGVyXCJcbiAgICAgICAgY2xhc3M9XCJpZ3gtZ3JpZC10aC0tZndcIlxuICAgICAgICBbaWRdPVwiZ3JpZC5pZCArICdfJyArIGNvbHVtbi5maWVsZFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cImNvbHVtbi5oZWFkZXJDbGFzc2VzXCJcbiAgICAgICAgW25nU3R5bGVdPVwiY29sdW1uLmhlYWRlclN0eWxlcyB8IGlneEhlYWRlckdyb3VwU3R5bGU6Y29sdW1uOmdyaWQucGlwZVRyaWdnZXJcIlxuICAgICAgICBbaWd4Q29sdW1uTW92aW5nRHJhZ109XCJjb2x1bW5cIlxuICAgICAgICBbZ2hvc3RIb3N0XT1cImdyaWQub3V0bGV0Lm5hdGl2ZUVsZW1lbnRcIlxuICAgICAgICBbYXR0ci5kcm9wcGFibGVdPVwidHJ1ZVwiXG4gICAgICAgIChwb2ludGVyZG93bik9XCJhY3RpdmF0ZSgpXCJcbiAgICAgICAgW2lneENvbHVtbk1vdmluZ0Ryb3BdPVwiY29sdW1uXCJcbiAgICAgICAgW2NvbHVtbl09XCJjb2x1bW5cIlxuICAgID5cbiAgICA8L2lneC1ncmlkLWhlYWRlcj5cbiAgICA8aWd4LWdyaWQtZmlsdGVyaW5nLWNlbGwgKm5nSWY9XCJncmlkLmFsbG93RmlsdGVyaW5nICYmIGdyaWQuZmlsdGVyTW9kZSA9PT0gJ3F1aWNrRmlsdGVyJ1wiIFtjb2x1bW5dPVwiY29sdW1uXCIgW2F0dHIuZHJhZ2dhYmxlXT1cImZhbHNlXCI+PC9pZ3gtZ3JpZC1maWx0ZXJpbmctY2VsbD5cbiAgICA8c3BhbiAqbmdJZj1cIiFjb2x1bW4uY29sdW1uR3JvdXAgJiYgY29sdW1uLnJlc2l6YWJsZVwiIGNsYXNzPVwiaWd4LWdyaWQtdGhfX3Jlc2l6ZS1oYW5kbGVcIlxuICAgICAgICBbaWd4UmVzaXplSGFuZGxlXT1cImNvbHVtblwiXG4gICAgICAgIFthdHRyLmRyYWdnYWJsZV09XCJmYWxzZVwiXG4gICAgICAgIFtzdHlsZS5jdXJzb3JdPVwiY29sUmVzaXppbmdTZXJ2aWNlLnJlc2l6ZUN1cnNvclwiPlxuICAgIDwvc3Bhbj5cbiAgICA8c3BhbiAqbmdJZj1cImdyaWQubW92aW5nXCIgY2xhc3M9XCJpZ3gtZ3JpZC10aF9fZHJvcC1pbmRpY2F0b3ItcmlnaHRcIj48L3NwYW4+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
328
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1oZWFkZXItZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2dyaWRzL2hlYWRlcnMvZ3JpZC1oZWFkZXItZ3JvdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2dyaWRzL2hlYWRlcnMvZ3JpZC1oZWFkZXItZ3JvdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUV2QixTQUFTLEVBR1QsVUFBVSxFQUNWLFdBQVcsRUFDWCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxTQUFTLEVBQ1QsWUFBWSxFQUNmLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ2hHLE9BQU8sRUFBd0IsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFcEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLHVCQUF1QixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzNFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsZ0JB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QixRQUFRO3NCQURsQixXQUFXO3VCQUFDLFNBQVM7Z0JBV2YsTUFBTTtzQkFEWixLQUFLO2dCQUlLLE1BQU07c0JBRGhCLFdBQVc7dUJBQUMsMkJBQTJCO2dCQWdCakMsTUFBTTtzQkFEWixTQUFTO3VCQUFDLHNCQUFzQjtnQkFPMUIsTUFBTTtzQkFEWixTQUFTO3VCQUFDLDZCQUE2QjtnQkFPakMsUUFBUTtzQkFEZCxZQUFZO3VCQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLDJCQUEyQixFQUFFO2dCQWEzRixVQUFVO3NCQURoQixXQUFXO3VCQUFDLDRCQUE0QjtnQkFXOUIsU0FBUztzQkFEbkIsV0FBVzt1QkFBQywyQkFBMkI7Z0JBTTdCLGFBQWE7c0JBRHZCLFdBQVc7dUJBQUMsZ0NBQWdDO2dCQU1sQyxjQUFjO3NCQUR4QixXQUFXO3VCQUFDLGlDQUFpQztnQkFNbkMsYUFBYTtzQkFEdkIsV0FBVzt1QkFBQyxpQ0FBaUM7Z0JBTW5DLFlBQVk7c0JBRHRCLFdBQVc7dUJBQUMsOEJBQThCO2dCQVNoQyxNQUFNO3NCQURoQixXQUFXO3VCQUFDLGVBQWU7Z0JBa0NqQixpQkFBaUI7c0JBRDNCLFdBQVc7dUJBQUMsZUFBZTtnQkE2RXJCLFdBQVc7c0JBRGpCLFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRG9DaGVjayxcbiAgICBFbGVtZW50UmVmLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDaGlsZHJlblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElneEZpbHRlcmluZ1NlcnZpY2UgfSBmcm9tICcuLi9maWx0ZXJpbmcvZ3JpZC1maWx0ZXJpbmcuc2VydmljZSc7XG5pbXBvcnQgeyBJZ3hDb2x1bW5SZXNpemluZ1NlcnZpY2UgfSBmcm9tICcuLi9yZXNpemluZy9yZXNpemluZy5zZXJ2aWNlJztcbmltcG9ydCB7IElneEdyaWRIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuL2dyaWQtaGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZ3hHcmlkRmlsdGVyaW5nQ2VsbENvbXBvbmVudCB9IGZyb20gJy4uL2ZpbHRlcmluZy9iYXNlL2dyaWQtZmlsdGVyaW5nLWNlbGwuY29tcG9uZW50JztcbmltcG9ydCB7IENvbHVtblR5cGUsIEdyaWRUeXBlLCBJR1hfR1JJRF9CQVNFIH0gZnJvbSAnLi4vY29tbW9uL2dyaWQuaW50ZXJmYWNlJztcbmltcG9ydCB7IEdyaWRTZWxlY3Rpb25Nb2RlIH0gZnJvbSAnLi4vY29tbW9uL2VudW1zJztcbmltcG9ydCB7IFBsYXRmb3JtVXRpbCB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgSWd4SGVhZGVyR3JvdXBXaWR0aFBpcGUsIElneEhlYWRlckdyb3VwU3R5bGVQaXBlIH0gZnJvbSAnLi9waXBlcyc7XG5pbXBvcnQgeyBJZ3hSZXNpemVIYW5kbGVEaXJlY3RpdmUgfSBmcm9tICcuLi9yZXNpemluZy9yZXNpemUtaGFuZGxlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJZ3hJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vaWNvbi9pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZ3hDb2x1bW5Nb3ZpbmdEcm9wRGlyZWN0aXZlIH0gZnJvbSAnLi4vbW92aW5nL21vdmluZy5kcm9wLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJZ3hDb2x1bW5Nb3ZpbmdEcmFnRGlyZWN0aXZlIH0gZnJvbSAnLi4vbW92aW5nL21vdmluZy5kcmFnLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBOZ0lmLCBOZ0NsYXNzLCBOZ1N0eWxlLCBOZ0ZvciwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmNvbnN0IFpfSU5ERVggPSA5OTk5O1xuXG4vKipcbiAqIEBoaWRkZW5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgc2VsZWN0b3I6ICdpZ3gtZ3JpZC1oZWFkZXItZ3JvdXAnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9ncmlkLWhlYWRlci1ncm91cC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTmdJZiwgTmdDbGFzcywgTmdTdHlsZSwgTmdGb3IsIElneENvbHVtbk1vdmluZ0RyYWdEaXJlY3RpdmUsIElneENvbHVtbk1vdmluZ0Ryb3BEaXJlY3RpdmUsIElneEljb25Db21wb25lbnQsIE5nVGVtcGxhdGVPdXRsZXQsIElneEdyaWRIZWFkZXJDb21wb25lbnQsIElneEdyaWRGaWx0ZXJpbmdDZWxsQ29tcG9uZW50LCBJZ3hSZXNpemVIYW5kbGVEaXJlY3RpdmUsIElneEhlYWRlckdyb3VwV2lkdGhQaXBlLCBJZ3hIZWFkZXJHcm91cFN0eWxlUGlwZV1cbn0pXG5leHBvcnQgY2xhc3MgSWd4R3JpZEhlYWRlckdyb3VwQ29tcG9uZW50IGltcGxlbWVudHMgRG9DaGVjayB7XG5cbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLmdyaWQtcm93LWVuZCcpXG4gICAgcHVibGljIGdldCByb3dFbmQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sdW1uLnJvd0VuZDtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLmdyaWQtY29sdW1uLWVuZCcpXG4gICAgcHVibGljIGdldCBjb2xFbmQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sdW1uLmNvbEVuZDtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLmdyaWQtcm93LXN0YXJ0JylcbiAgICBwdWJsaWMgZ2V0IHJvd1N0YXJ0KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbHVtbi5yb3dTdGFydDtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLmdyaWQtY29sdW1uLXN0YXJ0JylcbiAgICBwdWJsaWMgZ2V0IGNvbFN0YXJ0KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbHVtbi5jb2xTdGFydDtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuaWQnKVxuICAgIHB1YmxpYyBnZXQgaGVhZGVySUQoKSB7XG4gICAgICAgIHJldHVybiBgJHt0aGlzLmdyaWQuaWR9Xy0xXyR7dGhpcy5jb2x1bW4ubGV2ZWx9XyR7dGhpcy5jb2x1bW4udmlzaWJsZUluZGV4fWA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgY29sdW1uIG9mIHRoZSBoZWFkZXIgZ3JvdXAuXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgSWd4R3JpZEhlYWRlckdyb3VwQ29tcG9uZW50XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgY29sdW1uOiBDb2x1bW5UeXBlO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtZ3JpZC10aC0tYWN0aXZlJylcbiAgICBwdWJsaWMgZ2V0IGFjdGl2ZSgpIHtcbiAgICAgICAgY29uc3Qgbm9kZSA9IHRoaXMuZ3JpZC5uYXZpZ2F0aW9uLmFjdGl2ZU5vZGU7XG4gICAgICAgIHJldHVybiBub2RlICYmICF0aGlzLmNvbHVtbi5jb2x1bW5Hcm91cCA/XG4gICAgICAgICAgICBub2RlLnJvdyA9PT0gLTEgJiYgbm9kZS5jb2x1bW4gPT09IHRoaXMuY29sdW1uLnZpc2libGVJbmRleCAmJiBub2RlLmxldmVsID09PSB0aGlzLmNvbHVtbi5sZXZlbCA6IGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYWN0aXZlR3JvdXAoKSB7XG4gICAgICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdyaWQubmF2aWdhdGlvbi5hY3RpdmVOb2RlO1xuICAgICAgICByZXR1cm4gbm9kZSA/IG5vZGUucm93ID09PSAtMSAmJiBub2RlLmNvbHVtbiA9PT0gdGhpcy5jb2x1bW4udmlzaWJsZUluZGV4ICYmIG5vZGUubGV2ZWwgPT09IHRoaXMuY29sdW1uLmxldmVsIDogZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoSWd4R3JpZEhlYWRlckNvbXBvbmVudClcbiAgICBwdWJsaWMgaGVhZGVyOiBJZ3hHcmlkSGVhZGVyQ29tcG9uZW50O1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoSWd4R3JpZEZpbHRlcmluZ0NlbGxDb21wb25lbnQpXG4gICAgcHVibGljIGZpbHRlcjogSWd4R3JpZEZpbHRlcmluZ0NlbGxDb21wb25lbnQ7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQFZpZXdDaGlsZHJlbihmb3J3YXJkUmVmKCgpID0+IElneEdyaWRIZWFkZXJHcm91cENvbXBvbmVudCksIHsgcmVhZDogSWd4R3JpZEhlYWRlckdyb3VwQ29tcG9uZW50IH0pXG4gICAgcHVibGljIGNoaWxkcmVuOiBRdWVyeUxpc3Q8SWd4R3JpZEhlYWRlckdyb3VwQ29tcG9uZW50PjtcblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHdpZHRoIG9mIHRoZSBoZWFkZXIgZ3JvdXAuXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgSWd4R3JpZEhlYWRlckdyb3VwQ29tcG9uZW50XG4gICAgICovXG4gICAgcHVibGljIGdldCB3aWR0aCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JpZC5nZXRIZWFkZXJHcm91cFdpZHRoKHRoaXMuY29sdW1uKTtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1ncmlkLXRoZWFkX19pdGVtJylcbiAgICBwdWJsaWMgZGVmYXVsdENzcyA9IHRydWU7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIEBJbmplY3QoSUdYX0dSSURfQkFTRSkgcHVibGljIGdyaWQ6IEdyaWRUeXBlLFxuICAgICAgICBwcml2YXRlIHJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIHB1YmxpYyBjb2xSZXNpemluZ1NlcnZpY2U6IElneENvbHVtblJlc2l6aW5nU2VydmljZSxcbiAgICAgICAgcHVibGljIGZpbHRlcmluZ1NlcnZpY2U6IElneEZpbHRlcmluZ1NlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCBwbGF0Zm9ybTogUGxhdGZvcm1VdGlsKSB7IH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWdyaWQtdGgtLXBpbm5lZCcpXG4gICAgcHVibGljIGdldCBwaW5uZWRDc3MoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzUGlubmVkO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWdyaWQtdGgtLXBpbm5lZC1sYXN0JylcbiAgICBwdWJsaWMgZ2V0IHBpbm5lZExhc3RDc3MoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzTGFzdFBpbm5lZDtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1ncmlkLXRoLS1waW5uZWQtZmlyc3QnKVxuICAgIHB1YmxpYyBnZXQgcGlubmVkRmlyc3RDU1MoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzRmlyc3RQaW5uZWQ7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtZ3JpZF9fZHJhZy1jb2wtaGVhZGVyJylcbiAgICBwdWJsaWMgZ2V0IGhlYWRlckRyYWdDc3MoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzSGVhZGVyRHJhZ2dlZDtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1ncmlkLXRoLS1maWx0ZXJpbmcnKVxuICAgIHB1YmxpYyBnZXQgZmlsdGVyaW5nQ3NzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0ZpbHRlcmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLnotaW5kZXgnKVxuICAgIHB1YmxpYyBnZXQgekluZGV4KCkge1xuICAgICAgICBpZiAoIXRoaXMuY29sdW1uLnBpbm5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFpfSU5ERVggLSB0aGlzLmdyaWQucGlubmVkQ29sdW1ucy5pbmRleE9mKHRoaXMuY29sdW1uKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHdoZXRoZXIgdGhlIGhlYWRlciBncm91cCBiZWxvbmdzIHRvIGEgY29sdW1uIHRoYXQgaXMgZmlsdGVyZWQuXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgSWd4R3JpZEhlYWRlckdyb3VwQ29tcG9uZW50XG4gICAgICovXG4gICAgcHVibGljIGdldCBpc0ZpbHRlcmVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXJpbmdTZXJ2aWNlLmZpbHRlcmVkQ29sdW1uID09PSB0aGlzLmNvbHVtbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHdoZXRoZXIgdGhlIGhlYWRlciBncm91cCBpcyBzdG9yZWQgaW4gdGhlIGxhc3QgY29sdW1uIGluIHRoZSBwaW5uZWQgYXJlYS5cbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBJZ3hHcmlkSGVhZGVyR3JvdXBDb21wb25lbnRcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGlzTGFzdFBpbm5lZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmdyaWQuaGFzQ29sdW1uTGF5b3V0cyA/IHRoaXMuY29sdW1uLmlzTGFzdFBpbm5lZCA6IGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgd2hldGhlciB0aGUgaGVhZGVyIGdyb3VwIGlzIHN0b3JlZCBpbiB0aGUgZmlyc3QgY29sdW1uIG9mIHRoZSByaWdodCBwaW5uZWQgYXJlYS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGlzRmlyc3RQaW5uZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy5ncmlkLmhhc0NvbHVtbkxheW91dHMgPyB0aGlzLmNvbHVtbi5pc0ZpcnN0UGlubmVkIDogZmFsc2U7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5kaXNwbGF5JylcbiAgICBwdWJsaWMgZ2V0IGdyb3VwRGlzcGxheVN0eWxlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmdyaWQuaGFzQ29sdW1uTGF5b3V0cyAmJiB0aGlzLmNvbHVtbi5jaGlsZHJlbiA/ICdmbGV4JyA6ICcnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgd2hldGhlciB0aGUgaGVhZGVyIGdyb3VwIGlzIHN0b3JlZCBpbiBhIHBpbm5lZCBjb2x1bW4uXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgSWd4R3JpZEhlYWRlckdyb3VwQ29tcG9uZW50XG4gICAgICovXG4gICAgcHVibGljIGdldCBpc1Bpbm5lZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sdW1uLnBpbm5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHdoZXRoZXIgdGhlIGhlYWRlciBncm91cCBiZWxvbmdzIHRvIGEgY29sdW1uIHRoYXQgaXMgbW92ZWQuXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgSWd4R3JpZEhlYWRlckdyb3VwQ29tcG9uZW50XG4gICAgICovXG4gICAgcHVibGljIGdldCBpc0hlYWRlckRyYWdnZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdyaWQuY29sdW1uSW5EcmFnID09PSB0aGlzLmNvbHVtbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGdldCBoYXNMYXN0UGlubmVkQ2hpbGRDb2x1bW4oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbHVtbi5hbGxDaGlsZHJlbi5zb21lKGNoaWxkID0+IGNoaWxkLmlzTGFzdFBpbm5lZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgaGFzRmlyc3RQaW5uZWRDaGlsZENvbHVtbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sdW1uLmFsbENoaWxkcmVuLnNvbWUoY2hpbGQgPT4gY2hpbGQuaXNGaXJzdFBpbm5lZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgc2VsZWN0YWJsZSgpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0YWJsZUNoaWxkcmVuID0gdGhpcy5jb2x1bW4uYWxsQ2hpbGRyZW4uZmlsdGVyKGMgPT4gIWMuaGlkZGVuICYmIGMuc2VsZWN0YWJsZSAmJiAhYy5jb2x1bW5Hcm91cCk7XG4gICAgICAgIHJldHVybiB0aGlzLmdyaWQuY29sdW1uU2VsZWN0aW9uICE9PSBHcmlkU2VsZWN0aW9uTW9kZS5ub25lICYmXG4gICAgICAgICAgICB0aGlzLmNvbHVtbi5hcHBseVNlbGVjdGFibGVDbGFzc1xuICAgICAgICAgICAgJiYgIXRoaXMuc2VsZWN0ZWQgJiYgc2VsZWN0YWJsZUNoaWxkcmVuLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICYmICF0aGlzLmdyaWQuZmlsdGVyaW5nU2VydmljZS5pc0ZpbHRlclJvd1Zpc2libGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgc2VsZWN0ZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbHVtbi5zZWxlY3RlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGdldCBoZWlnaHQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHRpdGxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb2x1bW4udGl0bGUgfHwgdGhpcy5jb2x1bW4uaGVhZGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbmF0aXZlRWxlbWVudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlZG93bicsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uTW91c2VEb3duKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5ncmlkLmFsbG93RmlsdGVyaW5nIHx8IFxuICAgICAgICAgICAgKGV2ZW50LmNvbXBvc2VkUGF0aCgpLmZpbmRJbmRleChlbCA9PlxuICAgICAgICAgICAgICAgIChlbCBhcyBFbGVtZW50KS50YWdOYW1lPy50b0xvd2VyQ2FzZSgpID09PSAnaWd4LWdyaWQtZmlsdGVyaW5nLWNlbGwnKSA8IDEpKSB7XG4gICAgICAgICAgICAgICAgLy8gSGFjayBmb3IgcHJldmVudGluZyB0ZXh0IHNlbGVjdGlvbiBpbiBJRSBhbmQgRWRnZSB3aGlsZSBkcmFnZ2luZyB0aGUgcmVzaXplIGVsZW1lbnRcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBncm91cENsaWNrZWQoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY29sdW1uc1RvU2VsZWN0ID0gdGhpcy5jb2x1bW4uYWxsQ2hpbGRyZW4uZmlsdGVyKGMgPT4gIWMuaGlkZGVuICYmIGMuc2VsZWN0YWJsZSAmJiAhYy5jb2x1bW5Hcm91cCkubWFwKGMgPT4gYy5maWVsZCk7XG4gICAgICAgIGlmICh0aGlzLmdyaWQuY29sdW1uU2VsZWN0aW9uICE9PSBHcmlkU2VsZWN0aW9uTW9kZS5ub25lXG4gICAgICAgICAgICAmJiBjb2x1bW5zVG9TZWxlY3QubGVuZ3RoID4gMCAmJiAhdGhpcy5ncmlkLmZpbHRlcmluZ1NlcnZpY2UuaXNGaWx0ZXJSb3dWaXNpYmxlKSB7XG4gICAgICAgICAgICBjb25zdCBjbGVhclNlbGVjdGlvbiA9IHRoaXMuZ3JpZC5jb2x1bW5TZWxlY3Rpb24gPT09IEdyaWRTZWxlY3Rpb25Nb2RlLnNpbmdsZSB8fCAhZXZlbnQuY3RybEtleTtcbiAgICAgICAgICAgIGNvbnN0IHJhbmdlU2VsZWN0aW9uID0gdGhpcy5ncmlkLmNvbHVtblNlbGVjdGlvbiA9PT0gR3JpZFNlbGVjdGlvbk1vZGUubXVsdGlwbGUgJiYgZXZlbnQuc2hpZnRLZXk7XG4gICAgICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdyaWQuc2VsZWN0aW9uU2VydmljZS5zZWxlY3RDb2x1bW5zKGNvbHVtbnNUb1NlbGVjdCwgY2xlYXJTZWxlY3Rpb24sIHJhbmdlU2VsZWN0aW9uLCBldmVudCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkRmllbGRzID0gdGhpcy5ncmlkLnNlbGVjdGlvblNlcnZpY2UuZ2V0U2VsZWN0ZWRDb2x1bW5zKCk7XG4gICAgICAgICAgICAgICAgaWYgKChzZWxlY3RlZEZpZWxkcy5sZW5ndGggPT09IGNvbHVtbnNUb1NlbGVjdC5sZW5ndGgpICYmIHNlbGVjdGVkRmllbGRzLmV2ZXJ5KGVsID0+IGNvbHVtbnNUb1NlbGVjdC5pbmNsdWRlcyhlbCkpXG4gICAgICAgICAgICAgICAgICAgIHx8ICFjbGVhclNlbGVjdGlvbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmdyaWQuc2VsZWN0aW9uU2VydmljZS5kZXNlbGVjdENvbHVtbnMoY29sdW1uc1RvU2VsZWN0LCBldmVudCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ncmlkLnNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0Q29sdW1ucyhjb2x1bW5zVG9TZWxlY3QsIGNsZWFyU2VsZWN0aW9uLCByYW5nZVNlbGVjdGlvbiwgZXZlbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG9uUG9pbnRlckRvd25JbmRpY2F0b3IoZXZlbnQpIHtcbiAgICAgICAgLy8gU3RvcCBwcm9wYWdhdGlvbiBvZiBwb2ludGVyIGV2ZW50cyB0byBub3cgYWxsb3cgY29sdW1uIGRyYWdnaW5nIHVzaW5nIHRoZSBoZWFkZXIgaW5kaWNhdG9ycy5cbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgdG9nZ2xlRXhwYW5kU3RhdGUoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMuY29sdW1uLmV4cGFuZGVkID0gIXRoaXMuY29sdW1uLmV4cGFuZGVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIHBvaW50ZXJkb3duKGV2ZW50OiBQb2ludGVyRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMuYWN0aXZhdGUoKTtcbiAgICAgICAgdGhpcy5ncmlkLnRoZWFkUm93Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICAvKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIG5lY2Vzc2FyeSBkdWUgdG8gc29tZSBzcGVjaWZpY3MgcmVsYXRlZCB3aXRoIGltcGxlbWVudGF0aW9uIG9mIGNvbHVtbiBtb3ZpbmdcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGFjdGl2YXRlKCkge1xuICAgICAgICB0aGlzLmdyaWQubmF2aWdhdGlvbi5zZXRBY3RpdmVOb2RlKHRoaXMuYWN0aXZlTm9kZSk7XG4gICAgICAgIHRoaXMuZ3JpZC50aGVhZFJvdy5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nRG9DaGVjaygpIHtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgb25QaW50ZXJFbnRlcigpIHtcbiAgICAgICAgdGhpcy5jb2x1bW4uYXBwbHlTZWxlY3RhYmxlQ2xhc3MgPSB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgb25Qb2ludGVyTGVhdmUoKSB7XG4gICAgICAgIHRoaXMuY29sdW1uLmFwcGx5U2VsZWN0YWJsZUNsYXNzID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBhY3RpdmVOb2RlKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcm93OiAtMSwgY29sdW1uOiB0aGlzLmNvbHVtbi52aXNpYmxlSW5kZXgsIGxldmVsOiB0aGlzLmNvbHVtbi5sZXZlbCxcbiAgICAgICAgICAgIG1jaENhY2hlOiB7IGxldmVsOiB0aGlzLmNvbHVtbi5sZXZlbCwgdmlzaWJsZUluZGV4OiB0aGlzLmNvbHVtbi52aXNpYmxlSW5kZXggfSxcbiAgICAgICAgICAgIGxheW91dDogdGhpcy5jb2x1bW4uY29sdW1uTGF5b3V0Q2hpbGQgPyB7XG4gICAgICAgICAgICAgICAgcm93U3RhcnQ6IHRoaXMuY29sdW1uLnJvd1N0YXJ0LFxuICAgICAgICAgICAgICAgIGNvbFN0YXJ0OiB0aGlzLmNvbHVtbi5jb2xTdGFydCxcbiAgICAgICAgICAgICAgICByb3dFbmQ6IHRoaXMuY29sdW1uLnJvd0VuZCxcbiAgICAgICAgICAgICAgICBjb2xFbmQ6IHRoaXMuY29sdW1uLmNvbEVuZCxcbiAgICAgICAgICAgICAgICBjb2x1bW5WaXNpYmxlSW5kZXg6IHRoaXMuY29sdW1uLnZpc2libGVJbmRleFxuICAgICAgICAgICAgfSA6IG51bGxcbiAgICAgICAgfTtcbiAgICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiZ3JpZC5oYXNDb2x1bW5MYXlvdXRzICYmIGNvbHVtbi5jb2x1bW5Hcm91cFwiPlxuICAgIDxzcGFuICpuZ0lmPVwiZ3JpZC5tb3ZpbmdcIiBjbGFzcz1cImlneC1ncmlkLXRoX19kcm9wLWluZGljYXRvci1sZWZ0XCI+PC9zcGFuPlxuICAgIDxkaXYgY2xhc3M9XCJpZ3gtZ3JpZC10aGVhZF9fZ3JvdXAgaWd4LWdyaWRfX21ybC1ibG9ja1wiXG4gICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICdpZ3gtZ3JpZC10aC0tcGlubmVkLWxhc3QnOiBoYXNMYXN0UGlubmVkQ2hpbGRDb2x1bW4sXG4gICAgICAgICAnaWd4LWdyaWQtdGgtLXBpbm5lZC1maXJzdCc6IGhhc0ZpcnN0UGlubmVkQ2hpbGRDb2x1bW5cbiAgICAgICAgfVwiXG4gICAgIFtuZ1N0eWxlXT1cInsnZ3JpZC10ZW1wbGF0ZS1yb3dzJzpjb2x1bW4uZ2V0R3JpZFRlbXBsYXRlKHRydWUpLFxuICAgICAnZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zJzpjb2x1bW4uZ2V0R3JpZFRlbXBsYXRlKGZhbHNlKX1cIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY2hpbGQgb2YgY29sdW1uLmNoaWxkcmVuXCIgPlxuICAgICAgICAgICAgPGlneC1ncmlkLWhlYWRlci1ncm91cCAqbmdJZj1cIiFjaGlsZC5oaWRkZW5cIiBjbGFzcz1cImlneC1ncmlkLXRoZWFkX19zdWJncm91cFwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiY2hpbGQuaGVhZGVyR3JvdXBDbGFzc2VzXCJcbiAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJjaGlsZC5oZWFkZXJHcm91cFN0eWxlcyB8IGlneEhlYWRlckdyb3VwU3R5bGU6Y2hpbGQ6Z3JpZC5waXBlVHJpZ2dlclwiXG4gICAgICAgICAgICAgICAgW2NvbHVtbl09XCJjaGlsZFwiPlxuICAgICAgICAgICAgPC9pZ3gtZ3JpZC1oZWFkZXItZ3JvdXA+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxzcGFuICpuZ0lmPVwiZ3JpZC5tb3ZpbmdcIiBjbGFzcz1cImlneC1ncmlkLXRoX19kcm9wLWluZGljYXRvci1yaWdodFwiPjwvc3Bhbj5cbjwvbmctY29udGFpbmVyPlxuXG5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdENvbHVtbj5cbiAgICA8c3BhbiBjbGFzcz1cImlneC1ncmlkLXRoX19ncm91cC10aXRsZVwiIFt0aXRsZV09XCJ0aXRsZVwiPnt7Y29sdW1uLmhlYWRlcn19PC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNkZWZhdWx0Q29sbGFwc2VJbmRpY2F0b3I+XG4gICAgPGlneC1pY29uPnt7Y29sdW1uLmV4cGFuZGVkID8gJ2V4cGFuZF9tb3JlJyA6ICdjaGV2cm9uX3JpZ2h0J319IDwvaWd4LWljb24+XG48L25nLXRlbXBsYXRlPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwiIWdyaWQuaGFzQ29sdW1uTGF5b3V0cyAmJiBjb2x1bW4uY29sdW1uR3JvdXBcIj5cbiAgICA8c3BhbiAqbmdJZj1cImdyaWQubW92aW5nXCIgY2xhc3M9XCJpZ3gtZ3JpZC10aF9fZHJvcC1pbmRpY2F0b3ItbGVmdFwiPjwvc3Bhbj5cbiAgICA8ZGl2IGNsYXNzPVwiaWd4LWdyaWQtdGhlYWRfX3RpdGxlXCJcbiAgICAgICAgcm9sZT1cImNvbHVtbmhlYWRlclwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiY29sdW1uLmhlYWRlciB8fCBjb2x1bW4uZmllbGRcIlxuICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImNvbHVtbi5leHBhbmRlZFwiXG4gICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiY29sdW1uLnNlbGVjdGVkXCJcbiAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgJ2lneC1ncmlkLXRoLS1waW5uZWQtbGFzdCc6IGhhc0xhc3RQaW5uZWRDaGlsZENvbHVtbixcbiAgICAgICAgICAgICdpZ3gtZ3JpZC10aC0tcGlubmVkLWZpcnN0JzogaGFzRmlyc3RQaW5uZWRDaGlsZENvbHVtbixcbiAgICAgICAgICAgICdpZ3gtZ3JpZC10aC0tY29sbGFwc2libGUnOiBjb2x1bW4uY29sbGFwc2libGUsXG4gICAgICAgICAgICAnaWd4LWdyaWQtdGgtLXNlbGVjdGFibGUnOiBzZWxlY3RhYmxlLFxuICAgICAgICAgICAgJ2lneC1ncmlkLXRoLS1zZWxlY3RlZCc6IHNlbGVjdGVkLFxuICAgICAgICAgICAgJ2lneC1ncmlkLXRoLS1hY3RpdmUnOiBhY3RpdmVHcm91cH1cIlxuICAgICAgICBbaWd4Q29sdW1uTW92aW5nRHJhZ109XCJjb2x1bW5cIlxuICAgICAgICBbZ2hvc3RIb3N0XT1cImdyaWQub3V0bGV0Lm5hdGl2ZUVsZW1lbnRcIlxuICAgICAgICBbYXR0ci5kcm9wcGFibGVdPVwidHJ1ZVwiXG4gICAgICAgIFtpZ3hDb2x1bW5Nb3ZpbmdEcm9wXT1cImNvbHVtblwiXG4gICAgICAgIChwb2ludGVyZG93bik9XCJwb2ludGVyZG93bigkZXZlbnQpXCJcbiAgICAgICAgKGNsaWNrKT1cImdyb3VwQ2xpY2tlZCgkZXZlbnQpXCJcbiAgICAgICAgKHBvaW50ZXJlbnRlcik9XCJvblBpbnRlckVudGVyKClcIlxuICAgICAgICAocG9pbnRlcmxlYXZlKT1cIm9uUG9pbnRlckxlYXZlKClcIlxuICAgICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4uY29sbGFwc2libGVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpZ3gtZ3JpZC10aF9fZXhwYW5kZXJcIiAocG9pbnRlcmRvd24pPVwib25Qb2ludGVyRG93bkluZGljYXRvcigkZXZlbnQpXCIgKGNsaWNrKT1cInRvZ2dsZUV4cGFuZFN0YXRlKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29sdW1uLmNvbGxhcHNpYmxlSW5kaWNhdG9yVGVtcGxhdGUgPyBjb2x1bW4uY29sbGFwc2libGVJbmRpY2F0b3JUZW1wbGF0ZSA6IGRlZmF1bHRDb2xsYXBzZUluZGljYXRvcjsgY29udGV4dDogeyRpbXBsaWNpdDogY29sdW1uLCBjb2x1bW46IGNvbHVtbn1cIj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbHVtbi5oZWFkZXJUZW1wbGF0ZSA/IGNvbHVtbi5oZWFkZXJUZW1wbGF0ZSA6IGRlZmF1bHRDb2x1bW47IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb2x1bW4sIGNvbHVtbjogY29sdW1ufVwiPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiaWd4LWdyaWQtdGhlYWRfX2dyb3VwXCIgKm5nSWY9JyFncmlkLmlzUGl2b3QnPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjaGlsZCBvZiBjb2x1bW4uY2hpbGRyZW5cIj5cbiAgICAgICAgICAgIDxpZ3gtZ3JpZC1oZWFkZXItZ3JvdXAgKm5nSWY9XCIhY2hpbGQuaGlkZGVuXCIgY2xhc3M9XCJpZ3gtZ3JpZC10aGVhZF9fc3ViZ3JvdXBcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImNoaWxkLmhlYWRlckdyb3VwQ2xhc3Nlc1wiXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwiY2hpbGQuaGVhZGVyR3JvdXBTdHlsZXMgfCBpZ3hIZWFkZXJHcm91cFN0eWxlOmNoaWxkOmdyaWQucGlwZVRyaWdnZXJcIlxuICAgICAgICAgICAgICAgIFtjb2x1bW5dPVwiY2hpbGRcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5taW4td2lkdGhdPVwiY2hpbGQucmVzb2x2ZWRXaWR0aCB8IGlneEhlYWRlckdyb3VwV2lkdGg6Z3JpZC5kZWZhdWx0SGVhZGVyR3JvdXBNaW5XaWR0aDpncmlkLmhhc0NvbHVtbkxheW91dHNcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5mbGV4LWJhc2lzXT1cImNoaWxkLnJlc29sdmVkV2lkdGggfCBpZ3hIZWFkZXJHcm91cFdpZHRoOmdyaWQuZGVmYXVsdEhlYWRlckdyb3VwTWluV2lkdGg6Z3JpZC5oYXNDb2x1bW5MYXlvdXRzXCI+XG4gICAgICAgICAgICA8L2lneC1ncmlkLWhlYWRlci1ncm91cD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPHNwYW4gKm5nSWY9XCJncmlkLm1vdmluZ1wiIGNsYXNzPVwiaWd4LWdyaWQtdGhfX2Ryb3AtaW5kaWNhdG9yLXJpZ2h0XCI+PC9zcGFuPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCIhY29sdW1uLmNvbHVtbkdyb3VwXCI+XG4gICAgPHNwYW4gKm5nSWY9XCJncmlkLm1vdmluZ1wiIGNsYXNzPVwiaWd4LWdyaWQtdGhfX2Ryb3AtaW5kaWNhdG9yLWxlZnRcIj48L3NwYW4+XG4gICAgPGlneC1ncmlkLWhlYWRlclxuICAgICAgICByb2xlPVwiY29sdW1uaGVhZGVyXCJcbiAgICAgICAgY2xhc3M9XCJpZ3gtZ3JpZC10aC0tZndcIlxuICAgICAgICBbaWRdPVwiZ3JpZC5pZCArICdfJyArIGNvbHVtbi5maWVsZFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cImNvbHVtbi5oZWFkZXJDbGFzc2VzXCJcbiAgICAgICAgW25nU3R5bGVdPVwiY29sdW1uLmhlYWRlclN0eWxlcyB8IGlneEhlYWRlckdyb3VwU3R5bGU6Y29sdW1uOmdyaWQucGlwZVRyaWdnZXJcIlxuICAgICAgICBbaWd4Q29sdW1uTW92aW5nRHJhZ109XCJjb2x1bW5cIlxuICAgICAgICBbZ2hvc3RIb3N0XT1cImdyaWQub3V0bGV0Lm5hdGl2ZUVsZW1lbnRcIlxuICAgICAgICBbYXR0ci5kcm9wcGFibGVdPVwidHJ1ZVwiXG4gICAgICAgIChwb2ludGVyZG93bik9XCJhY3RpdmF0ZSgpXCJcbiAgICAgICAgW2lneENvbHVtbk1vdmluZ0Ryb3BdPVwiY29sdW1uXCJcbiAgICAgICAgW2NvbHVtbl09XCJjb2x1bW5cIlxuICAgID5cbiAgICA8L2lneC1ncmlkLWhlYWRlcj5cbiAgICA8aWd4LWdyaWQtZmlsdGVyaW5nLWNlbGwgKm5nSWY9XCJncmlkLmFsbG93RmlsdGVyaW5nICYmIGdyaWQuZmlsdGVyTW9kZSA9PT0gJ3F1aWNrRmlsdGVyJ1wiIFtjb2x1bW5dPVwiY29sdW1uXCIgW2F0dHIuZHJhZ2dhYmxlXT1cImZhbHNlXCI+PC9pZ3gtZ3JpZC1maWx0ZXJpbmctY2VsbD5cbiAgICA8c3BhbiAqbmdJZj1cIiFjb2x1bW4uY29sdW1uR3JvdXAgJiYgY29sdW1uLnJlc2l6YWJsZVwiIGNsYXNzPVwiaWd4LWdyaWQtdGhfX3Jlc2l6ZS1oYW5kbGVcIlxuICAgICAgICBbaWd4UmVzaXplSGFuZGxlXT1cImNvbHVtblwiXG4gICAgICAgIFthdHRyLmRyYWdnYWJsZV09XCJmYWxzZVwiXG4gICAgICAgIFtzdHlsZS5jdXJzb3JdPVwiY29sUmVzaXppbmdTZXJ2aWNlLnJlc2l6ZUN1cnNvclwiPlxuICAgIDwvc3Bhbj5cbiAgICA8c3BhbiAqbmdJZj1cImdyaWQubW92aW5nXCIgY2xhc3M9XCJpZ3gtZ3JpZC10aF9fZHJvcC1pbmRpY2F0b3ItcmlnaHRcIj48L3NwYW4+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
@@ -5,7 +5,7 @@ import { SortingIndexPipe } from '../headers/pipes';
5
5
  import { NgTemplateOutlet, NgIf, NgClass } from '@angular/common';
6
6
  import { IgxIconComponent } from '../../icon/icon.component';
7
7
  import { SortingDirection } from '../../data-operations/sorting-strategy';
8
- import { takeUntil } from 'rxjs';
8
+ import { takeUntil } from 'rxjs/operators';
9
9
  import * as i0 from "@angular/core";
10
10
  import * as i1 from "../resizing/pivot-grid/pivot-resizing.service";
11
11
  /**
@@ -77,4 +77,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImpor
77
77
  type: HostListener,
78
78
  args: ['click', ['$event']]
79
79
  }] } });
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGl2b3Qtcm93LWRpbWVuc2lvbi1oZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2dyaWRzL3Bpdm90LWdyaWQvcGl2b3Qtcm93LWRpbWVuc2lvbi1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2dyaWRzL2hlYWRlcnMvZ3JpZC1oZWFkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQWMsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV4SCxPQUFPLEVBQVksYUFBYSxFQUFpQixNQUFNLDBCQUEwQixDQUFDO0FBRWxGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRTFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFzQixnQkFBZ0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzlGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7OztBQUVqQzs7R0FFRztBQVFILE1BQU0sT0FBTyxtQ0FBb0MsU0FBUSxzQkFBc0I7SUFHM0UsWUFDMkIsSUFBYyxFQUNyQixrQkFBaUQsRUFDakUsR0FBc0IsRUFDZixXQUFvQztRQUUzQyxLQUFLLENBQUMsSUFBSSxFQUFFLGtCQUFrQixFQUFFLEdBQUcsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUpsQyx1QkFBa0Is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SSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLEVBQUUsWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMvRyxDQUFDO0lBQ0wsQ0FBQzs4R0FsRVEsbUNBQW1DLGtCQUloQyxhQUFhO2tHQUpoQixtQ0FBbUMsc0tDdEJoRCx5cURBaUNBLDRDRGJjLGdCQUFnQiwyRkFBRSxnQkFBZ0Isb0pBQUUsSUFBSSw2RkFBRSxPQUFPLCtFQUFFLGdCQUFnQjs7MkZBRXBFLG1DQUFtQztrQkFQL0MsU0FBUztzQ0FDVyx1QkFBdUIsQ0FBQyxNQUFNLFlBQ3JDLGdDQUFnQyxjQUU5QixJQUFJLFdBQ1AsQ0FBQyxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixDQUFDOzswQkFNekUsTUFBTTsyQkFBQyxhQUFhOzhJQWNULE9BQU87c0JBRHRCLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEdyaWRUeXBlLCBJR1hfR1JJRF9CQVNFLCBQaXZvdEdyaWRUeXBlIH0gZnJvbSAnLi4vY29tbW9uL2dyaWQuaW50ZXJmYWNlJztcblxuaW1wb3J0IHsgSWd4R3JpZEhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4uL2hlYWRlcnMvZ3JpZC1oZWFkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IElneFBpdm90Q29sdW1uUmVzaXppbmdTZXJ2aWNlIH0gZnJvbSAnLi4vcmVzaXppbmcvcGl2b3QtZ3JpZC9waXZvdC1yZXNpemluZy5zZXJ2aWNlJztcbmltcG9ydCB7IFNvcnRpbmdJbmRleFBpcGUgfSBmcm9tICcuLi9oZWFkZXJzL3BpcGVzJztcbmltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQsIE5nSWYsIE5nQ2xhc3MgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSWd4SWNvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2ljb24vaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSVNvcnRpbmdFeHByZXNzaW9uLCBTb3J0aW5nRGlyZWN0aW9uIH0gZnJvbSAnLi4vLi4vZGF0YS1vcGVyYXRpb25zL3NvcnRpbmctc3RyYXRlZ3knO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICogQGhpZGRlblxuICovXG5AQ29tcG9uZW50KHtcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBzZWxlY3RvcjogJ2lneC1waXZvdC1yb3ctZGltZW5zaW9uLWhlYWRlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuLi9oZWFkZXJzL2dyaWQtaGVhZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtJZ3hJY29uQ29tcG9uZW50LCBOZ1RlbXBsYXRlT3V0bGV0LCBOZ0lmLCBOZ0NsYXNzLCBTb3J0aW5nSW5kZXhQaXBlXVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hQaXZvdFJvd0RpbWVuc2lvbkhlYWRlckNvbXBvbmVudCBleHRlbmRzIElneEdyaWRIZWFkZXJDb21wb25lbnQge1xuICAgIHByaXZhdGUgcGl2b3RHcmlkOiBQaXZvdEdyaWRUeXBlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoSUdYX0dSSURfQkFTRSkgZ3JpZDogR3JpZFR5cGUsXG4gICAgICAgIHB1YmxpYyBvdmVycmlkZSBjb2xSZXNpemluZ1NlcnZpY2U6IElneFBpdm90Q29sdW1uUmVzaXppbmdTZXJ2aWNlLFxuICAgICAgICBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwdWJsaWMgcmVmSW5zdGFuY2U6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+XG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGdyaWQsIGNvbFJlc2l6aW5nU2VydmljZSwgY2RyLCByZWZJbnN0YW5jZSk7XG5cbiAgICAgICAgdGhpcy5waXZvdEdyaWQgPSB0aGlzLmdyaWQgYXMgUGl2b3RHcmlkVHlwZTtcbiAgICAgICAgdGhpcy5waXZvdEdyaWQuZGltZW5zaW9uc1NvcnRpbmdFeHByZXNzaW9uc0NoYW5nZVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKF86IElTb3J0aW5nRXhwcmVzc2lvbltdKSA9PiB0aGlzLnNldFNvcnRJbmRleCgpKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG92ZXJyaWRlIG9uQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgc2VsZWN0YWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIG9uU29ydGluZ0ljb25DbGljayhldmVudCkge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgY29uc3QgZGltSW5kZXggPSB0aGlzLnBpdm90R3JpZC5yb3dEaW1lbnNpb25zLmZpbmRJbmRleCgodGFyZ2V0KSA9PiB0YXJnZXQubWVtYmVyTmFtZSA9PT0gdGhpcy5jb2x1bW4uZmllbGQpO1xuICAgICAgICBjb25zdCBkaW0gPSB0aGlzLnBpdm90R3JpZC5yb3dEaW1lbnNpb25zW2RpbUluZGV4XTtcbiAgICAgICAgY29uc3Qgc3RhcnREaXJlY3Rpb24gPSBkaW0uc29ydERpcmVjdGlvbiB8fCBTb3J0aW5nRGlyZWN0aW9uLk5vbmU7XG4gICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IHN0YXJ0RGlyZWN0aW9uICsgMSA+IFNvcnRpbmdEaXJlY3Rpb24uRGVzYyA/XG4gICAgICAgICAgICBTb3J0aW5nRGlyZWN0aW9uLk5vbmUgOiBzdGFydERpcmVjdGlvbiArIDE7XG4gICAgICAgIHRoaXMucGl2b3RHcmlkLnNvcnREaW1lbnNpb24oZGltLCBkaXJlY3Rpb24pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBnZXRTb3J0RGlyZWN0aW9uKCkge1xuICAgICAgICBjb25zdCBkaW0gPSB0aGlzLnBpdm90R3JpZC5yb3dEaW1lbnNpb25zLmZpbmQoKHgpID0+IHgubWVtYmVyTmFtZSA9PT0gdGhpcy5jb2x1bW4uZmllbGQpO1xuICAgICAgICB0aGlzLnNvcnREaXJlY3Rpb24gPSBkaW0/LnNvcnREaXJlY3Rpb24gfHwgU29ydGluZ0RpcmVjdGlvbi5Ob25lO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzZXRTb3J0SW5kZXgoKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbHVtbi5zb3J0YWJsZSAmJiB0aGlzLnNvcnRJY29uQ29udGFpbmVyKSB7XG4gICAgICAgICAgICBjb25zdCBkaW1JbmRleCA9IHRoaXMucGl2b3RHcmlkLnJvd0RpbWVuc2lvbnMuZmluZEluZGV4KCh0YXJnZXQpID0+IHRhcmdldC5tZW1iZXJOYW1lID09PSB0aGlzLmNvbHVtbi5maWVsZCk7XG4gICAgICAgICAgICBjb25zdCBkaW0gPSB0aGlzLnBpdm90R3JpZC5yb3dEaW1lbnNpb25zW2RpbUluZGV4XTtcbiAgICAgICAgICAgIGxldCBuZXdTb3J0SW5kZXggPSAtMTtcbiAgICAgICAgICAgIGlmIChkaW0uc29ydERpcmVjdGlvbikge1xuICAgICAgICAgICAgICAgIGxldCBwcmlvclNvcnRlZERpbXMgPSAwO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGltSW5kZXg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5waXZvdEdyaWQucm93RGltZW5zaW9uc1tpXS5zb3J0RGlyZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmlvclNvcnRlZERpbXMrKztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIFNvcnQgaW5kZXggc3RhcnRzIGZyb20gMS5cbiAgICAgICAgICAgICAgICBuZXdTb3J0SW5kZXggPSBwcmlvclNvcnRlZERpbXMgKyAxO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnNvcnRJY29uQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKFwiZGF0YS1zb3J0SW5kZXhcIiwgbmV3U29ydEluZGV4ID49IDAgPyBuZXdTb3J0SW5kZXggOiBcIlwiKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZSAjZGVmYXVsdENvbHVtbj5cbiAgICA8c3BhbiBbdGl0bGVdPVwidGl0bGVcIj57eyBjb2x1bW4uaGVhZGVyIHx8IGNvbHVtbi5maWVsZCB9fTwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdEVTRkhlYWRlckljb25UZW1wbGF0ZT5cbiAgICA8aWd4LWljb24+bW9yZV92ZXJ0PC9pZ3gtaWNvbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdFNvcnRIZWFkZXJJY29uVGVtcGxhdGU+XG4gICAgPGlneC1pY29uPnt7IHNvcnREaXJlY3Rpb24gPCAyID8gJ2Fycm93X3Vwd2FyZCcgOiAnYXJyb3dfZG93bndhcmQnIH19PC9pZ3gtaWNvbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxzcGFuIGNsYXNzPVwiaWd4LWdyaWQtdGhfX3RpdGxlXCI+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNvbHVtbi5oZWFkZXJUZW1wbGF0ZSA/IGNvbHVtbi5oZWFkZXJUZW1wbGF0ZSA6IGRlZmF1bHRDb2x1bW47IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb2x1bW4sIGNvbHVtbjogY29sdW1ufVwiPlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9zcGFuPlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb2x1bW4uY29sdW1uR3JvdXBcIj5cbiAgICA8ZGl2IGNsYXNzPVwiaWd4LWdyaWQtdGhfX2ljb25zXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4uc29ydGFibGUgJiYgIWRpc2FibGVkXCI+XG4gICAgICAgICAgICA8ZGl2ICNzb3J0SWNvbkNvbnRhaW5lciBjbGFzcz1cInNvcnQtaWNvblwiXG4gICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1zb3J0SW5kZXhdPVwiKGdyaWQuc29ydGluZ09wdGlvbnMubW9kZSA9PT0gJ3NpbmdsZScgJiYgZ3JpZC5zb3J0aW5nRXhwcmVzc2lvbnMubGVuZ3RoIDw9MSkgPyBudWxsIDogY29sdW1uLmZpZWxkIHwgc29ydGluZ0luZGV4OmdyaWQuc29ydGluZ0V4cHJlc3Npb25zXCJcbiAgICAgICAgICAgICAgICAocG9pbnRlcmRvd24pPVwib25Qb2ludGVyRG93bkluZGljYXRvcigkZXZlbnQpXCIgKGNsaWNrKT1cIm9uU29ydGluZ0ljb25DbGljaygkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNvcnRJY29uVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiAgdGhpcyB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJncmlkLmFsbG93RmlsdGVyaW5nICYmIGNvbHVtbi5maWx0ZXJhYmxlICYmIGdyaWQuZmlsdGVyTW9kZSA9PT0gJ2V4Y2VsU3R5bGVGaWx0ZXInXCI+XG4gICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cImZpbHRlckljb25DbGFzc05hbWVcIiAocG9pbnRlcmRvd24pPVwib25Qb2ludGVyRG93bkluZGljYXRvcigkZXZlbnQpXCIgKGNsaWNrKT1cIm9uRmlsdGVyaW5nSWNvbkNsaWNrKCRldmVudClcIiA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImVzZkljb25UZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6ICB0aGlzIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuIl19
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGl2b3Qtcm93LWRpbWVuc2lvbi1oZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2dyaWRzL3Bpdm90LWdyaWQvcGl2b3Qtcm93LWRpbWVuc2lvbi1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2dyaWRzL2hlYWRlcnMvZ3JpZC1oZWFkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQWMsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV4SCxPQUFPLEVBQVksYUFBYSxFQUFpQixNQUFNLDBCQUEwQixDQUFDO0FBRWxGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRTFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFzQixnQkFBZ0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzlGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBRTNDOztHQUVHO0FBUUgsTUFBTSxPQUFPLG1DQUFvQyxTQUFRLHNCQUFzQjtJQUczRSxZQUMyQixJQUFjLEVBQ3JCLGtCQUFpRCxFQUNqRSxHQUFzQixFQUNmLFdBQW9DO1FBRTNDLEtBQUssQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBSmxDLHVCQUFr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QUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsRUFBRSxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQy9HLENBQUM7SUFDTCxDQUFDOzhHQWxFUSxtQ0FBbUMsa0JBSWhDLGFBQWE7a0dBSmhCLG1DQUFtQyxzS0N0QmhELHlxREFpQ0EsNENEYmMsZ0JBQWdCLDJGQUFFLGdCQUFnQixvSkFBRSxJQUFJLDZGQUFFLE9BQU8sK0VBQUUsZ0JBQWdCOzsyRkFFcEUsbUNBQW1DO2tCQVAvQyxTQUFTO3NDQUNXLHVCQUF1QixDQUFDLE1BQU0sWUFDckMsZ0NBQWdDLGNBRTlCLElBQUksV0FDUCxDQUFDLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLENBQUM7OzBCQU16RSxNQUFNOzJCQUFDLGFBQWE7OElBY1QsT0FBTztzQkFEdEIsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgR3JpZFR5cGUsIElHWF9HUklEX0JBU0UsIFBpdm90R3JpZFR5cGUgfSBmcm9tICcuLi9jb21tb24vZ3JpZC5pbnRlcmZhY2UnO1xuXG5pbXBvcnQgeyBJZ3hHcmlkSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vaGVhZGVycy9ncmlkLWhlYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWd4UGl2b3RDb2x1bW5SZXNpemluZ1NlcnZpY2UgfSBmcm9tICcuLi9yZXNpemluZy9waXZvdC1ncmlkL3Bpdm90LXJlc2l6aW5nLnNlcnZpY2UnO1xuaW1wb3J0IHsgU29ydGluZ0luZGV4UGlwZSB9IGZyb20gJy4uL2hlYWRlcnMvcGlwZXMnO1xuaW1wb3J0IHsgTmdUZW1wbGF0ZU91dGxldCwgTmdJZiwgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJZ3hJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vaWNvbi9pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJU29ydGluZ0V4cHJlc3Npb24sIFNvcnRpbmdEaXJlY3Rpb24gfSBmcm9tICcuLi8uLi9kYXRhLW9wZXJhdGlvbnMvc29ydGluZy1zdHJhdGVneSc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbi8qKlxuICogQGhpZGRlblxuICovXG5AQ29tcG9uZW50KHtcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBzZWxlY3RvcjogJ2lneC1waXZvdC1yb3ctZGltZW5zaW9uLWhlYWRlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuLi9oZWFkZXJzL2dyaWQtaGVhZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtJZ3hJY29uQ29tcG9uZW50LCBOZ1RlbXBsYXRlT3V0bGV0LCBOZ0lmLCBOZ0NsYXNzLCBTb3J0aW5nSW5kZXhQaXBlXVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hQaXZvdFJvd0RpbWVuc2lvbkhlYWRlckNvbXBvbmVudCBleHRlbmRzIElneEdyaWRIZWFkZXJDb21wb25lbnQge1xuICAgIHByaXZhdGUgcGl2b3RHcmlkOiBQaXZvdEdyaWRUeXBlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoSUdYX0dSSURfQkFTRSkgZ3JpZDogR3JpZFR5cGUsXG4gICAgICAgIHB1YmxpYyBvdmVycmlkZSBjb2xSZXNpemluZ1NlcnZpY2U6IElneFBpdm90Q29sdW1uUmVzaXppbmdTZXJ2aWNlLFxuICAgICAgICBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwdWJsaWMgcmVmSW5zdGFuY2U6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+XG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGdyaWQsIGNvbFJlc2l6aW5nU2VydmljZSwgY2RyLCByZWZJbnN0YW5jZSk7XG5cbiAgICAgICAgdGhpcy5waXZvdEdyaWQgPSB0aGlzLmdyaWQgYXMgUGl2b3RHcmlkVHlwZTtcbiAgICAgICAgdGhpcy5waXZvdEdyaWQuZGltZW5zaW9uc1NvcnRpbmdFeHByZXNzaW9uc0NoYW5nZVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKF86IElTb3J0aW5nRXhwcmVzc2lvbltdKSA9PiB0aGlzLnNldFNvcnRJbmRleCgpKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG92ZXJyaWRlIG9uQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgc2VsZWN0YWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIG9uU29ydGluZ0ljb25DbGljayhldmVudCkge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgY29uc3QgZGltSW5kZXggPSB0aGlzLnBpdm90R3JpZC5yb3dEaW1lbnNpb25zLmZpbmRJbmRleCgodGFyZ2V0KSA9PiB0YXJnZXQubWVtYmVyTmFtZSA9PT0gdGhpcy5jb2x1bW4uZmllbGQpO1xuICAgICAgICBjb25zdCBkaW0gPSB0aGlzLnBpdm90R3JpZC5yb3dEaW1lbnNpb25zW2RpbUluZGV4XTtcbiAgICAgICAgY29uc3Qgc3RhcnREaXJlY3Rpb24gPSBkaW0uc29ydERpcmVjdGlvbiB8fCBTb3J0aW5nRGlyZWN0aW9uLk5vbmU7XG4gICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IHN0YXJ0RGlyZWN0aW9uICsgMSA+IFNvcnRpbmdEaXJlY3Rpb24uRGVzYyA/XG4gICAgICAgICAgICBTb3J0aW5nRGlyZWN0aW9uLk5vbmUgOiBzdGFydERpcmVjdGlvbiArIDE7XG4gICAgICAgIHRoaXMucGl2b3RHcmlkLnNvcnREaW1lbnNpb24oZGltLCBkaXJlY3Rpb24pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBnZXRTb3J0RGlyZWN0aW9uKCkge1xuICAgICAgICBjb25zdCBkaW0gPSB0aGlzLnBpdm90R3JpZC5yb3dEaW1lbnNpb25zLmZpbmQoKHgpID0+IHgubWVtYmVyTmFtZSA9PT0gdGhpcy5jb2x1bW4uZmllbGQpO1xuICAgICAgICB0aGlzLnNvcnREaXJlY3Rpb24gPSBkaW0/LnNvcnREaXJlY3Rpb24gfHwgU29ydGluZ0RpcmVjdGlvbi5Ob25lO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzZXRTb3J0SW5kZXgoKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbHVtbi5zb3J0YWJsZSAmJiB0aGlzLnNvcnRJY29uQ29udGFpbmVyKSB7XG4gICAgICAgICAgICBjb25zdCBkaW1JbmRleCA9IHRoaXMucGl2b3RHcmlkLnJvd0RpbWVuc2lvbnMuZmluZEluZGV4KCh0YXJnZXQpID0+IHRhcmdldC5tZW1iZXJOYW1lID09PSB0aGlzLmNvbHVtbi5maWVsZCk7XG4gICAgICAgICAgICBjb25zdCBkaW0gPSB0aGlzLnBpdm90R3JpZC5yb3dEaW1lbnNpb25zW2RpbUluZGV4XTtcbiAgICAgICAgICAgIGxldCBuZXdTb3J0SW5kZXggPSAtMTtcbiAgICAgICAgICAgIGlmIChkaW0uc29ydERpcmVjdGlvbikge1xuICAgICAgICAgICAgICAgIGxldCBwcmlvclNvcnRlZERpbXMgPSAwO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGltSW5kZXg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5waXZvdEdyaWQucm93RGltZW5zaW9uc1tpXS5zb3J0RGlyZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmlvclNvcnRlZERpbXMrKztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIFNvcnQgaW5kZXggc3RhcnRzIGZyb20gMS5cbiAgICAgICAgICAgICAgICBuZXdTb3J0SW5kZXggPSBwcmlvclNvcnRlZERpbXMgKyAxO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnNvcnRJY29uQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKFwiZGF0YS1zb3J0SW5kZXhcIiwgbmV3U29ydEluZGV4ID49IDAgPyBuZXdTb3J0SW5kZXggOiBcIlwiKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZSAjZGVmYXVsdENvbHVtbj5cbiAgICA8c3BhbiBbdGl0bGVdPVwidGl0bGVcIj57eyBjb2x1bW4uaGVhZGVyIHx8IGNvbHVtbi5maWVsZCB9fTwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdEVTRkhlYWRlckljb25UZW1wbGF0ZT5cbiAgICA8aWd4LWljb24+bW9yZV92ZXJ0PC9pZ3gtaWNvbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdFNvcnRIZWFkZXJJY29uVGVtcGxhdGU+XG4gICAgPGlneC1pY29uPnt7IHNvcnREaXJlY3Rpb24gPCAyID8gJ2Fycm93X3Vwd2FyZCcgOiAnYXJyb3dfZG93bndhcmQnIH19PC9pZ3gtaWNvbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxzcGFuIGNsYXNzPVwiaWd4LWdyaWQtdGhfX3RpdGxlXCI+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNvbHVtbi5oZWFkZXJUZW1wbGF0ZSA/IGNvbHVtbi5oZWFkZXJUZW1wbGF0ZSA6IGRlZmF1bHRDb2x1bW47IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb2x1bW4sIGNvbHVtbjogY29sdW1ufVwiPlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9zcGFuPlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb2x1bW4uY29sdW1uR3JvdXBcIj5cbiAgICA8ZGl2IGNsYXNzPVwiaWd4LWdyaWQtdGhfX2ljb25zXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4uc29ydGFibGUgJiYgIWRpc2FibGVkXCI+XG4gICAgICAgICAgICA8ZGl2ICNzb3J0SWNvbkNvbnRhaW5lciBjbGFzcz1cInNvcnQtaWNvblwiXG4gICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1zb3J0SW5kZXhdPVwiKGdyaWQuc29ydGluZ09wdGlvbnMubW9kZSA9PT0gJ3NpbmdsZScgJiYgZ3JpZC5zb3J0aW5nRXhwcmVzc2lvbnMubGVuZ3RoIDw9MSkgPyBudWxsIDogY29sdW1uLmZpZWxkIHwgc29ydGluZ0luZGV4OmdyaWQuc29ydGluZ0V4cHJlc3Npb25zXCJcbiAgICAgICAgICAgICAgICAocG9pbnRlcmRvd24pPVwib25Qb2ludGVyRG93bkluZGljYXRvcigkZXZlbnQpXCIgKGNsaWNrKT1cIm9uU29ydGluZ0ljb25DbGljaygkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNvcnRJY29uVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiAgdGhpcyB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJncmlkLmFsbG93RmlsdGVyaW5nICYmIGNvbHVtbi5maWx0ZXJhYmxlICYmIGdyaWQuZmlsdGVyTW9kZSA9PT0gJ2V4Y2VsU3R5bGVGaWx0ZXInXCI+XG4gICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cImZpbHRlckljb25DbGFzc05hbWVcIiAocG9pbnRlcmRvd24pPVwib25Qb2ludGVyRG93bkluZGljYXRvcigkZXZlbnQpXCIgKGNsaWNrKT1cIm9uRmlsdGVyaW5nSWNvbkNsaWNrKCRldmVudClcIiA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImVzZkljb25UZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6ICB0aGlzIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuIl19