@eui/components 17.0.0-rc.7 → 17.0.0-rc.8
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/docs/components/ChartComponent.html +2 -2
- package/docs/components/CollapsedBreadcrumbComponent.html +2 -2
- package/docs/components/EuiAlertComponent.html +2 -2
- package/docs/components/EuiAppBreadcrumbComponent.html +2 -2
- package/docs/components/EuiAppComponent.html +2 -2
- package/docs/components/EuiAppFooterComponent.html +2 -2
- package/docs/components/EuiAppHeaderComponent.html +2 -2
- package/docs/components/EuiAppSidebarBodyComponent.html +2 -2
- package/docs/components/EuiAppSidebarComponent.html +2 -2
- package/docs/components/EuiAppSidebarDrawerComponent.html +2 -2
- package/docs/components/EuiAppSidebarFooterComponent.html +2 -2
- package/docs/components/EuiAppSidebarHeaderComponent.html +2 -2
- package/docs/components/EuiAppSidebarHeaderUserProfileComponent.html +2 -2
- package/docs/components/EuiAppSidebarMenuComponent.html +4 -4
- package/docs/components/EuiAppToolbarComponent.html +2 -2
- package/docs/components/EuiAppTopMessageComponent.html +2 -2
- package/docs/components/EuiAutocompleteAsyncTestComponent.html +2 -2
- package/docs/components/EuiAutocompleteChipsAsyncTestComponent.html +2 -2
- package/docs/components/EuiAutocompleteChipsTestComponent.html +2 -2
- package/docs/components/EuiAutocompleteComponent.html +3 -3
- package/docs/components/EuiAutocompleteOptionComponent.html +2 -2
- package/docs/components/EuiAutocompleteOptionGroupComponent.html +2 -2
- package/docs/components/EuiAutocompleteTestComponent.html +2 -2
- package/docs/components/EuiAvatarBadgeComponent.html +2 -2
- package/docs/components/EuiAvatarComponent.html +2 -2
- package/docs/components/EuiAvatarIconComponent.html +2 -2
- package/docs/components/EuiAvatarImageComponent.html +2 -2
- package/docs/components/EuiAvatarListComponent.html +2 -2
- package/docs/components/EuiAvatarTextComponent.html +2 -2
- package/docs/components/EuiBadgeComponent.html +2 -2
- package/docs/components/EuiBlockContentComponent.html +2 -2
- package/docs/components/EuiBlockDocumentComponent.html +3 -3
- package/docs/components/EuiBreadcrumbComponent.html +2 -2
- package/docs/components/EuiBreadcrumbItemComponent.html +2 -2
- package/docs/components/EuiButtonComponent.html +2 -2
- package/docs/components/EuiButtonGroupComponent.html +2 -2
- package/docs/components/EuiButtonsComponent.html +2 -2
- package/docs/components/EuiCardComponent.html +2 -2
- package/docs/components/EuiCardContentComponent.html +2 -2
- package/docs/components/EuiCardFooterActionButtonsComponent.html +2 -2
- package/docs/components/EuiCardFooterActionIconsComponent.html +2 -2
- package/docs/components/EuiCardFooterComponent.html +2 -2
- package/docs/components/EuiCardFooterMenuContentComponent.html +2 -2
- package/docs/components/EuiCardHeaderBodyComponent.html +2 -2
- package/docs/components/EuiCardHeaderComponent.html +2 -2
- package/docs/components/EuiCardHeaderLeftContentComponent.html +2 -2
- package/docs/components/EuiCardHeaderRightContentComponent.html +2 -2
- package/docs/components/EuiCardHeaderSubtitleComponent.html +2 -2
- package/docs/components/EuiCardHeaderTitleComponent.html +2 -2
- package/docs/components/EuiCardMediaComponent.html +2 -2
- package/docs/components/EuiChipComponent.html +2 -2
- package/docs/components/EuiChipListComponent.html +2 -2
- package/docs/components/EuiCommonHeaderComponent.html +2 -2
- package/docs/components/EuiDashboardButtonComponent.html +2 -2
- package/docs/components/EuiDashboardCardComponent.html +2 -2
- package/docs/components/EuiDateRangeSelectorComponent.html +2 -2
- package/docs/components/EuiDatepickerComponent.html +2 -2
- package/docs/components/EuiDialogComponent.html +2 -2
- package/docs/components/EuiDialogContainerComponent.html +3 -3
- package/docs/components/EuiDimmerComponent.html +2 -2
- package/docs/components/EuiDisableContentComponent.html +2 -2
- package/docs/components/EuiDiscussionThreadComponent.html +2 -2
- package/docs/components/EuiDiscussionThreadItemComponent.html +2 -2
- package/docs/components/EuiDropdownComponent.html +2 -2
- package/docs/components/EuiDropdownItemComponent.html +2 -2
- package/docs/components/EuiEditorComponent.html +2 -2
- package/docs/components/EuiEditorCountersComponent.html +2 -2
- package/docs/components/EuiEditorHtmlViewComponent.html +2 -2
- package/docs/components/EuiEditorImageDialogComponent.html +2 -2
- package/docs/components/EuiEditorJsonViewComponent.html +2 -2
- package/docs/components/EuiExpandContentComponent.html +2 -2
- package/docs/components/EuiFeedbackMessageComponent.html +2 -2
- package/docs/components/EuiFieldsetComponent.html +2 -2
- package/docs/components/EuiFilePreviewComponent.html +2 -2
- package/docs/components/EuiFileUploadComponent.html +2 -2
- package/docs/components/EuiFileUploadProgressComponent.html +2 -2
- package/docs/components/EuiFooterComponent.html +2 -2
- package/docs/components/EuiGrowlComponent.html +2 -2
- package/docs/components/EuiHeaderAppComponent.html +2 -2
- package/docs/components/EuiHeaderAppNameComponent.html +2 -2
- package/docs/components/EuiHeaderAppNameLogoComponent.html +2 -2
- package/docs/components/EuiHeaderAppSubtitleComponent.html +2 -2
- package/docs/components/EuiHeaderComponent.html +2 -2
- package/docs/components/EuiHeaderEnvironmentComponent.html +2 -2
- package/docs/components/EuiHeaderLogoComponent.html +2 -2
- package/docs/components/EuiHeaderRightContentComponent.html +2 -2
- package/docs/components/EuiHeaderUserProfileComponent.html +2 -2
- package/docs/components/EuiIconColorComponent.html +2 -2
- package/docs/components/EuiIconComponent.html +2 -2
- package/docs/components/EuiIconSvgButtonComponent.html +2 -2
- package/docs/components/EuiIconSvgComponent.html +2 -2
- package/docs/components/EuiIconToggleComponent.html +2 -2
- package/docs/components/EuiInputCheckboxComponent.html +2 -2
- package/docs/components/EuiInputGroupComponent.html +2 -2
- package/docs/components/EuiInputNumberComponent.html +2 -2
- package/docs/components/EuiInputRadioComponent.html +2 -2
- package/docs/components/EuiInputTextComponent.html +2 -2
- package/docs/components/EuiLabelComponent.html +2 -2
- package/docs/components/EuiLanguageSelectorComponent.html +2 -2
- package/docs/components/EuiListComponent.html +2 -2
- package/docs/components/EuiListItemComponent.html +2 -2
- package/docs/components/EuiMenuComponent.html +8 -8
- package/docs/components/EuiMenuItemComponent.html +75 -6
- package/docs/components/EuiMessageBoxComponent.html +2 -2
- package/docs/components/EuiModalSelectorComponent.html +2 -2
- package/docs/components/EuiNotificationItemComponent.html +2 -2
- package/docs/components/EuiNotificationItemV2Component.html +2 -2
- package/docs/components/EuiNotificationsComponent.html +2 -2
- package/docs/components/EuiNotificationsV2Component.html +2 -2
- package/docs/components/EuiOverlayBodyComponent.html +2 -2
- package/docs/components/EuiOverlayComponent.html +71 -2
- package/docs/components/EuiOverlayFooterComponent.html +2 -2
- package/docs/components/EuiOverlayHeaderComponent.html +2 -2
- package/docs/components/EuiOverlayHeaderTitleComponent.html +2 -2
- package/docs/components/EuiPageBreadcrumbComponent.html +2 -2
- package/docs/components/EuiPageColumnComponent.html +2 -2
- package/docs/components/EuiPageColumnsComponent.html +2 -2
- package/docs/components/EuiPageComponent.html +2 -2
- package/docs/components/EuiPageContentComponent.html +2 -2
- package/docs/components/EuiPageFooterComponent.html +2 -2
- package/docs/components/EuiPageHeaderComponent.html +2 -2
- package/docs/components/EuiPageHeroHeaderComponent.html +2 -2
- package/docs/components/EuiPageTopContentComponent.html +2 -2
- package/docs/components/EuiPaginatorComponent.html +2 -2
- package/docs/components/EuiPopoverComponent.html +2 -2
- package/docs/components/EuiProgressBarComponent.html +2 -2
- package/docs/components/EuiProgressCircleComponent.html +2 -2
- package/docs/components/EuiResizableComponent.html +2 -2
- package/docs/components/EuiSearchComponent.html +2 -2
- package/docs/components/EuiSelectComponent.html +2 -2
- package/docs/components/EuiSidebarMenuComponent.html +5 -5
- package/docs/components/EuiSidebarToggleComponent.html +2 -2
- package/docs/components/EuiSkeletonComponent.html +2 -2
- package/docs/components/EuiSlideToggleComponent.html +2 -2
- package/docs/components/EuiSlideToggleTestComponent.html +2 -2
- package/docs/components/EuiTabComponent.html +2 -2
- package/docs/components/EuiTabContentComponent.html +2 -2
- package/docs/components/EuiTabLabelComponent.html +2 -2
- package/docs/components/EuiTableComponent.html +2 -2
- package/docs/components/EuiTableExpandableRowComponent.html +2 -2
- package/docs/components/EuiTableFilterComponent.html +2 -2
- package/docs/components/EuiTableSelectableHeaderComponent.html +2 -2
- package/docs/components/EuiTableSelectableRowComponent.html +2 -2
- package/docs/components/EuiTableSortableColComponent.html +2 -2
- package/docs/components/EuiTabsComponent.html +2 -2
- package/docs/components/EuiTextareaComponent.html +2 -2
- package/docs/components/EuiTimebarComponent.html +4 -4
- package/docs/components/EuiTimelineComponent.html +2 -2
- package/docs/components/EuiTimelineItemComponent.html +2 -2
- package/docs/components/EuiTimepickerComponent.html +2 -2
- package/docs/components/EuiToolbarAppComponent.html +2 -2
- package/docs/components/EuiToolbarCenterComponent.html +2 -2
- package/docs/components/EuiToolbarComponent.html +2 -2
- package/docs/components/EuiToolbarEnvironmentComponent.html +2 -2
- package/docs/components/EuiToolbarItemComponent.html +2 -2
- package/docs/components/EuiToolbarItemsComponent.html +2 -2
- package/docs/components/EuiToolbarLogoComponent.html +2 -2
- package/docs/components/EuiToolbarMenuComponent.html +6 -6
- package/docs/components/EuiTooltipContainerComponent.html +2 -2
- package/docs/components/EuiTreeComponent.html +2 -2
- package/docs/components/EuiTreeListComponent.html +2 -2
- package/docs/components/EuiTreeListItemComponent.html +2 -2
- package/docs/components/EuiTreeListItemContentComponent.html +2 -2
- package/docs/components/EuiTreeListToolbarComponent.html +2 -2
- package/docs/components/EuiUserProfileCardComponent.html +2 -2
- package/docs/components/EuiUserProfileComponent.html +2 -2
- package/docs/components/EuiUserProfileMenuComponent.html +2 -2
- package/docs/components/EuiUserProfileMenuItemComponent.html +2 -2
- package/docs/components/EuiWizardComponent.html +2 -2
- package/docs/components/EuiWizardStepComponent.html +2 -2
- package/docs/components/QuillEditorComponent.html +2 -2
- package/docs/dependencies.html +2 -2
- package/docs/index.html +4 -4
- package/docs/js/menu-wc.js +12 -52
- package/docs/js/menu-wc_es5.js +1 -1
- package/docs/js/search/search_index.js +2 -2
- package/docs/miscellaneous/variables.html +0 -1
- package/docs/modules/EuiAllModule.html +0 -6
- package/docs/modules/EuiAppModule.html +0 -6
- package/docs/modules/EuiLayoutModule.html +0 -6
- package/docs/modules/EuiTimebarModule.html +10 -0
- package/docs/modules.html +0 -12
- package/esm2022/eui-all/eui-all.module.mjs +1 -6
- package/esm2022/eui-autocomplete/eui-autocomplete.component.mjs +4 -3
- package/esm2022/eui-block-document/eui-block-document.component.mjs +3 -3
- package/esm2022/eui-dialog/container/eui-dialog-container.component.mjs +3 -3
- package/esm2022/eui-menu/eui-menu-item.component.mjs +24 -4
- package/esm2022/eui-menu/eui-menu.component.mjs +2 -2
- package/esm2022/eui-menu/models/eui-menu-item.model.mjs +2 -12
- package/esm2022/eui-overlay/eui-overlay.component.mjs +6 -2
- package/esm2022/eui-tabs/eui-tab/eui-tab.component.mjs +2 -2
- package/esm2022/eui-tabs/eui-tabs.component.mjs +2 -2
- package/esm2022/eui-timebar/eui-timebar.component.mjs +9 -7
- package/esm2022/layout/eui-app/eui-app-sidebar/sidebar.component.mjs +2 -2
- package/eui-all/eui-all.module.d.ts +4 -5
- package/eui-all/eui-all.module.d.ts.map +1 -1
- package/eui-autocomplete/eui-autocomplete.component.d.ts.map +1 -1
- package/eui-menu/eui-menu-item.component.d.ts +3 -1
- package/eui-menu/eui-menu-item.component.d.ts.map +1 -1
- package/eui-menu/models/eui-menu-item.model.d.ts +1 -35
- package/eui-menu/models/eui-menu-item.model.d.ts.map +1 -1
- package/eui-overlay/eui-overlay.component.d.ts +1 -0
- package/eui-overlay/eui-overlay.component.d.ts.map +1 -1
- package/eui-timebar/eui-timebar.component.d.ts +2 -1
- package/eui-timebar/eui-timebar.component.d.ts.map +1 -1
- package/fesm2022/eui-components-eui-all.mjs +0 -5
- package/fesm2022/eui-components-eui-all.mjs.map +1 -1
- package/fesm2022/eui-components-eui-autocomplete.mjs +3 -2
- package/fesm2022/eui-components-eui-autocomplete.mjs.map +1 -1
- package/fesm2022/eui-components-eui-block-document.mjs +2 -2
- package/fesm2022/eui-components-eui-block-document.mjs.map +1 -1
- package/fesm2022/eui-components-eui-dialog.mjs +2 -2
- package/fesm2022/eui-components-eui-dialog.mjs.map +1 -1
- package/fesm2022/eui-components-eui-menu.mjs +27 -18
- package/fesm2022/eui-components-eui-menu.mjs.map +1 -1
- package/fesm2022/eui-components-eui-overlay.mjs +5 -1
- package/fesm2022/eui-components-eui-overlay.mjs.map +1 -1
- package/fesm2022/eui-components-eui-tabs.mjs +4 -4
- package/fesm2022/eui-components-eui-tabs.mjs.map +1 -1
- package/fesm2022/eui-components-eui-timebar.mjs +8 -6
- package/fesm2022/eui-components-eui-timebar.mjs.map +1 -1
- package/fesm2022/eui-components-layout.mjs +2 -2
- package/fesm2022/eui-components-layout.mjs.map +1 -1
- package/package.json +11 -17
- package/docs/classes/EuiMenuItem.html +0 -933
- package/docs/components/EuiUxTreeComponent.html +0 -3171
- package/docs/components/EuiUxTreeNodeComponent.html +0 -2433
- package/docs/components/EuiUxTreeToolbarComponent.html +0 -1040
- package/docs/directives/EuiUxTreeToolbarFilterButtonsTagDirective.html +0 -172
- package/docs/modules/EuiUxTreeModule.html +0 -210
- package/esm2022/eui-ux-tree/eui-components-eui-ux-tree.mjs +0 -5
- package/esm2022/eui-ux-tree/eui-ux-tree-node.component.mjs +0 -347
- package/esm2022/eui-ux-tree/eui-ux-tree-toolbar/eui-ux-tree-toolbar.component.mjs +0 -126
- package/esm2022/eui-ux-tree/eui-ux-tree.component.mjs +0 -490
- package/esm2022/eui-ux-tree/eui-ux-tree.module.mjs +0 -54
- package/esm2022/eui-ux-tree/index.mjs +0 -5
- package/eui-ux-tree/eui-components-eui-ux-tree.d.ts.map +0 -1
- package/eui-ux-tree/eui-ux-tree-node.component.d.ts +0 -80
- package/eui-ux-tree/eui-ux-tree-node.component.d.ts.map +0 -1
- package/eui-ux-tree/eui-ux-tree-toolbar/eui-ux-tree-toolbar.component.d.ts +0 -44
- package/eui-ux-tree/eui-ux-tree-toolbar/eui-ux-tree-toolbar.component.d.ts.map +0 -1
- package/eui-ux-tree/eui-ux-tree.component.d.ts +0 -114
- package/eui-ux-tree/eui-ux-tree.component.d.ts.map +0 -1
- package/eui-ux-tree/eui-ux-tree.module.d.ts +0 -19
- package/eui-ux-tree/eui-ux-tree.module.d.ts.map +0 -1
- package/eui-ux-tree/index.d.ts +0 -5
- package/eui-ux-tree/index.d.ts.map +0 -1
- package/eui-ux-tree/package.json +0 -3
- package/fesm2022/eui-components-eui-ux-tree.mjs +0 -1004
- package/fesm2022/eui-components-eui-ux-tree.mjs.map +0 -1
@@ -1,347 +0,0 @@
|
|
1
|
-
/* eslint-disable */
|
2
|
-
import { Component, EventEmitter, Input, Output, } from '@angular/core';
|
3
|
-
import { consumeEvent, uniqueId } from '@eui/core';
|
4
|
-
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
5
|
-
import * as i0 from "@angular/core";
|
6
|
-
import * as i1 from "@angular/router";
|
7
|
-
import * as i2 from "@angular/common";
|
8
|
-
import * as i3 from "@angular/forms";
|
9
|
-
import * as i4 from "@eui/components/eui-icon";
|
10
|
-
import * as i5 from "@eui/components/eui-button";
|
11
|
-
import * as i6 from "@eui/components/eui-chip";
|
12
|
-
import * as i7 from "@ngx-translate/core";
|
13
|
-
export class EuiUxTreeNodeComponent {
|
14
|
-
get isFirst() {
|
15
|
-
return this._isFirst;
|
16
|
-
}
|
17
|
-
set isFirst(value) {
|
18
|
-
this._isFirst = coerceBooleanProperty(value);
|
19
|
-
}
|
20
|
-
get isLast() {
|
21
|
-
return this._isLast;
|
22
|
-
}
|
23
|
-
set isLast(value) {
|
24
|
-
this._isLast = coerceBooleanProperty(value);
|
25
|
-
}
|
26
|
-
get isRootNode() {
|
27
|
-
return this._isRootNode;
|
28
|
-
}
|
29
|
-
set isRootNode(value) {
|
30
|
-
this._isRootNode = coerceBooleanProperty(value);
|
31
|
-
}
|
32
|
-
get isClickTogglingNode() {
|
33
|
-
return this._isClickTogglingNode;
|
34
|
-
}
|
35
|
-
set isClickTogglingNode(value) {
|
36
|
-
this._isClickTogglingNode = coerceBooleanProperty(value);
|
37
|
-
}
|
38
|
-
get isMultiselect() {
|
39
|
-
return this._isMultiselect;
|
40
|
-
}
|
41
|
-
set isMultiselect(value) {
|
42
|
-
this._isMultiselect = coerceBooleanProperty(value);
|
43
|
-
}
|
44
|
-
get isRecursiveSelection() {
|
45
|
-
return this._isRecursiveSelection;
|
46
|
-
}
|
47
|
-
set isRecursiveSelection(value) {
|
48
|
-
this._isRecursiveSelection = coerceBooleanProperty(value);
|
49
|
-
}
|
50
|
-
get isRecursiveParentSelection() {
|
51
|
-
return this._isRecursiveParentSelection;
|
52
|
-
}
|
53
|
-
set isRecursiveParentSelection(value) {
|
54
|
-
this._isRecursiveParentSelection = coerceBooleanProperty(value);
|
55
|
-
}
|
56
|
-
get isShowActiveNode() {
|
57
|
-
return this._isShowActiveNode;
|
58
|
-
}
|
59
|
-
set isShowActiveNode(value) {
|
60
|
-
this._isShowActiveNode = coerceBooleanProperty(value);
|
61
|
-
}
|
62
|
-
get isHideToggles() {
|
63
|
-
return this._isHideToggles;
|
64
|
-
}
|
65
|
-
set isHideToggles(value) {
|
66
|
-
this._isHideToggles = coerceBooleanProperty(value);
|
67
|
-
}
|
68
|
-
get isClickSelectingNode() {
|
69
|
-
return this._isClickSelectingNode;
|
70
|
-
}
|
71
|
-
set isClickSelectingNode(value) {
|
72
|
-
this._isClickSelectingNode = coerceBooleanProperty(value);
|
73
|
-
}
|
74
|
-
get highlightPath() {
|
75
|
-
return this._highlightPath;
|
76
|
-
}
|
77
|
-
set highlightPath(value) {
|
78
|
-
this._highlightPath = coerceBooleanProperty(value);
|
79
|
-
}
|
80
|
-
get autoTranslate() {
|
81
|
-
return this._autoTranslate;
|
82
|
-
}
|
83
|
-
set autoTranslate(value) {
|
84
|
-
this._autoTranslate = coerceBooleanProperty(value);
|
85
|
-
}
|
86
|
-
get hasSelectAll() {
|
87
|
-
return this._hasSelectAll;
|
88
|
-
}
|
89
|
-
set hasSelectAll(value) {
|
90
|
-
this._hasSelectAll = coerceBooleanProperty(value);
|
91
|
-
}
|
92
|
-
constructor(router) {
|
93
|
-
this.router = router;
|
94
|
-
this.e2eAttr = 'ux-tree-node';
|
95
|
-
this.nodeClick = new EventEmitter();
|
96
|
-
this.nodeToggle = new EventEmitter();
|
97
|
-
this.selectionChange = new EventEmitter();
|
98
|
-
this.childrenSelected = true;
|
99
|
-
this.amountSelectedChildren = 0;
|
100
|
-
this._isFirst = false;
|
101
|
-
this._isLast = false;
|
102
|
-
this._isRootNode = false;
|
103
|
-
this._isClickTogglingNode = false;
|
104
|
-
this._isMultiselect = false;
|
105
|
-
this._isRecursiveSelection = false;
|
106
|
-
this._isRecursiveParentSelection = true;
|
107
|
-
this._isShowActiveNode = false;
|
108
|
-
this._isHideToggles = false;
|
109
|
-
this._isClickSelectingNode = false;
|
110
|
-
this._highlightPath = false;
|
111
|
-
this._autoTranslate = true;
|
112
|
-
this._hasSelectAll = false;
|
113
|
-
this.nodeId = `ux-tree-node-${uniqueId()}`;
|
114
|
-
}
|
115
|
-
hasNodeChildren(node) {
|
116
|
-
return node && node.children && node.children.length > 0;
|
117
|
-
}
|
118
|
-
onNodeKeydown(event, UxLinkLegacy) {
|
119
|
-
if (event.keyCode === 13) {
|
120
|
-
this.onNodeClick(event, UxLinkLegacy);
|
121
|
-
}
|
122
|
-
}
|
123
|
-
onNodeToggle(event, UxLinkLegacy) {
|
124
|
-
this.node.expanded = !this.node.expanded;
|
125
|
-
this.nodeToggle.emit(UxLinkLegacy);
|
126
|
-
}
|
127
|
-
onNodeClick(event, UxLinkLegacy) {
|
128
|
-
if (!UxLinkLegacy.disabled) {
|
129
|
-
if (!this.node.metadata) {
|
130
|
-
if (this.isMultiselect && this.isClickSelectingNode) {
|
131
|
-
UxLinkLegacy.selected = !UxLinkLegacy.selected;
|
132
|
-
event.target['checked'] = UxLinkLegacy.selected;
|
133
|
-
this.onCheckboxChange(UxLinkLegacy, event);
|
134
|
-
}
|
135
|
-
if (!this.node.children || this.node.children.length === 0) {
|
136
|
-
this.node.expanded = !this.node.expanded;
|
137
|
-
if (this.node.url) {
|
138
|
-
this.router.navigate([this.node.url]);
|
139
|
-
}
|
140
|
-
if (this.node.urlExternal) {
|
141
|
-
window.open(this.node.urlExternal, this.node.urlExternalTarget);
|
142
|
-
}
|
143
|
-
}
|
144
|
-
else {
|
145
|
-
const clickedEl = event.target['nodeName'];
|
146
|
-
if (this.isClickTogglingNode) {
|
147
|
-
this.onNodeToggle(event, UxLinkLegacy);
|
148
|
-
}
|
149
|
-
if (clickedEl === 'SPAN' && (this.node.url || this.node.urlExternal)) {
|
150
|
-
if (this.node.url) {
|
151
|
-
this.router.navigate([this.node.url]);
|
152
|
-
}
|
153
|
-
if (this.node.urlExternal) {
|
154
|
-
window.open(this.node.urlExternal, this.node.urlExternalTarget);
|
155
|
-
}
|
156
|
-
}
|
157
|
-
}
|
158
|
-
}
|
159
|
-
else {
|
160
|
-
if (this.node.url) {
|
161
|
-
this.router.navigate([this.node.url]);
|
162
|
-
}
|
163
|
-
if (this.node.urlExternal) {
|
164
|
-
window.open(this.node.urlExternal, this.node.urlExternalTarget);
|
165
|
-
}
|
166
|
-
}
|
167
|
-
if (UxLinkLegacy.command) {
|
168
|
-
UxLinkLegacy.command();
|
169
|
-
}
|
170
|
-
this.nodeClick.emit(UxLinkLegacy);
|
171
|
-
consumeEvent(event);
|
172
|
-
}
|
173
|
-
}
|
174
|
-
onCheckboxChange(UxLinkLegacy, evt) {
|
175
|
-
if (this.isRecursiveSelection) {
|
176
|
-
if (!UxLinkLegacy.selected) {
|
177
|
-
UxLinkLegacy.indeterminate = false;
|
178
|
-
}
|
179
|
-
this.changeSelectionRecursively(UxLinkLegacy, UxLinkLegacy.selected);
|
180
|
-
if (UxLinkLegacy.parent) {
|
181
|
-
this.changeParentSelection(UxLinkLegacy.parent);
|
182
|
-
}
|
183
|
-
}
|
184
|
-
if (this.highlightPath) {
|
185
|
-
this.getParents(UxLinkLegacy, evt.target.checked);
|
186
|
-
}
|
187
|
-
this.selectionChange.next(UxLinkLegacy);
|
188
|
-
}
|
189
|
-
onMetadataNodeToggle(event, UxLinkLegacy) {
|
190
|
-
this.node.expanded = !this.node.expanded;
|
191
|
-
consumeEvent(event);
|
192
|
-
}
|
193
|
-
onSubNodeClick(UxLinkLegacy) {
|
194
|
-
this.nodeClick.emit(UxLinkLegacy);
|
195
|
-
}
|
196
|
-
onSubNodeToggle(UxLinkLegacy) {
|
197
|
-
this.nodeToggle.emit(UxLinkLegacy);
|
198
|
-
}
|
199
|
-
onSelectionChange(UxLinkLegacy) {
|
200
|
-
this.selectionChange.next(UxLinkLegacy);
|
201
|
-
}
|
202
|
-
trackByFn(index, item) {
|
203
|
-
return item.id;
|
204
|
-
}
|
205
|
-
checkInputLabel() {
|
206
|
-
if (this.isRecursiveSelection && this.node.hasChildren) {
|
207
|
-
if (this.node.selected) {
|
208
|
-
return 'Deselect All';
|
209
|
-
}
|
210
|
-
else {
|
211
|
-
return 'Select All';
|
212
|
-
}
|
213
|
-
}
|
214
|
-
else if ((this.isRecursiveSelection && !this.node.hasChildren) || !this.isRecursiveSelection) {
|
215
|
-
if (this.node.selected) {
|
216
|
-
return 'Deselect node';
|
217
|
-
}
|
218
|
-
else {
|
219
|
-
return 'Select node';
|
220
|
-
}
|
221
|
-
}
|
222
|
-
}
|
223
|
-
getParents(UxLinkLegacy, isChecked) {
|
224
|
-
if (UxLinkLegacy === this.node) {
|
225
|
-
if (isChecked === true) {
|
226
|
-
this.node['highlighted'] = isChecked;
|
227
|
-
}
|
228
|
-
else {
|
229
|
-
const selectedChildren = this.hasChildSelected(this.node);
|
230
|
-
if (selectedChildren.length === 0) {
|
231
|
-
this.node['highlighted'] = isChecked;
|
232
|
-
}
|
233
|
-
}
|
234
|
-
}
|
235
|
-
if (UxLinkLegacy.parent) {
|
236
|
-
if (isChecked === true) {
|
237
|
-
UxLinkLegacy.parent['highlighted'] = isChecked;
|
238
|
-
this.getParents(UxLinkLegacy.parent, isChecked);
|
239
|
-
}
|
240
|
-
else {
|
241
|
-
const selectedChildren = this.hasChildSelected(UxLinkLegacy.parent);
|
242
|
-
if (selectedChildren.length === 0) {
|
243
|
-
UxLinkLegacy.parent['highlighted'] = isChecked;
|
244
|
-
this.getParents(UxLinkLegacy.parent, isChecked);
|
245
|
-
}
|
246
|
-
}
|
247
|
-
}
|
248
|
-
}
|
249
|
-
hasChildSelected(UxLinkLegacy, selected = []) {
|
250
|
-
if (UxLinkLegacy.selected) {
|
251
|
-
selected.push(UxLinkLegacy.label);
|
252
|
-
}
|
253
|
-
if (UxLinkLegacy.children && UxLinkLegacy.children.length > 0) {
|
254
|
-
UxLinkLegacy.children.forEach((child) => {
|
255
|
-
this.hasChildSelected(child, selected);
|
256
|
-
});
|
257
|
-
}
|
258
|
-
return selected;
|
259
|
-
}
|
260
|
-
changeSelectionRecursively(UxLinkLegacy, value) {
|
261
|
-
if (UxLinkLegacy.hasChildren) {
|
262
|
-
UxLinkLegacy.children.forEach((link) => {
|
263
|
-
link.selected = value;
|
264
|
-
if (value) {
|
265
|
-
link.indeterminate = false;
|
266
|
-
}
|
267
|
-
this.changeSelectionRecursively(link, value);
|
268
|
-
});
|
269
|
-
}
|
270
|
-
}
|
271
|
-
changeParentSelection(UxLinkLegacy) {
|
272
|
-
if (this.isRecursiveParentSelection) {
|
273
|
-
UxLinkLegacy.indeterminate = !this.allChildrenSelected(UxLinkLegacy);
|
274
|
-
UxLinkLegacy.selected = this.hasSelectedChildren(UxLinkLegacy);
|
275
|
-
}
|
276
|
-
else {
|
277
|
-
if (!UxLinkLegacy.selected) {
|
278
|
-
UxLinkLegacy.indeterminate = this.hasSelectedChildren(UxLinkLegacy);
|
279
|
-
UxLinkLegacy.selected = this.hasSelectedChildren(UxLinkLegacy);
|
280
|
-
}
|
281
|
-
if (UxLinkLegacy.indeterminate && !this.hasSelectedChildren(UxLinkLegacy)) {
|
282
|
-
UxLinkLegacy.indeterminate = false;
|
283
|
-
UxLinkLegacy.selected = false;
|
284
|
-
}
|
285
|
-
}
|
286
|
-
if (UxLinkLegacy.parent) {
|
287
|
-
this.changeParentSelection(UxLinkLegacy.parent);
|
288
|
-
}
|
289
|
-
}
|
290
|
-
allChildrenSelected(UxLinkLegacy) {
|
291
|
-
return UxLinkLegacy.children.filter((c) => (!c.selected || (c.selected && c.indeterminate)) && this.childrenSelected).length === 0;
|
292
|
-
}
|
293
|
-
hasSelectedChildren(UxLinkLegacy) {
|
294
|
-
return UxLinkLegacy.children.filter((c) => c.selected === true).length > 0;
|
295
|
-
}
|
296
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: EuiUxTreeNodeComponent, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Component }); }
|
297
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.2", type: EuiUxTreeNodeComponent, selector: "eui-ux-tree-node", inputs: { expandedIconClass: "expandedIconClass", collapsedIconClass: "collapsedIconClass", templateVariable: "templateVariable", node: "node", nodeContentTemplate: "nodeContentTemplate", e2eAttr: "e2eAttr", isFirst: "isFirst", isLast: "isLast", isRootNode: "isRootNode", isClickTogglingNode: "isClickTogglingNode", isMultiselect: "isMultiselect", isRecursiveSelection: "isRecursiveSelection", isRecursiveParentSelection: "isRecursiveParentSelection", isShowActiveNode: "isShowActiveNode", isHideToggles: "isHideToggles", isClickSelectingNode: "isClickSelectingNode", highlightPath: "highlightPath", autoTranslate: "autoTranslate", hasSelectAll: "hasSelectAll" }, outputs: { nodeClick: "nodeClick", nodeToggle: "nodeToggle", selectionChange: "selectionChange" }, ngImport: i0, template: "<li\n *ngIf=\"node.visible\"\n class=\"ux-tree__node\"\n [class.first-child]=\"isFirst\"\n [class.last-child]=\"isLast\"\n [class.ux-tree__node--expandable]=\"hasNodeChildren(node) && !isHideToggles\"\n [class.ux-tree__node--disabled]=\"node.disabled\"\n title=\"{{ node.tooltipLabel ? node.tooltipLabel : node.label }}\"\n attr.data-e2e=\"{{ e2eAttr }}\">\n <div class=\"ux-tree__node-wrapper\" [class.ux-tree__node--selected]=\"node.selected\">\n <button\n (click)=\"onNodeToggle($event, node)\"\n (keydown)=\"onNodeKeydown($event, node)\"\n styleClass=\"ux-tree__node-toggle-icon\"\n *ngIf=\"hasNodeChildren(node) && !isHideToggles\"\n euiSizeS\n euiButton\n euiBasicButton\n [ariaLabel]=\"node.expanded ? 'Collapse' : 'Expand'\">\n <eui-icon [iconClass]=\"node.expanded ? expandedIconClass : collapsedIconClass\"></eui-icon>\n </button>\n\n <span\n *ngIf=\"isMultiselect\"\n [class.ux-tree__parent]=\"hasNodeChildren(node) && !isHideToggles\"\n [class.ux-tree__leaf]=\"!hasNodeChildren(node) && !isHideToggles\">\n <input\n type=\"checkbox\"\n class=\"ux-input__checkbox\"\n [class.checkbox-label-indeterminate]=\"node.indeterminate\"\n [class.ux-input__checkbox--selected]=\"node.selected && !node.indeterminate\"\n [id]=\"nodeId\"\n [value]=\"node.label\"\n [disabled]=\"node.disabled\"\n [(ngModel)]=\"node.selected\"\n [attr.aria-label]=\"checkInputLabel()\"\n (change)=\"onCheckboxChange(node, $event)\" />\n <label class=\"ux-tree__node-checkbox-label\" [class.checkbox-label-indeterminate]=\"node.indeterminate\" [for]=\"nodeId\"> </label>\n </span>\n\n <div\n *ngIf=\"nodeContentTemplate\"\n class=\"ux-tree__custom-content\"\n [class.ux-tree__parent]=\"hasNodeChildren(node) && !isHideToggles\"\n [class.ux-tree__leaf]=\"!hasNodeChildren(node) && !isHideToggles\">\n <ng-template [ngTemplateOutlet]=\"nodeContentTemplate\" [ngTemplateOutletContext]=\"{ $implicit: node }\"> </ng-template>\n </div>\n\n <ng-container *ngIf=\"!nodeContentTemplate\">\n <ng-container *ngIf=\"node.typeLabel || node.iconClass\">\n <span\n *ngIf=\"node.typeLabel\"\n class=\"ux-tree__node-type ux-tree__node-type--{{ node.typeClass }}\"\n [class.ux-tree__node-type-parent]=\"hasNodeChildren(node) && !isHideToggles && !isMultiselect\"\n (click)=\"onNodeClick($event, node)\"\n (keydown)=\"onNodeKeydown($event, node)\">\n {{ node.typeLabel }}\n </span>\n\n <span *ngIf=\"node.iconClass\" class=\"ux-tree__node-icon ux-tree__node-type--{{ node.iconTypeClass }}\">\n <span class=\"{{ node.iconClass }}\"></span>\n </span>\n\n <div class=\"ux-tree__node-label-wrapped\">\n <span\n [class.text-muted]=\"node.disabled\"\n [class.ux-tree__node-label--highlighted]=\"node['highlighted']\"\n (click)=\"onNodeClick($event, node)\"\n (keydown)=\"onNodeKeydown($event, node)\">\n <span *ngIf=\"autoTranslate; else manualTranslation\">\n {{ node.label | translate }}\n </span>\n <ng-template #manualTranslation>{{ node.label }}</ng-template>\n <span [class.eui-u-text-link-external]=\"node && node.urlExternal\"></span>\n </span>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"!(node.typeLabel || node.iconClass)\">\n <span\n class=\"ux-tree__node-label\"\n [class.ux-tree__node-label-parent]=\"hasNodeChildren(node) && !isHideToggles && !isMultiselect\"\n [class.ux-tree__node-label--highlighted]=\"node['highlighted']\"\n [class.text-muted]=\"node.disabled\"\n (click)=\"onNodeClick($event, node)\"\n (keydown)=\"onNodeKeydown($event, node)\">\n <span *ngIf=\"autoTranslate; else manualTranslation\">\n {{ node.label | translate }}\n </span>\n <ng-template #manualTranslation>{{ node.label }}</ng-template>\n <span [class.eui-u-text-link-external]=\"node && node.urlExternal\"></span>\n </span>\n </ng-container>\n\n <div *ngIf=\"node.badges\" class=\"eui-u-ml-auto\">\n <eui-chip\n *ngFor=\"let badge of node.badges\"\n styleClass=\"ux-tree__node-badge\"\n euiSizeS\n euiOutline\n euiVariant=\"{{ badge.typeClass }}\">\n {{ badge.label }}\n </eui-chip>\n </div>\n\n <span\n *ngIf=\"node.metadata && node.metadata.title && node.metadata.title.length > 0\"\n class=\"ux-tree__node-metacontent-toggle ux-tree__node-clickable\"\n (click)=\"onMetadataNodeToggle($event, node)\">\n <span class=\"eui-icon\" [ngClass]=\"node.expanded ? 'eui-icon eui-icon-angle-down' : 'eui-icon eui-icon-angle-right'\"></span>\n </span>\n </ng-container>\n </div>\n <ng-container *ngIf=\"node.expanded\">\n <ul *ngIf=\"hasNodeChildren(node)\" class=\"ux-tree__nodes\">\n <eui-ux-tree-node\n *ngFor=\"let subNode of node.children; let isFirst = first; let isLast = last; trackBy: trackByFn\"\n [node]=\"subNode\"\n [isMultiselect]=\"isMultiselect\"\n [isRecursiveSelection]=\"isRecursiveSelection\"\n (nodeClick)=\"onSubNodeClick($event)\"\n (nodeToggle)=\"onSubNodeToggle($event)\"\n (selectionChange)=\"onSelectionChange($event)\"\n [isFirst]=\"isFirst\"\n [isLast]=\"isLast\"\n [isClickTogglingNode]=\"isClickTogglingNode\"\n expandedIconClass=\"{{ expandedIconClass }}\"\n collapsedIconClass=\"{{ collapsedIconClass }}\"\n [templateVariable]=\"templateVariable\"\n [nodeContentTemplate]=\"nodeContentTemplate\"\n [isShowActiveNode]=\"isShowActiveNode\"\n [isHideToggles]=\"isHideToggles\"\n [isClickSelectingNode]=\"isClickSelectingNode\"\n [highlightPath]=\"highlightPath\"\n [isRecursiveParentSelection]=\"isRecursiveParentSelection\"\n [autoTranslate]=\"autoTranslate\">\n </eui-ux-tree-node>\n </ul>\n <div *ngIf=\"node.metadata && node.metadata.title && node.metadata.title.length > 0\" class=\"ux-tree__node-metacontent\">\n <ng-template [ngTemplateOutlet]=\"templateVariable\" [ngTemplateOutletContext]=\"{ metadata: node.metadata }\"></ng-template>\n </div>\n </ng-container>\n</li>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.EuiIconComponent, selector: "div[euiIcon], span[euiIcon], i[euiIcon], eui-icon", inputs: ["aria-label", "iconClass", "isLoading"] }, { kind: "component", type: i5.EuiButtonComponent, selector: "button[euiButton], a[euiButton]", inputs: ["e2eAttr", "id", "euiBasicButton", "euiButtonCall", "euiBlockButton", "isLoading", "euiIconButton", "euiLineWrap"], outputs: ["buttonClick"] }, { kind: "component", type: i6.EuiChipComponent, selector: "eui-chip, span[euiChip], li[euiChip]", inputs: ["euiInternalId", "tooltipMessage", "id", "data", "isChipRemovable", "isSquared"], outputs: ["remove"] }, { kind: "component", type: EuiUxTreeNodeComponent, selector: "eui-ux-tree-node", inputs: ["expandedIconClass", "collapsedIconClass", "templateVariable", "node", "nodeContentTemplate", "e2eAttr", "isFirst", "isLast", "isRootNode", "isClickTogglingNode", "isMultiselect", "isRecursiveSelection", "isRecursiveParentSelection", "isShowActiveNode", "isHideToggles", "isClickSelectingNode", "highlightPath", "autoTranslate", "hasSelectAll"], outputs: ["nodeClick", "nodeToggle", "selectionChange"] }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] }); }
|
298
|
-
}
|
299
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: EuiUxTreeNodeComponent, decorators: [{
|
300
|
-
type: Component,
|
301
|
-
args: [{ selector: 'eui-ux-tree-node', template: "<li\n *ngIf=\"node.visible\"\n class=\"ux-tree__node\"\n [class.first-child]=\"isFirst\"\n [class.last-child]=\"isLast\"\n [class.ux-tree__node--expandable]=\"hasNodeChildren(node) && !isHideToggles\"\n [class.ux-tree__node--disabled]=\"node.disabled\"\n title=\"{{ node.tooltipLabel ? node.tooltipLabel : node.label }}\"\n attr.data-e2e=\"{{ e2eAttr }}\">\n <div class=\"ux-tree__node-wrapper\" [class.ux-tree__node--selected]=\"node.selected\">\n <button\n (click)=\"onNodeToggle($event, node)\"\n (keydown)=\"onNodeKeydown($event, node)\"\n styleClass=\"ux-tree__node-toggle-icon\"\n *ngIf=\"hasNodeChildren(node) && !isHideToggles\"\n euiSizeS\n euiButton\n euiBasicButton\n [ariaLabel]=\"node.expanded ? 'Collapse' : 'Expand'\">\n <eui-icon [iconClass]=\"node.expanded ? expandedIconClass : collapsedIconClass\"></eui-icon>\n </button>\n\n <span\n *ngIf=\"isMultiselect\"\n [class.ux-tree__parent]=\"hasNodeChildren(node) && !isHideToggles\"\n [class.ux-tree__leaf]=\"!hasNodeChildren(node) && !isHideToggles\">\n <input\n type=\"checkbox\"\n class=\"ux-input__checkbox\"\n [class.checkbox-label-indeterminate]=\"node.indeterminate\"\n [class.ux-input__checkbox--selected]=\"node.selected && !node.indeterminate\"\n [id]=\"nodeId\"\n [value]=\"node.label\"\n [disabled]=\"node.disabled\"\n [(ngModel)]=\"node.selected\"\n [attr.aria-label]=\"checkInputLabel()\"\n (change)=\"onCheckboxChange(node, $event)\" />\n <label class=\"ux-tree__node-checkbox-label\" [class.checkbox-label-indeterminate]=\"node.indeterminate\" [for]=\"nodeId\"> </label>\n </span>\n\n <div\n *ngIf=\"nodeContentTemplate\"\n class=\"ux-tree__custom-content\"\n [class.ux-tree__parent]=\"hasNodeChildren(node) && !isHideToggles\"\n [class.ux-tree__leaf]=\"!hasNodeChildren(node) && !isHideToggles\">\n <ng-template [ngTemplateOutlet]=\"nodeContentTemplate\" [ngTemplateOutletContext]=\"{ $implicit: node }\"> </ng-template>\n </div>\n\n <ng-container *ngIf=\"!nodeContentTemplate\">\n <ng-container *ngIf=\"node.typeLabel || node.iconClass\">\n <span\n *ngIf=\"node.typeLabel\"\n class=\"ux-tree__node-type ux-tree__node-type--{{ node.typeClass }}\"\n [class.ux-tree__node-type-parent]=\"hasNodeChildren(node) && !isHideToggles && !isMultiselect\"\n (click)=\"onNodeClick($event, node)\"\n (keydown)=\"onNodeKeydown($event, node)\">\n {{ node.typeLabel }}\n </span>\n\n <span *ngIf=\"node.iconClass\" class=\"ux-tree__node-icon ux-tree__node-type--{{ node.iconTypeClass }}\">\n <span class=\"{{ node.iconClass }}\"></span>\n </span>\n\n <div class=\"ux-tree__node-label-wrapped\">\n <span\n [class.text-muted]=\"node.disabled\"\n [class.ux-tree__node-label--highlighted]=\"node['highlighted']\"\n (click)=\"onNodeClick($event, node)\"\n (keydown)=\"onNodeKeydown($event, node)\">\n <span *ngIf=\"autoTranslate; else manualTranslation\">\n {{ node.label | translate }}\n </span>\n <ng-template #manualTranslation>{{ node.label }}</ng-template>\n <span [class.eui-u-text-link-external]=\"node && node.urlExternal\"></span>\n </span>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"!(node.typeLabel || node.iconClass)\">\n <span\n class=\"ux-tree__node-label\"\n [class.ux-tree__node-label-parent]=\"hasNodeChildren(node) && !isHideToggles && !isMultiselect\"\n [class.ux-tree__node-label--highlighted]=\"node['highlighted']\"\n [class.text-muted]=\"node.disabled\"\n (click)=\"onNodeClick($event, node)\"\n (keydown)=\"onNodeKeydown($event, node)\">\n <span *ngIf=\"autoTranslate; else manualTranslation\">\n {{ node.label | translate }}\n </span>\n <ng-template #manualTranslation>{{ node.label }}</ng-template>\n <span [class.eui-u-text-link-external]=\"node && node.urlExternal\"></span>\n </span>\n </ng-container>\n\n <div *ngIf=\"node.badges\" class=\"eui-u-ml-auto\">\n <eui-chip\n *ngFor=\"let badge of node.badges\"\n styleClass=\"ux-tree__node-badge\"\n euiSizeS\n euiOutline\n euiVariant=\"{{ badge.typeClass }}\">\n {{ badge.label }}\n </eui-chip>\n </div>\n\n <span\n *ngIf=\"node.metadata && node.metadata.title && node.metadata.title.length > 0\"\n class=\"ux-tree__node-metacontent-toggle ux-tree__node-clickable\"\n (click)=\"onMetadataNodeToggle($event, node)\">\n <span class=\"eui-icon\" [ngClass]=\"node.expanded ? 'eui-icon eui-icon-angle-down' : 'eui-icon eui-icon-angle-right'\"></span>\n </span>\n </ng-container>\n </div>\n <ng-container *ngIf=\"node.expanded\">\n <ul *ngIf=\"hasNodeChildren(node)\" class=\"ux-tree__nodes\">\n <eui-ux-tree-node\n *ngFor=\"let subNode of node.children; let isFirst = first; let isLast = last; trackBy: trackByFn\"\n [node]=\"subNode\"\n [isMultiselect]=\"isMultiselect\"\n [isRecursiveSelection]=\"isRecursiveSelection\"\n (nodeClick)=\"onSubNodeClick($event)\"\n (nodeToggle)=\"onSubNodeToggle($event)\"\n (selectionChange)=\"onSelectionChange($event)\"\n [isFirst]=\"isFirst\"\n [isLast]=\"isLast\"\n [isClickTogglingNode]=\"isClickTogglingNode\"\n expandedIconClass=\"{{ expandedIconClass }}\"\n collapsedIconClass=\"{{ collapsedIconClass }}\"\n [templateVariable]=\"templateVariable\"\n [nodeContentTemplate]=\"nodeContentTemplate\"\n [isShowActiveNode]=\"isShowActiveNode\"\n [isHideToggles]=\"isHideToggles\"\n [isClickSelectingNode]=\"isClickSelectingNode\"\n [highlightPath]=\"highlightPath\"\n [isRecursiveParentSelection]=\"isRecursiveParentSelection\"\n [autoTranslate]=\"autoTranslate\">\n </eui-ux-tree-node>\n </ul>\n <div *ngIf=\"node.metadata && node.metadata.title && node.metadata.title.length > 0\" class=\"ux-tree__node-metacontent\">\n <ng-template [ngTemplateOutlet]=\"templateVariable\" [ngTemplateOutletContext]=\"{ metadata: node.metadata }\"></ng-template>\n </div>\n </ng-container>\n</li>\n" }]
|
302
|
-
}], ctorParameters: () => [{ type: i1.Router }], propDecorators: { expandedIconClass: [{
|
303
|
-
type: Input
|
304
|
-
}], collapsedIconClass: [{
|
305
|
-
type: Input
|
306
|
-
}], templateVariable: [{
|
307
|
-
type: Input
|
308
|
-
}], node: [{
|
309
|
-
type: Input
|
310
|
-
}], nodeContentTemplate: [{
|
311
|
-
type: Input
|
312
|
-
}], e2eAttr: [{
|
313
|
-
type: Input
|
314
|
-
}], nodeClick: [{
|
315
|
-
type: Output
|
316
|
-
}], nodeToggle: [{
|
317
|
-
type: Output
|
318
|
-
}], selectionChange: [{
|
319
|
-
type: Output
|
320
|
-
}], isFirst: [{
|
321
|
-
type: Input
|
322
|
-
}], isLast: [{
|
323
|
-
type: Input
|
324
|
-
}], isRootNode: [{
|
325
|
-
type: Input
|
326
|
-
}], isClickTogglingNode: [{
|
327
|
-
type: Input
|
328
|
-
}], isMultiselect: [{
|
329
|
-
type: Input
|
330
|
-
}], isRecursiveSelection: [{
|
331
|
-
type: Input
|
332
|
-
}], isRecursiveParentSelection: [{
|
333
|
-
type: Input
|
334
|
-
}], isShowActiveNode: [{
|
335
|
-
type: Input
|
336
|
-
}], isHideToggles: [{
|
337
|
-
type: Input
|
338
|
-
}], isClickSelectingNode: [{
|
339
|
-
type: Input
|
340
|
-
}], highlightPath: [{
|
341
|
-
type: Input
|
342
|
-
}], autoTranslate: [{
|
343
|
-
type: Input
|
344
|
-
}], hasSelectAll: [{
|
345
|
-
type: Input
|
346
|
-
}] } });
|
347
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLXV4LXRyZWUtbm9kZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9ldWktdXgtdHJlZS9ldWktdXgtdHJlZS1ub2RlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL2V1aS11eC10cmVlL2V1aS11eC10cmVlLW5vZGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0JBQW9CO0FBRXBCLE9BQU8sRUFDSCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEdBRVQsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkQsT0FBTyxFQUFFLHFCQUFxQixFQUFnQixNQUFNLHVCQUF1QixDQUFDOzs7Ozs7Ozs7QUFNNUUsTUFBTSxPQUFPLHNCQUFzQjtJQWdCL0IsSUFDSSxPQUFPO1FBQ1AsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFDRCxJQUFJLE9BQU8sQ0FBQyxLQUFtQjtRQUMzQixJQUFJLENBQUMsUUFBUSxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxJQUNJLE1BQU07UUFDTixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDeEIsQ0FBQztJQUNELElBQUksTUFBTSxDQUFDLEtBQW1CO1FBQzFCLElBQUksQ0FBQyxPQUFPLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELElBQ0ksVUFBVTtRQUNWLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUM1QixDQUFDO0lBQ0QsSUFBSSxVQUFVLENBQUMsS0FBbUI7UUFDOUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsSUFDSSxtQkFBbUI7UUFDbkIsT0FBTyxJQUFJLENBQUMs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Q0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDL0UsQ0FBQztpSUFuVVEsc0JBQXNCO3FIQUF0QixzQkFBc0IsbXpCQ2xCbkMseXpPQStJQSxrbkREN0hhLHNCQUFzQjs7MkZBQXRCLHNCQUFzQjtrQkFKbEMsU0FBUzsrQkFDSSxrQkFBa0I7MkVBSW5CLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUVJLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNO2dCQU9ILE9BQU87c0JBRFYsS0FBSztnQkFTRixNQUFNO3NCQURULEtBQUs7Z0JBU0YsVUFBVTtzQkFEYixLQUFLO2dCQVNGLG1CQUFtQjtzQkFEdEIsS0FBSztnQkFTRixhQUFhO3NCQURoQixLQUFLO2dCQVNGLG9CQUFvQjtzQkFEdkIsS0FBSztnQkFTRiwwQkFBMEI7c0JBRDdCLEtBQUs7Z0JBU0YsZ0JBQWdCO3NCQURuQixLQUFLO2dCQVNGLGFBQWE7c0JBRGhCLEtBQUs7Z0JBU0Ysb0JBQW9CO3NCQUR2QixLQUFLO2dCQVNGLGFBQWE7c0JBRGhCLEtBQUs7Z0JBU0YsYUFBYTtzQkFEaEIsS0FBSztnQkFTRixZQUFZO3NCQURmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSAqL1xuXG5pbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIFRlbXBsYXRlUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBVeExpbmtMZWdhY3kgfSBmcm9tICdAZXVpL2NvcmUnO1xuaW1wb3J0IHsgY29uc3VtZUV2ZW50LCB1bmlxdWVJZCB9IGZyb20gJ0BldWkvY29yZSc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHksIEJvb2xlYW5JbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZXVpLXV4LXRyZWUtbm9kZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2V1aS11eC10cmVlLW5vZGUuY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBFdWlVeFRyZWVOb2RlQ29tcG9uZW50IHtcbiAgICBASW5wdXQoKSBleHBhbmRlZEljb25DbGFzczogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGNvbGxhcHNlZEljb25DbGFzczogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHRlbXBsYXRlVmFyaWFibGU6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgQElucHV0KCkgbm9kZTogVXhMaW5rTGVnYWN5O1xuICAgIEBJbnB1dCgpIG5vZGVDb250ZW50VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgQElucHV0KCkgZTJlQXR0ciA9ICd1eC10cmVlLW5vZGUnO1xuXG4gICAgQE91dHB1dCgpIG5vZGVDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8VXhMaW5rTGVnYWN5PigpO1xuICAgIEBPdXRwdXQoKSBub2RlVG9nZ2xlID0gbmV3IEV2ZW50RW1pdHRlcjxVeExpbmtMZWdhY3k+KCk7XG4gICAgQE91dHB1dCgpIHNlbGVjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VXhMaW5rTGVnYWN5PigpO1xuXG4gICAgcHVibGljIG5vZGVJZDogc3RyaW5nO1xuICAgIHB1YmxpYyBjaGlsZHJlblNlbGVjdGVkID0gdHJ1ZTtcbiAgICBwdWJsaWMgYW1vdW50U2VsZWN0ZWRDaGlsZHJlbiA9IDA7XG5cbiAgICBASW5wdXQoKVxuICAgIGdldCBpc0ZpcnN0KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNGaXJzdDtcbiAgICB9XG4gICAgc2V0IGlzRmlyc3QodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9pc0ZpcnN0ID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaXNGaXJzdCA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGlzTGFzdCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzTGFzdDtcbiAgICB9XG4gICAgc2V0IGlzTGFzdCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2lzTGFzdCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2lzTGFzdCA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGlzUm9vdE5vZGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1Jvb3ROb2RlO1xuICAgIH1cbiAgICBzZXQgaXNSb290Tm9kZSh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2lzUm9vdE5vZGUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9pc1Jvb3ROb2RlID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgaXNDbGlja1RvZ2dsaW5nTm9kZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzQ2xpY2tUb2dnbGluZ05vZGU7XG4gICAgfVxuICAgIHNldCBpc0NsaWNrVG9nZ2xpbmdOb2RlKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNDbGlja1RvZ2dsaW5nTm9kZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2lzQ2xpY2tUb2dnbGluZ05vZGUgPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBpc011bHRpc2VsZWN0KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNNdWx0aXNlbGVjdDtcbiAgICB9XG4gICAgc2V0IGlzTXVsdGlzZWxlY3QodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9pc011bHRpc2VsZWN0ID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaXNNdWx0aXNlbGVjdCA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGlzUmVjdXJzaXZlU2VsZWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNSZWN1cnNpdmVTZWxlY3Rpb247XG4gICAgfVxuICAgIHNldCBpc1JlY3Vyc2l2ZVNlbGVjdGlvbih2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2lzUmVjdXJzaXZlU2VsZWN0aW9uID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaXNSZWN1cnNpdmVTZWxlY3Rpb24gPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBpc1JlY3Vyc2l2ZVBhcmVudFNlbGVjdGlvbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzUmVjdXJzaXZlUGFyZW50U2VsZWN0aW9uO1xuICAgIH1cbiAgICBzZXQgaXNSZWN1cnNpdmVQYXJlbnRTZWxlY3Rpb24odmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9pc1JlY3Vyc2l2ZVBhcmVudFNlbGVjdGlvbiA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2lzUmVjdXJzaXZlUGFyZW50U2VsZWN0aW9uID0gdHJ1ZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBpc1Nob3dBY3RpdmVOb2RlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNTaG93QWN0aXZlTm9kZTtcbiAgICB9XG4gICAgc2V0IGlzU2hvd0FjdGl2ZU5vZGUodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9pc1Nob3dBY3RpdmVOb2RlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaXNTaG93QWN0aXZlTm9kZSA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGlzSGlkZVRvZ2dsZXMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0hpZGVUb2dnbGVzO1xuICAgIH1cbiAgICBzZXQgaXNIaWRlVG9nZ2xlcyh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2lzSGlkZVRvZ2dsZXMgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9pc0hpZGVUb2dnbGVzID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgaXNDbGlja1NlbGVjdGluZ05vZGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0NsaWNrU2VsZWN0aW5nTm9kZTtcbiAgICB9XG4gICAgc2V0IGlzQ2xpY2tTZWxlY3RpbmdOb2RlKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNDbGlja1NlbGVjdGluZ05vZGUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9pc0NsaWNrU2VsZWN0aW5nTm9kZSA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGhpZ2hsaWdodFBhdGgoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oaWdobGlnaHRQYXRoO1xuICAgIH1cbiAgICBzZXQgaGlnaGxpZ2h0UGF0aCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2hpZ2hsaWdodFBhdGggPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9oaWdobGlnaHRQYXRoID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgYXV0b1RyYW5zbGF0ZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2F1dG9UcmFuc2xhdGU7XG4gICAgfVxuICAgIHNldCBhdXRvVHJhbnNsYXRlKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5fYXV0b1RyYW5zbGF0ZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2F1dG9UcmFuc2xhdGUgPSB0cnVlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGhhc1NlbGVjdEFsbCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hhc1NlbGVjdEFsbDtcbiAgICB9XG4gICAgc2V0IGhhc1NlbGVjdEFsbCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2hhc1NlbGVjdEFsbCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2hhc1NlbGVjdEFsbCA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikge1xuICAgICAgICB0aGlzLm5vZGVJZCA9IGB1eC10cmVlLW5vZGUtJHt1bmlxdWVJZCgpfWA7XG4gICAgfVxuXG4gICAgcHVibGljIGhhc05vZGVDaGlsZHJlbihub2RlOiBVeExpbmtMZWdhY3kpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIG5vZGUgJiYgbm9kZS5jaGlsZHJlbiAmJiBub2RlLmNoaWxkcmVuLmxlbmd0aCA+IDA7XG4gICAgfVxuXG4gICAgcHVibGljIG9uTm9kZUtleWRvd24oZXZlbnQ6IGFueSwgVXhMaW5rTGVnYWN5OiBVeExpbmtMZWdhY3kpOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IDEzKSB7XG4gICAgICAgICAgICB0aGlzLm9uTm9kZUNsaWNrKGV2ZW50LCBVeExpbmtMZWdhY3kpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uTm9kZVRvZ2dsZShldmVudDogRXZlbnQsIFV4TGlua0xlZ2FjeTogVXhMaW5rTGVnYWN5KTogdm9pZCB7XG4gICAgICAgIHRoaXMubm9kZS5leHBhbmRlZCA9ICF0aGlzLm5vZGUuZXhwYW5kZWQ7XG4gICAgICAgIHRoaXMubm9kZVRvZ2dsZS5lbWl0KFV4TGlua0xlZ2FjeSk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uTm9kZUNsaWNrKGV2ZW50OiBFdmVudCwgVXhMaW5rTGVnYWN5OiBVeExpbmtMZWdhY3kpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFVeExpbmtMZWdhY3kuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5ub2RlLm1ldGFkYXRhKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNNdWx0aXNlbGVjdCAmJiB0aGlzLmlzQ2xpY2tTZWxlY3RpbmdOb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIFV4TGlua0xlZ2FjeS5zZWxlY3RlZCA9ICFVeExpbmtMZWdhY3kuc2VsZWN0ZWQ7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnRhcmdldFsnY2hlY2tlZCddID0gVXhMaW5rTGVnYWN5LnNlbGVjdGVkO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uQ2hlY2tib3hDaGFuZ2UoVXhMaW5rTGVnYWN5LCBldmVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5ub2RlLmNoaWxkcmVuIHx8IHRoaXMubm9kZS5jaGlsZHJlbi5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlLmV4cGFuZGVkID0gIXRoaXMubm9kZS5leHBhbmRlZDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5ub2RlLnVybCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMubm9kZS51cmxdKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5ub2RlLnVybEV4dGVybmFsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cub3Blbih0aGlzLm5vZGUudXJsRXh0ZXJuYWwsIHRoaXMubm9kZS51cmxFeHRlcm5hbFRhcmdldCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjbGlja2VkRWwgPSBldmVudC50YXJnZXRbJ25vZGVOYW1lJ107XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzQ2xpY2tUb2dnbGluZ05vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25Ob2RlVG9nZ2xlKGV2ZW50LCBVeExpbmtMZWdhY3kpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChjbGlja2VkRWwgPT09ICdTUEFOJyAmJiAodGhpcy5ub2RlLnVybCB8fCB0aGlzLm5vZGUudXJsRXh0ZXJuYWwpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5ub2RlLnVybCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt0aGlzLm5vZGUudXJsXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5ub2RlLnVybEV4dGVybmFsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93Lm9wZW4odGhpcy5ub2RlLnVybEV4dGVybmFsLCB0aGlzLm5vZGUudXJsRXh0ZXJuYWxUYXJnZXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5ub2RlLnVybCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy5ub2RlLnVybF0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5ub2RlLnVybEV4dGVybmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5vcGVuKHRoaXMubm9kZS51cmxFeHRlcm5hbCwgdGhpcy5ub2RlLnVybEV4dGVybmFsVGFyZ2V0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoVXhMaW5rTGVnYWN5LmNvbW1hbmQpIHtcbiAgICAgICAgICAgICAgICBVeExpbmtMZWdhY3kuY29tbWFuZCgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLm5vZGVDbGljay5lbWl0KFV4TGlua0xlZ2FjeSk7XG4gICAgICAgICAgICBjb25zdW1lRXZlbnQoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ2hlY2tib3hDaGFuZ2UoVXhMaW5rTGVnYWN5OiBVeExpbmtMZWdhY3ksIGV2dDogYW55KTogdm9pZCB7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNSZWN1cnNpdmVTZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIGlmICghVXhMaW5rTGVnYWN5LnNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgVXhMaW5rTGVnYWN5LmluZGV0ZXJtaW5hdGUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuY2hhbmdlU2VsZWN0aW9uUmVjdXJzaXZlbHkoVXhMaW5rTGVnYWN5LCBVeExpbmtMZWdhY3kuc2VsZWN0ZWQpO1xuICAgICAgICAgICAgaWYgKFV4TGlua0xlZ2FjeS5wYXJlbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZVBhcmVudFNlbGVjdGlvbihVeExpbmtMZWdhY3kucGFyZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmhpZ2hsaWdodFBhdGgpIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0UGFyZW50cyhVeExpbmtMZWdhY3ksIGV2dC50YXJnZXQuY2hlY2tlZCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5uZXh0KFV4TGlua0xlZ2FjeSk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uTWV0YWRhdGFOb2RlVG9nZ2xlKGV2ZW50OiBFdmVudCwgVXhMaW5rTGVnYWN5OiBVeExpbmtMZWdhY3kpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ub2RlLmV4cGFuZGVkID0gIXRoaXMubm9kZS5leHBhbmRlZDtcbiAgICAgICAgY29uc3VtZUV2ZW50KGV2ZW50KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25TdWJOb2RlQ2xpY2soVXhMaW5rTGVnYWN5OiBVeExpbmtMZWdhY3kpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ub2RlQ2xpY2suZW1pdChVeExpbmtMZWdhY3kpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblN1Yk5vZGVUb2dnbGUoVXhMaW5rTGVnYWN5OiBVeExpbmtMZWdhY3kpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ub2RlVG9nZ2xlLmVtaXQoVXhMaW5rTGVnYWN5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25TZWxlY3Rpb25DaGFuZ2UoVXhMaW5rTGVnYWN5OiBVeExpbmtMZWdhY3kpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UubmV4dChVeExpbmtMZWdhY3kpO1xuICAgIH1cblxuICAgIHB1YmxpYyB0cmFja0J5Rm4oaW5kZXg6IG51bWJlciwgaXRlbTogVXhMaW5rTGVnYWN5KTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0uaWQ7XG4gICAgfVxuXG4gICAgY2hlY2tJbnB1dExhYmVsKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLmlzUmVjdXJzaXZlU2VsZWN0aW9uICYmIHRoaXMubm9kZS5oYXNDaGlsZHJlbikge1xuICAgICAgICAgICAgaWYgKHRoaXMubm9kZS5zZWxlY3RlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnRGVzZWxlY3QgQWxsJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdTZWxlY3QgQWxsJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICgodGhpcy5pc1JlY3Vyc2l2ZVNlbGVjdGlvbiAmJiAhdGhpcy5ub2RlLmhhc0NoaWxkcmVuKSB8fCAhdGhpcy5pc1JlY3Vyc2l2ZVNlbGVjdGlvbikge1xuICAgICAgICAgICAgaWYgKHRoaXMubm9kZS5zZWxlY3RlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnRGVzZWxlY3Qgbm9kZSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAnU2VsZWN0IG5vZGUnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRQYXJlbnRzKFV4TGlua0xlZ2FjeTogVXhMaW5rTGVnYWN5LCBpc0NoZWNrZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKFV4TGlua0xlZ2FjeSA9PT0gdGhpcy5ub2RlKSB7XG4gICAgICAgICAgICBpZiAoaXNDaGVja2VkID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlWydoaWdobGlnaHRlZCddID0gaXNDaGVja2VkO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZENoaWxkcmVuID0gdGhpcy5oYXNDaGlsZFNlbGVjdGVkKHRoaXMubm9kZSk7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkQ2hpbGRyZW4ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZVsnaGlnaGxpZ2h0ZWQnXSA9IGlzQ2hlY2tlZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoVXhMaW5rTGVnYWN5LnBhcmVudCkge1xuICAgICAgICAgICAgaWYgKGlzQ2hlY2tlZCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIFV4TGlua0xlZ2FjeS5wYXJlbnRbJ2hpZ2hsaWdodGVkJ10gPSBpc0NoZWNrZWQ7XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRQYXJlbnRzKFV4TGlua0xlZ2FjeS5wYXJlbnQsIGlzQ2hlY2tlZCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkQ2hpbGRyZW4gPSB0aGlzLmhhc0NoaWxkU2VsZWN0ZWQoVXhMaW5rTGVnYWN5LnBhcmVudCk7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkQ2hpbGRyZW4ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIFV4TGlua0xlZ2FjeS5wYXJlbnRbJ2hpZ2hsaWdodGVkJ10gPSBpc0NoZWNrZWQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0UGFyZW50cyhVeExpbmtMZWdhY3kucGFyZW50LCBpc0NoZWNrZWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaGFzQ2hpbGRTZWxlY3RlZChVeExpbmtMZWdhY3k6IFV4TGlua0xlZ2FjeSwgc2VsZWN0ZWQgPSBbXSk6IHN0cmluZ1tdIHtcbiAgICAgICAgaWYgKFV4TGlua0xlZ2FjeS5zZWxlY3RlZCkge1xuICAgICAgICAgICAgc2VsZWN0ZWQucHVzaChVeExpbmtMZWdhY3kubGFiZWwpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFV4TGlua0xlZ2FjeS5jaGlsZHJlbiAmJiBVeExpbmtMZWdhY3kuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgVXhMaW5rTGVnYWN5LmNoaWxkcmVuLmZvckVhY2goKGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYXNDaGlsZFNlbGVjdGVkKGNoaWxkLCBzZWxlY3RlZCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzZWxlY3RlZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNoYW5nZVNlbGVjdGlvblJlY3Vyc2l2ZWx5KFV4TGlua0xlZ2FjeTogVXhMaW5rTGVnYWN5LCB2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAoVXhMaW5rTGVnYWN5Lmhhc0NoaWxkcmVuKSB7XG4gICAgICAgICAgICBVeExpbmtMZWdhY3kuY2hpbGRyZW4uZm9yRWFjaCgobGluazogVXhMaW5rTGVnYWN5KSA9PiB7XG4gICAgICAgICAgICAgICAgbGluay5zZWxlY3RlZCA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBsaW5rLmluZGV0ZXJtaW5hdGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VTZWxlY3Rpb25SZWN1cnNpdmVseShsaW5rLCB2YWx1ZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY2hhbmdlUGFyZW50U2VsZWN0aW9uKFV4TGlua0xlZ2FjeTogVXhMaW5rTGVnYWN5KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzUmVjdXJzaXZlUGFyZW50U2VsZWN0aW9uKSB7XG4gICAgICAgICAgICBVeExpbmtMZWdhY3kuaW5kZXRlcm1pbmF0ZSA9ICF0aGlzLmFsbENoaWxkcmVuU2VsZWN0ZWQoVXhMaW5rTGVnYWN5KTtcbiAgICAgICAgICAgIFV4TGlua0xlZ2FjeS5zZWxlY3RlZCA9IHRoaXMuaGFzU2VsZWN0ZWRDaGlsZHJlbihVeExpbmtMZWdhY3kpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFVeExpbmtMZWdhY3kuc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICBVeExpbmtMZWdhY3kuaW5kZXRlcm1pbmF0ZSA9IHRoaXMuaGFzU2VsZWN0ZWRDaGlsZHJlbihVeExpbmtMZWdhY3kpO1xuICAgICAgICAgICAgICAgIFV4TGlua0xlZ2FjeS5zZWxlY3RlZCA9IHRoaXMuaGFzU2VsZWN0ZWRDaGlsZHJlbihVeExpbmtMZWdhY3kpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoVXhMaW5rTGVnYWN5LmluZGV0ZXJtaW5hdGUgJiYgIXRoaXMuaGFzU2VsZWN0ZWRDaGlsZHJlbihVeExpbmtMZWdhY3kpKSB7XG4gICAgICAgICAgICAgICAgVXhMaW5rTGVnYWN5LmluZGV0ZXJtaW5hdGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBVeExpbmtMZWdhY3kuc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChVeExpbmtMZWdhY3kucGFyZW50KSB7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZVBhcmVudFNlbGVjdGlvbihVeExpbmtMZWdhY3kucGFyZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYWxsQ2hpbGRyZW5TZWxlY3RlZChVeExpbmtMZWdhY3k6IFV4TGlua0xlZ2FjeSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gVXhMaW5rTGVnYWN5LmNoaWxkcmVuLmZpbHRlcigoYykgPT4gKCFjLnNlbGVjdGVkIHx8IChjLnNlbGVjdGVkICYmIGMuaW5kZXRlcm1pbmF0ZSkpICYmIHRoaXMuY2hpbGRyZW5TZWxlY3RlZCkubGVuZ3RoID09PSAwO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFzU2VsZWN0ZWRDaGlsZHJlbihVeExpbmtMZWdhY3k6IFV4TGlua0xlZ2FjeSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gVXhMaW5rTGVnYWN5LmNoaWxkcmVuLmZpbHRlcigoYykgPT4gYy5zZWxlY3RlZCA9PT0gdHJ1ZSkubGVuZ3RoID4gMDtcbiAgICB9XG59XG5cbi8qIGVzbGludC1lbmFibGUgKi9cbiIsIjxsaVxuICAgICpuZ0lmPVwibm9kZS52aXNpYmxlXCJcbiAgICBjbGFzcz1cInV4LXRyZWVfX25vZGVcIlxuICAgIFtjbGFzcy5maXJzdC1jaGlsZF09XCJpc0ZpcnN0XCJcbiAgICBbY2xhc3MubGFzdC1jaGlsZF09XCJpc0xhc3RcIlxuICAgIFtjbGFzcy51eC10cmVlX19ub2RlLS1leHBhbmRhYmxlXT1cImhhc05vZGVDaGlsZHJlbihub2RlKSAmJiAhaXNIaWRlVG9nZ2xlc1wiXG4gICAgW2NsYXNzLnV4LXRyZWVfX25vZGUtLWRpc2FibGVkXT1cIm5vZGUuZGlzYWJsZWRcIlxuICAgIHRpdGxlPVwie3sgbm9kZS50b29sdGlwTGFiZWwgPyBub2RlLnRvb2x0aXBMYWJlbCA6IG5vZGUubGFiZWwgfX1cIlxuICAgIGF0dHIuZGF0YS1lMmU9XCJ7eyBlMmVBdHRyIH19XCI+XG4gICAgPGRpdiBjbGFzcz1cInV4LXRyZWVfX25vZGUtd3JhcHBlclwiIFtjbGFzcy51eC10cmVlX19ub2RlLS1zZWxlY3RlZF09XCJub2RlLnNlbGVjdGVkXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIChjbGljayk9XCJvbk5vZGVUb2dnbGUoJGV2ZW50LCBub2RlKVwiXG4gICAgICAgICAgICAoa2V5ZG93bik9XCJvbk5vZGVLZXlkb3duKCRldmVudCwgbm9kZSlcIlxuICAgICAgICAgICAgc3R5bGVDbGFzcz1cInV4LXRyZWVfX25vZGUtdG9nZ2xlLWljb25cIlxuICAgICAgICAgICAgKm5nSWY9XCJoYXNOb2RlQ2hpbGRyZW4obm9kZSkgJiYgIWlzSGlkZVRvZ2dsZXNcIlxuICAgICAgICAgICAgZXVpU2l6ZVNcbiAgICAgICAgICAgIGV1aUJ1dHRvblxuICAgICAgICAgICAgZXVpQmFzaWNCdXR0b25cbiAgICAgICAgICAgIFthcmlhTGFiZWxdPVwibm9kZS5leHBhbmRlZCA/ICdDb2xsYXBzZScgOiAnRXhwYW5kJ1wiPlxuICAgICAgICAgICAgPGV1aS1pY29uIFtpY29uQ2xhc3NdPVwibm9kZS5leHBhbmRlZCA/IGV4cGFuZGVkSWNvbkNsYXNzIDogY29sbGFwc2VkSWNvbkNsYXNzXCI+PC9ldWktaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICpuZ0lmPVwiaXNNdWx0aXNlbGVjdFwiXG4gICAgICAgICAgICBbY2xhc3MudXgtdHJlZV9fcGFyZW50XT1cImhhc05vZGVDaGlsZHJlbihub2RlKSAmJiAhaXNIaWRlVG9nZ2xlc1wiXG4gICAgICAgICAgICBbY2xhc3MudXgtdHJlZV9fbGVhZl09XCIhaGFzTm9kZUNoaWxkcmVuKG5vZGUpICYmICFpc0hpZGVUb2dnbGVzXCI+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidXgtaW5wdXRfX2NoZWNrYm94XCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuY2hlY2tib3gtbGFiZWwtaW5kZXRlcm1pbmF0ZV09XCJub2RlLmluZGV0ZXJtaW5hdGVcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy51eC1pbnB1dF9fY2hlY2tib3gtLXNlbGVjdGVkXT1cIm5vZGUuc2VsZWN0ZWQgJiYgIW5vZGUuaW5kZXRlcm1pbmF0ZVwiXG4gICAgICAgICAgICAgICAgW2lkXT1cIm5vZGVJZFwiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cIm5vZGUubGFiZWxcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJub2RlLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIm5vZGUuc2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiY2hlY2tJbnB1dExhYmVsKClcIlxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25DaGVja2JveENoYW5nZShub2RlLCAkZXZlbnQpXCIgLz5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInV4LXRyZWVfX25vZGUtY2hlY2tib3gtbGFiZWxcIiBbY2xhc3MuY2hlY2tib3gtbGFiZWwtaW5kZXRlcm1pbmF0ZV09XCJub2RlLmluZGV0ZXJtaW5hdGVcIiBbZm9yXT1cIm5vZGVJZFwiPiA8L2xhYmVsPlxuICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCJub2RlQ29udGVudFRlbXBsYXRlXCJcbiAgICAgICAgICAgIGNsYXNzPVwidXgtdHJlZV9fY3VzdG9tLWNvbnRlbnRcIlxuICAgICAgICAgICAgW2NsYXNzLnV4LXRyZWVfX3BhcmVudF09XCJoYXNOb2RlQ2hpbGRyZW4obm9kZSkgJiYgIWlzSGlkZVRvZ2dsZXNcIlxuICAgICAgICAgICAgW2NsYXNzLnV4LXRyZWVfX2xlYWZdPVwiIWhhc05vZGVDaGlsZHJlbihub2RlKSAmJiAhaXNIaWRlVG9nZ2xlc1wiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm5vZGVDb250ZW50VGVtcGxhdGVcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IG5vZGUgfVwiPiA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW5vZGVDb250ZW50VGVtcGxhdGVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJub2RlLnR5cGVMYWJlbCB8fCBub2RlLmljb25DbGFzc1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibm9kZS50eXBlTGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInV4LXRyZWVfX25vZGUtdHlwZSB1eC10cmVlX19ub2RlLXR5cGUtLXt7IG5vZGUudHlwZUNsYXNzIH19XCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnV4LXRyZWVfX25vZGUtdHlwZS1wYXJlbnRdPVwiaGFzTm9kZUNoaWxkcmVuKG5vZGUpICYmICFpc0hpZGVUb2dnbGVzICYmICFpc011bHRpc2VsZWN0XCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uTm9kZUNsaWNrKCRldmVudCwgbm9kZSlcIlxuICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJvbk5vZGVLZXlkb3duKCRldmVudCwgbm9kZSlcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgbm9kZS50eXBlTGFiZWwgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm5vZGUuaWNvbkNsYXNzXCIgY2xhc3M9XCJ1eC10cmVlX19ub2RlLWljb24gdXgtdHJlZV9fbm9kZS10eXBlLS17eyBub2RlLmljb25UeXBlQ2xhc3MgfX1cIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ7eyBub2RlLmljb25DbGFzcyB9fVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXgtdHJlZV9fbm9kZS1sYWJlbC13cmFwcGVkXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MudGV4dC1tdXRlZF09XCJub2RlLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy51eC10cmVlX19ub2RlLWxhYmVsLS1oaWdobGlnaHRlZF09XCJub2RlWydoaWdobGlnaHRlZCddXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbk5vZGVDbGljaygkZXZlbnQsIG5vZGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duKT1cIm9uTm9kZUtleWRvd24oJGV2ZW50LCBub2RlKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJhdXRvVHJhbnNsYXRlOyBlbHNlIG1hbnVhbFRyYW5zbGF0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgbm9kZS5sYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNtYW51YWxUcmFuc2xhdGlvbj57eyBub2RlLmxhYmVsIH19PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtjbGFzcy5ldWktdS10ZXh0LWxpbmstZXh0ZXJuYWxdPVwibm9kZSAmJiBub2RlLnVybEV4dGVybmFsXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiEobm9kZS50eXBlTGFiZWwgfHwgbm9kZS5pY29uQ2xhc3MpXCI+XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ1eC10cmVlX19ub2RlLWxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnV4LXRyZWVfX25vZGUtbGFiZWwtcGFyZW50XT1cImhhc05vZGVDaGlsZHJlbihub2RlKSAmJiAhaXNIaWRlVG9nZ2xlcyAmJiAhaXNNdWx0aXNlbGVjdFwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy51eC10cmVlX19ub2RlLWxhYmVsLS1oaWdobGlnaHRlZF09XCJub2RlWydoaWdobGlnaHRlZCddXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnRleHQtbXV0ZWRdPVwibm9kZS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbk5vZGVDbGljaygkZXZlbnQsIG5vZGUpXCJcbiAgICAgICAgICAgICAgICAgICAgKGtleWRvd24pPVwib25Ob2RlS2V5ZG93bigkZXZlbnQsIG5vZGUpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiYXV0b1RyYW5zbGF0ZTsgZWxzZSBtYW51YWxUcmFuc2xhdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgbm9kZS5sYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbWFudWFsVHJhbnNsYXRpb24+e3sgbm9kZS5sYWJlbCB9fTwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIFtjbGFzcy5ldWktdS10ZXh0LWxpbmstZXh0ZXJuYWxdPVwibm9kZSAmJiBub2RlLnVybEV4dGVybmFsXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibm9kZS5iYWRnZXNcIiBjbGFzcz1cImV1aS11LW1sLWF1dG9cIj5cbiAgICAgICAgICAgICAgICA8ZXVpLWNoaXBcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGJhZGdlIG9mIG5vZGUuYmFkZ2VzXCJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGVDbGFzcz1cInV4LXRyZWVfX25vZGUtYmFkZ2VcIlxuICAgICAgICAgICAgICAgICAgICBldWlTaXplU1xuICAgICAgICAgICAgICAgICAgICBldWlPdXRsaW5lXG4gICAgICAgICAgICAgICAgICAgIGV1aVZhcmlhbnQ9XCJ7eyBiYWRnZS50eXBlQ2xhc3MgfX1cIj5cbiAgICAgICAgICAgICAgICAgICAge3sgYmFkZ2UubGFiZWwgfX1cbiAgICAgICAgICAgICAgICA8L2V1aS1jaGlwPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJub2RlLm1ldGFkYXRhICYmIG5vZGUubWV0YWRhdGEudGl0bGUgJiYgbm9kZS5tZXRhZGF0YS50aXRsZS5sZW5ndGggPiAwXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInV4LXRyZWVfX25vZGUtbWV0YWNvbnRlbnQtdG9nZ2xlIHV4LXRyZWVfX25vZGUtY2xpY2thYmxlXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25NZXRhZGF0YU5vZGVUb2dnbGUoJGV2ZW50LCBub2RlKVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZXVpLWljb25cIiBbbmdDbGFzc109XCJub2RlLmV4cGFuZGVkID8gJ2V1aS1pY29uIGV1aS1pY29uLWFuZ2xlLWRvd24nIDogJ2V1aS1pY29uIGV1aS1pY29uLWFuZ2xlLXJpZ2h0J1wiPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5vZGUuZXhwYW5kZWRcIj5cbiAgICAgICAgPHVsICpuZ0lmPVwiaGFzTm9kZUNoaWxkcmVuKG5vZGUpXCIgY2xhc3M9XCJ1eC10cmVlX19ub2Rlc1wiPlxuICAgICAgICAgICAgPGV1aS11eC10cmVlLW5vZGVcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgc3ViTm9kZSBvZiBub2RlLmNoaWxkcmVuOyBsZXQgaXNGaXJzdCA9IGZpcnN0OyBsZXQgaXNMYXN0ID0gbGFzdDsgdHJhY2tCeTogdHJhY2tCeUZuXCJcbiAgICAgICAgICAgICAgICBbbm9kZV09XCJzdWJOb2RlXCJcbiAgICAgICAgICAgICAgICBbaXNNdWx0aXNlbGVjdF09XCJpc011bHRpc2VsZWN0XCJcbiAgICAgICAgICAgICAgICBbaXNSZWN1cnNpdmVTZWxlY3Rpb25dPVwiaXNSZWN1cnNpdmVTZWxlY3Rpb25cIlxuICAgICAgICAgICAgICAgIChub2RlQ2xpY2spPVwib25TdWJOb2RlQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKG5vZGVUb2dnbGUpPVwib25TdWJOb2RlVG9nZ2xlKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwib25TZWxlY3Rpb25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgW2lzRmlyc3RdPVwiaXNGaXJzdFwiXG4gICAgICAgICAgICAgICAgW2lzTGFzdF09XCJpc0xhc3RcIlxuICAgICAgICAgICAgICAgIFtpc0NsaWNrVG9nZ2xpbmdOb2RlXT1cImlzQ2xpY2tUb2dnbGluZ05vZGVcIlxuICAgICAgICAgICAgICAgIGV4cGFuZGVkSWNvbkNsYXNzPVwie3sgZXhwYW5kZWRJY29uQ2xhc3MgfX1cIlxuICAgICAgICAgICAgICAgIGNvbGxhcHNlZEljb25DbGFzcz1cInt7IGNvbGxhcHNlZEljb25DbGFzcyB9fVwiXG4gICAgICAgICAgICAgICAgW3RlbXBsYXRlVmFyaWFibGVdPVwidGVtcGxhdGVWYXJpYWJsZVwiXG4gICAgICAgICAgICAgICAgW25vZGVDb250ZW50VGVtcGxhdGVdPVwibm9kZUNvbnRlbnRUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgW2lzU2hvd0FjdGl2ZU5vZGVdPVwiaXNTaG93QWN0aXZlTm9kZVwiXG4gICAgICAgICAgICAgICAgW2lzSGlkZVRvZ2dsZXNdPVwiaXNIaWRlVG9nZ2xlc1wiXG4gICAgICAgICAgICAgICAgW2lzQ2xpY2tTZWxlY3RpbmdOb2RlXT1cImlzQ2xpY2tTZWxlY3RpbmdOb2RlXCJcbiAgICAgICAgICAgICAgICBbaGlnaGxpZ2h0UGF0aF09XCJoaWdobGlnaHRQYXRoXCJcbiAgICAgICAgICAgICAgICBbaXNSZWN1cnNpdmVQYXJlbnRTZWxlY3Rpb25dPVwiaXNSZWN1cnNpdmVQYXJlbnRTZWxlY3Rpb25cIlxuICAgICAgICAgICAgICAgIFthdXRvVHJhbnNsYXRlXT1cImF1dG9UcmFuc2xhdGVcIj5cbiAgICAgICAgICAgIDwvZXVpLXV4LXRyZWUtbm9kZT5cbiAgICAgICAgPC91bD5cbiAgICAgICAgPGRpdiAqbmdJZj1cIm5vZGUubWV0YWRhdGEgJiYgbm9kZS5tZXRhZGF0YS50aXRsZSAmJiBub2RlLm1ldGFkYXRhLnRpdGxlLmxlbmd0aCA+IDBcIiBjbGFzcz1cInV4LXRyZWVfX25vZGUtbWV0YWNvbnRlbnRcIj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJ0ZW1wbGF0ZVZhcmlhYmxlXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgbWV0YWRhdGE6IG5vZGUubWV0YWRhdGEgfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9saT5cbiJdfQ==
|