@skyux/ag-grid 7.6.0 → 7.6.2

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.
@@ -1,6 +1,6 @@
1
1
  var _SkyAgGridHeaderComponent_instances, _SkyAgGridHeaderComponent_subscriptions, _SkyAgGridHeaderComponent_changeDetector, _SkyAgGridHeaderComponent_dynamicComponentService, _SkyAgGridHeaderComponent_inlineHelpComponentRef, _SkyAgGridHeaderComponent_viewInitialized, _SkyAgGridHeaderComponent_agInitialized, _SkyAgGridHeaderComponent_updateInlineHelp, _SkyAgGridHeaderComponent_updateSort, _SkyAgGridHeaderComponent_updateSortIndex;
2
2
  import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
3
- import { ChangeDetectionStrategy, Component, ElementRef, ViewChild, } from '@angular/core';
3
+ import { ChangeDetectionStrategy, Component, ElementRef, HostBinding, ViewChild, } from '@angular/core';
4
4
  import { SkyDynamicComponentLocation, } from '@skyux/core';
5
5
  import { Events } from 'ag-grid-community';
6
6
  import { BehaviorSubject, Subscription, fromEventPattern } from 'rxjs';
@@ -44,6 +44,9 @@ export class SkyAgGridHeaderComponent {
44
44
  if (!params) {
45
45
  return;
46
46
  }
47
+ this.columnLabel = params.displayName
48
+ ? undefined
49
+ : params.column.getColDef().field;
47
50
  __classPrivateFieldSet(this, _SkyAgGridHeaderComponent_subscriptions, new Subscription(), "f");
48
51
  if (params.column.isFilterAllowed()) {
49
52
  __classPrivateFieldGet(this, _SkyAgGridHeaderComponent_subscriptions, "f").add(fromEventPattern((handler) => params.column.addEventListener(Events.EVENT_FILTER_CHANGED, handler), (handler) => params.column.removeEventListener(Events.EVENT_FILTER_CHANGED, handler)).subscribe(() => {
@@ -124,12 +127,15 @@ _SkyAgGridHeaderComponent_subscriptions = new WeakMap(), _SkyAgGridHeaderCompone
124
127
  }
125
128
  };
126
129
  SkyAgGridHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: SkyAgGridHeaderComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.SkyDynamicComponentService }], target: i0.ɵɵFactoryTarget.Component });
127
- SkyAgGridHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.11", type: SkyAgGridHeaderComponent, selector: "sky-ag-grid-header", viewQueries: [{ propertyName: "inlineHelpContainer", first: true, predicate: ["inlineHelpContainer"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<div class=\"ag-cell-label-container\" role=\"presentation\">\n <span\n *ngIf=\"params?.enableMenu\"\n class=\"ag-header-icon ag-header-cell-menu-button\"\n aria-hidden=\"true\"\n (click)=\"onMenuClick($event)\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"menu\"></sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\" icon=\"menu\" iconType=\"skyux\"></sky-icon>\n </span>\n <div\n [class.ag-header-cell-label-sortable]=\"params?.enableSorting\"\n class=\"ag-header-cell-label\"\n role=\"presentation\"\n (click)=\"onSortRequested($event)\"\n >\n <span class=\"ag-header-cell-text\">\n <ng-template #notSortingHeaderText>{{ params?.displayName }}</ng-template>\n <button\n *ngIf=\"params?.enableSorting; else notSortingHeaderText\"\n class=\"sky-btn-link-inline\"\n (click)=\"onSortRequested($event)\"\n >\n <ng-container *ngTemplateOutlet=\"notSortingHeaderText\"></ng-container>\n </button>\n </span>\n <span\n *ngIf=\"filterEnabled$ | async\"\n class=\"ag-header-icon ag-header-label-icon ag-filter-icon\"\n aria-hidden=\"true\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"filter\"></sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"filter\"\n iconType=\"skyux\"\n ></sky-icon>\n </span>\n <span *ngIf=\"params?.enableSorting\" class=\"ag-sort-indicator-container\">\n <sky-icon\n *ngIf=\"(sortOrder$ | async) === 'desc'\"\n icon=\"caret-down\"\n class=\"ag-header-label-icon\"\n ></sky-icon>\n <sky-icon\n *ngIf=\"(sortOrder$ | async) === 'asc'\"\n icon=\"caret-up\"\n class=\"ag-header-label-icon\"\n ></sky-icon>\n <span\n *ngIf=\"sortIndexDisplay$ | async as sortIndexDisplay\"\n class=\"ag-sort-indicator-icon ag-sort-order\"\n aria-hidden=\"true\"\n >{{ sortIndexDisplay }}</span\n >\n </span>\n </div>\n</div>\n<span class=\"sky-control-help-container\" #inlineHelpContainer></span>\n", styles: [":host{display:flex;max-width:100%;align-items:center;align-content:center}.ag-header-cell-label{padding-right:0;padding-left:0}.ag-header-cell-label button{text-transform:inherit}button{cursor:pointer;flex-grow:0;flex-shrink:0}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }, { kind: "directive", type: i4.λ3, selector: "[skyThemeIf]", inputs: ["skyThemeIf"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
130
+ SkyAgGridHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.11", type: SkyAgGridHeaderComponent, selector: "sky-ag-grid-header", host: { properties: { "attr.title": "this.columnLabel" } }, viewQueries: [{ propertyName: "inlineHelpContainer", first: true, predicate: ["inlineHelpContainer"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<div class=\"ag-cell-label-container\" role=\"presentation\">\n <span\n *ngIf=\"params?.enableMenu\"\n class=\"ag-header-icon ag-header-cell-menu-button\"\n aria-hidden=\"true\"\n (click)=\"onMenuClick($event)\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"menu\"></sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\" icon=\"menu\" iconType=\"skyux\"></sky-icon>\n </span>\n <ng-template #headerText>\n <span class=\"ag-header-cell-text\">{{ params?.displayName }}</span>\n <span\n *ngIf=\"filterEnabled$ | async\"\n class=\"ag-header-icon ag-header-label-icon ag-filter-icon\"\n aria-hidden=\"true\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"filter\"></sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"filter\"\n iconType=\"skyux\"\n ></sky-icon>\n </span>\n <span *ngIf=\"params?.enableSorting\" class=\"ag-sort-indicator-container\">\n <sky-icon\n *ngIf=\"(sortOrder$ | async) === 'desc'\"\n icon=\"caret-down\"\n class=\"ag-header-label-icon\"\n ></sky-icon>\n <sky-icon\n *ngIf=\"(sortOrder$ | async) === 'asc'\"\n icon=\"caret-up\"\n class=\"ag-header-label-icon\"\n ></sky-icon>\n <span\n *ngIf=\"sortIndexDisplay$ | async as sortIndexDisplay\"\n class=\"ag-sort-indicator-icon ag-sort-order\"\n aria-hidden=\"true\"\n >{{ sortIndexDisplay }}</span\n >\n </span>\n </ng-template>\n <ng-template #notSortingHeader>\n <div class=\"ag-header-cell-label\" role=\"presentation\">\n <ng-container *ngTemplateOutlet=\"headerText\"></ng-container>\n </div>\n </ng-template>\n <button\n *ngIf=\"params?.enableSorting; else notSortingHeader\"\n class=\"ag-header-cell-label ag-header-cell-label-sortable sky-btn-link-inline\"\n (click)=\"onSortRequested($event)\"\n >\n <ng-container *ngTemplateOutlet=\"headerText\"></ng-container>\n </button>\n</div>\n<span class=\"sky-control-help-container\" #inlineHelpContainer></span>\n", styles: [":host{display:flex;max-width:100%;height:100%;align-items:center;align-content:center}button.ag-header-cell-label{text-transform:inherit;max-width:100%}.ag-cell-label-container{padding:0}.ag-header-cell-label{padding-right:0;padding-left:0}button{cursor:pointer;flex-grow:0;flex-shrink:0}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }, { kind: "directive", type: i4.λ3, selector: "[skyThemeIf]", inputs: ["skyThemeIf"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
128
131
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: SkyAgGridHeaderComponent, decorators: [{
129
132
  type: Component,
130
- args: [{ selector: 'sky-ag-grid-header', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"ag-cell-label-container\" role=\"presentation\">\n <span\n *ngIf=\"params?.enableMenu\"\n class=\"ag-header-icon ag-header-cell-menu-button\"\n aria-hidden=\"true\"\n (click)=\"onMenuClick($event)\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"menu\"></sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\" icon=\"menu\" iconType=\"skyux\"></sky-icon>\n </span>\n <div\n [class.ag-header-cell-label-sortable]=\"params?.enableSorting\"\n class=\"ag-header-cell-label\"\n role=\"presentation\"\n (click)=\"onSortRequested($event)\"\n >\n <span class=\"ag-header-cell-text\">\n <ng-template #notSortingHeaderText>{{ params?.displayName }}</ng-template>\n <button\n *ngIf=\"params?.enableSorting; else notSortingHeaderText\"\n class=\"sky-btn-link-inline\"\n (click)=\"onSortRequested($event)\"\n >\n <ng-container *ngTemplateOutlet=\"notSortingHeaderText\"></ng-container>\n </button>\n </span>\n <span\n *ngIf=\"filterEnabled$ | async\"\n class=\"ag-header-icon ag-header-label-icon ag-filter-icon\"\n aria-hidden=\"true\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"filter\"></sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"filter\"\n iconType=\"skyux\"\n ></sky-icon>\n </span>\n <span *ngIf=\"params?.enableSorting\" class=\"ag-sort-indicator-container\">\n <sky-icon\n *ngIf=\"(sortOrder$ | async) === 'desc'\"\n icon=\"caret-down\"\n class=\"ag-header-label-icon\"\n ></sky-icon>\n <sky-icon\n *ngIf=\"(sortOrder$ | async) === 'asc'\"\n icon=\"caret-up\"\n class=\"ag-header-label-icon\"\n ></sky-icon>\n <span\n *ngIf=\"sortIndexDisplay$ | async as sortIndexDisplay\"\n class=\"ag-sort-indicator-icon ag-sort-order\"\n aria-hidden=\"true\"\n >{{ sortIndexDisplay }}</span\n >\n </span>\n </div>\n</div>\n<span class=\"sky-control-help-container\" #inlineHelpContainer></span>\n", styles: [":host{display:flex;max-width:100%;align-items:center;align-content:center}.ag-header-cell-label{padding-right:0;padding-left:0}.ag-header-cell-label button{text-transform:inherit}button{cursor:pointer;flex-grow:0;flex-shrink:0}\n"] }]
131
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.SkyDynamicComponentService }]; }, propDecorators: { inlineHelpContainer: [{
133
+ args: [{ selector: 'sky-ag-grid-header', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"ag-cell-label-container\" role=\"presentation\">\n <span\n *ngIf=\"params?.enableMenu\"\n class=\"ag-header-icon ag-header-cell-menu-button\"\n aria-hidden=\"true\"\n (click)=\"onMenuClick($event)\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"menu\"></sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\" icon=\"menu\" iconType=\"skyux\"></sky-icon>\n </span>\n <ng-template #headerText>\n <span class=\"ag-header-cell-text\">{{ params?.displayName }}</span>\n <span\n *ngIf=\"filterEnabled$ | async\"\n class=\"ag-header-icon ag-header-label-icon ag-filter-icon\"\n aria-hidden=\"true\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"filter\"></sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"filter\"\n iconType=\"skyux\"\n ></sky-icon>\n </span>\n <span *ngIf=\"params?.enableSorting\" class=\"ag-sort-indicator-container\">\n <sky-icon\n *ngIf=\"(sortOrder$ | async) === 'desc'\"\n icon=\"caret-down\"\n class=\"ag-header-label-icon\"\n ></sky-icon>\n <sky-icon\n *ngIf=\"(sortOrder$ | async) === 'asc'\"\n icon=\"caret-up\"\n class=\"ag-header-label-icon\"\n ></sky-icon>\n <span\n *ngIf=\"sortIndexDisplay$ | async as sortIndexDisplay\"\n class=\"ag-sort-indicator-icon ag-sort-order\"\n aria-hidden=\"true\"\n >{{ sortIndexDisplay }}</span\n >\n </span>\n </ng-template>\n <ng-template #notSortingHeader>\n <div class=\"ag-header-cell-label\" role=\"presentation\">\n <ng-container *ngTemplateOutlet=\"headerText\"></ng-container>\n </div>\n </ng-template>\n <button\n *ngIf=\"params?.enableSorting; else notSortingHeader\"\n class=\"ag-header-cell-label ag-header-cell-label-sortable sky-btn-link-inline\"\n (click)=\"onSortRequested($event)\"\n >\n <ng-container *ngTemplateOutlet=\"headerText\"></ng-container>\n </button>\n</div>\n<span class=\"sky-control-help-container\" #inlineHelpContainer></span>\n", styles: [":host{display:flex;max-width:100%;height:100%;align-items:center;align-content:center}button.ag-header-cell-label{text-transform:inherit;max-width:100%}.ag-cell-label-container{padding:0}.ag-header-cell-label{padding-right:0;padding-left:0}button{cursor:pointer;flex-grow:0;flex-shrink:0}\n"] }]
134
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.SkyDynamicComponentService }]; }, propDecorators: { columnLabel: [{
135
+ type: HostBinding,
136
+ args: ['attr.title']
137
+ }], inlineHelpContainer: [{
132
138
  type: ViewChild,
133
139
  args: ['inlineHelpContainer', { read: ElementRef, static: true }]
134
140
  }] } });
135
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9hZy1ncmlkL3NyYy9saWIvbW9kdWxlcy9hZy1ncmlkL2hlYWRlci9oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2FnLWdyaWQvc3JjL2xpYi9tb2R1bGVzL2FnLWdyaWQvaGVhZGVyL2hlYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUVULFVBQVUsRUFFVixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLDJCQUEyQixHQUc1QixNQUFNLGFBQWEsQ0FBQztBQUdyQixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7OztBQUczRDs7R0FFRztBQU9ILE1BQU0sT0FBTyx3QkFBd0I7SUFxQm5DLFlBQ0UsY0FBaUMsRUFDakMsdUJBQW1EOztRQWpCOUMsV0FBTSxHQUFzQyxTQUFTLENBQUM7UUFDdEQsV0FBTSxHQUFHLEVBQUUsQ0FBQztRQUNILG1CQUFjLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDckQsZUFBVSxHQUFHLElBQUksZUFBZSxDQUM5QyxTQUFTLENBQ1YsQ0FBQztRQUNjLHNCQUFpQixHQUFHLElBQUksZUFBZSxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBRXBFLGtEQUFpQixJQUFJLFlBQVksRUFBRSxFQUFDO1FBQ3BDLDJEQUE0QztRQUM1QyxvRUFBOEQ7UUFD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SSxTQUFTLEtBQUssU0FBUyxJQUFJLFNBQVMsS0FBSyxJQUFJLElBQUksZ0JBQWdCLEVBQUU7UUFDckUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxHQUFHLFNBQVMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0tBQ2pEO1NBQU07UUFDTCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0tBQ2pDO0FBQ0gsQ0FBQztzSEExS1Usd0JBQXdCOzBHQUF4Qix3QkFBd0IsaUtBR08sVUFBVSwyQ0NuQ3RELGloRUEyREE7NEZEM0JhLHdCQUF3QjtrQkFOcEMsU0FBUzsrQkFDRSxvQkFBb0IsbUJBR2IsdUJBQXVCLENBQUMsTUFBTTtpSkFNeEMsbUJBQW1CO3NCQUR6QixTQUFTO3VCQUFDLHFCQUFxQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbXBvbmVudFJlZixcbiAgRWxlbWVudFJlZixcbiAgT25EZXN0cm95LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgU2t5RHluYW1pY0NvbXBvbmVudExvY2F0aW9uLFxuICBTa3lEeW5hbWljQ29tcG9uZW50T3B0aW9ucyxcbiAgU2t5RHluYW1pY0NvbXBvbmVudFNlcnZpY2UsXG59IGZyb20gJ0Bza3l1eC9jb3JlJztcblxuaW1wb3J0IHsgSUhlYWRlckFuZ3VsYXJDb21wIH0gZnJvbSAnYWctZ3JpZC1hbmd1bGFyJztcbmltcG9ydCB7IEV2ZW50cyB9IGZyb20gJ2FnLWdyaWQtY29tbXVuaXR5JztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9uLCBmcm9tRXZlbnRQYXR0ZXJuIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNreUFnR3JpZEhlYWRlckluZm8gfSBmcm9tICcuLi90eXBlcy9oZWFkZXItaW5mbyc7XG5pbXBvcnQgeyBTa3lBZ0dyaWRIZWFkZXJQYXJhbXMgfSBmcm9tICcuLi90eXBlcy9oZWFkZXItcGFyYW1zJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LWFnLWdyaWQtaGVhZGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2hlYWRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2hlYWRlci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2t5QWdHcmlkSGVhZGVyQ29tcG9uZW50XG4gIGltcGxlbWVudHMgSUhlYWRlckFuZ3VsYXJDb21wLCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXRcbntcbiAgQFZpZXdDaGlsZCgnaW5saW5lSGVscENvbnRhaW5lcicsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pXG4gIHB1YmxpYyBpbmxpbmVIZWxwQ29udGFpbmVyOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBwYXJhbXM6IFNreUFnR3JpZEhlYWRlclBhcmFtcyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgcHVibGljIHNvcnRlZCA9ICcnO1xuICBwdWJsaWMgcmVhZG9ubHkgZmlsdGVyRW5hYmxlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIHJlYWRvbmx5IHNvcnRPcmRlciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PCdhc2MnIHwgJ2Rlc2MnIHwgdW5kZWZpbmVkPihcbiAgICB1bmRlZmluZWRcbiAgKTtcbiAgcHVibGljIHJlYWRvbmx5IHNvcnRJbmRleERpc3BsYXkkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcblxuICAjc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgcmVhZG9ubHkgI2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZjtcbiAgcmVhZG9ubHkgI2R5bmFtaWNDb21wb25lbnRTZXJ2aWNlOiBTa3lEeW5hbWljQ29tcG9uZW50U2VydmljZTtcbiAgI2lubGluZUhlbHBDb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjx1bmtub3duPiB8IHVuZGVmaW5lZDtcbiAgI3ZpZXdJbml0aWFsaXplZCA9IGZhbHNlO1xuICAjYWdJbml0aWFsaXplZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBkeW5hbWljQ29tcG9uZW50U2VydmljZTogU2t5RHluYW1pY0NvbXBvbmVudFNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IgPSBjaGFuZ2VEZXRlY3RvcjtcbiAgICB0aGlzLiNkeW5hbWljQ29tcG9uZW50U2VydmljZSA9IGR5bmFtaWNDb21wb25lbnRTZXJ2aWNlO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLiN2aWV3SW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgIHRoaXMuI3VwZGF0ZUlubGluZUhlbHAoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNzdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgYWdJbml0KHBhcmFtczogU2t5QWdHcmlkSGVhZGVyUGFyYW1zIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgdGhpcy4jYWdJbml0aWFsaXplZCA9IHRydWU7XG4gICAgdGhpcy5wYXJhbXMgPSBwYXJhbXM7XG4gICAgdGhpcy4jc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgIGlmICghcGFyYW1zKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuI3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gICAgaWYgKHBhcmFtcy5jb2x1bW4uaXNGaWx0ZXJBbGxvd2VkKCkpIHtcbiAgICAgIHRoaXMuI3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgICBmcm9tRXZlbnRQYXR0ZXJuKFxuICAgICAgICAgIChoYW5kbGVyKSA9PlxuICAgICAgICAgICAgcGFyYW1zLmNvbHVtbi5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAgICAgICBFdmVudHMuRVZFTlRfRklMVEVSX0NIQU5HRUQsXG4gICAgICAgICAgICAgIGhhbmRsZXJcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKGhhbmRsZXIpID0+XG4gICAgICAgICAgICBwYXJhbXMuY29sdW1uLnJlbW92ZUV2ZW50TGlzdGVuZXIoXG4gICAgICAgICAgICAgIEV2ZW50cy5FVkVOVF9GSUxURVJfQ0hBTkdFRCxcbiAgICAgICAgICAgICAgaGFuZGxlclxuICAgICAgICAgICAgKVxuICAgICAgICApLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgaXNGaWx0ZXJBY3RpdmUgPSBwYXJhbXMuY29sdW1uLmlzRmlsdGVyQWN0aXZlKCk7XG4gICAgICAgICAgaWYgKGlzRmlsdGVyQWN0aXZlICE9PSB0aGlzLmZpbHRlckVuYWJsZWQkLmdldFZhbHVlKCkpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyRW5hYmxlZCQubmV4dChpc0ZpbHRlckFjdGl2ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHBhcmFtcy5lbmFibGVTb3J0aW5nKSB7XG4gICAgICAvLyBDb2x1bW4gc29ydCBzdGF0ZSBjaGFuZ2VzXG4gICAgICB0aGlzLiNzdWJzY3JpcHRpb25zLmFkZChcbiAgICAgICAgZnJvbUV2ZW50UGF0dGVybihcbiAgICAgICAgICAoaGFuZGxlcikgPT5cbiAgICAgICAgICAgIHBhcmFtcy5jb2x1bW4uYWRkRXZlbnRMaXN0ZW5lcihFdmVudHMuRVZFTlRfU09SVF9DSEFOR0VELCBoYW5kbGVyKSxcbiAgICAgICAgICAoaGFuZGxlcikgPT5cbiAgICAgICAgICAgIHBhcmFtcy5jb2x1bW4ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgICAgICAgRXZlbnRzLkVWRU5UX1NPUlRfQ0hBTkdFRCxcbiAgICAgICAgICAgICAgaGFuZGxlclxuICAgICAgICAgICAgKVxuICAgICAgICApLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy4jdXBkYXRlU29ydCgpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICAgIC8vIE90aGVyIGNvbHVtbiBzb3J0IHN0YXRlIGNoYW5nZXMsIGZvciBtdWx0aS1jb2x1bW4gc29ydGluZ1xuICAgICAgdGhpcy4jc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgIGZyb21FdmVudFBhdHRlcm4oXG4gICAgICAgICAgKGhhbmRsZXIpID0+XG4gICAgICAgICAgICBwYXJhbXMuYXBpLmFkZEV2ZW50TGlzdGVuZXIoRXZlbnRzLkVWRU5UX1NPUlRfQ0hBTkdFRCwgaGFuZGxlciksXG4gICAgICAgICAgKGhhbmRsZXIpID0+XG4gICAgICAgICAgICBwYXJhbXMuYXBpLnJlbW92ZUV2ZW50TGlzdGVuZXIoRXZlbnRzLkVWRU5UX1NPUlRfQ0hBTkdFRCwgaGFuZGxlcilcbiAgICAgICAgKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuI3VwZGF0ZVNvcnRJbmRleCgpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICAgIHRoaXMuI3VwZGF0ZVNvcnQoKTtcbiAgICAgIHRoaXMuI3VwZGF0ZVNvcnRJbmRleCgpO1xuICAgIH1cbiAgICB0aGlzLiN1cGRhdGVJbmxpbmVIZWxwKCk7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgb25NZW51Q2xpY2soJGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIHRoaXMucGFyYW1zPy5zaG93Q29sdW1uTWVudSgkZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KTtcbiAgfVxuXG4gIHB1YmxpYyBvblNvcnRSZXF1ZXN0ZWQoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wYXJhbXM/LmVuYWJsZVNvcnRpbmcpIHtcbiAgICAgIHRoaXMucGFyYW1zPy5wcm9ncmVzc1NvcnQoZXZlbnQuc2hpZnRLZXkpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZWZyZXNoKHBhcmFtczogU2t5QWdHcmlkSGVhZGVyUGFyYW1zKTogYm9vbGVhbiB7XG4gICAgdGhpcy5hZ0luaXQocGFyYW1zKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAjdXBkYXRlSW5saW5lSGVscCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuI3ZpZXdJbml0aWFsaXplZCB8fCAhdGhpcy4jYWdJbml0aWFsaXplZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBpbmxpbmVIZWxwQ29tcG9uZW50ID0gdGhpcy5wYXJhbXM/LmlubGluZUhlbHBDb21wb25lbnQ7XG4gICAgaWYgKFxuICAgICAgaW5saW5lSGVscENvbXBvbmVudCAmJlxuICAgICAgKCF0aGlzLiNpbmxpbmVIZWxwQ29tcG9uZW50UmVmIHx8XG4gICAgICAgIHRoaXMuI2lubGluZUhlbHBDb21wb25lbnRSZWYuY29tcG9uZW50VHlwZSAhPT0gaW5saW5lSGVscENvbXBvbmVudClcbiAgICApIHtcbiAgICAgIHRoaXMuI2R5bmFtaWNDb21wb25lbnRTZXJ2aWNlLnJlbW92ZUNvbXBvbmVudChcbiAgICAgICAgdGhpcy4jaW5saW5lSGVscENvbXBvbmVudFJlZlxuICAgICAgKTtcblxuICAgICAgY29uc3QgaGVhZGVySW5mbyA9IG5ldyBTa3lBZ0dyaWRIZWFkZXJJbmZvKCk7XG4gICAgICBoZWFkZXJJbmZvLmNvbHVtbiA9IHRoaXMucGFyYW1zPy5jb2x1bW47XG4gICAgICBoZWFkZXJJbmZvLmNvbnRleHQgPSB0aGlzLnBhcmFtcz8uY29udGV4dDtcbiAgICAgIGhlYWRlckluZm8uZGlzcGxheU5hbWUgPSB0aGlzLnBhcmFtcz8uZGlzcGxheU5hbWU7XG5cbiAgICAgIHRoaXMuI2lubGluZUhlbHBDb21wb25lbnRSZWYgPVxuICAgICAgICB0aGlzLiNkeW5hbWljQ29tcG9uZW50U2VydmljZS5jcmVhdGVDb21wb25lbnQoaW5saW5lSGVscENvbXBvbmVudCwge1xuICAgICAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBwcm92aWRlOiBTa3lBZ0dyaWRIZWFkZXJJbmZvLFxuICAgICAgICAgICAgICB1c2VWYWx1ZTogaGVhZGVySW5mbyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICByZWZlcmVuY2VFbDogdGhpcy5pbmxpbmVIZWxwQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgIGxvY2F0aW9uOiBTa3lEeW5hbWljQ29tcG9uZW50TG9jYXRpb24uRWxlbWVudEJvdHRvbSxcbiAgICAgICAgfSBhcyBTa3lEeW5hbWljQ29tcG9uZW50T3B0aW9ucyk7XG4gICAgfSBlbHNlIGlmICghaW5saW5lSGVscENvbXBvbmVudCkge1xuICAgICAgdGhpcy4jZHluYW1pY0NvbXBvbmVudFNlcnZpY2UucmVtb3ZlQ29tcG9uZW50KFxuICAgICAgICB0aGlzLiNpbmxpbmVIZWxwQ29tcG9uZW50UmVmXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gICN1cGRhdGVTb3J0KCk6IHZvaWQge1xuICAgIHRoaXMuc29ydE9yZGVyJC5uZXh0KHRoaXMucGFyYW1zPy5jb2x1bW4uZ2V0U29ydCgpIHx8IHVuZGVmaW5lZCk7XG4gIH1cblxuICAjdXBkYXRlU29ydEluZGV4KCk6IHZvaWQge1xuICAgIGNvbnN0IHNvcnRJbmRleCA9IHRoaXMucGFyYW1zPy5jb2x1bW4uZ2V0U29ydEluZGV4KCk7XG4gICAgY29uc3Qgb3RoZXJTb3J0Q29sdW1ucyA9IHRoaXMucGFyYW1zPy5jb2x1bW5BcGlcbiAgICAgID8uZ2V0Q29sdW1ucygpXG4gICAgICA/LnNvbWUoXG4gICAgICAgIChjb2x1bW4pID0+XG4gICAgICAgICAgY29sdW1uLmdldENvbElkKCkgIT09IHRoaXMucGFyYW1zPy5jb2x1bW4uZ2V0Q29sSWQoKSAmJlxuICAgICAgICAgICEhY29sdW1uLmdldFNvcnQoKVxuICAgICAgKTtcbiAgICBpZiAoc29ydEluZGV4ICE9PSB1bmRlZmluZWQgJiYgc29ydEluZGV4ICE9PSBudWxsICYmIG90aGVyU29ydENvbHVtbnMpIHtcbiAgICAgIHRoaXMuc29ydEluZGV4RGlzcGxheSQubmV4dChgJHtzb3J0SW5kZXggKyAxfWApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNvcnRJbmRleERpc3BsYXkkLm5leHQoJycpO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImFnLWNlbGwtbGFiZWwtY29udGFpbmVyXCIgcm9sZT1cInByZXNlbnRhdGlvblwiPlxuICA8c3BhblxuICAgICpuZ0lmPVwicGFyYW1zPy5lbmFibGVNZW51XCJcbiAgICBjbGFzcz1cImFnLWhlYWRlci1pY29uIGFnLWhlYWRlci1jZWxsLW1lbnUtYnV0dG9uXCJcbiAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgIChjbGljayk9XCJvbk1lbnVDbGljaygkZXZlbnQpXCJcbiAgPlxuICAgIDxza3ktaWNvbiAqc2t5VGhlbWVJZj1cIidkZWZhdWx0J1wiIGljb249XCJtZW51XCI+PC9za3ktaWNvbj5cbiAgICA8c2t5LWljb24gKnNreVRoZW1lSWY9XCInbW9kZXJuJ1wiIGljb249XCJtZW51XCIgaWNvblR5cGU9XCJza3l1eFwiPjwvc2t5LWljb24+XG4gIDwvc3Bhbj5cbiAgPGRpdlxuICAgIFtjbGFzcy5hZy1oZWFkZXItY2VsbC1sYWJlbC1zb3J0YWJsZV09XCJwYXJhbXM/LmVuYWJsZVNvcnRpbmdcIlxuICAgIGNsYXNzPVwiYWctaGVhZGVyLWNlbGwtbGFiZWxcIlxuICAgIHJvbGU9XCJwcmVzZW50YXRpb25cIlxuICAgIChjbGljayk9XCJvblNvcnRSZXF1ZXN0ZWQoJGV2ZW50KVwiXG4gID5cbiAgICA8c3BhbiBjbGFzcz1cImFnLWhlYWRlci1jZWxsLXRleHRcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjbm90U29ydGluZ0hlYWRlclRleHQ+e3sgcGFyYW1zPy5kaXNwbGF5TmFtZSB9fTwvbmctdGVtcGxhdGU+XG4gICAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwicGFyYW1zPy5lbmFibGVTb3J0aW5nOyBlbHNlIG5vdFNvcnRpbmdIZWFkZXJUZXh0XCJcbiAgICAgICAgY2xhc3M9XCJza3ktYnRuLWxpbmstaW5saW5lXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uU29ydFJlcXVlc3RlZCgkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm5vdFNvcnRpbmdIZWFkZXJUZXh0XCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L3NwYW4+XG4gICAgPHNwYW5cbiAgICAgICpuZ0lmPVwiZmlsdGVyRW5hYmxlZCQgfCBhc3luY1wiXG4gICAgICBjbGFzcz1cImFnLWhlYWRlci1pY29uIGFnLWhlYWRlci1sYWJlbC1pY29uIGFnLWZpbHRlci1pY29uXCJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHNreS1pY29uICpza3lUaGVtZUlmPVwiJ2RlZmF1bHQnXCIgaWNvbj1cImZpbHRlclwiPjwvc2t5LWljb24+XG4gICAgICA8c2t5LWljb25cbiAgICAgICAgKnNreVRoZW1lSWY9XCInbW9kZXJuJ1wiXG4gICAgICAgIGljb249XCJmaWx0ZXJcIlxuICAgICAgICBpY29uVHlwZT1cInNreXV4XCJcbiAgICAgID48L3NreS1pY29uPlxuICAgIDwvc3Bhbj5cbiAgICA8c3BhbiAqbmdJZj1cInBhcmFtcz8uZW5hYmxlU29ydGluZ1wiIGNsYXNzPVwiYWctc29ydC1pbmRpY2F0b3ItY29udGFpbmVyXCI+XG4gICAgICA8c2t5LWljb25cbiAgICAgICAgKm5nSWY9XCIoc29ydE9yZGVyJCB8IGFzeW5jKSA9PT0gJ2Rlc2MnXCJcbiAgICAgICAgaWNvbj1cImNhcmV0LWRvd25cIlxuICAgICAgICBjbGFzcz1cImFnLWhlYWRlci1sYWJlbC1pY29uXCJcbiAgICAgID48L3NreS1pY29uPlxuICAgICAgPHNreS1pY29uXG4gICAgICAgICpuZ0lmPVwiKHNvcnRPcmRlciQgfCBhc3luYykgPT09ICdhc2MnXCJcbiAgICAgICAgaWNvbj1cImNhcmV0LXVwXCJcbiAgICAgICAgY2xhc3M9XCJhZy1oZWFkZXItbGFiZWwtaWNvblwiXG4gICAgICA+PC9za3ktaWNvbj5cbiAgICAgIDxzcGFuXG4gICAgICAgICpuZ0lmPVwic29ydEluZGV4RGlzcGxheSQgfCBhc3luYyBhcyBzb3J0SW5kZXhEaXNwbGF5XCJcbiAgICAgICAgY2xhc3M9XCJhZy1zb3J0LWluZGljYXRvci1pY29uIGFnLXNvcnQtb3JkZXJcIlxuICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICA+e3sgc29ydEluZGV4RGlzcGxheSB9fTwvc3BhblxuICAgICAgPlxuICAgIDwvc3Bhbj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxzcGFuIGNsYXNzPVwic2t5LWNvbnRyb2wtaGVscC1jb250YWluZXJcIiAjaW5saW5lSGVscENvbnRhaW5lcj48L3NwYW4+XG4iXX0=
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9hZy1ncmlkL3NyYy9saWIvbW9kdWxlcy9hZy1ncmlkL2hlYWRlci9oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2FnLWdyaWQvc3JjL2xpYi9tb2R1bGVzL2FnLWdyaWQvaGVhZGVyL2hlYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUVULFVBQVUsRUFDVixXQUFXLEVBRVgsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCwyQkFBMkIsR0FHNUIsTUFBTSxhQUFhLENBQUM7QUFHckIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXZFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7QUFHM0Q7O0dBRUc7QUFPSCxNQUFNLE9BQU8sd0JBQXdCO0lBMEJuQyxZQUNFLGNBQWlDLEVBQ2pDLHVCQUFtRDs7UUFqQjlDLFdBQU0sR0FBc0MsU0FBUyxDQUFDO1FBQ3RELFdBQU0sR0FBRyxFQUFFLENBQUM7UUFDSCxtQkFBYyxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3JELGVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FDOUMsU0FBUyxDQUNWLENBQUM7UUFDYyxzQkFBaUIsR0FBRyxJQUFJLGVBQWUsQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUVwRSxrREFBaUIsSUFBSSxZQUFZLEVBQUUsRUFBQztRQUNwQywyREFBNEM7UUFDNUMs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RSxFQUFFLENBQ1QsTUFBTSxDQUFDLFFBQVEsRUFBRSxLQUFLLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRTtRQUNwRCxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUNyQixDQUFDO0lBQ0osSUFBSSxTQUFTLEtBQUssU0FBUyxJQUFJLFNBQVMsS0FBSyxJQUFJLElBQUksZ0JBQWdCLEVBQUU7UUFDckUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxHQUFHLFNBQVMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0tBQ2pEO1NBQU07UUFDTCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0tBQ2pDO0FBQ0gsQ0FBQztzSEFsTFUsd0JBQXdCOzBHQUF4Qix3QkFBd0IsNk5BUU8sVUFBVSwyQ0N6Q3RELDZnRUF5REE7NEZEeEJhLHdCQUF3QjtrQkFOcEMsU0FBUzsrQkFDRSxvQkFBb0IsbUJBR2IsdUJBQXVCLENBQUMsTUFBTTtpSkFReEMsV0FBVztzQkFEakIsV0FBVzt1QkFBQyxZQUFZO2dCQUlsQixtQkFBbUI7c0JBRHpCLFNBQVM7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29tcG9uZW50UmVmLFxuICBFbGVtZW50UmVmLFxuICBIb3N0QmluZGluZyxcbiAgT25EZXN0cm95LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgU2t5RHluYW1pY0NvbXBvbmVudExvY2F0aW9uLFxuICBTa3lEeW5hbWljQ29tcG9uZW50T3B0aW9ucyxcbiAgU2t5RHluYW1pY0NvbXBvbmVudFNlcnZpY2UsXG59IGZyb20gJ0Bza3l1eC9jb3JlJztcblxuaW1wb3J0IHsgSUhlYWRlckFuZ3VsYXJDb21wIH0gZnJvbSAnYWctZ3JpZC1hbmd1bGFyJztcbmltcG9ydCB7IEV2ZW50cyB9IGZyb20gJ2FnLWdyaWQtY29tbXVuaXR5JztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9uLCBmcm9tRXZlbnRQYXR0ZXJuIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNreUFnR3JpZEhlYWRlckluZm8gfSBmcm9tICcuLi90eXBlcy9oZWFkZXItaW5mbyc7XG5pbXBvcnQgeyBTa3lBZ0dyaWRIZWFkZXJQYXJhbXMgfSBmcm9tICcuLi90eXBlcy9oZWFkZXItcGFyYW1zJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LWFnLWdyaWQtaGVhZGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2hlYWRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2hlYWRlci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2t5QWdHcmlkSGVhZGVyQ29tcG9uZW50XG4gIGltcGxlbWVudHMgSUhlYWRlckFuZ3VsYXJDb21wLCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXRcbntcbiAgLy8gRm9yIGFjY2Vzc2liaWxpdHksIHdlIG5lZWQgdG8gc2V0IHRoZSB0aXRsZSBhdHRyaWJ1dGUgb24gdGhlIGhlYWRlciBlbGVtZW50IGlmIHRoZXJlIGlzIG5vdCBhIGRpc3BsYXkgbmFtZS5cbiAgLy8gaHR0cHM6Ly9kZXF1ZXVuaXZlcnNpdHkuY29tL3J1bGVzL2F4ZS80LjUvZW1wdHktdGFibGUtaGVhZGVyP2FwcGxpY2F0aW9uPWF4ZUFQSVxuICBASG9zdEJpbmRpbmcoJ2F0dHIudGl0bGUnKVxuICBwdWJsaWMgY29sdW1uTGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBAVmlld0NoaWxkKCdpbmxpbmVIZWxwQ29udGFpbmVyJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgcHVibGljIGlubGluZUhlbHBDb250YWluZXI6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIHBhcmFtczogU2t5QWdHcmlkSGVhZGVyUGFyYW1zIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICBwdWJsaWMgc29ydGVkID0gJyc7XG4gIHB1YmxpYyByZWFkb25seSBmaWx0ZXJFbmFibGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgc29ydE9yZGVyJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8J2FzYycgfCAnZGVzYycgfCB1bmRlZmluZWQ+KFxuICAgIHVuZGVmaW5lZFxuICApO1xuICBwdWJsaWMgcmVhZG9ubHkgc29ydEluZGV4RGlzcGxheSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuXG4gICNzdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICByZWFkb25seSAjY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmO1xuICByZWFkb25seSAjZHluYW1pY0NvbXBvbmVudFNlcnZpY2U6IFNreUR5bmFtaWNDb21wb25lbnRTZXJ2aWNlO1xuICAjaW5saW5lSGVscENvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPHVua25vd24+IHwgdW5kZWZpbmVkO1xuICAjdmlld0luaXRpYWxpemVkID0gZmFsc2U7XG4gICNhZ0luaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIGR5bmFtaWNDb21wb25lbnRTZXJ2aWNlOiBTa3lEeW5hbWljQ29tcG9uZW50U2VydmljZVxuICApIHtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3RvciA9IGNoYW5nZURldGVjdG9yO1xuICAgIHRoaXMuI2R5bmFtaWNDb21wb25lbnRTZXJ2aWNlID0gZHluYW1pY0NvbXBvbmVudFNlcnZpY2U7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuI3ZpZXdJbml0aWFsaXplZCA9IHRydWU7XG4gICAgdGhpcy4jdXBkYXRlSW5saW5lSGVscCgpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuI3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBhZ0luaXQocGFyYW1zOiBTa3lBZ0dyaWRIZWFkZXJQYXJhbXMgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICB0aGlzLiNhZ0luaXRpYWxpemVkID0gdHJ1ZTtcbiAgICB0aGlzLnBhcmFtcyA9IHBhcmFtcztcbiAgICB0aGlzLiNzdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gICAgaWYgKCFwYXJhbXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jb2x1bW5MYWJlbCA9IHBhcmFtcy5kaXNwbGF5TmFtZVxuICAgICAgPyB1bmRlZmluZWRcbiAgICAgIDogcGFyYW1zLmNvbHVtbi5nZXRDb2xEZWYoKS5maWVsZDtcbiAgICB0aGlzLiNzdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICAgIGlmIChwYXJhbXMuY29sdW1uLmlzRmlsdGVyQWxsb3dlZCgpKSB7XG4gICAgICB0aGlzLiNzdWJzY3JpcHRpb25zLmFkZChcbiAgICAgICAgZnJvbUV2ZW50UGF0dGVybihcbiAgICAgICAgICAoaGFuZGxlcikgPT5cbiAgICAgICAgICAgIHBhcmFtcy5jb2x1bW4uYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgICAgICAgRXZlbnRzLkVWRU5UX0ZJTFRFUl9DSEFOR0VELFxuICAgICAgICAgICAgICBoYW5kbGVyXG4gICAgICAgICAgICApLFxuICAgICAgICAgIChoYW5kbGVyKSA9PlxuICAgICAgICAgICAgcGFyYW1zLmNvbHVtbi5yZW1vdmVFdmVudExpc3RlbmVyKFxuICAgICAgICAgICAgICBFdmVudHMuRVZFTlRfRklMVEVSX0NIQU5HRUQsXG4gICAgICAgICAgICAgIGhhbmRsZXJcbiAgICAgICAgICAgIClcbiAgICAgICAgKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGlzRmlsdGVyQWN0aXZlID0gcGFyYW1zLmNvbHVtbi5pc0ZpbHRlckFjdGl2ZSgpO1xuICAgICAgICAgIGlmIChpc0ZpbHRlckFjdGl2ZSAhPT0gdGhpcy5maWx0ZXJFbmFibGVkJC5nZXRWYWx1ZSgpKSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlckVuYWJsZWQkLm5leHQoaXNGaWx0ZXJBY3RpdmUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChwYXJhbXMuZW5hYmxlU29ydGluZykge1xuICAgICAgLy8gQ29sdW1uIHNvcnQgc3RhdGUgY2hhbmdlc1xuICAgICAgdGhpcy4jc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgIGZyb21FdmVudFBhdHRlcm4oXG4gICAgICAgICAgKGhhbmRsZXIpID0+XG4gICAgICAgICAgICBwYXJhbXMuY29sdW1uLmFkZEV2ZW50TGlzdGVuZXIoRXZlbnRzLkVWRU5UX1NPUlRfQ0hBTkdFRCwgaGFuZGxlciksXG4gICAgICAgICAgKGhhbmRsZXIpID0+XG4gICAgICAgICAgICBwYXJhbXMuY29sdW1uLnJlbW92ZUV2ZW50TGlzdGVuZXIoXG4gICAgICAgICAgICAgIEV2ZW50cy5FVkVOVF9TT1JUX0NIQU5HRUQsXG4gICAgICAgICAgICAgIGhhbmRsZXJcbiAgICAgICAgICAgIClcbiAgICAgICAgKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuI3VwZGF0ZVNvcnQoKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgICAvLyBPdGhlciBjb2x1bW4gc29ydCBzdGF0ZSBjaGFuZ2VzLCBmb3IgbXVsdGktY29sdW1uIHNvcnRpbmdcbiAgICAgIHRoaXMuI3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgICBmcm9tRXZlbnRQYXR0ZXJuKFxuICAgICAgICAgIChoYW5kbGVyKSA9PlxuICAgICAgICAgICAgcGFyYW1zLmFwaS5hZGRFdmVudExpc3RlbmVyKEV2ZW50cy5FVkVOVF9TT1JUX0NIQU5HRUQsIGhhbmRsZXIpLFxuICAgICAgICAgIChoYW5kbGVyKSA9PlxuICAgICAgICAgICAgcGFyYW1zLmFwaS5yZW1vdmVFdmVudExpc3RlbmVyKEV2ZW50cy5FVkVOVF9TT1JUX0NIQU5HRUQsIGhhbmRsZXIpXG4gICAgICAgICkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLiN1cGRhdGVTb3J0SW5kZXgoKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgICB0aGlzLiN1cGRhdGVTb3J0KCk7XG4gICAgICB0aGlzLiN1cGRhdGVTb3J0SW5kZXgoKTtcbiAgICB9XG4gICAgdGhpcy4jdXBkYXRlSW5saW5lSGVscCgpO1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIG9uTWVudUNsaWNrKCRldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLnBhcmFtcz8uc2hvd0NvbHVtbk1lbnUoJGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCk7XG4gIH1cblxuICBwdWJsaWMgb25Tb3J0UmVxdWVzdGVkKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMucGFyYW1zPy5lbmFibGVTb3J0aW5nKSB7XG4gICAgICB0aGlzLnBhcmFtcz8ucHJvZ3Jlc3NTb3J0KGV2ZW50LnNoaWZ0S2V5KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVmcmVzaChwYXJhbXM6IFNreUFnR3JpZEhlYWRlclBhcmFtcyk6IGJvb2xlYW4ge1xuICAgIHRoaXMuYWdJbml0KHBhcmFtcyk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgI3VwZGF0ZUlubGluZUhlbHAoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLiN2aWV3SW5pdGlhbGl6ZWQgfHwgIXRoaXMuI2FnSW5pdGlhbGl6ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgaW5saW5lSGVscENvbXBvbmVudCA9IHRoaXMucGFyYW1zPy5pbmxpbmVIZWxwQ29tcG9uZW50O1xuICAgIGlmIChcbiAgICAgIGlubGluZUhlbHBDb21wb25lbnQgJiZcbiAgICAgICghdGhpcy4jaW5saW5lSGVscENvbXBvbmVudFJlZiB8fFxuICAgICAgICB0aGlzLiNpbmxpbmVIZWxwQ29tcG9uZW50UmVmLmNvbXBvbmVudFR5cGUgIT09IGlubGluZUhlbHBDb21wb25lbnQpXG4gICAgKSB7XG4gICAgICB0aGlzLiNkeW5hbWljQ29tcG9uZW50U2VydmljZS5yZW1vdmVDb21wb25lbnQoXG4gICAgICAgIHRoaXMuI2lubGluZUhlbHBDb21wb25lbnRSZWZcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IGhlYWRlckluZm8gPSBuZXcgU2t5QWdHcmlkSGVhZGVySW5mbygpO1xuICAgICAgaGVhZGVySW5mby5jb2x1bW4gPSB0aGlzLnBhcmFtcz8uY29sdW1uO1xuICAgICAgaGVhZGVySW5mby5jb250ZXh0ID0gdGhpcy5wYXJhbXM/LmNvbnRleHQ7XG4gICAgICBoZWFkZXJJbmZvLmRpc3BsYXlOYW1lID0gdGhpcy5wYXJhbXM/LmRpc3BsYXlOYW1lO1xuXG4gICAgICB0aGlzLiNpbmxpbmVIZWxwQ29tcG9uZW50UmVmID1cbiAgICAgICAgdGhpcy4jZHluYW1pY0NvbXBvbmVudFNlcnZpY2UuY3JlYXRlQ29tcG9uZW50KGlubGluZUhlbHBDb21wb25lbnQsIHtcbiAgICAgICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcHJvdmlkZTogU2t5QWdHcmlkSGVhZGVySW5mbyxcbiAgICAgICAgICAgICAgdXNlVmFsdWU6IGhlYWRlckluZm8sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgcmVmZXJlbmNlRWw6IHRoaXMuaW5saW5lSGVscENvbnRhaW5lcj8ubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICBsb2NhdGlvbjogU2t5RHluYW1pY0NvbXBvbmVudExvY2F0aW9uLkVsZW1lbnRCb3R0b20sXG4gICAgICAgIH0gYXMgU2t5RHluYW1pY0NvbXBvbmVudE9wdGlvbnMpO1xuICAgIH0gZWxzZSBpZiAoIWlubGluZUhlbHBDb21wb25lbnQpIHtcbiAgICAgIHRoaXMuI2R5bmFtaWNDb21wb25lbnRTZXJ2aWNlLnJlbW92ZUNvbXBvbmVudChcbiAgICAgICAgdGhpcy4jaW5saW5lSGVscENvbXBvbmVudFJlZlxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAjdXBkYXRlU29ydCgpOiB2b2lkIHtcbiAgICB0aGlzLnNvcnRPcmRlciQubmV4dCh0aGlzLnBhcmFtcz8uY29sdW1uLmdldFNvcnQoKSB8fCB1bmRlZmluZWQpO1xuICB9XG5cbiAgI3VwZGF0ZVNvcnRJbmRleCgpOiB2b2lkIHtcbiAgICBjb25zdCBzb3J0SW5kZXggPSB0aGlzLnBhcmFtcz8uY29sdW1uLmdldFNvcnRJbmRleCgpO1xuICAgIGNvbnN0IG90aGVyU29ydENvbHVtbnMgPSB0aGlzLnBhcmFtcz8uY29sdW1uQXBpXG4gICAgICA/LmdldENvbHVtbnMoKVxuICAgICAgPy5zb21lKFxuICAgICAgICAoY29sdW1uKSA9PlxuICAgICAgICAgIGNvbHVtbi5nZXRDb2xJZCgpICE9PSB0aGlzLnBhcmFtcz8uY29sdW1uLmdldENvbElkKCkgJiZcbiAgICAgICAgICAhIWNvbHVtbi5nZXRTb3J0KClcbiAgICAgICk7XG4gICAgaWYgKHNvcnRJbmRleCAhPT0gdW5kZWZpbmVkICYmIHNvcnRJbmRleCAhPT0gbnVsbCAmJiBvdGhlclNvcnRDb2x1bW5zKSB7XG4gICAgICB0aGlzLnNvcnRJbmRleERpc3BsYXkkLm5leHQoYCR7c29ydEluZGV4ICsgMX1gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zb3J0SW5kZXhEaXNwbGF5JC5uZXh0KCcnKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJhZy1jZWxsLWxhYmVsLWNvbnRhaW5lclwiIHJvbGU9XCJwcmVzZW50YXRpb25cIj5cbiAgPHNwYW5cbiAgICAqbmdJZj1cInBhcmFtcz8uZW5hYmxlTWVudVwiXG4gICAgY2xhc3M9XCJhZy1oZWFkZXItaWNvbiBhZy1oZWFkZXItY2VsbC1tZW51LWJ1dHRvblwiXG4gICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAoY2xpY2spPVwib25NZW51Q2xpY2soJGV2ZW50KVwiXG4gID5cbiAgICA8c2t5LWljb24gKnNreVRoZW1lSWY9XCInZGVmYXVsdCdcIiBpY29uPVwibWVudVwiPjwvc2t5LWljb24+XG4gICAgPHNreS1pY29uICpza3lUaGVtZUlmPVwiJ21vZGVybidcIiBpY29uPVwibWVudVwiIGljb25UeXBlPVwic2t5dXhcIj48L3NreS1pY29uPlxuICA8L3NwYW4+XG4gIDxuZy10ZW1wbGF0ZSAjaGVhZGVyVGV4dD5cbiAgICA8c3BhbiBjbGFzcz1cImFnLWhlYWRlci1jZWxsLXRleHRcIj57eyBwYXJhbXM/LmRpc3BsYXlOYW1lIH19PC9zcGFuPlxuICAgIDxzcGFuXG4gICAgICAqbmdJZj1cImZpbHRlckVuYWJsZWQkIHwgYXN5bmNcIlxuICAgICAgY2xhc3M9XCJhZy1oZWFkZXItaWNvbiBhZy1oZWFkZXItbGFiZWwtaWNvbiBhZy1maWx0ZXItaWNvblwiXG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxza3ktaWNvbiAqc2t5VGhlbWVJZj1cIidkZWZhdWx0J1wiIGljb249XCJmaWx0ZXJcIj48L3NreS1pY29uPlxuICAgICAgPHNreS1pY29uXG4gICAgICAgICpza3lUaGVtZUlmPVwiJ21vZGVybidcIlxuICAgICAgICBpY29uPVwiZmlsdGVyXCJcbiAgICAgICAgaWNvblR5cGU9XCJza3l1eFwiXG4gICAgICA+PC9za3ktaWNvbj5cbiAgICA8L3NwYW4+XG4gICAgPHNwYW4gKm5nSWY9XCJwYXJhbXM/LmVuYWJsZVNvcnRpbmdcIiBjbGFzcz1cImFnLXNvcnQtaW5kaWNhdG9yLWNvbnRhaW5lclwiPlxuICAgICAgPHNreS1pY29uXG4gICAgICAgICpuZ0lmPVwiKHNvcnRPcmRlciQgfCBhc3luYykgPT09ICdkZXNjJ1wiXG4gICAgICAgIGljb249XCJjYXJldC1kb3duXCJcbiAgICAgICAgY2xhc3M9XCJhZy1oZWFkZXItbGFiZWwtaWNvblwiXG4gICAgICA+PC9za3ktaWNvbj5cbiAgICAgIDxza3ktaWNvblxuICAgICAgICAqbmdJZj1cIihzb3J0T3JkZXIkIHwgYXN5bmMpID09PSAnYXNjJ1wiXG4gICAgICAgIGljb249XCJjYXJldC11cFwiXG4gICAgICAgIGNsYXNzPVwiYWctaGVhZGVyLWxhYmVsLWljb25cIlxuICAgICAgPjwvc2t5LWljb24+XG4gICAgICA8c3BhblxuICAgICAgICAqbmdJZj1cInNvcnRJbmRleERpc3BsYXkkIHwgYXN5bmMgYXMgc29ydEluZGV4RGlzcGxheVwiXG4gICAgICAgIGNsYXNzPVwiYWctc29ydC1pbmRpY2F0b3ItaWNvbiBhZy1zb3J0LW9yZGVyXCJcbiAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgPnt7IHNvcnRJbmRleERpc3BsYXkgfX08L3NwYW5cbiAgICAgID5cbiAgICA8L3NwYW4+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZSAjbm90U29ydGluZ0hlYWRlcj5cbiAgICA8ZGl2IGNsYXNzPVwiYWctaGVhZGVyLWNlbGwtbGFiZWxcIiByb2xlPVwicHJlc2VudGF0aW9uXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyVGV4dFwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuICA8YnV0dG9uXG4gICAgKm5nSWY9XCJwYXJhbXM/LmVuYWJsZVNvcnRpbmc7IGVsc2Ugbm90U29ydGluZ0hlYWRlclwiXG4gICAgY2xhc3M9XCJhZy1oZWFkZXItY2VsbC1sYWJlbCBhZy1oZWFkZXItY2VsbC1sYWJlbC1zb3J0YWJsZSBza3ktYnRuLWxpbmstaW5saW5lXCJcbiAgICAoY2xpY2spPVwib25Tb3J0UmVxdWVzdGVkKCRldmVudClcIlxuICA+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImhlYWRlclRleHRcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9idXR0b24+XG48L2Rpdj5cbjxzcGFuIGNsYXNzPVwic2t5LWNvbnRyb2wtaGVscC1jb250YWluZXJcIiAjaW5saW5lSGVscENvbnRhaW5lcj48L3NwYW4+XG4iXX0=
@@ -1146,6 +1146,9 @@ class SkyAgGridHeaderComponent {
1146
1146
  if (!params) {
1147
1147
  return;
1148
1148
  }
1149
+ this.columnLabel = params.displayName
1150
+ ? undefined
1151
+ : params.column.getColDef().field;
1149
1152
  __classPrivateFieldSet(this, _SkyAgGridHeaderComponent_subscriptions, new Subscription(), "f");
1150
1153
  if (params.column.isFilterAllowed()) {
1151
1154
  __classPrivateFieldGet(this, _SkyAgGridHeaderComponent_subscriptions, "f").add(fromEventPattern((handler) => params.column.addEventListener(Events.EVENT_FILTER_CHANGED, handler), (handler) => params.column.removeEventListener(Events.EVENT_FILTER_CHANGED, handler)).subscribe(() => {
@@ -1232,11 +1235,14 @@ _SkyAgGridHeaderComponent_subscriptions = new WeakMap(), _SkyAgGridHeaderCompone
1232
1235
  }
1233
1236
  };
1234
1237
  SkyAgGridHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: SkyAgGridHeaderComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.SkyDynamicComponentService }], target: i0.ɵɵFactoryTarget.Component });
1235
- SkyAgGridHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.11", type: SkyAgGridHeaderComponent, selector: "sky-ag-grid-header", viewQueries: [{ propertyName: "inlineHelpContainer", first: true, predicate: ["inlineHelpContainer"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<div class=\"ag-cell-label-container\" role=\"presentation\">\n <span\n *ngIf=\"params?.enableMenu\"\n class=\"ag-header-icon ag-header-cell-menu-button\"\n aria-hidden=\"true\"\n (click)=\"onMenuClick($event)\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"menu\"></sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\" icon=\"menu\" iconType=\"skyux\"></sky-icon>\n </span>\n <div\n [class.ag-header-cell-label-sortable]=\"params?.enableSorting\"\n class=\"ag-header-cell-label\"\n role=\"presentation\"\n (click)=\"onSortRequested($event)\"\n >\n <span class=\"ag-header-cell-text\">\n <ng-template #notSortingHeaderText>{{ params?.displayName }}</ng-template>\n <button\n *ngIf=\"params?.enableSorting; else notSortingHeaderText\"\n class=\"sky-btn-link-inline\"\n (click)=\"onSortRequested($event)\"\n >\n <ng-container *ngTemplateOutlet=\"notSortingHeaderText\"></ng-container>\n </button>\n </span>\n <span\n *ngIf=\"filterEnabled$ | async\"\n class=\"ag-header-icon ag-header-label-icon ag-filter-icon\"\n aria-hidden=\"true\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"filter\"></sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"filter\"\n iconType=\"skyux\"\n ></sky-icon>\n </span>\n <span *ngIf=\"params?.enableSorting\" class=\"ag-sort-indicator-container\">\n <sky-icon\n *ngIf=\"(sortOrder$ | async) === 'desc'\"\n icon=\"caret-down\"\n class=\"ag-header-label-icon\"\n ></sky-icon>\n <sky-icon\n *ngIf=\"(sortOrder$ | async) === 'asc'\"\n icon=\"caret-up\"\n class=\"ag-header-label-icon\"\n ></sky-icon>\n <span\n *ngIf=\"sortIndexDisplay$ | async as sortIndexDisplay\"\n class=\"ag-sort-indicator-icon ag-sort-order\"\n aria-hidden=\"true\"\n >{{ sortIndexDisplay }}</span\n >\n </span>\n </div>\n</div>\n<span class=\"sky-control-help-container\" #inlineHelpContainer></span>\n", styles: [":host{display:flex;max-width:100%;align-items:center;align-content:center}.ag-header-cell-label{padding-right:0;padding-left:0}.ag-header-cell-label button{text-transform:inherit}button{cursor:pointer;flex-grow:0;flex-shrink:0}\n"], dependencies: [{ kind: "directive", type: i2$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3$2.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }, { kind: "directive", type: i1$2.λ3, selector: "[skyThemeIf]", inputs: ["skyThemeIf"] }, { kind: "pipe", type: i2$3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1238
+ SkyAgGridHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.11", type: SkyAgGridHeaderComponent, selector: "sky-ag-grid-header", host: { properties: { "attr.title": "this.columnLabel" } }, viewQueries: [{ propertyName: "inlineHelpContainer", first: true, predicate: ["inlineHelpContainer"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<div class=\"ag-cell-label-container\" role=\"presentation\">\n <span\n *ngIf=\"params?.enableMenu\"\n class=\"ag-header-icon ag-header-cell-menu-button\"\n aria-hidden=\"true\"\n (click)=\"onMenuClick($event)\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"menu\"></sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\" icon=\"menu\" iconType=\"skyux\"></sky-icon>\n </span>\n <ng-template #headerText>\n <span class=\"ag-header-cell-text\">{{ params?.displayName }}</span>\n <span\n *ngIf=\"filterEnabled$ | async\"\n class=\"ag-header-icon ag-header-label-icon ag-filter-icon\"\n aria-hidden=\"true\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"filter\"></sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"filter\"\n iconType=\"skyux\"\n ></sky-icon>\n </span>\n <span *ngIf=\"params?.enableSorting\" class=\"ag-sort-indicator-container\">\n <sky-icon\n *ngIf=\"(sortOrder$ | async) === 'desc'\"\n icon=\"caret-down\"\n class=\"ag-header-label-icon\"\n ></sky-icon>\n <sky-icon\n *ngIf=\"(sortOrder$ | async) === 'asc'\"\n icon=\"caret-up\"\n class=\"ag-header-label-icon\"\n ></sky-icon>\n <span\n *ngIf=\"sortIndexDisplay$ | async as sortIndexDisplay\"\n class=\"ag-sort-indicator-icon ag-sort-order\"\n aria-hidden=\"true\"\n >{{ sortIndexDisplay }}</span\n >\n </span>\n </ng-template>\n <ng-template #notSortingHeader>\n <div class=\"ag-header-cell-label\" role=\"presentation\">\n <ng-container *ngTemplateOutlet=\"headerText\"></ng-container>\n </div>\n </ng-template>\n <button\n *ngIf=\"params?.enableSorting; else notSortingHeader\"\n class=\"ag-header-cell-label ag-header-cell-label-sortable sky-btn-link-inline\"\n (click)=\"onSortRequested($event)\"\n >\n <ng-container *ngTemplateOutlet=\"headerText\"></ng-container>\n </button>\n</div>\n<span class=\"sky-control-help-container\" #inlineHelpContainer></span>\n", styles: [":host{display:flex;max-width:100%;height:100%;align-items:center;align-content:center}button.ag-header-cell-label{text-transform:inherit;max-width:100%}.ag-cell-label-container{padding:0}.ag-header-cell-label{padding-right:0;padding-left:0}button{cursor:pointer;flex-grow:0;flex-shrink:0}\n"], dependencies: [{ kind: "directive", type: i2$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3$2.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }, { kind: "directive", type: i1$2.λ3, selector: "[skyThemeIf]", inputs: ["skyThemeIf"] }, { kind: "pipe", type: i2$3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1236
1239
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: SkyAgGridHeaderComponent, decorators: [{
1237
1240
  type: Component,
1238
- args: [{ selector: 'sky-ag-grid-header', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"ag-cell-label-container\" role=\"presentation\">\n <span\n *ngIf=\"params?.enableMenu\"\n class=\"ag-header-icon ag-header-cell-menu-button\"\n aria-hidden=\"true\"\n (click)=\"onMenuClick($event)\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"menu\"></sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\" icon=\"menu\" iconType=\"skyux\"></sky-icon>\n </span>\n <div\n [class.ag-header-cell-label-sortable]=\"params?.enableSorting\"\n class=\"ag-header-cell-label\"\n role=\"presentation\"\n (click)=\"onSortRequested($event)\"\n >\n <span class=\"ag-header-cell-text\">\n <ng-template #notSortingHeaderText>{{ params?.displayName }}</ng-template>\n <button\n *ngIf=\"params?.enableSorting; else notSortingHeaderText\"\n class=\"sky-btn-link-inline\"\n (click)=\"onSortRequested($event)\"\n >\n <ng-container *ngTemplateOutlet=\"notSortingHeaderText\"></ng-container>\n </button>\n </span>\n <span\n *ngIf=\"filterEnabled$ | async\"\n class=\"ag-header-icon ag-header-label-icon ag-filter-icon\"\n aria-hidden=\"true\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"filter\"></sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"filter\"\n iconType=\"skyux\"\n ></sky-icon>\n </span>\n <span *ngIf=\"params?.enableSorting\" class=\"ag-sort-indicator-container\">\n <sky-icon\n *ngIf=\"(sortOrder$ | async) === 'desc'\"\n icon=\"caret-down\"\n class=\"ag-header-label-icon\"\n ></sky-icon>\n <sky-icon\n *ngIf=\"(sortOrder$ | async) === 'asc'\"\n icon=\"caret-up\"\n class=\"ag-header-label-icon\"\n ></sky-icon>\n <span\n *ngIf=\"sortIndexDisplay$ | async as sortIndexDisplay\"\n class=\"ag-sort-indicator-icon ag-sort-order\"\n aria-hidden=\"true\"\n >{{ sortIndexDisplay }}</span\n >\n </span>\n </div>\n</div>\n<span class=\"sky-control-help-container\" #inlineHelpContainer></span>\n", styles: [":host{display:flex;max-width:100%;align-items:center;align-content:center}.ag-header-cell-label{padding-right:0;padding-left:0}.ag-header-cell-label button{text-transform:inherit}button{cursor:pointer;flex-grow:0;flex-shrink:0}\n"] }]
1239
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.SkyDynamicComponentService }]; }, propDecorators: { inlineHelpContainer: [{
1241
+ args: [{ selector: 'sky-ag-grid-header', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"ag-cell-label-container\" role=\"presentation\">\n <span\n *ngIf=\"params?.enableMenu\"\n class=\"ag-header-icon ag-header-cell-menu-button\"\n aria-hidden=\"true\"\n (click)=\"onMenuClick($event)\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"menu\"></sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\" icon=\"menu\" iconType=\"skyux\"></sky-icon>\n </span>\n <ng-template #headerText>\n <span class=\"ag-header-cell-text\">{{ params?.displayName }}</span>\n <span\n *ngIf=\"filterEnabled$ | async\"\n class=\"ag-header-icon ag-header-label-icon ag-filter-icon\"\n aria-hidden=\"true\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"filter\"></sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"filter\"\n iconType=\"skyux\"\n ></sky-icon>\n </span>\n <span *ngIf=\"params?.enableSorting\" class=\"ag-sort-indicator-container\">\n <sky-icon\n *ngIf=\"(sortOrder$ | async) === 'desc'\"\n icon=\"caret-down\"\n class=\"ag-header-label-icon\"\n ></sky-icon>\n <sky-icon\n *ngIf=\"(sortOrder$ | async) === 'asc'\"\n icon=\"caret-up\"\n class=\"ag-header-label-icon\"\n ></sky-icon>\n <span\n *ngIf=\"sortIndexDisplay$ | async as sortIndexDisplay\"\n class=\"ag-sort-indicator-icon ag-sort-order\"\n aria-hidden=\"true\"\n >{{ sortIndexDisplay }}</span\n >\n </span>\n </ng-template>\n <ng-template #notSortingHeader>\n <div class=\"ag-header-cell-label\" role=\"presentation\">\n <ng-container *ngTemplateOutlet=\"headerText\"></ng-container>\n </div>\n </ng-template>\n <button\n *ngIf=\"params?.enableSorting; else notSortingHeader\"\n class=\"ag-header-cell-label ag-header-cell-label-sortable sky-btn-link-inline\"\n (click)=\"onSortRequested($event)\"\n >\n <ng-container *ngTemplateOutlet=\"headerText\"></ng-container>\n </button>\n</div>\n<span class=\"sky-control-help-container\" #inlineHelpContainer></span>\n", styles: [":host{display:flex;max-width:100%;height:100%;align-items:center;align-content:center}button.ag-header-cell-label{text-transform:inherit;max-width:100%}.ag-cell-label-container{padding:0}.ag-header-cell-label{padding-right:0;padding-left:0}button{cursor:pointer;flex-grow:0;flex-shrink:0}\n"] }]
1242
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.SkyDynamicComponentService }]; }, propDecorators: { columnLabel: [{
1243
+ type: HostBinding,
1244
+ args: ['attr.title']
1245
+ }], inlineHelpContainer: [{
1240
1246
  type: ViewChild,
1241
1247
  args: ['inlineHelpContainer', { read: ElementRef, static: true }]
1242
1248
  }] } });