i-tech-shared-components 1.0.5 → 1.0.7
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/esm2022/lib/components/autocomplete-select/autocomplete-select.component.mjs +3 -3
- package/esm2022/lib/components/text/text-input.component.mjs +3 -3
- package/fesm2022/i-tech-shared-components.mjs +4 -4
- package/fesm2022/i-tech-shared-components.mjs.map +1 -1
- package/package.json +1 -1
- package/theme/_form_fields.scss +6 -0
|
@@ -342,7 +342,7 @@ export class AutocompleteSelectComponent {
|
|
|
342
342
|
searchInput?.nativeElement?.focus();
|
|
343
343
|
}
|
|
344
344
|
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 }); }
|
|
345
|
-
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]=\"{'readonly-color' : selectConfig.readOnly || ngControl.control.disabled}\">\r\n {{ selectConfig.label | translate }}\r\n </mat-label>\r\n <span *ngIf=\"selectConfig.required\" class=\"required-input\" [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 }] }); }
|
|
345
|
+
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 }] }); }
|
|
346
346
|
}
|
|
347
347
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AutocompleteSelectComponent, decorators: [{
|
|
348
348
|
type: Component,
|
|
@@ -363,7 +363,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
363
363
|
GenerateErrorMessagesPipe,
|
|
364
364
|
ClearValueComponent,
|
|
365
365
|
MatFormFieldModule
|
|
366
|
-
], 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]=\"{'readonly-color' : selectConfig.readOnly || ngControl.control.disabled}\">\r\n {{ selectConfig.label | translate }}\r\n </mat-label>\r\n <span *ngIf=\"selectConfig.required\" class=\"required-input\" [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"] }]
|
|
366
|
+
], 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"] }]
|
|
367
367
|
}], ctorParameters: () => [{ type: i1.InputService }], propDecorators: { matSelect: [{
|
|
368
368
|
type: ViewChild,
|
|
369
369
|
args: ['matSelect']
|
|
@@ -389,4 +389,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
389
389
|
type: HostListener,
|
|
390
390
|
args: ['document:visibilitychange']
|
|
391
391
|
}] } });
|
|
392
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWQtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlLXNlbGVjdC9hdXRvY29tcGxldGUtc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9hdXRvY29tcGxldGUtc2VsZWN0L2F1dG9jb21wbGV0ZS1zZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBR0EsWUFBWSxFQUMzQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQVksZUFBZSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFFcEUsT0FBTyxFQUFrQixtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXBFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNoRSxPQUFPLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDckQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSwrQ0FBK0MsQ0FBQztBQUMxRixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxrQ0FB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O3FCQUNuQixjQUNXLElBQUk7aUZBR1UsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQUNJLFdBQVc7c0JBQXBDLFNBQVM7dUJBQUMsYUFBYTtnQkFDZixTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ08sT0FBTztzQkFBbkIsS0FBSztnQkFtQkcsYUFBYTtzQkFBckIsS0FBSztnQkFDSSxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ21CLFdBQVc7c0JBQXBDLFNBQVM7dUJBQUMsYUFBYTtnQkFxQnhCLHNCQUFzQjtzQkFEckIsWUFBWTt1QkFBQywyQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgVmlld0NoaWxkLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPdXRwdXQsXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBPbkNoYW5nZXMsXHJcbiAgICBTaW1wbGVDaGFuZ2VzLFxyXG4gICAgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBBZnRlclZpZXdJbml0XHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7TWF0U2VsZWN0LCBNYXRTZWxlY3RNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3RcIjtcclxuaW1wb3J0IHtBdXRvY29tcGxldGVDb25maWdzSW50ZXJmYWNlfSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlcy9hdXRvY29tcGxldGUtY29uZmlncy5pbnRlcmZhY2VcIjtcclxuaW1wb3J0IHtGb3JtQ29udHJvbE5hbWUsIFJlYWN0aXZlRm9ybXNNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBJbnB1dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9pbnB1dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQnV0dG9uVHlwZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvYnV0dG9uLXR5cGVzLmVudW0nO1xyXG5pbXBvcnQge05nQ2xhc3MsIE5nRm9yLCBOZ0lmLCBOZ09wdGltaXplZEltYWdlfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7TWF0VG9vbHRpcH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXBcIjtcclxuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGV9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XHJcbmltcG9ydCB7SWNvbkJ1dHRvbkNvbXBvbmVudH0gZnJvbSBcIi4uL2ljb24tYnV0dG9uL2ljb24tYnV0dG9uLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge0J1dHRvbkNvbXBvbmVudH0gZnJvbSBcIi4uL2J1dHRvbi9idXR0b24uY29tcG9uZW50XCI7XHJcbmltcG9ydCB7R2V0VmFsdWVCeUtleUZyb21PYmplY3RQaXBlfSBmcm9tIFwiLi4vLi4vcGlwZXMvZ2V0LXZhbHVlLWJ5LWtleS1mcm9tLW9iamVjdC5waXBlXCI7XHJcbmltcG9ydCB7QXJyYXlUb1N0cmluZ1BpcGV9IGZyb20gXCIuLi8uLi9waXBlcy9hcnJheS10by1zdHJpbmcucGlwZVwiO1xyXG5pbXBvcnQge01hdEljb259IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pY29uXCI7XHJcbmltcG9ydCB7R2VuZXJhdGVFcnJvck1lc3NhZ2VzUGlwZX0gZnJvbSBcIi4uLy4uL3BpcGVzL2dlbmVyYXRlLWVycm9yLW1lc3NhZ2VzLnBpcGVcIjtcclxuaW1wb3J0IHtDbGVhclZhbHVlQ29tcG9uZW50fSBmcm9tIFwiLi4vY2xlYXItdmFsdWUvY2xlYXItdmFsdWUuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7TWF0Rm9ybUZpZWxkTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZFwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpLXRlY2gtYXV0b2NvbXBsZXRlLXNlbGVjdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2F1dG9jb21wbGV0ZS1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2F1dG9jb21wbGV0ZS1zZWxlY3QuY29tcG9uZW50LnNjc3MnXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBOZ0NsYXNzLFxyXG4gICAgTWF0VG9vbHRpcCxcclxuICAgIE5nSWYsXHJcbiAgICBOZ0ZvcixcclxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcclxuICAgIEljb25CdXR0b25Db21wb25lbnQsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgTWF0U2VsZWN0TW9kdWxlLFxyXG4gICAgQnV0dG9uQ29tcG9uZW50LFxyXG4gICAgR2V0VmFsdWVCeUtleUZyb21PYmplY3RQaXBlLFxyXG4gICAgQXJyYXlUb1N0cmluZ1BpcGUsXHJcbiAgICBOZ09wdGltaXplZEltYWdlLFxyXG4gICAgTWF0SWNvbixcclxuICAgIEdlbmVyYXRlRXJyb3JNZXNzYWdlc1BpcGUsXHJcbiAgICBDbGVhclZhbHVlQ29tcG9uZW50LFxyXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlXHJcbiAgXSxcclxuICBzdGFuZGFsb25lOiB0cnVlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBdXRvY29tcGxldGVTZWxlY3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xyXG4gICAgQFZpZXdDaGlsZCgnbWF0U2VsZWN0JykgbWF0U2VsZWN0ITogTWF0U2VsZWN0O1xyXG4gICAgQFZpZXdDaGlsZCgnc2VhcmNoSW5wdXQnKSBzZWFyY2hJbnB1dCE6IEVsZW1lbnRSZWY7XHJcbiAgICBASW5wdXQoKSBjbGFzc05hbWUhOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBzdWJtaXRWYWx1ZSE6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBzZXQgY29uZmlncyhkYXRhOiBBdXRvY29tcGxldGVDb25maWdzSW50ZXJmYWNlKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RDb25maWcgPSBkYXRhO1xyXG4gICAgICAgIGlmICghZGF0YSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoKHR5cGVvZiB0aGlzLnNlbGVjdENvbmZpZy5wYWdpbmF0ZSkgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZmlyc3RSZXF1ZXN0KSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5nZXREYXRhKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZmlyc3RSZXF1ZXN0ID0gdHJ1ZVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmRhdGEgPSB0aGlzLnNlbGVjdENvbmZpZy5wYWdpbmF0ZTtcclxuICAgICAgICB0aGlzLmZpbmRBbmRTZXREZWZhdWx0VmFsdWVGcm9tRGF0YSgpO1xyXG4gICAgfTtcclxuXHJcbiAgICBASW5wdXQoKSBkZXRlY3RDaGFuZ2VzITogYm9vbGVhbjtcclxuICAgIEBPdXRwdXQoKSBzZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIEBPdXRwdXQoKSBlbWl0QWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICBAVmlld0NoaWxkKCdhbGxTZWxlY3RlZCcpIGFsbFNlbGVjdGVkITogTWF0U2VsZWN0O1xyXG4gICAgcGVuZGluZyA9IGZhbHNlO1xyXG4gICAgZGVmYXVsdFZhbHVlITogYW55O1xyXG4gICAgZGF0YTogQXJyYXk8YW55PiA9IFtdO1xyXG4gICAgcGFnaW5hdGlvbkRhdGE6IGFueSA9IHtjdXJyZW50OiAxLCBsYXN0OiAwfTtcclxuICAgIG5nQ29udHJvbDogRm9ybUNvbnRyb2xOYW1lO1xyXG4gICAgc2VsZWN0Q29uZmlnITogQXV0b2NvbXBsZXRlQ29uZmlnc0ludGVyZmFjZTtcclxuICAgIGZpcnN0UmVxdWVzdCA9IGZhbHNlO1xyXG4gICAgc2hvd1BsYWNlaG9sZGVyID0gdHJ1ZTtcclxuICAgIGlzTmVlZGVkRm9yUmVjYWxsID0gZmFsc2U7XHJcbiAgICBzaG93aW5nVmFsdWU6IGFueTtcclxuICAgIHNlYXJjaFRpbWVvdXRJZDogYW55O1xyXG4gICAgdGFiVmlzaWJpbGl0eSE6IGJvb2xlYW47XHJcbiAgICBhY2Nlc3NUb05leHRSZXF1ZXN0ID0gdHJ1ZTtcclxuICAgIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgICBibG9ja1JlY2FsbERlZmF1bHRWYWx1ZVNldHRlciA9IGZhbHNlO1xyXG4gICAgYmFzZURhdGE6IGFueTtcclxuICAgIHJlcXVlc3RMb2FkaW5nID0gZmFsc2U7XHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgQnV0dG9uVHlwZSA9IEJ1dHRvblR5cGU7XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6dmlzaWJpbGl0eWNoYW5nZScpXHJcbiAgICBoYW5kbGVWaXNpYmlsaXR5Q2hhbmdlKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudGFiVmlzaWJpbGl0eSA9ICFkb2N1bWVudC5oaWRkZW47XHJcbiAgICAgICAgaWYgKHRoaXMubmdDb250cm9sLmNvbnRyb2wudmFsdWUpIHsgcmV0dXJuO31cclxuICAgICAgICB0aGlzLmNsb3NlUGFuZWxBbmRVbnNldEZvY3VzKCk7XHJcbiAgICAgICAgaWYgKCFkb2N1bWVudC5oaWRkZW4pIHtcclxuICAgICAgICAgICAgdGhpcy5pc05lZWRlZEZvclJlY2FsbCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMucGVuZGluZyA9IHRydWU7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wZW5kaW5nID0gZmFsc2VcclxuICAgICAgICAgICAgfSwgNDAwMClcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBpbnB1dFNlcnZpY2U6IElucHV0U2VydmljZSkge1xyXG4gICAgICAgIHRoaXMubmdDb250cm9sID0gdGhpcy5pbnB1dFNlcnZpY2UuaW5qZWN0TmdDb250cm9sKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgICAgIGlmIChjaGFuZ2VzWydzZWxlY3RDb25maWcnXSAmJiB0aGlzLnNlbGVjdENvbmZpZykge1xyXG4gICAgICAgICAgICBpZiAoKHR5cGVvZiB0aGlzLnNlbGVjdENvbmZpZy5wYWdpbmF0ZSkgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0RGF0YSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgICAgICB0aGlzLm5nQ29udHJvbC5jb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmRhdGEubGVuZ3RoICYmIHJlcyAmJiAhdGhpcy5ibG9ja1JlY2FsbERlZmF1bHRWYWx1ZVNldHRlcikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5maW5kQW5kU2V0RGVmYXVsdFZhbHVlRnJvbURhdGEoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgaGFyZFJlbG9hZCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmdldERhdGEoJycsIHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldERhdGEoc2VhcmNoVGV4dD86IHN0cmluZywgZnJvbVNlYXJjaD86IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICBpZiAoIWZyb21TZWFyY2ggJiYgIXRoaXMuYWNjZXNzVG9OZXh0UmVxdWVzdCkgeyByZXR1cm47IH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMucmVxdWVzdExvYWRpbmcpIHsgcmV0dXJuOyB9XHJcblxyXG4gICAgICAgIGlmIChmcm9tU2VhcmNoKSB7XHJcbiAgICAgICAgICAgIHRoaXMucGFnaW5hdGlvbkRhdGEuY3VycmVudCA9IDE7XHJcbiAgICAgICAgICAgIHRoaXMuYWNjZXNzVG9OZXh0UmVxdWVzdCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBmdW5jdGlvblRvRG8gPSB0aGlzLnNlbGVjdENvbmZpZy5wYWdpbmF0ZSh0aGlzLnBhZ2luYXRpb25EYXRhLmN1cnJlbnQsIHNlYXJjaFRleHQpO1xyXG5cclxuICAgICAgICB0aGlzLnJlcXVlc3RMb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICBmdW5jdGlvblRvRG8/LnN1YnNjcmliZSgoZGF0YTogQXJyYXk8YW55PiB8IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBkYXRhVG9BZGQgPSAoJ2NvbnRlbnQnIGluIGRhdGEpID8gZGF0YS5jb250ZW50IDogZGF0YTtcclxuXHJcbiAgICAgICAgICAgIGlmICgnY29udGVudCcgaW4gZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hY2Nlc3NUb05leHRSZXF1ZXN0ID0gIWRhdGEubGFzdCB8fCAoZGF0YS50b3RhbFBhZ2VzID4gdGhpcy5wYWdpbmF0aW9uRGF0YS5jdXJyZW50KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5kYXRhID0gKGZyb21TZWFyY2ggfHwgdGhpcy5zZWxlY3RDb25maWc/LmJsb2NrUGFnaW5hdGlvbikgPyBkYXRhVG9BZGQgOiBbLi4udGhpcy5kYXRhLCAuLi5kYXRhVG9BZGRdO1xyXG4gICAgICAgICAgICB0aGlzLnBlbmRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5yZXF1ZXN0TG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICAgICAgICAgICAgaWYgKCFkYXRhVG9BZGQubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2luYXRpb25EYXRhLmxhc3QgPSB0aGlzLnBhZ2luYXRpb25EYXRhLmN1cnJlbnQ7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMucGFnaW5hdGlvbkRhdGEuY3VycmVudCArPSAxO1xyXG4gICAgICAgICAgICB0aGlzLnBhZ2luYXRpb25EYXRhLmxhc3QgKz0gMTtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZpbmRBbmRTZXREZWZhdWx0VmFsdWVGcm9tRGF0YSgpO1xyXG4gICAgICAgICAgICB9LDEwKVxyXG4gICAgICAgIH0sICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wZW5kaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMucmVxdWVzdExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIGZpbmRBbmRTZXREZWZhdWx0VmFsdWVGcm9tRGF0YSgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5zZWxlY3RDb25maWcubXVsdGlwbGUpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMubmdDb250cm9sLnZhbHVlICYmIHRoaXMubmdDb250cm9sLnZhbHVlLmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldFNob3dpbmdWYWx1ZSh0aGlzLmRhdGEuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gdGhpcy5uZ0NvbnRyb2wudmFsdWVbMF0pKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3QgaXNEaXNhYmxlZCA9IHRoaXMubmdDb250cm9sLmRpc2FibGVkO1xyXG4gICAgICAgICAgICBpZiAoaXNEaXNhYmxlZCkge1xyXG4gICAgICAgICAgICAgICAgLy8gVE9ETyBSZW1vdmUgYWZ0ZXIgbWlncmF0aW5nIGFsbCBzZWxlY3RzXHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzLm5nQ29udHJvbC5jb250cm9sLmVuYWJsZSgpO1xyXG4gICAgICAgICAgICAgICAgLy8gaWYgKCF0aGlzLm5nQ29udHJvbC52YWx1ZSAmJiAhdGhpcy5kYXRhLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgLy8gICAgIHRoaXMubmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZSgpO1xyXG4gICAgICAgICAgICAgICAgLy8gICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgICAgIC8vIHRoaXMuc2V0RGVmYXVsdFZhbHVlKCk7XHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzLm5nQ29udHJvbC5jb250cm9sLmRpc2FibGUoKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5uZ0NvbnRyb2wudmFsdWUgJiYgIXRoaXMuZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RGVmYXVsdFZhbHVlKCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHNldERlZmF1bHRWYWx1ZSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmRlZmF1bHRWYWx1ZSA9IHRoaXMuZGF0YS5maW5kKChpdGVtKSA9PiBpdGVtLmlkID09PSB0aGlzLm5nQ29udHJvbC52YWx1ZSk7XHJcbiAgICAgICAgdGhpcy5iYXNlRGF0YSA9IHRoaXMuZGVmYXVsdFZhbHVlXHJcbiAgICAgICAgaWYgKCF0aGlzLmRlZmF1bHRWYWx1ZSkgeyByZXR1cm47fVxyXG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQoKVxyXG4gICAgICAgIHRoaXMuc2V0U2hvd2luZ1ZhbHVlKHRoaXMuZGVmYXVsdFZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBvcHRpb25DbGljayhzaG93aW5nRGF0YTogYW55KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5iYXNlRGF0YSA9IHNob3dpbmdEYXRhXHJcbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdENvbmZpZy5tdWx0aXBsZSkge1xyXG4gICAgICAgICAgICB0aGlzLnNldFNob3dpbmdWYWx1ZShzaG93aW5nRGF0YSk7XHJcbiAgICAgICAgICAgIHRoaXMubWF0U2VsZWN0LmNsb3NlKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoSW5wdXQpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0Q29uZmlnLm11bHRpcGxlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaElucHV0Py5uYXRpdmVFbGVtZW50Py5mb2N1cygpXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0Rm9jdXNPdXQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5zZXRTaG93aW5nVmFsdWUoc2hvd2luZ0RhdGEpO1xyXG4gICAgICAgIHRoaXMuc2hvd1BsYWNlaG9sZGVyID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkTmV3SXRlbUV2ZW50KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaXNOZWVkZWRGb3JSZWNhbGwgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZW1pdEFjdGlvbi5lbWl0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0U2hvd2luZ1ZhbHVlKGRhdGE6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIGlmICghZGF0YSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIFRPRE8gcmVmYWN0b3IgdGhpcyBwYXJ0IGZ1bGx5XHJcbiAgICAgICAgbGV0IGluY2x1ZGUgPSBkYXRhO1xyXG4gICAgICAgIGxldCBpbmNsdWRlT3B0aW9uYWwgPSBkYXRhO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5zZWxlY3RDb25maWcudmFsdWVUb1Nob3dCeUtleSkge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdENvbmZpZy52YWx1ZVRvU2hvd0J5S2V5LmZvckVhY2goKHBhcmFtOiBBcnJheTxzdHJpbmcgfCBudW1iZXI+IHwgc3RyaW5nKSA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBwYXJhbSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgICAgICAgICAgICBwYXJhbS5mb3JFYWNoKChrZXk6IHN0cmluZyB8IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlID0gKGluY2x1ZGUpID8gaW5jbHVkZVtrZXldIDogbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBpbmNsdWRlID0gaW5jbHVkZVtwYXJhbV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdENvbmZpZy5zaG93RnVsbFRleHRXaXRoT3B0aW9uYWxPblNlbGVjdGVkVmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0Q29uZmlnLnZhbHVlVG9TaG93QnlQYXJhbT8uZm9yRWFjaCgocGFyYW06IEFycmF5PHN0cmluZyB8IG51bWJlcj4gfCBzdHJpbmcpID0+IHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBwYXJhbSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW0uZm9yRWFjaCgoa2V5OiBzdHJpbmcgfCBudW1iZXIpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVPcHRpb25hbCA9IChpbmNsdWRlT3B0aW9uYWwpID8gaW5jbHVkZU9wdGlvbmFsW2tleV0gOiBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVPcHRpb25hbCA9IGluY2x1ZGVPcHRpb25hbFtwYXJhbV07XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdENvbmZpZy52YWx1ZVRvU2hvd0J5UGFyYW0gJiYgdHlwZW9mIGluY2x1ZGVPcHRpb25hbCA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgICAgICAgICBpbmNsdWRlICs9ICh0aGlzLnNlbGVjdENvbmZpZy53aXRoUGFyYW1TeW1ib2wgfHwgJycpICsgaW5jbHVkZU9wdGlvbmFsXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2hvd2luZ1ZhbHVlID0gaW5jbHVkZTtcclxuICAgICAgICB0aGlzLmJsb2NrUmVjYWxsRGVmYXVsdFZhbHVlU2V0dGVyID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBwcmV2ZW50RGVmYXVsdChldmVudDogYW55KSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdENvbmZpZy5tdWx0aXBsZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcclxuICAgIH1cclxuXHJcbiAgICByZWdpc3RlclBhbmVsU2Nyb2xsRXZlbnQoZWxlbWVudDogTWF0U2VsZWN0KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0Q29uZmlnLnBhZ2luYXRlT25TY3JvbGwgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHBhbmVsID0gZWxlbWVudC5wYW5lbC5uYXRpdmVFbGVtZW50O1xyXG4gICAgICAgIHBhbmVsLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIChldmVudDogYW55KSA9PiB0aGlzLmxvYWREYXRhT25TY3JvbGwoZXZlbnQpKTtcclxuICAgIH1cclxuXHJcbiAgICBsb2FkRGF0YU9uU2Nyb2xsKGV2ZW50OiBhbnkpIHtcclxuICAgICAgICBjb25zdCBwb3MgPSAoZXZlbnQudGFyZ2V0LnNjcm9sbFRvcCB8fCBldmVudC50YXJnZXQuc2Nyb2xsVG9wKSArIGV2ZW50LnRhcmdldC5vZmZzZXRIZWlnaHQ7XHJcbiAgICAgICAgY29uc3QgbWF4ID0gZXZlbnQudGFyZ2V0LnNjcm9sbEhlaWdodDtcclxuICAgICAgICBpZiAoKHBvcyArIDEpID49IG1heCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5wYWdpbmF0aW9uRGF0YS5jdXJyZW50ID09PSB0aGlzLnBhZ2luYXRpb25EYXRhLmxhc3QgfHwgdGhpcy5zZWxlY3RDb25maWcuYmxvY2tQYWdpbmF0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5nZXREYXRhKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGZvY3VzU2VhcmNoSW5wdXQoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0Q29uZmlnLnNlYXJjaCAmJiB0aGlzLnNlYXJjaElucHV0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpbnB1dEZvY3VzT3V0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaXNOZWVkZWRGb3JSZWNhbGwgPSAhIXRoaXMuc2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZTtcclxuICAgICAgICB0aGlzLnNlYXJjaElucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcclxuICAgICAgICB0aGlzLnNob3dQbGFjZWhvbGRlciA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jbGVhclRpbWVvdXRGb3JTZWFyY2goKTtcclxuICAgIH1cclxuXHJcbiAgICByZXNldFZhbHVlKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQobnVsbCk7XHJcbiAgICAgICAgdGhpcy5uZ0NvbnRyb2wucmVzZXQobnVsbCk7XHJcbiAgICAgICAgdGhpcy5pbnB1dEZvY3VzT3V0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RGF0YVdpdGhTZWFyY2godmFsdWU6IGFueSwgZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY2xlYXJUaW1lb3V0Rm9yU2VhcmNoKCk7XHJcbiAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCA+PSAxKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoVGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdldERhdGEodmFsdWUsIHRydWUpXHJcbiAgICAgICAgICAgIH0sIDgwMCk7XHJcbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZS5sZW5ndGggPD0gMSAmJiBldmVudC5rZXlDb2RlID09PSA4KSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RGF0YSh2YWx1ZSwgdHJ1ZSlcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY2xlYXJUaW1lb3V0Rm9yU2VhcmNoKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLnNlYXJjaFRpbWVvdXRJZCkge1xyXG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5zZWFyY2hUaW1lb3V0SWQpO1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaFRpbWVvdXRJZCA9IDA7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9wZW5TZWxlY3Rpb24oKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0Q29uZmlnLmRpc2FibGVkIHx8IHRoaXMubmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNob3dQbGFjZWhvbGRlciA/IHRoaXMubWF0U2VsZWN0Lm9wZW4oKSA6IHRoaXMuY2xvc2VQYW5lbEFuZFVuc2V0Rm9jdXMoKTtcclxuICAgICAgICB0aGlzLnNob3dQbGFjZWhvbGRlciA9ICF0aGlzLnNob3dQbGFjZWhvbGRlcjtcclxuICAgICAgICBpZiAoIXRoaXMuc2hvd1BsYWNlaG9sZGVyKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVDYWxsRGF0YSgpXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNsb3NlUGFuZWxBbmRVbnNldEZvY3VzKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMubWF0U2VsZWN0LmNsb3NlKCk7XHJcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoSW5wdXQpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hJbnB1dC5uYXRpdmVFbGVtZW50LmJsdXIoKVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvcGVuZWRDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgICAgIGlmIChldmVudCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5pc05lZWRlZEZvclJlY2FsbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZUNhbGxEYXRhKCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCF0aGlzLnNlbGVjdENvbmZpZy5zZWFyY2gpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucGVuZGluZyA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlQ2FsbERhdGEoKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5zaG93UGxhY2Vob2xkZXIgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHJlQ2FsbERhdGEoKTogdm9pZCB7XHJcbiAgICAgICAgLy8gVE9ETyByZWZhY3RvciB0aGlzIHBhcnRcclxuICAgICAgICBpZiAoIXRoaXMuaXNOZWVkZWRGb3JSZWNhbGwpIHsgcmV0dXJuOyB9XHJcbiAgICAgICAgdGhpcy5kYXRhID0gW107XHJcbiAgICAgICAgdGhpcy5wZW5kaW5nID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnBhZ2luYXRpb25EYXRhID0ge1xyXG4gICAgICAgICAgICBjdXJyZW50OiAxLFxyXG4gICAgICAgICAgICBsYXN0OiAwXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLmFjY2Vzc1RvTmV4dFJlcXVlc3QgPSB0cnVlO1xyXG4gICAgICAgIGlmICgodHlwZW9mIHRoaXMuc2VsZWN0Q29uZmlnLnBhZ2luYXRlKSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICB0aGlzLmdldERhdGEoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnBlbmRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5kYXRhID0gdGhpcy5zZWxlY3RDb25maWcucGFnaW5hdGU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaXNOZWVkZWRGb3JSZWNhbGwgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBlbWl0U2VsZWN0aW9uQ2hhbmdlQW5kQ2xvc2UoZXZlbnQ6IGFueSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQoZXZlbnQudmFsdWUpO1xyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdENvbmZpZy5tdWx0aXBsZSkge1xyXG4gICAgICAgICAgICBpZiAoIWV2ZW50LnZhbHVlPy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubmdDb250cm9sLmNvbnRyb2wucmVzZXQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubWF0U2VsZWN0LmNsb3NlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWNvbkNsaWNrKG1hdFNlbGVjdDogTWF0U2VsZWN0LCBzZWFyY2hJbnB1dD86IEVsZW1lbnRSZWYpOiB2b2lkIHtcclxuICAgICAgICBtYXRTZWxlY3Qub3BlbigpO1xyXG4gICAgICAgIHNlYXJjaElucHV0Py5uYXRpdmVFbGVtZW50Py5mb2N1cygpO1xyXG4gICAgfVxyXG5cclxuICAgIGN1c3RvbUVycm9yU3RhdGVNYXRjaGVyID0ge1xyXG4gICAgICAgIGlzRXJyb3JTdGF0ZTogKGNvbnRyb2w6IGFueSwgZm9ybTogYW55KTogYm9vbGVhbiA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiAhIShjb250cm9sICYmIGNvbnRyb2wuaW52YWxpZCAmJiB0aGlzLnN1Ym1pdFZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJuZXctbWF0LWF1dG9jb21wbGV0ZVwiIGlkPVwibWF0X2F1dG9jb21wbGV0ZVwiXHJcbiAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAnbWF0LXNlbGVjdC13aXRob3V0X2ljb24nOiAhc2VsZWN0Q29uZmlnLmljb25VcmwgJiYgIXNlbGVjdENvbmZpZy5hY3RpdmVTdGF0ZUljb25VcmwsXHJcbiAgICAgICAgICAgICdtYXQtc2VsZWN0LXdpdGgtc2VhcmNoJzogc2VsZWN0Q29uZmlnLnNlYXJjaCxcclxuICAgICAgICAgICAgJ3dpdGhvdXQtbGFiZWwnOiBzZWxlY3RDb25maWcuaGlkZUxhYmVsLFxyXG4gICAgICAgICAgICAnaW52YWxpZF9maWVsZCc6IG5nQ29udHJvbC5jb250cm9sLmVycm9ycyAmJiBzdWJtaXRWYWx1ZSxcclxuICAgICAgICAgICAgJ3JlYWRvbmx5LWZpZWxkJzogc2VsZWN0Q29uZmlnLnJlYWRPbmx5IHx8IG5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkXHJcbiAgICAgICAgIH1cIlxyXG4gICAgIFttYXRUb29sdGlwXT1cIihzZWxlY3RDb25maWcuaG92ZXIgJiYgIW5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkID8gKChzZWxlY3RDb25maWcuaG92ZXIgfHwgJycpIHwgdHJhbnNsYXRlKSA6ICcnKVwiXHJcbiAgICAgW21hdFRvb2x0aXBDbGFzc109XCInbWF0LW1kYy10b29sdGlwIGJpZy10ZC1tYXQtdG9vbHRpcCdcIlxyXG4gICAgIFttYXRUb29sdGlwUG9zaXRpb25dPVwiJ2Fib3ZlJ1wiXHJcbiAgICAgKm5nSWY9XCJzZWxlY3RDb25maWcgJiYgbmdDb250cm9sXCI+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInctMTAwXCIgKm5nSWY9XCIhc2VsZWN0Q29uZmlnLmhpZGVMYWJlbFwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWwgW25nQ2xhc3NdPVwieydyZWFkb25seS1jb2xvcicgOiBzZWxlY3RDb25maWcucmVhZE9ubHkgfHwgbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWR9XCI+XHJcbiAgICAgICAgICAgIHt7IHNlbGVjdENvbmZpZy5sYWJlbCB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgIDwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwic2VsZWN0Q29uZmlnLnJlcXVpcmVkXCIgY2xhc3M9XCJyZXF1aXJlZC1pbnB1dFwiIFtuZ0NsYXNzXT1cInsncmVhZG9ubHktY29sb3InIDogbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWR9XCI+Kjwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICA8IS0tIFNlYXJjaCBJbnB1dCAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtaW5wdXQgdy0xMDBcIlxyXG4gICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcclxuICAgICAgICAgW25nQ2xhc3NdPVwieyBoaWRlX2lucHV0X3BsYWNlaG9sZGVyOiBzaG93UGxhY2Vob2xkZXIgfHwgbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWQgfVwiXHJcbiAgICAgICAgICpuZ0lmPVwic2VsZWN0Q29uZmlnLnNlYXJjaFwiXHJcbiAgICA+XHJcbiAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgIGlkPVwic2VhcmNoSW5wdXRcIlxyXG4gICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsncHItMjUnOiAhc2VsZWN0Q29uZmlnLmljb25Vcmx9XCJcclxuICAgICAgICAgICAgICAgI3NlYXJjaElucHV0XHJcbiAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJuZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlZCB8fCBzZWxlY3RDb25maWcuaG92ZXJcIlxyXG4gICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiKG5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkIHx8IHNlbGVjdENvbmZpZy5ob3ZlcikgPyAnJyA6ICdTZWFyY2gnXCJcclxuICAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cImlucHV0Rm9jdXNPdXQoKVwiXHJcbiAgICAgICAgICAgICAgIChmb2N1cyk9XCJvcGVuU2VsZWN0aW9uKClcIlxyXG4gICAgICAgICAgICAgICAoa2V5ZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgICAgICAgICAgICAoa2V5dXApPVwiZ2V0RGF0YVdpdGhTZWFyY2goc2VhcmNoSW5wdXQudmFsdWUsJGV2ZW50KVwiPlxyXG5cclxuICAgICAgICA8IS0tIFNlYXJjaCBJY29uIC0tPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwic2VhcmNoLWljb25cIj5cclxuICAgICAgICAgICAgPGktdGVjaC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXItMTBcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNlbGVjdENvbmZpZy5yZWFkT25seSB8fCBuZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlZCA/ICdyZWFkb25seS1jb2xvcicgOiAnZGVmYXVsdC1mb3JtLWljb24tY29sb3InXCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNlbGVjdENvbmZpZy5pY29uUHJlZml4ICYmICFzaG93UGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpY29uTmFtZV09XCJzZWxlY3RDb25maWcuaWNvblByZWZpeCB8fCAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInNlbGVjdENvbmZpZy5yZWFkT25seSB8fCBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgbWF0UHJlZml4XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPC9pLXRlY2gtaWNvbi1idXR0b24+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBQbGFjZWhvbGRlci9TZWxlY3RlZCBWYWx1ZSBEaXNwbGF5IC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dQbGFjZWhvbGRlciAmJiBzZWxlY3RDb25maWcuc2VhcmNoXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1wbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICAgICAqbmdJZj1cIighbmdDb250cm9sPy52YWx1ZSAmJiAhbmdDb250cm9sPy52YWx1ZT8ubGVuZ3RoKSB8fFxyXG4gICAgICAgICAgICAgICAgIChzZWxlY3RDb25maWcubXVsdGlwbGUgJiYgbmdDb250cm9sPy52YWx1ZSAmJiAhbmdDb250cm9sPy52YWx1ZT8ubGVuZ3RoKVwiXHJcbiAgICAgICAgICAgICBbbmdDbGFzc109XCJzZWxlY3RDb25maWcucmVhZE9ubHkgfHwgbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWQgPyAncmVhZG9ubHktY29sb3InIDogJ2RlZmF1bHQtZm9ybS1pY29uLWNvbG9yJ1wiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgICB7eyAoKHNlbGVjdENvbmZpZy5wbGFjZWhvbGRlciB8fCAnJykgfCB0cmFuc2xhdGUpIH19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1wbGFjZWhvbGRlciBjdXN0b20tdmFsdWUgZWxsaXBzaXNcIlxyXG4gICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgJ3ByLTQyJzogc2VsZWN0Q29uZmlnLmljb25VcmwsXHJcbiAgICAgICAgICAgICAgICAncmVhZG9ubHktY29sb3InOiBzZWxlY3RDb25maWcucmVhZE9ubHkgfHwgbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWQsXHJcbiAgICAgICAgICAgICAgICAnZGVmYXVsdC1mb3JtLWljb24tY29sb3InOiAhKHNlbGVjdENvbmZpZy5yZWFkT25seSB8fCBuZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlZClcclxuICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgKm5nSWY9XCJuZ0NvbnRyb2w/LnZhbHVlXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICAgIHt7IHNlbGVjdENvbmZpZz8ubXVsdGlwbGUgPyAobmdDb250cm9sLnZhbHVlIHwgYXJyYXlUb1N0cmluZykgOiBzaG93aW5nVmFsdWUgfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDwhLS0gQ3VzdG9tIEljb24gLS0+XHJcbiAgICA8aW1nIGNsYXNzPVwibGVmdF9pY29uX25ldyBwb2ludGVyXCJcclxuICAgICAgICAgKGNsaWNrKT1cImljb25DbGljayhtYXRTZWxlY3QsIHNlYXJjaElucHV0KVwiXHJcbiAgICAgICAgICpuZ0lmPVwiIXNlbGVjdENvbmZpZy5tYXRJY29uTmFtZSAmJiAoc2VsZWN0Q29uZmlnLmljb25VcmwgfHwgc2VsZWN0Q29uZmlnLmFjdGl2ZVN0YXRlSWNvblVybClcIlxyXG4gICAgICAgICBbc3JjXT1cIidhc3NldHMvaW1hZ2VzL2ljb25zL2dsb2JhbC8nICsgKG5nQ29udHJvbC5jb250cm9sPy52YWx1ZSAmJiBzZWxlY3RDb25maWc/LmFjdGl2ZVN0YXRlSWNvblVybCA/IHNlbGVjdENvbmZpZy5hY3RpdmVTdGF0ZUljb25VcmwgOiBzZWxlY3RDb25maWcuaWNvblVybClcIj5cclxuXHJcbiAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBjbGFzcz1cInctMTAwXCIgKGNsaWNrKT1cInNlbGVjdENvbmZpZz8uc2VhcmNoID8gZm9jdXNTZWFyY2hJbnB1dCgpIDogbnVsbFwiPlxyXG4gICAgICAgIDwhLS0gTWF0ZXJpYWwgU2VsZWN0IC0tPlxyXG4gICAgICAgIDxtYXQtc2VsZWN0ICNtYXRTZWxlY3Q9XCJtYXRTZWxlY3RcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwYW5lbENsYXNzXT1cIidhdXRvY29tcGxldGUtdHJhbnNmb3JtLXBhbmVsLWxvY2F0aW9uJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1wbGFjZWhvbGRlcl09XCIoc2VsZWN0Q29uZmlnLnBsYWNlaG9sZGVyIHx8ICcnKSB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWEtbGFiZWxdPVwic2VsZWN0Q29uZmlnLmxhYmVsIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICBbaWRdPVwic2VsZWN0Q29uZmlnLmZpbHRyYXRpb25LZXkgfHwgJydcIlxyXG4gICAgICAgICAgICAgICAgICAgIChvcGVuZWQpPVwicmVnaXN0ZXJQYW5lbFNjcm9sbEV2ZW50KG1hdFNlbGVjdClcIlxyXG4gICAgICAgICAgICAgICAgICAgIChvcGVuZWRDaGFuZ2UpPVwib3BlbmVkQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJuZ0NvbnRyb2wuY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW211bHRpcGxlXT1cInNlbGVjdENvbmZpZy5tdWx0aXBsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJlbWl0U2VsZWN0aW9uQ2hhbmdlQW5kQ2xvc2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Vycm9yU3RhdGVNYXRjaGVyXT1cImN1c3RvbUVycm9yU3RhdGVNYXRjaGVyXCJcclxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiKHNlbGVjdENvbmZpZy5wbGFjZWhvbGRlciB8fCAnJykgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJuZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlZFwiXHJcbiAgICAgICAgPlxyXG5cclxuICAgICAgICAgICAgPCEtLSBMb2FkaW5nIFN0YXRlIC0tPlxyXG4gICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdJZj1cInBlbmRpbmdcIiBjbGFzcz1cIm9wdGlvbl9sb2FkaW5nIHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVxdWVzdF9sb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGltZyBuZ1NyYz1cIi4vbG9hZGVyLnN2Z1wiIGFsdD1cIlwiIGhlaWdodD1cIjIwMFwiIHdpZHRoPVwiMjAwXCIvPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gT3B0aW9ucyAtLT5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGE/Lmxlbmd0aCAmJiAhcGVuZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgPCEtLSBBZGQgTmV3IE9wdGlvbiAtLT5cclxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0lmPVwic2VsZWN0Q29uZmlnLmFjdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwb2ludGVyIGFkZF9uZXdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbG9zZVBhbmVsQW5kVW5zZXRGb2N1cygpO2FkZE5ld0l0ZW1FdmVudCgpXCI+XHJcbjwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm5nQ29udHJvbC5jb250cm9sLnJlc2V0KG51bGwpO21hdFNlbGVjdC5fb25CbHVyKCk7Y2xvc2VQYW5lbEFuZFVuc2V0Rm9jdXMoKTthZGROZXdJdGVtRXZlbnQoKVwiPi0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpLXRlY2gtYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCJCdXR0b25UeXBlLk9VVExJTkVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZvbnRJY29uXT1cIidhZGQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0ZXh0XT1cIignZHJvcGRvd25fYWRkX2l0ZW0nIHwgdHJhbnNsYXRlIDoge0lOUFVUX05BTUU6IChzZWxlY3RDb25maWcubGFiZWwgfCB0cmFuc2xhdGUpfSkgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjdXN0b21DbGFzc109XCIndy0xMDAgbWF0LWF1dG9jb21wbGV0ZS1zZWxlY3QtYnV0dG9uJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvaS10ZWNoLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIFJlZ3VsYXIgT3B0aW9ucyAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc2VsZWN0Q29uZmlnPy5jaGFuZ2VUZXh0ICYmIGRhdGEubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2YgZGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInNlbGVjdENvbmZpZy52YWx1ZUJ5S2V5IHwgZ2V0VmFsdWVCeUtleUZyb21PYmplY3QgOiBpdGVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2V1cCk9XCJvcHRpb25DbGljayhpdGVtKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJwcmV2ZW50RGVmYXVsdCgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICgoc2VsZWN0Q29uZmlnLnZhbHVlVG9TaG93QnlLZXkgfCBnZXRWYWx1ZUJ5S2V5RnJvbU9iamVjdCA6IGl0ZW0gOiBzZWxlY3RDb25maWcudmFsdWVUb1Nob3dCeVBhcmFtIDogc2VsZWN0Q29uZmlnLndpdGhQYXJhbVN5bWJvbCkgfHwgJycpIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBDdXN0b20gVGV4dCBPcHRpb25zIC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdENvbmZpZz8uY2hhbmdlVGV4dCAmJiBkYXRhLmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIGRhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJzZWxlY3RDb25maWcudmFsdWVCeUtleSB8IGdldFZhbHVlQnlLZXlGcm9tT2JqZWN0IDogaXRlbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNldXApPVwib3B0aW9uQ2xpY2soaXRlbSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwicHJldmVudERlZmF1bHQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInNlbGVjdENvbmZpZz8uY2hhbmdlVGV4dFtpdGVtXS5kaXNhYmxlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBzZWxlY3RDb25maWc/LmNoYW5nZVRleHRbaXRlbV0udGV4dCB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gRW1wdHkgU3RhdGUgLS0+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhcGVuZGluZyAmJiAhZGF0YS5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIGRpc2FibGVkIGNsYXNzPVwiZW1wdHlfc2VsZWN0aW9uX3N0YXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbnNfYW5kX3RpbGUgYWRkX25ldyBmbGV4X2NvbHVtbiB3LTEwMCBmbGV4X2NlbnRlcl9hbGlnbl9jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgJ2Ryb3Bkb3duX25vX2l0ZW1zJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aS10ZWNoLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNlbGVjdENvbmZpZz8uYWN0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cIkJ1dHRvblR5cGUuT1VUTElORVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChidXR0b25DbGljayk9XCJjbG9zZVBhbmVsQW5kVW5zZXRGb2N1cygpO2FkZE5ld0l0ZW1FdmVudCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2N1c3RvbUNsYXNzXT1cIidtYXQtYXV0b2NvbXBsZXRlLXNlbGVjdC1idXR0b24nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZvbnRJY29uXT1cIidhZGQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RleHRdPVwiKCdkcm9wZG93bl9hZGRfaXRlbScgfCB0cmFuc2xhdGUgOiB7SU5QVVRfTkFNRTogKHNlbGVjdENvbmZpZy5sYWJlbCB8IHRyYW5zbGF0ZSl9KSBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaS10ZWNoLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJzZWxlY3RDb25maWcuaWNvblByZWZpeFwiXHJcbiAgICAgICAgICAgICAgICAgIG1hdFByZWZpeFxyXG4gICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgJ3JlYWRvbmx5LWNvbG9yJyA6ICFzZWxlY3RDb25maWdbJ2ljb25QcmVmaXhDb2xvciddICYmIChzZWxlY3RDb25maWcucmVhZE9ubHkgfHwgbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWQpLFxyXG4gICAgICAgICAgICAgICAgICAgICdkZWZhdWx0LWZvcm0taWNvbi1jb2xvcicgOiAhc2VsZWN0Q29uZmlnWydpY29uUHJlZml4Q29sb3InXSAmJiAhKHNlbGVjdENvbmZpZy5yZWFkT25seSB8fCBuZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlZClcclxuICAgICAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiKChzZWxlY3RDb25maWc/LlsnaWNvblByZWZpeFRvb2x0aXAnXSB8fCAnJykgfCB0cmFuc2xhdGUpXCJcclxuICAgICAgICA+e3sgc2VsZWN0Q29uZmlnLmljb25QcmVmaXggfX1cclxuICAgICAgICA8L21hdC1pY29uPlxyXG5cclxuICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJzZWxlY3RDb25maWdbJ2ljb25QcmVmaXhTdmcnXVwiXHJcbiAgICAgICAgICAgICAgICAgIG1hdFByZWZpeFxyXG4gICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCIoKHNlbGVjdENvbmZpZz8uWydpY29uUHJlZml4VG9vbHRpcCddIHx8ICcnKSB8IHRyYW5zbGF0ZSlcIlxyXG4gICAgICAgICAgICAgICAgICBbc3ZnSWNvbl09XCJzZWxlY3RDb25maWdbJ2ljb25QcmVmaXhTdmcnXSB8fCAnJ1wiXHJcbiAgICAgICAgPjwvbWF0LWljb24+XHJcblxyXG4gICAgICAgIDxpLXRlY2gtaWNvbi1idXR0b25cclxuICAgICAgICAgICAgICAgICpuZ0lmPVwic2VsZWN0Q29uZmlnLnNlYXJjaCAmJiBzZWxlY3RDb25maWcuY2xlYXJhYmxlICYmICFuZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlZCAmJiAhIW5nQ29udHJvbC5jb250cm9sLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgIGljb25OYW1lPVwiY2FuY2VsXCJcclxuICAgICAgICAgICAgICAgIG1hdFN1ZmZpeFxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInNlbGVjdENvbmZpZy5yZWFkT25seSB8fCBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzZWxlY3RDb25maWcucmVhZE9ubHkgfHwgbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWQgPyAncmVhZG9ubHktY29sb3InIDogJ2RlZmF1bHQtZm9ybS1pY29uLWNvbG9yJ1wiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyRldmVudC5wcmV2ZW50RGVmYXVsdCgpO25nQ29udHJvbC5jb250cm9sLnJlc2V0KG51bGwpO21hdFNlbGVjdC5fb25CbHVyKCk7Y2xvc2VQYW5lbEFuZFVuc2V0Rm9jdXMoKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgIDwvaS10ZWNoLWljb24tYnV0dG9uPlxyXG4gICAgICAgIDxtYXQtaWNvblxyXG4gICAgICAgICAgICAgICAgbWF0U3VmZml4XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNlbGVjdC1hcnJvd1wiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3Mub3Blbl09XCJtYXRTZWxlY3QucGFuZWxPcGVuXCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgJ3JlYWRvbmx5LWNvbG9yJzogc2VsZWN0Q29uZmlnLnJlYWRPbmx5IHx8IG5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkLFxyXG4gICAgICAgICAgICAnZGVmYXVsdC1mb3JtLWljb24tY29sb3InOiAhKHNlbGVjdENvbmZpZy5yZWFkT25seSB8fCBuZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlZCksXHJcbiAgICAgICAgICAgICdtdC04JzogISFuZ0NvbnRyb2wuY29udHJvbC52YWx1ZSAmJiBzZWxlY3RDb25maWcuY2xlYXJhYmxlXHJcbiAgICAgICAgIH1cIlxyXG4gICAgICAgID5cclxuICAgICAgICAgICAga2V5Ym9hcmRfYXJyb3dfZG93blxyXG4gICAgICAgIDwvbWF0LWljb24+XHJcbiAgICAgICAgPCEtLSBFcnJvciBNZXNzYWdlIC0tPlxyXG4gICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCIhIShuZ0NvbnRyb2wuY29udHJvbC5lcnJvcnMgJiYgc3VibWl0VmFsdWUpXCI+XHJcbiAgICAgICAgICAgIHt7IG5nQ29udHJvbC5jb250cm9sIHwgZ2VuZXJhdGVFcnJvck1lc3NhZ2VzIDogc2VsZWN0Q29uZmlnLmxhYmVsIDogc2VsZWN0Q29uZmlnLmRlZmF1bHRQYXR0ZXJuS2V5fX1cclxuICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG4gICAgPCEtLSBSZXNldCBCdXR0b24gLS0+XHJcbiAgICA8aS10ZWNoLWNsZWFyLXZhbHVlICpuZ0lmPVwic2VsZWN0Q29uZmlnLnJlc2V0XCIgKHJlc2V0KT1cInJlc2V0VmFsdWUoKVwiPjwvaS10ZWNoLWNsZWFyLXZhbHVlPlxyXG48L2Rpdj5cclxuIl19
|
|
392
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWQtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlLXNlbGVjdC9hdXRvY29tcGxldGUtc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9hdXRvY29tcGxldGUtc2VsZWN0L2F1dG9jb21wbGV0ZS1zZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBR0EsWUFBWSxFQUMzQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQVksZUFBZSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFFcEUsT0FBTyxFQUFrQixtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXBFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNoRSxPQUFPLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDckQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSwrQ0FBK0MsQ0FBQztBQUMxRixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxrQ0FB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O3FCQUNuQixjQUNXLElBQUk7aUZBR1UsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQUNJLFdBQVc7c0JBQXBDLFNBQVM7dUJBQUMsYUFBYTtnQkFDZixTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ08sT0FBTztzQkFBbkIsS0FBSztnQkFtQkcsYUFBYTtzQkFBckIsS0FBSztnQkFDSSxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ21CLFdBQVc7c0JBQXBDLFNBQVM7dUJBQUMsYUFBYTtnQkFxQnhCLHNCQUFzQjtzQkFEckIsWUFBWTt1QkFBQywyQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgVmlld0NoaWxkLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPdXRwdXQsXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBPbkNoYW5nZXMsXHJcbiAgICBTaW1wbGVDaGFuZ2VzLFxyXG4gICAgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBBZnRlclZpZXdJbml0XHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7TWF0U2VsZWN0LCBNYXRTZWxlY3RNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3RcIjtcclxuaW1wb3J0IHtBdXRvY29tcGxldGVDb25maWdzSW50ZXJmYWNlfSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlcy9hdXRvY29tcGxldGUtY29uZmlncy5pbnRlcmZhY2VcIjtcclxuaW1wb3J0IHtGb3JtQ29udHJvbE5hbWUsIFJlYWN0aXZlRm9ybXNNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBJbnB1dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9pbnB1dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQnV0dG9uVHlwZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvYnV0dG9uLXR5cGVzLmVudW0nO1xyXG5pbXBvcnQge05nQ2xhc3MsIE5nRm9yLCBOZ0lmLCBOZ09wdGltaXplZEltYWdlfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7TWF0VG9vbHRpcH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXBcIjtcclxuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGV9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XHJcbmltcG9ydCB7SWNvbkJ1dHRvbkNvbXBvbmVudH0gZnJvbSBcIi4uL2ljb24tYnV0dG9uL2ljb24tYnV0dG9uLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge0J1dHRvbkNvbXBvbmVudH0gZnJvbSBcIi4uL2J1dHRvbi9idXR0b24uY29tcG9uZW50XCI7XHJcbmltcG9ydCB7R2V0VmFsdWVCeUtleUZyb21PYmplY3RQaXBlfSBmcm9tIFwiLi4vLi4vcGlwZXMvZ2V0LXZhbHVlLWJ5LWtleS1mcm9tLW9iamVjdC5waXBlXCI7XHJcbmltcG9ydCB7QXJyYXlUb1N0cmluZ1BpcGV9IGZyb20gXCIuLi8uLi9waXBlcy9hcnJheS10by1zdHJpbmcucGlwZVwiO1xyXG5pbXBvcnQge01hdEljb259IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pY29uXCI7XHJcbmltcG9ydCB7R2VuZXJhdGVFcnJvck1lc3NhZ2VzUGlwZX0gZnJvbSBcIi4uLy4uL3BpcGVzL2dlbmVyYXRlLWVycm9yLW1lc3NhZ2VzLnBpcGVcIjtcclxuaW1wb3J0IHtDbGVhclZhbHVlQ29tcG9uZW50fSBmcm9tIFwiLi4vY2xlYXItdmFsdWUvY2xlYXItdmFsdWUuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7TWF0Rm9ybUZpZWxkTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZFwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpLXRlY2gtYXV0b2NvbXBsZXRlLXNlbGVjdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2F1dG9jb21wbGV0ZS1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2F1dG9jb21wbGV0ZS1zZWxlY3QuY29tcG9uZW50LnNjc3MnXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBOZ0NsYXNzLFxyXG4gICAgTWF0VG9vbHRpcCxcclxuICAgIE5nSWYsXHJcbiAgICBOZ0ZvcixcclxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcclxuICAgIEljb25CdXR0b25Db21wb25lbnQsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgTWF0U2VsZWN0TW9kdWxlLFxyXG4gICAgQnV0dG9uQ29tcG9uZW50LFxyXG4gICAgR2V0VmFsdWVCeUtleUZyb21PYmplY3RQaXBlLFxyXG4gICAgQXJyYXlUb1N0cmluZ1BpcGUsXHJcbiAgICBOZ09wdGltaXplZEltYWdlLFxyXG4gICAgTWF0SWNvbixcclxuICAgIEdlbmVyYXRlRXJyb3JNZXNzYWdlc1BpcGUsXHJcbiAgICBDbGVhclZhbHVlQ29tcG9uZW50LFxyXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlXHJcbiAgXSxcclxuICBzdGFuZGFsb25lOiB0cnVlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBdXRvY29tcGxldGVTZWxlY3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xyXG4gICAgQFZpZXdDaGlsZCgnbWF0U2VsZWN0JykgbWF0U2VsZWN0ITogTWF0U2VsZWN0O1xyXG4gICAgQFZpZXdDaGlsZCgnc2VhcmNoSW5wdXQnKSBzZWFyY2hJbnB1dCE6IEVsZW1lbnRSZWY7XHJcbiAgICBASW5wdXQoKSBjbGFzc05hbWUhOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBzdWJtaXRWYWx1ZSE6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBzZXQgY29uZmlncyhkYXRhOiBBdXRvY29tcGxldGVDb25maWdzSW50ZXJmYWNlKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RDb25maWcgPSBkYXRhO1xyXG4gICAgICAgIGlmICghZGF0YSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoKHR5cGVvZiB0aGlzLnNlbGVjdENvbmZpZy5wYWdpbmF0ZSkgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZmlyc3RSZXF1ZXN0KSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5nZXREYXRhKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZmlyc3RSZXF1ZXN0ID0gdHJ1ZVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmRhdGEgPSB0aGlzLnNlbGVjdENvbmZpZy5wYWdpbmF0ZTtcclxuICAgICAgICB0aGlzLmZpbmRBbmRTZXREZWZhdWx0VmFsdWVGcm9tRGF0YSgpO1xyXG4gICAgfTtcclxuXHJcbiAgICBASW5wdXQoKSBkZXRlY3RDaGFuZ2VzITogYm9vbGVhbjtcclxuICAgIEBPdXRwdXQoKSBzZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIEBPdXRwdXQoKSBlbWl0QWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICBAVmlld0NoaWxkKCdhbGxTZWxlY3RlZCcpIGFsbFNlbGVjdGVkITogTWF0U2VsZWN0O1xyXG4gICAgcGVuZGluZyA9IGZhbHNlO1xyXG4gICAgZGVmYXVsdFZhbHVlITogYW55O1xyXG4gICAgZGF0YTogQXJyYXk8YW55PiA9IFtdO1xyXG4gICAgcGFnaW5hdGlvbkRhdGE6IGFueSA9IHtjdXJyZW50OiAxLCBsYXN0OiAwfTtcclxuICAgIG5nQ29udHJvbDogRm9ybUNvbnRyb2xOYW1lO1xyXG4gICAgc2VsZWN0Q29uZmlnITogQXV0b2NvbXBsZXRlQ29uZmlnc0ludGVyZmFjZTtcclxuICAgIGZpcnN0UmVxdWVzdCA9IGZhbHNlO1xyXG4gICAgc2hvd1BsYWNlaG9sZGVyID0gdHJ1ZTtcclxuICAgIGlzTmVlZGVkRm9yUmVjYWxsID0gZmFsc2U7XHJcbiAgICBzaG93aW5nVmFsdWU6IGFueTtcclxuICAgIHNlYXJjaFRpbWVvdXRJZDogYW55O1xyXG4gICAgdGFiVmlzaWJpbGl0eSE6IGJvb2xlYW47XHJcbiAgICBhY2Nlc3NUb05leHRSZXF1ZXN0ID0gdHJ1ZTtcclxuICAgIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgICBibG9ja1JlY2FsbERlZmF1bHRWYWx1ZVNldHRlciA9IGZhbHNlO1xyXG4gICAgYmFzZURhdGE6IGFueTtcclxuICAgIHJlcXVlc3RMb2FkaW5nID0gZmFsc2U7XHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgQnV0dG9uVHlwZSA9IEJ1dHRvblR5cGU7XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6dmlzaWJpbGl0eWNoYW5nZScpXHJcbiAgICBoYW5kbGVWaXNpYmlsaXR5Q2hhbmdlKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudGFiVmlzaWJpbGl0eSA9ICFkb2N1bWVudC5oaWRkZW47XHJcbiAgICAgICAgaWYgKHRoaXMubmdDb250cm9sLmNvbnRyb2wudmFsdWUpIHsgcmV0dXJuO31cclxuICAgICAgICB0aGlzLmNsb3NlUGFuZWxBbmRVbnNldEZvY3VzKCk7XHJcbiAgICAgICAgaWYgKCFkb2N1bWVudC5oaWRkZW4pIHtcclxuICAgICAgICAgICAgdGhpcy5pc05lZWRlZEZvclJlY2FsbCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMucGVuZGluZyA9IHRydWU7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wZW5kaW5nID0gZmFsc2VcclxuICAgICAgICAgICAgfSwgNDAwMClcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBpbnB1dFNlcnZpY2U6IElucHV0U2VydmljZSkge1xyXG4gICAgICAgIHRoaXMubmdDb250cm9sID0gdGhpcy5pbnB1dFNlcnZpY2UuaW5qZWN0TmdDb250cm9sKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgICAgIGlmIChjaGFuZ2VzWydzZWxlY3RDb25maWcnXSAmJiB0aGlzLnNlbGVjdENvbmZpZykge1xyXG4gICAgICAgICAgICBpZiAoKHR5cGVvZiB0aGlzLnNlbGVjdENvbmZpZy5wYWdpbmF0ZSkgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0RGF0YSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgICAgICB0aGlzLm5nQ29udHJvbC5jb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmRhdGEubGVuZ3RoICYmIHJlcyAmJiAhdGhpcy5ibG9ja1JlY2FsbERlZmF1bHRWYWx1ZVNldHRlcikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5maW5kQW5kU2V0RGVmYXVsdFZhbHVlRnJvbURhdGEoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgaGFyZFJlbG9hZCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmdldERhdGEoJycsIHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldERhdGEoc2VhcmNoVGV4dD86IHN0cmluZywgZnJvbVNlYXJjaD86IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICBpZiAoIWZyb21TZWFyY2ggJiYgIXRoaXMuYWNjZXNzVG9OZXh0UmVxdWVzdCkgeyByZXR1cm47IH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMucmVxdWVzdExvYWRpbmcpIHsgcmV0dXJuOyB9XHJcblxyXG4gICAgICAgIGlmIChmcm9tU2VhcmNoKSB7XHJcbiAgICAgICAgICAgIHRoaXMucGFnaW5hdGlvbkRhdGEuY3VycmVudCA9IDE7XHJcbiAgICAgICAgICAgIHRoaXMuYWNjZXNzVG9OZXh0UmVxdWVzdCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBmdW5jdGlvblRvRG8gPSB0aGlzLnNlbGVjdENvbmZpZy5wYWdpbmF0ZSh0aGlzLnBhZ2luYXRpb25EYXRhLmN1cnJlbnQsIHNlYXJjaFRleHQpO1xyXG5cclxuICAgICAgICB0aGlzLnJlcXVlc3RMb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICBmdW5jdGlvblRvRG8/LnN1YnNjcmliZSgoZGF0YTogQXJyYXk8YW55PiB8IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBkYXRhVG9BZGQgPSAoJ2NvbnRlbnQnIGluIGRhdGEpID8gZGF0YS5jb250ZW50IDogZGF0YTtcclxuXHJcbiAgICAgICAgICAgIGlmICgnY29udGVudCcgaW4gZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hY2Nlc3NUb05leHRSZXF1ZXN0ID0gIWRhdGEubGFzdCB8fCAoZGF0YS50b3RhbFBhZ2VzID4gdGhpcy5wYWdpbmF0aW9uRGF0YS5jdXJyZW50KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5kYXRhID0gKGZyb21TZWFyY2ggfHwgdGhpcy5zZWxlY3RDb25maWc/LmJsb2NrUGFnaW5hdGlvbikgPyBkYXRhVG9BZGQgOiBbLi4udGhpcy5kYXRhLCAuLi5kYXRhVG9BZGRdO1xyXG4gICAgICAgICAgICB0aGlzLnBlbmRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5yZXF1ZXN0TG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICAgICAgICAgICAgaWYgKCFkYXRhVG9BZGQubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2luYXRpb25EYXRhLmxhc3QgPSB0aGlzLnBhZ2luYXRpb25EYXRhLmN1cnJlbnQ7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMucGFnaW5hdGlvbkRhdGEuY3VycmVudCArPSAxO1xyXG4gICAgICAgICAgICB0aGlzLnBhZ2luYXRpb25EYXRhLmxhc3QgKz0gMTtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZpbmRBbmRTZXREZWZhdWx0VmFsdWVGcm9tRGF0YSgpO1xyXG4gICAgICAgICAgICB9LDEwKVxyXG4gICAgICAgIH0sICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wZW5kaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMucmVxdWVzdExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIGZpbmRBbmRTZXREZWZhdWx0VmFsdWVGcm9tRGF0YSgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5zZWxlY3RDb25maWcubXVsdGlwbGUpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMubmdDb250cm9sLnZhbHVlICYmIHRoaXMubmdDb250cm9sLnZhbHVlLmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldFNob3dpbmdWYWx1ZSh0aGlzLmRhdGEuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gdGhpcy5uZ0NvbnRyb2wudmFsdWVbMF0pKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3QgaXNEaXNhYmxlZCA9IHRoaXMubmdDb250cm9sLmRpc2FibGVkO1xyXG4gICAgICAgICAgICBpZiAoaXNEaXNhYmxlZCkge1xyXG4gICAgICAgICAgICAgICAgLy8gVE9ETyBSZW1vdmUgYWZ0ZXIgbWlncmF0aW5nIGFsbCBzZWxlY3RzXHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzLm5nQ29udHJvbC5jb250cm9sLmVuYWJsZSgpO1xyXG4gICAgICAgICAgICAgICAgLy8gaWYgKCF0aGlzLm5nQ29udHJvbC52YWx1ZSAmJiAhdGhpcy5kYXRhLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgLy8gICAgIHRoaXMubmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZSgpO1xyXG4gICAgICAgICAgICAgICAgLy8gICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgICAgIC8vIHRoaXMuc2V0RGVmYXVsdFZhbHVlKCk7XHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzLm5nQ29udHJvbC5jb250cm9sLmRpc2FibGUoKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5uZ0NvbnRyb2wudmFsdWUgJiYgIXRoaXMuZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RGVmYXVsdFZhbHVlKCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHNldERlZmF1bHRWYWx1ZSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmRlZmF1bHRWYWx1ZSA9IHRoaXMuZGF0YS5maW5kKChpdGVtKSA9PiBpdGVtLmlkID09PSB0aGlzLm5nQ29udHJvbC52YWx1ZSk7XHJcbiAgICAgICAgdGhpcy5iYXNlRGF0YSA9IHRoaXMuZGVmYXVsdFZhbHVlXHJcbiAgICAgICAgaWYgKCF0aGlzLmRlZmF1bHRWYWx1ZSkgeyByZXR1cm47fVxyXG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQoKVxyXG4gICAgICAgIHRoaXMuc2V0U2hvd2luZ1ZhbHVlKHRoaXMuZGVmYXVsdFZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBvcHRpb25DbGljayhzaG93aW5nRGF0YTogYW55KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5iYXNlRGF0YSA9IHNob3dpbmdEYXRhXHJcbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdENvbmZpZy5tdWx0aXBsZSkge1xyXG4gICAgICAgICAgICB0aGlzLnNldFNob3dpbmdWYWx1ZShzaG93aW5nRGF0YSk7XHJcbiAgICAgICAgICAgIHRoaXMubWF0U2VsZWN0LmNsb3NlKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoSW5wdXQpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0Q29uZmlnLm11bHRpcGxlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaElucHV0Py5uYXRpdmVFbGVtZW50Py5mb2N1cygpXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0Rm9jdXNPdXQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5zZXRTaG93aW5nVmFsdWUoc2hvd2luZ0RhdGEpO1xyXG4gICAgICAgIHRoaXMuc2hvd1BsYWNlaG9sZGVyID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkTmV3SXRlbUV2ZW50KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaXNOZWVkZWRGb3JSZWNhbGwgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZW1pdEFjdGlvbi5lbWl0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0U2hvd2luZ1ZhbHVlKGRhdGE6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIGlmICghZGF0YSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIFRPRE8gcmVmYWN0b3IgdGhpcyBwYXJ0IGZ1bGx5XHJcbiAgICAgICAgbGV0IGluY2x1ZGUgPSBkYXRhO1xyXG4gICAgICAgIGxldCBpbmNsdWRlT3B0aW9uYWwgPSBkYXRhO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5zZWxlY3RDb25maWcudmFsdWVUb1Nob3dCeUtleSkge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdENvbmZpZy52YWx1ZVRvU2hvd0J5S2V5LmZvckVhY2goKHBhcmFtOiBBcnJheTxzdHJpbmcgfCBudW1iZXI+IHwgc3RyaW5nKSA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBwYXJhbSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgICAgICAgICAgICBwYXJhbS5mb3JFYWNoKChrZXk6IHN0cmluZyB8IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlID0gKGluY2x1ZGUpID8gaW5jbHVkZVtrZXldIDogbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBpbmNsdWRlID0gaW5jbHVkZVtwYXJhbV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdENvbmZpZy5zaG93RnVsbFRleHRXaXRoT3B0aW9uYWxPblNlbGVjdGVkVmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0Q29uZmlnLnZhbHVlVG9TaG93QnlQYXJhbT8uZm9yRWFjaCgocGFyYW06IEFycmF5PHN0cmluZyB8IG51bWJlcj4gfCBzdHJpbmcpID0+IHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBwYXJhbSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW0uZm9yRWFjaCgoa2V5OiBzdHJpbmcgfCBudW1iZXIpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVPcHRpb25hbCA9IChpbmNsdWRlT3B0aW9uYWwpID8gaW5jbHVkZU9wdGlvbmFsW2tleV0gOiBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVPcHRpb25hbCA9IGluY2x1ZGVPcHRpb25hbFtwYXJhbV07XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdENvbmZpZy52YWx1ZVRvU2hvd0J5UGFyYW0gJiYgdHlwZW9mIGluY2x1ZGVPcHRpb25hbCA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgICAgICAgICBpbmNsdWRlICs9ICh0aGlzLnNlbGVjdENvbmZpZy53aXRoUGFyYW1TeW1ib2wgfHwgJycpICsgaW5jbHVkZU9wdGlvbmFsXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2hvd2luZ1ZhbHVlID0gaW5jbHVkZTtcclxuICAgICAgICB0aGlzLmJsb2NrUmVjYWxsRGVmYXVsdFZhbHVlU2V0dGVyID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBwcmV2ZW50RGVmYXVsdChldmVudDogYW55KSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdENvbmZpZy5tdWx0aXBsZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcclxuICAgIH1cclxuXHJcbiAgICByZWdpc3RlclBhbmVsU2Nyb2xsRXZlbnQoZWxlbWVudDogTWF0U2VsZWN0KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0Q29uZmlnLnBhZ2luYXRlT25TY3JvbGwgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHBhbmVsID0gZWxlbWVudC5wYW5lbC5uYXRpdmVFbGVtZW50O1xyXG4gICAgICAgIHBhbmVsLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIChldmVudDogYW55KSA9PiB0aGlzLmxvYWREYXRhT25TY3JvbGwoZXZlbnQpKTtcclxuICAgIH1cclxuXHJcbiAgICBsb2FkRGF0YU9uU2Nyb2xsKGV2ZW50OiBhbnkpIHtcclxuICAgICAgICBjb25zdCBwb3MgPSAoZXZlbnQudGFyZ2V0LnNjcm9sbFRvcCB8fCBldmVudC50YXJnZXQuc2Nyb2xsVG9wKSArIGV2ZW50LnRhcmdldC5vZmZzZXRIZWlnaHQ7XHJcbiAgICAgICAgY29uc3QgbWF4ID0gZXZlbnQudGFyZ2V0LnNjcm9sbEhlaWdodDtcclxuICAgICAgICBpZiAoKHBvcyArIDEpID49IG1heCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5wYWdpbmF0aW9uRGF0YS5jdXJyZW50ID09PSB0aGlzLnBhZ2luYXRpb25EYXRhLmxhc3QgfHwgdGhpcy5zZWxlY3RDb25maWcuYmxvY2tQYWdpbmF0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5nZXREYXRhKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGZvY3VzU2VhcmNoSW5wdXQoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0Q29uZmlnLnNlYXJjaCAmJiB0aGlzLnNlYXJjaElucHV0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpbnB1dEZvY3VzT3V0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaXNOZWVkZWRGb3JSZWNhbGwgPSAhIXRoaXMuc2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZTtcclxuICAgICAgICB0aGlzLnNlYXJjaElucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcclxuICAgICAgICB0aGlzLnNob3dQbGFjZWhvbGRlciA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jbGVhclRpbWVvdXRGb3JTZWFyY2goKTtcclxuICAgIH1cclxuXHJcbiAgICByZXNldFZhbHVlKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQobnVsbCk7XHJcbiAgICAgICAgdGhpcy5uZ0NvbnRyb2wucmVzZXQobnVsbCk7XHJcbiAgICAgICAgdGhpcy5pbnB1dEZvY3VzT3V0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RGF0YVdpdGhTZWFyY2godmFsdWU6IGFueSwgZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY2xlYXJUaW1lb3V0Rm9yU2VhcmNoKCk7XHJcbiAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCA+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
|
|
@@ -47,7 +47,7 @@ export class TextInputComponent {
|
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
49
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TextInputComponent, deps: [{ token: i1.InputService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
50
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TextInputComponent, isStandalone: true, selector: "i-tech-text-input", inputs: { inputData: "inputData" }, outputs: { focusOutEmitter: "focusOutEmitter" }, ngImport: i0, template: "<div *ngIf=\"inputData && ngControl\">\r\n
|
|
50
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TextInputComponent, isStandalone: true, selector: "i-tech-text-input", inputs: { inputData: "inputData" }, outputs: { focusOutEmitter: "focusOutEmitter" }, ngImport: i0, template: "<div *ngIf=\"inputData && ngControl\">\r\n <div class=\"w-100\">\r\n <mat-label [ngClass]=\"{\r\n 'readonly-color' : inputData.readOnly || ngControl.control.disabled,\r\n 'invalid-label-color': !!(ngControl.control.errors && inputData.submit)\r\n }\"\r\n *ngIf=\"inputData.label\">\r\n {{ inputData.label | translate }}\r\n </mat-label>\r\n <span *ngIf=\"inputData.required\" class=\"required-input\"\r\n [ngClass]=\"{'readonly-color' : inputData.readOnly || ngControl.control.disabled}\">*</span>\r\n </div>\r\n <mat-form-field appearance=\"outline\" class=\"w-100\"\r\n [class.readonly-field]=\"inputData.readOnly || ngControl.control.disabled\"\r\n >\r\n <!-- Leading Icon -->\r\n <mat-icon *ngIf=\"inputData.iconPrefix\"\r\n matPrefix\r\n [ngClass]=\"{\r\n 'readonly-color' : !inputData.iconPrefixColor && (inputData.readOnly || ngControl.control.disabled),\r\n 'default-form-icon-color' : !inputData.iconPrefixColor && !(inputData.readOnly || ngControl.control.disabled)\r\n }\"\r\n [matTooltip]=\"((inputData.iconPrefixTooltip || '') | translate)\"\r\n [style.color]=\"inputData.iconPrefixColor || null\"\r\n >{{ inputData.iconPrefix }}\r\n </mat-icon>\r\n\r\n <mat-icon *ngIf=\"inputData.iconPrefixSvg\"\r\n matPrefix\r\n [matTooltip]=\"((inputData.iconPrefixTooltip || '') | translate)\"\r\n [svgIcon]=\"inputData.iconPrefixSvg\"\r\n ></mat-icon>\r\n\r\n <!-- Input Field -->\r\n <input matInput\r\n *ngIf=\"!inputData.textarea\"\r\n [type]=\"inputData.type || 'text'\"\r\n [readonly]=\"inputData.readOnly\"\r\n [placeholder]=\"(inputData.placeholder || '') | translate\"\r\n [pattern]=\"inputData.pattern!\"\r\n [formControl]=\"ngControl.control\"\r\n [mask]=\"inputData.mask || ''\"\r\n [ngClass]=\"{'readonly-color readonly-cursor' : inputData.readOnly || ngControl.control.disabled}\"\r\n [inputMask]=\"inputData.inputMask!\"\r\n [errorStateMatcher]=\"customErrorStateMatcher\"\r\n (blur)=\"onFocusOut()\"\r\n >\r\n\r\n <textarea matInput\r\n *ngIf=\"inputData.textarea\"\r\n [type]=\"inputData.type || 'text'\"\r\n [readonly]=\"inputData.readOnly\"\r\n [placeholder]=\"(inputData.placeholder || '') | translate\"\r\n [pattern]=\"inputData.pattern!\"\r\n [formControl]=\"ngControl.control\"\r\n [ngClass]=\"{'readonly-color' : inputData.readOnly || ngControl.control.disabled}\"\r\n [errorStateMatcher]=\"customErrorStateMatcher\"\r\n ></textarea>\r\n\r\n <!-- Clear Icon -->\r\n <i-tech-icon-button\r\n *ngIf=\"inputData.clearable\"\r\n iconName=\"cancel\"\r\n matSuffix\r\n [disabled]=\"inputData.readOnly || ngControl.control.disabled || false\"\r\n [ngClass]=\"inputData.readOnly || ngControl.control.disabled ? 'readonly-color' : 'default-form-icon-color'\"\r\n (click)=\"clear()\"\r\n >\r\n </i-tech-icon-button>\r\n\r\n <!-- Trailing Icon -->\r\n <i-tech-icon-button\r\n *ngIf=\"inputData.iconSuffix\"\r\n [iconName]=\"inputData.iconSuffix\"\r\n [disabled]=\"inputData.readOnly || ngControl.control.disabled || false\"\r\n [ngClass]=\"inputData.readOnly || ngControl.control.disabled ? 'readonly-color' : 'default-form-icon-color'\"\r\n matSuffix\r\n >\r\n </i-tech-icon-button>\r\n\r\n <!-- Error Messages -->\r\n <mat-error *ngIf=\"!!(ngControl.control.errors && inputData.submit)\">\r\n {{ ngControl.control | generateErrorMessages : (inputData.label || '') : inputData.defaultPatternKey }}\r\n </mat-error>\r\n\r\n <!-- Helper Text -->\r\n <mat-hint *ngIf=\"!(!!(ngControl.control.errors && inputData.submit)) && inputData.hint\">\r\n {{ inputData.hint | translate }}\r\n </mat-hint>\r\n </mat-form-field>\r\n</div>\r\n", dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: GenerateErrorMessagesPipe, name: "generateErrorMessages" }, { kind: "component", type: IconButtonComponent, selector: "i-tech-icon-button", inputs: ["size", "type", "iconSvg", "iconName", "tooltip", "disabled"], outputs: ["buttonClick"] }, { kind: "directive", type: InputMaskDirective, selector: "[inputMask]", inputs: ["inputMask", "min", "max", "float"] }, { kind: "directive", type: NgxMaskDirective, selector: "input[mask], textarea[mask]", inputs: ["mask", "specialCharacters", "patterns", "prefix", "suffix", "thousandSeparator", "decimalMarker", "dropSpecialCharacters", "hiddenInput", "showMaskTyped", "placeHolderCharacter", "shownMaskExpression", "showTemplate", "clearIfNotMatch", "validation", "separatorLimit", "allowNegativeNumbers", "leadZeroDateTime", "leadZero", "triggerOnMaskChange", "apm", "inputTransformFn", "outputTransformFn", "keepCharacterPositions"], outputs: ["maskFilled"], exportAs: ["mask", "ngxMask"] }, { kind: "ngmodule", type: MatFormFieldModule }, { 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.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { 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"] }] }); }
|
|
51
51
|
}
|
|
52
52
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TextInputComponent, decorators: [{
|
|
53
53
|
type: Component,
|
|
@@ -64,10 +64,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
64
64
|
InputMaskDirective,
|
|
65
65
|
NgxMaskDirective,
|
|
66
66
|
MatFormFieldModule
|
|
67
|
-
], standalone: true, template: "<div *ngIf=\"inputData && ngControl\">\r\n
|
|
67
|
+
], standalone: true, template: "<div *ngIf=\"inputData && ngControl\">\r\n <div class=\"w-100\">\r\n <mat-label [ngClass]=\"{\r\n 'readonly-color' : inputData.readOnly || ngControl.control.disabled,\r\n 'invalid-label-color': !!(ngControl.control.errors && inputData.submit)\r\n }\"\r\n *ngIf=\"inputData.label\">\r\n {{ inputData.label | translate }}\r\n </mat-label>\r\n <span *ngIf=\"inputData.required\" class=\"required-input\"\r\n [ngClass]=\"{'readonly-color' : inputData.readOnly || ngControl.control.disabled}\">*</span>\r\n </div>\r\n <mat-form-field appearance=\"outline\" class=\"w-100\"\r\n [class.readonly-field]=\"inputData.readOnly || ngControl.control.disabled\"\r\n >\r\n <!-- Leading Icon -->\r\n <mat-icon *ngIf=\"inputData.iconPrefix\"\r\n matPrefix\r\n [ngClass]=\"{\r\n 'readonly-color' : !inputData.iconPrefixColor && (inputData.readOnly || ngControl.control.disabled),\r\n 'default-form-icon-color' : !inputData.iconPrefixColor && !(inputData.readOnly || ngControl.control.disabled)\r\n }\"\r\n [matTooltip]=\"((inputData.iconPrefixTooltip || '') | translate)\"\r\n [style.color]=\"inputData.iconPrefixColor || null\"\r\n >{{ inputData.iconPrefix }}\r\n </mat-icon>\r\n\r\n <mat-icon *ngIf=\"inputData.iconPrefixSvg\"\r\n matPrefix\r\n [matTooltip]=\"((inputData.iconPrefixTooltip || '') | translate)\"\r\n [svgIcon]=\"inputData.iconPrefixSvg\"\r\n ></mat-icon>\r\n\r\n <!-- Input Field -->\r\n <input matInput\r\n *ngIf=\"!inputData.textarea\"\r\n [type]=\"inputData.type || 'text'\"\r\n [readonly]=\"inputData.readOnly\"\r\n [placeholder]=\"(inputData.placeholder || '') | translate\"\r\n [pattern]=\"inputData.pattern!\"\r\n [formControl]=\"ngControl.control\"\r\n [mask]=\"inputData.mask || ''\"\r\n [ngClass]=\"{'readonly-color readonly-cursor' : inputData.readOnly || ngControl.control.disabled}\"\r\n [inputMask]=\"inputData.inputMask!\"\r\n [errorStateMatcher]=\"customErrorStateMatcher\"\r\n (blur)=\"onFocusOut()\"\r\n >\r\n\r\n <textarea matInput\r\n *ngIf=\"inputData.textarea\"\r\n [type]=\"inputData.type || 'text'\"\r\n [readonly]=\"inputData.readOnly\"\r\n [placeholder]=\"(inputData.placeholder || '') | translate\"\r\n [pattern]=\"inputData.pattern!\"\r\n [formControl]=\"ngControl.control\"\r\n [ngClass]=\"{'readonly-color' : inputData.readOnly || ngControl.control.disabled}\"\r\n [errorStateMatcher]=\"customErrorStateMatcher\"\r\n ></textarea>\r\n\r\n <!-- Clear Icon -->\r\n <i-tech-icon-button\r\n *ngIf=\"inputData.clearable\"\r\n iconName=\"cancel\"\r\n matSuffix\r\n [disabled]=\"inputData.readOnly || ngControl.control.disabled || false\"\r\n [ngClass]=\"inputData.readOnly || ngControl.control.disabled ? 'readonly-color' : 'default-form-icon-color'\"\r\n (click)=\"clear()\"\r\n >\r\n </i-tech-icon-button>\r\n\r\n <!-- Trailing Icon -->\r\n <i-tech-icon-button\r\n *ngIf=\"inputData.iconSuffix\"\r\n [iconName]=\"inputData.iconSuffix\"\r\n [disabled]=\"inputData.readOnly || ngControl.control.disabled || false\"\r\n [ngClass]=\"inputData.readOnly || ngControl.control.disabled ? 'readonly-color' : 'default-form-icon-color'\"\r\n matSuffix\r\n >\r\n </i-tech-icon-button>\r\n\r\n <!-- Error Messages -->\r\n <mat-error *ngIf=\"!!(ngControl.control.errors && inputData.submit)\">\r\n {{ ngControl.control | generateErrorMessages : (inputData.label || '') : inputData.defaultPatternKey }}\r\n </mat-error>\r\n\r\n <!-- Helper Text -->\r\n <mat-hint *ngIf=\"!(!!(ngControl.control.errors && inputData.submit)) && inputData.hint\">\r\n {{ inputData.hint | translate }}\r\n </mat-hint>\r\n </mat-form-field>\r\n</div>\r\n" }]
|
|
68
68
|
}], ctorParameters: () => [{ type: i1.InputService }], propDecorators: { inputData: [{
|
|
69
69
|
type: Input
|
|
70
70
|
}], focusOutEmitter: [{
|
|
71
71
|
type: Output
|
|
72
72
|
}] } });
|
|
73
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWQtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvdGV4dC90ZXh0LWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy90ZXh0L3RleHQtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN0RSxPQUFPLEVBQWtCLG1CQUFtQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFHcEUsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQy9DLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDakQsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sMENBQTBDLENBQUM7QUFDbkYsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sc0NBQXNDLENBQUM7QUFDekUsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFDekUsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sVUFBVSxDQUFDOzs7Ozs7QUFzQjFDLE1BQU0sT0FBTyxrQkFBa0I7SUFDM0IsSUFBYSxTQUFTLENBQUMsSUFBdUI7UUFDMUMsc0RBQXNEO1FBQ3RELElBQUksSUFBSSxFQUFFLE1BQU0sSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzNDLENBQUM7UUFDRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztJQUMzQixDQUFDO0lBQ0QsSUFBSSxTQUFTO1FBQ1QsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQzNCLENBQUM7SUFNRCxZQUFvQixZQUEwQjtRQUExQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUxwQyxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFxQnJELDRCQUF1QixHQUFHO1lBQ3RCLFlBQVksRUFBRSxDQUFDLE9BQVksRUFBRSxJQUFTLEVBQVcsRUFBRTtnQkFDL0MsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3BFLENBQUM7U0FDSixDQUFDO1FBbkJFLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6RCxDQUFDO0lBRUQsVUFBVTtRQUNOLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2hDLENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSztRQUNELElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ25DLENBQUM7SUFDTCxDQUFDOytHQTlCUSxrQkFBa0I7bUdBQWxCLGtCQUFrQixrS0NuQy9CLDJ0SUFzRkEsMkNEbEVJLGVBQWUsNEZBQ2YsT0FBTyxvRkFDUCxPQUFPLDJJQUNQLFVBQVUsaVJBQ1YsUUFBUSxnVUFDUixtQkFBbUIsbXVCQUNuQixJQUFJLHdGQUNKLHlCQUF5Qiw4REFDekIsbUJBQW1CLGlLQUNuQixrQkFBa0Isc0dBQ2xCLGdCQUFnQixnakJBQ2hCLGtCQUFrQjs7NEZBSVQsa0JBQWtCO2tCQXBCOUIsU0FBUzsrQkFDRSxtQkFBbUIsV0FHcEI7d0JBQ1AsZUFBZTt3QkFDZixPQUFPO3dCQUNQLE9BQU87d0JBQ1AsVUFBVTt3QkFDVixRQUFRO3dCQUNSLG1CQUFtQjt3QkFDbkIsSUFBSTt3QkFDSix5QkFBeUI7d0JBQ3pCLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3dCQUNsQixnQkFBZ0I7d0JBQ2hCLGtCQUFrQjtxQkFDbkIsY0FDVyxJQUFJO2lGQUdELFNBQVM7c0JBQXJCLEtBQUs7Z0JBVUksZUFBZTtzQkFBeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtGb3JtQ29udHJvbE5hbWUsIFJlYWN0aXZlRm9ybXNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgSW5wdXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaW5wdXQuc2VydmljZSc7XHJcbmltcG9ydCB7QXBwSW5wdXRJbnRlcmZhY2V9IGZyb20gXCIuLi8uLi9pbnRlcmZhY2VzL2FwcC1pbnB1dC5pbnRlcmZhY2VcIjtcclxuaW1wb3J0IHtNYXRGb3JtRmllbGRNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkXCI7XHJcbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xyXG5pbXBvcnQge05nQ2xhc3MsIE5nSWZ9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHtNYXRJY29ufSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvblwiO1xyXG5pbXBvcnQge01hdFRvb2x0aXB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwXCI7XHJcbmltcG9ydCB7TWF0SW5wdXR9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pbnB1dFwiO1xyXG5pbXBvcnQge0dlbmVyYXRlRXJyb3JNZXNzYWdlc1BpcGV9IGZyb20gXCIuLi8uLi9waXBlcy9nZW5lcmF0ZS1lcnJvci1tZXNzYWdlcy5waXBlXCI7XHJcbmltcG9ydCB7SWNvbkJ1dHRvbkNvbXBvbmVudH0gZnJvbSBcIi4uL2ljb24tYnV0dG9uL2ljb24tYnV0dG9uLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge0lucHV0TWFza0RpcmVjdGl2ZX0gZnJvbSBcIi4uLy4uL2RpcmVjdGl2ZXMvaW5wdXQtbWFzay5kaXJlY3RpdmVcIjtcclxuaW1wb3J0IHtOZ3hNYXNrRGlyZWN0aXZlfSBmcm9tIFwibmd4LW1hc2tcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaS10ZWNoLXRleHQtaW5wdXQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90ZXh0LWlucHV0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFtdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcclxuICAgIE5nQ2xhc3MsXHJcbiAgICBNYXRJY29uLFxyXG4gICAgTWF0VG9vbHRpcCxcclxuICAgIE1hdElucHV0LFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIE5nSWYsXHJcbiAgICBHZW5lcmF0ZUVycm9yTWVzc2FnZXNQaXBlLFxyXG4gICAgSWNvbkJ1dHRvbkNvbXBvbmVudCxcclxuICAgIElucHV0TWFza0RpcmVjdGl2ZSxcclxuICAgIE5neE1hc2tEaXJlY3RpdmUsXHJcbiAgICBNYXRGb3JtRmllbGRNb2R1bGVcclxuICBdLFxyXG4gIHN0YW5kYWxvbmU6IHRydWVcclxufSlcclxuZXhwb3J0IGNsYXNzIFRleHRJbnB1dENvbXBvbmVudCB7XHJcbiAgICBASW5wdXQoKSBzZXQgaW5wdXREYXRhKGRhdGE6IEFwcElucHV0SW50ZXJmYWNlKSB7XHJcbiAgICAgICAgLy8gSWYgc3VibWl0IGJlY29tZXMgdHJ1ZSwgbWFyayB0aGUgY29udHJvbCBhcyB0b3VjaGVkXHJcbiAgICAgICAgaWYgKGRhdGE/LnN1Ym1pdCAmJiB0aGlzLm5nQ29udHJvbC5jb250cm9sKSB7XHJcbiAgICAgICAgICAgIHRoaXMubmdDb250cm9sLmNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9pbnB1dERhdGEgPSBkYXRhO1xyXG4gICAgfVxyXG4gICAgZ2V0IGlucHV0RGF0YSgpOiBBcHBJbnB1dEludGVyZmFjZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lucHV0RGF0YTtcclxuICAgIH1cclxuICAgIEBPdXRwdXQoKSBmb2N1c091dEVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gICAgcHJpdmF0ZSBfaW5wdXREYXRhITogQXBwSW5wdXRJbnRlcmZhY2U7XHJcbiAgICBuZ0NvbnRyb2w6IEZvcm1Db250cm9sTmFtZTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGlucHV0U2VydmljZTogSW5wdXRTZXJ2aWNlKSB7XHJcbiAgICAgICAgdGhpcy5uZ0NvbnRyb2wgPSB0aGlzLmlucHV0U2VydmljZS5pbmplY3ROZ0NvbnRyb2woKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkZvY3VzT3V0KCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLl9pbnB1dERhdGEuZm9jdXNPdXRFbWl0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuZm9jdXNPdXRFbWl0dGVyLmVtaXQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY2xlYXIoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMubmdDb250cm9sKSB7XHJcbiAgICAgICAgICAgIHRoaXMubmdDb250cm9sLmNvbnRyb2wucmVzZXQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY3VzdG9tRXJyb3JTdGF0ZU1hdGNoZXIgPSB7XHJcbiAgICAgICAgaXNFcnJvclN0YXRlOiAoY29udHJvbDogYW55LCBmb3JtOiBhbnkpOiBib29sZWFuID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuICEhKGNvbnRyb2wgJiYgY29udHJvbC5pbnZhbGlkICYmIHRoaXMuaW5wdXREYXRhPy5zdWJtaXQpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbn1cclxuIiwiPGRpdiAqbmdJZj1cImlucHV0RGF0YSAmJiBuZ0NvbnRyb2xcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ3LTEwMFwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWwgW25nQ2xhc3NdPVwieydyZWFkb25seS1jb2xvcicgOiBpbnB1dERhdGEucmVhZE9ubHkgfHwgbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWR9XCIgKm5nSWY9XCJpbnB1dERhdGEubGFiZWxcIj5cclxuICAgICAgICAgICAge3tpbnB1dERhdGEubGFiZWwgfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgIDwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiaW5wdXREYXRhLnJlcXVpcmVkXCIgY2xhc3M9XCJyZXF1aXJlZC1pbnB1dFwiIFtuZ0NsYXNzXT1cInsncmVhZG9ubHktY29sb3InIDogaW5wdXREYXRhLnJlYWRPbmx5IHx8IG5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkfVwiPio8L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGNsYXNzPVwidy0xMDBcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5yZWFkb25seS1maWVsZF09XCJpbnB1dERhdGEucmVhZE9ubHkgfHwgbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWRcIlxyXG4gICAgPlxyXG4gICAgICAgIDwhLS0gTGVhZGluZyBJY29uIC0tPlxyXG4gICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cImlucHV0RGF0YS5pY29uUHJlZml4XCJcclxuICAgICAgICAgICAgICAgICAgbWF0UHJlZml4XHJcbiAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAncmVhZG9ubHktY29sb3InIDogIWlucHV0RGF0YS5pY29uUHJlZml4Q29sb3IgJiYgKGlucHV0RGF0YS5yZWFkT25seSB8fCBuZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlZCksXHJcbiAgICAgICAgICAgICAgICAgICAgJ2RlZmF1bHQtZm9ybS1pY29uLWNvbG9yJyA6ICFpbnB1dERhdGEuaWNvblByZWZpeENvbG9yICYmICEoaW5wdXREYXRhLnJlYWRPbmx5IHx8IG5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCIoKGlucHV0RGF0YS5pY29uUHJlZml4VG9vbHRpcCB8fCAnJykgfCB0cmFuc2xhdGUpXCJcclxuICAgICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImlucHV0RGF0YS5pY29uUHJlZml4Q29sb3IgfHwgbnVsbFwiXHJcbiAgICAgICAgPnt7IGlucHV0RGF0YS5pY29uUHJlZml4IH19XHJcbiAgICAgICAgPC9tYXQtaWNvbj5cclxuXHJcbiAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiaW5wdXREYXRhLmljb25QcmVmaXhTdmdcIlxyXG4gICAgICAgICAgICAgICAgICBtYXRQcmVmaXhcclxuICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiKChpbnB1dERhdGEuaWNvblByZWZpeFRvb2x0aXAgfHwgJycpIHwgdHJhbnNsYXRlKVwiXHJcbiAgICAgICAgICAgICAgICAgIFtzdmdJY29uXT1cImlucHV0RGF0YS5pY29uUHJlZml4U3ZnXCJcclxuICAgICAgICA+PC9tYXQtaWNvbj5cclxuXHJcbiAgICAgICAgPCEtLSBJbnB1dCBGaWVsZCAtLT5cclxuICAgICAgICA8aW5wdXQgbWF0SW5wdXRcclxuICAgICAgICAgICAgICAgKm5nSWY9XCIhaW5wdXREYXRhLnRleHRhcmVhXCJcclxuICAgICAgICAgICAgICAgW3R5cGVdPVwiaW5wdXREYXRhLnR5cGUgfHwgJ3RleHQnXCJcclxuICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImlucHV0RGF0YS5yZWFkT25seVwiXHJcbiAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCIoaW5wdXREYXRhLnBsYWNlaG9sZGVyIHx8ICcnKSB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgIFtwYXR0ZXJuXT1cImlucHV0RGF0YS5wYXR0ZXJuIVwiXHJcbiAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJuZ0NvbnRyb2wuY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgIFttYXNrXT1cImlucHV0RGF0YS5tYXNrIHx8ICcnXCJcclxuICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydyZWFkb25seS1jb2xvciByZWFkb25seS1jdXJzb3InIDogaW5wdXREYXRhLnJlYWRPbmx5IHx8IG5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkfVwiXHJcbiAgICAgICAgICAgICAgIFtpbnB1dE1hc2tdPVwiaW5wdXREYXRhLmlucHV0TWFzayFcIlxyXG4gICAgICAgICAgICAgICBbZXJyb3JTdGF0ZU1hdGNoZXJdPVwiY3VzdG9tRXJyb3JTdGF0ZU1hdGNoZXJcIlxyXG4gICAgICAgICAgICAgICAoYmx1cik9XCJvbkZvY3VzT3V0KClcIlxyXG4gICAgICAgID5cclxuXHJcbiAgICAgICAgPHRleHRhcmVhIG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICpuZ0lmPVwiaW5wdXREYXRhLnRleHRhcmVhXCJcclxuICAgICAgICAgICAgICAgW3R5cGVdPVwiaW5wdXREYXRhLnR5cGUgfHwgJ3RleHQnXCJcclxuICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImlucHV0RGF0YS5yZWFkT25seVwiXHJcbiAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCIoaW5wdXREYXRhLnBsYWNlaG9sZGVyIHx8ICcnKSB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgIFtwYXR0ZXJuXT1cImlucHV0RGF0YS5wYXR0ZXJuIVwiXHJcbiAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJuZ0NvbnRyb2wuY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsncmVhZG9ubHktY29sb3InIDogaW5wdXREYXRhLnJlYWRPbmx5IHx8IG5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkfVwiXHJcbiAgICAgICAgICAgICAgIFtlcnJvclN0YXRlTWF0Y2hlcl09XCJjdXN0b21FcnJvclN0YXRlTWF0Y2hlclwiXHJcbiAgICAgICAgPjwvdGV4dGFyZWE+XHJcblxyXG4gICAgICAgIDwhLS0gQ2xlYXIgSWNvbiAtLT5cclxuICAgICAgICA8aS10ZWNoLWljb24tYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImlucHV0RGF0YS5jbGVhcmFibGVcIlxyXG4gICAgICAgICAgICAgICAgaWNvbk5hbWU9XCJjYW5jZWxcIlxyXG4gICAgICAgICAgICAgICAgbWF0U3VmZml4XHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaW5wdXREYXRhLnJlYWRPbmx5IHx8IG5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkIHx8IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImlucHV0RGF0YS5yZWFkT25seSB8fCBuZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlZCA/ICdyZWFkb25seS1jb2xvcicgOiAnZGVmYXVsdC1mb3JtLWljb24tY29sb3InXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJjbGVhcigpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgPC9pLXRlY2gtaWNvbi1idXR0b24+XHJcblxyXG4gICAgICAgIDwhLS0gVHJhaWxpbmcgSWNvbiAtLT5cclxuICAgICAgICA8aS10ZWNoLWljb24tYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImlucHV0RGF0YS5pY29uU3VmZml4XCJcclxuICAgICAgICAgICAgICAgIFtpY29uTmFtZV09XCJpbnB1dERhdGEuaWNvblN1ZmZpeFwiXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaW5wdXREYXRhLnJlYWRPbmx5IHx8IG5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkICB8fCBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJpbnB1dERhdGEucmVhZE9ubHkgfHwgbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWQgPyAncmVhZG9ubHktY29sb3InIDogJ2RlZmF1bHQtZm9ybS1pY29uLWNvbG9yJ1wiXHJcbiAgICAgICAgICAgICAgICBtYXRTdWZmaXhcclxuICAgICAgICA+XHJcbiAgICAgICAgPC9pLXRlY2gtaWNvbi1idXR0b24+XHJcblxyXG4gICAgICAgIDwhLS0gRXJyb3IgTWVzc2FnZXMgLS0+XHJcbiAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cIiEhKG5nQ29udHJvbC5jb250cm9sLmVycm9ycyAmJiBpbnB1dERhdGEuc3VibWl0KVwiPlxyXG4gICAgICAgICAgICB7eyBuZ0NvbnRyb2wuY29udHJvbCB8IGdlbmVyYXRlRXJyb3JNZXNzYWdlcyA6IChpbnB1dERhdGEubGFiZWwgfHwgJycpIDogaW5wdXREYXRhLmRlZmF1bHRQYXR0ZXJuS2V5fX1cclxuICAgICAgICA8L21hdC1lcnJvcj5cclxuXHJcbiAgICAgICAgPCEtLSBIZWxwZXIgVGV4dCAtLT5cclxuICAgICAgICA8bWF0LWhpbnQgKm5nSWY9XCIhKCEhKG5nQ29udHJvbC5jb250cm9sLmVycm9ycyAmJiBpbnB1dERhdGEuc3VibWl0KSkgJiYgaW5wdXREYXRhLmhpbnRcIj5cclxuICAgICAgICAgICAge3tpbnB1dERhdGEuaGludCB8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgPC9tYXQtaGludD5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWQtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvdGV4dC90ZXh0LWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy90ZXh0L3RleHQtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN0RSxPQUFPLEVBQWtCLG1CQUFtQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFHcEUsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQy9DLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDakQsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sMENBQTBDLENBQUM7QUFDbkYsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sc0NBQXNDLENBQUM7QUFDekUsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFDekUsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sVUFBVSxDQUFDOzs7Ozs7QUFzQjFDLE1BQU0sT0FBTyxrQkFBa0I7SUFDM0IsSUFBYSxTQUFTLENBQUMsSUFBdUI7UUFDMUMsc0RBQXNEO1FBQ3RELElBQUksSUFBSSxFQUFFLE1BQU0sSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzNDLENBQUM7UUFDRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztJQUMzQixDQUFDO0lBQ0QsSUFBSSxTQUFTO1FBQ1QsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQzNCLENBQUM7SUFNRCxZQUFvQixZQUEwQjtRQUExQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUxwQyxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFxQnJELDRCQUF1QixHQUFHO1lBQ3RCLFlBQVksRUFBRSxDQUFDLE9BQVksRUFBRSxJQUFTLEVBQVcsRUFBRTtnQkFDL0MsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3BFLENBQUM7U0FDSixDQUFDO1FBbkJFLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6RCxDQUFDO0lBRUQsVUFBVTtRQUNOLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2hDLENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSztRQUNELElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ25DLENBQUM7SUFDTCxDQUFDOytHQTlCUSxrQkFBa0I7bUdBQWxCLGtCQUFrQixrS0NuQy9CLHFpSUEyRkEsMkNEdkVJLGVBQWUsNEZBQ2YsT0FBTyxvRkFDUCxPQUFPLDJJQUNQLFVBQVUsaVJBQ1YsUUFBUSxnVUFDUixtQkFBbUIsbXVCQUNuQixJQUFJLHdGQUNKLHlCQUF5Qiw4REFDekIsbUJBQW1CLGlLQUNuQixrQkFBa0Isc0dBQ2xCLGdCQUFnQixnakJBQ2hCLGtCQUFrQjs7NEZBSVQsa0JBQWtCO2tCQXBCOUIsU0FBUzsrQkFDRSxtQkFBbUIsV0FHcEI7d0JBQ1AsZUFBZTt3QkFDZixPQUFPO3dCQUNQLE9BQU87d0JBQ1AsVUFBVTt3QkFDVixRQUFRO3dCQUNSLG1CQUFtQjt3QkFDbkIsSUFBSTt3QkFDSix5QkFBeUI7d0JBQ3pCLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3dCQUNsQixnQkFBZ0I7d0JBQ2hCLGtCQUFrQjtxQkFDbkIsY0FDVyxJQUFJO2lGQUdELFNBQVM7c0JBQXJCLEtBQUs7Z0JBVUksZUFBZTtzQkFBeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtGb3JtQ29udHJvbE5hbWUsIFJlYWN0aXZlRm9ybXNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgSW5wdXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaW5wdXQuc2VydmljZSc7XHJcbmltcG9ydCB7QXBwSW5wdXRJbnRlcmZhY2V9IGZyb20gXCIuLi8uLi9pbnRlcmZhY2VzL2FwcC1pbnB1dC5pbnRlcmZhY2VcIjtcclxuaW1wb3J0IHtNYXRGb3JtRmllbGRNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkXCI7XHJcbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xyXG5pbXBvcnQge05nQ2xhc3MsIE5nSWZ9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHtNYXRJY29ufSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvblwiO1xyXG5pbXBvcnQge01hdFRvb2x0aXB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwXCI7XHJcbmltcG9ydCB7TWF0SW5wdXR9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pbnB1dFwiO1xyXG5pbXBvcnQge0dlbmVyYXRlRXJyb3JNZXNzYWdlc1BpcGV9IGZyb20gXCIuLi8uLi9waXBlcy9nZW5lcmF0ZS1lcnJvci1tZXNzYWdlcy5waXBlXCI7XHJcbmltcG9ydCB7SWNvbkJ1dHRvbkNvbXBvbmVudH0gZnJvbSBcIi4uL2ljb24tYnV0dG9uL2ljb24tYnV0dG9uLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge0lucHV0TWFza0RpcmVjdGl2ZX0gZnJvbSBcIi4uLy4uL2RpcmVjdGl2ZXMvaW5wdXQtbWFzay5kaXJlY3RpdmVcIjtcclxuaW1wb3J0IHtOZ3hNYXNrRGlyZWN0aXZlfSBmcm9tIFwibmd4LW1hc2tcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaS10ZWNoLXRleHQtaW5wdXQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90ZXh0LWlucHV0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFtdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcclxuICAgIE5nQ2xhc3MsXHJcbiAgICBNYXRJY29uLFxyXG4gICAgTWF0VG9vbHRpcCxcclxuICAgIE1hdElucHV0LFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIE5nSWYsXHJcbiAgICBHZW5lcmF0ZUVycm9yTWVzc2FnZXNQaXBlLFxyXG4gICAgSWNvbkJ1dHRvbkNvbXBvbmVudCxcclxuICAgIElucHV0TWFza0RpcmVjdGl2ZSxcclxuICAgIE5neE1hc2tEaXJlY3RpdmUsXHJcbiAgICBNYXRGb3JtRmllbGRNb2R1bGVcclxuICBdLFxyXG4gIHN0YW5kYWxvbmU6IHRydWVcclxufSlcclxuZXhwb3J0IGNsYXNzIFRleHRJbnB1dENvbXBvbmVudCB7XHJcbiAgICBASW5wdXQoKSBzZXQgaW5wdXREYXRhKGRhdGE6IEFwcElucHV0SW50ZXJmYWNlKSB7XHJcbiAgICAgICAgLy8gSWYgc3VibWl0IGJlY29tZXMgdHJ1ZSwgbWFyayB0aGUgY29udHJvbCBhcyB0b3VjaGVkXHJcbiAgICAgICAgaWYgKGRhdGE/LnN1Ym1pdCAmJiB0aGlzLm5nQ29udHJvbC5jb250cm9sKSB7XHJcbiAgICAgICAgICAgIHRoaXMubmdDb250cm9sLmNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9pbnB1dERhdGEgPSBkYXRhO1xyXG4gICAgfVxyXG4gICAgZ2V0IGlucHV0RGF0YSgpOiBBcHBJbnB1dEludGVyZmFjZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lucHV0RGF0YTtcclxuICAgIH1cclxuICAgIEBPdXRwdXQoKSBmb2N1c091dEVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gICAgcHJpdmF0ZSBfaW5wdXREYXRhITogQXBwSW5wdXRJbnRlcmZhY2U7XHJcbiAgICBuZ0NvbnRyb2w6IEZvcm1Db250cm9sTmFtZTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGlucHV0U2VydmljZTogSW5wdXRTZXJ2aWNlKSB7XHJcbiAgICAgICAgdGhpcy5uZ0NvbnRyb2wgPSB0aGlzLmlucHV0U2VydmljZS5pbmplY3ROZ0NvbnRyb2woKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkZvY3VzT3V0KCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLl9pbnB1dERhdGEuZm9jdXNPdXRFbWl0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuZm9jdXNPdXRFbWl0dGVyLmVtaXQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY2xlYXIoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMubmdDb250cm9sKSB7XHJcbiAgICAgICAgICAgIHRoaXMubmdDb250cm9sLmNvbnRyb2wucmVzZXQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY3VzdG9tRXJyb3JTdGF0ZU1hdGNoZXIgPSB7XHJcbiAgICAgICAgaXNFcnJvclN0YXRlOiAoY29udHJvbDogYW55LCBmb3JtOiBhbnkpOiBib29sZWFuID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuICEhKGNvbnRyb2wgJiYgY29udHJvbC5pbnZhbGlkICYmIHRoaXMuaW5wdXREYXRhPy5zdWJtaXQpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbn1cclxuIiwiPGRpdiAqbmdJZj1cImlucHV0RGF0YSAmJiBuZ0NvbnRyb2xcIj5cclxuICA8ZGl2IGNsYXNzPVwidy0xMDBcIj5cclxuICAgIDxtYXQtbGFiZWwgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgJ3JlYWRvbmx5LWNvbG9yJyA6IGlucHV0RGF0YS5yZWFkT25seSB8fCBuZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlZCxcclxuICAgICAgICAgICdpbnZhbGlkLWxhYmVsLWNvbG9yJzogISEobmdDb250cm9sLmNvbnRyb2wuZXJyb3JzICYmIGlucHV0RGF0YS5zdWJtaXQpXHJcbiAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgKm5nSWY9XCJpbnB1dERhdGEubGFiZWxcIj5cclxuICAgICAge3sgaW5wdXREYXRhLmxhYmVsIHwgdHJhbnNsYXRlIH19XHJcbiAgICA8L21hdC1sYWJlbD5cclxuICAgIDxzcGFuICpuZ0lmPVwiaW5wdXREYXRhLnJlcXVpcmVkXCIgY2xhc3M9XCJyZXF1aXJlZC1pbnB1dFwiXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7J3JlYWRvbmx5LWNvbG9yJyA6IGlucHV0RGF0YS5yZWFkT25seSB8fCBuZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlZH1cIj4qPC9zcGFuPlxyXG4gIDwvZGl2PlxyXG4gIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGNsYXNzPVwidy0xMDBcIlxyXG4gICAgICAgICAgICAgICAgICBbY2xhc3MucmVhZG9ubHktZmllbGRdPVwiaW5wdXREYXRhLnJlYWRPbmx5IHx8IG5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkXCJcclxuICA+XHJcbiAgICA8IS0tIExlYWRpbmcgSWNvbiAtLT5cclxuICAgIDxtYXQtaWNvbiAqbmdJZj1cImlucHV0RGF0YS5pY29uUHJlZml4XCJcclxuICAgICAgICAgICAgICBtYXRQcmVmaXhcclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgJ3JlYWRvbmx5LWNvbG9yJyA6ICFpbnB1dERhdGEuaWNvblByZWZpeENvbG9yICYmIChpbnB1dERhdGEucmVhZE9ubHkgfHwgbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWQpLFxyXG4gICAgICAgICAgICAgICAgICAgICdkZWZhdWx0LWZvcm0taWNvbi1jb2xvcicgOiAhaW5wdXREYXRhLmljb25QcmVmaXhDb2xvciAmJiAhKGlucHV0RGF0YS5yZWFkT25seSB8fCBuZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlZClcclxuICAgICAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCIoKGlucHV0RGF0YS5pY29uUHJlZml4VG9vbHRpcCB8fCAnJykgfCB0cmFuc2xhdGUpXCJcclxuICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiaW5wdXREYXRhLmljb25QcmVmaXhDb2xvciB8fCBudWxsXCJcclxuICAgID57eyBpbnB1dERhdGEuaWNvblByZWZpeCB9fVxyXG4gICAgPC9tYXQtaWNvbj5cclxuXHJcbiAgICA8bWF0LWljb24gKm5nSWY9XCJpbnB1dERhdGEuaWNvblByZWZpeFN2Z1wiXHJcbiAgICAgICAgICAgICAgbWF0UHJlZml4XHJcbiAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiKChpbnB1dERhdGEuaWNvblByZWZpeFRvb2x0aXAgfHwgJycpIHwgdHJhbnNsYXRlKVwiXHJcbiAgICAgICAgICAgICAgW3N2Z0ljb25dPVwiaW5wdXREYXRhLmljb25QcmVmaXhTdmdcIlxyXG4gICAgPjwvbWF0LWljb24+XHJcblxyXG4gICAgPCEtLSBJbnB1dCBGaWVsZCAtLT5cclxuICAgIDxpbnB1dCBtYXRJbnB1dFxyXG4gICAgICAgICAgICpuZ0lmPVwiIWlucHV0RGF0YS50ZXh0YXJlYVwiXHJcbiAgICAgICAgICAgW3R5cGVdPVwiaW5wdXREYXRhLnR5cGUgfHwgJ3RleHQnXCJcclxuICAgICAgICAgICBbcmVhZG9ubHldPVwiaW5wdXREYXRhLnJlYWRPbmx5XCJcclxuICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiKGlucHV0RGF0YS5wbGFjZWhvbGRlciB8fCAnJykgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgIFtwYXR0ZXJuXT1cImlucHV0RGF0YS5wYXR0ZXJuIVwiXHJcbiAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cIm5nQ29udHJvbC5jb250cm9sXCJcclxuICAgICAgICAgICBbbWFza109XCJpbnB1dERhdGEubWFzayB8fCAnJ1wiXHJcbiAgICAgICAgICAgW25nQ2xhc3NdPVwieydyZWFkb25seS1jb2xvciByZWFkb25seS1jdXJzb3InIDogaW5wdXREYXRhLnJlYWRPbmx5IHx8IG5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkfVwiXHJcbiAgICAgICAgICAgW2lucHV0TWFza109XCJpbnB1dERhdGEuaW5wdXRNYXNrIVwiXHJcbiAgICAgICAgICAgW2Vycm9yU3RhdGVNYXRjaGVyXT1cImN1c3RvbUVycm9yU3RhdGVNYXRjaGVyXCJcclxuICAgICAgICAgICAoYmx1cik9XCJvbkZvY3VzT3V0KClcIlxyXG4gICAgPlxyXG5cclxuICAgIDx0ZXh0YXJlYSBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiaW5wdXREYXRhLnRleHRhcmVhXCJcclxuICAgICAgICAgICAgICBbdHlwZV09XCJpbnB1dERhdGEudHlwZSB8fCAndGV4dCdcIlxyXG4gICAgICAgICAgICAgIFtyZWFkb25seV09XCJpbnB1dERhdGEucmVhZE9ubHlcIlxyXG4gICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCIoaW5wdXREYXRhLnBsYWNlaG9sZGVyIHx8ICcnKSB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgW3BhdHRlcm5dPVwiaW5wdXREYXRhLnBhdHRlcm4hXCJcclxuICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwibmdDb250cm9sLmNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsncmVhZG9ubHktY29sb3InIDogaW5wdXREYXRhLnJlYWRPbmx5IHx8IG5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkfVwiXHJcbiAgICAgICAgICAgICAgW2Vycm9yU3RhdGVNYXRjaGVyXT1cImN1c3RvbUVycm9yU3RhdGVNYXRjaGVyXCJcclxuICAgID48L3RleHRhcmVhPlxyXG5cclxuICAgIDwhLS0gQ2xlYXIgSWNvbiAtLT5cclxuICAgIDxpLXRlY2gtaWNvbi1idXR0b25cclxuICAgICAgKm5nSWY9XCJpbnB1dERhdGEuY2xlYXJhYmxlXCJcclxuICAgICAgaWNvbk5hbWU9XCJjYW5jZWxcIlxyXG4gICAgICBtYXRTdWZmaXhcclxuICAgICAgW2Rpc2FibGVkXT1cImlucHV0RGF0YS5yZWFkT25seSB8fCBuZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlZCB8fCBmYWxzZVwiXHJcbiAgICAgIFtuZ0NsYXNzXT1cImlucHV0RGF0YS5yZWFkT25seSB8fCBuZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlZCA/ICdyZWFkb25seS1jb2xvcicgOiAnZGVmYXVsdC1mb3JtLWljb24tY29sb3InXCJcclxuICAgICAgKGNsaWNrKT1cImNsZWFyKClcIlxyXG4gICAgPlxyXG4gICAgPC9pLXRlY2gtaWNvbi1idXR0b24+XHJcblxyXG4gICAgPCEtLSBUcmFpbGluZyBJY29uIC0tPlxyXG4gICAgPGktdGVjaC1pY29uLWJ1dHRvblxyXG4gICAgICAqbmdJZj1cImlucHV0RGF0YS5pY29uU3VmZml4XCJcclxuICAgICAgW2ljb25OYW1lXT1cImlucHV0RGF0YS5pY29uU3VmZml4XCJcclxuICAgICAgW2Rpc2FibGVkXT1cImlucHV0RGF0YS5yZWFkT25seSB8fCBuZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlZCAgfHwgZmFsc2VcIlxyXG4gICAgICBbbmdDbGFzc109XCJpbnB1dERhdGEucmVhZE9ubHkgfHwgbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWQgPyAncmVhZG9ubHktY29sb3InIDogJ2RlZmF1bHQtZm9ybS1pY29uLWNvbG9yJ1wiXHJcbiAgICAgIG1hdFN1ZmZpeFxyXG4gICAgPlxyXG4gICAgPC9pLXRlY2gtaWNvbi1idXR0b24+XHJcblxyXG4gICAgPCEtLSBFcnJvciBNZXNzYWdlcyAtLT5cclxuICAgIDxtYXQtZXJyb3IgKm5nSWY9XCIhIShuZ0NvbnRyb2wuY29udHJvbC5lcnJvcnMgJiYgaW5wdXREYXRhLnN1Ym1pdClcIj5cclxuICAgICAge3sgbmdDb250cm9sLmNvbnRyb2wgfCBnZW5lcmF0ZUVycm9yTWVzc2FnZXMgOiAoaW5wdXREYXRhLmxhYmVsIHx8ICcnKSA6IGlucHV0RGF0YS5kZWZhdWx0UGF0dGVybktleSB9fVxyXG4gICAgPC9tYXQtZXJyb3I+XHJcblxyXG4gICAgPCEtLSBIZWxwZXIgVGV4dCAtLT5cclxuICAgIDxtYXQtaGludCAqbmdJZj1cIiEoISEobmdDb250cm9sLmNvbnRyb2wuZXJyb3JzICYmIGlucHV0RGF0YS5zdWJtaXQpKSAmJiBpbnB1dERhdGEuaGludFwiPlxyXG4gICAgICB7eyBpbnB1dERhdGEuaGludCB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgPC9tYXQtaGludD5cclxuICA8L21hdC1mb3JtLWZpZWxkPlxyXG48L2Rpdj5cclxuIl19
|