@datorama/core 22.0.2 → 22.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/datorama-core.umd.js +7 -2
- package/bundles/datorama-core.umd.js.map +1 -1
- package/bundles/datorama-core.umd.min.js +2 -2
- package/bundles/datorama-core.umd.min.js.map +1 -1
- package/datorama-core.metadata.json +1 -1
- package/esm2015/lib/grid-v2/grid-toolbar/grid-toolbar.component.js +7 -2
- package/esm2015/lib/version.js +2 -2
- package/esm5/lib/grid-v2/grid-toolbar/grid-toolbar.component.js +7 -2
- package/esm5/lib/version.js +2 -2
- package/fesm2015/datorama-core.js +7 -2
- package/fesm2015/datorama-core.js.map +1 -1
- package/fesm5/datorama-core.js +7 -2
- package/fesm5/datorama-core.js.map +1 -1
- package/lib/grid-v2/grid-toolbar/grid-toolbar.component.d.ts +1 -0
- package/package.json +1 -1
|
@@ -39,6 +39,7 @@ let DatoGridV2ToolbarComponent = class DatoGridV2ToolbarComponent {
|
|
|
39
39
|
this.gridActions = { mainList: [], moreMenu: [] };
|
|
40
40
|
this.searchPlaceholder = this.translate.transform('core.search');
|
|
41
41
|
this.rowActionsShortLabelThreshold = 1539;
|
|
42
|
+
this.displayCustomGridActionsSeparator = true;
|
|
42
43
|
this.openMenus = {
|
|
43
44
|
group: false,
|
|
44
45
|
settings: false
|
|
@@ -386,10 +387,14 @@ __decorate([
|
|
|
386
387
|
Input(),
|
|
387
388
|
__metadata("design:type", Number)
|
|
388
389
|
], DatoGridV2ToolbarComponent.prototype, "rowActionsShortLabelThreshold", void 0);
|
|
390
|
+
__decorate([
|
|
391
|
+
Input(),
|
|
392
|
+
__metadata("design:type", Object)
|
|
393
|
+
], DatoGridV2ToolbarComponent.prototype, "displayCustomGridActionsSeparator", void 0);
|
|
389
394
|
DatoGridV2ToolbarComponent = __decorate([
|
|
390
395
|
Component({
|
|
391
396
|
selector: 'dato-grid-toolbar-v2',
|
|
392
|
-
template: "<section *ngIf=\"gridController.gridQuery.gridReady$ | async\" class=\"d-flex mb-20 justify-between items-center main-container\" [class.mx-30]=\"enableBackground\">\n\n <section [ngClass]=\"{ 'd-flex items-center right-section': enableV2_1 }\">\n <!-- Dynamic content for the left area -->\n <div data-auto-id=\"grid-toolbar-dynamic-left\">\n <ng-content select=\"[toolbarLeftArea]\"></ng-content>\n </div>\n\n <div class=\"d-flex items-center\">\n <dato-grid-search-bar *ngIf=\"enableSearch\" [searchPlaceholder]=\"searchPlaceholder\"></dato-grid-search-bar>\n <ng-container *ngIf=\"enableV2_1 && selectedRowsCount > 0\">\n <div class=\"d-flex items-center\">\n <div class=\"chip align-center d-flex dato-note px-9 nowrap ml-16\">\n <span data-auto-id=\"grid-selected-items-text\">{{ (allPageRowsSelected ? 'core.all-items-in-page-selected' : 'core.selected-items') | translate:{ itemsCount: selectedRowsCount } }}</span>\n <dato-icon datoType=\"primary\" datoIcon=\"close\" datoSize=\"md\" class=\"ml-6 pointer\" (click)=\"clearSelectedRows()\"\n data-auto-id=\"grid-clear-selected-rows\"></dato-icon>\n </div>\n <dato-link *ngIf=\"allPageRowsSelected\" (click)=\"selectAllPages()\" datoSize=\"sm\" class=\"ml-10\"\n data-auto-id=\"grid-select-all-pages\">\n <span>{{'core.select-all-items' | translate:{ itemsCount: totalRowsCount } }}</span>\n </dato-link>\n </div>\n <div *ngIf=\"hasRowActions\" class=\"separator\"></div>\n </ng-container>\n </div>\n\n <!-- Row Actions-->\n <div class=\"d-flex items-center\" *ngIf=\"isRowActionsVisible\">\n\n <ng-container *ngFor=\"let rowAction of rowActions.mainList; index as i; last as isLast\">\n\n <div *ngIf=\"!isRowActionHidden(rowAction)\"\n [attr.data-auto-id]=\"'grid-toolbar-action-' + rowAction.key\"\n [attr.data-action-index]=\"'grid-toolbar-action-' + i\"\n [class.disabled-action]=\"isActionDisabled(rowAction)\">\n <ng-container [ngTemplateOutlet]=\"rowAction.template || defaultButton\"\n [ngTemplateOutletContext]=\"{disabled: isActionDisabled(rowAction)}\"></ng-container>\n </div>\n\n <ng-template #defaultButton>\n <div (click)=\"onActionClick(rowAction)\">\n <dato-grid-toolbar-button [icon]=\"rowAction.icon\"\n [disabled]=\"isActionDisabled(rowAction)\"\n [label]=\"rowAction.label\"\n [shortLabel]=\"rowAction.shortLabel\"\n [tooltip]=\"rowAction.tooltip\"\n [getMenu]=\"rowAction.getMenu\"\n [enableV2_1]=\"enableV2_1\"\n [isLast]=\"isLast\"\n [widthToHideLabel]=\"widthToHideActionsLabels\">\n </dato-grid-toolbar-button>\n </div>\n </ng-template>\n </ng-container>\n\n <div *ngIf=\"rowActions.moreMenu.length > 0\" class=\"separator\"></div>\n <dato-grid-toolbar-more-menu [actions]=\"rowActions.moreMenu\" (actionClick)=\"onActionClick($event)\" [isRowActions]=\"true\">\n </dato-grid-toolbar-more-menu>\n </div>\n\n </section>\n\n\n <!-- General Actions -->\n <div class=\"d-flex items-center\">\n <!-- Dynamic content for the right area -->\n <div #customActions data-auto-id=\"grid-toolbar-dynamic-right\">\n <ng-content select=\"[toolbarRightArea]\"></ng-content>\n </div>\n <div *ngIf=\"customActions.childNodes.length\" class=\"separator\"></div>\n <!-- Group buttons -->\n <div *ngIf=\"groupsAllowed\" class=\"d-flex grouping-section opacity-0 invisible\" [class.open]=\"openMenus.group || hasGroups\">\n <dato-icon-button [class.active]=\"openMenus.group\" (click)=\"executeTableAction('Group from Toolbar')\"\n data-auto-id=\"grid-toolbar-open-groups\"\n removeIconPadding datoSize=\"md\" datoType=\"none\" icon=\"group\" iconWidth=\"17px\"\n datoTooltip=\"core.row-grouping\" #groupTrigger\n class=\"mr-10 pointer\"></dato-icon-button>\n <dato-icon-button data-auto-id=\"grid-toolbar-toggle-expand\" datoSize=\"md\" datoType=\"none\"\n (click)=\"executeTableAction('Collapse Expand')\"\n [icon]=\"rowGroupsCollapsed ? 'expand' : 'collapse'\"\n [disabled]=\"!hasGroups\"\n [datoTooltip]=\"'core.' + (rowGroupsCollapsed ? 'expand' : 'collapse') + '-rows'\"\n class=\"pointer\"></dato-icon-button>\n <div class=\"separator\"></div>\n </div>\n\n <!-- Settings and export -->\n <ng-container *ngIf=\"createAction\">\n <dato-button datoSize=\"sm\" class=\"pointer primary-300-color\" (click)=\"onActionClick(createAction)\"\n [datoTooltip]=\"createAction.tooltip\" [attr.data-auto-id]=\"'grid-toolbar-action-' + createAction.key\">\n <dato-icon *ngIf=\"createAction.icon\" [icon]=\"createAction.icon\" class=\"mr-5\"></dato-icon>\n {{ createAction.label | translate }}\n </dato-button>\n <div class=\"separator\"></div>\n </ng-container>\n <ng-container *ngFor=\"let gridAction of gridActions.mainList; index as i\">\n <div *ngIf=\"gridAction.getMenu else button\" [datoMenuTriggerFor]=\"gridAction.getMenu()\">\n <ng-container [ngTemplateOutlet]=\"button\"></ng-container>\n </div>\n <ng-template #button>\n <dato-icon datoSize=\"sm\" (click)=\"onActionClick(gridAction)\"\n [attr.data-auto-id]=\"'grid-toolbar-action-' + gridAction.key\"\n [attr.data-action-index]=\"'grid-toolbar-general-action-' + i\"\n [icon]=\"gridAction.icon\" class=\"pointer primary-300-color\"\n [class.mr-16]=\"!gridAction.separator\"\n [datoTooltip]=\"gridAction.tooltip || gridAction.label\">\n </dato-icon>\n </ng-template>\n <div *ngIf=\"gridAction.separator\" class=\"separator\"></div>\n </ng-container>\n\n <dato-icon data-auto-id=\"grid-toolbar-export\" datoSize=\"sm\"\n (click)=\"executeTableAction('Export')\" *ngIf=\"displayExport && !isTreeMode\"\n icon=\"export\" class=\"pointer mr-16 primary-300-color\" datoTooltip=\"core.export-table\"></dato-icon>\n <dato-icon [class.active]=\"openMenus.settings\" (click)=\"openMenus.settings = true\"\n data-auto-id=\"grid-toolbar-settings\" datoSize=\"sm\"\n icon=\"account\" class=\"pointer primary-300-color\" datoTooltip=\"core.table-settings\"\n #settingsTrigger\n [datoMenuTriggerFor]=\"settingsMenu\"></dato-icon>\n\n <ng-container *ngIf=\"gridActions.moreMenu.length > 0\">\n <div class=\"separator\"></div>\n <dato-grid-toolbar-more-menu [actions]=\"gridActions.moreMenu\" (actionClick)=\"onActionClick($event)\" [isRowActions]=\"false\">\n </dato-grid-toolbar-more-menu>\n </ng-container>\n\n\n <dato-menu #settingsMenu=\"datoMenu\" menuClass=\"grid-settings-menu\" placement=\"bottom-end\"\n (menuClosed)=\"openMenus.settings = false\">\n <ng-template datoMenuContent>\n <button data-auto-id=\"grid-toolbar-settings-autofit-page\" datoMenuItem\n (click)=\"executeTableAction('Autofit to Page')\">\n <dato-icon datoSize=\"sm\" icon=\"maximize-horizontal\" class=\"mr-8 primary-300-color\"></dato-icon>\n {{ 'core.autofitPage' | translate }}</button>\n <button data-auto-id=\"grid-toolbar-settings-autofit-content\" datoMenuItem\n (click)=\"executeTableAction('Autofit to Content')\">\n <dato-icon datoSize=\"sm\" icon=\"minimize-horizontal\" class=\"mr-8 primary-300-color\"></dato-icon>\n {{ 'core.autofitContent' | translate }}</button>\n <ng-container *ngIf=\"groupsAllowed\">\n <button data-auto-id=\"grid-toolbar-settings-group\" datoMenuItem (click)=\"executeTableAction('Group from Settings')\">\n <dato-icon datoSize=\"sm\" icon=\"group\" class=\"mr-4 primary-300-color\"></dato-icon>\n {{ 'core.group' | translate }}\n </button>\n </ng-container>\n <button data-auto-id=\"grid-toolbar-settings-toggle-columns\" datoMenuItem (click)=\"executeTableAction('Show Hide Column')\">\n <dato-icon datoSize=\"sm\" icon=\"hide\" class=\"mr-8 primary-300-color\"></dato-icon>\n <span>{{ 'core.hideShowColumns' | translate }}<span\n class=\"dato-simple-italic ml-5 primary-200-color\">{{hiddenColumns}}</span></span>\n </button>\n <button data-auto-id=\"grid-toolbar-settings-reset-settings\" datoMenuItem\n (click)=\"executeTableAction('Reset Settings')\">\n <dato-icon datoSize=\"sm\" icon=\"reset-table\" class=\"mr-8 primary-300-color\"></dato-icon>\n {{ 'core.resetTableSettings' | translate }}\n </button>\n <button data-auto-id=\"grid-toolbar-settings-reset-filters\" datoMenuItem\n (click)=\"executeTableAction('Reset Filters')\">\n <dato-icon datoSize=\"sm\" icon=\"reset-filters\" class=\"mr-8 primary-300-color\"></dato-icon>\n {{ 'core.resetAllFilters' | translate }}\n </button>\n <button data-auto-id=\"grid-toolbar-export\" datoMenuItem\n (click)=\"executeTableAction('Export')\" *ngIf=\"this.displayExport && isTreeMode\">\n <dato-icon datoSize=\"sm\"\n icon=\"export\" class=\"pointer mr-5 primary-300-color\" datoTooltip=\"core.export-table\"></dato-icon>\n {{ 'core.export-table' | translate }}\n </button>\n </ng-template>\n </dato-menu>\n </div>\n</section>\n\n\n",
|
|
397
|
+
template: "<section *ngIf=\"gridController.gridQuery.gridReady$ | async\" class=\"d-flex mb-20 justify-between items-center main-container\" [class.mx-30]=\"enableBackground\">\n\n <section [ngClass]=\"{ 'd-flex items-center right-section': enableV2_1 }\">\n <!-- Dynamic content for the left area -->\n <div data-auto-id=\"grid-toolbar-dynamic-left\">\n <ng-content select=\"[toolbarLeftArea]\"></ng-content>\n </div>\n\n <div class=\"d-flex items-center\">\n <dato-grid-search-bar *ngIf=\"enableSearch\" [searchPlaceholder]=\"searchPlaceholder\"></dato-grid-search-bar>\n <ng-container *ngIf=\"enableV2_1 && selectedRowsCount > 0\">\n <div class=\"d-flex items-center\">\n <div class=\"chip align-center d-flex dato-note px-9 nowrap ml-16\">\n <span data-auto-id=\"grid-selected-items-text\">{{ (allPageRowsSelected ? 'core.all-items-in-page-selected' : 'core.selected-items') | translate:{ itemsCount: selectedRowsCount } }}</span>\n <dato-icon datoType=\"primary\" datoIcon=\"close\" datoSize=\"md\" class=\"ml-6 pointer\" (click)=\"clearSelectedRows()\"\n data-auto-id=\"grid-clear-selected-rows\"></dato-icon>\n </div>\n <dato-link *ngIf=\"allPageRowsSelected\" (click)=\"selectAllPages()\" datoSize=\"sm\" class=\"ml-10\"\n data-auto-id=\"grid-select-all-pages\">\n <span>{{'core.select-all-items' | translate:{ itemsCount: totalRowsCount } }}</span>\n </dato-link>\n </div>\n <div *ngIf=\"hasRowActions\" class=\"separator\"></div>\n </ng-container>\n </div>\n\n <!-- Row Actions-->\n <div class=\"d-flex items-center\" *ngIf=\"isRowActionsVisible\">\n\n <ng-container *ngFor=\"let rowAction of rowActions.mainList; index as i; last as isLast\">\n\n <div *ngIf=\"!isRowActionHidden(rowAction)\"\n [attr.data-auto-id]=\"'grid-toolbar-action-' + rowAction.key\"\n [attr.data-action-index]=\"'grid-toolbar-action-' + i\"\n [class.disabled-action]=\"isActionDisabled(rowAction)\">\n <ng-container [ngTemplateOutlet]=\"rowAction.template || defaultButton\"\n [ngTemplateOutletContext]=\"{disabled: isActionDisabled(rowAction)}\"></ng-container>\n </div>\n\n <ng-template #defaultButton>\n <div (click)=\"onActionClick(rowAction)\">\n <dato-grid-toolbar-button [icon]=\"rowAction.icon\"\n [disabled]=\"isActionDisabled(rowAction)\"\n [label]=\"rowAction.label\"\n [shortLabel]=\"rowAction.shortLabel\"\n [tooltip]=\"rowAction.tooltip\"\n [getMenu]=\"rowAction.getMenu\"\n [enableV2_1]=\"enableV2_1\"\n [isLast]=\"isLast\"\n [widthToHideLabel]=\"widthToHideActionsLabels\">\n </dato-grid-toolbar-button>\n </div>\n </ng-template>\n </ng-container>\n\n <div *ngIf=\"rowActions.moreMenu.length > 0\" class=\"separator\"></div>\n <dato-grid-toolbar-more-menu [actions]=\"rowActions.moreMenu\" (actionClick)=\"onActionClick($event)\" [isRowActions]=\"true\">\n </dato-grid-toolbar-more-menu>\n </div>\n\n </section>\n\n\n <!-- General Actions -->\n <div class=\"d-flex items-center\">\n <!-- Create action -->\n <ng-container *ngIf=\"createAction\">\n <dato-button datoSize=\"sm\" class=\"pointer primary-300-color\" (click)=\"onActionClick(createAction)\"\n [datoTooltip]=\"createAction.tooltip\" [attr.data-auto-id]=\"'grid-toolbar-action-' + createAction.key\">\n <dato-icon *ngIf=\"createAction.icon\" [icon]=\"createAction.icon\" class=\"mr-5\"></dato-icon>\n {{ createAction.label | translate }}\n </dato-button>\n <div class=\"separator\"></div>\n </ng-container>\n\n <!-- Dynamic content for the right area -->\n <div #customActions data-auto-id=\"grid-toolbar-dynamic-right\">\n <ng-content select=\"[toolbarRightArea]\"></ng-content>\n </div>\n <div *ngIf=\"customActions.childNodes.length && displayCustomGridActionsSeparator\" class=\"separator\"></div>\n\n <!-- Group buttons -->\n <div *ngIf=\"groupsAllowed\" class=\"d-flex grouping-section opacity-0 invisible\" [class.open]=\"openMenus.group || hasGroups\">\n <dato-icon-button [class.active]=\"openMenus.group\" (click)=\"executeTableAction('Group from Toolbar')\"\n data-auto-id=\"grid-toolbar-open-groups\"\n removeIconPadding datoSize=\"md\" datoType=\"none\" icon=\"group\" iconWidth=\"17px\"\n datoTooltip=\"core.row-grouping\" #groupTrigger\n class=\"mr-10 pointer\"></dato-icon-button>\n <dato-icon-button data-auto-id=\"grid-toolbar-toggle-expand\" datoSize=\"md\" datoType=\"none\"\n (click)=\"executeTableAction('Collapse Expand')\"\n [icon]=\"rowGroupsCollapsed ? 'expand' : 'collapse'\"\n [disabled]=\"!hasGroups\"\n [datoTooltip]=\"'core.' + (rowGroupsCollapsed ? 'expand' : 'collapse') + '-rows'\"\n class=\"pointer\"></dato-icon-button>\n <div class=\"separator\"></div>\n </div>\n\n <!-- Grid Actions -->\n <ng-container *ngFor=\"let gridAction of gridActions.mainList; index as i\">\n <div *ngIf=\"gridAction.getMenu else button\" [datoMenuTriggerFor]=\"gridAction.getMenu()\">\n <ng-container [ngTemplateOutlet]=\"button\"></ng-container>\n </div>\n <ng-template #button>\n <dato-icon datoSize=\"sm\" (click)=\"onActionClick(gridAction)\"\n [attr.data-auto-id]=\"'grid-toolbar-action-' + gridAction.key\"\n [attr.data-action-index]=\"'grid-toolbar-general-action-' + i\"\n [icon]=\"gridAction.icon\" class=\"pointer primary-300-color\"\n [class.mr-16]=\"!gridAction.separator\"\n [datoTooltip]=\"gridAction.tooltip || gridAction.label\">\n </dato-icon>\n </ng-template>\n <div *ngIf=\"gridAction.separator\" class=\"separator\"></div>\n </ng-container>\n\n <!-- Export -->\n <dato-icon data-auto-id=\"grid-toolbar-export\" datoSize=\"sm\"\n (click)=\"executeTableAction('Export')\" *ngIf=\"displayExport && !isTreeMode\"\n icon=\"export\" class=\"pointer mr-16 primary-300-color\" datoTooltip=\"core.export-table\"></dato-icon>\n\n <!-- Settings -->\n <dato-icon [class.active]=\"openMenus.settings\" (click)=\"openMenus.settings = true\"\n data-auto-id=\"grid-toolbar-settings\" datoSize=\"sm\"\n icon=\"account\" class=\"pointer primary-300-color\" datoTooltip=\"core.table-settings\"\n #settingsTrigger\n [datoMenuTriggerFor]=\"settingsMenu\"></dato-icon>\n\n <!-- More actions menu -->\n <ng-container *ngIf=\"gridActions.moreMenu.length > 0\">\n <div class=\"separator\"></div>\n <dato-grid-toolbar-more-menu [actions]=\"gridActions.moreMenu\" (actionClick)=\"onActionClick($event)\" [isRowActions]=\"false\">\n </dato-grid-toolbar-more-menu>\n </ng-container>\n\n <dato-menu #settingsMenu=\"datoMenu\" menuClass=\"grid-settings-menu\" placement=\"bottom-end\"\n (menuClosed)=\"openMenus.settings = false\">\n <ng-template datoMenuContent>\n <button data-auto-id=\"grid-toolbar-settings-autofit-page\" datoMenuItem\n (click)=\"executeTableAction('Autofit to Page')\">\n <dato-icon datoSize=\"sm\" icon=\"maximize-horizontal\" class=\"mr-8 primary-300-color\"></dato-icon>\n {{ 'core.autofitPage' | translate }}</button>\n <button data-auto-id=\"grid-toolbar-settings-autofit-content\" datoMenuItem\n (click)=\"executeTableAction('Autofit to Content')\">\n <dato-icon datoSize=\"sm\" icon=\"minimize-horizontal\" class=\"mr-8 primary-300-color\"></dato-icon>\n {{ 'core.autofitContent' | translate }}</button>\n <ng-container *ngIf=\"groupsAllowed\">\n <button data-auto-id=\"grid-toolbar-settings-group\" datoMenuItem (click)=\"executeTableAction('Group from Settings')\">\n <dato-icon datoSize=\"sm\" icon=\"group\" class=\"mr-4 primary-300-color\"></dato-icon>\n {{ 'core.group' | translate }}\n </button>\n </ng-container>\n <button data-auto-id=\"grid-toolbar-settings-toggle-columns\" datoMenuItem (click)=\"executeTableAction('Show Hide Column')\">\n <dato-icon datoSize=\"sm\" icon=\"hide\" class=\"mr-8 primary-300-color\"></dato-icon>\n <span>{{ 'core.hideShowColumns' | translate }}<span\n class=\"dato-simple-italic ml-5 primary-200-color\">{{hiddenColumns}}</span></span>\n </button>\n <button data-auto-id=\"grid-toolbar-settings-reset-settings\" datoMenuItem\n (click)=\"executeTableAction('Reset Settings')\">\n <dato-icon datoSize=\"sm\" icon=\"reset-table\" class=\"mr-8 primary-300-color\"></dato-icon>\n {{ 'core.resetTableSettings' | translate }}\n </button>\n <button data-auto-id=\"grid-toolbar-settings-reset-filters\" datoMenuItem\n (click)=\"executeTableAction('Reset Filters')\">\n <dato-icon datoSize=\"sm\" icon=\"reset-filters\" class=\"mr-8 primary-300-color\"></dato-icon>\n {{ 'core.resetAllFilters' | translate }}\n </button>\n <button data-auto-id=\"grid-toolbar-export\" datoMenuItem\n (click)=\"executeTableAction('Export')\" *ngIf=\"this.displayExport && isTreeMode\">\n <dato-icon datoSize=\"sm\"\n icon=\"export\" class=\"pointer mr-5 primary-300-color\" datoTooltip=\"core.export-table\"></dato-icon>\n {{ 'core.export-table' | translate }}\n </button>\n </ng-template>\n </dato-menu>\n </div>\n</section>\n\n\n",
|
|
393
398
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
394
399
|
styles: [".grouping-section{transition:visibility .2s ease-in-out,width .2s ease-in-out,opacity .2s ease-in-out;width:0}.grouping-section.open{width:75px;visibility:visible;opacity:1}:host .main-container{min-height:24px}:host .right-section{margin-right:50px}:host .separator{width:1px;height:24px;margin:0 16px}.disabled-action{pointer-events:none}"]
|
|
395
400
|
}),
|
|
@@ -401,4 +406,4 @@ DatoGridV2ToolbarComponent = __decorate([
|
|
|
401
406
|
GridService])
|
|
402
407
|
], DatoGridV2ToolbarComponent);
|
|
403
408
|
export { DatoGridV2ToolbarComponent };
|
|
404
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC10b29sYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL2dyaWQtdjIvZ3JpZC10b29sYmFyL2dyaWQtdG9vbGJhci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOztBQUVILE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsS0FBSyxFQUNMLFNBQVMsRUFDVCxTQUFTLEVBQ1QsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR0wsY0FBYyxFQUdmLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDM0YsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXhELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUM3RixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNsQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDckUsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sa0VBQWtFLENBQUM7QUFD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QUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDckc7YUFBTTtZQUNMLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1NBQy9DO0lBQ0gsQ0FBQztDQUNGLENBQUE7O1lBeFUwQiwyQkFBMkI7WUFDckMsaUJBQWlCO1lBQ1gsb0JBQW9CO1lBQ3RCLFdBQVc7WUFDVCxTQUFTO1lBQ1AsV0FBVzs7QUE5RDhCO0lBQS9ELFNBQVMsQ0FBQyxjQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQzs4QkFBZSxVQUFVO2dFQUFDO0FBQ3RCO0lBQWxFLFNBQVMsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDOzhCQUFrQixVQUFVO21FQUFDO0FBRXRGO0lBQVIsS0FBSyxFQUFFOztpRUFBc0I7QUFLckI7SUFBUixLQUFLLEVBQUU7OzsrREFTUDtBQUVRO0lBQVIsS0FBSyxFQUFFOztnRUFBdUI7QUFDdEI7SUFBUixLQUFLLEVBQUU7O3FFQUE2RDtBQUM1RDtJQUFSLEtBQUssRUFBRTs7aUZBQXFFO0FBMUJsRSwwQkFBMEI7SUFOdEMsU0FBUyxDQUFDO1FBQ1QsUUFBUSxFQUFFLHNCQUFzQjtRQUNoQyxrOVZBQTRDO1FBRTVDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNOztLQUNoRCxDQUFDO3FDQStEeUIsMkJBQTJCO1FBQ3JDLGlCQUFpQjtRQUNYLG9CQUFvQjtRQUN0QixXQUFXO1FBQ1QsU0FBUztRQUNQLFdBQVc7R0FuRXZCLDBCQUEwQixDQXNZdEM7U0F0WVksMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IERhdG9yYW1hLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIEFwYWNoZSBMaWNlbnNlIDIuMCBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRvcmFtYS9jbGllbnQtY29yZS9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBpc0Rldk1vZGUsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBCYXNlVG9vbGJhckFjdGlvbixcbiAgR3JpZEFjdGlvbixcbiAgR3JpZEFjdGlvblR5cGUsXG4gIEdyaWRSb3dBY3Rpb25zU2NyZWVuVGhyZXNob2xkLFxuICBSb3dBY3Rpb25cbn0gZnJvbSAnLi9ncmlkLXRvb2xiYXIudHlwZXMnO1xuaW1wb3J0IHsgRGF0b0dyaWRDb250cm9sbGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vZ3JpZC1jb250cm9sbGVyL2dyaWQtY29udHJvbGxlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgdW50aWxEZXN0cm95ZWQgfSBmcm9tICduZ3gtdGFrZS11bnRpbC1kZXN0cm95JztcbmltcG9ydCB7IFByb2Nlc3NDZWxsRm9yRXhwb3J0UGFyYW1zLCBSb3dHcm91cE9wZW5lZEV2ZW50LCBSb3dOb2RlIH0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBpc0Z1bmN0aW9uIH0gZnJvbSAnLi4vLi4vdXRpbHMvdmFsaWRhdG9ycyc7XG5pbXBvcnQgeyBtZXJnZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGF0b1BvcG92ZXIgfSBmcm9tICcuLi8uLi9wb3BvdmVyL3BvcG92ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBEYXRvR3JpZEdyb3Vwc01lbnVDb21wb25lbnQgfSBmcm9tICcuLi9ncmlkLWdyb3Vwcy1tZW51L2dyaWQtZ3JvdXBzLW1lbnUuY29tcG9uZW50JztcbmltcG9ydCB7IEdyaWRRdWVyeSB9IGZyb20gJy4uL2dyaWQtc3RvcmUvZ3JpZC5xdWVyeSc7XG5pbXBvcnQgeyBnZXRWaXNpYmxlQWN0aW9ucyB9IGZyb20gJy4uL2dyaWQtdjIudXRpbCc7XG5pbXBvcnQgeyBmb3JtYXQgfSBmcm9tICdkYXRlLWZucyc7XG5pbXBvcnQgeyBERUZBVUxUX0ZPUk1BVCB9IGZyb20gJy4uLy4uL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLnR5cGVzJztcbmltcG9ydCB7IERhdG9HcmlkQ29sdW1uRGlzcGxheU1lbnVDb21wb25lbnQgfSBmcm9tICcuLi9ncmlkLWNvbHVtbnMtZGlzcGxheS1tZW51L2dyaWQtY29sdW1ucy1kaXNwbGF5LW1lbnUuY29tcG9uZW50JztcbmltcG9ydCB7IEdyaWRTZXJ2aWNlIH0gZnJvbSAnLi4vZ3JpZC1zdG9yZS9ncmlkLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29yZUV2ZW50VHlwZXMgfSBmcm9tICcuLi8uLi9ldmVudC1sb2dnZXInO1xuaW1wb3J0IHsgRGF0b1RyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBzaXplIH0gZnJvbSAnLi4vLi4vdXRpbHMvY29sbGVjdGlvbic7XG5pbXBvcnQgeyBHcmlkUm93c1NlbGVjdGlvbkRhdGEgfSBmcm9tICcuLi9ncmlkL2dyaWQtdjIudHlwZXMnO1xuXG50eXBlIFRhYmxlQWN0aW9uID1cbiAgfCAnQXV0b2ZpdCB0byBDb250ZW50J1xuICB8ICdBdXRvZml0IHRvIFBhZ2UnXG4gIHwgJ1Nob3cgSGlkZSBDb2x1bW4nXG4gIHwgJ1Jlc2V0IFNldHRpbmdzJ1xuICB8ICdSZXNldCBGaWx0ZXJzJ1xuICB8ICdHcm91cCBmcm9tIFNldHRpbmdzJ1xuICB8ICdHcm91cCBmcm9tIFRvb2xiYXInXG4gIHwgJ0V4cG9ydCdcbiAgfCAnQ29sbGFwc2UgRXhwYW5kJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGF0by1ncmlkLXRvb2xiYXItdjInLFxuICB0ZW1wbGF0ZVVybDogJy4vZ3JpZC10b29sYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZ3JpZC10b29sYmFyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIERhdG9HcmlkVjJUb29sYmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IE1BWF9WSVNJQkxFX1JPV19BQ1RJT05TID0gNTtcbiAgcHJpdmF0ZSByZWFkb25seSBNQVhfVklTSUJMRV9HUklEX0FDVElPTlMgPSAyO1xuICBwcml2YXRlIF9tYXhSb3dBY3Rpb25zID0gdGhpcy5NQVhfVklTSUJMRV9ST1dfQUNUSU9OUztcblxuICBAVmlld0NoaWxkKCdncm91cFRyaWdnZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogZmFsc2UgfSkgZ3JvdXBUcmlnZ2VyOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdzZXR0aW5nc1RyaWdnZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogZmFsc2UgfSkgc2V0dGluZ3NUcmlnZ2VyOiBFbGVtZW50UmVmO1xuXG4gIEBJbnB1dCgpIGRpc3BsYXlFeHBvcnQgPSB0cnVlO1xuICBjcmVhdGVBY3Rpb246IEdyaWRBY3Rpb247XG4gIHJvd0FjdGlvbnM6IHsgbWFpbkxpc3Q6IFJvd0FjdGlvbltdOyBtb3JlTWVudTogUm93QWN0aW9uW10gfSA9IHsgbWFpbkxpc3Q6IFtdLCBtb3JlTWVudTogW10gfTtcbiAgZ3JpZEFjdGlvbnM6IHsgbWFpbkxpc3Q6IEdyaWRBY3Rpb25bXTsgbW9yZU1lbnU6IEdyaWRBY3Rpb25bXSB9ID0geyBtYWluTGlzdDogW10sIG1vcmVNZW51OiBbXSB9O1xuXG4gIEBJbnB1dCgpIHNldCBtYXhSb3dBY3Rpb25zKG1heFJvd0FjdGlvbnM6IG51bWJlcikge1xuICAgIGlmICh0aGlzLmVuYWJsZVYyXzEpIHtcbiAgICAgIHRoaXMuX21heFJvd0FjdGlvbnMgPSBNYXRoLm1pbihtYXhSb3dBY3Rpb25zLCB0aGlzLk1BWF9WSVNJQkxFX1JPV19BQ1RJT05TKTtcbiAgICAgIGlmIChtYXhSb3dBY3Rpb25zID4gdGhpcy5NQVhfVklTSUJMRV9ST1dfQUNUSU9OUyAmJiBpc0Rldk1vZGUoKSkge1xuICAgICAgICBjb25zb2xlLndhcm4oYERhdG9HcmlkIFYyLjEgLSBtYXhSb3dBY3Rpb25zIGNhbm5vdCBiZSBvdmVyICR7dGhpcy5NQVhfVklTSUJMRV9ST1dfQUNUSU9OU31gKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fbWF4Um93QWN0aW9ucyA9IG1heFJvd0FjdGlvbnM7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KCkgaGlkZUdyb3VwaW5nOiBib29sZWFuO1xuICBASW5wdXQoKSBzZWFyY2hQbGFjZWhvbGRlciA9IHRoaXMudHJhbnNsYXRlLnRyYW5zZm9ybSgnY29yZS5zZWFyY2gnKTtcbiAgQElucHV0KCkgcm93QWN0aW9uc1Nob3J0TGFiZWxUaHJlc2hvbGQ6IEdyaWRSb3dBY3Rpb25zU2NyZWVuVGhyZXNob2xkID0gMTUzOTtcblxuICBvcGVuTWVudXMgPSB7XG4gICAgZ3JvdXA6IGZhbHNlLFxuICAgIHNldHRpbmdzOiBmYWxzZVxuICB9O1xuICByb3dHcm91cHNDb2xsYXBzZWQgPSBmYWxzZTtcbiAgZ3JvdXBzQWxsb3dlZCA9ICF0aGlzLmhpZGVHcm91cGluZztcbiAgaXNTZWxlY3RlZFJvdyA9IGZhbHNlO1xuICBpc1RyZWVNb2RlOiBib29sZWFuID0gdGhpcy5ncmlkU2VydmljZS50cmVlRGF0YTtcbiAgdG90YWxSb3dzQ291bnQgPSAwO1xuICBzZWxlY3RlZFJvd3NDb3VudCA9IDA7XG4gIGFsbFBhZ2VSb3dzU2VsZWN0ZWQgPSBmYWxzZTtcbiAgd2lkdGhUb0hpZGVBY3Rpb25zTGFiZWxzOiBHcmlkUm93QWN0aW9uc1NjcmVlblRocmVzaG9sZCA9IDE0Mzk7XG5cbiAgZ2V0IGVuYWJsZVYyXzEoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZ3JpZENvbnRyb2xsZXIuZ3JpZE9wdGlvbnMuZW5hYmxlVjJfMTtcbiAgfVxuXG4gIGdldCBlbmFibGVTZWFyY2goKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZ3JpZENvbnRyb2xsZXIuZ3JpZE9wdGlvbnMuZW5hYmxlU2VhcmNoO1xuICB9XG5cbiAgZ2V0IGVuYWJsZUJhY2tncm91bmQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZ3JpZENvbnRyb2xsZXIuZ3JpZE9wdGlvbnMuZW5hYmxlQmFja2dyb3VuZDtcbiAgfVxuXG4gIGdldCBpc1Jvd0FjdGlvbnNWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5lbmFibGVWMl8xIHx8ICh0aGlzLmVuYWJsZVYyXzEgJiYgdGhpcy5pc1NlbGVjdGVkUm93KTtcbiAgfVxuXG4gIGdldCBoYXNSb3dBY3Rpb25zKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzaXplKHRoaXMucm93QWN0aW9ucy5tYWluTGlzdCkgPiAwIHx8IHNpemUodGhpcy5yb3dBY3Rpb25zLm1vcmVNZW51KSA+IDA7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZ3JpZENvbnRyb2xsZXI6IERhdG9HcmlkQ29udHJvbGxlckNvbXBvbmVudCxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IERhdG9UcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcG9wb3ZlcjogRGF0b1BvcG92ZXIsXG4gICAgcHJpdmF0ZSBncmlkUXVlcnk6IEdyaWRRdWVyeSxcbiAgICBwcml2YXRlIGdyaWRTZXJ2aWNlOiBHcmlkU2VydmljZVxuICApIHt9XG5cbiAgZ2V0IGhpZGRlbkNvbHVtbnMoKSB7XG4gICAgcmV0dXJuIGAoJHt0aGlzLmdyaWRRdWVyeS5nZXRBbGxEaXNwbGF5ZWRDb2x1bW5zKCkubGVuZ3RofS8ke3RoaXMuZ3JpZFF1ZXJ5LmdldEFsbENvbHVtbnMoKS5sZW5ndGh9KWA7XG4gIH1cblxuICBnZXQgaGFzQWN0aXZlTW9yZUFjdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMucm93QWN0aW9ucy5tb3JlTWVudS5zb21lKCh7IHZpc2libGUgfSkgPT4gdmlzaWJsZSk7XG4gIH1cblxuICBwcml2YXRlIGdldCBhcGkoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ3JpZENvbnRyb2xsZXIuZ3JpZFF1ZXJ5LmFwaTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGNvbnN0IGRhdGFDaGFuZ2VzID0gdGhpcy5ncmlkQ29udHJvbGxlci5ncmlkUXVlcnkud2FpdEZvckdyaWQoKCkgPT5cbiAgICAgIG1lcmdlKHRoaXMuZ3JpZFF1ZXJ5LmdyaWRSZWYuY2VsbFZhbHVlQ2hhbmdlZCwgdGhpcy5ncmlkUXVlcnkuZ3JpZFJlZi5yb3dEYXRhVXBkYXRlZCkucGlwZShcbiAgICAgICAgZGVib3VuY2VUaW1lKDEwMCksXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgKTtcbiAgICBjb25zdCBncmlkSW5pdCA9IHRoaXMuZ3JpZFF1ZXJ5LmdyaWRSZWFkeSQucGlwZSh0YWtlKDEpKTtcbiAgICBncmlkSW5pdC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5ncm91cHNBbGxvd2VkID0gIXRoaXMuaGlkZUdyb3VwaW5nICYmICF0aGlzLmdyaWRRdWVyeS5nZXRWYWx1ZSgpLnNlcnZlclNpZGVQYWdpbmF0aW9uLmVuYWJsZWQ7XG4gICAgfSk7XG4gICAgdGhpcy5pbml0R3JpZEFjdGlvbnMoKTtcbiAgICBjb25zdCBzZWxlY3RlZFJvd3NDaGFuZ2VkJCA9IHRoaXMuZ3JpZFF1ZXJ5LnNlbGVjdGVkUm93c0NoYW5nZSQ7XG4gICAgY29uc3QgaXNTZWxlY3RBbGxSb3dzQ2hhbmdlZCQgPSB0aGlzLmdyaWRRdWVyeS5zZWxlY3RJc1NlbGVjdEFsbFJvd3NFbmFibGVkKCk7XG4gICAgbWVyZ2UoZGF0YUNoYW5nZXMsIGdyaWRJbml0LCBzZWxlY3RlZFJvd3NDaGFuZ2VkJCwgaXNTZWxlY3RBbGxSb3dzQ2hhbmdlZCQpXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKCgpID0+ICEhdGhpcy5hcGkpLFxuICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMucmVzb2x2ZVZpc2libGVBY3Rpb25zKCk7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pO1xuICAgIHRoaXMucmVnaXN0ZXJHcm91cExpc3RlbmVycygpO1xuXG4gICAgdGhpcy5zdWJzY3JpYmVSb3dzU2VsZWN0aW9uRGF0YSgpO1xuICB9XG5cbiAgb25BY3Rpb25DbGljayhhY3Rpb246IEJhc2VUb29sYmFyQWN0aW9uKSB7XG4gICAgaWYgKGlzRnVuY3Rpb24oYWN0aW9uLm9uQ2xpY2spKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZFJvd3NDb3VudCA9IHRoaXMuZ3JpZENvbnRyb2xsZXIuZ3JpZFF1ZXJ5LmdldFNlbGVjdGVkUm93c0NvdW50KCk7XG4gICAgICB0aGlzLmdyaWRTZXJ2aWNlLl9sb2dFdmVudChDb3JlRXZlbnRUeXBlcy5HUklEX1RBQkxFX0FDVElPTiwge1xuICAgICAgICBhY3Rpb246IGFjdGlvbi5rZXksXG4gICAgICAgIG51bU9mSXRlbXM6IHNlbGVjdGVkUm93c0NvdW50LFxuICAgICAgICBmcm9tOiAnVG9vbGJhcidcbiAgICAgIH0pO1xuICAgICAgaWYgKHRoaXMuZ3JpZFF1ZXJ5LmlzU2VydmVyU2VsZWN0QWxsUm93c0VuYWJsZWQpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0QWxsRmlsdGVyID0gdGhpcy5ncmlkU2VydmljZS5nZXRGaWx0ZXJGb3JTZXJ2ZXJBY3Rpb25PblNlbGVjdEFsbCgpO1xuICAgICAgICBhY3Rpb24ub25DbGljayhudWxsLCB0cnVlLCBzZWxlY3RBbGxGaWx0ZXIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLmdyaWRDb250cm9sbGVyLmdyaWRRdWVyeS5nZXRTZWxlY3RlZFJvd05vZGVzKCk7XG4gICAgICAgIGFjdGlvbi5vbkNsaWNrKHNlbGVjdGVkKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKChhY3Rpb24gYXMgR3JpZEFjdGlvbikuYWN0aW9uVHlwZSA9PT0gR3JpZEFjdGlvblR5cGUuRVhQT1JUKSB7XG4gICAgICB0aGlzLmV4ZWN1dGVUYWJsZUFjdGlvbignRXhwb3J0Jyk7XG4gICAgfVxuICB9XG5cbiAgcmVzb2x2ZVZpc2libGVBY3Rpb25zKCkge1xuICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5ncmlkUXVlcnkuZ2V0U2VsZWN0ZWRSb3dOb2RlcygpO1xuICAgIHRoaXMuaXNTZWxlY3RlZFJvdyA9IHNlbGVjdGVkLmxlbmd0aCA+IDAgfHwgdGhpcy5ncmlkUXVlcnkuaXNTZXJ2ZXJTZWxlY3RBbGxSb3dzRW5hYmxlZDtcbiAgICBjb25zdCB2aXNpYmxlQWN0aW9ucyA9IGdldFZpc2libGVBY3Rpb25zKFxuICAgICAgdGhpcy5ncmlkQ29udHJvbGxlci5yb3dBY3Rpb25zLFxuICAgICAgdGhpcy5ncmlkUXVlcnkuZ2V0U2VsZWN0ZWRSb3dzQ291bnQoKSxcbiAgICAgIHNlbGVjdGVkLFxuICAgICAgdGhpcy5ncmlkUXVlcnkuaXNTZXJ2ZXJTZWxlY3RBbGxSb3dzRW5hYmxlZFxuICAgICkuZmlsdGVyKChhY3Rpb246IFJvd0FjdGlvbikgPT4gIXRoaXMuaXNSb3dBY3Rpb25IaWRkZW4oYWN0aW9uKSk7XG4gICAgdGhpcy5yb3dBY3Rpb25zID0ge1xuICAgICAgbWFpbkxpc3Q6IHZpc2libGVBY3Rpb25zLnNsaWNlKDAsIHRoaXMuX21heFJvd0FjdGlvbnMpLFxuICAgICAgbW9yZU1lbnU6IHZpc2libGVBY3Rpb25zLnNsaWNlKHRoaXMuX21heFJvd0FjdGlvbnMsIHZpc2libGVBY3Rpb25zLmxlbmd0aClcbiAgICB9O1xuICAgIHRoaXMuaW5pdFdpZHRoVG9IaWRlQWN0aW9uc0xhYmVscygpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0V2lkdGhUb0hpZGVBY3Rpb25zTGFiZWxzKCkge1xuICAgIGNvbnN0IHZpc2libGVBY3Rpb25zQ291bnQgPVxuICAgICAgdGhpcy5yb3dBY3Rpb25zLm1haW5MaXN0Lmxlbmd0aCArXG4gICAgICAodGhpcy5yb3dBY3Rpb25zLm1vcmVNZW51Lmxlbmd0aCA+IDAgPyAxIDogMCkgK1xuICAgICAgKHRoaXMuZ3JpZEFjdGlvbnMubW9yZU1lbnUubGVuZ3RoID4gMCA/IDEgOiAwKSArXG4gICAgICAodGhpcy5jcmVhdGVBY3Rpb24gPyAxIDogMCk7XG5cbiAgICBjb25zdCB3aW5kb3dXaWR0aFRocmVzaG9sZHM6IEdyaWRSb3dBY3Rpb25zU2NyZWVuVGhyZXNob2xkW10gPSBbMTIzOSwgMTMzOSwgMTQzOSwgMTUzOV07XG4gICAgdGhpcy53aWR0aFRvSGlkZUFjdGlvbnNMYWJlbHMgPVxuICAgICAgd2luZG93V2lkdGhUaHJlc2hvbGRzW01hdGgubWluKE1hdGgubWF4KHZpc2libGVBY3Rpb25zQ291bnQgLSA1LCAwKSwgd2luZG93V2lkdGhUaHJlc2hvbGRzLmxlbmd0aCAtIDEpXTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdEdyaWRBY3Rpb25zKCkge1xuICAgIGNvbnN0IGdyaWRBY3Rpb25zID0gdGhpcy5ncmlkQ29udHJvbGxlci5ncmlkQWN0aW9ucztcbiAgICB0aGlzLmluaXRDcmVhdGVBY3Rpb24oZ3JpZEFjdGlvbnMpO1xuICAgIHRoaXMuaW5pdEV4cG9ydEFjdGlvbihncmlkQWN0aW9ucyk7XG4gICAgbGV0IG1heFZpc2libGVBY3Rpb25zID0gdGhpcy5NQVhfVklTSUJMRV9HUklEX0FDVElPTlMgLSAodGhpcy5kaXNwbGF5RXhwb3J0ID8gMSA6IDApO1xuICAgIGlmIChzaXplKGdyaWRBY3Rpb25zKSA9PT0gbWF4VmlzaWJsZUFjdGlvbnMgKyAxKSB7XG4gICAgICBtYXhWaXNpYmxlQWN0aW9ucysrO1xuICAgIH1cbiAgICB0aGlzLmdyaWRBY3Rpb25zID0ge1xuICAgICAgbWFpbkxpc3Q6IGdyaWRBY3Rpb25zLnNsaWNlKDAsIG1heFZpc2libGVBY3Rpb25zKSxcbiAgICAgIG1vcmVNZW51OiBncmlkQWN0aW9ucy5zbGljZShtYXhWaXNpYmxlQWN0aW9ucywgZ3JpZEFjdGlvbnMubGVuZ3RoKVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGluaXRDcmVhdGVBY3Rpb24oZ3JpZEFjdGlvbnM6IEdyaWRBY3Rpb25bXSkge1xuICAgIGNvbnN0IGNyZWF0ZUFjdGlvbkluZGV4ID0gZ3JpZEFjdGlvbnMuZmluZEluZGV4KCh7IGFjdGlvblR5cGUgfSkgPT4gYWN0aW9uVHlwZSA9PT0gR3JpZEFjdGlvblR5cGUuQ1JFQVRFKTtcbiAgICB0aGlzLmNyZWF0ZUFjdGlvbiA9IGNyZWF0ZUFjdGlvbkluZGV4ID49IDAgPyBncmlkQWN0aW9ucy5zcGxpY2UoY3JlYXRlQWN0aW9uSW5kZXgsIDEpWzBdIDogbnVsbDtcbiAgICBpZiAodGhpcy5jcmVhdGVBY3Rpb24pIHtcbiAgICAgIHRoaXMuY3JlYXRlQWN0aW9uLmxhYmVsID0gdGhpcy5jcmVhdGVBY3Rpb24ubGFiZWwgfHwgJ2NvcmUuY3JlYXRlLW5ldyc7XG4gICAgICB0aGlzLmNyZWF0ZUFjdGlvbi5rZXkgPSB0aGlzLmNyZWF0ZUFjdGlvbi5rZXkgfHwgJ2NyZWF0ZS1uZXcnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdEV4cG9ydEFjdGlvbihncmlkQWN0aW9uczogR3JpZEFjdGlvbltdKSB7XG4gICAgY29uc3QgZXhwb3J0QWN0aW9uID0gZ3JpZEFjdGlvbnMuZmluZCgoeyBhY3Rpb25UeXBlIH0pID0+IGFjdGlvblR5cGUgPT09IEdyaWRBY3Rpb25UeXBlLkVYUE9SVCk7XG4gICAgaWYgKGV4cG9ydEFjdGlvbikge1xuICAgICAgY29uc3QgeyBvbkNsaWNrLCBpY29uLCBsYWJlbCwgdG9vbHRpcCwga2V5IH0gPSBleHBvcnRBY3Rpb247XG4gICAgICBleHBvcnRBY3Rpb24ub25DbGljayA9IG9uQ2xpY2sgfHwgKCgpID0+IHRoaXMuZXhlY3V0ZVRhYmxlQWN0aW9uKCdFeHBvcnQnKSk7XG4gICAgICBleHBvcnRBY3Rpb24uaWNvbiA9IGljb24gfHwgJ2V4cG9ydCc7XG4gICAgICBleHBvcnRBY3Rpb24ubGFiZWwgPSBsYWJlbCB8fCAnY29yZS5leHBvcnQtdGFibGUnO1xuICAgICAgZXhwb3J0QWN0aW9uLnRvb2x0aXAgPSB0b29sdGlwIHx8ICdjb3JlLmV4cG9ydC10YWJsZSc7XG4gICAgICBleHBvcnRBY3Rpb24ua2V5ID0ga2V5IHx8ICdleHBvcnQnO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogQHBhcmFtIGFjdGlvblxuICAgKi9cbiAgZXhlY3V0ZVRhYmxlQWN0aW9uKGFjdGlvbjogVGFibGVBY3Rpb24pIHtcbiAgICB0aGlzLmdyaWRTZXJ2aWNlLl9sb2dFdmVudChDb3JlRXZlbnRUeXBlcy5HUklEX0dFTkVSQUxfVEFCTEVfQUNUSU9OLCB7IGFjdGlvbiB9KTtcbiAgICBzd2l0Y2ggKGFjdGlvbikge1xuICAgICAgY2FzZSAnQXV0b2ZpdCB0byBDb250ZW50JzpcbiAgICAgICAgdGhpcy5ncmlkU2VydmljZS5maXRHcmlkKCdjb250ZW50Jyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQXV0b2ZpdCB0byBQYWdlJzpcbiAgICAgICAgdGhpcy5ncmlkU2VydmljZS5maXRHcmlkKCdjb250YWluZXInKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdDb2xsYXBzZSBFeHBhbmQnOlxuICAgICAgICB0aGlzLnRvZ2dsZUV4cGFuZGVkKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnRXhwb3J0JzpcbiAgICAgICAgdGhpcy5leHBvcnRUYWJsZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0dyb3VwIGZyb20gU2V0dGluZ3MnOlxuICAgICAgY2FzZSAnR3JvdXAgZnJvbSBUb29sYmFyJzpcbiAgICAgICAgdGhpcy5vcGVuR3JvdXBNZW51KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnUmVzZXQgRmlsdGVycyc6XG4gICAgICAgIHRoaXMucmVzZXRGaWx0ZXJzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnUmVzZXQgU2V0dGluZ3MnOlxuICAgICAgICB0aGlzLnJlc2V0U2V0dGluZ3MoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdTaG93IEhpZGUgQ29sdW1uJzpcbiAgICAgICAgdGhpcy5vcGVuQ29sdW1uTWVudSgpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICB0b2dnbGVFeHBhbmRlZCgpIHtcbiAgICB0aGlzLnJvd0dyb3Vwc0NvbGxhcHNlZCA/IHRoaXMuYXBpLmdyaWQuZXhwYW5kQWxsKCkgOiB0aGlzLmFwaS5ncmlkLmNvbGxhcHNlQWxsKCk7XG4gICAgdGhpcy5yb3dHcm91cHNDb2xsYXBzZWQgPSAhdGhpcy5yb3dHcm91cHNDb2xsYXBzZWQ7XG4gIH1cblxuICBnZXQgaGFzR3JvdXBzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmFwaS5jb2x1bW5zLmdldFJvd0dyb3VwQ29sdW1ucygpLmxlbmd0aCA+IDA7XG4gIH1cblxuICBleHBvcnRUYWJsZSgpIHtcbiAgICBjb25zdCB7IGdyaWROYW1lLCBleHBvcnRHcmlkIH0gPSB0aGlzLmdyaWRDb250cm9sbGVyLmdyaWRPcHRpb25zO1xuICAgIGlmIChpc0Z1bmN0aW9uKGV4cG9ydEdyaWQpKSB7XG4gICAgICBleHBvcnRHcmlkKHsgLi4udGhpcy5hcGksIC4uLnRoaXMuZ3JpZFF1ZXJ5LmdldFZhbHVlKCkuc2V0dGluZ3MgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHRvZGF5ID0gZm9ybWF0KG5ldyBEYXRlKCksIERFRkFVTFRfRk9STUFUKTtcbiAgICAgIHRoaXMuYXBpLmdyaWQuZXhwb3J0RGF0YUFzRXhjZWwoe1xuICAgICAgICBmaWxlTmFtZTogYCR7Z3JpZE5hbWV9IC0gJHt0b2RheX1gLFxuICAgICAgICBwcm9jZXNzQ2VsbENhbGxiYWNrOiAoeyBjb2x1bW4sIHZhbHVlIH06IFByb2Nlc3NDZWxsRm9yRXhwb3J0UGFyYW1zKSA9PiB7XG4gICAgICAgICAgY29uc3QgZm9ybWF0dGVyID0gY29sdW1uLmdldENvbERlZigpLnZhbHVlRm9ybWF0dGVyO1xuICAgICAgICAgIC8vIFRPRE86IGZvbGxvd3VwOiBodHRwczovL2FnLWdyaWQuemVuZGVzay5jb20vaGMvZW4tdXMvcmVxdWVzdHMvMTA5NjM/cGFnZT0xXG4gICAgICAgICAgcmV0dXJuIGZvcm1hdHRlciA/IGZvcm1hdHRlcih7IHZhbHVlIH0gYXMgYW55KSA6IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZXNldFNldHRpbmdzKCkge1xuICAgIHRoaXMuZ3JpZENvbnRyb2xsZXIuZ3JpZFNlcnZpY2UucmVzZXRUYWJsZVNldHRpbmdzKCk7XG4gIH1cblxuICBvcGVuQ29sdW1uTWVudSgpIHtcbiAgICB0aGlzLnBvcG92ZXIub3BlbihEYXRvR3JpZENvbHVtbkRpc3BsYXlNZW51Q29tcG9uZW50LCB0aGlzLnNldHRpbmdzVHJpZ2dlci5uYXRpdmVFbGVtZW50LCB7XG4gICAgICB3aWR0aDogMjIwLFxuICAgICAgY2xhc3NOYW1lOiAnZGF0by1ncmlkLWNvbHVtbnMtZGlzcGxheS1tZW51JyxcbiAgICAgIHBvcHBlcjogeyBwbGFjZW1lbnQ6ICdib3R0b20tZW5kJyB9LFxuICAgICAgZGF0YToge1xuICAgICAgICBhcGk6IHRoaXMuYXBpLFxuICAgICAgICBncmlkU2VydmljZTogdGhpcy5ncmlkU2VydmljZSxcbiAgICAgICAgZ3JpZFF1ZXJ5OiB0aGlzLmdyaWRRdWVyeVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcmVzZXRGaWx0ZXJzKCkge1xuICAgIHRoaXMuZ3JpZENvbnRyb2xsZXIuZ3JpZFNlcnZpY2UuY2xlYXJBbGxGaWx0ZXJzKCk7XG4gIH1cblxuICBvcGVuR3JvdXBNZW51KCkge1xuICAgIHRoaXMub3Blbk1lbnVzLmdyb3VwID0gdHJ1ZTtcbiAgICBjb25zdCB3YWl0Rm9yQW5pbWF0aW9uID0gdGhpcy5oYXNHcm91cHMgPyAwIDogMjAwO1xuICAgIC8qKiBXaGVuIGNoYW5naW5nIHRoZSB0YWJsZXMgZ3JvdXBpbmcgYWxsIHRoZSByb3dzIGFyZSBhdXRvbWF0aWNhbGx5IGV4cGFuZGVkLCB3ZSBuZWVkIHRvIHVwZGF0ZSB0aGUgaWNvbiBzdGF0ZSAqL1xuICAgIGNvbnN0IGV4cGFuZFN1YnNjcmlwdGlvbiA9IHRoaXMuZ3JpZFF1ZXJ5LmdyaWRSZWYuY29sdW1uUm93R3JvdXBDaGFuZ2VkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnJvd0dyb3Vwc0NvbGxhcHNlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMucG9wb3ZlclxuICAgICAgICAub3BlbihEYXRvR3JpZEdyb3Vwc01lbnVDb21wb25lbnQsIHRoaXMuZ3JvdXBUcmlnZ2VyLm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgICAgICBoZWlnaHQ6IDIwNixcbiAgICAgICAgICB3aWR0aDogMjUwLFxuICAgICAgICAgIGNsYXNzTmFtZTogJ2RhdG8tZ3JpZC1ncm91cHMtbWVudScsXG4gICAgICAgICAgcG9wcGVyOiB7IHBsYWNlbWVudDogJ2JvdHRvbS1lbmQnIH0sXG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgYXBpOiB0aGlzLmFwaSxcbiAgICAgICAgICAgIGdyaWRTZXJ2aWNlOiB0aGlzLmdyaWRTZXJ2aWNlXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgZXhwYW5kU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgdGhpcy5vcGVuTWVudXMuZ3JvdXAgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuICAgIH0sIHdhaXRGb3JBbmltYXRpb24pO1xuICB9XG5cbiAgaXNBY3Rpb25EaXNhYmxlZChyb3dBY3Rpb246IFJvd0FjdGlvbikge1xuICAgIHJldHVybiAhcm93QWN0aW9uLnZpc2libGU7XG4gIH1cblxuICBpc1Jvd0FjdGlvbkhpZGRlbihyb3dBY3Rpb246IFJvd0FjdGlvbikge1xuICAgIHJldHVybiAhcm93QWN0aW9uLnZpc2libGUgJiYgdGhpcy5lbmFibGVWMl8xO1xuICB9XG5cbiAgY2xlYXJTZWxlY3RlZFJvd3MoKSB7XG4gICAgdGhpcy5ncmlkU2VydmljZS5kZXNlbGVjdEFsbFJvd3MoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge31cblxuICBwcml2YXRlIGdldENvbGxhcHNlU3RhdGUoeyBub2RlLCBhcGkgfTogUm93R3JvdXBPcGVuZWRFdmVudCk6IGJvb2xlYW4ge1xuICAgIGxldCBjb2xsYXBzZWQgPSB0cnVlO1xuICAgIGlmIChub2RlLnJvd0dyb3VwSW5kZXggPT09IDApIHtcbiAgICAgIGFwaS5mb3JFYWNoTm9kZUFmdGVyRmlsdGVyQW5kU29ydCgoeyBleHBhbmRlZCwgcm93R3JvdXBJbmRleCB9OiBSb3dOb2RlKSA9PiB7XG4gICAgICAgIGlmIChyb3dHcm91cEluZGV4ID09PSAwICYmIGV4cGFuZGVkKSB7XG4gICAgICAgICAgY29sbGFwc2VkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gY29sbGFwc2VkO1xuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3Rlckdyb3VwTGlzdGVuZXJzKCkge1xuICAgIC8qKiBMaXN0ZW4gdG8gYWRkaW5nIG9yIHJlbW92aW5nIHJvdyBncm91cHMgZnJvbSB0aGUgY29sdW1ucyBhbmQgbm90IHRoZSBncm91cHMgbWVudSAqL1xuICAgIHRoaXMuZ3JpZFF1ZXJ5XG4gICAgICAud2FpdEZvckdyaWQoKCkgPT4gdGhpcy5ncmlkUXVlcnkuZ3JpZFJlZi5jb2x1bW5Sb3dHcm91cENoYW5nZWQpXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKCgpID0+ICF0aGlzLm9wZW5NZW51cy5ncm91cCksXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5yb3dHcm91cHNDb2xsYXBzZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSk7XG4gICAgLyoqIExpc3RlbiB0byByb3cgY29sbGFwc2Ugc3RhdGUgdG8gdXBkYXRlIHRoZSBpY29uICovXG4gICAgdGhpcy5ncmlkUXVlcnlcbiAgICAgIC53YWl0Rm9yR3JpZCgoKSA9PiB0aGlzLmdyaWRRdWVyeS5ncmlkUmVmLnJvd0dyb3VwT3BlbmVkKVxuICAgICAgLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpXG4gICAgICAuc3Vic2NyaWJlKChldmVudDogUm93R3JvdXBPcGVuZWRFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCBjb2xsYXBzZWQgPSB0aGlzLmdldENvbGxhcHNlU3RhdGUoZXZlbnQpO1xuICAgICAgICBpZiAoY29sbGFwc2VkICE9PSB0aGlzLnJvd0dyb3Vwc0NvbGxhcHNlZCkge1xuICAgICAgICAgIHRoaXMucm93R3JvdXBzQ29sbGFwc2VkID0gY29sbGFwc2VkO1xuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHN1YnNjcmliZVJvd3NTZWxlY3Rpb25EYXRhKCkge1xuICAgIHRoaXMuZ3JpZFF1ZXJ5LnJvd3NTZWxlY3Rpb25EYXRhJFxuICAgICAgLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpXG4gICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAoe1xuICAgICAgICAgIHRvdGFsUm93c0NvdW50LFxuICAgICAgICAgIHNlbGVjdGVkUm93c0NvdW50LFxuICAgICAgICAgIHNlbGVjdGVkUGFnZVJvd3NDb3VudCxcbiAgICAgICAgICBpc0FsbFBhZ2VSb3dzU2VsZWN0ZWRcbiAgICAgICAgfTogR3JpZFJvd3NTZWxlY3Rpb25EYXRhKSA9PiB7XG4gICAgICAgICAgdGhpcy50b3RhbFJvd3NDb3VudCA9IHRvdGFsUm93c0NvdW50O1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzQ291bnQgPSBzZWxlY3RlZFJvd3NDb3VudDtcbiAgICAgICAgICBjb25zdCB7IGVuYWJsZUFsbFBhZ2VzU2VsZWN0aW9uIH0gPSB0aGlzLmdyaWRRdWVyeS5nZXRHcmlkT3B0aW9ucygpO1xuICAgICAgICAgIHRoaXMuYWxsUGFnZVJvd3NTZWxlY3RlZCA9XG4gICAgICAgICAgICBlbmFibGVBbGxQYWdlc1NlbGVjdGlvbiAmJlxuICAgICAgICAgICAgaXNBbGxQYWdlUm93c1NlbGVjdGVkICYmXG4gICAgICAgICAgICBzZWxlY3RlZFJvd3NDb3VudCA9PT0gc2VsZWN0ZWRQYWdlUm93c0NvdW50ICYmXG4gICAgICAgICAgICBzZWxlY3RlZFJvd3NDb3VudCA8IHRvdGFsUm93c0NvdW50O1xuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIHNlbGVjdEFsbFBhZ2VzKCkge1xuICAgIGlmICh0aGlzLmdyaWRRdWVyeS5pc1NlcnZlclNpZGUpIHtcbiAgICAgIHRoaXMuZ3JpZFNlcnZpY2Uuc2V0U2VydmVyU2lkZVBhZ2luYXRpb24oeyBzZWxlY3RBbGxSb3dzRW5hYmxlZDogdHJ1ZSwgZXhjbHVkZWRGcm9tU2VsZWN0QWxsOiBbXSB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5ncmlkU2VydmljZS5hcGkuZ3JpZC5zZWxlY3RBbGxGaWx0ZXJlZCgpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
409
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC10b29sYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL2dyaWQtdjIvZ3JpZC10b29sYmFyL2dyaWQtdG9vbGJhci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOztBQUVILE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsS0FBSyxFQUNMLFNBQVMsRUFDVCxTQUFTLEVBQ1QsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR0wsY0FBYyxFQUdmLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDM0YsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXhELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUM3RixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNsQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDckUsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sa0VBQWtFLENBQUM7QUFD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QUFvQixFQUFFLElBQUksRUFBRSxxQkFBcUIsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQ3JHO2FBQU07WUFDTCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztTQUMvQztJQUNILENBQUM7Q0FDRixDQUFBOztZQXhVMEIsMkJBQTJCO1lBQ3JDLGlCQUFpQjtZQUNYLG9CQUFvQjtZQUN0QixXQUFXO1lBQ1QsU0FBUztZQUNQLFdBQVc7O0FBL0Q4QjtJQUEvRCxTQUFTLENBQUMsY0FBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUM7OEJBQWUsVUFBVTtnRUFBQztBQUN0QjtJQUFsRSxTQUFTLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQzs4QkFBa0IsVUFBVTttRUFBQztBQUV0RjtJQUFSLEtBQUssRUFBRTs7aUVBQXNCO0FBS3JCO0lBQVIsS0FBSyxFQUFFOzs7K0RBU1A7QUFFUTtJQUFSLEtBQUssRUFBRTs7Z0VBQXVCO0FBQ3RCO0lBQVIsS0FBSyxFQUFFOztxRUFBNkQ7QUFDNUQ7SUFBUixLQUFLLEVBQUU7O2lGQUFxRTtBQUNwRTtJQUFSLEtBQUssRUFBRTs7cUZBQTBDO0FBM0J2QywwQkFBMEI7SUFOdEMsU0FBUyxDQUFDO1FBQ1QsUUFBUSxFQUFFLHNCQUFzQjtRQUNoQyw0bVdBQTRDO1FBRTVDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNOztLQUNoRCxDQUFDO3FDQWdFeUIsMkJBQTJCO1FBQ3JDLGlCQUFpQjtRQUNYLG9CQUFvQjtRQUN0QixXQUFXO1FBQ1QsU0FBUztRQUNQLFdBQVc7R0FwRXZCLDBCQUEwQixDQXVZdEM7U0F2WVksMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IERhdG9yYW1hLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIEFwYWNoZSBMaWNlbnNlIDIuMCBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRvcmFtYS9jbGllbnQtY29yZS9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBpc0Rldk1vZGUsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBCYXNlVG9vbGJhckFjdGlvbixcbiAgR3JpZEFjdGlvbixcbiAgR3JpZEFjdGlvblR5cGUsXG4gIEdyaWRSb3dBY3Rpb25zU2NyZWVuVGhyZXNob2xkLFxuICBSb3dBY3Rpb25cbn0gZnJvbSAnLi9ncmlkLXRvb2xiYXIudHlwZXMnO1xuaW1wb3J0IHsgRGF0b0dyaWRDb250cm9sbGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vZ3JpZC1jb250cm9sbGVyL2dyaWQtY29udHJvbGxlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgdW50aWxEZXN0cm95ZWQgfSBmcm9tICduZ3gtdGFrZS11bnRpbC1kZXN0cm95JztcbmltcG9ydCB7IFByb2Nlc3NDZWxsRm9yRXhwb3J0UGFyYW1zLCBSb3dHcm91cE9wZW5lZEV2ZW50LCBSb3dOb2RlIH0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBpc0Z1bmN0aW9uIH0gZnJvbSAnLi4vLi4vdXRpbHMvdmFsaWRhdG9ycyc7XG5pbXBvcnQgeyBtZXJnZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGF0b1BvcG92ZXIgfSBmcm9tICcuLi8uLi9wb3BvdmVyL3BvcG92ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBEYXRvR3JpZEdyb3Vwc01lbnVDb21wb25lbnQgfSBmcm9tICcuLi9ncmlkLWdyb3Vwcy1tZW51L2dyaWQtZ3JvdXBzLW1lbnUuY29tcG9uZW50JztcbmltcG9ydCB7IEdyaWRRdWVyeSB9IGZyb20gJy4uL2dyaWQtc3RvcmUvZ3JpZC5xdWVyeSc7XG5pbXBvcnQgeyBnZXRWaXNpYmxlQWN0aW9ucyB9IGZyb20gJy4uL2dyaWQtdjIudXRpbCc7XG5pbXBvcnQgeyBmb3JtYXQgfSBmcm9tICdkYXRlLWZucyc7XG5pbXBvcnQgeyBERUZBVUxUX0ZPUk1BVCB9IGZyb20gJy4uLy4uL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLnR5cGVzJztcbmltcG9ydCB7IERhdG9HcmlkQ29sdW1uRGlzcGxheU1lbnVDb21wb25lbnQgfSBmcm9tICcuLi9ncmlkLWNvbHVtbnMtZGlzcGxheS1tZW51L2dyaWQtY29sdW1ucy1kaXNwbGF5LW1lbnUuY29tcG9uZW50JztcbmltcG9ydCB7IEdyaWRTZXJ2aWNlIH0gZnJvbSAnLi4vZ3JpZC1zdG9yZS9ncmlkLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29yZUV2ZW50VHlwZXMgfSBmcm9tICcuLi8uLi9ldmVudC1sb2dnZXInO1xuaW1wb3J0IHsgRGF0b1RyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBzaXplIH0gZnJvbSAnLi4vLi4vdXRpbHMvY29sbGVjdGlvbic7XG5pbXBvcnQgeyBHcmlkUm93c1NlbGVjdGlvbkRhdGEgfSBmcm9tICcuLi9ncmlkL2dyaWQtdjIudHlwZXMnO1xuXG50eXBlIFRhYmxlQWN0aW9uID1cbiAgfCAnQXV0b2ZpdCB0byBDb250ZW50J1xuICB8ICdBdXRvZml0IHRvIFBhZ2UnXG4gIHwgJ1Nob3cgSGlkZSBDb2x1bW4nXG4gIHwgJ1Jlc2V0IFNldHRpbmdzJ1xuICB8ICdSZXNldCBGaWx0ZXJzJ1xuICB8ICdHcm91cCBmcm9tIFNldHRpbmdzJ1xuICB8ICdHcm91cCBmcm9tIFRvb2xiYXInXG4gIHwgJ0V4cG9ydCdcbiAgfCAnQ29sbGFwc2UgRXhwYW5kJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGF0by1ncmlkLXRvb2xiYXItdjInLFxuICB0ZW1wbGF0ZVVybDogJy4vZ3JpZC10b29sYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZ3JpZC10b29sYmFyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIERhdG9HcmlkVjJUb29sYmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IE1BWF9WSVNJQkxFX1JPV19BQ1RJT05TID0gNTtcbiAgcHJpdmF0ZSByZWFkb25seSBNQVhfVklTSUJMRV9HUklEX0FDVElPTlMgPSAyO1xuICBwcml2YXRlIF9tYXhSb3dBY3Rpb25zID0gdGhpcy5NQVhfVklTSUJMRV9ST1dfQUNUSU9OUztcblxuICBAVmlld0NoaWxkKCdncm91cFRyaWdnZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogZmFsc2UgfSkgZ3JvdXBUcmlnZ2VyOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdzZXR0aW5nc1RyaWdnZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogZmFsc2UgfSkgc2V0dGluZ3NUcmlnZ2VyOiBFbGVtZW50UmVmO1xuXG4gIEBJbnB1dCgpIGRpc3BsYXlFeHBvcnQgPSB0cnVlO1xuICBjcmVhdGVBY3Rpb246IEdyaWRBY3Rpb247XG4gIHJvd0FjdGlvbnM6IHsgbWFpbkxpc3Q6IFJvd0FjdGlvbltdOyBtb3JlTWVudTogUm93QWN0aW9uW10gfSA9IHsgbWFpbkxpc3Q6IFtdLCBtb3JlTWVudTogW10gfTtcbiAgZ3JpZEFjdGlvbnM6IHsgbWFpbkxpc3Q6IEdyaWRBY3Rpb25bXTsgbW9yZU1lbnU6IEdyaWRBY3Rpb25bXSB9ID0geyBtYWluTGlzdDogW10sIG1vcmVNZW51OiBbXSB9O1xuXG4gIEBJbnB1dCgpIHNldCBtYXhSb3dBY3Rpb25zKG1heFJvd0FjdGlvbnM6IG51bWJlcikge1xuICAgIGlmICh0aGlzLmVuYWJsZVYyXzEpIHtcbiAgICAgIHRoaXMuX21heFJvd0FjdGlvbnMgPSBNYXRoLm1pbihtYXhSb3dBY3Rpb25zLCB0aGlzLk1BWF9WSVNJQkxFX1JPV19BQ1RJT05TKTtcbiAgICAgIGlmIChtYXhSb3dBY3Rpb25zID4gdGhpcy5NQVhfVklTSUJMRV9ST1dfQUNUSU9OUyAmJiBpc0Rldk1vZGUoKSkge1xuICAgICAgICBjb25zb2xlLndhcm4oYERhdG9HcmlkIFYyLjEgLSBtYXhSb3dBY3Rpb25zIGNhbm5vdCBiZSBvdmVyICR7dGhpcy5NQVhfVklTSUJMRV9ST1dfQUNUSU9OU31gKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fbWF4Um93QWN0aW9ucyA9IG1heFJvd0FjdGlvbnM7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KCkgaGlkZUdyb3VwaW5nOiBib29sZWFuO1xuICBASW5wdXQoKSBzZWFyY2hQbGFjZWhvbGRlciA9IHRoaXMudHJhbnNsYXRlLnRyYW5zZm9ybSgnY29yZS5zZWFyY2gnKTtcbiAgQElucHV0KCkgcm93QWN0aW9uc1Nob3J0TGFiZWxUaHJlc2hvbGQ6IEdyaWRSb3dBY3Rpb25zU2NyZWVuVGhyZXNob2xkID0gMTUzOTtcbiAgQElucHV0KCkgZGlzcGxheUN1c3RvbUdyaWRBY3Rpb25zU2VwYXJhdG9yID0gdHJ1ZTtcblxuICBvcGVuTWVudXMgPSB7XG4gICAgZ3JvdXA6IGZhbHNlLFxuICAgIHNldHRpbmdzOiBmYWxzZVxuICB9O1xuICByb3dHcm91cHNDb2xsYXBzZWQgPSBmYWxzZTtcbiAgZ3JvdXBzQWxsb3dlZCA9ICF0aGlzLmhpZGVHcm91cGluZztcbiAgaXNTZWxlY3RlZFJvdyA9IGZhbHNlO1xuICBpc1RyZWVNb2RlOiBib29sZWFuID0gdGhpcy5ncmlkU2VydmljZS50cmVlRGF0YTtcbiAgdG90YWxSb3dzQ291bnQgPSAwO1xuICBzZWxlY3RlZFJvd3NDb3VudCA9IDA7XG4gIGFsbFBhZ2VSb3dzU2VsZWN0ZWQgPSBmYWxzZTtcbiAgd2lkdGhUb0hpZGVBY3Rpb25zTGFiZWxzOiBHcmlkUm93QWN0aW9uc1NjcmVlblRocmVzaG9sZCA9IDE0Mzk7XG5cbiAgZ2V0IGVuYWJsZVYyXzEoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZ3JpZENvbnRyb2xsZXIuZ3JpZE9wdGlvbnMuZW5hYmxlVjJfMTtcbiAgfVxuXG4gIGdldCBlbmFibGVTZWFyY2goKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZ3JpZENvbnRyb2xsZXIuZ3JpZE9wdGlvbnMuZW5hYmxlU2VhcmNoO1xuICB9XG5cbiAgZ2V0IGVuYWJsZUJhY2tncm91bmQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZ3JpZENvbnRyb2xsZXIuZ3JpZE9wdGlvbnMuZW5hYmxlQmFja2dyb3VuZDtcbiAgfVxuXG4gIGdldCBpc1Jvd0FjdGlvbnNWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5lbmFibGVWMl8xIHx8ICh0aGlzLmVuYWJsZVYyXzEgJiYgdGhpcy5pc1NlbGVjdGVkUm93KTtcbiAgfVxuXG4gIGdldCBoYXNSb3dBY3Rpb25zKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzaXplKHRoaXMucm93QWN0aW9ucy5tYWluTGlzdCkgPiAwIHx8IHNpemUodGhpcy5yb3dBY3Rpb25zLm1vcmVNZW51KSA+IDA7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZ3JpZENvbnRyb2xsZXI6IERhdG9HcmlkQ29udHJvbGxlckNvbXBvbmVudCxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IERhdG9UcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcG9wb3ZlcjogRGF0b1BvcG92ZXIsXG4gICAgcHJpdmF0ZSBncmlkUXVlcnk6IEdyaWRRdWVyeSxcbiAgICBwcml2YXRlIGdyaWRTZXJ2aWNlOiBHcmlkU2VydmljZVxuICApIHt9XG5cbiAgZ2V0IGhpZGRlbkNvbHVtbnMoKSB7XG4gICAgcmV0dXJuIGAoJHt0aGlzLmdyaWRRdWVyeS5nZXRBbGxEaXNwbGF5ZWRDb2x1bW5zKCkubGVuZ3RofS8ke3RoaXMuZ3JpZFF1ZXJ5LmdldEFsbENvbHVtbnMoKS5sZW5ndGh9KWA7XG4gIH1cblxuICBnZXQgaGFzQWN0aXZlTW9yZUFjdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMucm93QWN0aW9ucy5tb3JlTWVudS5zb21lKCh7IHZpc2libGUgfSkgPT4gdmlzaWJsZSk7XG4gIH1cblxuICBwcml2YXRlIGdldCBhcGkoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ3JpZENvbnRyb2xsZXIuZ3JpZFF1ZXJ5LmFwaTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGNvbnN0IGRhdGFDaGFuZ2VzID0gdGhpcy5ncmlkQ29udHJvbGxlci5ncmlkUXVlcnkud2FpdEZvckdyaWQoKCkgPT5cbiAgICAgIG1lcmdlKHRoaXMuZ3JpZFF1ZXJ5LmdyaWRSZWYuY2VsbFZhbHVlQ2hhbmdlZCwgdGhpcy5ncmlkUXVlcnkuZ3JpZFJlZi5yb3dEYXRhVXBkYXRlZCkucGlwZShcbiAgICAgICAgZGVib3VuY2VUaW1lKDEwMCksXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgKTtcbiAgICBjb25zdCBncmlkSW5pdCA9IHRoaXMuZ3JpZFF1ZXJ5LmdyaWRSZWFkeSQucGlwZSh0YWtlKDEpKTtcbiAgICBncmlkSW5pdC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5ncm91cHNBbGxvd2VkID0gIXRoaXMuaGlkZUdyb3VwaW5nICYmICF0aGlzLmdyaWRRdWVyeS5nZXRWYWx1ZSgpLnNlcnZlclNpZGVQYWdpbmF0aW9uLmVuYWJsZWQ7XG4gICAgfSk7XG4gICAgdGhpcy5pbml0R3JpZEFjdGlvbnMoKTtcbiAgICBjb25zdCBzZWxlY3RlZFJvd3NDaGFuZ2VkJCA9IHRoaXMuZ3JpZFF1ZXJ5LnNlbGVjdGVkUm93c0NoYW5nZSQ7XG4gICAgY29uc3QgaXNTZWxlY3RBbGxSb3dzQ2hhbmdlZCQgPSB0aGlzLmdyaWRRdWVyeS5zZWxlY3RJc1NlbGVjdEFsbFJvd3NFbmFibGVkKCk7XG4gICAgbWVyZ2UoZGF0YUNoYW5nZXMsIGdyaWRJbml0LCBzZWxlY3RlZFJvd3NDaGFuZ2VkJCwgaXNTZWxlY3RBbGxSb3dzQ2hhbmdlZCQpXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKCgpID0+ICEhdGhpcy5hcGkpLFxuICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMucmVzb2x2ZVZpc2libGVBY3Rpb25zKCk7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pO1xuICAgIHRoaXMucmVnaXN0ZXJHcm91cExpc3RlbmVycygpO1xuXG4gICAgdGhpcy5zdWJzY3JpYmVSb3dzU2VsZWN0aW9uRGF0YSgpO1xuICB9XG5cbiAgb25BY3Rpb25DbGljayhhY3Rpb246IEJhc2VUb29sYmFyQWN0aW9uKSB7XG4gICAgaWYgKGlzRnVuY3Rpb24oYWN0aW9uLm9uQ2xpY2spKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZFJvd3NDb3VudCA9IHRoaXMuZ3JpZENvbnRyb2xsZXIuZ3JpZFF1ZXJ5LmdldFNlbGVjdGVkUm93c0NvdW50KCk7XG4gICAgICB0aGlzLmdyaWRTZXJ2aWNlLl9sb2dFdmVudChDb3JlRXZlbnRUeXBlcy5HUklEX1RBQkxFX0FDVElPTiwge1xuICAgICAgICBhY3Rpb246IGFjdGlvbi5rZXksXG4gICAgICAgIG51bU9mSXRlbXM6IHNlbGVjdGVkUm93c0NvdW50LFxuICAgICAgICBmcm9tOiAnVG9vbGJhcidcbiAgICAgIH0pO1xuICAgICAgaWYgKHRoaXMuZ3JpZFF1ZXJ5LmlzU2VydmVyU2VsZWN0QWxsUm93c0VuYWJsZWQpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0QWxsRmlsdGVyID0gdGhpcy5ncmlkU2VydmljZS5nZXRGaWx0ZXJGb3JTZXJ2ZXJBY3Rpb25PblNlbGVjdEFsbCgpO1xuICAgICAgICBhY3Rpb24ub25DbGljayhudWxsLCB0cnVlLCBzZWxlY3RBbGxGaWx0ZXIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLmdyaWRDb250cm9sbGVyLmdyaWRRdWVyeS5nZXRTZWxlY3RlZFJvd05vZGVzKCk7XG4gICAgICAgIGFjdGlvbi5vbkNsaWNrKHNlbGVjdGVkKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKChhY3Rpb24gYXMgR3JpZEFjdGlvbikuYWN0aW9uVHlwZSA9PT0gR3JpZEFjdGlvblR5cGUuRVhQT1JUKSB7XG4gICAgICB0aGlzLmV4ZWN1dGVUYWJsZUFjdGlvbignRXhwb3J0Jyk7XG4gICAgfVxuICB9XG5cbiAgcmVzb2x2ZVZpc2libGVBY3Rpb25zKCkge1xuICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5ncmlkUXVlcnkuZ2V0U2VsZWN0ZWRSb3dOb2RlcygpO1xuICAgIHRoaXMuaXNTZWxlY3RlZFJvdyA9IHNlbGVjdGVkLmxlbmd0aCA+IDAgfHwgdGhpcy5ncmlkUXVlcnkuaXNTZXJ2ZXJTZWxlY3RBbGxSb3dzRW5hYmxlZDtcbiAgICBjb25zdCB2aXNpYmxlQWN0aW9ucyA9IGdldFZpc2libGVBY3Rpb25zKFxuICAgICAgdGhpcy5ncmlkQ29udHJvbGxlci5yb3dBY3Rpb25zLFxuICAgICAgdGhpcy5ncmlkUXVlcnkuZ2V0U2VsZWN0ZWRSb3dzQ291bnQoKSxcbiAgICAgIHNlbGVjdGVkLFxuICAgICAgdGhpcy5ncmlkUXVlcnkuaXNTZXJ2ZXJTZWxlY3RBbGxSb3dzRW5hYmxlZFxuICAgICkuZmlsdGVyKChhY3Rpb246IFJvd0FjdGlvbikgPT4gIXRoaXMuaXNSb3dBY3Rpb25IaWRkZW4oYWN0aW9uKSk7XG4gICAgdGhpcy5yb3dBY3Rpb25zID0ge1xuICAgICAgbWFpbkxpc3Q6IHZpc2libGVBY3Rpb25zLnNsaWNlKDAsIHRoaXMuX21heFJvd0FjdGlvbnMpLFxuICAgICAgbW9yZU1lbnU6IHZpc2libGVBY3Rpb25zLnNsaWNlKHRoaXMuX21heFJvd0FjdGlvbnMsIHZpc2libGVBY3Rpb25zLmxlbmd0aClcbiAgICB9O1xuICAgIHRoaXMuaW5pdFdpZHRoVG9IaWRlQWN0aW9uc0xhYmVscygpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0V2lkdGhUb0hpZGVBY3Rpb25zTGFiZWxzKCkge1xuICAgIGNvbnN0IHZpc2libGVBY3Rpb25zQ291bnQgPVxuICAgICAgdGhpcy5yb3dBY3Rpb25zLm1haW5MaXN0Lmxlbmd0aCArXG4gICAgICAodGhpcy5yb3dBY3Rpb25zLm1vcmVNZW51Lmxlbmd0aCA+IDAgPyAxIDogMCkgK1xuICAgICAgKHRoaXMuZ3JpZEFjdGlvbnMubW9yZU1lbnUubGVuZ3RoID4gMCA/IDEgOiAwKSArXG4gICAgICAodGhpcy5jcmVhdGVBY3Rpb24gPyAxIDogMCk7XG5cbiAgICBjb25zdCB3aW5kb3dXaWR0aFRocmVzaG9sZHM6IEdyaWRSb3dBY3Rpb25zU2NyZWVuVGhyZXNob2xkW10gPSBbMTIzOSwgMTMzOSwgMTQzOSwgMTUzOV07XG4gICAgdGhpcy53aWR0aFRvSGlkZUFjdGlvbnNMYWJlbHMgPVxuICAgICAgd2luZG93V2lkdGhUaHJlc2hvbGRzW01hdGgubWluKE1hdGgubWF4KHZpc2libGVBY3Rpb25zQ291bnQgLSA1LCAwKSwgd2luZG93V2lkdGhUaHJlc2hvbGRzLmxlbmd0aCAtIDEpXTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdEdyaWRBY3Rpb25zKCkge1xuICAgIGNvbnN0IGdyaWRBY3Rpb25zID0gdGhpcy5ncmlkQ29udHJvbGxlci5ncmlkQWN0aW9ucztcbiAgICB0aGlzLmluaXRDcmVhdGVBY3Rpb24oZ3JpZEFjdGlvbnMpO1xuICAgIHRoaXMuaW5pdEV4cG9ydEFjdGlvbihncmlkQWN0aW9ucyk7XG4gICAgbGV0IG1heFZpc2libGVBY3Rpb25zID0gdGhpcy5NQVhfVklTSUJMRV9HUklEX0FDVElPTlMgLSAodGhpcy5kaXNwbGF5RXhwb3J0ID8gMSA6IDApO1xuICAgIGlmIChzaXplKGdyaWRBY3Rpb25zKSA9PT0gbWF4VmlzaWJsZUFjdGlvbnMgKyAxKSB7XG4gICAgICBtYXhWaXNpYmxlQWN0aW9ucysrO1xuICAgIH1cbiAgICB0aGlzLmdyaWRBY3Rpb25zID0ge1xuICAgICAgbWFpbkxpc3Q6IGdyaWRBY3Rpb25zLnNsaWNlKDAsIG1heFZpc2libGVBY3Rpb25zKSxcbiAgICAgIG1vcmVNZW51OiBncmlkQWN0aW9ucy5zbGljZShtYXhWaXNpYmxlQWN0aW9ucywgZ3JpZEFjdGlvbnMubGVuZ3RoKVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGluaXRDcmVhdGVBY3Rpb24oZ3JpZEFjdGlvbnM6IEdyaWRBY3Rpb25bXSkge1xuICAgIGNvbnN0IGNyZWF0ZUFjdGlvbkluZGV4ID0gZ3JpZEFjdGlvbnMuZmluZEluZGV4KCh7IGFjdGlvblR5cGUgfSkgPT4gYWN0aW9uVHlwZSA9PT0gR3JpZEFjdGlvblR5cGUuQ1JFQVRFKTtcbiAgICB0aGlzLmNyZWF0ZUFjdGlvbiA9IGNyZWF0ZUFjdGlvbkluZGV4ID49IDAgPyBncmlkQWN0aW9ucy5zcGxpY2UoY3JlYXRlQWN0aW9uSW5kZXgsIDEpWzBdIDogbnVsbDtcbiAgICBpZiAodGhpcy5jcmVhdGVBY3Rpb24pIHtcbiAgICAgIHRoaXMuY3JlYXRlQWN0aW9uLmxhYmVsID0gdGhpcy5jcmVhdGVBY3Rpb24ubGFiZWwgfHwgJ2NvcmUuY3JlYXRlLW5ldyc7XG4gICAgICB0aGlzLmNyZWF0ZUFjdGlvbi5rZXkgPSB0aGlzLmNyZWF0ZUFjdGlvbi5rZXkgfHwgJ2NyZWF0ZS1uZXcnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdEV4cG9ydEFjdGlvbihncmlkQWN0aW9uczogR3JpZEFjdGlvbltdKSB7XG4gICAgY29uc3QgZXhwb3J0QWN0aW9uID0gZ3JpZEFjdGlvbnMuZmluZCgoeyBhY3Rpb25UeXBlIH0pID0+IGFjdGlvblR5cGUgPT09IEdyaWRBY3Rpb25UeXBlLkVYUE9SVCk7XG4gICAgaWYgKGV4cG9ydEFjdGlvbikge1xuICAgICAgY29uc3QgeyBvbkNsaWNrLCBpY29uLCBsYWJlbCwgdG9vbHRpcCwga2V5IH0gPSBleHBvcnRBY3Rpb247XG4gICAgICBleHBvcnRBY3Rpb24ub25DbGljayA9IG9uQ2xpY2sgfHwgKCgpID0+IHRoaXMuZXhlY3V0ZVRhYmxlQWN0aW9uKCdFeHBvcnQnKSk7XG4gICAgICBleHBvcnRBY3Rpb24uaWNvbiA9IGljb24gfHwgJ2V4cG9ydCc7XG4gICAgICBleHBvcnRBY3Rpb24ubGFiZWwgPSBsYWJlbCB8fCAnY29yZS5leHBvcnQtdGFibGUnO1xuICAgICAgZXhwb3J0QWN0aW9uLnRvb2x0aXAgPSB0b29sdGlwIHx8ICdjb3JlLmV4cG9ydC10YWJsZSc7XG4gICAgICBleHBvcnRBY3Rpb24ua2V5ID0ga2V5IHx8ICdleHBvcnQnO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogQHBhcmFtIGFjdGlvblxuICAgKi9cbiAgZXhlY3V0ZVRhYmxlQWN0aW9uKGFjdGlvbjogVGFibGVBY3Rpb24pIHtcbiAgICB0aGlzLmdyaWRTZXJ2aWNlLl9sb2dFdmVudChDb3JlRXZlbnRUeXBlcy5HUklEX0dFTkVSQUxfVEFCTEVfQUNUSU9OLCB7IGFjdGlvbiB9KTtcbiAgICBzd2l0Y2ggKGFjdGlvbikge1xuICAgICAgY2FzZSAnQXV0b2ZpdCB0byBDb250ZW50JzpcbiAgICAgICAgdGhpcy5ncmlkU2VydmljZS5maXRHcmlkKCdjb250ZW50Jyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQXV0b2ZpdCB0byBQYWdlJzpcbiAgICAgICAgdGhpcy5ncmlkU2VydmljZS5maXRHcmlkKCdjb250YWluZXInKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdDb2xsYXBzZSBFeHBhbmQnOlxuICAgICAgICB0aGlzLnRvZ2dsZUV4cGFuZGVkKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnRXhwb3J0JzpcbiAgICAgICAgdGhpcy5leHBvcnRUYWJsZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0dyb3VwIGZyb20gU2V0dGluZ3MnOlxuICAgICAgY2FzZSAnR3JvdXAgZnJvbSBUb29sYmFyJzpcbiAgICAgICAgdGhpcy5vcGVuR3JvdXBNZW51KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnUmVzZXQgRmlsdGVycyc6XG4gICAgICAgIHRoaXMucmVzZXRGaWx0ZXJzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnUmVzZXQgU2V0dGluZ3MnOlxuICAgICAgICB0aGlzLnJlc2V0U2V0dGluZ3MoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdTaG93IEhpZGUgQ29sdW1uJzpcbiAgICAgICAgdGhpcy5vcGVuQ29sdW1uTWVudSgpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICB0b2dnbGVFeHBhbmRlZCgpIHtcbiAgICB0aGlzLnJvd0dyb3Vwc0NvbGxhcHNlZCA/IHRoaXMuYXBpLmdyaWQuZXhwYW5kQWxsKCkgOiB0aGlzLmFwaS5ncmlkLmNvbGxhcHNlQWxsKCk7XG4gICAgdGhpcy5yb3dHcm91cHNDb2xsYXBzZWQgPSAhdGhpcy5yb3dHcm91cHNDb2xsYXBzZWQ7XG4gIH1cblxuICBnZXQgaGFzR3JvdXBzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmFwaS5jb2x1bW5zLmdldFJvd0dyb3VwQ29sdW1ucygpLmxlbmd0aCA+IDA7XG4gIH1cblxuICBleHBvcnRUYWJsZSgpIHtcbiAgICBjb25zdCB7IGdyaWROYW1lLCBleHBvcnRHcmlkIH0gPSB0aGlzLmdyaWRDb250cm9sbGVyLmdyaWRPcHRpb25zO1xuICAgIGlmIChpc0Z1bmN0aW9uKGV4cG9ydEdyaWQpKSB7XG4gICAgICBleHBvcnRHcmlkKHsgLi4udGhpcy5hcGksIC4uLnRoaXMuZ3JpZFF1ZXJ5LmdldFZhbHVlKCkuc2V0dGluZ3MgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHRvZGF5ID0gZm9ybWF0KG5ldyBEYXRlKCksIERFRkFVTFRfRk9STUFUKTtcbiAgICAgIHRoaXMuYXBpLmdyaWQuZXhwb3J0RGF0YUFzRXhjZWwoe1xuICAgICAgICBmaWxlTmFtZTogYCR7Z3JpZE5hbWV9IC0gJHt0b2RheX1gLFxuICAgICAgICBwcm9jZXNzQ2VsbENhbGxiYWNrOiAoeyBjb2x1bW4sIHZhbHVlIH06IFByb2Nlc3NDZWxsRm9yRXhwb3J0UGFyYW1zKSA9PiB7XG4gICAgICAgICAgY29uc3QgZm9ybWF0dGVyID0gY29sdW1uLmdldENvbERlZigpLnZhbHVlRm9ybWF0dGVyO1xuICAgICAgICAgIC8vIFRPRE86IGZvbGxvd3VwOiBodHRwczovL2FnLWdyaWQuemVuZGVzay5jb20vaGMvZW4tdXMvcmVxdWVzdHMvMTA5NjM/cGFnZT0xXG4gICAgICAgICAgcmV0dXJuIGZvcm1hdHRlciA/IGZvcm1hdHRlcih7IHZhbHVlIH0gYXMgYW55KSA6IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZXNldFNldHRpbmdzKCkge1xuICAgIHRoaXMuZ3JpZENvbnRyb2xsZXIuZ3JpZFNlcnZpY2UucmVzZXRUYWJsZVNldHRpbmdzKCk7XG4gIH1cblxuICBvcGVuQ29sdW1uTWVudSgpIHtcbiAgICB0aGlzLnBvcG92ZXIub3BlbihEYXRvR3JpZENvbHVtbkRpc3BsYXlNZW51Q29tcG9uZW50LCB0aGlzLnNldHRpbmdzVHJpZ2dlci5uYXRpdmVFbGVtZW50LCB7XG4gICAgICB3aWR0aDogMjIwLFxuICAgICAgY2xhc3NOYW1lOiAnZGF0by1ncmlkLWNvbHVtbnMtZGlzcGxheS1tZW51JyxcbiAgICAgIHBvcHBlcjogeyBwbGFjZW1lbnQ6ICdib3R0b20tZW5kJyB9LFxuICAgICAgZGF0YToge1xuICAgICAgICBhcGk6IHRoaXMuYXBpLFxuICAgICAgICBncmlkU2VydmljZTogdGhpcy5ncmlkU2VydmljZSxcbiAgICAgICAgZ3JpZFF1ZXJ5OiB0aGlzLmdyaWRRdWVyeVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcmVzZXRGaWx0ZXJzKCkge1xuICAgIHRoaXMuZ3JpZENvbnRyb2xsZXIuZ3JpZFNlcnZpY2UuY2xlYXJBbGxGaWx0ZXJzKCk7XG4gIH1cblxuICBvcGVuR3JvdXBNZW51KCkge1xuICAgIHRoaXMub3Blbk1lbnVzLmdyb3VwID0gdHJ1ZTtcbiAgICBjb25zdCB3YWl0Rm9yQW5pbWF0aW9uID0gdGhpcy5oYXNHcm91cHMgPyAwIDogMjAwO1xuICAgIC8qKiBXaGVuIGNoYW5naW5nIHRoZSB0YWJsZXMgZ3JvdXBpbmcgYWxsIHRoZSByb3dzIGFyZSBhdXRvbWF0aWNhbGx5IGV4cGFuZGVkLCB3ZSBuZWVkIHRvIHVwZGF0ZSB0aGUgaWNvbiBzdGF0ZSAqL1xuICAgIGNvbnN0IGV4cGFuZFN1YnNjcmlwdGlvbiA9IHRoaXMuZ3JpZFF1ZXJ5LmdyaWRSZWYuY29sdW1uUm93R3JvdXBDaGFuZ2VkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnJvd0dyb3Vwc0NvbGxhcHNlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMucG9wb3ZlclxuICAgICAgICAub3BlbihEYXRvR3JpZEdyb3Vwc01lbnVDb21wb25lbnQsIHRoaXMuZ3JvdXBUcmlnZ2VyLm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgICAgICBoZWlnaHQ6IDIwNixcbiAgICAgICAgICB3aWR0aDogMjUwLFxuICAgICAgICAgIGNsYXNzTmFtZTogJ2RhdG8tZ3JpZC1ncm91cHMtbWVudScsXG4gICAgICAgICAgcG9wcGVyOiB7IHBsYWNlbWVudDogJ2JvdHRvbS1lbmQnIH0sXG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgYXBpOiB0aGlzLmFwaSxcbiAgICAgICAgICAgIGdyaWRTZXJ2aWNlOiB0aGlzLmdyaWRTZXJ2aWNlXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgZXhwYW5kU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgdGhpcy5vcGVuTWVudXMuZ3JvdXAgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuICAgIH0sIHdhaXRGb3JBbmltYXRpb24pO1xuICB9XG5cbiAgaXNBY3Rpb25EaXNhYmxlZChyb3dBY3Rpb246IFJvd0FjdGlvbikge1xuICAgIHJldHVybiAhcm93QWN0aW9uLnZpc2libGU7XG4gIH1cblxuICBpc1Jvd0FjdGlvbkhpZGRlbihyb3dBY3Rpb246IFJvd0FjdGlvbikge1xuICAgIHJldHVybiAhcm93QWN0aW9uLnZpc2libGUgJiYgdGhpcy5lbmFibGVWMl8xO1xuICB9XG5cbiAgY2xlYXJTZWxlY3RlZFJvd3MoKSB7XG4gICAgdGhpcy5ncmlkU2VydmljZS5kZXNlbGVjdEFsbFJvd3MoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge31cblxuICBwcml2YXRlIGdldENvbGxhcHNlU3RhdGUoeyBub2RlLCBhcGkgfTogUm93R3JvdXBPcGVuZWRFdmVudCk6IGJvb2xlYW4ge1xuICAgIGxldCBjb2xsYXBzZWQgPSB0cnVlO1xuICAgIGlmIChub2RlLnJvd0dyb3VwSW5kZXggPT09IDApIHtcbiAgICAgIGFwaS5mb3JFYWNoTm9kZUFmdGVyRmlsdGVyQW5kU29ydCgoeyBleHBhbmRlZCwgcm93R3JvdXBJbmRleCB9OiBSb3dOb2RlKSA9PiB7XG4gICAgICAgIGlmIChyb3dHcm91cEluZGV4ID09PSAwICYmIGV4cGFuZGVkKSB7XG4gICAgICAgICAgY29sbGFwc2VkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gY29sbGFwc2VkO1xuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3Rlckdyb3VwTGlzdGVuZXJzKCkge1xuICAgIC8qKiBMaXN0ZW4gdG8gYWRkaW5nIG9yIHJlbW92aW5nIHJvdyBncm91cHMgZnJvbSB0aGUgY29sdW1ucyBhbmQgbm90IHRoZSBncm91cHMgbWVudSAqL1xuICAgIHRoaXMuZ3JpZFF1ZXJ5XG4gICAgICAud2FpdEZvckdyaWQoKCkgPT4gdGhpcy5ncmlkUXVlcnkuZ3JpZFJlZi5jb2x1bW5Sb3dHcm91cENoYW5nZWQpXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKCgpID0+ICF0aGlzLm9wZW5NZW51cy5ncm91cCksXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5yb3dHcm91cHNDb2xsYXBzZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSk7XG4gICAgLyoqIExpc3RlbiB0byByb3cgY29sbGFwc2Ugc3RhdGUgdG8gdXBkYXRlIHRoZSBpY29uICovXG4gICAgdGhpcy5ncmlkUXVlcnlcbiAgICAgIC53YWl0Rm9yR3JpZCgoKSA9PiB0aGlzLmdyaWRRdWVyeS5ncmlkUmVmLnJvd0dyb3VwT3BlbmVkKVxuICAgICAgLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpXG4gICAgICAuc3Vic2NyaWJlKChldmVudDogUm93R3JvdXBPcGVuZWRFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCBjb2xsYXBzZWQgPSB0aGlzLmdldENvbGxhcHNlU3RhdGUoZXZlbnQpO1xuICAgICAgICBpZiAoY29sbGFwc2VkICE9PSB0aGlzLnJvd0dyb3Vwc0NvbGxhcHNlZCkge1xuICAgICAgICAgIHRoaXMucm93R3JvdXBzQ29sbGFwc2VkID0gY29sbGFwc2VkO1xuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHN1YnNjcmliZVJvd3NTZWxlY3Rpb25EYXRhKCkge1xuICAgIHRoaXMuZ3JpZFF1ZXJ5LnJvd3NTZWxlY3Rpb25EYXRhJFxuICAgICAgLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpXG4gICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAoe1xuICAgICAgICAgIHRvdGFsUm93c0NvdW50LFxuICAgICAgICAgIHNlbGVjdGVkUm93c0NvdW50LFxuICAgICAgICAgIHNlbGVjdGVkUGFnZVJvd3NDb3VudCxcbiAgICAgICAgICBpc0FsbFBhZ2VSb3dzU2VsZWN0ZWRcbiAgICAgICAgfTogR3JpZFJvd3NTZWxlY3Rpb25EYXRhKSA9PiB7XG4gICAgICAgICAgdGhpcy50b3RhbFJvd3NDb3VudCA9IHRvdGFsUm93c0NvdW50O1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzQ291bnQgPSBzZWxlY3RlZFJvd3NDb3VudDtcbiAgICAgICAgICBjb25zdCB7IGVuYWJsZUFsbFBhZ2VzU2VsZWN0aW9uIH0gPSB0aGlzLmdyaWRRdWVyeS5nZXRHcmlkT3B0aW9ucygpO1xuICAgICAgICAgIHRoaXMuYWxsUGFnZVJvd3NTZWxlY3RlZCA9XG4gICAgICAgICAgICBlbmFibGVBbGxQYWdlc1NlbGVjdGlvbiAmJlxuICAgICAgICAgICAgaXNBbGxQYWdlUm93c1NlbGVjdGVkICYmXG4gICAgICAgICAgICBzZWxlY3RlZFJvd3NDb3VudCA9PT0gc2VsZWN0ZWRQYWdlUm93c0NvdW50ICYmXG4gICAgICAgICAgICBzZWxlY3RlZFJvd3NDb3VudCA8IHRvdGFsUm93c0NvdW50O1xuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIHNlbGVjdEFsbFBhZ2VzKCkge1xuICAgIGlmICh0aGlzLmdyaWRRdWVyeS5pc1NlcnZlclNpZGUpIHtcbiAgICAgIHRoaXMuZ3JpZFNlcnZpY2Uuc2V0U2VydmVyU2lkZVBhZ2luYXRpb24oeyBzZWxlY3RBbGxSb3dzRW5hYmxlZDogdHJ1ZSwgZXhjbHVkZWRGcm9tU2VsZWN0QWxsOiBbXSB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5ncmlkU2VydmljZS5hcGkuZ3JpZC5zZWxlY3RBbGxGaWx0ZXJlZCgpO1xuICAgIH1cbiAgfVxufVxuIl19
|
package/esm2015/lib/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
window.coreVersion = '22.0.
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
window.coreVersion = '22.0.3';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL3ZlcnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUMsTUFBYyxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIod2luZG93IGFzIGFueSkuY29yZVZlcnNpb24gPSAnMjIuMC4zJzsiXX0=
|
|
@@ -39,6 +39,7 @@ var DatoGridV2ToolbarComponent = /** @class */ (function () {
|
|
|
39
39
|
this.gridActions = { mainList: [], moreMenu: [] };
|
|
40
40
|
this.searchPlaceholder = this.translate.transform('core.search');
|
|
41
41
|
this.rowActionsShortLabelThreshold = 1539;
|
|
42
|
+
this.displayCustomGridActionsSeparator = true;
|
|
42
43
|
this.openMenus = {
|
|
43
44
|
group: false,
|
|
44
45
|
settings: false
|
|
@@ -446,10 +447,14 @@ var DatoGridV2ToolbarComponent = /** @class */ (function () {
|
|
|
446
447
|
Input(),
|
|
447
448
|
__metadata("design:type", Number)
|
|
448
449
|
], DatoGridV2ToolbarComponent.prototype, "rowActionsShortLabelThreshold", void 0);
|
|
450
|
+
__decorate([
|
|
451
|
+
Input(),
|
|
452
|
+
__metadata("design:type", Object)
|
|
453
|
+
], DatoGridV2ToolbarComponent.prototype, "displayCustomGridActionsSeparator", void 0);
|
|
449
454
|
DatoGridV2ToolbarComponent = __decorate([
|
|
450
455
|
Component({
|
|
451
456
|
selector: 'dato-grid-toolbar-v2',
|
|
452
|
-
template: "<section *ngIf=\"gridController.gridQuery.gridReady$ | async\" class=\"d-flex mb-20 justify-between items-center main-container\" [class.mx-30]=\"enableBackground\">\n\n <section [ngClass]=\"{ 'd-flex items-center right-section': enableV2_1 }\">\n <!-- Dynamic content for the left area -->\n <div data-auto-id=\"grid-toolbar-dynamic-left\">\n <ng-content select=\"[toolbarLeftArea]\"></ng-content>\n </div>\n\n <div class=\"d-flex items-center\">\n <dato-grid-search-bar *ngIf=\"enableSearch\" [searchPlaceholder]=\"searchPlaceholder\"></dato-grid-search-bar>\n <ng-container *ngIf=\"enableV2_1 && selectedRowsCount > 0\">\n <div class=\"d-flex items-center\">\n <div class=\"chip align-center d-flex dato-note px-9 nowrap ml-16\">\n <span data-auto-id=\"grid-selected-items-text\">{{ (allPageRowsSelected ? 'core.all-items-in-page-selected' : 'core.selected-items') | translate:{ itemsCount: selectedRowsCount } }}</span>\n <dato-icon datoType=\"primary\" datoIcon=\"close\" datoSize=\"md\" class=\"ml-6 pointer\" (click)=\"clearSelectedRows()\"\n data-auto-id=\"grid-clear-selected-rows\"></dato-icon>\n </div>\n <dato-link *ngIf=\"allPageRowsSelected\" (click)=\"selectAllPages()\" datoSize=\"sm\" class=\"ml-10\"\n data-auto-id=\"grid-select-all-pages\">\n <span>{{'core.select-all-items' | translate:{ itemsCount: totalRowsCount } }}</span>\n </dato-link>\n </div>\n <div *ngIf=\"hasRowActions\" class=\"separator\"></div>\n </ng-container>\n </div>\n\n <!-- Row Actions-->\n <div class=\"d-flex items-center\" *ngIf=\"isRowActionsVisible\">\n\n <ng-container *ngFor=\"let rowAction of rowActions.mainList; index as i; last as isLast\">\n\n <div *ngIf=\"!isRowActionHidden(rowAction)\"\n [attr.data-auto-id]=\"'grid-toolbar-action-' + rowAction.key\"\n [attr.data-action-index]=\"'grid-toolbar-action-' + i\"\n [class.disabled-action]=\"isActionDisabled(rowAction)\">\n <ng-container [ngTemplateOutlet]=\"rowAction.template || defaultButton\"\n [ngTemplateOutletContext]=\"{disabled: isActionDisabled(rowAction)}\"></ng-container>\n </div>\n\n <ng-template #defaultButton>\n <div (click)=\"onActionClick(rowAction)\">\n <dato-grid-toolbar-button [icon]=\"rowAction.icon\"\n [disabled]=\"isActionDisabled(rowAction)\"\n [label]=\"rowAction.label\"\n [shortLabel]=\"rowAction.shortLabel\"\n [tooltip]=\"rowAction.tooltip\"\n [getMenu]=\"rowAction.getMenu\"\n [enableV2_1]=\"enableV2_1\"\n [isLast]=\"isLast\"\n [widthToHideLabel]=\"widthToHideActionsLabels\">\n </dato-grid-toolbar-button>\n </div>\n </ng-template>\n </ng-container>\n\n <div *ngIf=\"rowActions.moreMenu.length > 0\" class=\"separator\"></div>\n <dato-grid-toolbar-more-menu [actions]=\"rowActions.moreMenu\" (actionClick)=\"onActionClick($event)\" [isRowActions]=\"true\">\n </dato-grid-toolbar-more-menu>\n </div>\n\n </section>\n\n\n <!-- General Actions -->\n <div class=\"d-flex items-center\">\n <!-- Dynamic content for the right area -->\n <div #customActions data-auto-id=\"grid-toolbar-dynamic-right\">\n <ng-content select=\"[toolbarRightArea]\"></ng-content>\n </div>\n <div *ngIf=\"customActions.childNodes.length\" class=\"separator\"></div>\n <!-- Group buttons -->\n <div *ngIf=\"groupsAllowed\" class=\"d-flex grouping-section opacity-0 invisible\" [class.open]=\"openMenus.group || hasGroups\">\n <dato-icon-button [class.active]=\"openMenus.group\" (click)=\"executeTableAction('Group from Toolbar')\"\n data-auto-id=\"grid-toolbar-open-groups\"\n removeIconPadding datoSize=\"md\" datoType=\"none\" icon=\"group\" iconWidth=\"17px\"\n datoTooltip=\"core.row-grouping\" #groupTrigger\n class=\"mr-10 pointer\"></dato-icon-button>\n <dato-icon-button data-auto-id=\"grid-toolbar-toggle-expand\" datoSize=\"md\" datoType=\"none\"\n (click)=\"executeTableAction('Collapse Expand')\"\n [icon]=\"rowGroupsCollapsed ? 'expand' : 'collapse'\"\n [disabled]=\"!hasGroups\"\n [datoTooltip]=\"'core.' + (rowGroupsCollapsed ? 'expand' : 'collapse') + '-rows'\"\n class=\"pointer\"></dato-icon-button>\n <div class=\"separator\"></div>\n </div>\n\n <!-- Settings and export -->\n <ng-container *ngIf=\"createAction\">\n <dato-button datoSize=\"sm\" class=\"pointer primary-300-color\" (click)=\"onActionClick(createAction)\"\n [datoTooltip]=\"createAction.tooltip\" [attr.data-auto-id]=\"'grid-toolbar-action-' + createAction.key\">\n <dato-icon *ngIf=\"createAction.icon\" [icon]=\"createAction.icon\" class=\"mr-5\"></dato-icon>\n {{ createAction.label | translate }}\n </dato-button>\n <div class=\"separator\"></div>\n </ng-container>\n <ng-container *ngFor=\"let gridAction of gridActions.mainList; index as i\">\n <div *ngIf=\"gridAction.getMenu else button\" [datoMenuTriggerFor]=\"gridAction.getMenu()\">\n <ng-container [ngTemplateOutlet]=\"button\"></ng-container>\n </div>\n <ng-template #button>\n <dato-icon datoSize=\"sm\" (click)=\"onActionClick(gridAction)\"\n [attr.data-auto-id]=\"'grid-toolbar-action-' + gridAction.key\"\n [attr.data-action-index]=\"'grid-toolbar-general-action-' + i\"\n [icon]=\"gridAction.icon\" class=\"pointer primary-300-color\"\n [class.mr-16]=\"!gridAction.separator\"\n [datoTooltip]=\"gridAction.tooltip || gridAction.label\">\n </dato-icon>\n </ng-template>\n <div *ngIf=\"gridAction.separator\" class=\"separator\"></div>\n </ng-container>\n\n <dato-icon data-auto-id=\"grid-toolbar-export\" datoSize=\"sm\"\n (click)=\"executeTableAction('Export')\" *ngIf=\"displayExport && !isTreeMode\"\n icon=\"export\" class=\"pointer mr-16 primary-300-color\" datoTooltip=\"core.export-table\"></dato-icon>\n <dato-icon [class.active]=\"openMenus.settings\" (click)=\"openMenus.settings = true\"\n data-auto-id=\"grid-toolbar-settings\" datoSize=\"sm\"\n icon=\"account\" class=\"pointer primary-300-color\" datoTooltip=\"core.table-settings\"\n #settingsTrigger\n [datoMenuTriggerFor]=\"settingsMenu\"></dato-icon>\n\n <ng-container *ngIf=\"gridActions.moreMenu.length > 0\">\n <div class=\"separator\"></div>\n <dato-grid-toolbar-more-menu [actions]=\"gridActions.moreMenu\" (actionClick)=\"onActionClick($event)\" [isRowActions]=\"false\">\n </dato-grid-toolbar-more-menu>\n </ng-container>\n\n\n <dato-menu #settingsMenu=\"datoMenu\" menuClass=\"grid-settings-menu\" placement=\"bottom-end\"\n (menuClosed)=\"openMenus.settings = false\">\n <ng-template datoMenuContent>\n <button data-auto-id=\"grid-toolbar-settings-autofit-page\" datoMenuItem\n (click)=\"executeTableAction('Autofit to Page')\">\n <dato-icon datoSize=\"sm\" icon=\"maximize-horizontal\" class=\"mr-8 primary-300-color\"></dato-icon>\n {{ 'core.autofitPage' | translate }}</button>\n <button data-auto-id=\"grid-toolbar-settings-autofit-content\" datoMenuItem\n (click)=\"executeTableAction('Autofit to Content')\">\n <dato-icon datoSize=\"sm\" icon=\"minimize-horizontal\" class=\"mr-8 primary-300-color\"></dato-icon>\n {{ 'core.autofitContent' | translate }}</button>\n <ng-container *ngIf=\"groupsAllowed\">\n <button data-auto-id=\"grid-toolbar-settings-group\" datoMenuItem (click)=\"executeTableAction('Group from Settings')\">\n <dato-icon datoSize=\"sm\" icon=\"group\" class=\"mr-4 primary-300-color\"></dato-icon>\n {{ 'core.group' | translate }}\n </button>\n </ng-container>\n <button data-auto-id=\"grid-toolbar-settings-toggle-columns\" datoMenuItem (click)=\"executeTableAction('Show Hide Column')\">\n <dato-icon datoSize=\"sm\" icon=\"hide\" class=\"mr-8 primary-300-color\"></dato-icon>\n <span>{{ 'core.hideShowColumns' | translate }}<span\n class=\"dato-simple-italic ml-5 primary-200-color\">{{hiddenColumns}}</span></span>\n </button>\n <button data-auto-id=\"grid-toolbar-settings-reset-settings\" datoMenuItem\n (click)=\"executeTableAction('Reset Settings')\">\n <dato-icon datoSize=\"sm\" icon=\"reset-table\" class=\"mr-8 primary-300-color\"></dato-icon>\n {{ 'core.resetTableSettings' | translate }}\n </button>\n <button data-auto-id=\"grid-toolbar-settings-reset-filters\" datoMenuItem\n (click)=\"executeTableAction('Reset Filters')\">\n <dato-icon datoSize=\"sm\" icon=\"reset-filters\" class=\"mr-8 primary-300-color\"></dato-icon>\n {{ 'core.resetAllFilters' | translate }}\n </button>\n <button data-auto-id=\"grid-toolbar-export\" datoMenuItem\n (click)=\"executeTableAction('Export')\" *ngIf=\"this.displayExport && isTreeMode\">\n <dato-icon datoSize=\"sm\"\n icon=\"export\" class=\"pointer mr-5 primary-300-color\" datoTooltip=\"core.export-table\"></dato-icon>\n {{ 'core.export-table' | translate }}\n </button>\n </ng-template>\n </dato-menu>\n </div>\n</section>\n\n\n",
|
|
457
|
+
template: "<section *ngIf=\"gridController.gridQuery.gridReady$ | async\" class=\"d-flex mb-20 justify-between items-center main-container\" [class.mx-30]=\"enableBackground\">\n\n <section [ngClass]=\"{ 'd-flex items-center right-section': enableV2_1 }\">\n <!-- Dynamic content for the left area -->\n <div data-auto-id=\"grid-toolbar-dynamic-left\">\n <ng-content select=\"[toolbarLeftArea]\"></ng-content>\n </div>\n\n <div class=\"d-flex items-center\">\n <dato-grid-search-bar *ngIf=\"enableSearch\" [searchPlaceholder]=\"searchPlaceholder\"></dato-grid-search-bar>\n <ng-container *ngIf=\"enableV2_1 && selectedRowsCount > 0\">\n <div class=\"d-flex items-center\">\n <div class=\"chip align-center d-flex dato-note px-9 nowrap ml-16\">\n <span data-auto-id=\"grid-selected-items-text\">{{ (allPageRowsSelected ? 'core.all-items-in-page-selected' : 'core.selected-items') | translate:{ itemsCount: selectedRowsCount } }}</span>\n <dato-icon datoType=\"primary\" datoIcon=\"close\" datoSize=\"md\" class=\"ml-6 pointer\" (click)=\"clearSelectedRows()\"\n data-auto-id=\"grid-clear-selected-rows\"></dato-icon>\n </div>\n <dato-link *ngIf=\"allPageRowsSelected\" (click)=\"selectAllPages()\" datoSize=\"sm\" class=\"ml-10\"\n data-auto-id=\"grid-select-all-pages\">\n <span>{{'core.select-all-items' | translate:{ itemsCount: totalRowsCount } }}</span>\n </dato-link>\n </div>\n <div *ngIf=\"hasRowActions\" class=\"separator\"></div>\n </ng-container>\n </div>\n\n <!-- Row Actions-->\n <div class=\"d-flex items-center\" *ngIf=\"isRowActionsVisible\">\n\n <ng-container *ngFor=\"let rowAction of rowActions.mainList; index as i; last as isLast\">\n\n <div *ngIf=\"!isRowActionHidden(rowAction)\"\n [attr.data-auto-id]=\"'grid-toolbar-action-' + rowAction.key\"\n [attr.data-action-index]=\"'grid-toolbar-action-' + i\"\n [class.disabled-action]=\"isActionDisabled(rowAction)\">\n <ng-container [ngTemplateOutlet]=\"rowAction.template || defaultButton\"\n [ngTemplateOutletContext]=\"{disabled: isActionDisabled(rowAction)}\"></ng-container>\n </div>\n\n <ng-template #defaultButton>\n <div (click)=\"onActionClick(rowAction)\">\n <dato-grid-toolbar-button [icon]=\"rowAction.icon\"\n [disabled]=\"isActionDisabled(rowAction)\"\n [label]=\"rowAction.label\"\n [shortLabel]=\"rowAction.shortLabel\"\n [tooltip]=\"rowAction.tooltip\"\n [getMenu]=\"rowAction.getMenu\"\n [enableV2_1]=\"enableV2_1\"\n [isLast]=\"isLast\"\n [widthToHideLabel]=\"widthToHideActionsLabels\">\n </dato-grid-toolbar-button>\n </div>\n </ng-template>\n </ng-container>\n\n <div *ngIf=\"rowActions.moreMenu.length > 0\" class=\"separator\"></div>\n <dato-grid-toolbar-more-menu [actions]=\"rowActions.moreMenu\" (actionClick)=\"onActionClick($event)\" [isRowActions]=\"true\">\n </dato-grid-toolbar-more-menu>\n </div>\n\n </section>\n\n\n <!-- General Actions -->\n <div class=\"d-flex items-center\">\n <!-- Create action -->\n <ng-container *ngIf=\"createAction\">\n <dato-button datoSize=\"sm\" class=\"pointer primary-300-color\" (click)=\"onActionClick(createAction)\"\n [datoTooltip]=\"createAction.tooltip\" [attr.data-auto-id]=\"'grid-toolbar-action-' + createAction.key\">\n <dato-icon *ngIf=\"createAction.icon\" [icon]=\"createAction.icon\" class=\"mr-5\"></dato-icon>\n {{ createAction.label | translate }}\n </dato-button>\n <div class=\"separator\"></div>\n </ng-container>\n\n <!-- Dynamic content for the right area -->\n <div #customActions data-auto-id=\"grid-toolbar-dynamic-right\">\n <ng-content select=\"[toolbarRightArea]\"></ng-content>\n </div>\n <div *ngIf=\"customActions.childNodes.length && displayCustomGridActionsSeparator\" class=\"separator\"></div>\n\n <!-- Group buttons -->\n <div *ngIf=\"groupsAllowed\" class=\"d-flex grouping-section opacity-0 invisible\" [class.open]=\"openMenus.group || hasGroups\">\n <dato-icon-button [class.active]=\"openMenus.group\" (click)=\"executeTableAction('Group from Toolbar')\"\n data-auto-id=\"grid-toolbar-open-groups\"\n removeIconPadding datoSize=\"md\" datoType=\"none\" icon=\"group\" iconWidth=\"17px\"\n datoTooltip=\"core.row-grouping\" #groupTrigger\n class=\"mr-10 pointer\"></dato-icon-button>\n <dato-icon-button data-auto-id=\"grid-toolbar-toggle-expand\" datoSize=\"md\" datoType=\"none\"\n (click)=\"executeTableAction('Collapse Expand')\"\n [icon]=\"rowGroupsCollapsed ? 'expand' : 'collapse'\"\n [disabled]=\"!hasGroups\"\n [datoTooltip]=\"'core.' + (rowGroupsCollapsed ? 'expand' : 'collapse') + '-rows'\"\n class=\"pointer\"></dato-icon-button>\n <div class=\"separator\"></div>\n </div>\n\n <!-- Grid Actions -->\n <ng-container *ngFor=\"let gridAction of gridActions.mainList; index as i\">\n <div *ngIf=\"gridAction.getMenu else button\" [datoMenuTriggerFor]=\"gridAction.getMenu()\">\n <ng-container [ngTemplateOutlet]=\"button\"></ng-container>\n </div>\n <ng-template #button>\n <dato-icon datoSize=\"sm\" (click)=\"onActionClick(gridAction)\"\n [attr.data-auto-id]=\"'grid-toolbar-action-' + gridAction.key\"\n [attr.data-action-index]=\"'grid-toolbar-general-action-' + i\"\n [icon]=\"gridAction.icon\" class=\"pointer primary-300-color\"\n [class.mr-16]=\"!gridAction.separator\"\n [datoTooltip]=\"gridAction.tooltip || gridAction.label\">\n </dato-icon>\n </ng-template>\n <div *ngIf=\"gridAction.separator\" class=\"separator\"></div>\n </ng-container>\n\n <!-- Export -->\n <dato-icon data-auto-id=\"grid-toolbar-export\" datoSize=\"sm\"\n (click)=\"executeTableAction('Export')\" *ngIf=\"displayExport && !isTreeMode\"\n icon=\"export\" class=\"pointer mr-16 primary-300-color\" datoTooltip=\"core.export-table\"></dato-icon>\n\n <!-- Settings -->\n <dato-icon [class.active]=\"openMenus.settings\" (click)=\"openMenus.settings = true\"\n data-auto-id=\"grid-toolbar-settings\" datoSize=\"sm\"\n icon=\"account\" class=\"pointer primary-300-color\" datoTooltip=\"core.table-settings\"\n #settingsTrigger\n [datoMenuTriggerFor]=\"settingsMenu\"></dato-icon>\n\n <!-- More actions menu -->\n <ng-container *ngIf=\"gridActions.moreMenu.length > 0\">\n <div class=\"separator\"></div>\n <dato-grid-toolbar-more-menu [actions]=\"gridActions.moreMenu\" (actionClick)=\"onActionClick($event)\" [isRowActions]=\"false\">\n </dato-grid-toolbar-more-menu>\n </ng-container>\n\n <dato-menu #settingsMenu=\"datoMenu\" menuClass=\"grid-settings-menu\" placement=\"bottom-end\"\n (menuClosed)=\"openMenus.settings = false\">\n <ng-template datoMenuContent>\n <button data-auto-id=\"grid-toolbar-settings-autofit-page\" datoMenuItem\n (click)=\"executeTableAction('Autofit to Page')\">\n <dato-icon datoSize=\"sm\" icon=\"maximize-horizontal\" class=\"mr-8 primary-300-color\"></dato-icon>\n {{ 'core.autofitPage' | translate }}</button>\n <button data-auto-id=\"grid-toolbar-settings-autofit-content\" datoMenuItem\n (click)=\"executeTableAction('Autofit to Content')\">\n <dato-icon datoSize=\"sm\" icon=\"minimize-horizontal\" class=\"mr-8 primary-300-color\"></dato-icon>\n {{ 'core.autofitContent' | translate }}</button>\n <ng-container *ngIf=\"groupsAllowed\">\n <button data-auto-id=\"grid-toolbar-settings-group\" datoMenuItem (click)=\"executeTableAction('Group from Settings')\">\n <dato-icon datoSize=\"sm\" icon=\"group\" class=\"mr-4 primary-300-color\"></dato-icon>\n {{ 'core.group' | translate }}\n </button>\n </ng-container>\n <button data-auto-id=\"grid-toolbar-settings-toggle-columns\" datoMenuItem (click)=\"executeTableAction('Show Hide Column')\">\n <dato-icon datoSize=\"sm\" icon=\"hide\" class=\"mr-8 primary-300-color\"></dato-icon>\n <span>{{ 'core.hideShowColumns' | translate }}<span\n class=\"dato-simple-italic ml-5 primary-200-color\">{{hiddenColumns}}</span></span>\n </button>\n <button data-auto-id=\"grid-toolbar-settings-reset-settings\" datoMenuItem\n (click)=\"executeTableAction('Reset Settings')\">\n <dato-icon datoSize=\"sm\" icon=\"reset-table\" class=\"mr-8 primary-300-color\"></dato-icon>\n {{ 'core.resetTableSettings' | translate }}\n </button>\n <button data-auto-id=\"grid-toolbar-settings-reset-filters\" datoMenuItem\n (click)=\"executeTableAction('Reset Filters')\">\n <dato-icon datoSize=\"sm\" icon=\"reset-filters\" class=\"mr-8 primary-300-color\"></dato-icon>\n {{ 'core.resetAllFilters' | translate }}\n </button>\n <button data-auto-id=\"grid-toolbar-export\" datoMenuItem\n (click)=\"executeTableAction('Export')\" *ngIf=\"this.displayExport && isTreeMode\">\n <dato-icon datoSize=\"sm\"\n icon=\"export\" class=\"pointer mr-5 primary-300-color\" datoTooltip=\"core.export-table\"></dato-icon>\n {{ 'core.export-table' | translate }}\n </button>\n </ng-template>\n </dato-menu>\n </div>\n</section>\n\n\n",
|
|
453
458
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
454
459
|
styles: [".grouping-section{transition:visibility .2s ease-in-out,width .2s ease-in-out,opacity .2s ease-in-out;width:0}.grouping-section.open{width:75px;visibility:visible;opacity:1}:host .main-container{min-height:24px}:host .right-section{margin-right:50px}:host .separator{width:1px;height:24px;margin:0 16px}.disabled-action{pointer-events:none}"]
|
|
455
460
|
}),
|
|
@@ -463,4 +468,4 @@ var DatoGridV2ToolbarComponent = /** @class */ (function () {
|
|
|
463
468
|
return DatoGridV2ToolbarComponent;
|
|
464
469
|
}());
|
|
465
470
|
export { DatoGridV2ToolbarComponent };
|
|
466
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC10b29sYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL2dyaWQtdjIvZ3JpZC10b29sYmFyL2dyaWQtdG9vbGJhci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOztBQUVILE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsS0FBSyxFQUNMLFNBQVMsRUFDVCxTQUFTLEVBQ1QsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR0wsY0FBYyxFQUdmLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDM0YsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXhELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUM3RixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNsQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDckUsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sa0VBQWtFLENBQUM7QUFD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Q1gsb0JBQW9CO1lBQ3RCLFdBQVc7WUFDVCxTQUFTO1lBQ1AsV0FBVztPQW5FdkIsMEJBQTBCLENBc1l0QztJQUFELGlDQUFDO0NBQUEsQUF0WUQsSUFzWUM7U0F0WVksMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IERhdG9yYW1hLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIEFwYWNoZSBMaWNlbnNlIDIuMCBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRvcmFtYS9jbGllbnQtY29yZS9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBpc0Rldk1vZGUsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBCYXNlVG9vbGJhckFjdGlvbixcbiAgR3JpZEFjdGlvbixcbiAgR3JpZEFjdGlvblR5cGUsXG4gIEdyaWRSb3dBY3Rpb25zU2NyZWVuVGhyZXNob2xkLFxuICBSb3dBY3Rpb25cbn0gZnJvbSAnLi9ncmlkLXRvb2xiYXIudHlwZXMnO1xuaW1wb3J0IHsgRGF0b0dyaWRDb250cm9sbGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vZ3JpZC1jb250cm9sbGVyL2dyaWQtY29udHJvbGxlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgdW50aWxEZXN0cm95ZWQgfSBmcm9tICduZ3gtdGFrZS11bnRpbC1kZXN0cm95JztcbmltcG9ydCB7IFByb2Nlc3NDZWxsRm9yRXhwb3J0UGFyYW1zLCBSb3dHcm91cE9wZW5lZEV2ZW50LCBSb3dOb2RlIH0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBpc0Z1bmN0aW9uIH0gZnJvbSAnLi4vLi4vdXRpbHMvdmFsaWRhdG9ycyc7XG5pbXBvcnQgeyBtZXJnZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGF0b1BvcG92ZXIgfSBmcm9tICcuLi8uLi9wb3BvdmVyL3BvcG92ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBEYXRvR3JpZEdyb3Vwc01lbnVDb21wb25lbnQgfSBmcm9tICcuLi9ncmlkLWdyb3Vwcy1tZW51L2dyaWQtZ3JvdXBzLW1lbnUuY29tcG9uZW50JztcbmltcG9ydCB7IEdyaWRRdWVyeSB9IGZyb20gJy4uL2dyaWQtc3RvcmUvZ3JpZC5xdWVyeSc7XG5pbXBvcnQgeyBnZXRWaXNpYmxlQWN0aW9ucyB9IGZyb20gJy4uL2dyaWQtdjIudXRpbCc7XG5pbXBvcnQgeyBmb3JtYXQgfSBmcm9tICdkYXRlLWZucyc7XG5pbXBvcnQgeyBERUZBVUxUX0ZPUk1BVCB9IGZyb20gJy4uLy4uL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLnR5cGVzJztcbmltcG9ydCB7IERhdG9HcmlkQ29sdW1uRGlzcGxheU1lbnVDb21wb25lbnQgfSBmcm9tICcuLi9ncmlkLWNvbHVtbnMtZGlzcGxheS1tZW51L2dyaWQtY29sdW1ucy1kaXNwbGF5LW1lbnUuY29tcG9uZW50JztcbmltcG9ydCB7IEdyaWRTZXJ2aWNlIH0gZnJvbSAnLi4vZ3JpZC1zdG9yZS9ncmlkLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29yZUV2ZW50VHlwZXMgfSBmcm9tICcuLi8uLi9ldmVudC1sb2dnZXInO1xuaW1wb3J0IHsgRGF0b1RyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBzaXplIH0gZnJvbSAnLi4vLi4vdXRpbHMvY29sbGVjdGlvbic7XG5pbXBvcnQgeyBHcmlkUm93c1NlbGVjdGlvbkRhdGEgfSBmcm9tICcuLi9ncmlkL2dyaWQtdjIudHlwZXMnO1xuXG50eXBlIFRhYmxlQWN0aW9uID1cbiAgfCAnQXV0b2ZpdCB0byBDb250ZW50J1xuICB8ICdBdXRvZml0IHRvIFBhZ2UnXG4gIHwgJ1Nob3cgSGlkZSBDb2x1bW4nXG4gIHwgJ1Jlc2V0IFNldHRpbmdzJ1xuICB8ICdSZXNldCBGaWx0ZXJzJ1xuICB8ICdHcm91cCBmcm9tIFNldHRpbmdzJ1xuICB8ICdHcm91cCBmcm9tIFRvb2xiYXInXG4gIHwgJ0V4cG9ydCdcbiAgfCAnQ29sbGFwc2UgRXhwYW5kJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGF0by1ncmlkLXRvb2xiYXItdjInLFxuICB0ZW1wbGF0ZVVybDogJy4vZ3JpZC10b29sYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZ3JpZC10b29sYmFyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIERhdG9HcmlkVjJUb29sYmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IE1BWF9WSVNJQkxFX1JPV19BQ1RJT05TID0gNTtcbiAgcHJpdmF0ZSByZWFkb25seSBNQVhfVklTSUJMRV9HUklEX0FDVElPTlMgPSAyO1xuICBwcml2YXRlIF9tYXhSb3dBY3Rpb25zID0gdGhpcy5NQVhfVklTSUJMRV9ST1dfQUNUSU9OUztcblxuICBAVmlld0NoaWxkKCdncm91cFRyaWdnZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogZmFsc2UgfSkgZ3JvdXBUcmlnZ2VyOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdzZXR0aW5nc1RyaWdnZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogZmFsc2UgfSkgc2V0dGluZ3NUcmlnZ2VyOiBFbGVtZW50UmVmO1xuXG4gIEBJbnB1dCgpIGRpc3BsYXlFeHBvcnQgPSB0cnVlO1xuICBjcmVhdGVBY3Rpb246IEdyaWRBY3Rpb247XG4gIHJvd0FjdGlvbnM6IHsgbWFpbkxpc3Q6IFJvd0FjdGlvbltdOyBtb3JlTWVudTogUm93QWN0aW9uW10gfSA9IHsgbWFpbkxpc3Q6IFtdLCBtb3JlTWVudTogW10gfTtcbiAgZ3JpZEFjdGlvbnM6IHsgbWFpbkxpc3Q6IEdyaWRBY3Rpb25bXTsgbW9yZU1lbnU6IEdyaWRBY3Rpb25bXSB9ID0geyBtYWluTGlzdDogW10sIG1vcmVNZW51OiBbXSB9O1xuXG4gIEBJbnB1dCgpIHNldCBtYXhSb3dBY3Rpb25zKG1heFJvd0FjdGlvbnM6IG51bWJlcikge1xuICAgIGlmICh0aGlzLmVuYWJsZVYyXzEpIHtcbiAgICAgIHRoaXMuX21heFJvd0FjdGlvbnMgPSBNYXRoLm1pbihtYXhSb3dBY3Rpb25zLCB0aGlzLk1BWF9WSVNJQkxFX1JPV19BQ1RJT05TKTtcbiAgICAgIGlmIChtYXhSb3dBY3Rpb25zID4gdGhpcy5NQVhfVklTSUJMRV9ST1dfQUNUSU9OUyAmJiBpc0Rldk1vZGUoKSkge1xuICAgICAgICBjb25zb2xlLndhcm4oYERhdG9HcmlkIFYyLjEgLSBtYXhSb3dBY3Rpb25zIGNhbm5vdCBiZSBvdmVyICR7dGhpcy5NQVhfVklTSUJMRV9ST1dfQUNUSU9OU31gKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fbWF4Um93QWN0aW9ucyA9IG1heFJvd0FjdGlvbnM7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KCkgaGlkZUdyb3VwaW5nOiBib29sZWFuO1xuICBASW5wdXQoKSBzZWFyY2hQbGFjZWhvbGRlciA9IHRoaXMudHJhbnNsYXRlLnRyYW5zZm9ybSgnY29yZS5zZWFyY2gnKTtcbiAgQElucHV0KCkgcm93QWN0aW9uc1Nob3J0TGFiZWxUaHJlc2hvbGQ6IEdyaWRSb3dBY3Rpb25zU2NyZWVuVGhyZXNob2xkID0gMTUzOTtcblxuICBvcGVuTWVudXMgPSB7XG4gICAgZ3JvdXA6IGZhbHNlLFxuICAgIHNldHRpbmdzOiBmYWxzZVxuICB9O1xuICByb3dHcm91cHNDb2xsYXBzZWQgPSBmYWxzZTtcbiAgZ3JvdXBzQWxsb3dlZCA9ICF0aGlzLmhpZGVHcm91cGluZztcbiAgaXNTZWxlY3RlZFJvdyA9IGZhbHNlO1xuICBpc1RyZWVNb2RlOiBib29sZWFuID0gdGhpcy5ncmlkU2VydmljZS50cmVlRGF0YTtcbiAgdG90YWxSb3dzQ291bnQgPSAwO1xuICBzZWxlY3RlZFJvd3NDb3VudCA9IDA7XG4gIGFsbFBhZ2VSb3dzU2VsZWN0ZWQgPSBmYWxzZTtcbiAgd2lkdGhUb0hpZGVBY3Rpb25zTGFiZWxzOiBHcmlkUm93QWN0aW9uc1NjcmVlblRocmVzaG9sZCA9IDE0Mzk7XG5cbiAgZ2V0IGVuYWJsZVYyXzEoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZ3JpZENvbnRyb2xsZXIuZ3JpZE9wdGlvbnMuZW5hYmxlVjJfMTtcbiAgfVxuXG4gIGdldCBlbmFibGVTZWFyY2goKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZ3JpZENvbnRyb2xsZXIuZ3JpZE9wdGlvbnMuZW5hYmxlU2VhcmNoO1xuICB9XG5cbiAgZ2V0IGVuYWJsZUJhY2tncm91bmQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZ3JpZENvbnRyb2xsZXIuZ3JpZE9wdGlvbnMuZW5hYmxlQmFja2dyb3VuZDtcbiAgfVxuXG4gIGdldCBpc1Jvd0FjdGlvbnNWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5lbmFibGVWMl8xIHx8ICh0aGlzLmVuYWJsZVYyXzEgJiYgdGhpcy5pc1NlbGVjdGVkUm93KTtcbiAgfVxuXG4gIGdldCBoYXNSb3dBY3Rpb25zKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzaXplKHRoaXMucm93QWN0aW9ucy5tYWluTGlzdCkgPiAwIHx8IHNpemUodGhpcy5yb3dBY3Rpb25zLm1vcmVNZW51KSA+IDA7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZ3JpZENvbnRyb2xsZXI6IERhdG9HcmlkQ29udHJvbGxlckNvbXBvbmVudCxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IERhdG9UcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcG9wb3ZlcjogRGF0b1BvcG92ZXIsXG4gICAgcHJpdmF0ZSBncmlkUXVlcnk6IEdyaWRRdWVyeSxcbiAgICBwcml2YXRlIGdyaWRTZXJ2aWNlOiBHcmlkU2VydmljZVxuICApIHt9XG5cbiAgZ2V0IGhpZGRlbkNvbHVtbnMoKSB7XG4gICAgcmV0dXJuIGAoJHt0aGlzLmdyaWRRdWVyeS5nZXRBbGxEaXNwbGF5ZWRDb2x1bW5zKCkubGVuZ3RofS8ke3RoaXMuZ3JpZFF1ZXJ5LmdldEFsbENvbHVtbnMoKS5sZW5ndGh9KWA7XG4gIH1cblxuICBnZXQgaGFzQWN0aXZlTW9yZUFjdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMucm93QWN0aW9ucy5tb3JlTWVudS5zb21lKCh7IHZpc2libGUgfSkgPT4gdmlzaWJsZSk7XG4gIH1cblxuICBwcml2YXRlIGdldCBhcGkoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ3JpZENvbnRyb2xsZXIuZ3JpZFF1ZXJ5LmFwaTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGNvbnN0IGRhdGFDaGFuZ2VzID0gdGhpcy5ncmlkQ29udHJvbGxlci5ncmlkUXVlcnkud2FpdEZvckdyaWQoKCkgPT5cbiAgICAgIG1lcmdlKHRoaXMuZ3JpZFF1ZXJ5LmdyaWRSZWYuY2VsbFZhbHVlQ2hhbmdlZCwgdGhpcy5ncmlkUXVlcnkuZ3JpZFJlZi5yb3dEYXRhVXBkYXRlZCkucGlwZShcbiAgICAgICAgZGVib3VuY2VUaW1lKDEwMCksXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgKTtcbiAgICBjb25zdCBncmlkSW5pdCA9IHRoaXMuZ3JpZFF1ZXJ5LmdyaWRSZWFkeSQucGlwZSh0YWtlKDEpKTtcbiAgICBncmlkSW5pdC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5ncm91cHNBbGxvd2VkID0gIXRoaXMuaGlkZUdyb3VwaW5nICYmICF0aGlzLmdyaWRRdWVyeS5nZXRWYWx1ZSgpLnNlcnZlclNpZGVQYWdpbmF0aW9uLmVuYWJsZWQ7XG4gICAgfSk7XG4gICAgdGhpcy5pbml0R3JpZEFjdGlvbnMoKTtcbiAgICBjb25zdCBzZWxlY3RlZFJvd3NDaGFuZ2VkJCA9IHRoaXMuZ3JpZFF1ZXJ5LnNlbGVjdGVkUm93c0NoYW5nZSQ7XG4gICAgY29uc3QgaXNTZWxlY3RBbGxSb3dzQ2hhbmdlZCQgPSB0aGlzLmdyaWRRdWVyeS5zZWxlY3RJc1NlbGVjdEFsbFJvd3NFbmFibGVkKCk7XG4gICAgbWVyZ2UoZGF0YUNoYW5nZXMsIGdyaWRJbml0LCBzZWxlY3RlZFJvd3NDaGFuZ2VkJCwgaXNTZWxlY3RBbGxSb3dzQ2hhbmdlZCQpXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKCgpID0+ICEhdGhpcy5hcGkpLFxuICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMucmVzb2x2ZVZpc2libGVBY3Rpb25zKCk7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pO1xuICAgIHRoaXMucmVnaXN0ZXJHcm91cExpc3RlbmVycygpO1xuXG4gICAgdGhpcy5zdWJzY3JpYmVSb3dzU2VsZWN0aW9uRGF0YSgpO1xuICB9XG5cbiAgb25BY3Rpb25DbGljayhhY3Rpb246IEJhc2VUb29sYmFyQWN0aW9uKSB7XG4gICAgaWYgKGlzRnVuY3Rpb24oYWN0aW9uLm9uQ2xpY2spKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZFJvd3NDb3VudCA9IHRoaXMuZ3JpZENvbnRyb2xsZXIuZ3JpZFF1ZXJ5LmdldFNlbGVjdGVkUm93c0NvdW50KCk7XG4gICAgICB0aGlzLmdyaWRTZXJ2aWNlLl9sb2dFdmVudChDb3JlRXZlbnRUeXBlcy5HUklEX1RBQkxFX0FDVElPTiwge1xuICAgICAgICBhY3Rpb246IGFjdGlvbi5rZXksXG4gICAgICAgIG51bU9mSXRlbXM6IHNlbGVjdGVkUm93c0NvdW50LFxuICAgICAgICBmcm9tOiAnVG9vbGJhcidcbiAgICAgIH0pO1xuICAgICAgaWYgKHRoaXMuZ3JpZFF1ZXJ5LmlzU2VydmVyU2VsZWN0QWxsUm93c0VuYWJsZWQpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0QWxsRmlsdGVyID0gdGhpcy5ncmlkU2VydmljZS5nZXRGaWx0ZXJGb3JTZXJ2ZXJBY3Rpb25PblNlbGVjdEFsbCgpO1xuICAgICAgICBhY3Rpb24ub25DbGljayhudWxsLCB0cnVlLCBzZWxlY3RBbGxGaWx0ZXIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLmdyaWRDb250cm9sbGVyLmdyaWRRdWVyeS5nZXRTZWxlY3RlZFJvd05vZGVzKCk7XG4gICAgICAgIGFjdGlvbi5vbkNsaWNrKHNlbGVjdGVkKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKChhY3Rpb24gYXMgR3JpZEFjdGlvbikuYWN0aW9uVHlwZSA9PT0gR3JpZEFjdGlvblR5cGUuRVhQT1JUKSB7XG4gICAgICB0aGlzLmV4ZWN1dGVUYWJsZUFjdGlvbignRXhwb3J0Jyk7XG4gICAgfVxuICB9XG5cbiAgcmVzb2x2ZVZpc2libGVBY3Rpb25zKCkge1xuICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5ncmlkUXVlcnkuZ2V0U2VsZWN0ZWRSb3dOb2RlcygpO1xuICAgIHRoaXMuaXNTZWxlY3RlZFJvdyA9IHNlbGVjdGVkLmxlbmd0aCA+IDAgfHwgdGhpcy5ncmlkUXVlcnkuaXNTZXJ2ZXJTZWxlY3RBbGxSb3dzRW5hYmxlZDtcbiAgICBjb25zdCB2aXNpYmxlQWN0aW9ucyA9IGdldFZpc2libGVBY3Rpb25zKFxuICAgICAgdGhpcy5ncmlkQ29udHJvbGxlci5yb3dBY3Rpb25zLFxuICAgICAgdGhpcy5ncmlkUXVlcnkuZ2V0U2VsZWN0ZWRSb3dzQ291bnQoKSxcbiAgICAgIHNlbGVjdGVkLFxuICAgICAgdGhpcy5ncmlkUXVlcnkuaXNTZXJ2ZXJTZWxlY3RBbGxSb3dzRW5hYmxlZFxuICAgICkuZmlsdGVyKChhY3Rpb246IFJvd0FjdGlvbikgPT4gIXRoaXMuaXNSb3dBY3Rpb25IaWRkZW4oYWN0aW9uKSk7XG4gICAgdGhpcy5yb3dBY3Rpb25zID0ge1xuICAgICAgbWFpbkxpc3Q6IHZpc2libGVBY3Rpb25zLnNsaWNlKDAsIHRoaXMuX21heFJvd0FjdGlvbnMpLFxuICAgICAgbW9yZU1lbnU6IHZpc2libGVBY3Rpb25zLnNsaWNlKHRoaXMuX21heFJvd0FjdGlvbnMsIHZpc2libGVBY3Rpb25zLmxlbmd0aClcbiAgICB9O1xuICAgIHRoaXMuaW5pdFdpZHRoVG9IaWRlQWN0aW9uc0xhYmVscygpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0V2lkdGhUb0hpZGVBY3Rpb25zTGFiZWxzKCkge1xuICAgIGNvbnN0IHZpc2libGVBY3Rpb25zQ291bnQgPVxuICAgICAgdGhpcy5yb3dBY3Rpb25zLm1haW5MaXN0Lmxlbmd0aCArXG4gICAgICAodGhpcy5yb3dBY3Rpb25zLm1vcmVNZW51Lmxlbmd0aCA+IDAgPyAxIDogMCkgK1xuICAgICAgKHRoaXMuZ3JpZEFjdGlvbnMubW9yZU1lbnUubGVuZ3RoID4gMCA/IDEgOiAwKSArXG4gICAgICAodGhpcy5jcmVhdGVBY3Rpb24gPyAxIDogMCk7XG5cbiAgICBjb25zdCB3aW5kb3dXaWR0aFRocmVzaG9sZHM6IEdyaWRSb3dBY3Rpb25zU2NyZWVuVGhyZXNob2xkW10gPSBbMTIzOSwgMTMzOSwgMTQzOSwgMTUzOV07XG4gICAgdGhpcy53aWR0aFRvSGlkZUFjdGlvbnNMYWJlbHMgPVxuICAgICAgd2luZG93V2lkdGhUaHJlc2hvbGRzW01hdGgubWluKE1hdGgubWF4KHZpc2libGVBY3Rpb25zQ291bnQgLSA1LCAwKSwgd2luZG93V2lkdGhUaHJlc2hvbGRzLmxlbmd0aCAtIDEpXTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdEdyaWRBY3Rpb25zKCkge1xuICAgIGNvbnN0IGdyaWRBY3Rpb25zID0gdGhpcy5ncmlkQ29udHJvbGxlci5ncmlkQWN0aW9ucztcbiAgICB0aGlzLmluaXRDcmVhdGVBY3Rpb24oZ3JpZEFjdGlvbnMpO1xuICAgIHRoaXMuaW5pdEV4cG9ydEFjdGlvbihncmlkQWN0aW9ucyk7XG4gICAgbGV0IG1heFZpc2libGVBY3Rpb25zID0gdGhpcy5NQVhfVklTSUJMRV9HUklEX0FDVElPTlMgLSAodGhpcy5kaXNwbGF5RXhwb3J0ID8gMSA6IDApO1xuICAgIGlmIChzaXplKGdyaWRBY3Rpb25zKSA9PT0gbWF4VmlzaWJsZUFjdGlvbnMgKyAxKSB7XG4gICAgICBtYXhWaXNpYmxlQWN0aW9ucysrO1xuICAgIH1cbiAgICB0aGlzLmdyaWRBY3Rpb25zID0ge1xuICAgICAgbWFpbkxpc3Q6IGdyaWRBY3Rpb25zLnNsaWNlKDAsIG1heFZpc2libGVBY3Rpb25zKSxcbiAgICAgIG1vcmVNZW51OiBncmlkQWN0aW9ucy5zbGljZShtYXhWaXNpYmxlQWN0aW9ucywgZ3JpZEFjdGlvbnMubGVuZ3RoKVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGluaXRDcmVhdGVBY3Rpb24oZ3JpZEFjdGlvbnM6IEdyaWRBY3Rpb25bXSkge1xuICAgIGNvbnN0IGNyZWF0ZUFjdGlvbkluZGV4ID0gZ3JpZEFjdGlvbnMuZmluZEluZGV4KCh7IGFjdGlvblR5cGUgfSkgPT4gYWN0aW9uVHlwZSA9PT0gR3JpZEFjdGlvblR5cGUuQ1JFQVRFKTtcbiAgICB0aGlzLmNyZWF0ZUFjdGlvbiA9IGNyZWF0ZUFjdGlvbkluZGV4ID49IDAgPyBncmlkQWN0aW9ucy5zcGxpY2UoY3JlYXRlQWN0aW9uSW5kZXgsIDEpWzBdIDogbnVsbDtcbiAgICBpZiAodGhpcy5jcmVhdGVBY3Rpb24pIHtcbiAgICAgIHRoaXMuY3JlYXRlQWN0aW9uLmxhYmVsID0gdGhpcy5jcmVhdGVBY3Rpb24ubGFiZWwgfHwgJ2NvcmUuY3JlYXRlLW5ldyc7XG4gICAgICB0aGlzLmNyZWF0ZUFjdGlvbi5rZXkgPSB0aGlzLmNyZWF0ZUFjdGlvbi5rZXkgfHwgJ2NyZWF0ZS1uZXcnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdEV4cG9ydEFjdGlvbihncmlkQWN0aW9uczogR3JpZEFjdGlvbltdKSB7XG4gICAgY29uc3QgZXhwb3J0QWN0aW9uID0gZ3JpZEFjdGlvbnMuZmluZCgoeyBhY3Rpb25UeXBlIH0pID0+IGFjdGlvblR5cGUgPT09IEdyaWRBY3Rpb25UeXBlLkVYUE9SVCk7XG4gICAgaWYgKGV4cG9ydEFjdGlvbikge1xuICAgICAgY29uc3QgeyBvbkNsaWNrLCBpY29uLCBsYWJlbCwgdG9vbHRpcCwga2V5IH0gPSBleHBvcnRBY3Rpb247XG4gICAgICBleHBvcnRBY3Rpb24ub25DbGljayA9IG9uQ2xpY2sgfHwgKCgpID0+IHRoaXMuZXhlY3V0ZVRhYmxlQWN0aW9uKCdFeHBvcnQnKSk7XG4gICAgICBleHBvcnRBY3Rpb24uaWNvbiA9IGljb24gfHwgJ2V4cG9ydCc7XG4gICAgICBleHBvcnRBY3Rpb24ubGFiZWwgPSBsYWJlbCB8fCAnY29yZS5leHBvcnQtdGFibGUnO1xuICAgICAgZXhwb3J0QWN0aW9uLnRvb2x0aXAgPSB0b29sdGlwIHx8ICdjb3JlLmV4cG9ydC10YWJsZSc7XG4gICAgICBleHBvcnRBY3Rpb24ua2V5ID0ga2V5IHx8ICdleHBvcnQnO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogQHBhcmFtIGFjdGlvblxuICAgKi9cbiAgZXhlY3V0ZVRhYmxlQWN0aW9uKGFjdGlvbjogVGFibGVBY3Rpb24pIHtcbiAgICB0aGlzLmdyaWRTZXJ2aWNlLl9sb2dFdmVudChDb3JlRXZlbnRUeXBlcy5HUklEX0dFTkVSQUxfVEFCTEVfQUNUSU9OLCB7IGFjdGlvbiB9KTtcbiAgICBzd2l0Y2ggKGFjdGlvbikge1xuICAgICAgY2FzZSAnQXV0b2ZpdCB0byBDb250ZW50JzpcbiAgICAgICAgdGhpcy5ncmlkU2VydmljZS5maXRHcmlkKCdjb250ZW50Jyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQXV0b2ZpdCB0byBQYWdlJzpcbiAgICAgICAgdGhpcy5ncmlkU2VydmljZS5maXRHcmlkKCdjb250YWluZXInKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdDb2xsYXBzZSBFeHBhbmQnOlxuICAgICAgICB0aGlzLnRvZ2dsZUV4cGFuZGVkKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnRXhwb3J0JzpcbiAgICAgICAgdGhpcy5leHBvcnRUYWJsZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0dyb3VwIGZyb20gU2V0dGluZ3MnOlxuICAgICAgY2FzZSAnR3JvdXAgZnJvbSBUb29sYmFyJzpcbiAgICAgICAgdGhpcy5vcGVuR3JvdXBNZW51KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnUmVzZXQgRmlsdGVycyc6XG4gICAgICAgIHRoaXMucmVzZXRGaWx0ZXJzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnUmVzZXQgU2V0dGluZ3MnOlxuICAgICAgICB0aGlzLnJlc2V0U2V0dGluZ3MoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdTaG93IEhpZGUgQ29sdW1uJzpcbiAgICAgICAgdGhpcy5vcGVuQ29sdW1uTWVudSgpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICB0b2dnbGVFeHBhbmRlZCgpIHtcbiAgICB0aGlzLnJvd0dyb3Vwc0NvbGxhcHNlZCA/IHRoaXMuYXBpLmdyaWQuZXhwYW5kQWxsKCkgOiB0aGlzLmFwaS5ncmlkLmNvbGxhcHNlQWxsKCk7XG4gICAgdGhpcy5yb3dHcm91cHNDb2xsYXBzZWQgPSAhdGhpcy5yb3dHcm91cHNDb2xsYXBzZWQ7XG4gIH1cblxuICBnZXQgaGFzR3JvdXBzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmFwaS5jb2x1bW5zLmdldFJvd0dyb3VwQ29sdW1ucygpLmxlbmd0aCA+IDA7XG4gIH1cblxuICBleHBvcnRUYWJsZSgpIHtcbiAgICBjb25zdCB7IGdyaWROYW1lLCBleHBvcnRHcmlkIH0gPSB0aGlzLmdyaWRDb250cm9sbGVyLmdyaWRPcHRpb25zO1xuICAgIGlmIChpc0Z1bmN0aW9uKGV4cG9ydEdyaWQpKSB7XG4gICAgICBleHBvcnRHcmlkKHsgLi4udGhpcy5hcGksIC4uLnRoaXMuZ3JpZFF1ZXJ5LmdldFZhbHVlKCkuc2V0dGluZ3MgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHRvZGF5ID0gZm9ybWF0KG5ldyBEYXRlKCksIERFRkFVTFRfRk9STUFUKTtcbiAgICAgIHRoaXMuYXBpLmdyaWQuZXhwb3J0RGF0YUFzRXhjZWwoe1xuICAgICAgICBmaWxlTmFtZTogYCR7Z3JpZE5hbWV9IC0gJHt0b2RheX1gLFxuICAgICAgICBwcm9jZXNzQ2VsbENhbGxiYWNrOiAoeyBjb2x1bW4sIHZhbHVlIH06IFByb2Nlc3NDZWxsRm9yRXhwb3J0UGFyYW1zKSA9PiB7XG4gICAgICAgICAgY29uc3QgZm9ybWF0dGVyID0gY29sdW1uLmdldENvbERlZigpLnZhbHVlRm9ybWF0dGVyO1xuICAgICAgICAgIC8vIFRPRE86IGZvbGxvd3VwOiBodHRwczovL2FnLWdyaWQuemVuZGVzay5jb20vaGMvZW4tdXMvcmVxdWVzdHMvMTA5NjM/cGFnZT0xXG4gICAgICAgICAgcmV0dXJuIGZvcm1hdHRlciA/IGZvcm1hdHRlcih7IHZhbHVlIH0gYXMgYW55KSA6IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZXNldFNldHRpbmdzKCkge1xuICAgIHRoaXMuZ3JpZENvbnRyb2xsZXIuZ3JpZFNlcnZpY2UucmVzZXRUYWJsZVNldHRpbmdzKCk7XG4gIH1cblxuICBvcGVuQ29sdW1uTWVudSgpIHtcbiAgICB0aGlzLnBvcG92ZXIub3BlbihEYXRvR3JpZENvbHVtbkRpc3BsYXlNZW51Q29tcG9uZW50LCB0aGlzLnNldHRpbmdzVHJpZ2dlci5uYXRpdmVFbGVtZW50LCB7XG4gICAgICB3aWR0aDogMjIwLFxuICAgICAgY2xhc3NOYW1lOiAnZGF0by1ncmlkLWNvbHVtbnMtZGlzcGxheS1tZW51JyxcbiAgICAgIHBvcHBlcjogeyBwbGFjZW1lbnQ6ICdib3R0b20tZW5kJyB9LFxuICAgICAgZGF0YToge1xuICAgICAgICBhcGk6IHRoaXMuYXBpLFxuICAgICAgICBncmlkU2VydmljZTogdGhpcy5ncmlkU2VydmljZSxcbiAgICAgICAgZ3JpZFF1ZXJ5OiB0aGlzLmdyaWRRdWVyeVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcmVzZXRGaWx0ZXJzKCkge1xuICAgIHRoaXMuZ3JpZENvbnRyb2xsZXIuZ3JpZFNlcnZpY2UuY2xlYXJBbGxGaWx0ZXJzKCk7XG4gIH1cblxuICBvcGVuR3JvdXBNZW51KCkge1xuICAgIHRoaXMub3Blbk1lbnVzLmdyb3VwID0gdHJ1ZTtcbiAgICBjb25zdCB3YWl0Rm9yQW5pbWF0aW9uID0gdGhpcy5oYXNHcm91cHMgPyAwIDogMjAwO1xuICAgIC8qKiBXaGVuIGNoYW5naW5nIHRoZSB0YWJsZXMgZ3JvdXBpbmcgYWxsIHRoZSByb3dzIGFyZSBhdXRvbWF0aWNhbGx5IGV4cGFuZGVkLCB3ZSBuZWVkIHRvIHVwZGF0ZSB0aGUgaWNvbiBzdGF0ZSAqL1xuICAgIGNvbnN0IGV4cGFuZFN1YnNjcmlwdGlvbiA9IHRoaXMuZ3JpZFF1ZXJ5LmdyaWRSZWYuY29sdW1uUm93R3JvdXBDaGFuZ2VkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnJvd0dyb3Vwc0NvbGxhcHNlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMucG9wb3ZlclxuICAgICAgICAub3BlbihEYXRvR3JpZEdyb3Vwc01lbnVDb21wb25lbnQsIHRoaXMuZ3JvdXBUcmlnZ2VyLm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgICAgICBoZWlnaHQ6IDIwNixcbiAgICAgICAgICB3aWR0aDogMjUwLFxuICAgICAgICAgIGNsYXNzTmFtZTogJ2RhdG8tZ3JpZC1ncm91cHMtbWVudScsXG4gICAgICAgICAgcG9wcGVyOiB7IHBsYWNlbWVudDogJ2JvdHRvbS1lbmQnIH0sXG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgYXBpOiB0aGlzLmFwaSxcbiAgICAgICAgICAgIGdyaWRTZXJ2aWNlOiB0aGlzLmdyaWRTZXJ2aWNlXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgZXhwYW5kU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgdGhpcy5vcGVuTWVudXMuZ3JvdXAgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuICAgIH0sIHdhaXRGb3JBbmltYXRpb24pO1xuICB9XG5cbiAgaXNBY3Rpb25EaXNhYmxlZChyb3dBY3Rpb246IFJvd0FjdGlvbikge1xuICAgIHJldHVybiAhcm93QWN0aW9uLnZpc2libGU7XG4gIH1cblxuICBpc1Jvd0FjdGlvbkhpZGRlbihyb3dBY3Rpb246IFJvd0FjdGlvbikge1xuICAgIHJldHVybiAhcm93QWN0aW9uLnZpc2libGUgJiYgdGhpcy5lbmFibGVWMl8xO1xuICB9XG5cbiAgY2xlYXJTZWxlY3RlZFJvd3MoKSB7XG4gICAgdGhpcy5ncmlkU2VydmljZS5kZXNlbGVjdEFsbFJvd3MoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge31cblxuICBwcml2YXRlIGdldENvbGxhcHNlU3RhdGUoeyBub2RlLCBhcGkgfTogUm93R3JvdXBPcGVuZWRFdmVudCk6IGJvb2xlYW4ge1xuICAgIGxldCBjb2xsYXBzZWQgPSB0cnVlO1xuICAgIGlmIChub2RlLnJvd0dyb3VwSW5kZXggPT09IDApIHtcbiAgICAgIGFwaS5mb3JFYWNoTm9kZUFmdGVyRmlsdGVyQW5kU29ydCgoeyBleHBhbmRlZCwgcm93R3JvdXBJbmRleCB9OiBSb3dOb2RlKSA9PiB7XG4gICAgICAgIGlmIChyb3dHcm91cEluZGV4ID09PSAwICYmIGV4cGFuZGVkKSB7XG4gICAgICAgICAgY29sbGFwc2VkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gY29sbGFwc2VkO1xuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3Rlckdyb3VwTGlzdGVuZXJzKCkge1xuICAgIC8qKiBMaXN0ZW4gdG8gYWRkaW5nIG9yIHJlbW92aW5nIHJvdyBncm91cHMgZnJvbSB0aGUgY29sdW1ucyBhbmQgbm90IHRoZSBncm91cHMgbWVudSAqL1xuICAgIHRoaXMuZ3JpZFF1ZXJ5XG4gICAgICAud2FpdEZvckdyaWQoKCkgPT4gdGhpcy5ncmlkUXVlcnkuZ3JpZFJlZi5jb2x1bW5Sb3dHcm91cENoYW5nZWQpXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKCgpID0+ICF0aGlzLm9wZW5NZW51cy5ncm91cCksXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5yb3dHcm91cHNDb2xsYXBzZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSk7XG4gICAgLyoqIExpc3RlbiB0byByb3cgY29sbGFwc2Ugc3RhdGUgdG8gdXBkYXRlIHRoZSBpY29uICovXG4gICAgdGhpcy5ncmlkUXVlcnlcbiAgICAgIC53YWl0Rm9yR3JpZCgoKSA9PiB0aGlzLmdyaWRRdWVyeS5ncmlkUmVmLnJvd0dyb3VwT3BlbmVkKVxuICAgICAgLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpXG4gICAgICAuc3Vic2NyaWJlKChldmVudDogUm93R3JvdXBPcGVuZWRFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCBjb2xsYXBzZWQgPSB0aGlzLmdldENvbGxhcHNlU3RhdGUoZXZlbnQpO1xuICAgICAgICBpZiAoY29sbGFwc2VkICE9PSB0aGlzLnJvd0dyb3Vwc0NvbGxhcHNlZCkge1xuICAgICAgICAgIHRoaXMucm93R3JvdXBzQ29sbGFwc2VkID0gY29sbGFwc2VkO1xuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHN1YnNjcmliZVJvd3NTZWxlY3Rpb25EYXRhKCkge1xuICAgIHRoaXMuZ3JpZFF1ZXJ5LnJvd3NTZWxlY3Rpb25EYXRhJFxuICAgICAgLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpXG4gICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAoe1xuICAgICAgICAgIHRvdGFsUm93c0NvdW50LFxuICAgICAgICAgIHNlbGVjdGVkUm93c0NvdW50LFxuICAgICAgICAgIHNlbGVjdGVkUGFnZVJvd3NDb3VudCxcbiAgICAgICAgICBpc0FsbFBhZ2VSb3dzU2VsZWN0ZWRcbiAgICAgICAgfTogR3JpZFJvd3NTZWxlY3Rpb25EYXRhKSA9PiB7XG4gICAgICAgICAgdGhpcy50b3RhbFJvd3NDb3VudCA9IHRvdGFsUm93c0NvdW50O1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzQ291bnQgPSBzZWxlY3RlZFJvd3NDb3VudDtcbiAgICAgICAgICBjb25zdCB7IGVuYWJsZUFsbFBhZ2VzU2VsZWN0aW9uIH0gPSB0aGlzLmdyaWRRdWVyeS5nZXRHcmlkT3B0aW9ucygpO1xuICAgICAgICAgIHRoaXMuYWxsUGFnZVJvd3NTZWxlY3RlZCA9XG4gICAgICAgICAgICBlbmFibGVBbGxQYWdlc1NlbGVjdGlvbiAmJlxuICAgICAgICAgICAgaXNBbGxQYWdlUm93c1NlbGVjdGVkICYmXG4gICAgICAgICAgICBzZWxlY3RlZFJvd3NDb3VudCA9PT0gc2VsZWN0ZWRQYWdlUm93c0NvdW50ICYmXG4gICAgICAgICAgICBzZWxlY3RlZFJvd3NDb3VudCA8IHRvdGFsUm93c0NvdW50O1xuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIHNlbGVjdEFsbFBhZ2VzKCkge1xuICAgIGlmICh0aGlzLmdyaWRRdWVyeS5pc1NlcnZlclNpZGUpIHtcbiAgICAgIHRoaXMuZ3JpZFNlcnZpY2Uuc2V0U2VydmVyU2lkZVBhZ2luYXRpb24oeyBzZWxlY3RBbGxSb3dzRW5hYmxlZDogdHJ1ZSwgZXhjbHVkZWRGcm9tU2VsZWN0QWxsOiBbXSB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5ncmlkU2VydmljZS5hcGkuZ3JpZC5zZWxlY3RBbGxGaWx0ZXJlZCgpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
471
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC10b29sYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL2dyaWQtdjIvZ3JpZC10b29sYmFyL2dyaWQtdG9vbGJhci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOztBQUVILE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsS0FBSyxFQUNMLFNBQVMsRUFDVCxTQUFTLEVBQ1QsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR0wsY0FBYyxFQUdmLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDM0YsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXhELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUM3RixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNsQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDckUsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sa0VBQWtFLENBQUM7QUFD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QUF1QixDQUFDLE1BQU07O1NBQ2hELENBQUM7eUNBZ0V5QiwyQkFBMkI7WUFDckMsaUJBQWlCO1lBQ1gsb0JBQW9CO1lBQ3RCLFdBQVc7WUFDVCxTQUFTO1lBQ1AsV0FBVztPQXBFdkIsMEJBQTBCLENBdVl0QztJQUFELGlDQUFDO0NBQUEsQUF2WUQsSUF1WUM7U0F2WVksMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IERhdG9yYW1hLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIEFwYWNoZSBMaWNlbnNlIDIuMCBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRvcmFtYS9jbGllbnQtY29yZS9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBpc0Rldk1vZGUsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBCYXNlVG9vbGJhckFjdGlvbixcbiAgR3JpZEFjdGlvbixcbiAgR3JpZEFjdGlvblR5cGUsXG4gIEdyaWRSb3dBY3Rpb25zU2NyZWVuVGhyZXNob2xkLFxuICBSb3dBY3Rpb25cbn0gZnJvbSAnLi9ncmlkLXRvb2xiYXIudHlwZXMnO1xuaW1wb3J0IHsgRGF0b0dyaWRDb250cm9sbGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vZ3JpZC1jb250cm9sbGVyL2dyaWQtY29udHJvbGxlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgdW50aWxEZXN0cm95ZWQgfSBmcm9tICduZ3gtdGFrZS11bnRpbC1kZXN0cm95JztcbmltcG9ydCB7IFByb2Nlc3NDZWxsRm9yRXhwb3J0UGFyYW1zLCBSb3dHcm91cE9wZW5lZEV2ZW50LCBSb3dOb2RlIH0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBpc0Z1bmN0aW9uIH0gZnJvbSAnLi4vLi4vdXRpbHMvdmFsaWRhdG9ycyc7XG5pbXBvcnQgeyBtZXJnZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGF0b1BvcG92ZXIgfSBmcm9tICcuLi8uLi9wb3BvdmVyL3BvcG92ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBEYXRvR3JpZEdyb3Vwc01lbnVDb21wb25lbnQgfSBmcm9tICcuLi9ncmlkLWdyb3Vwcy1tZW51L2dyaWQtZ3JvdXBzLW1lbnUuY29tcG9uZW50JztcbmltcG9ydCB7IEdyaWRRdWVyeSB9IGZyb20gJy4uL2dyaWQtc3RvcmUvZ3JpZC5xdWVyeSc7XG5pbXBvcnQgeyBnZXRWaXNpYmxlQWN0aW9ucyB9IGZyb20gJy4uL2dyaWQtdjIudXRpbCc7XG5pbXBvcnQgeyBmb3JtYXQgfSBmcm9tICdkYXRlLWZucyc7XG5pbXBvcnQgeyBERUZBVUxUX0ZPUk1BVCB9IGZyb20gJy4uLy4uL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLnR5cGVzJztcbmltcG9ydCB7IERhdG9HcmlkQ29sdW1uRGlzcGxheU1lbnVDb21wb25lbnQgfSBmcm9tICcuLi9ncmlkLWNvbHVtbnMtZGlzcGxheS1tZW51L2dyaWQtY29sdW1ucy1kaXNwbGF5LW1lbnUuY29tcG9uZW50JztcbmltcG9ydCB7IEdyaWRTZXJ2aWNlIH0gZnJvbSAnLi4vZ3JpZC1zdG9yZS9ncmlkLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29yZUV2ZW50VHlwZXMgfSBmcm9tICcuLi8uLi9ldmVudC1sb2dnZXInO1xuaW1wb3J0IHsgRGF0b1RyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBzaXplIH0gZnJvbSAnLi4vLi4vdXRpbHMvY29sbGVjdGlvbic7XG5pbXBvcnQgeyBHcmlkUm93c1NlbGVjdGlvbkRhdGEgfSBmcm9tICcuLi9ncmlkL2dyaWQtdjIudHlwZXMnO1xuXG50eXBlIFRhYmxlQWN0aW9uID1cbiAgfCAnQXV0b2ZpdCB0byBDb250ZW50J1xuICB8ICdBdXRvZml0IHRvIFBhZ2UnXG4gIHwgJ1Nob3cgSGlkZSBDb2x1bW4nXG4gIHwgJ1Jlc2V0IFNldHRpbmdzJ1xuICB8ICdSZXNldCBGaWx0ZXJzJ1xuICB8ICdHcm91cCBmcm9tIFNldHRpbmdzJ1xuICB8ICdHcm91cCBmcm9tIFRvb2xiYXInXG4gIHwgJ0V4cG9ydCdcbiAgfCAnQ29sbGFwc2UgRXhwYW5kJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGF0by1ncmlkLXRvb2xiYXItdjInLFxuICB0ZW1wbGF0ZVVybDogJy4vZ3JpZC10b29sYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZ3JpZC10b29sYmFyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIERhdG9HcmlkVjJUb29sYmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IE1BWF9WSVNJQkxFX1JPV19BQ1RJT05TID0gNTtcbiAgcHJpdmF0ZSByZWFkb25seSBNQVhfVklTSUJMRV9HUklEX0FDVElPTlMgPSAyO1xuICBwcml2YXRlIF9tYXhSb3dBY3Rpb25zID0gdGhpcy5NQVhfVklTSUJMRV9ST1dfQUNUSU9OUztcblxuICBAVmlld0NoaWxkKCdncm91cFRyaWdnZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogZmFsc2UgfSkgZ3JvdXBUcmlnZ2VyOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdzZXR0aW5nc1RyaWdnZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogZmFsc2UgfSkgc2V0dGluZ3NUcmlnZ2VyOiBFbGVtZW50UmVmO1xuXG4gIEBJbnB1dCgpIGRpc3BsYXlFeHBvcnQgPSB0cnVlO1xuICBjcmVhdGVBY3Rpb246IEdyaWRBY3Rpb247XG4gIHJvd0FjdGlvbnM6IHsgbWFpbkxpc3Q6IFJvd0FjdGlvbltdOyBtb3JlTWVudTogUm93QWN0aW9uW10gfSA9IHsgbWFpbkxpc3Q6IFtdLCBtb3JlTWVudTogW10gfTtcbiAgZ3JpZEFjdGlvbnM6IHsgbWFpbkxpc3Q6IEdyaWRBY3Rpb25bXTsgbW9yZU1lbnU6IEdyaWRBY3Rpb25bXSB9ID0geyBtYWluTGlzdDogW10sIG1vcmVNZW51OiBbXSB9O1xuXG4gIEBJbnB1dCgpIHNldCBtYXhSb3dBY3Rpb25zKG1heFJvd0FjdGlvbnM6IG51bWJlcikge1xuICAgIGlmICh0aGlzLmVuYWJsZVYyXzEpIHtcbiAgICAgIHRoaXMuX21heFJvd0FjdGlvbnMgPSBNYXRoLm1pbihtYXhSb3dBY3Rpb25zLCB0aGlzLk1BWF9WSVNJQkxFX1JPV19BQ1RJT05TKTtcbiAgICAgIGlmIChtYXhSb3dBY3Rpb25zID4gdGhpcy5NQVhfVklTSUJMRV9ST1dfQUNUSU9OUyAmJiBpc0Rldk1vZGUoKSkge1xuICAgICAgICBjb25zb2xlLndhcm4oYERhdG9HcmlkIFYyLjEgLSBtYXhSb3dBY3Rpb25zIGNhbm5vdCBiZSBvdmVyICR7dGhpcy5NQVhfVklTSUJMRV9ST1dfQUNUSU9OU31gKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fbWF4Um93QWN0aW9ucyA9IG1heFJvd0FjdGlvbnM7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KCkgaGlkZUdyb3VwaW5nOiBib29sZWFuO1xuICBASW5wdXQoKSBzZWFyY2hQbGFjZWhvbGRlciA9IHRoaXMudHJhbnNsYXRlLnRyYW5zZm9ybSgnY29yZS5zZWFyY2gnKTtcbiAgQElucHV0KCkgcm93QWN0aW9uc1Nob3J0TGFiZWxUaHJlc2hvbGQ6IEdyaWRSb3dBY3Rpb25zU2NyZWVuVGhyZXNob2xkID0gMTUzOTtcbiAgQElucHV0KCkgZGlzcGxheUN1c3RvbUdyaWRBY3Rpb25zU2VwYXJhdG9yID0gdHJ1ZTtcblxuICBvcGVuTWVudXMgPSB7XG4gICAgZ3JvdXA6IGZhbHNlLFxuICAgIHNldHRpbmdzOiBmYWxzZVxuICB9O1xuICByb3dHcm91cHNDb2xsYXBzZWQgPSBmYWxzZTtcbiAgZ3JvdXBzQWxsb3dlZCA9ICF0aGlzLmhpZGVHcm91cGluZztcbiAgaXNTZWxlY3RlZFJvdyA9IGZhbHNlO1xuICBpc1RyZWVNb2RlOiBib29sZWFuID0gdGhpcy5ncmlkU2VydmljZS50cmVlRGF0YTtcbiAgdG90YWxSb3dzQ291bnQgPSAwO1xuICBzZWxlY3RlZFJvd3NDb3VudCA9IDA7XG4gIGFsbFBhZ2VSb3dzU2VsZWN0ZWQgPSBmYWxzZTtcbiAgd2lkdGhUb0hpZGVBY3Rpb25zTGFiZWxzOiBHcmlkUm93QWN0aW9uc1NjcmVlblRocmVzaG9sZCA9IDE0Mzk7XG5cbiAgZ2V0IGVuYWJsZVYyXzEoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZ3JpZENvbnRyb2xsZXIuZ3JpZE9wdGlvbnMuZW5hYmxlVjJfMTtcbiAgfVxuXG4gIGdldCBlbmFibGVTZWFyY2goKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZ3JpZENvbnRyb2xsZXIuZ3JpZE9wdGlvbnMuZW5hYmxlU2VhcmNoO1xuICB9XG5cbiAgZ2V0IGVuYWJsZUJhY2tncm91bmQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZ3JpZENvbnRyb2xsZXIuZ3JpZE9wdGlvbnMuZW5hYmxlQmFja2dyb3VuZDtcbiAgfVxuXG4gIGdldCBpc1Jvd0FjdGlvbnNWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5lbmFibGVWMl8xIHx8ICh0aGlzLmVuYWJsZVYyXzEgJiYgdGhpcy5pc1NlbGVjdGVkUm93KTtcbiAgfVxuXG4gIGdldCBoYXNSb3dBY3Rpb25zKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzaXplKHRoaXMucm93QWN0aW9ucy5tYWluTGlzdCkgPiAwIHx8IHNpemUodGhpcy5yb3dBY3Rpb25zLm1vcmVNZW51KSA+IDA7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZ3JpZENvbnRyb2xsZXI6IERhdG9HcmlkQ29udHJvbGxlckNvbXBvbmVudCxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IERhdG9UcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcG9wb3ZlcjogRGF0b1BvcG92ZXIsXG4gICAgcHJpdmF0ZSBncmlkUXVlcnk6IEdyaWRRdWVyeSxcbiAgICBwcml2YXRlIGdyaWRTZXJ2aWNlOiBHcmlkU2VydmljZVxuICApIHt9XG5cbiAgZ2V0IGhpZGRlbkNvbHVtbnMoKSB7XG4gICAgcmV0dXJuIGAoJHt0aGlzLmdyaWRRdWVyeS5nZXRBbGxEaXNwbGF5ZWRDb2x1bW5zKCkubGVuZ3RofS8ke3RoaXMuZ3JpZFF1ZXJ5LmdldEFsbENvbHVtbnMoKS5sZW5ndGh9KWA7XG4gIH1cblxuICBnZXQgaGFzQWN0aXZlTW9yZUFjdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMucm93QWN0aW9ucy5tb3JlTWVudS5zb21lKCh7IHZpc2libGUgfSkgPT4gdmlzaWJsZSk7XG4gIH1cblxuICBwcml2YXRlIGdldCBhcGkoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ3JpZENvbnRyb2xsZXIuZ3JpZFF1ZXJ5LmFwaTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGNvbnN0IGRhdGFDaGFuZ2VzID0gdGhpcy5ncmlkQ29udHJvbGxlci5ncmlkUXVlcnkud2FpdEZvckdyaWQoKCkgPT5cbiAgICAgIG1lcmdlKHRoaXMuZ3JpZFF1ZXJ5LmdyaWRSZWYuY2VsbFZhbHVlQ2hhbmdlZCwgdGhpcy5ncmlkUXVlcnkuZ3JpZFJlZi5yb3dEYXRhVXBkYXRlZCkucGlwZShcbiAgICAgICAgZGVib3VuY2VUaW1lKDEwMCksXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgKTtcbiAgICBjb25zdCBncmlkSW5pdCA9IHRoaXMuZ3JpZFF1ZXJ5LmdyaWRSZWFkeSQucGlwZSh0YWtlKDEpKTtcbiAgICBncmlkSW5pdC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5ncm91cHNBbGxvd2VkID0gIXRoaXMuaGlkZUdyb3VwaW5nICYmICF0aGlzLmdyaWRRdWVyeS5nZXRWYWx1ZSgpLnNlcnZlclNpZGVQYWdpbmF0aW9uLmVuYWJsZWQ7XG4gICAgfSk7XG4gICAgdGhpcy5pbml0R3JpZEFjdGlvbnMoKTtcbiAgICBjb25zdCBzZWxlY3RlZFJvd3NDaGFuZ2VkJCA9IHRoaXMuZ3JpZFF1ZXJ5LnNlbGVjdGVkUm93c0NoYW5nZSQ7XG4gICAgY29uc3QgaXNTZWxlY3RBbGxSb3dzQ2hhbmdlZCQgPSB0aGlzLmdyaWRRdWVyeS5zZWxlY3RJc1NlbGVjdEFsbFJvd3NFbmFibGVkKCk7XG4gICAgbWVyZ2UoZGF0YUNoYW5nZXMsIGdyaWRJbml0LCBzZWxlY3RlZFJvd3NDaGFuZ2VkJCwgaXNTZWxlY3RBbGxSb3dzQ2hhbmdlZCQpXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKCgpID0+ICEhdGhpcy5hcGkpLFxuICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMucmVzb2x2ZVZpc2libGVBY3Rpb25zKCk7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pO1xuICAgIHRoaXMucmVnaXN0ZXJHcm91cExpc3RlbmVycygpO1xuXG4gICAgdGhpcy5zdWJzY3JpYmVSb3dzU2VsZWN0aW9uRGF0YSgpO1xuICB9XG5cbiAgb25BY3Rpb25DbGljayhhY3Rpb246IEJhc2VUb29sYmFyQWN0aW9uKSB7XG4gICAgaWYgKGlzRnVuY3Rpb24oYWN0aW9uLm9uQ2xpY2spKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZFJvd3NDb3VudCA9IHRoaXMuZ3JpZENvbnRyb2xsZXIuZ3JpZFF1ZXJ5LmdldFNlbGVjdGVkUm93c0NvdW50KCk7XG4gICAgICB0aGlzLmdyaWRTZXJ2aWNlLl9sb2dFdmVudChDb3JlRXZlbnRUeXBlcy5HUklEX1RBQkxFX0FDVElPTiwge1xuICAgICAgICBhY3Rpb246IGFjdGlvbi5rZXksXG4gICAgICAgIG51bU9mSXRlbXM6IHNlbGVjdGVkUm93c0NvdW50LFxuICAgICAgICBmcm9tOiAnVG9vbGJhcidcbiAgICAgIH0pO1xuICAgICAgaWYgKHRoaXMuZ3JpZFF1ZXJ5LmlzU2VydmVyU2VsZWN0QWxsUm93c0VuYWJsZWQpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0QWxsRmlsdGVyID0gdGhpcy5ncmlkU2VydmljZS5nZXRGaWx0ZXJGb3JTZXJ2ZXJBY3Rpb25PblNlbGVjdEFsbCgpO1xuICAgICAgICBhY3Rpb24ub25DbGljayhudWxsLCB0cnVlLCBzZWxlY3RBbGxGaWx0ZXIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLmdyaWRDb250cm9sbGVyLmdyaWRRdWVyeS5nZXRTZWxlY3RlZFJvd05vZGVzKCk7XG4gICAgICAgIGFjdGlvbi5vbkNsaWNrKHNlbGVjdGVkKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKChhY3Rpb24gYXMgR3JpZEFjdGlvbikuYWN0aW9uVHlwZSA9PT0gR3JpZEFjdGlvblR5cGUuRVhQT1JUKSB7XG4gICAgICB0aGlzLmV4ZWN1dGVUYWJsZUFjdGlvbignRXhwb3J0Jyk7XG4gICAgfVxuICB9XG5cbiAgcmVzb2x2ZVZpc2libGVBY3Rpb25zKCkge1xuICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5ncmlkUXVlcnkuZ2V0U2VsZWN0ZWRSb3dOb2RlcygpO1xuICAgIHRoaXMuaXNTZWxlY3RlZFJvdyA9IHNlbGVjdGVkLmxlbmd0aCA+IDAgfHwgdGhpcy5ncmlkUXVlcnkuaXNTZXJ2ZXJTZWxlY3RBbGxSb3dzRW5hYmxlZDtcbiAgICBjb25zdCB2aXNpYmxlQWN0aW9ucyA9IGdldFZpc2libGVBY3Rpb25zKFxuICAgICAgdGhpcy5ncmlkQ29udHJvbGxlci5yb3dBY3Rpb25zLFxuICAgICAgdGhpcy5ncmlkUXVlcnkuZ2V0U2VsZWN0ZWRSb3dzQ291bnQoKSxcbiAgICAgIHNlbGVjdGVkLFxuICAgICAgdGhpcy5ncmlkUXVlcnkuaXNTZXJ2ZXJTZWxlY3RBbGxSb3dzRW5hYmxlZFxuICAgICkuZmlsdGVyKChhY3Rpb246IFJvd0FjdGlvbikgPT4gIXRoaXMuaXNSb3dBY3Rpb25IaWRkZW4oYWN0aW9uKSk7XG4gICAgdGhpcy5yb3dBY3Rpb25zID0ge1xuICAgICAgbWFpbkxpc3Q6IHZpc2libGVBY3Rpb25zLnNsaWNlKDAsIHRoaXMuX21heFJvd0FjdGlvbnMpLFxuICAgICAgbW9yZU1lbnU6IHZpc2libGVBY3Rpb25zLnNsaWNlKHRoaXMuX21heFJvd0FjdGlvbnMsIHZpc2libGVBY3Rpb25zLmxlbmd0aClcbiAgICB9O1xuICAgIHRoaXMuaW5pdFdpZHRoVG9IaWRlQWN0aW9uc0xhYmVscygpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0V2lkdGhUb0hpZGVBY3Rpb25zTGFiZWxzKCkge1xuICAgIGNvbnN0IHZpc2libGVBY3Rpb25zQ291bnQgPVxuICAgICAgdGhpcy5yb3dBY3Rpb25zLm1haW5MaXN0Lmxlbmd0aCArXG4gICAgICAodGhpcy5yb3dBY3Rpb25zLm1vcmVNZW51Lmxlbmd0aCA+IDAgPyAxIDogMCkgK1xuICAgICAgKHRoaXMuZ3JpZEFjdGlvbnMubW9yZU1lbnUubGVuZ3RoID4gMCA/IDEgOiAwKSArXG4gICAgICAodGhpcy5jcmVhdGVBY3Rpb24gPyAxIDogMCk7XG5cbiAgICBjb25zdCB3aW5kb3dXaWR0aFRocmVzaG9sZHM6IEdyaWRSb3dBY3Rpb25zU2NyZWVuVGhyZXNob2xkW10gPSBbMTIzOSwgMTMzOSwgMTQzOSwgMTUzOV07XG4gICAgdGhpcy53aWR0aFRvSGlkZUFjdGlvbnNMYWJlbHMgPVxuICAgICAgd2luZG93V2lkdGhUaHJlc2hvbGRzW01hdGgubWluKE1hdGgubWF4KHZpc2libGVBY3Rpb25zQ291bnQgLSA1LCAwKSwgd2luZG93V2lkdGhUaHJlc2hvbGRzLmxlbmd0aCAtIDEpXTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdEdyaWRBY3Rpb25zKCkge1xuICAgIGNvbnN0IGdyaWRBY3Rpb25zID0gdGhpcy5ncmlkQ29udHJvbGxlci5ncmlkQWN0aW9ucztcbiAgICB0aGlzLmluaXRDcmVhdGVBY3Rpb24oZ3JpZEFjdGlvbnMpO1xuICAgIHRoaXMuaW5pdEV4cG9ydEFjdGlvbihncmlkQWN0aW9ucyk7XG4gICAgbGV0IG1heFZpc2libGVBY3Rpb25zID0gdGhpcy5NQVhfVklTSUJMRV9HUklEX0FDVElPTlMgLSAodGhpcy5kaXNwbGF5RXhwb3J0ID8gMSA6IDApO1xuICAgIGlmIChzaXplKGdyaWRBY3Rpb25zKSA9PT0gbWF4VmlzaWJsZUFjdGlvbnMgKyAxKSB7XG4gICAgICBtYXhWaXNpYmxlQWN0aW9ucysrO1xuICAgIH1cbiAgICB0aGlzLmdyaWRBY3Rpb25zID0ge1xuICAgICAgbWFpbkxpc3Q6IGdyaWRBY3Rpb25zLnNsaWNlKDAsIG1heFZpc2libGVBY3Rpb25zKSxcbiAgICAgIG1vcmVNZW51OiBncmlkQWN0aW9ucy5zbGljZShtYXhWaXNpYmxlQWN0aW9ucywgZ3JpZEFjdGlvbnMubGVuZ3RoKVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGluaXRDcmVhdGVBY3Rpb24oZ3JpZEFjdGlvbnM6IEdyaWRBY3Rpb25bXSkge1xuICAgIGNvbnN0IGNyZWF0ZUFjdGlvbkluZGV4ID0gZ3JpZEFjdGlvbnMuZmluZEluZGV4KCh7IGFjdGlvblR5cGUgfSkgPT4gYWN0aW9uVHlwZSA9PT0gR3JpZEFjdGlvblR5cGUuQ1JFQVRFKTtcbiAgICB0aGlzLmNyZWF0ZUFjdGlvbiA9IGNyZWF0ZUFjdGlvbkluZGV4ID49IDAgPyBncmlkQWN0aW9ucy5zcGxpY2UoY3JlYXRlQWN0aW9uSW5kZXgsIDEpWzBdIDogbnVsbDtcbiAgICBpZiAodGhpcy5jcmVhdGVBY3Rpb24pIHtcbiAgICAgIHRoaXMuY3JlYXRlQWN0aW9uLmxhYmVsID0gdGhpcy5jcmVhdGVBY3Rpb24ubGFiZWwgfHwgJ2NvcmUuY3JlYXRlLW5ldyc7XG4gICAgICB0aGlzLmNyZWF0ZUFjdGlvbi5rZXkgPSB0aGlzLmNyZWF0ZUFjdGlvbi5rZXkgfHwgJ2NyZWF0ZS1uZXcnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdEV4cG9ydEFjdGlvbihncmlkQWN0aW9uczogR3JpZEFjdGlvbltdKSB7XG4gICAgY29uc3QgZXhwb3J0QWN0aW9uID0gZ3JpZEFjdGlvbnMuZmluZCgoeyBhY3Rpb25UeXBlIH0pID0+IGFjdGlvblR5cGUgPT09IEdyaWRBY3Rpb25UeXBlLkVYUE9SVCk7XG4gICAgaWYgKGV4cG9ydEFjdGlvbikge1xuICAgICAgY29uc3QgeyBvbkNsaWNrLCBpY29uLCBsYWJlbCwgdG9vbHRpcCwga2V5IH0gPSBleHBvcnRBY3Rpb247XG4gICAgICBleHBvcnRBY3Rpb24ub25DbGljayA9IG9uQ2xpY2sgfHwgKCgpID0+IHRoaXMuZXhlY3V0ZVRhYmxlQWN0aW9uKCdFeHBvcnQnKSk7XG4gICAgICBleHBvcnRBY3Rpb24uaWNvbiA9IGljb24gfHwgJ2V4cG9ydCc7XG4gICAgICBleHBvcnRBY3Rpb24ubGFiZWwgPSBsYWJlbCB8fCAnY29yZS5leHBvcnQtdGFibGUnO1xuICAgICAgZXhwb3J0QWN0aW9uLnRvb2x0aXAgPSB0b29sdGlwIHx8ICdjb3JlLmV4cG9ydC10YWJsZSc7XG4gICAgICBleHBvcnRBY3Rpb24ua2V5ID0ga2V5IHx8ICdleHBvcnQnO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogQHBhcmFtIGFjdGlvblxuICAgKi9cbiAgZXhlY3V0ZVRhYmxlQWN0aW9uKGFjdGlvbjogVGFibGVBY3Rpb24pIHtcbiAgICB0aGlzLmdyaWRTZXJ2aWNlLl9sb2dFdmVudChDb3JlRXZlbnRUeXBlcy5HUklEX0dFTkVSQUxfVEFCTEVfQUNUSU9OLCB7IGFjdGlvbiB9KTtcbiAgICBzd2l0Y2ggKGFjdGlvbikge1xuICAgICAgY2FzZSAnQXV0b2ZpdCB0byBDb250ZW50JzpcbiAgICAgICAgdGhpcy5ncmlkU2VydmljZS5maXRHcmlkKCdjb250ZW50Jyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQXV0b2ZpdCB0byBQYWdlJzpcbiAgICAgICAgdGhpcy5ncmlkU2VydmljZS5maXRHcmlkKCdjb250YWluZXInKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdDb2xsYXBzZSBFeHBhbmQnOlxuICAgICAgICB0aGlzLnRvZ2dsZUV4cGFuZGVkKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnRXhwb3J0JzpcbiAgICAgICAgdGhpcy5leHBvcnRUYWJsZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0dyb3VwIGZyb20gU2V0dGluZ3MnOlxuICAgICAgY2FzZSAnR3JvdXAgZnJvbSBUb29sYmFyJzpcbiAgICAgICAgdGhpcy5vcGVuR3JvdXBNZW51KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnUmVzZXQgRmlsdGVycyc6XG4gICAgICAgIHRoaXMucmVzZXRGaWx0ZXJzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnUmVzZXQgU2V0dGluZ3MnOlxuICAgICAgICB0aGlzLnJlc2V0U2V0dGluZ3MoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdTaG93IEhpZGUgQ29sdW1uJzpcbiAgICAgICAgdGhpcy5vcGVuQ29sdW1uTWVudSgpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICB0b2dnbGVFeHBhbmRlZCgpIHtcbiAgICB0aGlzLnJvd0dyb3Vwc0NvbGxhcHNlZCA/IHRoaXMuYXBpLmdyaWQuZXhwYW5kQWxsKCkgOiB0aGlzLmFwaS5ncmlkLmNvbGxhcHNlQWxsKCk7XG4gICAgdGhpcy5yb3dHcm91cHNDb2xsYXBzZWQgPSAhdGhpcy5yb3dHcm91cHNDb2xsYXBzZWQ7XG4gIH1cblxuICBnZXQgaGFzR3JvdXBzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmFwaS5jb2x1bW5zLmdldFJvd0dyb3VwQ29sdW1ucygpLmxlbmd0aCA+IDA7XG4gIH1cblxuICBleHBvcnRUYWJsZSgpIHtcbiAgICBjb25zdCB7IGdyaWROYW1lLCBleHBvcnRHcmlkIH0gPSB0aGlzLmdyaWRDb250cm9sbGVyLmdyaWRPcHRpb25zO1xuICAgIGlmIChpc0Z1bmN0aW9uKGV4cG9ydEdyaWQpKSB7XG4gICAgICBleHBvcnRHcmlkKHsgLi4udGhpcy5hcGksIC4uLnRoaXMuZ3JpZFF1ZXJ5LmdldFZhbHVlKCkuc2V0dGluZ3MgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHRvZGF5ID0gZm9ybWF0KG5ldyBEYXRlKCksIERFRkFVTFRfRk9STUFUKTtcbiAgICAgIHRoaXMuYXBpLmdyaWQuZXhwb3J0RGF0YUFzRXhjZWwoe1xuICAgICAgICBmaWxlTmFtZTogYCR7Z3JpZE5hbWV9IC0gJHt0b2RheX1gLFxuICAgICAgICBwcm9jZXNzQ2VsbENhbGxiYWNrOiAoeyBjb2x1bW4sIHZhbHVlIH06IFByb2Nlc3NDZWxsRm9yRXhwb3J0UGFyYW1zKSA9PiB7XG4gICAgICAgICAgY29uc3QgZm9ybWF0dGVyID0gY29sdW1uLmdldENvbERlZigpLnZhbHVlRm9ybWF0dGVyO1xuICAgICAgICAgIC8vIFRPRE86IGZvbGxvd3VwOiBodHRwczovL2FnLWdyaWQuemVuZGVzay5jb20vaGMvZW4tdXMvcmVxdWVzdHMvMTA5NjM/cGFnZT0xXG4gICAgICAgICAgcmV0dXJuIGZvcm1hdHRlciA/IGZvcm1hdHRlcih7IHZhbHVlIH0gYXMgYW55KSA6IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZXNldFNldHRpbmdzKCkge1xuICAgIHRoaXMuZ3JpZENvbnRyb2xsZXIuZ3JpZFNlcnZpY2UucmVzZXRUYWJsZVNldHRpbmdzKCk7XG4gIH1cblxuICBvcGVuQ29sdW1uTWVudSgpIHtcbiAgICB0aGlzLnBvcG92ZXIub3BlbihEYXRvR3JpZENvbHVtbkRpc3BsYXlNZW51Q29tcG9uZW50LCB0aGlzLnNldHRpbmdzVHJpZ2dlci5uYXRpdmVFbGVtZW50LCB7XG4gICAgICB3aWR0aDogMjIwLFxuICAgICAgY2xhc3NOYW1lOiAnZGF0by1ncmlkLWNvbHVtbnMtZGlzcGxheS1tZW51JyxcbiAgICAgIHBvcHBlcjogeyBwbGFjZW1lbnQ6ICdib3R0b20tZW5kJyB9LFxuICAgICAgZGF0YToge1xuICAgICAgICBhcGk6IHRoaXMuYXBpLFxuICAgICAgICBncmlkU2VydmljZTogdGhpcy5ncmlkU2VydmljZSxcbiAgICAgICAgZ3JpZFF1ZXJ5OiB0aGlzLmdyaWRRdWVyeVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcmVzZXRGaWx0ZXJzKCkge1xuICAgIHRoaXMuZ3JpZENvbnRyb2xsZXIuZ3JpZFNlcnZpY2UuY2xlYXJBbGxGaWx0ZXJzKCk7XG4gIH1cblxuICBvcGVuR3JvdXBNZW51KCkge1xuICAgIHRoaXMub3Blbk1lbnVzLmdyb3VwID0gdHJ1ZTtcbiAgICBjb25zdCB3YWl0Rm9yQW5pbWF0aW9uID0gdGhpcy5oYXNHcm91cHMgPyAwIDogMjAwO1xuICAgIC8qKiBXaGVuIGNoYW5naW5nIHRoZSB0YWJsZXMgZ3JvdXBpbmcgYWxsIHRoZSByb3dzIGFyZSBhdXRvbWF0aWNhbGx5IGV4cGFuZGVkLCB3ZSBuZWVkIHRvIHVwZGF0ZSB0aGUgaWNvbiBzdGF0ZSAqL1xuICAgIGNvbnN0IGV4cGFuZFN1YnNjcmlwdGlvbiA9IHRoaXMuZ3JpZFF1ZXJ5LmdyaWRSZWYuY29sdW1uUm93R3JvdXBDaGFuZ2VkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnJvd0dyb3Vwc0NvbGxhcHNlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMucG9wb3ZlclxuICAgICAgICAub3BlbihEYXRvR3JpZEdyb3Vwc01lbnVDb21wb25lbnQsIHRoaXMuZ3JvdXBUcmlnZ2VyLm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgICAgICBoZWlnaHQ6IDIwNixcbiAgICAgICAgICB3aWR0aDogMjUwLFxuICAgICAgICAgIGNsYXNzTmFtZTogJ2RhdG8tZ3JpZC1ncm91cHMtbWVudScsXG4gICAgICAgICAgcG9wcGVyOiB7IHBsYWNlbWVudDogJ2JvdHRvbS1lbmQnIH0sXG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgYXBpOiB0aGlzLmFwaSxcbiAgICAgICAgICAgIGdyaWRTZXJ2aWNlOiB0aGlzLmdyaWRTZXJ2aWNlXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgZXhwYW5kU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgdGhpcy5vcGVuTWVudXMuZ3JvdXAgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuICAgIH0sIHdhaXRGb3JBbmltYXRpb24pO1xuICB9XG5cbiAgaXNBY3Rpb25EaXNhYmxlZChyb3dBY3Rpb246IFJvd0FjdGlvbikge1xuICAgIHJldHVybiAhcm93QWN0aW9uLnZpc2libGU7XG4gIH1cblxuICBpc1Jvd0FjdGlvbkhpZGRlbihyb3dBY3Rpb246IFJvd0FjdGlvbikge1xuICAgIHJldHVybiAhcm93QWN0aW9uLnZpc2libGUgJiYgdGhpcy5lbmFibGVWMl8xO1xuICB9XG5cbiAgY2xlYXJTZWxlY3RlZFJvd3MoKSB7XG4gICAgdGhpcy5ncmlkU2VydmljZS5kZXNlbGVjdEFsbFJvd3MoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge31cblxuICBwcml2YXRlIGdldENvbGxhcHNlU3RhdGUoeyBub2RlLCBhcGkgfTogUm93R3JvdXBPcGVuZWRFdmVudCk6IGJvb2xlYW4ge1xuICAgIGxldCBjb2xsYXBzZWQgPSB0cnVlO1xuICAgIGlmIChub2RlLnJvd0dyb3VwSW5kZXggPT09IDApIHtcbiAgICAgIGFwaS5mb3JFYWNoTm9kZUFmdGVyRmlsdGVyQW5kU29ydCgoeyBleHBhbmRlZCwgcm93R3JvdXBJbmRleCB9OiBSb3dOb2RlKSA9PiB7XG4gICAgICAgIGlmIChyb3dHcm91cEluZGV4ID09PSAwICYmIGV4cGFuZGVkKSB7XG4gICAgICAgICAgY29sbGFwc2VkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gY29sbGFwc2VkO1xuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3Rlckdyb3VwTGlzdGVuZXJzKCkge1xuICAgIC8qKiBMaXN0ZW4gdG8gYWRkaW5nIG9yIHJlbW92aW5nIHJvdyBncm91cHMgZnJvbSB0aGUgY29sdW1ucyBhbmQgbm90IHRoZSBncm91cHMgbWVudSAqL1xuICAgIHRoaXMuZ3JpZFF1ZXJ5XG4gICAgICAud2FpdEZvckdyaWQoKCkgPT4gdGhpcy5ncmlkUXVlcnkuZ3JpZFJlZi5jb2x1bW5Sb3dHcm91cENoYW5nZWQpXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKCgpID0+ICF0aGlzLm9wZW5NZW51cy5ncm91cCksXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5yb3dHcm91cHNDb2xsYXBzZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSk7XG4gICAgLyoqIExpc3RlbiB0byByb3cgY29sbGFwc2Ugc3RhdGUgdG8gdXBkYXRlIHRoZSBpY29uICovXG4gICAgdGhpcy5ncmlkUXVlcnlcbiAgICAgIC53YWl0Rm9yR3JpZCgoKSA9PiB0aGlzLmdyaWRRdWVyeS5ncmlkUmVmLnJvd0dyb3VwT3BlbmVkKVxuICAgICAgLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpXG4gICAgICAuc3Vic2NyaWJlKChldmVudDogUm93R3JvdXBPcGVuZWRFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCBjb2xsYXBzZWQgPSB0aGlzLmdldENvbGxhcHNlU3RhdGUoZXZlbnQpO1xuICAgICAgICBpZiAoY29sbGFwc2VkICE9PSB0aGlzLnJvd0dyb3Vwc0NvbGxhcHNlZCkge1xuICAgICAgICAgIHRoaXMucm93R3JvdXBzQ29sbGFwc2VkID0gY29sbGFwc2VkO1xuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHN1YnNjcmliZVJvd3NTZWxlY3Rpb25EYXRhKCkge1xuICAgIHRoaXMuZ3JpZFF1ZXJ5LnJvd3NTZWxlY3Rpb25EYXRhJFxuICAgICAgLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpXG4gICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAoe1xuICAgICAgICAgIHRvdGFsUm93c0NvdW50LFxuICAgICAgICAgIHNlbGVjdGVkUm93c0NvdW50LFxuICAgICAgICAgIHNlbGVjdGVkUGFnZVJvd3NDb3VudCxcbiAgICAgICAgICBpc0FsbFBhZ2VSb3dzU2VsZWN0ZWRcbiAgICAgICAgfTogR3JpZFJvd3NTZWxlY3Rpb25EYXRhKSA9PiB7XG4gICAgICAgICAgdGhpcy50b3RhbFJvd3NDb3VudCA9IHRvdGFsUm93c0NvdW50O1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzQ291bnQgPSBzZWxlY3RlZFJvd3NDb3VudDtcbiAgICAgICAgICBjb25zdCB7IGVuYWJsZUFsbFBhZ2VzU2VsZWN0aW9uIH0gPSB0aGlzLmdyaWRRdWVyeS5nZXRHcmlkT3B0aW9ucygpO1xuICAgICAgICAgIHRoaXMuYWxsUGFnZVJvd3NTZWxlY3RlZCA9XG4gICAgICAgICAgICBlbmFibGVBbGxQYWdlc1NlbGVjdGlvbiAmJlxuICAgICAgICAgICAgaXNBbGxQYWdlUm93c1NlbGVjdGVkICYmXG4gICAgICAgICAgICBzZWxlY3RlZFJvd3NDb3VudCA9PT0gc2VsZWN0ZWRQYWdlUm93c0NvdW50ICYmXG4gICAgICAgICAgICBzZWxlY3RlZFJvd3NDb3VudCA8IHRvdGFsUm93c0NvdW50O1xuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIHNlbGVjdEFsbFBhZ2VzKCkge1xuICAgIGlmICh0aGlzLmdyaWRRdWVyeS5pc1NlcnZlclNpZGUpIHtcbiAgICAgIHRoaXMuZ3JpZFNlcnZpY2Uuc2V0U2VydmVyU2lkZVBhZ2luYXRpb24oeyBzZWxlY3RBbGxSb3dzRW5hYmxlZDogdHJ1ZSwgZXhjbHVkZWRGcm9tU2VsZWN0QWxsOiBbXSB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5ncmlkU2VydmljZS5hcGkuZ3JpZC5zZWxlY3RBbGxGaWx0ZXJlZCgpO1xuICAgIH1cbiAgfVxufVxuIl19
|
package/esm5/lib/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
window.coreVersion = '22.0.
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
window.coreVersion = '22.0.3';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL3ZlcnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUMsTUFBYyxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIod2luZG93IGFzIGFueSkuY29yZVZlcnNpb24gPSAnMjIuMC4zJzsiXX0=
|