@energinet/watt 3.0.28 → 3.0.30
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/chip/watt-date-chip.component.d.ts +7 -24
- package/chip/watt-date-range-chip.component.d.ts +12 -12
- package/chip/watt-filter-chip.component.d.ts +7 -24
- package/dropdown/watt-dropdown.component.d.ts +25 -25
- package/esm2022/chip/watt-chip.directive.js +4 -4
- package/esm2022/chip/watt-date-chip.component.js +28 -42
- package/esm2022/chip/watt-date-range-chip.component.js +57 -86
- package/esm2022/chip/watt-filter-chip.component.js +23 -35
- package/esm2022/dropdown/watt-dropdown.component.js +59 -90
- package/esm2022/shell/shell.component.js +18 -34
- package/package.json +1 -1
- package/shell/shell.component.d.ts +4 -15
|
@@ -16,17 +16,17 @@
|
|
|
16
16
|
* limitations under the License.
|
|
17
17
|
*/
|
|
18
18
|
//#endregion
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
19
|
+
import { input, signal, effect, inject, Component, viewChild, DestroyRef, ViewEncapsulation, model, } from '@angular/core';
|
|
20
|
+
import { NgControl, FormControl, UntypedFormControl, ReactiveFormsModule, } from '@angular/forms';
|
|
21
21
|
import { NgClass } from '@angular/common';
|
|
22
22
|
import { RxPush } from '@rx-angular/template/push';
|
|
23
|
-
import { MatSelectModule, MatSelect } from '@angular/material/select';
|
|
24
|
-
import { NgxMatSelectSearchModule } from 'ngx-mat-select-search';
|
|
25
|
-
import { of, ReplaySubject, map, take, filter } from 'rxjs';
|
|
26
23
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
24
|
+
import { of, ReplaySubject, map, take, filter } from 'rxjs';
|
|
25
|
+
import { NgxMatSelectSearchModule } from 'ngx-mat-select-search';
|
|
26
|
+
import { MatSelectModule } from '@angular/material/select';
|
|
27
|
+
import { WattIconComponent } from '@energinet/watt/icon';
|
|
27
28
|
import { WattFieldComponent } from '@energinet/watt/field';
|
|
28
29
|
import { WattMenuChipComponent } from '@energinet/watt/chip';
|
|
29
|
-
import { WattIconComponent } from '@energinet/watt/icon';
|
|
30
30
|
import * as i0 from "@angular/core";
|
|
31
31
|
import * as i1 from "@angular/material/select";
|
|
32
32
|
import * as i2 from "@angular/forms";
|
|
@@ -36,7 +36,7 @@ export class WattDropdownComponent {
|
|
|
36
36
|
/**
|
|
37
37
|
* @ignore
|
|
38
38
|
*/
|
|
39
|
-
|
|
39
|
+
destroyRef = inject(DestroyRef);
|
|
40
40
|
/**
|
|
41
41
|
* @ignore
|
|
42
42
|
*/
|
|
@@ -49,11 +49,6 @@ export class WattDropdownComponent {
|
|
|
49
49
|
* @ignore
|
|
50
50
|
*/
|
|
51
51
|
validateParentAsync;
|
|
52
|
-
/**
|
|
53
|
-
* @ignore
|
|
54
|
-
*
|
|
55
|
-
*/
|
|
56
|
-
isDisabled = false;
|
|
57
52
|
/**
|
|
58
53
|
* @ignore
|
|
59
54
|
*/
|
|
@@ -82,15 +77,23 @@ export class WattDropdownComponent {
|
|
|
82
77
|
* @ignore
|
|
83
78
|
*/
|
|
84
79
|
isToggleAllIndeterminate = false;
|
|
80
|
+
/**
|
|
81
|
+
* @ignore
|
|
82
|
+
*/
|
|
85
83
|
_options = [];
|
|
84
|
+
/**
|
|
85
|
+
* @ignore
|
|
86
|
+
*/
|
|
87
|
+
isDisabled = signal(false, ...(ngDevMode ? [{ debugName: "isDisabled" }] : []));
|
|
86
88
|
/**
|
|
87
89
|
* @ignore
|
|
88
90
|
*/
|
|
89
91
|
get showTriggerValue() {
|
|
90
|
-
|
|
92
|
+
const multiple = this.multiple();
|
|
93
|
+
return (multiple &&
|
|
91
94
|
this.matSelectControl.value?.length === 1 &&
|
|
92
95
|
this.matSelectControl.value[0] !== '') ||
|
|
93
|
-
(!
|
|
96
|
+
(!multiple && this.matSelect()?.triggerValue)
|
|
94
97
|
? true
|
|
95
98
|
: false;
|
|
96
99
|
}
|
|
@@ -98,65 +101,61 @@ export class WattDropdownComponent {
|
|
|
98
101
|
* @ignore
|
|
99
102
|
*/
|
|
100
103
|
get showChipLabel() {
|
|
101
|
-
return this.multiple && this.matSelectControl.value && this.matSelectControl.value.length > 1
|
|
104
|
+
return this.multiple() && this.matSelectControl.value && this.matSelectControl.value.length > 1
|
|
102
105
|
? true
|
|
103
106
|
: false;
|
|
104
107
|
}
|
|
105
108
|
/**
|
|
106
109
|
* @ignore
|
|
107
110
|
*/
|
|
108
|
-
matSelect;
|
|
109
|
-
hideSearch = false;
|
|
110
|
-
panelWidth = null;
|
|
111
|
-
getCustomTrigger;
|
|
111
|
+
matSelect = viewChild('matSelect', ...(ngDevMode ? [{ debugName: "matSelect" }] : []));
|
|
112
|
+
hideSearch = input(false, ...(ngDevMode ? [{ debugName: "hideSearch" }] : []));
|
|
113
|
+
panelWidth = input(null, ...(ngDevMode ? [{ debugName: "panelWidth" }] : []));
|
|
114
|
+
getCustomTrigger = input(...(ngDevMode ? [undefined, { debugName: "getCustomTrigger" }] : []));
|
|
112
115
|
/**
|
|
113
116
|
* Set the mode of the dropdown.
|
|
114
117
|
*/
|
|
115
|
-
chipMode = false;
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
}
|
|
119
|
-
disableSelectedMode = false;
|
|
120
|
-
sortDirection = undefined;
|
|
118
|
+
chipMode = input(false, ...(ngDevMode ? [{ debugName: "chipMode" }] : []));
|
|
119
|
+
disableSelectedMode = input(false, ...(ngDevMode ? [{ debugName: "disableSelectedMode" }] : []));
|
|
120
|
+
sortDirection = input(...(ngDevMode ? [undefined, { debugName: "sortDirection" }] : []));
|
|
121
121
|
/**
|
|
122
122
|
* Sets the options for the dropdown.
|
|
123
123
|
*/
|
|
124
|
-
|
|
125
|
-
if (Array.isArray(options)) {
|
|
126
|
-
let optionsCopy = [...options];
|
|
127
|
-
if (this.sortDirection) {
|
|
128
|
-
optionsCopy = this.sortOptions(optionsCopy);
|
|
129
|
-
}
|
|
130
|
-
this._options = optionsCopy;
|
|
131
|
-
this.filteredOptions$.next(optionsCopy);
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
get options() {
|
|
135
|
-
return this._options;
|
|
136
|
-
}
|
|
124
|
+
options = model([], ...(ngDevMode ? [{ debugName: "options" }] : []));
|
|
137
125
|
/**
|
|
138
126
|
* Sets support for selecting multiple dropdown options.
|
|
139
127
|
*/
|
|
140
|
-
multiple = false;
|
|
128
|
+
multiple = input(false, ...(ngDevMode ? [{ debugName: "multiple" }] : []));
|
|
141
129
|
/**
|
|
142
130
|
* Sets support for hiding the reset option in "single" select mode.
|
|
143
131
|
*/
|
|
144
|
-
showResetOption = true;
|
|
132
|
+
showResetOption = input(true, ...(ngDevMode ? [{ debugName: "showResetOption" }] : []));
|
|
145
133
|
/**
|
|
146
134
|
* Sets the placeholder for the dropdown.
|
|
147
135
|
*/
|
|
148
|
-
placeholder = '';
|
|
136
|
+
placeholder = input('', ...(ngDevMode ? [{ debugName: "placeholder" }] : []));
|
|
149
137
|
/**
|
|
150
138
|
* Sets the label for the dropdown.
|
|
151
139
|
*/
|
|
152
|
-
label = '';
|
|
140
|
+
label = input('', ...(ngDevMode ? [{ debugName: "label" }] : []));
|
|
153
141
|
/**
|
|
154
142
|
* Label to be shown when no options are found after filtering.
|
|
155
143
|
*
|
|
156
144
|
* Note: The label is visible in "multiple" mode only.
|
|
157
145
|
*/
|
|
158
|
-
noOptionsFoundLabel = '';
|
|
146
|
+
noOptionsFoundLabel = input('', ...(ngDevMode ? [{ debugName: "noOptionsFoundLabel" }] : []));
|
|
159
147
|
constructor() {
|
|
148
|
+
effect(() => {
|
|
149
|
+
const options = this.options();
|
|
150
|
+
if (Array.isArray(options)) {
|
|
151
|
+
let optionsCopy = [...options];
|
|
152
|
+
if (this.sortDirection()) {
|
|
153
|
+
optionsCopy = this.sortOptions(optionsCopy);
|
|
154
|
+
}
|
|
155
|
+
this._options = optionsCopy;
|
|
156
|
+
this.filteredOptions$.next(optionsCopy);
|
|
157
|
+
}
|
|
158
|
+
});
|
|
160
159
|
this.parentControlDirective.valueAccessor = this;
|
|
161
160
|
}
|
|
162
161
|
/**
|
|
@@ -190,7 +189,7 @@ export class WattDropdownComponent {
|
|
|
190
189
|
* @ignore
|
|
191
190
|
*/
|
|
192
191
|
setDisabledState(shouldDisable) {
|
|
193
|
-
this.isDisabled
|
|
192
|
+
this.isDisabled.set(shouldDisable);
|
|
194
193
|
if (shouldDisable) {
|
|
195
194
|
this.matSelectControl.disable();
|
|
196
195
|
}
|
|
@@ -211,7 +210,7 @@ export class WattDropdownComponent {
|
|
|
211
210
|
}
|
|
212
211
|
sortOptions(options) {
|
|
213
212
|
return [...options].sort((a, b) => {
|
|
214
|
-
return this.sortDirection === 'asc'
|
|
213
|
+
return this.sortDirection() === 'asc'
|
|
215
214
|
? a.displayValue.localeCompare(b.displayValue)
|
|
216
215
|
: b.displayValue.localeCompare(a.displayValue);
|
|
217
216
|
});
|
|
@@ -220,9 +219,9 @@ export class WattDropdownComponent {
|
|
|
220
219
|
* @ignore
|
|
221
220
|
*/
|
|
222
221
|
listenForFilterFieldValueChanges() {
|
|
223
|
-
this.filterControl.valueChanges.pipe(takeUntilDestroyed(this.
|
|
222
|
+
this.filterControl.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {
|
|
224
223
|
this.filterOptions();
|
|
225
|
-
if (this.multiple) {
|
|
224
|
+
if (this.multiple()) {
|
|
226
225
|
this.determineToggleAllCheckboxState();
|
|
227
226
|
}
|
|
228
227
|
});
|
|
@@ -291,9 +290,9 @@ export class WattDropdownComponent {
|
|
|
291
290
|
return null;
|
|
292
291
|
}
|
|
293
292
|
return value;
|
|
294
|
-
}), takeUntilDestroyed(this.
|
|
293
|
+
}), takeUntilDestroyed(this.destroyRef))
|
|
295
294
|
.subscribe((value) => {
|
|
296
|
-
if (this.multiple) {
|
|
295
|
+
if (this.multiple()) {
|
|
297
296
|
this.determineToggleAllCheckboxState();
|
|
298
297
|
}
|
|
299
298
|
this.markParentControlAsTouched();
|
|
@@ -302,7 +301,7 @@ export class WattDropdownComponent {
|
|
|
302
301
|
this.parentControl?.statusChanges
|
|
303
302
|
.pipe(map(() => ({
|
|
304
303
|
...this.parentControl?.errors,
|
|
305
|
-
})), map((errors) => (Object.keys(errors).length > 0 ? errors : null)), takeUntilDestroyed(this.
|
|
304
|
+
})), map((errors) => (Object.keys(errors).length > 0 ? errors : null)), takeUntilDestroyed(this.destroyRef))
|
|
306
305
|
.subscribe((errors) => {
|
|
307
306
|
this.matSelectControl.setErrors(errors);
|
|
308
307
|
});
|
|
@@ -345,52 +344,22 @@ export class WattDropdownComponent {
|
|
|
345
344
|
});
|
|
346
345
|
}
|
|
347
346
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: WattDropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
348
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.3", type: WattDropdownComponent, isStandalone: true, selector: "watt-dropdown", inputs: { hideSearch: "hideSearch", panelWidth: "panelWidth", getCustomTrigger: "getCustomTrigger", chipMode: "chipMode", disableSelectedMode: "disableSelectedMode", sortDirection: "sortDirection", options: "options", multiple: "multiple", showResetOption: "showResetOption", placeholder: "placeholder", label: "label", noOptionsFoundLabel: "noOptionsFoundLabel" }, host: { properties: { "attr.watt-field-disabled": "this.isDisabled", "class.watt-chip-mode": "this.chipModeClass" } }, viewQueries: [{ propertyName: "matSelect", first: true, predicate: ["matSelect"], descendants: true, static: true }], ngImport: i0, template: "<!--\n@license\nCopyright 2020 Energinet DataHub A/S\n\nLicensed under the Apache License, Version 2.0 (the \"License2\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n<watt-field\n [control]=\"parentControl\"\n [chipMode]=\"chipMode\"\n [label]=\"label\"\n (click)=\"matSelect.open()\"\n>\n @if (chipMode) {\n <watt-menu-chip\n [opened]=\"matSelect.panelOpen\"\n (toggle)=\"matSelect.open()\"\n [selected]=\"!!matSelect?.triggerValue && !disableSelectedMode\"\n [disabled]=\"matSelectControl.disabled\"\n >\n {{ placeholder }}\n @if (showTriggerValue) {\n <span>\n @if (placeholder) {\n :\n }\n {{ getCustomTrigger?.(matSelect.value) ?? matSelect?.triggerValue }}\n </span>\n }\n @if (showChipLabel) {\n <span class=\"watt-chip-label\">{{ matSelectControl.value?.length }}</span>\n }\n </watt-menu-chip>\n }\n\n <mat-select\n [attr.aria-label]=\"label\"\n [formControl]=\"matSelectControl\"\n [placeholder]=\"placeholder\"\n #matSelect\n [panelWidth]=\"panelWidth\"\n [multiple]=\"multiple\"\n [ngClass]=\"{ chip: chipMode }\"\n [panelClass]=\"{\n 'watt-dropdown-panel': true,\n 'watt-dropdown-panel-chip-mode': chipMode,\n }\"\n >\n <!-- We use this instead of ngIf, since it will trigger a NG0100: ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. -->\n <mat-option [style.display]=\"!hideSearch ? 'block' : 'none'\">\n <ngx-mat-select-search\n [formControl]=\"filterControl\"\n [placeholderLabel]=\"placeholder\"\n closeIcon=\"close\"\n [showToggleAllCheckbox]=\"multiple\"\n (toggleAll)=\"onToggleAll($event)\"\n [toggleAllCheckboxChecked]=\"isToggleAllChecked\"\n [toggleAllCheckboxIndeterminate]=\"isToggleAllIndeterminate\"\n [noEntriesFoundLabel]=\"noOptionsFoundLabel\"\n >\n <watt-icon ngxMatSelectSearchClear name=\"close\" size=\"s\" />\n </ngx-mat-select-search>\n </mat-option>\n\n @if (!multiple && showResetOption) {\n <mat-option>{{ emDash }}</mat-option>\n }\n\n @for (option of filteredOptions$ | push; track option) {\n <mat-option [value]=\"option.value\" [disabled]=\"option.disabled\">\n {{ option.displayValue }}\n </mat-option>\n }\n </mat-select>\n <ng-content />\n <ng-content ngProjectAs=\"watt-field-hint\" select=\"watt-field-hint\" />\n <ng-content ngProjectAs=\"watt-field-error\" select=\"watt-field-error\" />\n</watt-field>\n", styles: ["watt-dropdown:not(.watt-chip-mode){width:100%}watt-dropdown{--watt-input-color: var(--watt-typography-text-color);--watt-input-placeholder-color: var(--watt-on-light-high-emphasis);display:block;width:auto}watt-dropdown watt-field label .watt-field-wrapper{padding:0;position:relative}watt-dropdown.watt-chip-mode.ng-dirty.ng-invalid .watt-field-wrapper watt-chip label{border:1px solid var(--watt-color-state-danger)}watt-dropdown.watt-chip-mode[disabled=true] watt-field label .watt-field-wrapper{background-color:transparent}watt-dropdown .mat-input-element{font-size:.875rem;line-height:1.25rem;font-weight:400;text-transform:none;letter-spacing:0;color:var(--watt-input-color);caret-color:var(--watt-color-neutral-grey-900)!important;padding:0 12px}watt-dropdown .mat-mdc-select-arrow{color:var(--watt-dropdown-arrow-color, rgba(0, 0, 0, .54));border:none;width:auto;height:auto}watt-dropdown .mat-mdc-select-arrow:before{width:.6em;height:.6em;bottom:.2em;position:relative;display:inline-block;border-style:solid;border-width:0 0 .15em .15em;transform:rotate(315deg);border-color:var(--watt-color-primary);content:\"\"}watt-dropdown .mat-mdc-select-arrow svg{display:none}watt-dropdown .mat-mdc-select-trigger{font-size:.875rem;line-height:1.25rem;font-weight:400;text-transform:none;letter-spacing:0;padding:0 var(--watt-space-m)}watt-dropdown .mat-mdc-select-value{color:var(--watt-color-neutral-black);padding-right:var(--watt-space-m)}watt-dropdown .mat-mdc-select.mat-mdc-select-invalid.ng-pristine .mat-mdc-select-arrow{color:currentColor}watt-dropdown .watt-chip-label{float:right;margin-left:var(--watt-space-s);background:var(--watt-color-neutral-white)}watt-dropdown .watt-field--chip .mat-mdc-select{visibility:hidden;position:absolute;width:100%}watt-dropdown .mat-mdc-select-placeholder{color:var(--watt-input-placeholder-color)}watt-dropdown watt-field label .watt-field-wrapper{background-color:transparent}.watt-dropdown-panel{--watt-input-color: var(--watt-typography-text-color);padding:0}.watt-dropdown-panel mat-option:nth-of-type(2){border-top:1px solid var(--watt-color-neutral-grey-300)}.watt-dropdown-panel .mat-select-search-inner-row .mat-select-search-input,.watt-dropdown-panel mat-option.contains-mat-select-search{height:48px}.watt-dropdown-panel:not(.watt-dropdown-panel-chip-mode){min-width:calc(100% + 2px)!important;margin-top:-36px;margin-left:-1px;min-height:48px}.watt-dropdown-panel .mat-mdc-checkbox.mat-select-search-toggle-all-checkbox{padding:0;margin:0 var(--watt-space-m)}.watt-dropdown-panel .mat-datepicker-content .mat-mdc-icon-button{--mat-mdc-button-persistent-ripple-color: transparent;--mat-mdc-button-ripple-color: transparent}.watt-dropdown-panel.watt-dropdown-panel-chip-mode{margin-top:4px}.watt-dropdown-panel.mat-mdc-select-search-panel{transform:scaleY(1)!important}.watt-dropdown-panel .mat-mdc-option.mdc-list-item.contains-mat-select-search.mat-mdc-option-multiple{background-color:transparent}.watt-dropdown-panel ngx-mat-select-search .mat-select-search-inner-multiple .mat-select-search-inner-row{margin-left:5px}.watt-dropdown-panel ngx-mat-select-search .mat-mdc-checkbox.mat-select-search-toggle-all-checkbox{margin:0}.watt-dropdown-panel .mdc-list-item .mat-select-search-input,.watt-dropdown-panel .mat-mdc-option.mdc-list-item,.watt-dropdown-panel .mat-select-search-no-entries-found{font-size:.875rem;line-height:1.25rem;font-weight:400;text-transform:none;letter-spacing:0;color:var(--watt-input-color)}.watt-dropdown-panel .mat-mdc-option.mdc-list-item .mat-select-search-no-entries-found{padding:var(--watt-space-s)}.watt-dropdown-panel .mat-checkbox-frame,.watt-dropdown-panel .mat-mdc-checkbox{border-color:var(--watt-color-primary)}.watt-dropdown-panel :not(.mat-mdc-option-multiple) .mat-pseudo-checkbox{display:none}.watt-dropdown-panel .mat-pseudo-checkbox,.watt-dropdown-panel .mat-mdc-checkbox{color:var(--watt-color-primary)}.watt-dropdown-panel .mat-mdc-option{color:var(--watt-color-neutral-black);min-height:42px}.watt-dropdown-panel .mat-mdc-option[aria-disabled=true].contains-mat-select-search{margin-top:0;top:auto}.watt-dropdown-panel .mat-mdc-option.mdc-list-item.mat-mdc-option-active,.watt-dropdown-panel .mat-mdc-option.mdc-list-item.mdc-list-item--selected.mat-mdc-option-active:not(.mat-mdc-option-multiple),.watt-dropdown-panel .mat-mdc-option:hover:not(.mat-mdc-option-disabled,.contains-mat-select-search),.watt-dropdown-panel .mat-mdc-option:focus:not(.mat-mdc-option-disabled){background-color:var(--watt-color-primary-light)}.watt-dropdown-panel .mat-mdc-option .mat-mdc-select-search-no-entries-found{text-align:center;padding:0}.watt-dropdown-panel .mat-mdc-option.mat-mdc-option-disabled{color:var(--watt-color-neutral-grey-400);cursor:not-allowed}.watt-dropdown-panel .mat-mdc-select-search-input:not(.mat-mdc-select-search-hidden){color:var(--watt-color-neutral-black)}.watt-dropdown-panel .mat-mdc-select-search-clear{background-color:var(--watt-color-neutral-white);color:var(--watt-color-neutral-grey-400)}.watt-dropdown-panel .mat-mdc-select-search-clear mat-icon{line-height:20px!important}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i1.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i1.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: NgxMatSelectSearchModule }, { kind: "component", type: i3.MatSelectSearchComponent, selector: "ngx-mat-select-search", inputs: ["placeholderLabel", "type", "closeIcon", "closeSvgIcon", "noEntriesFoundLabel", "clearSearchInput", "searching", "disableInitialFocus", "enableClearOnEscapePressed", "preventHomeEndKeyPropagation", "disableScrollToActiveOnOptionsChanged", "ariaLabel", "showToggleAllCheckbox", "toggleAllCheckboxChecked", "toggleAllCheckboxIndeterminate", "toggleAllCheckboxTooltipMessage", "toggleAllCheckboxTooltipPosition", "hideClearSearchButton", "alwaysRestoreSelectedOptionsMulti", "recreateValuesArray"], outputs: ["toggleAll"] }, { kind: "directive", type: i3.MatSelectSearchClearDirective, selector: "[ngxMatSelectSearchClear]" }, { kind: "component", type: WattMenuChipComponent, selector: "watt-menu-chip", inputs: ["opened", "disabled", "name", "value", "selected", "hasPopup"], outputs: ["toggle"] }, { kind: "component", type: WattFieldComponent, selector: "watt-field", inputs: ["control", "label", "id", "chipMode", "tooltip", "placeholder", "anchorName"] }, { kind: "component", type: WattIconComponent, selector: "watt-icon", inputs: ["name", "label", "size", "state"] }, { kind: "pipe", type: RxPush, name: "push" }], encapsulation: i0.ViewEncapsulation.None });
|
|
347
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.3", type: WattDropdownComponent, isStandalone: true, selector: "watt-dropdown", inputs: { hideSearch: { classPropertyName: "hideSearch", publicName: "hideSearch", isSignal: true, isRequired: false, transformFunction: null }, panelWidth: { classPropertyName: "panelWidth", publicName: "panelWidth", isSignal: true, isRequired: false, transformFunction: null }, getCustomTrigger: { classPropertyName: "getCustomTrigger", publicName: "getCustomTrigger", isSignal: true, isRequired: false, transformFunction: null }, chipMode: { classPropertyName: "chipMode", publicName: "chipMode", isSignal: true, isRequired: false, transformFunction: null }, disableSelectedMode: { classPropertyName: "disableSelectedMode", publicName: "disableSelectedMode", isSignal: true, isRequired: false, transformFunction: null }, sortDirection: { classPropertyName: "sortDirection", publicName: "sortDirection", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, showResetOption: { classPropertyName: "showResetOption", publicName: "showResetOption", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, noOptionsFoundLabel: { classPropertyName: "noOptionsFoundLabel", publicName: "noOptionsFoundLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { options: "optionsChange" }, host: { properties: { "attr.watt-field-disabled": "isDisabled()", "class.watt-chip-mode": "chipMode()" } }, viewQueries: [{ propertyName: "matSelect", first: true, predicate: ["matSelect"], descendants: true, isSignal: true }], ngImport: i0, template: "<!--\n@license\nCopyright 2020 Energinet DataHub A/S\n\nLicensed under the Apache License, Version 2.0 (the \"License2\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n<watt-field\n [control]=\"parentControl\"\n [chipMode]=\"chipMode()\"\n [label]=\"label()\"\n (click)=\"matSelect.open()\"\n>\n @if (chipMode()) {\n <watt-menu-chip\n [opened]=\"matSelect.panelOpen\"\n (toggle)=\"matSelect.open()\"\n [selected]=\"!!matSelect?.triggerValue && !disableSelectedMode()\"\n [disabled]=\"matSelectControl.disabled\"\n >\n {{ placeholder() }}\n @if (showTriggerValue) {\n <span>\n @if (placeholder()) {\n :\n }\n {{ getCustomTrigger()?.(matSelect.value) ?? matSelect?.triggerValue }}\n </span>\n }\n @if (showChipLabel) {\n <span class=\"watt-chip-label\">{{ matSelectControl.value?.length }}</span>\n }\n </watt-menu-chip>\n }\n\n <mat-select\n [attr.aria-label]=\"label()\"\n [formControl]=\"matSelectControl\"\n [placeholder]=\"placeholder()\"\n #matSelect\n [panelWidth]=\"panelWidth()\"\n [multiple]=\"multiple()\"\n [ngClass]=\"{ chip: chipMode() }\"\n [panelClass]=\"{\n 'watt-dropdown-panel': true,\n 'watt-dropdown-panel-chip-mode': chipMode(),\n }\"\n >\n <!-- We use this instead of ngIf, since it will trigger a NG0100: ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. -->\n <mat-option [style.display]=\"!hideSearch() ? 'block' : 'none'\">\n <ngx-mat-select-search\n [formControl]=\"filterControl\"\n [placeholderLabel]=\"placeholder()\"\n closeIcon=\"close\"\n [showToggleAllCheckbox]=\"multiple()\"\n (toggleAll)=\"onToggleAll($event)\"\n [toggleAllCheckboxChecked]=\"isToggleAllChecked\"\n [toggleAllCheckboxIndeterminate]=\"isToggleAllIndeterminate\"\n [noEntriesFoundLabel]=\"noOptionsFoundLabel()\"\n >\n <watt-icon ngxMatSelectSearchClear name=\"close\" size=\"s\" />\n </ngx-mat-select-search>\n </mat-option>\n\n @if (!multiple() && showResetOption()) {\n <mat-option>{{ emDash }}</mat-option>\n }\n\n @for (option of filteredOptions$ | push; track option) {\n <mat-option [value]=\"option.value\" [disabled]=\"option.disabled\">\n {{ option.displayValue }}\n </mat-option>\n }\n </mat-select>\n <ng-content />\n <ng-content ngProjectAs=\"watt-field-hint\" select=\"watt-field-hint\" />\n <ng-content ngProjectAs=\"watt-field-error\" select=\"watt-field-error\" />\n</watt-field>\n", styles: ["watt-dropdown:not(.watt-chip-mode){width:100%}watt-dropdown{--watt-input-color: var(--watt-typography-text-color);--watt-input-placeholder-color: var(--watt-on-light-high-emphasis);display:block;width:auto}watt-dropdown watt-field label .watt-field-wrapper{padding:0;position:relative}watt-dropdown.watt-chip-mode.ng-dirty.ng-invalid .watt-field-wrapper watt-chip label{border:1px solid var(--watt-color-state-danger)}watt-dropdown.watt-chip-mode[disabled=true] watt-field label .watt-field-wrapper{background-color:transparent}watt-dropdown .mat-input-element{font-size:.875rem;line-height:1.25rem;font-weight:400;text-transform:none;letter-spacing:0;color:var(--watt-input-color);caret-color:var(--watt-color-neutral-grey-900)!important;padding:0 12px}watt-dropdown .mat-mdc-select-arrow{color:var(--watt-dropdown-arrow-color, rgba(0, 0, 0, .54));border:none;width:auto;height:auto}watt-dropdown .mat-mdc-select-arrow:before{width:.6em;height:.6em;bottom:.2em;position:relative;display:inline-block;border-style:solid;border-width:0 0 .15em .15em;transform:rotate(315deg);border-color:var(--watt-color-primary);content:\"\"}watt-dropdown .mat-mdc-select-arrow svg{display:none}watt-dropdown .mat-mdc-select-trigger{font-size:.875rem;line-height:1.25rem;font-weight:400;text-transform:none;letter-spacing:0;padding:0 var(--watt-space-m)}watt-dropdown .mat-mdc-select-value{color:var(--watt-color-neutral-black);padding-right:var(--watt-space-m)}watt-dropdown .mat-mdc-select.mat-mdc-select-invalid.ng-pristine .mat-mdc-select-arrow{color:currentColor}watt-dropdown .watt-chip-label{float:right;margin-left:var(--watt-space-s);background:var(--watt-color-neutral-white)}watt-dropdown .watt-field--chip .mat-mdc-select{visibility:hidden;position:absolute;width:100%}watt-dropdown .mat-mdc-select-placeholder{color:var(--watt-input-placeholder-color)}watt-dropdown watt-field label .watt-field-wrapper{background-color:transparent}.watt-dropdown-panel{--watt-input-color: var(--watt-typography-text-color);padding:0}.watt-dropdown-panel mat-option:nth-of-type(2){border-top:1px solid var(--watt-color-neutral-grey-300)}.watt-dropdown-panel .mat-select-search-inner-row .mat-select-search-input,.watt-dropdown-panel mat-option.contains-mat-select-search{height:48px}.watt-dropdown-panel:not(.watt-dropdown-panel-chip-mode){min-width:calc(100% + 2px)!important;margin-top:-36px;margin-left:-1px;min-height:48px}.watt-dropdown-panel .mat-mdc-checkbox.mat-select-search-toggle-all-checkbox{padding:0;margin:0 var(--watt-space-m)}.watt-dropdown-panel .mat-datepicker-content .mat-mdc-icon-button{--mat-mdc-button-persistent-ripple-color: transparent;--mat-mdc-button-ripple-color: transparent}.watt-dropdown-panel.watt-dropdown-panel-chip-mode{margin-top:4px}.watt-dropdown-panel.mat-mdc-select-search-panel{transform:scaleY(1)!important}.watt-dropdown-panel .mat-mdc-option.mdc-list-item.contains-mat-select-search.mat-mdc-option-multiple{background-color:transparent}.watt-dropdown-panel ngx-mat-select-search .mat-select-search-inner-multiple .mat-select-search-inner-row{margin-left:5px}.watt-dropdown-panel ngx-mat-select-search .mat-mdc-checkbox.mat-select-search-toggle-all-checkbox{margin:0}.watt-dropdown-panel .mdc-list-item .mat-select-search-input,.watt-dropdown-panel .mat-mdc-option.mdc-list-item,.watt-dropdown-panel .mat-select-search-no-entries-found{font-size:.875rem;line-height:1.25rem;font-weight:400;text-transform:none;letter-spacing:0;color:var(--watt-input-color)}.watt-dropdown-panel .mat-mdc-option.mdc-list-item .mat-select-search-no-entries-found{padding:var(--watt-space-s)}.watt-dropdown-panel .mat-checkbox-frame,.watt-dropdown-panel .mat-mdc-checkbox{border-color:var(--watt-color-primary)}.watt-dropdown-panel :not(.mat-mdc-option-multiple) .mat-pseudo-checkbox{display:none}.watt-dropdown-panel .mat-pseudo-checkbox,.watt-dropdown-panel .mat-mdc-checkbox{color:var(--watt-color-primary)}.watt-dropdown-panel .mat-mdc-option{color:var(--watt-color-neutral-black);min-height:42px}.watt-dropdown-panel .mat-mdc-option[aria-disabled=true].contains-mat-select-search{margin-top:0;top:auto}.watt-dropdown-panel .mat-mdc-option.mdc-list-item.mat-mdc-option-active,.watt-dropdown-panel .mat-mdc-option.mdc-list-item.mdc-list-item--selected.mat-mdc-option-active:not(.mat-mdc-option-multiple),.watt-dropdown-panel .mat-mdc-option:hover:not(.mat-mdc-option-disabled,.contains-mat-select-search),.watt-dropdown-panel .mat-mdc-option:focus:not(.mat-mdc-option-disabled){background-color:var(--watt-color-primary-light)}.watt-dropdown-panel .mat-mdc-option .mat-mdc-select-search-no-entries-found{text-align:center;padding:0}.watt-dropdown-panel .mat-mdc-option.mat-mdc-option-disabled{color:var(--watt-color-neutral-grey-400);cursor:not-allowed}.watt-dropdown-panel .mat-mdc-select-search-input:not(.mat-mdc-select-search-hidden){color:var(--watt-color-neutral-black)}.watt-dropdown-panel .mat-mdc-select-search-clear{background-color:var(--watt-color-neutral-white);color:var(--watt-color-neutral-grey-400)}.watt-dropdown-panel .mat-mdc-select-search-clear mat-icon{line-height:20px!important}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i1.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i1.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: NgxMatSelectSearchModule }, { kind: "component", type: i3.MatSelectSearchComponent, selector: "ngx-mat-select-search", inputs: ["placeholderLabel", "type", "closeIcon", "closeSvgIcon", "noEntriesFoundLabel", "clearSearchInput", "searching", "disableInitialFocus", "enableClearOnEscapePressed", "preventHomeEndKeyPropagation", "disableScrollToActiveOnOptionsChanged", "ariaLabel", "showToggleAllCheckbox", "toggleAllCheckboxChecked", "toggleAllCheckboxIndeterminate", "toggleAllCheckboxTooltipMessage", "toggleAllCheckboxTooltipPosition", "hideClearSearchButton", "alwaysRestoreSelectedOptionsMulti", "recreateValuesArray"], outputs: ["toggleAll"] }, { kind: "directive", type: i3.MatSelectSearchClearDirective, selector: "[ngxMatSelectSearchClear]" }, { kind: "component", type: WattIconComponent, selector: "watt-icon", inputs: ["name", "label", "size", "state"] }, { kind: "component", type: WattFieldComponent, selector: "watt-field", inputs: ["control", "label", "id", "chipMode", "tooltip", "placeholder", "anchorName"] }, { kind: "component", type: WattMenuChipComponent, selector: "watt-menu-chip", inputs: ["opened", "disabled", "name", "value", "selected", "hasPopup"], outputs: ["toggle"] }, { kind: "pipe", type: RxPush, name: "push" }], encapsulation: i0.ViewEncapsulation.None });
|
|
349
348
|
}
|
|
350
349
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: WattDropdownComponent, decorators: [{
|
|
351
350
|
type: Component,
|
|
352
351
|
args: [{ selector: 'watt-dropdown', encapsulation: ViewEncapsulation.None, imports: [
|
|
352
|
+
RxPush,
|
|
353
353
|
NgClass,
|
|
354
354
|
MatSelectModule,
|
|
355
|
-
RxPush,
|
|
356
355
|
ReactiveFormsModule,
|
|
357
356
|
NgxMatSelectSearchModule,
|
|
358
|
-
WattMenuChipComponent,
|
|
359
|
-
WattFieldComponent,
|
|
360
357
|
WattIconComponent,
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
}], hideSearch: [{
|
|
369
|
-
type: Input
|
|
370
|
-
}], panelWidth: [{
|
|
371
|
-
type: Input
|
|
372
|
-
}], getCustomTrigger: [{
|
|
373
|
-
type: Input
|
|
374
|
-
}], chipMode: [{
|
|
375
|
-
type: Input
|
|
376
|
-
}], chipModeClass: [{
|
|
377
|
-
type: HostBinding,
|
|
378
|
-
args: ['class.watt-chip-mode']
|
|
379
|
-
}], disableSelectedMode: [{
|
|
380
|
-
type: Input
|
|
381
|
-
}], sortDirection: [{
|
|
382
|
-
type: Input
|
|
383
|
-
}], options: [{
|
|
384
|
-
type: Input
|
|
385
|
-
}], multiple: [{
|
|
386
|
-
type: Input
|
|
387
|
-
}], showResetOption: [{
|
|
388
|
-
type: Input
|
|
389
|
-
}], placeholder: [{
|
|
390
|
-
type: Input
|
|
391
|
-
}], label: [{
|
|
392
|
-
type: Input
|
|
393
|
-
}], noOptionsFoundLabel: [{
|
|
394
|
-
type: Input
|
|
395
|
-
}] } });
|
|
396
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0dC1kcm9wZG93bi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL3dhdHQvcGFja2FnZS9kcm9wZG93bi93YXR0LWRyb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2xpYnMvd2F0dC9wYWNrYWdlL2Ryb3Bkb3duL3dhdHQtZHJvcGRvd24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCO0FBQ2pCOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILFlBQVk7QUFDWixPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixXQUFXLEVBQ1gsS0FBSyxFQUVMLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFHTCxXQUFXLEVBQ1gsU0FBUyxFQUNULGtCQUFrQixFQUdsQixtQkFBbUIsR0FDcEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDakUsT0FBTyxFQUFFLEVBQUUsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFaEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHM0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0s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QkFBaEIsS0FBSztnQkFLRyxlQUFlO3NCQUF2QixLQUFLO2dCQUtHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBS0csS0FBSztzQkFBYixLQUFLO2dCQU9HLG1CQUFtQjtzQkFBM0IsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8vI3JlZ2lvbiBMaWNlbnNlXG4vKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgMjAyMCBFbmVyZ2luZXQgRGF0YUh1YiBBL1NcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlMlwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vLyNlbmRyZWdpb25cbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRGVzdHJveVJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBc3luY1ZhbGlkYXRvckZuLFxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgRm9ybUNvbnRyb2wsXG4gIE5nQ29udHJvbCxcbiAgVW50eXBlZEZvcm1Db250cm9sLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3JGbixcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBSeFB1c2ggfSBmcm9tICdAcngtYW5ndWxhci90ZW1wbGF0ZS9wdXNoJztcbmltcG9ydCB7IE1hdFNlbGVjdE1vZHVsZSwgTWF0U2VsZWN0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcbmltcG9ydCB7IE5neE1hdFNlbGVjdFNlYXJjaE1vZHVsZSB9IGZyb20gJ25neC1tYXQtc2VsZWN0LXNlYXJjaCc7XG5pbXBvcnQgeyBvZiwgUmVwbGF5U3ViamVjdCwgbWFwLCB0YWtlLCBmaWx0ZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuaW1wb3J0IHsgV2F0dEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnQGVuZXJnaW5ldC93YXR0L2ZpZWxkJztcbmltcG9ydCB0eXBlIHsgV2F0dERyb3Bkb3duT3B0aW9ucyB9IGZyb20gJy4vd2F0dC1kcm9wZG93bi1vcHRpb24nO1xuaW1wb3J0IHR5cGUgeyBXYXR0RHJvcGRvd25WYWx1ZSB9IGZyb20gJy4vd2F0dC1kcm9wZG93bi12YWx1ZSc7XG5pbXBvcnQgeyBXYXR0TWVudUNoaXBDb21wb25lbnQgfSBmcm9tICdAZW5lcmdpbmV0L3dhdHQvY2hpcCc7XG5pbXBvcnQgeyBXYXR0SWNvbkNvbXBvbmVudCB9IGZyb20gJ0BlbmVyZ2luZXQvd2F0dC9pY29uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnd2F0dC1kcm9wZG93bicsXG4gIHRlbXBsYXRlVXJsOiAnLi93YXR0LWRyb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vd2F0dC1kcm9wZG93bi5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBpbXBvcnRzOiBbXG4gICAgTmdDbGFzcyxcbiAgICBNYXRTZWxlY3RNb2R1bGUsXG4gICAgUnhQdXNoLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgTmd4TWF0U2VsZWN0U2VhcmNoTW9kdWxlLFxuICAgIFdhdHRNZW51Q2hpcENvbXBvbmVudCxcbiAgICBXYXR0RmllbGRDb21wb25lbnQsXG4gICAgV2F0dEljb25Db21wb25lbnQsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFdhdHREcm9wZG93bkNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQge1xuICBwcml2YXRlIHBhcmVudENvbnRyb2xEaXJlY3RpdmUgPSBpbmplY3QoTmdDb250cm9sLCB7IGhvc3Q6IHRydWUgfSk7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIF9kZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcGFyZW50Q29udHJvbDogRm9ybUNvbnRyb2wgfCBudWxsID0gbnVsbDtcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVQYXJlbnQ/OiBWYWxpZGF0b3JGbjtcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVQYXJlbnRBc3luYz86IEFzeW5jVmFsaWRhdG9yRm47XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICpcbiAgICovXG4gIEBIb3N0QmluZGluZygnYXR0ci53YXR0LWZpZWxkLWRpc2FibGVkJykgaXNEaXNhYmxlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBtYXRTZWxlY3RDb250cm9sID0gbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IHN0cmluZ1tdIHwgdW5kZWZpbmVkIHwgbnVsbD4obnVsbCk7XG5cbiAgLyoqXG4gICAqIENvbnRyb2wgZm9yIHRoZSBNYXRTZWxlY3QgZmlsdGVyIGtleXdvcmRcbiAgICpcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgZmlsdGVyQ29udHJvbCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKTtcblxuICAvKipcbiAgICogTGlzdCBvZiBvcHRpb25zIGZpbHRlcmVkIGJ5IHNlYXJjaCBrZXl3b3JkXG4gICAqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGZpbHRlcmVkT3B0aW9ucyQgPSBuZXcgUmVwbGF5U3ViamVjdDxXYXR0RHJvcGRvd25PcHRpb25zPigxKTtcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgZW1EYXNoID0gJ+KAlCc7XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGlzVG9nZ2xlQWxsQ2hlY2tlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBpc1RvZ2dsZUFsbEluZGV0ZXJtaW5hdGUgPSBmYWxzZTtcblxuICBfb3B0aW9uczogV2F0dERyb3Bkb3duT3B0aW9ucyA9IFtdO1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBnZXQgc2hvd1RyaWdnZXJWYWx1ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHRoaXMubXVsdGlwbGUgJiZcbiAgICAgIHRoaXMubWF0U2VsZWN0Q29udHJvbC52YWx1ZT8ubGVuZ3RoID09PSAxICYmXG4gICAgICB0aGlzLm1hdFNlbGVjdENvbnRyb2wudmFsdWVbMF0gIT09ICcnKSB8fFxuICAgICAgKCF0aGlzLm11bHRpcGxlICYmIHRoaXMubWF0U2VsZWN0Py50cmlnZ2VyVmFsdWUpXG4gICAgICA/IHRydWVcbiAgICAgIDogZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgZ2V0IHNob3dDaGlwTGFiZWwoKSB7XG4gICAgcmV0dXJuIHRoaXMubXVsdGlwbGUgJiYgdGhpcy5tYXRTZWxlY3RDb250cm9sLnZhbHVlICYmIHRoaXMubWF0U2VsZWN0Q29udHJvbC52YWx1ZS5sZW5ndGggPiAxXG4gICAgICA/IHRydWVcbiAgICAgIDogZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgQFZpZXdDaGlsZCgnbWF0U2VsZWN0JywgeyBzdGF0aWM6IHRydWUgfSkgbWF0U2VsZWN0PzogTWF0U2VsZWN0O1xuXG4gIEBJbnB1dCgpIGhpZGVTZWFyY2ggPSBmYWxzZTtcbiAgQElucHV0KCkgcGFuZWxXaWR0aDogbnVsbCB8ICdhdXRvJyA9IG51bGw7XG4gIEBJbnB1dCgpIGdldEN1c3RvbVRyaWdnZXI/OiAodmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdKSA9PiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgbW9kZSBvZiB0aGUgZHJvcGRvd24uXG4gICAqL1xuICBASW5wdXQoKSBjaGlwTW9kZSA9IGZhbHNlO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLndhdHQtY2hpcC1tb2RlJylcbiAgZ2V0IGNoaXBNb2RlQ2xhc3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2hpcE1vZGU7XG4gIH1cblxuICBASW5wdXQoKSBkaXNhYmxlU2VsZWN0ZWRNb2RlID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgc29ydERpcmVjdGlvbjogJ2FzYycgfCAnZGVzYycgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIG9wdGlvbnMgZm9yIHRoZSBkcm9wZG93bi5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBvcHRpb25zKG9wdGlvbnM6IFdhdHREcm9wZG93bk9wdGlvbnMpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgbGV0IG9wdGlvbnNDb3B5ID0gWy4uLm9wdGlvbnNdO1xuXG4gICAgICBpZiAodGhpcy5zb3J0RGlyZWN0aW9uKSB7XG4gICAgICAgIG9wdGlvbnNDb3B5ID0gdGhpcy5zb3J0T3B0aW9ucyhvcHRpb25zQ29weSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX29wdGlvbnMgPSBvcHRpb25zQ29weTtcbiAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zJC5uZXh0KG9wdGlvbnNDb3B5KTtcbiAgICB9XG4gIH1cbiAgZ2V0IG9wdGlvbnMoKTogV2F0dERyb3Bkb3duT3B0aW9ucyB7XG4gICAgcmV0dXJuIHRoaXMuX29wdGlvbnM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyBzdXBwb3J0IGZvciBzZWxlY3RpbmcgbXVsdGlwbGUgZHJvcGRvd24gb3B0aW9ucy5cbiAgICovXG4gIEBJbnB1dCgpIG11bHRpcGxlID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFNldHMgc3VwcG9ydCBmb3IgaGlkaW5nIHRoZSByZXNldCBvcHRpb24gaW4gXCJzaW5nbGVcIiBzZWxlY3QgbW9kZS5cbiAgICovXG4gIEBJbnB1dCgpIHNob3dSZXNldE9wdGlvbiA9IHRydWU7XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHBsYWNlaG9sZGVyIGZvciB0aGUgZHJvcGRvd24uXG4gICAqL1xuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICcnO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBsYWJlbCBmb3IgdGhlIGRyb3Bkb3duLlxuICAgKi9cbiAgQElucHV0KCkgbGFiZWwgPSAnJztcblxuICAvKipcbiAgICogTGFiZWwgdG8gYmUgc2hvd24gd2hlbiBubyBvcHRpb25zIGFyZSBmb3VuZCBhZnRlciBmaWx0ZXJpbmcuXG4gICAqXG4gICAqIE5vdGU6IFRoZSBsYWJlbCBpcyB2aXNpYmxlIGluIFwibXVsdGlwbGVcIiBtb2RlIG9ubHkuXG4gICAqL1xuICBASW5wdXQoKSBub09wdGlvbnNGb3VuZExhYmVsID0gJyc7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5wYXJlbnRDb250cm9sRGlyZWN0aXZlLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubGlzdGVuRm9yRmlsdGVyRmllbGRWYWx1ZUNoYW5nZXMoKTtcbiAgICB0aGlzLmluaXRpYWxpemVQcm9wZXJ0aWVzRnJvbVBhcmVudCgpO1xuICAgIHRoaXMuYmluZFBhcmVudFZhbGlkYXRvcnNUb0NvbnRyb2woKTtcbiAgICB0aGlzLmJpbmRDb250cm9sVG9QYXJlbnQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICB3cml0ZVZhbHVlKHZhbHVlOiBXYXR0RHJvcGRvd25WYWx1ZSk6IHZvaWQge1xuICAgIHRoaXMubWF0U2VsZWN0Q29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcmVnaXN0ZXJPbkNoYW5nZShvbkNoYW5nZUZuOiAodmFsdWU6IFdhdHREcm9wZG93blZhbHVlKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5jaGFuZ2VQYXJlbnRWYWx1ZSA9IG9uQ2hhbmdlRm47XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcmVnaXN0ZXJPblRvdWNoZWQob25Ub3VjaEZuOiAoKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5tYXJrUGFyZW50Q29udHJvbEFzVG91Y2hlZCA9IG9uVG91Y2hGbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBzZXREaXNhYmxlZFN0YXRlKHNob3VsZERpc2FibGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmlzRGlzYWJsZWQgPSBzaG91bGREaXNhYmxlO1xuICAgIGlmIChzaG91bGREaXNhYmxlKSB7XG4gICAgICB0aGlzLm1hdFNlbGVjdENvbnRyb2wuZGlzYWJsZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1hdFNlbGVjdENvbnRyb2wuZW5hYmxlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG9uVG9nZ2xlQWxsKHRvZ2dsZUFsbFN0YXRlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgbWFwKChvcHRpb25zKSA9PiBvcHRpb25zLm1hcCgob3B0aW9uKSA9PiBvcHRpb24udmFsdWUpKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoZmlsdGVyZWRPcHRpb25zOiBzdHJpbmdbXSkgPT4ge1xuICAgICAgICBjb25zdCBvcHRpb25zVG9TZWxlY3QgPSB0b2dnbGVBbGxTdGF0ZSA/IGZpbHRlcmVkT3B0aW9ucyA6IFtdO1xuICAgICAgICB0aGlzLm1hdFNlbGVjdENvbnRyb2wucGF0Y2hWYWx1ZShvcHRpb25zVG9TZWxlY3QpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc29ydE9wdGlvbnMob3B0aW9uczogV2F0dERyb3Bkb3duT3B0aW9ucyk6IFdhdHREcm9wZG93bk9wdGlvbnMge1xuICAgIHJldHVybiBbLi4ub3B0aW9uc10uc29ydCgoYSwgYikgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuc29ydERpcmVjdGlvbiA9PT0gJ2FzYydcbiAgICAgICAgPyBhLmRpc3BsYXlWYWx1ZS5sb2NhbGVDb21wYXJlKGIuZGlzcGxheVZhbHVlKVxuICAgICAgICA6IGIuZGlzcGxheVZhbHVlLmxvY2FsZUNvbXBhcmUoYS5kaXNwbGF5VmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgbGlzdGVuRm9yRmlsdGVyRmllbGRWYWx1ZUNoYW5nZXMoKSB7XG4gICAgdGhpcy5maWx0ZXJDb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuZmlsdGVyT3B0aW9ucygpO1xuXG4gICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICB0aGlzLmRldGVybWluZVRvZ2dsZUFsbENoZWNrYm94U3RhdGUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIHByaXZhdGUgY2hhbmdlUGFyZW50VmFsdWUgPSAodmFsdWU6IFdhdHREcm9wZG93blZhbHVlKTogdm9pZCA9PiB7XG4gICAgLy8gSW50ZW50aW9uYWxseSBsZWZ0IGVtcHR5XG4gIH07XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgbWFya1BhcmVudENvbnRyb2xBc1RvdWNoZWQgPSAoKTogdm9pZCA9PiB7XG4gICAgLy8gSW50ZW50aW9uYWxseSBsZWZ0IGVtcHR5XG4gIH07XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICpcbiAgICogU3RvcmUgdGhlIHBhcmVudCBjb250cm9sLCBpdHMgdmFsaWRhdG9ycyBhbmQgYXN5bmMgdmFsaWRhdG9ycyBpbiBwcm9wZXJ0aWVzXG4gICAqIG9mIHRoaXMgY29tcG9uZW50LlxuICAgKi9cbiAgcHJpdmF0ZSBpbml0aWFsaXplUHJvcGVydGllc0Zyb21QYXJlbnQoKTogdm9pZCB7XG4gICAgdGhpcy5wYXJlbnRDb250cm9sID0gdGhpcy5wYXJlbnRDb250cm9sRGlyZWN0aXZlLmNvbnRyb2wgYXMgVW50eXBlZEZvcm1Db250cm9sO1xuXG4gICAgdGhpcy52YWxpZGF0ZVBhcmVudCA9XG4gICAgICAodGhpcy5wYXJlbnRDb250cm9sLnZhbGlkYXRvciAmJiB0aGlzLnBhcmVudENvbnRyb2wudmFsaWRhdG9yLmJpbmQodGhpcy5wYXJlbnRDb250cm9sKSkgfHxcbiAgICAgICgoKSA9PiBudWxsKTtcblxuICAgIHRoaXMudmFsaWRhdGVQYXJlbnRBc3luYyA9XG4gICAgICAodGhpcy5wYXJlbnRDb250cm9sLmFzeW5jVmFsaWRhdG9yICYmXG4gICAgICAgIHRoaXMucGFyZW50Q29udHJvbC5hc3luY1ZhbGlkYXRvci5iaW5kKHRoaXMucGFyZW50Q29udHJvbCkpIHx8XG4gICAgICAoKCkgPT4gb2YobnVsbCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICpcbiAgICogSW5oZXJpdCB2YWxpZGF0b3JzIGZyb20gcGFyZW50IGZvcm0gY29udHJvbC5cbiAgICovXG4gIHByaXZhdGUgYmluZFBhcmVudFZhbGlkYXRvcnNUb0NvbnRyb2woKTogdm9pZCB7XG4gICAgY29uc3QgdmFsaWRhdG9ycyA9ICF0aGlzLm1hdFNlbGVjdENvbnRyb2wudmFsaWRhdG9yXG4gICAgICA/IFt0aGlzLnZhbGlkYXRlUGFyZW50XVxuICAgICAgOiBBcnJheS5pc0FycmF5KHRoaXMubWF0U2VsZWN0Q29udHJvbC52YWxpZGF0b3IpXG4gICAgICAgID8gWy4uLnRoaXMubWF0U2VsZWN0Q29udHJvbC52YWxpZGF0b3IsIHRoaXMudmFsaWRhdGVQYXJlbnRdXG4gICAgICAgIDogW3RoaXMubWF0U2VsZWN0Q29udHJvbC52YWxpZGF0b3IsIHRoaXMudmFsaWRhdGVQYXJlbnRdO1xuICAgIHRoaXMubWF0U2VsZWN0Q29udHJvbC5zZXRWYWxpZGF0b3JzKHZhbGlkYXRvcnMpO1xuXG4gICAgY29uc3QgYXN5bmNWYWxpZGF0b3JzID0gIXRoaXMubWF0U2VsZWN0Q29udHJvbC5hc3luY1ZhbGlkYXRvclxuICAgICAgPyBbdGhpcy52YWxpZGF0ZVBhcmVudEFzeW5jXVxuICAgICAgOiBBcnJheS5pc0FycmF5KHRoaXMubWF0U2VsZWN0Q29udHJvbC5hc3luY1ZhbGlkYXRvcilcbiAgICAgICAgPyBbLi4udGhpcy5tYXRTZWxlY3RDb250cm9sLmFzeW5jVmFsaWRhdG9yLCB0aGlzLnZhbGlkYXRlUGFyZW50QXN5bmNdXG4gICAgICAgIDogW3RoaXMubWF0U2VsZWN0Q29udHJvbC5hc3luY1ZhbGlkYXRvciwgdGhpcy52YWxpZGF0ZVBhcmVudEFzeW5jXTtcbiAgICB0aGlzLm1hdFNlbGVjdENvbnRyb2wuc2V0QXN5bmNWYWxpZGF0b3JzKGFzeW5jVmFsaWRhdG9ycyk7XG5cbiAgICB0aGlzLm1hdFNlbGVjdENvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICpcbiAgICogRW1pdCB2YWx1ZXMgdG8gdGhlIHBhcmVudCBmb3JtIGNvbnRyb2wgd2hlbiBvdXIgZm9ybSBjb250cm9sJ3MgdmFsdWVcbiAgICogY2hhbmdlcy5cbiAgICpcbiAgICogUmVmbGVjdCBwYXJlbnQgdmFsaWRhdGlvbiBlcnJvcnMgaW4gb3VyIGZvcm0gY29udHJvbC5cbiAgICovXG4gIHByaXZhdGUgYmluZENvbnRyb2xUb1BhcmVudCgpOiB2b2lkIHtcbiAgICB0aGlzLm1hdFNlbGVjdENvbnRyb2wudmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKCh2YWx1ZSkgPT4gKHZhbHVlID09PSB1bmRlZmluZWQgPyBudWxsIDogdmFsdWUpKSxcbiAgICAgICAgbWFwKCh2YWx1ZTogV2F0dERyb3Bkb3duVmFsdWUpID0+IHtcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZilcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlOiBXYXR0RHJvcGRvd25WYWx1ZSkgPT4ge1xuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgIHRoaXMuZGV0ZXJtaW5lVG9nZ2xlQWxsQ2hlY2tib3hTdGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5tYXJrUGFyZW50Q29udHJvbEFzVG91Y2hlZCgpO1xuICAgICAgICB0aGlzLmNoYW5nZVBhcmVudFZhbHVlKHZhbHVlKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5wYXJlbnRDb250cm9sPy5zdGF0dXNDaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKFxuICAgICAgICAgICgpID0+XG4gICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAuLi50aGlzLnBhcmVudENvbnRyb2w/LmVycm9ycyxcbiAgICAgICAgICAgIH0pIGFzIFZhbGlkYXRpb25FcnJvcnNcbiAgICAgICAgKSxcbiAgICAgICAgbWFwKChlcnJvcnMpID0+IChPYmplY3Qua2V5cyhlcnJvcnMpLmxlbmd0aCA+IDAgPyBlcnJvcnMgOiBudWxsKSksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoZXJyb3JzKSA9PiB7XG4gICAgICAgIHRoaXMubWF0U2VsZWN0Q29udHJvbC5zZXRFcnJvcnMoZXJyb3JzKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgZmlsdGVyT3B0aW9ucygpIHtcbiAgICBpZiAoIXRoaXMuX29wdGlvbnMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBnZXQgdGhlIHNlYXJjaCBrZXl3b3JkXG4gICAgbGV0IHNlYXJjaCA9ICh0aGlzLmZpbHRlckNvbnRyb2wudmFsdWUgYXMgc3RyaW5nKS50cmltKCk7XG5cbiAgICBpZiAoc2VhcmNoKSB7XG4gICAgICBzZWFyY2ggPSBzZWFyY2gudG9Mb3dlckNhc2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyZWRPcHRpb25zJC5uZXh0KHRoaXMuX29wdGlvbnMuc2xpY2UoKSk7XG4gICAgfVxuXG4gICAgLy8gZmlsdGVyIHRoZSBvcHRpb25zXG4gICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMkLm5leHQoXG4gICAgICB0aGlzLl9vcHRpb25zLmZpbHRlcigob3B0aW9uKSA9PiBvcHRpb24uZGlzcGxheVZhbHVlLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihzZWFyY2gpID4gLTEpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIGRldGVybWluZVRvZ2dsZUFsbENoZWNrYm94U3RhdGUoKTogdm9pZCB7XG4gICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgZmlsdGVyKChvcHRpb25zKSA9PiBvcHRpb25zICE9IG51bGwgJiYgb3B0aW9ucyAhPT0gdW5kZWZpbmVkKSxcbiAgICAgICAgbWFwKChvcHRpb25zKSA9PiBvcHRpb25zLm1hcCgob3B0aW9uKSA9PiBvcHRpb24udmFsdWUpKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoZmlsdGVyZWRPcHRpb25zOiBzdHJpbmdbXSkgPT4ge1xuICAgICAgICBjb25zdCBzZWxlY3RlZE9wdGlvbnMgPSB0aGlzLm1hdFNlbGVjdENvbnRyb2wudmFsdWU7XG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoc2VsZWN0ZWRPcHRpb25zKSkge1xuICAgICAgICAgIGNvbnN0IHNlbGVjdGVkRmlsdGVyZWRPcHRpb25zID0gZmlsdGVyZWRPcHRpb25zLmZpbHRlcigob3B0aW9uKSA9PlxuICAgICAgICAgICAgc2VsZWN0ZWRPcHRpb25zLmluY2x1ZGVzKG9wdGlvbilcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgdGhpcy5pc1RvZ2dsZUFsbEluZGV0ZXJtaW5hdGUgPVxuICAgICAgICAgICAgc2VsZWN0ZWRGaWx0ZXJlZE9wdGlvbnMubGVuZ3RoID4gMCAmJlxuICAgICAgICAgICAgc2VsZWN0ZWRGaWx0ZXJlZE9wdGlvbnMubGVuZ3RoIDwgZmlsdGVyZWRPcHRpb25zLmxlbmd0aDtcblxuICAgICAgICAgIHRoaXMuaXNUb2dnbGVBbGxDaGVja2VkID1cbiAgICAgICAgICAgIHNlbGVjdGVkRmlsdGVyZWRPcHRpb25zLmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICAgIHNlbGVjdGVkRmlsdGVyZWRPcHRpb25zLmxlbmd0aCA9PT0gZmlsdGVyZWRPcHRpb25zLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cbn1cbiIsIjwhLS1cbkBsaWNlbnNlXG5Db3B5cmlnaHQgMjAyMCBFbmVyZ2luZXQgRGF0YUh1YiBBL1NcblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZTJcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuLS0+XG48d2F0dC1maWVsZFxuICBbY29udHJvbF09XCJwYXJlbnRDb250cm9sXCJcbiAgW2NoaXBNb2RlXT1cImNoaXBNb2RlXCJcbiAgW2xhYmVsXT1cImxhYmVsXCJcbiAgKGNsaWNrKT1cIm1hdFNlbGVjdC5vcGVuKClcIlxuPlxuICBAaWYgKGNoaXBNb2RlKSB7XG4gICAgPHdhdHQtbWVudS1jaGlwXG4gICAgICBbb3BlbmVkXT1cIm1hdFNlbGVjdC5wYW5lbE9wZW5cIlxuICAgICAgKHRvZ2dsZSk9XCJtYXRTZWxlY3Qub3BlbigpXCJcbiAgICAgIFtzZWxlY3RlZF09XCIhIW1hdFNlbGVjdD8udHJpZ2dlclZhbHVlICYmICFkaXNhYmxlU2VsZWN0ZWRNb2RlXCJcbiAgICAgIFtkaXNhYmxlZF09XCJtYXRTZWxlY3RDb250cm9sLmRpc2FibGVkXCJcbiAgICA+XG4gICAgICB7eyBwbGFjZWhvbGRlciB9fVxuICAgICAgQGlmIChzaG93VHJpZ2dlclZhbHVlKSB7XG4gICAgICAgIDxzcGFuPlxuICAgICAgICAgIEBpZiAocGxhY2Vob2xkZXIpIHtcbiAgICAgICAgICAgIDpcbiAgICAgICAgICB9XG4gICAgICAgICAge3sgZ2V0Q3VzdG9tVHJpZ2dlcj8uKG1hdFNlbGVjdC52YWx1ZSkgPz8gbWF0U2VsZWN0Py50cmlnZ2VyVmFsdWUgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgfVxuICAgICAgQGlmIChzaG93Q2hpcExhYmVsKSB7XG4gICAgICAgIDxzcGFuIGNsYXNzPVwid2F0dC1jaGlwLWxhYmVsXCI+e3sgbWF0U2VsZWN0Q29udHJvbC52YWx1ZT8ubGVuZ3RoIH19PC9zcGFuPlxuICAgICAgfVxuICAgIDwvd2F0dC1tZW51LWNoaXA+XG4gIH1cblxuICA8bWF0LXNlbGVjdFxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibGFiZWxcIlxuICAgIFtmb3JtQ29udHJvbF09XCJtYXRTZWxlY3RDb250cm9sXCJcbiAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICNtYXRTZWxlY3RcbiAgICBbcGFuZWxXaWR0aF09XCJwYW5lbFdpZHRoXCJcbiAgICBbbXVsdGlwbGVdPVwibXVsdGlwbGVcIlxuICAgIFtuZ0NsYXNzXT1cInsgY2hpcDogY2hpcE1vZGUgfVwiXG4gICAgW3BhbmVsQ2xhc3NdPVwie1xuICAgICAgJ3dhdHQtZHJvcGRvd24tcGFuZWwnOiB0cnVlLFxuICAgICAgJ3dhdHQtZHJvcGRvd24tcGFuZWwtY2hpcC1tb2RlJzogY2hpcE1vZGUsXG4gICAgfVwiXG4gID5cbiAgICA8IS0tIFdlIHVzZSB0aGlzIGluc3RlYWQgb2YgbmdJZiwgc2luY2UgaXQgd2lsbCB0cmlnZ2VyIGEgTkcwMTAwOiBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yOiBFeHByZXNzaW9uIGhhcyBjaGFuZ2VkIGFmdGVyIGl0IHdhcyBjaGVja2VkLiAtLT5cbiAgICA8bWF0LW9wdGlvbiBbc3R5bGUuZGlzcGxheV09XCIhaGlkZVNlYXJjaCA/ICdibG9jaycgOiAnbm9uZSdcIj5cbiAgICAgIDxuZ3gtbWF0LXNlbGVjdC1zZWFyY2hcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cImZpbHRlckNvbnRyb2xcIlxuICAgICAgICBbcGxhY2Vob2xkZXJMYWJlbF09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgIGNsb3NlSWNvbj1cImNsb3NlXCJcbiAgICAgICAgW3Nob3dUb2dnbGVBbGxDaGVja2JveF09XCJtdWx0aXBsZVwiXG4gICAgICAgICh0b2dnbGVBbGwpPVwib25Ub2dnbGVBbGwoJGV2ZW50KVwiXG4gICAgICAgIFt0b2dnbGVBbGxDaGVja2JveENoZWNrZWRdPVwiaXNUb2dnbGVBbGxDaGVja2VkXCJcbiAgICAgICAgW3RvZ2dsZUFsbENoZWNrYm94SW5kZXRlcm1pbmF0ZV09XCJpc1RvZ2dsZUFsbEluZGV0ZXJtaW5hdGVcIlxuICAgICAgICBbbm9FbnRyaWVzRm91bmRMYWJlbF09XCJub09wdGlvbnNGb3VuZExhYmVsXCJcbiAgICAgID5cbiAgICAgICAgPHdhdHQtaWNvbiBuZ3hNYXRTZWxlY3RTZWFyY2hDbGVhciBuYW1lPVwiY2xvc2VcIiBzaXplPVwic1wiIC8+XG4gICAgICA8L25neC1tYXQtc2VsZWN0LXNlYXJjaD5cbiAgICA8L21hdC1vcHRpb24+XG5cbiAgICBAaWYgKCFtdWx0aXBsZSAmJiBzaG93UmVzZXRPcHRpb24pIHtcbiAgICAgIDxtYXQtb3B0aW9uPnt7IGVtRGFzaCB9fTwvbWF0LW9wdGlvbj5cbiAgICB9XG5cbiAgICBAZm9yIChvcHRpb24gb2YgZmlsdGVyZWRPcHRpb25zJCB8IHB1c2g7IHRyYWNrIG9wdGlvbikge1xuICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIm9wdGlvbi52YWx1ZVwiIFtkaXNhYmxlZF09XCJvcHRpb24uZGlzYWJsZWRcIj5cbiAgICAgICAge3sgb3B0aW9uLmRpc3BsYXlWYWx1ZSB9fVxuICAgICAgPC9tYXQtb3B0aW9uPlxuICAgIH1cbiAgPC9tYXQtc2VsZWN0PlxuICA8bmctY29udGVudCAvPlxuICA8bmctY29udGVudCBuZ1Byb2plY3RBcz1cIndhdHQtZmllbGQtaGludFwiIHNlbGVjdD1cIndhdHQtZmllbGQtaGludFwiIC8+XG4gIDxuZy1jb250ZW50IG5nUHJvamVjdEFzPVwid2F0dC1maWVsZC1lcnJvclwiIHNlbGVjdD1cIndhdHQtZmllbGQtZXJyb3JcIiAvPlxuPC93YXR0LWZpZWxkPlxuIl19
|
|
358
|
+
WattFieldComponent,
|
|
359
|
+
WattMenuChipComponent,
|
|
360
|
+
], host: {
|
|
361
|
+
'[attr.watt-field-disabled]': 'isDisabled()',
|
|
362
|
+
'[class.watt-chip-mode]': 'chipMode()',
|
|
363
|
+
}, template: "<!--\n@license\nCopyright 2020 Energinet DataHub A/S\n\nLicensed under the Apache License, Version 2.0 (the \"License2\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n<watt-field\n [control]=\"parentControl\"\n [chipMode]=\"chipMode()\"\n [label]=\"label()\"\n (click)=\"matSelect.open()\"\n>\n @if (chipMode()) {\n <watt-menu-chip\n [opened]=\"matSelect.panelOpen\"\n (toggle)=\"matSelect.open()\"\n [selected]=\"!!matSelect?.triggerValue && !disableSelectedMode()\"\n [disabled]=\"matSelectControl.disabled\"\n >\n {{ placeholder() }}\n @if (showTriggerValue) {\n <span>\n @if (placeholder()) {\n :\n }\n {{ getCustomTrigger()?.(matSelect.value) ?? matSelect?.triggerValue }}\n </span>\n }\n @if (showChipLabel) {\n <span class=\"watt-chip-label\">{{ matSelectControl.value?.length }}</span>\n }\n </watt-menu-chip>\n }\n\n <mat-select\n [attr.aria-label]=\"label()\"\n [formControl]=\"matSelectControl\"\n [placeholder]=\"placeholder()\"\n #matSelect\n [panelWidth]=\"panelWidth()\"\n [multiple]=\"multiple()\"\n [ngClass]=\"{ chip: chipMode() }\"\n [panelClass]=\"{\n 'watt-dropdown-panel': true,\n 'watt-dropdown-panel-chip-mode': chipMode(),\n }\"\n >\n <!-- We use this instead of ngIf, since it will trigger a NG0100: ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. -->\n <mat-option [style.display]=\"!hideSearch() ? 'block' : 'none'\">\n <ngx-mat-select-search\n [formControl]=\"filterControl\"\n [placeholderLabel]=\"placeholder()\"\n closeIcon=\"close\"\n [showToggleAllCheckbox]=\"multiple()\"\n (toggleAll)=\"onToggleAll($event)\"\n [toggleAllCheckboxChecked]=\"isToggleAllChecked\"\n [toggleAllCheckboxIndeterminate]=\"isToggleAllIndeterminate\"\n [noEntriesFoundLabel]=\"noOptionsFoundLabel()\"\n >\n <watt-icon ngxMatSelectSearchClear name=\"close\" size=\"s\" />\n </ngx-mat-select-search>\n </mat-option>\n\n @if (!multiple() && showResetOption()) {\n <mat-option>{{ emDash }}</mat-option>\n }\n\n @for (option of filteredOptions$ | push; track option) {\n <mat-option [value]=\"option.value\" [disabled]=\"option.disabled\">\n {{ option.displayValue }}\n </mat-option>\n }\n </mat-select>\n <ng-content />\n <ng-content ngProjectAs=\"watt-field-hint\" select=\"watt-field-hint\" />\n <ng-content ngProjectAs=\"watt-field-error\" select=\"watt-field-error\" />\n</watt-field>\n", styles: ["watt-dropdown:not(.watt-chip-mode){width:100%}watt-dropdown{--watt-input-color: var(--watt-typography-text-color);--watt-input-placeholder-color: var(--watt-on-light-high-emphasis);display:block;width:auto}watt-dropdown watt-field label .watt-field-wrapper{padding:0;position:relative}watt-dropdown.watt-chip-mode.ng-dirty.ng-invalid .watt-field-wrapper watt-chip label{border:1px solid var(--watt-color-state-danger)}watt-dropdown.watt-chip-mode[disabled=true] watt-field label .watt-field-wrapper{background-color:transparent}watt-dropdown .mat-input-element{font-size:.875rem;line-height:1.25rem;font-weight:400;text-transform:none;letter-spacing:0;color:var(--watt-input-color);caret-color:var(--watt-color-neutral-grey-900)!important;padding:0 12px}watt-dropdown .mat-mdc-select-arrow{color:var(--watt-dropdown-arrow-color, rgba(0, 0, 0, .54));border:none;width:auto;height:auto}watt-dropdown .mat-mdc-select-arrow:before{width:.6em;height:.6em;bottom:.2em;position:relative;display:inline-block;border-style:solid;border-width:0 0 .15em .15em;transform:rotate(315deg);border-color:var(--watt-color-primary);content:\"\"}watt-dropdown .mat-mdc-select-arrow svg{display:none}watt-dropdown .mat-mdc-select-trigger{font-size:.875rem;line-height:1.25rem;font-weight:400;text-transform:none;letter-spacing:0;padding:0 var(--watt-space-m)}watt-dropdown .mat-mdc-select-value{color:var(--watt-color-neutral-black);padding-right:var(--watt-space-m)}watt-dropdown .mat-mdc-select.mat-mdc-select-invalid.ng-pristine .mat-mdc-select-arrow{color:currentColor}watt-dropdown .watt-chip-label{float:right;margin-left:var(--watt-space-s);background:var(--watt-color-neutral-white)}watt-dropdown .watt-field--chip .mat-mdc-select{visibility:hidden;position:absolute;width:100%}watt-dropdown .mat-mdc-select-placeholder{color:var(--watt-input-placeholder-color)}watt-dropdown watt-field label .watt-field-wrapper{background-color:transparent}.watt-dropdown-panel{--watt-input-color: var(--watt-typography-text-color);padding:0}.watt-dropdown-panel mat-option:nth-of-type(2){border-top:1px solid var(--watt-color-neutral-grey-300)}.watt-dropdown-panel .mat-select-search-inner-row .mat-select-search-input,.watt-dropdown-panel mat-option.contains-mat-select-search{height:48px}.watt-dropdown-panel:not(.watt-dropdown-panel-chip-mode){min-width:calc(100% + 2px)!important;margin-top:-36px;margin-left:-1px;min-height:48px}.watt-dropdown-panel .mat-mdc-checkbox.mat-select-search-toggle-all-checkbox{padding:0;margin:0 var(--watt-space-m)}.watt-dropdown-panel .mat-datepicker-content .mat-mdc-icon-button{--mat-mdc-button-persistent-ripple-color: transparent;--mat-mdc-button-ripple-color: transparent}.watt-dropdown-panel.watt-dropdown-panel-chip-mode{margin-top:4px}.watt-dropdown-panel.mat-mdc-select-search-panel{transform:scaleY(1)!important}.watt-dropdown-panel .mat-mdc-option.mdc-list-item.contains-mat-select-search.mat-mdc-option-multiple{background-color:transparent}.watt-dropdown-panel ngx-mat-select-search .mat-select-search-inner-multiple .mat-select-search-inner-row{margin-left:5px}.watt-dropdown-panel ngx-mat-select-search .mat-mdc-checkbox.mat-select-search-toggle-all-checkbox{margin:0}.watt-dropdown-panel .mdc-list-item .mat-select-search-input,.watt-dropdown-panel .mat-mdc-option.mdc-list-item,.watt-dropdown-panel .mat-select-search-no-entries-found{font-size:.875rem;line-height:1.25rem;font-weight:400;text-transform:none;letter-spacing:0;color:var(--watt-input-color)}.watt-dropdown-panel .mat-mdc-option.mdc-list-item .mat-select-search-no-entries-found{padding:var(--watt-space-s)}.watt-dropdown-panel .mat-checkbox-frame,.watt-dropdown-panel .mat-mdc-checkbox{border-color:var(--watt-color-primary)}.watt-dropdown-panel :not(.mat-mdc-option-multiple) .mat-pseudo-checkbox{display:none}.watt-dropdown-panel .mat-pseudo-checkbox,.watt-dropdown-panel .mat-mdc-checkbox{color:var(--watt-color-primary)}.watt-dropdown-panel .mat-mdc-option{color:var(--watt-color-neutral-black);min-height:42px}.watt-dropdown-panel .mat-mdc-option[aria-disabled=true].contains-mat-select-search{margin-top:0;top:auto}.watt-dropdown-panel .mat-mdc-option.mdc-list-item.mat-mdc-option-active,.watt-dropdown-panel .mat-mdc-option.mdc-list-item.mdc-list-item--selected.mat-mdc-option-active:not(.mat-mdc-option-multiple),.watt-dropdown-panel .mat-mdc-option:hover:not(.mat-mdc-option-disabled,.contains-mat-select-search),.watt-dropdown-panel .mat-mdc-option:focus:not(.mat-mdc-option-disabled){background-color:var(--watt-color-primary-light)}.watt-dropdown-panel .mat-mdc-option .mat-mdc-select-search-no-entries-found{text-align:center;padding:0}.watt-dropdown-panel .mat-mdc-option.mat-mdc-option-disabled{color:var(--watt-color-neutral-grey-400);cursor:not-allowed}.watt-dropdown-panel .mat-mdc-select-search-input:not(.mat-mdc-select-search-hidden){color:var(--watt-color-neutral-black)}.watt-dropdown-panel .mat-mdc-select-search-clear{background-color:var(--watt-color-neutral-white);color:var(--watt-color-neutral-grey-400)}.watt-dropdown-panel .mat-mdc-select-search-clear mat-icon{line-height:20px!important}\n"] }]
|
|
364
|
+
}], ctorParameters: () => [] });
|
|
365
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0dC1kcm9wZG93bi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL3dhdHQvcGFja2FnZS9kcm9wZG93bi93YXR0LWRyb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2xpYnMvd2F0dC9wYWNrYWdlL2Ryb3Bkb3duL3dhdHQtZHJvcGRvd24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCO0FBQ2pCOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILFlBQVk7QUFDWixPQUFPLEVBQ0wsS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBRU4sTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBQ1QsVUFBVSxFQUNWLGlCQUFpQixFQUNqQixLQUFLLEdBQ04sTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUNMLFNBQVMsRUFFVCxXQUFXLEVBR1gsa0JBQWtCLEVBQ2xCLG1CQUFtQixHQUVwQixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUxQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFaEUsT0FBTyxFQUFFLEVBQUUsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDakUsT0FBTyxFQUFFLGVBQWUsRUFBYSxNQUFNLDBCQUEwQixDQUFDO0FBRXRFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzNELE9BQU8sRUFBRSxxQkFBcUIs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QzVDLHdCQUF3QixFQUFFLFlBQVk7cUJBQ3ZDIiwic291cmNlc0NvbnRlbnQiOlsiLy8jcmVnaW9uIExpY2Vuc2Vcbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCAyMDIwIEVuZXJnaW5ldCBEYXRhSHViIEEvU1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2UyXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8vI2VuZHJlZ2lvblxuaW1wb3J0IHtcbiAgaW5wdXQsXG4gIHNpZ25hbCxcbiAgZWZmZWN0LFxuICBPbkluaXQsXG4gIGluamVjdCxcbiAgQ29tcG9uZW50LFxuICB2aWV3Q2hpbGQsXG4gIERlc3Ryb3lSZWYsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBtb2RlbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gIE5nQ29udHJvbCxcbiAgVmFsaWRhdG9yRm4sXG4gIEZvcm1Db250cm9sLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBBc3luY1ZhbGlkYXRvckZuLFxuICBVbnR5cGVkRm9ybUNvbnRyb2wsXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IE5nQ2xhc3MgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5pbXBvcnQgeyBSeFB1c2ggfSBmcm9tICdAcngtYW5ndWxhci90ZW1wbGF0ZS9wdXNoJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuaW1wb3J0IHsgb2YsIFJlcGxheVN1YmplY3QsIG1hcCwgdGFrZSwgZmlsdGVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBOZ3hNYXRTZWxlY3RTZWFyY2hNb2R1bGUgfSBmcm9tICduZ3gtbWF0LXNlbGVjdC1zZWFyY2gnO1xuaW1wb3J0IHsgTWF0U2VsZWN0TW9kdWxlLCBNYXRTZWxlY3QgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xuXG5pbXBvcnQgeyBXYXR0SWNvbkNvbXBvbmVudCB9IGZyb20gJ0BlbmVyZ2luZXQvd2F0dC9pY29uJztcbmltcG9ydCB7IFdhdHRGaWVsZENvbXBvbmVudCB9IGZyb20gJ0BlbmVyZ2luZXQvd2F0dC9maWVsZCc7XG5pbXBvcnQgeyBXYXR0TWVudUNoaXBDb21wb25lbnQgfSBmcm9tICdAZW5lcmdpbmV0L3dhdHQvY2hpcCc7XG5cbmltcG9ydCB0eXBlIHsgV2F0dERyb3Bkb3duVmFsdWUgfSBmcm9tICcuL3dhdHQtZHJvcGRvd24tdmFsdWUnO1xuaW1wb3J0IHR5cGUgeyBXYXR0RHJvcGRvd25PcHRpb25zIH0gZnJvbSAnLi93YXR0LWRyb3Bkb3duLW9wdGlvbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3dhdHQtZHJvcGRvd24nLFxuICB0ZW1wbGF0ZVVybDogJy4vd2F0dC1kcm9wZG93bi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3dhdHQtZHJvcGRvd24uY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaW1wb3J0czogW1xuICAgIFJ4UHVzaCxcbiAgICBOZ0NsYXNzLFxuICAgIE1hdFNlbGVjdE1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE5neE1hdFNlbGVjdFNlYXJjaE1vZHVsZSxcblxuICAgIFdhdHRJY29uQ29tcG9uZW50LFxuICAgIFdhdHRGaWVsZENvbXBvbmVudCxcbiAgICBXYXR0TWVudUNoaXBDb21wb25lbnQsXG4gIF0sXG4gIGhvc3Q6IHtcbiAgICAnW2F0dHIud2F0dC1maWVsZC1kaXNhYmxlZF0nOiAnaXNEaXNhYmxlZCgpJyxcbiAgICAnW2NsYXNzLndhdHQtY2hpcC1tb2RlXSc6ICdjaGlwTW9kZSgpJyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgV2F0dERyb3Bkb3duQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCB7XG4gIHByaXZhdGUgcGFyZW50Q29udHJvbERpcmVjdGl2ZSA9IGluamVjdChOZ0NvbnRyb2wsIHsgaG9zdDogdHJ1ZSB9KTtcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHBhcmVudENvbnRyb2w6IEZvcm1Db250cm9sIHwgbnVsbCA9IG51bGw7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlUGFyZW50PzogVmFsaWRhdG9yRm47XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlUGFyZW50QXN5bmM/OiBBc3luY1ZhbGlkYXRvckZuO1xuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgbWF0U2VsZWN0Q29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZCB8IG51bGw+KG51bGwpO1xuICAvKipcbiAgICogQ29udHJvbCBmb3IgdGhlIE1hdFNlbGVjdCBmaWx0ZXIga2V5d29yZFxuICAgKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBmaWx0ZXJDb250cm9sID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpO1xuICAvKipcbiAgICogTGlzdCBvZiBvcHRpb25zIGZpbHRlcmVkIGJ5IHNlYXJjaCBrZXl3b3JkXG4gICAqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGZpbHRlcmVkT3B0aW9ucyQgPSBuZXcgUmVwbGF5U3ViamVjdDxXYXR0RHJvcGRvd25PcHRpb25zPigxKTtcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGVtRGFzaCA9ICfigJQnO1xuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgaXNUb2dnbGVBbGxDaGVja2VkID0gZmFsc2U7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBpc1RvZ2dsZUFsbEluZGV0ZXJtaW5hdGUgPSBmYWxzZTtcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIF9vcHRpb25zOiBXYXR0RHJvcGRvd25PcHRpb25zID0gW107XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBpc0Rpc2FibGVkID0gc2lnbmFsKGZhbHNlKTtcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgZ2V0IHNob3dUcmlnZ2VyVmFsdWUoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbXVsdGlwbGUgPSB0aGlzLm11bHRpcGxlKCk7XG4gICAgcmV0dXJuIChtdWx0aXBsZSAmJlxuICAgICAgdGhpcy5tYXRTZWxlY3RDb250cm9sLnZhbHVlPy5sZW5ndGggPT09IDEgJiZcbiAgICAgIHRoaXMubWF0U2VsZWN0Q29udHJvbC52YWx1ZVswXSAhPT0gJycpIHx8XG4gICAgICAoIW11bHRpcGxlICYmIHRoaXMubWF0U2VsZWN0KCk/LnRyaWdnZXJWYWx1ZSlcbiAgICAgID8gdHJ1ZVxuICAgICAgOiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBnZXQgc2hvd0NoaXBMYWJlbCgpIHtcbiAgICByZXR1cm4gdGhpcy5tdWx0aXBsZSgpICYmIHRoaXMubWF0U2VsZWN0Q29udHJvbC52YWx1ZSAmJiB0aGlzLm1hdFNlbGVjdENvbnRyb2wudmFsdWUubGVuZ3RoID4gMVxuICAgICAgPyB0cnVlXG4gICAgICA6IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG1hdFNlbGVjdCA9IHZpZXdDaGlsZDxNYXRTZWxlY3Q+KCdtYXRTZWxlY3QnKTtcblxuICBoaWRlU2VhcmNoID0gaW5wdXQoZmFsc2UpO1xuICBwYW5lbFdpZHRoID0gaW5wdXQ8bnVsbCB8ICdhdXRvJz4obnVsbCk7XG4gIGdldEN1c3RvbVRyaWdnZXIgPSBpbnB1dDwodmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdKSA9PiBzdHJpbmc+KCk7XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgbW9kZSBvZiB0aGUgZHJvcGRvd24uXG4gICAqL1xuICBjaGlwTW9kZSA9IGlucHV0KGZhbHNlKTtcblxuICBkaXNhYmxlU2VsZWN0ZWRNb2RlID0gaW5wdXQoZmFsc2UpO1xuXG4gIHNvcnREaXJlY3Rpb24gPSBpbnB1dDwnYXNjJyB8ICdkZXNjJz4oKTtcblxuICAvKipcbiAgICogU2V0cyB0aGUgb3B0aW9ucyBmb3IgdGhlIGRyb3Bkb3duLlxuICAgKi9cbiAgb3B0aW9ucyA9IG1vZGVsPFdhdHREcm9wZG93bk9wdGlvbnM+KFtdKTtcblxuICAvKipcbiAgICogU2V0cyBzdXBwb3J0IGZvciBzZWxlY3RpbmcgbXVsdGlwbGUgZHJvcGRvd24gb3B0aW9ucy5cbiAgICovXG4gIG11bHRpcGxlID0gaW5wdXQoZmFsc2UpO1xuXG4gIC8qKlxuICAgKiBTZXRzIHN1cHBvcnQgZm9yIGhpZGluZyB0aGUgcmVzZXQgb3B0aW9uIGluIFwic2luZ2xlXCIgc2VsZWN0IG1vZGUuXG4gICAqL1xuICBzaG93UmVzZXRPcHRpb24gPSBpbnB1dCh0cnVlKTtcblxuICAvKipcbiAgICogU2V0cyB0aGUgcGxhY2Vob2xkZXIgZm9yIHRoZSBkcm9wZG93bi5cbiAgICovXG4gIHBsYWNlaG9sZGVyID0gaW5wdXQoJycpO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBsYWJlbCBmb3IgdGhlIGRyb3Bkb3duLlxuICAgKi9cbiAgbGFiZWwgPSBpbnB1dCgnJyk7XG5cbiAgLyoqXG4gICAqIExhYmVsIHRvIGJlIHNob3duIHdoZW4gbm8gb3B0aW9ucyBhcmUgZm91bmQgYWZ0ZXIgZmlsdGVyaW5nLlxuICAgKlxuICAgKiBOb3RlOiBUaGUgbGFiZWwgaXMgdmlzaWJsZSBpbiBcIm11bHRpcGxlXCIgbW9kZSBvbmx5LlxuICAgKi9cbiAgbm9PcHRpb25zRm91bmRMYWJlbCA9IGlucHV0KCcnKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMub3B0aW9ucygpO1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkob3B0aW9ucykpIHtcbiAgICAgICAgbGV0IG9wdGlvbnNDb3B5ID0gWy4uLm9wdGlvbnNdO1xuXG4gICAgICAgIGlmICh0aGlzLnNvcnREaXJlY3Rpb24oKSkge1xuICAgICAgICAgIG9wdGlvbnNDb3B5ID0gdGhpcy5zb3J0T3B0aW9ucyhvcHRpb25zQ29weSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9vcHRpb25zID0gb3B0aW9uc0NvcHk7XG4gICAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zJC5uZXh0KG9wdGlvbnNDb3B5KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnBhcmVudENvbnRyb2xEaXJlY3RpdmUudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5saXN0ZW5Gb3JGaWx0ZXJGaWVsZFZhbHVlQ2hhbmdlcygpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZVByb3BlcnRpZXNGcm9tUGFyZW50KCk7XG4gICAgdGhpcy5iaW5kUGFyZW50VmFsaWRhdG9yc1RvQ29udHJvbCgpO1xuICAgIHRoaXMuYmluZENvbnRyb2xUb1BhcmVudCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHdyaXRlVmFsdWUodmFsdWU6IFdhdHREcm9wZG93blZhbHVlKTogdm9pZCB7XG4gICAgdGhpcy5tYXRTZWxlY3RDb250cm9sLnNldFZhbHVlKHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICByZWdpc3Rlck9uQ2hhbmdlKG9uQ2hhbmdlRm46ICh2YWx1ZTogV2F0dERyb3Bkb3duVmFsdWUpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLmNoYW5nZVBhcmVudFZhbHVlID0gb25DaGFuZ2VGbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICByZWdpc3Rlck9uVG91Y2hlZChvblRvdWNoRm46ICgpID0+IHZvaWQpIHtcbiAgICB0aGlzLm1hcmtQYXJlbnRDb250cm9sQXNUb3VjaGVkID0gb25Ub3VjaEZuO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHNldERpc2FibGVkU3RhdGUoc2hvdWxkRGlzYWJsZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuaXNEaXNhYmxlZC5zZXQoc2hvdWxkRGlzYWJsZSk7XG4gICAgaWYgKHNob3VsZERpc2FibGUpIHtcbiAgICAgIHRoaXMubWF0U2VsZWN0Q29udHJvbC5kaXNhYmxlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubWF0U2VsZWN0Q29udHJvbC5lbmFibGUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgb25Ub2dnbGVBbGwodG9nZ2xlQWxsU3RhdGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgICBtYXAoKG9wdGlvbnMpID0+IG9wdGlvbnMubWFwKChvcHRpb24pID0+IG9wdGlvbi52YWx1ZSkpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChmaWx0ZXJlZE9wdGlvbnM6IHN0cmluZ1tdKSA9PiB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnNUb1NlbGVjdCA9IHRvZ2dsZUFsbFN0YXRlID8gZmlsdGVyZWRPcHRpb25zIDogW107XG4gICAgICAgIHRoaXMubWF0U2VsZWN0Q29udHJvbC5wYXRjaFZhbHVlKG9wdGlvbnNUb1NlbGVjdCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzb3J0T3B0aW9ucyhvcHRpb25zOiBXYXR0RHJvcGRvd25PcHRpb25zKTogV2F0dERyb3Bkb3duT3B0aW9ucyB7XG4gICAgcmV0dXJuIFsuLi5vcHRpb25zXS5zb3J0KChhLCBiKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5zb3J0RGlyZWN0aW9uKCkgPT09ICdhc2MnXG4gICAgICAgID8gYS5kaXNwbGF5VmFsdWUubG9jYWxlQ29tcGFyZShiLmRpc3BsYXlWYWx1ZSlcbiAgICAgICAgOiBiLmRpc3BsYXlWYWx1ZS5sb2NhbGVDb21wYXJlKGEuZGlzcGxheVZhbHVlKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIGxpc3RlbkZvckZpbHRlckZpZWxkVmFsdWVDaGFuZ2VzKCkge1xuICAgIHRoaXMuZmlsdGVyQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuZmlsdGVyT3B0aW9ucygpO1xuXG4gICAgICBpZiAodGhpcy5tdWx0aXBsZSgpKSB7XG4gICAgICAgIHRoaXMuZGV0ZXJtaW5lVG9nZ2xlQWxsQ2hlY2tib3hTdGF0ZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgcHJpdmF0ZSBjaGFuZ2VQYXJlbnRWYWx1ZSA9ICh2YWx1ZTogV2F0dERyb3Bkb3duVmFsdWUpOiB2b2lkID0+IHtcbiAgICAvLyBJbnRlbnRpb25hbGx5IGxlZnQgZW1wdHlcbiAgfTtcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBtYXJrUGFyZW50Q29udHJvbEFzVG91Y2hlZCA9ICgpOiB2b2lkID0+IHtcbiAgICAvLyBJbnRlbnRpb25hbGx5IGxlZnQgZW1wdHlcbiAgfTtcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKlxuICAgKiBTdG9yZSB0aGUgcGFyZW50IGNvbnRyb2wsIGl0cyB2YWxpZGF0b3JzIGFuZCBhc3luYyB2YWxpZGF0b3JzIGluIHByb3BlcnRpZXNcbiAgICogb2YgdGhpcyBjb21wb25lbnQuXG4gICAqL1xuICBwcml2YXRlIGluaXRpYWxpemVQcm9wZXJ0aWVzRnJvbVBhcmVudCgpOiB2b2lkIHtcbiAgICB0aGlzLnBhcmVudENvbnRyb2wgPSB0aGlzLnBhcmVudENvbnRyb2xEaXJlY3RpdmUuY29udHJvbCBhcyBVbnR5cGVkRm9ybUNvbnRyb2w7XG5cbiAgICB0aGlzLnZhbGlkYXRlUGFyZW50ID1cbiAgICAgICh0aGlzLnBhcmVudENvbnRyb2wudmFsaWRhdG9yICYmIHRoaXMucGFyZW50Q29udHJvbC52YWxpZGF0b3IuYmluZCh0aGlzLnBhcmVudENvbnRyb2wpKSB8fFxuICAgICAgKCgpID0+IG51bGwpO1xuXG4gICAgdGhpcy52YWxpZGF0ZVBhcmVudEFzeW5jID1cbiAgICAgICh0aGlzLnBhcmVudENvbnRyb2wuYXN5bmNWYWxpZGF0b3IgJiZcbiAgICAgICAgdGhpcy5wYXJlbnRDb250cm9sLmFzeW5jVmFsaWRhdG9yLmJpbmQodGhpcy5wYXJlbnRDb250cm9sKSkgfHxcbiAgICAgICgoKSA9PiBvZihudWxsKSk7XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKlxuICAgKiBJbmhlcml0IHZhbGlkYXRvcnMgZnJvbSBwYXJlbnQgZm9ybSBjb250cm9sLlxuICAgKi9cbiAgcHJpdmF0ZSBiaW5kUGFyZW50VmFsaWRhdG9yc1RvQ29udHJvbCgpOiB2b2lkIHtcbiAgICBjb25zdCB2YWxpZGF0b3JzID0gIXRoaXMubWF0U2VsZWN0Q29udHJvbC52YWxpZGF0b3JcbiAgICAgID8gW3RoaXMudmFsaWRhdGVQYXJlbnRdXG4gICAgICA6IEFycmF5LmlzQXJyYXkodGhpcy5tYXRTZWxlY3RDb250cm9sLnZhbGlkYXRvcilcbiAgICAgICAgPyBbLi4udGhpcy5tYXRTZWxlY3RDb250cm9sLnZhbGlkYXRvciwgdGhpcy52YWxpZGF0ZVBhcmVudF1cbiAgICAgICAgOiBbdGhpcy5tYXRTZWxlY3RDb250cm9sLnZhbGlkYXRvciwgdGhpcy52YWxpZGF0ZVBhcmVudF07XG4gICAgdGhpcy5tYXRTZWxlY3RDb250cm9sLnNldFZhbGlkYXRvcnModmFsaWRhdG9ycyk7XG5cbiAgICBjb25zdCBhc3luY1ZhbGlkYXRvcnMgPSAhdGhpcy5tYXRTZWxlY3RDb250cm9sLmFzeW5jVmFsaWRhdG9yXG4gICAgICA/IFt0aGlzLnZhbGlkYXRlUGFyZW50QXN5bmNdXG4gICAgICA6IEFycmF5LmlzQXJyYXkodGhpcy5tYXRTZWxlY3RDb250cm9sLmFzeW5jVmFsaWRhdG9yKVxuICAgICAgICA/IFsuLi50aGlzLm1hdFNlbGVjdENvbnRyb2wuYXN5bmNWYWxpZGF0b3IsIHRoaXMudmFsaWRhdGVQYXJlbnRBc3luY11cbiAgICAgICAgOiBbdGhpcy5tYXRTZWxlY3RDb250cm9sLmFzeW5jVmFsaWRhdG9yLCB0aGlzLnZhbGlkYXRlUGFyZW50QXN5bmNdO1xuICAgIHRoaXMubWF0U2VsZWN0Q29udHJvbC5zZXRBc3luY1ZhbGlkYXRvcnMoYXN5bmNWYWxpZGF0b3JzKTtcblxuICAgIHRoaXMubWF0U2VsZWN0Q29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKlxuICAgKiBFbWl0IHZhbHVlcyB0byB0aGUgcGFyZW50IGZvcm0gY29udHJvbCB3aGVuIG91ciBmb3JtIGNvbnRyb2wncyB2YWx1ZVxuICAgKiBjaGFuZ2VzLlxuICAgKlxuICAgKiBSZWZsZWN0IHBhcmVudCB2YWxpZGF0aW9uIGVycm9ycyBpbiBvdXIgZm9ybSBjb250cm9sLlxuICAgKi9cbiAgcHJpdmF0ZSBiaW5kQ29udHJvbFRvUGFyZW50KCk6IHZvaWQge1xuICAgIHRoaXMubWF0U2VsZWN0Q29udHJvbC52YWx1ZUNoYW5nZXNcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHZhbHVlKSA9PiAodmFsdWUgPT09IHVuZGVmaW5lZCA/IG51bGwgOiB2YWx1ZSkpLFxuICAgICAgICBtYXAoKHZhbHVlOiBXYXR0RHJvcGRvd25WYWx1ZSkgPT4ge1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCh2YWx1ZTogV2F0dERyb3Bkb3duVmFsdWUpID0+IHtcbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUoKSkge1xuICAgICAgICAgIHRoaXMuZGV0ZXJtaW5lVG9nZ2xlQWxsQ2hlY2tib3hTdGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5tYXJrUGFyZW50Q29udHJvbEFzVG91Y2hlZCgpO1xuICAgICAgICB0aGlzLmNoYW5nZVBhcmVudFZhbHVlKHZhbHVlKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5wYXJlbnRDb250cm9sPy5zdGF0dXNDaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKFxuICAgICAgICAgICgpID0+XG4gICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAuLi50aGlzLnBhcmVudENvbnRyb2w/LmVycm9ycyxcbiAgICAgICAgICAgIH0pIGFzIFZhbGlkYXRpb25FcnJvcnNcbiAgICAgICAgKSxcbiAgICAgICAgbWFwKChlcnJvcnMpID0+IChPYmplY3Qua2V5cyhlcnJvcnMpLmxlbmd0aCA+IDAgPyBlcnJvcnMgOiBudWxsKSksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChlcnJvcnMpID0+IHtcbiAgICAgICAgdGhpcy5tYXRTZWxlY3RDb250cm9sLnNldEVycm9ycyhlcnJvcnMpO1xuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBmaWx0ZXJPcHRpb25zKCkge1xuICAgIGlmICghdGhpcy5fb3B0aW9ucykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIGdldCB0aGUgc2VhcmNoIGtleXdvcmRcbiAgICBsZXQgc2VhcmNoID0gKHRoaXMuZmlsdGVyQ29udHJvbC52YWx1ZSBhcyBzdHJpbmcpLnRyaW0oKTtcblxuICAgIGlmIChzZWFyY2gpIHtcbiAgICAgIHNlYXJjaCA9IHNlYXJjaC50b0xvd2VyQ2FzZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5maWx0ZXJlZE9wdGlvbnMkLm5leHQodGhpcy5fb3B0aW9ucy5zbGljZSgpKTtcbiAgICB9XG5cbiAgICAvLyBmaWx0ZXIgdGhlIG9wdGlvbnNcbiAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyQubmV4dChcbiAgICAgIHRoaXMuX29wdGlvbnMuZmlsdGVyKChvcHRpb24pID0+IG9wdGlvbi5kaXNwbGF5VmFsdWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKHNlYXJjaCkgPiAtMSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgZGV0ZXJtaW5lVG9nZ2xlQWxsQ2hlY2tib3hTdGF0ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgICBmaWx0ZXIoKG9wdGlvbnMpID0+IG9wdGlvbnMgIT0gbnVsbCAmJiBvcHRpb25zICE9PSB1bmRlZmluZWQpLFxuICAgICAgICBtYXAoKG9wdGlvbnMpID0+IG9wdGlvbnMubWFwKChvcHRpb24pID0+IG9wdGlvbi52YWx1ZSkpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChmaWx0ZXJlZE9wdGlvbnM6IHN0cmluZ1tdKSA9PiB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkT3B0aW9ucyA9IHRoaXMubWF0U2VsZWN0Q29udHJvbC52YWx1ZTtcblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShzZWxlY3RlZE9wdGlvbnMpKSB7XG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWRGaWx0ZXJlZE9wdGlvbnMgPSBmaWx0ZXJlZE9wdGlvbnMuZmlsdGVyKChvcHRpb24pID0+XG4gICAgICAgICAgICBzZWxlY3RlZE9wdGlvbnMuaW5jbHVkZXMob3B0aW9uKVxuICAgICAgICAgICk7XG5cbiAgICAgICAgICB0aGlzLmlzVG9nZ2xlQWxsSW5kZXRlcm1pbmF0ZSA9XG4gICAgICAgICAgICBzZWxlY3RlZEZpbHRlcmVkT3B0aW9ucy5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICBzZWxlY3RlZEZpbHRlcmVkT3B0aW9ucy5sZW5ndGggPCBmaWx0ZXJlZE9wdGlvbnMubGVuZ3RoO1xuXG4gICAgICAgICAgdGhpcy5pc1RvZ2dsZUFsbENoZWNrZWQgPVxuICAgICAgICAgICAgc2VsZWN0ZWRGaWx0ZXJlZE9wdGlvbnMubGVuZ3RoID4gMCAmJlxuICAgICAgICAgICAgc2VsZWN0ZWRGaWx0ZXJlZE9wdGlvbnMubGVuZ3RoID09PSBmaWx0ZXJlZE9wdGlvbnMubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxufVxuIiwiPCEtLVxuQGxpY2Vuc2VcbkNvcHlyaWdodCAyMDIwIEVuZXJnaW5ldCBEYXRhSHViIEEvU1xuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlMlwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4tLT5cbjx3YXR0LWZpZWxkXG4gIFtjb250cm9sXT1cInBhcmVudENvbnRyb2xcIlxuICBbY2hpcE1vZGVdPVwiY2hpcE1vZGUoKVwiXG4gIFtsYWJlbF09XCJsYWJlbCgpXCJcbiAgKGNsaWNrKT1cIm1hdFNlbGVjdC5vcGVuKClcIlxuPlxuICBAaWYgKGNoaXBNb2RlKCkpIHtcbiAgICA8d2F0dC1tZW51LWNoaXBcbiAgICAgIFtvcGVuZWRdPVwibWF0U2VsZWN0LnBhbmVsT3BlblwiXG4gICAgICAodG9nZ2xlKT1cIm1hdFNlbGVjdC5vcGVuKClcIlxuICAgICAgW3NlbGVjdGVkXT1cIiEhbWF0U2VsZWN0Py50cmlnZ2VyVmFsdWUgJiYgIWRpc2FibGVTZWxlY3RlZE1vZGUoKVwiXG4gICAgICBbZGlzYWJsZWRdPVwibWF0U2VsZWN0Q29udHJvbC5kaXNhYmxlZFwiXG4gICAgPlxuICAgICAge3sgcGxhY2Vob2xkZXIoKSB9fVxuICAgICAgQGlmIChzaG93VHJpZ2dlclZhbHVlKSB7XG4gICAgICAgIDxzcGFuPlxuICAgICAgICAgIEBpZiAocGxhY2Vob2xkZXIoKSkge1xuICAgICAgICAgICAgOlxuICAgICAgICAgIH1cbiAgICAgICAgICB7eyBnZXRDdXN0b21UcmlnZ2VyKCk/LihtYXRTZWxlY3QudmFsdWUpID8/IG1hdFNlbGVjdD8udHJpZ2dlclZhbHVlIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIH1cbiAgICAgIEBpZiAoc2hvd0NoaXBMYWJlbCkge1xuICAgICAgICA8c3BhbiBjbGFzcz1cIndhdHQtY2hpcC1sYWJlbFwiPnt7IG1hdFNlbGVjdENvbnRyb2wudmFsdWU/Lmxlbmd0aCB9fTwvc3Bhbj5cbiAgICAgIH1cbiAgICA8L3dhdHQtbWVudS1jaGlwPlxuICB9XG5cbiAgPG1hdC1zZWxlY3RcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImxhYmVsKClcIlxuICAgIFtmb3JtQ29udHJvbF09XCJtYXRTZWxlY3RDb250cm9sXCJcbiAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIoKVwiXG4gICAgI21hdFNlbGVjdFxuICAgIFtwYW5lbFdpZHRoXT1cInBhbmVsV2lkdGgoKVwiXG4gICAgW211bHRpcGxlXT1cIm11bHRpcGxlKClcIlxuICAgIFtuZ0NsYXNzXT1cInsgY2hpcDogY2hpcE1vZGUoKSB9XCJcbiAgICBbcGFuZWxDbGFzc109XCJ7XG4gICAgICAnd2F0dC1kcm9wZG93bi1wYW5lbCc6IHRydWUsXG4gICAgICAnd2F0dC1kcm9wZG93bi1wYW5lbC1jaGlwLW1vZGUnOiBjaGlwTW9kZSgpLFxuICAgIH1cIlxuICA+XG4gICAgPCEtLSBXZSB1c2UgdGhpcyBpbnN0ZWFkIG9mIG5nSWYsIHNpbmNlIGl0IHdpbGwgdHJpZ2dlciBhIE5HMDEwMDogRXhwcmVzc2lvbkNoYW5nZWRBZnRlckl0SGFzQmVlbkNoZWNrZWRFcnJvcjogRXhwcmVzc2lvbiBoYXMgY2hhbmdlZCBhZnRlciBpdCB3YXMgY2hlY2tlZC4gLS0+XG4gICAgPG1hdC1vcHRpb24gW3N0eWxlLmRpc3BsYXldPVwiIWhpZGVTZWFyY2goKSA/ICdibG9jaycgOiAnbm9uZSdcIj5cbiAgICAgIDxuZ3gtbWF0LXNlbGVjdC1zZWFyY2hcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cImZpbHRlckNvbnRyb2xcIlxuICAgICAgICBbcGxhY2Vob2xkZXJMYWJlbF09XCJwbGFjZWhvbGRlcigpXCJcbiAgICAgICAgY2xvc2VJY29uPVwiY2xvc2VcIlxuICAgICAgICBbc2hvd1RvZ2dsZUFsbENoZWNrYm94XT1cIm11bHRpcGxlKClcIlxuICAgICAgICAodG9nZ2xlQWxsKT1cIm9uVG9nZ2xlQWxsKCRldmVudClcIlxuICAgICAgICBbdG9nZ2xlQWxsQ2hlY2tib3hDaGVja2VkXT1cImlzVG9nZ2xlQWxsQ2hlY2tlZFwiXG4gICAgICAgIFt0b2dnbGVBbGxDaGVja2JveEluZGV0ZXJtaW5hdGVdPVwiaXNUb2dnbGVBbGxJbmRldGVybWluYXRlXCJcbiAgICAgICAgW25vRW50cmllc0ZvdW5kTGFiZWxdPVwibm9PcHRpb25zRm91bmRMYWJlbCgpXCJcbiAgICAgID5cbiAgICAgICAgPHdhdHQtaWNvbiBuZ3hNYXRTZWxlY3RTZWFyY2hDbGVhciBuYW1lPVwiY2xvc2VcIiBzaXplPVwic1wiIC8+XG4gICAgICA8L25neC1tYXQtc2VsZWN0LXNlYXJjaD5cbiAgICA8L21hdC1vcHRpb24+XG5cbiAgICBAaWYgKCFtdWx0aXBsZSgpICYmIHNob3dSZXNldE9wdGlvbigpKSB7XG4gICAgICA8bWF0LW9wdGlvbj57eyBlbURhc2ggfX08L21hdC1vcHRpb24+XG4gICAgfVxuXG4gICAgQGZvciAob3B0aW9uIG9mIGZpbHRlcmVkT3B0aW9ucyQgfCBwdXNoOyB0cmFjayBvcHRpb24pIHtcbiAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJvcHRpb24udmFsdWVcIiBbZGlzYWJsZWRdPVwib3B0aW9uLmRpc2FibGVkXCI+XG4gICAgICAgIHt7IG9wdGlvbi5kaXNwbGF5VmFsdWUgfX1cbiAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICB9XG4gIDwvbWF0LXNlbGVjdD5cbiAgPG5nLWNvbnRlbnQgLz5cbiAgPG5nLWNvbnRlbnQgbmdQcm9qZWN0QXM9XCJ3YXR0LWZpZWxkLWhpbnRcIiBzZWxlY3Q9XCJ3YXR0LWZpZWxkLWhpbnRcIiAvPlxuICA8bmctY29udGVudCBuZ1Byb2plY3RBcz1cIndhdHQtZmllbGQtZXJyb3JcIiBzZWxlY3Q9XCJ3YXR0LWZpZWxkLWVycm9yXCIgLz5cbjwvd2F0dC1maWVsZD5cbiJdfQ==
|