@sarasanalytics-com/design-system 0.0.140 → 0.0.142

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.
@@ -292,7 +292,7 @@ export class FormInputComponent extends FieldType {
292
292
  }
293
293
  }
294
294
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: FormInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
295
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.4", type: FormInputComponent, isStandalone: true, selector: "sa-input", inputs: { icon: "icon", params: "params" }, viewQueries: [{ propertyName: "formInput", first: true, predicate: ["formInput"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"sa-input-container {{props?.['inputContainerClass']}}\" [ngStyle]=\"{'gap': getLabelFieldGap()}\">\r\n @if (!!props?.['bigLabel'] || !!props?.['bigDescription']) {\r\n <div class=\"sa-input-big-label-container\" [ngClass]=\"disabled ? 'disabled' : '' \">\r\n <h2 class=\"sa-input-big-label\">\r\n {{props?.['bigLabel']}}\r\n </h2>\r\n <p class=\"sa-input-big-description\">\r\n {{props?.['bigDescription']}}\r\n </p>\r\n </div>\r\n }\r\n @if(!!props?.['label']){\r\n <div class=\"sa-input-label-container\" [ngClass]=\"disabled ? 'disabled' : '' \">\r\n <div class=\"sa-input-label-tooltip-container\">\r\n <span class=\"sa-input-label\">\r\n {{props?.['label']}}\r\n </span>\r\n @if(!!props?.['tooltip']){\r\n <span class=\"tooltip-container\">\r\n <sa-icon [icon]=\"props?.['tooltipIcon'] || 'infoCircleOutlined'\" customClass=\"info-icon\"\r\n [matTooltip]=\"props?.['tooltip']\" matTooltipClass=\"custom-tooltip\" class=\"tooltip-icon d-flex\"\r\n [size]=\"props?.['tooltipIconSize'] || '20'\"></sa-icon>\r\n </span>\r\n }\r\n </div>\r\n @if(!!props?.['description']) {\r\n <p class=\"sa-input-description\">\r\n {{props?.['description']}}\r\n </p>\r\n }\r\n </div>\r\n }\r\n <div class=\"sa-input\" [ngClass]=\"disabled ? 'disabled' : '' \">\r\n @if((pretext || (!!inputVal?.length && (!!params?.placeholder || !!props?.placeholder))) && props?.['showTag']\r\n !== false){\r\n <span class=\"sa-input-tag\">{{params?.placeholder || props?.placeholder}}</span>\r\n }\r\n <div class=\"sa-input-field\" [ngClass]=\"formControl.invalid && formControl.touched ? 'invalid' : 'idle' \"\r\n (click)=\"onInputFieldClick($event)\">\r\n @if(pretext){\r\n <div class=\"sa-input-pretext\">\r\n {{pretext}}\r\n </div>\r\n }\r\n\r\n <!-- Multi-value chip display -->\r\n @if(isMultiValue) {\r\n <div class=\"chip-container\">\r\n <sa-chip \r\n *ngFor=\"let chip of (chipValues || [])?.slice(startInd,startInd+labelLimit) let i = index\"\r\n [text]=\"chip?.value || chip?.label || chip\"\r\n [type]=\"'regular'\"\r\n [state]=\"'primary'\"\r\n [filling]=\"'filled'\"\r\n [iconPosition]=\"'right'\"\r\n [iconPath]=\"'../assets/closeBlueOutlined.svg'\"\r\n (onClickEvent)=\"removeChip(i)\">\r\n </sa-chip>\r\n \r\n <div (click)=\"shiftLabel('clicked')\" class=\"ng-value overflow-label\"\r\n *ngIf=\"(chipValues || []).length > (startInd + labelLimit)\">\r\n <sa-chip [text]=\"'+' + ((chipValues || []).length - (startInd + labelLimit))\" \r\n type=\"regular\" \r\n state=\"primary\" \r\n filling=\"filled\">\r\n </sa-chip>\r\n </div>\r\n\r\n <input\r\n [ngClass]=\"'chip-input'\"\r\n matInput [type]=\"type\"\r\n [disabled]=\"field.props.disabled || false\"\r\n [placeholder]=\"chipValues.length === 0 ? (props?.placeholder || params?.placeholder || '') : ''\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onChipBlur()\"\r\n (input)=\"onChipInputChange($event)\"\r\n (keydown)=\"onChipKeyDown($event)\"\r\n [(ngModel)]=\"currentInputValue\"\r\n #formInput />\r\n </div>\r\n } @else {\r\n <!-- Standard single-value input (backward compatibility) -->\r\n <input\r\n [ngClass]=\"(!!inputVal && (params?.type === 'password' || props?.type === 'password') && icon.name !== 'eyeOff') ? 'masked' : ''\"\r\n matInput [type]=\"type\" value=\"\" [pattern]=\"type==='tel' ? '[0-9]' : '' \"\r\n [disabled]=\"field.props.disabled || false\"\r\n [placeholder]=\"!pretext && props?.placeholder || params?.placeholder || ''\" (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\" (input)=\"onInput($event)\" [(ngModel)]=\"inputVal\" #formInput />\r\n }\r\n\r\n @if(params?.type === 'password'){\r\n <sa-icon class=\"flex\" icon=\"eyeOutlined\" [size]=\"icon.size || '24'\" (click)=\"inputIconClick()\"\r\n [ngClass]=\"!icon.name || icon.name === 'eyeOutlined' ? '' : 'hide'\"></sa-icon>\r\n <sa-icon class=\"flex\" icon=\"eyeOff\" [size]=\"icon.size || '24'\" (click)=\"inputIconClick()\"\r\n [ngClass]=\"icon.name === 'eyeOff' ? '' : 'hide'\"></sa-icon>\r\n }@else if(params?.type === 'email' && icon.show){\r\n <sa-icon class=\"flex\" [icon]=\"icon.name || 'checkCircleOutlined'\" [size]=\"icon.size || '24'\"\r\n (click)=\"inputIconClick()\" [ngClass]=\"showEmailIcon ? '' : 'hide'\"></sa-icon>\r\n }\r\n @else if(icon?.name){\r\n <sa-icon class=\"flex\" [icon]=\"icon.name\" [size]=\"icon?.size || '24'\" [color]=\"icon?.color || ''\"\r\n [ngClass]=\"icon?.show ? '' : 'hide'\"></sa-icon>\r\n }\r\n </div>\r\n @if((!formControl.valid) || (params?.supportText)){\r\n <div class=\"support-label {{formControl.invalid && formControl.touched ? params?.className : ''}}\" [ngClass]=\"[\r\n formControl.invalid && formControl.touched ? 'invalid' : 'idle'\r\n ]\">\r\n <!-- {{!formControl.valid ? inputErrorText : params.supportText}} -->\r\n {{getFormSupportText()}}\r\n </div>\r\n }\r\n </div>\r\n</div>", styles: ["*{--error-red: #e25c61 }.idle{--border: 1px solid var(--grey-50)}.focus{--border: 1px solid var(--primary-300)}.masked{font-size:28px;font-weight:500;padding-top:4px}.disabled .sa-input-field,[disabled]{background-color:#fafafa;cursor:not-allowed}.disabled .sa-input-field input{color:#989da3}.sa-input-field>input,.sa-input-field>input:focus-visible{--border: 1px solid var(--primary-300);border:none;outline:none}.sa-input-field:hover{--border: 1px solid var(--primary-300);--font-color: var(--text-highemphasis)}.sa-input-field sa-icon{color:var(--icon-grey1)}.sa-input-field>input:focus-visible~sa-icon,.sa-input-field:hover sa-icon{color:var(--primary-300)}.sa-input-field.invalid>input,.sa-input-field.invalid sa-icon,.sa-input-field.invalid .sa-input-pretext{color:#e25c61}.sa-input-field.invalid{--border: 1px solid #e25c61}.sa-input-field.invalid sa-icon{--form-email-icon-color: #e25c61}.sa-input-field.idle sa-icon{--form-email-icon-color: #33961F}.sa-input{position:relative;padding:8px 0}.sa-input-pretext{margin-right:2px}.sa-input-field{width:100%;box-sizing:border-box;position:relative;display:inline-flex;padding:0px var(--small-12px);height:40px;justify-content:center;align-items:center;border:1px solid var(--grey-100, #EAECF0);border-radius:var(--small-4px);font-size:14px;font-style:normal;font-weight:400;line-height:20px;letter-spacing:.25px;--font-color: var(--text-lowemphasis)}.sa-input-field input{width:inherit}.sa-input-tag{position:absolute;background:#fff;padding:2px 6px;top:-1px;left:12px;z-index:2;font-size:11px;font-weight:500;line-height:16px;letter-spacing:.5px;text-align:left;color:var(--text-lowemphasis)}.support-label{font-family:var(--font);font-size:11px;font-style:normal;font-weight:400;line-height:16px;letter-spacing:.5px;color:var(--text-lowemphasis);padding:var(--small-4px) var(--small-16px) 0px var(--small-16px)}.support-label.invalid{color:var(--error-red)}.hide{display:none}.sa-input-big-label-container,.sa-input-label-container{display:flex;flex-direction:column;gap:var(--small-8px, 8px)}.sa-input-big-label{color:var(--text-highemphasis, #1C1B20);font-family:var(--font-roboto, Roboto);font-size:var(--medium-22px, 22px);font-style:normal;font-weight:500;line-height:var(--medium-28px, 28px);margin:0}.sa-input-big-description,.sa-input-description{color:var(--text-mediumemphasis, #6D6979);font-family:var(--font-roboto, Roboto);font-size:var(--small-14px, 14px);font-style:normal;font-weight:400;line-height:var(--medium-20px, 20px);letter-spacing:.25px;margin:0}.sa-input-container{display:flex;flex-direction:column;gap:var(--medium-20px, 20px)}.sa-input-label{color:var(--text-highemphasis, #1B1D20);font-family:var(--font);font-size:var(--small-14px);font-style:normal;font-weight:500;line-height:var(--medium-20px);letter-spacing:.1px}.sa-input-label-tooltip-container{display:flex;gap:var(--small-4px);align-items:center}.d-flex{display:flex}.chip-container{display:flex;flex-wrap:wrap;align-items:center;gap:4px;width:100%;min-height:20px}.chip-input{border:none;outline:none;background:transparent;flex:1;min-width:60px;font-size:14px;font-family:inherit;color:inherit}.chip-input::placeholder{color:var(--text-medium-emphasis, #6D6979)}.chip-container sa-chip{margin:2px 0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormlyModule }, { kind: "component", type: IconComponent, selector: "sa-icon", inputs: ["img", "icon", "size", "color", "iconPath", "iconUrl", "customClass", "href", "hrefTarget", "iconPosition"], outputs: ["onClickEvent"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: ChipsComponent, selector: "sa-chip", inputs: ["id", "iconPath", "text", "type", "state", "filling", "iconPosition", "largeStateIcon", "largeStateText", "tooltip", "className"], outputs: ["onClickEvent"] }] }); }
295
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.4", type: FormInputComponent, isStandalone: true, selector: "sa-input", inputs: { icon: "icon", params: "params" }, viewQueries: [{ propertyName: "formInput", first: true, predicate: ["formInput"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"sa-input-container {{props?.['inputContainerClass']}}\" [ngStyle]=\"{'gap': getLabelFieldGap()}\">\r\n @if (!!props?.['bigLabel'] || !!props?.['bigDescription']) {\r\n <div class=\"sa-input-big-label-container\" [ngClass]=\"disabled ? 'disabled' : '' \">\r\n <h2 class=\"sa-input-big-label\">\r\n {{props?.['bigLabel']}}\r\n </h2>\r\n <p class=\"sa-input-big-description\">\r\n {{props?.['bigDescription']}}\r\n </p>\r\n </div>\r\n }\r\n @if(!!props?.['label']){\r\n <div class=\"sa-input-label-container\" [ngClass]=\"disabled ? 'disabled' : '' \">\r\n <div class=\"sa-input-label-tooltip-container\">\r\n <span class=\"sa-input-label\">\r\n {{props?.['label']}}\r\n </span>\r\n @if(!!props?.['tooltip']){\r\n <span class=\"tooltip-container\">\r\n <sa-icon [icon]=\"props?.['tooltipIcon'] || 'infoCircleOutlined'\" customClass=\"info-icon\"\r\n [matTooltip]=\"props?.['tooltip']\" matTooltipClass=\"custom-tooltip\" class=\"tooltip-icon d-flex\"\r\n [size]=\"props?.['tooltipIconSize'] || '20'\"></sa-icon>\r\n </span>\r\n }\r\n </div>\r\n @if(!!props?.['description']) {\r\n <p class=\"sa-input-description\">\r\n {{props?.['description']}}\r\n </p>\r\n }\r\n </div>\r\n }\r\n <div class=\"sa-input\" [ngClass]=\"disabled ? 'disabled' : '' \">\r\n @if((pretext || (!!inputVal?.length && (!!params?.placeholder || !!props?.placeholder))) && props?.['showTag']\r\n !== false){\r\n <span class=\"sa-input-tag\">{{params?.placeholder || props?.placeholder}}</span>\r\n }\r\n <div class=\"sa-input-field\" [ngClass]=\"formControl.invalid && formControl.touched ? 'invalid' : 'idle' \"\r\n (click)=\"onInputFieldClick($event)\">\r\n @if(pretext){\r\n <div class=\"sa-input-pretext\">\r\n {{pretext}}\r\n </div>\r\n }\r\n\r\n <!-- Multi-value chip display -->\r\n @if(isMultiValue) {\r\n <div class=\"chip-container\">\r\n <sa-chip \r\n *ngFor=\"let chip of (chipValues || [])?.slice(startInd,startInd+labelLimit) let i = index\"\r\n [text]=\"chip?.value || chip?.label || chip\"\r\n [type]=\"'regular'\"\r\n [state]=\"'primary'\"\r\n [filling]=\"'filled'\"\r\n [iconPosition]=\"'right'\"\r\n [iconPath]=\"'../assets/closeBlueOutlined.svg'\"\r\n (onClickEvent)=\"removeChip(i)\">\r\n </sa-chip>\r\n \r\n <div (click)=\"shiftLabel('clicked')\" class=\"ng-value overflow-label\"\r\n *ngIf=\"(chipValues || []).length > (startInd + labelLimit)\">\r\n <sa-chip [text]=\"'+' + ((chipValues || []).length - (startInd + labelLimit))\" \r\n type=\"regular\" \r\n state=\"primary\" \r\n filling=\"filled\">\r\n </sa-chip>\r\n </div>\r\n\r\n <input\r\n [ngClass]=\"'chip-input'\"\r\n matInput [type]=\"type\"\r\n [disabled]=\"field.props.disabled || false\"\r\n [placeholder]=\"chipValues.length === 0 ? (props?.placeholder || params?.placeholder || '') : ''\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onChipBlur()\"\r\n (input)=\"onChipInputChange($event)\"\r\n (keydown)=\"onChipKeyDown($event)\"\r\n [(ngModel)]=\"currentInputValue\"\r\n #formInput />\r\n </div>\r\n } @else {\r\n <!-- Standard single-value input (backward compatibility) -->\r\n <input\r\n [ngClass]=\"(!!inputVal && (params?.type === 'password' || props?.type === 'password') && icon.name !== 'eyeOff') ? 'masked' : ''\"\r\n matInput [type]=\"type\" value=\"\" [pattern]=\"type==='tel' ? '[0-9]' : '' \"\r\n [disabled]=\"field.props.disabled || false\"\r\n [placeholder]=\"!pretext && props?.placeholder || params?.placeholder || ''\" (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\" (input)=\"onInput($event)\" [(ngModel)]=\"inputVal\" #formInput />\r\n }\r\n\r\n @if(params?.type === 'password'){\r\n <sa-icon class=\"flex\" icon=\"eyeOutlined\" [size]=\"icon.size || '24'\" (click)=\"inputIconClick()\"\r\n [ngClass]=\"!icon.name || icon.name === 'eyeOutlined' ? '' : 'hide'\"></sa-icon>\r\n <sa-icon class=\"flex\" icon=\"eyeOff\" [size]=\"icon.size || '24'\" (click)=\"inputIconClick()\"\r\n [ngClass]=\"icon.name === 'eyeOff' ? '' : 'hide'\"></sa-icon>\r\n }@else if(params?.type === 'email' && icon.show){\r\n <sa-icon class=\"flex\" [icon]=\"icon.name || 'checkCircleOutlined'\" [size]=\"icon.size || '24'\"\r\n (click)=\"inputIconClick()\" [ngClass]=\"showEmailIcon ? '' : 'hide'\"></sa-icon>\r\n }\r\n @else if(icon?.name){\r\n <sa-icon class=\"flex\" [icon]=\"icon.name\" [size]=\"icon?.size || '24'\" [color]=\"icon?.color || ''\"\r\n [ngClass]=\"icon?.show ? '' : 'hide'\"></sa-icon>\r\n }\r\n </div>\r\n @if((!formControl.valid) || (params?.supportText)){\r\n <div class=\"support-label {{formControl.invalid && formControl.touched ? params?.className : ''}}\" [ngClass]=\"[\r\n formControl.invalid && formControl.touched ? 'invalid' : 'idle'\r\n ]\">\r\n <!-- {{!formControl.valid ? inputErrorText : params.supportText}} -->\r\n {{getFormSupportText()}}\r\n </div>\r\n }\r\n </div>\r\n</div>", styles: ["*{--error-red: #e25c61 }.idle{--border: 1px solid var(--grey-50)}.focus{--border: 1px solid var(--primary-300)}.masked{font-size:28px;font-weight:500;padding-top:4px}.disabled .sa-input-field,[disabled]{background-color:#fafafa;cursor:not-allowed}.disabled .sa-input-field input{color:#989da3}.sa-input-field>input,.sa-input-field>input:focus-visible{--border: 1px solid var(--primary-300);border:none;outline:none}.sa-input-field:hover{--border: 1px solid var(--primary-300);--font-color: var(--text-highemphasis)}.sa-input-field sa-icon{color:var(--icon-grey1)}.sa-input-field>input:focus-visible~sa-icon,.sa-input-field:hover sa-icon{color:var(--primary-300)}.sa-input-field.invalid>input,.sa-input-field.invalid sa-icon,.sa-input-field.invalid .sa-input-pretext{color:var(--semantic-error-500, #BD271E)}.sa-input-field.invalid{--border: 1px solid var(--semantic-error-500, #BD271E)}.sa-input-field.invalid sa-icon{--form-email-icon-color: var(--semantic-error-500, #BD271E)}.sa-input-field.idle sa-icon{--form-email-icon-color: #33961F}.sa-input{position:relative;padding:8px 0}.sa-input-pretext{margin-right:2px}.sa-input-field{width:100%;box-sizing:border-box;position:relative;display:inline-flex;padding:0px var(--small-12px);height:40px;justify-content:center;align-items:center;border:var(--border);border-radius:var(--small-4px);font-size:14px;font-style:normal;font-weight:400;line-height:20px;letter-spacing:.25px;--font-color: var(--text-lowemphasis)}.sa-input-field input{width:inherit}.sa-input-tag{position:absolute;background:#fff;padding:2px 6px;top:-1px;left:12px;z-index:2;font-size:11px;font-weight:500;line-height:16px;letter-spacing:.5px;text-align:left;color:var(--text-lowemphasis)}.support-label{font-family:var(--font);font-size:11px;font-style:normal;font-weight:400;line-height:16px;letter-spacing:.5px;color:var(--text-lowemphasis);padding:var(--small-4px) var(--small-16px) 0px var(--small-16px)}.support-label.invalid{color:var(--error-red)}.hide{display:none}.sa-input-big-label-container,.sa-input-label-container{display:flex;flex-direction:column;gap:var(--small-8px, 8px)}.sa-input-big-label{color:var(--text-highemphasis, #1C1B20);font-family:var(--font-roboto, Roboto);font-size:var(--medium-22px, 22px);font-style:normal;font-weight:500;line-height:var(--medium-28px, 28px);margin:0}.sa-input-big-description,.sa-input-description{color:var(--text-mediumemphasis, #6D6979);font-family:var(--font-roboto, Roboto);font-size:var(--small-14px, 14px);font-style:normal;font-weight:400;line-height:var(--medium-20px, 20px);letter-spacing:.25px;margin:0}.sa-input-container{display:flex;flex-direction:column;gap:var(--medium-20px, 20px)}.sa-input-label{color:var(--text-highemphasis, #1B1D20);font-family:var(--font);font-size:var(--small-14px);font-style:normal;font-weight:500;line-height:var(--medium-20px);letter-spacing:.1px}.sa-input-label-tooltip-container{display:flex;gap:var(--small-4px);align-items:center}.d-flex{display:flex}.chip-container{display:flex;flex-wrap:wrap;align-items:center;gap:4px;width:100%;min-height:20px}.chip-input{border:none;outline:none;background:transparent;flex:1;min-width:60px;font-size:14px;font-family:inherit;color:inherit}.chip-input::placeholder{color:var(--text-medium-emphasis, #6D6979)}.chip-container sa-chip{margin:2px 0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormlyModule }, { kind: "component", type: IconComponent, selector: "sa-icon", inputs: ["img", "icon", "size", "color", "iconPath", "iconUrl", "customClass", "href", "hrefTarget", "iconPosition"], outputs: ["onClickEvent"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: ChipsComponent, selector: "sa-chip", inputs: ["id", "iconPath", "text", "type", "state", "filling", "iconPosition", "largeStateIcon", "largeStateText", "tooltip", "className"], outputs: ["onClickEvent"] }] }); }
296
296
  }
297
297
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: FormInputComponent, decorators: [{
298
298
  type: Component,
@@ -304,7 +304,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
304
304
  IconComponent,
305
305
  MatTooltipModule,
306
306
  ChipsComponent
307
- ], template: "<div class=\"sa-input-container {{props?.['inputContainerClass']}}\" [ngStyle]=\"{'gap': getLabelFieldGap()}\">\r\n @if (!!props?.['bigLabel'] || !!props?.['bigDescription']) {\r\n <div class=\"sa-input-big-label-container\" [ngClass]=\"disabled ? 'disabled' : '' \">\r\n <h2 class=\"sa-input-big-label\">\r\n {{props?.['bigLabel']}}\r\n </h2>\r\n <p class=\"sa-input-big-description\">\r\n {{props?.['bigDescription']}}\r\n </p>\r\n </div>\r\n }\r\n @if(!!props?.['label']){\r\n <div class=\"sa-input-label-container\" [ngClass]=\"disabled ? 'disabled' : '' \">\r\n <div class=\"sa-input-label-tooltip-container\">\r\n <span class=\"sa-input-label\">\r\n {{props?.['label']}}\r\n </span>\r\n @if(!!props?.['tooltip']){\r\n <span class=\"tooltip-container\">\r\n <sa-icon [icon]=\"props?.['tooltipIcon'] || 'infoCircleOutlined'\" customClass=\"info-icon\"\r\n [matTooltip]=\"props?.['tooltip']\" matTooltipClass=\"custom-tooltip\" class=\"tooltip-icon d-flex\"\r\n [size]=\"props?.['tooltipIconSize'] || '20'\"></sa-icon>\r\n </span>\r\n }\r\n </div>\r\n @if(!!props?.['description']) {\r\n <p class=\"sa-input-description\">\r\n {{props?.['description']}}\r\n </p>\r\n }\r\n </div>\r\n }\r\n <div class=\"sa-input\" [ngClass]=\"disabled ? 'disabled' : '' \">\r\n @if((pretext || (!!inputVal?.length && (!!params?.placeholder || !!props?.placeholder))) && props?.['showTag']\r\n !== false){\r\n <span class=\"sa-input-tag\">{{params?.placeholder || props?.placeholder}}</span>\r\n }\r\n <div class=\"sa-input-field\" [ngClass]=\"formControl.invalid && formControl.touched ? 'invalid' : 'idle' \"\r\n (click)=\"onInputFieldClick($event)\">\r\n @if(pretext){\r\n <div class=\"sa-input-pretext\">\r\n {{pretext}}\r\n </div>\r\n }\r\n\r\n <!-- Multi-value chip display -->\r\n @if(isMultiValue) {\r\n <div class=\"chip-container\">\r\n <sa-chip \r\n *ngFor=\"let chip of (chipValues || [])?.slice(startInd,startInd+labelLimit) let i = index\"\r\n [text]=\"chip?.value || chip?.label || chip\"\r\n [type]=\"'regular'\"\r\n [state]=\"'primary'\"\r\n [filling]=\"'filled'\"\r\n [iconPosition]=\"'right'\"\r\n [iconPath]=\"'../assets/closeBlueOutlined.svg'\"\r\n (onClickEvent)=\"removeChip(i)\">\r\n </sa-chip>\r\n \r\n <div (click)=\"shiftLabel('clicked')\" class=\"ng-value overflow-label\"\r\n *ngIf=\"(chipValues || []).length > (startInd + labelLimit)\">\r\n <sa-chip [text]=\"'+' + ((chipValues || []).length - (startInd + labelLimit))\" \r\n type=\"regular\" \r\n state=\"primary\" \r\n filling=\"filled\">\r\n </sa-chip>\r\n </div>\r\n\r\n <input\r\n [ngClass]=\"'chip-input'\"\r\n matInput [type]=\"type\"\r\n [disabled]=\"field.props.disabled || false\"\r\n [placeholder]=\"chipValues.length === 0 ? (props?.placeholder || params?.placeholder || '') : ''\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onChipBlur()\"\r\n (input)=\"onChipInputChange($event)\"\r\n (keydown)=\"onChipKeyDown($event)\"\r\n [(ngModel)]=\"currentInputValue\"\r\n #formInput />\r\n </div>\r\n } @else {\r\n <!-- Standard single-value input (backward compatibility) -->\r\n <input\r\n [ngClass]=\"(!!inputVal && (params?.type === 'password' || props?.type === 'password') && icon.name !== 'eyeOff') ? 'masked' : ''\"\r\n matInput [type]=\"type\" value=\"\" [pattern]=\"type==='tel' ? '[0-9]' : '' \"\r\n [disabled]=\"field.props.disabled || false\"\r\n [placeholder]=\"!pretext && props?.placeholder || params?.placeholder || ''\" (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\" (input)=\"onInput($event)\" [(ngModel)]=\"inputVal\" #formInput />\r\n }\r\n\r\n @if(params?.type === 'password'){\r\n <sa-icon class=\"flex\" icon=\"eyeOutlined\" [size]=\"icon.size || '24'\" (click)=\"inputIconClick()\"\r\n [ngClass]=\"!icon.name || icon.name === 'eyeOutlined' ? '' : 'hide'\"></sa-icon>\r\n <sa-icon class=\"flex\" icon=\"eyeOff\" [size]=\"icon.size || '24'\" (click)=\"inputIconClick()\"\r\n [ngClass]=\"icon.name === 'eyeOff' ? '' : 'hide'\"></sa-icon>\r\n }@else if(params?.type === 'email' && icon.show){\r\n <sa-icon class=\"flex\" [icon]=\"icon.name || 'checkCircleOutlined'\" [size]=\"icon.size || '24'\"\r\n (click)=\"inputIconClick()\" [ngClass]=\"showEmailIcon ? '' : 'hide'\"></sa-icon>\r\n }\r\n @else if(icon?.name){\r\n <sa-icon class=\"flex\" [icon]=\"icon.name\" [size]=\"icon?.size || '24'\" [color]=\"icon?.color || ''\"\r\n [ngClass]=\"icon?.show ? '' : 'hide'\"></sa-icon>\r\n }\r\n </div>\r\n @if((!formControl.valid) || (params?.supportText)){\r\n <div class=\"support-label {{formControl.invalid && formControl.touched ? params?.className : ''}}\" [ngClass]=\"[\r\n formControl.invalid && formControl.touched ? 'invalid' : 'idle'\r\n ]\">\r\n <!-- {{!formControl.valid ? inputErrorText : params.supportText}} -->\r\n {{getFormSupportText()}}\r\n </div>\r\n }\r\n </div>\r\n</div>", styles: ["*{--error-red: #e25c61 }.idle{--border: 1px solid var(--grey-50)}.focus{--border: 1px solid var(--primary-300)}.masked{font-size:28px;font-weight:500;padding-top:4px}.disabled .sa-input-field,[disabled]{background-color:#fafafa;cursor:not-allowed}.disabled .sa-input-field input{color:#989da3}.sa-input-field>input,.sa-input-field>input:focus-visible{--border: 1px solid var(--primary-300);border:none;outline:none}.sa-input-field:hover{--border: 1px solid var(--primary-300);--font-color: var(--text-highemphasis)}.sa-input-field sa-icon{color:var(--icon-grey1)}.sa-input-field>input:focus-visible~sa-icon,.sa-input-field:hover sa-icon{color:var(--primary-300)}.sa-input-field.invalid>input,.sa-input-field.invalid sa-icon,.sa-input-field.invalid .sa-input-pretext{color:#e25c61}.sa-input-field.invalid{--border: 1px solid #e25c61}.sa-input-field.invalid sa-icon{--form-email-icon-color: #e25c61}.sa-input-field.idle sa-icon{--form-email-icon-color: #33961F}.sa-input{position:relative;padding:8px 0}.sa-input-pretext{margin-right:2px}.sa-input-field{width:100%;box-sizing:border-box;position:relative;display:inline-flex;padding:0px var(--small-12px);height:40px;justify-content:center;align-items:center;border:1px solid var(--grey-100, #EAECF0);border-radius:var(--small-4px);font-size:14px;font-style:normal;font-weight:400;line-height:20px;letter-spacing:.25px;--font-color: var(--text-lowemphasis)}.sa-input-field input{width:inherit}.sa-input-tag{position:absolute;background:#fff;padding:2px 6px;top:-1px;left:12px;z-index:2;font-size:11px;font-weight:500;line-height:16px;letter-spacing:.5px;text-align:left;color:var(--text-lowemphasis)}.support-label{font-family:var(--font);font-size:11px;font-style:normal;font-weight:400;line-height:16px;letter-spacing:.5px;color:var(--text-lowemphasis);padding:var(--small-4px) var(--small-16px) 0px var(--small-16px)}.support-label.invalid{color:var(--error-red)}.hide{display:none}.sa-input-big-label-container,.sa-input-label-container{display:flex;flex-direction:column;gap:var(--small-8px, 8px)}.sa-input-big-label{color:var(--text-highemphasis, #1C1B20);font-family:var(--font-roboto, Roboto);font-size:var(--medium-22px, 22px);font-style:normal;font-weight:500;line-height:var(--medium-28px, 28px);margin:0}.sa-input-big-description,.sa-input-description{color:var(--text-mediumemphasis, #6D6979);font-family:var(--font-roboto, Roboto);font-size:var(--small-14px, 14px);font-style:normal;font-weight:400;line-height:var(--medium-20px, 20px);letter-spacing:.25px;margin:0}.sa-input-container{display:flex;flex-direction:column;gap:var(--medium-20px, 20px)}.sa-input-label{color:var(--text-highemphasis, #1B1D20);font-family:var(--font);font-size:var(--small-14px);font-style:normal;font-weight:500;line-height:var(--medium-20px);letter-spacing:.1px}.sa-input-label-tooltip-container{display:flex;gap:var(--small-4px);align-items:center}.d-flex{display:flex}.chip-container{display:flex;flex-wrap:wrap;align-items:center;gap:4px;width:100%;min-height:20px}.chip-input{border:none;outline:none;background:transparent;flex:1;min-width:60px;font-size:14px;font-family:inherit;color:inherit}.chip-input::placeholder{color:var(--text-medium-emphasis, #6D6979)}.chip-container sa-chip{margin:2px 0}\n"] }]
307
+ ], template: "<div class=\"sa-input-container {{props?.['inputContainerClass']}}\" [ngStyle]=\"{'gap': getLabelFieldGap()}\">\r\n @if (!!props?.['bigLabel'] || !!props?.['bigDescription']) {\r\n <div class=\"sa-input-big-label-container\" [ngClass]=\"disabled ? 'disabled' : '' \">\r\n <h2 class=\"sa-input-big-label\">\r\n {{props?.['bigLabel']}}\r\n </h2>\r\n <p class=\"sa-input-big-description\">\r\n {{props?.['bigDescription']}}\r\n </p>\r\n </div>\r\n }\r\n @if(!!props?.['label']){\r\n <div class=\"sa-input-label-container\" [ngClass]=\"disabled ? 'disabled' : '' \">\r\n <div class=\"sa-input-label-tooltip-container\">\r\n <span class=\"sa-input-label\">\r\n {{props?.['label']}}\r\n </span>\r\n @if(!!props?.['tooltip']){\r\n <span class=\"tooltip-container\">\r\n <sa-icon [icon]=\"props?.['tooltipIcon'] || 'infoCircleOutlined'\" customClass=\"info-icon\"\r\n [matTooltip]=\"props?.['tooltip']\" matTooltipClass=\"custom-tooltip\" class=\"tooltip-icon d-flex\"\r\n [size]=\"props?.['tooltipIconSize'] || '20'\"></sa-icon>\r\n </span>\r\n }\r\n </div>\r\n @if(!!props?.['description']) {\r\n <p class=\"sa-input-description\">\r\n {{props?.['description']}}\r\n </p>\r\n }\r\n </div>\r\n }\r\n <div class=\"sa-input\" [ngClass]=\"disabled ? 'disabled' : '' \">\r\n @if((pretext || (!!inputVal?.length && (!!params?.placeholder || !!props?.placeholder))) && props?.['showTag']\r\n !== false){\r\n <span class=\"sa-input-tag\">{{params?.placeholder || props?.placeholder}}</span>\r\n }\r\n <div class=\"sa-input-field\" [ngClass]=\"formControl.invalid && formControl.touched ? 'invalid' : 'idle' \"\r\n (click)=\"onInputFieldClick($event)\">\r\n @if(pretext){\r\n <div class=\"sa-input-pretext\">\r\n {{pretext}}\r\n </div>\r\n }\r\n\r\n <!-- Multi-value chip display -->\r\n @if(isMultiValue) {\r\n <div class=\"chip-container\">\r\n <sa-chip \r\n *ngFor=\"let chip of (chipValues || [])?.slice(startInd,startInd+labelLimit) let i = index\"\r\n [text]=\"chip?.value || chip?.label || chip\"\r\n [type]=\"'regular'\"\r\n [state]=\"'primary'\"\r\n [filling]=\"'filled'\"\r\n [iconPosition]=\"'right'\"\r\n [iconPath]=\"'../assets/closeBlueOutlined.svg'\"\r\n (onClickEvent)=\"removeChip(i)\">\r\n </sa-chip>\r\n \r\n <div (click)=\"shiftLabel('clicked')\" class=\"ng-value overflow-label\"\r\n *ngIf=\"(chipValues || []).length > (startInd + labelLimit)\">\r\n <sa-chip [text]=\"'+' + ((chipValues || []).length - (startInd + labelLimit))\" \r\n type=\"regular\" \r\n state=\"primary\" \r\n filling=\"filled\">\r\n </sa-chip>\r\n </div>\r\n\r\n <input\r\n [ngClass]=\"'chip-input'\"\r\n matInput [type]=\"type\"\r\n [disabled]=\"field.props.disabled || false\"\r\n [placeholder]=\"chipValues.length === 0 ? (props?.placeholder || params?.placeholder || '') : ''\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onChipBlur()\"\r\n (input)=\"onChipInputChange($event)\"\r\n (keydown)=\"onChipKeyDown($event)\"\r\n [(ngModel)]=\"currentInputValue\"\r\n #formInput />\r\n </div>\r\n } @else {\r\n <!-- Standard single-value input (backward compatibility) -->\r\n <input\r\n [ngClass]=\"(!!inputVal && (params?.type === 'password' || props?.type === 'password') && icon.name !== 'eyeOff') ? 'masked' : ''\"\r\n matInput [type]=\"type\" value=\"\" [pattern]=\"type==='tel' ? '[0-9]' : '' \"\r\n [disabled]=\"field.props.disabled || false\"\r\n [placeholder]=\"!pretext && props?.placeholder || params?.placeholder || ''\" (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\" (input)=\"onInput($event)\" [(ngModel)]=\"inputVal\" #formInput />\r\n }\r\n\r\n @if(params?.type === 'password'){\r\n <sa-icon class=\"flex\" icon=\"eyeOutlined\" [size]=\"icon.size || '24'\" (click)=\"inputIconClick()\"\r\n [ngClass]=\"!icon.name || icon.name === 'eyeOutlined' ? '' : 'hide'\"></sa-icon>\r\n <sa-icon class=\"flex\" icon=\"eyeOff\" [size]=\"icon.size || '24'\" (click)=\"inputIconClick()\"\r\n [ngClass]=\"icon.name === 'eyeOff' ? '' : 'hide'\"></sa-icon>\r\n }@else if(params?.type === 'email' && icon.show){\r\n <sa-icon class=\"flex\" [icon]=\"icon.name || 'checkCircleOutlined'\" [size]=\"icon.size || '24'\"\r\n (click)=\"inputIconClick()\" [ngClass]=\"showEmailIcon ? '' : 'hide'\"></sa-icon>\r\n }\r\n @else if(icon?.name){\r\n <sa-icon class=\"flex\" [icon]=\"icon.name\" [size]=\"icon?.size || '24'\" [color]=\"icon?.color || ''\"\r\n [ngClass]=\"icon?.show ? '' : 'hide'\"></sa-icon>\r\n }\r\n </div>\r\n @if((!formControl.valid) || (params?.supportText)){\r\n <div class=\"support-label {{formControl.invalid && formControl.touched ? params?.className : ''}}\" [ngClass]=\"[\r\n formControl.invalid && formControl.touched ? 'invalid' : 'idle'\r\n ]\">\r\n <!-- {{!formControl.valid ? inputErrorText : params.supportText}} -->\r\n {{getFormSupportText()}}\r\n </div>\r\n }\r\n </div>\r\n</div>", styles: ["*{--error-red: #e25c61 }.idle{--border: 1px solid var(--grey-50)}.focus{--border: 1px solid var(--primary-300)}.masked{font-size:28px;font-weight:500;padding-top:4px}.disabled .sa-input-field,[disabled]{background-color:#fafafa;cursor:not-allowed}.disabled .sa-input-field input{color:#989da3}.sa-input-field>input,.sa-input-field>input:focus-visible{--border: 1px solid var(--primary-300);border:none;outline:none}.sa-input-field:hover{--border: 1px solid var(--primary-300);--font-color: var(--text-highemphasis)}.sa-input-field sa-icon{color:var(--icon-grey1)}.sa-input-field>input:focus-visible~sa-icon,.sa-input-field:hover sa-icon{color:var(--primary-300)}.sa-input-field.invalid>input,.sa-input-field.invalid sa-icon,.sa-input-field.invalid .sa-input-pretext{color:var(--semantic-error-500, #BD271E)}.sa-input-field.invalid{--border: 1px solid var(--semantic-error-500, #BD271E)}.sa-input-field.invalid sa-icon{--form-email-icon-color: var(--semantic-error-500, #BD271E)}.sa-input-field.idle sa-icon{--form-email-icon-color: #33961F}.sa-input{position:relative;padding:8px 0}.sa-input-pretext{margin-right:2px}.sa-input-field{width:100%;box-sizing:border-box;position:relative;display:inline-flex;padding:0px var(--small-12px);height:40px;justify-content:center;align-items:center;border:var(--border);border-radius:var(--small-4px);font-size:14px;font-style:normal;font-weight:400;line-height:20px;letter-spacing:.25px;--font-color: var(--text-lowemphasis)}.sa-input-field input{width:inherit}.sa-input-tag{position:absolute;background:#fff;padding:2px 6px;top:-1px;left:12px;z-index:2;font-size:11px;font-weight:500;line-height:16px;letter-spacing:.5px;text-align:left;color:var(--text-lowemphasis)}.support-label{font-family:var(--font);font-size:11px;font-style:normal;font-weight:400;line-height:16px;letter-spacing:.5px;color:var(--text-lowemphasis);padding:var(--small-4px) var(--small-16px) 0px var(--small-16px)}.support-label.invalid{color:var(--error-red)}.hide{display:none}.sa-input-big-label-container,.sa-input-label-container{display:flex;flex-direction:column;gap:var(--small-8px, 8px)}.sa-input-big-label{color:var(--text-highemphasis, #1C1B20);font-family:var(--font-roboto, Roboto);font-size:var(--medium-22px, 22px);font-style:normal;font-weight:500;line-height:var(--medium-28px, 28px);margin:0}.sa-input-big-description,.sa-input-description{color:var(--text-mediumemphasis, #6D6979);font-family:var(--font-roboto, Roboto);font-size:var(--small-14px, 14px);font-style:normal;font-weight:400;line-height:var(--medium-20px, 20px);letter-spacing:.25px;margin:0}.sa-input-container{display:flex;flex-direction:column;gap:var(--medium-20px, 20px)}.sa-input-label{color:var(--text-highemphasis, #1B1D20);font-family:var(--font);font-size:var(--small-14px);font-style:normal;font-weight:500;line-height:var(--medium-20px);letter-spacing:.1px}.sa-input-label-tooltip-container{display:flex;gap:var(--small-4px);align-items:center}.d-flex{display:flex}.chip-container{display:flex;flex-wrap:wrap;align-items:center;gap:4px;width:100%;min-height:20px}.chip-input{border:none;outline:none;background:transparent;flex:1;min-width:60px;font-size:14px;font-family:inherit;color:inherit}.chip-input::placeholder{color:var(--text-medium-emphasis, #6D6979)}.chip-container sa-chip{margin:2px 0}\n"] }]
308
308
  }], ctorParameters: () => [], propDecorators: { formInput: [{
309
309
  type: ViewChild,
310
310
  args: ['formInput']
@@ -320,4 +320,4 @@ export var IInputEventType;
320
320
  IInputEventType["STATE_CHANGE"] = "STATE_CHANGE";
321
321
  IInputEventType["ICON_CLICK"] = "ICON_CLICK";
322
322
  })(IInputEventType || (IInputEventType = {}));
323
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnQtbGlicmFyeS9zcmMvbGliL2Zvcm0taW5wdXQvZm9ybS1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnQtbGlicmFyeS9zcmMvbGliL2Zvcm0taW5wdXQvZm9ybS1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUdMLFdBQVcsRUFDWCxtQkFBbUIsRUFDbkIsVUFBVSxHQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxTQUFTLEVBQW1CLE1BQU0sa0JBQWtCLENBQUM7QUFFOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxvQkFBb0IsR0FFckIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxHQUFHLElBQUksSUFBSSxFQUFFLEdBQUcsSUFBSSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7OztBQWdCN0QsTUFBTSxPQUFPLGtCQUFtQixTQUFRLFNBQTBCO0lBK0JoRTtRQUNFLEtBQUssRUFBRSxDQUFDO1FBekJWLGVBQVUsR0FBRyxNQUFNLENBQUM7UUFDcEIsYUFBUSxHQUFHLEVBQUUs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QWtCO2tCQWY5QixTQUFTOytCQUNFLFVBQVUsY0FDUixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLG1CQUFtQjt3QkFDbkIsWUFBWTt3QkFDWixhQUFhO3dCQUNiLGdCQUFnQjt3QkFDaEIsY0FBYztxQkFDZjt3REFLdUIsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQUVQLElBQUk7c0JBQWxCLEtBQUs7dUJBQUMsTUFBTTtnQkFNSixNQUFNO3NCQUFkLEtBQUs7O0FBZ1ZSLE1BQU0sQ0FBTixJQUFZLGVBSVg7QUFKRCxXQUFZLGVBQWU7SUFDekIsZ0RBQTZCLENBQUE7SUFDN0IsZ0RBQTZCLENBQUE7SUFDN0IsNENBQXlCLENBQUE7QUFDM0IsQ0FBQyxFQUpXLGVBQWUsS0FBZixlQUFlLFFBSTFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQWJzdHJhY3RDb250cm9sLFxyXG4gIEZvcm1Db250cm9sLFxyXG4gIEZvcm1zTW9kdWxlLFxyXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgVmFsaWRhdG9ycyxcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEZvcm1seU1vZHVsZSB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xyXG5pbXBvcnQgeyBGaWVsZFR5cGUsIEZpZWxkVHlwZUNvbmZpZyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xyXG5pbXBvcnQgeyBOZ1NlbGVjdE1vZHVsZSB9IGZyb20gJ0BuZy1zZWxlY3Qvbmctc2VsZWN0JztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtcclxuICBnZXRWYWxpZGF0aW9uTWVzc2FnZSxcclxuICBwaG9uZU51bWJlclZhbGlkYXRvcixcclxufSBmcm9tICcuLi8uLi91dGlscy92YWxpZGF0b3JzJztcclxuaW1wb3J0IHsgSWNvbkNvbXBvbmVudCB9IGZyb20gJy4uL2ljb24vaWNvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDaGlwc0NvbXBvbmVudCB9IGZyb20gJy4uL2NoaXBzL2NoaXBzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IGdldCBhcyBfZ2V0LCBzZXQgYXMgX3NldCwgbWFwIH0gZnJvbSAnbG9kYXNoJztcclxuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NhLWlucHV0JyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIEZvcm1seU1vZHVsZSxcclxuICAgIEljb25Db21wb25lbnQsXHJcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxyXG4gICAgQ2hpcHNDb21wb25lbnRcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLWlucHV0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vZm9ybS1pbnB1dC5jb21wb25lbnQuY3NzJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEZvcm1JbnB1dENvbXBvbmVudCBleHRlbmRzIEZpZWxkVHlwZTxGaWVsZFR5cGVDb25maWc+IHtcclxuICBAVmlld0NoaWxkKCdmb3JtSW5wdXQnKSBmb3JtSW5wdXQhOiBFbGVtZW50UmVmO1xyXG5cclxuICBASW5wdXQoJ2ljb24nKSBpY29uOiBJSW5wdXRJY29uO1xyXG5cclxuICBwcmV0ZXh0OiBzdHJpbmc7XHJcblxyXG4gIGlucHV0U3RhdGUgPSAnaWRsZSc7XHJcbiAgaW5wdXRWYWwgPSAnJztcclxuICBASW5wdXQoKSBwYXJhbXM6IElJbnB1dFBhcmFtIHwgbnVsbDtcclxuICBkZXBlbmRlbnQ6IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT4gfCBudWxsO1xyXG4gIGRlcGVuZGVudFZhbDogYW55ID0gbnVsbDtcclxuICAvLyBkeW5hbWljSWNvbjogRHluYW1pY0ljb24gfCBudWxsO1xyXG4gIC8vIGljb246IElJbnB1dEljb24gfCBudWxsO1xyXG5cclxuICB0eXBlOiBzdHJpbmcgPSAnJztcclxuICB2YWxpZGF0b3JzOiBhbnlbXTtcclxuICBhc3luY1ZhbGlkYXRvcnM6IGFueVtdO1xyXG5cclxuICBpbnB1dEVycm9yVGV4dDogc3RyaW5nID0gJ2ludmFsaWQgaW5wdXQnO1xyXG5cclxuICBzaG93RW1haWxJY29uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBjaGlwVmFsdWVzOiBhbnlbXSA9IFtdO1xyXG4gIGlzTXVsdGlWYWx1ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGN1cnJlbnRJbnB1dFZhbHVlOiBzdHJpbmcgPSAnJztcclxuICBzdGFydEluZDogbnVtYmVyID0gMDtcclxuICBsYWJlbExpbWl0OiBudW1iZXIgPSAxO1xyXG5cclxuICBwcml2YXRlIHN1cHByZXNzT25CbHVyID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5pbnB1dFZhbCA9XHJcbiAgICAgIHRoaXMuZmllbGQucHJvcHNbJ3ZhbHVlJ10gfHwgdGhpcy5tb2RlbFt0aGlzLmtleSBhcyBzdHJpbmddIHx8ICcnO1xyXG4gICAgdGhpcy5kaXNhYmxlZCA9IHRoaXMuZmllbGQucHJvcHMuZGlzYWJsZWQgfHwgZmFsc2U7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sPy5zZXRWYWx1ZSh0aGlzLmlucHV0VmFsKTtcclxuXHJcbiAgICB0aGlzLnBhcmFtcyA9IHRoaXMucGFyYW1zIHx8IHRoaXMuZmllbGQucHJvcHNbJ3BhcmFtcyddO1xyXG4gICAgdGhpcy5pY29uID0gdGhpcy5pY29uIHx8IHRoaXMuZmllbGQucHJvcHNbJ2ljb24nXSB8fCB7fTtcclxuICAgIHRoaXMudHlwZSA9IHRoaXMucGFyYW1zPy50eXBlIHx8ICcnO1xyXG4gICAgdGhpcy5mb3JtQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWwpID0+IHtcclxuICAgICAgX3NldCh0aGlzLmZvcm1JbnB1dCwgJ25hdGl2ZUVsZW1lbnQudmFsdWUnLCB2YWwpO1xyXG4gICAgICAvLyBIYW5kbGUgbXVsdGktdmFsdWUgY2hpcCB1cGRhdGVzXHJcbiAgICAgIGlmICh0aGlzLmlzTXVsdGlWYWx1ZSAmJiBBcnJheS5pc0FycmF5KHZhbCkpIHtcclxuICAgICAgICB0aGlzLmNoaXBWYWx1ZXMgPSB2YWw7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIC8vIEluaXRpYWxpemUgbXVsdGktdmFsdWUgbW9kZSBpZiBzcGVjaWZpZWRcclxuICAgIGlmICh0aGlzLnBhcmFtcz8udHlwZSA9PT0gJ211bHRpLXZhbHVlJyB8fCB0aGlzLnBhcmFtcz8ubXVsdGlWYWx1ZSkge1xyXG4gICAgICB0aGlzLmlzTXVsdGlWYWx1ZSA9IHRydWU7XHJcbiAgICAgIHRoaXMuY2hpcFZhbHVlcyA9IHRoaXMubW9kZWxbdGhpcy5rZXkgYXMgc3RyaW5nXSB8fCB0aGlzLnBhcmFtcz8uY2hpcFZhbHVlcyB8fCBbXTtcclxuICAgICAgdGhpcy5jdXJyZW50SW5wdXRWYWx1ZSA9ICcnO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHRoaXMuZHluYW1pY0ljb24gPSB0aGlzLmZpZWxkLnByb3BzWydkeW5hbWljSWNvbiddO1xyXG4gICAgdGhpcy5zZXRWYWxpZGF0b3JzKCk7XHJcbiAgICB0aGlzLnNldERlcGVuZGVudHMoKTtcclxuXHJcbiAgICB0aGlzLmZvcm1Db250cm9sLnN0YXR1c0NoYW5nZXMuc3Vic2NyaWJlKChzdGF0ZSkgPT4ge1xyXG4gICAgICBpZiAodGhpcy50eXBlID09PSAnZW1haWwnKSB7XHJcbiAgICAgICAgaWYgKCEhdGhpcy5pbnB1dFZhbCAmJiAhdGhpcy5mb3JtQ29udHJvbC50b3VjaGVkKSB7XHJcbiAgICAgICAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zaG93RW1haWxJY29uID1cclxuICAgICAgICAgIHN0YXRlID09PSAnVkFMSUQnIHx8XHJcbiAgICAgICAgICAoc3RhdGUgPT09ICdJTlZBTElEJyAmJlxyXG4gICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sLmhhc0Vycm9yKCdpbnZhbGlkJykgJiZcclxuICAgICAgICAgICAgISF0aGlzLmZvcm1Db250cm9sLnZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbCkgPT4ge1xyXG4gICAgICBfc2V0KHRoaXMuZm9ybUlucHV0LCAnbmF0aXZlRWxlbWVudC52YWx1ZScsIHZhbCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldFZhbGlkYXRvcnMoKSB7XHJcbiAgICB0aGlzLnZhbGlkYXRvcnMgPSB0aGlzLnBhcmFtcz8udmFsaWRhdG9ycyB8fCB0aGlzLnByZWRlZmluZWRWYWxpZGF0b3JzW3RoaXMudHlwZV0gfHwgW107XHJcbiAgICB0aGlzLmFzeW5jVmFsaWRhdG9ycyA9IHRoaXMucGFyYW1zPy5hc3luY1ZhbGlkYXRvcnMgfHwgW107XHJcbiAgICBpZighX2dldCh0aGlzLmZpZWxkLCAndmFsaWRhdG9ycy52YWxpZGF0aW9uJywgbnVsbCkpIHtcclxuICAgICAgdGhpcy5mb3JtQ29udHJvbD8uc2V0VmFsaWRhdG9ycyhbXHJcbiAgICAgICAgLi4uKHRoaXMudHlwZSA/IHRoaXMucHJlZGVmaW5lZFZhbGlkYXRvcnNbdGhpcy50eXBlXSB8fCBbXSA6IFtdKSxcclxuICAgICAgICAuLi4odGhpcy52YWxpZGF0b3JzKSxcclxuICAgICAgXSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5hc3luY1ZhbGlkYXRvcnMpIHtcclxuICAgICAgdGhpcy5mb3JtQ29udHJvbD8uc2V0QXN5bmNWYWxpZGF0b3JzKHRoaXMuYXN5bmNWYWxpZGF0b3JzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qXHJcbiAgICBBc3N1bWluZyBkZXBlbmRlbnQgZmllbGQgaXMgYSBzaW5nbGUgc2VsZWN0IGRyb3Bkb3duXHJcbiAgKi9cclxuICBzZXREZXBlbmRlbnRzKCkge1xyXG4gICAgaWYgKHRoaXMucGFyYW1zPy5kZXBlbmRlbnQpIHtcclxuICAgICAgdGhpcy5kZXBlbmRlbnQgPSB0aGlzLmZvcm0uZ2V0KFt0aGlzLnBhcmFtcz8uZGVwZW5kZW50XSk7XHJcblxyXG4gICAgICB0aGlzLmRlcGVuZGVudFZhbCA9IHRoaXMuZ2V0RGVwZW5kZW50VmFsKF9nZXQodGhpcy5kZXBlbmRlbnQsICd2YWx1ZScpKTtcclxuICAgICAgaWYgKHRoaXMudHlwZSA9PT0gJ3RlbCcpIHtcclxuICAgICAgICB0aGlzLnByZXRleHQgPSB0aGlzLmRlcGVuZGVudFZhbD8uZGlhbF9jb2RlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmRlcGVuZGVudD8udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsKSA9PiB7XHJcbiAgICAgICAgdGhpcy5kZXBlbmRlbnRWYWwgPSB0aGlzLmdldERlcGVuZGVudFZhbCh2YWwpO1xyXG4gICAgICAgIHRoaXMuZm9ybUNvbnRyb2wucmVzZXQoKTtcclxuICAgICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMuaW5wdXRWYWwpO1xyXG4gICAgICAgIGlmICh0aGlzLnR5cGUgPT09ICd0ZWwnKSB7XHJcbiAgICAgICAgICB0aGlzLnByZXRleHQgPSB0aGlzLmRlcGVuZGVudFZhbD8uZGlhbF9jb2RlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldERlcGVuZGVudFZhbCh2YWx1ZTogYW55KSB7XHJcbiAgICBsZXQgZGVwZW5kZW50VmFsdWU6IGFueTtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xyXG4gICAgICBkZXBlbmRlbnRWYWx1ZSA9IHZhbHVlLmxlbmd0aCA/IHZhbHVlWzBdIDogbnVsbDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGRlcGVuZGVudFZhbHVlID0gdmFsdWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGVwZW5kZW50VmFsdWU7XHJcbiAgfVxyXG5cclxuICBjaGVja1ZhbGlkaXR5KGRlZmF1bHRJbnB1dFN0YXRlID0gJ2ZvY3VzJykge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmZvcm1Db250cm9sICYmXHJcbiAgICAgICF0aGlzLmZvcm1Db250cm9sLnZhbGlkICYmXHJcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wudG91Y2hlZCAmJlxyXG4gICAgICAhdGhpcy5mb3JtQ29udHJvbC5wZW5kaW5nXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5pbnB1dFN0YXRlID0gJ2ludmFsaWQnO1xyXG4gICAgICB0aGlzLmlucHV0RXJyb3JUZXh0ID1cclxuICAgICAgICBnZXRWYWxpZGF0aW9uTWVzc2FnZSh0aGlzLmZvcm1Db250cm9sLmVycm9ycywgdGhpcy5wYXJhbXM/LnBsYWNlaG9sZGVyIHx8IHRoaXMuZmllbGQucHJvcHM/LmxhYmVsIHx8ICdJbnB1dCcsIHtcclxuICAgICAgICAgIGZpZWxkOiB0aGlzLmZpZWxkLFxyXG4gICAgICAgICAgbmF0aXZlVmFsaWRhdGlvbk9iamVjdDogdGhpcy5maWVsZC52YWxpZGF0aW9uLFxyXG4gICAgICAgIH0pIHx8IGBpbnZhbGlkICR7dGhpcy5wYXJhbXM/LnBsYWNlaG9sZGVyIHx8IHRoaXMuZmllbGQucHJvcHM/LmxhYmVsIHx8ICdpbnB1dCd9YFxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5pbnB1dFN0YXRlID0gZGVmYXVsdElucHV0U3RhdGU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkZvY3VzKCkge1xyXG4gICAgaWYgKHRoaXMuZm9ybUNvbnRyb2wudmFsaWQpIHRoaXMuaW5wdXRTdGF0ZSA9ICdmb2N1cyc7XHJcbiAgfVxyXG4gIG9uQmx1cigpIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMuc3VwcHJlc3NPbkJsdXIpIHtcclxuICAgICAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgICAgICB0aGlzLmNoZWNrVmFsaWRpdHkoJ2lkbGUnKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnN1cHByZXNzT25CbHVyID0gZmFsc2U7XHJcbiAgICB9LCAyMDApO1xyXG4gIH1cclxuXHJcbiAgb25JbnB1dChldmVudDogYW55KSB7XHJcbiAgICBpZiAodGhpcy5wYXJhbXM/LnR5cGUgPT09ICd0ZWwnKSB7XHJcbiAgICAgIHRoaXMuaW5wdXRWYWwgPSB0aGlzLmlucHV0VmFsLnJlcGxhY2UoL1teMC05KCkrXFwtIF0vZywgJycpO1xyXG4gICAgICB0aGlzLmlucHV0VmFsID0gdGhpcy5oeXBoZW5hdGVQaG9uZU51bWJlcigpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMucGFyYW1zPy50eXBlID09PSAncGVyY2VudGFnZScpIHtcclxuICAgICAgbGV0IHZhbHVlID0gdGhpcy5pbnB1dFZhbC5yZXBsYWNlKC9bXjAtOS5dL2csICcnKTtcclxuICAgICAgdGhpcy5pbnB1dFZhbCA9IHZhbHVlID8gYCR7dmFsdWV9JWAgOiAnJztcclxuICAgIH1cclxuICAgIHRoaXMuZm9ybUNvbnRyb2w/LnNldFZhbHVlKHRoaXMuaW5wdXRWYWwpO1xyXG4gICAgdGhpcy5jaGVja1ZhbGlkaXR5KCk7XHJcbiAgICAvKmlmICh0aGlzLnBhcmFtcz8uZXZlbnRMaXN0ZW5lcikge1xyXG4gICAgICB0aGlzLnBhcmFtcz8uZXZlbnRMaXN0ZW5lcih7XHJcbiAgICAgICAgdHlwZTogSUlucHV0RXZlbnRUeXBlLklOUFVUX0NIQU5HRSxcclxuICAgICAgICB2YWx1ZTogdGhpcy5pbnB1dFZhbCxcclxuICAgICAgICBmb3JtQ29udHJvbDogdGhpcy5mb3JtQ29udHJvbFxyXG4gICAgICB9IGFzIElJbnB1dEV2ZW50KS50aGVuKHRoaXMub25GaWVsZENhbGxiYWNrLmJpbmQodGhpcykpO1xyXG4gICAgfSovXHJcbiAgfVxyXG5cclxuICBoeXBoZW5hdGVQaG9uZU51bWJlcigpIHtcclxuICAgIGxldCBuZXdTdHIgPSAnJztcclxuICAgIGxldCBpID0gMDtcclxuICAgIGxldCBoeXBoZW5hdGVkQ291bnQgPSAxO1xyXG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmlucHV0VmFsLnJlcGxhY2VBbGwoJy0nLCAnJyk7XHJcbiAgICBmb3IgKDsgaSA8IHZhbHVlLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIG5ld1N0ciA9IG5ld1N0ciArIHZhbHVlLmNoYXJBdChpKTtcclxuICAgICAgaWYgKCEoaHlwaGVuYXRlZENvdW50ICUgMykpIHtcclxuICAgICAgICBpZiAoISgoaSArIDEpICUgMTApICYmIGkgKyAxIDwgdmFsdWUubGVuZ3RoKSB7XHJcbiAgICAgICAgICBuZXdTdHIgPSBuZXdTdHIgKyAnLSc7XHJcbiAgICAgICAgICBoeXBoZW5hdGVkQ291bnQrKztcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgISgoaSArIDEgLSBNYXRoLmZsb29yKGh5cGhlbmF0ZWRDb3VudCAvIDMpKSAlIDMpICYmXHJcbiAgICAgICAgaSArIDEgPCB2YWx1ZS5sZW5ndGhcclxuICAgICAgKSB7XHJcbiAgICAgICAgbmV3U3RyID0gbmV3U3RyICsgJy0nO1xyXG4gICAgICAgIGh5cGhlbmF0ZWRDb3VudCsrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG5ld1N0cjtcclxuICB9XHJcblxyXG4gIG9uSW5wdXRGaWVsZENsaWNrKGV2ZW50OiBhbnkgPSAnaW5wdXQnKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIGV2ZW50ID09PSAnaW5wdXQnIHx8XHJcbiAgICAgIGV2ZW50LnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoJ3NhLWlucHV0LWZpZWxkJylcclxuICAgICkge1xyXG4gICAgICB0aGlzLmZvcm1JbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICAgIGlmICh0aGlzLnBhcmFtcz8udHlwZSAhPT0gJ2VtYWlsJylcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuZm9ybUlucHV0Lm5hdGl2ZUVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UoXHJcbiAgICAgICAgICAgIHRoaXMuaW5wdXRWYWwubGVuZ3RoLFxyXG4gICAgICAgICAgICB0aGlzLmlucHV0VmFsLmxlbmd0aCxcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSwgMTApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5wdXRJY29uQ2xpY2soKSB7XHJcbiAgICBpZiAodGhpcy5wYXJhbXM/LnR5cGUgPT09ICdwYXNzd29yZCcpIHtcclxuICAgICAgdGhpcy5zdXBwcmVzc09uQmx1ciA9IHRydWU7XHJcbiAgICAgIGlmICh0aGlzLnR5cGUgPT09ICdwYXNzd29yZCcpIHtcclxuICAgICAgICB0aGlzLnR5cGUgPSAndGV4dCc7XHJcbiAgICAgICAgdGhpcy5pY29uLm5hbWUgPSAnZXllT2ZmJztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnR5cGUgPSAncGFzc3dvcmQnO1xyXG4gICAgICAgIHRoaXMuaWNvbi5uYW1lID0gJ2V5ZU91dGxpbmVkJztcclxuICAgICAgfVxyXG4gICAgICB0aGlzLm9uSW5wdXRGaWVsZENsaWNrKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhZGRDaGlwKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIGlmICghdGhpcy5pc011bHRpVmFsdWUgfHwgIXZhbHVlLnRyaW0oKSkgcmV0dXJuOyAgXHJcbiAgICBjb25zdCBjaGlwVmFsdWUgPSB7XHJcbiAgICAgIGxhYmVsOiB2YWx1ZS50cmltKCksXHJcbiAgICAgIHZhbHVlOiB2YWx1ZS50cmltKCksXHJcbiAgICAgIHJlbW92YWJsZTogdHJ1ZVxyXG4gICAgfTtcclxuICAgIHRoaXMuY2hpcFZhbHVlcy5wdXNoKGNoaXBWYWx1ZSk7ICAgIFxyXG4gICAgY29uc3QgYWN0dWFsVmFsdWVzID0gbWFwKHRoaXMuY2hpcFZhbHVlcywgKGNoaXA6IGFueSkgPT4gY2hpcC52YWx1ZSB8fCBjaGlwLmxhYmVsIHx8IGNoaXApO1xyXG4gICAgdGhpcy5mb3JtQ29udHJvbD8uc2V0VmFsdWUoYWN0dWFsVmFsdWVzKTtcclxuICAgIHRoaXMuY3VycmVudElucHV0VmFsdWUgPSAnJztcclxuICAgIHRoaXMubW9kZWxbdGhpcy5rZXkgYXMgc3RyaW5nXSA9IGFjdHVhbFZhbHVlcztcclxuICB9XHJcbiAgXHJcbiAgcmVtb3ZlQ2hpcChpbmRleDogbnVtYmVyKSB7XHJcbiAgICBpZiAoIXRoaXMuaXNNdWx0aVZhbHVlKSByZXR1cm47ICBcclxuICAgIHRoaXMuY2hpcFZhbHVlcy5zcGxpY2UoaW5kZXgsIDEpOyAgXHJcbiAgICBjb25zdCBhY3R1YWxWYWx1ZXMgPSBtYXAodGhpcy5jaGlwVmFsdWVzLCAoY2hpcDogYW55KSA9PiBjaGlwLnZhbHVlIHx8IGNoaXAubGFiZWwgfHwgY2hpcCk7XHJcbiAgICB0aGlzLm1vZGVsW3RoaXMua2V5IGFzIHN0cmluZ10gPSBhY3R1YWxWYWx1ZXM7XHJcbiAgfVxyXG5cclxuICBvbkNoaXBLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBpZiAoIXRoaXMuaXNNdWx0aVZhbHVlKSByZXR1cm47XHJcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInIHx8IGV2ZW50LmtleSA9PT0gJywnKSB7XHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIHRoaXMuYWRkQ2hpcCh0aGlzLmN1cnJlbnRJbnB1dFZhbHVlKTtcclxuICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnQmFja3NwYWNlJyAmJiAhdGhpcy5jdXJyZW50SW5wdXRWYWx1ZSAmJiB0aGlzLmNoaXBWYWx1ZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnJlbW92ZUNoaXAodGhpcy5jaGlwVmFsdWVzLmxlbmd0aCAtIDEpO1xyXG4gICAgfVxyXG4gIH1cclxuICBcclxuICBvbkNoaXBJbnB1dENoYW5nZShldmVudDogYW55KSB7XHJcbiAgICBpZiAoIXRoaXMuaXNNdWx0aVZhbHVlKSByZXR1cm47XHJcbiAgICB0aGlzLmN1cnJlbnRJbnB1dFZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xyXG4gIH1cclxuXHJcbiAgb25DaGlwQmx1cigpIHtcclxuICAgIGlmICghdGhpcy5pc011bHRpVmFsdWUpIHJldHVybjtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRJbnB1dFZhbHVlLnRyaW0oKSkge1xyXG4gICAgICB0aGlzLmFkZENoaXAodGhpcy5jdXJyZW50SW5wdXRWYWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qb25GaWVsZENhbGxiYWNrKHBhcmFtOiBJSW5wdXRQYXJhbSkge1xyXG4gICAgdGhpcy5pY29uID0gcGFyYW0uaWNvbiB8fCB0aGlzLmljb247XHJcbiAgICB0aGlzLmNoZWNrVmFsaWRpdHkoKTtcclxuICB9Ki9cclxuXHJcbiAgZ2V0Rm9ybVN1cHBvcnRUZXh0KCkge1xyXG4gICAgaWYgKHRoaXMuZm9ybUNvbnRyb2wuaW52YWxpZCAmJiB0aGlzLmZvcm1Db250cm9sLnRvdWNoZWQpIHtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICBnZXRWYWxpZGF0aW9uTWVzc2FnZSh0aGlzLmZvcm1Db250cm9sLmVycm9ycywgdGhpcy5wYXJhbXM/LnBsYWNlaG9sZGVyIHx8IHRoaXMuZmllbGQucHJvcHM/LmxhYmVsIHx8ICdJbnB1dCcse1xyXG4gICAgICAgICAgZmllbGQ6IHRoaXMuZmllbGQsXHJcbiAgICAgICAgICBuYXRpdmVWYWxpZGF0aW9uT2JqZWN0OiBfZ2V0KHRoaXMuZmllbGQsICd2YWxpZGF0aW9uJyksXHJcbiAgICAgICAgfSkgfHxcclxuICAgICAgICBgaW52YWxpZCAke3RoaXMucGFyYW1zPy5wbGFjZWhvbGRlciB8fCB0aGlzLmZpZWxkLnByb3BzPy5sYWJlbCB8fCAnaW5wdXQnfWBcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnBhcmFtcz8uc3VwcG9ydFRleHQgfHwgJyc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcmVkZWZpbmVkVmFsaWRhdG9yczogYW55ID0ge1xyXG4gICAgZW1haWw6IFtWYWxpZGF0b3JzLmVtYWlsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgIHBhc3N3b3JkOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICB0ZWw6IFtWYWxpZGF0b3JzLnBhdHRlcm4oJ15bMC05ICtcXFxcLSgpXSokJyldLFxyXG4gIH07XHJcblxyXG4gIGdldExhYmVsRmllbGRHYXAoKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLnByb3BzPy5bJ2JpZ0xhYmVsJ10pIHtcclxuICAgICAgcmV0dXJuICd2YXIoLS1tZWRpdW0tMjBweCknO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnByb3BzPy5bJ2xhYmVsJ10pIHtcclxuICAgICAgcmV0dXJuICd2YXIoLS1zbWFsbC00cHgpJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAnMHB4JzsgLy8gTm8gZ2FwXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzaGlmdExhYmVsKGFjdGlvbjogJ2NsaWNrZWQnIHwgJ2NsZWFyZWQnKSB7XHJcbiAgICBpZiAoYWN0aW9uID09PSAnY2xpY2tlZCcpIHtcclxuICAgICAgdGhpcy5zdGFydEluZCA9IDA7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnN0YXJ0SW5kID0gTWF0aC5tYXgoMCwgdGhpcy5jaGlwVmFsdWVzLmxlbmd0aCAtIHRoaXMubGFiZWxMaW1pdCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElJbnB1dEljb24ge1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBzaG93PzogYm9vbGVhbjtcclxuICBjb2xvcj86IHN0cmluZztcclxuICBzaXplPzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElJbnB1dFBhcmFtIHtcclxuICB2YWxpZGF0b3JzPzogYW55W107XHJcbiAgYXN5bmNWYWxpZGF0b3JzPzogYW55W107XHJcbiAgc3VwcG9ydFRleHQ/OiBzdHJpbmc7XHJcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XHJcbiAgdHlwZT86IHN0cmluZztcclxuICBkZXBlbmRlbnQ/OiBzdHJpbmc7XHJcbiAgZXZlbnRMaXN0ZW5lcj86IEZ1bmN0aW9uO1xyXG4gIGljb24/OiBJSW5wdXRJY29uO1xyXG4gIGVycm9ycz86IHsgW2tleTogc3RyaW5nXTogYW55IH07XHJcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xyXG4gIG11bHRpVmFsdWU/OiBib29sZWFuOyAvLyBmb3IgbXVsdGktdmFsdWUgY2hpcCBzdXBwb3J0XHJcbiAgY2hpcFZhbHVlcz86IGFueVtdOyAvLyBmb3IgbXVsdGktdmFsdWUgY2hpcCBzdXBwb3J0XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUlucHV0RXZlbnQge1xyXG4gIHR5cGU6IElJbnB1dEV2ZW50VHlwZTtcclxuICB2YWx1ZTogc3RyaW5nO1xyXG4gIGNhbGxCYWNrOiBhbnk7XHJcbiAgZm9ybUNvbnRyb2w6IEZvcm1Db250cm9sO1xyXG59XHJcbmV4cG9ydCBlbnVtIElJbnB1dEV2ZW50VHlwZSB7XHJcbiAgSU5QVVRfQ0hBTkdFID0gJ0lOUFVUX0NIQU5HRScsXHJcbiAgU1RBVEVfQ0hBTkdFID0gJ1NUQVRFX0NIQU5HRScsXHJcbiAgSUNPTl9DTElDSyA9ICdJQ09OX0NMSUNLJyxcclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwic2EtaW5wdXQtY29udGFpbmVyIHt7cHJvcHM/LlsnaW5wdXRDb250YWluZXJDbGFzcyddfX1cIiBbbmdTdHlsZV09XCJ7J2dhcCc6IGdldExhYmVsRmllbGRHYXAoKX1cIj5cclxuICAgIEBpZiAoISFwcm9wcz8uWydiaWdMYWJlbCddIHx8ICEhcHJvcHM/LlsnYmlnRGVzY3JpcHRpb24nXSkge1xyXG4gICAgPGRpdiBjbGFzcz1cInNhLWlucHV0LWJpZy1sYWJlbC1jb250YWluZXJcIiBbbmdDbGFzc109XCJkaXNhYmxlZCA/ICdkaXNhYmxlZCcgOiAnJyBcIj5cclxuICAgICAgICA8aDIgY2xhc3M9XCJzYS1pbnB1dC1iaWctbGFiZWxcIj5cclxuICAgICAgICAgICAge3twcm9wcz8uWydiaWdMYWJlbCddfX1cclxuICAgICAgICA8L2gyPlxyXG4gICAgICAgIDxwIGNsYXNzPVwic2EtaW5wdXQtYmlnLWRlc2NyaXB0aW9uXCI+XHJcbiAgICAgICAgICAgIHt7cHJvcHM/LlsnYmlnRGVzY3JpcHRpb24nXX19XHJcbiAgICAgICAgPC9wPlxyXG4gICAgPC9kaXY+XHJcbiAgICB9XHJcbiAgICBAaWYoISFwcm9wcz8uWydsYWJlbCddKXtcclxuICAgIDxkaXYgY2xhc3M9XCJzYS1pbnB1dC1sYWJlbC1jb250YWluZXJcIiBbbmdDbGFzc109XCJkaXNhYmxlZCA/ICdkaXNhYmxlZCcgOiAnJyBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2EtaW5wdXQtbGFiZWwtdG9vbHRpcC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYS1pbnB1dC1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAge3twcm9wcz8uWydsYWJlbCddfX1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICBAaWYoISFwcm9wcz8uWyd0b29sdGlwJ10pe1xyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRvb2x0aXAtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICA8c2EtaWNvbiBbaWNvbl09XCJwcm9wcz8uWyd0b29sdGlwSWNvbiddIHx8ICdpbmZvQ2lyY2xlT3V0bGluZWQnXCIgY3VzdG9tQ2xhc3M9XCJpbmZvLWljb25cIlxyXG4gICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cInByb3BzPy5bJ3Rvb2x0aXAnXVwiIG1hdFRvb2x0aXBDbGFzcz1cImN1c3RvbS10b29sdGlwXCIgY2xhc3M9XCJ0b29sdGlwLWljb24gZC1mbGV4XCJcclxuICAgICAgICAgICAgICAgICAgICBbc2l6ZV09XCJwcm9wcz8uWyd0b29sdGlwSWNvblNpemUnXSB8fCAnMjAnXCI+PC9zYS1pY29uPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICBAaWYoISFwcm9wcz8uWydkZXNjcmlwdGlvbiddKSB7XHJcbiAgICAgICAgPHAgY2xhc3M9XCJzYS1pbnB1dC1kZXNjcmlwdGlvblwiPlxyXG4gICAgICAgICAgICB7e3Byb3BzPy5bJ2Rlc2NyaXB0aW9uJ119fVxyXG4gICAgICAgIDwvcD5cclxuICAgICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICAgIH1cclxuICAgIDxkaXYgY2xhc3M9XCJzYS1pbnB1dFwiIFtuZ0NsYXNzXT1cImRpc2FibGVkID8gJ2Rpc2FibGVkJyA6ICcnIFwiPlxyXG4gICAgICAgIEBpZigocHJldGV4dCB8fCAoISFpbnB1dFZhbD8ubGVuZ3RoICYmICghIXBhcmFtcz8ucGxhY2Vob2xkZXIgfHwgISFwcm9wcz8ucGxhY2Vob2xkZXIpKSkgJiYgcHJvcHM/Llsnc2hvd1RhZyddXHJcbiAgICAgICAgIT09IGZhbHNlKXtcclxuICAgICAgICA8c3BhbiBjbGFzcz1cInNhLWlucHV0LXRhZ1wiPnt7cGFyYW1zPy5wbGFjZWhvbGRlciB8fCBwcm9wcz8ucGxhY2Vob2xkZXJ9fTwvc3Bhbj5cclxuICAgICAgICB9XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNhLWlucHV0LWZpZWxkXCIgW25nQ2xhc3NdPVwiZm9ybUNvbnRyb2wuaW52YWxpZCAmJiBmb3JtQ29udHJvbC50b3VjaGVkID8gJ2ludmFsaWQnIDogJ2lkbGUnIFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvbklucHV0RmllbGRDbGljaygkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgIEBpZihwcmV0ZXh0KXtcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNhLWlucHV0LXByZXRleHRcIj5cclxuICAgICAgICAgICAgICAgIHt7cHJldGV4dH19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICA8IS0tIE11bHRpLXZhbHVlIGNoaXAgZGlzcGxheSAtLT5cclxuICAgICAgICAgICAgQGlmKGlzTXVsdGlWYWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNhLWNoaXAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjaGlwIG9mIChjaGlwVmFsdWVzIHx8IFtdKT8uc2xpY2Uoc3RhcnRJbmQsc3RhcnRJbmQrbGFiZWxMaW1pdCkgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0ZXh0XT1cImNoaXA/LnZhbHVlIHx8IGNoaXA/LmxhYmVsIHx8IGNoaXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCIncmVndWxhcidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3RhdGVdPVwiJ3ByaW1hcnknXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2ZpbGxpbmddPVwiJ2ZpbGxlZCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbaWNvblBvc2l0aW9uXT1cIidyaWdodCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbaWNvblBhdGhdPVwiJy4uL2Fzc2V0cy9jbG9zZUJsdWVPdXRsaW5lZC5zdmcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2xpY2tFdmVudCk9XCJyZW1vdmVDaGlwKGkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zYS1jaGlwPlxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cInNoaWZ0TGFiZWwoJ2NsaWNrZWQnKVwiIGNsYXNzPVwibmctdmFsdWUgb3ZlcmZsb3ctbGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihjaGlwVmFsdWVzIHx8IFtdKS5sZW5ndGggPiAoc3RhcnRJbmQgKyBsYWJlbExpbWl0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c2EtY2hpcCBbdGV4dF09XCInKycgKyAoKGNoaXBWYWx1ZXMgfHwgW10pLmxlbmd0aCAtIChzdGFydEluZCArIGxhYmVsTGltaXQpKVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJyZWd1bGFyXCIgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlPVwicHJpbWFyeVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxpbmc9XCJmaWxsZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zYS1jaGlwPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiJ2NoaXAtaW5wdXQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0SW5wdXQgW3R5cGVdPVwidHlwZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmaWVsZC5wcm9wcy5kaXNhYmxlZCB8fCBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjaGlwVmFsdWVzLmxlbmd0aCA9PT0gMCA/IChwcm9wcz8ucGxhY2Vob2xkZXIgfHwgcGFyYW1zPy5wbGFjZWhvbGRlciB8fCAnJykgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChmb2N1cyk9XCJvbkZvY3VzKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJvbkNoaXBCbHVyKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoaW5wdXQpPVwib25DaGlwSW5wdXRDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duKT1cIm9uQ2hpcEtleURvd24oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY3VycmVudElucHV0VmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAjZm9ybUlucHV0IC8+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgICAgICA8IS0tIFN0YW5kYXJkIHNpbmdsZS12YWx1ZSBpbnB1dCAoYmFja3dhcmQgY29tcGF0aWJpbGl0eSkgLS0+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCIoISFpbnB1dFZhbCAmJiAocGFyYW1zPy50eXBlID09PSAncGFzc3dvcmQnIHx8IHByb3BzPy50eXBlID09PSAncGFzc3dvcmQnKSAmJiBpY29uLm5hbWUgIT09ICdleWVPZmYnKSA/ICdtYXNrZWQnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgIG1hdElucHV0IFt0eXBlXT1cInR5cGVcIiB2YWx1ZT1cIlwiIFtwYXR0ZXJuXT1cInR5cGU9PT0ndGVsJyA/ICdbMC05XScgOiAnJyBcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmaWVsZC5wcm9wcy5kaXNhYmxlZCB8fCBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIiFwcmV0ZXh0ICYmIHByb3BzPy5wbGFjZWhvbGRlciB8fCBwYXJhbXM/LnBsYWNlaG9sZGVyIHx8ICcnXCIgKGZvY3VzKT1cIm9uRm9jdXMoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwib25CbHVyKClcIiAoaW5wdXQpPVwib25JbnB1dCgkZXZlbnQpXCIgWyhuZ01vZGVsKV09XCJpbnB1dFZhbFwiICNmb3JtSW5wdXQgLz5cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgQGlmKHBhcmFtcz8udHlwZSA9PT0gJ3Bhc3N3b3JkJyl7XHJcbiAgICAgICAgICAgIDxzYS1pY29uIGNsYXNzPVwiZmxleFwiIGljb249XCJleWVPdXRsaW5lZFwiIFtzaXplXT1cImljb24uc2l6ZSB8fCAnMjQnXCIgKGNsaWNrKT1cImlucHV0SWNvbkNsaWNrKClcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiIWljb24ubmFtZSB8fCBpY29uLm5hbWUgPT09ICdleWVPdXRsaW5lZCcgPyAnJyA6ICdoaWRlJ1wiPjwvc2EtaWNvbj5cclxuICAgICAgICAgICAgPHNhLWljb24gY2xhc3M9XCJmbGV4XCIgaWNvbj1cImV5ZU9mZlwiIFtzaXplXT1cImljb24uc2l6ZSB8fCAnMjQnXCIgKGNsaWNrKT1cImlucHV0SWNvbkNsaWNrKClcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiaWNvbi5uYW1lID09PSAnZXllT2ZmJyA/ICcnIDogJ2hpZGUnXCI+PC9zYS1pY29uPlxyXG4gICAgICAgICAgICB9QGVsc2UgaWYocGFyYW1zPy50eXBlID09PSAnZW1haWwnICYmIGljb24uc2hvdyl7XHJcbiAgICAgICAgICAgIDxzYS1pY29uIGNsYXNzPVwiZmxleFwiIFtpY29uXT1cImljb24ubmFtZSB8fCAnY2hlY2tDaXJjbGVPdXRsaW5lZCdcIiBbc2l6ZV09XCJpY29uLnNpemUgfHwgJzI0J1wiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiaW5wdXRJY29uQ2xpY2soKVwiIFtuZ0NsYXNzXT1cInNob3dFbWFpbEljb24gPyAnJyA6ICdoaWRlJ1wiPjwvc2EtaWNvbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBAZWxzZSBpZihpY29uPy5uYW1lKXtcclxuICAgICAgICAgICAgPHNhLWljb24gY2xhc3M9XCJmbGV4XCIgW2ljb25dPVwiaWNvbi5uYW1lXCIgW3NpemVdPVwiaWNvbj8uc2l6ZSB8fCAnMjQnXCIgW2NvbG9yXT1cImljb24/LmNvbG9yIHx8ICcnXCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImljb24/LnNob3cgPyAnJyA6ICdoaWRlJ1wiPjwvc2EtaWNvbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIEBpZigoIWZvcm1Db250cm9sLnZhbGlkKSB8fCAocGFyYW1zPy5zdXBwb3J0VGV4dCkpe1xyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VwcG9ydC1sYWJlbCB7e2Zvcm1Db250cm9sLmludmFsaWQgJiYgZm9ybUNvbnRyb2wudG91Y2hlZCA/IHBhcmFtcz8uY2xhc3NOYW1lIDogJyd9fVwiIFtuZ0NsYXNzXT1cIltcclxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sLmludmFsaWQgJiYgZm9ybUNvbnRyb2wudG91Y2hlZCA/ICdpbnZhbGlkJyA6ICdpZGxlJ1xyXG4gICAgICAgICAgICAgIF1cIj5cclxuICAgICAgICAgICAgICAgIDwhLS0ge3shZm9ybUNvbnRyb2wudmFsaWQgPyBpbnB1dEVycm9yVGV4dCA6IHBhcmFtcy5zdXBwb3J0VGV4dH19IC0tPlxyXG4gICAgICAgICAgICAgICAge3tnZXRGb3JtU3VwcG9ydFRleHQoKX19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICB9XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19
323
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnQtbGlicmFyeS9zcmMvbGliL2Zvcm0taW5wdXQvZm9ybS1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnQtbGlicmFyeS9zcmMvbGliL2Zvcm0taW5wdXQvZm9ybS1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUdMLFdBQVcsRUFDWCxtQkFBbUIsRUFDbkIsVUFBVSxHQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxTQUFTLEVBQW1CLE1BQU0sa0JBQWtCLENBQUM7QUFFOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxvQkFBb0IsR0FFckIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxHQUFHLElBQUksSUFBSSxFQUFFLEdBQUcsSUFBSSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7OztBQWdCN0QsTUFBTSxPQUFPLGtCQUFtQixTQUFRLFNBQTBCO0lBK0JoRTtRQUNFLEtBQUssRUFBRSxDQUFDO1FBekJWLGVBQVUsR0FBRyxNQUFNLENBQUM7UUFDcEIsYUFBUSxHQUFHLEVBQUUs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QWtCO2tCQWY5QixTQUFTOytCQUNFLFVBQVUsY0FDUixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLG1CQUFtQjt3QkFDbkIsWUFBWTt3QkFDWixhQUFhO3dCQUNiLGdCQUFnQjt3QkFDaEIsY0FBYztxQkFDZjt3REFLdUIsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQUVQLElBQUk7c0JBQWxCLEtBQUs7dUJBQUMsTUFBTTtnQkFNSixNQUFNO3NCQUFkLEtBQUs7O0FBZ1ZSLE1BQU0sQ0FBTixJQUFZLGVBSVg7QUFKRCxXQUFZLGVBQWU7SUFDekIsZ0RBQTZCLENBQUE7SUFDN0IsZ0RBQTZCLENBQUE7SUFDN0IsNENBQXlCLENBQUE7QUFDM0IsQ0FBQyxFQUpXLGVBQWUsS0FBZixlQUFlLFFBSTFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQWJzdHJhY3RDb250cm9sLFxyXG4gIEZvcm1Db250cm9sLFxyXG4gIEZvcm1zTW9kdWxlLFxyXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgVmFsaWRhdG9ycyxcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEZvcm1seU1vZHVsZSB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xyXG5pbXBvcnQgeyBGaWVsZFR5cGUsIEZpZWxkVHlwZUNvbmZpZyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xyXG5pbXBvcnQgeyBOZ1NlbGVjdE1vZHVsZSB9IGZyb20gJ0BuZy1zZWxlY3Qvbmctc2VsZWN0JztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtcclxuICBnZXRWYWxpZGF0aW9uTWVzc2FnZSxcclxuICBwaG9uZU51bWJlclZhbGlkYXRvcixcclxufSBmcm9tICcuLi8uLi91dGlscy92YWxpZGF0b3JzJztcclxuaW1wb3J0IHsgSWNvbkNvbXBvbmVudCB9IGZyb20gJy4uL2ljb24vaWNvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDaGlwc0NvbXBvbmVudCB9IGZyb20gJy4uL2NoaXBzL2NoaXBzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IGdldCBhcyBfZ2V0LCBzZXQgYXMgX3NldCwgbWFwIH0gZnJvbSAnbG9kYXNoJztcclxuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NhLWlucHV0JyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIEZvcm1seU1vZHVsZSxcclxuICAgIEljb25Db21wb25lbnQsXHJcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxyXG4gICAgQ2hpcHNDb21wb25lbnRcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLWlucHV0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vZm9ybS1pbnB1dC5jb21wb25lbnQuY3NzJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEZvcm1JbnB1dENvbXBvbmVudCBleHRlbmRzIEZpZWxkVHlwZTxGaWVsZFR5cGVDb25maWc+IHtcclxuICBAVmlld0NoaWxkKCdmb3JtSW5wdXQnKSBmb3JtSW5wdXQhOiBFbGVtZW50UmVmO1xyXG5cclxuICBASW5wdXQoJ2ljb24nKSBpY29uOiBJSW5wdXRJY29uO1xyXG5cclxuICBwcmV0ZXh0OiBzdHJpbmc7XHJcblxyXG4gIGlucHV0U3RhdGUgPSAnaWRsZSc7XHJcbiAgaW5wdXRWYWwgPSAnJztcclxuICBASW5wdXQoKSBwYXJhbXM6IElJbnB1dFBhcmFtIHwgbnVsbDtcclxuICBkZXBlbmRlbnQ6IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT4gfCBudWxsO1xyXG4gIGRlcGVuZGVudFZhbDogYW55ID0gbnVsbDtcclxuICAvLyBkeW5hbWljSWNvbjogRHluYW1pY0ljb24gfCBudWxsO1xyXG4gIC8vIGljb246IElJbnB1dEljb24gfCBudWxsO1xyXG5cclxuICB0eXBlOiBzdHJpbmcgPSAnJztcclxuICB2YWxpZGF0b3JzOiBhbnlbXTtcclxuICBhc3luY1ZhbGlkYXRvcnM6IGFueVtdO1xyXG5cclxuICBpbnB1dEVycm9yVGV4dDogc3RyaW5nID0gJ2ludmFsaWQgaW5wdXQnO1xyXG5cclxuICBzaG93RW1haWxJY29uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBjaGlwVmFsdWVzOiBhbnlbXSA9IFtdO1xyXG4gIGlzTXVsdGlWYWx1ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGN1cnJlbnRJbnB1dFZhbHVlOiBzdHJpbmcgPSAnJztcclxuICBzdGFydEluZDogbnVtYmVyID0gMDtcclxuICBsYWJlbExpbWl0OiBudW1iZXIgPSAxO1xyXG5cclxuICBwcml2YXRlIHN1cHByZXNzT25CbHVyID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5pbnB1dFZhbCA9XHJcbiAgICAgIHRoaXMuZmllbGQucHJvcHNbJ3ZhbHVlJ10gfHwgdGhpcy5tb2RlbFt0aGlzLmtleSBhcyBzdHJpbmddIHx8ICcnO1xyXG4gICAgdGhpcy5kaXNhYmxlZCA9IHRoaXMuZmllbGQucHJvcHMuZGlzYWJsZWQgfHwgZmFsc2U7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sPy5zZXRWYWx1ZSh0aGlzLmlucHV0VmFsKTtcclxuXHJcbiAgICB0aGlzLnBhcmFtcyA9IHRoaXMucGFyYW1zIHx8IHRoaXMuZmllbGQucHJvcHNbJ3BhcmFtcyddO1xyXG4gICAgdGhpcy5pY29uID0gdGhpcy5pY29uIHx8IHRoaXMuZmllbGQucHJvcHNbJ2ljb24nXSB8fCB7fTtcclxuICAgIHRoaXMudHlwZSA9IHRoaXMucGFyYW1zPy50eXBlIHx8ICcnO1xyXG4gICAgdGhpcy5mb3JtQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWwpID0+IHtcclxuICAgICAgX3NldCh0aGlzLmZvcm1JbnB1dCwgJ25hdGl2ZUVsZW1lbnQudmFsdWUnLCB2YWwpO1xyXG4gICAgICAvLyBIYW5kbGUgbXVsdGktdmFsdWUgY2hpcCB1cGRhdGVzXHJcbiAgICAgIGlmICh0aGlzLmlzTXVsdGlWYWx1ZSAmJiBBcnJheS5pc0FycmF5KHZhbCkpIHtcclxuICAgICAgICB0aGlzLmNoaXBWYWx1ZXMgPSB2YWw7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIC8vIEluaXRpYWxpemUgbXVsdGktdmFsdWUgbW9kZSBpZiBzcGVjaWZpZWRcclxuICAgIGlmICh0aGlzLnBhcmFtcz8udHlwZSA9PT0gJ211bHRpLXZhbHVlJyB8fCB0aGlzLnBhcmFtcz8ubXVsdGlWYWx1ZSkge1xyXG4gICAgICB0aGlzLmlzTXVsdGlWYWx1ZSA9IHRydWU7XHJcbiAgICAgIHRoaXMuY2hpcFZhbHVlcyA9IHRoaXMubW9kZWxbdGhpcy5rZXkgYXMgc3RyaW5nXSB8fCB0aGlzLnBhcmFtcz8uY2hpcFZhbHVlcyB8fCBbXTtcclxuICAgICAgdGhpcy5jdXJyZW50SW5wdXRWYWx1ZSA9ICcnO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHRoaXMuZHluYW1pY0ljb24gPSB0aGlzLmZpZWxkLnByb3BzWydkeW5hbWljSWNvbiddO1xyXG4gICAgdGhpcy5zZXRWYWxpZGF0b3JzKCk7XHJcbiAgICB0aGlzLnNldERlcGVuZGVudHMoKTtcclxuXHJcbiAgICB0aGlzLmZvcm1Db250cm9sLnN0YXR1c0NoYW5nZXMuc3Vic2NyaWJlKChzdGF0ZSkgPT4ge1xyXG4gICAgICBpZiAodGhpcy50eXBlID09PSAnZW1haWwnKSB7XHJcbiAgICAgICAgaWYgKCEhdGhpcy5pbnB1dFZhbCAmJiAhdGhpcy5mb3JtQ29udHJvbC50b3VjaGVkKSB7XHJcbiAgICAgICAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zaG93RW1haWxJY29uID1cclxuICAgICAgICAgIHN0YXRlID09PSAnVkFMSUQnIHx8XHJcbiAgICAgICAgICAoc3RhdGUgPT09ICdJTlZBTElEJyAmJlxyXG4gICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sLmhhc0Vycm9yKCdpbnZhbGlkJykgJiZcclxuICAgICAgICAgICAgISF0aGlzLmZvcm1Db250cm9sLnZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbCkgPT4ge1xyXG4gICAgICBfc2V0KHRoaXMuZm9ybUlucHV0LCAnbmF0aXZlRWxlbWVudC52YWx1ZScsIHZhbCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldFZhbGlkYXRvcnMoKSB7XHJcbiAgICB0aGlzLnZhbGlkYXRvcnMgPSB0aGlzLnBhcmFtcz8udmFsaWRhdG9ycyB8fCB0aGlzLnByZWRlZmluZWRWYWxpZGF0b3JzW3RoaXMudHlwZV0gfHwgW107XHJcbiAgICB0aGlzLmFzeW5jVmFsaWRhdG9ycyA9IHRoaXMucGFyYW1zPy5hc3luY1ZhbGlkYXRvcnMgfHwgW107XHJcbiAgICBpZighX2dldCh0aGlzLmZpZWxkLCAndmFsaWRhdG9ycy52YWxpZGF0aW9uJywgbnVsbCkpIHtcclxuICAgICAgdGhpcy5mb3JtQ29udHJvbD8uc2V0VmFsaWRhdG9ycyhbXHJcbiAgICAgICAgLi4uKHRoaXMudHlwZSA/IHRoaXMucHJlZGVmaW5lZFZhbGlkYXRvcnNbdGhpcy50eXBlXSB8fCBbXSA6IFtdKSxcclxuICAgICAgICAuLi4odGhpcy52YWxpZGF0b3JzKSxcclxuICAgICAgXSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5hc3luY1ZhbGlkYXRvcnMpIHtcclxuICAgICAgdGhpcy5mb3JtQ29udHJvbD8uc2V0QXN5bmNWYWxpZGF0b3JzKHRoaXMuYXN5bmNWYWxpZGF0b3JzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qXHJcbiAgICBBc3N1bWluZyBkZXBlbmRlbnQgZmllbGQgaXMgYSBzaW5nbGUgc2VsZWN0IGRyb3Bkb3duXHJcbiAgKi9cclxuICBzZXREZXBlbmRlbnRzKCkge1xyXG4gICAgaWYgKHRoaXMucGFyYW1zPy5kZXBlbmRlbnQpIHtcclxuICAgICAgdGhpcy5kZXBlbmRlbnQgPSB0aGlzLmZvcm0uZ2V0KFt0aGlzLnBhcmFtcz8uZGVwZW5kZW50XSk7XHJcblxyXG4gICAgICB0aGlzLmRlcGVuZGVudFZhbCA9IHRoaXMuZ2V0RGVwZW5kZW50VmFsKF9nZXQodGhpcy5kZXBlbmRlbnQsICd2YWx1ZScpKTtcclxuICAgICAgaWYgKHRoaXMudHlwZSA9PT0gJ3RlbCcpIHtcclxuICAgICAgICB0aGlzLnByZXRleHQgPSB0aGlzLmRlcGVuZGVudFZhbD8uZGlhbF9jb2RlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmRlcGVuZGVudD8udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsKSA9PiB7XHJcbiAgICAgICAgdGhpcy5kZXBlbmRlbnRWYWwgPSB0aGlzLmdldERlcGVuZGVudFZhbCh2YWwpO1xyXG4gICAgICAgIHRoaXMuZm9ybUNvbnRyb2wucmVzZXQoKTtcclxuICAgICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMuaW5wdXRWYWwpO1xyXG4gICAgICAgIGlmICh0aGlzLnR5cGUgPT09ICd0ZWwnKSB7XHJcbiAgICAgICAgICB0aGlzLnByZXRleHQgPSB0aGlzLmRlcGVuZGVudFZhbD8uZGlhbF9jb2RlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldERlcGVuZGVudFZhbCh2YWx1ZTogYW55KSB7XHJcbiAgICBsZXQgZGVwZW5kZW50VmFsdWU6IGFueTtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xyXG4gICAgICBkZXBlbmRlbnRWYWx1ZSA9IHZhbHVlLmxlbmd0aCA/IHZhbHVlWzBdIDogbnVsbDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGRlcGVuZGVudFZhbHVlID0gdmFsdWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGVwZW5kZW50VmFsdWU7XHJcbiAgfVxyXG5cclxuICBjaGVja1ZhbGlkaXR5KGRlZmF1bHRJbnB1dFN0YXRlID0gJ2ZvY3VzJykge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmZvcm1Db250cm9sICYmXHJcbiAgICAgICF0aGlzLmZvcm1Db250cm9sLnZhbGlkICYmXHJcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wudG91Y2hlZCAmJlxyXG4gICAgICAhdGhpcy5mb3JtQ29udHJvbC5wZW5kaW5nXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5pbnB1dFN0YXRlID0gJ2ludmFsaWQnO1xyXG4gICAgICB0aGlzLmlucHV0RXJyb3JUZXh0ID1cclxuICAgICAgICBnZXRWYWxpZGF0aW9uTWVzc2FnZSh0aGlzLmZvcm1Db250cm9sLmVycm9ycywgdGhpcy5wYXJhbXM/LnBsYWNlaG9sZGVyIHx8IHRoaXMuZmllbGQucHJvcHM/LmxhYmVsIHx8ICdJbnB1dCcsIHtcclxuICAgICAgICAgIGZpZWxkOiB0aGlzLmZpZWxkLFxyXG4gICAgICAgICAgbmF0aXZlVmFsaWRhdGlvbk9iamVjdDogdGhpcy5maWVsZC52YWxpZGF0aW9uLFxyXG4gICAgICAgIH0pIHx8IGBpbnZhbGlkICR7dGhpcy5wYXJhbXM/LnBsYWNlaG9sZGVyIHx8IHRoaXMuZmllbGQucHJvcHM/LmxhYmVsIHx8ICdpbnB1dCd9YFxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5pbnB1dFN0YXRlID0gZGVmYXVsdElucHV0U3RhdGU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkZvY3VzKCkge1xyXG4gICAgaWYgKHRoaXMuZm9ybUNvbnRyb2wudmFsaWQpIHRoaXMuaW5wdXRTdGF0ZSA9ICdmb2N1cyc7XHJcbiAgfVxyXG4gIG9uQmx1cigpIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMuc3VwcHJlc3NPbkJsdXIpIHtcclxuICAgICAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgICAgICB0aGlzLmNoZWNrVmFsaWRpdHkoJ2lkbGUnKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnN1cHByZXNzT25CbHVyID0gZmFsc2U7XHJcbiAgICB9LCAyMDApO1xyXG4gIH1cclxuXHJcbiAgb25JbnB1dChldmVudDogYW55KSB7XHJcbiAgICBpZiAodGhpcy5wYXJhbXM/LnR5cGUgPT09ICd0ZWwnKSB7XHJcbiAgICAgIHRoaXMuaW5wdXRWYWwgPSB0aGlzLmlucHV0VmFsLnJlcGxhY2UoL1teMC05KCkrXFwtIF0vZywgJycpO1xyXG4gICAgICB0aGlzLmlucHV0VmFsID0gdGhpcy5oeXBoZW5hdGVQaG9uZU51bWJlcigpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMucGFyYW1zPy50eXBlID09PSAncGVyY2VudGFnZScpIHtcclxuICAgICAgbGV0IHZhbHVlID0gdGhpcy5pbnB1dFZhbC5yZXBsYWNlKC9bXjAtOS5dL2csICcnKTtcclxuICAgICAgdGhpcy5pbnB1dFZhbCA9IHZhbHVlID8gYCR7dmFsdWV9JWAgOiAnJztcclxuICAgIH1cclxuICAgIHRoaXMuZm9ybUNvbnRyb2w/LnNldFZhbHVlKHRoaXMuaW5wdXRWYWwpO1xyXG4gICAgdGhpcy5jaGVja1ZhbGlkaXR5KCk7XHJcbiAgICAvKmlmICh0aGlzLnBhcmFtcz8uZXZlbnRMaXN0ZW5lcikge1xyXG4gICAgICB0aGlzLnBhcmFtcz8uZXZlbnRMaXN0ZW5lcih7XHJcbiAgICAgICAgdHlwZTogSUlucHV0RXZlbnRUeXBlLklOUFVUX0NIQU5HRSxcclxuICAgICAgICB2YWx1ZTogdGhpcy5pbnB1dFZhbCxcclxuICAgICAgICBmb3JtQ29udHJvbDogdGhpcy5mb3JtQ29udHJvbFxyXG4gICAgICB9IGFzIElJbnB1dEV2ZW50KS50aGVuKHRoaXMub25GaWVsZENhbGxiYWNrLmJpbmQodGhpcykpO1xyXG4gICAgfSovXHJcbiAgfVxyXG5cclxuICBoeXBoZW5hdGVQaG9uZU51bWJlcigpIHtcclxuICAgIGxldCBuZXdTdHIgPSAnJztcclxuICAgIGxldCBpID0gMDtcclxuICAgIGxldCBoeXBoZW5hdGVkQ291bnQgPSAxO1xyXG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmlucHV0VmFsLnJlcGxhY2VBbGwoJy0nLCAnJyk7XHJcbiAgICBmb3IgKDsgaSA8IHZhbHVlLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIG5ld1N0ciA9IG5ld1N0ciArIHZhbHVlLmNoYXJBdChpKTtcclxuICAgICAgaWYgKCEoaHlwaGVuYXRlZENvdW50ICUgMykpIHtcclxuICAgICAgICBpZiAoISgoaSArIDEpICUgMTApICYmIGkgKyAxIDwgdmFsdWUubGVuZ3RoKSB7XHJcbiAgICAgICAgICBuZXdTdHIgPSBuZXdTdHIgKyAnLSc7XHJcbiAgICAgICAgICBoeXBoZW5hdGVkQ291bnQrKztcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgISgoaSArIDEgLSBNYXRoLmZsb29yKGh5cGhlbmF0ZWRDb3VudCAvIDMpKSAlIDMpICYmXHJcbiAgICAgICAgaSArIDEgPCB2YWx1ZS5sZW5ndGhcclxuICAgICAgKSB7XHJcbiAgICAgICAgbmV3U3RyID0gbmV3U3RyICsgJy0nO1xyXG4gICAgICAgIGh5cGhlbmF0ZWRDb3VudCsrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG5ld1N0cjtcclxuICB9XHJcblxyXG4gIG9uSW5wdXRGaWVsZENsaWNrKGV2ZW50OiBhbnkgPSAnaW5wdXQnKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIGV2ZW50ID09PSAnaW5wdXQnIHx8XHJcbiAgICAgIGV2ZW50LnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoJ3NhLWlucHV0LWZpZWxkJylcclxuICAgICkge1xyXG4gICAgICB0aGlzLmZvcm1JbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICAgIGlmICh0aGlzLnBhcmFtcz8udHlwZSAhPT0gJ2VtYWlsJylcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuZm9ybUlucHV0Lm5hdGl2ZUVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UoXHJcbiAgICAgICAgICAgIHRoaXMuaW5wdXRWYWwubGVuZ3RoLFxyXG4gICAgICAgICAgICB0aGlzLmlucHV0VmFsLmxlbmd0aCxcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSwgMTApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5wdXRJY29uQ2xpY2soKSB7XHJcbiAgICBpZiAodGhpcy5wYXJhbXM/LnR5cGUgPT09ICdwYXNzd29yZCcpIHtcclxuICAgICAgdGhpcy5zdXBwcmVzc09uQmx1ciA9IHRydWU7XHJcbiAgICAgIGlmICh0aGlzLnR5cGUgPT09ICdwYXNzd29yZCcpIHtcclxuICAgICAgICB0aGlzLnR5cGUgPSAndGV4dCc7XHJcbiAgICAgICAgdGhpcy5pY29uLm5hbWUgPSAnZXllT2ZmJztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnR5cGUgPSAncGFzc3dvcmQnO1xyXG4gICAgICAgIHRoaXMuaWNvbi5uYW1lID0gJ2V5ZU91dGxpbmVkJztcclxuICAgICAgfVxyXG4gICAgICB0aGlzLm9uSW5wdXRGaWVsZENsaWNrKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhZGRDaGlwKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIGlmICghdGhpcy5pc011bHRpVmFsdWUgfHwgIXZhbHVlLnRyaW0oKSkgcmV0dXJuOyAgXHJcbiAgICBjb25zdCBjaGlwVmFsdWUgPSB7XHJcbiAgICAgIGxhYmVsOiB2YWx1ZS50cmltKCksXHJcbiAgICAgIHZhbHVlOiB2YWx1ZS50cmltKCksXHJcbiAgICAgIHJlbW92YWJsZTogdHJ1ZVxyXG4gICAgfTtcclxuICAgIHRoaXMuY2hpcFZhbHVlcy5wdXNoKGNoaXBWYWx1ZSk7ICAgIFxyXG4gICAgY29uc3QgYWN0dWFsVmFsdWVzID0gbWFwKHRoaXMuY2hpcFZhbHVlcywgKGNoaXA6IGFueSkgPT4gY2hpcC52YWx1ZSB8fCBjaGlwLmxhYmVsIHx8IGNoaXApO1xyXG4gICAgdGhpcy5mb3JtQ29udHJvbD8uc2V0VmFsdWUoYWN0dWFsVmFsdWVzKTtcclxuICAgIHRoaXMuY3VycmVudElucHV0VmFsdWUgPSAnJztcclxuICAgIHRoaXMubW9kZWxbdGhpcy5rZXkgYXMgc3RyaW5nXSA9IGFjdHVhbFZhbHVlcztcclxuICB9XHJcbiAgXHJcbiAgcmVtb3ZlQ2hpcChpbmRleDogbnVtYmVyKSB7XHJcbiAgICBpZiAoIXRoaXMuaXNNdWx0aVZhbHVlKSByZXR1cm47ICBcclxuICAgIHRoaXMuY2hpcFZhbHVlcy5zcGxpY2UoaW5kZXgsIDEpOyAgXHJcbiAgICBjb25zdCBhY3R1YWxWYWx1ZXMgPSBtYXAodGhpcy5jaGlwVmFsdWVzLCAoY2hpcDogYW55KSA9PiBjaGlwLnZhbHVlIHx8IGNoaXAubGFiZWwgfHwgY2hpcCk7XHJcbiAgICB0aGlzLm1vZGVsW3RoaXMua2V5IGFzIHN0cmluZ10gPSBhY3R1YWxWYWx1ZXM7XHJcbiAgfVxyXG5cclxuICBvbkNoaXBLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBpZiAoIXRoaXMuaXNNdWx0aVZhbHVlKSByZXR1cm47XHJcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInIHx8IGV2ZW50LmtleSA9PT0gJywnKSB7XHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIHRoaXMuYWRkQ2hpcCh0aGlzLmN1cnJlbnRJbnB1dFZhbHVlKTtcclxuICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnQmFja3NwYWNlJyAmJiAhdGhpcy5jdXJyZW50SW5wdXRWYWx1ZSAmJiB0aGlzLmNoaXBWYWx1ZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnJlbW92ZUNoaXAodGhpcy5jaGlwVmFsdWVzLmxlbmd0aCAtIDEpO1xyXG4gICAgfVxyXG4gIH1cclxuICBcclxuICBvbkNoaXBJbnB1dENoYW5nZShldmVudDogYW55KSB7XHJcbiAgICBpZiAoIXRoaXMuaXNNdWx0aVZhbHVlKSByZXR1cm47XHJcbiAgICB0aGlzLmN1cnJlbnRJbnB1dFZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xyXG4gIH1cclxuXHJcbiAgb25DaGlwQmx1cigpIHtcclxuICAgIGlmICghdGhpcy5pc011bHRpVmFsdWUpIHJldHVybjtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRJbnB1dFZhbHVlLnRyaW0oKSkge1xyXG4gICAgICB0aGlzLmFkZENoaXAodGhpcy5jdXJyZW50SW5wdXRWYWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qb25GaWVsZENhbGxiYWNrKHBhcmFtOiBJSW5wdXRQYXJhbSkge1xyXG4gICAgdGhpcy5pY29uID0gcGFyYW0uaWNvbiB8fCB0aGlzLmljb247XHJcbiAgICB0aGlzLmNoZWNrVmFsaWRpdHkoKTtcclxuICB9Ki9cclxuXHJcbiAgZ2V0Rm9ybVN1cHBvcnRUZXh0KCkge1xyXG4gICAgaWYgKHRoaXMuZm9ybUNvbnRyb2wuaW52YWxpZCAmJiB0aGlzLmZvcm1Db250cm9sLnRvdWNoZWQpIHtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICBnZXRWYWxpZGF0aW9uTWVzc2FnZSh0aGlzLmZvcm1Db250cm9sLmVycm9ycywgdGhpcy5wYXJhbXM/LnBsYWNlaG9sZGVyIHx8IHRoaXMuZmllbGQucHJvcHM/LmxhYmVsIHx8ICdJbnB1dCcse1xyXG4gICAgICAgICAgZmllbGQ6IHRoaXMuZmllbGQsXHJcbiAgICAgICAgICBuYXRpdmVWYWxpZGF0aW9uT2JqZWN0OiBfZ2V0KHRoaXMuZmllbGQsICd2YWxpZGF0aW9uJyksXHJcbiAgICAgICAgfSkgfHxcclxuICAgICAgICBgaW52YWxpZCAke3RoaXMucGFyYW1zPy5wbGFjZWhvbGRlciB8fCB0aGlzLmZpZWxkLnByb3BzPy5sYWJlbCB8fCAnaW5wdXQnfWBcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnBhcmFtcz8uc3VwcG9ydFRleHQgfHwgJyc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcmVkZWZpbmVkVmFsaWRhdG9yczogYW55ID0ge1xyXG4gICAgZW1haWw6IFtWYWxpZGF0b3JzLmVtYWlsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgIHBhc3N3b3JkOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICB0ZWw6IFtWYWxpZGF0b3JzLnBhdHRlcm4oJ15bMC05ICtcXFxcLSgpXSokJyldLFxyXG4gIH07XHJcblxyXG4gIGdldExhYmVsRmllbGRHYXAoKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLnByb3BzPy5bJ2JpZ0xhYmVsJ10pIHtcclxuICAgICAgcmV0dXJuICd2YXIoLS1tZWRpdW0tMjBweCknO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnByb3BzPy5bJ2xhYmVsJ10pIHtcclxuICAgICAgcmV0dXJuICd2YXIoLS1zbWFsbC00cHgpJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAnMHB4JzsgLy8gTm8gZ2FwXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzaGlmdExhYmVsKGFjdGlvbjogJ2NsaWNrZWQnIHwgJ2NsZWFyZWQnKSB7XHJcbiAgICBpZiAoYWN0aW9uID09PSAnY2xpY2tlZCcpIHtcclxuICAgICAgdGhpcy5zdGFydEluZCA9IDA7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnN0YXJ0SW5kID0gTWF0aC5tYXgoMCwgdGhpcy5jaGlwVmFsdWVzLmxlbmd0aCAtIHRoaXMubGFiZWxMaW1pdCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElJbnB1dEljb24ge1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBzaG93PzogYm9vbGVhbjtcclxuICBjb2xvcj86IHN0cmluZztcclxuICBzaXplPzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElJbnB1dFBhcmFtIHtcclxuICB2YWxpZGF0b3JzPzogYW55W107XHJcbiAgYXN5bmNWYWxpZGF0b3JzPzogYW55W107XHJcbiAgc3VwcG9ydFRleHQ/OiBzdHJpbmc7XHJcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XHJcbiAgdHlwZT86IHN0cmluZztcclxuICBkZXBlbmRlbnQ/OiBzdHJpbmc7XHJcbiAgZXZlbnRMaXN0ZW5lcj86IEZ1bmN0aW9uO1xyXG4gIGljb24/OiBJSW5wdXRJY29uO1xyXG4gIGVycm9ycz86IHsgW2tleTogc3RyaW5nXTogYW55IH07XHJcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xyXG4gIG11bHRpVmFsdWU/OiBib29sZWFuOyAvLyBmb3IgbXVsdGktdmFsdWUgY2hpcCBzdXBwb3J0XHJcbiAgY2hpcFZhbHVlcz86IGFueVtdOyAvLyBmb3IgbXVsdGktdmFsdWUgY2hpcCBzdXBwb3J0XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUlucHV0RXZlbnQge1xyXG4gIHR5cGU6IElJbnB1dEV2ZW50VHlwZTtcclxuICB2YWx1ZTogc3RyaW5nO1xyXG4gIGNhbGxCYWNrOiBhbnk7XHJcbiAgZm9ybUNvbnRyb2w6IEZvcm1Db250cm9sO1xyXG59XHJcbmV4cG9ydCBlbnVtIElJbnB1dEV2ZW50VHlwZSB7XHJcbiAgSU5QVVRfQ0hBTkdFID0gJ0lOUFVUX0NIQU5HRScsXHJcbiAgU1RBVEVfQ0hBTkdFID0gJ1NUQVRFX0NIQU5HRScsXHJcbiAgSUNPTl9DTElDSyA9ICdJQ09OX0NMSUNLJyxcclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwic2EtaW5wdXQtY29udGFpbmVyIHt7cHJvcHM/LlsnaW5wdXRDb250YWluZXJDbGFzcyddfX1cIiBbbmdTdHlsZV09XCJ7J2dhcCc6IGdldExhYmVsRmllbGRHYXAoKX1cIj5cclxuICAgIEBpZiAoISFwcm9wcz8uWydiaWdMYWJlbCddIHx8ICEhcHJvcHM/LlsnYmlnRGVzY3JpcHRpb24nXSkge1xyXG4gICAgPGRpdiBjbGFzcz1cInNhLWlucHV0LWJpZy1sYWJlbC1jb250YWluZXJcIiBbbmdDbGFzc109XCJkaXNhYmxlZCA/ICdkaXNhYmxlZCcgOiAnJyBcIj5cclxuICAgICAgICA8aDIgY2xhc3M9XCJzYS1pbnB1dC1iaWctbGFiZWxcIj5cclxuICAgICAgICAgICAge3twcm9wcz8uWydiaWdMYWJlbCddfX1cclxuICAgICAgICA8L2gyPlxyXG4gICAgICAgIDxwIGNsYXNzPVwic2EtaW5wdXQtYmlnLWRlc2NyaXB0aW9uXCI+XHJcbiAgICAgICAgICAgIHt7cHJvcHM/LlsnYmlnRGVzY3JpcHRpb24nXX19XHJcbiAgICAgICAgPC9wPlxyXG4gICAgPC9kaXY+XHJcbiAgICB9XHJcbiAgICBAaWYoISFwcm9wcz8uWydsYWJlbCddKXtcclxuICAgIDxkaXYgY2xhc3M9XCJzYS1pbnB1dC1sYWJlbC1jb250YWluZXJcIiBbbmdDbGFzc109XCJkaXNhYmxlZCA/ICdkaXNhYmxlZCcgOiAnJyBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2EtaW5wdXQtbGFiZWwtdG9vbHRpcC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYS1pbnB1dC1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAge3twcm9wcz8uWydsYWJlbCddfX1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICBAaWYoISFwcm9wcz8uWyd0b29sdGlwJ10pe1xyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRvb2x0aXAtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICA8c2EtaWNvbiBbaWNvbl09XCJwcm9wcz8uWyd0b29sdGlwSWNvbiddIHx8ICdpbmZvQ2lyY2xlT3V0bGluZWQnXCIgY3VzdG9tQ2xhc3M9XCJpbmZvLWljb25cIlxyXG4gICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cInByb3BzPy5bJ3Rvb2x0aXAnXVwiIG1hdFRvb2x0aXBDbGFzcz1cImN1c3RvbS10b29sdGlwXCIgY2xhc3M9XCJ0b29sdGlwLWljb24gZC1mbGV4XCJcclxuICAgICAgICAgICAgICAgICAgICBbc2l6ZV09XCJwcm9wcz8uWyd0b29sdGlwSWNvblNpemUnXSB8fCAnMjAnXCI+PC9zYS1pY29uPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICBAaWYoISFwcm9wcz8uWydkZXNjcmlwdGlvbiddKSB7XHJcbiAgICAgICAgPHAgY2xhc3M9XCJzYS1pbnB1dC1kZXNjcmlwdGlvblwiPlxyXG4gICAgICAgICAgICB7e3Byb3BzPy5bJ2Rlc2NyaXB0aW9uJ119fVxyXG4gICAgICAgIDwvcD5cclxuICAgICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICAgIH1cclxuICAgIDxkaXYgY2xhc3M9XCJzYS1pbnB1dFwiIFtuZ0NsYXNzXT1cImRpc2FibGVkID8gJ2Rpc2FibGVkJyA6ICcnIFwiPlxyXG4gICAgICAgIEBpZigocHJldGV4dCB8fCAoISFpbnB1dFZhbD8ubGVuZ3RoICYmICghIXBhcmFtcz8ucGxhY2Vob2xkZXIgfHwgISFwcm9wcz8ucGxhY2Vob2xkZXIpKSkgJiYgcHJvcHM/Llsnc2hvd1RhZyddXHJcbiAgICAgICAgIT09IGZhbHNlKXtcclxuICAgICAgICA8c3BhbiBjbGFzcz1cInNhLWlucHV0LXRhZ1wiPnt7cGFyYW1zPy5wbGFjZWhvbGRlciB8fCBwcm9wcz8ucGxhY2Vob2xkZXJ9fTwvc3Bhbj5cclxuICAgICAgICB9XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNhLWlucHV0LWZpZWxkXCIgW25nQ2xhc3NdPVwiZm9ybUNvbnRyb2wuaW52YWxpZCAmJiBmb3JtQ29udHJvbC50b3VjaGVkID8gJ2ludmFsaWQnIDogJ2lkbGUnIFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvbklucHV0RmllbGRDbGljaygkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgIEBpZihwcmV0ZXh0KXtcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNhLWlucHV0LXByZXRleHRcIj5cclxuICAgICAgICAgICAgICAgIHt7cHJldGV4dH19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICA8IS0tIE11bHRpLXZhbHVlIGNoaXAgZGlzcGxheSAtLT5cclxuICAgICAgICAgICAgQGlmKGlzTXVsdGlWYWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNhLWNoaXAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjaGlwIG9mIChjaGlwVmFsdWVzIHx8IFtdKT8uc2xpY2Uoc3RhcnRJbmQsc3RhcnRJbmQrbGFiZWxMaW1pdCkgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0ZXh0XT1cImNoaXA/LnZhbHVlIHx8IGNoaXA/LmxhYmVsIHx8IGNoaXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCIncmVndWxhcidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3RhdGVdPVwiJ3ByaW1hcnknXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2ZpbGxpbmddPVwiJ2ZpbGxlZCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbaWNvblBvc2l0aW9uXT1cIidyaWdodCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbaWNvblBhdGhdPVwiJy4uL2Fzc2V0cy9jbG9zZUJsdWVPdXRsaW5lZC5zdmcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2xpY2tFdmVudCk9XCJyZW1vdmVDaGlwKGkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zYS1jaGlwPlxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cInNoaWZ0TGFiZWwoJ2NsaWNrZWQnKVwiIGNsYXNzPVwibmctdmFsdWUgb3ZlcmZsb3ctbGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihjaGlwVmFsdWVzIHx8IFtdKS5sZW5ndGggPiAoc3RhcnRJbmQgKyBsYWJlbExpbWl0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c2EtY2hpcCBbdGV4dF09XCInKycgKyAoKGNoaXBWYWx1ZXMgfHwgW10pLmxlbmd0aCAtIChzdGFydEluZCArIGxhYmVsTGltaXQpKVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJyZWd1bGFyXCIgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlPVwicHJpbWFyeVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxpbmc9XCJmaWxsZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zYS1jaGlwPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiJ2NoaXAtaW5wdXQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0SW5wdXQgW3R5cGVdPVwidHlwZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmaWVsZC5wcm9wcy5kaXNhYmxlZCB8fCBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjaGlwVmFsdWVzLmxlbmd0aCA9PT0gMCA/IChwcm9wcz8ucGxhY2Vob2xkZXIgfHwgcGFyYW1zPy5wbGFjZWhvbGRlciB8fCAnJykgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChmb2N1cyk9XCJvbkZvY3VzKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJvbkNoaXBCbHVyKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoaW5wdXQpPVwib25DaGlwSW5wdXRDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duKT1cIm9uQ2hpcEtleURvd24oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY3VycmVudElucHV0VmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAjZm9ybUlucHV0IC8+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgICAgICA8IS0tIFN0YW5kYXJkIHNpbmdsZS12YWx1ZSBpbnB1dCAoYmFja3dhcmQgY29tcGF0aWJpbGl0eSkgLS0+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCIoISFpbnB1dFZhbCAmJiAocGFyYW1zPy50eXBlID09PSAncGFzc3dvcmQnIHx8IHByb3BzPy50eXBlID09PSAncGFzc3dvcmQnKSAmJiBpY29uLm5hbWUgIT09ICdleWVPZmYnKSA/ICdtYXNrZWQnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgIG1hdElucHV0IFt0eXBlXT1cInR5cGVcIiB2YWx1ZT1cIlwiIFtwYXR0ZXJuXT1cInR5cGU9PT0ndGVsJyA/ICdbMC05XScgOiAnJyBcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmaWVsZC5wcm9wcy5kaXNhYmxlZCB8fCBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIiFwcmV0ZXh0ICYmIHByb3BzPy5wbGFjZWhvbGRlciB8fCBwYXJhbXM/LnBsYWNlaG9sZGVyIHx8ICcnXCIgKGZvY3VzKT1cIm9uRm9jdXMoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwib25CbHVyKClcIiAoaW5wdXQpPVwib25JbnB1dCgkZXZlbnQpXCIgWyhuZ01vZGVsKV09XCJpbnB1dFZhbFwiICNmb3JtSW5wdXQgLz5cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgQGlmKHBhcmFtcz8udHlwZSA9PT0gJ3Bhc3N3b3JkJyl7XHJcbiAgICAgICAgICAgIDxzYS1pY29uIGNsYXNzPVwiZmxleFwiIGljb249XCJleWVPdXRsaW5lZFwiIFtzaXplXT1cImljb24uc2l6ZSB8fCAnMjQnXCIgKGNsaWNrKT1cImlucHV0SWNvbkNsaWNrKClcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiIWljb24ubmFtZSB8fCBpY29uLm5hbWUgPT09ICdleWVPdXRsaW5lZCcgPyAnJyA6ICdoaWRlJ1wiPjwvc2EtaWNvbj5cclxuICAgICAgICAgICAgPHNhLWljb24gY2xhc3M9XCJmbGV4XCIgaWNvbj1cImV5ZU9mZlwiIFtzaXplXT1cImljb24uc2l6ZSB8fCAnMjQnXCIgKGNsaWNrKT1cImlucHV0SWNvbkNsaWNrKClcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiaWNvbi5uYW1lID09PSAnZXllT2ZmJyA/ICcnIDogJ2hpZGUnXCI+PC9zYS1pY29uPlxyXG4gICAgICAgICAgICB9QGVsc2UgaWYocGFyYW1zPy50eXBlID09PSAnZW1haWwnICYmIGljb24uc2hvdyl7XHJcbiAgICAgICAgICAgIDxzYS1pY29uIGNsYXNzPVwiZmxleFwiIFtpY29uXT1cImljb24ubmFtZSB8fCAnY2hlY2tDaXJjbGVPdXRsaW5lZCdcIiBbc2l6ZV09XCJpY29uLnNpemUgfHwgJzI0J1wiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiaW5wdXRJY29uQ2xpY2soKVwiIFtuZ0NsYXNzXT1cInNob3dFbWFpbEljb24gPyAnJyA6ICdoaWRlJ1wiPjwvc2EtaWNvbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBAZWxzZSBpZihpY29uPy5uYW1lKXtcclxuICAgICAgICAgICAgPHNhLWljb24gY2xhc3M9XCJmbGV4XCIgW2ljb25dPVwiaWNvbi5uYW1lXCIgW3NpemVdPVwiaWNvbj8uc2l6ZSB8fCAnMjQnXCIgW2NvbG9yXT1cImljb24/LmNvbG9yIHx8ICcnXCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImljb24/LnNob3cgPyAnJyA6ICdoaWRlJ1wiPjwvc2EtaWNvbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIEBpZigoIWZvcm1Db250cm9sLnZhbGlkKSB8fCAocGFyYW1zPy5zdXBwb3J0VGV4dCkpe1xyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VwcG9ydC1sYWJlbCB7e2Zvcm1Db250cm9sLmludmFsaWQgJiYgZm9ybUNvbnRyb2wudG91Y2hlZCA/IHBhcmFtcz8uY2xhc3NOYW1lIDogJyd9fVwiIFtuZ0NsYXNzXT1cIltcclxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sLmludmFsaWQgJiYgZm9ybUNvbnRyb2wudG91Y2hlZCA/ICdpbnZhbGlkJyA6ICdpZGxlJ1xyXG4gICAgICAgICAgICAgIF1cIj5cclxuICAgICAgICAgICAgICAgIDwhLS0ge3shZm9ybUNvbnRyb2wudmFsaWQgPyBpbnB1dEVycm9yVGV4dCA6IHBhcmFtcy5zdXBwb3J0VGV4dH19IC0tPlxyXG4gICAgICAgICAgICAgICAge3tnZXRGb3JtU3VwcG9ydFRleHQoKX19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICB9XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19
@@ -2240,7 +2240,7 @@ class FormInputComponent extends FieldType {
2240
2240
  }
2241
2241
  }
2242
2242
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: FormInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2243
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.4", type: FormInputComponent, isStandalone: true, selector: "sa-input", inputs: { icon: "icon", params: "params" }, viewQueries: [{ propertyName: "formInput", first: true, predicate: ["formInput"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"sa-input-container {{props?.['inputContainerClass']}}\" [ngStyle]=\"{'gap': getLabelFieldGap()}\">\r\n @if (!!props?.['bigLabel'] || !!props?.['bigDescription']) {\r\n <div class=\"sa-input-big-label-container\" [ngClass]=\"disabled ? 'disabled' : '' \">\r\n <h2 class=\"sa-input-big-label\">\r\n {{props?.['bigLabel']}}\r\n </h2>\r\n <p class=\"sa-input-big-description\">\r\n {{props?.['bigDescription']}}\r\n </p>\r\n </div>\r\n }\r\n @if(!!props?.['label']){\r\n <div class=\"sa-input-label-container\" [ngClass]=\"disabled ? 'disabled' : '' \">\r\n <div class=\"sa-input-label-tooltip-container\">\r\n <span class=\"sa-input-label\">\r\n {{props?.['label']}}\r\n </span>\r\n @if(!!props?.['tooltip']){\r\n <span class=\"tooltip-container\">\r\n <sa-icon [icon]=\"props?.['tooltipIcon'] || 'infoCircleOutlined'\" customClass=\"info-icon\"\r\n [matTooltip]=\"props?.['tooltip']\" matTooltipClass=\"custom-tooltip\" class=\"tooltip-icon d-flex\"\r\n [size]=\"props?.['tooltipIconSize'] || '20'\"></sa-icon>\r\n </span>\r\n }\r\n </div>\r\n @if(!!props?.['description']) {\r\n <p class=\"sa-input-description\">\r\n {{props?.['description']}}\r\n </p>\r\n }\r\n </div>\r\n }\r\n <div class=\"sa-input\" [ngClass]=\"disabled ? 'disabled' : '' \">\r\n @if((pretext || (!!inputVal?.length && (!!params?.placeholder || !!props?.placeholder))) && props?.['showTag']\r\n !== false){\r\n <span class=\"sa-input-tag\">{{params?.placeholder || props?.placeholder}}</span>\r\n }\r\n <div class=\"sa-input-field\" [ngClass]=\"formControl.invalid && formControl.touched ? 'invalid' : 'idle' \"\r\n (click)=\"onInputFieldClick($event)\">\r\n @if(pretext){\r\n <div class=\"sa-input-pretext\">\r\n {{pretext}}\r\n </div>\r\n }\r\n\r\n <!-- Multi-value chip display -->\r\n @if(isMultiValue) {\r\n <div class=\"chip-container\">\r\n <sa-chip \r\n *ngFor=\"let chip of (chipValues || [])?.slice(startInd,startInd+labelLimit) let i = index\"\r\n [text]=\"chip?.value || chip?.label || chip\"\r\n [type]=\"'regular'\"\r\n [state]=\"'primary'\"\r\n [filling]=\"'filled'\"\r\n [iconPosition]=\"'right'\"\r\n [iconPath]=\"'../assets/closeBlueOutlined.svg'\"\r\n (onClickEvent)=\"removeChip(i)\">\r\n </sa-chip>\r\n \r\n <div (click)=\"shiftLabel('clicked')\" class=\"ng-value overflow-label\"\r\n *ngIf=\"(chipValues || []).length > (startInd + labelLimit)\">\r\n <sa-chip [text]=\"'+' + ((chipValues || []).length - (startInd + labelLimit))\" \r\n type=\"regular\" \r\n state=\"primary\" \r\n filling=\"filled\">\r\n </sa-chip>\r\n </div>\r\n\r\n <input\r\n [ngClass]=\"'chip-input'\"\r\n matInput [type]=\"type\"\r\n [disabled]=\"field.props.disabled || false\"\r\n [placeholder]=\"chipValues.length === 0 ? (props?.placeholder || params?.placeholder || '') : ''\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onChipBlur()\"\r\n (input)=\"onChipInputChange($event)\"\r\n (keydown)=\"onChipKeyDown($event)\"\r\n [(ngModel)]=\"currentInputValue\"\r\n #formInput />\r\n </div>\r\n } @else {\r\n <!-- Standard single-value input (backward compatibility) -->\r\n <input\r\n [ngClass]=\"(!!inputVal && (params?.type === 'password' || props?.type === 'password') && icon.name !== 'eyeOff') ? 'masked' : ''\"\r\n matInput [type]=\"type\" value=\"\" [pattern]=\"type==='tel' ? '[0-9]' : '' \"\r\n [disabled]=\"field.props.disabled || false\"\r\n [placeholder]=\"!pretext && props?.placeholder || params?.placeholder || ''\" (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\" (input)=\"onInput($event)\" [(ngModel)]=\"inputVal\" #formInput />\r\n }\r\n\r\n @if(params?.type === 'password'){\r\n <sa-icon class=\"flex\" icon=\"eyeOutlined\" [size]=\"icon.size || '24'\" (click)=\"inputIconClick()\"\r\n [ngClass]=\"!icon.name || icon.name === 'eyeOutlined' ? '' : 'hide'\"></sa-icon>\r\n <sa-icon class=\"flex\" icon=\"eyeOff\" [size]=\"icon.size || '24'\" (click)=\"inputIconClick()\"\r\n [ngClass]=\"icon.name === 'eyeOff' ? '' : 'hide'\"></sa-icon>\r\n }@else if(params?.type === 'email' && icon.show){\r\n <sa-icon class=\"flex\" [icon]=\"icon.name || 'checkCircleOutlined'\" [size]=\"icon.size || '24'\"\r\n (click)=\"inputIconClick()\" [ngClass]=\"showEmailIcon ? '' : 'hide'\"></sa-icon>\r\n }\r\n @else if(icon?.name){\r\n <sa-icon class=\"flex\" [icon]=\"icon.name\" [size]=\"icon?.size || '24'\" [color]=\"icon?.color || ''\"\r\n [ngClass]=\"icon?.show ? '' : 'hide'\"></sa-icon>\r\n }\r\n </div>\r\n @if((!formControl.valid) || (params?.supportText)){\r\n <div class=\"support-label {{formControl.invalid && formControl.touched ? params?.className : ''}}\" [ngClass]=\"[\r\n formControl.invalid && formControl.touched ? 'invalid' : 'idle'\r\n ]\">\r\n <!-- {{!formControl.valid ? inputErrorText : params.supportText}} -->\r\n {{getFormSupportText()}}\r\n </div>\r\n }\r\n </div>\r\n</div>", styles: ["*{--error-red: #e25c61 }.idle{--border: 1px solid var(--grey-50)}.focus{--border: 1px solid var(--primary-300)}.masked{font-size:28px;font-weight:500;padding-top:4px}.disabled .sa-input-field,[disabled]{background-color:#fafafa;cursor:not-allowed}.disabled .sa-input-field input{color:#989da3}.sa-input-field>input,.sa-input-field>input:focus-visible{--border: 1px solid var(--primary-300);border:none;outline:none}.sa-input-field:hover{--border: 1px solid var(--primary-300);--font-color: var(--text-highemphasis)}.sa-input-field sa-icon{color:var(--icon-grey1)}.sa-input-field>input:focus-visible~sa-icon,.sa-input-field:hover sa-icon{color:var(--primary-300)}.sa-input-field.invalid>input,.sa-input-field.invalid sa-icon,.sa-input-field.invalid .sa-input-pretext{color:#e25c61}.sa-input-field.invalid{--border: 1px solid #e25c61}.sa-input-field.invalid sa-icon{--form-email-icon-color: #e25c61}.sa-input-field.idle sa-icon{--form-email-icon-color: #33961F}.sa-input{position:relative;padding:8px 0}.sa-input-pretext{margin-right:2px}.sa-input-field{width:100%;box-sizing:border-box;position:relative;display:inline-flex;padding:0px var(--small-12px);height:40px;justify-content:center;align-items:center;border:1px solid var(--grey-100, #EAECF0);border-radius:var(--small-4px);font-size:14px;font-style:normal;font-weight:400;line-height:20px;letter-spacing:.25px;--font-color: var(--text-lowemphasis)}.sa-input-field input{width:inherit}.sa-input-tag{position:absolute;background:#fff;padding:2px 6px;top:-1px;left:12px;z-index:2;font-size:11px;font-weight:500;line-height:16px;letter-spacing:.5px;text-align:left;color:var(--text-lowemphasis)}.support-label{font-family:var(--font);font-size:11px;font-style:normal;font-weight:400;line-height:16px;letter-spacing:.5px;color:var(--text-lowemphasis);padding:var(--small-4px) var(--small-16px) 0px var(--small-16px)}.support-label.invalid{color:var(--error-red)}.hide{display:none}.sa-input-big-label-container,.sa-input-label-container{display:flex;flex-direction:column;gap:var(--small-8px, 8px)}.sa-input-big-label{color:var(--text-highemphasis, #1C1B20);font-family:var(--font-roboto, Roboto);font-size:var(--medium-22px, 22px);font-style:normal;font-weight:500;line-height:var(--medium-28px, 28px);margin:0}.sa-input-big-description,.sa-input-description{color:var(--text-mediumemphasis, #6D6979);font-family:var(--font-roboto, Roboto);font-size:var(--small-14px, 14px);font-style:normal;font-weight:400;line-height:var(--medium-20px, 20px);letter-spacing:.25px;margin:0}.sa-input-container{display:flex;flex-direction:column;gap:var(--medium-20px, 20px)}.sa-input-label{color:var(--text-highemphasis, #1B1D20);font-family:var(--font);font-size:var(--small-14px);font-style:normal;font-weight:500;line-height:var(--medium-20px);letter-spacing:.1px}.sa-input-label-tooltip-container{display:flex;gap:var(--small-4px);align-items:center}.d-flex{display:flex}.chip-container{display:flex;flex-wrap:wrap;align-items:center;gap:4px;width:100%;min-height:20px}.chip-input{border:none;outline:none;background:transparent;flex:1;min-width:60px;font-size:14px;font-family:inherit;color:inherit}.chip-input::placeholder{color:var(--text-medium-emphasis, #6D6979)}.chip-container sa-chip{margin:2px 0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.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: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormlyModule }, { kind: "component", type: IconComponent, selector: "sa-icon", inputs: ["img", "icon", "size", "color", "iconPath", "iconUrl", "customClass", "href", "hrefTarget", "iconPosition"], outputs: ["onClickEvent"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: ChipsComponent, selector: "sa-chip", inputs: ["id", "iconPath", "text", "type", "state", "filling", "iconPosition", "largeStateIcon", "largeStateText", "tooltip", "className"], outputs: ["onClickEvent"] }] }); }
2243
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.4", type: FormInputComponent, isStandalone: true, selector: "sa-input", inputs: { icon: "icon", params: "params" }, viewQueries: [{ propertyName: "formInput", first: true, predicate: ["formInput"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"sa-input-container {{props?.['inputContainerClass']}}\" [ngStyle]=\"{'gap': getLabelFieldGap()}\">\r\n @if (!!props?.['bigLabel'] || !!props?.['bigDescription']) {\r\n <div class=\"sa-input-big-label-container\" [ngClass]=\"disabled ? 'disabled' : '' \">\r\n <h2 class=\"sa-input-big-label\">\r\n {{props?.['bigLabel']}}\r\n </h2>\r\n <p class=\"sa-input-big-description\">\r\n {{props?.['bigDescription']}}\r\n </p>\r\n </div>\r\n }\r\n @if(!!props?.['label']){\r\n <div class=\"sa-input-label-container\" [ngClass]=\"disabled ? 'disabled' : '' \">\r\n <div class=\"sa-input-label-tooltip-container\">\r\n <span class=\"sa-input-label\">\r\n {{props?.['label']}}\r\n </span>\r\n @if(!!props?.['tooltip']){\r\n <span class=\"tooltip-container\">\r\n <sa-icon [icon]=\"props?.['tooltipIcon'] || 'infoCircleOutlined'\" customClass=\"info-icon\"\r\n [matTooltip]=\"props?.['tooltip']\" matTooltipClass=\"custom-tooltip\" class=\"tooltip-icon d-flex\"\r\n [size]=\"props?.['tooltipIconSize'] || '20'\"></sa-icon>\r\n </span>\r\n }\r\n </div>\r\n @if(!!props?.['description']) {\r\n <p class=\"sa-input-description\">\r\n {{props?.['description']}}\r\n </p>\r\n }\r\n </div>\r\n }\r\n <div class=\"sa-input\" [ngClass]=\"disabled ? 'disabled' : '' \">\r\n @if((pretext || (!!inputVal?.length && (!!params?.placeholder || !!props?.placeholder))) && props?.['showTag']\r\n !== false){\r\n <span class=\"sa-input-tag\">{{params?.placeholder || props?.placeholder}}</span>\r\n }\r\n <div class=\"sa-input-field\" [ngClass]=\"formControl.invalid && formControl.touched ? 'invalid' : 'idle' \"\r\n (click)=\"onInputFieldClick($event)\">\r\n @if(pretext){\r\n <div class=\"sa-input-pretext\">\r\n {{pretext}}\r\n </div>\r\n }\r\n\r\n <!-- Multi-value chip display -->\r\n @if(isMultiValue) {\r\n <div class=\"chip-container\">\r\n <sa-chip \r\n *ngFor=\"let chip of (chipValues || [])?.slice(startInd,startInd+labelLimit) let i = index\"\r\n [text]=\"chip?.value || chip?.label || chip\"\r\n [type]=\"'regular'\"\r\n [state]=\"'primary'\"\r\n [filling]=\"'filled'\"\r\n [iconPosition]=\"'right'\"\r\n [iconPath]=\"'../assets/closeBlueOutlined.svg'\"\r\n (onClickEvent)=\"removeChip(i)\">\r\n </sa-chip>\r\n \r\n <div (click)=\"shiftLabel('clicked')\" class=\"ng-value overflow-label\"\r\n *ngIf=\"(chipValues || []).length > (startInd + labelLimit)\">\r\n <sa-chip [text]=\"'+' + ((chipValues || []).length - (startInd + labelLimit))\" \r\n type=\"regular\" \r\n state=\"primary\" \r\n filling=\"filled\">\r\n </sa-chip>\r\n </div>\r\n\r\n <input\r\n [ngClass]=\"'chip-input'\"\r\n matInput [type]=\"type\"\r\n [disabled]=\"field.props.disabled || false\"\r\n [placeholder]=\"chipValues.length === 0 ? (props?.placeholder || params?.placeholder || '') : ''\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onChipBlur()\"\r\n (input)=\"onChipInputChange($event)\"\r\n (keydown)=\"onChipKeyDown($event)\"\r\n [(ngModel)]=\"currentInputValue\"\r\n #formInput />\r\n </div>\r\n } @else {\r\n <!-- Standard single-value input (backward compatibility) -->\r\n <input\r\n [ngClass]=\"(!!inputVal && (params?.type === 'password' || props?.type === 'password') && icon.name !== 'eyeOff') ? 'masked' : ''\"\r\n matInput [type]=\"type\" value=\"\" [pattern]=\"type==='tel' ? '[0-9]' : '' \"\r\n [disabled]=\"field.props.disabled || false\"\r\n [placeholder]=\"!pretext && props?.placeholder || params?.placeholder || ''\" (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\" (input)=\"onInput($event)\" [(ngModel)]=\"inputVal\" #formInput />\r\n }\r\n\r\n @if(params?.type === 'password'){\r\n <sa-icon class=\"flex\" icon=\"eyeOutlined\" [size]=\"icon.size || '24'\" (click)=\"inputIconClick()\"\r\n [ngClass]=\"!icon.name || icon.name === 'eyeOutlined' ? '' : 'hide'\"></sa-icon>\r\n <sa-icon class=\"flex\" icon=\"eyeOff\" [size]=\"icon.size || '24'\" (click)=\"inputIconClick()\"\r\n [ngClass]=\"icon.name === 'eyeOff' ? '' : 'hide'\"></sa-icon>\r\n }@else if(params?.type === 'email' && icon.show){\r\n <sa-icon class=\"flex\" [icon]=\"icon.name || 'checkCircleOutlined'\" [size]=\"icon.size || '24'\"\r\n (click)=\"inputIconClick()\" [ngClass]=\"showEmailIcon ? '' : 'hide'\"></sa-icon>\r\n }\r\n @else if(icon?.name){\r\n <sa-icon class=\"flex\" [icon]=\"icon.name\" [size]=\"icon?.size || '24'\" [color]=\"icon?.color || ''\"\r\n [ngClass]=\"icon?.show ? '' : 'hide'\"></sa-icon>\r\n }\r\n </div>\r\n @if((!formControl.valid) || (params?.supportText)){\r\n <div class=\"support-label {{formControl.invalid && formControl.touched ? params?.className : ''}}\" [ngClass]=\"[\r\n formControl.invalid && formControl.touched ? 'invalid' : 'idle'\r\n ]\">\r\n <!-- {{!formControl.valid ? inputErrorText : params.supportText}} -->\r\n {{getFormSupportText()}}\r\n </div>\r\n }\r\n </div>\r\n</div>", styles: ["*{--error-red: #e25c61 }.idle{--border: 1px solid var(--grey-50)}.focus{--border: 1px solid var(--primary-300)}.masked{font-size:28px;font-weight:500;padding-top:4px}.disabled .sa-input-field,[disabled]{background-color:#fafafa;cursor:not-allowed}.disabled .sa-input-field input{color:#989da3}.sa-input-field>input,.sa-input-field>input:focus-visible{--border: 1px solid var(--primary-300);border:none;outline:none}.sa-input-field:hover{--border: 1px solid var(--primary-300);--font-color: var(--text-highemphasis)}.sa-input-field sa-icon{color:var(--icon-grey1)}.sa-input-field>input:focus-visible~sa-icon,.sa-input-field:hover sa-icon{color:var(--primary-300)}.sa-input-field.invalid>input,.sa-input-field.invalid sa-icon,.sa-input-field.invalid .sa-input-pretext{color:var(--semantic-error-500, #BD271E)}.sa-input-field.invalid{--border: 1px solid var(--semantic-error-500, #BD271E)}.sa-input-field.invalid sa-icon{--form-email-icon-color: var(--semantic-error-500, #BD271E)}.sa-input-field.idle sa-icon{--form-email-icon-color: #33961F}.sa-input{position:relative;padding:8px 0}.sa-input-pretext{margin-right:2px}.sa-input-field{width:100%;box-sizing:border-box;position:relative;display:inline-flex;padding:0px var(--small-12px);height:40px;justify-content:center;align-items:center;border:var(--border);border-radius:var(--small-4px);font-size:14px;font-style:normal;font-weight:400;line-height:20px;letter-spacing:.25px;--font-color: var(--text-lowemphasis)}.sa-input-field input{width:inherit}.sa-input-tag{position:absolute;background:#fff;padding:2px 6px;top:-1px;left:12px;z-index:2;font-size:11px;font-weight:500;line-height:16px;letter-spacing:.5px;text-align:left;color:var(--text-lowemphasis)}.support-label{font-family:var(--font);font-size:11px;font-style:normal;font-weight:400;line-height:16px;letter-spacing:.5px;color:var(--text-lowemphasis);padding:var(--small-4px) var(--small-16px) 0px var(--small-16px)}.support-label.invalid{color:var(--error-red)}.hide{display:none}.sa-input-big-label-container,.sa-input-label-container{display:flex;flex-direction:column;gap:var(--small-8px, 8px)}.sa-input-big-label{color:var(--text-highemphasis, #1C1B20);font-family:var(--font-roboto, Roboto);font-size:var(--medium-22px, 22px);font-style:normal;font-weight:500;line-height:var(--medium-28px, 28px);margin:0}.sa-input-big-description,.sa-input-description{color:var(--text-mediumemphasis, #6D6979);font-family:var(--font-roboto, Roboto);font-size:var(--small-14px, 14px);font-style:normal;font-weight:400;line-height:var(--medium-20px, 20px);letter-spacing:.25px;margin:0}.sa-input-container{display:flex;flex-direction:column;gap:var(--medium-20px, 20px)}.sa-input-label{color:var(--text-highemphasis, #1B1D20);font-family:var(--font);font-size:var(--small-14px);font-style:normal;font-weight:500;line-height:var(--medium-20px);letter-spacing:.1px}.sa-input-label-tooltip-container{display:flex;gap:var(--small-4px);align-items:center}.d-flex{display:flex}.chip-container{display:flex;flex-wrap:wrap;align-items:center;gap:4px;width:100%;min-height:20px}.chip-input{border:none;outline:none;background:transparent;flex:1;min-width:60px;font-size:14px;font-family:inherit;color:inherit}.chip-input::placeholder{color:var(--text-medium-emphasis, #6D6979)}.chip-container sa-chip{margin:2px 0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.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: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormlyModule }, { kind: "component", type: IconComponent, selector: "sa-icon", inputs: ["img", "icon", "size", "color", "iconPath", "iconUrl", "customClass", "href", "hrefTarget", "iconPosition"], outputs: ["onClickEvent"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: ChipsComponent, selector: "sa-chip", inputs: ["id", "iconPath", "text", "type", "state", "filling", "iconPosition", "largeStateIcon", "largeStateText", "tooltip", "className"], outputs: ["onClickEvent"] }] }); }
2244
2244
  }
2245
2245
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: FormInputComponent, decorators: [{
2246
2246
  type: Component,
@@ -2252,7 +2252,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
2252
2252
  IconComponent,
2253
2253
  MatTooltipModule,
2254
2254
  ChipsComponent
2255
- ], template: "<div class=\"sa-input-container {{props?.['inputContainerClass']}}\" [ngStyle]=\"{'gap': getLabelFieldGap()}\">\r\n @if (!!props?.['bigLabel'] || !!props?.['bigDescription']) {\r\n <div class=\"sa-input-big-label-container\" [ngClass]=\"disabled ? 'disabled' : '' \">\r\n <h2 class=\"sa-input-big-label\">\r\n {{props?.['bigLabel']}}\r\n </h2>\r\n <p class=\"sa-input-big-description\">\r\n {{props?.['bigDescription']}}\r\n </p>\r\n </div>\r\n }\r\n @if(!!props?.['label']){\r\n <div class=\"sa-input-label-container\" [ngClass]=\"disabled ? 'disabled' : '' \">\r\n <div class=\"sa-input-label-tooltip-container\">\r\n <span class=\"sa-input-label\">\r\n {{props?.['label']}}\r\n </span>\r\n @if(!!props?.['tooltip']){\r\n <span class=\"tooltip-container\">\r\n <sa-icon [icon]=\"props?.['tooltipIcon'] || 'infoCircleOutlined'\" customClass=\"info-icon\"\r\n [matTooltip]=\"props?.['tooltip']\" matTooltipClass=\"custom-tooltip\" class=\"tooltip-icon d-flex\"\r\n [size]=\"props?.['tooltipIconSize'] || '20'\"></sa-icon>\r\n </span>\r\n }\r\n </div>\r\n @if(!!props?.['description']) {\r\n <p class=\"sa-input-description\">\r\n {{props?.['description']}}\r\n </p>\r\n }\r\n </div>\r\n }\r\n <div class=\"sa-input\" [ngClass]=\"disabled ? 'disabled' : '' \">\r\n @if((pretext || (!!inputVal?.length && (!!params?.placeholder || !!props?.placeholder))) && props?.['showTag']\r\n !== false){\r\n <span class=\"sa-input-tag\">{{params?.placeholder || props?.placeholder}}</span>\r\n }\r\n <div class=\"sa-input-field\" [ngClass]=\"formControl.invalid && formControl.touched ? 'invalid' : 'idle' \"\r\n (click)=\"onInputFieldClick($event)\">\r\n @if(pretext){\r\n <div class=\"sa-input-pretext\">\r\n {{pretext}}\r\n </div>\r\n }\r\n\r\n <!-- Multi-value chip display -->\r\n @if(isMultiValue) {\r\n <div class=\"chip-container\">\r\n <sa-chip \r\n *ngFor=\"let chip of (chipValues || [])?.slice(startInd,startInd+labelLimit) let i = index\"\r\n [text]=\"chip?.value || chip?.label || chip\"\r\n [type]=\"'regular'\"\r\n [state]=\"'primary'\"\r\n [filling]=\"'filled'\"\r\n [iconPosition]=\"'right'\"\r\n [iconPath]=\"'../assets/closeBlueOutlined.svg'\"\r\n (onClickEvent)=\"removeChip(i)\">\r\n </sa-chip>\r\n \r\n <div (click)=\"shiftLabel('clicked')\" class=\"ng-value overflow-label\"\r\n *ngIf=\"(chipValues || []).length > (startInd + labelLimit)\">\r\n <sa-chip [text]=\"'+' + ((chipValues || []).length - (startInd + labelLimit))\" \r\n type=\"regular\" \r\n state=\"primary\" \r\n filling=\"filled\">\r\n </sa-chip>\r\n </div>\r\n\r\n <input\r\n [ngClass]=\"'chip-input'\"\r\n matInput [type]=\"type\"\r\n [disabled]=\"field.props.disabled || false\"\r\n [placeholder]=\"chipValues.length === 0 ? (props?.placeholder || params?.placeholder || '') : ''\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onChipBlur()\"\r\n (input)=\"onChipInputChange($event)\"\r\n (keydown)=\"onChipKeyDown($event)\"\r\n [(ngModel)]=\"currentInputValue\"\r\n #formInput />\r\n </div>\r\n } @else {\r\n <!-- Standard single-value input (backward compatibility) -->\r\n <input\r\n [ngClass]=\"(!!inputVal && (params?.type === 'password' || props?.type === 'password') && icon.name !== 'eyeOff') ? 'masked' : ''\"\r\n matInput [type]=\"type\" value=\"\" [pattern]=\"type==='tel' ? '[0-9]' : '' \"\r\n [disabled]=\"field.props.disabled || false\"\r\n [placeholder]=\"!pretext && props?.placeholder || params?.placeholder || ''\" (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\" (input)=\"onInput($event)\" [(ngModel)]=\"inputVal\" #formInput />\r\n }\r\n\r\n @if(params?.type === 'password'){\r\n <sa-icon class=\"flex\" icon=\"eyeOutlined\" [size]=\"icon.size || '24'\" (click)=\"inputIconClick()\"\r\n [ngClass]=\"!icon.name || icon.name === 'eyeOutlined' ? '' : 'hide'\"></sa-icon>\r\n <sa-icon class=\"flex\" icon=\"eyeOff\" [size]=\"icon.size || '24'\" (click)=\"inputIconClick()\"\r\n [ngClass]=\"icon.name === 'eyeOff' ? '' : 'hide'\"></sa-icon>\r\n }@else if(params?.type === 'email' && icon.show){\r\n <sa-icon class=\"flex\" [icon]=\"icon.name || 'checkCircleOutlined'\" [size]=\"icon.size || '24'\"\r\n (click)=\"inputIconClick()\" [ngClass]=\"showEmailIcon ? '' : 'hide'\"></sa-icon>\r\n }\r\n @else if(icon?.name){\r\n <sa-icon class=\"flex\" [icon]=\"icon.name\" [size]=\"icon?.size || '24'\" [color]=\"icon?.color || ''\"\r\n [ngClass]=\"icon?.show ? '' : 'hide'\"></sa-icon>\r\n }\r\n </div>\r\n @if((!formControl.valid) || (params?.supportText)){\r\n <div class=\"support-label {{formControl.invalid && formControl.touched ? params?.className : ''}}\" [ngClass]=\"[\r\n formControl.invalid && formControl.touched ? 'invalid' : 'idle'\r\n ]\">\r\n <!-- {{!formControl.valid ? inputErrorText : params.supportText}} -->\r\n {{getFormSupportText()}}\r\n </div>\r\n }\r\n </div>\r\n</div>", styles: ["*{--error-red: #e25c61 }.idle{--border: 1px solid var(--grey-50)}.focus{--border: 1px solid var(--primary-300)}.masked{font-size:28px;font-weight:500;padding-top:4px}.disabled .sa-input-field,[disabled]{background-color:#fafafa;cursor:not-allowed}.disabled .sa-input-field input{color:#989da3}.sa-input-field>input,.sa-input-field>input:focus-visible{--border: 1px solid var(--primary-300);border:none;outline:none}.sa-input-field:hover{--border: 1px solid var(--primary-300);--font-color: var(--text-highemphasis)}.sa-input-field sa-icon{color:var(--icon-grey1)}.sa-input-field>input:focus-visible~sa-icon,.sa-input-field:hover sa-icon{color:var(--primary-300)}.sa-input-field.invalid>input,.sa-input-field.invalid sa-icon,.sa-input-field.invalid .sa-input-pretext{color:#e25c61}.sa-input-field.invalid{--border: 1px solid #e25c61}.sa-input-field.invalid sa-icon{--form-email-icon-color: #e25c61}.sa-input-field.idle sa-icon{--form-email-icon-color: #33961F}.sa-input{position:relative;padding:8px 0}.sa-input-pretext{margin-right:2px}.sa-input-field{width:100%;box-sizing:border-box;position:relative;display:inline-flex;padding:0px var(--small-12px);height:40px;justify-content:center;align-items:center;border:1px solid var(--grey-100, #EAECF0);border-radius:var(--small-4px);font-size:14px;font-style:normal;font-weight:400;line-height:20px;letter-spacing:.25px;--font-color: var(--text-lowemphasis)}.sa-input-field input{width:inherit}.sa-input-tag{position:absolute;background:#fff;padding:2px 6px;top:-1px;left:12px;z-index:2;font-size:11px;font-weight:500;line-height:16px;letter-spacing:.5px;text-align:left;color:var(--text-lowemphasis)}.support-label{font-family:var(--font);font-size:11px;font-style:normal;font-weight:400;line-height:16px;letter-spacing:.5px;color:var(--text-lowemphasis);padding:var(--small-4px) var(--small-16px) 0px var(--small-16px)}.support-label.invalid{color:var(--error-red)}.hide{display:none}.sa-input-big-label-container,.sa-input-label-container{display:flex;flex-direction:column;gap:var(--small-8px, 8px)}.sa-input-big-label{color:var(--text-highemphasis, #1C1B20);font-family:var(--font-roboto, Roboto);font-size:var(--medium-22px, 22px);font-style:normal;font-weight:500;line-height:var(--medium-28px, 28px);margin:0}.sa-input-big-description,.sa-input-description{color:var(--text-mediumemphasis, #6D6979);font-family:var(--font-roboto, Roboto);font-size:var(--small-14px, 14px);font-style:normal;font-weight:400;line-height:var(--medium-20px, 20px);letter-spacing:.25px;margin:0}.sa-input-container{display:flex;flex-direction:column;gap:var(--medium-20px, 20px)}.sa-input-label{color:var(--text-highemphasis, #1B1D20);font-family:var(--font);font-size:var(--small-14px);font-style:normal;font-weight:500;line-height:var(--medium-20px);letter-spacing:.1px}.sa-input-label-tooltip-container{display:flex;gap:var(--small-4px);align-items:center}.d-flex{display:flex}.chip-container{display:flex;flex-wrap:wrap;align-items:center;gap:4px;width:100%;min-height:20px}.chip-input{border:none;outline:none;background:transparent;flex:1;min-width:60px;font-size:14px;font-family:inherit;color:inherit}.chip-input::placeholder{color:var(--text-medium-emphasis, #6D6979)}.chip-container sa-chip{margin:2px 0}\n"] }]
2255
+ ], template: "<div class=\"sa-input-container {{props?.['inputContainerClass']}}\" [ngStyle]=\"{'gap': getLabelFieldGap()}\">\r\n @if (!!props?.['bigLabel'] || !!props?.['bigDescription']) {\r\n <div class=\"sa-input-big-label-container\" [ngClass]=\"disabled ? 'disabled' : '' \">\r\n <h2 class=\"sa-input-big-label\">\r\n {{props?.['bigLabel']}}\r\n </h2>\r\n <p class=\"sa-input-big-description\">\r\n {{props?.['bigDescription']}}\r\n </p>\r\n </div>\r\n }\r\n @if(!!props?.['label']){\r\n <div class=\"sa-input-label-container\" [ngClass]=\"disabled ? 'disabled' : '' \">\r\n <div class=\"sa-input-label-tooltip-container\">\r\n <span class=\"sa-input-label\">\r\n {{props?.['label']}}\r\n </span>\r\n @if(!!props?.['tooltip']){\r\n <span class=\"tooltip-container\">\r\n <sa-icon [icon]=\"props?.['tooltipIcon'] || 'infoCircleOutlined'\" customClass=\"info-icon\"\r\n [matTooltip]=\"props?.['tooltip']\" matTooltipClass=\"custom-tooltip\" class=\"tooltip-icon d-flex\"\r\n [size]=\"props?.['tooltipIconSize'] || '20'\"></sa-icon>\r\n </span>\r\n }\r\n </div>\r\n @if(!!props?.['description']) {\r\n <p class=\"sa-input-description\">\r\n {{props?.['description']}}\r\n </p>\r\n }\r\n </div>\r\n }\r\n <div class=\"sa-input\" [ngClass]=\"disabled ? 'disabled' : '' \">\r\n @if((pretext || (!!inputVal?.length && (!!params?.placeholder || !!props?.placeholder))) && props?.['showTag']\r\n !== false){\r\n <span class=\"sa-input-tag\">{{params?.placeholder || props?.placeholder}}</span>\r\n }\r\n <div class=\"sa-input-field\" [ngClass]=\"formControl.invalid && formControl.touched ? 'invalid' : 'idle' \"\r\n (click)=\"onInputFieldClick($event)\">\r\n @if(pretext){\r\n <div class=\"sa-input-pretext\">\r\n {{pretext}}\r\n </div>\r\n }\r\n\r\n <!-- Multi-value chip display -->\r\n @if(isMultiValue) {\r\n <div class=\"chip-container\">\r\n <sa-chip \r\n *ngFor=\"let chip of (chipValues || [])?.slice(startInd,startInd+labelLimit) let i = index\"\r\n [text]=\"chip?.value || chip?.label || chip\"\r\n [type]=\"'regular'\"\r\n [state]=\"'primary'\"\r\n [filling]=\"'filled'\"\r\n [iconPosition]=\"'right'\"\r\n [iconPath]=\"'../assets/closeBlueOutlined.svg'\"\r\n (onClickEvent)=\"removeChip(i)\">\r\n </sa-chip>\r\n \r\n <div (click)=\"shiftLabel('clicked')\" class=\"ng-value overflow-label\"\r\n *ngIf=\"(chipValues || []).length > (startInd + labelLimit)\">\r\n <sa-chip [text]=\"'+' + ((chipValues || []).length - (startInd + labelLimit))\" \r\n type=\"regular\" \r\n state=\"primary\" \r\n filling=\"filled\">\r\n </sa-chip>\r\n </div>\r\n\r\n <input\r\n [ngClass]=\"'chip-input'\"\r\n matInput [type]=\"type\"\r\n [disabled]=\"field.props.disabled || false\"\r\n [placeholder]=\"chipValues.length === 0 ? (props?.placeholder || params?.placeholder || '') : ''\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onChipBlur()\"\r\n (input)=\"onChipInputChange($event)\"\r\n (keydown)=\"onChipKeyDown($event)\"\r\n [(ngModel)]=\"currentInputValue\"\r\n #formInput />\r\n </div>\r\n } @else {\r\n <!-- Standard single-value input (backward compatibility) -->\r\n <input\r\n [ngClass]=\"(!!inputVal && (params?.type === 'password' || props?.type === 'password') && icon.name !== 'eyeOff') ? 'masked' : ''\"\r\n matInput [type]=\"type\" value=\"\" [pattern]=\"type==='tel' ? '[0-9]' : '' \"\r\n [disabled]=\"field.props.disabled || false\"\r\n [placeholder]=\"!pretext && props?.placeholder || params?.placeholder || ''\" (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\" (input)=\"onInput($event)\" [(ngModel)]=\"inputVal\" #formInput />\r\n }\r\n\r\n @if(params?.type === 'password'){\r\n <sa-icon class=\"flex\" icon=\"eyeOutlined\" [size]=\"icon.size || '24'\" (click)=\"inputIconClick()\"\r\n [ngClass]=\"!icon.name || icon.name === 'eyeOutlined' ? '' : 'hide'\"></sa-icon>\r\n <sa-icon class=\"flex\" icon=\"eyeOff\" [size]=\"icon.size || '24'\" (click)=\"inputIconClick()\"\r\n [ngClass]=\"icon.name === 'eyeOff' ? '' : 'hide'\"></sa-icon>\r\n }@else if(params?.type === 'email' && icon.show){\r\n <sa-icon class=\"flex\" [icon]=\"icon.name || 'checkCircleOutlined'\" [size]=\"icon.size || '24'\"\r\n (click)=\"inputIconClick()\" [ngClass]=\"showEmailIcon ? '' : 'hide'\"></sa-icon>\r\n }\r\n @else if(icon?.name){\r\n <sa-icon class=\"flex\" [icon]=\"icon.name\" [size]=\"icon?.size || '24'\" [color]=\"icon?.color || ''\"\r\n [ngClass]=\"icon?.show ? '' : 'hide'\"></sa-icon>\r\n }\r\n </div>\r\n @if((!formControl.valid) || (params?.supportText)){\r\n <div class=\"support-label {{formControl.invalid && formControl.touched ? params?.className : ''}}\" [ngClass]=\"[\r\n formControl.invalid && formControl.touched ? 'invalid' : 'idle'\r\n ]\">\r\n <!-- {{!formControl.valid ? inputErrorText : params.supportText}} -->\r\n {{getFormSupportText()}}\r\n </div>\r\n }\r\n </div>\r\n</div>", styles: ["*{--error-red: #e25c61 }.idle{--border: 1px solid var(--grey-50)}.focus{--border: 1px solid var(--primary-300)}.masked{font-size:28px;font-weight:500;padding-top:4px}.disabled .sa-input-field,[disabled]{background-color:#fafafa;cursor:not-allowed}.disabled .sa-input-field input{color:#989da3}.sa-input-field>input,.sa-input-field>input:focus-visible{--border: 1px solid var(--primary-300);border:none;outline:none}.sa-input-field:hover{--border: 1px solid var(--primary-300);--font-color: var(--text-highemphasis)}.sa-input-field sa-icon{color:var(--icon-grey1)}.sa-input-field>input:focus-visible~sa-icon,.sa-input-field:hover sa-icon{color:var(--primary-300)}.sa-input-field.invalid>input,.sa-input-field.invalid sa-icon,.sa-input-field.invalid .sa-input-pretext{color:var(--semantic-error-500, #BD271E)}.sa-input-field.invalid{--border: 1px solid var(--semantic-error-500, #BD271E)}.sa-input-field.invalid sa-icon{--form-email-icon-color: var(--semantic-error-500, #BD271E)}.sa-input-field.idle sa-icon{--form-email-icon-color: #33961F}.sa-input{position:relative;padding:8px 0}.sa-input-pretext{margin-right:2px}.sa-input-field{width:100%;box-sizing:border-box;position:relative;display:inline-flex;padding:0px var(--small-12px);height:40px;justify-content:center;align-items:center;border:var(--border);border-radius:var(--small-4px);font-size:14px;font-style:normal;font-weight:400;line-height:20px;letter-spacing:.25px;--font-color: var(--text-lowemphasis)}.sa-input-field input{width:inherit}.sa-input-tag{position:absolute;background:#fff;padding:2px 6px;top:-1px;left:12px;z-index:2;font-size:11px;font-weight:500;line-height:16px;letter-spacing:.5px;text-align:left;color:var(--text-lowemphasis)}.support-label{font-family:var(--font);font-size:11px;font-style:normal;font-weight:400;line-height:16px;letter-spacing:.5px;color:var(--text-lowemphasis);padding:var(--small-4px) var(--small-16px) 0px var(--small-16px)}.support-label.invalid{color:var(--error-red)}.hide{display:none}.sa-input-big-label-container,.sa-input-label-container{display:flex;flex-direction:column;gap:var(--small-8px, 8px)}.sa-input-big-label{color:var(--text-highemphasis, #1C1B20);font-family:var(--font-roboto, Roboto);font-size:var(--medium-22px, 22px);font-style:normal;font-weight:500;line-height:var(--medium-28px, 28px);margin:0}.sa-input-big-description,.sa-input-description{color:var(--text-mediumemphasis, #6D6979);font-family:var(--font-roboto, Roboto);font-size:var(--small-14px, 14px);font-style:normal;font-weight:400;line-height:var(--medium-20px, 20px);letter-spacing:.25px;margin:0}.sa-input-container{display:flex;flex-direction:column;gap:var(--medium-20px, 20px)}.sa-input-label{color:var(--text-highemphasis, #1B1D20);font-family:var(--font);font-size:var(--small-14px);font-style:normal;font-weight:500;line-height:var(--medium-20px);letter-spacing:.1px}.sa-input-label-tooltip-container{display:flex;gap:var(--small-4px);align-items:center}.d-flex{display:flex}.chip-container{display:flex;flex-wrap:wrap;align-items:center;gap:4px;width:100%;min-height:20px}.chip-input{border:none;outline:none;background:transparent;flex:1;min-width:60px;font-size:14px;font-family:inherit;color:inherit}.chip-input::placeholder{color:var(--text-medium-emphasis, #6D6979)}.chip-container sa-chip{margin:2px 0}\n"] }]
2256
2256
  }], ctorParameters: () => [], propDecorators: { formInput: [{
2257
2257
  type: ViewChild,
2258
2258
  args: ['formInput']