i-tech-shared-components 1.1.8 → 1.1.9
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/README.md +23 -23
- package/esm2022/lib/components/autocomplete-select/autocomplete-select.component.mjs +3 -3
- package/esm2022/lib/components/button/button.component.mjs +3 -3
- package/esm2022/lib/components/clear-value/clear-value.component.mjs +11 -11
- package/esm2022/lib/components/date-picker/date-picker.component.mjs +17 -3
- package/esm2022/lib/components/date-range-datepicker/date-range-datepicker.component.mjs +3 -3
- package/esm2022/lib/components/icon-button/icon-button.component.mjs +3 -3
- package/esm2022/lib/components/menu/menu.component.mjs +51 -0
- package/esm2022/lib/components/text/text-input.component.mjs +3 -3
- package/esm2022/lib/directives/date-mask.directive.mjs +1 -1
- package/esm2022/lib/directives/input-mask.directive.mjs +1 -1
- package/esm2022/lib/interfaces/app-input.interface.mjs +1 -1
- package/esm2022/lib/interfaces/autocomplete-configs.interface.mjs +1 -1
- package/esm2022/lib/interfaces/button-types.enum.mjs +1 -1
- package/esm2022/lib/interfaces/dropdown-selection.constants.mjs +12 -0
- package/esm2022/lib/pipes/array-to-string.pipe.mjs +1 -1
- package/esm2022/lib/pipes/generate-error-messages.pipe.mjs +1 -1
- package/esm2022/lib/pipes/get-value-by-key-from-object.pipe.mjs +1 -1
- package/esm2022/lib/services/input.service.mjs +1 -1
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/i-tech-shared-components.mjs +92 -25
- package/fesm2022/i-tech-shared-components.mjs.map +1 -1
- package/lib/components/date-picker/date-picker.component.d.ts +4 -1
- package/lib/components/menu/menu.component.d.ts +28 -0
- package/lib/interfaces/autocomplete-configs.interface.d.ts +3 -3
- package/lib/interfaces/dropdown-selection.constants.d.ts +10 -0
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
- package/theme/_buttons.scss +63 -63
- package/theme/_color_themes.scss +136 -136
- package/theme/_date_picker.scss +77 -77
- package/theme/_form_fields.scss +112 -112
- package/theme/_icon-button.scss +123 -123
- package/theme/_label.scss +119 -119
- package/theme/_mat-selects.scss +248 -248
- package/theme/_menu.scss +9 -9
- package/theme/_text_input.scss +28 -28
- package/theme/variables/_colors.scss +20 -20
- package/theme.scss +31 -31
package/README.md
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
# i-tech-material-shared-components
|
|
2
|
-
|
|
3
|
-
A library of Angular Material-based components designed for seamless integration and scalability.
|
|
4
|
-
|
|
5
|
-
## Installation
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
## Code scaffolding
|
|
9
|
-
**i-tech-shared-components**
|
|
10
|
-
|
|
11
|
-
***
|
|
12
|
-
|
|
13
|
-
# i-tech-shared-components
|
|
14
|
-
|
|
15
|
-
## Modules
|
|
16
|
-
|
|
17
|
-
- [Main Documentation](https://gitlab.com/a.karapetyan/t3_ui_kit/-/tree/documentation/projects/shared-components/docs)
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
Install the library using npm:
|
|
21
|
-
|
|
22
|
-
```bash
|
|
23
|
-
npm install i-tech-shared-components
|
|
1
|
+
# i-tech-material-shared-components
|
|
2
|
+
|
|
3
|
+
A library of Angular Material-based components designed for seamless integration and scalability.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
## Code scaffolding
|
|
9
|
+
**i-tech-shared-components**
|
|
10
|
+
|
|
11
|
+
***
|
|
12
|
+
|
|
13
|
+
# i-tech-shared-components
|
|
14
|
+
|
|
15
|
+
## Modules
|
|
16
|
+
|
|
17
|
+
- [Main Documentation](https://gitlab.com/a.karapetyan/t3_ui_kit/-/tree/documentation/projects/shared-components/docs)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
Install the library using npm:
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
npm install i-tech-shared-components
|
|
@@ -359,7 +359,7 @@ export class AutocompleteSelectComponent {
|
|
|
359
359
|
searchInput?.nativeElement?.focus();
|
|
360
360
|
}
|
|
361
361
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AutocompleteSelectComponent, deps: [{ token: i1.InputService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
362
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AutocompleteSelectComponent, isStandalone: true, selector: "i-tech-autocomplete-select", inputs: { className: "className", submitValue: "submitValue", configs: "configs", detectChanges: "detectChanges" }, outputs: { selectionChange: "selectionChange", emitAction: "emitAction" }, host: { listeners: { "document:visibilitychange": "handleVisibilityChange()" } }, viewQueries: [{ propertyName: "matSelect", first: true, predicate: ["matSelect"], descendants: true }, { propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true }, { propertyName: "allSelected", first: true, predicate: ["allSelected"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"new-mat-autocomplete\" id=\"mat_autocomplete\"\r\n [ngClass]=\"{\r\n 'mat-select-without_icon': !selectConfig.iconUrl && !selectConfig.activeStateIconUrl,\r\n 'mat-select-with-search': selectConfig.search,\r\n 'without-label': selectConfig.hideLabel,\r\n 'invalid_field': ngControl.control.errors && submitValue,\r\n 'readonly-field': selectConfig.readOnly || ngControl.control.disabled\r\n }\"\r\n [matTooltip]=\"(selectConfig.hover && !ngControl.control.disabled ? ((selectConfig.hover || '') | translate) : '')\"\r\n [matTooltipClass]=\"'mat-mdc-tooltip big-td-mat-tooltip'\"\r\n [matTooltipPosition]=\"'above'\"\r\n *ngIf=\"selectConfig && ngControl\">\r\n\r\n <div class=\"w-100\" *ngIf=\"!selectConfig.hideLabel\">\r\n <mat-label [ngClass]=\"{\r\n 'readonly-color' : selectConfig.readOnly || ngControl.control.disabled,\r\n 'invalid-label-color': !!(ngControl.control.errors && submitValue)\r\n }\">\r\n {{ selectConfig.label | translate }}\r\n </mat-label>\r\n <span *ngIf=\"selectConfig.required\" class=\"required-input\"\r\n [ngClass]=\"{'readonly-color' : ngControl.control.disabled}\">*</span>\r\n </div>\r\n\r\n\r\n <!-- Search Input -->\r\n <div class=\"search-input w-100\"\r\n (click)=\"$event.stopPropagation();$event.preventDefault()\"\r\n [ngClass]=\"{ hide_input_placeholder: showPlaceholder || ngControl.control.disabled }\"\r\n *ngIf=\"selectConfig.search\"\r\n >\r\n <input autocomplete=\"off\"\r\n id=\"searchInput\"\r\n type=\"text\"\r\n [ngClass]=\"{'pr-25': !selectConfig.iconUrl}\"\r\n #searchInput\r\n [disabled]=\"ngControl.control.disabled || selectConfig.hover\"\r\n [placeholder]=\"(ngControl.control.disabled || selectConfig.hover) ? '' : 'Search'\"\r\n (focusout)=\"inputFocusOut()\"\r\n (focus)=\"openSelection()\"\r\n (keydown)=\"$event.stopPropagation()\"\r\n (keyup)=\"getDataWithSearch(searchInput.value,$event)\">\r\n\r\n <!-- Search Icon -->\r\n <span class=\"search-icon\">\r\n <i-tech-icon-button\r\n class=\"mr-10\"\r\n [ngClass]=\"selectConfig.readOnly || ngControl.control.disabled ? 'readonly-color' : 'default-form-icon-color'\"\r\n *ngIf=\"selectConfig.iconPrefix && !showPlaceholder\"\r\n [iconName]=\"selectConfig.iconPrefix || ''\"\r\n [disabled]=\"selectConfig.readOnly || false\"\r\n matPrefix\r\n >\r\n </i-tech-icon-button>\r\n </span>\r\n </div>\r\n\r\n <!-- Placeholder/Selected Value Display -->\r\n <ng-container *ngIf=\"showPlaceholder && selectConfig.search\">\r\n <div class=\"custom-placeholder\"\r\n *ngIf=\"(!ngControl?.value && !ngControl?.value?.length) ||\r\n (selectConfig.multiple && ngControl?.value && !ngControl?.value?.length)\"\r\n [ngClass]=\"selectConfig.readOnly || ngControl.control.disabled ? 'readonly-color' : 'default-form-icon-color'\"\r\n >\r\n {{ ((selectConfig.placeholder || '') | translate) }}\r\n </div>\r\n <div class=\"custom-placeholder custom-value ellipsis\"\r\n [ngClass]=\"{\r\n 'pr-42': selectConfig.iconUrl,\r\n 'readonly-color': selectConfig.readOnly || ngControl.control.disabled,\r\n 'default-form-icon-color': !(selectConfig.readOnly || ngControl.control.disabled)\r\n }\"\r\n *ngIf=\"ngControl?.value\"\r\n >\r\n {{ selectConfig?.multiple ? (ngControl.value | arrayToString) : showingValue }}\r\n </div>\r\n </ng-container>\r\n\r\n <!-- Custom Icon -->\r\n <img class=\"left_icon_new pointer\"\r\n (click)=\"iconClick(matSelect, searchInput)\"\r\n *ngIf=\"!selectConfig.matIconName && (selectConfig.iconUrl || selectConfig.activeStateIconUrl)\"\r\n [src]=\"'assets/images/icons/global/' + (ngControl.control?.value && selectConfig?.activeStateIconUrl ? selectConfig.activeStateIconUrl : selectConfig.iconUrl)\">\r\n\r\n <mat-form-field appearance=\"outline\" class=\"w-100\" (click)=\"selectConfig?.search ? focusSearchInput() : null\">\r\n <!-- Material Select -->\r\n <mat-select #matSelect=\"matSelect\"\r\n [panelClass]=\"'autocomplete-transform-panel-location'\"\r\n [attr.aria-placeholder]=\"(selectConfig.placeholder || '') | translate\"\r\n [aria-label]=\"selectConfig.label | translate\"\r\n [id]=\"selectConfig.filtrationKey || ''\"\r\n (opened)=\"registerPanelScrollEvent(matSelect)\"\r\n (openedChange)=\"openedChange($event)\"\r\n [formControl]=\"ngControl.control\"\r\n [multiple]=\"selectConfig.multiple\"\r\n (selectionChange)=\"emitSelectionChangeAndClose($event)\"\r\n [errorStateMatcher]=\"customErrorStateMatcher\"\r\n [placeholder]=\"(selectConfig.placeholder || '') | translate\"\r\n [disabled]=\"ngControl.control.disabled\"\r\n >\r\n\r\n <!-- Loading State -->\r\n <mat-option *ngIf=\"pending\" class=\"option_loading relative\">\r\n <div class=\"request_loading\">\r\n <img ngSrc=\"./loader.svg\" alt=\"\" height=\"200\" width=\"200\"/>\r\n </div>\r\n </mat-option>\r\n\r\n <!-- Options -->\r\n <ng-container *ngIf=\"data?.length && !pending\">\r\n <!-- Add New Option -->\r\n <mat-option *ngIf=\"selectConfig.actions\"\r\n class=\"pointer add_new\"\r\n disabled\r\n (click)=\"closePanelAndUnsetFocus();addNewItemEvent()\">\r\n <!-- (click)=\"ngControl.control.reset(null);matSelect._onBlur();closePanelAndUnsetFocus();addNewItemEvent()\">-->\r\n <i-tech-button\r\n [type]=\"ButtonType.OUTLINE\"\r\n [fontIcon]=\"'add'\"\r\n [text]=\"('dropdown_add_item' | translate : {INPUT_NAME: (selectConfig.label | translate)}) \"\r\n [customClass]=\"'w-100 mat-autocomplete-select-button'\">\r\n </i-tech-button>\r\n </mat-option>\r\n\r\n <!-- Regular Options -->\r\n <ng-container *ngIf=\"!selectConfig?.changeText && data.length\">\r\n <mat-option *ngFor=\"let item of data\"\r\n [value]=\"selectConfig.valueByKey | getValueByKeyFromObject : item\"\r\n (mouseup)=\"optionClick(item)\"\r\n (mousedown)=\"preventDefault($event)\">\r\n {{ ((selectConfig.valueToShowByKey | getValueByKeyFromObject : item : selectConfig.valueToShowByParam : selectConfig.withParamSymbol) || '') | translate }}\r\n </mat-option>\r\n </ng-container>\r\n\r\n <!-- Custom Text Options -->\r\n <ng-container *ngIf=\"selectConfig?.changeText && data.length\">\r\n <mat-option *ngFor=\"let item of data\"\r\n [value]=\"selectConfig.valueByKey | getValueByKeyFromObject : item\"\r\n (mouseup)=\"optionClick(item)\"\r\n (mousedown)=\"preventDefault($event)\"\r\n [disabled]=\"selectConfig?.changeText[item].disabled\">\r\n {{ selectConfig?.changeText[item].text | translate }}\r\n </mat-option>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- Empty State -->\r\n <ng-container *ngIf=\"!pending && !data.length\">\r\n <mat-option disabled class=\"empty_selection_state\">\r\n <div class=\"actions_and_tile add_new flex_column w-100 flex_center_align_center\">\r\n <span>{{ 'dropdown_no_items' | translate }}</span>\r\n <div class=\"mt-10\">\r\n <i-tech-button\r\n *ngIf=\"selectConfig?.actions\"\r\n [type]=\"ButtonType.OUTLINE\"\r\n (buttonClick)=\"closePanelAndUnsetFocus();addNewItemEvent()\"\r\n [customClass]=\"'mat-autocomplete-select-button'\"\r\n [fontIcon]=\"'add'\"\r\n [text]=\"('dropdown_add_item' | translate : {INPUT_NAME: (selectConfig.label | translate)}) \">\r\n </i-tech-button>\r\n </div>\r\n </div>\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n <mat-icon *ngIf=\"selectConfig.iconPrefix\"\r\n matPrefix\r\n [ngClass]=\"{\r\n 'readonly-color' : !selectConfig['iconPrefixColor'] && (selectConfig.readOnly || ngControl.control.disabled),\r\n 'default-form-icon-color' : !selectConfig['iconPrefixColor'] && !(selectConfig.readOnly || ngControl.control.disabled)\r\n }\"\r\n [matTooltip]=\"((selectConfig?.['iconPrefixTooltip'] || '') | translate)\"\r\n >{{ selectConfig.iconPrefix }}\r\n </mat-icon>\r\n\r\n <mat-icon *ngIf=\"selectConfig['iconPrefixSvg']\"\r\n matPrefix\r\n [matTooltip]=\"((selectConfig?.['iconPrefixTooltip'] || '') | translate)\"\r\n [svgIcon]=\"selectConfig['iconPrefixSvg'] || ''\"\r\n ></mat-icon>\r\n\r\n <i-tech-icon-button\r\n *ngIf=\"selectConfig.search && selectConfig.clearable && !ngControl.control.disabled && !!ngControl.control.value\"\r\n iconName=\"cancel\"\r\n matSuffix\r\n [disabled]=\"selectConfig.readOnly || false\"\r\n [ngClass]=\"selectConfig.readOnly || ngControl.control.disabled ? 'readonly-color' : 'default-form-icon-color'\"\r\n (click)=\"$event.stopPropagation();$event.preventDefault();ngControl.control.reset(null);matSelect._onBlur();closePanelAndUnsetFocus()\"\r\n >\r\n </i-tech-icon-button>\r\n <mat-icon\r\n matSuffix\r\n class=\"select-arrow\"\r\n [class.open]=\"matSelect.panelOpen\"\r\n [ngClass]=\"{\r\n 'readonly-color': selectConfig.readOnly || ngControl.control.disabled,\r\n 'default-form-icon-color': !(selectConfig.readOnly || ngControl.control.disabled),\r\n 'mt-8': !!ngControl.control.value && selectConfig.clearable\r\n }\"\r\n >\r\n keyboard_arrow_down\r\n </mat-icon>\r\n <!-- Error Message -->\r\n <mat-error *ngIf=\"!!(ngControl.control.errors && submitValue)\">\r\n {{ ngControl.control | generateErrorMessages : selectConfig.label : selectConfig.defaultPatternKey }}\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n <!-- Reset Button -->\r\n <i-tech-clear-value *ngIf=\"selectConfig.reset\" (reset)=\"resetValue()\"></i-tech-clear-value>\r\n</div>\r\n", styles: [".left_icon_new{position:absolute;right:2px;top:1px}::ng-deep .request_loading{width:40px;height:40px;background-color:#fff!important}::ng-deep .request_loading:hover{background-color:var(--primary99)!important}::ng-deep .request_loading:focus{background-color:var(--primary99)!important}::ng-deep .request_loading img{position:absolute;left:50%;top:50%;width:100%;height:100%;transform:translate(-50%,-50%)}::ng-deep .mat-mdc-option.add_new{opacity:1!important;pointer-events:auto!important}::ng-deep .mat-mdc-option.add_new .mat-pseudo-checkbox{display:none!important}::ng-deep .mat-mdc-option.add_new .mdc-list-item__primary-text{display:inline-block!important;width:100%!important}::ng-deep .mat-mdc-option.add_new span{color:unset!important;font-size:unset!important;margin:unset!important;opacity:1!important}@media (min-width: 1920px) and (max-width: 2500px){.mat-autocomplete{height:90px!important}}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "component", type: IconButtonComponent, selector: "i-tech-icon-button", inputs: ["size", "type", "iconSvg", "iconName", "tooltip", "disabled"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i4.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i4.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i5.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"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i6.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: ButtonComponent, selector: "i-tech-button", inputs: ["text", "data_cy", "fontIcon", "svgIcon", "type", "customClass", "submit", "disabled", "activated", "color"], outputs: ["buttonClick"] }, { kind: "pipe", type: GetValueByKeyFromObjectPipe, name: "getValueByKeyFromObject" }, { kind: "pipe", type: ArrayToStringPipe, name: "arrayToString" }, { kind: "directive", type: NgOptimizedImage, selector: "img[ngSrc]", inputs: ["ngSrc", "ngSrcset", "sizes", "width", "height", "loading", "priority", "loaderParams", "disableOptimizedSrcset", "fill", "placeholder", "placeholderConfig", "src", "srcset"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: GenerateErrorMessagesPipe, name: "generateErrorMessages" }, { kind: "component", type: ClearValueComponent, selector: "i-tech-clear-value", inputs: ["className", "additionalClass"], outputs: ["reset"] }, { kind: "ngmodule", type: MatFormFieldModule }] }); }
|
|
362
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AutocompleteSelectComponent, isStandalone: true, selector: "i-tech-autocomplete-select", inputs: { className: "className", submitValue: "submitValue", configs: "configs", detectChanges: "detectChanges" }, outputs: { selectionChange: "selectionChange", emitAction: "emitAction" }, host: { listeners: { "document:visibilitychange": "handleVisibilityChange()" } }, viewQueries: [{ propertyName: "matSelect", first: true, predicate: ["matSelect"], descendants: true }, { propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true }, { propertyName: "allSelected", first: true, predicate: ["allSelected"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"new-mat-autocomplete\" id=\"mat_autocomplete\"\n [ngClass]=\"{\n 'mat-select-without_icon': !selectConfig.iconUrl && !selectConfig.activeStateIconUrl,\n 'mat-select-with-search': selectConfig.search,\n 'without-label': selectConfig.hideLabel,\n 'invalid_field': ngControl.control.errors && submitValue,\n 'readonly-field': selectConfig.readOnly || ngControl.control.disabled\n }\"\n [matTooltip]=\"(selectConfig.hover && !ngControl.control.disabled ? ((selectConfig.hover || '') | translate) : '')\"\n [matTooltipClass]=\"'mat-mdc-tooltip big-td-mat-tooltip'\"\n [matTooltipPosition]=\"'above'\"\n *ngIf=\"selectConfig && ngControl\">\n\n <div class=\"w-100\" *ngIf=\"!selectConfig.hideLabel\">\n <mat-label [ngClass]=\"{\n 'readonly-color' : selectConfig.readOnly || ngControl.control.disabled,\n 'invalid-label-color': !!(ngControl.control.errors && submitValue)\n }\">\n {{ selectConfig.label | translate }}\n </mat-label>\n <span *ngIf=\"selectConfig.required\" class=\"required-input\"\n [ngClass]=\"{'readonly-color' : ngControl.control.disabled}\">*</span>\n </div>\n\n\n <!-- Search Input -->\n <div class=\"search-input w-100\"\n (click)=\"$event.stopPropagation();$event.preventDefault()\"\n [ngClass]=\"{ hide_input_placeholder: showPlaceholder || ngControl.control.disabled }\"\n *ngIf=\"selectConfig.search\"\n >\n <input autocomplete=\"off\"\n id=\"searchInput\"\n type=\"text\"\n [ngClass]=\"{'pr-25': !selectConfig.iconUrl}\"\n #searchInput\n [disabled]=\"ngControl.control.disabled || selectConfig.hover\"\n [placeholder]=\"(ngControl.control.disabled || selectConfig.hover) ? '' : 'Search'\"\n (focusout)=\"inputFocusOut()\"\n (focus)=\"openSelection()\"\n (keydown)=\"$event.stopPropagation()\"\n (keyup)=\"getDataWithSearch(searchInput.value,$event)\">\n\n <!-- Search Icon -->\n <span class=\"search-icon\">\n <i-tech-icon-button\n class=\"mr-10\"\n [ngClass]=\"selectConfig.readOnly || ngControl.control.disabled ? 'readonly-color' : 'default-form-icon-color'\"\n *ngIf=\"selectConfig.iconPrefix && !showPlaceholder\"\n [iconName]=\"selectConfig.iconPrefix || ''\"\n [disabled]=\"selectConfig.readOnly || false\"\n matPrefix\n >\n </i-tech-icon-button>\n </span>\n </div>\n\n <!-- Placeholder/Selected Value Display -->\n <ng-container *ngIf=\"showPlaceholder && selectConfig.search\">\n <div class=\"custom-placeholder\"\n *ngIf=\"(!ngControl?.value && !ngControl?.value?.length) ||\n (selectConfig.multiple && ngControl?.value && !ngControl?.value?.length)\"\n [ngClass]=\"selectConfig.readOnly || ngControl.control.disabled ? 'readonly-color' : 'default-form-icon-color'\"\n >\n {{ ((selectConfig.placeholder || '') | translate) }}\n </div>\n <div class=\"custom-placeholder custom-value ellipsis\"\n [ngClass]=\"{\n 'pr-42': selectConfig.iconUrl,\n 'readonly-color': selectConfig.readOnly || ngControl.control.disabled,\n 'default-form-icon-color': !(selectConfig.readOnly || ngControl.control.disabled)\n }\"\n *ngIf=\"ngControl?.value\"\n >\n {{ selectConfig?.multiple ? (ngControl.value | arrayToString) : showingValue }}\n </div>\n </ng-container>\n\n <!-- Custom Icon -->\n <img class=\"left_icon_new pointer\"\n (click)=\"iconClick(matSelect, searchInput)\"\n *ngIf=\"!selectConfig.matIconName && (selectConfig.iconUrl || selectConfig.activeStateIconUrl)\"\n [src]=\"'assets/images/icons/global/' + (ngControl.control?.value && selectConfig?.activeStateIconUrl ? selectConfig.activeStateIconUrl : selectConfig.iconUrl)\">\n\n <mat-form-field appearance=\"outline\" class=\"w-100\" (click)=\"selectConfig?.search ? focusSearchInput() : null\">\n <!-- Material Select -->\n <mat-select #matSelect=\"matSelect\"\n [panelClass]=\"'autocomplete-transform-panel-location'\"\n [attr.aria-placeholder]=\"(selectConfig.placeholder || '') | translate\"\n [aria-label]=\"selectConfig.label | translate\"\n [id]=\"selectConfig.filtrationKey || ''\"\n (opened)=\"registerPanelScrollEvent(matSelect)\"\n (openedChange)=\"openedChange($event)\"\n [formControl]=\"ngControl.control\"\n [multiple]=\"selectConfig.multiple\"\n (selectionChange)=\"emitSelectionChangeAndClose($event)\"\n [errorStateMatcher]=\"customErrorStateMatcher\"\n [placeholder]=\"(selectConfig.placeholder || '') | translate\"\n [disabled]=\"ngControl.control.disabled\"\n >\n\n <!-- Loading State -->\n <mat-option *ngIf=\"pending\" class=\"option_loading relative\">\n <div class=\"request_loading\">\n <img ngSrc=\"./loader.svg\" alt=\"\" height=\"200\" width=\"200\"/>\n </div>\n </mat-option>\n\n <!-- Options -->\n <ng-container *ngIf=\"data?.length && !pending\">\n <!-- Add New Option -->\n <mat-option *ngIf=\"selectConfig.actions\"\n class=\"pointer add_new\"\n disabled\n (click)=\"closePanelAndUnsetFocus();addNewItemEvent()\">\n <!-- (click)=\"ngControl.control.reset(null);matSelect._onBlur();closePanelAndUnsetFocus();addNewItemEvent()\">-->\n <i-tech-button\n [type]=\"ButtonType.OUTLINE\"\n [fontIcon]=\"'add'\"\n [text]=\"('dropdown_add_item' | translate : {INPUT_NAME: (selectConfig.label | translate)}) \"\n [customClass]=\"'w-100 mat-autocomplete-select-button'\">\n </i-tech-button>\n </mat-option>\n\n <!-- Regular Options -->\n <ng-container *ngIf=\"!selectConfig?.changeText && data.length\">\n <mat-option *ngFor=\"let item of data\"\n [value]=\"selectConfig.valueByKey | getValueByKeyFromObject : item\"\n (mouseup)=\"optionClick(item)\"\n (mousedown)=\"preventDefault($event)\">\n {{ ((selectConfig.valueToShowByKey | getValueByKeyFromObject : item : selectConfig.valueToShowByParam : selectConfig.withParamSymbol) || '') | translate }}\n </mat-option>\n </ng-container>\n\n <!-- Custom Text Options -->\n <ng-container *ngIf=\"selectConfig?.changeText && data.length\">\n <mat-option *ngFor=\"let item of data\"\n [value]=\"selectConfig.valueByKey | getValueByKeyFromObject : item\"\n (mouseup)=\"optionClick(item)\"\n (mousedown)=\"preventDefault($event)\"\n [disabled]=\"selectConfig?.changeText[item].disabled\">\n {{ selectConfig?.changeText[item].text | translate }}\n </mat-option>\n </ng-container>\n </ng-container>\n\n <!-- Empty State -->\n <ng-container *ngIf=\"!pending && !data.length\">\n <mat-option disabled class=\"empty_selection_state\">\n <div class=\"actions_and_tile add_new flex_column w-100 flex_center_align_center\">\n <span>{{ 'dropdown_no_items' | translate }}</span>\n <div class=\"mt-10\">\n <i-tech-button\n *ngIf=\"selectConfig?.actions\"\n [type]=\"ButtonType.OUTLINE\"\n (buttonClick)=\"closePanelAndUnsetFocus();addNewItemEvent()\"\n [customClass]=\"'mat-autocomplete-select-button'\"\n [fontIcon]=\"'add'\"\n [text]=\"('dropdown_add_item' | translate : {INPUT_NAME: (selectConfig.label | translate)}) \">\n </i-tech-button>\n </div>\n </div>\n </mat-option>\n </ng-container>\n </mat-select>\n <mat-icon *ngIf=\"selectConfig.iconPrefix\"\n matPrefix\n [ngClass]=\"{\n 'readonly-color' : !selectConfig['iconPrefixColor'] && (selectConfig.readOnly || ngControl.control.disabled),\n 'default-form-icon-color' : !selectConfig['iconPrefixColor'] && !(selectConfig.readOnly || ngControl.control.disabled)\n }\"\n [matTooltip]=\"((selectConfig?.['iconPrefixTooltip'] || '') | translate)\"\n >{{ selectConfig.iconPrefix }}\n </mat-icon>\n\n <mat-icon *ngIf=\"selectConfig['iconPrefixSvg']\"\n matPrefix\n [matTooltip]=\"((selectConfig?.['iconPrefixTooltip'] || '') | translate)\"\n [svgIcon]=\"selectConfig['iconPrefixSvg'] || ''\"\n ></mat-icon>\n\n <i-tech-icon-button\n *ngIf=\"selectConfig.search && selectConfig.clearable && !ngControl.control.disabled && !!ngControl.control.value\"\n iconName=\"cancel\"\n matSuffix\n [disabled]=\"selectConfig.readOnly || false\"\n [ngClass]=\"selectConfig.readOnly || ngControl.control.disabled ? 'readonly-color' : 'default-form-icon-color'\"\n (click)=\"$event.stopPropagation();$event.preventDefault();ngControl.control.reset(null);matSelect._onBlur();closePanelAndUnsetFocus()\"\n >\n </i-tech-icon-button>\n <mat-icon\n matSuffix\n class=\"select-arrow\"\n [class.open]=\"matSelect.panelOpen\"\n [ngClass]=\"{\n 'readonly-color': selectConfig.readOnly || ngControl.control.disabled,\n 'default-form-icon-color': !(selectConfig.readOnly || ngControl.control.disabled),\n 'mt-8': !!ngControl.control.value && selectConfig.clearable\n }\"\n >\n keyboard_arrow_down\n </mat-icon>\n <!-- Error Message -->\n <mat-error *ngIf=\"!!(ngControl.control.errors && submitValue)\">\n {{ ngControl.control | generateErrorMessages : selectConfig.label : selectConfig.defaultPatternKey }}\n </mat-error>\n </mat-form-field>\n\n <!-- Reset Button -->\n <i-tech-clear-value *ngIf=\"selectConfig.reset\" (reset)=\"resetValue()\"></i-tech-clear-value>\n</div>\n", styles: [".left_icon_new{position:absolute;right:2px;top:1px}::ng-deep .request_loading{width:40px;height:40px;background-color:#fff!important}::ng-deep .request_loading:hover{background-color:var(--primary99)!important}::ng-deep .request_loading:focus{background-color:var(--primary99)!important}::ng-deep .request_loading img{position:absolute;left:50%;top:50%;width:100%;height:100%;transform:translate(-50%,-50%)}::ng-deep .mat-mdc-option.add_new{opacity:1!important;pointer-events:auto!important}::ng-deep .mat-mdc-option.add_new .mat-pseudo-checkbox{display:none!important}::ng-deep .mat-mdc-option.add_new .mdc-list-item__primary-text{display:inline-block!important;width:100%!important}::ng-deep .mat-mdc-option.add_new span{color:unset!important;font-size:unset!important;margin:unset!important;opacity:1!important}@media (min-width: 1920px) and (max-width: 2500px){.mat-autocomplete{height:90px!important}}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "component", type: IconButtonComponent, selector: "i-tech-icon-button", inputs: ["size", "type", "iconSvg", "iconName", "tooltip", "disabled"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i4.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i4.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i5.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"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i6.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: ButtonComponent, selector: "i-tech-button", inputs: ["text", "data_cy", "fontIcon", "svgIcon", "type", "customClass", "submit", "disabled", "activated", "color"], outputs: ["buttonClick"] }, { kind: "pipe", type: GetValueByKeyFromObjectPipe, name: "getValueByKeyFromObject" }, { kind: "pipe", type: ArrayToStringPipe, name: "arrayToString" }, { kind: "directive", type: NgOptimizedImage, selector: "img[ngSrc]", inputs: ["ngSrc", "ngSrcset", "sizes", "width", "height", "loading", "priority", "loaderParams", "disableOptimizedSrcset", "fill", "placeholder", "placeholderConfig", "src", "srcset"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: GenerateErrorMessagesPipe, name: "generateErrorMessages" }, { kind: "component", type: ClearValueComponent, selector: "i-tech-clear-value", inputs: ["className", "additionalClass"], outputs: ["reset"] }, { kind: "ngmodule", type: MatFormFieldModule }] }); }
|
|
363
363
|
}
|
|
364
364
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AutocompleteSelectComponent, decorators: [{
|
|
365
365
|
type: Component,
|
|
@@ -380,7 +380,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
380
380
|
GenerateErrorMessagesPipe,
|
|
381
381
|
ClearValueComponent,
|
|
382
382
|
MatFormFieldModule
|
|
383
|
-
], standalone: true, template: "<div class=\"new-mat-autocomplete\" id=\"mat_autocomplete\"\r\n [ngClass]=\"{\r\n 'mat-select-without_icon': !selectConfig.iconUrl && !selectConfig.activeStateIconUrl,\r\n 'mat-select-with-search': selectConfig.search,\r\n 'without-label': selectConfig.hideLabel,\r\n 'invalid_field': ngControl.control.errors && submitValue,\r\n 'readonly-field': selectConfig.readOnly || ngControl.control.disabled\r\n }\"\r\n [matTooltip]=\"(selectConfig.hover && !ngControl.control.disabled ? ((selectConfig.hover || '') | translate) : '')\"\r\n [matTooltipClass]=\"'mat-mdc-tooltip big-td-mat-tooltip'\"\r\n [matTooltipPosition]=\"'above'\"\r\n *ngIf=\"selectConfig && ngControl\">\r\n\r\n <div class=\"w-100\" *ngIf=\"!selectConfig.hideLabel\">\r\n <mat-label [ngClass]=\"{\r\n 'readonly-color' : selectConfig.readOnly || ngControl.control.disabled,\r\n 'invalid-label-color': !!(ngControl.control.errors && submitValue)\r\n }\">\r\n {{ selectConfig.label | translate }}\r\n </mat-label>\r\n <span *ngIf=\"selectConfig.required\" class=\"required-input\"\r\n [ngClass]=\"{'readonly-color' : ngControl.control.disabled}\">*</span>\r\n </div>\r\n\r\n\r\n <!-- Search Input -->\r\n <div class=\"search-input w-100\"\r\n (click)=\"$event.stopPropagation();$event.preventDefault()\"\r\n [ngClass]=\"{ hide_input_placeholder: showPlaceholder || ngControl.control.disabled }\"\r\n *ngIf=\"selectConfig.search\"\r\n >\r\n <input autocomplete=\"off\"\r\n id=\"searchInput\"\r\n type=\"text\"\r\n [ngClass]=\"{'pr-25': !selectConfig.iconUrl}\"\r\n #searchInput\r\n [disabled]=\"ngControl.control.disabled || selectConfig.hover\"\r\n [placeholder]=\"(ngControl.control.disabled || selectConfig.hover) ? '' : 'Search'\"\r\n (focusout)=\"inputFocusOut()\"\r\n (focus)=\"openSelection()\"\r\n (keydown)=\"$event.stopPropagation()\"\r\n (keyup)=\"getDataWithSearch(searchInput.value,$event)\">\r\n\r\n <!-- Search Icon -->\r\n <span class=\"search-icon\">\r\n <i-tech-icon-button\r\n class=\"mr-10\"\r\n [ngClass]=\"selectConfig.readOnly || ngControl.control.disabled ? 'readonly-color' : 'default-form-icon-color'\"\r\n *ngIf=\"selectConfig.iconPrefix && !showPlaceholder\"\r\n [iconName]=\"selectConfig.iconPrefix || ''\"\r\n [disabled]=\"selectConfig.readOnly || false\"\r\n matPrefix\r\n >\r\n </i-tech-icon-button>\r\n </span>\r\n </div>\r\n\r\n <!-- Placeholder/Selected Value Display -->\r\n <ng-container *ngIf=\"showPlaceholder && selectConfig.search\">\r\n <div class=\"custom-placeholder\"\r\n *ngIf=\"(!ngControl?.value && !ngControl?.value?.length) ||\r\n (selectConfig.multiple && ngControl?.value && !ngControl?.value?.length)\"\r\n [ngClass]=\"selectConfig.readOnly || ngControl.control.disabled ? 'readonly-color' : 'default-form-icon-color'\"\r\n >\r\n {{ ((selectConfig.placeholder || '') | translate) }}\r\n </div>\r\n <div class=\"custom-placeholder custom-value ellipsis\"\r\n [ngClass]=\"{\r\n 'pr-42': selectConfig.iconUrl,\r\n 'readonly-color': selectConfig.readOnly || ngControl.control.disabled,\r\n 'default-form-icon-color': !(selectConfig.readOnly || ngControl.control.disabled)\r\n }\"\r\n *ngIf=\"ngControl?.value\"\r\n >\r\n {{ selectConfig?.multiple ? (ngControl.value | arrayToString) : showingValue }}\r\n </div>\r\n </ng-container>\r\n\r\n <!-- Custom Icon -->\r\n <img class=\"left_icon_new pointer\"\r\n (click)=\"iconClick(matSelect, searchInput)\"\r\n *ngIf=\"!selectConfig.matIconName && (selectConfig.iconUrl || selectConfig.activeStateIconUrl)\"\r\n [src]=\"'assets/images/icons/global/' + (ngControl.control?.value && selectConfig?.activeStateIconUrl ? selectConfig.activeStateIconUrl : selectConfig.iconUrl)\">\r\n\r\n <mat-form-field appearance=\"outline\" class=\"w-100\" (click)=\"selectConfig?.search ? focusSearchInput() : null\">\r\n <!-- Material Select -->\r\n <mat-select #matSelect=\"matSelect\"\r\n [panelClass]=\"'autocomplete-transform-panel-location'\"\r\n [attr.aria-placeholder]=\"(selectConfig.placeholder || '') | translate\"\r\n [aria-label]=\"selectConfig.label | translate\"\r\n [id]=\"selectConfig.filtrationKey || ''\"\r\n (opened)=\"registerPanelScrollEvent(matSelect)\"\r\n (openedChange)=\"openedChange($event)\"\r\n [formControl]=\"ngControl.control\"\r\n [multiple]=\"selectConfig.multiple\"\r\n (selectionChange)=\"emitSelectionChangeAndClose($event)\"\r\n [errorStateMatcher]=\"customErrorStateMatcher\"\r\n [placeholder]=\"(selectConfig.placeholder || '') | translate\"\r\n [disabled]=\"ngControl.control.disabled\"\r\n >\r\n\r\n <!-- Loading State -->\r\n <mat-option *ngIf=\"pending\" class=\"option_loading relative\">\r\n <div class=\"request_loading\">\r\n <img ngSrc=\"./loader.svg\" alt=\"\" height=\"200\" width=\"200\"/>\r\n </div>\r\n </mat-option>\r\n\r\n <!-- Options -->\r\n <ng-container *ngIf=\"data?.length && !pending\">\r\n <!-- Add New Option -->\r\n <mat-option *ngIf=\"selectConfig.actions\"\r\n class=\"pointer add_new\"\r\n disabled\r\n (click)=\"closePanelAndUnsetFocus();addNewItemEvent()\">\r\n <!-- (click)=\"ngControl.control.reset(null);matSelect._onBlur();closePanelAndUnsetFocus();addNewItemEvent()\">-->\r\n <i-tech-button\r\n [type]=\"ButtonType.OUTLINE\"\r\n [fontIcon]=\"'add'\"\r\n [text]=\"('dropdown_add_item' | translate : {INPUT_NAME: (selectConfig.label | translate)}) \"\r\n [customClass]=\"'w-100 mat-autocomplete-select-button'\">\r\n </i-tech-button>\r\n </mat-option>\r\n\r\n <!-- Regular Options -->\r\n <ng-container *ngIf=\"!selectConfig?.changeText && data.length\">\r\n <mat-option *ngFor=\"let item of data\"\r\n [value]=\"selectConfig.valueByKey | getValueByKeyFromObject : item\"\r\n (mouseup)=\"optionClick(item)\"\r\n (mousedown)=\"preventDefault($event)\">\r\n {{ ((selectConfig.valueToShowByKey | getValueByKeyFromObject : item : selectConfig.valueToShowByParam : selectConfig.withParamSymbol) || '') | translate }}\r\n </mat-option>\r\n </ng-container>\r\n\r\n <!-- Custom Text Options -->\r\n <ng-container *ngIf=\"selectConfig?.changeText && data.length\">\r\n <mat-option *ngFor=\"let item of data\"\r\n [value]=\"selectConfig.valueByKey | getValueByKeyFromObject : item\"\r\n (mouseup)=\"optionClick(item)\"\r\n (mousedown)=\"preventDefault($event)\"\r\n [disabled]=\"selectConfig?.changeText[item].disabled\">\r\n {{ selectConfig?.changeText[item].text | translate }}\r\n </mat-option>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- Empty State -->\r\n <ng-container *ngIf=\"!pending && !data.length\">\r\n <mat-option disabled class=\"empty_selection_state\">\r\n <div class=\"actions_and_tile add_new flex_column w-100 flex_center_align_center\">\r\n <span>{{ 'dropdown_no_items' | translate }}</span>\r\n <div class=\"mt-10\">\r\n <i-tech-button\r\n *ngIf=\"selectConfig?.actions\"\r\n [type]=\"ButtonType.OUTLINE\"\r\n (buttonClick)=\"closePanelAndUnsetFocus();addNewItemEvent()\"\r\n [customClass]=\"'mat-autocomplete-select-button'\"\r\n [fontIcon]=\"'add'\"\r\n [text]=\"('dropdown_add_item' | translate : {INPUT_NAME: (selectConfig.label | translate)}) \">\r\n </i-tech-button>\r\n </div>\r\n </div>\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n <mat-icon *ngIf=\"selectConfig.iconPrefix\"\r\n matPrefix\r\n [ngClass]=\"{\r\n 'readonly-color' : !selectConfig['iconPrefixColor'] && (selectConfig.readOnly || ngControl.control.disabled),\r\n 'default-form-icon-color' : !selectConfig['iconPrefixColor'] && !(selectConfig.readOnly || ngControl.control.disabled)\r\n }\"\r\n [matTooltip]=\"((selectConfig?.['iconPrefixTooltip'] || '') | translate)\"\r\n >{{ selectConfig.iconPrefix }}\r\n </mat-icon>\r\n\r\n <mat-icon *ngIf=\"selectConfig['iconPrefixSvg']\"\r\n matPrefix\r\n [matTooltip]=\"((selectConfig?.['iconPrefixTooltip'] || '') | translate)\"\r\n [svgIcon]=\"selectConfig['iconPrefixSvg'] || ''\"\r\n ></mat-icon>\r\n\r\n <i-tech-icon-button\r\n *ngIf=\"selectConfig.search && selectConfig.clearable && !ngControl.control.disabled && !!ngControl.control.value\"\r\n iconName=\"cancel\"\r\n matSuffix\r\n [disabled]=\"selectConfig.readOnly || false\"\r\n [ngClass]=\"selectConfig.readOnly || ngControl.control.disabled ? 'readonly-color' : 'default-form-icon-color'\"\r\n (click)=\"$event.stopPropagation();$event.preventDefault();ngControl.control.reset(null);matSelect._onBlur();closePanelAndUnsetFocus()\"\r\n >\r\n </i-tech-icon-button>\r\n <mat-icon\r\n matSuffix\r\n class=\"select-arrow\"\r\n [class.open]=\"matSelect.panelOpen\"\r\n [ngClass]=\"{\r\n 'readonly-color': selectConfig.readOnly || ngControl.control.disabled,\r\n 'default-form-icon-color': !(selectConfig.readOnly || ngControl.control.disabled),\r\n 'mt-8': !!ngControl.control.value && selectConfig.clearable\r\n }\"\r\n >\r\n keyboard_arrow_down\r\n </mat-icon>\r\n <!-- Error Message -->\r\n <mat-error *ngIf=\"!!(ngControl.control.errors && submitValue)\">\r\n {{ ngControl.control | generateErrorMessages : selectConfig.label : selectConfig.defaultPatternKey }}\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n <!-- Reset Button -->\r\n <i-tech-clear-value *ngIf=\"selectConfig.reset\" (reset)=\"resetValue()\"></i-tech-clear-value>\r\n</div>\r\n", styles: [".left_icon_new{position:absolute;right:2px;top:1px}::ng-deep .request_loading{width:40px;height:40px;background-color:#fff!important}::ng-deep .request_loading:hover{background-color:var(--primary99)!important}::ng-deep .request_loading:focus{background-color:var(--primary99)!important}::ng-deep .request_loading img{position:absolute;left:50%;top:50%;width:100%;height:100%;transform:translate(-50%,-50%)}::ng-deep .mat-mdc-option.add_new{opacity:1!important;pointer-events:auto!important}::ng-deep .mat-mdc-option.add_new .mat-pseudo-checkbox{display:none!important}::ng-deep .mat-mdc-option.add_new .mdc-list-item__primary-text{display:inline-block!important;width:100%!important}::ng-deep .mat-mdc-option.add_new span{color:unset!important;font-size:unset!important;margin:unset!important;opacity:1!important}@media (min-width: 1920px) and (max-width: 2500px){.mat-autocomplete{height:90px!important}}\n"] }]
|
|
383
|
+
], standalone: true, template: "<div class=\"new-mat-autocomplete\" id=\"mat_autocomplete\"\n [ngClass]=\"{\n 'mat-select-without_icon': !selectConfig.iconUrl && !selectConfig.activeStateIconUrl,\n 'mat-select-with-search': selectConfig.search,\n 'without-label': selectConfig.hideLabel,\n 'invalid_field': ngControl.control.errors && submitValue,\n 'readonly-field': selectConfig.readOnly || ngControl.control.disabled\n }\"\n [matTooltip]=\"(selectConfig.hover && !ngControl.control.disabled ? ((selectConfig.hover || '') | translate) : '')\"\n [matTooltipClass]=\"'mat-mdc-tooltip big-td-mat-tooltip'\"\n [matTooltipPosition]=\"'above'\"\n *ngIf=\"selectConfig && ngControl\">\n\n <div class=\"w-100\" *ngIf=\"!selectConfig.hideLabel\">\n <mat-label [ngClass]=\"{\n 'readonly-color' : selectConfig.readOnly || ngControl.control.disabled,\n 'invalid-label-color': !!(ngControl.control.errors && submitValue)\n }\">\n {{ selectConfig.label | translate }}\n </mat-label>\n <span *ngIf=\"selectConfig.required\" class=\"required-input\"\n [ngClass]=\"{'readonly-color' : ngControl.control.disabled}\">*</span>\n </div>\n\n\n <!-- Search Input -->\n <div class=\"search-input w-100\"\n (click)=\"$event.stopPropagation();$event.preventDefault()\"\n [ngClass]=\"{ hide_input_placeholder: showPlaceholder || ngControl.control.disabled }\"\n *ngIf=\"selectConfig.search\"\n >\n <input autocomplete=\"off\"\n id=\"searchInput\"\n type=\"text\"\n [ngClass]=\"{'pr-25': !selectConfig.iconUrl}\"\n #searchInput\n [disabled]=\"ngControl.control.disabled || selectConfig.hover\"\n [placeholder]=\"(ngControl.control.disabled || selectConfig.hover) ? '' : 'Search'\"\n (focusout)=\"inputFocusOut()\"\n (focus)=\"openSelection()\"\n (keydown)=\"$event.stopPropagation()\"\n (keyup)=\"getDataWithSearch(searchInput.value,$event)\">\n\n <!-- Search Icon -->\n <span class=\"search-icon\">\n <i-tech-icon-button\n class=\"mr-10\"\n [ngClass]=\"selectConfig.readOnly || ngControl.control.disabled ? 'readonly-color' : 'default-form-icon-color'\"\n *ngIf=\"selectConfig.iconPrefix && !showPlaceholder\"\n [iconName]=\"selectConfig.iconPrefix || ''\"\n [disabled]=\"selectConfig.readOnly || false\"\n matPrefix\n >\n </i-tech-icon-button>\n </span>\n </div>\n\n <!-- Placeholder/Selected Value Display -->\n <ng-container *ngIf=\"showPlaceholder && selectConfig.search\">\n <div class=\"custom-placeholder\"\n *ngIf=\"(!ngControl?.value && !ngControl?.value?.length) ||\n (selectConfig.multiple && ngControl?.value && !ngControl?.value?.length)\"\n [ngClass]=\"selectConfig.readOnly || ngControl.control.disabled ? 'readonly-color' : 'default-form-icon-color'\"\n >\n {{ ((selectConfig.placeholder || '') | translate) }}\n </div>\n <div class=\"custom-placeholder custom-value ellipsis\"\n [ngClass]=\"{\n 'pr-42': selectConfig.iconUrl,\n 'readonly-color': selectConfig.readOnly || ngControl.control.disabled,\n 'default-form-icon-color': !(selectConfig.readOnly || ngControl.control.disabled)\n }\"\n *ngIf=\"ngControl?.value\"\n >\n {{ selectConfig?.multiple ? (ngControl.value | arrayToString) : showingValue }}\n </div>\n </ng-container>\n\n <!-- Custom Icon -->\n <img class=\"left_icon_new pointer\"\n (click)=\"iconClick(matSelect, searchInput)\"\n *ngIf=\"!selectConfig.matIconName && (selectConfig.iconUrl || selectConfig.activeStateIconUrl)\"\n [src]=\"'assets/images/icons/global/' + (ngControl.control?.value && selectConfig?.activeStateIconUrl ? selectConfig.activeStateIconUrl : selectConfig.iconUrl)\">\n\n <mat-form-field appearance=\"outline\" class=\"w-100\" (click)=\"selectConfig?.search ? focusSearchInput() : null\">\n <!-- Material Select -->\n <mat-select #matSelect=\"matSelect\"\n [panelClass]=\"'autocomplete-transform-panel-location'\"\n [attr.aria-placeholder]=\"(selectConfig.placeholder || '') | translate\"\n [aria-label]=\"selectConfig.label | translate\"\n [id]=\"selectConfig.filtrationKey || ''\"\n (opened)=\"registerPanelScrollEvent(matSelect)\"\n (openedChange)=\"openedChange($event)\"\n [formControl]=\"ngControl.control\"\n [multiple]=\"selectConfig.multiple\"\n (selectionChange)=\"emitSelectionChangeAndClose($event)\"\n [errorStateMatcher]=\"customErrorStateMatcher\"\n [placeholder]=\"(selectConfig.placeholder || '') | translate\"\n [disabled]=\"ngControl.control.disabled\"\n >\n\n <!-- Loading State -->\n <mat-option *ngIf=\"pending\" class=\"option_loading relative\">\n <div class=\"request_loading\">\n <img ngSrc=\"./loader.svg\" alt=\"\" height=\"200\" width=\"200\"/>\n </div>\n </mat-option>\n\n <!-- Options -->\n <ng-container *ngIf=\"data?.length && !pending\">\n <!-- Add New Option -->\n <mat-option *ngIf=\"selectConfig.actions\"\n class=\"pointer add_new\"\n disabled\n (click)=\"closePanelAndUnsetFocus();addNewItemEvent()\">\n <!-- (click)=\"ngControl.control.reset(null);matSelect._onBlur();closePanelAndUnsetFocus();addNewItemEvent()\">-->\n <i-tech-button\n [type]=\"ButtonType.OUTLINE\"\n [fontIcon]=\"'add'\"\n [text]=\"('dropdown_add_item' | translate : {INPUT_NAME: (selectConfig.label | translate)}) \"\n [customClass]=\"'w-100 mat-autocomplete-select-button'\">\n </i-tech-button>\n </mat-option>\n\n <!-- Regular Options -->\n <ng-container *ngIf=\"!selectConfig?.changeText && data.length\">\n <mat-option *ngFor=\"let item of data\"\n [value]=\"selectConfig.valueByKey | getValueByKeyFromObject : item\"\n (mouseup)=\"optionClick(item)\"\n (mousedown)=\"preventDefault($event)\">\n {{ ((selectConfig.valueToShowByKey | getValueByKeyFromObject : item : selectConfig.valueToShowByParam : selectConfig.withParamSymbol) || '') | translate }}\n </mat-option>\n </ng-container>\n\n <!-- Custom Text Options -->\n <ng-container *ngIf=\"selectConfig?.changeText && data.length\">\n <mat-option *ngFor=\"let item of data\"\n [value]=\"selectConfig.valueByKey | getValueByKeyFromObject : item\"\n (mouseup)=\"optionClick(item)\"\n (mousedown)=\"preventDefault($event)\"\n [disabled]=\"selectConfig?.changeText[item].disabled\">\n {{ selectConfig?.changeText[item].text | translate }}\n </mat-option>\n </ng-container>\n </ng-container>\n\n <!-- Empty State -->\n <ng-container *ngIf=\"!pending && !data.length\">\n <mat-option disabled class=\"empty_selection_state\">\n <div class=\"actions_and_tile add_new flex_column w-100 flex_center_align_center\">\n <span>{{ 'dropdown_no_items' | translate }}</span>\n <div class=\"mt-10\">\n <i-tech-button\n *ngIf=\"selectConfig?.actions\"\n [type]=\"ButtonType.OUTLINE\"\n (buttonClick)=\"closePanelAndUnsetFocus();addNewItemEvent()\"\n [customClass]=\"'mat-autocomplete-select-button'\"\n [fontIcon]=\"'add'\"\n [text]=\"('dropdown_add_item' | translate : {INPUT_NAME: (selectConfig.label | translate)}) \">\n </i-tech-button>\n </div>\n </div>\n </mat-option>\n </ng-container>\n </mat-select>\n <mat-icon *ngIf=\"selectConfig.iconPrefix\"\n matPrefix\n [ngClass]=\"{\n 'readonly-color' : !selectConfig['iconPrefixColor'] && (selectConfig.readOnly || ngControl.control.disabled),\n 'default-form-icon-color' : !selectConfig['iconPrefixColor'] && !(selectConfig.readOnly || ngControl.control.disabled)\n }\"\n [matTooltip]=\"((selectConfig?.['iconPrefixTooltip'] || '') | translate)\"\n >{{ selectConfig.iconPrefix }}\n </mat-icon>\n\n <mat-icon *ngIf=\"selectConfig['iconPrefixSvg']\"\n matPrefix\n [matTooltip]=\"((selectConfig?.['iconPrefixTooltip'] || '') | translate)\"\n [svgIcon]=\"selectConfig['iconPrefixSvg'] || ''\"\n ></mat-icon>\n\n <i-tech-icon-button\n *ngIf=\"selectConfig.search && selectConfig.clearable && !ngControl.control.disabled && !!ngControl.control.value\"\n iconName=\"cancel\"\n matSuffix\n [disabled]=\"selectConfig.readOnly || false\"\n [ngClass]=\"selectConfig.readOnly || ngControl.control.disabled ? 'readonly-color' : 'default-form-icon-color'\"\n (click)=\"$event.stopPropagation();$event.preventDefault();ngControl.control.reset(null);matSelect._onBlur();closePanelAndUnsetFocus()\"\n >\n </i-tech-icon-button>\n <mat-icon\n matSuffix\n class=\"select-arrow\"\n [class.open]=\"matSelect.panelOpen\"\n [ngClass]=\"{\n 'readonly-color': selectConfig.readOnly || ngControl.control.disabled,\n 'default-form-icon-color': !(selectConfig.readOnly || ngControl.control.disabled),\n 'mt-8': !!ngControl.control.value && selectConfig.clearable\n }\"\n >\n keyboard_arrow_down\n </mat-icon>\n <!-- Error Message -->\n <mat-error *ngIf=\"!!(ngControl.control.errors && submitValue)\">\n {{ ngControl.control | generateErrorMessages : selectConfig.label : selectConfig.defaultPatternKey }}\n </mat-error>\n </mat-form-field>\n\n <!-- Reset Button -->\n <i-tech-clear-value *ngIf=\"selectConfig.reset\" (reset)=\"resetValue()\"></i-tech-clear-value>\n</div>\n", styles: [".left_icon_new{position:absolute;right:2px;top:1px}::ng-deep .request_loading{width:40px;height:40px;background-color:#fff!important}::ng-deep .request_loading:hover{background-color:var(--primary99)!important}::ng-deep .request_loading:focus{background-color:var(--primary99)!important}::ng-deep .request_loading img{position:absolute;left:50%;top:50%;width:100%;height:100%;transform:translate(-50%,-50%)}::ng-deep .mat-mdc-option.add_new{opacity:1!important;pointer-events:auto!important}::ng-deep .mat-mdc-option.add_new .mat-pseudo-checkbox{display:none!important}::ng-deep .mat-mdc-option.add_new .mdc-list-item__primary-text{display:inline-block!important;width:100%!important}::ng-deep .mat-mdc-option.add_new span{color:unset!important;font-size:unset!important;margin:unset!important;opacity:1!important}@media (min-width: 1920px) and (max-width: 2500px){.mat-autocomplete{height:90px!important}}\n"] }]
|
|
384
384
|
}], ctorParameters: () => [{ type: i1.InputService }], propDecorators: { matSelect: [{
|
|
385
385
|
type: ViewChild,
|
|
386
386
|
args: ['matSelect']
|
|
@@ -406,4 +406,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
406
406
|
type: HostListener,
|
|
407
407
|
args: ['document:visibilitychange']
|
|
408
408
|
}] } });
|
|
409
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWQtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlLXNlbGVjdC9hdXRvY29tcGxldGUtc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9hdXRvY29tcGxldGUtc2VsZWN0L2F1dG9jb21wbGV0ZS1zZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBR0EsWUFBWSxFQUMzQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQVksZUFBZSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFFcEUsT0FBTyxFQUFrQixtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXBFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNoRSxPQUFPLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDckQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSwrQ0FBK0MsQ0FBQztBQUMxRixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxrQ0FB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Q2hCLE9BQU87d0JBQ1AseUJBQXlCO3dCQUN6QixtQkFBbUI7d0JBQ25CLGtCQUFrQjtxQkFDbkIsY0FDVyxJQUFJO2lGQUdVLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDSSxXQUFXO3NCQUFwQyxTQUFTO3VCQUFDLGFBQWE7Z0JBQ2YsU0FBUztzQkFBakIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUlPLE9BQU87c0JBQW5CLEtBQUs7Z0JBbUJHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0ksZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNtQixXQUFXO3NCQUFwQyxTQUFTO3VCQUFDLGFBQWE7Z0JBcUJ4QixzQkFBc0I7c0JBRHJCLFlBQVk7dUJBQUMsMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIENvbXBvbmVudCxcclxuICAgIFZpZXdDaGlsZCxcclxuICAgIElucHV0LFxyXG4gICAgT3V0cHV0LFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgT25DaGFuZ2VzLFxyXG4gICAgU2ltcGxlQ2hhbmdlcyxcclxuICAgIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgQWZ0ZXJWaWV3SW5pdFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge01hdFNlbGVjdCwgTWF0U2VsZWN0TW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0XCI7XHJcbmltcG9ydCB7QXV0b2NvbXBsZXRlQ29uZmlnc0ludGVyZmFjZX0gZnJvbSBcIi4uLy4uL2ludGVyZmFjZXMvYXV0b2NvbXBsZXRlLWNvbmZpZ3MuaW50ZXJmYWNlXCI7XHJcbmltcG9ydCB7Rm9ybUNvbnRyb2xOYW1lLCBSZWFjdGl2ZUZvcm1zTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgSW5wdXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaW5wdXQuc2VydmljZSc7XHJcbmltcG9ydCB7IEJ1dHRvblR5cGUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2J1dHRvbi10eXBlcy5lbnVtJztcclxuaW1wb3J0IHtOZ0NsYXNzLCBOZ0ZvciwgTmdJZiwgTmdPcHRpbWl6ZWRJbWFnZX0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQge01hdFRvb2x0aXB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwXCI7XHJcbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xyXG5pbXBvcnQge0ljb25CdXR0b25Db21wb25lbnR9IGZyb20gXCIuLi9pY29uLWJ1dHRvbi9pY29uLWJ1dHRvbi5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtCdXR0b25Db21wb25lbnR9IGZyb20gXCIuLi9idXR0b24vYnV0dG9uLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge0dldFZhbHVlQnlLZXlGcm9tT2JqZWN0UGlwZX0gZnJvbSBcIi4uLy4uL3BpcGVzL2dldC12YWx1ZS1ieS1rZXktZnJvbS1vYmplY3QucGlwZVwiO1xyXG5pbXBvcnQge0FycmF5VG9TdHJpbmdQaXBlfSBmcm9tIFwiLi4vLi4vcGlwZXMvYXJyYXktdG8tc3RyaW5nLnBpcGVcIjtcclxuaW1wb3J0IHtNYXRJY29ufSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvblwiO1xyXG5pbXBvcnQge0dlbmVyYXRlRXJyb3JNZXNzYWdlc1BpcGV9IGZyb20gXCIuLi8uLi9waXBlcy9nZW5lcmF0ZS1lcnJvci1tZXNzYWdlcy5waXBlXCI7XHJcbmltcG9ydCB7Q2xlYXJWYWx1ZUNvbXBvbmVudH0gZnJvbSBcIi4uL2NsZWFyLXZhbHVlL2NsZWFyLXZhbHVlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge01hdEZvcm1GaWVsZE1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGRcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaS10ZWNoLWF1dG9jb21wbGV0ZS1zZWxlY3QnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hdXRvY29tcGxldGUtc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9hdXRvY29tcGxldGUtc2VsZWN0LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgTmdDbGFzcyxcclxuICAgIE1hdFRvb2x0aXAsXHJcbiAgICBOZ0lmLFxyXG4gICAgTmdGb3IsXHJcbiAgICBUcmFuc2xhdGVNb2R1bGUsXHJcbiAgICBJY29uQnV0dG9uQ29tcG9uZW50LFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIE1hdFNlbGVjdE1vZHVsZSxcclxuICAgIEJ1dHRvbkNvbXBvbmVudCxcclxuICAgIEdldFZhbHVlQnlLZXlGcm9tT2JqZWN0UGlwZSxcclxuICAgIEFycmF5VG9TdHJpbmdQaXBlLFxyXG4gICAgTmdPcHRpbWl6ZWRJbWFnZSxcclxuICAgIE1hdEljb24sXHJcbiAgICBHZW5lcmF0ZUVycm9yTWVzc2FnZXNQaXBlLFxyXG4gICAgQ2xlYXJWYWx1ZUNvbXBvbmVudCxcclxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZVxyXG4gIF0sXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXV0b2NvbXBsZXRlU2VsZWN0Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcclxuICAgIEBWaWV3Q2hpbGQoJ21hdFNlbGVjdCcpIG1hdFNlbGVjdCE6IE1hdFNlbGVjdDtcclxuICAgIEBWaWV3Q2hpbGQoJ3NlYXJjaElucHV0Jykgc2VhcmNoSW5wdXQhOiBFbGVtZW50UmVmO1xyXG4gICAgQElucHV0KCkgY2xhc3NOYW1lITogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgc3VibWl0VmFsdWUhOiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEZvciB3b3JraW5nIGNvbmZpZ3MuXHJcbiAgICovXHJcbiAgICBASW5wdXQoKSBzZXQgY29uZmlncyhkYXRhOiBBdXRvY29tcGxldGVDb25maWdzSW50ZXJmYWNlKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RDb25maWcgPSBkYXRhO1xyXG4gICAgICAgIGlmICghZGF0YSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoKHR5cGVvZiB0aGlzLnNlbGVjdENvbmZpZy5wYWdpbmF0ZSkgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZmlyc3RSZXF1ZXN0KSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5nZXREYXRhKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZmlyc3RSZXF1ZXN0ID0gdHJ1ZVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmRhdGEgPSB0aGlzLnNlbGVjdENvbmZpZy5wYWdpbmF0ZTtcclxuICAgICAgICB0aGlzLmZpbmRBbmRTZXREZWZhdWx0VmFsdWVGcm9tRGF0YSgpO1xyXG4gICAgfTtcclxuXHJcbiAgICBASW5wdXQoKSBkZXRlY3RDaGFuZ2VzITogYm9vbGVhbjtcclxuICAgIEBPdXRwdXQoKSBzZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIEBPdXRwdXQoKSBlbWl0QWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICBAVmlld0NoaWxkKCdhbGxTZWxlY3RlZCcpIGFsbFNlbGVjdGVkITogTWF0U2VsZWN0O1xyXG4gICAgcGVuZGluZyA9IGZhbHNlO1xyXG4gICAgZGVmYXVsdFZhbHVlITogYW55O1xyXG4gICAgZGF0YTogQXJyYXk8YW55PiA9IFtdO1xyXG4gICAgcGFnaW5hdGlvbkRhdGE6IGFueSA9IHtjdXJyZW50OiAxLCBsYXN0OiAwfTtcclxuICAgIG5nQ29udHJvbDogRm9ybUNvbnRyb2xOYW1lO1xyXG4gICAgc2VsZWN0Q29uZmlnITogQXV0b2NvbXBsZXRlQ29uZmlnc0ludGVyZmFjZTtcclxuICAgIGZpcnN0UmVxdWVzdCA9IGZhbHNlO1xyXG4gICAgc2hvd1BsYWNlaG9sZGVyID0gdHJ1ZTtcclxuICAgIGlzTmVlZGVkRm9yUmVjYWxsID0gZmFsc2U7XHJcbiAgICBzaG93aW5nVmFsdWU6IGFueTtcclxuICAgIHNlYXJjaFRpbWVvdXRJZDogYW55O1xyXG4gICAgdGFiVmlzaWJpbGl0eSE6IGJvb2xlYW47XHJcbiAgICBhY2Nlc3NUb05leHRSZXF1ZXN0ID0gdHJ1ZTtcclxuICAgIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgICBibG9ja1JlY2FsbERlZmF1bHRWYWx1ZVNldHRlciA9IGZhbHNlO1xyXG4gICAgYmFzZURhdGE6IGFueTtcclxuICAgIHJlcXVlc3RMb2FkaW5nID0gZmFsc2U7XHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgQnV0dG9uVHlwZSA9IEJ1dHRvblR5cGU7XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6dmlzaWJpbGl0eWNoYW5nZScpXHJcbiAgICBoYW5kbGVWaXNpYmlsaXR5Q2hhbmdlKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudGFiVmlzaWJpbGl0eSA9ICFkb2N1bWVudC5oaWRkZW47XHJcbiAgICAgICAgaWYgKHRoaXMubmdDb250cm9sLmNvbnRyb2wudmFsdWUpIHsgcmV0dXJuO31cclxuICAgICAgICB0aGlzLmNsb3NlUGFuZWxBbmRVbnNldEZvY3VzKCk7XHJcbiAgICAgICAgaWYgKCFkb2N1bWVudC5oaWRkZW4pIHtcclxuICAgICAgICAgICAgdGhpcy5pc05lZWRlZEZvclJlY2FsbCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMucGVuZGluZyA9IHRydWU7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wZW5kaW5nID0gZmFsc2VcclxuICAgICAgICAgICAgfSwgNDAwMClcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBpbnB1dFNlcnZpY2U6IElucHV0U2VydmljZSkge1xyXG4gICAgICAgIHRoaXMubmdDb250cm9sID0gdGhpcy5pbnB1dFNlcnZpY2UuaW5qZWN0TmdDb250cm9sKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgICAgIGlmIChjaGFuZ2VzWydzZWxlY3RDb25maWcnXSAmJiB0aGlzLnNlbGVjdENvbmZpZykge1xyXG4gICAgICAgICAgICBpZiAoKHR5cGVvZiB0aGlzLnNlbGVjdENvbmZpZy5wYWdpbmF0ZSkgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0RGF0YSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgICAgICB0aGlzLm5nQ29udHJvbC5jb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmRhdGEubGVuZ3RoICYmIHJlcyAmJiAhdGhpcy5ibG9ja1JlY2FsbERlZmF1bHRWYWx1ZVNldHRlcikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5maW5kQW5kU2V0RGVmYXVsdFZhbHVlRnJvbURhdGEoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgaGFyZFJlbG9hZCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmdldERhdGEoJycsIHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAvKipcclxuICAgKiBEeW5hbWljIHJlcXVlc3QgZm9yIHNlbGVjdCBkYXRhLlxyXG4gICAqIEBwYXJhbSBzZWFyY2hUZXh0IC0gVGhlIGlucHV0IHZhbHVlIHRvIHNlYXJjaCBvcHRpb25zIGJ5LlxyXG4gICAqIEBwYXJhbSBmcm9tU2VhcmNoIC0gQWNjZXNzIGZvciBzZWFyY2ggLlxyXG4gICAqIEByZXR1cm5zIFNlbGVjdCBkYXRhLlxyXG4gICAqL1xyXG4gICAgZ2V0RGF0YShzZWFyY2hUZXh0Pzogc3RyaW5nLCBmcm9tU2VhcmNoPzogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIGlmICghZnJvbVNlYXJjaCAmJiAhdGhpcy5hY2Nlc3NUb05leHRSZXF1ZXN0KSB7IHJldHVybjsgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5yZXF1ZXN0TG9hZGluZykgeyByZXR1cm47IH1cclxuXHJcbiAgICAgICAgaWYgKGZyb21TZWFyY2gpIHtcclxuICAgICAgICAgICAgdGhpcy5wYWdpbmF0aW9uRGF0YS5jdXJyZW50ID0gMTtcclxuICAgICAgICAgICAgdGhpcy5hY2Nlc3NUb05leHRSZXF1ZXN0ID0gdHJ1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGZ1bmN0aW9uVG9EbyA9IHRoaXMuc2VsZWN0Q29uZmlnLnBhZ2luYXRlKHRoaXMucGFnaW5hdGlvbkRhdGEuY3VycmVudCwgc2VhcmNoVGV4dCk7XHJcblxyXG4gICAgICAgIHRoaXMucmVxdWVzdExvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgIGZ1bmN0aW9uVG9Ebz8uc3Vic2NyaWJlKChkYXRhOiBBcnJheTxhbnk+IHwgYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRhdGFUb0FkZCA9ICgnY29udGVudCcgaW4gZGF0YSkgPyBkYXRhLmNvbnRlbnQgOiBkYXRhO1xyXG5cclxuICAgICAgICAgICAgaWYgKCdjb250ZW50JyBpbiBkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFjY2Vzc1RvTmV4dFJlcXVlc3QgPSAhZGF0YS5sYXN0IHx8IChkYXRhLnRvdGFsUGFnZXMgPiB0aGlzLnBhZ2luYXRpb25EYXRhLmN1cnJlbnQpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLmRhdGEgPSAoZnJvbVNlYXJjaCB8fCB0aGlzLnNlbGVjdENvbmZpZz8uYmxvY2tQYWdpbmF0aW9uKSA/IGRhdGFUb0FkZCA6IFsuLi50aGlzLmRhdGEsIC4uLmRhdGFUb0FkZF07XHJcbiAgICAgICAgICAgIHRoaXMucGVuZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnJlcXVlc3RMb2FkaW5nID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgICBpZiAoIWRhdGFUb0FkZC5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucGFnaW5hdGlvbkRhdGEubGFzdCA9IHRoaXMucGFnaW5hdGlvbkRhdGEuY3VycmVudDtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5wYWdpbmF0aW9uRGF0YS5jdXJyZW50ICs9IDE7XHJcbiAgICAgICAgICAgIHRoaXMucGFnaW5hdGlvbkRhdGEubGFzdCArPSAxO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZmluZEFuZFNldERlZmF1bHRWYWx1ZUZyb21EYXRhKCk7XHJcbiAgICAgICAgICAgIH0sMTApXHJcbiAgICAgICAgfSwgKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBlbmRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5yZXF1ZXN0TG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgZmluZEFuZFNldERlZmF1bHRWYWx1ZUZyb21EYXRhKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdENvbmZpZy5tdWx0aXBsZSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wudmFsdWUgJiYgdGhpcy5uZ0NvbnRyb2wudmFsdWUubGVuZ3RoID09IDEpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0U2hvd2luZ1ZhbHVlKHRoaXMuZGF0YS5maW5kKChpdGVtKSA9PiBpdGVtLmlkID09PSB0aGlzLm5nQ29udHJvbC52YWx1ZVswXSkpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBpc0Rpc2FibGVkID0gdGhpcy5uZ0NvbnRyb2wuZGlzYWJsZWQ7XHJcbiAgICAgICAgICAgIGlmIChpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBUT0RPIFJlbW92ZSBhZnRlciBtaWdyYXRpbmcgYWxsIHNlbGVjdHNcclxuICAgICAgICAgICAgICAgIC8vIHRoaXMubmdDb250cm9sLmNvbnRyb2wuZW5hYmxlKCk7XHJcbiAgICAgICAgICAgICAgICAvLyBpZiAoIXRoaXMubmdDb250cm9sLnZhbHVlICYmICF0aGlzLmRhdGEubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAvLyAgICAgdGhpcy5uZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlKCk7XHJcbiAgICAgICAgICAgICAgICAvLyAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgICAgICAgLy8gdGhpcy5zZXREZWZhdWx0VmFsdWUoKTtcclxuICAgICAgICAgICAgICAgIC8vIHRoaXMubmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZSgpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLm5nQ29udHJvbC52YWx1ZSAmJiAhdGhpcy5kYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXREZWZhdWx0VmFsdWUoKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc2V0RGVmYXVsdFZhbHVlKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZGVmYXVsdFZhbHVlID0gdGhpcy5kYXRhLmZpbmQoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IHRoaXMubmdDb250cm9sLnZhbHVlKTtcclxuICAgICAgICB0aGlzLmJhc2VEYXRhID0gdGhpcy5kZWZhdWx0VmFsdWVcclxuICAgICAgICBpZiAoIXRoaXMuZGVmYXVsdFZhbHVlKSB7IHJldHVybjt9XHJcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCgpXHJcbiAgICAgICAgdGhpcy5zZXRTaG93aW5nVmFsdWUodGhpcy5kZWZhdWx0VmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIG9wdGlvbkNsaWNrKHNob3dpbmdEYXRhOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmJhc2VEYXRhID0gc2hvd2luZ0RhdGFcclxuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0Q29uZmlnLm11bHRpcGxlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U2hvd2luZ1ZhbHVlKHNob3dpbmdEYXRhKTtcclxuICAgICAgICAgICAgdGhpcy5tYXRTZWxlY3QuY2xvc2UoKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5zZWFyY2hJbnB1dCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RDb25maWcubXVsdGlwbGUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoSW5wdXQ/Lm5hdGl2ZUVsZW1lbnQ/LmZvY3VzKClcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRGb2N1c091dCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnNldFNob3dpbmdWYWx1ZShzaG93aW5nRGF0YSk7XHJcbiAgICAgICAgdGhpcy5zaG93UGxhY2Vob2xkZXIgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBhZGROZXdJdGVtRXZlbnQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5pc05lZWRlZEZvclJlY2FsbCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5lbWl0QWN0aW9uLmVtaXQoKTtcclxuICAgIH1cclxuICAvKipcclxuICAgKiBGaWx0ZXIgYW5kIHNob3cuXHJcbiAgICogQHBhcmFtIGRhdGEgLSBFeGlzdGluZyBjaG9zZW4gZGF0YS5cclxuICAgKi9cclxuICAgIHNldFNob3dpbmdWYWx1ZShkYXRhOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIWRhdGEpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBUT0RPIHJlZmFjdG9yIHRoaXMgcGFydCBmdWxseVxyXG4gICAgICAgIGxldCBpbmNsdWRlID0gZGF0YTtcclxuICAgICAgICBsZXQgaW5jbHVkZU9wdGlvbmFsID0gZGF0YTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0Q29uZmlnLnZhbHVlVG9TaG93QnlLZXkpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RDb25maWcudmFsdWVUb1Nob3dCeUtleS5mb3JFYWNoKChwYXJhbTogQXJyYXk8c3RyaW5nIHwgbnVtYmVyPiB8IHN0cmluZykgPT4ge1xyXG5cclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcGFyYW0gPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFyYW0uZm9yRWFjaCgoa2V5OiBzdHJpbmcgfCBudW1iZXIpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSA9IChpbmNsdWRlKSA/IGluY2x1ZGVba2V5XSA6IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSA9IGluY2x1ZGVbcGFyYW1dO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RDb25maWcuc2hvd0Z1bGxUZXh0V2l0aE9wdGlvbmFsT25TZWxlY3RlZFZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdENvbmZpZy52YWx1ZVRvU2hvd0J5UGFyYW0/LmZvckVhY2goKHBhcmFtOiBBcnJheTxzdHJpbmcgfCBudW1iZXI+IHwgc3RyaW5nKSA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcGFyYW0gPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtLmZvckVhY2goKGtleTogc3RyaW5nIHwgbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlT3B0aW9uYWwgPSAoaW5jbHVkZU9wdGlvbmFsKSA/IGluY2x1ZGVPcHRpb25hbFtrZXldIDogbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlT3B0aW9uYWwgPSBpbmNsdWRlT3B0aW9uYWxbcGFyYW1dO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RDb25maWcudmFsdWVUb1Nob3dCeVBhcmFtICYmIHR5cGVvZiBpbmNsdWRlT3B0aW9uYWwgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSArPSAodGhpcy5zZWxlY3RDb25maWcud2l0aFBhcmFtU3ltYm9sIHx8ICcnKSArIGluY2x1ZGVPcHRpb25hbFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNob3dpbmdWYWx1ZSA9IGluY2x1ZGU7XHJcbiAgICAgICAgdGhpcy5ibG9ja1JlY2FsbERlZmF1bHRWYWx1ZVNldHRlciA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEJsb2NrIGFub3RoZXIgZXZlbnRzLlxyXG4gICAqIEBwYXJhbSBldmVudCAtIEVsZW1lbnQgY2xpY2sgZXZlbnQuXHJcbiAgICovXHJcbiAgICBwcmV2ZW50RGVmYXVsdChldmVudDogYW55KSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdENvbmZpZy5tdWx0aXBsZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcclxuICAgIH1cclxuXHJcbiAgICByZWdpc3RlclBhbmVsU2Nyb2xsRXZlbnQoZWxlbWVudDogTWF0U2VsZWN0KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0Q29uZmlnLnBhZ2luYXRlT25TY3JvbGwgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHBhbmVsID0gZWxlbWVudC5wYW5lbC5uYXRpdmVFbGVtZW50O1xyXG4gICAgICAgIHBhbmVsLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIChldmVudDogYW55KSA9PiB0aGlzLmxvYWREYXRhT25TY3JvbGwoZXZlbnQpKTtcclxuICAgIH1cclxuXHJcbiAgICBsb2FkRGF0YU9uU2Nyb2xsKGV2ZW50OiBhbnkpIHtcclxuICAgICAgICBjb25zdCBwb3MgPSAoZXZlbnQudGFyZ2V0LnNjcm9sbFRvcCB8fCBldmVudC50YXJnZXQuc2Nyb2xsVG9wKSArIGV2ZW50LnRhcmdldC5vZmZzZXRIZWlnaHQ7XHJcbiAgICAgICAgY29uc3QgbWF4ID0gZXZlbnQudGFyZ2V0LnNjcm9sbEhlaWdodDtcclxuICAgICAgICBpZiAoKHBvcyArIDEpID49IG1heCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5wYWdpbmF0aW9uRGF0YS5jdXJyZW50ID09PSB0aGlzLnBhZ2luYXRpb25EYXRhLmxhc3QgfHwgdGhpcy5zZWxlY3RDb25maWcuYmxvY2tQYWdpbmF0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5nZXREYXRhKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGZvY3VzU2VhcmNoSW5wdXQoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0Q29uZmlnLnNlYXJjaCAmJiB0aGlzLnNlYXJjaElucHV0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpbnB1dEZvY3VzT3V0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaXNOZWVkZWRGb3JSZWNhbGwgPSAhIXRoaXMuc2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZTtcclxuICAgICAgICB0aGlzLnNlYXJjaElucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcclxuICAgICAgICB0aGlzLnNob3dQbGFjZWhvbGRlciA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jbGVhclRpbWVvdXRGb3JTZWFyY2goKTtcclxuICAgIH1cclxuXHJcbiAgICByZXNldFZhbHVlKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQobnVsbCk7XHJcbiAgICAgICAgdGhpcy5uZ0NvbnRyb2wucmVzZXQobnVsbCk7XHJcbiAgICAgICAgdGhpcy5pbnB1dEZvY3VzT3V0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RGF0YVdpdGhTZWFyY2godmFsdWU6IGFueSwgZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY2xlYXJUaW1lb3V0Rm9yU2VhcmNoKCk7XHJcbiAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCA+PSAxKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoVGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdldERhdGEodmFsdWUsIHRydWUpXHJcbiAgICAgICAgICAgIH0sIDgwMCk7XHJcbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZS5sZW5ndGggPD0gMSAmJiBldmVudC5rZXlDb2RlID09PSA4KSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RGF0YSh2YWx1ZSwgdHJ1ZSlcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY2xlYXJUaW1lb3V0Rm9yU2VhcmNoKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLnNlYXJjaFRpbWVvdXRJZCkge1xyXG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5zZWFyY2hUaW1lb3V0SWQpO1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaFRpbWVvdXRJZCA9IDA7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9wZW5TZWxlY3Rpb24oKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0Q29uZmlnLmRpc2FibGVkIHx8IHRoaXMubmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNob3dQbGFjZWhvbGRlciA/IHRoaXMubWF0U2VsZWN0Lm9wZW4oKSA6IHRoaXMuY2xvc2VQYW5lbEFuZFVuc2V0Rm9jdXMoKTtcclxuICAgICAgICB0aGlzLnNob3dQbGFjZWhvbGRlciA9ICF0aGlzLnNob3dQbGFjZWhvbGRlcjtcclxuICAgICAgICBpZiAoIXRoaXMuc2hvd1BsYWNlaG9sZGVyKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVDYWxsRGF0YSgpXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNsb3NlUGFuZWxBbmRVbnNldEZvY3VzKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMubWF0U2VsZWN0LmNsb3NlKCk7XHJcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoSW5wdXQpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hJbnB1dC5uYXRpdmVFbGVtZW50LmJsdXIoKVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvcGVuZWRDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgICAgIGlmIChldmVudCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5pc05lZWRlZEZvclJlY2FsbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZUNhbGxEYXRhKCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCF0aGlzLnNlbGVjdENvbmZpZy5zZWFyY2gpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucGVuZGluZyA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlQ2FsbERhdGEoKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5zaG93UGxhY2Vob2xkZXIgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHJlQ2FsbERhdGEoKTogdm9pZCB7XHJcbiAgICAgICAgLy8gVE9ETyByZWZhY3RvciB0aGlzIHBhcnRcclxuICAgICAgICBpZiAoIXRoaXMuaXNOZWVkZWRGb3JSZWNhbGwpIHsgcmV0dXJuOyB9XHJcbiAgICAgICAgdGhpcy5kYXRhID0gW107XHJcbiAgICAgICAgdGhpcy5wZW5kaW5nID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnBhZ2luYXRpb25EYXRhID0ge1xyXG4gICAgICAgICAgICBjdXJyZW50OiAxLFxyXG4gICAgICAgICAgICBsYXN0OiAwXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLmFjY2Vzc1RvTmV4dFJlcXVlc3QgPSB0cnVlO1xyXG4gICAgICAgIGlmICgodHlwZW9mIHRoaXMuc2VsZWN0Q29uZmlnLnBhZ2luYXRlKSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICB0aGlzLmdldERhdGEoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnBlbmRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5kYXRhID0gdGhpcy5zZWxlY3RDb25maWcucGFnaW5hdGU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaXNOZWVkZWRGb3JSZWNhbGwgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBlbWl0U2VsZWN0aW9uQ2hhbmdlQW5kQ2xvc2UoZXZlbnQ6IGFueSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQoZXZlbnQudmFsdWUpO1xyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdENvbmZpZy5tdWx0aXBsZSkge1xyXG4gICAgICAgICAgICBpZiAoIWV2ZW50LnZhbHVlPy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubmdDb250cm9sLmNvbnRyb2wucmVzZXQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubWF0U2VsZWN0LmNsb3NlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWNvbkNsaWNrKG1hdFNlbGVjdDogTWF0U2VsZWN0LCBzZWFyY2hJbnB1dD86IEVsZW1lbnRSZWYpOiB2b2lkIHtcclxuICAgICAgICBtYXRTZWxlY3Qub3BlbigpO1xyXG4gICAgICAgIHNlYXJjaElucHV0Py5uYXRpdmVFbGVtZW50Py5mb2N1cygpO1xyXG4gICAgfVxyXG5cclxuICAgIGN1c3RvbUVycm9yU3RhdGVNYXRjaGVyID0ge1xyXG4gICAgICAgIGlzRXJyb3JTdGF0ZTogKGNvbnRyb2w6IGFueSwgZm9ybTogYW55KTogYm9vbGVhbiA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiAhIShjb250cm9sICYmIGNvbnRyb2wuaW52YWxpZCAmJiB0aGlzLnN1Ym1pdFZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJuZXctbWF0LWF1dG9jb21wbGV0ZVwiIGlkPVwibWF0X2F1dG9jb21wbGV0ZVwiXHJcbiAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAnbWF0LXNlbGVjdC13aXRob3V0X2ljb24nOiAhc2VsZWN0Q29uZmlnLmljb25VcmwgJiYgIXNlbGVjdENvbmZpZy5hY3RpdmVTdGF0ZUljb25VcmwsXHJcbiAgICAgICAgICAgICdtYXQtc2VsZWN0LXdpdGgtc2VhcmNoJzogc2VsZWN0Q29uZmlnLnNlYXJjaCxcclxuICAgICAgICAgICAgJ3dpdGhvdXQtbGFiZWwnOiBzZWxlY3RDb25maWcuaGlkZUxhYmVsLFxyXG4gICAgICAgICAgICAnaW52YWxpZF9maWVsZCc6IG5nQ29udHJvbC5jb250cm9sLmVycm9ycyAmJiBzdWJtaXRWYWx1ZSxcclxuICAgICAgICAgICAgJ3JlYWRvbmx5LWZpZWxkJzogc2VsZWN0Q29uZmlnLnJlYWRPbmx5IHx8IG5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkXHJcbiAgICAgICAgIH1cIlxyXG4gICAgIFttYXRUb29sdGlwXT1cIihzZWxlY3RDb25maWcuaG92ZXIgJiYgIW5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkID8gKChzZWxlY3RDb25maWcuaG92ZXIgfHwgJycpIHwgdHJhbnNsYXRlKSA6ICcnKVwiXHJcbiAgICAgW21hdFRvb2x0aXBDbGFzc109XCInbWF0LW1kYy10b29sdGlwIGJpZy10ZC1tYXQtdG9vbHRpcCdcIlxyXG4gICAgIFttYXRUb29sdGlwUG9zaXRpb25dPVwiJ2Fib3ZlJ1wiXHJcbiAgICAgKm5nSWY9XCJzZWxlY3RDb25maWcgJiYgbmdDb250cm9sXCI+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJ3LTEwMFwiICpuZ0lmPVwiIXNlbGVjdENvbmZpZy5oaWRlTGFiZWxcIj5cclxuICAgIDxtYXQtbGFiZWwgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgJ3JlYWRvbmx5LWNvbG9yJyA6IHNlbGVjdENvbmZpZy5yZWFkT25seSB8fCBuZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlZCxcclxuICAgICAgICAgICdpbnZhbGlkLWxhYmVsLWNvbG9yJzogISEobmdDb250cm9sLmNvbnRyb2wuZXJyb3JzICYmIHN1Ym1pdFZhbHVlKVxyXG4gICAgICAgIH1cIj5cclxuICAgICAge3sgc2VsZWN0Q29uZmlnLmxhYmVsIHwgdHJhbnNsYXRlIH19XHJcbiAgICA8L21hdC1sYWJlbD5cclxuICAgIDxzcGFuICpuZ0lmPVwic2VsZWN0Q29uZmlnLnJlcXVpcmVkXCIgY2xhc3M9XCJyZXF1aXJlZC1pbnB1dFwiXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7J3JlYWRvbmx5LWNvbG9yJyA6IG5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkfVwiPio8L3NwYW4+XHJcbiAgPC9kaXY+XHJcblxyXG5cclxuICA8IS0tIFNlYXJjaCBJbnB1dCAtLT5cclxuICA8ZGl2IGNsYXNzPVwic2VhcmNoLWlucHV0IHctMTAwXCJcclxuICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7JGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxyXG4gICAgICAgW25nQ2xhc3NdPVwieyBoaWRlX2lucHV0X3BsYWNlaG9sZGVyOiBzaG93UGxhY2Vob2xkZXIgfHwgbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWQgfVwiXHJcbiAgICAgICAqbmdJZj1cInNlbGVjdENvbmZpZy5zZWFyY2hcIlxyXG4gID5cclxuICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgIGlkPVwic2VhcmNoSW5wdXRcIlxyXG4gICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICBbbmdDbGFzc109XCJ7J3ByLTI1JzogIXNlbGVjdENvbmZpZy5pY29uVXJsfVwiXHJcbiAgICAgICAgICAgI3NlYXJjaElucHV0XHJcbiAgICAgICAgICAgW2Rpc2FibGVkXT1cIm5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkIHx8IHNlbGVjdENvbmZpZy5ob3ZlclwiXHJcbiAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIihuZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlZCB8fCBzZWxlY3RDb25maWcuaG92ZXIpID8gJycgOiAnU2VhcmNoJ1wiXHJcbiAgICAgICAgICAgKGZvY3Vzb3V0KT1cImlucHV0Rm9jdXNPdXQoKVwiXHJcbiAgICAgICAgICAgKGZvY3VzKT1cIm9wZW5TZWxlY3Rpb24oKVwiXHJcbiAgICAgICAgICAgKGtleWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgICAoa2V5dXApPVwiZ2V0RGF0YVdpdGhTZWFyY2goc2VhcmNoSW5wdXQudmFsdWUsJGV2ZW50KVwiPlxyXG5cclxuICAgIDwhLS0gU2VhcmNoIEljb24gLS0+XHJcbiAgICA8c3BhbiBjbGFzcz1cInNlYXJjaC1pY29uXCI+XHJcbiAgICAgICAgICAgIDxpLXRlY2gtaWNvbi1idXR0b25cclxuICAgICAgICAgICAgICBjbGFzcz1cIm1yLTEwXCJcclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJzZWxlY3RDb25maWcucmVhZE9ubHkgfHwgbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWQgPyAncmVhZG9ubHktY29sb3InIDogJ2RlZmF1bHQtZm9ybS1pY29uLWNvbG9yJ1wiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJzZWxlY3RDb25maWcuaWNvblByZWZpeCAmJiAhc2hvd1BsYWNlaG9sZGVyXCJcclxuICAgICAgICAgICAgICBbaWNvbk5hbWVdPVwic2VsZWN0Q29uZmlnLmljb25QcmVmaXggfHwgJydcIlxyXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzZWxlY3RDb25maWcucmVhZE9ubHkgfHwgZmFsc2VcIlxyXG4gICAgICAgICAgICAgIG1hdFByZWZpeFxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwvaS10ZWNoLWljb24tYnV0dG9uPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBQbGFjZWhvbGRlci9TZWxlY3RlZCBWYWx1ZSBEaXNwbGF5IC0tPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93UGxhY2Vob2xkZXIgJiYgc2VsZWN0Q29uZmlnLnNlYXJjaFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImN1c3RvbS1wbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICpuZ0lmPVwiKCFuZ0NvbnRyb2w/LnZhbHVlICYmICFuZ0NvbnRyb2w/LnZhbHVlPy5sZW5ndGgpIHx8XHJcbiAgICAgICAgICAgICAgICAgKHNlbGVjdENvbmZpZy5tdWx0aXBsZSAmJiBuZ0NvbnRyb2w/LnZhbHVlICYmICFuZ0NvbnRyb2w/LnZhbHVlPy5sZW5ndGgpXCJcclxuICAgICAgICAgW25nQ2xhc3NdPVwic2VsZWN0Q29uZmlnLnJlYWRPbmx5IHx8IG5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkID8gJ3JlYWRvbmx5LWNvbG9yJyA6ICdkZWZhdWx0LWZvcm0taWNvbi1jb2xvcidcIlxyXG4gICAgPlxyXG4gICAgICB7eyAoKHNlbGVjdENvbmZpZy5wbGFjZWhvbGRlciB8fCAnJykgfCB0cmFuc2xhdGUpIH19XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tcGxhY2Vob2xkZXIgY3VzdG9tLXZhbHVlIGVsbGlwc2lzXCJcclxuICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgJ3ByLTQyJzogc2VsZWN0Q29uZmlnLmljb25VcmwsXHJcbiAgICAgICAgICAgICAgICAncmVhZG9ubHktY29sb3InOiBzZWxlY3RDb25maWcucmVhZE9ubHkgfHwgbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWQsXHJcbiAgICAgICAgICAgICAgICAnZGVmYXVsdC1mb3JtLWljb24tY29sb3InOiAhKHNlbGVjdENvbmZpZy5yZWFkT25seSB8fCBuZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlZClcclxuICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAqbmdJZj1cIm5nQ29udHJvbD8udmFsdWVcIlxyXG4gICAgPlxyXG4gICAgICB7eyBzZWxlY3RDb25maWc/Lm11bHRpcGxlID8gKG5nQ29udHJvbC52YWx1ZSB8IGFycmF5VG9TdHJpbmcpIDogc2hvd2luZ1ZhbHVlIH19XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPCEtLSBDdXN0b20gSWNvbiAtLT5cclxuICA8aW1nIGNsYXNzPVwibGVmdF9pY29uX25ldyBwb2ludGVyXCJcclxuICAgICAgIChjbGljayk9XCJpY29uQ2xpY2sobWF0U2VsZWN0LCBzZWFyY2hJbnB1dClcIlxyXG4gICAgICAgKm5nSWY9XCIhc2VsZWN0Q29uZmlnLm1hdEljb25OYW1lICYmIChzZWxlY3RDb25maWcuaWNvblVybCB8fCBzZWxlY3RDb25maWcuYWN0aXZlU3RhdGVJY29uVXJsKVwiXHJcbiAgICAgICBbc3JjXT1cIidhc3NldHMvaW1hZ2VzL2ljb25zL2dsb2JhbC8nICsgKG5nQ29udHJvbC5jb250cm9sPy52YWx1ZSAmJiBzZWxlY3RDb25maWc/LmFjdGl2ZVN0YXRlSWNvblVybCA/IHNlbGVjdENvbmZpZy5hY3RpdmVTdGF0ZUljb25VcmwgOiBzZWxlY3RDb25maWcuaWNvblVybClcIj5cclxuXHJcbiAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY2xhc3M9XCJ3LTEwMFwiIChjbGljayk9XCJzZWxlY3RDb25maWc/LnNlYXJjaCA/IGZvY3VzU2VhcmNoSW5wdXQoKSA6IG51bGxcIj5cclxuICAgIDwhLS0gTWF0ZXJpYWwgU2VsZWN0IC0tPlxyXG4gICAgPG1hdC1zZWxlY3QgI21hdFNlbGVjdD1cIm1hdFNlbGVjdFwiXHJcbiAgICAgICAgICAgICAgICBbcGFuZWxDbGFzc109XCInYXV0b2NvbXBsZXRlLXRyYW5zZm9ybS1wYW5lbC1sb2NhdGlvbidcIlxyXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1wbGFjZWhvbGRlcl09XCIoc2VsZWN0Q29uZmlnLnBsYWNlaG9sZGVyIHx8ICcnKSB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICBbYXJpYS1sYWJlbF09XCJzZWxlY3RDb25maWcubGFiZWwgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgW2lkXT1cInNlbGVjdENvbmZpZy5maWx0cmF0aW9uS2V5IHx8ICcnXCJcclxuICAgICAgICAgICAgICAgIChvcGVuZWQpPVwicmVnaXN0ZXJQYW5lbFNjcm9sbEV2ZW50KG1hdFNlbGVjdClcIlxyXG4gICAgICAgICAgICAgICAgKG9wZW5lZENoYW5nZSk9XCJvcGVuZWRDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwibmdDb250cm9sLmNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgW211bHRpcGxlXT1cInNlbGVjdENvbmZpZy5tdWx0aXBsZVwiXHJcbiAgICAgICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cImVtaXRTZWxlY3Rpb25DaGFuZ2VBbmRDbG9zZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIFtlcnJvclN0YXRlTWF0Y2hlcl09XCJjdXN0b21FcnJvclN0YXRlTWF0Y2hlclwiXHJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiKHNlbGVjdENvbmZpZy5wbGFjZWhvbGRlciB8fCAnJykgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkXCJcclxuICAgID5cclxuXHJcbiAgICAgIDwhLS0gTG9hZGluZyBTdGF0ZSAtLT5cclxuICAgICAgPG1hdC1vcHRpb24gKm5nSWY9XCJwZW5kaW5nXCIgY2xhc3M9XCJvcHRpb25fbG9hZGluZyByZWxhdGl2ZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZXF1ZXN0X2xvYWRpbmdcIj5cclxuICAgICAgICAgIDxpbWcgbmdTcmM9XCIuL2xvYWRlci5zdmdcIiBhbHQ9XCJcIiBoZWlnaHQ9XCIyMDBcIiB3aWR0aD1cIjIwMFwiLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9tYXQtb3B0aW9uPlxyXG5cclxuICAgICAgPCEtLSBPcHRpb25zIC0tPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YT8ubGVuZ3RoICYmICFwZW5kaW5nXCI+XHJcbiAgICAgICAgPCEtLSBBZGQgTmV3IE9wdGlvbiAtLT5cclxuICAgICAgICA8bWF0LW9wdGlvbiAqbmdJZj1cInNlbGVjdENvbmZpZy5hY3Rpb25zXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBvaW50ZXIgYWRkX25ld1wiXHJcbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWRcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xvc2VQYW5lbEFuZFVuc2V0Rm9jdXMoKTthZGROZXdJdGVtRXZlbnQoKVwiPlxyXG4gICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwibmdDb250cm9sLmNvbnRyb2wucmVzZXQobnVsbCk7bWF0U2VsZWN0Ll9vbkJsdXIoKTtjbG9zZVBhbmVsQW5kVW5zZXRGb2N1cygpO2FkZE5ld0l0ZW1FdmVudCgpXCI+LS0+XHJcbiAgICAgICAgICA8aS10ZWNoLWJ1dHRvblxyXG4gICAgICAgICAgICBbdHlwZV09XCJCdXR0b25UeXBlLk9VVExJTkVcIlxyXG4gICAgICAgICAgICBbZm9udEljb25dPVwiJ2FkZCdcIlxyXG4gICAgICAgICAgICBbdGV4dF09XCIoJ2Ryb3Bkb3duX2FkZF9pdGVtJyB8IHRyYW5zbGF0ZSA6IHtJTlBVVF9OQU1FOiAoc2VsZWN0Q29uZmlnLmxhYmVsIHwgdHJhbnNsYXRlKX0pIFwiXHJcbiAgICAgICAgICAgIFtjdXN0b21DbGFzc109XCIndy0xMDAgbWF0LWF1dG9jb21wbGV0ZS1zZWxlY3QtYnV0dG9uJ1wiPlxyXG4gICAgICAgICAgPC9pLXRlY2gtYnV0dG9uPlxyXG4gICAgICAgIDwvbWF0LW9wdGlvbj5cclxuXHJcbiAgICAgICAgPCEtLSBSZWd1bGFyIE9wdGlvbnMgLS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzZWxlY3RDb25maWc/LmNoYW5nZVRleHQgJiYgZGF0YS5sZW5ndGhcIj5cclxuICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIGRhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInNlbGVjdENvbmZpZy52YWx1ZUJ5S2V5IHwgZ2V0VmFsdWVCeUtleUZyb21PYmplY3QgOiBpdGVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChtb3VzZXVwKT1cIm9wdGlvbkNsaWNrKGl0ZW0pXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwicHJldmVudERlZmF1bHQoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICB7eyAoKHNlbGVjdENvbmZpZy52YWx1ZVRvU2hvd0J5S2V5IHwgZ2V0VmFsdWVCeUtleUZyb21PYmplY3QgOiBpdGVtIDogc2VsZWN0Q29uZmlnLnZhbHVlVG9TaG93QnlQYXJhbSA6IHNlbGVjdENvbmZpZy53aXRoUGFyYW1TeW1ib2wpIHx8ICcnKSB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8IS0tIEN1c3RvbSBUZXh0IE9wdGlvbnMgLS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdENvbmZpZz8uY2hhbmdlVGV4dCAmJiBkYXRhLmxlbmd0aFwiPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2YgZGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwic2VsZWN0Q29uZmlnLnZhbHVlQnlLZXkgfCBnZXRWYWx1ZUJ5S2V5RnJvbU9iamVjdCA6IGl0ZW1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKG1vdXNldXApPVwib3B0aW9uQ2xpY2soaXRlbSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJwcmV2ZW50RGVmYXVsdCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzZWxlY3RDb25maWc/LmNoYW5nZVRleHRbaXRlbV0uZGlzYWJsZWRcIj5cclxuICAgICAgICAgICAge3sgc2VsZWN0Q29uZmlnPy5jaGFuZ2VUZXh0W2l0ZW1dLnRleHQgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8IS0tIEVtcHR5IFN0YXRlIC0tPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXBlbmRpbmcgJiYgIWRhdGEubGVuZ3RoXCI+XHJcbiAgICAgICAgPG1hdC1vcHRpb24gZGlzYWJsZWQgY2xhc3M9XCJlbXB0eV9zZWxlY3Rpb25fc3RhdGVcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb25zX2FuZF90aWxlIGFkZF9uZXcgZmxleF9jb2x1bW4gdy0xMDAgZmxleF9jZW50ZXJfYWxpZ25fY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxzcGFuPnt7ICdkcm9wZG93bl9ub19pdGVtcycgfCB0cmFuc2xhdGUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0xMFwiPlxyXG4gICAgICAgICAgICAgIDxpLXRlY2gtYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInNlbGVjdENvbmZpZz8uYWN0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICBbdHlwZV09XCJCdXR0b25UeXBlLk9VVExJTkVcIlxyXG4gICAgICAgICAgICAgICAgKGJ1dHRvbkNsaWNrKT1cImNsb3NlUGFuZWxBbmRVbnNldEZvY3VzKCk7YWRkTmV3SXRlbUV2ZW50KClcIlxyXG4gICAgICAgICAgICAgICAgW2N1c3RvbUNsYXNzXT1cIidtYXQtYXV0b2NvbXBsZXRlLXNlbGVjdC1idXR0b24nXCJcclxuICAgICAgICAgICAgICAgIFtmb250SWNvbl09XCInYWRkJ1wiXHJcbiAgICAgICAgICAgICAgICBbdGV4dF09XCIoJ2Ryb3Bkb3duX2FkZF9pdGVtJyB8IHRyYW5zbGF0ZSA6IHtJTlBVVF9OQU1FOiAoc2VsZWN0Q29uZmlnLmxhYmVsIHwgdHJhbnNsYXRlKX0pIFwiPlxyXG4gICAgICAgICAgICAgIDwvaS10ZWNoLWJ1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgPG1hdC1pY29uICpuZ0lmPVwic2VsZWN0Q29uZmlnLmljb25QcmVmaXhcIlxyXG4gICAgICAgICAgICAgIG1hdFByZWZpeFxyXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAncmVhZG9ubHktY29sb3InIDogIXNlbGVjdENvbmZpZ1snaWNvblByZWZpeENvbG9yJ10gJiYgKHNlbGVjdENvbmZpZy5yZWFkT25seSB8fCBuZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlZCksXHJcbiAgICAgICAgICAgICAgICAgICAgJ2RlZmF1bHQtZm9ybS1pY29uLWNvbG9yJyA6ICFzZWxlY3RDb25maWdbJ2ljb25QcmVmaXhDb2xvciddICYmICEoc2VsZWN0Q29uZmlnLnJlYWRPbmx5IHx8IG5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIigoc2VsZWN0Q29uZmlnPy5bJ2ljb25QcmVmaXhUb29sdGlwJ10gfHwgJycpIHwgdHJhbnNsYXRlKVwiXHJcbiAgICA+e3sgc2VsZWN0Q29uZmlnLmljb25QcmVmaXggfX1cclxuICAgIDwvbWF0LWljb24+XHJcblxyXG4gICAgPG1hdC1pY29uICpuZ0lmPVwic2VsZWN0Q29uZmlnWydpY29uUHJlZml4U3ZnJ11cIlxyXG4gICAgICAgICAgICAgIG1hdFByZWZpeFxyXG4gICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIigoc2VsZWN0Q29uZmlnPy5bJ2ljb25QcmVmaXhUb29sdGlwJ10gfHwgJycpIHwgdHJhbnNsYXRlKVwiXHJcbiAgICAgICAgICAgICAgW3N2Z0ljb25dPVwic2VsZWN0Q29uZmlnWydpY29uUHJlZml4U3ZnJ10gfHwgJydcIlxyXG4gICAgPjwvbWF0LWljb24+XHJcblxyXG4gICAgPGktdGVjaC1pY29uLWJ1dHRvblxyXG4gICAgICAqbmdJZj1cInNlbGVjdENvbmZpZy5zZWFyY2ggJiYgc2VsZWN0Q29uZmlnLmNsZWFyYWJsZSAmJiAhbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWQgJiYgISFuZ0NvbnRyb2wuY29udHJvbC52YWx1ZVwiXHJcbiAgICAgIGljb25OYW1lPVwiY2FuY2VsXCJcclxuICAgICAgbWF0U3VmZml4XHJcbiAgICAgIFtkaXNhYmxlZF09XCJzZWxlY3RDb25maWcucmVhZE9ubHkgfHwgZmFsc2VcIlxyXG4gICAgICBbbmdDbGFzc109XCJzZWxlY3RDb25maWcucmVhZE9ubHkgfHwgbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWQgPyAncmVhZG9ubHktY29sb3InIDogJ2RlZmF1bHQtZm9ybS1pY29uLWNvbG9yJ1wiXHJcbiAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7JGV2ZW50LnByZXZlbnREZWZhdWx0KCk7bmdDb250cm9sLmNvbnRyb2wucmVzZXQobnVsbCk7bWF0U2VsZWN0Ll9vbkJsdXIoKTtjbG9zZVBhbmVsQW5kVW5zZXRGb2N1cygpXCJcclxuICAgID5cclxuICAgIDwvaS10ZWNoLWljb24tYnV0dG9uPlxyXG4gICAgPG1hdC1pY29uXHJcbiAgICAgIG1hdFN1ZmZpeFxyXG4gICAgICBjbGFzcz1cInNlbGVjdC1hcnJvd1wiXHJcbiAgICAgIFtjbGFzcy5vcGVuXT1cIm1hdFNlbGVjdC5wYW5lbE9wZW5cIlxyXG4gICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICdyZWFkb25seS1jb2xvcic6IHNlbGVjdENvbmZpZy5yZWFkT25seSB8fCBuZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlZCxcclxuICAgICAgICAgICAgJ2RlZmF1bHQtZm9ybS1pY29uLWNvbG9yJzogIShzZWxlY3RDb25maWcucmVhZE9ubHkgfHwgbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWQpLFxyXG4gICAgICAgICAgICAnbXQtOCc6ICEhbmdDb250cm9sLmNvbnRyb2wudmFsdWUgJiYgc2VsZWN0Q29uZmlnLmNsZWFyYWJsZVxyXG4gICAgICAgICB9XCJcclxuICAgID5cclxuICAgICAga2V5Ym9hcmRfYXJyb3dfZG93blxyXG4gICAgPC9tYXQtaWNvbj5cclxuICAgIDwhLS0gRXJyb3IgTWVzc2FnZSAtLT5cclxuICAgIDxtYXQtZXJyb3IgKm5nSWY9XCIhIShuZ0NvbnRyb2wuY29udHJvbC5lcnJvcnMgJiYgc3VibWl0VmFsdWUpXCI+XHJcbiAgICAgIHt7IG5nQ29udHJvbC5jb250cm9sIHwgZ2VuZXJhdGVFcnJvck1lc3NhZ2VzIDogc2VsZWN0Q29uZmlnLmxhYmVsIDogc2VsZWN0Q29uZmlnLmRlZmF1bHRQYXR0ZXJuS2V5IH19XHJcbiAgICA8L21hdC1lcnJvcj5cclxuICA8L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuICA8IS0tIFJlc2V0IEJ1dHRvbiAtLT5cclxuICA8aS10ZWNoLWNsZWFyLXZhbHVlICpuZ0lmPVwic2VsZWN0Q29uZmlnLnJlc2V0XCIgKHJlc2V0KT1cInJlc2V0VmFsdWUoKVwiPjwvaS10ZWNoLWNsZWFyLXZhbHVlPlxyXG48L2Rpdj5cclxuIl19
|
|
409
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWQtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlLXNlbGVjdC9hdXRvY29tcGxldGUtc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9hdXRvY29tcGxldGUtc2VsZWN0L2F1dG9jb21wbGV0ZS1zZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBR0EsWUFBWSxFQUMzQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQVksZUFBZSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFFcEUsT0FBTyxFQUFrQixtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXBFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNoRSxPQUFPLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDckQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSwrQ0FBK0MsQ0FBQztBQUMxRixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxrQ0FB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Q2hCLE9BQU87d0JBQ1AseUJBQXlCO3dCQUN6QixtQkFBbUI7d0JBQ25CLGtCQUFrQjtxQkFDbkIsY0FDVyxJQUFJO2lGQUdVLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDSSxXQUFXO3NCQUFwQyxTQUFTO3VCQUFDLGFBQWE7Z0JBQ2YsU0FBUztzQkFBakIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUlPLE9BQU87c0JBQW5CLEtBQUs7Z0JBbUJHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0ksZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNtQixXQUFXO3NCQUFwQyxTQUFTO3VCQUFDLGFBQWE7Z0JBcUJ4QixzQkFBc0I7c0JBRHJCLFlBQVk7dUJBQUMsMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgVmlld0NoaWxkLFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgT25DaGFuZ2VzLFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBBZnRlclZpZXdJbml0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNYXRTZWxlY3QsIE1hdFNlbGVjdE1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3NlbGVjdFwiO1xuaW1wb3J0IHtBdXRvY29tcGxldGVDb25maWdzSW50ZXJmYWNlfSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlcy9hdXRvY29tcGxldGUtY29uZmlncy5pbnRlcmZhY2VcIjtcbmltcG9ydCB7Rm9ybUNvbnRyb2xOYW1lLCBSZWFjdGl2ZUZvcm1zTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IElucHV0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2lucHV0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQnV0dG9uVHlwZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvYnV0dG9uLXR5cGVzLmVudW0nO1xuaW1wb3J0IHtOZ0NsYXNzLCBOZ0ZvciwgTmdJZiwgTmdPcHRpbWl6ZWRJbWFnZX0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHtNYXRUb29sdGlwfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcFwiO1xuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGV9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XG5pbXBvcnQge0ljb25CdXR0b25Db21wb25lbnR9IGZyb20gXCIuLi9pY29uLWJ1dHRvbi9pY29uLWJ1dHRvbi5jb21wb25lbnRcIjtcbmltcG9ydCB7QnV0dG9uQ29tcG9uZW50fSBmcm9tIFwiLi4vYnV0dG9uL2J1dHRvbi5jb21wb25lbnRcIjtcbmltcG9ydCB7R2V0VmFsdWVCeUtleUZyb21PYmplY3RQaXBlfSBmcm9tIFwiLi4vLi4vcGlwZXMvZ2V0LXZhbHVlLWJ5LWtleS1mcm9tLW9iamVjdC5waXBlXCI7XG5pbXBvcnQge0FycmF5VG9TdHJpbmdQaXBlfSBmcm9tIFwiLi4vLi4vcGlwZXMvYXJyYXktdG8tc3RyaW5nLnBpcGVcIjtcbmltcG9ydCB7TWF0SWNvbn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2ljb25cIjtcbmltcG9ydCB7R2VuZXJhdGVFcnJvck1lc3NhZ2VzUGlwZX0gZnJvbSBcIi4uLy4uL3BpcGVzL2dlbmVyYXRlLWVycm9yLW1lc3NhZ2VzLnBpcGVcIjtcbmltcG9ydCB7Q2xlYXJWYWx1ZUNvbXBvbmVudH0gZnJvbSBcIi4uL2NsZWFyLXZhbHVlL2NsZWFyLXZhbHVlLmNvbXBvbmVudFwiO1xuaW1wb3J0IHtNYXRGb3JtRmllbGRNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ktdGVjaC1hdXRvY29tcGxldGUtc2VsZWN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2F1dG9jb21wbGV0ZS1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hdXRvY29tcGxldGUtc2VsZWN0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGltcG9ydHM6IFtcbiAgICBOZ0NsYXNzLFxuICAgIE1hdFRvb2x0aXAsXG4gICAgTmdJZixcbiAgICBOZ0ZvcixcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgSWNvbkJ1dHRvbkNvbXBvbmVudCxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE1hdFNlbGVjdE1vZHVsZSxcbiAgICBCdXR0b25Db21wb25lbnQsXG4gICAgR2V0VmFsdWVCeUtleUZyb21PYmplY3RQaXBlLFxuICAgIEFycmF5VG9TdHJpbmdQaXBlLFxuICAgIE5nT3B0aW1pemVkSW1hZ2UsXG4gICAgTWF0SWNvbixcbiAgICBHZW5lcmF0ZUVycm9yTWVzc2FnZXNQaXBlLFxuICAgIENsZWFyVmFsdWVDb21wb25lbnQsXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlXG4gIF0sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgQXV0b2NvbXBsZXRlU2VsZWN0Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcbiAgICBAVmlld0NoaWxkKCdtYXRTZWxlY3QnKSBtYXRTZWxlY3QhOiBNYXRTZWxlY3Q7XG4gICAgQFZpZXdDaGlsZCgnc2VhcmNoSW5wdXQnKSBzZWFyY2hJbnB1dCE6IEVsZW1lbnRSZWY7XG4gICAgQElucHV0KCkgY2xhc3NOYW1lITogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHN1Ym1pdFZhbHVlITogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEZvciB3b3JraW5nIGNvbmZpZ3MuXG4gICAqL1xuICAgIEBJbnB1dCgpIHNldCBjb25maWdzKGRhdGE6IEF1dG9jb21wbGV0ZUNvbmZpZ3NJbnRlcmZhY2UpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RDb25maWcgPSBkYXRhO1xuICAgICAgICBpZiAoIWRhdGEpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgodHlwZW9mIHRoaXMuc2VsZWN0Q29uZmlnLnBhZ2luYXRlKSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgaWYgKHRoaXMuZmlyc3RSZXF1ZXN0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5nZXREYXRhKCk7XG4gICAgICAgICAgICB0aGlzLmZpcnN0UmVxdWVzdCA9IHRydWVcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZGF0YSA9IHRoaXMuc2VsZWN0Q29uZmlnLnBhZ2luYXRlO1xuICAgICAgICB0aGlzLmZpbmRBbmRTZXREZWZhdWx0VmFsdWVGcm9tRGF0YSgpO1xuICAgIH07XG5cbiAgICBASW5wdXQoKSBkZXRlY3RDaGFuZ2VzITogYm9vbGVhbjtcbiAgICBAT3V0cHV0KCkgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgQE91dHB1dCgpIGVtaXRBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICBAVmlld0NoaWxkKCdhbGxTZWxlY3RlZCcpIGFsbFNlbGVjdGVkITogTWF0U2VsZWN0O1xuICAgIHBlbmRpbmcgPSBmYWxzZTtcbiAgICBkZWZhdWx0VmFsdWUhOiBhbnk7XG4gICAgZGF0YTogQXJyYXk8YW55PiA9IFtdO1xuICAgIHBhZ2luYXRpb25EYXRhOiBhbnkgPSB7Y3VycmVudDogMSwgbGFzdDogMH07XG4gICAgbmdDb250cm9sOiBGb3JtQ29udHJvbE5hbWU7XG4gICAgc2VsZWN0Q29uZmlnITogQXV0b2NvbXBsZXRlQ29uZmlnc0ludGVyZmFjZTtcbiAgICBmaXJzdFJlcXVlc3QgPSBmYWxzZTtcbiAgICBzaG93UGxhY2Vob2xkZXIgPSB0cnVlO1xuICAgIGlzTmVlZGVkRm9yUmVjYWxsID0gZmFsc2U7XG4gICAgc2hvd2luZ1ZhbHVlOiBhbnk7XG4gICAgc2VhcmNoVGltZW91dElkOiBhbnk7XG4gICAgdGFiVmlzaWJpbGl0eSE6IGJvb2xlYW47XG4gICAgYWNjZXNzVG9OZXh0UmVxdWVzdCA9IHRydWU7XG4gICAgZGlzYWJsZWQgPSBmYWxzZTtcbiAgICBibG9ja1JlY2FsbERlZmF1bHRWYWx1ZVNldHRlciA9IGZhbHNlO1xuICAgIGJhc2VEYXRhOiBhbnk7XG4gICAgcmVxdWVzdExvYWRpbmcgPSBmYWxzZTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgQnV0dG9uVHlwZSA9IEJ1dHRvblR5cGU7XG5cbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDp2aXNpYmlsaXR5Y2hhbmdlJylcbiAgICBoYW5kbGVWaXNpYmlsaXR5Q2hhbmdlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnRhYlZpc2liaWxpdHkgPSAhZG9jdW1lbnQuaGlkZGVuO1xuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wuY29udHJvbC52YWx1ZSkgeyByZXR1cm47fVxuICAgICAgICB0aGlzLmNsb3NlUGFuZWxBbmRVbnNldEZvY3VzKCk7XG4gICAgICAgIGlmICghZG9jdW1lbnQuaGlkZGVuKSB7XG4gICAgICAgICAgICB0aGlzLmlzTmVlZGVkRm9yUmVjYWxsID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMucGVuZGluZyA9IHRydWU7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnBlbmRpbmcgPSBmYWxzZVxuICAgICAgICAgICAgfSwgNDAwMClcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5wdXRTZXJ2aWNlOiBJbnB1dFNlcnZpY2UpIHtcbiAgICAgICAgdGhpcy5uZ0NvbnRyb2wgPSB0aGlzLmlucHV0U2VydmljZS5pbmplY3ROZ0NvbnRyb2woKTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIGlmIChjaGFuZ2VzWydzZWxlY3RDb25maWcnXSAmJiB0aGlzLnNlbGVjdENvbmZpZykge1xuICAgICAgICAgICAgaWYgKCh0eXBlb2YgdGhpcy5zZWxlY3RDb25maWcucGFnaW5hdGUpID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5nZXREYXRhKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHRoaXMubmdDb250cm9sLmNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmRhdGEubGVuZ3RoICYmIHJlcyAmJiAhdGhpcy5ibG9ja1JlY2FsbERlZmF1bHRWYWx1ZVNldHRlcikge1xuICAgICAgICAgICAgICAgIHRoaXMuZmluZEFuZFNldERlZmF1bHRWYWx1ZUZyb21EYXRhKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgaGFyZFJlbG9hZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5nZXREYXRhKCcnLCB0cnVlKTtcbiAgICB9XG5cbiAgLyoqXG4gICAqIER5bmFtaWMgcmVxdWVzdCBmb3Igc2VsZWN0IGRhdGEuXG4gICAqIEBwYXJhbSBzZWFyY2hUZXh0IC0gVGhlIGlucHV0IHZhbHVlIHRvIHNlYXJjaCBvcHRpb25zIGJ5LlxuICAgKiBAcGFyYW0gZnJvbVNlYXJjaCAtIEFjY2VzcyBmb3Igc2VhcmNoIC5cbiAgICogQHJldHVybnMgU2VsZWN0IGRhdGEuXG4gICAqL1xuICAgIGdldERhdGEoc2VhcmNoVGV4dD86IHN0cmluZywgZnJvbVNlYXJjaD86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKCFmcm9tU2VhcmNoICYmICF0aGlzLmFjY2Vzc1RvTmV4dFJlcXVlc3QpIHsgcmV0dXJuOyB9XG5cbiAgICAgICAgaWYgKHRoaXMucmVxdWVzdExvYWRpbmcpIHsgcmV0dXJuOyB9XG5cbiAgICAgICAgaWYgKGZyb21TZWFyY2gpIHtcbiAgICAgICAgICAgIHRoaXMucGFnaW5hdGlvbkRhdGEuY3VycmVudCA9IDE7XG4gICAgICAgICAgICB0aGlzLmFjY2Vzc1RvTmV4dFJlcXVlc3QgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZnVuY3Rpb25Ub0RvID0gdGhpcy5zZWxlY3RDb25maWcucGFnaW5hdGUodGhpcy5wYWdpbmF0aW9uRGF0YS5jdXJyZW50LCBzZWFyY2hUZXh0KTtcblxuICAgICAgICB0aGlzLnJlcXVlc3RMb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgZnVuY3Rpb25Ub0RvPy5zdWJzY3JpYmUoKGRhdGE6IEFycmF5PGFueT4gfCBhbnkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGFUb0FkZCA9ICgnY29udGVudCcgaW4gZGF0YSkgPyBkYXRhLmNvbnRlbnQgOiBkYXRhO1xuXG4gICAgICAgICAgICBpZiAoJ2NvbnRlbnQnIGluIGRhdGEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFjY2Vzc1RvTmV4dFJlcXVlc3QgPSAhZGF0YS5sYXN0IHx8IChkYXRhLnRvdGFsUGFnZXMgPiB0aGlzLnBhZ2luYXRpb25EYXRhLmN1cnJlbnQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmRhdGEgPSAoZnJvbVNlYXJjaCB8fCB0aGlzLnNlbGVjdENvbmZpZz8uYmxvY2tQYWdpbmF0aW9uKSA/IGRhdGFUb0FkZCA6IFsuLi50aGlzLmRhdGEsIC4uLmRhdGFUb0FkZF07XG4gICAgICAgICAgICB0aGlzLnBlbmRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWVzdExvYWRpbmcgPSBmYWxzZTtcblxuICAgICAgICAgICAgaWYgKCFkYXRhVG9BZGQubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wYWdpbmF0aW9uRGF0YS5sYXN0ID0gdGhpcy5wYWdpbmF0aW9uRGF0YS5jdXJyZW50O1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5wYWdpbmF0aW9uRGF0YS5jdXJyZW50ICs9IDE7XG4gICAgICAgICAgICB0aGlzLnBhZ2luYXRpb25EYXRhLmxhc3QgKz0gMTtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZmluZEFuZFNldERlZmF1bHRWYWx1ZUZyb21EYXRhKCk7XG4gICAgICAgICAgICB9LDEwKVxuICAgICAgICB9LCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnBlbmRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWVzdExvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBmaW5kQW5kU2V0RGVmYXVsdFZhbHVlRnJvbURhdGEoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdENvbmZpZy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMubmdDb250cm9sLnZhbHVlICYmIHRoaXMubmdDb250cm9sLnZhbHVlLmxlbmd0aCA9PSAxKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTaG93aW5nVmFsdWUodGhpcy5kYXRhLmZpbmQoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IHRoaXMubmdDb250cm9sLnZhbHVlWzBdKSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGlzRGlzYWJsZWQgPSB0aGlzLm5nQ29udHJvbC5kaXNhYmxlZDtcbiAgICAgICAgICAgIGlmIChpc0Rpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgLy8gVE9ETyBSZW1vdmUgYWZ0ZXIgbWlncmF0aW5nIGFsbCBzZWxlY3RzXG4gICAgICAgICAgICAgICAgLy8gdGhpcy5uZ0NvbnRyb2wuY29udHJvbC5lbmFibGUoKTtcbiAgICAgICAgICAgICAgICAvLyBpZiAoIXRoaXMubmdDb250cm9sLnZhbHVlICYmICF0aGlzLmRhdGEubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgLy8gICAgIHRoaXMubmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZSgpO1xuICAgICAgICAgICAgICAgIC8vICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgICAgIC8vIHRoaXMuc2V0RGVmYXVsdFZhbHVlKCk7XG4gICAgICAgICAgICAgICAgLy8gdGhpcy5uZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5uZ0NvbnRyb2wudmFsdWUgJiYgIXRoaXMuZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RGVmYXVsdFZhbHVlKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldERlZmF1bHRWYWx1ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZWZhdWx0VmFsdWUgPSB0aGlzLmRhdGEuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gdGhpcy5uZ0NvbnRyb2wudmFsdWUpO1xuICAgICAgICB0aGlzLmJhc2VEYXRhID0gdGhpcy5kZWZhdWx0VmFsdWVcbiAgICAgICAgaWYgKCF0aGlzLmRlZmF1bHRWYWx1ZSkgeyByZXR1cm47fVxuICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KClcbiAgICAgICAgdGhpcy5zZXRTaG93aW5nVmFsdWUodGhpcy5kZWZhdWx0VmFsdWUpO1xuICAgIH1cblxuICAgIG9wdGlvbkNsaWNrKHNob3dpbmdEYXRhOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5iYXNlRGF0YSA9IHNob3dpbmdEYXRhXG4gICAgICAgIGlmICghdGhpcy5zZWxlY3RDb25maWcubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0U2hvd2luZ1ZhbHVlKHNob3dpbmdEYXRhKTtcbiAgICAgICAgICAgIHRoaXMubWF0U2VsZWN0LmNsb3NlKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoSW5wdXQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdENvbmZpZy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoSW5wdXQ/Lm5hdGl2ZUVsZW1lbnQ/LmZvY3VzKClcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dEZvY3VzT3V0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldFNob3dpbmdWYWx1ZShzaG93aW5nRGF0YSk7XG4gICAgICAgIHRoaXMuc2hvd1BsYWNlaG9sZGVyID0gZmFsc2U7XG4gICAgfVxuXG4gICAgYWRkTmV3SXRlbUV2ZW50KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzTmVlZGVkRm9yUmVjYWxsID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5lbWl0QWN0aW9uLmVtaXQoKTtcbiAgICB9XG4gIC8qKlxuICAgKiBGaWx0ZXIgYW5kIHNob3cuXG4gICAqIEBwYXJhbSBkYXRhIC0gRXhpc3RpbmcgY2hvc2VuIGRhdGEuXG4gICAqL1xuICAgIHNldFNob3dpbmdWYWx1ZShkYXRhOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFkYXRhKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gVE9ETyByZWZhY3RvciB0aGlzIHBhcnQgZnVsbHlcbiAgICAgICAgbGV0IGluY2x1ZGUgPSBkYXRhO1xuICAgICAgICBsZXQgaW5jbHVkZU9wdGlvbmFsID0gZGF0YTtcblxuICAgICAgICBpZiAodGhpcy5zZWxlY3RDb25maWcudmFsdWVUb1Nob3dCeUtleSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RDb25maWcudmFsdWVUb1Nob3dCeUtleS5mb3JFYWNoKChwYXJhbTogQXJyYXk8c3RyaW5nIHwgbnVtYmVyPiB8IHN0cmluZykgPT4ge1xuXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBwYXJhbSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyYW0uZm9yRWFjaCgoa2V5OiBzdHJpbmcgfCBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgPSAoaW5jbHVkZSkgPyBpbmNsdWRlW2tleV0gOiBudWxsO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgPSBpbmNsdWRlW3BhcmFtXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0Q29uZmlnLnNob3dGdWxsVGV4dFdpdGhPcHRpb25hbE9uU2VsZWN0ZWRWYWx1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0Q29uZmlnLnZhbHVlVG9TaG93QnlQYXJhbT8uZm9yRWFjaCgocGFyYW06IEFycmF5PHN0cmluZyB8IG51bWJlcj4gfCBzdHJpbmcpID0+IHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHBhcmFtID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW0uZm9yRWFjaCgoa2V5OiBzdHJpbmcgfCBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlT3B0aW9uYWwgPSAoaW5jbHVkZU9wdGlvbmFsKSA/IGluY2x1ZGVPcHRpb25hbFtrZXldIDogbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlT3B0aW9uYWwgPSBpbmNsdWRlT3B0aW9uYWxbcGFyYW1dO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RDb25maWcudmFsdWVUb1Nob3dCeVBhcmFtICYmIHR5cGVvZiBpbmNsdWRlT3B0aW9uYWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgKz0gKHRoaXMuc2VsZWN0Q29uZmlnLndpdGhQYXJhbVN5bWJvbCB8fCAnJykgKyBpbmNsdWRlT3B0aW9uYWxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNob3dpbmdWYWx1ZSA9IGluY2x1ZGU7XG4gICAgICAgIHRoaXMuYmxvY2tSZWNhbGxEZWZhdWx0VmFsdWVTZXR0ZXIgPSB0cnVlO1xuICAgIH1cblxuICAvKipcbiAgICogQmxvY2sgYW5vdGhlciBldmVudHMuXG4gICAqIEBwYXJhbSBldmVudCAtIEVsZW1lbnQgY2xpY2sgZXZlbnQuXG4gICAqL1xuICAgIHByZXZlbnREZWZhdWx0KGV2ZW50OiBhbnkpIHtcbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdENvbmZpZy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICB9XG5cbiAgICByZWdpc3RlclBhbmVsU2Nyb2xsRXZlbnQoZWxlbWVudDogTWF0U2VsZWN0KSB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdENvbmZpZy5wYWdpbmF0ZU9uU2Nyb2xsID09PSBmYWxzZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGFuZWwgPSBlbGVtZW50LnBhbmVsLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIHBhbmVsLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIChldmVudDogYW55KSA9PiB0aGlzLmxvYWREYXRhT25TY3JvbGwoZXZlbnQpKTtcbiAgICB9XG5cbiAgICBsb2FkRGF0YU9uU2Nyb2xsKGV2ZW50OiBhbnkpIHtcbiAgICAgICAgY29uc3QgcG9zID0gKGV2ZW50LnRhcmdldC5zY3JvbGxUb3AgfHwgZXZlbnQudGFyZ2V0LnNjcm9sbFRvcCkgKyBldmVudC50YXJnZXQub2Zmc2V0SGVpZ2h0O1xuICAgICAgICBjb25zdCBtYXggPSBldmVudC50YXJnZXQuc2Nyb2xsSGVpZ2h0O1xuICAgICAgICBpZiAoKHBvcyArIDEpID49IG1heCkge1xuICAgICAgICAgICAgaWYgKHRoaXMucGFnaW5hdGlvbkRhdGEuY3VycmVudCA9PT0gdGhpcy5wYWdpbmF0aW9uRGF0YS5sYXN0IHx8IHRoaXMuc2VsZWN0Q29uZmlnLmJsb2NrUGFnaW5hdGlvbikge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZ2V0RGF0YSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZm9jdXNTZWFyY2hJbnB1dCgpIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0Q29uZmlnLnNlYXJjaCAmJiB0aGlzLnNlYXJjaElucHV0KSB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaElucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlucHV0Rm9jdXNPdXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNOZWVkZWRGb3JSZWNhbGwgPSAhIXRoaXMuc2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZTtcbiAgICAgICAgdGhpcy5zZWFyY2hJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICAgIHRoaXMuc2hvd1BsYWNlaG9sZGVyID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5jbGVhclRpbWVvdXRGb3JTZWFyY2goKTtcbiAgICB9XG5cbiAgICByZXNldFZhbHVlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KG51bGwpO1xuICAgICAgICB0aGlzLm5nQ29udHJvbC5yZXNldChudWxsKTtcbiAgICAgICAgdGhpcy5pbnB1dEZvY3VzT3V0KCk7XG4gICAgfVxuXG4gICAgZ2V0RGF0YVdpdGhTZWFyY2godmFsdWU6IGFueSwgZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLmNsZWFyVGltZW91dEZvclNlYXJjaCgpO1xuICAgICAgICBpZiAodmFsdWUubGVuZ3RoID49IDEpIHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoVGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5nZXREYXRhKHZhbHVlLCB0cnVlKVxuICAgICAgICAgICAgfSwgODAwKTtcbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZS5sZW5ndGggPD0gMSAmJiBldmVudC5rZXlDb2RlID09PSA4KSB7XG4gICAgICAgICAgICB0aGlzLmdldERhdGEodmFsdWUsIHRydWUpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjbGVhclRpbWVvdXRGb3JTZWFyY2goKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNlYXJjaFRpbWVvdXRJZCkge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc2VhcmNoVGltZW91dElkKTtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoVGltZW91dElkID0gMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9wZW5TZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdENvbmZpZy5kaXNhYmxlZCB8fCB0aGlzLm5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zaG93UGxhY2Vob2xkZXIgPyB0aGlzLm1hdFNlbGVjdC5vcGVuKCkgOiB0aGlzLmNsb3NlUGFuZWxBbmRVbnNldEZvY3VzKCk7XG4gICAgICAgIHRoaXMuc2hvd1BsYWNlaG9sZGVyID0gIXRoaXMuc2hvd1BsYWNlaG9sZGVyO1xuICAgICAgICBpZiAoIXRoaXMuc2hvd1BsYWNlaG9sZGVyKSB7XG4gICAgICAgICAgICB0aGlzLnJlQ2FsbERhdGEoKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2xvc2VQYW5lbEFuZFVuc2V0Rm9jdXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubWF0U2VsZWN0LmNsb3NlKCk7XG4gICAgICAgIGlmICh0aGlzLnNlYXJjaElucHV0KSB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaElucHV0Lm5hdGl2ZUVsZW1lbnQuYmx1cigpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvcGVuZWRDaGFuZ2UoZXZlbnQ6IGFueSkge1xuICAgICAgICBpZiAoZXZlbnQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzTmVlZGVkRm9yUmVjYWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZUNhbGxEYXRhKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCF0aGlzLnNlbGVjdENvbmZpZy5zZWFyY2gpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBlbmRpbmcgPSBmYWxzZVxuICAgICAgICAgICAgICAgIHRoaXMucmVDYWxsRGF0YSgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNob3dQbGFjZWhvbGRlciA9IHRydWU7XG4gICAgfVxuXG4gICAgcmVDYWxsRGF0YSgpOiB2b2lkIHtcbiAgICAgICAgLy8gVE9ETyByZWZhY3RvciB0aGlzIHBhcnRcbiAgICAgICAgaWYgKCF0aGlzLmlzTmVlZGVkRm9yUmVjYWxsKSB7IHJldHVybjsgfVxuICAgICAgICB0aGlzLmRhdGEgPSBbXTtcbiAgICAgICAgdGhpcy5wZW5kaW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uRGF0YSA9IHtcbiAgICAgICAgICAgIGN1cnJlbnQ6IDEsXG4gICAgICAgICAgICBsYXN0OiAwXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuYWNjZXNzVG9OZXh0UmVxdWVzdCA9IHRydWU7XG4gICAgICAgIGlmICgodHlwZW9mIHRoaXMuc2VsZWN0Q29uZmlnLnBhZ2luYXRlKSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdGhpcy5nZXREYXRhKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnBlbmRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuZGF0YSA9IHRoaXMuc2VsZWN0Q29uZmlnLnBhZ2luYXRlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaXNOZWVkZWRGb3JSZWNhbGwgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBlbWl0U2VsZWN0aW9uQ2hhbmdlQW5kQ2xvc2UoZXZlbnQ6IGFueSkge1xuICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KGV2ZW50LnZhbHVlKTtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0Q29uZmlnLm11bHRpcGxlKSB7XG4gICAgICAgICAgICBpZiAoIWV2ZW50LnZhbHVlPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5nQ29udHJvbC5jb250cm9sLnJlc2V0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5tYXRTZWxlY3QuY2xvc2UoKTtcbiAgICB9XG5cbiAgICBpY29uQ2xpY2sobWF0U2VsZWN0OiBNYXRTZWxlY3QsIHNlYXJjaElucHV0PzogRWxlbWVudFJlZik6IHZvaWQge1xuICAgICAgICBtYXRTZWxlY3Qub3BlbigpO1xuICAgICAgICBzZWFyY2hJbnB1dD8ubmF0aXZlRWxlbWVudD8uZm9jdXMoKTtcbiAgICB9XG5cbiAgICBjdXN0b21FcnJvclN0YXRlTWF0Y2hlciA9IHtcbiAgICAgICAgaXNFcnJvclN0YXRlOiAoY29udHJvbDogYW55LCBmb3JtOiBhbnkpOiBib29sZWFuID0+IHtcbiAgICAgICAgICAgIHJldHVybiAhIShjb250cm9sICYmIGNvbnRyb2wuaW52YWxpZCAmJiB0aGlzLnN1Ym1pdFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH07XG59XG4iLCI8ZGl2IGNsYXNzPVwibmV3LW1hdC1hdXRvY29tcGxldGVcIiBpZD1cIm1hdF9hdXRvY29tcGxldGVcIlxuICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAnbWF0LXNlbGVjdC13aXRob3V0X2ljb24nOiAhc2VsZWN0Q29uZmlnLmljb25VcmwgJiYgIXNlbGVjdENvbmZpZy5hY3RpdmVTdGF0ZUljb25VcmwsXG4gICAgICAgICAgICAnbWF0LXNlbGVjdC13aXRoLXNlYXJjaCc6IHNlbGVjdENvbmZpZy5zZWFyY2gsXG4gICAgICAgICAgICAnd2l0aG91dC1sYWJlbCc6IHNlbGVjdENvbmZpZy5oaWRlTGFiZWwsXG4gICAgICAgICAgICAnaW52YWxpZF9maWVsZCc6IG5nQ29udHJvbC5jb250cm9sLmVycm9ycyAmJiBzdWJtaXRWYWx1ZSxcbiAgICAgICAgICAgICdyZWFkb25seS1maWVsZCc6IHNlbGVjdENvbmZpZy5yZWFkT25seSB8fCBuZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlZFxuICAgICAgICAgfVwiXG4gICAgIFttYXRUb29sdGlwXT1cIihzZWxlY3RDb25maWcuaG92ZXIgJiYgIW5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkID8gKChzZWxlY3RDb25maWcuaG92ZXIgfHwgJycpIHwgdHJhbnNsYXRlKSA6ICcnKVwiXG4gICAgIFttYXRUb29sdGlwQ2xhc3NdPVwiJ21hdC1tZGMtdG9vbHRpcCBiaWctdGQtbWF0LXRvb2x0aXAnXCJcbiAgICAgW21hdFRvb2x0aXBQb3NpdGlvbl09XCInYWJvdmUnXCJcbiAgICAgKm5nSWY9XCJzZWxlY3RDb25maWcgJiYgbmdDb250cm9sXCI+XG5cbiAgPGRpdiBjbGFzcz1cInctMTAwXCIgKm5nSWY9XCIhc2VsZWN0Q29uZmlnLmhpZGVMYWJlbFwiPlxuICAgIDxtYXQtbGFiZWwgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICdyZWFkb25seS1jb2xvcicgOiBzZWxlY3RDb25maWcucmVhZE9ubHkgfHwgbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWQsXG4gICAgICAgICAgJ2ludmFsaWQtbGFiZWwtY29sb3InOiAhIShuZ0NvbnRyb2wuY29udHJvbC5lcnJvcnMgJiYgc3VibWl0VmFsdWUpXG4gICAgICAgIH1cIj5cbiAgICAgIHt7IHNlbGVjdENvbmZpZy5sYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvbWF0LWxhYmVsPlxuICAgIDxzcGFuICpuZ0lmPVwic2VsZWN0Q29uZmlnLnJlcXVpcmVkXCIgY2xhc3M9XCJyZXF1aXJlZC1pbnB1dFwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieydyZWFkb25seS1jb2xvcicgOiBuZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlZH1cIj4qPC9zcGFuPlxuICA8L2Rpdj5cblxuXG4gIDwhLS0gU2VhcmNoIElucHV0IC0tPlxuICA8ZGl2IGNsYXNzPVwic2VhcmNoLWlucHV0IHctMTAwXCJcbiAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcbiAgICAgICBbbmdDbGFzc109XCJ7IGhpZGVfaW5wdXRfcGxhY2Vob2xkZXI6IHNob3dQbGFjZWhvbGRlciB8fCBuZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlZCB9XCJcbiAgICAgICAqbmdJZj1cInNlbGVjdENvbmZpZy5zZWFyY2hcIlxuICA+XG4gICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgIGlkPVwic2VhcmNoSW5wdXRcIlxuICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgIFtuZ0NsYXNzXT1cInsncHItMjUnOiAhc2VsZWN0Q29uZmlnLmljb25Vcmx9XCJcbiAgICAgICAgICAgI3NlYXJjaElucHV0XG4gICAgICAgICAgIFtkaXNhYmxlZF09XCJuZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlZCB8fCBzZWxlY3RDb25maWcuaG92ZXJcIlxuICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiKG5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkIHx8IHNlbGVjdENvbmZpZy5ob3ZlcikgPyAnJyA6ICdTZWFyY2gnXCJcbiAgICAgICAgICAgKGZvY3Vzb3V0KT1cImlucHV0Rm9jdXNPdXQoKVwiXG4gICAgICAgICAgIChmb2N1cyk9XCJvcGVuU2VsZWN0aW9uKClcIlxuICAgICAgICAgICAoa2V5ZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAoa2V5dXApPVwiZ2V0RGF0YVdpdGhTZWFyY2goc2VhcmNoSW5wdXQudmFsdWUsJGV2ZW50KVwiPlxuXG4gICAgPCEtLSBTZWFyY2ggSWNvbiAtLT5cbiAgICA8c3BhbiBjbGFzcz1cInNlYXJjaC1pY29uXCI+XG4gICAgICAgICAgICA8aS10ZWNoLWljb24tYnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwibXItMTBcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJzZWxlY3RDb25maWcucmVhZE9ubHkgfHwgbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWQgPyAncmVhZG9ubHktY29sb3InIDogJ2RlZmF1bHQtZm9ybS1pY29uLWNvbG9yJ1wiXG4gICAgICAgICAgICAgICpuZ0lmPVwic2VsZWN0Q29uZmlnLmljb25QcmVmaXggJiYgIXNob3dQbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgIFtpY29uTmFtZV09XCJzZWxlY3RDb25maWcuaWNvblByZWZpeCB8fCAnJ1wiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzZWxlY3RDb25maWcucmVhZE9ubHkgfHwgZmFsc2VcIlxuICAgICAgICAgICAgICBtYXRQcmVmaXhcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvaS10ZWNoLWljb24tYnV0dG9uPlxuICAgICAgICA8L3NwYW4+XG4gIDwvZGl2PlxuXG4gIDwhLS0gUGxhY2Vob2xkZXIvU2VsZWN0ZWQgVmFsdWUgRGlzcGxheSAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dQbGFjZWhvbGRlciAmJiBzZWxlY3RDb25maWcuc2VhcmNoXCI+XG4gICAgPGRpdiBjbGFzcz1cImN1c3RvbS1wbGFjZWhvbGRlclwiXG4gICAgICAgICAqbmdJZj1cIighbmdDb250cm9sPy52YWx1ZSAmJiAhbmdDb250cm9sPy52YWx1ZT8ubGVuZ3RoKSB8fFxuICAgICAgICAgICAgICAgICAoc2VsZWN0Q29uZmlnLm11bHRpcGxlICYmIG5nQ29udHJvbD8udmFsdWUgJiYgIW5nQ29udHJvbD8udmFsdWU/Lmxlbmd0aClcIlxuICAgICAgICAgW25nQ2xhc3NdPVwic2VsZWN0Q29uZmlnLnJlYWRPbmx5IHx8IG5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkID8gJ3JlYWRvbmx5LWNvbG9yJyA6ICdkZWZhdWx0LWZvcm0taWNvbi1jb2xvcidcIlxuICAgID5cbiAgICAgIHt7ICgoc2VsZWN0Q29uZmlnLnBsYWNlaG9sZGVyIHx8ICcnKSB8IHRyYW5zbGF0ZSkgfX1cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLXBsYWNlaG9sZGVyIGN1c3RvbS12YWx1ZSBlbGxpcHNpc1wiXG4gICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgJ3ByLTQyJzogc2VsZWN0Q29uZmlnLmljb25VcmwsXG4gICAgICAgICAgICAgICAgJ3JlYWRvbmx5LWNvbG9yJzogc2VsZWN0Q29uZmlnLnJlYWRPbmx5IHx8IG5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkLFxuICAgICAgICAgICAgICAgICdkZWZhdWx0LWZvcm0taWNvbi1jb2xvcic6ICEoc2VsZWN0Q29uZmlnLnJlYWRPbmx5IHx8IG5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkKVxuICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgKm5nSWY9XCJuZ0NvbnRyb2w/LnZhbHVlXCJcbiAgICA+XG4gICAgICB7eyBzZWxlY3RDb25maWc/Lm11bHRpcGxlID8gKG5nQ29udHJvbC52YWx1ZSB8IGFycmF5VG9TdHJpbmcpIDogc2hvd2luZ1ZhbHVlIH19XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDwhLS0gQ3VzdG9tIEljb24gLS0+XG4gIDxpbWcgY2xhc3M9XCJsZWZ0X2ljb25fbmV3IHBvaW50ZXJcIlxuICAgICAgIChjbGljayk9XCJpY29uQ2xpY2sobWF0U2VsZWN0LCBzZWFyY2hJbnB1dClcIlxuICAgICAgICpuZ0lmPVwiIXNlbGVjdENvbmZpZy5tYXRJY29uTmFtZSAmJiAoc2VsZWN0Q29uZmlnLmljb25VcmwgfHwgc2VsZWN0Q29uZmlnLmFjdGl2ZVN0YXRlSWNvblVybClcIlxuICAgICAgIFtzcmNdPVwiJ2Fzc2V0cy9pbWFnZXMvaWNvbnMvZ2xvYmFsLycgKyAobmdDb250cm9sLmNvbnRyb2w/LnZhbHVlICYmIHNlbGVjdENvbmZpZz8uYWN0aXZlU3RhdGVJY29uVXJsID8gc2VsZWN0Q29uZmlnLmFjdGl2ZVN0YXRlSWNvblVybCA6IHNlbGVjdENvbmZpZy5pY29uVXJsKVwiPlxuXG4gIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGNsYXNzPVwidy0xMDBcIiAoY2xpY2spPVwic2VsZWN0Q29uZmlnPy5zZWFyY2ggPyBmb2N1c1NlYXJjaElucHV0KCkgOiBudWxsXCI+XG4gICAgPCEtLSBNYXRlcmlhbCBTZWxlY3QgLS0+XG4gICAgPG1hdC1zZWxlY3QgI21hdFNlbGVjdD1cIm1hdFNlbGVjdFwiXG4gICAgICAgICAgICAgICAgW3BhbmVsQ2xhc3NdPVwiJ2F1dG9jb21wbGV0ZS10cmFuc2Zvcm0tcGFuZWwtbG9jYXRpb24nXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXBsYWNlaG9sZGVyXT1cIihzZWxlY3RDb25maWcucGxhY2Vob2xkZXIgfHwgJycpIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICBbYXJpYS1sYWJlbF09XCJzZWxlY3RDb25maWcubGFiZWwgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFtpZF09XCJzZWxlY3RDb25maWcuZmlsdHJhdGlvbktleSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgKG9wZW5lZCk9XCJyZWdpc3RlclBhbmVsU2Nyb2xsRXZlbnQobWF0U2VsZWN0KVwiXG4gICAgICAgICAgICAgICAgKG9wZW5lZENoYW5nZSk9XCJvcGVuZWRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cIm5nQ29udHJvbC5jb250cm9sXCJcbiAgICAgICAgICAgICAgICBbbXVsdGlwbGVdPVwic2VsZWN0Q29uZmlnLm11bHRpcGxlXCJcbiAgICAgICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cImVtaXRTZWxlY3Rpb25DaGFuZ2VBbmRDbG9zZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBbZXJyb3JTdGF0ZU1hdGNoZXJdPVwiY3VzdG9tRXJyb3JTdGF0ZU1hdGNoZXJcIlxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCIoc2VsZWN0Q29uZmlnLnBsYWNlaG9sZGVyIHx8ICcnKSB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkXCJcbiAgICA+XG5cbiAgICAgIDwhLS0gTG9hZGluZyBTdGF0ZSAtLT5cbiAgICAgIDxtYXQtb3B0aW9uICpuZ0lmPVwicGVuZGluZ1wiIGNsYXNzPVwib3B0aW9uX2xvYWRpbmcgcmVsYXRpdmVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJlcXVlc3RfbG9hZGluZ1wiPlxuICAgICAgICAgIDxpbWcgbmdTcmM9XCIuL2xvYWRlci5zdmdcIiBhbHQ9XCJcIiBoZWlnaHQ9XCIyMDBcIiB3aWR0aD1cIjIwMFwiLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21hdC1vcHRpb24+XG5cbiAgICAgIDwhLS0gT3B0aW9ucyAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRhPy5sZW5ndGggJiYgIXBlbmRpbmdcIj5cbiAgICAgICAgPCEtLSBBZGQgTmV3IE9wdGlvbiAtLT5cbiAgICAgICAgPG1hdC1vcHRpb24gKm5nSWY9XCJzZWxlY3RDb25maWcuYWN0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicG9pbnRlciBhZGRfbmV3XCJcbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsb3NlUGFuZWxBbmRVbnNldEZvY3VzKCk7YWRkTmV3SXRlbUV2ZW50KClcIj5cbiAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJuZ0NvbnRyb2wuY29udHJvbC5yZXNldChudWxsKTttYXRTZWxlY3QuX29uQmx1cigpO2Nsb3NlUGFuZWxBbmRVbnNldEZvY3VzKCk7YWRkTmV3SXRlbUV2ZW50KClcIj4tLT5cbiAgICAgICAgICA8aS10ZWNoLWJ1dHRvblxuICAgICAgICAgICAgW3R5cGVdPVwiQnV0dG9uVHlwZS5PVVRMSU5FXCJcbiAgICAgICAgICAgIFtmb250SWNvbl09XCInYWRkJ1wiXG4gICAgICAgICAgICBbdGV4dF09XCIoJ2Ryb3Bkb3duX2FkZF9pdGVtJyB8IHRyYW5zbGF0ZSA6IHtJTlBVVF9OQU1FOiAoc2VsZWN0Q29uZmlnLmxhYmVsIHwgdHJhbnNsYXRlKX0pIFwiXG4gICAgICAgICAgICBbY3VzdG9tQ2xhc3NdPVwiJ3ctMTAwIG1hdC1hdXRvY29tcGxldGUtc2VsZWN0LWJ1dHRvbidcIj5cbiAgICAgICAgICA8L2ktdGVjaC1idXR0b24+XG4gICAgICAgIDwvbWF0LW9wdGlvbj5cblxuICAgICAgICA8IS0tIFJlZ3VsYXIgT3B0aW9ucyAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzZWxlY3RDb25maWc/LmNoYW5nZVRleHQgJiYgZGF0YS5sZW5ndGhcIj5cbiAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkYXRhXCJcbiAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwic2VsZWN0Q29uZmlnLnZhbHVlQnlLZXkgfCBnZXRWYWx1ZUJ5S2V5RnJvbU9iamVjdCA6IGl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgIChtb3VzZXVwKT1cIm9wdGlvbkNsaWNrKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cInByZXZlbnREZWZhdWx0KCRldmVudClcIj5cbiAgICAgICAgICAgIHt7ICgoc2VsZWN0Q29uZmlnLnZhbHVlVG9TaG93QnlLZXkgfCBnZXRWYWx1ZUJ5S2V5RnJvbU9iamVjdCA6IGl0ZW0gOiBzZWxlY3RDb25maWcudmFsdWVUb1Nob3dCeVBhcmFtIDogc2VsZWN0Q29uZmlnLndpdGhQYXJhbVN5bWJvbCkgfHwgJycpIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8IS0tIEN1c3RvbSBUZXh0IE9wdGlvbnMgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RDb25maWc/LmNoYW5nZVRleHQgJiYgZGF0YS5sZW5ndGhcIj5cbiAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkYXRhXCJcbiAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwic2VsZWN0Q29uZmlnLnZhbHVlQnlLZXkgfCBnZXRWYWx1ZUJ5S2V5RnJvbU9iamVjdCA6IGl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgIChtb3VzZXVwKT1cIm9wdGlvbkNsaWNrKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cInByZXZlbnREZWZhdWx0KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzZWxlY3RDb25maWc/LmNoYW5nZVRleHRbaXRlbV0uZGlzYWJsZWRcIj5cbiAgICAgICAgICAgIHt7IHNlbGVjdENvbmZpZz8uY2hhbmdlVGV4dFtpdGVtXS50ZXh0IHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8IS0tIEVtcHR5IFN0YXRlIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFwZW5kaW5nICYmICFkYXRhLmxlbmd0aFwiPlxuICAgICAgICA8bWF0LW9wdGlvbiBkaXNhYmxlZCBjbGFzcz1cImVtcHR5X3NlbGVjdGlvbl9zdGF0ZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb25zX2FuZF90aWxlIGFkZF9uZXcgZmxleF9jb2x1bW4gdy0xMDAgZmxleF9jZW50ZXJfYWxpZ25fY2VudGVyXCI+XG4gICAgICAgICAgICA8c3Bhbj57eyAnZHJvcGRvd25fbm9faXRlbXMnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTEwXCI+XG4gICAgICAgICAgICAgIDxpLXRlY2gtYnV0dG9uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJzZWxlY3RDb25maWc/LmFjdGlvbnNcIlxuICAgICAgICAgICAgICAgIFt0eXBlXT1cIkJ1dHRvblR5cGUuT1VUTElORVwiXG4gICAgICAgICAgICAgICAgKGJ1dHRvbkNsaWNrKT1cImNsb3NlUGFuZWxBbmRVbnNldEZvY3VzKCk7YWRkTmV3SXRlbUV2ZW50KClcIlxuICAgICAgICAgICAgICAgIFtjdXN0b21DbGFzc109XCInbWF0LWF1dG9jb21wbGV0ZS1zZWxlY3QtYnV0dG9uJ1wiXG4gICAgICAgICAgICAgICAgW2ZvbnRJY29uXT1cIidhZGQnXCJcbiAgICAgICAgICAgICAgICBbdGV4dF09XCIoJ2Ryb3Bkb3duX2FkZF9pdGVtJyB8IHRyYW5zbGF0ZSA6IHtJTlBVVF9OQU1FOiAoc2VsZWN0Q29uZmlnLmxhYmVsIHwgdHJhbnNsYXRlKX0pIFwiPlxuICAgICAgICAgICAgICA8L2ktdGVjaC1idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9tYXQtc2VsZWN0PlxuICAgIDxtYXQtaWNvbiAqbmdJZj1cInNlbGVjdENvbmZpZy5pY29uUHJlZml4XCJcbiAgICAgICAgICAgICAgbWF0UHJlZml4XG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgJ3JlYWRvbmx5LWNvbG9yJyA6ICFzZWxlY3RDb25maWdbJ2ljb25QcmVmaXhDb2xvciddICYmIChzZWxlY3RDb25maWcucmVhZE9ubHkgfHwgbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWQpLFxuICAgICAgICAgICAgICAgICAgICAnZGVmYXVsdC1mb3JtLWljb24tY29sb3InIDogIXNlbGVjdENvbmZpZ1snaWNvblByZWZpeENvbG9yJ10gJiYgIShzZWxlY3RDb25maWcucmVhZE9ubHkgfHwgbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWQpXG4gICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCIoKHNlbGVjdENvbmZpZz8uWydpY29uUHJlZml4VG9vbHRpcCddIHx8ICcnKSB8IHRyYW5zbGF0ZSlcIlxuICAgID57eyBzZWxlY3RDb25maWcuaWNvblByZWZpeCB9fVxuICAgIDwvbWF0LWljb24+XG5cbiAgICA8bWF0LWljb24gKm5nSWY9XCJzZWxlY3RDb25maWdbJ2ljb25QcmVmaXhTdmcnXVwiXG4gICAgICAgICAgICAgIG1hdFByZWZpeFxuICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCIoKHNlbGVjdENvbmZpZz8uWydpY29uUHJlZml4VG9vbHRpcCddIHx8ICcnKSB8IHRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgICBbc3ZnSWNvbl09XCJzZWxlY3RDb25maWdbJ2ljb25QcmVmaXhTdmcnXSB8fCAnJ1wiXG4gICAgPjwvbWF0LWljb24+XG5cbiAgICA8aS10ZWNoLWljb24tYnV0dG9uXG4gICAgICAqbmdJZj1cInNlbGVjdENvbmZpZy5zZWFyY2ggJiYgc2VsZWN0Q29uZmlnLmNsZWFyYWJsZSAmJiAhbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWQgJiYgISFuZ0NvbnRyb2wuY29udHJvbC52YWx1ZVwiXG4gICAgICBpY29uTmFtZT1cImNhbmNlbFwiXG4gICAgICBtYXRTdWZmaXhcbiAgICAgIFtkaXNhYmxlZF09XCJzZWxlY3RDb25maWcucmVhZE9ubHkgfHwgZmFsc2VcIlxuICAgICAgW25nQ2xhc3NdPVwic2VsZWN0Q29uZmlnLnJlYWRPbmx5IHx8IG5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkID8gJ3JlYWRvbmx5LWNvbG9yJyA6ICdkZWZhdWx0LWZvcm0taWNvbi1jb2xvcidcIlxuICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTskZXZlbnQucHJldmVudERlZmF1bHQoKTtuZ0NvbnRyb2wuY29udHJvbC5yZXNldChudWxsKTttYXRTZWxlY3QuX29uQmx1cigpO2Nsb3NlUGFuZWxBbmRVbnNldEZvY3VzKClcIlxuICAgID5cbiAgICA8L2ktdGVjaC1pY29uLWJ1dHRvbj5cbiAgICA8bWF0LWljb25cbiAgICAgIG1hdFN1ZmZpeFxuICAgICAgY2xhc3M9XCJzZWxlY3QtYXJyb3dcIlxuICAgICAgW2NsYXNzLm9wZW5dPVwibWF0U2VsZWN0LnBhbmVsT3BlblwiXG4gICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAncmVhZG9ubHktY29sb3InOiBzZWxlY3RDb25maWcucmVhZE9ubHkgfHwgbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWQsXG4gICAgICAgICAgICAnZGVmYXVsdC1mb3JtLWljb24tY29sb3InOiAhKHNlbGVjdENvbmZpZy5yZWFkT25seSB8fCBuZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlZCksXG4gICAgICAgICAgICAnbXQtOCc6ICEhbmdDb250cm9sLmNvbnRyb2wudmFsdWUgJiYgc2VsZWN0Q29uZmlnLmNsZWFyYWJsZVxuICAgICAgICAgfVwiXG4gICAgPlxuICAgICAga2V5Ym9hcmRfYXJyb3dfZG93blxuICAgIDwvbWF0LWljb24+XG4gICAgPCEtLSBFcnJvciBNZXNzYWdlIC0tPlxuICAgIDxtYXQtZXJyb3IgKm5nSWY9XCIhIShuZ0NvbnRyb2wuY29udHJvbC5lcnJvcnMgJiYgc3VibWl0VmFsdWUpXCI+XG4gICAgICB7eyBuZ0NvbnRyb2wuY29udHJvbCB8IGdlbmVyYXRlRXJyb3JNZXNzYWdlcyA6IHNlbGVjdENvbmZpZy5sYWJlbCA6IHNlbGVjdENvbmZpZy5kZWZhdWx0UGF0dGVybktleSB9fVxuICAgIDwvbWF0LWVycm9yPlxuICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gIDwhLS0gUmVzZXQgQnV0dG9uIC0tPlxuICA8aS10ZWNoLWNsZWFyLXZhbHVlICpuZ0lmPVwic2VsZWN0Q29uZmlnLnJlc2V0XCIgKHJlc2V0KT1cInJlc2V0VmFsdWUoKVwiPjwvaS10ZWNoLWNsZWFyLXZhbHVlPlxuPC9kaXY+XG4iXX0=
|
|
@@ -79,7 +79,7 @@ export class ButtonComponent {
|
|
|
79
79
|
NgxMaskPipe,
|
|
80
80
|
TranslatePipe,
|
|
81
81
|
TranslateService
|
|
82
|
-
], ngImport: i0, template: "<button *ngIf=\"[ButtonType.FILLED,ButtonType.WARNING].includes(type)\"\
|
|
82
|
+
], ngImport: i0, template: "<button *ngIf=\"[ButtonType.FILLED,ButtonType.WARNING].includes(type)\"\n mat-flat-button\n [attr.data-cy]=\"data_cy\"\n [color]=\"type === ButtonType.WARNING ? 'warn' : color\"\n [class.activated]=\"activated\"\n [ngClass]=\"(customClass || '')\"\n [disabled]=\"disabled || submit\"\n (click)=\"onClick($event)\"\n>\n <span *ngIf=\"submit\" class=\"spinner-overlay\">\n <mat-spinner diameter=\"16\"></mat-spinner>\n </span>\n <mat-icon *ngIf=\"fontIcon && !submit\">{{fontIcon}}</mat-icon>\n <mat-icon *ngIf=\"svgIcon && !submit\" [svgIcon]=\"svgIcon\"></mat-icon>\n <span>{{text | translate}}</span>\n</button>\n<button *ngIf=\"[ButtonType.TONAL,ButtonType.TEXT].includes(type)\"\n mat-button\n [attr.data-cy]=\"data_cy\"\n [ngClass]=\"(type === ButtonType.TONAL ? 'tertiary ' : '') + (customClass || '')\"\n [class.activated]=\"activated\"\n [disabled]=\"disabled || submit\"\n (click)=\"onClick($event)\"\n>\n <span *ngIf=\"submit\" class=\"spinner-overlay\">\n <mat-spinner diameter=\"16\"></mat-spinner>\n </span>\n <mat-icon *ngIf=\"fontIcon && !submit\">{{fontIcon}}</mat-icon>\n <mat-icon *ngIf=\"svgIcon && !submit\" [svgIcon]=\"svgIcon\"></mat-icon>\n\n <span>{{text | translate}}</span>\n</button>\n<button *ngIf=\"type === ButtonType.OUTLINE\"\n [color]=\"color\"\n mat-stroked-button\n [attr.data-cy]=\"data_cy\"\n [ngClass]=\"(customClass || '') \"\n [disabled]=\"disabled || submit\"\n (click)=\"onClick($event)\"\n [class.activated]=\"activated\"\n>\n <span *ngIf=\"submit\" class=\"spinner-overlay\">\n <mat-spinner diameter=\"16\"></mat-spinner>\n </span>\n <mat-icon *ngIf=\"fontIcon && !submit\" >{{fontIcon}}</mat-icon>\n <mat-icon *ngIf=\"svgIcon && !submit\" [svgIcon]=\"svgIcon\"></mat-icon>\n <span>{{text | translate}}</span>\n</button>\n", styles: [""], dependencies: [{ kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
|
|
83
83
|
}
|
|
84
84
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ButtonComponent, decorators: [{
|
|
85
85
|
type: Component,
|
|
@@ -95,7 +95,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
95
95
|
NgxMaskPipe,
|
|
96
96
|
TranslatePipe,
|
|
97
97
|
TranslateService
|
|
98
|
-
], template: "<button *ngIf=\"[ButtonType.FILLED,ButtonType.WARNING].includes(type)\"\
|
|
98
|
+
], template: "<button *ngIf=\"[ButtonType.FILLED,ButtonType.WARNING].includes(type)\"\n mat-flat-button\n [attr.data-cy]=\"data_cy\"\n [color]=\"type === ButtonType.WARNING ? 'warn' : color\"\n [class.activated]=\"activated\"\n [ngClass]=\"(customClass || '')\"\n [disabled]=\"disabled || submit\"\n (click)=\"onClick($event)\"\n>\n <span *ngIf=\"submit\" class=\"spinner-overlay\">\n <mat-spinner diameter=\"16\"></mat-spinner>\n </span>\n <mat-icon *ngIf=\"fontIcon && !submit\">{{fontIcon}}</mat-icon>\n <mat-icon *ngIf=\"svgIcon && !submit\" [svgIcon]=\"svgIcon\"></mat-icon>\n <span>{{text | translate}}</span>\n</button>\n<button *ngIf=\"[ButtonType.TONAL,ButtonType.TEXT].includes(type)\"\n mat-button\n [attr.data-cy]=\"data_cy\"\n [ngClass]=\"(type === ButtonType.TONAL ? 'tertiary ' : '') + (customClass || '')\"\n [class.activated]=\"activated\"\n [disabled]=\"disabled || submit\"\n (click)=\"onClick($event)\"\n>\n <span *ngIf=\"submit\" class=\"spinner-overlay\">\n <mat-spinner diameter=\"16\"></mat-spinner>\n </span>\n <mat-icon *ngIf=\"fontIcon && !submit\">{{fontIcon}}</mat-icon>\n <mat-icon *ngIf=\"svgIcon && !submit\" [svgIcon]=\"svgIcon\"></mat-icon>\n\n <span>{{text | translate}}</span>\n</button>\n<button *ngIf=\"type === ButtonType.OUTLINE\"\n [color]=\"color\"\n mat-stroked-button\n [attr.data-cy]=\"data_cy\"\n [ngClass]=\"(customClass || '') \"\n [disabled]=\"disabled || submit\"\n (click)=\"onClick($event)\"\n [class.activated]=\"activated\"\n>\n <span *ngIf=\"submit\" class=\"spinner-overlay\">\n <mat-spinner diameter=\"16\"></mat-spinner>\n </span>\n <mat-icon *ngIf=\"fontIcon && !submit\" >{{fontIcon}}</mat-icon>\n <mat-icon *ngIf=\"svgIcon && !submit\" [svgIcon]=\"svgIcon\"></mat-icon>\n <span>{{text | translate}}</span>\n</button>\n" }]
|
|
99
99
|
}], ctorParameters: () => [], propDecorators: { text: [{
|
|
100
100
|
type: Input
|
|
101
101
|
}], data_cy: [{
|
|
@@ -119,4 +119,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
119
119
|
}], buttonClick: [{
|
|
120
120
|
type: Output
|
|
121
121
|
}] } });
|
|
122
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
122
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9idXR0b24vYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9idXR0b24vYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ25ELE9BQU8sRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDdEUsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDckYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2hFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7QUFFeEQ7O0dBRUc7QUFxQkgsTUFBTSxPQUFPLGVBQWU7SUE2RDFCO1FBNURBOztXQUVHO1FBQ00sU0FBSSxHQUFXLEVBQUUsQ0FBQztRQUUzQjs7V0FFRztRQUNNLFlBQU8sR0FBVyxFQUFFLENBQUM7UUFFOUI7O1dBRUc7UUFDTSxhQUFRLEdBQVcsRUFBRSxDQUFDO1FBRS9COztXQUVHO1FBQ00sWUFBTyxHQUFXLEVBQUUsQ0FBQztRQUU5Qjs7V0FFRztRQUNNLFNBQUksR0FBZSxVQUFVLENBQUMsTUFBTSxDQUFDO1FBRTlDOztXQUVHO1FBQ00sZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFFbEM7O1dBRUc7UUFDTSxXQUFNLEdBQVksS0FBSyxDQUFDO1FBRWpDOztXQUVHO1FBQ00sYUFBUSxHQUFZLEtBQUssQ0FBQztRQUVuQzs7V0FFRztRQUNNLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFFcEM7O1dBRUc7UUFDTSxVQUFLLEdBQXVCLFNBQVMsQ0FBQztRQUUvQzs7V0FFRztRQUNPLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUVqRDs7V0FFRztRQUNnQixlQUFVLEdBQUcsVUFBVSxDQUFDO0lBRTVCLENBQUM7SUFFaEI7Ozs7T0FJRztJQUNILE9BQU8sQ0FBQyxLQUFpQjtRQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzFCLENBQUM7SUFDSCxDQUFDOytHQXhFVSxlQUFlO21HQUFmLGVBQWUsdVRBUGY7WUFDVCxnQkFBZ0I7WUFDaEIsV0FBVztZQUNYLGFBQWE7WUFDYixnQkFBZ0I7U0FDakIsMEJDOUJILHk4REFnREEsMEREaENJLFNBQVMsaUxBQ1QsT0FBTyxvRkFDUCxrQkFBa0IsK0tBQ2xCLElBQUksNEZBQ0osYUFBYSxtTEFDYixlQUFlOzs0RkFXTixlQUFlO2tCQXBCM0IsU0FBUzsrQkFDRSxlQUFlLGNBQ2IsSUFBSSxXQUNQO3dCQUNQLFNBQVM7d0JBQ1QsT0FBTzt3QkFDUCxrQkFBa0I7d0JBQ2xCLElBQUk7d0JBQ0osYUFBYTt3QkFDYixlQUFlO3FCQUNoQixhQUdVO3dCQUNULGdCQUFnQjt3QkFDaEIsV0FBVzt3QkFDWCxhQUFhO3dCQUNiLGdCQUFnQjtxQkFDakI7d0RBTVEsSUFBSTtzQkFBWixLQUFLO2dCQUtHLE9BQU87c0JBQWYsS0FBSztnQkFLRyxRQUFRO3NCQUFoQixLQUFLO2dCQUtHLE9BQU87c0JBQWYsS0FBSztnQkFLRyxJQUFJO3NCQUFaLEtBQUs7Z0JBS0csV0FBVztzQkFBbkIsS0FBSztnQkFLRyxNQUFNO3NCQUFkLEtBQUs7Z0JBS0csUUFBUTtzQkFBaEIsS0FBSztnQkFLRyxTQUFTO3NCQUFqQixLQUFLO2dCQUtHLEtBQUs7c0JBQWIsS0FBSztnQkFLSSxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01hdEJ1dHRvbn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2J1dHRvblwiO1xuaW1wb3J0IHtOZ0NsYXNzLCBOZ0lmfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQge01hdFByb2dyZXNzU3Bpbm5lcn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXJcIjtcbmltcG9ydCB7TWF0SWNvbk1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2ljb25cIjtcbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVQaXBlLCBUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xuaW1wb3J0IHsgQnV0dG9uVHlwZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvYnV0dG9uLXR5cGVzLmVudW0nO1xuaW1wb3J0IHtOZ3hNYXNrRGlyZWN0aXZlLCBOZ3hNYXNrUGlwZSB9IGZyb20gJ25neC1tYXNrJztcblxuLyoqXG4gKiBBIHJldXNhYmxlIGJ1dHRvbiBjb21wb25lbnQgd2l0aCBNYXRlcmlhbCBEZXNpZ24gc3R5bGluZyBhbmQgY3VzdG9tIGZ1bmN0aW9uYWxpdHkuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ktdGVjaC1idXR0b24nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTWF0QnV0dG9uLFxuICAgIE5nQ2xhc3MsXG4gICAgTWF0UHJvZ3Jlc3NTcGlubmVyLFxuICAgIE5nSWYsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGVcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2J1dHRvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9idXR0b24uY29tcG9uZW50LmNzcycsXG4gIHByb3ZpZGVyczogW1xuICAgIE5neE1hc2tEaXJlY3RpdmUsXG4gICAgTmd4TWFza1BpcGUsXG4gICAgVHJhbnNsYXRlUGlwZSxcbiAgICBUcmFuc2xhdGVTZXJ2aWNlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgQnV0dG9uQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIFRoZSB0ZXh0IGRpc3BsYXllZCBpbnNpZGUgdGhlIGJ1dHRvbi5cbiAgICovXG4gIEBJbnB1dCgpIHRleHQ6IHN0cmluZyA9ICcnO1xuXG4gIC8qKlxuICAgKiBEYXRhIGF0dHJpYnV0ZSB1c2VkIGZvciBDeXByZXNzIG9yIG90aGVyIHRlc3RpbmcgZnJhbWV3b3Jrcy5cbiAgICovXG4gIEBJbnB1dCgpIGRhdGFfY3k6IHN0cmluZyA9ICcnO1xuXG4gIC8qKlxuICAgKiBGb250IGljb24gY2xhc3MgZm9yIGRpc3BsYXlpbmcgYW4gaWNvbiAoZS5nLiwgTWF0ZXJpYWwgSWNvbnMpLlxuICAgKi9cbiAgQElucHV0KCkgZm9udEljb246IHN0cmluZyA9ICcnO1xuXG4gIC8qKlxuICAgKiBTVkcgaWNvbiBuYW1lIGZvciBkaXNwbGF5aW5nIGFuIFNWRyBpY29uLlxuICAgKi9cbiAgQElucHV0KCkgc3ZnSWNvbjogc3RyaW5nID0gJyc7XG5cbiAgLyoqXG4gICAqIERlZmluZXMgdGhlIHR5cGUgb2YgYnV0dG9uIChlLmcuLCBgRklMTEVEYCwgYE9VVExJTkVEYCkuXG4gICAqL1xuICBASW5wdXQoKSB0eXBlOiBCdXR0b25UeXBlID0gQnV0dG9uVHlwZS5GSUxMRUQ7XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgY3VzdG9tIGNsYXNzZXMgdG8gc3R5bGUgdGhlIGJ1dHRvbi5cbiAgICovXG4gIEBJbnB1dCgpIGN1c3RvbUNsYXNzOiBzdHJpbmcgPSAnJztcblxuICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIGJ1dHRvbiBhY3RzIGFzIGEgc3VibWl0IGJ1dHRvbi5cbiAgICovXG4gIEBJbnB1dCgpIHN1Ym1pdDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgYnV0dG9uIGlzIGRpc2FibGVkIGFuZCBjYW5ub3QgYmUgY2xpY2tlZC5cbiAgICovXG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBidXR0b24gaXMgY3VycmVudGx5IGFjdGl2YXRlZC5cbiAgICovXG4gIEBJbnB1dCgpIGFjdGl2YXRlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUaGUgY29sb3Igb2YgdGhlIGJ1dHRvbiAoZS5nLiwgYHByaW1hcnlgLCBgd2FybmApLlxuICAgKi9cbiAgQElucHV0KCkgY29sb3I6ICdwcmltYXJ5JyB8ICd3YXJuJyA9ICdwcmltYXJ5JztcblxuICAvKipcbiAgICogRW1pdHMgYW4gZXZlbnQgd2hlbiB0aGUgYnV0dG9uIGlzIGNsaWNrZWQuXG4gICAqL1xuICBAT3V0cHV0KCkgYnV0dG9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIEVudW0gcmVmZXJlbmNlIGZvciBgQnV0dG9uVHlwZWAgdG8gdXNlIGluIHRlbXBsYXRlcy5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBCdXR0b25UeXBlID0gQnV0dG9uVHlwZTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgdGhlIGJ1dHRvbiBjbGljayBldmVudC5cbiAgICpcbiAgICogQHBhcmFtIGV2ZW50IC0gVGhlIG1vdXNlIGV2ZW50IHRyaWdnZXJlZCBieSBjbGlja2luZyB0aGUgYnV0dG9uLlxuICAgKi9cbiAgb25DbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCAmJiAhdGhpcy5zdWJtaXQpIHtcbiAgICAgIHRoaXMuYnV0dG9uQ2xpY2suZW1pdCgpO1xuICAgIH1cbiAgfVxufVxuIiwiPGJ1dHRvbiAqbmdJZj1cIltCdXR0b25UeXBlLkZJTExFRCxCdXR0b25UeXBlLldBUk5JTkddLmluY2x1ZGVzKHR5cGUpXCJcbiAgICAgICAgbWF0LWZsYXQtYnV0dG9uXG4gICAgICAgIFthdHRyLmRhdGEtY3ldPVwiZGF0YV9jeVwiXG4gICAgICAgIFtjb2xvcl09XCJ0eXBlID09PSBCdXR0b25UeXBlLldBUk5JTkcgPyAnd2FybicgOiBjb2xvclwiXG4gICAgICAgIFtjbGFzcy5hY3RpdmF0ZWRdPVwiYWN0aXZhdGVkXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiKGN1c3RvbUNsYXNzIHx8ICcnKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBzdWJtaXRcIlxuICAgICAgICAoY2xpY2spPVwib25DbGljaygkZXZlbnQpXCJcbj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJzdWJtaXRcIiBjbGFzcz1cInNwaW5uZXItb3ZlcmxheVwiPlxuICAgICAgICAgICAgPG1hdC1zcGlubmVyIGRpYW1ldGVyPVwiMTZcIj48L21hdC1zcGlubmVyPlxuICAgICAgICA8L3NwYW4+XG4gIDxtYXQtaWNvbiAqbmdJZj1cImZvbnRJY29uICYmICFzdWJtaXRcIj57e2ZvbnRJY29ufX08L21hdC1pY29uPlxuICA8bWF0LWljb24gKm5nSWY9XCJzdmdJY29uICYmICFzdWJtaXRcIiBbc3ZnSWNvbl09XCJzdmdJY29uXCI+PC9tYXQtaWNvbj5cbiAgPHNwYW4+e3t0ZXh0IHwgdHJhbnNsYXRlfX08L3NwYW4+XG48L2J1dHRvbj5cbjxidXR0b24gKm5nSWY9XCJbQnV0dG9uVHlwZS5UT05BTCxCdXR0b25UeXBlLlRFWFRdLmluY2x1ZGVzKHR5cGUpXCJcbiAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICBbYXR0ci5kYXRhLWN5XT1cImRhdGFfY3lcIlxuICAgICAgICBbbmdDbGFzc109XCIodHlwZSA9PT0gQnV0dG9uVHlwZS5UT05BTCA/ICd0ZXJ0aWFyeSAnIDogJycpICsgKGN1c3RvbUNsYXNzIHx8ICcnKVwiXG4gICAgICAgIFtjbGFzcy5hY3RpdmF0ZWRdPVwiYWN0aXZhdGVkXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHN1Ym1pdFwiXG4gICAgICAgIChjbGljayk9XCJvbkNsaWNrKCRldmVudClcIlxuPlxuICAgICAgICA8c3BhbiAqbmdJZj1cInN1Ym1pdFwiICBjbGFzcz1cInNwaW5uZXItb3ZlcmxheVwiPlxuICAgICAgICAgICAgPG1hdC1zcGlubmVyIGRpYW1ldGVyPVwiMTZcIj48L21hdC1zcGlubmVyPlxuICAgICAgICA8L3NwYW4+XG4gIDxtYXQtaWNvbiAqbmdJZj1cImZvbnRJY29uICYmICFzdWJtaXRcIj57e2ZvbnRJY29ufX08L21hdC1pY29uPlxuICA8bWF0LWljb24gKm5nSWY9XCJzdmdJY29uICYmICFzdWJtaXRcIiBbc3ZnSWNvbl09XCJzdmdJY29uXCI+PC9tYXQtaWNvbj5cblxuICA8c3Bhbj57e3RleHQgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cbjwvYnV0dG9uPlxuPGJ1dHRvbiAqbmdJZj1cInR5cGUgPT09IEJ1dHRvblR5cGUuT1VUTElORVwiXG4gICAgICAgIFtjb2xvcl09XCJjb2xvclwiXG4gICAgICAgIG1hdC1zdHJva2VkLWJ1dHRvblxuICAgICAgICBbYXR0ci5kYXRhLWN5XT1cImRhdGFfY3lcIlxuICAgICAgICBbbmdDbGFzc109XCIoY3VzdG9tQ2xhc3MgfHwgJycpIFwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBzdWJtaXRcIlxuICAgICAgICAoY2xpY2spPVwib25DbGljaygkZXZlbnQpXCJcbiAgICAgICAgW2NsYXNzLmFjdGl2YXRlZF09XCJhY3RpdmF0ZWRcIlxuPlxuICAgICAgICA8c3BhbiAqbmdJZj1cInN1Ym1pdFwiICBjbGFzcz1cInNwaW5uZXItb3ZlcmxheVwiPlxuICAgICAgICAgICAgPG1hdC1zcGlubmVyIGRpYW1ldGVyPVwiMTZcIj48L21hdC1zcGlubmVyPlxuICAgICAgICA8L3NwYW4+XG4gIDxtYXQtaWNvbiAqbmdJZj1cImZvbnRJY29uICYmICFzdWJtaXRcIiA+e3tmb250SWNvbn19PC9tYXQtaWNvbj5cbiAgPG1hdC1pY29uICpuZ0lmPVwic3ZnSWNvbiAmJiAhc3VibWl0XCIgW3N2Z0ljb25dPVwic3ZnSWNvblwiPjwvbWF0LWljb24+XG4gIDxzcGFuPnt7dGV4dCB8IHRyYW5zbGF0ZX19PC9zcGFuPlxuPC9idXR0b24+XG4iXX0=
|
|
@@ -6,20 +6,20 @@ export class ClearValueComponent {
|
|
|
6
6
|
this.reset = new EventEmitter();
|
|
7
7
|
}
|
|
8
8
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ClearValueComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ClearValueComponent, isStandalone: true, selector: "i-tech-clear-value", inputs: { className: "className", additionalClass: "additionalClass" }, outputs: { reset: "reset" }, ngImport: i0, template: `<img
|
|
10
|
-
class="pointer"
|
|
11
|
-
[ngClass]="className || 'standard'"
|
|
12
|
-
(click)="reset.emit()"
|
|
13
|
-
ngSrc="./ic_close.svg"
|
|
9
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ClearValueComponent, isStandalone: true, selector: "i-tech-clear-value", inputs: { className: "className", additionalClass: "additionalClass" }, outputs: { reset: "reset" }, ngImport: i0, template: `<img
|
|
10
|
+
class="pointer"
|
|
11
|
+
[ngClass]="className || 'standard'"
|
|
12
|
+
(click)="reset.emit()"
|
|
13
|
+
ngSrc="./ic_close.svg"
|
|
14
14
|
height="24" width="24" alt=""/>`, isInline: true, styles: ["img{position:absolute;width:15px;height:15px}.big{width:25px;height:25px}.range_date{right:-65px;top:15px}.standard{right:-20px;top:40px}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgOptimizedImage, selector: "img[ngSrc]", inputs: ["ngSrc", "ngSrcset", "sizes", "width", "height", "loading", "priority", "loaderParams", "disableOptimizedSrcset", "fill", "placeholder", "placeholderConfig", "src", "srcset"] }] }); }
|
|
15
15
|
}
|
|
16
16
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ClearValueComponent, decorators: [{
|
|
17
17
|
type: Component,
|
|
18
|
-
args: [{ selector: 'i-tech-clear-value', template: `<img
|
|
19
|
-
class="pointer"
|
|
20
|
-
[ngClass]="className || 'standard'"
|
|
21
|
-
(click)="reset.emit()"
|
|
22
|
-
ngSrc="./ic_close.svg"
|
|
18
|
+
args: [{ selector: 'i-tech-clear-value', template: `<img
|
|
19
|
+
class="pointer"
|
|
20
|
+
[ngClass]="className || 'standard'"
|
|
21
|
+
(click)="reset.emit()"
|
|
22
|
+
ngSrc="./ic_close.svg"
|
|
23
23
|
height="24" width="24" alt=""/>`, imports: [
|
|
24
24
|
NgClass,
|
|
25
25
|
NgOptimizedImage
|
|
@@ -31,4 +31,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
31
31
|
}], reset: [{
|
|
32
32
|
type: Output
|
|
33
33
|
}] } });
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xlYXItdmFsdWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NsZWFyLXZhbHVlL2NsZWFyLXZhbHVlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQzs7QUFzQzFELE1BQU0sT0FBTyxtQkFBbUI7SUFwQ2hDO1FBdUNZLFVBQUssR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO0tBQzNDOytHQUpZLG1CQUFtQjttR0FBbkIsbUJBQW1CLG1MQWxDcEI7Ozs7O29DQUt3QixxTkF3QmhDLE9BQU8sb0ZBQ1AsZ0JBQWdCOzs0RkFJUCxtQkFBbUI7a0JBcEMvQixTQUFTOytCQUNFLG9CQUFvQixZQUNwQjs7Ozs7b0NBS3dCLFdBdUJ6Qjt3QkFDUCxPQUFPO3dCQUNQLGdCQUFnQjtxQkFDakIsY0FDVyxJQUFJOzhCQUdQLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDSSxLQUFLO3NCQUFkLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmdDbGFzcywgTmdPcHRpbWl6ZWRJbWFnZX0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpLXRlY2gtY2xlYXItdmFsdWUnLFxuICB0ZW1wbGF0ZTogYDxpbWdcbiAgICBjbGFzcz1cInBvaW50ZXJcIlxuICAgIFtuZ0NsYXNzXT1cImNsYXNzTmFtZSB8fCAnc3RhbmRhcmQnXCJcbiAgICAoY2xpY2spPVwicmVzZXQuZW1pdCgpXCJcbiAgICBuZ1NyYz1cIi4vaWNfY2xvc2Uuc3ZnXCJcbiAgICBoZWlnaHQ9XCIyNFwiIHdpZHRoPVwiMjRcIiBhbHQ9XCJcIi8+YCxcbiAgc3R5bGVzOiBbYFxuICAgIGltZyB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB3aWR0aDogMTVweDtcbiAgICAgIGhlaWdodDogMTVweDtcbiAgICB9XG5cbiAgICAuYmlnIHtcbiAgICAgIHdpZHRoOiAyNXB4O1xuICAgICAgaGVpZ2h0OiAyNXB4O1xuICAgIH1cblxuICAgIC5yYW5nZV9kYXRlIHtcbiAgICAgIHJpZ2h0OiAtNjVweDtcbiAgICAgIHRvcDogMTVweDtcbiAgICB9XG5cbiAgICAuc3RhbmRhcmQge1xuICAgICAgcmlnaHQ6IC0yMHB4O1xuICAgICAgdG9wOiA0MHB4O1xuICAgIH1cbiAgYF0sXG4gIGltcG9ydHM6IFtcbiAgICBOZ0NsYXNzLFxuICAgIE5nT3B0aW1pemVkSW1hZ2VcbiAgXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBDbGVhclZhbHVlQ29tcG9uZW50IHtcbiAgQElucHV0KCkgY2xhc3NOYW1lITogc3RyaW5nO1xuICBASW5wdXQoKSBhZGRpdGlvbmFsQ2xhc3MhOiBzdHJpbmc7XG4gIEBPdXRwdXQoKSByZXNldCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xufVxuIl19
|