ets-fe-ng-sdk 17.0.133 → 17.0.134
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/Shared/components/input/date-input/date-input.component.mjs +3 -3
- package/esm2022/lib/Shared/components/input/input-base.component.mjs +6 -3
- package/esm2022/lib/Shared/components/input/input-basic.component.mjs +3 -3
- package/esm2022/lib/Shared/components/input/input-control.component.mjs +3 -3
- package/esm2022/lib/Shared/components/input/input-td-rf.component.mjs +3 -3
- package/esm2022/lib/Shared/components/input/input.component.mjs +3 -3
- package/fesm2022/ets-fe-ng-sdk.mjs +14 -11
- package/fesm2022/ets-fe-ng-sdk.mjs.map +1 -1
- package/lib/Services/api.service.d.ts +1 -1
- package/lib/Shared/components/info-dialog/info-dialog.component.d.ts +1 -1
- package/lib/Shared/components/input/input-base.component.d.ts +2 -0
- package/package.json +1 -1
|
@@ -155,7 +155,7 @@ export class DateInputComponent {
|
|
|
155
155
|
}
|
|
156
156
|
}
|
|
157
157
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DateInputComponent, deps: [{ token: i1.InputService }, { token: i2.DatePipe }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
158
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.0", type: DateInputComponent, isStandalone: true, selector: "date-input", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null }, inpCl: { classPropertyName: "inpCl", publicName: "inpCl", isSignal: true, isRequired: false, transformFunction: null }, cls: { classPropertyName: "cls", publicName: "cls", isSignal: true, isRequired: false, transformFunction: null }, inputClass: { classPropertyName: "inputClass", publicName: "inputClass", isSignal: true, isRequired: false, transformFunction: null }, valid: { classPropertyName: "valid", publicName: "valid", isSignal: false, isRequired: false, transformFunction: null }, _max: { classPropertyName: "_max", publicName: "max", isSignal: false, isRequired: false, transformFunction: null }, _min: { classPropertyName: "_min", publicName: "min", isSignal: false, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: false, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, debug: { classPropertyName: "debug", publicName: "debug", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, _type: { classPropertyName: "_type", publicName: "type", isSignal: false, isRequired: false, transformFunction: null }, showValidation: { classPropertyName: "showValidation", publicName: "showValidation", isSignal: false, isRequired: false, transformFunction: null }, control: { classPropertyName: "control", publicName: "control", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { valueChanged: "valueChanged" }, viewQueries: [{ propertyName: "matCalendar", first: true, predicate: MatCalendar, descendants: true }], ngImport: i0, template: "<div class=\"customdate {{ cls() }} {{ inputClass() }}\" [ngClass]=\"{ disabled: readonly() || disabled() }\">\n <div class=\"row g-1 w-100\">\n <!-- <div class=\"col overflow-auto hide-scroll-x\" [formGroup]=\"form2\">\n <div class=\"d-flex w-100 align-items-center\" [formGroup]=\"form2\">\n <ng-container *ngFor=\"let item of iS.dateInputChunks;let ci=index\">\n <div [style.width]=\"'auto'||item.width\" class=\" d-flex align-items-center\" *ngIf=\"ci<chunksLength\">\n <span>{{item.seperator}}</span>\n <input noformat class=\"d-i-f\" id=\"{{this.id}}_di_{{item.formControlName}}\" [type]=\"item.type\"\n [formControlName]=\"item.formControlName\" [matTooltipShowDelay]=\"2000\"\n [matTooltip]=\"item.label\" [style.width.ch]=\"item?.length\" [placeholder]=\"item.placeholder\">\n </div>\n </ng-container>\n\n\n </div>\n </div> -->\n <div class=\"col\">\n <input\n class=\"w-100 border-0\"\n [value]=\"formValue()?.formattedValue\"\n (change)=\"iS.formatUserInput($event, form(), showTime(), id())\"\n placeholder=\"dd/mm/yyyy{{ showTime() ? ' hh:mm:ss:aa' : '' }}\"\n [readOnly]=\"disabled()\" />\n <!-- <input class=\"w-100 border-0\" [value]=\"form.controls.formattedValue.value\" (change)=\"formatUserInput()\"\n [readOnly]=\"control?.disabled\" [mat-menu-trigger-for]=\"control?.disabled||readonly?null:picker\"> -->\n </div>\n @if (!disabled() && !readonly()) {\n <div class=\"col-auto\">\n <mat-datepicker-toggle\n matIconSuffix\n [mat-menu-trigger-for]=\"picker\"\n (click)=\"formValue().date ? matCalRef._goToDateInView(formValue().date, 'month') : null\"></mat-datepicker-toggle>\n </div>\n }\n </div>\n</div>\n\n<mat-menu class=\"full-width\" #picker=\"matMenu\" xPosition=\"after\">\n <div class=\"customdate-picker\" [ngClass]=\"{ 'pe-3': showTime() }\" (click)=\"$event.stopPropagation()\">\n <div class=\"row justify-content-center m-0 gy-2\">\n <div class=\"col-lg-auto\">\n <div class=\"calendar-cont\" #calendarCont>\n <mat-calendar\n #matCalRef\n [selected]=\"formValue().date\"\n [maxDate]=\"max()\"\n [minDate]=\"min()\"\n (selectedChange)=\"form().controls.date.patchValue($event)\"></mat-calendar>\n </div>\n </div>\n @if (showTime()) {\n <div class=\"col-lg-auto\">\n <div class=\"time-cont text-center\">\n <div class=\"d-flex align-items-center\">\n <div class=\"border rounded-10 overflow-hidden mx-1\">\n <div class=\"time-options-cont hide-scroll\" [style.height.px]=\"calendarCont.offsetHeight\">\n <div class=\"sticky-top bg-white rounded-10 text-primary\">\n {{ 'HR' | appTranslate | async }}\n </div>\n <mat-button-toggle-group class=\"hide-scroll\" [formControl]=\"form().controls.hours\">\n @for (item of iS.timeHours(); track item) {\n <mat-button-toggle mat-icon-button class=\"rounded-10\" [value]=\"item\">\n {{ item }}\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n </div>\n <div class=\"border rounded-10 overflow-hidden mx-1\">\n <div class=\"time-options-cont hide-scroll\" [style.height.px]=\"calendarCont.offsetHeight\">\n <div class=\"sticky-top bg-white rounded-10 text-primary\">\n {{ 'MIN' | appTranslate | async }}\n </div>\n <mat-button-toggle-group class=\"hide-scroll\" [formControl]=\"form().controls.minutes\">\n @for (item of iS.timeMinutes(); track item) {\n <mat-button-toggle mat-icon-button class=\"rounded-10\" [value]=\"item\">\n {{ item }}\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n </div>\n <div class=\"border rounded-10 overflow-hidden mx-1\">\n <div class=\"time-options-cont hide-scroll\" [style.height.px]=\"calendarCont.offsetHeight\">\n <div class=\"sticky-top bg-white rounded-10 text-primary\">\n {{ 'S' | appTranslate | async }}\n </div>\n <mat-button-toggle-group class=\"hide-scroll\" [formControl]=\"form().controls.seconds\">\n @for (item of iS.timeSeconds(); track item) {\n <mat-button-toggle mat-icon-button class=\"rounded-10\" [value]=\"item\">\n {{ item }}\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n </div>\n <div class=\"border rounded-10 overflow-hidden mx-1\">\n <div class=\"time-options-cont hide-scroll\">\n <mat-button-toggle-group class=\"hide-scroll\" [formControl]=\"form().controls.meridiem\">\n @for (item of iS.timeMeridiem(); track item) {\n <mat-button-toggle mat-icon-button class=\"rounded-10\" [value]=\"item.incrementor\">\n {{ item.label | uppercase }}\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n</mat-menu>\n", styles: ["input:focus-visible{outline:none}input{background-color:transparent!important}.d-i-f{border:none;width:auto;min-width:0;padding:0;text-align:center}:host{--phFC: #484848 !important}:host ::placeholder{text-transform:none;color:var(--phFC)}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: UpperCasePipe, name: "uppercase" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i4.MatCalendar, selector: "mat-calendar", inputs: ["headerComponent", "startAt", "startView", "selected", "minDate", "maxDate", "dateFilter", "dateClass", "comparisonStart", "comparisonEnd", "startDateAccessibleName", "endDateAccessibleName"], outputs: ["selectedChange", "yearSelected", "monthSelected", "viewChanged", "_userSelection", "_userDragDrop"], exportAs: ["matCalendar"] }, { kind: "component", type: i4.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "directive", type: i5.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: TranslatePipe, name: "appTranslate" }, { kind: "ngmodule", type: MatRippleModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatButtonToggleModule }, { kind: "directive", type: i6.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i6.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i7.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "directive", type: i7.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }] }); }
|
|
158
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.0", type: DateInputComponent, isStandalone: true, selector: "date-input", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null }, inpCl: { classPropertyName: "inpCl", publicName: "inpCl", isSignal: true, isRequired: false, transformFunction: null }, cls: { classPropertyName: "cls", publicName: "cls", isSignal: true, isRequired: false, transformFunction: null }, inputClass: { classPropertyName: "inputClass", publicName: "inputClass", isSignal: true, isRequired: false, transformFunction: null }, valid: { classPropertyName: "valid", publicName: "valid", isSignal: false, isRequired: false, transformFunction: null }, _max: { classPropertyName: "_max", publicName: "max", isSignal: false, isRequired: false, transformFunction: null }, _min: { classPropertyName: "_min", publicName: "min", isSignal: false, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: false, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, debug: { classPropertyName: "debug", publicName: "debug", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, _type: { classPropertyName: "_type", publicName: "type", isSignal: false, isRequired: false, transformFunction: null }, showValidation: { classPropertyName: "showValidation", publicName: "showValidation", isSignal: false, isRequired: false, transformFunction: null }, control: { classPropertyName: "control", publicName: "control", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { valueChanged: "valueChanged" }, viewQueries: [{ propertyName: "matCalendar", first: true, predicate: MatCalendar, descendants: true }], ngImport: i0, template: "<div class=\"customdate {{ cls() }} {{ inputClass() }}\" [ngClass]=\"{ disabled: readonly() || disabled() }\">\n <div class=\"row g-1 w-100\">\n <!-- <div class=\"col overflow-auto hide-scroll-x\" [formGroup]=\"form2\">\n <div class=\"d-flex w-100 align-items-center\" [formGroup]=\"form2\">\n <ng-container *ngFor=\"let item of iS.dateInputChunks;let ci=index\">\n <div [style.width]=\"'auto'||item.width\" class=\" d-flex align-items-center\" *ngIf=\"ci<chunksLength\">\n <span>{{item.seperator}}</span>\n <input noformat class=\"d-i-f\" id=\"{{this.id}}_di_{{item.formControlName}}\" [type]=\"item.type\"\n [formControlName]=\"item.formControlName\" [matTooltipShowDelay]=\"2000\"\n [matTooltip]=\"item.label\" [style.width.ch]=\"item?.length\" [placeholder]=\"item.placeholder\">\n </div>\n </ng-container>\n\n\n </div>\n </div> -->\n <div class=\"col\">\n <input\n class=\"w-100 border-0\"\n [value]=\"formValue()?.formattedValue\"\n (change)=\"iS.formatUserInput($event, form(), showTime(), id())\"\n placeholder=\"dd/mm/yyyy{{ showTime() ? ' hh:mm:ss:aa' : '' }}\"\n [readOnly]=\"disabled()\" />\n <!-- <input class=\"w-100 border-0\" [value]=\"form.controls.formattedValue.value\" (change)=\"formatUserInput()\"\n [readOnly]=\"control?.disabled\" [mat-menu-trigger-for]=\"control?.disabled||readonly?null:picker\"> -->\n </div>\n @if (!disabled() && !readonly()) {\n <div class=\"col-auto\">\n <mat-datepicker-toggle\n matIconSuffix\n [mat-menu-trigger-for]=\"picker\"\n (click)=\"formValue()?.date ? matCalRef._goToDateInView(formValue()?.date, 'month') : null\"></mat-datepicker-toggle>\n </div>\n }\n </div>\n</div>\n\n<mat-menu class=\"full-width\" #picker=\"matMenu\" xPosition=\"after\">\n <div class=\"customdate-picker\" [ngClass]=\"{ 'pe-3': showTime() }\" (click)=\"$event.stopPropagation()\">\n <div class=\"row justify-content-center m-0 gy-2\">\n <div class=\"col-lg-auto\">\n <div class=\"calendar-cont\" #calendarCont>\n <mat-calendar\n #matCalRef\n [selected]=\"formValue()?.date\"\n [maxDate]=\"max()\"\n [minDate]=\"min()\"\n (selectedChange)=\"form().controls.date.patchValue($event)\"></mat-calendar>\n </div>\n </div>\n @if (showTime()) {\n <div class=\"col-lg-auto\">\n <div class=\"time-cont text-center\">\n <div class=\"d-flex align-items-center\">\n <div class=\"border rounded-10 overflow-hidden mx-1\">\n <div class=\"time-options-cont hide-scroll\" [style.height.px]=\"calendarCont.offsetHeight\">\n <div class=\"sticky-top bg-white rounded-10 text-primary\">\n {{ 'HR' | appTranslate | async }}\n </div>\n <mat-button-toggle-group class=\"hide-scroll\" [formControl]=\"form().controls.hours\">\n @for (item of iS.timeHours(); track item) {\n <mat-button-toggle mat-icon-button class=\"rounded-10\" [value]=\"item\">\n {{ item }}\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n </div>\n <div class=\"border rounded-10 overflow-hidden mx-1\">\n <div class=\"time-options-cont hide-scroll\" [style.height.px]=\"calendarCont.offsetHeight\">\n <div class=\"sticky-top bg-white rounded-10 text-primary\">\n {{ 'MIN' | appTranslate | async }}\n </div>\n <mat-button-toggle-group class=\"hide-scroll\" [formControl]=\"form().controls.minutes\">\n @for (item of iS.timeMinutes(); track item) {\n <mat-button-toggle mat-icon-button class=\"rounded-10\" [value]=\"item\">\n {{ item }}\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n </div>\n <div class=\"border rounded-10 overflow-hidden mx-1\">\n <div class=\"time-options-cont hide-scroll\" [style.height.px]=\"calendarCont.offsetHeight\">\n <div class=\"sticky-top bg-white rounded-10 text-primary\">\n {{ 'S' | appTranslate | async }}\n </div>\n <mat-button-toggle-group class=\"hide-scroll\" [formControl]=\"form().controls.seconds\">\n @for (item of iS.timeSeconds(); track item) {\n <mat-button-toggle mat-icon-button class=\"rounded-10\" [value]=\"item\">\n {{ item }}\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n </div>\n <div class=\"border rounded-10 overflow-hidden mx-1\">\n <div class=\"time-options-cont hide-scroll\">\n <mat-button-toggle-group class=\"hide-scroll\" [formControl]=\"form().controls.meridiem\">\n @for (item of iS.timeMeridiem(); track item) {\n <mat-button-toggle mat-icon-button class=\"rounded-10\" [value]=\"item.incrementor\">\n {{ item.label | uppercase }}\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n</mat-menu>\n", styles: ["input:focus-visible{outline:none}input{background-color:transparent!important}.d-i-f{border:none;width:auto;min-width:0;padding:0;text-align:center}:host{--phFC: #484848 !important}:host ::placeholder{text-transform:none;color:var(--phFC)}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: UpperCasePipe, name: "uppercase" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i4.MatCalendar, selector: "mat-calendar", inputs: ["headerComponent", "startAt", "startView", "selected", "minDate", "maxDate", "dateFilter", "dateClass", "comparisonStart", "comparisonEnd", "startDateAccessibleName", "endDateAccessibleName"], outputs: ["selectedChange", "yearSelected", "monthSelected", "viewChanged", "_userSelection", "_userDragDrop"], exportAs: ["matCalendar"] }, { kind: "component", type: i4.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "directive", type: i5.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: TranslatePipe, name: "appTranslate" }, { kind: "ngmodule", type: MatRippleModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatButtonToggleModule }, { kind: "directive", type: i6.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i6.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i7.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "directive", type: i7.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }] }); }
|
|
159
159
|
}
|
|
160
160
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DateInputComponent, decorators: [{
|
|
161
161
|
type: Component,
|
|
@@ -182,7 +182,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImpor
|
|
|
182
182
|
NgSwitchDefault,
|
|
183
183
|
ReactiveFormsModule,
|
|
184
184
|
MatMenuModule,
|
|
185
|
-
], template: "<div class=\"customdate {{ cls() }} {{ inputClass() }}\" [ngClass]=\"{ disabled: readonly() || disabled() }\">\n <div class=\"row g-1 w-100\">\n <!-- <div class=\"col overflow-auto hide-scroll-x\" [formGroup]=\"form2\">\n <div class=\"d-flex w-100 align-items-center\" [formGroup]=\"form2\">\n <ng-container *ngFor=\"let item of iS.dateInputChunks;let ci=index\">\n <div [style.width]=\"'auto'||item.width\" class=\" d-flex align-items-center\" *ngIf=\"ci<chunksLength\">\n <span>{{item.seperator}}</span>\n <input noformat class=\"d-i-f\" id=\"{{this.id}}_di_{{item.formControlName}}\" [type]=\"item.type\"\n [formControlName]=\"item.formControlName\" [matTooltipShowDelay]=\"2000\"\n [matTooltip]=\"item.label\" [style.width.ch]=\"item?.length\" [placeholder]=\"item.placeholder\">\n </div>\n </ng-container>\n\n\n </div>\n </div> -->\n <div class=\"col\">\n <input\n class=\"w-100 border-0\"\n [value]=\"formValue()?.formattedValue\"\n (change)=\"iS.formatUserInput($event, form(), showTime(), id())\"\n placeholder=\"dd/mm/yyyy{{ showTime() ? ' hh:mm:ss:aa' : '' }}\"\n [readOnly]=\"disabled()\" />\n <!-- <input class=\"w-100 border-0\" [value]=\"form.controls.formattedValue.value\" (change)=\"formatUserInput()\"\n [readOnly]=\"control?.disabled\" [mat-menu-trigger-for]=\"control?.disabled||readonly?null:picker\"> -->\n </div>\n @if (!disabled() && !readonly()) {\n <div class=\"col-auto\">\n <mat-datepicker-toggle\n matIconSuffix\n [mat-menu-trigger-for]=\"picker\"\n (click)=\"formValue()
|
|
185
|
+
], template: "<div class=\"customdate {{ cls() }} {{ inputClass() }}\" [ngClass]=\"{ disabled: readonly() || disabled() }\">\n <div class=\"row g-1 w-100\">\n <!-- <div class=\"col overflow-auto hide-scroll-x\" [formGroup]=\"form2\">\n <div class=\"d-flex w-100 align-items-center\" [formGroup]=\"form2\">\n <ng-container *ngFor=\"let item of iS.dateInputChunks;let ci=index\">\n <div [style.width]=\"'auto'||item.width\" class=\" d-flex align-items-center\" *ngIf=\"ci<chunksLength\">\n <span>{{item.seperator}}</span>\n <input noformat class=\"d-i-f\" id=\"{{this.id}}_di_{{item.formControlName}}\" [type]=\"item.type\"\n [formControlName]=\"item.formControlName\" [matTooltipShowDelay]=\"2000\"\n [matTooltip]=\"item.label\" [style.width.ch]=\"item?.length\" [placeholder]=\"item.placeholder\">\n </div>\n </ng-container>\n\n\n </div>\n </div> -->\n <div class=\"col\">\n <input\n class=\"w-100 border-0\"\n [value]=\"formValue()?.formattedValue\"\n (change)=\"iS.formatUserInput($event, form(), showTime(), id())\"\n placeholder=\"dd/mm/yyyy{{ showTime() ? ' hh:mm:ss:aa' : '' }}\"\n [readOnly]=\"disabled()\" />\n <!-- <input class=\"w-100 border-0\" [value]=\"form.controls.formattedValue.value\" (change)=\"formatUserInput()\"\n [readOnly]=\"control?.disabled\" [mat-menu-trigger-for]=\"control?.disabled||readonly?null:picker\"> -->\n </div>\n @if (!disabled() && !readonly()) {\n <div class=\"col-auto\">\n <mat-datepicker-toggle\n matIconSuffix\n [mat-menu-trigger-for]=\"picker\"\n (click)=\"formValue()?.date ? matCalRef._goToDateInView(formValue()?.date, 'month') : null\"></mat-datepicker-toggle>\n </div>\n }\n </div>\n</div>\n\n<mat-menu class=\"full-width\" #picker=\"matMenu\" xPosition=\"after\">\n <div class=\"customdate-picker\" [ngClass]=\"{ 'pe-3': showTime() }\" (click)=\"$event.stopPropagation()\">\n <div class=\"row justify-content-center m-0 gy-2\">\n <div class=\"col-lg-auto\">\n <div class=\"calendar-cont\" #calendarCont>\n <mat-calendar\n #matCalRef\n [selected]=\"formValue()?.date\"\n [maxDate]=\"max()\"\n [minDate]=\"min()\"\n (selectedChange)=\"form().controls.date.patchValue($event)\"></mat-calendar>\n </div>\n </div>\n @if (showTime()) {\n <div class=\"col-lg-auto\">\n <div class=\"time-cont text-center\">\n <div class=\"d-flex align-items-center\">\n <div class=\"border rounded-10 overflow-hidden mx-1\">\n <div class=\"time-options-cont hide-scroll\" [style.height.px]=\"calendarCont.offsetHeight\">\n <div class=\"sticky-top bg-white rounded-10 text-primary\">\n {{ 'HR' | appTranslate | async }}\n </div>\n <mat-button-toggle-group class=\"hide-scroll\" [formControl]=\"form().controls.hours\">\n @for (item of iS.timeHours(); track item) {\n <mat-button-toggle mat-icon-button class=\"rounded-10\" [value]=\"item\">\n {{ item }}\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n </div>\n <div class=\"border rounded-10 overflow-hidden mx-1\">\n <div class=\"time-options-cont hide-scroll\" [style.height.px]=\"calendarCont.offsetHeight\">\n <div class=\"sticky-top bg-white rounded-10 text-primary\">\n {{ 'MIN' | appTranslate | async }}\n </div>\n <mat-button-toggle-group class=\"hide-scroll\" [formControl]=\"form().controls.minutes\">\n @for (item of iS.timeMinutes(); track item) {\n <mat-button-toggle mat-icon-button class=\"rounded-10\" [value]=\"item\">\n {{ item }}\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n </div>\n <div class=\"border rounded-10 overflow-hidden mx-1\">\n <div class=\"time-options-cont hide-scroll\" [style.height.px]=\"calendarCont.offsetHeight\">\n <div class=\"sticky-top bg-white rounded-10 text-primary\">\n {{ 'S' | appTranslate | async }}\n </div>\n <mat-button-toggle-group class=\"hide-scroll\" [formControl]=\"form().controls.seconds\">\n @for (item of iS.timeSeconds(); track item) {\n <mat-button-toggle mat-icon-button class=\"rounded-10\" [value]=\"item\">\n {{ item }}\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n </div>\n <div class=\"border rounded-10 overflow-hidden mx-1\">\n <div class=\"time-options-cont hide-scroll\">\n <mat-button-toggle-group class=\"hide-scroll\" [formControl]=\"form().controls.meridiem\">\n @for (item of iS.timeMeridiem(); track item) {\n <mat-button-toggle mat-icon-button class=\"rounded-10\" [value]=\"item.incrementor\">\n {{ item.label | uppercase }}\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n</mat-menu>\n", styles: ["input:focus-visible{outline:none}input{background-color:transparent!important}.d-i-f{border:none;width:auto;min-width:0;padding:0;text-align:center}:host{--phFC: #484848 !important}:host ::placeholder{text-transform:none;color:var(--phFC)}\n"] }]
|
|
186
186
|
}], ctorParameters: () => [{ type: i1.InputService }, { type: i2.DatePipe }], propDecorators: { valueChanged: [{
|
|
187
187
|
type: Output
|
|
188
188
|
}], value: [{
|
|
@@ -208,4 +208,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImpor
|
|
|
208
208
|
type: ViewChild,
|
|
209
209
|
args: [MatCalendar]
|
|
210
210
|
}] } });
|
|
211
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldHMtZmUtbmctc2RrL3NyYy9saWIvU2hhcmVkL2NvbXBvbmVudHMvaW5wdXQvZGF0ZS1pbnB1dC9kYXRlLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9pbnB1dC9kYXRlLWlucHV0L2RhdGUtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwSSxPQUFPLEVBQW1CLFdBQVcsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0csT0FBTyxFQUFFLG1CQUFtQixFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlFLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFB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LG9EQUViLGVBQWUsOEJBQ2YsZUFBZSw4QkFDZixxQkFBcUIsc2hCQUVyQixtQkFBbUIsaU5BQ25CLGFBQWE7OzJGQUtKLGtCQUFrQjtrQkE5QjlCLFNBQVM7K0JBQ0UsWUFBWSxjQUNWLElBQUksV0FDUDt3QkFDUCxTQUFTO3dCQUNULGFBQWE7d0JBQ2IsV0FBVzt3QkFDWCxjQUFjO3dCQUNkLFFBQVE7d0JBQ1IsbUJBQW1CO3dCQUNuQixrQkFBa0I7d0JBQ2xCLGNBQWM7d0JBQ2QsZ0JBQWdCO3dCQUNoQixtQkFBbUI7d0JBQ25CLE9BQU87d0JBQ1AsS0FBSzt3QkFDTCxJQUFJO3dCQUNKLFFBQVE7d0JBQ1IsYUFBYTt3QkFDYixZQUFZO3dCQUNaLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZixxQkFBcUI7d0JBQ3JCLGVBQWU7d0JBQ2YsbUJBQW1CO3dCQUNuQixhQUFhO3FCQUNkO3dHQW1CUyxZQUFZO3NCQUFyQixNQUFNO2dCQUtNLEtBQUs7c0JBQWpCLEtBQUs7Z0JBK0JHLEtBQUs7c0JBQWIsS0FBSztnQkFHRixJQUFJO3NCQURQLEtBQUs7dUJBQUMsS0FBSztnQkFNUixJQUFJO3NCQURQLEtBQUs7dUJBQUMsS0FBSztnQkFLSCxPQUFPO3NCQUFmLEtBQUs7Z0JBSWEsS0FBSztzQkFBdkIsS0FBSzt1QkFBQyxNQUFNO2dCQUtKLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNrQixXQUFXO3NCQUFsQyxTQUFTO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVmlld0NoaWxkLCBpbmplY3QsIGlucHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFzeW5jUGlwZSwgRGF0ZVBpcGUsIE5nQ2xhc3MsIE5nRm9yLCBOZ0lmLCBOZ1N3aXRjaCwgTmdTd2l0Y2hDYXNlLCBOZ1N3aXRjaERlZmF1bHQsIFVwcGVyQ2FzZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdE5hdGl2ZURhdGVNb2R1bGUsIE1hdFJpcHBsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgTWF0Q2FsZW5kYXIsIE1hdERhdGVwaWNrZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBJbnB1dENsYXNzUGlwZSB9IGZyb20gJy4uL2lucHV0cy1waXBlcy5waXBlJztcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcbmltcG9ydCB7IElucHV0U2VydmljZSB9IGZyb20gJy4uL2lucHV0LnNlcnZpY2UnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdEJ1dHRvblRvZ2dsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbi10b2dnbGUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCBmaWx0ZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7IFRyYW5zbGF0ZVBpcGUgfSBmcm9tICcuLi8uLi8uLi9waXBlcy90cmFuc2xhdGUucGlwZSc7XG5pbXBvcnQgeyBJbnB1dFR5cGUgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvaW5kZXgubW9kZWwnO1xuaW1wb3J0IHsgQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29uZmlncy9pbmRleC5jb25maWcnO1xuaW1wb3J0IHsgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RhdGUtaW5wdXQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQXN5bmNQaXBlLFxuICAgIFVwcGVyQ2FzZVBpcGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgSW5wdXRDbGFzc1BpcGUsXG4gICAgRGF0ZVBpcGUsXG4gICAgTWF0RGF0ZXBpY2tlck1vZHVsZSxcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcbiAgICBNYXROYXRpdmVEYXRlTW9kdWxlLFxuICAgIE5nQ2xhc3MsXG4gICAgTmdGb3IsXG4gICAgTmdJZixcbiAgICBOZ1N3aXRjaCxcbiAgICBUcmFuc2xhdGVQaXBlLFxuICAgIE5nU3dpdGNoQ2FzZSxcbiAgICBNYXRSaXBwbGVNb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIE1hdEJ1dHRvblRvZ2dsZU1vZHVsZSxcbiAgICBOZ1N3aXRjaERlZmF1bHQsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBNYXRNZW51TW9kdWxlLFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RhdGUtaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRGF0ZUlucHV0Q29tcG9uZW50IHtcbiAgdHlwZTogc3RyaW5nO1xuICBjaHVua3NMZW5ndGg6IG51bWJlcjtcbiAgcHJvdGVjdGVkIGZvcm0gPSBzaWduYWwoXG4gICAgbmV3IEZvcm1Hcm91cCh7XG4gICAgICBkYXRlOiBuZXcgRm9ybUNvbnRyb2w8RGF0ZT4obnVsbCksXG4gICAgICBob3VyczogbmV3IEZvcm1Db250cm9sPHN0cmluZz4obnVsbCksXG4gICAgICBtaW51dGVzOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nPihudWxsKSxcbiAgICAgIHNlY29uZHM6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmc+KG51bGwpLFxuICAgICAgbWVyaWRpZW06IG5ldyBGb3JtQ29udHJvbDxudW1iZXI+KG51bGwpLFxuICAgICAgZm9ybWF0dGVkVmFsdWU6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmc+KG51bGwpLFxuICAgICAgcmF3VmFsdWU6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmc+KG51bGwpLFxuICAgIH0pLFxuICApO1xuICBwcm90ZWN0ZWQgZm9ybVZhbHVlID0gdG9TaWduYWwodGhpcy5mb3JtKCkudmFsdWVDaGFuZ2VzKTtcbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8eyB0YXJnZXQ6IHsgY2hlY2tlZD86IGJvb2xlYW47IHZhbHVlOiBhbnkgfSB9PigpO1xuICBzaG93VGltZSA9IHNpZ25hbDxib29sZWFuPihudWxsKTtcbiAgc2tpcFBhdGNoRnJvbUNvbnRyb2w6IGJvb2xlYW47XG4gIHNraXBQYXRjaENvbnRyb2w6IGJvb2xlYW47XG4gIGNvbnRyb2xWYWx1ZTogYW55O1xuICBASW5wdXQoKSBzZXQgdmFsdWUodjogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuZGVidWcoKSkgZGVidWdnZXI7XG4gICAgaWYgKHRoaXMuc2tpcFBhdGNoRnJvbUNvbnRyb2wgJiYgdiA9PSB0aGlzLmNvbnRyb2xWYWx1ZSkge1xuICAgICAgdGhpcy5za2lwUGF0Y2hGcm9tQ29udHJvbCA9IGZhbHNlO1xuICAgIH0gZWxzZSBpZiAodikge1xuICAgICAgLy8gZGVidWdnZXI7XG4gICAgICB0aGlzLnNraXBQYXRjaENvbnRyb2wgPSB0cnVlO1xuICAgICAgdGhpcy5mb3JtKCkuY29udHJvbHMuZGF0ZS5wYXRjaFZhbHVlKG5ldyBEYXRlKHYpLCB7IGVtaXRFdmVudDogIXRoaXMuc2hvd1RpbWUgfSk7XG4gICAgICBpZiAoIXRoaXMuc2hvd1RpbWUpIHJldHVybjtcbiAgICAgIGNvbnN0IHRpbWVDb21wID0gdi5zcGxpdCgnVCcpPy5bMV07XG4gICAgICAvLyBpZiAoIXRpbWVDb21wKSByZXR1cm47XG5cbiAgICAgIGlmICh0aGlzLmRlYnVnKCkpIGRlYnVnZ2VyO1xuICAgICAgY29uc3QgW2hvdXJzLCBtaW51dGVzLCBzZWNvbmRzXSA9IHRpbWVDb21wID8gdGltZUNvbXAuc3BsaXQoJzonKSA6IFsnMTInLCAnMDAnLCAnMDAnXTtcbiAgICAgIHRoaXMuZm9ybSgpLnBhdGNoVmFsdWUoe1xuICAgICAgICBob3VyczogKCcwJyArICgraG91cnMgJSAxMikpLnNsaWNlKC0yKSxcbiAgICAgICAgbWludXRlcyxcbiAgICAgICAgc2Vjb25kczogc2Vjb25kcz8uc2xpY2UoMCwgMiksXG4gICAgICAgIG1lcmlkaWVtOiAraG91cnMgPiAxMiA/IDEyIDogMCxcbiAgICAgIH0pO1xuICAgICAgLy8gdGhpcy5tYXRDYWxlbmRhcj8udXBkYXRlVG9kYXlzRGF0ZSgpO1xuICAgICAgLy8gdGhpcy5tYXRDYWxlbmRhcj8uX2dvVG9EYXRlSW5WaWV3KHRoaXMuZm9ybS5jb250cm9scy5kYXRlLnZhbHVlLCdtb250aCcpXG4gICAgfSBlbHNlIGlmICh0aGlzLmZvcm0oKS5jb250cm9scy5mb3JtYXR0ZWRWYWx1ZS52YWx1ZSkge1xuICAgICAgLy8gZGVidWdnZXI7XG4gICAgICAvLyB0aGlzLnNraXBQYXRjaENvbnRyb2wgPSB0cnVlO1xuICAgICAgdGhpcy5mb3JtKCkucmVzZXQoKTtcbiAgICB9XG4gIH1cbiAgaW5wQ2wgPSBpbnB1dDxzdHJpbmc+KCdjb250cm9sLWJnLWdyYXknKTtcbiAgY2xzID0gaW5wdXQ8c3RyaW5nPigpO1xuICBpbnB1dENsYXNzID0gaW5wdXQ8c3RyaW5nPigpO1xuICBASW5wdXQoKSB2YWxpZDogYm9vbGVhbjtcbiAgbWF4ID0gc2lnbmFsPERhdGU+KHVuZGVmaW5lZCk7XG4gIEBJbnB1dCgnbWF4JylcbiAgc2V0IF9tYXgodjogc3RyaW5nIHwgbnVtYmVyKSB7XG4gICAgaWYgKHYpIHRoaXMubWF4LnNldChuZXcgRGF0ZSh2KSk7XG4gIH1cbiAgbWluID0gc2lnbmFsPERhdGU+KHVuZGVmaW5lZCk7XG4gIEBJbnB1dCgnbWluJylcbiAgc2V0IF9taW4odjogc3RyaW5nIHwgbnVtYmVyKSB7XG4gICAgaWYgKHYpIHRoaXMubWluLnNldChuZXcgRGF0ZSh2KSk7XG4gIH1cbiAgaWQgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIEBJbnB1dCgpIGludmFsaWQ6IGJvb2xlYW47XG4gIGRpc2FibGVkID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgZGVidWcgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIEBJbnB1dCgndHlwZScpIHNldCBfdHlwZSh2OiBJbnB1dFR5cGUpIHtcbiAgICB0aGlzLnNob3dUaW1lLnNldCh2ID09ICdkYXRldGltZS1sb2NhbCcpO1xuICAgIHRoaXMudHlwZSA9IHY7XG4gICAgdGhpcy5jaHVua3NMZW5ndGggPSB0aGlzLnNob3dUaW1lID8gdGhpcy5pUy5kYXRlSW5wdXRDaHVua3MubGVuZ3RoIDogdGhpcy5pUy5kYXRlSW5wdXRDaHVua3MuZmluZEluZGV4KCh4KSA9PiB4LmlzVGltZSk7XG4gIH1cbiAgQElucHV0KCkgc2hvd1ZhbGlkYXRpb246IGJvb2xlYW47XG4gIEBJbnB1dCgpIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT47XG4gIEBWaWV3Q2hpbGQoTWF0Q2FsZW5kYXIpIG1hdENhbGVuZGFyOiBNYXRDYWxlbmRhcjxhbnk+O1xuICBzdWJzOiB7IFt4OiBzdHJpbmddOiBTdWJzY3JpcHRpb24gfSA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBpUzogSW5wdXRTZXJ2aWNlLFxuICAgIHB1YmxpYyBkYXRlUGlwZTogRGF0ZVBpcGUsXG4gICkge1xuICAgIHRoaXMuZm9ybWF0dGVyRnVuY3Rpb24oKTtcbiAgfVxuICBmb3JtYXR0ZXJGdW5jdGlvbiA9ICgpID0+IHtcbiAgICB0aGlzLmZvcm0oKS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh7IGZvcm1hdHRlZFZhbHVlLCAuLi5jaGFuZ2UgfSkgPT4ge1xuICAgICAgaWYgKHRoaXMuZGVidWcoKSkgZGVidWdnZXI7XG4gICAgICBpZiAoIU9iamVjdC52YWx1ZXMoY2hhbmdlKS5maWx0ZXIoKHgpID0+IHggIT0gbnVsbCkubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuY29udHJvbD8ucmVzZXQoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IGRhdGUsIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzLCBtZXJpZGllbSB9ID0gY2hhbmdlO1xuICAgICAgaWYgKCFkYXRlKSByZXR1cm47XG4gICAgICBjb25zdCBbZGF5U3RyLCBzaG9ydE1vbnRoLCBkYXksIHllYXJdID0gZGF0ZS50b0RhdGVTdHJpbmcoKS5zcGxpdCgnICcpO1xuICAgICAgY29uc3QgZGF0ZUlTT1N0cmluZyA9IGAke3llYXJ9LSR7Q29uZmlnLk1vbnRoc1tkYXRlPy5nZXRNb250aCgpXT8uaXNvU3RyfS0ke2RheX1gO1xuICAgICAgLy8gZGVidWdnZXI7XG4gICAgICB0aGlzLnNraXBQYXRjaEZyb21Db250cm9sID0gdHJ1ZTtcbiAgICAgIGlmICh0aGlzLnNraXBQYXRjaENvbnRyb2wpIHtcbiAgICAgICAgdGhpcy5za2lwUGF0Y2hDb250cm9sID0gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhcbiAgICAgICAgLy8gICBkYXRlLFxuICAgICAgICAvLyAgIGhvdXJzLFxuICAgICAgICAvLyAgIG1pbnV0ZXMsXG4gICAgICAgIC8vICAgc2Vjb25kcyxcbiAgICAgICAgLy8gICBtZXJpZGllbSxcbiAgICAgICAgLy8gICB0aGlzLnNob3dUaW1lLFxuICAgICAgICAvLyAgIGRhdGVJU09TdHJpbmcgK1xuICAgICAgICAvLyAgICAgYFQkeygnMCcgKyAoKCtob3VycyAlIDEyKSArIG1lcmlkaWVtKSkuc2xpY2UoLTIpIHx8ICcwMCd9OiR7bWludXRlcyB8fCAnMDAnfToke1xuICAgICAgICAvLyAgICAgICBzZWNvbmRzIHx8ICcwMCdcbiAgICAgICAgLy8gICAgIH1gXG4gICAgICAgIC8vICk7XG4gICAgICAgIGlmICh0aGlzLnNob3dUaW1lKVxuICAgICAgICAgIHRoaXMuY29udHJvbC5wYXRjaFZhbHVlKGRhdGVJU09TdHJpbmcgKyBgVCR7KCcwJyArICgoK2hvdXJzICUgMTIpICsgbWVyaWRpZW0pKS5zbGljZSgtMikgfHwgJzAwJ306JHttaW51dGVzIHx8ICcwMCd9OiR7c2Vjb25kcyB8fCAnMDAnfWApO1xuICAgICAgICBlbHNlIHRoaXMuY29udHJvbC5wYXRjaFZhbHVlKGRhdGVJU09TdHJpbmcpO1xuICAgICAgICB0aGlzLmNvbnRyb2xWYWx1ZSA9IHRoaXMuY29udHJvbC52YWx1ZTtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZWQuZW1pdCh7IHRhcmdldDogeyB2YWx1ZTogdGhpcy5jb250cm9sLnZhbHVlIH0gfSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZm9ybSgpLmNvbnRyb2xzLmZvcm1hdHRlZFZhbHVlLnBhdGNoVmFsdWUoXG4gICAgICAgIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHRoaXMuY29udHJvbFZhbHVlIHx8IGRhdGUsIGBNTU0uIGRkLCB5eXl5JHt0aGlzLnNob3dUaW1lID8gJy4gaGg6bW06c3MgYScgOiAnJ31gKSxcbiAgICAgICAge1xuICAgICAgICAgIGVtaXRFdmVudDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICApO1xuICAgIH0pO1xuICB9O1xuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAvL0NhbGxlZCBvbmNlLCBiZWZvcmUgdGhlIGluc3RhbmNlIGlzIGRlc3Ryb3llZC5cbiAgICAvL0FkZCAnaW1wbGVtZW50cyBPbkRlc3Ryb3knIHRvIHRoZSBjbGFzcy5cbiAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLnN1YnMgfHwge30pIHtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5zdWJzLCBrZXkpKSB7XG4gICAgICAgIHRoaXMuc3Vicz8uW2tleV0/LnVuc3Vic2NyaWJlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAvL0NhbGxlZCBhZnRlciBuZ0FmdGVyQ29udGVudEluaXQgd2hlbiB0aGUgY29tcG9uZW50J3MgdmlldyBoYXMgYmVlbiBpbml0aWFsaXplZC4gQXBwbGllcyB0byBjb21wb25lbnRzIG9ubHkuXG4gICAgLy9BZGQgJ2ltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCcgdG8gdGhlIGNsYXNzLlxuICAgIC8vIGRlYnVnZ2VyO1xuICAgIGlmICh0aGlzLmZvcm1WYWx1ZSgpLmRhdGUpIHtcbiAgICAgIHRoaXMubWF0Q2FsZW5kYXIuYWN0aXZlRGF0ZSA9IG5ldyBEYXRlKHRoaXMuZm9ybVZhbHVlKCkuZGF0ZSk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY3VzdG9tZGF0ZSB7eyBjbHMoKSB9fSB7eyBpbnB1dENsYXNzKCkgfX1cIiBbbmdDbGFzc109XCJ7IGRpc2FibGVkOiByZWFkb25seSgpIHx8IGRpc2FibGVkKCkgfVwiPlxuICA8ZGl2IGNsYXNzPVwicm93IGctMSB3LTEwMFwiPlxuICAgIDwhLS0gPGRpdiBjbGFzcz1cImNvbCBvdmVyZmxvdy1hdXRvIGhpZGUtc2Nyb2xsLXhcIiBbZm9ybUdyb3VwXT1cImZvcm0yXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IHctMTAwIGFsaWduLWl0ZW1zLWNlbnRlclwiIFtmb3JtR3JvdXBdPVwiZm9ybTJcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGlTLmRhdGVJbnB1dENodW5rcztsZXQgY2k9aW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBbc3R5bGUud2lkdGhdPVwiJ2F1dG8nfHxpdGVtLndpZHRoXCIgY2xhc3M9XCIgIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIiAqbmdJZj1cImNpPGNodW5rc0xlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tpdGVtLnNlcGVyYXRvcn19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5vZm9ybWF0IGNsYXNzPVwiZC1pLWZcIiBpZD1cInt7dGhpcy5pZH19X2RpX3t7aXRlbS5mb3JtQ29udHJvbE5hbWV9fVwiIFt0eXBlXT1cIml0ZW0udHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJpdGVtLmZvcm1Db250cm9sTmFtZVwiIFttYXRUb29sdGlwU2hvd0RlbGF5XT1cIjIwMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIml0ZW0ubGFiZWxcIiBbc3R5bGUud2lkdGguY2hdPVwiaXRlbT8ubGVuZ3RoXCIgW3BsYWNlaG9sZGVyXT1cIml0ZW0ucGxhY2Vob2xkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cblxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PiAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICA8aW5wdXRcbiAgICAgICAgY2xhc3M9XCJ3LTEwMCBib3JkZXItMFwiXG4gICAgICAgIFt2YWx1ZV09XCJmb3JtVmFsdWUoKT8uZm9ybWF0dGVkVmFsdWVcIlxuICAgICAgICAoY2hhbmdlKT1cImlTLmZvcm1hdFVzZXJJbnB1dCgkZXZlbnQsIGZvcm0oKSwgc2hvd1RpbWUoKSwgaWQoKSlcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cImRkL21tL3l5eXl7eyBzaG93VGltZSgpID8gJyBoaDptbTpzczphYScgOiAnJyB9fVwiXG4gICAgICAgIFtyZWFkT25seV09XCJkaXNhYmxlZCgpXCIgLz5cbiAgICAgIDwhLS0gPGlucHV0IGNsYXNzPVwidy0xMDAgYm9yZGVyLTBcIiBbdmFsdWVdPVwiZm9ybS5jb250cm9scy5mb3JtYXR0ZWRWYWx1ZS52YWx1ZVwiIChjaGFuZ2UpPVwiZm9ybWF0VXNlcklucHV0KClcIlxuICAgICAgICAgICAgICAgIFtyZWFkT25seV09XCJjb250cm9sPy5kaXNhYmxlZFwiIFttYXQtbWVudS10cmlnZ2VyLWZvcl09XCJjb250cm9sPy5kaXNhYmxlZHx8cmVhZG9ubHk/bnVsbDpwaWNrZXJcIj4gLS0+XG4gICAgPC9kaXY+XG4gICAgQGlmICghZGlzYWJsZWQoKSAmJiAhcmVhZG9ubHkoKSkge1xuICAgICAgPGRpdiBjbGFzcz1cImNvbC1hdXRvXCI+XG4gICAgICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGVcbiAgICAgICAgICBtYXRJY29uU3VmZml4XG4gICAgICAgICAgW21hdC1tZW51LXRyaWdnZXItZm9yXT1cInBpY2tlclwiXG4gICAgICAgICAgKGNsaWNrKT1cImZvcm1WYWx1ZSgpLmRhdGUgPyBtYXRDYWxSZWYuX2dvVG9EYXRlSW5WaWV3KGZvcm1WYWx1ZSgpLmRhdGUsICdtb250aCcpIDogbnVsbFwiPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxuICAgICAgPC9kaXY+XG4gICAgfVxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bWF0LW1lbnUgY2xhc3M9XCJmdWxsLXdpZHRoXCIgI3BpY2tlcj1cIm1hdE1lbnVcIiB4UG9zaXRpb249XCJhZnRlclwiPlxuICA8ZGl2IGNsYXNzPVwiY3VzdG9tZGF0ZS1waWNrZXJcIiBbbmdDbGFzc109XCJ7ICdwZS0zJzogc2hvd1RpbWUoKSB9XCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuICAgIDxkaXYgY2xhc3M9XCJyb3cganVzdGlmeS1jb250ZW50LWNlbnRlciBtLTAgZ3ktMlwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy1hdXRvXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1jb250XCIgI2NhbGVuZGFyQ29udD5cbiAgICAgICAgICA8bWF0LWNhbGVuZGFyXG4gICAgICAgICAgICAjbWF0Q2FsUmVmXG4gICAgICAgICAgICBbc2VsZWN0ZWRdPVwiZm9ybVZhbHVlKCkuZGF0ZVwiXG4gICAgICAgICAgICBbbWF4RGF0ZV09XCJtYXgoKVwiXG4gICAgICAgICAgICBbbWluRGF0ZV09XCJtaW4oKVwiXG4gICAgICAgICAgICAoc2VsZWN0ZWRDaGFuZ2UpPVwiZm9ybSgpLmNvbnRyb2xzLmRhdGUucGF0Y2hWYWx1ZSgkZXZlbnQpXCI+PC9tYXQtY2FsZW5kYXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICBAaWYgKHNob3dUaW1lKCkpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy1hdXRvXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtY29udCB0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlciByb3VuZGVkLTEwIG92ZXJmbG93LWhpZGRlbiBteC0xXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtb3B0aW9ucy1jb250IGhpZGUtc2Nyb2xsXCIgW3N0eWxlLmhlaWdodC5weF09XCJjYWxlbmRhckNvbnQub2Zmc2V0SGVpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RpY2t5LXRvcCBiZy13aGl0ZSByb3VuZGVkLTEwIHRleHQtcHJpbWFyeVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyAnSFInIHwgYXBwVHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlLWdyb3VwIGNsYXNzPVwiaGlkZS1zY3JvbGxcIiBbZm9ybUNvbnRyb2xdPVwiZm9ybSgpLmNvbnRyb2xzLmhvdXJzXCI+XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgaVMudGltZUhvdXJzKCk7IHRyYWNrIGl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgbWF0LWljb24tYnV0dG9uIGNsYXNzPVwicm91bmRlZC0xMFwiIFt2YWx1ZV09XCJpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgcm91bmRlZC0xMCBvdmVyZmxvdy1oaWRkZW4gbXgtMVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lLW9wdGlvbnMtY29udCBoaWRlLXNjcm9sbFwiIFtzdHlsZS5oZWlnaHQucHhdPVwiY2FsZW5kYXJDb250Lm9mZnNldEhlaWdodFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0aWNreS10b3AgYmctd2hpdGUgcm91bmRlZC0xMCB0ZXh0LXByaW1hcnlcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgJ01JTicgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAgY2xhc3M9XCJoaWRlLXNjcm9sbFwiIFtmb3JtQ29udHJvbF09XCJmb3JtKCkuY29udHJvbHMubWludXRlc1wiPlxuICAgICAgICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIGlTLnRpbWVNaW51dGVzKCk7IHRyYWNrIGl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgbWF0LWljb24tYnV0dG9uIGNsYXNzPVwicm91bmRlZC0xMFwiIFt2YWx1ZV09XCJpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgcm91bmRlZC0xMCBvdmVyZmxvdy1oaWRkZW4gbXgtMVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lLW9wdGlvbnMtY29udCBoaWRlLXNjcm9sbFwiIFtzdHlsZS5oZWlnaHQucHhdPVwiY2FsZW5kYXJDb250Lm9mZnNldEhlaWdodFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0aWNreS10b3AgYmctd2hpdGUgcm91bmRlZC0xMCB0ZXh0LXByaW1hcnlcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgJ1MnIHwgYXBwVHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlLWdyb3VwIGNsYXNzPVwiaGlkZS1zY3JvbGxcIiBbZm9ybUNvbnRyb2xdPVwiZm9ybSgpLmNvbnRyb2xzLnNlY29uZHNcIj5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBpUy50aW1lU2Vjb25kcygpOyB0cmFjayBpdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIG1hdC1pY29uLWJ1dHRvbiBjbGFzcz1cInJvdW5kZWQtMTBcIiBbdmFsdWVdPVwiaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbSB9fVxuICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXA+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyIHJvdW5kZWQtMTAgb3ZlcmZsb3ctaGlkZGVuIG14LTFcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGltZS1vcHRpb25zLWNvbnQgaGlkZS1zY3JvbGxcIj5cbiAgICAgICAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZS1ncm91cCBjbGFzcz1cImhpZGUtc2Nyb2xsXCIgW2Zvcm1Db250cm9sXT1cImZvcm0oKS5jb250cm9scy5tZXJpZGllbVwiPlxuICAgICAgICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIGlTLnRpbWVNZXJpZGllbSgpOyB0cmFjayBpdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIG1hdC1pY29uLWJ1dHRvbiBjbGFzcz1cInJvdW5kZWQtMTBcIiBbdmFsdWVdPVwiaXRlbS5pbmNyZW1lbnRvclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5sYWJlbCB8IHVwcGVyY2FzZSB9fVxuICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXA+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbWF0LW1lbnU+XG4iXX0=
|
|
211
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldHMtZmUtbmctc2RrL3NyYy9saWIvU2hhcmVkL2NvbXBvbmVudHMvaW5wdXQvZGF0ZS1pbnB1dC9kYXRlLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9pbnB1dC9kYXRlLWlucHV0L2RhdGUtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwSSxPQUFPLEVBQW1CLFdBQVcsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0csT0FBTyxFQUFFLG1CQUFtQixFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlFLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFB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LG9EQUViLGVBQWUsOEJBQ2YsZUFBZSw4QkFDZixxQkFBcUIsc2hCQUVyQixtQkFBbUIsaU5BQ25CLGFBQWE7OzJGQUtKLGtCQUFrQjtrQkE5QjlCLFNBQVM7K0JBQ0UsWUFBWSxjQUNWLElBQUksV0FDUDt3QkFDUCxTQUFTO3dCQUNULGFBQWE7d0JBQ2IsV0FBVzt3QkFDWCxjQUFjO3dCQUNkLFFBQVE7d0JBQ1IsbUJBQW1CO3dCQUNuQixrQkFBa0I7d0JBQ2xCLGNBQWM7d0JBQ2QsZ0JBQWdCO3dCQUNoQixtQkFBbUI7d0JBQ25CLE9BQU87d0JBQ1AsS0FBSzt3QkFDTCxJQUFJO3dCQUNKLFFBQVE7d0JBQ1IsYUFBYTt3QkFDYixZQUFZO3dCQUNaLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZixxQkFBcUI7d0JBQ3JCLGVBQWU7d0JBQ2YsbUJBQW1CO3dCQUNuQixhQUFhO3FCQUNkO3dHQW1CUyxZQUFZO3NCQUFyQixNQUFNO2dCQUtNLEtBQUs7c0JBQWpCLEtBQUs7Z0JBK0JHLEtBQUs7c0JBQWIsS0FBSztnQkFHRixJQUFJO3NCQURQLEtBQUs7dUJBQUMsS0FBSztnQkFNUixJQUFJO3NCQURQLEtBQUs7dUJBQUMsS0FBSztnQkFLSCxPQUFPO3NCQUFmLEtBQUs7Z0JBSWEsS0FBSztzQkFBdkIsS0FBSzt1QkFBQyxNQUFNO2dCQUtKLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNrQixXQUFXO3NCQUFsQyxTQUFTO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVmlld0NoaWxkLCBpbmplY3QsIGlucHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFzeW5jUGlwZSwgRGF0ZVBpcGUsIE5nQ2xhc3MsIE5nRm9yLCBOZ0lmLCBOZ1N3aXRjaCwgTmdTd2l0Y2hDYXNlLCBOZ1N3aXRjaERlZmF1bHQsIFVwcGVyQ2FzZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdE5hdGl2ZURhdGVNb2R1bGUsIE1hdFJpcHBsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgTWF0Q2FsZW5kYXIsIE1hdERhdGVwaWNrZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBJbnB1dENsYXNzUGlwZSB9IGZyb20gJy4uL2lucHV0cy1waXBlcy5waXBlJztcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcbmltcG9ydCB7IElucHV0U2VydmljZSB9IGZyb20gJy4uL2lucHV0LnNlcnZpY2UnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdEJ1dHRvblRvZ2dsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbi10b2dnbGUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCBmaWx0ZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7IFRyYW5zbGF0ZVBpcGUgfSBmcm9tICcuLi8uLi8uLi9waXBlcy90cmFuc2xhdGUucGlwZSc7XG5pbXBvcnQgeyBJbnB1dFR5cGUgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvaW5kZXgubW9kZWwnO1xuaW1wb3J0IHsgQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29uZmlncy9pbmRleC5jb25maWcnO1xuaW1wb3J0IHsgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RhdGUtaW5wdXQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQXN5bmNQaXBlLFxuICAgIFVwcGVyQ2FzZVBpcGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgSW5wdXRDbGFzc1BpcGUsXG4gICAgRGF0ZVBpcGUsXG4gICAgTWF0RGF0ZXBpY2tlck1vZHVsZSxcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcbiAgICBNYXROYXRpdmVEYXRlTW9kdWxlLFxuICAgIE5nQ2xhc3MsXG4gICAgTmdGb3IsXG4gICAgTmdJZixcbiAgICBOZ1N3aXRjaCxcbiAgICBUcmFuc2xhdGVQaXBlLFxuICAgIE5nU3dpdGNoQ2FzZSxcbiAgICBNYXRSaXBwbGVNb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIE1hdEJ1dHRvblRvZ2dsZU1vZHVsZSxcbiAgICBOZ1N3aXRjaERlZmF1bHQsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBNYXRNZW51TW9kdWxlLFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RhdGUtaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRGF0ZUlucHV0Q29tcG9uZW50IHtcbiAgdHlwZTogc3RyaW5nO1xuICBjaHVua3NMZW5ndGg6IG51bWJlcjtcbiAgcHJvdGVjdGVkIGZvcm0gPSBzaWduYWwoXG4gICAgbmV3IEZvcm1Hcm91cCh7XG4gICAgICBkYXRlOiBuZXcgRm9ybUNvbnRyb2w8RGF0ZT4obnVsbCksXG4gICAgICBob3VyczogbmV3IEZvcm1Db250cm9sPHN0cmluZz4obnVsbCksXG4gICAgICBtaW51dGVzOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nPihudWxsKSxcbiAgICAgIHNlY29uZHM6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmc+KG51bGwpLFxuICAgICAgbWVyaWRpZW06IG5ldyBGb3JtQ29udHJvbDxudW1iZXI+KG51bGwpLFxuICAgICAgZm9ybWF0dGVkVmFsdWU6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmc+KG51bGwpLFxuICAgICAgcmF3VmFsdWU6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmc+KG51bGwpLFxuICAgIH0pLFxuICApO1xuICBwcm90ZWN0ZWQgZm9ybVZhbHVlID0gdG9TaWduYWwodGhpcy5mb3JtKCkudmFsdWVDaGFuZ2VzKTtcbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8eyB0YXJnZXQ6IHsgY2hlY2tlZD86IGJvb2xlYW47IHZhbHVlOiBhbnkgfSB9PigpO1xuICBzaG93VGltZSA9IHNpZ25hbDxib29sZWFuPihudWxsKTtcbiAgc2tpcFBhdGNoRnJvbUNvbnRyb2w6IGJvb2xlYW47XG4gIHNraXBQYXRjaENvbnRyb2w6IGJvb2xlYW47XG4gIGNvbnRyb2xWYWx1ZTogYW55O1xuICBASW5wdXQoKSBzZXQgdmFsdWUodjogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuZGVidWcoKSkgZGVidWdnZXI7XG4gICAgaWYgKHRoaXMuc2tpcFBhdGNoRnJvbUNvbnRyb2wgJiYgdiA9PSB0aGlzLmNvbnRyb2xWYWx1ZSkge1xuICAgICAgdGhpcy5za2lwUGF0Y2hGcm9tQ29udHJvbCA9IGZhbHNlO1xuICAgIH0gZWxzZSBpZiAodikge1xuICAgICAgLy8gZGVidWdnZXI7XG4gICAgICB0aGlzLnNraXBQYXRjaENvbnRyb2wgPSB0cnVlO1xuICAgICAgdGhpcy5mb3JtKCkuY29udHJvbHMuZGF0ZS5wYXRjaFZhbHVlKG5ldyBEYXRlKHYpLCB7IGVtaXRFdmVudDogIXRoaXMuc2hvd1RpbWUgfSk7XG4gICAgICBpZiAoIXRoaXMuc2hvd1RpbWUpIHJldHVybjtcbiAgICAgIGNvbnN0IHRpbWVDb21wID0gdi5zcGxpdCgnVCcpPy5bMV07XG4gICAgICAvLyBpZiAoIXRpbWVDb21wKSByZXR1cm47XG5cbiAgICAgIGlmICh0aGlzLmRlYnVnKCkpIGRlYnVnZ2VyO1xuICAgICAgY29uc3QgW2hvdXJzLCBtaW51dGVzLCBzZWNvbmRzXSA9IHRpbWVDb21wID8gdGltZUNvbXAuc3BsaXQoJzonKSA6IFsnMTInLCAnMDAnLCAnMDAnXTtcbiAgICAgIHRoaXMuZm9ybSgpLnBhdGNoVmFsdWUoe1xuICAgICAgICBob3VyczogKCcwJyArICgraG91cnMgJSAxMikpLnNsaWNlKC0yKSxcbiAgICAgICAgbWludXRlcyxcbiAgICAgICAgc2Vjb25kczogc2Vjb25kcz8uc2xpY2UoMCwgMiksXG4gICAgICAgIG1lcmlkaWVtOiAraG91cnMgPiAxMiA/IDEyIDogMCxcbiAgICAgIH0pO1xuICAgICAgLy8gdGhpcy5tYXRDYWxlbmRhcj8udXBkYXRlVG9kYXlzRGF0ZSgpO1xuICAgICAgLy8gdGhpcy5tYXRDYWxlbmRhcj8uX2dvVG9EYXRlSW5WaWV3KHRoaXMuZm9ybS5jb250cm9scy5kYXRlLnZhbHVlLCdtb250aCcpXG4gICAgfSBlbHNlIGlmICh0aGlzLmZvcm0oKS5jb250cm9scy5mb3JtYXR0ZWRWYWx1ZS52YWx1ZSkge1xuICAgICAgLy8gZGVidWdnZXI7XG4gICAgICAvLyB0aGlzLnNraXBQYXRjaENvbnRyb2wgPSB0cnVlO1xuICAgICAgdGhpcy5mb3JtKCkucmVzZXQoKTtcbiAgICB9XG4gIH1cbiAgaW5wQ2wgPSBpbnB1dDxzdHJpbmc+KCdjb250cm9sLWJnLWdyYXknKTtcbiAgY2xzID0gaW5wdXQ8c3RyaW5nPigpO1xuICBpbnB1dENsYXNzID0gaW5wdXQ8c3RyaW5nPigpO1xuICBASW5wdXQoKSB2YWxpZDogYm9vbGVhbjtcbiAgbWF4ID0gc2lnbmFsPERhdGU+KHVuZGVmaW5lZCk7XG4gIEBJbnB1dCgnbWF4JylcbiAgc2V0IF9tYXgodjogc3RyaW5nIHwgbnVtYmVyKSB7XG4gICAgaWYgKHYpIHRoaXMubWF4LnNldChuZXcgRGF0ZSh2KSk7XG4gIH1cbiAgbWluID0gc2lnbmFsPERhdGU+KHVuZGVmaW5lZCk7XG4gIEBJbnB1dCgnbWluJylcbiAgc2V0IF9taW4odjogc3RyaW5nIHwgbnVtYmVyKSB7XG4gICAgaWYgKHYpIHRoaXMubWluLnNldChuZXcgRGF0ZSh2KSk7XG4gIH1cbiAgaWQgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIEBJbnB1dCgpIGludmFsaWQ6IGJvb2xlYW47XG4gIGRpc2FibGVkID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgZGVidWcgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIEBJbnB1dCgndHlwZScpIHNldCBfdHlwZSh2OiBJbnB1dFR5cGUpIHtcbiAgICB0aGlzLnNob3dUaW1lLnNldCh2ID09ICdkYXRldGltZS1sb2NhbCcpO1xuICAgIHRoaXMudHlwZSA9IHY7XG4gICAgdGhpcy5jaHVua3NMZW5ndGggPSB0aGlzLnNob3dUaW1lID8gdGhpcy5pUy5kYXRlSW5wdXRDaHVua3MubGVuZ3RoIDogdGhpcy5pUy5kYXRlSW5wdXRDaHVua3MuZmluZEluZGV4KCh4KSA9PiB4LmlzVGltZSk7XG4gIH1cbiAgQElucHV0KCkgc2hvd1ZhbGlkYXRpb246IGJvb2xlYW47XG4gIEBJbnB1dCgpIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT47XG4gIEBWaWV3Q2hpbGQoTWF0Q2FsZW5kYXIpIG1hdENhbGVuZGFyOiBNYXRDYWxlbmRhcjxhbnk+O1xuICBzdWJzOiB7IFt4OiBzdHJpbmddOiBTdWJzY3JpcHRpb24gfSA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBpUzogSW5wdXRTZXJ2aWNlLFxuICAgIHB1YmxpYyBkYXRlUGlwZTogRGF0ZVBpcGUsXG4gICkge1xuICAgIHRoaXMuZm9ybWF0dGVyRnVuY3Rpb24oKTtcbiAgfVxuICBmb3JtYXR0ZXJGdW5jdGlvbiA9ICgpID0+IHtcbiAgICB0aGlzLmZvcm0oKS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh7IGZvcm1hdHRlZFZhbHVlLCAuLi5jaGFuZ2UgfSkgPT4ge1xuICAgICAgaWYgKHRoaXMuZGVidWcoKSkgZGVidWdnZXI7XG4gICAgICBpZiAoIU9iamVjdC52YWx1ZXMoY2hhbmdlKS5maWx0ZXIoKHgpID0+IHggIT0gbnVsbCkubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuY29udHJvbD8ucmVzZXQoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IGRhdGUsIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzLCBtZXJpZGllbSB9ID0gY2hhbmdlO1xuICAgICAgaWYgKCFkYXRlKSByZXR1cm47XG4gICAgICBjb25zdCBbZGF5U3RyLCBzaG9ydE1vbnRoLCBkYXksIHllYXJdID0gZGF0ZS50b0RhdGVTdHJpbmcoKS5zcGxpdCgnICcpO1xuICAgICAgY29uc3QgZGF0ZUlTT1N0cmluZyA9IGAke3llYXJ9LSR7Q29uZmlnLk1vbnRoc1tkYXRlPy5nZXRNb250aCgpXT8uaXNvU3RyfS0ke2RheX1gO1xuICAgICAgLy8gZGVidWdnZXI7XG4gICAgICB0aGlzLnNraXBQYXRjaEZyb21Db250cm9sID0gdHJ1ZTtcbiAgICAgIGlmICh0aGlzLnNraXBQYXRjaENvbnRyb2wpIHtcbiAgICAgICAgdGhpcy5za2lwUGF0Y2hDb250cm9sID0gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhcbiAgICAgICAgLy8gICBkYXRlLFxuICAgICAgICAvLyAgIGhvdXJzLFxuICAgICAgICAvLyAgIG1pbnV0ZXMsXG4gICAgICAgIC8vICAgc2Vjb25kcyxcbiAgICAgICAgLy8gICBtZXJpZGllbSxcbiAgICAgICAgLy8gICB0aGlzLnNob3dUaW1lLFxuICAgICAgICAvLyAgIGRhdGVJU09TdHJpbmcgK1xuICAgICAgICAvLyAgICAgYFQkeygnMCcgKyAoKCtob3VycyAlIDEyKSArIG1lcmlkaWVtKSkuc2xpY2UoLTIpIHx8ICcwMCd9OiR7bWludXRlcyB8fCAnMDAnfToke1xuICAgICAgICAvLyAgICAgICBzZWNvbmRzIHx8ICcwMCdcbiAgICAgICAgLy8gICAgIH1gXG4gICAgICAgIC8vICk7XG4gICAgICAgIGlmICh0aGlzLnNob3dUaW1lKVxuICAgICAgICAgIHRoaXMuY29udHJvbC5wYXRjaFZhbHVlKGRhdGVJU09TdHJpbmcgKyBgVCR7KCcwJyArICgoK2hvdXJzICUgMTIpICsgbWVyaWRpZW0pKS5zbGljZSgtMikgfHwgJzAwJ306JHttaW51dGVzIHx8ICcwMCd9OiR7c2Vjb25kcyB8fCAnMDAnfWApO1xuICAgICAgICBlbHNlIHRoaXMuY29udHJvbC5wYXRjaFZhbHVlKGRhdGVJU09TdHJpbmcpO1xuICAgICAgICB0aGlzLmNvbnRyb2xWYWx1ZSA9IHRoaXMuY29udHJvbC52YWx1ZTtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZWQuZW1pdCh7IHRhcmdldDogeyB2YWx1ZTogdGhpcy5jb250cm9sLnZhbHVlIH0gfSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZm9ybSgpLmNvbnRyb2xzLmZvcm1hdHRlZFZhbHVlLnBhdGNoVmFsdWUoXG4gICAgICAgIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHRoaXMuY29udHJvbFZhbHVlIHx8IGRhdGUsIGBNTU0uIGRkLCB5eXl5JHt0aGlzLnNob3dUaW1lID8gJy4gaGg6bW06c3MgYScgOiAnJ31gKSxcbiAgICAgICAge1xuICAgICAgICAgIGVtaXRFdmVudDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICApO1xuICAgIH0pO1xuICB9O1xuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAvL0NhbGxlZCBvbmNlLCBiZWZvcmUgdGhlIGluc3RhbmNlIGlzIGRlc3Ryb3llZC5cbiAgICAvL0FkZCAnaW1wbGVtZW50cyBPbkRlc3Ryb3knIHRvIHRoZSBjbGFzcy5cbiAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLnN1YnMgfHwge30pIHtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5zdWJzLCBrZXkpKSB7XG4gICAgICAgIHRoaXMuc3Vicz8uW2tleV0/LnVuc3Vic2NyaWJlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAvL0NhbGxlZCBhZnRlciBuZ0FmdGVyQ29udGVudEluaXQgd2hlbiB0aGUgY29tcG9uZW50J3MgdmlldyBoYXMgYmVlbiBpbml0aWFsaXplZC4gQXBwbGllcyB0byBjb21wb25lbnRzIG9ubHkuXG4gICAgLy9BZGQgJ2ltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCcgdG8gdGhlIGNsYXNzLlxuICAgIC8vIGRlYnVnZ2VyO1xuICAgIGlmICh0aGlzLmZvcm1WYWx1ZSgpLmRhdGUpIHtcbiAgICAgIHRoaXMubWF0Q2FsZW5kYXIuYWN0aXZlRGF0ZSA9IG5ldyBEYXRlKHRoaXMuZm9ybVZhbHVlKCkuZGF0ZSk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY3VzdG9tZGF0ZSB7eyBjbHMoKSB9fSB7eyBpbnB1dENsYXNzKCkgfX1cIiBbbmdDbGFzc109XCJ7IGRpc2FibGVkOiByZWFkb25seSgpIHx8IGRpc2FibGVkKCkgfVwiPlxuICA8ZGl2IGNsYXNzPVwicm93IGctMSB3LTEwMFwiPlxuICAgIDwhLS0gPGRpdiBjbGFzcz1cImNvbCBvdmVyZmxvdy1hdXRvIGhpZGUtc2Nyb2xsLXhcIiBbZm9ybUdyb3VwXT1cImZvcm0yXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IHctMTAwIGFsaWduLWl0ZW1zLWNlbnRlclwiIFtmb3JtR3JvdXBdPVwiZm9ybTJcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGlTLmRhdGVJbnB1dENodW5rcztsZXQgY2k9aW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBbc3R5bGUud2lkdGhdPVwiJ2F1dG8nfHxpdGVtLndpZHRoXCIgY2xhc3M9XCIgIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIiAqbmdJZj1cImNpPGNodW5rc0xlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tpdGVtLnNlcGVyYXRvcn19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5vZm9ybWF0IGNsYXNzPVwiZC1pLWZcIiBpZD1cInt7dGhpcy5pZH19X2RpX3t7aXRlbS5mb3JtQ29udHJvbE5hbWV9fVwiIFt0eXBlXT1cIml0ZW0udHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJpdGVtLmZvcm1Db250cm9sTmFtZVwiIFttYXRUb29sdGlwU2hvd0RlbGF5XT1cIjIwMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIml0ZW0ubGFiZWxcIiBbc3R5bGUud2lkdGguY2hdPVwiaXRlbT8ubGVuZ3RoXCIgW3BsYWNlaG9sZGVyXT1cIml0ZW0ucGxhY2Vob2xkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cblxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PiAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICA8aW5wdXRcbiAgICAgICAgY2xhc3M9XCJ3LTEwMCBib3JkZXItMFwiXG4gICAgICAgIFt2YWx1ZV09XCJmb3JtVmFsdWUoKT8uZm9ybWF0dGVkVmFsdWVcIlxuICAgICAgICAoY2hhbmdlKT1cImlTLmZvcm1hdFVzZXJJbnB1dCgkZXZlbnQsIGZvcm0oKSwgc2hvd1RpbWUoKSwgaWQoKSlcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cImRkL21tL3l5eXl7eyBzaG93VGltZSgpID8gJyBoaDptbTpzczphYScgOiAnJyB9fVwiXG4gICAgICAgIFtyZWFkT25seV09XCJkaXNhYmxlZCgpXCIgLz5cbiAgICAgIDwhLS0gPGlucHV0IGNsYXNzPVwidy0xMDAgYm9yZGVyLTBcIiBbdmFsdWVdPVwiZm9ybS5jb250cm9scy5mb3JtYXR0ZWRWYWx1ZS52YWx1ZVwiIChjaGFuZ2UpPVwiZm9ybWF0VXNlcklucHV0KClcIlxuICAgICAgICAgICAgICAgIFtyZWFkT25seV09XCJjb250cm9sPy5kaXNhYmxlZFwiIFttYXQtbWVudS10cmlnZ2VyLWZvcl09XCJjb250cm9sPy5kaXNhYmxlZHx8cmVhZG9ubHk/bnVsbDpwaWNrZXJcIj4gLS0+XG4gICAgPC9kaXY+XG4gICAgQGlmICghZGlzYWJsZWQoKSAmJiAhcmVhZG9ubHkoKSkge1xuICAgICAgPGRpdiBjbGFzcz1cImNvbC1hdXRvXCI+XG4gICAgICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGVcbiAgICAgICAgICBtYXRJY29uU3VmZml4XG4gICAgICAgICAgW21hdC1tZW51LXRyaWdnZXItZm9yXT1cInBpY2tlclwiXG4gICAgICAgICAgKGNsaWNrKT1cImZvcm1WYWx1ZSgpPy5kYXRlID8gbWF0Q2FsUmVmLl9nb1RvRGF0ZUluVmlldyhmb3JtVmFsdWUoKT8uZGF0ZSwgJ21vbnRoJykgOiBudWxsXCI+PC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxtYXQtbWVudSBjbGFzcz1cImZ1bGwtd2lkdGhcIiAjcGlja2VyPVwibWF0TWVudVwiIHhQb3NpdGlvbj1cImFmdGVyXCI+XG4gIDxkaXYgY2xhc3M9XCJjdXN0b21kYXRlLXBpY2tlclwiIFtuZ0NsYXNzXT1cInsgJ3BlLTMnOiBzaG93VGltZSgpIH1cIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgPGRpdiBjbGFzcz1cInJvdyBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG0tMCBneS0yXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLWF1dG9cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWNvbnRcIiAjY2FsZW5kYXJDb250PlxuICAgICAgICAgIDxtYXQtY2FsZW5kYXJcbiAgICAgICAgICAgICNtYXRDYWxSZWZcbiAgICAgICAgICAgIFtzZWxlY3RlZF09XCJmb3JtVmFsdWUoKT8uZGF0ZVwiXG4gICAgICAgICAgICBbbWF4RGF0ZV09XCJtYXgoKVwiXG4gICAgICAgICAgICBbbWluRGF0ZV09XCJtaW4oKVwiXG4gICAgICAgICAgICAoc2VsZWN0ZWRDaGFuZ2UpPVwiZm9ybSgpLmNvbnRyb2xzLmRhdGUucGF0Y2hWYWx1ZSgkZXZlbnQpXCI+PC9tYXQtY2FsZW5kYXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICBAaWYgKHNob3dUaW1lKCkpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy1hdXRvXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtY29udCB0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlciByb3VuZGVkLTEwIG92ZXJmbG93LWhpZGRlbiBteC0xXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtb3B0aW9ucy1jb250IGhpZGUtc2Nyb2xsXCIgW3N0eWxlLmhlaWdodC5weF09XCJjYWxlbmRhckNvbnQub2Zmc2V0SGVpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RpY2t5LXRvcCBiZy13aGl0ZSByb3VuZGVkLTEwIHRleHQtcHJpbWFyeVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyAnSFInIHwgYXBwVHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlLWdyb3VwIGNsYXNzPVwiaGlkZS1zY3JvbGxcIiBbZm9ybUNvbnRyb2xdPVwiZm9ybSgpLmNvbnRyb2xzLmhvdXJzXCI+XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgaVMudGltZUhvdXJzKCk7IHRyYWNrIGl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgbWF0LWljb24tYnV0dG9uIGNsYXNzPVwicm91bmRlZC0xMFwiIFt2YWx1ZV09XCJpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgcm91bmRlZC0xMCBvdmVyZmxvdy1oaWRkZW4gbXgtMVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lLW9wdGlvbnMtY29udCBoaWRlLXNjcm9sbFwiIFtzdHlsZS5oZWlnaHQucHhdPVwiY2FsZW5kYXJDb250Lm9mZnNldEhlaWdodFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0aWNreS10b3AgYmctd2hpdGUgcm91bmRlZC0xMCB0ZXh0LXByaW1hcnlcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgJ01JTicgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAgY2xhc3M9XCJoaWRlLXNjcm9sbFwiIFtmb3JtQ29udHJvbF09XCJmb3JtKCkuY29udHJvbHMubWludXRlc1wiPlxuICAgICAgICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIGlTLnRpbWVNaW51dGVzKCk7IHRyYWNrIGl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgbWF0LWljb24tYnV0dG9uIGNsYXNzPVwicm91bmRlZC0xMFwiIFt2YWx1ZV09XCJpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgcm91bmRlZC0xMCBvdmVyZmxvdy1oaWRkZW4gbXgtMVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lLW9wdGlvbnMtY29udCBoaWRlLXNjcm9sbFwiIFtzdHlsZS5oZWlnaHQucHhdPVwiY2FsZW5kYXJDb250Lm9mZnNldEhlaWdodFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0aWNreS10b3AgYmctd2hpdGUgcm91bmRlZC0xMCB0ZXh0LXByaW1hcnlcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgJ1MnIHwgYXBwVHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlLWdyb3VwIGNsYXNzPVwiaGlkZS1zY3JvbGxcIiBbZm9ybUNvbnRyb2xdPVwiZm9ybSgpLmNvbnRyb2xzLnNlY29uZHNcIj5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBpUy50aW1lU2Vjb25kcygpOyB0cmFjayBpdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIG1hdC1pY29uLWJ1dHRvbiBjbGFzcz1cInJvdW5kZWQtMTBcIiBbdmFsdWVdPVwiaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbSB9fVxuICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXA+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyIHJvdW5kZWQtMTAgb3ZlcmZsb3ctaGlkZGVuIG14LTFcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGltZS1vcHRpb25zLWNvbnQgaGlkZS1zY3JvbGxcIj5cbiAgICAgICAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZS1ncm91cCBjbGFzcz1cImhpZGUtc2Nyb2xsXCIgW2Zvcm1Db250cm9sXT1cImZvcm0oKS5jb250cm9scy5tZXJpZGllbVwiPlxuICAgICAgICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIGlTLnRpbWVNZXJpZGllbSgpOyB0cmFjayBpdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIG1hdC1pY29uLWJ1dHRvbiBjbGFzcz1cInJvdW5kZWQtMTBcIiBbdmFsdWVdPVwiaXRlbS5pbmNyZW1lbnRvclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5sYWJlbCB8IHVwcGVyY2FzZSB9fVxuICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXA+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbWF0LW1lbnU+XG4iXX0=
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component, DestroyRef, Input, booleanAttribute, computed, inject, input, signal } from '@angular/core';
|
|
1
|
+
import { Component, DestroyRef, Input, ViewChild, booleanAttribute, computed, inject, input, signal } from '@angular/core';
|
|
2
2
|
import { Validators } from '@angular/forms';
|
|
3
3
|
import { InputService } from './input.service';
|
|
4
4
|
import { debounceTime, merge, of } from 'rxjs';
|
|
@@ -156,7 +156,7 @@ export class InputBase {
|
|
|
156
156
|
this.controlRequiredSignal.set(this.control?.hasValidator(Validators.required));
|
|
157
157
|
}
|
|
158
158
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: InputBase, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
159
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.1.0", type: InputBase, isStandalone: true, selector: "ng-component", inputs: { placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, suffix: { classPropertyName: "suffix", publicName: "suffix", isSignal: true, isRequired: false, transformFunction: null }, dontFormatAsInputSignal: { classPropertyName: "dontFormatAsInputSignal", publicName: "dontFormatAsInput", isSignal: true, isRequired: false, transformFunction: null }, duplicateCheckSignal: { classPropertyName: "duplicateCheckSignal", publicName: "duplicateCheck", isSignal: true, isRequired: false, transformFunction: null }, idSignal: { classPropertyName: "idSignal", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, inputContClassSignal: { classPropertyName: "inputContClassSignal", publicName: "inputContClass", isSignal: true, isRequired: false, transformFunction: null }, showRequiredTagSignal: { classPropertyName: "showRequiredTagSignal", publicName: "showRequiredTag", isSignal: true, isRequired: false, transformFunction: null }, textareaRowsSignal: { classPropertyName: "textareaRowsSignal", publicName: "textareaRows", isSignal: true, isRequired: false, transformFunction: null }, endLabelSignal: { classPropertyName: "endLabelSignal", publicName: "endLabel", isSignal: true, isRequired: false, transformFunction: null }, endLabelTooltipSignal: { classPropertyName: "endLabelTooltipSignal", publicName: "endLabelTooltip", isSignal: true, isRequired: false, transformFunction: null }, labelSignal: { classPropertyName: "labelSignal", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, readonlySignal: { classPropertyName: "readonlySignal", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, requiredSignal: { classPropertyName: "requiredSignal", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, _form: { classPropertyName: "_form", publicName: "form", isSignal: false, isRequired: false, transformFunction: null }, inlineHint: { classPropertyName: "inlineHint", publicName: "inlineHint", isSignal: false, isRequired: false, transformFunction: null }, _name: { classPropertyName: "_name", publicName: "name", isSignal: false, isRequired: false, transformFunction: null }, _indeterminate: { classPropertyName: "_indeterminate", publicName: "indeterminate", isSignal: false, isRequired: false, transformFunction: null }, _max: { classPropertyName: "_max", publicName: "max", isSignal: false, isRequired: false, transformFunction: null }, _min: { classPropertyName: "_min", publicName: "min", isSignal: false, isRequired: false, transformFunction: null }, maxToday: { classPropertyName: "maxToday", publicName: "maxToday", isSignal: false, isRequired: false, transformFunction: null }, minToday: { classPropertyName: "minToday", publicName: "minToday", isSignal: false, isRequired: false, transformFunction: null }, prefixSignal: { classPropertyName: "prefixSignal", publicName: "prefix", isSignal: true, isRequired: false, transformFunction: null }, miniSignal: { classPropertyName: "miniSignal", publicName: "mini", isSignal: true, isRequired: false, transformFunction: null }, inpClSignal: { classPropertyName: "inpClSignal", publicName: "inpCl", isSignal: true, isRequired: false, transformFunction: null }, showEmptyOptionSignal: { classPropertyName: "showEmptyOptionSignal", publicName: "showEmptyOption", isSignal: true, isRequired: false, transformFunction: null }, showLabelSignal: { classPropertyName: "showLabelSignal", publicName: "showLabel", isSignal: true, isRequired: false, transformFunction: null }, showValidationSignal: { classPropertyName: "showValidationSignal", publicName: "showValidation", isSignal: true, isRequired: false, transformFunction: null }, showValidationIconSignal: { classPropertyName: "showValidationIconSignal", publicName: "showValidationIcon", isSignal: true, isRequired: false, transformFunction: null }, smallSignal: { classPropertyName: "smallSignal", publicName: "small", isSignal: true, isRequired: false, transformFunction: null }, showValidationMsgSignal: { classPropertyName: "showValidationMsgSignal", publicName: "showValidationMsg", isSignal: true, isRequired: false, transformFunction: null }, stackedSignal: { classPropertyName: "stackedSignal", publicName: "stacked", isSignal: true, isRequired: false, transformFunction: null }, debug: { classPropertyName: "debug", publicName: "debug", isSignal: true, isRequired: false, transformFunction: null }, clearOnDisable: { classPropertyName: "clearOnDisable", publicName: "clearOnDisable", isSignal: true, isRequired: false, transformFunction: null }, _disabled: { classPropertyName: "_disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null }, _type: { classPropertyName: "_type", publicName: "type", isSignal: false, isRequired: false, transformFunction: null } }, ngImport: i0, template: '', isInline: true }); }
|
|
159
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.1.0", type: InputBase, isStandalone: true, selector: "ng-component", inputs: { placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, suffix: { classPropertyName: "suffix", publicName: "suffix", isSignal: true, isRequired: false, transformFunction: null }, dontFormatAsInputSignal: { classPropertyName: "dontFormatAsInputSignal", publicName: "dontFormatAsInput", isSignal: true, isRequired: false, transformFunction: null }, duplicateCheckSignal: { classPropertyName: "duplicateCheckSignal", publicName: "duplicateCheck", isSignal: true, isRequired: false, transformFunction: null }, idSignal: { classPropertyName: "idSignal", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, inputContClassSignal: { classPropertyName: "inputContClassSignal", publicName: "inputContClass", isSignal: true, isRequired: false, transformFunction: null }, showRequiredTagSignal: { classPropertyName: "showRequiredTagSignal", publicName: "showRequiredTag", isSignal: true, isRequired: false, transformFunction: null }, textareaRowsSignal: { classPropertyName: "textareaRowsSignal", publicName: "textareaRows", isSignal: true, isRequired: false, transformFunction: null }, endLabelSignal: { classPropertyName: "endLabelSignal", publicName: "endLabel", isSignal: true, isRequired: false, transformFunction: null }, endLabelTooltipSignal: { classPropertyName: "endLabelTooltipSignal", publicName: "endLabelTooltip", isSignal: true, isRequired: false, transformFunction: null }, labelSignal: { classPropertyName: "labelSignal", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, readonlySignal: { classPropertyName: "readonlySignal", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, requiredSignal: { classPropertyName: "requiredSignal", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, _form: { classPropertyName: "_form", publicName: "form", isSignal: false, isRequired: false, transformFunction: null }, inlineHint: { classPropertyName: "inlineHint", publicName: "inlineHint", isSignal: false, isRequired: false, transformFunction: null }, _name: { classPropertyName: "_name", publicName: "name", isSignal: false, isRequired: false, transformFunction: null }, _indeterminate: { classPropertyName: "_indeterminate", publicName: "indeterminate", isSignal: false, isRequired: false, transformFunction: null }, _max: { classPropertyName: "_max", publicName: "max", isSignal: false, isRequired: false, transformFunction: null }, _min: { classPropertyName: "_min", publicName: "min", isSignal: false, isRequired: false, transformFunction: null }, maxToday: { classPropertyName: "maxToday", publicName: "maxToday", isSignal: false, isRequired: false, transformFunction: null }, minToday: { classPropertyName: "minToday", publicName: "minToday", isSignal: false, isRequired: false, transformFunction: null }, prefixSignal: { classPropertyName: "prefixSignal", publicName: "prefix", isSignal: true, isRequired: false, transformFunction: null }, miniSignal: { classPropertyName: "miniSignal", publicName: "mini", isSignal: true, isRequired: false, transformFunction: null }, inpClSignal: { classPropertyName: "inpClSignal", publicName: "inpCl", isSignal: true, isRequired: false, transformFunction: null }, showEmptyOptionSignal: { classPropertyName: "showEmptyOptionSignal", publicName: "showEmptyOption", isSignal: true, isRequired: false, transformFunction: null }, showLabelSignal: { classPropertyName: "showLabelSignal", publicName: "showLabel", isSignal: true, isRequired: false, transformFunction: null }, showValidationSignal: { classPropertyName: "showValidationSignal", publicName: "showValidation", isSignal: true, isRequired: false, transformFunction: null }, showValidationIconSignal: { classPropertyName: "showValidationIconSignal", publicName: "showValidationIcon", isSignal: true, isRequired: false, transformFunction: null }, smallSignal: { classPropertyName: "smallSignal", publicName: "small", isSignal: true, isRequired: false, transformFunction: null }, showValidationMsgSignal: { classPropertyName: "showValidationMsgSignal", publicName: "showValidationMsg", isSignal: true, isRequired: false, transformFunction: null }, stackedSignal: { classPropertyName: "stackedSignal", publicName: "stacked", isSignal: true, isRequired: false, transformFunction: null }, debug: { classPropertyName: "debug", publicName: "debug", isSignal: true, isRequired: false, transformFunction: null }, clearOnDisable: { classPropertyName: "clearOnDisable", publicName: "clearOnDisable", isSignal: true, isRequired: false, transformFunction: null }, _disabled: { classPropertyName: "_disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null }, _type: { classPropertyName: "_type", publicName: "type", isSignal: false, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "dateInputRef", first: true, predicate: ["dateInput"], descendants: true }], ngImport: i0, template: '', isInline: true }); }
|
|
160
160
|
}
|
|
161
161
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: InputBase, decorators: [{
|
|
162
162
|
type: Component,
|
|
@@ -191,5 +191,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImpor
|
|
|
191
191
|
}], _type: [{
|
|
192
192
|
type: Input,
|
|
193
193
|
args: ['type']
|
|
194
|
+
}], dateInputRef: [{
|
|
195
|
+
type: ViewChild,
|
|
196
|
+
args: ['dateInput']
|
|
194
197
|
}] } });
|
|
195
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldHMtZmUtbmctc2RrL3NyYy9saWIvU2hhcmVkL2NvbXBvbmVudHMvaW5wdXQvaW5wdXQtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoSCxPQUFPLEVBQTJDLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQWdCLFlBQVksRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUs3RCxNQUFNLE9BQU8sU0FBUztJQUp0QjtRQVdFLGdCQUFXLEdBQUcsS0FBSyxDQUFTLElBQUksQ0FBQyxDQUFDO1FBQ2xDLFdBQU0sR0FBRyxLQUFLLENBQVMsSUFBSSxDQUFDLENBQUM7UUFDN0IsNEJBQXVCLEdBQUcsS0FBSyxDQUFVLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxDQUFDLENBQUM7UUFDL0UseUJBQW9CLEdBQUcsS0FBSyxDQUFVLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7UUFDekUsYUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM5RSx5QkFBb0IsR0FBRyxLQUFLLENBQVMsSUFBSSxFQUFFLEVBQUUsS0FBSyxF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LE9BQU8sRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDbEYsQ0FBQzs4R0ExSVUsU0FBUztrR0FBVCxTQUFTLGc0SkFGVixFQUFFOzsyRkFFRCxTQUFTO2tCQUpyQixTQUFTO21CQUFDO29CQUNULFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsRUFBRTtpQkFDYjs4QkF3QmdELEtBQUs7c0JBQW5ELEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7Z0JBT2hDLFVBQVU7c0JBQWxCLEtBQUs7Z0JBR3lDLEtBQUs7c0JBQW5ELEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7Z0JBT2IsY0FBYztzQkFBekMsS0FBSzt1QkFBQyxlQUFlO2dCQUlKLElBQUk7c0JBQXJCLEtBQUs7dUJBQUMsS0FBSztnQkFHTSxJQUFJO3NCQUFyQixLQUFLO3VCQUFDLEtBQUs7Z0JBR0MsUUFBUTtzQkFBcEIsS0FBSztnQkFHTyxRQUFRO3NCQUFwQixLQUFLO2dCQWdCaUIsU0FBUztzQkFBL0IsS0FBSzt1QkFBQyxVQUFVO2dCQVlFLEtBQUs7c0JBQXZCLEtBQUs7dUJBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRGVzdHJveVJlZiwgSW5wdXQsIGJvb2xlYW5BdHRyaWJ1dGUsIGNvbXB1dGVkLCBpbmplY3QsIGlucHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElucHV0U2VydmljZSB9IGZyb20gJy4vaW5wdXQuc2VydmljZSc7XG5pbXBvcnQgeyBJT2JqZWN0TGl0ZXJhbCwgSW5wdXRUeXBlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2luZGV4Lm1vZGVsJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgZGVib3VuY2VUaW1lLCBtZXJnZSwgb2YgfSBmcm9tICdyeGpzJztcbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZTogJycsXG59KVxuZXhwb3J0IGNsYXNzIElucHV0QmFzZTxcbiAgVEZvcm1Hcm91cCBleHRlbmRzIHtcbiAgICBbSyBpbiBrZXlvZiBURm9ybUdyb3VwXTogQWJzdHJhY3RDb250cm9sPGFueSwgYW55PjtcbiAgfSA9IGFueSxcbiAgVENvbnRyb2wgPSBhbnksXG4gIFRPcHRpb24gPSBhbnksXG4+IHtcbiAgcGxhY2Vob2xkZXIgPSBpbnB1dDxzdHJpbmc+KG51bGwpO1xuICBzdWZmaXggPSBpbnB1dDxzdHJpbmc+KG51bGwpO1xuICBkb250Rm9ybWF0QXNJbnB1dFNpZ25hbCA9IGlucHV0PGJvb2xlYW4+KG51bGwsIHsgYWxpYXM6ICdkb250Rm9ybWF0QXNJbnB1dCcgfSk7XG4gIGR1cGxpY2F0ZUNoZWNrU2lnbmFsID0gaW5wdXQ8Ym9vbGVhbj4obnVsbCwgeyBhbGlhczogJ2R1cGxpY2F0ZUNoZWNrJyB9KTtcbiAgaWRTaWduYWwgPSBpbnB1dCgnaWQnICsgTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpICogMTAwMDAwMCksIHsgYWxpYXM6ICdpZCcgfSk7XG4gIGlucHV0Q29udENsYXNzU2lnbmFsID0gaW5wdXQ8c3RyaW5nPihudWxsLCB7IGFsaWFzOiAnaW5wdXRDb250Q2xhc3MnIH0pO1xuICBzaG93UmVxdWlyZWRUYWdTaWduYWwgPSBpbnB1dDxib29sZWFuPih0cnVlLCB7IGFsaWFzOiAnc2hvd1JlcXVpcmVkVGFnJyB9KTtcbiAgdGV4dGFyZWFSb3dzU2lnbmFsID0gaW5wdXQ8bnVtYmVyPihudWxsLCB7IGFsaWFzOiAndGV4dGFyZWFSb3dzJyB9KTtcbiAgZW5kTGFiZWxTaWduYWwgPSBpbnB1dDxzdHJpbmc+KG51bGwsIHsgYWxpYXM6ICdlbmRMYWJlbCcgfSk7XG4gIGVuZExhYmVsVG9vbHRpcFNpZ25hbCA9IGlucHV0PHN0cmluZz4obnVsbCwgeyBhbGlhczogJ2VuZExhYmVsVG9vbHRpcCcgfSk7XG4gIGxhYmVsU2lnbmFsID0gaW5wdXQ8c3RyaW5nPihudWxsLCB7IGFsaWFzOiAnbGFiZWwnIH0pO1xuXG4gIHJlYWRvbmx5U2lnbmFsID0gaW5wdXQ8Ym9vbGVhbiB8IG51bGw+KG51bGwsIHsgYWxpYXM6ICdyZWFkb25seScgfSk7XG4gIHJlcXVpcmVkU2lnbmFsID0gaW5wdXQ8Ym9vbGVhbiB8IG51bGw+KG51bGwsIHsgYWxpYXM6ICdyZXF1aXJlZCcgfSk7XG5cbiAgLyoqIEZvcm1Hcm91cCAqL1xuICBASW5wdXQoeyByZXF1aXJlZDogZmFsc2UsIGFsaWFzOiAnZm9ybScgfSkgc2V0IF9mb3JtKHY6IEZvcm1Hcm91cDxURm9ybUdyb3VwPiB8IEZvcm1Db250cm9sPFRDb250cm9sPiB8IEFic3RyYWN0Q29udHJvbDxUQ29udHJvbD4pIHtcbiAgICB0aGlzLmZvcm0gPSB2IGFzIEZvcm1Hcm91cDxURm9ybUdyb3VwPjtcbiAgICB0aGlzLmZvcm1TaWduYWwuc2V0KHRoaXMuZm9ybSk7XG4gICAgdGhpcy5saXN0ZW5Ub0NvbnRyb2woKTtcbiAgfVxuXG4gIC8qKiBTaG93IHRoZSBoaW50IHdpdGhvdXQgdGhlIHRvb2x0aXAgKi9cbiAgQElucHV0KCkgaW5saW5lSGludDogYm9vbGVhbjtcblxuICAvKiogRm9ybUNvbnRyb2xOYW1lICovXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiBmYWxzZSwgYWxpYXM6ICduYW1lJyB9KSBzZXQgX25hbWUodjoga2V5b2YgVEZvcm1Hcm91cCkge1xuICAgIHRoaXMubmFtZVNpZ25hbC5zZXQodik7XG4gICAgdGhpcy5saXN0ZW5Ub0NvbnRyb2woKTtcbiAgfVxuXG4gIGluZGV0ZXJtaW5hdGU6IGJvb2xlYW47XG5cbiAgQElucHV0KCdpbmRldGVybWluYXRlJykgc2V0IF9pbmRldGVybWluYXRlKHY6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmluZGV0ZXJtaW5hdGUgPSB2O1xuICAgIGlmICh2KSB0aGlzLmNvbnRyb2w/LnBhdGNoVmFsdWUoZmFsc2UpO1xuICB9XG4gIEBJbnB1dCgnbWF4Jykgc2V0IF9tYXgodjogbnVtYmVyIHwgc3RyaW5nKSB7XG4gICAgdGhpcy5tYXhTaWduYWwuc2V0KHYpO1xuICB9XG4gIEBJbnB1dCgnbWluJykgc2V0IF9taW4odjogbnVtYmVyIHwgc3RyaW5nKSB7XG4gICAgdGhpcy5taW5TaWduYWwuc2V0KHYpO1xuICB9XG4gIEBJbnB1dCgpIHNldCBtYXhUb2RheSh2OiBib29sZWFuKSB7XG4gICAgaWYgKHYpIHRoaXMubWF4U2lnbmFsLnNldChuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkpO1xuICB9XG4gIEBJbnB1dCgpIHNldCBtaW5Ub2RheSh2OiBib29sZWFuKSB7XG4gICAgaWYgKHYpIHRoaXMubWluU2lnbmFsLnNldChuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkpO1xuICB9XG4gIHByZWZpeFNpZ25hbCA9IGlucHV0PHN0cmluZz4obnVsbCwgeyBhbGlhczogJ3ByZWZpeCcgfSk7XG4gIG1pbmlTaWduYWwgPSBpbnB1dDxib29sZWFuPihudWxsLCB7IGFsaWFzOiAnbWluaScgfSk7XG4gIGlucENsU2lnbmFsID0gaW5wdXQ8c3RyaW5nPignY29udHJvbC1iZy1ncmF5JywgeyBhbGlhczogJ2lucENsJyB9KTtcbiAgc2hvd0VtcHR5T3B0aW9uU2lnbmFsID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgYXMgdW5kZWZpbmVkLCBhbGlhczogJ3Nob3dFbXB0eU9wdGlvbicgfSk7XG4gIHNob3dMYWJlbFNpZ25hbCA9IGlucHV0PGJvb2xlYW4+KHRydWUsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIGFzIHVuZGVmaW5lZCwgYWxpYXM6ICdzaG93TGFiZWwnIH0pO1xuICBzaG93VmFsaWRhdGlvblNpZ25hbCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlLCB7IGFsaWFzOiAnc2hvd1ZhbGlkYXRpb24nLCB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgYXMgdW5kZWZpbmVkIH0pO1xuICBzaG93VmFsaWRhdGlvbkljb25TaWduYWwgPSBpbnB1dDxib29sZWFuPihudWxsLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSBhcyB1bmRlZmluZWQsIGFsaWFzOiAnc2hvd1ZhbGlkYXRpb25JY29uJyB9KTtcbiAgc21hbGxTaWduYWwgPSBpbnB1dDxib29sZWFuPihudWxsLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSBhcyB1bmRlZmluZWQsIGFsaWFzOiAnc21hbGwnIH0pO1xuICBzaG93VmFsaWRhdGlvbk1zZ1NpZ25hbCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSBhcyB1bmRlZmluZWQsIGFsaWFzOiAnc2hvd1ZhbGlkYXRpb25Nc2cnIH0pO1xuICBzdGFja2VkU2lnbmFsID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgYXMgdW5kZWZpbmVkLCBhbGlhczogJ3N0YWNrZWQnIH0pO1xuICBkZWJ1ZyA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIGNsZWFyT25EaXNhYmxlID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG5cbiAgQElucHV0KCdkaXNhYmxlZCcpIHNldCBfZGlzYWJsZWQodjogYm9vbGVhbikge1xuICAgIGlmICh0aGlzLmRlYnVnKCkpIGRlYnVnZ2VyO1xuICAgIHRoaXMuZGlzYWJsZWRTaWduYWwuc2V0KHYpO1xuICAgIGlmICh0aGlzLmNvbnRyb2w/LnBhcmVudD8uZGlzYWJsZWQpIHJldHVybjtcbiAgICBpZiAodikge1xuICAgICAgaWYgKHRoaXMuY2xlYXJPbkRpc2FibGUoKSkgdGhpcy5jb250cm9sPy5yZXNldCgpO1xuICAgICAgdGhpcy5jb250cm9sPy5kaXNhYmxlKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmNvbnRyb2w/LmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmNvbnRyb2w/LmVuYWJsZSgpO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgndHlwZScpIHNldCBfdHlwZSh2OiBJbnB1dFR5cGUpIHtcbiAgICB0aGlzLm9UeXBlU2lnbmFsLnNldCh2KTtcbiAgICBpZiAodiA9PSAncGVyY2VudGFnZScpIHtcbiAgICAgIHRoaXMudHlwZVNpZ25hbC5zZXQoJ251bWJlcicpO1xuICAgICAgdGhpcy5tYXhTaWduYWwuc2V0KDEwMCk7XG4gICAgICB0aGlzLm1pblNpZ25hbC5zZXQoMCk7XG4gICAgfSBlbHNlIHRoaXMudHlwZVNpZ25hbC5zZXQodik7XG4gIH1cblxuICBzaG93UGFzc3dvcmRTaWduYWwgPSBzaWduYWw8Ym9vbGVhbj4obnVsbCk7XG5cbiAgZGlzYWJsZWRTaWduYWwgPSBzaWduYWw8Ym9vbGVhbj4obnVsbCk7XG5cbiAgb1R5cGVTaWduYWwgPSBzaWduYWw8SW5wdXRUeXBlIHwgbnVsbD4obnVsbCk7XG4gIHR5cGVTaWduYWwgPSBzaWduYWw8SW5wdXRUeXBlPigndGV4dCcpO1xuICBtYXhTaWduYWwgPSBzaWduYWw8bnVtYmVyIHwgc3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gIG1pblNpZ25hbCA9IHNpZ25hbDxudW1iZXIgfCBzdHJpbmcgfCBudWxsPihudWxsKTtcblxuICBmb3JtOiBGb3JtR3JvdXA8VEZvcm1Hcm91cD47XG4gIGZvcm1TaWduYWwgPSBzaWduYWw8Rm9ybUdyb3VwPFRGb3JtR3JvdXA+PihudWxsKTtcbiAgbmFtZVNpZ25hbCA9IHNpZ25hbDxrZXlvZiBURm9ybUdyb3VwPihudWxsKTtcblxuICBjb21wdXRlZFNob3dMYWJlbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBzaG93TGFiZWwgPSB0aGlzLnNob3dMYWJlbFNpZ25hbCgpLFxuICAgICAgbGFiZWwgPSB0aGlzLmxhYmVsU2lnbmFsKCk7XG4gICAgcmV0dXJuIHNob3dMYWJlbCAmJiBsYWJlbCAhPSBudWxsO1xuICB9KTtcblxuICBwdWJsaWMgaVMgPSBpbmplY3QoSW5wdXRTZXJ2aWNlKTtcblxuICBwcm90ZWN0ZWQgZ2V0IGNvbnRyb2woKSB7XG4gICAgcmV0dXJuICh0aGlzLmZvcm0gYXMgRm9ybUdyb3VwPFRGb3JtR3JvdXA+KT8uY29udHJvbHNbdGhpcy5uYW1lU2lnbmFsKCkgYXMgYW55XSBhcyBBYnN0cmFjdENvbnRyb2w8YW55PjtcbiAgfVxuXG4gIHByb3RlY3RlZCBkZXN0cm95ZXIgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gIHByb3RlY3RlZCBjb250cm9sVmFsdWVDaGFuZ2VzU3ViOiBTdWJzY3JpcHRpb247XG5cbiAgbGlzdGVuVG9Db250cm9sKCkge1xuICAgIHRoaXMuY29udHJvbFZhbHVlQ2hhbmdlc1N1Yj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLnVwZGF0ZUNvbnRyb2xTaWduYWxzKCk7XG4gICAgdGhpcy5jb250cm9sVmFsdWVDaGFuZ2VzU3ViID0gbWVyZ2UodGhpcy5jb250cm9sPy52YWx1ZUNoYW5nZXMgfHwgb2YobnVsbCksIHRoaXMuY29udHJvbD8uc3RhdHVzQ2hhbmdlcyB8fCBvZihudWxsKSlcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSgxMDApKVxuICAgICAgLnN1YnNjcmliZSgocikgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZUNvbnRyb2xTaWduYWxzKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCB1cGRhdGVDb250cm9sU2lnbmFscygpIHtcbiAgICB0aGlzLnZhbGlkU2lnbmFsLnNldCh0aGlzLmNvbnRyb2w/LnZhbGlkKTtcbiAgICB0aGlzLmludmFsaWRTaWduYWwuc2V0KHRoaXMuY29udHJvbD8uaW52YWxpZCk7XG4gICAgdGhpcy5kaXJ0eVNpZ25hbC5zZXQodGhpcy5jb250cm9sPy5kaXJ0eSk7XG4gICAgdGhpcy50b3VjaGVkU2lnbmFsLnNldCh0aGlzLmNvbnRyb2w/LnRvdWNoZWQpO1xuICAgIHRoaXMuZXJyb3JzU2lnbmFsLnNldCh0aGlzLmNvbnRyb2w/LmVycm9ycyk7XG4gICAgdGhpcy5wZW5kaW5nU2lnbmFsLnNldCh0aGlzLmNvbnRyb2w/LnBlbmRpbmcpO1xuICAgIHRoaXMucHJpc3RpbmVTaWduYWwuc2V0KHRoaXMuY29udHJvbD8ucHJpc3RpbmUpO1xuICAgIHRoaXMudmFsdWVTaWduYWwuc2V0KHRoaXMuY29udHJvbD8uZ2V0UmF3VmFsdWUoKSk7XG4gICAgdGhpcy5jb250cm9sUmVxdWlyZWRTaWduYWwuc2V0KHRoaXMuY29udHJvbD8uaGFzVmFsaWRhdG9yKFZhbGlkYXRvcnMucmVxdWlyZWQpKTtcbiAgfVxuXG4gIGRlc3Ryb3llckZ1bmMgPSB0aGlzLmRlc3Ryb3llci5vbkRlc3Ryb3koKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKCdkcm9wcGVkIGlucHV0IGxpc3RlbmVyJyk7XG4gICAgdGhpcy5jb250cm9sVmFsdWVDaGFuZ2VzU3ViPy51bnN1YnNjcmliZSgpO1xuICB9KTtcblxuICB2YWxpZFNpZ25hbCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIGludmFsaWRTaWduYWwgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICB2YWx1ZVNpZ25hbCA9IHNpZ25hbDxSZXR1cm5UeXBlPHR5cGVvZiB0aGlzLmNvbnRyb2wuZ2V0UmF3VmFsdWU+PihudWxsKTtcbiAgaGFzVmFsdWUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnZhbHVlU2lnbmFsKCk/LnRvU3RyaW5nKCk/LnRyaW0oKT8ubGVuZ3RoID4gMCk7XG4gIGludmFsaWRDaGVja2JveFNpZ25hbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5pbnZhbGlkU2lnbmFsKCkgJiYgdGhpcy50eXBlU2lnbmFsKCkgPT0gJ2NoZWNrYm94JztcbiAgfSk7XG4gIGRpcnR5U2lnbmFsID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29udHJvbFNpZ25hbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICB0aGlzLnZhbGlkU2lnbmFsKCk7XG4gICAgdGhpcy5pbnZhbGlkU2lnbmFsKCk7XG4gICAgdGhpcy5kaXJ0eVNpZ25hbCgpO1xuICAgIHRoaXMudG91Y2hlZFNpZ25hbCgpO1xuICAgIHRoaXMuZXJyb3JzU2lnbmFsKCk7XG4gICAgdGhpcy5wZW5kaW5nU2lnbmFsKCk7XG4gICAgdGhpcy5wcmlzdGluZVNpZ25hbCgpO1xuICAgIHRoaXMudmFsdWVTaWduYWwoKTtcbiAgICB0aGlzLmNvbnRyb2xSZXF1aXJlZFNpZ25hbCgpO1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2w7XG4gIH0pO1xuICB0b3VjaGVkU2lnbmFsID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgZXJyb3JzU2lnbmFsID0gc2lnbmFsPElPYmplY3RMaXRlcmFsPihudWxsKTtcbiAgcGVuZGluZ1NpZ25hbCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHByaXN0aW5lU2lnbmFsID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29udHJvbFJlcXVpcmVkU2lnbmFsID0gc2lnbmFsPGJvb2xlYW4gfCBudWxsPihudWxsKTtcbiAgaXNSZXF1aXJlZFNpZ25hbCA9IGNvbXB1dGVkKCgpID0+IHRoaXMucmVxdWlyZWRTaWduYWwoKSB8fCB0aGlzLmNvbnRyb2xSZXF1aXJlZFNpZ25hbCgpKTtcbiAgbmFtZVN0clNpZ25hbCA9IGNvbXB1dGVkKCgpID0+IHRoaXMubmFtZVNpZ25hbCgpPy50b1N0cmluZygpKTtcbiAgaW5wdXRDbGFzc1NpZ25hbCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuaVMuaW5wdXRDbGFzcyh0aGlzLmlucENsU2lnbmFsKCksIHRoaXMudmFsaWRTaWduYWwoKSwgdGhpcy5pbnZhbGlkU2lnbmFsKCksIHRoaXMuc2hvd1ZhbGlkYXRpb25TaWduYWwoKSkpO1xufVxuIl19
|
|
198
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldHMtZmUtbmctc2RrL3NyYy9saWIvU2hhcmVkL2NvbXBvbmVudHMvaW5wdXQvaW5wdXQtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0gsT0FBTyxFQUEyQyxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFnQixZQUFZLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFNN0QsTUFBTSxPQUFPLFNBQVM7SUFKdEI7UUFXRSxnQkFBVyxHQUFHLEtBQUssQ0FBUyxJQUFJLENBQUMsQ0FBQztRQUNsQyxXQUFNLEdBQUcsS0FBSyxDQUFTLElBQUksQ0FBQyxDQUFDO1FBQzdCLDRCQUF1QixHQUFHLEtBQUssQ0FBVSxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO1FBQy9FLHlCQUFvQixHQUFHLEtBQUssQ0FBVSxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1FBQ3pFLGFBQVEsR0FBRyxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDOUUseUJBQW9CLEdBQUcsS0FBSyxDQUFTLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7UUFDeEUsMEJBQXFCLEdBQUcsS0FBSyxDQUFVLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUM7UUFDM0UsdUJBQWtCLEdBQUcsS0FBSyxDQUFTLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDO1FBQ3BFLG1CQUFjLEdBQUcsS0FBSyxDQUFTLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQzVELDBCQUFxQixHQUFHLEtBQUssQ0FBUyxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO1FBQzFFLGdCQUFXLEdBQUcsS0FBSyxDQUFTLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBRXRELG1CQUFjLEdBQUcsS0FBSyxDQUFpQixJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUNwRSxtQkFBYyxHQUFHLEtBQUssQ0FBaUIsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFvQ3BFLGlCQUFZLEdBQUcsS0FBSyxDQUFTLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ3hELGVBQVUsR0FBRyxLQUFLLENBQVUsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDckQsZ0JBQVcsR0FBRyxLQUFLLENBQVMsaUJBQWlCLEVBQUUsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUNuRSwwQkFBcUIsR0FBRyxLQUFLLENBQVUsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLGdCQUE2QixFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUM7UUFDckgsb0JBQWUsR0FBRyxLQUFLLENBQVUsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLGdCQUE2QixFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ3pHLHlCQUFvQixHQUFHLEtBQUssQ0FBVSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLGdCQUE2QixFQUFFLENBQUMsQ0FBQztRQUNwSCw2QkFBd0IsR0FBRyxLQUFLLENBQVUsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLGdCQUE2QixFQUFFLEtBQUssRUFBRSxvQkFBb0IsRUFBRSxDQUFDLENBQUM7UUFDM0gsZ0JBQVcsR0FBRyxLQUFLLENBQVUsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLGdCQUE2QixFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ2pHLDRCQUF1QixHQUFHLEtBQUssQ0FBVSxLQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsZ0JBQTZCLEVBQUUsS0FBSyxFQUFFLG1CQUFtQixFQUFFLENBQUMsQ0FBQztRQUMxSCxrQkFBYSxHQUFHLEtBQUssQ0FBVSxJQUFJLEVBQUUsRUFBRSxTQUFTLEVBQUUsZ0JBQTZCLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFDckcsVUFBSyxHQUFHLEtBQUssRUFBVyxDQUFDO1FBQ3pCLG1CQUFjLEdBQUcsS0FBSyxDQUFVLElBQUksQ0FBQyxDQUFDO1FBdUJ0Qyx1QkFBa0IsR0FBRyxNQUFNLENBQVUsSUFBSSxDQUFDLENBQUM7UUFFM0MsbUJBQWMsR0FBRyxNQUFNLENBQVUsSUFBSSxDQUFDLENBQUM7UUFFdkMsZ0JBQVcsR0FBRyxNQUFNLENBQW1CLElBQUksQ0FBQyxDQUFDO1FBQzdDLGVBQVUsR0FBRyxNQUFNLENBQVksTUFBTSxDQUFDLENBQUM7UUFDdkMsY0FBUyxHQUFHLE1BQU0sQ0FBeUIsSUFBSSxDQUFDLENBQUM7UUFDakQsY0FBUyxHQUFHLE1BQU0sQ0FBeUIsSUFBSSxDQUFDLENBQUM7UUFHakQsZUFBVSxHQUFHLE1BQU0sQ0FBd0IsSUFBSSxDQUFDLENBQUM7UUFDakQsZUFBVSxHQUFHLE1BQU0sQ0FBbUIsSUFBSSxDQUFDLENBQUM7UUFFNUMsc0JBQWlCLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNoQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQ3RDLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDN0IsT0FBTyxTQUFTLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQztRQUNwQyxDQUFDLENBQUMsQ0FBQztRQUVJLE9BQUUsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFRdkIsY0FBUyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQXlCekMsa0JBQWEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDNUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUM3QyxDQUFDLENBQUMsQ0FBQztRQUVILGdCQUFXLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3JDLGtCQUFhLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLGdCQUFXLEdBQUcsTUFBTSxDQUE4QyxJQUFJLENBQUMsQ0FBQztRQUN4RSxhQUFRLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDOUUsMEJBQXFCLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNwQyxPQUFPLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksVUFBVSxDQUFDO1FBQ2pFLENBQUMsQ0FBQyxDQUFDO1FBQ0gsZ0JBQVcsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDckMsa0JBQWEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzVCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDN0IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsa0JBQWEsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDdkMsaUJBQVksR0FBRyxNQUFNLENBQWlCLElBQUksQ0FBQyxDQUFDO1FBQzVDLGtCQUFhLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLG1CQUFjLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3hDLDBCQUFxQixHQUFHLE1BQU0sQ0FBaUIsSUFBSSxDQUFDLENBQUM7UUFDckQscUJBQWdCLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQUFDO1FBQ3pGLGtCQUFhLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzlELHFCQUFnQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLENBQUM7S0FDbEo7SUF6SkMsZ0JBQWdCO0lBQ2hCLElBQStDLEtBQUssQ0FBQyxDQUE0RTtRQUMvSCxJQUFJLENBQUMsSUFBSSxHQUFHLENBQTBCLENBQUM7UUFDdkMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBS0Qsc0JBQXNCO0lBQ3RCLElBQStDLEtBQUssQ0FBQyxDQUFtQjtRQUN0RSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUlELElBQTRCLGNBQWMsQ0FBQyxDQUFVO1FBQ25ELElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQztZQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFDRCxJQUFrQixJQUFJLENBQUMsQ0FBa0I7UUFDdkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUNELElBQWtCLElBQUksQ0FBQyxDQUFrQjtRQUN2QyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBQ0QsSUFBYSxRQUFRLENBQUMsQ0FBVTtRQUM5QixJQUFJLENBQUM7WUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUNELElBQWEsUUFBUSxDQUFDLENBQVU7UUFDOUIsSUFBSSxDQUFDO1lBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFjRCxJQUF1QixTQUFTLENBQUMsQ0FBVTtRQUN6QyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFBRSxRQUFRLENBQUM7UUFDM0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0IsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRO1lBQUUsT0FBTztRQUMzQyxJQUFJLENBQUMsRUFBRTtZQUNMLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtnQkFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQ2pELElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUM7U0FDekI7YUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFO1lBQ2pDLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUM7U0FDeEI7SUFDSCxDQUFDO0lBRUQsSUFBbUIsS0FBSyxDQUFDLENBQVk7UUFDbkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLElBQUksWUFBWSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzlCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3ZCOztZQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUF5QkQsSUFBYyxPQUFPO1FBQ25CLE9BQVEsSUFBSSxDQUFDLElBQThCLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQVMsQ0FBeUIsQ0FBQztJQUMxRyxDQUFDO0lBS0QsZUFBZTtRQUNiLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUMzQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsc0JBQXNCLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsWUFBWSxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLGFBQWEsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDakgsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUN2QixTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNmLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQzlCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVTLG9CQUFvQjtRQUM1QixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7OEdBNUlVLFNBQVM7a0dBQVQsU0FBUywyK0pBRlYsRUFBRTs7MkZBRUQsU0FBUztrQkFKckIsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLEVBQUU7aUJBQ2I7OEJBd0JnRCxLQUFLO3NCQUFuRCxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO2dCQU9oQyxVQUFVO3NCQUFsQixLQUFLO2dCQUd5QyxLQUFLO3NCQUFuRCxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO2dCQU9iLGNBQWM7c0JBQXpDLEtBQUs7dUJBQUMsZUFBZTtnQkFJSixJQUFJO3NCQUFyQixLQUFLO3VCQUFDLEtBQUs7Z0JBR00sSUFBSTtzQkFBckIsS0FBSzt1QkFBQyxLQUFLO2dCQUdDLFFBQVE7c0JBQXBCLEtBQUs7Z0JBR08sUUFBUTtzQkFBcEIsS0FBSztnQkFnQmlCLFNBQVM7c0JBQS9CLEtBQUs7dUJBQUMsVUFBVTtnQkFZRSxLQUFLO3NCQUF2QixLQUFLO3VCQUFDLE1BQU07Z0JBOEJXLFlBQVk7c0JBQW5DLFNBQVM7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRGVzdHJveVJlZiwgSW5wdXQsIFZpZXdDaGlsZCwgYm9vbGVhbkF0dHJpYnV0ZSwgY29tcHV0ZWQsIGluamVjdCwgaW5wdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSW5wdXRTZXJ2aWNlIH0gZnJvbSAnLi9pbnB1dC5zZXJ2aWNlJztcbmltcG9ydCB7IElPYmplY3RMaXRlcmFsLCBJbnB1dFR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvaW5kZXgubW9kZWwnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCBkZWJvdW5jZVRpbWUsIG1lcmdlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGF0ZUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9kYXRlLWlucHV0L2RhdGUtaW5wdXQuY29tcG9uZW50JztcbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZTogJycsXG59KVxuZXhwb3J0IGNsYXNzIElucHV0QmFzZTxcbiAgVEZvcm1Hcm91cCBleHRlbmRzIHtcbiAgICBbSyBpbiBrZXlvZiBURm9ybUdyb3VwXTogQWJzdHJhY3RDb250cm9sPGFueSwgYW55PjtcbiAgfSA9IGFueSxcbiAgVENvbnRyb2wgPSBhbnksXG4gIFRPcHRpb24gPSBhbnksXG4+IHtcbiAgcGxhY2Vob2xkZXIgPSBpbnB1dDxzdHJpbmc+KG51bGwpO1xuICBzdWZmaXggPSBpbnB1dDxzdHJpbmc+KG51bGwpO1xuICBkb250Rm9ybWF0QXNJbnB1dFNpZ25hbCA9IGlucHV0PGJvb2xlYW4+KG51bGwsIHsgYWxpYXM6ICdkb250Rm9ybWF0QXNJbnB1dCcgfSk7XG4gIGR1cGxpY2F0ZUNoZWNrU2lnbmFsID0gaW5wdXQ8Ym9vbGVhbj4obnVsbCwgeyBhbGlhczogJ2R1cGxpY2F0ZUNoZWNrJyB9KTtcbiAgaWRTaWduYWwgPSBpbnB1dCgnaWQnICsgTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpICogMTAwMDAwMCksIHsgYWxpYXM6ICdpZCcgfSk7XG4gIGlucHV0Q29udENsYXNzU2lnbmFsID0gaW5wdXQ8c3RyaW5nPihudWxsLCB7IGFsaWFzOiAnaW5wdXRDb250Q2xhc3MnIH0pO1xuICBzaG93UmVxdWlyZWRUYWdTaWduYWwgPSBpbnB1dDxib29sZWFuPih0cnVlLCB7IGFsaWFzOiAnc2hvd1JlcXVpcmVkVGFnJyB9KTtcbiAgdGV4dGFyZWFSb3dzU2lnbmFsID0gaW5wdXQ8bnVtYmVyPihudWxsLCB7IGFsaWFzOiAndGV4dGFyZWFSb3dzJyB9KTtcbiAgZW5kTGFiZWxTaWduYWwgPSBpbnB1dDxzdHJpbmc+KG51bGwsIHsgYWxpYXM6ICdlbmRMYWJlbCcgfSk7XG4gIGVuZExhYmVsVG9vbHRpcFNpZ25hbCA9IGlucHV0PHN0cmluZz4obnVsbCwgeyBhbGlhczogJ2VuZExhYmVsVG9vbHRpcCcgfSk7XG4gIGxhYmVsU2lnbmFsID0gaW5wdXQ8c3RyaW5nPihudWxsLCB7IGFsaWFzOiAnbGFiZWwnIH0pO1xuXG4gIHJlYWRvbmx5U2lnbmFsID0gaW5wdXQ8Ym9vbGVhbiB8IG51bGw+KG51bGwsIHsgYWxpYXM6ICdyZWFkb25seScgfSk7XG4gIHJlcXVpcmVkU2lnbmFsID0gaW5wdXQ8Ym9vbGVhbiB8IG51bGw+KG51bGwsIHsgYWxpYXM6ICdyZXF1aXJlZCcgfSk7XG5cbiAgLyoqIEZvcm1Hcm91cCAqL1xuICBASW5wdXQoeyByZXF1aXJlZDogZmFsc2UsIGFsaWFzOiAnZm9ybScgfSkgc2V0IF9mb3JtKHY6IEZvcm1Hcm91cDxURm9ybUdyb3VwPiB8IEZvcm1Db250cm9sPFRDb250cm9sPiB8IEFic3RyYWN0Q29udHJvbDxUQ29udHJvbD4pIHtcbiAgICB0aGlzLmZvcm0gPSB2IGFzIEZvcm1Hcm91cDxURm9ybUdyb3VwPjtcbiAgICB0aGlzLmZvcm1TaWduYWwuc2V0KHRoaXMuZm9ybSk7XG4gICAgdGhpcy5saXN0ZW5Ub0NvbnRyb2woKTtcbiAgfVxuXG4gIC8qKiBTaG93IHRoZSBoaW50IHdpdGhvdXQgdGhlIHRvb2x0aXAgKi9cbiAgQElucHV0KCkgaW5saW5lSGludDogYm9vbGVhbjtcblxuICAvKiogRm9ybUNvbnRyb2xOYW1lICovXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiBmYWxzZSwgYWxpYXM6ICduYW1lJyB9KSBzZXQgX25hbWUodjoga2V5b2YgVEZvcm1Hcm91cCkge1xuICAgIHRoaXMubmFtZVNpZ25hbC5zZXQodik7XG4gICAgdGhpcy5saXN0ZW5Ub0NvbnRyb2woKTtcbiAgfVxuXG4gIGluZGV0ZXJtaW5hdGU6IGJvb2xlYW47XG5cbiAgQElucHV0KCdpbmRldGVybWluYXRlJykgc2V0IF9pbmRldGVybWluYXRlKHY6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmluZGV0ZXJtaW5hdGUgPSB2O1xuICAgIGlmICh2KSB0aGlzLmNvbnRyb2w/LnBhdGNoVmFsdWUoZmFsc2UpO1xuICB9XG4gIEBJbnB1dCgnbWF4Jykgc2V0IF9tYXgodjogbnVtYmVyIHwgc3RyaW5nKSB7XG4gICAgdGhpcy5tYXhTaWduYWwuc2V0KHYpO1xuICB9XG4gIEBJbnB1dCgnbWluJykgc2V0IF9taW4odjogbnVtYmVyIHwgc3RyaW5nKSB7XG4gICAgdGhpcy5taW5TaWduYWwuc2V0KHYpO1xuICB9XG4gIEBJbnB1dCgpIHNldCBtYXhUb2RheSh2OiBib29sZWFuKSB7XG4gICAgaWYgKHYpIHRoaXMubWF4U2lnbmFsLnNldChuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkpO1xuICB9XG4gIEBJbnB1dCgpIHNldCBtaW5Ub2RheSh2OiBib29sZWFuKSB7XG4gICAgaWYgKHYpIHRoaXMubWluU2lnbmFsLnNldChuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkpO1xuICB9XG4gIHByZWZpeFNpZ25hbCA9IGlucHV0PHN0cmluZz4obnVsbCwgeyBhbGlhczogJ3ByZWZpeCcgfSk7XG4gIG1pbmlTaWduYWwgPSBpbnB1dDxib29sZWFuPihudWxsLCB7IGFsaWFzOiAnbWluaScgfSk7XG4gIGlucENsU2lnbmFsID0gaW5wdXQ8c3RyaW5nPignY29udHJvbC1iZy1ncmF5JywgeyBhbGlhczogJ2lucENsJyB9KTtcbiAgc2hvd0VtcHR5T3B0aW9uU2lnbmFsID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgYXMgdW5kZWZpbmVkLCBhbGlhczogJ3Nob3dFbXB0eU9wdGlvbicgfSk7XG4gIHNob3dMYWJlbFNpZ25hbCA9IGlucHV0PGJvb2xlYW4+KHRydWUsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIGFzIHVuZGVmaW5lZCwgYWxpYXM6ICdzaG93TGFiZWwnIH0pO1xuICBzaG93VmFsaWRhdGlvblNpZ25hbCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlLCB7IGFsaWFzOiAnc2hvd1ZhbGlkYXRpb24nLCB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgYXMgdW5kZWZpbmVkIH0pO1xuICBzaG93VmFsaWRhdGlvbkljb25TaWduYWwgPSBpbnB1dDxib29sZWFuPihudWxsLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSBhcyB1bmRlZmluZWQsIGFsaWFzOiAnc2hvd1ZhbGlkYXRpb25JY29uJyB9KTtcbiAgc21hbGxTaWduYWwgPSBpbnB1dDxib29sZWFuPihudWxsLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSBhcyB1bmRlZmluZWQsIGFsaWFzOiAnc21hbGwnIH0pO1xuICBzaG93VmFsaWRhdGlvbk1zZ1NpZ25hbCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSBhcyB1bmRlZmluZWQsIGFsaWFzOiAnc2hvd1ZhbGlkYXRpb25Nc2cnIH0pO1xuICBzdGFja2VkU2lnbmFsID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgYXMgdW5kZWZpbmVkLCBhbGlhczogJ3N0YWNrZWQnIH0pO1xuICBkZWJ1ZyA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIGNsZWFyT25EaXNhYmxlID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG5cbiAgQElucHV0KCdkaXNhYmxlZCcpIHNldCBfZGlzYWJsZWQodjogYm9vbGVhbikge1xuICAgIGlmICh0aGlzLmRlYnVnKCkpIGRlYnVnZ2VyO1xuICAgIHRoaXMuZGlzYWJsZWRTaWduYWwuc2V0KHYpO1xuICAgIGlmICh0aGlzLmNvbnRyb2w/LnBhcmVudD8uZGlzYWJsZWQpIHJldHVybjtcbiAgICBpZiAodikge1xuICAgICAgaWYgKHRoaXMuY2xlYXJPbkRpc2FibGUoKSkgdGhpcy5jb250cm9sPy5yZXNldCgpO1xuICAgICAgdGhpcy5jb250cm9sPy5kaXNhYmxlKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmNvbnRyb2w/LmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmNvbnRyb2w/LmVuYWJsZSgpO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgndHlwZScpIHNldCBfdHlwZSh2OiBJbnB1dFR5cGUpIHtcbiAgICB0aGlzLm9UeXBlU2lnbmFsLnNldCh2KTtcbiAgICBpZiAodiA9PSAncGVyY2VudGFnZScpIHtcbiAgICAgIHRoaXMudHlwZVNpZ25hbC5zZXQoJ251bWJlcicpO1xuICAgICAgdGhpcy5tYXhTaWduYWwuc2V0KDEwMCk7XG4gICAgICB0aGlzLm1pblNpZ25hbC5zZXQoMCk7XG4gICAgfSBlbHNlIHRoaXMudHlwZVNpZ25hbC5zZXQodik7XG4gIH1cblxuICBzaG93UGFzc3dvcmRTaWduYWwgPSBzaWduYWw8Ym9vbGVhbj4obnVsbCk7XG5cbiAgZGlzYWJsZWRTaWduYWwgPSBzaWduYWw8Ym9vbGVhbj4obnVsbCk7XG5cbiAgb1R5cGVTaWduYWwgPSBzaWduYWw8SW5wdXRUeXBlIHwgbnVsbD4obnVsbCk7XG4gIHR5cGVTaWduYWwgPSBzaWduYWw8SW5wdXRUeXBlPigndGV4dCcpO1xuICBtYXhTaWduYWwgPSBzaWduYWw8bnVtYmVyIHwgc3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gIG1pblNpZ25hbCA9IHNpZ25hbDxudW1iZXIgfCBzdHJpbmcgfCBudWxsPihudWxsKTtcblxuICBmb3JtOiBGb3JtR3JvdXA8VEZvcm1Hcm91cD47XG4gIGZvcm1TaWduYWwgPSBzaWduYWw8Rm9ybUdyb3VwPFRGb3JtR3JvdXA+PihudWxsKTtcbiAgbmFtZVNpZ25hbCA9IHNpZ25hbDxrZXlvZiBURm9ybUdyb3VwPihudWxsKTtcblxuICBjb21wdXRlZFNob3dMYWJlbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBzaG93TGFiZWwgPSB0aGlzLnNob3dMYWJlbFNpZ25hbCgpLFxuICAgICAgbGFiZWwgPSB0aGlzLmxhYmVsU2lnbmFsKCk7XG4gICAgcmV0dXJuIHNob3dMYWJlbCAmJiBsYWJlbCAhPSBudWxsO1xuICB9KTtcblxuICBwdWJsaWMgaVMgPSBpbmplY3QoSW5wdXRTZXJ2aWNlKTtcblxuICBAVmlld0NoaWxkKCdkYXRlSW5wdXQnKSBkYXRlSW5wdXRSZWY/OiBEYXRlSW5wdXRDb21wb25lbnQ7XG5cbiAgcHJvdGVjdGVkIGdldCBjb250cm9sKCkge1xuICAgIHJldHVybiAodGhpcy5mb3JtIGFzIEZvcm1Hcm91cDxURm9ybUdyb3VwPik/LmNvbnRyb2xzW3RoaXMubmFtZVNpZ25hbCgpIGFzIGFueV0gYXMgQWJzdHJhY3RDb250cm9sPGFueT47XG4gIH1cblxuICBwcm90ZWN0ZWQgZGVzdHJveWVyID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICBwcm90ZWN0ZWQgY29udHJvbFZhbHVlQ2hhbmdlc1N1YjogU3Vic2NyaXB0aW9uO1xuXG4gIGxpc3RlblRvQ29udHJvbCgpIHtcbiAgICB0aGlzLmNvbnRyb2xWYWx1ZUNoYW5nZXNTdWI/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy51cGRhdGVDb250cm9sU2lnbmFscygpO1xuICAgIHRoaXMuY29udHJvbFZhbHVlQ2hhbmdlc1N1YiA9IG1lcmdlKHRoaXMuY29udHJvbD8udmFsdWVDaGFuZ2VzIHx8IG9mKG51bGwpLCB0aGlzLmNvbnRyb2w/LnN0YXR1c0NoYW5nZXMgfHwgb2YobnVsbCkpXG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUoMTAwKSlcbiAgICAgIC5zdWJzY3JpYmUoKHIpID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVDb250cm9sU2lnbmFscygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdXBkYXRlQ29udHJvbFNpZ25hbHMoKSB7XG4gICAgdGhpcy52YWxpZFNpZ25hbC5zZXQodGhpcy5jb250cm9sPy52YWxpZCk7XG4gICAgdGhpcy5pbnZhbGlkU2lnbmFsLnNldCh0aGlzLmNvbnRyb2w/LmludmFsaWQpO1xuICAgIHRoaXMuZGlydHlTaWduYWwuc2V0KHRoaXMuY29udHJvbD8uZGlydHkpO1xuICAgIHRoaXMudG91Y2hlZFNpZ25hbC5zZXQodGhpcy5jb250cm9sPy50b3VjaGVkKTtcbiAgICB0aGlzLmVycm9yc1NpZ25hbC5zZXQodGhpcy5jb250cm9sPy5lcnJvcnMpO1xuICAgIHRoaXMucGVuZGluZ1NpZ25hbC5zZXQodGhpcy5jb250cm9sPy5wZW5kaW5nKTtcbiAgICB0aGlzLnByaXN0aW5lU2lnbmFsLnNldCh0aGlzLmNvbnRyb2w/LnByaXN0aW5lKTtcbiAgICB0aGlzLnZhbHVlU2lnbmFsLnNldCh0aGlzLmNvbnRyb2w/LmdldFJhd1ZhbHVlKCkpO1xuICAgIHRoaXMuY29udHJvbFJlcXVpcmVkU2lnbmFsLnNldCh0aGlzLmNvbnRyb2w/Lmhhc1ZhbGlkYXRvcihWYWxpZGF0b3JzLnJlcXVpcmVkKSk7XG4gIH1cblxuICBkZXN0cm95ZXJGdW5jID0gdGhpcy5kZXN0cm95ZXIub25EZXN0cm95KCgpID0+IHtcbiAgICBjb25zb2xlLmxvZygnZHJvcHBlZCBpbnB1dCBsaXN0ZW5lcicpO1xuICAgIHRoaXMuY29udHJvbFZhbHVlQ2hhbmdlc1N1Yj8udW5zdWJzY3JpYmUoKTtcbiAgfSk7XG5cbiAgdmFsaWRTaWduYWwgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBpbnZhbGlkU2lnbmFsID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgdmFsdWVTaWduYWwgPSBzaWduYWw8UmV0dXJuVHlwZTx0eXBlb2YgdGhpcy5jb250cm9sLmdldFJhd1ZhbHVlPj4obnVsbCk7XG4gIGhhc1ZhbHVlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy52YWx1ZVNpZ25hbCgpPy50b1N0cmluZygpPy50cmltKCk/Lmxlbmd0aCA+IDApO1xuICBpbnZhbGlkQ2hlY2tib3hTaWduYWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuaW52YWxpZFNpZ25hbCgpICYmIHRoaXMudHlwZVNpZ25hbCgpID09ICdjaGVja2JveCc7XG4gIH0pO1xuICBkaXJ0eVNpZ25hbCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIGNvbnRyb2xTaWduYWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgdGhpcy52YWxpZFNpZ25hbCgpO1xuICAgIHRoaXMuaW52YWxpZFNpZ25hbCgpO1xuICAgIHRoaXMuZGlydHlTaWduYWwoKTtcbiAgICB0aGlzLnRvdWNoZWRTaWduYWwoKTtcbiAgICB0aGlzLmVycm9yc1NpZ25hbCgpO1xuICAgIHRoaXMucGVuZGluZ1NpZ25hbCgpO1xuICAgIHRoaXMucHJpc3RpbmVTaWduYWwoKTtcbiAgICB0aGlzLnZhbHVlU2lnbmFsKCk7XG4gICAgdGhpcy5jb250cm9sUmVxdWlyZWRTaWduYWwoKTtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sO1xuICB9KTtcbiAgdG91Y2hlZFNpZ25hbCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIGVycm9yc1NpZ25hbCA9IHNpZ25hbDxJT2JqZWN0TGl0ZXJhbD4obnVsbCk7XG4gIHBlbmRpbmdTaWduYWwgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcmlzdGluZVNpZ25hbCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIGNvbnRyb2xSZXF1aXJlZFNpZ25hbCA9IHNpZ25hbDxib29sZWFuIHwgbnVsbD4obnVsbCk7XG4gIGlzUmVxdWlyZWRTaWduYWwgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnJlcXVpcmVkU2lnbmFsKCkgfHwgdGhpcy5jb250cm9sUmVxdWlyZWRTaWduYWwoKSk7XG4gIG5hbWVTdHJTaWduYWwgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm5hbWVTaWduYWwoKT8udG9TdHJpbmcoKSk7XG4gIGlucHV0Q2xhc3NTaWduYWwgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmlTLmlucHV0Q2xhc3ModGhpcy5pbnBDbFNpZ25hbCgpLCB0aGlzLnZhbGlkU2lnbmFsKCksIHRoaXMuaW52YWxpZFNpZ25hbCgpLCB0aGlzLnNob3dWYWxpZGF0aW9uU2lnbmFsKCkpKTtcbn1cbiJdfQ==
|