@alauda/ui 7.4.2-beta.0 → 7.4.2-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/date-picker/calendar/header/component.d.ts +4 -0
- package/esm2022/accordion/accordion-item/accordion-item.component.mjs +9 -11
- package/esm2022/accordion/accordion.component.mjs +4 -6
- package/esm2022/accordion/accordion.module.mjs +6 -6
- package/esm2022/anchor/anchor.component.mjs +14 -18
- package/esm2022/anchor/anchor.directive.mjs +13 -29
- package/esm2022/anchor/anchor.module.mjs +5 -5
- package/esm2022/autocomplete/autocomplete-placeholder.component.mjs +3 -3
- package/esm2022/autocomplete/autocomplete.component.mjs +4 -12
- package/esm2022/autocomplete/autocomplete.directive.mjs +22 -23
- package/esm2022/autocomplete/autocomplete.module.mjs +6 -6
- package/esm2022/autocomplete/helper-directives.mjs +3 -3
- package/esm2022/autocomplete/suggestion/suggestion.component.mjs +8 -15
- package/esm2022/autocomplete/suggestion-group/suggestion-group.component.mjs +3 -5
- package/esm2022/back-top/back-top.component.mjs +12 -15
- package/esm2022/back-top/back-top.module.mjs +4 -4
- package/esm2022/breadcrumb/breadcrumb-item.component.mjs +5 -6
- package/esm2022/breadcrumb/breadcrumb.component.mjs +7 -6
- package/esm2022/breadcrumb/breadcrumb.module.mjs +6 -6
- package/esm2022/button/button-group/button-group.component.mjs +3 -3
- package/esm2022/button/button.component.mjs +9 -12
- package/esm2022/button/button.module.mjs +4 -4
- package/esm2022/card/card.component.mjs +6 -4
- package/esm2022/card/card.module.mjs +5 -5
- package/esm2022/card/helper-directives.mjs +7 -7
- package/esm2022/card/section.component.mjs +3 -3
- package/esm2022/checkbox/checkbox-group/checkbox-group.component.mjs +8 -7
- package/esm2022/checkbox/checkbox.component.mjs +10 -14
- package/esm2022/checkbox/checkbox.module.mjs +6 -6
- package/esm2022/color-picker/color-picker.component.mjs +4 -4
- package/esm2022/color-picker/color-picker.module.mjs +4 -4
- package/esm2022/date-picker/calendar/date-picker-panel/component.mjs +17 -26
- package/esm2022/date-picker/calendar/footer/component.mjs +8 -8
- package/esm2022/date-picker/calendar/header/component.mjs +38 -23
- package/esm2022/date-picker/calendar/panel/picker-panel.mjs +19 -26
- package/esm2022/date-picker/calendar/range-picker-panel/component.mjs +29 -32
- package/esm2022/date-picker/calendar/util.mjs +1 -8
- package/esm2022/date-picker/date-picker/date-picker.component.mjs +18 -23
- package/esm2022/date-picker/date-picker.module.mjs +6 -6
- package/esm2022/date-picker/range-picker/range-picker.component.mjs +18 -20
- package/esm2022/date-picker/trigger/trigger.component.mjs +13 -20
- package/esm2022/dialog/confirm-dialog/confirm-dialog-config.mjs +8 -9
- package/esm2022/dialog/confirm-dialog/confirm-dialog.component.mjs +8 -11
- package/esm2022/dialog/dialog-config.mjs +10 -9
- package/esm2022/dialog/dialog-content/dialog-close.directive.mjs +3 -7
- package/esm2022/dialog/dialog-content/dialog-content.component.mjs +4 -4
- package/esm2022/dialog/dialog-content/dialog-footer.component.mjs +6 -4
- package/esm2022/dialog/dialog-content/dialog-header.component.mjs +7 -10
- package/esm2022/dialog/dialog-ref.mjs +4 -8
- package/esm2022/dialog/dialog.component.mjs +6 -13
- package/esm2022/dialog/dialog.module.mjs +6 -6
- package/esm2022/dialog/dialog.service.mjs +7 -11
- package/esm2022/drawer/component/drawer.component.mjs +5 -24
- package/esm2022/drawer/component/internal/internal.component.mjs +8 -13
- package/esm2022/drawer/drawer-ref.mjs +3 -5
- package/esm2022/drawer/drawer.module.mjs +5 -5
- package/esm2022/drawer/drawer.service.mjs +4 -9
- package/esm2022/drawer/helper-directives.mjs +7 -7
- package/esm2022/dropdown/dropdown-active.directive.mjs +7 -4
- package/esm2022/dropdown/dropdown-button/dropdown-button.component.mjs +11 -12
- package/esm2022/dropdown/dropdown.directive.mjs +7 -7
- package/esm2022/dropdown/dropdown.module.mjs +6 -6
- package/esm2022/dropdown/helper-directives.mjs +3 -3
- package/esm2022/dropdown/menu/menu.component.mjs +7 -5
- package/esm2022/dropdown/menu-group/menu-group.component.mjs +3 -3
- package/esm2022/dropdown/menu-item/menu-item.component.mjs +10 -8
- package/esm2022/dropdown/submenu/submenu.component.mjs +9 -7
- package/esm2022/form/common-form.mjs +7 -12
- package/esm2022/form/form-item/form-item.component.mjs +9 -22
- package/esm2022/form/form.directive.mjs +16 -17
- package/esm2022/form/form.module.mjs +5 -5
- package/esm2022/form/helper-directives.mjs +11 -12
- package/esm2022/i18n/i18n.module.mjs +4 -4
- package/esm2022/i18n/i18n.pipe.mjs +4 -6
- package/esm2022/i18n/i18n.service.mjs +3 -6
- package/esm2022/icon/icon-register.service.mjs +4 -6
- package/esm2022/icon/icon.component.mjs +6 -15
- package/esm2022/icon/icon.module.mjs +4 -4
- package/esm2022/inline-alert/helper-directives.mjs +3 -3
- package/esm2022/inline-alert/inline-alert.component.mjs +10 -11
- package/esm2022/inline-alert/inline-alert.module.mjs +6 -6
- package/esm2022/input/autosize.directive.mjs +5 -7
- package/esm2022/input/helper-directives.mjs +9 -9
- package/esm2022/input/input-group/input-group.component.mjs +6 -13
- package/esm2022/input/input.component.mjs +7 -9
- package/esm2022/input/input.module.mjs +6 -6
- package/esm2022/input/number-input/number-input.component.mjs +18 -21
- package/esm2022/input/search/search.component.mjs +16 -15
- package/esm2022/input/tags-input/tags-input.component.mjs +16 -25
- package/esm2022/internal/utils/bem.mjs +1 -2
- package/esm2022/internal/utils/styles-renderer.mjs +1 -4
- package/esm2022/message/base-message.mjs +2 -11
- package/esm2022/message/message-wrapper.component.mjs +3 -4
- package/esm2022/message/message.component.mjs +10 -17
- package/esm2022/message/message.config.mjs +1 -5
- package/esm2022/message/message.module.mjs +6 -6
- package/esm2022/message/message.service.mjs +3 -3
- package/esm2022/notification/notification-wrapper.component.mjs +3 -4
- package/esm2022/notification/notification.component.mjs +13 -16
- package/esm2022/notification/notification.module.mjs +6 -6
- package/esm2022/notification/notification.service.mjs +3 -3
- package/esm2022/paginator/paginator-intl.mjs +10 -8
- package/esm2022/paginator/paginator.component.mjs +13 -16
- package/esm2022/paginator/paginator.module.mjs +6 -6
- package/esm2022/radio/base-radio.mjs +9 -14
- package/esm2022/radio/radio-button/radio-button.component.mjs +6 -6
- package/esm2022/radio/radio-group/radio-group.component.mjs +20 -17
- package/esm2022/radio/radio.component.mjs +4 -4
- package/esm2022/radio/radio.module.mjs +6 -6
- package/esm2022/scrolling/fixed-size-table-virtual-scroll-strategy.mjs +13 -12
- package/esm2022/scrolling/fixed-size-table-virtual-scroll.directive.mjs +12 -12
- package/esm2022/scrolling/fixed-size-virtual-scroll.directive.mjs +4 -4
- package/esm2022/scrolling/scrolling.module.mjs +5 -5
- package/esm2022/scrolling/virtual-for-of.directive.mjs +3 -3
- package/esm2022/scrolling/virtual-scroll-viewport.component.mjs +4 -4
- package/esm2022/select/base-select.mjs +25 -39
- package/esm2022/select/helper-directives.mjs +5 -13
- package/esm2022/select/multi-select/multi-select.component.mjs +16 -25
- package/esm2022/select/option/option.component.mjs +20 -27
- package/esm2022/select/option-group/option-group.component.mjs +3 -5
- package/esm2022/select/option-placeholder.component.mjs +3 -3
- package/esm2022/select/select.component.mjs +9 -9
- package/esm2022/select/select.module.mjs +6 -6
- package/esm2022/select/validators.mjs +5 -8
- package/esm2022/shared/click-outside.directive.mjs +4 -5
- package/esm2022/shared/shared.module.mjs +4 -4
- package/esm2022/sort/sort-header.component.mjs +5 -11
- package/esm2022/sort/sort.directive.mjs +10 -9
- package/esm2022/sort/sort.module.mjs +4 -4
- package/esm2022/status-bar/status-bar.component.mjs +9 -8
- package/esm2022/status-bar/status-bar.module.mjs +4 -4
- package/esm2022/steps/steps.component.mjs +14 -14
- package/esm2022/steps/steps.module.mjs +4 -4
- package/esm2022/switch/switch.component.mjs +9 -6
- package/esm2022/switch/switch.module.mjs +4 -4
- package/esm2022/table/table-cell-def.directive.mjs +4 -4
- package/esm2022/table/table-cell.component.mjs +18 -12
- package/esm2022/table/table-cell.directive.mjs +4 -4
- package/esm2022/table/table-column-def.directive.mjs +4 -4
- package/esm2022/table/table-column-resizable.directive.mjs +14 -13
- package/esm2022/table/table-header-cell-def.directive.mjs +4 -4
- package/esm2022/table/table-header-cell.directive.mjs +3 -3
- package/esm2022/table/table-header-row-def.directive.mjs +8 -6
- package/esm2022/table/table-header-row.component.mjs +3 -3
- package/esm2022/table/table-placeholder.directive.mjs +5 -8
- package/esm2022/table/table-row-def.directive.mjs +8 -5
- package/esm2022/table/table-row.component.mjs +5 -6
- package/esm2022/table/table-scroll.directive.mjs +14 -14
- package/esm2022/table/table.component.mjs +9 -9
- package/esm2022/table/table.module.mjs +6 -6
- package/esm2022/table-of-contents/table-of-contents.module.mjs +5 -5
- package/esm2022/table-of-contents/toc-container.directive.mjs +9 -11
- package/esm2022/table-of-contents/toc-content.directive.mjs +3 -7
- package/esm2022/table-of-contents/toc-link.directive.mjs +4 -8
- package/esm2022/tabs/tab-body.component.mjs +19 -23
- package/esm2022/tabs/tab-context.service.mjs +4 -6
- package/esm2022/tabs/tab-group.component.mjs +18 -28
- package/esm2022/tabs/tab-header-active-indicator.component.mjs +5 -7
- package/esm2022/tabs/tab-header.component.mjs +16 -26
- package/esm2022/tabs/tab.component.mjs +10 -17
- package/esm2022/tabs/tabs.module.mjs +6 -6
- package/esm2022/tag/check-tag/check-tag.component.mjs +11 -9
- package/esm2022/tag/tag.component.mjs +16 -14
- package/esm2022/tag/tag.module.mjs +4 -4
- package/esm2022/theme/theme.module.mjs +5 -5
- package/esm2022/theme/theme.pipe.mjs +19 -14
- package/esm2022/theme/theme.service.mjs +7 -10
- package/esm2022/time-picker/component.mjs +19 -21
- package/esm2022/time-picker/panel/panel.component.mjs +17 -29
- package/esm2022/time-picker/time-picker.module.mjs +6 -6
- package/esm2022/tooltip/base-tooltip.mjs +20 -31
- package/esm2022/tooltip/tooltip-active.directive.mjs +5 -7
- package/esm2022/tooltip/tooltip-copy.directive.mjs +4 -9
- package/esm2022/tooltip/tooltip-intl.mjs +8 -6
- package/esm2022/tooltip/tooltip.component.mjs +11 -25
- package/esm2022/tooltip/tooltip.directive.mjs +9 -6
- package/esm2022/tooltip/tooltip.module.mjs +6 -6
- package/esm2022/tree-select/tree-node-placeholder.component.mjs +3 -3
- package/esm2022/tree-select/tree-select.component.mjs +30 -44
- package/esm2022/tree-select/tree-select.module.mjs +6 -6
- package/fesm2022/alauda-ui.mjs +1269 -1612
- package/fesm2022/alauda-ui.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -2,23 +2,21 @@ import { Injectable, Optional, SkipSelf } from '@angular/core';
|
|
|
2
2
|
import { BehaviorSubject, combineLatest, distinctUntilChanged, map, } from 'rxjs';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export class TabContextService {
|
|
5
|
-
_parent;
|
|
6
|
-
active$$ = new BehaviorSubject(false);
|
|
7
5
|
get isActive() {
|
|
8
6
|
return this.active$$.value;
|
|
9
7
|
}
|
|
10
8
|
set isActive(isActive) {
|
|
11
9
|
this.active$$.next(isActive);
|
|
12
10
|
}
|
|
13
|
-
active$;
|
|
14
11
|
constructor(_parent) {
|
|
15
12
|
this._parent = _parent;
|
|
13
|
+
this.active$$ = new BehaviorSubject(false);
|
|
16
14
|
this.active$ = (_parent
|
|
17
15
|
? combineLatest([_parent.active$, this.active$$]).pipe(map(([a, b]) => a && b))
|
|
18
16
|
: this.active$$).pipe(distinctUntilChanged());
|
|
19
17
|
}
|
|
20
|
-
static
|
|
21
|
-
static
|
|
18
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: TabContextService, deps: [{ token: TabContextService, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
19
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: TabContextService }); }
|
|
22
20
|
}
|
|
23
21
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: TabContextService, decorators: [{
|
|
24
22
|
type: Injectable
|
|
@@ -27,4 +25,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImpor
|
|
|
27
25
|
}, {
|
|
28
26
|
type: SkipSelf
|
|
29
27
|
}] }]; } });
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWNvbnRleHQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90YWJzL3RhYi1jb250ZXh0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9ELE9BQU8sRUFDTCxlQUFlLEVBRWYsYUFBYSxFQUNiLG9CQUFvQixFQUNwQixHQUFHLEdBQ0osTUFBTSxNQUFNLENBQUM7O0FBR2QsTUFBTSxPQUFPLGlCQUFpQjtJQU01QixJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFJLFFBQVEsQ0FBQyxRQUFpQjtRQUM1QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBSUQsWUFHVyxPQUEwQjtRQUExQixZQUFPLEdBQVAsT0FBTyxDQUFtQjtRQWxCcEIsYUFBUSxHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBb0JyRCxJQUFJLENBQUMsT0FBTyxHQUFHLENBQ2IsT0FBTztZQUNMLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDbEQsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDeEI7WUFDSCxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FDbEIsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7OEdBNUJVLGlCQUFpQjtrSEFBakIsaUJBQWlCOzsyRkFBakIsaUJBQWlCO2tCQUQ3QixVQUFVOzswQkFrQk4sUUFBUTs7MEJBQ1IsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9wdGlvbmFsLCBTa2lwU2VsZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBPYnNlcnZhYmxlLFxuICBjb21iaW5lTGF0ZXN0LFxuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgbWFwLFxufSBmcm9tICdyeGpzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRhYkNvbnRleHRTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBhY3RpdmUkJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSB0YWIgaXMgY3VycmVudGx5IGFjdGl2ZS5cbiAgICovXG4gIGdldCBpc0FjdGl2ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5hY3RpdmUkJC52YWx1ZTtcbiAgfVxuXG4gIHNldCBpc0FjdGl2ZShpc0FjdGl2ZTogYm9vbGVhbikge1xuICAgIHRoaXMuYWN0aXZlJCQubmV4dChpc0FjdGl2ZSk7XG4gIH1cblxuICByZWFkb25seSBhY3RpdmUkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpXG4gICAgQFNraXBTZWxmKClcbiAgICByZWFkb25seSBfcGFyZW50OiBUYWJDb250ZXh0U2VydmljZSxcbiAgKSB7XG4gICAgdGhpcy5hY3RpdmUkID0gKFxuICAgICAgX3BhcmVudFxuICAgICAgICA/IGNvbWJpbmVMYXRlc3QoW19wYXJlbnQuYWN0aXZlJCwgdGhpcy5hY3RpdmUkJF0pLnBpcGUoXG4gICAgICAgICAgICBtYXAoKFthLCBiXSkgPT4gYSAmJiBiKSxcbiAgICAgICAgICApXG4gICAgICAgIDogdGhpcy5hY3RpdmUkJFxuICAgICkucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcbiAgfVxufVxuIl19
|
|
@@ -13,27 +13,8 @@ import * as i0 from "@angular/core";
|
|
|
13
13
|
import * as i1 from "@angular/cdk/portal";
|
|
14
14
|
import * as i2 from "@angular/cdk/a11y";
|
|
15
15
|
export class TabChangeEvent {
|
|
16
|
-
index;
|
|
17
|
-
tab;
|
|
18
16
|
}
|
|
19
17
|
export class TabGroupComponent {
|
|
20
|
-
_changeDetectorRef;
|
|
21
|
-
bem = buildBem('aui-tab-group');
|
|
22
|
-
_tabs;
|
|
23
|
-
_headerAddon;
|
|
24
|
-
_tabHeader;
|
|
25
|
-
_tabTitle;
|
|
26
|
-
_indexToSelect = 0;
|
|
27
|
-
_tabsSubscription = Subscription.EMPTY;
|
|
28
|
-
_tabLabelSubscription = Subscription.EMPTY;
|
|
29
|
-
_selectedIndex = null;
|
|
30
|
-
_tab = null;
|
|
31
|
-
_type = TabType.Line;
|
|
32
|
-
_size = TabSize.Medium;
|
|
33
|
-
_lazy;
|
|
34
|
-
_previousHeaderAddon;
|
|
35
|
-
_typeChange = new Subject();
|
|
36
|
-
_sizeChange = new Subject();
|
|
37
18
|
get selectedIndex() {
|
|
38
19
|
return this._selectedIndex;
|
|
39
20
|
}
|
|
@@ -56,7 +37,6 @@ export class TabGroupComponent {
|
|
|
56
37
|
set type(type) {
|
|
57
38
|
this._type = type;
|
|
58
39
|
}
|
|
59
|
-
title;
|
|
60
40
|
get size() {
|
|
61
41
|
return this._size;
|
|
62
42
|
}
|
|
@@ -81,14 +61,24 @@ export class TabGroupComponent {
|
|
|
81
61
|
this.activatedTabs.length = 0;
|
|
82
62
|
}
|
|
83
63
|
}
|
|
84
|
-
selectedIndexChange = new EventEmitter();
|
|
85
|
-
tabChange = new EventEmitter();
|
|
86
|
-
selectedTabChange = new EventEmitter(true);
|
|
87
|
-
focusChange = new EventEmitter();
|
|
88
64
|
constructor(_changeDetectorRef) {
|
|
89
65
|
this._changeDetectorRef = _changeDetectorRef;
|
|
66
|
+
this.bem = buildBem('aui-tab-group');
|
|
67
|
+
this._indexToSelect = 0;
|
|
68
|
+
this._tabsSubscription = Subscription.EMPTY;
|
|
69
|
+
this._tabLabelSubscription = Subscription.EMPTY;
|
|
70
|
+
this._selectedIndex = null;
|
|
71
|
+
this._tab = null;
|
|
72
|
+
this._type = TabType.Line;
|
|
73
|
+
this._size = TabSize.Medium;
|
|
74
|
+
this._typeChange = new Subject();
|
|
75
|
+
this._sizeChange = new Subject();
|
|
76
|
+
this.selectedIndexChange = new EventEmitter();
|
|
77
|
+
this.tabChange = new EventEmitter();
|
|
78
|
+
this.selectedTabChange = new EventEmitter(true);
|
|
79
|
+
this.focusChange = new EventEmitter();
|
|
80
|
+
this.activatedTabs = [];
|
|
90
81
|
}
|
|
91
|
-
activatedTabs = [];
|
|
92
82
|
get activeTab() {
|
|
93
83
|
return this._tabs.length > 0 && this.selectedIndex !== null
|
|
94
84
|
? this._tabs.toArray()[this.selectedIndex]
|
|
@@ -214,8 +204,8 @@ export class TabGroupComponent {
|
|
|
214
204
|
}
|
|
215
205
|
return this.selectedIndex === idx ? 0 : -1;
|
|
216
206
|
}
|
|
217
|
-
static
|
|
218
|
-
static
|
|
207
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: TabGroupComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
208
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.3", type: TabGroupComponent, isStandalone: true, selector: "aui-tab-group", inputs: { selectedIndex: "selectedIndex", tab: "tab", type: "type", title: "title", size: "size", lazy: "lazy" }, outputs: { selectedIndexChange: "selectedIndexChange", tabChange: "tabChange", selectedTabChange: "selectedTabChange", focusChange: "focusChange" }, queries: [{ propertyName: "_headerAddon", first: true, predicate: TabHeaderAddonDirective, descendants: true }, { propertyName: "_tabTitle", first: true, predicate: TabTitleDirective, descendants: true }, { propertyName: "_tabs", predicate: TabComponent }], viewQueries: [{ propertyName: "_tabHeader", first: true, predicate: TabHeaderComponent, descendants: true }], exportAs: ["auiTabGroup"], usesOnChanges: true, ngImport: i0, template: "<div [ngClass]=\"bem.block()\">\n <aui-tab-header\n [selectedIndex]=\"selectedIndex\"\n [type]=\"type\"\n [size]=\"size\"\n (indexFocused)=\"_focusChanged($event)\"\n (selectFocusedIndex)=\"selectedIndex = $event\"\n >\n <ng-container *ngIf=\"_tabTitle\">\n <ng-container *auiTabTitle>\n <ng-template [cdkPortalOutlet]=\"_tabTitle\"></ng-template>\n </ng-container>\n </ng-container>\n <div\n role=\"tab\"\n *ngFor=\"let tab of _tabs; let i = index\"\n auiTabLabelWrapper\n cdkMonitorElementFocus\n [class.isActive]=\"selectedIndex === i\"\n [class.closeable]=\"tab.closeable && !tab.disabled\"\n [disabled]=\"tab.disabled\"\n (click)=\"_handleClick(tab, i)\"\n [title]=\"tab.textLabel\"\n [attr.tabIndex]=\"_getTabIndex(tab, i)\"\n [attr.aria-posinset]=\"i + 1\"\n [attr.aria-setsize]=\"_tabs.length\"\n [attr.aria-label]=\"tab.textLabel\"\n >\n <div class=\"aui-tab-label__content\">\n <!-- If there is a label template, use it. -->\n <ng-template [ngIf]=\"tab.templateLabel\">\n <ng-template [cdkPortalOutlet]=\"tab.templateLabel\"></ng-template>\n </ng-template>\n <!-- If there is not a label template, fall back to the text label. -->\n <ng-template [ngIf]=\"!tab.templateLabel\">\n {{ tab.textLabel }}\n </ng-template>\n </div>\n\n <aui-icon\n *ngIf=\"tab.closeable && !tab.disabled\"\n class=\"aui-tab-label__close\"\n icon=\"xmark_small\"\n (click)=\"tab.close.emit(); $event.stopPropagation()\"\n ></aui-icon>\n </div>\n\n <ng-container *ngIf=\"_headerAddon\">\n <ng-container *auiTabHeaderAddon>\n <ng-template [cdkPortalOutlet]=\"_headerAddon\"></ng-template>\n </ng-container>\n </ng-container>\n </aui-tab-header>\n\n <div [class]=\"bem.element('body-wrapper')\">\n <ng-container *ngIf=\"lazy\">\n <aui-tab-body\n role=\"tabpanel\"\n *ngFor=\"let tab of activatedTabs\"\n [content]=\"tab.content\"\n [hidden]=\"tab !== activeTab\"\n ></aui-tab-body>\n </ng-container>\n <aui-tab-body\n role=\"tabpanel\"\n *ngIf=\"!lazy && activeTab\"\n [content]=\"activeTab.content\"\n ></aui-tab-body>\n </div>\n</div>\n", styles: [".aui-tab-group{display:flex;flex-flow:column}aui-tab-header+.aui-tab-group__body-wrapper{margin-top:16px}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: TabHeaderComponent, selector: "aui-tab-header", inputs: ["type", "size", "selectedIndex"], outputs: ["selectFocusedIndex", "indexFocused"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: TabTitleDirective, selector: "[auiTabTitle]" }, { kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i1.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: TabLabelWrapperDirective, selector: "[auiTabLabelWrapper]", inputs: ["disabled"] }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i2.CdkMonitorFocus, selector: "[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]", outputs: ["cdkFocusChange"], exportAs: ["cdkMonitorFocus"] }, { kind: "component", type: IconComponent, selector: "aui-icon", inputs: ["icon", "light", "dark", "link", "margin", "size", "color", "background", "backgroundColor"] }, { kind: "directive", type: TabHeaderAddonDirective, selector: "[auiTabHeaderAddon]" }, { kind: "component", type: TabBodyComponent, selector: "aui-tab-body", inputs: ["content"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
219
209
|
}
|
|
220
210
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: TabGroupComponent, decorators: [{
|
|
221
211
|
type: Component,
|
|
@@ -265,4 +255,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImpor
|
|
|
265
255
|
}], focusChange: [{
|
|
266
256
|
type: Output
|
|
267
257
|
}] } });
|
|
268
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90YWJzL3RhYi1ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi9zcmMvdGFicy90YWItZ3JvdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBR0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUlOLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXBELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQU8sUUFBUSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFbEQsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsd0JBQXdCLEVBQ3hCLGdCQUFnQixHQUNqQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGNBQWMsQ0FBQzs7OztBQUdoRCxNQUFNLE9BQU8sY0FBYztJQUV6QixLQUFLLENBQVM7SUFFZCxHQUFHLENBQWU7Q0FDbkI7QUF5QkQsTUFB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LEtBQUs7c0JBREosS0FBSztnQkFJRixJQUFJO3NCQURQLEtBQUs7Z0JBYUYsSUFBSTtzQkFEUCxLQUFLO2dCQW1CRyxtQkFBbUI7c0JBRDNCLE1BQU07Z0JBSUUsU0FBUztzQkFEakIsTUFBTTtnQkFLRSxpQkFBaUI7c0JBRHpCLE1BQU07Z0JBS0UsV0FBVztzQkFEbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXByb3RvdHlwZS1idWlsdGlucyAqL1xuaW1wb3J0IHsgQTExeU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IFBvcnRhbE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgTmdDbGFzcywgTmdJZiwgTmdGb3IgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50Q2hlY2tlZCxcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgbWVyZ2UgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgSWNvbkNvbXBvbmVudCB9IGZyb20gJy4uL2ljb24vaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQmVtLCBidWlsZEJlbSB9IGZyb20gJy4uL2ludGVybmFsL3V0aWxzJztcblxuaW1wb3J0IHtcbiAgVGFiSGVhZGVyQWRkb25EaXJlY3RpdmUsXG4gIFRhYlRpdGxlRGlyZWN0aXZlLFxuICBUYWJMYWJlbFdyYXBwZXJEaXJlY3RpdmUsXG4gIFRhYkJvZHlDb21wb25lbnQsXG59IGZyb20gJy4vdGFiLWJvZHkuY29tcG9uZW50JztcbmltcG9ydCB7IFRhYkhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vdGFiLWhlYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGFiQ29tcG9uZW50IH0gZnJvbSAnLi90YWIuY29tcG9uZW50JztcbmltcG9ydCB7IFRhYlNpemUsIFRhYlR5cGUgfSBmcm9tICcuL3RhYnMudHlwZXMnO1xuXG4vKiogQSBzaW1wbGUgY2hhbmdlIGV2ZW50IGVtaXR0ZWQgb24gZm9jdXMgb3Igc2VsZWN0aW9uIGNoYW5nZXMuICovXG5leHBvcnQgY2xhc3MgVGFiQ2hhbmdlRXZlbnQge1xuICAvKiogSW5kZXggb2YgdGhlIGN1cnJlbnRseS1zZWxlY3RlZCB0YWIuICovXG4gIGluZGV4OiBudW1iZXI7XG4gIC8qKiBSZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnRseS1zZWxlY3RlZCB0YWIuICovXG4gIHRhYjogVGFiQ29tcG9uZW50O1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhdWktdGFiLWdyb3VwJyxcbiAgZXhwb3J0QXM6ICdhdWlUYWJHcm91cCcsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWItZ3JvdXAuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90YWItZ3JvdXAuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByZXNlcnZlV2hpdGVzcGFjZXM6IGZhbHNlLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTmdDbGFzcyxcbiAgICBUYWJIZWFkZXJDb21wb25lbnQsXG4gICAgTmdJZixcbiAgICBUYWJUaXRsZURpcmVjdGl2ZSxcbiAgICBQb3J0YWxNb2R1bGUsXG4gICAgTmdGb3IsXG4gICAgVGFiTGFiZWxXcmFwcGVyRGlyZWN0aXZlLFxuICAgIEExMXlNb2R1bGUsXG4gICAgSWNvbkNvbXBvbmVudCxcbiAgICBUYWJIZWFkZXJBZGRvbkRpcmVjdGl2ZSxcbiAgICBUYWJCb2R5Q29tcG9uZW50LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBUYWJHcm91cENvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJDb250ZW50Q2hlY2tlZCwgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95XG57XG4gIGJlbTogQmVtID0gYnVpbGRCZW0oJ2F1aS10YWItZ3JvdXAnKTtcblxuICBAQ29udGVudENoaWxkcmVuKFRhYkNvbXBvbmVudClcbiAgX3RhYnM6IFF1ZXJ5TGlzdDxUYWJDb21wb25lbnQ+O1xuXG4gIEBDb250ZW50Q2hpbGQoVGFiSGVhZGVyQWRkb25EaXJlY3RpdmUsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBfaGVhZGVyQWRkb246IFRhYkhlYWRlckFkZG9uRGlyZWN0aXZlO1xuXG4gIEBWaWV3Q2hpbGQoVGFiSGVhZGVyQ29tcG9uZW50LCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgX3RhYkhlYWRlcjogVGFiSGVhZGVyQ29tcG9uZW50O1xuXG4gIEBDb250ZW50Q2hpbGQoVGFiVGl0bGVEaXJlY3RpdmUsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBfdGFiVGl0bGU6IFRhYlRpdGxlRGlyZWN0aXZlO1xuXG4gIC8qKiBUaGUgdGFiIGluZGV4IHRoYXQgc2hvdWxkIGJlIHNlbGVjdGVkIGFmdGVyIHRoZSBjb250ZW50IGhhcyBiZWVuIGNoZWNrZWQuICovXG4gIHByaXZhdGUgX2luZGV4VG9TZWxlY3QgPSAwO1xuXG4gIC8qKiBTdWJzY3JpcHRpb24gdG8gdGFicyBiZWluZyBhZGRlZC9yZW1vdmVkLiAqL1xuICBwcml2YXRlIF90YWJzU3Vic2NyaXB0aW9uID0gU3Vic2NyaXB0aW9uLkVNUFRZO1xuXG4gIC8qKiBTdWJzY3JpcHRpb24gdG8gY2hhbmdlcyBpbiB0aGUgdGFiIGxhYmVscy4gKi9cbiAgcHJpdmF0ZSBfdGFiTGFiZWxTdWJzY3JpcHRpb24gPSBTdWJzY3JpcHRpb24uRU1QVFk7XG5cbiAgcHJpdmF0ZSBfc2VsZWN0ZWRJbmRleDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX3RhYjogc3RyaW5nID0gbnVsbDtcbiAgcHJpdmF0ZSBfdHlwZTogVGFiVHlwZSA9IFRhYlR5cGUuTGluZTtcbiAgcHJpdmF0ZSBfc2l6ZTogVGFiU2l6ZSA9IFRhYlNpemUuTWVkaXVtO1xuXG4gIC8qKiB0cnVlIGxhenkgbW9kZSBmb3IgdGVtcGxhdGUgcmVmIGNoaWxkcmVuICovXG4gIHByaXZhdGUgX2xhenk6IGJvb2xlYW47XG5cbiAgcHJpdmF0ZSBfcHJldmlvdXNIZWFkZXJBZGRvbjogVGFiSGVhZGVyQWRkb25EaXJlY3RpdmU7XG5cbiAgLyoqIEVtaXRzIHdoZW5ldmVyIHRoZSB0eXBlIGNoYW5nZXMgKi9cbiAgcmVhZG9ubHkgX3R5cGVDaGFuZ2UgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIC8qKiBFbWl0cyB3aGVuZXZlciB0aGUgc2l6ZSBjaGFuZ2VzICovXG4gIHJlYWRvbmx5IF9zaXplQ2hhbmdlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAvKiogVGhlIGluZGV4IG9mIHRoZSBhY3RpdmUgdGFiLiAqL1xuICBASW5wdXQoKVxuICBnZXQgc2VsZWN0ZWRJbmRleCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZEluZGV4O1xuICB9XG5cbiAgc2V0IHNlbGVjdGVkSW5kZXgodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX2luZGV4VG9TZWxlY3QgPSB2YWx1ZTtcbiAgICB0aGlzLl9jaGFuZ2VBY3RpdmF0ZWRUYWJzKCk7XG4gIH1cblxuICBASW5wdXQoKVxuICBnZXQgdGFiKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3RhYjtcbiAgfVxuXG4gIHNldCB0YWIodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3RhYiA9IHZhbHVlO1xuICAgIGlmICh0aGlzLl90YWJzKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSB0aGlzLl9maW5kSW5kZXhCeVRhYih2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KClcbiAgZ2V0IHR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3R5cGU7XG4gIH1cblxuICBzZXQgdHlwZSh0eXBlOiBUYWJUeXBlKSB7XG4gICAgdGhpcy5fdHlwZSA9IHR5cGU7XG4gIH1cblxuICBASW5wdXQoKVxuICB0aXRsZTogc3RyaW5nIHwgVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgQElucHV0KClcbiAgZ2V0IHNpemUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NpemU7XG4gIH1cblxuICBzZXQgc2l6ZSh2YWwpIHtcbiAgICBpZiAoIXZhbCB8fCB0aGlzLl9zaXplID09PSB2YWwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fc2l6ZSA9IHZhbDtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIGdldCBsYXp5KCkge1xuICAgIHJldHVybiB0aGlzLl9sYXp5O1xuICB9XG5cbiAgc2V0IGxhenkobGF6eTogYm9vbGVhbikge1xuICAgIGlmICh0aGlzLl9sYXp5ID09PSBsYXp5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2xhenkgPSBsYXp5O1xuICAgIGlmIChsYXp5KSB7XG4gICAgICB0aGlzLl9jaGFuZ2VBY3RpdmF0ZWRUYWJzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYWN0aXZhdGVkVGFicy5sZW5ndGggPSAwO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBPdXRwdXQgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIHR3by13YXkgYmluZGluZyBvbiBgWyhzZWxlY3RlZEluZGV4KV1gICovXG4gIEBPdXRwdXQoKVxuICByZWFkb25seSBzZWxlY3RlZEluZGV4Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHJlYWRvbmx5IHRhYkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHRhYiBzZWxlY3Rpb24gaGFzIGNoYW5nZWQuICovXG4gIEBPdXRwdXQoKVxuICByZWFkb25seSBzZWxlY3RlZFRhYkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VGFiQ2hhbmdlRXZlbnQ+KHRydWUpO1xuXG4gIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gZm9jdXMgaGFzIGNoYW5nZWQgd2l0aGluIGEgdGFiIGdyb3VwLiAqL1xuICBAT3V0cHV0KClcbiAgcmVhZG9ubHkgZm9jdXNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxUYWJDaGFuZ2VFdmVudD4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8VGFiQ2hhbmdlRXZlbnQ+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIGFjdGl2YXRlZFRhYnM6IFRhYkNvbXBvbmVudFtdID0gW107XG5cbiAgZ2V0IGFjdGl2ZVRhYigpIHtcbiAgICByZXR1cm4gdGhpcy5fdGFicy5sZW5ndGggPiAwICYmIHRoaXMuc2VsZWN0ZWRJbmRleCAhPT0gbnVsbFxuICAgICAgPyB0aGlzLl90YWJzLnRvQXJyYXkoKVt0aGlzLnNlbGVjdGVkSW5kZXhdXG4gICAgICA6IG51bGw7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMuaGFzT3duUHJvcGVydHkoJ3R5cGUnKSkge1xuICAgICAgdGhpcy5fdHlwZUNoYW5nZS5uZXh0KCk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXMuaGFzT3duUHJvcGVydHkoJ3NpemUnKSkge1xuICAgICAgdGhpcy5fc2l6ZUNoYW5nZS5uZXh0KCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIHRoZSBjb250ZW50IGlzIGNoZWNrZWQsIHRoaXMgY29tcG9uZW50IGtub3dzIHdoYXQgdGFicyBoYXZlIGJlZW4gZGVmaW5lZFxuICAgKiBhbmQgd2hhdCB0aGUgc2VsZWN0ZWQgaW5kZXggc2hvdWxkIGJlLiBUaGlzIGlzIHdoZXJlIHdlIGNhbiBrbm93IGV4YWN0bHkgd2hhdCBwb3NpdGlvblxuICAgKiBlYWNoIHRhYiBzaG91bGQgYmUgaW4gYWNjb3JkaW5nIHRvIHRoZSBuZXcgc2VsZWN0ZWQgaW5kZXguXG4gICAqL1xuICBuZ0FmdGVyQ29udGVudENoZWNrZWQoKTogdm9pZCB7XG4gICAgLy8gRG9uJ3QgY2xhbXAgdGhlIGBpbmRleFRvU2VsZWN0YCBpbW1lZGlhdGVseSBpbiB0aGUgc2V0dGVyIGJlY2F1c2UgaXQgY2FuIGhhcHBlbiB0aGF0XG4gICAgLy8gdGhlIGFtb3VudCBvZiB0YWJzIGNoYW5nZXMgYmVmb3JlIHRoZSBhY3R1YWwgY2hhbmdlIGRldGVjdGlvbiBydW5zLlxuICAgIGNvbnN0IGluZGV4VG9TZWxlY3QgPSAodGhpcy5faW5kZXhUb1NlbGVjdCA9IHRoaXMuX2NsYW1wVGFiSW5kZXgoXG4gICAgICB0aGlzLl9pbmRleFRvU2VsZWN0LFxuICAgICkpO1xuXG4gICAgLy8gSWYgdGhlcmUgaXMgYSBjaGFuZ2UgaW4gc2VsZWN0ZWQgaW5kZXgsIGVtaXQgYSBjaGFuZ2UgZXZlbnQuIFNob3VsZCBub3QgdHJpZ2dlciBpZlxuICAgIC8vIHRoZSBzZWxlY3RlZCBpbmRleCBoYXMgbm90IHlldCBiZWVuIGluaXRpYWxpemVkLlxuICAgIGlmICh0aGlzLl9zZWxlY3RlZEluZGV4ICE9PSBpbmRleFRvU2VsZWN0ICYmIHRoaXMuX3NlbGVjdGVkSW5kZXggIT0gbnVsbCkge1xuICAgICAgdGhpcy5fY2hhbmdlQWN0aXZhdGVkVGFicygpO1xuICAgICAgY29uc3QgdGFiQ2hhbmdlRXZlbnQgPSB0aGlzLl9jcmVhdGVDaGFuZ2VFdmVudChpbmRleFRvU2VsZWN0KTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRUYWJDaGFuZ2UuZW1pdCh0YWJDaGFuZ2VFdmVudCk7XG4gICAgICAvLyBFbWl0dGluZyB0aGlzIHZhbHVlIGFmdGVyIGNoYW5nZSBkZXRlY3Rpb24gaGFzIHJ1blxuICAgICAgLy8gc2luY2UgdGhlIGNoZWNrZWQgY29udGVudCBtYXkgY29udGFpbiB0aGlzIHZhcmlhYmxlJ1xuICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleENoYW5nZS5lbWl0KGluZGV4VG9TZWxlY3QpO1xuICAgICAgICB0aGlzLnRhYkNoYW5nZS5lbWl0KHRoaXMuX3RhYnMuZ2V0KGluZGV4VG9TZWxlY3QpLm5hbWUpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gU2V0dXAgdGhlIHBvc2l0aW9uIGZvciBlYWNoIHRhYiBhbmQgb3B0aW9uYWxseSBzZXR1cCBhbiBvcmlnaW4gb24gdGhlIG5leHQgc2VsZWN0ZWQgdGFiLlxuICAgIHRoaXMuX3RhYnMuZm9yRWFjaCgodGFiOiBUYWJDb21wb25lbnQsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgIHRhYi5wb3NpdGlvbiA9IGluZGV4IC0gaW5kZXhUb1NlbGVjdDtcbiAgICAgIHRhYi50YWJDb250ZXh0LmlzQWN0aXZlID0gaW5kZXggPT09IGluZGV4VG9TZWxlY3Q7XG4gICAgICAvLyBJZiB0aGVyZSBpcyBhbHJlYWR5IGEgc2VsZWN0ZWQgdGFiLCB0aGVuIHNldCB1cCBhbiBvcmlnaW4gZm9yIHRoZSBuZXh0IHNlbGVjdGVkIHRhYlxuICAgICAgLy8gaWYgaXQgZG9lc24ndCBoYXZlIG9uZSBhbHJlYWR5LlxuICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkSW5kZXggIT0gbnVsbCAmJiB0YWIucG9zaXRpb24gPT09IDAgJiYgIXRhYi5vcmlnaW4pIHtcbiAgICAgICAgdGFiLm9yaWdpbiA9IGluZGV4VG9TZWxlY3QgLSB0aGlzLl9zZWxlY3RlZEluZGV4O1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuX3NlbGVjdGVkSW5kZXggIT09IGluZGV4VG9TZWxlY3QpIHtcbiAgICAgIHRoaXMuX3NlbGVjdGVkSW5kZXggPSBpbmRleFRvU2VsZWN0O1xuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3ByZXZpb3VzSGVhZGVyQWRkb24gIT09IHRoaXMuX2hlYWRlckFkZG9uKSB7XG4gICAgICB0aGlzLl9wcmV2aW91c0hlYWRlckFkZG9uID0gdGhpcy5faGVhZGVyQWRkb247XG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgaWYgKHRoaXMudGFiKSB7XG4gICAgICB0aGlzLl9pbmRleFRvU2VsZWN0ID0gdGhpcy5fZmluZEluZGV4QnlUYWIodGhpcy50YWIpO1xuICAgIH1cblxuICAgIHRoaXMuX2NoYW5nZUFjdGl2YXRlZFRhYnMoKTtcbiAgICB0aGlzLl9zdWJzY3JpYmVUb1RhYkxhYmVscygpO1xuICAgIC8vIFN1YnNjcmliZSB0byBjaGFuZ2VzIGluIHRoZSBhbW91bnQgb2YgdGFicywgaW4gb3JkZXIgdG8gYmVcbiAgICAvLyBhYmxlIHRvIHJlLXJlbmRlciB0aGUgY29udGVudCBhcyBuZXcgdGFicyBhcmUgYWRkZWQgb3IgcmVtb3ZlZC5cbiAgICB0aGlzLl90YWJzU3Vic2NyaXB0aW9uID0gdGhpcy5fdGFicy5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBjb25zdCB0YWJzID0gdGhpcy5fdGFicy50b0FycmF5KCk7XG4gICAgICBpZiAodGhpcy5fbGF6eSkge1xuICAgICAgICB0aGlzLmFjdGl2YXRlZFRhYnMgPSB0aGlzLmFjdGl2YXRlZFRhYnMuZmlsdGVyKHRhYiA9PlxuICAgICAgICAgIHRhYnMuaW5jbHVkZXModGFiKSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGluZGV4VG9TZWxlY3QgPSB0aGlzLl9jbGFtcFRhYkluZGV4KHRoaXMuX2luZGV4VG9TZWxlY3QpO1xuICAgICAgLy8gTWFpbnRhaW4gdGhlIHByZXZpb3VzbHktc2VsZWN0ZWQgdGFiIGlmIGEgbmV3IHRhYiBpcyBhZGRlZCBvciByZW1vdmVkIGFuZCB0aGVyZSBpcyBub1xuICAgICAgLy8gZXhwbGljaXQgY2hhbmdlIHRoYXQgc2VsZWN0cyBhIGRpZmZlcmVudCB0YWIuXG4gICAgICBpZiAoaW5kZXhUb1NlbGVjdCA9PT0gdGhpcy5fc2VsZWN0ZWRJbmRleCkge1xuICAgICAgICBmb3IgKGNvbnN0IFtpLCB0YWJdIG9mIHRhYnMuZW50cmllcygpKSB7XG4gICAgICAgICAgaWYgKHRhYi50YWJDb250ZXh0LmlzQWN0aXZlKSB7XG4gICAgICAgICAgICAvLyBBc3NpZ24gYm90aCB0byB0aGUgYF9pbmRleFRvU2VsZWN0YCBhbmQgYF9zZWxlY3RlZEluZGV4YCBzbyB3ZSBkb24ndCBmaXJlIGEgY2hhbmdlZFxuICAgICAgICAgICAgLy8gZXZlbnQsIG90aGVyd2lzZSB0aGUgY29uc3VtZXIgbWF5IGVuZCB1cCBpbiBhbiBpbmZpbml0ZSBsb29wIGluIHNvbWUgZWRnZSBjYXNlcyBsaWtlXG4gICAgICAgICAgICAvLyBhZGRpbmcgYSB0YWIgd2l0aGluIHRoZSBgc2VsZWN0ZWRJbmRleENoYW5nZWAgZXZlbnQuXG4gICAgICAgICAgICB0aGlzLl9pbmRleFRvU2VsZWN0ID0gdGhpcy5fc2VsZWN0ZWRJbmRleCA9IGk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuX2NoYW5nZUFjdGl2YXRlZFRhYnMoKTtcbiAgICAgIHRoaXMuX3N1YnNjcmliZVRvVGFiTGFiZWxzKCk7XG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX3RhYnNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLl90YWJMYWJlbFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5fdHlwZUNoYW5nZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX3NpemVDaGFuZ2UuY29tcGxldGUoKTtcbiAgfVxuXG4gIC8qKiBIYW5kbGUgY2xpY2sgZXZlbnRzLCBzZXR0aW5nIG5ldyBzZWxlY3RlZCBpbmRleCBpZiBhcHByb3ByaWF0ZS4gKi9cbiAgX2hhbmRsZUNsaWNrKHRhYjogVGFiQ29tcG9uZW50LCBpZHg6IG51bWJlcikge1xuICAgIGlmICghdGFiLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSB0aGlzLl90YWJIZWFkZXIuZm9jdXNJbmRleCA9IGlkeDtcbiAgICB9XG4gIH1cblxuICBfZm9jdXNDaGFuZ2VkKGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLmZvY3VzQ2hhbmdlLmVtaXQodGhpcy5fY3JlYXRlQ2hhbmdlRXZlbnQoaW5kZXgpKTtcbiAgfVxuXG4gIC8qKiBSZS1hbGlnbnMgdGhlIGluayBiYXIgdG8gdGhlIHNlbGVjdGVkIHRhYiBlbGVtZW50LiAqL1xuICByZWFsaWduQWN0aXZlSW5kaWNhdG9yKCkge1xuICAgIGlmICh0aGlzLl90YWJIZWFkZXIpIHtcbiAgICAgIHRoaXMuX3RhYkhlYWRlci5fYWxpZ25BY3RpdmVJbmRpY2F0b3JUb1NlbGVjdGVkVGFiKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY2hhbmdlQWN0aXZhdGVkVGFicygpIHtcbiAgICBpZiAoXG4gICAgICAhdGhpcy5fbGF6eSB8fFxuICAgICAgIXRoaXMuX3RhYnMgfHxcbiAgICAgIHRoaXMuX2luZGV4VG9TZWxlY3QgPCAwIHx8XG4gICAgICB0aGlzLl9pbmRleFRvU2VsZWN0ID49IHRoaXMuX3RhYnMubGVuZ3RoXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHRhYiA9IHRoaXMuX3RhYnMuZmluZCgoXywgaW5kZXgpID0+IGluZGV4ID09PSB0aGlzLl9pbmRleFRvU2VsZWN0KTtcbiAgICBpZiAodGFiICYmICF0aGlzLmFjdGl2YXRlZFRhYnMuaW5jbHVkZXModGFiKSkge1xuICAgICAgdGhpcy5hY3RpdmF0ZWRUYWJzLnB1c2godGFiKTtcbiAgICB9XG4gIH1cblxuICAvKiogQ2xhbXBzIHRoZSBnaXZlbiBpbmRleCB0byB0aGUgYm91bmRzIG9mIDAgYW5kIHRoZSB0YWJzIGxlbmd0aC4gKi9cbiAgcHJpdmF0ZSBfY2xhbXBUYWJJbmRleChpbmRleDogbnVtYmVyIHwgbnVsbCk6IG51bWJlciB7XG4gICAgLy8gTm90ZSB0aGUgYHx8IDBgLCB3aGljaCBlbnN1cmVzIHRoYXQgdmFsdWVzIGxpa2UgTmFOIGNhbid0IGdldCB0aHJvdWdoXG4gICAgLy8gYW5kIHdoaWNoIHdvdWxkIG90aGVyd2lzZSB0aHJvdyB0aGUgY29tcG9uZW50IGludG8gYW4gaW5maW5pdGUgbG9vcFxuICAgIC8vIChzaW5jZSBNYXRoLm1heChOYU4sIDApID09PSBOYU4pLlxuICAgIHJldHVybiBNYXRoLm1pbih0aGlzLl90YWJzLmxlbmd0aCAtIDEsIE1hdGgubWF4KGluZGV4IHx8IDAsIDApKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ZpbmRJbmRleEJ5VGFiKG5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiBNYXRoLm1heChcbiAgICAgIHRoaXMuX3RhYnMudG9BcnJheSgpLmZpbmRJbmRleCh0YWIgPT4gdGFiLm5hbWUgPT09IG5hbWUpLFxuICAgICAgMCxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfY3JlYXRlQ2hhbmdlRXZlbnQoaW5kZXg6IG51bWJlcik6IFRhYkNoYW5nZUV2ZW50IHtcbiAgICBjb25zdCBldmVudCA9IG5ldyBUYWJDaGFuZ2VFdmVudCgpO1xuICAgIGV2ZW50LmluZGV4ID0gaW5kZXg7XG4gICAgaWYgKHRoaXMuX3RhYnM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIGV2ZW50LnRhYiA9IHRoaXMuX3RhYnMudG9BcnJheSgpW2luZGV4XTtcbiAgICB9XG4gICAgcmV0dXJuIGV2ZW50O1xuICB9XG5cbiAgLyoqXG4gICAqIFN1YnNjcmliZXMgdG8gY2hhbmdlcyBpbiB0aGUgdGFiIGxhYmVscy4gVGhpcyBpcyBuZWVkZWQsIGJlY2F1c2UgdGhlIEBJbnB1dCBmb3IgdGhlIGxhYmVsIGlzXG4gICAqIG9uIHRoZSBUYWIgY29tcG9uZW50LCB3aGVyZWFzIHRoZSBkYXRhIGJpbmRpbmcgaXMgaW5zaWRlIHRoZSBUYWJHcm91cC4gSW4gb3JkZXIgZm9yIHRoZVxuICAgKiBiaW5kaW5nIHRvIGJlIHVwZGF0ZWQsIHdlIG5lZWQgdG8gc3Vic2NyaWJlIHRvIGNoYW5nZXMgaW4gaXQgYW5kIHRyaWdnZXIgY2hhbmdlIGRldGVjdGlvblxuICAgKiBtYW51YWxseS5cbiAgICovXG4gIHByaXZhdGUgX3N1YnNjcmliZVRvVGFiTGFiZWxzKCkge1xuICAgIGlmICh0aGlzLl90YWJMYWJlbFN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5fdGFiTGFiZWxTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgdGhpcy5fdGFiTGFiZWxTdWJzY3JpcHRpb24gPSBtZXJnZShcbiAgICAgIC4uLnRoaXMuX3RhYnMubWFwKHRhYiA9PiB0YWIuX3N0YXRlQ2hhbmdlcyksXG4gICAgICB0aGlzLl90eXBlQ2hhbmdlLFxuICAgICAgdGhpcy5fc2l6ZUNoYW5nZSxcbiAgICApLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnJlYWxpZ25BY3RpdmVJbmRpY2F0b3IoKTtcbiAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqIFJldHJpZXZlcyB0aGUgdGFiaW5kZXggZm9yIHRoZSB0YWIuICovXG4gIF9nZXRUYWJJbmRleCh0YWI6IFRhYkNvbXBvbmVudCwgaWR4OiBudW1iZXIpOiBudW1iZXIgfCBudWxsIHtcbiAgICBpZiAodGFiLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRJbmRleCA9PT0gaWR4ID8gMCA6IC0xO1xuICB9XG59XG4iLCI8ZGl2IFtuZ0NsYXNzXT1cImJlbS5ibG9jaygpXCI+XG4gIDxhdWktdGFiLWhlYWRlclxuICAgIFtzZWxlY3RlZEluZGV4XT1cInNlbGVjdGVkSW5kZXhcIlxuICAgIFt0eXBlXT1cInR5cGVcIlxuICAgIFtzaXplXT1cInNpemVcIlxuICAgIChpbmRleEZvY3VzZWQpPVwiX2ZvY3VzQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAoc2VsZWN0Rm9jdXNlZEluZGV4KT1cInNlbGVjdGVkSW5kZXggPSAkZXZlbnRcIlxuICA+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIl90YWJUaXRsZVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqYXVpVGFiVGl0bGU+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbY2RrUG9ydGFsT3V0bGV0XT1cIl90YWJUaXRsZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8ZGl2XG4gICAgICByb2xlPVwidGFiXCJcbiAgICAgICpuZ0Zvcj1cImxldCB0YWIgb2YgX3RhYnM7IGxldCBpID0gaW5kZXhcIlxuICAgICAgYXVpVGFiTGFiZWxXcmFwcGVyXG4gICAgICBjZGtNb25pdG9yRWxlbWVudEZvY3VzXG4gICAgICBbY2xhc3MuaXNBY3RpdmVdPVwic2VsZWN0ZWRJbmRleCA9PT0gaVwiXG4gICAgICBbY2xhc3MuY2xvc2VhYmxlXT1cInRhYi5jbG9zZWFibGUgJiYgIXRhYi5kaXNhYmxlZFwiXG4gICAgICBbZGlzYWJsZWRdPVwidGFiLmRpc2FibGVkXCJcbiAgICAgIChjbGljayk9XCJfaGFuZGxlQ2xpY2sodGFiLCBpKVwiXG4gICAgICBbdGl0bGVdPVwidGFiLnRleHRMYWJlbFwiXG4gICAgICBbYXR0ci50YWJJbmRleF09XCJfZ2V0VGFiSW5kZXgodGFiLCBpKVwiXG4gICAgICBbYXR0ci5hcmlhLXBvc2luc2V0XT1cImkgKyAxXCJcbiAgICAgIFthdHRyLmFyaWEtc2V0c2l6ZV09XCJfdGFicy5sZW5ndGhcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0YWIudGV4dExhYmVsXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXVpLXRhYi1sYWJlbF9fY29udGVudFwiPlxuICAgICAgICA8IS0tIElmIHRoZXJlIGlzIGEgbGFiZWwgdGVtcGxhdGUsIHVzZSBpdC4gLS0+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJ0YWIudGVtcGxhdGVMYWJlbFwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbY2RrUG9ydGFsT3V0bGV0XT1cInRhYi50ZW1wbGF0ZUxhYmVsXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPCEtLSBJZiB0aGVyZSBpcyBub3QgYSBsYWJlbCB0ZW1wbGF0ZSwgZmFsbCBiYWNrIHRvIHRoZSB0ZXh0IGxhYmVsLiAtLT5cbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cIiF0YWIudGVtcGxhdGVMYWJlbFwiPlxuICAgICAgICAgIHt7IHRhYi50ZXh0TGFiZWwgfX1cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8YXVpLWljb25cbiAgICAgICAgKm5nSWY9XCJ0YWIuY2xvc2VhYmxlICYmICF0YWIuZGlzYWJsZWRcIlxuICAgICAgICBjbGFzcz1cImF1aS10YWItbGFiZWxfX2Nsb3NlXCJcbiAgICAgICAgaWNvbj1cInhtYXJrX3NtYWxsXCJcbiAgICAgICAgKGNsaWNrKT1cInRhYi5jbG9zZS5lbWl0KCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICA+PC9hdWktaWNvbj5cbiAgICA8L2Rpdj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJfaGVhZGVyQWRkb25cIj5cbiAgICAgIDxuZy1jb250YWluZXIgKmF1aVRhYkhlYWRlckFkZG9uPlxuICAgICAgICA8bmctdGVtcGxhdGUgW2Nka1BvcnRhbE91dGxldF09XCJfaGVhZGVyQWRkb25cIj48L25nLXRlbXBsYXRlPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvYXVpLXRhYi1oZWFkZXI+XG5cbiAgPGRpdiBbY2xhc3NdPVwiYmVtLmVsZW1lbnQoJ2JvZHktd3JhcHBlcicpXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxhenlcIj5cbiAgICAgIDxhdWktdGFiLWJvZHlcbiAgICAgICAgcm9sZT1cInRhYnBhbmVsXCJcbiAgICAgICAgKm5nRm9yPVwibGV0IHRhYiBvZiBhY3RpdmF0ZWRUYWJzXCJcbiAgICAgICAgW2NvbnRlbnRdPVwidGFiLmNvbnRlbnRcIlxuICAgICAgICBbaGlkZGVuXT1cInRhYiAhPT0gYWN0aXZlVGFiXCJcbiAgICAgID48L2F1aS10YWItYm9keT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8YXVpLXRhYi1ib2R5XG4gICAgICByb2xlPVwidGFicGFuZWxcIlxuICAgICAgKm5nSWY9XCIhbGF6eSAmJiBhY3RpdmVUYWJcIlxuICAgICAgW2NvbnRlbnRdPVwiYWN0aXZlVGFiLmNvbnRlbnRcIlxuICAgID48L2F1aS10YWItYm9keT5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
258
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90YWJzL3RhYi1ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi9zcmMvdGFicy90YWItZ3JvdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBR0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUlOLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXBELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQU8sUUFBUSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFbEQsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsd0JBQXdCLEVBQ3hCLGdCQUFnQixHQUNqQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGNBQWMsQ0FBQzs7OztBQUdoRCxNQUFNLE9BQU8sY0FBYztDQUsxQjtBQXlCRCxNQUFNLE9BQU8saUJBQWlCO0lBMkM1QixJQUNJLGFBQWE7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c0JBRG5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1wcm90b3R5cGUtYnVpbHRpbnMgKi9cbmltcG9ydCB7IEExMXlNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBQb3J0YWxNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IE5nQ2xhc3MsIE5nSWYsIE5nRm9yIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEFmdGVyQ29udGVudENoZWNrZWQsXG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIG1lcmdlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEljb25Db21wb25lbnQgfSBmcm9tICcuLi9pY29uL2ljb24uY29tcG9uZW50JztcbmltcG9ydCB7IEJlbSwgYnVpbGRCZW0gfSBmcm9tICcuLi9pbnRlcm5hbC91dGlscyc7XG5cbmltcG9ydCB7XG4gIFRhYkhlYWRlckFkZG9uRGlyZWN0aXZlLFxuICBUYWJUaXRsZURpcmVjdGl2ZSxcbiAgVGFiTGFiZWxXcmFwcGVyRGlyZWN0aXZlLFxuICBUYWJCb2R5Q29tcG9uZW50LFxufSBmcm9tICcuL3RhYi1ib2R5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYWJIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuL3RhYi1oZWFkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFRhYkNvbXBvbmVudCB9IGZyb20gJy4vdGFiLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYWJTaXplLCBUYWJUeXBlIH0gZnJvbSAnLi90YWJzLnR5cGVzJztcblxuLyoqIEEgc2ltcGxlIGNoYW5nZSBldmVudCBlbWl0dGVkIG9uIGZvY3VzIG9yIHNlbGVjdGlvbiBjaGFuZ2VzLiAqL1xuZXhwb3J0IGNsYXNzIFRhYkNoYW5nZUV2ZW50IHtcbiAgLyoqIEluZGV4IG9mIHRoZSBjdXJyZW50bHktc2VsZWN0ZWQgdGFiLiAqL1xuICBpbmRleDogbnVtYmVyO1xuICAvKiogUmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50bHktc2VsZWN0ZWQgdGFiLiAqL1xuICB0YWI6IFRhYkNvbXBvbmVudDtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXVpLXRhYi1ncm91cCcsXG4gIGV4cG9ydEFzOiAnYXVpVGFiR3JvdXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFiLWdyb3VwLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFiLWdyb3VwLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiBmYWxzZSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE5nQ2xhc3MsXG4gICAgVGFiSGVhZGVyQ29tcG9uZW50LFxuICAgIE5nSWYsXG4gICAgVGFiVGl0bGVEaXJlY3RpdmUsXG4gICAgUG9ydGFsTW9kdWxlLFxuICAgIE5nRm9yLFxuICAgIFRhYkxhYmVsV3JhcHBlckRpcmVjdGl2ZSxcbiAgICBBMTF5TW9kdWxlLFxuICAgIEljb25Db21wb25lbnQsXG4gICAgVGFiSGVhZGVyQWRkb25EaXJlY3RpdmUsXG4gICAgVGFiQm9keUNvbXBvbmVudCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVGFiR3JvdXBDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyQ29udGVudENoZWNrZWQsIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveVxue1xuICBiZW06IEJlbSA9IGJ1aWxkQmVtKCdhdWktdGFiLWdyb3VwJyk7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihUYWJDb21wb25lbnQpXG4gIF90YWJzOiBRdWVyeUxpc3Q8VGFiQ29tcG9uZW50PjtcblxuICBAQ29udGVudENoaWxkKFRhYkhlYWRlckFkZG9uRGlyZWN0aXZlLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgX2hlYWRlckFkZG9uOiBUYWJIZWFkZXJBZGRvbkRpcmVjdGl2ZTtcblxuICBAVmlld0NoaWxkKFRhYkhlYWRlckNvbXBvbmVudCwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIF90YWJIZWFkZXI6IFRhYkhlYWRlckNvbXBvbmVudDtcblxuICBAQ29udGVudENoaWxkKFRhYlRpdGxlRGlyZWN0aXZlLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgX3RhYlRpdGxlOiBUYWJUaXRsZURpcmVjdGl2ZTtcblxuICAvKiogVGhlIHRhYiBpbmRleCB0aGF0IHNob3VsZCBiZSBzZWxlY3RlZCBhZnRlciB0aGUgY29udGVudCBoYXMgYmVlbiBjaGVja2VkLiAqL1xuICBwcml2YXRlIF9pbmRleFRvU2VsZWN0ID0gMDtcblxuICAvKiogU3Vic2NyaXB0aW9uIHRvIHRhYnMgYmVpbmcgYWRkZWQvcmVtb3ZlZC4gKi9cbiAgcHJpdmF0ZSBfdGFic1N1YnNjcmlwdGlvbiA9IFN1YnNjcmlwdGlvbi5FTVBUWTtcblxuICAvKiogU3Vic2NyaXB0aW9uIHRvIGNoYW5nZXMgaW4gdGhlIHRhYiBsYWJlbHMuICovXG4gIHByaXZhdGUgX3RhYkxhYmVsU3Vic2NyaXB0aW9uID0gU3Vic2NyaXB0aW9uLkVNUFRZO1xuXG4gIHByaXZhdGUgX3NlbGVjdGVkSW5kZXg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF90YWI6IHN0cmluZyA9IG51bGw7XG4gIHByaXZhdGUgX3R5cGU6IFRhYlR5cGUgPSBUYWJUeXBlLkxpbmU7XG4gIHByaXZhdGUgX3NpemU6IFRhYlNpemUgPSBUYWJTaXplLk1lZGl1bTtcblxuICAvKiogdHJ1ZSBsYXp5IG1vZGUgZm9yIHRlbXBsYXRlIHJlZiBjaGlsZHJlbiAqL1xuICBwcml2YXRlIF9sYXp5OiBib29sZWFuO1xuXG4gIHByaXZhdGUgX3ByZXZpb3VzSGVhZGVyQWRkb246IFRhYkhlYWRlckFkZG9uRGlyZWN0aXZlO1xuXG4gIC8qKiBFbWl0cyB3aGVuZXZlciB0aGUgdHlwZSBjaGFuZ2VzICovXG4gIHJlYWRvbmx5IF90eXBlQ2hhbmdlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAvKiogRW1pdHMgd2hlbmV2ZXIgdGhlIHNpemUgY2hhbmdlcyAqL1xuICByZWFkb25seSBfc2l6ZUNoYW5nZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgLyoqIFRoZSBpbmRleCBvZiB0aGUgYWN0aXZlIHRhYi4gKi9cbiAgQElucHV0KClcbiAgZ2V0IHNlbGVjdGVkSW5kZXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRJbmRleDtcbiAgfVxuXG4gIHNldCBzZWxlY3RlZEluZGV4KHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9pbmRleFRvU2VsZWN0ID0gdmFsdWU7XG4gICAgdGhpcy5fY2hhbmdlQWN0aXZhdGVkVGFicygpO1xuICB9XG5cbiAgQElucHV0KClcbiAgZ2V0IHRhYigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl90YWI7XG4gIH1cblxuICBzZXQgdGFiKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl90YWIgPSB2YWx1ZTtcbiAgICBpZiAodGhpcy5fdGFicykge1xuICAgICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gdGhpcy5fZmluZEluZGV4QnlUYWIodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpXG4gIGdldCB0eXBlKCkge1xuICAgIHJldHVybiB0aGlzLl90eXBlO1xuICB9XG5cbiAgc2V0IHR5cGUodHlwZTogVGFiVHlwZSkge1xuICAgIHRoaXMuX3R5cGUgPSB0eXBlO1xuICB9XG5cbiAgQElucHV0KClcbiAgdGl0bGU6IHN0cmluZyB8IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIEBJbnB1dCgpXG4gIGdldCBzaXplKCkge1xuICAgIHJldHVybiB0aGlzLl9zaXplO1xuICB9XG5cbiAgc2V0IHNpemUodmFsKSB7XG4gICAgaWYgKCF2YWwgfHwgdGhpcy5fc2l6ZSA9PT0gdmFsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX3NpemUgPSB2YWw7XG4gIH1cblxuICBASW5wdXQoKVxuICBnZXQgbGF6eSgpIHtcbiAgICByZXR1cm4gdGhpcy5fbGF6eTtcbiAgfVxuXG4gIHNldCBsYXp5KGxhenk6IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy5fbGF6eSA9PT0gbGF6eSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9sYXp5ID0gbGF6eTtcbiAgICBpZiAobGF6eSkge1xuICAgICAgdGhpcy5fY2hhbmdlQWN0aXZhdGVkVGFicygpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFjdGl2YXRlZFRhYnMubGVuZ3RoID0gMDtcbiAgICB9XG4gIH1cblxuICAvKiogT3V0cHV0IHRvIGVuYWJsZSBzdXBwb3J0IGZvciB0d28td2F5IGJpbmRpbmcgb24gYFsoc2VsZWN0ZWRJbmRleCldYCAqL1xuICBAT3V0cHV0KClcbiAgcmVhZG9ubHkgc2VsZWN0ZWRJbmRleENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gIEBPdXRwdXQoKVxuICByZWFkb25seSB0YWJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSB0YWIgc2VsZWN0aW9uIGhhcyBjaGFuZ2VkLiAqL1xuICBAT3V0cHV0KClcbiAgcmVhZG9ubHkgc2VsZWN0ZWRUYWJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFRhYkNoYW5nZUV2ZW50Pih0cnVlKTtcblxuICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIGZvY3VzIGhhcyBjaGFuZ2VkIHdpdGhpbiBhIHRhYiBncm91cC4gKi9cbiAgQE91dHB1dCgpXG4gIHJlYWRvbmx5IGZvY3VzQ2hhbmdlOiBFdmVudEVtaXR0ZXI8VGFiQ2hhbmdlRXZlbnQ+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPFRhYkNoYW5nZUV2ZW50PigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICBhY3RpdmF0ZWRUYWJzOiBUYWJDb21wb25lbnRbXSA9IFtdO1xuXG4gIGdldCBhY3RpdmVUYWIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3RhYnMubGVuZ3RoID4gMCAmJiB0aGlzLnNlbGVjdGVkSW5kZXggIT09IG51bGxcbiAgICAgID8gdGhpcy5fdGFicy50b0FycmF5KClbdGhpcy5zZWxlY3RlZEluZGV4XVxuICAgICAgOiBudWxsO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLmhhc093blByb3BlcnR5KCd0eXBlJykpIHtcbiAgICAgIHRoaXMuX3R5cGVDaGFuZ2UubmV4dCgpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzLmhhc093blByb3BlcnR5KCdzaXplJykpIHtcbiAgICAgIHRoaXMuX3NpemVDaGFuZ2UubmV4dCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciB0aGUgY29udGVudCBpcyBjaGVja2VkLCB0aGlzIGNvbXBvbmVudCBrbm93cyB3aGF0IHRhYnMgaGF2ZSBiZWVuIGRlZmluZWRcbiAgICogYW5kIHdoYXQgdGhlIHNlbGVjdGVkIGluZGV4IHNob3VsZCBiZS4gVGhpcyBpcyB3aGVyZSB3ZSBjYW4ga25vdyBleGFjdGx5IHdoYXQgcG9zaXRpb25cbiAgICogZWFjaCB0YWIgc2hvdWxkIGJlIGluIGFjY29yZGluZyB0byB0aGUgbmV3IHNlbGVjdGVkIGluZGV4LlxuICAgKi9cbiAgbmdBZnRlckNvbnRlbnRDaGVja2VkKCk6IHZvaWQge1xuICAgIC8vIERvbid0IGNsYW1wIHRoZSBgaW5kZXhUb1NlbGVjdGAgaW1tZWRpYXRlbHkgaW4gdGhlIHNldHRlciBiZWNhdXNlIGl0IGNhbiBoYXBwZW4gdGhhdFxuICAgIC8vIHRoZSBhbW91bnQgb2YgdGFicyBjaGFuZ2VzIGJlZm9yZSB0aGUgYWN0dWFsIGNoYW5nZSBkZXRlY3Rpb24gcnVucy5cbiAgICBjb25zdCBpbmRleFRvU2VsZWN0ID0gKHRoaXMuX2luZGV4VG9TZWxlY3QgPSB0aGlzLl9jbGFtcFRhYkluZGV4KFxuICAgICAgdGhpcy5faW5kZXhUb1NlbGVjdCxcbiAgICApKTtcblxuICAgIC8vIElmIHRoZXJlIGlzIGEgY2hhbmdlIGluIHNlbGVjdGVkIGluZGV4LCBlbWl0IGEgY2hhbmdlIGV2ZW50LiBTaG91bGQgbm90IHRyaWdnZXIgaWZcbiAgICAvLyB0aGUgc2VsZWN0ZWQgaW5kZXggaGFzIG5vdCB5ZXQgYmVlbiBpbml0aWFsaXplZC5cbiAgICBpZiAodGhpcy5fc2VsZWN0ZWRJbmRleCAhPT0gaW5kZXhUb1NlbGVjdCAmJiB0aGlzLl9zZWxlY3RlZEluZGV4ICE9IG51bGwpIHtcbiAgICAgIHRoaXMuX2NoYW5nZUFjdGl2YXRlZFRhYnMoKTtcbiAgICAgIGNvbnN0IHRhYkNoYW5nZUV2ZW50ID0gdGhpcy5fY3JlYXRlQ2hhbmdlRXZlbnQoaW5kZXhUb1NlbGVjdCk7XG4gICAgICB0aGlzLnNlbGVjdGVkVGFiQ2hhbmdlLmVtaXQodGFiQ2hhbmdlRXZlbnQpO1xuICAgICAgLy8gRW1pdHRpbmcgdGhpcyB2YWx1ZSBhZnRlciBjaGFuZ2UgZGV0ZWN0aW9uIGhhcyBydW5cbiAgICAgIC8vIHNpbmNlIHRoZSBjaGVja2VkIGNvbnRlbnQgbWF5IGNvbnRhaW4gdGhpcyB2YXJpYWJsZSdcbiAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXhDaGFuZ2UuZW1pdChpbmRleFRvU2VsZWN0KTtcbiAgICAgICAgdGhpcy50YWJDaGFuZ2UuZW1pdCh0aGlzLl90YWJzLmdldChpbmRleFRvU2VsZWN0KS5uYW1lKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIFNldHVwIHRoZSBwb3NpdGlvbiBmb3IgZWFjaCB0YWIgYW5kIG9wdGlvbmFsbHkgc2V0dXAgYW4gb3JpZ2luIG9uIHRoZSBuZXh0IHNlbGVjdGVkIHRhYi5cbiAgICB0aGlzLl90YWJzLmZvckVhY2goKHRhYjogVGFiQ29tcG9uZW50LCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICB0YWIucG9zaXRpb24gPSBpbmRleCAtIGluZGV4VG9TZWxlY3Q7XG4gICAgICB0YWIudGFiQ29udGV4dC5pc0FjdGl2ZSA9IGluZGV4ID09PSBpbmRleFRvU2VsZWN0O1xuICAgICAgLy8gSWYgdGhlcmUgaXMgYWxyZWFkeSBhIHNlbGVjdGVkIHRhYiwgdGhlbiBzZXQgdXAgYW4gb3JpZ2luIGZvciB0aGUgbmV4dCBzZWxlY3RlZCB0YWJcbiAgICAgIC8vIGlmIGl0IGRvZXNuJ3QgaGF2ZSBvbmUgYWxyZWFkeS5cbiAgICAgIGlmICh0aGlzLl9zZWxlY3RlZEluZGV4ICE9IG51bGwgJiYgdGFiLnBvc2l0aW9uID09PSAwICYmICF0YWIub3JpZ2luKSB7XG4gICAgICAgIHRhYi5vcmlnaW4gPSBpbmRleFRvU2VsZWN0IC0gdGhpcy5fc2VsZWN0ZWRJbmRleDtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICh0aGlzLl9zZWxlY3RlZEluZGV4ICE9PSBpbmRleFRvU2VsZWN0KSB7XG4gICAgICB0aGlzLl9zZWxlY3RlZEluZGV4ID0gaW5kZXhUb1NlbGVjdDtcbiAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9wcmV2aW91c0hlYWRlckFkZG9uICE9PSB0aGlzLl9oZWFkZXJBZGRvbikge1xuICAgICAgdGhpcy5fcHJldmlvdXNIZWFkZXJBZGRvbiA9IHRoaXMuX2hlYWRlckFkZG9uO1xuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIGlmICh0aGlzLnRhYikge1xuICAgICAgdGhpcy5faW5kZXhUb1NlbGVjdCA9IHRoaXMuX2ZpbmRJbmRleEJ5VGFiKHRoaXMudGFiKTtcbiAgICB9XG5cbiAgICB0aGlzLl9jaGFuZ2VBY3RpdmF0ZWRUYWJzKCk7XG4gICAgdGhpcy5fc3Vic2NyaWJlVG9UYWJMYWJlbHMoKTtcbiAgICAvLyBTdWJzY3JpYmUgdG8gY2hhbmdlcyBpbiB0aGUgYW1vdW50IG9mIHRhYnMsIGluIG9yZGVyIHRvIGJlXG4gICAgLy8gYWJsZSB0byByZS1yZW5kZXIgdGhlIGNvbnRlbnQgYXMgbmV3IHRhYnMgYXJlIGFkZGVkIG9yIHJlbW92ZWQuXG4gICAgdGhpcy5fdGFic1N1YnNjcmlwdGlvbiA9IHRoaXMuX3RhYnMuY2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgY29uc3QgdGFicyA9IHRoaXMuX3RhYnMudG9BcnJheSgpO1xuICAgICAgaWYgKHRoaXMuX2xhenkpIHtcbiAgICAgICAgdGhpcy5hY3RpdmF0ZWRUYWJzID0gdGhpcy5hY3RpdmF0ZWRUYWJzLmZpbHRlcih0YWIgPT5cbiAgICAgICAgICB0YWJzLmluY2x1ZGVzKHRhYiksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBjb25zdCBpbmRleFRvU2VsZWN0ID0gdGhpcy5fY2xhbXBUYWJJbmRleCh0aGlzLl9pbmRleFRvU2VsZWN0KTtcbiAgICAgIC8vIE1haW50YWluIHRoZSBwcmV2aW91c2x5LXNlbGVjdGVkIHRhYiBpZiBhIG5ldyB0YWIgaXMgYWRkZWQgb3IgcmVtb3ZlZCBhbmQgdGhlcmUgaXMgbm9cbiAgICAgIC8vIGV4cGxpY2l0IGNoYW5nZSB0aGF0IHNlbGVjdHMgYSBkaWZmZXJlbnQgdGFiLlxuICAgICAgaWYgKGluZGV4VG9TZWxlY3QgPT09IHRoaXMuX3NlbGVjdGVkSW5kZXgpIHtcbiAgICAgICAgZm9yIChjb25zdCBbaSwgdGFiXSBvZiB0YWJzLmVudHJpZXMoKSkge1xuICAgICAgICAgIGlmICh0YWIudGFiQ29udGV4dC5pc0FjdGl2ZSkge1xuICAgICAgICAgICAgLy8gQXNzaWduIGJvdGggdG8gdGhlIGBfaW5kZXhUb1NlbGVjdGAgYW5kIGBfc2VsZWN0ZWRJbmRleGAgc28gd2UgZG9uJ3QgZmlyZSBhIGNoYW5nZWRcbiAgICAgICAgICAgIC8vIGV2ZW50LCBvdGhlcndpc2UgdGhlIGNvbnN1bWVyIG1heSBlbmQgdXAgaW4gYW4gaW5maW5pdGUgbG9vcCBpbiBzb21lIGVkZ2UgY2FzZXMgbGlrZVxuICAgICAgICAgICAgLy8gYWRkaW5nIGEgdGFiIHdpdGhpbiB0aGUgYHNlbGVjdGVkSW5kZXhDaGFuZ2VgIGV2ZW50LlxuICAgICAgICAgICAgdGhpcy5faW5kZXhUb1NlbGVjdCA9IHRoaXMuX3NlbGVjdGVkSW5kZXggPSBpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLl9jaGFuZ2VBY3RpdmF0ZWRUYWJzKCk7XG4gICAgICB0aGlzLl9zdWJzY3JpYmVUb1RhYkxhYmVscygpO1xuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl90YWJzU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5fdGFiTGFiZWxTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcblxuICAgIHRoaXMuX3R5cGVDaGFuZ2UuY29tcGxldGUoKTtcbiAgICB0aGlzLl9zaXplQ2hhbmdlLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKiogSGFuZGxlIGNsaWNrIGV2ZW50cywgc2V0dGluZyBuZXcgc2VsZWN0ZWQgaW5kZXggaWYgYXBwcm9wcmlhdGUuICovXG4gIF9oYW5kbGVDbGljayh0YWI6IFRhYkNvbXBvbmVudCwgaWR4OiBudW1iZXIpIHtcbiAgICBpZiAoIXRhYi5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gdGhpcy5fdGFiSGVhZGVyLmZvY3VzSW5kZXggPSBpZHg7XG4gICAgfVxuICB9XG5cbiAgX2ZvY3VzQ2hhbmdlZChpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5mb2N1c0NoYW5nZS5lbWl0KHRoaXMuX2NyZWF0ZUNoYW5nZUV2ZW50KGluZGV4KSk7XG4gIH1cblxuICAvKiogUmUtYWxpZ25zIHRoZSBpbmsgYmFyIHRvIHRoZSBzZWxlY3RlZCB0YWIgZWxlbWVudC4gKi9cbiAgcmVhbGlnbkFjdGl2ZUluZGljYXRvcigpIHtcbiAgICBpZiAodGhpcy5fdGFiSGVhZGVyKSB7XG4gICAgICB0aGlzLl90YWJIZWFkZXIuX2FsaWduQWN0aXZlSW5kaWNhdG9yVG9TZWxlY3RlZFRhYigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2NoYW5nZUFjdGl2YXRlZFRhYnMoKSB7XG4gICAgaWYgKFxuICAgICAgIXRoaXMuX2xhenkgfHxcbiAgICAgICF0aGlzLl90YWJzIHx8XG4gICAgICB0aGlzLl9pbmRleFRvU2VsZWN0IDwgMCB8fFxuICAgICAgdGhpcy5faW5kZXhUb1NlbGVjdCA+PSB0aGlzLl90YWJzLmxlbmd0aFxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB0YWIgPSB0aGlzLl90YWJzLmZpbmQoKF8sIGluZGV4KSA9PiBpbmRleCA9PT0gdGhpcy5faW5kZXhUb1NlbGVjdCk7XG4gICAgaWYgKHRhYiAmJiAhdGhpcy5hY3RpdmF0ZWRUYWJzLmluY2x1ZGVzKHRhYikpIHtcbiAgICAgIHRoaXMuYWN0aXZhdGVkVGFicy5wdXNoKHRhYik7XG4gICAgfVxuICB9XG5cbiAgLyoqIENsYW1wcyB0aGUgZ2l2ZW4gaW5kZXggdG8gdGhlIGJvdW5kcyBvZiAwIGFuZCB0aGUgdGFicyBsZW5ndGguICovXG4gIHByaXZhdGUgX2NsYW1wVGFiSW5kZXgoaW5kZXg6IG51bWJlciB8IG51bGwpOiBudW1iZXIge1xuICAgIC8vIE5vdGUgdGhlIGB8fCAwYCwgd2hpY2ggZW5zdXJlcyB0aGF0IHZhbHVlcyBsaWtlIE5hTiBjYW4ndCBnZXQgdGhyb3VnaFxuICAgIC8vIGFuZCB3aGljaCB3b3VsZCBvdGhlcndpc2UgdGhyb3cgdGhlIGNvbXBvbmVudCBpbnRvIGFuIGluZmluaXRlIGxvb3BcbiAgICAvLyAoc2luY2UgTWF0aC5tYXgoTmFOLCAwKSA9PT0gTmFOKS5cbiAgICByZXR1cm4gTWF0aC5taW4odGhpcy5fdGFicy5sZW5ndGggLSAxLCBNYXRoLm1heChpbmRleCB8fCAwLCAwKSk7XG4gIH1cblxuICBwcml2YXRlIF9maW5kSW5kZXhCeVRhYihuYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gTWF0aC5tYXgoXG4gICAgICB0aGlzLl90YWJzLnRvQXJyYXkoKS5maW5kSW5kZXgodGFiID0+IHRhYi5uYW1lID09PSBuYW1lKSxcbiAgICAgIDAsXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NyZWF0ZUNoYW5nZUV2ZW50KGluZGV4OiBudW1iZXIpOiBUYWJDaGFuZ2VFdmVudCB7XG4gICAgY29uc3QgZXZlbnQgPSBuZXcgVGFiQ2hhbmdlRXZlbnQoKTtcbiAgICBldmVudC5pbmRleCA9IGluZGV4O1xuICAgIGlmICh0aGlzLl90YWJzPy5sZW5ndGggPiAwKSB7XG4gICAgICBldmVudC50YWIgPSB0aGlzLl90YWJzLnRvQXJyYXkoKVtpbmRleF07XG4gICAgfVxuICAgIHJldHVybiBldmVudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJzY3JpYmVzIHRvIGNoYW5nZXMgaW4gdGhlIHRhYiBsYWJlbHMuIFRoaXMgaXMgbmVlZGVkLCBiZWNhdXNlIHRoZSBASW5wdXQgZm9yIHRoZSBsYWJlbCBpc1xuICAgKiBvbiB0aGUgVGFiIGNvbXBvbmVudCwgd2hlcmVhcyB0aGUgZGF0YSBiaW5kaW5nIGlzIGluc2lkZSB0aGUgVGFiR3JvdXAuIEluIG9yZGVyIGZvciB0aGVcbiAgICogYmluZGluZyB0byBiZSB1cGRhdGVkLCB3ZSBuZWVkIHRvIHN1YnNjcmliZSB0byBjaGFuZ2VzIGluIGl0IGFuZCB0cmlnZ2VyIGNoYW5nZSBkZXRlY3Rpb25cbiAgICogbWFudWFsbHkuXG4gICAqL1xuICBwcml2YXRlIF9zdWJzY3JpYmVUb1RhYkxhYmVscygpIHtcbiAgICBpZiAodGhpcy5fdGFiTGFiZWxTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuX3RhYkxhYmVsU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIHRoaXMuX3RhYkxhYmVsU3Vic2NyaXB0aW9uID0gbWVyZ2UoXG4gICAgICAuLi50aGlzLl90YWJzLm1hcCh0YWIgPT4gdGFiLl9zdGF0ZUNoYW5nZXMpLFxuICAgICAgdGhpcy5fdHlwZUNoYW5nZSxcbiAgICAgIHRoaXMuX3NpemVDaGFuZ2UsXG4gICAgKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5yZWFsaWduQWN0aXZlSW5kaWNhdG9yKCk7XG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBSZXRyaWV2ZXMgdGhlIHRhYmluZGV4IGZvciB0aGUgdGFiLiAqL1xuICBfZ2V0VGFiSW5kZXgodGFiOiBUYWJDb21wb25lbnQsIGlkeDogbnVtYmVyKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgaWYgKHRhYi5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkSW5kZXggPT09IGlkeCA/IDAgOiAtMTtcbiAgfVxufVxuIiwiPGRpdiBbbmdDbGFzc109XCJiZW0uYmxvY2soKVwiPlxuICA8YXVpLXRhYi1oZWFkZXJcbiAgICBbc2VsZWN0ZWRJbmRleF09XCJzZWxlY3RlZEluZGV4XCJcbiAgICBbdHlwZV09XCJ0eXBlXCJcbiAgICBbc2l6ZV09XCJzaXplXCJcbiAgICAoaW5kZXhGb2N1c2VkKT1cIl9mb2N1c0NoYW5nZWQoJGV2ZW50KVwiXG4gICAgKHNlbGVjdEZvY3VzZWRJbmRleCk9XCJzZWxlY3RlZEluZGV4ID0gJGV2ZW50XCJcbiAgPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJfdGFiVGl0bGVcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKmF1aVRhYlRpdGxlPlxuICAgICAgICA8bmctdGVtcGxhdGUgW2Nka1BvcnRhbE91dGxldF09XCJfdGFiVGl0bGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPGRpdlxuICAgICAgcm9sZT1cInRhYlwiXG4gICAgICAqbmdGb3I9XCJsZXQgdGFiIG9mIF90YWJzOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgIGF1aVRhYkxhYmVsV3JhcHBlclxuICAgICAgY2RrTW9uaXRvckVsZW1lbnRGb2N1c1xuICAgICAgW2NsYXNzLmlzQWN0aXZlXT1cInNlbGVjdGVkSW5kZXggPT09IGlcIlxuICAgICAgW2NsYXNzLmNsb3NlYWJsZV09XCJ0YWIuY2xvc2VhYmxlICYmICF0YWIuZGlzYWJsZWRcIlxuICAgICAgW2Rpc2FibGVkXT1cInRhYi5kaXNhYmxlZFwiXG4gICAgICAoY2xpY2spPVwiX2hhbmRsZUNsaWNrKHRhYiwgaSlcIlxuICAgICAgW3RpdGxlXT1cInRhYi50ZXh0TGFiZWxcIlxuICAgICAgW2F0dHIudGFiSW5kZXhdPVwiX2dldFRhYkluZGV4KHRhYiwgaSlcIlxuICAgICAgW2F0dHIuYXJpYS1wb3NpbnNldF09XCJpICsgMVwiXG4gICAgICBbYXR0ci5hcmlhLXNldHNpemVdPVwiX3RhYnMubGVuZ3RoXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwidGFiLnRleHRMYWJlbFwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cImF1aS10YWItbGFiZWxfX2NvbnRlbnRcIj5cbiAgICAgICAgPCEtLSBJZiB0aGVyZSBpcyBhIGxhYmVsIHRlbXBsYXRlLCB1c2UgaXQuIC0tPlxuICAgICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwidGFiLnRlbXBsYXRlTGFiZWxcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgW2Nka1BvcnRhbE91dGxldF09XCJ0YWIudGVtcGxhdGVMYWJlbFwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwhLS0gSWYgdGhlcmUgaXMgbm90IGEgbGFiZWwgdGVtcGxhdGUsIGZhbGwgYmFjayB0byB0aGUgdGV4dCBsYWJlbC4gLS0+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCIhdGFiLnRlbXBsYXRlTGFiZWxcIj5cbiAgICAgICAgICB7eyB0YWIudGV4dExhYmVsIH19XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGF1aS1pY29uXG4gICAgICAgICpuZ0lmPVwidGFiLmNsb3NlYWJsZSAmJiAhdGFiLmRpc2FibGVkXCJcbiAgICAgICAgY2xhc3M9XCJhdWktdGFiLWxhYmVsX19jbG9zZVwiXG4gICAgICAgIGljb249XCJ4bWFya19zbWFsbFwiXG4gICAgICAgIChjbGljayk9XCJ0YWIuY2xvc2UuZW1pdCgpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgPjwvYXVpLWljb24+XG4gICAgPC9kaXY+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiX2hlYWRlckFkZG9uXCI+XG4gICAgICA8bmctY29udGFpbmVyICphdWlUYWJIZWFkZXJBZGRvbj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIFtjZGtQb3J0YWxPdXRsZXRdPVwiX2hlYWRlckFkZG9uXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2F1aS10YWItaGVhZGVyPlxuXG4gIDxkaXYgW2NsYXNzXT1cImJlbS5lbGVtZW50KCdib2R5LXdyYXBwZXInKVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsYXp5XCI+XG4gICAgICA8YXVpLXRhYi1ib2R5XG4gICAgICAgIHJvbGU9XCJ0YWJwYW5lbFwiXG4gICAgICAgICpuZ0Zvcj1cImxldCB0YWIgb2YgYWN0aXZhdGVkVGFic1wiXG4gICAgICAgIFtjb250ZW50XT1cInRhYi5jb250ZW50XCJcbiAgICAgICAgW2hpZGRlbl09XCJ0YWIgIT09IGFjdGl2ZVRhYlwiXG4gICAgICA+PC9hdWktdGFiLWJvZHk+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPGF1aS10YWItYm9keVxuICAgICAgcm9sZT1cInRhYnBhbmVsXCJcbiAgICAgICpuZ0lmPVwiIWxhenkgJiYgYWN0aXZlVGFiXCJcbiAgICAgIFtjb250ZW50XT1cImFjdGl2ZVRhYi5jb250ZW50XCJcbiAgICA+PC9hdWktdGFiLWJvZHk+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -4,13 +4,11 @@ import { buildBem } from '../internal/utils';
|
|
|
4
4
|
import { TabType } from './tabs.types';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
export class TabHeaderActiveIndicatorComponent {
|
|
7
|
-
_elementRef;
|
|
8
|
-
_ngZone;
|
|
9
|
-
type = TabType.Line;
|
|
10
|
-
bem = buildBem('aui-tab-header-active-indicator');
|
|
11
7
|
constructor(_elementRef, _ngZone) {
|
|
12
8
|
this._elementRef = _elementRef;
|
|
13
9
|
this._ngZone = _ngZone;
|
|
10
|
+
this.type = TabType.Line;
|
|
11
|
+
this.bem = buildBem('aui-tab-header-active-indicator');
|
|
14
12
|
}
|
|
15
13
|
alignToElement(element) {
|
|
16
14
|
this._ngZone.runOutsideAngular(() => {
|
|
@@ -29,8 +27,8 @@ export class TabHeaderActiveIndicatorComponent {
|
|
|
29
27
|
width: element ? (element.offsetWidth || 0) + 'px' : '0',
|
|
30
28
|
};
|
|
31
29
|
}
|
|
32
|
-
static
|
|
33
|
-
static
|
|
30
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: TabHeaderActiveIndicatorComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
31
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.3", type: TabHeaderActiveIndicatorComponent, isStandalone: true, selector: "aui-tab-header-active-indicator", inputs: { type: "type" }, ngImport: i0, template: "<div [ngClass]=\"bem.block(type)\"></div>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
34
32
|
}
|
|
35
33
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: TabHeaderActiveIndicatorComponent, decorators: [{
|
|
36
34
|
type: Component,
|
|
@@ -38,4 +36,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImpor
|
|
|
38
36
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { type: [{
|
|
39
37
|
type: Input
|
|
40
38
|
}] } });
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWhlYWRlci1hY3RpdmUtaW5kaWNhdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90YWJzL3RhYi1oZWFkZXItYWN0aXZlLWluZGljYXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi9zcmMvdGFicy90YWItaGVhZGVyLWFjdGl2ZS1pbmRpY2F0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUVULEtBQUssRUFFTCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFPLFFBQVEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWxELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBV3ZDLE1BQU0sT0FBTyxpQ0FBaUM7SUFNNUMsWUFDbUIsV0FBb0MsRUFDcEMsT0FBZTtRQURmLGdCQUFXLEdBQVgsV0FBVyxDQUF5QjtRQUNwQyxZQUFPLEdBQVAsT0FBTyxDQUFRO1FBTmxDLFNBQUksR0FBWSxPQUFPLENBQUMsSUFBSSxDQUFDO1FBRTdCLFFBQUcsR0FBUSxRQUFRLENBQUMsaUNBQWlDLENBQUMsQ0FBQztJQUtwRCxDQUFDO0lBT0osY0FBYyxDQUFDLE9BQW9CO1FBQ2pDLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO1lBQ2xDLHFCQUFxQixDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUN4RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFNTyxVQUFVLENBQUMsT0FBb0I7UUFDckMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3BELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDO1FBQ2hELFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUM7UUFDckMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQztJQUN6QyxDQUFDO0lBRU8sbUJBQW1CLENBQUMsT0FBb0I7UUFDOUMsT0FBTztZQUNMLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUc7WUFDdEQsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsV0FBVyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRztTQUN6RCxDQUFDO0lBQ0osQ0FBQzs4R0F0Q1UsaUNBQWlDO2tHQUFqQyxpQ0FBaUMscUhDdkI5Qyw2Q0FDQSw0Q0RvQlksT0FBTzs7MkZBRU4saUNBQWlDO2tCQVQ3QyxTQUFTOytCQUNFLGlDQUFpQyxpQkFFNUIsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSx1QkFDMUIsS0FBSyxjQUNkLElBQUksV0FDUCxDQUFDLE9BQU8sQ0FBQztzSEFJbEIsSUFBSTtzQkFESCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEJlbSwgYnVpbGRCZW0gfSBmcm9tICcuLi9pbnRlcm5hbC91dGlscyc7XG5cbmltcG9ydCB7IFRhYlR5cGUgfSBmcm9tICcuL3RhYnMudHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhdWktdGFiLWhlYWRlci1hY3RpdmUtaW5kaWNhdG9yJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYi1oZWFkZXItYWN0aXZlLWluZGljYXRvci5jb21wb25lbnQuaHRtbCcsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiBmYWxzZSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW05nQ2xhc3NdLFxufSlcbmV4cG9ydCBjbGFzcyBUYWJIZWFkZXJBY3RpdmVJbmRpY2F0b3JDb21wb25lbnQge1xuICBASW5wdXQoKVxuICB0eXBlOiBUYWJUeXBlID0gVGFiVHlwZS5MaW5lO1xuXG4gIGJlbTogQmVtID0gYnVpbGRCZW0oJ2F1aS10YWItaGVhZGVyLWFjdGl2ZS1pbmRpY2F0b3InKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9lbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9uZ1pvbmU6IE5nWm9uZSxcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGVzIHRoZSBzdHlsZXMgZnJvbSB0aGUgcHJvdmlkZWQgZWxlbWVudCBpbiBvcmRlciB0byBhbGlnbiB0aGUgaW5kaWNhdG9yIHRvIHRoYXQgZWxlbWVudC5cbiAgICogU2hvd3MgdGhlIGluZGljYXRvciBpZiBwcmV2aW91c2x5IHNldCBhcyBoaWRkZW4uXG4gICAqIEBwYXJhbSBlbGVtZW50XG4gICAqL1xuICBhbGlnblRvRWxlbWVudChlbGVtZW50OiBIVE1MRWxlbWVudCkge1xuICAgIHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4gdGhpcy5fc2V0U3R5bGVzKGVsZW1lbnQpKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBwcm9wZXIgc3R5bGVzIHRvIHRoZSBlbGVtZW50LlxuICAgKiBAcGFyYW0gZWxlbWVudFxuICAgKi9cbiAgcHJpdmF0ZSBfc2V0U3R5bGVzKGVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XG4gICAgY29uc3QgcG9zaXRpb25zID0gdGhpcy5fZ2V0RWxlbWVudFBvc2l0aW9uKGVsZW1lbnQpO1xuICAgIGNvbnN0IG5hdGl2ZUVsID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIG5hdGl2ZUVsLnN0eWxlLmxlZnQgPSBwb3NpdGlvbnMubGVmdDtcbiAgICBuYXRpdmVFbC5zdHlsZS53aWR0aCA9IHBvc2l0aW9ucy53aWR0aDtcbiAgfVxuXG4gIHByaXZhdGUgX2dldEVsZW1lbnRQb3NpdGlvbihlbGVtZW50OiBIVE1MRWxlbWVudCkge1xuICAgIHJldHVybiB7XG4gICAgICBsZWZ0OiBlbGVtZW50ID8gKGVsZW1lbnQub2Zmc2V0TGVmdCB8fCAwKSArICdweCcgOiAnMCcsXG4gICAgICB3aWR0aDogZWxlbWVudCA/IChlbGVtZW50Lm9mZnNldFdpZHRoIHx8IDApICsgJ3B4JyA6ICcwJyxcbiAgICB9O1xuICB9XG59XG4iLCI8ZGl2IFtuZ0NsYXNzXT1cImJlbS5ibG9jayh0eXBlKVwiPjwvZGl2PlxuIl19
|
|
@@ -14,20 +14,6 @@ import * as i1 from "@angular/cdk/portal";
|
|
|
14
14
|
import * as i2 from "@angular/cdk/observers";
|
|
15
15
|
const EXAGGERATED_OVERSCROLL = 60;
|
|
16
16
|
export class TabHeaderComponent {
|
|
17
|
-
_changeDetectorRef;
|
|
18
|
-
bem = buildBem('aui-tab-header');
|
|
19
|
-
_showAddon = false;
|
|
20
|
-
_showPaginationControls = false;
|
|
21
|
-
_disableScrollAfter = true;
|
|
22
|
-
_disableScrollBefore = true;
|
|
23
|
-
_scrollDistanceChanged;
|
|
24
|
-
_selectedIndexChanged = false;
|
|
25
|
-
_scrollDistance = 0;
|
|
26
|
-
_selectedIndex = 0;
|
|
27
|
-
_destroyed = new Subject();
|
|
28
|
-
_keyManager;
|
|
29
|
-
type = TabType.Line;
|
|
30
|
-
size = TabSize.Medium;
|
|
31
17
|
get selectedIndex() {
|
|
32
18
|
return this._selectedIndex;
|
|
33
19
|
}
|
|
@@ -38,15 +24,6 @@ export class TabHeaderComponent {
|
|
|
38
24
|
this._keyManager.updateActiveItem(value);
|
|
39
25
|
}
|
|
40
26
|
}
|
|
41
|
-
selectFocusedIndex = new EventEmitter();
|
|
42
|
-
indexFocused = new EventEmitter();
|
|
43
|
-
_headerAddon;
|
|
44
|
-
_title;
|
|
45
|
-
_labelWrappers;
|
|
46
|
-
_tabListContainer;
|
|
47
|
-
_tabList;
|
|
48
|
-
_paginationWrapper;
|
|
49
|
-
_activeIndicator;
|
|
50
27
|
ngOnDestroy() {
|
|
51
28
|
this._destroyed.next();
|
|
52
29
|
this._destroyed.complete();
|
|
@@ -225,9 +202,22 @@ export class TabHeaderComponent {
|
|
|
225
202
|
}
|
|
226
203
|
constructor(_changeDetectorRef) {
|
|
227
204
|
this._changeDetectorRef = _changeDetectorRef;
|
|
205
|
+
this.bem = buildBem('aui-tab-header');
|
|
206
|
+
this._showAddon = false;
|
|
207
|
+
this._showPaginationControls = false;
|
|
208
|
+
this._disableScrollAfter = true;
|
|
209
|
+
this._disableScrollBefore = true;
|
|
210
|
+
this._selectedIndexChanged = false;
|
|
211
|
+
this._scrollDistance = 0;
|
|
212
|
+
this._selectedIndex = 0;
|
|
213
|
+
this._destroyed = new Subject();
|
|
214
|
+
this.type = TabType.Line;
|
|
215
|
+
this.size = TabSize.Medium;
|
|
216
|
+
this.selectFocusedIndex = new EventEmitter();
|
|
217
|
+
this.indexFocused = new EventEmitter();
|
|
228
218
|
}
|
|
229
|
-
static
|
|
230
|
-
static
|
|
219
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: TabHeaderComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
220
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.3", type: TabHeaderComponent, isStandalone: true, selector: "aui-tab-header", inputs: { type: "type", size: "size", selectedIndex: "selectedIndex" }, outputs: { selectFocusedIndex: "selectFocusedIndex", indexFocused: "indexFocused" }, queries: [{ propertyName: "_headerAddon", first: true, predicate: TabHeaderAddonDirective, descendants: true }, { propertyName: "_title", first: true, predicate: TabTitleDirective, descendants: true }, { propertyName: "_labelWrappers", predicate: TabLabelWrapperDirective }], viewQueries: [{ propertyName: "_tabListContainer", first: true, predicate: ["tabListContainer"], descendants: true, static: true }, { propertyName: "_tabList", first: true, predicate: ["tabList"], descendants: true, static: true }, { propertyName: "_paginationWrapper", first: true, predicate: ["paginationWrapper"], descendants: true, static: true }, { propertyName: "_activeIndicator", first: true, predicate: TabHeaderActiveIndicatorComponent, descendants: true, static: true }], ngImport: i0, template: "<div [ngClass]=\"bem.block(type, size)\">\n <ng-container *ngIf=\"_title\">\n <div [ngClass]=\"bem.element('title')\">\n <ng-template [cdkPortalOutlet]=\"_title\"></ng-template>\n </div>\n </ng-container>\n <div [ngClass]=\"bem.element('header-wrapper')\">\n <div\n [ngClass]=\"bem.element('pagination-wrapper')\"\n #paginationWrapper\n >\n <div\n *ngIf=\"_showPaginationControls\"\n (click)=\"_scrollHeader('before')\"\n [attr.disabled]=\"_disableScrollBefore ? '' : null\"\n [ngClass]=\"bem.element('pagination-button')\"\n >\n <aui-icon icon=\"angle_left\"></aui-icon>\n </div>\n <div\n [ngClass]=\"bem.element('tab-list-container')\"\n (keydown)=\"_handleKeydown($event)\"\n #tabListContainer\n >\n <div\n role=\"tablist\"\n (cdkObserveContent)=\"_onContentChanges()\"\n [ngClass]=\"bem.element('tab-list')\"\n #tabList\n >\n <div [ngClass]=\"bem.element('labels')\"><ng-content></ng-content></div>\n <aui-tab-header-active-indicator\n [type]=\"type\"\n ></aui-tab-header-active-indicator>\n </div>\n </div>\n <div\n *ngIf=\"_showPaginationControls\"\n (click)=\"_scrollHeader('after')\"\n [attr.disabled]=\"_disableScrollAfter ? '' : null\"\n [ngClass]=\"bem.element('pagination-button')\"\n >\n <aui-icon icon=\"angle_right\"></aui-icon>\n </div>\n </div>\n <!-- If there is addon template, use it. -->\n <ng-container *ngIf=\"_showAddon\">\n <div [ngClass]=\"bem.element('addon')\">\n <ng-template [cdkPortalOutlet]=\"_headerAddon\"></ng-template>\n </div>\n </ng-container>\n </div>\n</div>\n", styles: [".aui-tab-header{display:flex;flex-direction:column;flex-shrink:0;position:relative;background-color:rgb(var(--aui-color-n-10));border-radius:var(--aui-border-radius-l);overflow:hidden}.aui-tab-header--large .aui-tab-label{padding:16px 20px;font-size:var(--aui-font-size-xl);line-height:var(--aui-line-height-xl);font-weight:var(--aui-font-weight-bolder)}.aui-tab-header--medium .aui-tab-label{padding:12px 20px;font-size:var(--aui-font-size-l);line-height:var(--aui-line-height-l);font-weight:var(--aui-font-weight-bolder)}.aui-tab-header--small .aui-tab-label{padding:8px 16px;font-size:var(--aui-font-size-m);line-height:var(--aui-line-height-m);font-weight:var(--aui-font-weight-normal)}.aui-tab-header__header-wrapper{display:flex;flex-shrink:0;position:relative}.aui-tab-header__title{display:flex;justify-content:space-between;color:rgb(var(--aui-color-n-1));font-size:var(--aui-font-size-xxl);margin-inline:20px;padding:20px 0 12px;font-weight:var(--aui-font-weight-bolder);border-bottom:1px rgb(var(--aui-color-n-8)) solid;line-height:32px}.aui-tab-header--card{background-color:rgb(var(--aui-color-button-bg))}.aui-tab-header--line{box-shadow:0 0 4px #3234371a;background-color:rgb(var(--aui-color-n-10))}.aui-tab-header__pagination-wrapper{display:flex;overflow:hidden;flex-grow:1;align-items:center;position:relative}.aui-tab-header__pagination-button{width:32px;align-self:stretch;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;cursor:pointer;z-index:3;box-shadow:0 0 4px #ccc;opacity:.6;transition:box-shadow .3s,opacity .3s,color .3s}.aui-tab-header__pagination-button:hover{opacity:1;color:rgb(var(--aui-color-primary))}.aui-tab-header__pagination-button:first-of-type{margin-right:1px}.aui-tab-header__pagination-button:last-of-type{margin-left:1px}.aui-tab-header__pagination-button[disabled]{cursor:default;box-shadow:none;opacity:.1}.aui-tab-header__tab-list-container{display:flex;flex-grow:1;overflow:hidden;position:relative;z-index:1}.aui-tab-header__tab-list{flex-grow:1;position:relative;transition:all .3s cubic-bezier(.35,0,.25,1)}.aui-tab-header__labels{display:flex}.aui-tab-header__labels:focus{outline:none}.aui-tab-header__addon{display:inline-flex;align-items:center;justify-content:center;margin:0 8px}.aui-tab-header__spacer{flex:1 1 0}.aui-tab-label{position:relative;cursor:pointer;box-sizing:border-box;text-align:center;display:inline-flex;justify-content:center;align-items:center;white-space:nowrap;color:rgb(var(--aui-color-n-2));font-weight:var(--aui-font-weight-bold);z-index:2;transition:opacity .3s}.aui-tab-label:focus,.aui-tab-label.isActive{outline:none}.aui-tab-label:not(.aui-tab-label--disabled).isActive,.aui-tab-label:not(.aui-tab-label--disabled):hover{color:rgb(var(--aui-color-primary))}.aui-tab-label.aui-tab-label--disabled{cursor:not-allowed;opacity:.2}.aui-tab-label__content{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.aui-tab-label__close{margin-left:8px;font-size:16px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;color:rgb(var(--aui-color-n-4));transition:all .3s ease}.aui-tab-label__close:hover{color:rgb(var(--aui-color-n-9));background-color:rgb(var(--aui-color-n-4))}.aui-tab-label.cdk-focused:not(.cdk-mouse-focused){box-shadow:inset 0 0 0 3px rgba(var(--aui-color-primary),.3)}aui-tab-header-active-indicator{display:flex;height:100%;position:absolute;top:0;pointer-events:none;transition:all .3s cubic-bezier(.35,0,.25,1)}.aui-tab-header-active-indicator{position:relative;flex:1;height:100%;z-index:1}.aui-tab-header-active-indicator:after{content:\"\";position:absolute;display:block;background:rgb(var(--aui-color-primary));height:2px}.aui-tab-header-active-indicator--line:after{width:100%;left:0;bottom:0}.aui-tab-header-active-indicator--card{background-color:rgb(var(--aui-color-n-10))}.aui-tab-header-active-indicator--card:after{width:100%;top:0;left:0}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i1.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "component", type: IconComponent, selector: "aui-icon", inputs: ["icon", "light", "dark", "link", "margin", "size", "color", "background", "backgroundColor"] }, { kind: "ngmodule", type: ObserversModule }, { kind: "directive", type: i2.CdkObserveContent, selector: "[cdkObserveContent]", inputs: ["cdkObserveContentDisabled", "debounce"], outputs: ["cdkObserveContent"], exportAs: ["cdkObserveContent"] }, { kind: "component", type: TabHeaderActiveIndicatorComponent, selector: "aui-tab-header-active-indicator", inputs: ["type"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
231
221
|
}
|
|
232
222
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: TabHeaderComponent, decorators: [{
|
|
233
223
|
type: Component,
|
|
@@ -271,4 +261,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImpor
|
|
|
271
261
|
type: ViewChild,
|
|
272
262
|
args: [TabHeaderActiveIndicatorComponent, { static: true }]
|
|
273
263
|
}] } });
|
|
274
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWhlYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGFicy90YWItaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL3NyYy90YWJzL3RhYi1oZWFkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBR0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUVmLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUVOLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFPLFFBQVEsRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVuRSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLHdCQUF3QixFQUN4QixpQkFBaUIsR0FDbEIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUM1RixPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGNBQWMsQ0FBQzs7OztBQVloRCxNQUFNLHNCQUFzQixHQUFHLEVBQUUsQ0FBQztBQW1CbEMsTUFBTSxPQUFPLGtCQUFrQjtJQTRYQTtJQXpY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QXdCO2dCQU96QyxpQkFBaUI7c0JBRGhCLFNBQVM7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUkvQyxRQUFRO3NCQURQLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJdEMsa0JBQWtCO3NCQURqQixTQUFTO3VCQUFDLG1CQUFtQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJaEQsZ0JBQWdCO3NCQURmLFNBQVM7dUJBQUMsaUNBQWlDLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9jdXNLZXlNYW5hZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgT2JzZXJ2ZXJzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL29ic2VydmVycyc7XG5pbXBvcnQgeyBQb3J0YWxNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IE5nQ2xhc3MsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50Q2hlY2tlZCxcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QsIGRlYm91bmNlVGltZSwgbWVyZ2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vaWNvbi9pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCZW0sIGJ1aWxkQmVtLCBvYnNlcnZlUmVzaXplT24gfSBmcm9tICcuLi9pbnRlcm5hbC91dGlscyc7XG5cbmltcG9ydCB7XG4gIFRhYkhlYWRlckFkZG9uRGlyZWN0aXZlLFxuICBUYWJMYWJlbFdyYXBwZXJEaXJlY3RpdmUsXG4gIFRhYlRpdGxlRGlyZWN0aXZlLFxufSBmcm9tICcuL3RhYi1ib2R5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYWJIZWFkZXJBY3RpdmVJbmRpY2F0b3JDb21wb25lbnQgfSBmcm9tICcuL3RhYi1oZWFkZXItYWN0aXZlLWluZGljYXRvci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGFiU2l6ZSwgVGFiVHlwZSB9IGZyb20gJy4vdGFicy50eXBlcyc7XG5cbi8qKlxuICogVGhlIGRpcmVjdGlvbnMgdGhhdCBzY3JvbGxpbmcgY2FuIGdvIGluIHdoZW4gdGhlIGhlYWRlcidzIHRhYnMgZXhjZWVkIHRoZSBoZWFkZXIgd2lkdGguICdBZnRlcidcbiAqIHdpbGwgc2Nyb2xsIHRoZSBoZWFkZXIgdG93YXJkcyB0aGUgZW5kIG9mIHRoZSB0YWJzIGxpc3QgYW5kICdiZWZvcmUnIHdpbGwgc2Nyb2xsIHRvd2FyZHMgdGhlXG4gKiBiZWdpbm5pbmcgb2YgdGhlIGxpc3QuXG4gKi9cbmV4cG9ydCB0eXBlIFNjcm9sbERpcmVjdGlvbiA9ICdhZnRlcicgfCAnYmVmb3JlJztcbi8qKlxuICogVGhlIGRpc3RhbmNlIGluIHBpeGVscyB0aGF0IHdpbGwgYmUgb3ZlcnNob3Qgd2hlbiBzY3JvbGxpbmcgYSB0YWIgbGFiZWwgaW50byB2aWV3LiBUaGlzIGhlbHBzXG4gKiBwcm92aWRlIGEgc21hbGwgYWZmb3JkYW5jZSB0byB0aGUgbGFiZWwgbmV4dCB0byBpdC5cbiAqL1xuY29uc3QgRVhBR0dFUkFURURfT1ZFUlNDUk9MTCA9IDYwO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhdWktdGFiLWhlYWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWItaGVhZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFiLWhlYWRlci5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiBmYWxzZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBOZ0NsYXNzLFxuICAgIE5nSWYsXG4gICAgUG9ydGFsTW9kdWxlLFxuICAgIEljb25Db21wb25lbnQsXG4gICAgT2JzZXJ2ZXJzTW9kdWxlLFxuICAgIFRhYkhlYWRlckFjdGl2ZUluZGljYXRvckNvbXBvbmVudCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVGFiSGVhZGVyQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25EZXN0cm95LCBBZnRlckNvbnRlbnRDaGVja2VkLCBBZnRlckNvbnRlbnRJbml0XG57XG4gIGJlbTogQmVtID0gYnVpbGRCZW0oJ2F1aS10YWItaGVhZGVyJyk7XG5cbiAgX3Nob3dBZGRvbiA9IGZhbHNlO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBjb250cm9scyBmb3IgcGFnaW5hdGlvbiBzaG91bGQgYmUgZGlzcGxheWVkICovXG4gIF9zaG93UGFnaW5hdGlvbkNvbnRyb2xzID0gZmFsc2U7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIHRhYiBsaXN0IGNhbiBiZSBzY3JvbGxlZCBtb3JlIHRvd2FyZHMgdGhlIGVuZCBvZiB0aGUgdGFiIGxhYmVsIGxpc3QuICovXG4gIF9kaXNhYmxlU2Nyb2xsQWZ0ZXIgPSB0cnVlO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSB0YWIgbGlzdCBjYW4gYmUgc2Nyb2xsZWQgbW9yZSB0b3dhcmRzIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHRhYiBsYWJlbCBsaXN0LiAqL1xuICBfZGlzYWJsZVNjcm9sbEJlZm9yZSA9IHRydWU7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIHNjcm9sbCBkaXN0YW5jZSBoYXMgY2hhbmdlZCBhbmQgc2hvdWxkIGJlIGFwcGxpZWQgYWZ0ZXIgdGhlIHZpZXcgaXMgY2hlY2tlZC4gKi9cbiAgcHJpdmF0ZSBfc2Nyb2xsRGlzdGFuY2VDaGFuZ2VkOiBib29sZWFuO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBoZWFkZXIgc2hvdWxkIHNjcm9sbCB0byB0aGUgc2VsZWN0ZWQgaW5kZXggYWZ0ZXIgdGhlIHZpZXcgaGFzIGJlZW4gY2hlY2tlZC4gKi9cbiAgcHJpdmF0ZSBfc2VsZWN0ZWRJbmRleENoYW5nZWQgPSBmYWxzZTtcblxuICAvKiogVGhlIGRpc3RhbmNlIGluIHBpeGVscyB0aGF0IHRoZSB0YWIgbGFiZWxzIHNob3VsZCBiZSB0cmFuc2xhdGVkIHRvIHRoZSBsZWZ0LiAqL1xuICBwcml2YXRlIF9zY3JvbGxEaXN0YW5jZSA9IDA7XG5cbiAgcHJpdmF0ZSBfc2VsZWN0ZWRJbmRleCA9IDA7XG5cbiAgLyoqIEVtaXRzIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBkZXN0cm95ZWQuICovXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3llZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgLyoqIFVzZWQgdG8gbWFuYWdlIGZvY3VzIGJldHdlZW4gdGhlIHRhYnMuICovXG4gIHByaXZhdGUgX2tleU1hbmFnZXI6IEZvY3VzS2V5TWFuYWdlcjxUYWJMYWJlbFdyYXBwZXJEaXJlY3RpdmU+O1xuXG4gIEBJbnB1dCgpXG4gIHR5cGU6IFRhYlR5cGUgPSBUYWJUeXBlLkxpbmU7XG5cbiAgQElucHV0KClcbiAgc2l6ZTogVGFiU2l6ZSA9IFRhYlNpemUuTWVkaXVtO1xuXG4gIC8qKiBUaGUgaW5kZXggb2YgdGhlIGFjdGl2ZSB0YWIuICovXG4gIEBJbnB1dCgpXG4gIGdldCBzZWxlY3RlZEluZGV4KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkSW5kZXg7XG4gIH1cblxuICBzZXQgc2VsZWN0ZWRJbmRleCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fc2VsZWN0ZWRJbmRleENoYW5nZWQgPSB0aGlzLl9zZWxlY3RlZEluZGV4ICE9PSB2YWx1ZTtcbiAgICB0aGlzLl9zZWxlY3RlZEluZGV4ID0gdmFsdWU7XG5cbiAgICBpZiAodGhpcy5fa2V5TWFuYWdlcikge1xuICAgICAgdGhpcy5fa2V5TWFuYWdlci51cGRhdGVBY3RpdmVJdGVtKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBvcHRpb24gaXMgc2VsZWN0ZWQuICovXG4gIEBPdXRwdXQoKVxuICByZWFkb25seSBzZWxlY3RGb2N1c2VkSW5kZXggPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIGEgbGFiZWwgaXMgZm9jdXNlZC4gKi9cbiAgQE91dHB1dCgpXG4gIHJlYWRvbmx5IGluZGV4Rm9jdXNlZCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gIEBDb250ZW50Q2hpbGQoVGFiSGVhZGVyQWRkb25EaXJlY3RpdmUsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBfaGVhZGVyQWRkb246IFRhYkhlYWRlckFkZG9uRGlyZWN0aXZlO1xuXG4gIEBDb250ZW50Q2hpbGQoVGFiVGl0bGVEaXJlY3RpdmUsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBfdGl0bGU6IFRhYlRpdGxlRGlyZWN0aXZlO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oVGFiTGFiZWxXcmFwcGVyRGlyZWN0aXZlKVxuICAvKipcbiAgICogd29ya2Fyb3VuZCBmb3IgQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9UeXBlU2NyaXB0L3B1bGwvNDI0MjVcbiAgICovXG4gIF9sYWJlbFdyYXBwZXJzOiBRdWVyeUxpc3Q8VGFiTGFiZWxXcmFwcGVyRGlyZWN0aXZlICYgeyBkaXNhYmxlZD86IGJvb2xlYW4gfT47XG5cbiAgQFZpZXdDaGlsZCgndGFiTGlzdENvbnRhaW5lcicsIHsgc3RhdGljOiB0cnVlIH0pXG4gIF90YWJMaXN0Q29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICBAVmlld0NoaWxkKCd0YWJMaXN0JywgeyBzdGF0aWM6IHRydWUgfSlcbiAgX3RhYkxpc3Q6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIEBWaWV3Q2hpbGQoJ3BhZ2luYXRpb25XcmFwcGVyJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgX3BhZ2luYXRpb25XcmFwcGVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICBAVmlld0NoaWxkKFRhYkhlYWRlckFjdGl2ZUluZGljYXRvckNvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSlcbiAgX2FjdGl2ZUluZGljYXRvcjogVGFiSGVhZGVyQWN0aXZlSW5kaWNhdG9yQ29tcG9uZW50O1xuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX2Rlc3Ryb3llZC5uZXh0KCk7XG4gICAgdGhpcy5fZGVzdHJveWVkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudENoZWNrZWQoKTogdm9pZCB7XG4gICAgLy8gSWYgdGhlIHNlbGVjdGVkIGluZGV4IGhhcyBjaGFuZ2VkLCBzY3JvbGwgdG8gdGhlIGxhYmVsIGFuZCBjaGVjayBpZiB0aGUgc2Nyb2xsaW5nIGNvbnRyb2xzXG4gICAgLy8gc2hvdWxkIGJlIGRpc2FibGVkLlxuICAgIGlmICh0aGlzLl9zZWxlY3RlZEluZGV4Q2hhbmdlZCkge1xuICAgICAgdGhpcy5fc2Nyb2xsVG9MYWJlbCh0aGlzLl9zZWxlY3RlZEluZGV4KTtcbiAgICAgIHRoaXMuX2NoZWNrU2Nyb2xsaW5nQ29udHJvbHMoKTtcbiAgICAgIHRoaXMuX2FsaWduQWN0aXZlSW5kaWNhdG9yVG9TZWxlY3RlZFRhYigpO1xuICAgICAgdGhpcy5fc2VsZWN0ZWRJbmRleENoYW5nZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8vIElmIHRoZSBzY3JvbGwgZGlzdGFuY2UgaGFzIGJlZW4gY2hhbmdlZCAodGFiIHNlbGVjdGVkLCBmb2N1c2VkLCBzY3JvbGwgY29udHJvbHMgYWN0aXZhdGVkKSxcbiAgICAvLyB0aGVuIHRyYW5zbGF0ZSB0aGUgaGVhZGVyIHRvIHJlZmxlY3QgdGhpcy5cbiAgICBpZiAodGhpcy5fc2Nyb2xsRGlzdGFuY2VDaGFuZ2VkKSB7XG4gICAgICB0aGlzLl91cGRhdGVUYWJTY3JvbGxQb3NpdGlvbigpO1xuICAgICAgdGhpcy5fc2Nyb2xsRGlzdGFuY2VDaGFuZ2VkID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc2hvd0FkZG9uICE9PSAhIXRoaXMuX2hlYWRlckFkZG9uKSB7XG4gICAgICB0aGlzLl9zaG93QWRkb24gPSAhIXRoaXMuX2hlYWRlckFkZG9uO1xuICAgICAgdGhpcy5fdXBkYXRlUGFnaW5hdGlvbigpO1xuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFsaWducyB0aGUgaW5rIGJhciB0byB0aGUgc2VsZWN0ZWQgdGFiIG9uIGxvYWQuXG4gICAqL1xuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgY29uc3QgcmVhbGlnbiA9ICgpID0+IHtcbiAgICAgIHRoaXMuX3VwZGF0ZVBhZ2luYXRpb24oKTtcbiAgICAgIHRoaXMuX2FsaWduQWN0aXZlSW5kaWNhdG9yVG9TZWxlY3RlZFRhYigpO1xuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgdGhpcy5fc2Nyb2xsVG9MYWJlbCh0aGlzLl9zZWxlY3RlZEluZGV4KTtcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICB0aGlzLl9rZXlNYW5hZ2VyID0gbmV3IEZvY3VzS2V5TWFuYWdlcih0aGlzLl9sYWJlbFdyYXBwZXJzKVxuICAgICAgLndpdGhIb3Jpem9udGFsT3JpZW50YXRpb24oJ2x0cicpXG4gICAgICAud2l0aFdyYXAoKTtcbiAgICB0aGlzLl9rZXlNYW5hZ2VyLnVwZGF0ZUFjdGl2ZUl0ZW0oMCk7XG5cbiAgICAvLyBPbiB0YWIgbGlzdCByZXNpemUsIHJlYWxpZ24gdGhlIGluayBiYXIgYW5kIHVwZGF0ZSB0aGUgb3JpZW50YXRpb24gb2ZcbiAgICAvLyB0aGUga2V5IG1hbmFnZXIgaWYgdGhlIGRpcmVjdGlvbiBoYXMgY2hhbmdlZC5cbiAgICBtZXJnZShcbiAgICAgIG9ic2VydmVSZXNpemVPbih0aGlzLl90YWJMaXN0Lm5hdGl2ZUVsZW1lbnQpLFxuICAgICAgb2JzZXJ2ZVJlc2l6ZU9uKHRoaXMuX3RhYkxpc3RDb250YWluZXIubmF0aXZlRWxlbWVudCksXG4gICAgICBvYnNlcnZlUmVzaXplT24odGhpcy5fcGFnaW5hdGlvbldyYXBwZXIubmF0aXZlRWxlbWVudCksXG4gICAgKVxuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDEwMCksIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95ZWQpKVxuICAgICAgLnN1YnNjcmliZShyZWFsaWduKTtcblxuICAgIC8vIElmIHRoZXJlIGlzIGEgY2hhbmdlIGluIHRoZSBmb2N1cyBrZXkgbWFuYWdlciB3ZSBuZWVkIHRvIGVtaXQgdGhlIGBpbmRleEZvY3VzZWRgXG4gICAgLy8gZXZlbnQgaW4gb3JkZXIgdG8gcHJvdmlkZSBhIHB1YmxpYyBldmVudCB0aGF0IG5vdGlmaWVzIGFib3V0IGZvY3VzIGNoYW5nZXMuIEFsc28gd2UgcmVhbGlnblxuICAgIC8vIHRoZSB0YWJzIGNvbnRhaW5lciBieSBzY3JvbGxpbmcgdGhlIG5ldyBmb2N1c2VkIHRhYiBpbnRvIHRoZSB2aXNpYmxlIHNlY3Rpb24uXG4gICAgdGhpcy5fa2V5TWFuYWdlci5jaGFuZ2VcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95ZWQpKVxuICAgICAgLnN1YnNjcmliZShuZXdGb2N1c0luZGV4ID0+IHtcbiAgICAgICAgdGhpcy5pbmRleEZvY3VzZWQuZW1pdChuZXdGb2N1c0luZGV4KTtcbiAgICAgICAgdGhpcy5fc2V0VGFiRm9jdXMobmV3Rm9jdXNJbmRleCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKiBTZXRzIHRoZSBkaXN0YW5jZSBpbiBwaXhlbHMgdGhhdCB0aGUgdGFiIGhlYWRlciBzaG91bGQgYmUgdHJhbnNmb3JtZWQgaW4gdGhlIFgtYXhpcy4gKi9cbiAgZ2V0IHNjcm9sbERpc3RhbmNlKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3Njcm9sbERpc3RhbmNlO1xuICB9XG5cbiAgc2V0IHNjcm9sbERpc3RhbmNlKHY6IG51bWJlcikge1xuICAgIHRoaXMuX3Njcm9sbERpc3RhbmNlID0gTWF0aC5tYXgoXG4gICAgICAwLFxuICAgICAgTWF0aC5taW4odGhpcy5fZ2V0TWF4U2Nyb2xsRGlzdGFuY2UoKSwgdiksXG4gICAgKTtcbiAgICAvLyBNYXJrIHRoYXQgdGhlIHNjcm9sbCBkaXN0YW5jZSBoYXMgY2hhbmdlZCBzbyB0aGF0IGFmdGVyIHRoZSB2aWV3IGlzIGNoZWNrZWQsIHRoZSBDU1NcbiAgICAvLyB0cmFuc2Zvcm1hdGlvbiBjYW4gbW92ZSB0aGUgaGVhZGVyLlxuICAgIHRoaXMuX3Njcm9sbERpc3RhbmNlQ2hhbmdlZCA9IHRydWU7XG4gICAgdGhpcy5fY2hlY2tTY3JvbGxpbmdDb250cm9scygpO1xuICB9XG5cbiAgLyoqIFRyYWNrcyB3aGljaCBlbGVtZW50IGhhcyBmb2N1czsgdXNlZCBmb3Iga2V5Ym9hcmQgbmF2aWdhdGlvbiAqL1xuICBnZXQgZm9jdXNJbmRleCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9rZXlNYW5hZ2VyID8gdGhpcy5fa2V5TWFuYWdlci5hY3RpdmVJdGVtSW5kZXggOiAwO1xuICB9XG5cbiAgLyoqIFdoZW4gdGhlIGZvY3VzIGluZGV4IGlzIHNldCwgd2UgbXVzdCBtYW51YWxseSBzZW5kIGZvY3VzIHRvIHRoZSBjb3JyZWN0IGxhYmVsICovXG4gIHNldCBmb2N1c0luZGV4KHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAoXG4gICAgICAhdGhpcy5faXNWYWxpZEluZGV4KHZhbHVlKSB8fFxuICAgICAgdGhpcy5mb2N1c0luZGV4ID09PSB2YWx1ZSB8fFxuICAgICAgIXRoaXMuX2tleU1hbmFnZXJcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fa2V5TWFuYWdlci5zZXRBY3RpdmVJdGVtKHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIGFuIGluZGV4IGlzIHZhbGlkLiAgSWYgdGhlIHRhYnMgYXJlIG5vdCByZWFkeSB5ZXQsIHdlIGFzc3VtZSB0aGF0IHRoZSB1c2VyIGlzXG4gICAqIHByb3ZpZGluZyBhIHZhbGlkIGluZGV4IGFuZCByZXR1cm4gdHJ1ZS5cbiAgICovXG4gIF9pc1ZhbGlkSW5kZXgoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5fbGFiZWxXcmFwcGVycykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNvbnN0IHRhYiA9IHRoaXMuX2xhYmVsV3JhcHBlcnNcbiAgICAgID8gdGhpcy5fbGFiZWxXcmFwcGVycy50b0FycmF5KClbaW5kZXhdXG4gICAgICA6IG51bGw7XG4gICAgcmV0dXJuICEhdGFiICYmICF0YWIuZGlzYWJsZWQ7XG4gIH1cblxuICBfaGFuZGxlS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICBjYXNlICdIb21lJzoge1xuICAgICAgICB0aGlzLl9rZXlNYW5hZ2VyLnNldEZpcnN0SXRlbUFjdGl2ZSgpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0VuZCc6IHtcbiAgICAgICAgdGhpcy5fa2V5TWFuYWdlci5zZXRMYXN0SXRlbUFjdGl2ZSgpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgIGNhc2UgJ1NwYWNlJzoge1xuICAgICAgICB0aGlzLnNlbGVjdEZvY3VzZWRJbmRleC5lbWl0KHRoaXMuZm9jdXNJbmRleCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICB0aGlzLl9rZXlNYW5hZ2VyLm9uS2V5ZG93bihldmVudCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgZm9jdXMgb24gdGhlIEhUTUwgZWxlbWVudCBmb3IgdGhlIGxhYmVsIHdyYXBwZXIgYW5kIHNjcm9sbHMgaXQgaW50byB0aGUgdmlldyBpZlxuICAgKiBzY3JvbGxpbmcgaXMgZW5hYmxlZC5cbiAgICovXG4gIF9zZXRUYWJGb2N1cyh0YWJJbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuX3Nob3dQYWdpbmF0aW9uQ29udHJvbHMpIHtcbiAgICAgIHRoaXMuX3Njcm9sbFRvTGFiZWwodGFiSW5kZXgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fbGFiZWxXcmFwcGVycz8ubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5fbGFiZWxXcmFwcGVycy50b0FycmF5KClbdGFiSW5kZXhdLmZvY3VzKCk7XG4gICAgICAvLyBEbyBub3QgbGV0IHRoZSBicm93c2VyIG1hbmFnZSBzY3JvbGxpbmcgdG8gZm9jdXMgdGhlIGVsZW1lbnQsIHRoaXMgd2lsbCBiZSBoYW5kbGVkXG4gICAgICAvLyBieSB1c2luZyB0cmFuc2xhdGlvbi4gSW4gTFRSLCB0aGUgc2Nyb2xsIGxlZnQgc2hvdWxkIGJlIDAuIEluIFJUTCwgdGhlIHNjcm9sbCB3aWR0aFxuICAgICAgLy8gc2hvdWxkIGJlIHRoZSBmdWxsIHdpZHRoIG1pbnVzIHRoZSBvZmZzZXQgd2lkdGguXG4gICAgICBjb25zdCBjb250YWluZXJFbCA9IHRoaXMuX3RhYkxpc3RDb250YWluZXIubmF0aXZlRWxlbWVudDtcbiAgICAgIGNvbnRhaW5lckVsLnNjcm9sbExlZnQgPSAwO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNb3ZlcyB0aGUgdGFiIGxpc3Qgc3VjaCB0aGF0IHRoZSBkZXNpcmVkIHRhYiBsYWJlbCAobWFya2VkIGJ5IGluZGV4KSBpcyBtb3ZlZCBpbnRvIHZpZXcuXG4gICAqXG4gICAqIFRoaXMgaXMgYW4gZXhwZW5zaXZlIGNhbGwgdGhhdCBmb3JjZXMgYSBsYXlvdXQgcmVmbG93IHRvIGNvbXB1dGUgYm94IGFuZCBzY3JvbGwgbWV0cmljcyBhbmRcbiAgICogc2hvdWxkIGJlIGNhbGxlZCBzcGFyaW5nbHkuXG4gICAqL1xuICBfc2Nyb2xsVG9MYWJlbChsYWJlbEluZGV4OiBudW1iZXIpIHtcbiAgICBjb25zdCBzZWxlY3RlZExhYmVsID0gdGhpcy5fbGFiZWxXcmFwcGVyc1xuICAgICAgPyB0aGlzLl9sYWJlbFdyYXBwZXJzLnRvQXJyYXkoKVtsYWJlbEluZGV4XVxuICAgICAgOiBudWxsO1xuICAgIGlmICghc2VsZWN0ZWRMYWJlbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBUaGUgdmlldyBsZW5ndGggaXMgdGhlIHZpc2libGUgd2lkdGggb2YgdGhlIHRhYiBsYWJlbHMuXG4gICAgY29uc3Qgdmlld0xlbmd0aCA9IHRoaXMuX3RhYkxpc3RDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICBjb25zdCBsYWJlbEJlZm9yZVBvcyA9IHNlbGVjdGVkTGFiZWwuZ2V0T2Zmc2V0TGVmdCgpO1xuICAgIGNvbnN0IGxhYmVsQWZ0ZXJQb3MgPSBsYWJlbEJlZm9yZVBvcyArIHNlbGVjdGVkTGFiZWwuZ2V0T2Zmc2V0V2lkdGgoKTtcbiAgICBjb25zdCBiZWZvcmVWaXNpYmxlUG9zID0gdGhpcy5zY3JvbGxEaXN0YW5jZTtcbiAgICBjb25zdCBhZnRlclZpc2libGVQb3MgPSB0aGlzLnNjcm9sbERpc3RhbmNlICsgdmlld0xlbmd0aDtcbiAgICBpZiAobGFiZWxCZWZvcmVQb3MgPCBiZWZvcmVWaXNpYmxlUG9zKSB7XG4gICAgICAvLyBTY3JvbGwgaGVhZGVyIHRvIG1vdmUgbGFiZWwgdG8gdGhlIGJlZm9yZSBkaXJlY3Rpb25cbiAgICAgIHRoaXMuc2Nyb2xsRGlzdGFuY2UgLT1cbiAgICAgICAgYmVmb3JlVmlzaWJsZVBvcyAtIGxhYmVsQmVmb3JlUG9zICsgRVhBR0dFUkFURURfT1ZFUlNDUk9MTDtcbiAgICB9IGVsc2UgaWYgKGxhYmVsQWZ0ZXJQb3MgPiBhZnRlclZpc2libGVQb3MpIHtcbiAgICAgIC8vIFNjcm9sbCBoZWFkZXIgdG8gbW92ZSBsYWJlbCB0byB0aGUgYWZ0ZXIgZGlyZWN0aW9uXG4gICAgICB0aGlzLnNjcm9sbERpc3RhbmNlICs9XG4gICAgICAgIGxhYmVsQWZ0ZXJQb3MgLSBhZnRlclZpc2libGVQb3MgKyBFWEFHR0VSQVRFRF9PVkVSU0NST0xMO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNb3ZlcyB0aGUgdGFiIGxpc3QgaW4gdGhlICdiZWZvcmUnIG9yICdhZnRlcicgZGlyZWN0aW9uICh0b3dhcmRzIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGxpc3Qgb3JcbiAgICogdGhlIGVuZCBvZiB0aGUgbGlzdCwgcmVzcGVjdGl2ZWx5KS4gVGhlIGRpc3RhbmNlIHRvIHNjcm9sbCBpcyBjb21wdXRlZCB0byBiZSBhIHRoaXJkIG9mIHRoZVxuICAgKiBsZW5ndGggb2YgdGhlIHRhYiBsaXN0IHZpZXcgd2luZG93LlxuICAgKlxuICAgKiBUaGlzIGlzIGFuIGV4cGVuc2l2ZSBjYWxsIHRoYXQgZm9yY2VzIGEgbGF5b3V0IHJlZmxvdyB0byBjb21wdXRlIGJveCBhbmQgc2Nyb2xsIG1ldHJpY3MgYW5kXG4gICAqIHNob3VsZCBiZSBjYWxsZWQgc3BhcmluZ2x5LlxuICAgKi9cbiAgX3Njcm9sbEhlYWRlcihzY3JvbGxEaXI6IFNjcm9sbERpcmVjdGlvbikge1xuICAgIGNvbnN0IHZpZXdMZW5ndGggPSB0aGlzLl90YWJMaXN0Q29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgLy8gTW92ZSB0aGUgc2Nyb2xsIGRpc3RhbmNlIG9uZS10aGlyZCB0aGUgbGVuZ3RoIG9mIHRoZSB0YWIgbGlzdCdzIHZpZXdwb3J0LlxuICAgIHRoaXMuc2Nyb2xsRGlzdGFuY2UgKz0gKChzY3JvbGxEaXIgPT09ICdiZWZvcmUnID8gLTEgOiAxKSAqIHZpZXdMZW5ndGgpIC8gMztcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsYmFjayBmb3Igd2hlbiB0aGUgTXV0YXRpb25PYnNlcnZlciBkZXRlY3RzIHRoYXQgdGhlIGNvbnRlbnQgaGFzIGNoYW5nZWQuXG4gICAqL1xuICBfb25Db250ZW50Q2hhbmdlcygpIHtcbiAgICB0aGlzLl91cGRhdGVQYWdpbmF0aW9uKCk7XG4gICAgdGhpcy5fYWxpZ25BY3RpdmVJbmRpY2F0b3JUb1NlbGVjdGVkVGFiKCk7XG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRpbmcgdGhlIHZpZXcgd2hldGhlciBwYWdpbmF0aW9uIHNob3VsZCBiZSBlbmFibGVkIG9yIG5vdFxuICAgKi9cbiAgX3VwZGF0ZVBhZ2luYXRpb24oKSB7XG4gICAgdGhpcy5fY2hlY2tQYWdpbmF0aW9uRW5hYmxlZCgpO1xuICAgIHRoaXMuX2NoZWNrU2Nyb2xsaW5nQ29udHJvbHMoKTtcbiAgICB0aGlzLl91cGRhdGVUYWJTY3JvbGxQb3NpdGlvbigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV2YWx1YXRlIHdoZXRoZXIgdGhlIHBhZ2luYXRpb24gY29udHJvbHMgc2hvdWxkIGJlIGRpc3BsYXllZC4gSWYgdGhlIHNjcm9sbCB3aWR0aCBvZiB0aGVcbiAgICogdGFiIGxpc3QgaXMgd2lkZXIgdGhhbiB0aGUgc2l6ZSBvZiB0aGUgaGVhZGVyIGNvbnRhaW5lciwgdGhlbiB0aGUgcGFnaW5hdGlvbiBjb250cm9scyBzaG91bGRcbiAgICogYmUgc2hvd24uXG4gICAqXG4gICAqIFRoaXMgaXMgYW4gZXhwZW5zaXZlIGNhbGwgdGhhdCBmb3JjZXMgYSBsYXlvdXQgcmVmbG93IHRvIGNvbXB1dGUgYm94IGFuZCBzY3JvbGwgbWV0cmljcyBhbmRcbiAgICogc2hvdWxkIGJlIGNhbGxlZCBzcGFyaW5nbHkuXG4gICAqL1xuICBfY2hlY2tQYWdpbmF0aW9uRW5hYmxlZCgpIHtcbiAgICBjb25zdCBpc0VuYWJsZWQgPVxuICAgICAgdGhpcy5fdGFiTGlzdC5uYXRpdmVFbGVtZW50LnNjcm9sbFdpZHRoID5cbiAgICAgIHRoaXMuX3BhZ2luYXRpb25XcmFwcGVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggKyAyOyAvLyAyIGlzIHRoZSBib3JkZXIgc2l6ZVxuICAgIGlmICghaXNFbmFibGVkKSB7XG4gICAgICB0aGlzLnNjcm9sbERpc3RhbmNlID0gMDtcbiAgICB9XG4gICAgY29uc3QgZGV0ZWN0Q2hhbmdlcyA9IGlzRW5hYmxlZCAhPT0gdGhpcy5fc2hvd1BhZ2luYXRpb25Db250cm9scztcbiAgICB0aGlzLl9zaG93UGFnaW5hdGlvbkNvbnRyb2xzID0gaXNFbmFibGVkO1xuXG4gICAgaWYgKGRldGVjdENoYW5nZXMpIHtcbiAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFdmFsdWF0ZSB3aGV0aGVyIHRoZSBiZWZvcmUgYW5kIGFmdGVyIGNvbnRyb2xzIHNob3VsZCBiZSBlbmFibGVkIG9yIGRpc2FibGVkLlxuICAgKiBJZiB0aGUgaGVhZGVyIGlzIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGxpc3QgKHNjcm9sbCBkaXN0YW5jZSBpcyBlcXVhbCB0byAwKSB0aGVuIGRpc2FibGUgdGhlXG4gICAqIGJlZm9yZSBidXR0b24uIElmIHRoZSBoZWFkZXIgaXMgYXQgdGhlIGVuZCBvZiB0aGUgbGlzdCAoc2Nyb2xsIGRpc3RhbmNlIGlzIGVxdWFsIHRvIHRoZVxuICAgKiBtYXhpbXVtIGRpc3RhbmNlIHdlIGNhbiBzY3JvbGwpLCB0aGVuIGRpc2FibGUgdGhlIGFmdGVyIGJ1dHRvbi5cbiAgICpcbiAgICogVGhpcyBpcyBhbiBleHBlbnNpdmUgY2FsbCB0aGF0IGZvcmNlcyBhIGxheW91dCByZWZsb3cgdG8gY29tcHV0ZSBib3ggYW5kIHNjcm9sbCBtZXRyaWNzIGFuZFxuICAgKiBzaG91bGQgYmUgY2FsbGVkIHNwYXJpbmdseS5cbiAgICovXG4gIF9jaGVja1Njcm9sbGluZ0NvbnRyb2xzKCkge1xuICAgIC8vIENoZWNrIGlmIHRoZSBwYWdpbmF0aW9uIGFycm93cyBzaG91bGQgYmUgYWN0aXZhdGVkLlxuICAgIHRoaXMuX2Rpc2FibGVTY3JvbGxCZWZvcmUgPSB0aGlzLnNjcm9sbERpc3RhbmNlID09PSAwO1xuICAgIHRoaXMuX2Rpc2FibGVTY3JvbGxBZnRlciA9XG4gICAgICB0aGlzLnNjcm9sbERpc3RhbmNlID09PSB0aGlzLl9nZXRNYXhTY3JvbGxEaXN0YW5jZSgpO1xuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hhdCBpcyB0aGUgbWF4aW11bSBsZW5ndGggaW4gcGl4ZWxzIHRoYXQgY2FuIGJlIHNldCBmb3IgdGhlIHNjcm9sbCBkaXN0YW5jZS4gVGhpc1xuICAgKiBpcyBlcXVhbCB0byB0aGUgZGlmZmVyZW5jZSBpbiB3aWR0aCBiZXR3ZWVuIHRoZSB0YWIgbGlzdCBjb250YWluZXIgYW5kIHRhYiBoZWFkZXIgY29udGFpbmVyLlxuICAgKlxuICAgKiBUaGlzIGlzIGFuIGV4cGVuc2l2ZSBjYWxsIHRoYXQgZm9yY2VzIGEgbGF5b3V0IHJlZmxvdyB0byBjb21wdXRlIGJveCBhbmQgc2Nyb2xsIG1ldHJpY3MgYW5kXG4gICAqIHNob3VsZCBiZSBjYWxsZWQgc3BhcmluZ2x5LlxuICAgKi9cbiAgX2dldE1heFNjcm9sbERpc3RhbmNlKCk6IG51bWJlciB7XG4gICAgY29uc3QgbGVuZ3RoT2ZUYWJMaXN0ID0gdGhpcy5fdGFiTGlzdC5uYXRpdmVFbGVtZW50LnNjcm9sbFdpZHRoO1xuICAgIGNvbnN0IHZpZXdMZW5ndGggPSB0aGlzLl90YWJMaXN0Q29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgcmV0dXJuIGxlbmd0aE9mVGFiTGlzdCAtIHZpZXdMZW5ndGggfHwgMDtcbiAgfVxuXG4gIC8qKiBQZXJmb3JtcyB0aGUgQ1NTIHRyYW5zZm9ybWF0aW9uIG9uIHRoZSB0YWIgbGlzdCB0aGF0IHdpbGwgY2F1c2UgdGhlIGxpc3QgdG8gc2Nyb2xsLiAqL1xuICBfdXBkYXRlVGFiU2Nyb2xsUG9zaXRpb24oKSB7XG4gICAgY29uc3Qgc2Nyb2xsRGlzdGFuY2UgPSB0aGlzLnNjcm9sbERpc3RhbmNlO1xuICAgIGNvbnN0IHRyYW5zbGF0ZVggPSAtc2Nyb2xsRGlzdGFuY2U7XG4gICAgLy8gRG9uJ3QgdXNlIGB0cmFuc2xhdGUzZGAgaGVyZSBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gY3JlYXRlIGEgbmV3IGxheWVyLiBBIG5ldyBsYXllclxuICAgIC8vIHNlZW1zIHRvIGNhdXNlIGZsaWNrZXJpbmcgYW5kIG92ZXJmbG93IGluIEludGVybmV0IEV4cGxvcmVyLiBGb3IgZXhhbXBsZSwgdGhlIGluayBiYXJcbiAgICAvLyBhbmQgcmlwcGxlcyB3aWxsIGV4Y2VlZCB0aGUgYm91bmRhcmllcyBvZiB0aGUgdmlzaWJsZSB0YWIgYmFyLlxuICAgIC8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvbWF0ZXJpYWwyL2lzc3Vlcy8xMDI3NlxuICAgIHRoaXMuX3RhYkxpc3QubmF0aXZlRWxlbWVudC5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlWCgke3RyYW5zbGF0ZVh9cHgpYDtcbiAgfVxuXG4gIC8qKiBUZWxscyB0aGUgYWN0aXZlIGluZGljYXRvciB0byBhbGlnbiBpdHNlbGYgdG8gdGhlIGN1cnJlbnQgbGFiZWwgd3JhcHBlciAqL1xuICBfYWxpZ25BY3RpdmVJbmRpY2F0b3JUb1NlbGVjdGVkVGFiKCk6IHZvaWQge1xuICAgIGNvbnN0IHNlbGVjdGVkTGFiZWxXcmFwcGVyID1cbiAgICAgIHRoaXMuX2xhYmVsV3JhcHBlcnM/Lmxlbmd0aCA+IDBcbiAgICAgICAgPyB0aGlzLl9sYWJlbFdyYXBwZXJzLnRvQXJyYXkoKVt0aGlzLnNlbGVjdGVkSW5kZXhdLmVsZW1lbnRSZWZcbiAgICAgICAgICAgIC5uYXRpdmVFbGVtZW50XG4gICAgICAgIDogbnVsbDtcbiAgICB0aGlzLl9hY3RpdmVJbmRpY2F0b3IuYWxpZ25Ub0VsZW1lbnQoc2VsZWN0ZWRMYWJlbFdyYXBwZXIpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7fVxufVxuIiwiPGRpdiBbbmdDbGFzc109XCJiZW0uYmxvY2sodHlwZSwgc2l6ZSlcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIl90aXRsZVwiPlxuICAgIDxkaXYgW25nQ2xhc3NdPVwiYmVtLmVsZW1lbnQoJ3RpdGxlJylcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbY2RrUG9ydGFsT3V0bGV0XT1cIl90aXRsZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuICA8ZGl2IFtuZ0NsYXNzXT1cImJlbS5lbGVtZW50KCdoZWFkZXItd3JhcHBlcicpXCI+XG4gICAgPGRpdlxuICAgICAgW25nQ2xhc3NdPVwiYmVtLmVsZW1lbnQoJ3BhZ2luYXRpb24td3JhcHBlcicpXCJcbiAgICAgICNwYWdpbmF0aW9uV3JhcHBlclxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJfc2hvd1BhZ2luYXRpb25Db250cm9sc1wiXG4gICAgICAgIChjbGljayk9XCJfc2Nyb2xsSGVhZGVyKCdiZWZvcmUnKVwiXG4gICAgICAgIFthdHRyLmRpc2FibGVkXT1cIl9kaXNhYmxlU2Nyb2xsQmVmb3JlID8gJycgOiBudWxsXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiYmVtLmVsZW1lbnQoJ3BhZ2luYXRpb24tYnV0dG9uJylcIlxuICAgICAgPlxuICAgICAgICA8YXVpLWljb24gaWNvbj1cImFuZ2xlX2xlZnRcIj48L2F1aS1pY29uPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIFtuZ0NsYXNzXT1cImJlbS5lbGVtZW50KCd0YWItbGlzdC1jb250YWluZXInKVwiXG4gICAgICAgIChrZXlkb3duKT1cIl9oYW5kbGVLZXlkb3duKCRldmVudClcIlxuICAgICAgICAjdGFiTGlzdENvbnRhaW5lclxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgcm9sZT1cInRhYmxpc3RcIlxuICAgICAgICAgIChjZGtPYnNlcnZlQ29udGVudCk9XCJfb25Db250ZW50Q2hhbmdlcygpXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJiZW0uZWxlbWVudCgndGFiLWxpc3QnKVwiXG4gICAgICAgICAgI3RhYkxpc3RcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwiYmVtLmVsZW1lbnQoJ2xhYmVscycpXCI+PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PjwvZGl2PlxuICAgICAgICAgIDxhdWktdGFiLWhlYWRlci1hY3RpdmUtaW5kaWNhdG9yXG4gICAgICAgICAgICBbdHlwZV09XCJ0eXBlXCJcbiAgICAgICAgICA+PC9hdWktdGFiLWhlYWRlci1hY3RpdmUtaW5kaWNhdG9yPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cIl9zaG93UGFnaW5hdGlvbkNvbnRyb2xzXCJcbiAgICAgICAgKGNsaWNrKT1cIl9zY3JvbGxIZWFkZXIoJ2FmdGVyJylcIlxuICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJfZGlzYWJsZVNjcm9sbEFmdGVyID8gJycgOiBudWxsXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiYmVtLmVsZW1lbnQoJ3BhZ2luYXRpb24tYnV0dG9uJylcIlxuICAgICAgPlxuICAgICAgICA8YXVpLWljb24gaWNvbj1cImFuZ2xlX3JpZ2h0XCI+PC9hdWktaWNvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDwhLS0gSWYgdGhlcmUgaXMgYWRkb24gdGVtcGxhdGUsIHVzZSBpdC4gLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIl9zaG93QWRkb25cIj5cbiAgICAgIDxkaXYgW25nQ2xhc3NdPVwiYmVtLmVsZW1lbnQoJ2FkZG9uJylcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIFtjZGtQb3J0YWxPdXRsZXRdPVwiX2hlYWRlckFkZG9uXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
264
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWhlYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGFicy90YWItaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL3NyYy90YWJzL3RhYi1oZWFkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBR0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUVmLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUVOLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFPLFFBQVEsRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVuRSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLHdCQUF3QixFQUN4QixpQkFBaUIsR0FDbEIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUM1RixPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGNBQWMsQ0FBQzs7OztBQVloRCxNQUFNLHNCQUFzQixHQUFHLEVBQUUsQ0FBQztBQW1CbEMsTUFBTSxPQUFPLGtCQUFrQjtJQXdDN0IsSUFD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U0FBUzt1QkFBQyxtQkFBbUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSWhELGdCQUFnQjtzQkFEZixTQUFTO3VCQUFDLGlDQUFpQyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvY3VzS2V5TWFuYWdlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IE9ic2VydmVyc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vYnNlcnZlcnMnO1xuaW1wb3J0IHsgUG9ydGFsTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBOZ0NsYXNzLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEFmdGVyQ29udGVudENoZWNrZWQsXG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCBkZWJvdW5jZVRpbWUsIG1lcmdlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgSWNvbkNvbXBvbmVudCB9IGZyb20gJy4uL2ljb24vaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQmVtLCBidWlsZEJlbSwgb2JzZXJ2ZVJlc2l6ZU9uIH0gZnJvbSAnLi4vaW50ZXJuYWwvdXRpbHMnO1xuXG5pbXBvcnQge1xuICBUYWJIZWFkZXJBZGRvbkRpcmVjdGl2ZSxcbiAgVGFiTGFiZWxXcmFwcGVyRGlyZWN0aXZlLFxuICBUYWJUaXRsZURpcmVjdGl2ZSxcbn0gZnJvbSAnLi90YWItYm9keS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGFiSGVhZGVyQWN0aXZlSW5kaWNhdG9yQ29tcG9uZW50IH0gZnJvbSAnLi90YWItaGVhZGVyLWFjdGl2ZS1pbmRpY2F0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IFRhYlNpemUsIFRhYlR5cGUgfSBmcm9tICcuL3RhYnMudHlwZXMnO1xuXG4vKipcbiAqIFRoZSBkaXJlY3Rpb25zIHRoYXQgc2Nyb2xsaW5nIGNhbiBnbyBpbiB3aGVuIHRoZSBoZWFkZXIncyB0YWJzIGV4Y2VlZCB0aGUgaGVhZGVyIHdpZHRoLiAnQWZ0ZXInXG4gKiB3aWxsIHNjcm9sbCB0aGUgaGVhZGVyIHRvd2FyZHMgdGhlIGVuZCBvZiB0aGUgdGFicyBsaXN0IGFuZCAnYmVmb3JlJyB3aWxsIHNjcm9sbCB0b3dhcmRzIHRoZVxuICogYmVnaW5uaW5nIG9mIHRoZSBsaXN0LlxuICovXG5leHBvcnQgdHlwZSBTY3JvbGxEaXJlY3Rpb24gPSAnYWZ0ZXInIHwgJ2JlZm9yZSc7XG4vKipcbiAqIFRoZSBkaXN0YW5jZSBpbiBwaXhlbHMgdGhhdCB3aWxsIGJlIG92ZXJzaG90IHdoZW4gc2Nyb2xsaW5nIGEgdGFiIGxhYmVsIGludG8gdmlldy4gVGhpcyBoZWxwc1xuICogcHJvdmlkZSBhIHNtYWxsIGFmZm9yZGFuY2UgdG8gdGhlIGxhYmVsIG5leHQgdG8gaXQuXG4gKi9cbmNvbnN0IEVYQUdHRVJBVEVEX09WRVJTQ1JPTEwgPSA2MDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXVpLXRhYi1oZWFkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFiLWhlYWRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RhYi1oZWFkZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgcHJlc2VydmVXaGl0ZXNwYWNlczogZmFsc2UsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTmdDbGFzcyxcbiAgICBOZ0lmLFxuICAgIFBvcnRhbE1vZHVsZSxcbiAgICBJY29uQ29tcG9uZW50LFxuICAgIE9ic2VydmVyc01vZHVsZSxcbiAgICBUYWJIZWFkZXJBY3RpdmVJbmRpY2F0b3JDb21wb25lbnQsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFRhYkhlYWRlckNvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uRGVzdHJveSwgQWZ0ZXJDb250ZW50Q2hlY2tlZCwgQWZ0ZXJDb250ZW50SW5pdFxue1xuICBiZW06IEJlbSA9IGJ1aWxkQmVtKCdhdWktdGFiLWhlYWRlcicpO1xuXG4gIF9zaG93QWRkb24gPSBmYWxzZTtcblxuICAvKiogV2hldGhlciB0aGUgY29udHJvbHMgZm9yIHBhZ2luYXRpb24gc2hvdWxkIGJlIGRpc3BsYXllZCAqL1xuICBfc2hvd1BhZ2luYXRpb25Db250cm9scyA9IGZhbHNlO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSB0YWIgbGlzdCBjYW4gYmUgc2Nyb2xsZWQgbW9yZSB0b3dhcmRzIHRoZSBlbmQgb2YgdGhlIHRhYiBsYWJlbCBsaXN0LiAqL1xuICBfZGlzYWJsZVNjcm9sbEFmdGVyID0gdHJ1ZTtcblxuICAvKiogV2hldGhlciB0aGUgdGFiIGxpc3QgY2FuIGJlIHNjcm9sbGVkIG1vcmUgdG93YXJkcyB0aGUgYmVnaW5uaW5nIG9mIHRoZSB0YWIgbGFiZWwgbGlzdC4gKi9cbiAgX2Rpc2FibGVTY3JvbGxCZWZvcmUgPSB0cnVlO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBzY3JvbGwgZGlzdGFuY2UgaGFzIGNoYW5nZWQgYW5kIHNob3VsZCBiZSBhcHBsaWVkIGFmdGVyIHRoZSB2aWV3IGlzIGNoZWNrZWQuICovXG4gIHByaXZhdGUgX3Njcm9sbERpc3RhbmNlQ2hhbmdlZDogYm9vbGVhbjtcblxuICAvKiogV2hldGhlciB0aGUgaGVhZGVyIHNob3VsZCBzY3JvbGwgdG8gdGhlIHNlbGVjdGVkIGluZGV4IGFmdGVyIHRoZSB2aWV3IGhhcyBiZWVuIGNoZWNrZWQuICovXG4gIHByaXZhdGUgX3NlbGVjdGVkSW5kZXhDaGFuZ2VkID0gZmFsc2U7XG5cbiAgLyoqIFRoZSBkaXN0YW5jZSBpbiBwaXhlbHMgdGhhdCB0aGUgdGFiIGxhYmVscyBzaG91bGQgYmUgdHJhbnNsYXRlZCB0byB0aGUgbGVmdC4gKi9cbiAgcHJpdmF0ZSBfc2Nyb2xsRGlzdGFuY2UgPSAwO1xuXG4gIHByaXZhdGUgX3NlbGVjdGVkSW5kZXggPSAwO1xuXG4gIC8qKiBFbWl0cyB3aGVuIHRoZSBjb21wb25lbnQgaXMgZGVzdHJveWVkLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95ZWQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIC8qKiBVc2VkIHRvIG1hbmFnZSBmb2N1cyBiZXR3ZWVuIHRoZSB0YWJzLiAqL1xuICBwcml2YXRlIF9rZXlNYW5hZ2VyOiBGb2N1c0tleU1hbmFnZXI8VGFiTGFiZWxXcmFwcGVyRGlyZWN0aXZlPjtcblxuICBASW5wdXQoKVxuICB0eXBlOiBUYWJUeXBlID0gVGFiVHlwZS5MaW5lO1xuXG4gIEBJbnB1dCgpXG4gIHNpemU6IFRhYlNpemUgPSBUYWJTaXplLk1lZGl1bTtcblxuICAvKiogVGhlIGluZGV4IG9mIHRoZSBhY3RpdmUgdGFiLiAqL1xuICBASW5wdXQoKVxuICBnZXQgc2VsZWN0ZWRJbmRleCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZEluZGV4O1xuICB9XG5cbiAgc2V0IHNlbGVjdGVkSW5kZXgodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX3NlbGVjdGVkSW5kZXhDaGFuZ2VkID0gdGhpcy5fc2VsZWN0ZWRJbmRleCAhPT0gdmFsdWU7XG4gICAgdGhpcy5fc2VsZWN0ZWRJbmRleCA9IHZhbHVlO1xuXG4gICAgaWYgKHRoaXMuX2tleU1hbmFnZXIpIHtcbiAgICAgIHRoaXMuX2tleU1hbmFnZXIudXBkYXRlQWN0aXZlSXRlbSh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgb3B0aW9uIGlzIHNlbGVjdGVkLiAqL1xuICBAT3V0cHV0KClcbiAgcmVhZG9ubHkgc2VsZWN0Rm9jdXNlZEluZGV4ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiBhIGxhYmVsIGlzIGZvY3VzZWQuICovXG4gIEBPdXRwdXQoKVxuICByZWFkb25seSBpbmRleEZvY3VzZWQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICBAQ29udGVudENoaWxkKFRhYkhlYWRlckFkZG9uRGlyZWN0aXZlLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgX2hlYWRlckFkZG9uOiBUYWJIZWFkZXJBZGRvbkRpcmVjdGl2ZTtcblxuICBAQ29udGVudENoaWxkKFRhYlRpdGxlRGlyZWN0aXZlLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgX3RpdGxlOiBUYWJUaXRsZURpcmVjdGl2ZTtcblxuICBAQ29udGVudENoaWxkcmVuKFRhYkxhYmVsV3JhcHBlckRpcmVjdGl2ZSlcbiAgLyoqXG4gICAqIHdvcmthcm91bmQgZm9yIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvVHlwZVNjcmlwdC9wdWxsLzQyNDI1XG4gICAqL1xuICBfbGFiZWxXcmFwcGVyczogUXVlcnlMaXN0PFRhYkxhYmVsV3JhcHBlckRpcmVjdGl2ZSAmIHsgZGlzYWJsZWQ/OiBib29sZWFuIH0+O1xuXG4gIEBWaWV3Q2hpbGQoJ3RhYkxpc3RDb250YWluZXInLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBfdGFiTGlzdENvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgQFZpZXdDaGlsZCgndGFiTGlzdCcsIHsgc3RhdGljOiB0cnVlIH0pXG4gIF90YWJMaXN0OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICBAVmlld0NoaWxkKCdwYWdpbmF0aW9uV3JhcHBlcicsIHsgc3RhdGljOiB0cnVlIH0pXG4gIF9wYWdpbmF0aW9uV3JhcHBlcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgQFZpZXdDaGlsZChUYWJIZWFkZXJBY3RpdmVJbmRpY2F0b3JDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pXG4gIF9hY3RpdmVJbmRpY2F0b3I6IFRhYkhlYWRlckFjdGl2ZUluZGljYXRvckNvbXBvbmVudDtcblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9kZXN0cm95ZWQubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3llZC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRDaGVja2VkKCk6IHZvaWQge1xuICAgIC8vIElmIHRoZSBzZWxlY3RlZCBpbmRleCBoYXMgY2hhbmdlZCwgc2Nyb2xsIHRvIHRoZSBsYWJlbCBhbmQgY2hlY2sgaWYgdGhlIHNjcm9sbGluZyBjb250cm9sc1xuICAgIC8vIHNob3VsZCBiZSBkaXNhYmxlZC5cbiAgICBpZiAodGhpcy5fc2VsZWN0ZWRJbmRleENoYW5nZWQpIHtcbiAgICAgIHRoaXMuX3Njcm9sbFRvTGFiZWwodGhpcy5fc2VsZWN0ZWRJbmRleCk7XG4gICAgICB0aGlzLl9jaGVja1Njcm9sbGluZ0NvbnRyb2xzKCk7XG4gICAgICB0aGlzLl9hbGlnbkFjdGl2ZUluZGljYXRvclRvU2VsZWN0ZWRUYWIoKTtcbiAgICAgIHRoaXMuX3NlbGVjdGVkSW5kZXhDaGFuZ2VkID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgc2Nyb2xsIGRpc3RhbmNlIGhhcyBiZWVuIGNoYW5nZWQgKHRhYiBzZWxlY3RlZCwgZm9jdXNlZCwgc2Nyb2xsIGNvbnRyb2xzIGFjdGl2YXRlZCksXG4gICAgLy8gdGhlbiB0cmFuc2xhdGUgdGhlIGhlYWRlciB0byByZWZsZWN0IHRoaXMuXG4gICAgaWYgKHRoaXMuX3Njcm9sbERpc3RhbmNlQ2hhbmdlZCkge1xuICAgICAgdGhpcy5fdXBkYXRlVGFiU2Nyb2xsUG9zaXRpb24oKTtcbiAgICAgIHRoaXMuX3Njcm9sbERpc3RhbmNlQ2hhbmdlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3Nob3dBZGRvbiAhPT0gISF0aGlzLl9oZWFkZXJBZGRvbikge1xuICAgICAgdGhpcy5fc2hvd0FkZG9uID0gISF0aGlzLl9oZWFkZXJBZGRvbjtcbiAgICAgIHRoaXMuX3VwZGF0ZVBhZ2luYXRpb24oKTtcbiAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBbGlnbnMgdGhlIGluayBiYXIgdG8gdGhlIHNlbGVjdGVkIHRhYiBvbiBsb2FkLlxuICAgKi9cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIGNvbnN0IHJlYWxpZ24gPSAoKSA9PiB7XG4gICAgICB0aGlzLl91cGRhdGVQYWdpbmF0aW9uKCk7XG4gICAgICB0aGlzLl9hbGlnbkFjdGl2ZUluZGljYXRvclRvU2VsZWN0ZWRUYWIoKTtcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuX3Njcm9sbFRvTGFiZWwodGhpcy5fc2VsZWN0ZWRJbmRleCk7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgdGhpcy5fa2V5TWFuYWdlciA9IG5ldyBGb2N1c0tleU1hbmFnZXIodGhpcy5fbGFiZWxXcmFwcGVycylcbiAgICAgIC53aXRoSG9yaXpvbnRhbE9yaWVudGF0aW9uKCdsdHInKVxuICAgICAgLndpdGhXcmFwKCk7XG4gICAgdGhpcy5fa2V5TWFuYWdlci51cGRhdGVBY3RpdmVJdGVtKDApO1xuXG4gICAgLy8gT24gdGFiIGxpc3QgcmVzaXplLCByZWFsaWduIHRoZSBpbmsgYmFyIGFuZCB1cGRhdGUgdGhlIG9yaWVudGF0aW9uIG9mXG4gICAgLy8gdGhlIGtleSBtYW5hZ2VyIGlmIHRoZSBkaXJlY3Rpb24gaGFzIGNoYW5nZWQuXG4gICAgbWVyZ2UoXG4gICAgICBvYnNlcnZlUmVzaXplT24odGhpcy5fdGFiTGlzdC5uYXRpdmVFbGVtZW50KSxcbiAgICAgIG9ic2VydmVSZXNpemVPbih0aGlzLl90YWJMaXN0Q29udGFpbmVyLm5hdGl2ZUVsZW1lbnQpLFxuICAgICAgb2JzZXJ2ZVJlc2l6ZU9uKHRoaXMuX3BhZ2luYXRpb25XcmFwcGVyLm5hdGl2ZUVsZW1lbnQpLFxuICAgIClcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSgxMDApLCB0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkKSlcbiAgICAgIC5zdWJzY3JpYmUocmVhbGlnbik7XG5cbiAgICAvLyBJZiB0aGVyZSBpcyBhIGNoYW5nZSBpbiB0aGUgZm9jdXMga2V5IG1hbmFnZXIgd2UgbmVlZCB0byBlbWl0IHRoZSBgaW5kZXhGb2N1c2VkYFxuICAgIC8vIGV2ZW50IGluIG9yZGVyIHRvIHByb3ZpZGUgYSBwdWJsaWMgZXZlbnQgdGhhdCBub3RpZmllcyBhYm91dCBmb2N1cyBjaGFuZ2VzLiBBbHNvIHdlIHJlYWxpZ25cbiAgICAvLyB0aGUgdGFicyBjb250YWluZXIgYnkgc2Nyb2xsaW5nIHRoZSBuZXcgZm9jdXNlZCB0YWIgaW50byB0aGUgdmlzaWJsZSBzZWN0aW9uLlxuICAgIHRoaXMuX2tleU1hbmFnZXIuY2hhbmdlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkKSlcbiAgICAgIC5zdWJzY3JpYmUobmV3Rm9jdXNJbmRleCA9PiB7XG4gICAgICAgIHRoaXMuaW5kZXhGb2N1c2VkLmVtaXQobmV3Rm9jdXNJbmRleCk7XG4gICAgICAgIHRoaXMuX3NldFRhYkZvY3VzKG5ld0ZvY3VzSW5kZXgpO1xuICAgICAgfSk7XG4gIH1cblxuICAvKiogU2V0cyB0aGUgZGlzdGFuY2UgaW4gcGl4ZWxzIHRoYXQgdGhlIHRhYiBoZWFkZXIgc2hvdWxkIGJlIHRyYW5zZm9ybWVkIGluIHRoZSBYLWF4aXMuICovXG4gIGdldCBzY3JvbGxEaXN0YW5jZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9zY3JvbGxEaXN0YW5jZTtcbiAgfVxuXG4gIHNldCBzY3JvbGxEaXN0YW5jZSh2OiBudW1iZXIpIHtcbiAgICB0aGlzLl9zY3JvbGxEaXN0YW5jZSA9IE1hdGgubWF4KFxuICAgICAgMCxcbiAgICAgIE1hdGgubWluKHRoaXMuX2dldE1heFNjcm9sbERpc3RhbmNlKCksIHYpLFxuICAgICk7XG4gICAgLy8gTWFyayB0aGF0IHRoZSBzY3JvbGwgZGlzdGFuY2UgaGFzIGNoYW5nZWQgc28gdGhhdCBhZnRlciB0aGUgdmlldyBpcyBjaGVja2VkLCB0aGUgQ1NTXG4gICAgLy8gdHJhbnNmb3JtYXRpb24gY2FuIG1vdmUgdGhlIGhlYWRlci5cbiAgICB0aGlzLl9zY3JvbGxEaXN0YW5jZUNoYW5nZWQgPSB0cnVlO1xuICAgIHRoaXMuX2NoZWNrU2Nyb2xsaW5nQ29udHJvbHMoKTtcbiAgfVxuXG4gIC8qKiBUcmFja3Mgd2hpY2ggZWxlbWVudCBoYXMgZm9jdXM7IHVzZWQgZm9yIGtleWJvYXJkIG5hdmlnYXRpb24gKi9cbiAgZ2V0IGZvY3VzSW5kZXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fa2V5TWFuYWdlciA/IHRoaXMuX2tleU1hbmFnZXIuYWN0aXZlSXRlbUluZGV4IDogMDtcbiAgfVxuXG4gIC8qKiBXaGVuIHRoZSBmb2N1cyBpbmRleCBpcyBzZXQsIHdlIG11c3QgbWFudWFsbHkgc2VuZCBmb2N1cyB0byB0aGUgY29ycmVjdCBsYWJlbCAqL1xuICBzZXQgZm9jdXNJbmRleCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgaWYgKFxuICAgICAgIXRoaXMuX2lzVmFsaWRJbmRleCh2YWx1ZSkgfHxcbiAgICAgIHRoaXMuZm9jdXNJbmRleCA9PT0gdmFsdWUgfHxcbiAgICAgICF0aGlzLl9rZXlNYW5hZ2VyXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2tleU1hbmFnZXIuc2V0QWN0aXZlSXRlbSh2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiBhbiBpbmRleCBpcyB2YWxpZC4gIElmIHRoZSB0YWJzIGFyZSBub3QgcmVhZHkgeWV0LCB3ZSBhc3N1bWUgdGhhdCB0aGUgdXNlciBpc1xuICAgKiBwcm92aWRpbmcgYSB2YWxpZCBpbmRleCBhbmQgcmV0dXJuIHRydWUuXG4gICAqL1xuICBfaXNWYWxpZEluZGV4KGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuX2xhYmVsV3JhcHBlcnMpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBjb25zdCB0YWIgPSB0aGlzLl9sYWJlbFdyYXBwZXJzXG4gICAgICA/IHRoaXMuX2xhYmVsV3JhcHBlcnMudG9BcnJheSgpW2luZGV4XVxuICAgICAgOiBudWxsO1xuICAgIHJldHVybiAhIXRhYiAmJiAhdGFiLmRpc2FibGVkO1xuICB9XG5cbiAgX2hhbmRsZUtleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnSG9tZSc6IHtcbiAgICAgICAgdGhpcy5fa2V5TWFuYWdlci5zZXRGaXJzdEl0ZW1BY3RpdmUoKTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdFbmQnOiB7XG4gICAgICAgIHRoaXMuX2tleU1hbmFnZXIuc2V0TGFzdEl0ZW1BY3RpdmUoKTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdFbnRlcic6XG4gICAgICBjYXNlICdTcGFjZSc6IHtcbiAgICAgICAgdGhpcy5zZWxlY3RGb2N1c2VkSW5kZXguZW1pdCh0aGlzLmZvY3VzSW5kZXgpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgdGhpcy5fa2V5TWFuYWdlci5vbktleWRvd24oZXZlbnQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIGZvY3VzIG9uIHRoZSBIVE1MIGVsZW1lbnQgZm9yIHRoZSBsYWJlbCB3cmFwcGVyIGFuZCBzY3JvbGxzIGl0IGludG8gdGhlIHZpZXcgaWZcbiAgICogc2Nyb2xsaW5nIGlzIGVuYWJsZWQuXG4gICAqL1xuICBfc2V0VGFiRm9jdXModGFiSW5kZXg6IG51bWJlcikge1xuICAgIGlmICh0aGlzLl9zaG93UGFnaW5hdGlvbkNvbnRyb2xzKSB7XG4gICAgICB0aGlzLl9zY3JvbGxUb0xhYmVsKHRhYkluZGV4KTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX2xhYmVsV3JhcHBlcnM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuX2xhYmVsV3JhcHBlcnMudG9BcnJheSgpW3RhYkluZGV4XS5mb2N1cygpO1xuICAgICAgLy8gRG8gbm90IGxldCB0aGUgYnJvd3NlciBtYW5hZ2Ugc2Nyb2xsaW5nIHRvIGZvY3VzIHRoZSBlbGVtZW50LCB0aGlzIHdpbGwgYmUgaGFuZGxlZFxuICAgICAgLy8gYnkgdXNpbmcgdHJhbnNsYXRpb24uIEluIExUUiwgdGhlIHNjcm9sbCBsZWZ0IHNob3VsZCBiZSAwLiBJbiBSVEwsIHRoZSBzY3JvbGwgd2lkdGhcbiAgICAgIC8vIHNob3VsZCBiZSB0aGUgZnVsbCB3aWR0aCBtaW51cyB0aGUgb2Zmc2V0IHdpZHRoLlxuICAgICAgY29uc3QgY29udGFpbmVyRWwgPSB0aGlzLl90YWJMaXN0Q29udGFpbmVyLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICBjb250YWluZXJFbC5zY3JvbGxMZWZ0ID0gMDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTW92ZXMgdGhlIHRhYiBsaXN0IHN1Y2ggdGhhdCB0aGUgZGVzaXJlZCB0YWIgbGFiZWwgKG1hcmtlZCBieSBpbmRleCkgaXMgbW92ZWQgaW50byB2aWV3LlxuICAgKlxuICAgKiBUaGlzIGlzIGFuIGV4cGVuc2l2ZSBjYWxsIHRoYXQgZm9yY2VzIGEgbGF5b3V0IHJlZmxvdyB0byBjb21wdXRlIGJveCBhbmQgc2Nyb2xsIG1ldHJpY3MgYW5kXG4gICAqIHNob3VsZCBiZSBjYWxsZWQgc3BhcmluZ2x5LlxuICAgKi9cbiAgX3Njcm9sbFRvTGFiZWwobGFiZWxJbmRleDogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRMYWJlbCA9IHRoaXMuX2xhYmVsV3JhcHBlcnNcbiAgICAgID8gdGhpcy5fbGFiZWxXcmFwcGVycy50b0FycmF5KClbbGFiZWxJbmRleF1cbiAgICAgIDogbnVsbDtcbiAgICBpZiAoIXNlbGVjdGVkTGFiZWwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gVGhlIHZpZXcgbGVuZ3RoIGlzIHRoZSB2aXNpYmxlIHdpZHRoIG9mIHRoZSB0YWIgbGFiZWxzLlxuICAgIGNvbnN0IHZpZXdMZW5ndGggPSB0aGlzLl90YWJMaXN0Q29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgY29uc3QgbGFiZWxCZWZvcmVQb3MgPSBzZWxlY3RlZExhYmVsLmdldE9mZnNldExlZnQoKTtcbiAgICBjb25zdCBsYWJlbEFmdGVyUG9zID0gbGFiZWxCZWZvcmVQb3MgKyBzZWxlY3RlZExhYmVsLmdldE9mZnNldFdpZHRoKCk7XG4gICAgY29uc3QgYmVmb3JlVmlzaWJsZVBvcyA9IHRoaXMuc2Nyb2xsRGlzdGFuY2U7XG4gICAgY29uc3QgYWZ0ZXJWaXNpYmxlUG9zID0gdGhpcy5zY3JvbGxEaXN0YW5jZSArIHZpZXdMZW5ndGg7XG4gICAgaWYgKGxhYmVsQmVmb3JlUG9zIDwgYmVmb3JlVmlzaWJsZVBvcykge1xuICAgICAgLy8gU2Nyb2xsIGhlYWRlciB0byBtb3ZlIGxhYmVsIHRvIHRoZSBiZWZvcmUgZGlyZWN0aW9uXG4gICAgICB0aGlzLnNjcm9sbERpc3RhbmNlIC09XG4gICAgICAgIGJlZm9yZVZpc2libGVQb3MgLSBsYWJlbEJlZm9yZVBvcyArIEVYQUdHRVJBVEVEX09WRVJTQ1JPTEw7XG4gICAgfSBlbHNlIGlmIChsYWJlbEFmdGVyUG9zID4gYWZ0ZXJWaXNpYmxlUG9zKSB7XG4gICAgICAvLyBTY3JvbGwgaGVhZGVyIHRvIG1vdmUgbGFiZWwgdG8gdGhlIGFmdGVyIGRpcmVjdGlvblxuICAgICAgdGhpcy5zY3JvbGxEaXN0YW5jZSArPVxuICAgICAgICBsYWJlbEFmdGVyUG9zIC0gYWZ0ZXJWaXNpYmxlUG9zICsgRVhBR0dFUkFURURfT1ZFUlNDUk9MTDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTW92ZXMgdGhlIHRhYiBsaXN0IGluIHRoZSAnYmVmb3JlJyBvciAnYWZ0ZXInIGRpcmVjdGlvbiAodG93YXJkcyB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsaXN0IG9yXG4gICAqIHRoZSBlbmQgb2YgdGhlIGxpc3QsIHJlc3BlY3RpdmVseSkuIFRoZSBkaXN0YW5jZSB0byBzY3JvbGwgaXMgY29tcHV0ZWQgdG8gYmUgYSB0aGlyZCBvZiB0aGVcbiAgICogbGVuZ3RoIG9mIHRoZSB0YWIgbGlzdCB2aWV3IHdpbmRvdy5cbiAgICpcbiAgICogVGhpcyBpcyBhbiBleHBlbnNpdmUgY2FsbCB0aGF0IGZvcmNlcyBhIGxheW91dCByZWZsb3cgdG8gY29tcHV0ZSBib3ggYW5kIHNjcm9sbCBtZXRyaWNzIGFuZFxuICAgKiBzaG91bGQgYmUgY2FsbGVkIHNwYXJpbmdseS5cbiAgICovXG4gIF9zY3JvbGxIZWFkZXIoc2Nyb2xsRGlyOiBTY3JvbGxEaXJlY3Rpb24pIHtcbiAgICBjb25zdCB2aWV3TGVuZ3RoID0gdGhpcy5fdGFiTGlzdENvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgIC8vIE1vdmUgdGhlIHNjcm9sbCBkaXN0YW5jZSBvbmUtdGhpcmQgdGhlIGxlbmd0aCBvZiB0aGUgdGFiIGxpc3QncyB2aWV3cG9ydC5cbiAgICB0aGlzLnNjcm9sbERpc3RhbmNlICs9ICgoc2Nyb2xsRGlyID09PSAnYmVmb3JlJyA/IC0xIDogMSkgKiB2aWV3TGVuZ3RoKSAvIDM7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGJhY2sgZm9yIHdoZW4gdGhlIE11dGF0aW9uT2JzZXJ2ZXIgZGV0ZWN0cyB0aGF0IHRoZSBjb250ZW50IGhhcyBjaGFuZ2VkLlxuICAgKi9cbiAgX29uQ29udGVudENoYW5nZXMoKSB7XG4gICAgdGhpcy5fdXBkYXRlUGFnaW5hdGlvbigpO1xuICAgIHRoaXMuX2FsaWduQWN0aXZlSW5kaWNhdG9yVG9TZWxlY3RlZFRhYigpO1xuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0aW5nIHRoZSB2aWV3IHdoZXRoZXIgcGFnaW5hdGlvbiBzaG91bGQgYmUgZW5hYmxlZCBvciBub3RcbiAgICovXG4gIF91cGRhdGVQYWdpbmF0aW9uKCkge1xuICAgIHRoaXMuX2NoZWNrUGFnaW5hdGlvbkVuYWJsZWQoKTtcbiAgICB0aGlzLl9jaGVja1Njcm9sbGluZ0NvbnRyb2xzKCk7XG4gICAgdGhpcy5fdXBkYXRlVGFiU2Nyb2xsUG9zaXRpb24oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFdmFsdWF0ZSB3aGV0aGVyIHRoZSBwYWdpbmF0aW9uIGNvbnRyb2xzIHNob3VsZCBiZSBkaXNwbGF5ZWQuIElmIHRoZSBzY3JvbGwgd2lkdGggb2YgdGhlXG4gICAqIHRhYiBsaXN0IGlzIHdpZGVyIHRoYW4gdGhlIHNpemUgb2YgdGhlIGhlYWRlciBjb250YWluZXIsIHRoZW4gdGhlIHBhZ2luYXRpb24gY29udHJvbHMgc2hvdWxkXG4gICAqIGJlIHNob3duLlxuICAgKlxuICAgKiBUaGlzIGlzIGFuIGV4cGVuc2l2ZSBjYWxsIHRoYXQgZm9yY2VzIGEgbGF5b3V0IHJlZmxvdyB0byBjb21wdXRlIGJveCBhbmQgc2Nyb2xsIG1ldHJpY3MgYW5kXG4gICAqIHNob3VsZCBiZSBjYWxsZWQgc3BhcmluZ2x5LlxuICAgKi9cbiAgX2NoZWNrUGFnaW5hdGlvbkVuYWJsZWQoKSB7XG4gICAgY29uc3QgaXNFbmFibGVkID1cbiAgICAgIHRoaXMuX3RhYkxpc3QubmF0aXZlRWxlbWVudC5zY3JvbGxXaWR0aCA+XG4gICAgICB0aGlzLl9wYWdpbmF0aW9uV3JhcHBlci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoICsgMjsgLy8gMiBpcyB0aGUgYm9yZGVyIHNpemVcbiAgICBpZiAoIWlzRW5hYmxlZCkge1xuICAgICAgdGhpcy5zY3JvbGxEaXN0YW5jZSA9IDA7XG4gICAgfVxuICAgIGNvbnN0IGRldGVjdENoYW5nZXMgPSBpc0VuYWJsZWQgIT09IHRoaXMuX3Nob3dQYWdpbmF0aW9uQ29udHJvbHM7XG4gICAgdGhpcy5fc2hvd1BhZ2luYXRpb25Db250cm9scyA9IGlzRW5hYmxlZDtcblxuICAgIGlmIChkZXRlY3RDaGFuZ2VzKSB7XG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRXZhbHVhdGUgd2hldGhlciB0aGUgYmVmb3JlIGFuZCBhZnRlciBjb250cm9scyBzaG91bGQgYmUgZW5hYmxlZCBvciBkaXNhYmxlZC5cbiAgICogSWYgdGhlIGhlYWRlciBpcyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsaXN0IChzY3JvbGwgZGlzdGFuY2UgaXMgZXF1YWwgdG8gMCkgdGhlbiBkaXNhYmxlIHRoZVxuICAgKiBiZWZvcmUgYnV0dG9uLiBJZiB0aGUgaGVhZGVyIGlzIGF0IHRoZSBlbmQgb2YgdGhlIGxpc3QgKHNjcm9sbCBkaXN0YW5jZSBpcyBlcXVhbCB0byB0aGVcbiAgICogbWF4aW11bSBkaXN0YW5jZSB3ZSBjYW4gc2Nyb2xsKSwgdGhlbiBkaXNhYmxlIHRoZSBhZnRlciBidXR0b24uXG4gICAqXG4gICAqIFRoaXMgaXMgYW4gZXhwZW5zaXZlIGNhbGwgdGhhdCBmb3JjZXMgYSBsYXlvdXQgcmVmbG93IHRvIGNvbXB1dGUgYm94IGFuZCBzY3JvbGwgbWV0cmljcyBhbmRcbiAgICogc2hvdWxkIGJlIGNhbGxlZCBzcGFyaW5nbHkuXG4gICAqL1xuICBfY2hlY2tTY3JvbGxpbmdDb250cm9scygpIHtcbiAgICAvLyBDaGVjayBpZiB0aGUgcGFnaW5hdGlvbiBhcnJvd3Mgc2hvdWxkIGJlIGFjdGl2YXRlZC5cbiAgICB0aGlzLl9kaXNhYmxlU2Nyb2xsQmVmb3JlID0gdGhpcy5zY3JvbGxEaXN0YW5jZSA9PT0gMDtcbiAgICB0aGlzLl9kaXNhYmxlU2Nyb2xsQWZ0ZXIgPVxuICAgICAgdGhpcy5zY3JvbGxEaXN0YW5jZSA9PT0gdGhpcy5fZ2V0TWF4U2Nyb2xsRGlzdGFuY2UoKTtcbiAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoYXQgaXMgdGhlIG1heGltdW0gbGVuZ3RoIGluIHBpeGVscyB0aGF0IGNhbiBiZSBzZXQgZm9yIHRoZSBzY3JvbGwgZGlzdGFuY2UuIFRoaXNcbiAgICogaXMgZXF1YWwgdG8gdGhlIGRpZmZlcmVuY2UgaW4gd2lkdGggYmV0d2VlbiB0aGUgdGFiIGxpc3QgY29udGFpbmVyIGFuZCB0YWIgaGVhZGVyIGNvbnRhaW5lci5cbiAgICpcbiAgICogVGhpcyBpcyBhbiBleHBlbnNpdmUgY2FsbCB0aGF0IGZvcmNlcyBhIGxheW91dCByZWZsb3cgdG8gY29tcHV0ZSBib3ggYW5kIHNjcm9sbCBtZXRyaWNzIGFuZFxuICAgKiBzaG91bGQgYmUgY2FsbGVkIHNwYXJpbmdseS5cbiAgICovXG4gIF9nZXRNYXhTY3JvbGxEaXN0YW5jZSgpOiBudW1iZXIge1xuICAgIGNvbnN0IGxlbmd0aE9mVGFiTGlzdCA9IHRoaXMuX3RhYkxpc3QubmF0aXZlRWxlbWVudC5zY3JvbGxXaWR0aDtcbiAgICBjb25zdCB2aWV3TGVuZ3RoID0gdGhpcy5fdGFiTGlzdENvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgIHJldHVybiBsZW5ndGhPZlRhYkxpc3QgLSB2aWV3TGVuZ3RoIHx8IDA7XG4gIH1cblxuICAvKiogUGVyZm9ybXMgdGhlIENTUyB0cmFuc2Zvcm1hdGlvbiBvbiB0aGUgdGFiIGxpc3QgdGhhdCB3aWxsIGNhdXNlIHRoZSBsaXN0IHRvIHNjcm9sbC4gKi9cbiAgX3VwZGF0ZVRhYlNjcm9sbFBvc2l0aW9uKCkge1xuICAgIGNvbnN0IHNjcm9sbERpc3RhbmNlID0gdGhpcy5zY3JvbGxEaXN0YW5jZTtcbiAgICBjb25zdCB0cmFuc2xhdGVYID0gLXNjcm9sbERpc3RhbmNlO1xuICAgIC8vIERvbid0IHVzZSBgdHJhbnNsYXRlM2RgIGhlcmUgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIGNyZWF0ZSBhIG5ldyBsYXllci4gQSBuZXcgbGF5ZXJcbiAgICAvLyBzZWVtcyB0byBjYXVzZSBmbGlja2VyaW5nIGFuZCBvdmVyZmxvdyBpbiBJbnRlcm5ldCBFeHBsb3Jlci4gRm9yIGV4YW1wbGUsIHRoZSBpbmsgYmFyXG4gICAgLy8gYW5kIHJpcHBsZXMgd2lsbCBleGNlZWQgdGhlIGJvdW5kYXJpZXMgb2YgdGhlIHZpc2libGUgdGFiIGJhci5cbiAgICAvLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL21hdGVyaWFsMi9pc3N1ZXMvMTAyNzZcbiAgICB0aGlzLl90YWJMaXN0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZVgoJHt0cmFuc2xhdGVYfXB4KWA7XG4gIH1cblxuICAvKiogVGVsbHMgdGhlIGFjdGl2ZSBpbmRpY2F0b3IgdG8gYWxpZ24gaXRzZWxmIHRvIHRoZSBjdXJyZW50IGxhYmVsIHdyYXBwZXIgKi9cbiAgX2FsaWduQWN0aXZlSW5kaWNhdG9yVG9TZWxlY3RlZFRhYigpOiB2b2lkIHtcbiAgICBjb25zdCBzZWxlY3RlZExhYmVsV3JhcHBlciA9XG4gICAgICB0aGlzLl9sYWJlbFdyYXBwZXJzPy5sZW5ndGggPiAwXG4gICAgICAgID8gdGhpcy5fbGFiZWxXcmFwcGVycy50b0FycmF5KClbdGhpcy5zZWxlY3RlZEluZGV4XS5lbGVtZW50UmVmXG4gICAgICAgICAgICAubmF0aXZlRWxlbWVudFxuICAgICAgICA6IG51bGw7XG4gICAgdGhpcy5fYWN0aXZlSW5kaWNhdG9yLmFsaWduVG9FbGVtZW50KHNlbGVjdGVkTGFiZWxXcmFwcGVyKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge31cbn1cbiIsIjxkaXYgW25nQ2xhc3NdPVwiYmVtLmJsb2NrKHR5cGUsIHNpemUpXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJfdGl0bGVcIj5cbiAgICA8ZGl2IFtuZ0NsYXNzXT1cImJlbS5lbGVtZW50KCd0aXRsZScpXCI+XG4gICAgICA8bmctdGVtcGxhdGUgW2Nka1BvcnRhbE91dGxldF09XCJfdGl0bGVcIj48L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPGRpdiBbbmdDbGFzc109XCJiZW0uZWxlbWVudCgnaGVhZGVyLXdyYXBwZXInKVwiPlxuICAgIDxkaXZcbiAgICAgIFtuZ0NsYXNzXT1cImJlbS5lbGVtZW50KCdwYWdpbmF0aW9uLXdyYXBwZXInKVwiXG4gICAgICAjcGFnaW5hdGlvbldyYXBwZXJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiX3Nob3dQYWdpbmF0aW9uQ29udHJvbHNcIlxuICAgICAgICAoY2xpY2spPVwiX3Njcm9sbEhlYWRlcignYmVmb3JlJylcIlxuICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJfZGlzYWJsZVNjcm9sbEJlZm9yZSA/ICcnIDogbnVsbFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cImJlbS5lbGVtZW50KCdwYWdpbmF0aW9uLWJ1dHRvbicpXCJcbiAgICAgID5cbiAgICAgICAgPGF1aS1pY29uIGljb249XCJhbmdsZV9sZWZ0XCI+PC9hdWktaWNvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBbbmdDbGFzc109XCJiZW0uZWxlbWVudCgndGFiLWxpc3QtY29udGFpbmVyJylcIlxuICAgICAgICAoa2V5ZG93bik9XCJfaGFuZGxlS2V5ZG93bigkZXZlbnQpXCJcbiAgICAgICAgI3RhYkxpc3RDb250YWluZXJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIHJvbGU9XCJ0YWJsaXN0XCJcbiAgICAgICAgICAoY2RrT2JzZXJ2ZUNvbnRlbnQpPVwiX29uQ29udGVudENoYW5nZXMoKVwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwiYmVtLmVsZW1lbnQoJ3RhYi1saXN0JylcIlxuICAgICAgICAgICN0YWJMaXN0XG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cImJlbS5lbGVtZW50KCdsYWJlbHMnKVwiPjxuZy1jb250ZW50PjwvbmctY29udGVudD48L2Rpdj5cbiAgICAgICAgICA8YXVpLXRhYi1oZWFkZXItYWN0aXZlLWluZGljYXRvclxuICAgICAgICAgICAgW3R5cGVdPVwidHlwZVwiXG4gICAgICAgICAgPjwvYXVpLXRhYi1oZWFkZXItYWN0aXZlLWluZGljYXRvcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJfc2hvd1BhZ2luYXRpb25Db250cm9sc1wiXG4gICAgICAgIChjbGljayk9XCJfc2Nyb2xsSGVhZGVyKCdhZnRlcicpXCJcbiAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiX2Rpc2FibGVTY3JvbGxBZnRlciA/ICcnIDogbnVsbFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cImJlbS5lbGVtZW50KCdwYWdpbmF0aW9uLWJ1dHRvbicpXCJcbiAgICAgID5cbiAgICAgICAgPGF1aS1pY29uIGljb249XCJhbmdsZV9yaWdodFwiPjwvYXVpLWljb24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIElmIHRoZXJlIGlzIGFkZG9uIHRlbXBsYXRlLCB1c2UgaXQuIC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJfc2hvd0FkZG9uXCI+XG4gICAgICA8ZGl2IFtuZ0NsYXNzXT1cImJlbS5lbGVtZW50KCdhZGRvbicpXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbY2RrUG9ydGFsT3V0bGV0XT1cIl9oZWFkZXJBZGRvblwiPjwvbmctdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|