@ieeesa-npm/presentation 0.33.18 → 0.33.20

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.
@@ -23,10 +23,11 @@ import * as i0 from "@angular/core";
23
23
  import * as i1 from "@angular/forms";
24
24
  import * as i2 from "../../services/datepicker.service";
25
25
  import * as i3 from "../../services/form-utility.service";
26
- import * as i4 from "@angular/common";
27
- import * as i5 from "@angular/material/input";
28
- import * as i6 from "@angular/material/form-field";
29
- import * as i7 from "@angular/material/datepicker";
26
+ import * as i4 from "../../services/form-overlay-bounds.service";
27
+ import * as i5 from "@angular/common";
28
+ import * as i6 from "@angular/material/input";
29
+ import * as i7 from "@angular/material/form-field";
30
+ import * as i8 from "@angular/material/datepicker";
30
31
  const moment = moment_;
31
32
  export class CustomDateAdapter extends MomentDateAdapter {
32
33
  /**
@@ -108,12 +109,15 @@ export class DatePickerComponent {
108
109
  // eslint-disable-next-line no-unused-vars
109
110
  formUtilityService,
110
111
  // eslint-disable-next-line no-unused-vars
112
+ formOverlayBounds,
113
+ // eslint-disable-next-line no-unused-vars
111
114
  elementRef // eslint-disable-next-line no-empty-function,
112
115
  ) {
113
116
  this.fb = fb;
114
117
  this.changeDetectorRef = changeDetectorRef;
115
118
  this.datepickerService = datepickerService;
116
119
  this.formUtilityService = formUtilityService;
120
+ this.formOverlayBounds = formOverlayBounds;
117
121
  this.elementRef = elementRef;
118
122
  this.datePickerHeader = DatePickerHeaderComponent;
119
123
  this.calendarTypes = CalendarType;
@@ -276,17 +280,10 @@ export class DatePickerComponent {
276
280
  }
277
281
  setOverlayClipBounds() {
278
282
  const formBody = this.getFormOverlayScrollContainer();
279
- const documentElement = this.elementRef.nativeElement.ownerDocument
280
- .documentElement;
281
- const viewportHeight = this.elementRef.nativeElement.ownerDocument.defaultView?.innerHeight ?? 0;
282
- if (!formBody || !viewportHeight)
283
+ if (!formBody)
283
284
  return;
284
- const formBodyRect = formBody.getBoundingClientRect();
285
- documentElement.style.setProperty('--ieeesa-form-overlay-clip-top', `${Math.max(0, Math.floor(formBodyRect.top))}px`);
286
- documentElement.style.setProperty('--ieeesa-form-overlay-clip-bottom', `${Math.max(0, viewportHeight - Math.ceil(formBodyRect.bottom))}px`);
287
285
  this.formOverlayScrollContainer = formBody;
288
286
  this.elementRef.nativeElement.ownerDocument.addEventListener('wheel', this.overlayWheelListener, { capture: true, passive: false });
289
- documentElement.classList.add('ieeesa-form-overlay-open');
290
287
  }
291
288
  scrollFieldIntoViewForCalendar() {
292
289
  const formBody = this.getFormOverlayScrollContainer();
@@ -302,30 +299,16 @@ export class DatePickerComponent {
302
299
  }
303
300
  }
304
301
  getFormOverlayScrollContainer() {
305
- const candidates = [
306
- this.elementRef.nativeElement.closest('.ieeesa-dynamic-form__body'),
307
- this.elementRef.nativeElement.closest('.ieeesa-stepper__content'),
308
- ];
309
- return (candidates.find((element) => {
310
- if (!element)
311
- return false;
312
- const overflowY = getComputedStyle(element).overflowY;
313
- return ((overflowY === 'auto' || overflowY === 'scroll') &&
314
- element.scrollHeight > element.clientHeight);
315
- }) ??
316
- candidates.find((element) => !!element) ??
317
- null);
302
+ // Containment is owned by FormOverlayBoundsService, which also keeps the clip
303
+ // band current while the page scrolls.
304
+ return this.formOverlayBounds.contain(this.elementRef.nativeElement);
318
305
  }
319
306
  clearOverlayClipBounds() {
320
307
  this.elementRef.nativeElement.ownerDocument.removeEventListener('wheel', this.overlayWheelListener, true);
321
308
  this.formOverlayScrollContainer = undefined;
322
- const documentElement = this.elementRef.nativeElement.ownerDocument
323
- .documentElement;
324
- documentElement.classList.remove('ieeesa-form-overlay-open');
325
- documentElement.style.removeProperty('--ieeesa-form-overlay-clip-top');
326
- documentElement.style.removeProperty('--ieeesa-form-overlay-clip-bottom');
309
+ this.formOverlayBounds.release();
327
310
  }
328
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DatePickerComponent, deps: [{ token: i1.FormBuilder }, { token: i0.ChangeDetectorRef }, { token: i2.DatepickerService }, { token: i3.FormUtilityService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
311
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DatePickerComponent, deps: [{ token: i1.FormBuilder }, { token: i0.ChangeDetectorRef }, { token: i2.DatepickerService }, { token: i3.FormUtilityService }, { token: i4.FormOverlayBoundsService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
329
312
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DatePickerComponent, isStandalone: true, selector: "ieeesa-date-picker", inputs: { selectedDates: "selectedDates", selectedRange: "selectedRange", calendarType: "calendarType", formControlName: "formControlName", placeholderLabel: "placeholderLabel", isDisabled: "isDisabled", isLabelAlignedLeft: "isLabelAlignedLeft", datepickerLabel: "datepickerLabel", dateRange: "dateRange", minDate: "minDate", maxDate: "maxDate" }, outputs: { selectedDate: "selectedDate", selectedDateRange: "selectedDateRange" }, providers: [
330
313
  { provide: MAT_MOMENT_DATE_ADAPTER_OPTIONS, useValue: { useUtc: true } },
331
314
  {
@@ -342,7 +325,7 @@ export class DatePickerComponent {
342
325
  useFactory: (overlay) => () => overlay.scrollStrategies.reposition(),
343
326
  deps: [Overlay],
344
327
  },
345
- ], ngImport: i0, template: "<div class=\"ieeesa-datepicker\">\r\n <div\r\n [formGroup]=\"group\"\r\n *ngIf=\"calendarType === calendarTypes.SINGLE_DATE_SELECTION\"\r\n class=\"ieeesa-datepicker--single-selection\"\r\n [ngClass]=\"!isRequired() ? 'ieeesa-datepicker__valid-date' : ''\"\r\n [ngClass]=\"{\r\n 'ieeesa-datepicker__valid-date': !isRequired(),\r\n 'ieeesa-datepicker__label-left': isLabelAlignedLeft,\r\n 'ieeesa-datepicker__label-top': !isLabelAlignedLeft\r\n }\"\r\n >\r\n <mat-label\r\n *ngIf=\"datepickerLabel\"\r\n class=\"ieeesa-body-sm-14 ieeesa-datepicker__label\"\r\n >{{ datepickerLabel }}\r\n </mat-label>\r\n <mat-form-field>\r\n <input\r\n matInput\r\n (dateInput)=\"onDateChange()\"\r\n (click)=\"picker.open()\"\r\n [matDatepicker]=\"picker\"\r\n [attr.aria-label]=\"config.ariaLabel\"\r\n [aria-describedby]=\"config.ariaDescribedById ?? ''\"\r\n [min]=\"config?.datePicker?.minDate ?? minDate\"\r\n [max]=\"config?.datePicker?.maxDate ?? maxDate\"\r\n [formControlName]=\"config.controlName\"\r\n [placeholder]=\"\r\n placeholderLabel ?? buttonActionsInfo?.datePicker?.dateFormatLabel\r\n \"\r\n #calendar\r\n readonly\r\n />\r\n <mat-datepicker-toggle\r\n class=\"mat-datepicker-toggle\"\r\n matIconSuffix\r\n [for]=\"picker\"\r\n >\r\n <svg matDatepickerToggleIcon class=\"ieeesa-datepicker__datepicker-icon\">\r\n <use\r\n [attr.xlink:href]=\"buttonActionsInfo?.datePicker?.datePickerIcon\"\r\n ></use>\r\n </svg>\r\n </mat-datepicker-toggle>\r\n <mat-datepicker\r\n #picker\r\n yPosition=\"below\"\r\n [calendarHeaderComponent]=\"datePickerHeader\"\r\n (opened)=\"onDatePickerOpen(config.controlName)\"\r\n (closed)=\"onDatePickerClose()\"\r\n >\r\n </mat-datepicker>\r\n </mat-form-field>\r\n <ieeesa-form-error [formGroup]=\"group\" [config]=\"config\">\r\n </ieeesa-form-error>\r\n <ieeesa-form-support-text\r\n [formGroup]=\"group\"\r\n [config]=\"config\"\r\n ></ieeesa-form-support-text>\r\n </div>\r\n\r\n <div\r\n [formGroup]=\"group\"\r\n *ngIf=\"calendarType === calendarTypes.DATE_RANGE_SELECTION\"\r\n class=\"ieeesa-datepicker--multi-selection\"\r\n [ngClass]=\"\r\n isLabelAlignedLeft\r\n ? 'ieeesa-datepicker__label-left'\r\n : 'ieeesa-datepicker__label-top'\r\n \"\r\n >\r\n <mat-label\r\n *ngIf=\"datepickerLabel\"\r\n class=\"ieeesa-datepicker__label ieeesa-body-sm-14\"\r\n >{{ datepickerLabel }}\r\n </mat-label>\r\n <mat-form-field>\r\n <mat-date-range-input [rangePicker]=\"rangePicker\" [formGroup]=\"group\">\r\n <input\r\n matStartDate\r\n matInput\r\n [formControlName]=\"config.dateRangeControls?.startDate ?? ''\"\r\n [placeholder]=\"buttonActionsInfo?.datePicker?.dateFormatLabel + ' - '\"\r\n (dateChange)=\"onDateRangeChange()\"\r\n />\r\n <input\r\n matEndDate\r\n matInput\r\n [formControlName]=\"config.dateRangeControls?.endDate ?? ''\"\r\n [placeholder]=\"buttonActionsInfo?.datePicker?.dateFormatLabel\"\r\n (dateChange)=\"onDateRangeChange()\"\r\n />\r\n </mat-date-range-input>\r\n <mat-datepicker-toggle\r\n class=\"mat-datepicker-toggle\"\r\n matIconSuffix\r\n [for]=\"rangePicker\"\r\n ></mat-datepicker-toggle>\r\n <mat-date-range-picker\r\n #rangePicker\r\n yPosition=\"below\"\r\n [calendarHeaderComponent]=\"datePickerHeader\"\r\n (dateInput)=\"onDateRangeChange()\"\r\n (opened)=\"onDatePickerOpen(config.controlName)\"\r\n (closed)=\"onDatePickerClose()\"\r\n >\r\n </mat-date-range-picker>\r\n </mat-form-field>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"calendarType === calendarTypes.CALENDAR\"\r\n class=\"ieeesa-datepicker--calendar\"\r\n >\r\n <mat-calendar\r\n [headerComponent]=\"datePickerHeader\"\r\n [(selected)]=\"calendarSelectedDate\"\r\n >\r\n </mat-calendar>\r\n </div>\r\n</div>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.5625rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625rem;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375rem;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-32{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875rem;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:32px;color:#00629b;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625rem;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-btn-label-lg-bold-16{font-family:Calibri Regular;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#00629b;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#1c1b1f;letter-spacing:.015625em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-sm-12{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.75rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-color-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:18px;color:#49454f;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:focus{background:#1f75a7}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:focus{background:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:#1d192b1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:#1c1b1f1f;color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:focus{background-color:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:#6750a41f}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1rem;border:1px solid #cac4d0;background:#fff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-cancel-modal-confirm-dialog{width:25vw!important}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation{padding:1.5em 1.5em 1em}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation .mat-mdc-dialog-content{text-align:center;padding:0 0 1em!important}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: unset}@media (max-width: 768px){.ieeesa-cancel-modal-confirm-dialog{width:90vw!important}}.ieeesa-wrapper-border{border:1px solid #b2b7be;border-top:none;padding:1.5em;border-radius:0 0 4px 4px}.ieeesa-datepicker{width:auto}.ieeesa-datepicker__label-left{display:flex}.ieeesa-datepicker__label-top{display:block}.ieeesa-datepicker__datepicker-icon{position:relative;left:6px}.ieeesa-datepicker .mat-mdc-icon-button{padding:0}.ieeesa-datepicker ::placeholder{color:#63666a;font-size:1rem}.ieeesa-datepicker .ieeesa-body-sm-14{font-size:.75rem;color:#49454f}.ieeesa-datepicker__date-picker-button{background:#fff}.ieeesa-datepicker--calendar{background:#fff;border-radius:16px}.ieeesa-datepicker--calendar .mat-calendar-body-cell-container{margin:0;padding-top:24px 0}.ieeesa-datepicker--calendar .mat-calendar-table-header th,.ieeesa-datepicker--calendar .mat-calendar-body td{height:24px!important;padding-top:24px!important;width:24px!important;padding-bottom:24px!important}.ieeesa-datepicker--calendar .mat-calendar-body-selected{background-color:#00629b;color:#fff;border:none;box-shadow:none}.ieeesa-datepicker--calendar .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#00629b;color:#fff;border:none;box-shadow:none}.ieeesa-datepicker--calendar .mat-calendar-content{padding:0 8px 35px}.ieeesa-datepicker .mat-mdc-form-field{width:-webkit-fill-available;width:-moz-available}.ieeesa-datepicker .mat-mdc-text-field-wrapper.mdc-text-field.mdc-text-field--outlined.mdc-text-field--no-label,.ieeesa-datepicker .mdc-text-field--filled{border-bottom:1px solid #878b8f;height:40px;align-items:center;background:#fff!important;border-top:1px solid #878b8f;border-right:1px solid #878b8f;border-left:1px solid #878b8f;border-radius:4px}.ieeesa-datepicker .mat-mdc-form-field-focus-overlay{background:#fff}.ieeesa-datepicker .mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border:none}.ieeesa-datepicker .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-text-field__input,.ieeesa-datepicker .mdc-text-field--no-label:not(.mdc-text-field--textarea) .mat-mdc-form-field-input-control.mdc-text-field__input{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-datepicker .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-text-field__input::placeholder,.ieeesa-datepicker .mdc-text-field--no-label:not(.mdc-text-field--textarea) .mat-mdc-form-field-input-control.mdc-text-field__input::placeholder{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#63666a;letter-spacing:.03125em}.ieeesa-datepicker .mat-mdc-form-field-hint{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:16px;color:#49454f;letter-spacing:.025em}.ieeesa-datepicker .mat-datepicker-toggle-default-icon{width:18px;height:20px;fill:#104a6b}.ieeesa-datepicker:has(.mdc-text-field--focused) .ieeesa-datepicker__label{color:#00629b!important}.ieeesa-datepicker:has(.mdc-text-field--focused) .mdc-text-field--filled{border-top:2px solid #00629b;border-right:2px solid #00629b;border-left:2px solid #00629b}.ieeesa-datepicker:has(.mdc-text-field--focused) .mdc-text-field--filled .mdc-line-ripple:after{border-bottom:2px solid #00629b}.ieeesa-datepicker:has(.mdc-text-field--invalid) .ieeesa-datepicker__label{color:#ba0c2f!important}.ieeesa-datepicker:has(.mdc-text-field--invalid) .mdc-text-field--filled{border-bottom:none;border-top:2px solid #ba0c2f;border-right:2px solid #ba0c2f;border-left:2px solid #ba0c2f}.ieeesa-datepicker:has(.mdc-text-field--invalid) .mdc-text-field--filled .mdc-line-ripple:before,.ieeesa-datepicker:has(.mdc-text-field--invalid) .mdc-text-field--filled .mdc-line-ripple:after{border-bottom:2px solid #ba0c2f!important}.mat-datepicker-popup .mat-calendar-content{min-height:280px;padding-bottom:24px}.mat-datepicker-popup .mat-calendar-content[ng-reflect-ng-switch=year] .mat-calendar-body{height:200px}.mat-datepicker-popup .mat-calendar-content[ng-reflect-ng-switch=year] .mat-calendar-body tr[aria-hidden=true]{display:none}.mat-datepicker-popup .mat-calendar-content[ng-reflect-ng-switch=year] .mat-calendar-body tr .mat-calendar-body-cell{height:40px}.mat-datepicker-popup .mat-datepicker-content-container{background:#fff;border-radius:4px;box-shadow:0 2px 6px 2px #00000026,0 1px 2px #0000004d}.mat-datepicker-popup .mat-datepicker-content-container .mat-calendar-body-cell-content{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#1c1b1f;letter-spacing:.03125em}.mat-datepicker-popup .mat-datepicker-content-container .mat-calendar-body-selected{background-color:#00629b;color:#fff;border:none;box-shadow:none}.mat-datepicker-popup .mat-datepicker-content-container .mat-calendar-body-label{padding-top:0!important;padding-bottom:0!important}.mat-datepicker-popup .mat-datepicker-content-container .mat-calendar-body-in-range:before{background-color:#a7a8aa;color:#49454f}.mat-datepicker-popup .mat-datepicker-content{border-radius:28px}.mat-datepicker-popup .mat-calendar-table-header{position:relative;top:25px}.mat-datepicker-popup .mat-calendar-table-header th,.mat-datepicker-popup .mat-calendar-body td{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#000;letter-spacing:.03125em}.mat-datepicker-popup .mat-calendar-table-header-divider,.mat-datepicker-popup .mat-calendar-body tr:first-child td:only-child{display:none}.mat-datepicker-popup .mat-calendar-body tr:first-child td:first-child:not(:only-child){visibility:hidden}.mat-datepicker-popup .mat-calendar-body{position:relative;top:20px}.mat-datepicker-popup .mat-mdc-menu-panel{min-width:360px;width:auto}.mat-datepicker-popup .mat-calendar-body-today{border-color:#00629b;color:#00629b}.mat-datepicker-popup .mat-datepicker-actions{padding:15px 10px 10px;justify-content:center}.mat-datepicker-popup .mat-datepicker-toggle{color:#49454f}html.ieeesa-form-overlay-open .cdk-overlay-container:has(.mat-datepicker-popup):not(:has(.mat-mdc-dialog-container)){z-index:4}html.ieeesa-form-overlay-open .cdk-overlay-container:has(.mat-datepicker-popup):not(:has(.mat-mdc-dialog-container)){clip-path:inset(var(--ieeesa-form-overlay-clip-top, 0) 0 var(--ieeesa-form-overlay-clip-bottom, 0) 0)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: FormErrorComponent, selector: "ieeesa-form-error", inputs: ["formGroup", "config", "submitResponse"] }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "ngmodule", type: MatMenuModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i7.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: i7.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i7.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i7.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "directive", type: i7.MatDatepickerToggleIcon, selector: "[matDatepickerToggleIcon]" }, { kind: "component", type: i7.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i7.MatStartDate, selector: "input[matStartDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i7.MatEndDate, selector: "input[matEndDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i7.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: FormSupportTextComponent, selector: "ieeesa-form-support-text", inputs: ["formGroup", "config"], outputs: ["supportTextLinkClick"] }], encapsulation: i0.ViewEncapsulation.None }); }
328
+ ], ngImport: i0, template: "<div class=\"ieeesa-datepicker\">\r\n <div\r\n [formGroup]=\"group\"\r\n *ngIf=\"calendarType === calendarTypes.SINGLE_DATE_SELECTION\"\r\n class=\"ieeesa-datepicker--single-selection\"\r\n [ngClass]=\"!isRequired() ? 'ieeesa-datepicker__valid-date' : ''\"\r\n [ngClass]=\"{\r\n 'ieeesa-datepicker__valid-date': !isRequired(),\r\n 'ieeesa-datepicker__label-left': isLabelAlignedLeft,\r\n 'ieeesa-datepicker__label-top': !isLabelAlignedLeft\r\n }\"\r\n >\r\n <mat-label\r\n *ngIf=\"datepickerLabel\"\r\n class=\"ieeesa-body-sm-14 ieeesa-datepicker__label\"\r\n >{{ datepickerLabel }}\r\n </mat-label>\r\n <mat-form-field>\r\n <input\r\n matInput\r\n (dateInput)=\"onDateChange()\"\r\n (click)=\"picker.open()\"\r\n [matDatepicker]=\"picker\"\r\n [attr.aria-label]=\"config.ariaLabel\"\r\n [aria-describedby]=\"config.ariaDescribedById ?? ''\"\r\n [min]=\"config?.datePicker?.minDate ?? minDate\"\r\n [max]=\"config?.datePicker?.maxDate ?? maxDate\"\r\n [formControlName]=\"config.controlName\"\r\n [placeholder]=\"\r\n placeholderLabel ?? buttonActionsInfo?.datePicker?.dateFormatLabel\r\n \"\r\n #calendar\r\n readonly\r\n />\r\n <mat-datepicker-toggle\r\n class=\"mat-datepicker-toggle\"\r\n matIconSuffix\r\n [for]=\"picker\"\r\n >\r\n <svg matDatepickerToggleIcon class=\"ieeesa-datepicker__datepicker-icon\">\r\n <use\r\n [attr.xlink:href]=\"buttonActionsInfo?.datePicker?.datePickerIcon\"\r\n ></use>\r\n </svg>\r\n </mat-datepicker-toggle>\r\n <mat-datepicker\r\n #picker\r\n yPosition=\"below\"\r\n [calendarHeaderComponent]=\"datePickerHeader\"\r\n (opened)=\"onDatePickerOpen(config.controlName)\"\r\n (closed)=\"onDatePickerClose()\"\r\n >\r\n </mat-datepicker>\r\n </mat-form-field>\r\n <ieeesa-form-error [formGroup]=\"group\" [config]=\"config\">\r\n </ieeesa-form-error>\r\n <ieeesa-form-support-text\r\n [formGroup]=\"group\"\r\n [config]=\"config\"\r\n ></ieeesa-form-support-text>\r\n </div>\r\n\r\n <div\r\n [formGroup]=\"group\"\r\n *ngIf=\"calendarType === calendarTypes.DATE_RANGE_SELECTION\"\r\n class=\"ieeesa-datepicker--multi-selection\"\r\n [ngClass]=\"\r\n isLabelAlignedLeft\r\n ? 'ieeesa-datepicker__label-left'\r\n : 'ieeesa-datepicker__label-top'\r\n \"\r\n >\r\n <mat-label\r\n *ngIf=\"datepickerLabel\"\r\n class=\"ieeesa-datepicker__label ieeesa-body-sm-14\"\r\n >{{ datepickerLabel }}\r\n </mat-label>\r\n <mat-form-field>\r\n <mat-date-range-input [rangePicker]=\"rangePicker\" [formGroup]=\"group\">\r\n <input\r\n matStartDate\r\n matInput\r\n [formControlName]=\"config.dateRangeControls?.startDate ?? ''\"\r\n [placeholder]=\"buttonActionsInfo?.datePicker?.dateFormatLabel + ' - '\"\r\n (dateChange)=\"onDateRangeChange()\"\r\n />\r\n <input\r\n matEndDate\r\n matInput\r\n [formControlName]=\"config.dateRangeControls?.endDate ?? ''\"\r\n [placeholder]=\"buttonActionsInfo?.datePicker?.dateFormatLabel\"\r\n (dateChange)=\"onDateRangeChange()\"\r\n />\r\n </mat-date-range-input>\r\n <mat-datepicker-toggle\r\n class=\"mat-datepicker-toggle\"\r\n matIconSuffix\r\n [for]=\"rangePicker\"\r\n ></mat-datepicker-toggle>\r\n <mat-date-range-picker\r\n #rangePicker\r\n yPosition=\"below\"\r\n [calendarHeaderComponent]=\"datePickerHeader\"\r\n (dateInput)=\"onDateRangeChange()\"\r\n (opened)=\"onDatePickerOpen(config.controlName)\"\r\n (closed)=\"onDatePickerClose()\"\r\n >\r\n </mat-date-range-picker>\r\n </mat-form-field>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"calendarType === calendarTypes.CALENDAR\"\r\n class=\"ieeesa-datepicker--calendar\"\r\n >\r\n <mat-calendar\r\n [headerComponent]=\"datePickerHeader\"\r\n [(selected)]=\"calendarSelectedDate\"\r\n >\r\n </mat-calendar>\r\n </div>\r\n</div>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.5625rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625rem;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375rem;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-32{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875rem;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:32px;color:#00629b;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625rem;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-btn-label-lg-bold-16{font-family:Calibri Regular;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#00629b;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#1c1b1f;letter-spacing:.015625em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-sm-12{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.75rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-color-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:18px;color:#49454f;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:focus{background:#1f75a7}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:focus{background:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:#1d192b1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:#1c1b1f1f;color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:focus{background-color:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:#6750a41f}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1rem;border:1px solid #cac4d0;background:#fff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-cancel-modal-confirm-dialog{width:25vw!important}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation{padding:1.5em 1.5em 1em}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation .mat-mdc-dialog-content{text-align:center;padding:0 0 1em!important}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: unset}@media (max-width: 768px){.ieeesa-cancel-modal-confirm-dialog{width:90vw!important}}.ieeesa-wrapper-border{border:1px solid #b2b7be;border-top:none;padding:1.5em;border-radius:0 0 4px 4px}.ieeesa-datepicker{width:auto}.ieeesa-datepicker__label-left{display:flex}.ieeesa-datepicker__label-top{display:block}.ieeesa-datepicker__datepicker-icon{position:relative;left:6px}.ieeesa-datepicker .mat-mdc-icon-button{padding:0}.ieeesa-datepicker ::placeholder{color:#63666a;font-size:1rem}.ieeesa-datepicker .ieeesa-body-sm-14{font-size:.75rem;color:#49454f}.ieeesa-datepicker__date-picker-button{background:#fff}.ieeesa-datepicker--calendar{background:#fff;border-radius:16px}.ieeesa-datepicker--calendar .mat-calendar-body-cell-container{margin:0;padding-top:24px 0}.ieeesa-datepicker--calendar .mat-calendar-table-header th,.ieeesa-datepicker--calendar .mat-calendar-body td{height:24px!important;padding-top:24px!important;width:24px!important;padding-bottom:24px!important}.ieeesa-datepicker--calendar .mat-calendar-body-selected{background-color:#00629b;color:#fff;border:none;box-shadow:none}.ieeesa-datepicker--calendar .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#00629b;color:#fff;border:none;box-shadow:none}.ieeesa-datepicker--calendar .mat-calendar-content{padding:0 8px 35px}.ieeesa-datepicker .mat-mdc-form-field{width:-webkit-fill-available;width:-moz-available}.ieeesa-datepicker .mat-mdc-text-field-wrapper.mdc-text-field.mdc-text-field--outlined.mdc-text-field--no-label,.ieeesa-datepicker .mdc-text-field--filled{border-bottom:1px solid #878b8f;height:40px;align-items:center;background:#fff!important;border-top:1px solid #878b8f;border-right:1px solid #878b8f;border-left:1px solid #878b8f;border-radius:4px}.ieeesa-datepicker .mat-mdc-form-field-focus-overlay{background:#fff}.ieeesa-datepicker .mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border:none}.ieeesa-datepicker .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-text-field__input,.ieeesa-datepicker .mdc-text-field--no-label:not(.mdc-text-field--textarea) .mat-mdc-form-field-input-control.mdc-text-field__input{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-datepicker .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-text-field__input::placeholder,.ieeesa-datepicker .mdc-text-field--no-label:not(.mdc-text-field--textarea) .mat-mdc-form-field-input-control.mdc-text-field__input::placeholder{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#63666a;letter-spacing:.03125em}.ieeesa-datepicker .mat-mdc-form-field-hint{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:16px;color:#49454f;letter-spacing:.025em}.ieeesa-datepicker .mat-datepicker-toggle-default-icon{width:18px;height:20px;fill:#104a6b}.ieeesa-datepicker:has(.mdc-text-field--focused) .ieeesa-datepicker__label{color:#00629b!important}.ieeesa-datepicker:has(.mdc-text-field--focused) .mdc-text-field--filled{border-top:2px solid #00629b;border-right:2px solid #00629b;border-left:2px solid #00629b}.ieeesa-datepicker:has(.mdc-text-field--focused) .mdc-text-field--filled .mdc-line-ripple:after{border-bottom:2px solid #00629b}.ieeesa-datepicker:has(.mdc-text-field--invalid) .ieeesa-datepicker__label{color:#ba0c2f!important}.ieeesa-datepicker:has(.mdc-text-field--invalid) .mdc-text-field--filled{border-bottom:none;border-top:2px solid #ba0c2f;border-right:2px solid #ba0c2f;border-left:2px solid #ba0c2f}.ieeesa-datepicker:has(.mdc-text-field--invalid) .mdc-text-field--filled .mdc-line-ripple:before,.ieeesa-datepicker:has(.mdc-text-field--invalid) .mdc-text-field--filled .mdc-line-ripple:after{border-bottom:2px solid #ba0c2f!important}.mat-datepicker-popup .mat-calendar-content{min-height:280px;padding-bottom:24px}.mat-datepicker-popup .mat-calendar-content[ng-reflect-ng-switch=year] .mat-calendar-body{height:200px}.mat-datepicker-popup .mat-calendar-content[ng-reflect-ng-switch=year] .mat-calendar-body tr[aria-hidden=true]{display:none}.mat-datepicker-popup .mat-calendar-content[ng-reflect-ng-switch=year] .mat-calendar-body tr .mat-calendar-body-cell{height:40px}.mat-datepicker-popup .mat-datepicker-content-container{background:#fff;border-radius:4px;box-shadow:0 2px 6px 2px #00000026,0 1px 2px #0000004d}.mat-datepicker-popup .mat-datepicker-content-container .mat-calendar-body-cell-content{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#1c1b1f;letter-spacing:.03125em}.mat-datepicker-popup .mat-datepicker-content-container .mat-calendar-body-selected{background-color:#00629b;color:#fff;border:none;box-shadow:none}.mat-datepicker-popup .mat-datepicker-content-container .mat-calendar-body-label{padding-top:0!important;padding-bottom:0!important}.mat-datepicker-popup .mat-datepicker-content-container .mat-calendar-body-in-range:before{background-color:#a7a8aa;color:#49454f}.mat-datepicker-popup .mat-datepicker-content{border-radius:28px}.mat-datepicker-popup .mat-calendar-table-header{position:relative;top:25px}.mat-datepicker-popup .mat-calendar-table-header th,.mat-datepicker-popup .mat-calendar-body td{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#000;letter-spacing:.03125em}.mat-datepicker-popup .mat-calendar-table-header-divider,.mat-datepicker-popup .mat-calendar-body tr:first-child td:only-child{display:none}.mat-datepicker-popup .mat-calendar-body tr:first-child td:first-child:not(:only-child){visibility:hidden}.mat-datepicker-popup .mat-calendar-body{position:relative;top:20px}.mat-datepicker-popup .mat-mdc-menu-panel{min-width:360px;width:auto}.mat-datepicker-popup .mat-calendar-body-today{border-color:#00629b;color:#00629b}.mat-datepicker-popup .mat-datepicker-actions{padding:15px 10px 10px;justify-content:center}.mat-datepicker-popup .mat-datepicker-toggle{color:#49454f}html.ieeesa-form-overlay-open .cdk-overlay-container:has(.mat-datepicker-popup):not(:has(.mat-mdc-dialog-container)){z-index:4}html.ieeesa-form-overlay-open .cdk-overlay-container:has(.mat-datepicker-popup):not(:has(.mat-mdc-dialog-container)){clip-path:inset(var(--ieeesa-form-overlay-clip-top, 0) 0 var(--ieeesa-form-overlay-clip-bottom, 0) 0)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: FormErrorComponent, selector: "ieeesa-form-error", inputs: ["formGroup", "config", "submitResponse"] }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "ngmodule", type: MatMenuModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatLabel, selector: "mat-label" }, { kind: "directive", type: i7.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i8.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: i8.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i8.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i8.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "directive", type: i8.MatDatepickerToggleIcon, selector: "[matDatepickerToggleIcon]" }, { kind: "component", type: i8.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i8.MatStartDate, selector: "input[matStartDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i8.MatEndDate, selector: "input[matEndDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i8.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: FormSupportTextComponent, selector: "ieeesa-form-support-text", inputs: ["formGroup", "config"], outputs: ["supportTextLinkClick"] }], encapsulation: i0.ViewEncapsulation.None }); }
346
329
  }
347
330
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DatePickerComponent, decorators: [{
348
331
  type: Component,
@@ -376,7 +359,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
376
359
  deps: [Overlay],
377
360
  },
378
361
  ], encapsulation: ViewEncapsulation.None, template: "<div class=\"ieeesa-datepicker\">\r\n <div\r\n [formGroup]=\"group\"\r\n *ngIf=\"calendarType === calendarTypes.SINGLE_DATE_SELECTION\"\r\n class=\"ieeesa-datepicker--single-selection\"\r\n [ngClass]=\"!isRequired() ? 'ieeesa-datepicker__valid-date' : ''\"\r\n [ngClass]=\"{\r\n 'ieeesa-datepicker__valid-date': !isRequired(),\r\n 'ieeesa-datepicker__label-left': isLabelAlignedLeft,\r\n 'ieeesa-datepicker__label-top': !isLabelAlignedLeft\r\n }\"\r\n >\r\n <mat-label\r\n *ngIf=\"datepickerLabel\"\r\n class=\"ieeesa-body-sm-14 ieeesa-datepicker__label\"\r\n >{{ datepickerLabel }}\r\n </mat-label>\r\n <mat-form-field>\r\n <input\r\n matInput\r\n (dateInput)=\"onDateChange()\"\r\n (click)=\"picker.open()\"\r\n [matDatepicker]=\"picker\"\r\n [attr.aria-label]=\"config.ariaLabel\"\r\n [aria-describedby]=\"config.ariaDescribedById ?? ''\"\r\n [min]=\"config?.datePicker?.minDate ?? minDate\"\r\n [max]=\"config?.datePicker?.maxDate ?? maxDate\"\r\n [formControlName]=\"config.controlName\"\r\n [placeholder]=\"\r\n placeholderLabel ?? buttonActionsInfo?.datePicker?.dateFormatLabel\r\n \"\r\n #calendar\r\n readonly\r\n />\r\n <mat-datepicker-toggle\r\n class=\"mat-datepicker-toggle\"\r\n matIconSuffix\r\n [for]=\"picker\"\r\n >\r\n <svg matDatepickerToggleIcon class=\"ieeesa-datepicker__datepicker-icon\">\r\n <use\r\n [attr.xlink:href]=\"buttonActionsInfo?.datePicker?.datePickerIcon\"\r\n ></use>\r\n </svg>\r\n </mat-datepicker-toggle>\r\n <mat-datepicker\r\n #picker\r\n yPosition=\"below\"\r\n [calendarHeaderComponent]=\"datePickerHeader\"\r\n (opened)=\"onDatePickerOpen(config.controlName)\"\r\n (closed)=\"onDatePickerClose()\"\r\n >\r\n </mat-datepicker>\r\n </mat-form-field>\r\n <ieeesa-form-error [formGroup]=\"group\" [config]=\"config\">\r\n </ieeesa-form-error>\r\n <ieeesa-form-support-text\r\n [formGroup]=\"group\"\r\n [config]=\"config\"\r\n ></ieeesa-form-support-text>\r\n </div>\r\n\r\n <div\r\n [formGroup]=\"group\"\r\n *ngIf=\"calendarType === calendarTypes.DATE_RANGE_SELECTION\"\r\n class=\"ieeesa-datepicker--multi-selection\"\r\n [ngClass]=\"\r\n isLabelAlignedLeft\r\n ? 'ieeesa-datepicker__label-left'\r\n : 'ieeesa-datepicker__label-top'\r\n \"\r\n >\r\n <mat-label\r\n *ngIf=\"datepickerLabel\"\r\n class=\"ieeesa-datepicker__label ieeesa-body-sm-14\"\r\n >{{ datepickerLabel }}\r\n </mat-label>\r\n <mat-form-field>\r\n <mat-date-range-input [rangePicker]=\"rangePicker\" [formGroup]=\"group\">\r\n <input\r\n matStartDate\r\n matInput\r\n [formControlName]=\"config.dateRangeControls?.startDate ?? ''\"\r\n [placeholder]=\"buttonActionsInfo?.datePicker?.dateFormatLabel + ' - '\"\r\n (dateChange)=\"onDateRangeChange()\"\r\n />\r\n <input\r\n matEndDate\r\n matInput\r\n [formControlName]=\"config.dateRangeControls?.endDate ?? ''\"\r\n [placeholder]=\"buttonActionsInfo?.datePicker?.dateFormatLabel\"\r\n (dateChange)=\"onDateRangeChange()\"\r\n />\r\n </mat-date-range-input>\r\n <mat-datepicker-toggle\r\n class=\"mat-datepicker-toggle\"\r\n matIconSuffix\r\n [for]=\"rangePicker\"\r\n ></mat-datepicker-toggle>\r\n <mat-date-range-picker\r\n #rangePicker\r\n yPosition=\"below\"\r\n [calendarHeaderComponent]=\"datePickerHeader\"\r\n (dateInput)=\"onDateRangeChange()\"\r\n (opened)=\"onDatePickerOpen(config.controlName)\"\r\n (closed)=\"onDatePickerClose()\"\r\n >\r\n </mat-date-range-picker>\r\n </mat-form-field>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"calendarType === calendarTypes.CALENDAR\"\r\n class=\"ieeesa-datepicker--calendar\"\r\n >\r\n <mat-calendar\r\n [headerComponent]=\"datePickerHeader\"\r\n [(selected)]=\"calendarSelectedDate\"\r\n >\r\n </mat-calendar>\r\n </div>\r\n</div>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.5625rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625rem;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375rem;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-32{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875rem;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:32px;color:#00629b;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625rem;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-btn-label-lg-bold-16{font-family:Calibri Regular;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#00629b;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#1c1b1f;letter-spacing:.015625em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-sm-12{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.75rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-color-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:18px;color:#49454f;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:focus{background:#1f75a7}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:focus{background:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:#1d192b1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:#1c1b1f1f;color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:focus{background-color:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:#6750a41f}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1rem;border:1px solid #cac4d0;background:#fff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-cancel-modal-confirm-dialog{width:25vw!important}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation{padding:1.5em 1.5em 1em}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation .mat-mdc-dialog-content{text-align:center;padding:0 0 1em!important}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: unset}@media (max-width: 768px){.ieeesa-cancel-modal-confirm-dialog{width:90vw!important}}.ieeesa-wrapper-border{border:1px solid #b2b7be;border-top:none;padding:1.5em;border-radius:0 0 4px 4px}.ieeesa-datepicker{width:auto}.ieeesa-datepicker__label-left{display:flex}.ieeesa-datepicker__label-top{display:block}.ieeesa-datepicker__datepicker-icon{position:relative;left:6px}.ieeesa-datepicker .mat-mdc-icon-button{padding:0}.ieeesa-datepicker ::placeholder{color:#63666a;font-size:1rem}.ieeesa-datepicker .ieeesa-body-sm-14{font-size:.75rem;color:#49454f}.ieeesa-datepicker__date-picker-button{background:#fff}.ieeesa-datepicker--calendar{background:#fff;border-radius:16px}.ieeesa-datepicker--calendar .mat-calendar-body-cell-container{margin:0;padding-top:24px 0}.ieeesa-datepicker--calendar .mat-calendar-table-header th,.ieeesa-datepicker--calendar .mat-calendar-body td{height:24px!important;padding-top:24px!important;width:24px!important;padding-bottom:24px!important}.ieeesa-datepicker--calendar .mat-calendar-body-selected{background-color:#00629b;color:#fff;border:none;box-shadow:none}.ieeesa-datepicker--calendar .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#00629b;color:#fff;border:none;box-shadow:none}.ieeesa-datepicker--calendar .mat-calendar-content{padding:0 8px 35px}.ieeesa-datepicker .mat-mdc-form-field{width:-webkit-fill-available;width:-moz-available}.ieeesa-datepicker .mat-mdc-text-field-wrapper.mdc-text-field.mdc-text-field--outlined.mdc-text-field--no-label,.ieeesa-datepicker .mdc-text-field--filled{border-bottom:1px solid #878b8f;height:40px;align-items:center;background:#fff!important;border-top:1px solid #878b8f;border-right:1px solid #878b8f;border-left:1px solid #878b8f;border-radius:4px}.ieeesa-datepicker .mat-mdc-form-field-focus-overlay{background:#fff}.ieeesa-datepicker .mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border:none}.ieeesa-datepicker .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-text-field__input,.ieeesa-datepicker .mdc-text-field--no-label:not(.mdc-text-field--textarea) .mat-mdc-form-field-input-control.mdc-text-field__input{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-datepicker .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-text-field__input::placeholder,.ieeesa-datepicker .mdc-text-field--no-label:not(.mdc-text-field--textarea) .mat-mdc-form-field-input-control.mdc-text-field__input::placeholder{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#63666a;letter-spacing:.03125em}.ieeesa-datepicker .mat-mdc-form-field-hint{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:16px;color:#49454f;letter-spacing:.025em}.ieeesa-datepicker .mat-datepicker-toggle-default-icon{width:18px;height:20px;fill:#104a6b}.ieeesa-datepicker:has(.mdc-text-field--focused) .ieeesa-datepicker__label{color:#00629b!important}.ieeesa-datepicker:has(.mdc-text-field--focused) .mdc-text-field--filled{border-top:2px solid #00629b;border-right:2px solid #00629b;border-left:2px solid #00629b}.ieeesa-datepicker:has(.mdc-text-field--focused) .mdc-text-field--filled .mdc-line-ripple:after{border-bottom:2px solid #00629b}.ieeesa-datepicker:has(.mdc-text-field--invalid) .ieeesa-datepicker__label{color:#ba0c2f!important}.ieeesa-datepicker:has(.mdc-text-field--invalid) .mdc-text-field--filled{border-bottom:none;border-top:2px solid #ba0c2f;border-right:2px solid #ba0c2f;border-left:2px solid #ba0c2f}.ieeesa-datepicker:has(.mdc-text-field--invalid) .mdc-text-field--filled .mdc-line-ripple:before,.ieeesa-datepicker:has(.mdc-text-field--invalid) .mdc-text-field--filled .mdc-line-ripple:after{border-bottom:2px solid #ba0c2f!important}.mat-datepicker-popup .mat-calendar-content{min-height:280px;padding-bottom:24px}.mat-datepicker-popup .mat-calendar-content[ng-reflect-ng-switch=year] .mat-calendar-body{height:200px}.mat-datepicker-popup .mat-calendar-content[ng-reflect-ng-switch=year] .mat-calendar-body tr[aria-hidden=true]{display:none}.mat-datepicker-popup .mat-calendar-content[ng-reflect-ng-switch=year] .mat-calendar-body tr .mat-calendar-body-cell{height:40px}.mat-datepicker-popup .mat-datepicker-content-container{background:#fff;border-radius:4px;box-shadow:0 2px 6px 2px #00000026,0 1px 2px #0000004d}.mat-datepicker-popup .mat-datepicker-content-container .mat-calendar-body-cell-content{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#1c1b1f;letter-spacing:.03125em}.mat-datepicker-popup .mat-datepicker-content-container .mat-calendar-body-selected{background-color:#00629b;color:#fff;border:none;box-shadow:none}.mat-datepicker-popup .mat-datepicker-content-container .mat-calendar-body-label{padding-top:0!important;padding-bottom:0!important}.mat-datepicker-popup .mat-datepicker-content-container .mat-calendar-body-in-range:before{background-color:#a7a8aa;color:#49454f}.mat-datepicker-popup .mat-datepicker-content{border-radius:28px}.mat-datepicker-popup .mat-calendar-table-header{position:relative;top:25px}.mat-datepicker-popup .mat-calendar-table-header th,.mat-datepicker-popup .mat-calendar-body td{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#000;letter-spacing:.03125em}.mat-datepicker-popup .mat-calendar-table-header-divider,.mat-datepicker-popup .mat-calendar-body tr:first-child td:only-child{display:none}.mat-datepicker-popup .mat-calendar-body tr:first-child td:first-child:not(:only-child){visibility:hidden}.mat-datepicker-popup .mat-calendar-body{position:relative;top:20px}.mat-datepicker-popup .mat-mdc-menu-panel{min-width:360px;width:auto}.mat-datepicker-popup .mat-calendar-body-today{border-color:#00629b;color:#00629b}.mat-datepicker-popup .mat-datepicker-actions{padding:15px 10px 10px;justify-content:center}.mat-datepicker-popup .mat-datepicker-toggle{color:#49454f}html.ieeesa-form-overlay-open .cdk-overlay-container:has(.mat-datepicker-popup):not(:has(.mat-mdc-dialog-container)){z-index:4}html.ieeesa-form-overlay-open .cdk-overlay-container:has(.mat-datepicker-popup):not(:has(.mat-mdc-dialog-container)){clip-path:inset(var(--ieeesa-form-overlay-clip-top, 0) 0 var(--ieeesa-form-overlay-clip-bottom, 0) 0)}\n"] }]
379
- }], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i0.ChangeDetectorRef }, { type: i2.DatepickerService }, { type: i3.FormUtilityService }, { type: i0.ElementRef }]; }, propDecorators: { selectedDates: [{
362
+ }], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i0.ChangeDetectorRef }, { type: i2.DatepickerService }, { type: i3.FormUtilityService }, { type: i4.FormOverlayBoundsService }, { type: i0.ElementRef }]; }, propDecorators: { selectedDates: [{
380
363
  type: Input
381
364
  }], selectedRange: [{
382
365
  type: Input
@@ -403,4 +386,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
403
386
  }], selectedDateRange: [{
404
387
  type: Output
405
388
  }] } });
406
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc2VudGF0aW9uL3NyYy9saWIvY29tcG9uZW50cy9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzZW50YXRpb24vc3JjL2xpYi9jb21wb25lbnRzL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBR0wsTUFBTSxFQUNOLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUwsV0FBVyxFQUVYLG1CQUFtQixFQUNuQixVQUFVLEdBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLCtCQUErQixHQUNoQyxNQUFNLGtDQUFrQyxDQUFDO0FBQzFDLE9BQU8sRUFDTCxXQUFXLEVBQ1gsZ0JBQWdCLEVBQ2hCLGVBQWUsR0FDaEIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2pFLE9BQU8sRUFDTCw4QkFBOEIsRUFDOUIsbUJBQW1CLEdBQ3BCLE1BQU0sOEJBQThCLENBQUM7QUFDdEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FB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SztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0ksWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbmplY3RhYmxlLFxyXG4gIElucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEZvcm1CdWlsZGVyLFxyXG4gIEZvcm1Db250cm9sLFxyXG4gIEZvcm1Hcm91cCxcclxuICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gIFZhbGlkYXRvcnMsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQge1xyXG4gIE1vbWVudERhdGVBZGFwdGVyLFxyXG4gIE1BVF9NT01FTlRfREFURV9BREFQVEVSX09QVElPTlMsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwtbW9tZW50LWFkYXB0ZXInO1xyXG5pbXBvcnQge1xyXG4gIERhdGVBZGFwdGVyLFxyXG4gIE1BVF9EQVRFX0ZPUk1BVFMsXHJcbiAgTUFUX0RBVEVfTE9DQUxFLFxyXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBNYXRFeHBhbnNpb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9leHBhbnNpb24nO1xyXG5pbXBvcnQge1xyXG4gIE1BVF9EQVRFUElDS0VSX1NDUk9MTF9TVFJBVEVHWSxcclxuICBNYXREYXRlcGlja2VyTW9kdWxlLFxyXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInO1xyXG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XHJcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBPdmVybGF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xyXG5pbXBvcnQgbW9tZW50XyBmcm9tICdtb21lbnQnO1xyXG5pbXBvcnQgeyBEYXRlUGlja2VySGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9kYXRlLXBpY2tlci1oZWFkZXIvZGF0ZS1waWNrZXItaGVhZGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERhdGVGb3JtYXRzIH0gZnJvbSAnLi4vLi4vZGF0ZS1mb3JtYXRzJztcclxuaW1wb3J0IHsgRmllbGRDb25maWcgfSBmcm9tICcuLi8uLi8vbW9kZWxzL2ZpZWxkLWNvbmZpZy5tb2RlbCc7XHJcbmltcG9ydCB7IENhbGVuZGFyVHlwZSB9IGZyb20gJy4uLy4uL21vZGVscy9jYWxlbmRhci5tb2RlbCc7XHJcbmltcG9ydCB7IEZvcm1FcnJvckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvZm9ybS1lcnJvci9mb3JtLWVycm9yLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERhdGVwaWNrZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGF0ZXBpY2tlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRm9ybUZpZWxkIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2Zvcm0tZmllbGQubW9kZWwnO1xyXG5pbXBvcnQgKiBhcyBidXR0b25BY3Rpb25zSW5mbyBmcm9tICcuLi8uLi9hc3NldHMvY29uc3RhbnRzLmpzb24nO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbFR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvZm9ybS1jb250cm9sLXR5cGVzLm1vZGVsJztcclxuaW1wb3J0IHsgRm9ybVV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZm9ybS11dGlsaXR5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGb3JtU3VwcG9ydFRleHRDb21wb25lbnQgfSBmcm9tICcuLi9mb3JtLXN1cHBvcnQtdGV4dC9mb3JtLXN1cHBvcnQtdGV4dC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTZWxlY3RlZERhdGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvc2VsZWN0ZWQtZGF0ZS5tb2RlbCc7XHJcbmNvbnN0IG1vbWVudCA9IG1vbWVudF87XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBDdXN0b21EYXRlQWRhcHRlciBleHRlbmRzIE1vbWVudERhdGVBZGFwdGVyIHtcclxuICAvKipcclxuICAgKiBPdmVycmlkZXMgdGhlIGdldERheU9mV2Vla05hbWVzIG1ldGhvZCBvZiBNb21lbnREYXRlQWRhcHRlciB0byBzaG93IGZpcnN0IGxldHRlciBvZiBkYXkgaW4gY2FwaXRhbCBpbiBkYXRlIHBpY2tlciBoZWFkZXIuXHJcbiAgICogQHJldHVybiB7c3RyaW5nW119XHJcbiAgICogQG1lbWJlcm9mIEN1c3RvbURhdGVBZGFwdGVyXHJcbiAgICovXHJcbiAgb3ZlcnJpZGUgZ2V0RGF5T2ZXZWVrTmFtZXMoKTogc3RyaW5nW10ge1xyXG4gICAgcmV0dXJuIFsnUycsICdNJywgJ1QnLCAnVycsICdUJywgJ0YnLCAnUyddO1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIERhdGUgc2VsZWN0aW9uIG9mIHR5cGUgU0lOR0xFX0RBVEVfU0VMRUNUSU9OLCBEQVRFX1JBTkdFX1NFTEVDVElPTiBhbmQgQ0FMRU5EQVIgYW5kIGhhbmRsaW5nIG9mIGNhbGVuZGFyIGV2ZW50cy5cclxuICogQGV4cG9ydFxyXG4gKiBAY2xhc3MgRGF0ZVBpY2tlckNvbXBvbmVudFxyXG4gKiBAaW1wbGVtZW50cyB7Rm9ybUZpZWxkfVxyXG4gKiBAaW1wbGVtZW50cyB7T25Jbml0fVxyXG4gKiBAaW1wbGVtZW50cyB7QWZ0ZXJWaWV3SW5pdH1cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaWVlZXNhLWRhdGUtcGlja2VyJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBGb3JtRXJyb3JDb21wb25lbnQsXHJcbiAgICBNYXRFeHBhbnNpb25Nb2R1bGUsXHJcbiAgICBNYXRNZW51TW9kdWxlLFxyXG4gICAgTWF0SWNvbk1vZHVsZSxcclxuICAgIE1hdElucHV0TW9kdWxlLFxyXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxyXG4gICAgTWF0RGF0ZXBpY2tlck1vZHVsZSxcclxuICAgIERhdGVQaWNrZXJIZWFkZXJDb21wb25lbnQsXHJcbiAgICBNYXRCdXR0b25Nb2R1bGUsXHJcbiAgICBGb3JtU3VwcG9ydFRleHRDb21wb25lbnQsXHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHsgcHJvdmlkZTogTUFUX01PTUVOVF9EQVRFX0FEQVBURVJfT1BUSU9OUywgdXNlVmFsdWU6IHsgdXNlVXRjOiB0cnVlIH0gfSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogRGF0ZUFkYXB0ZXIsXHJcbiAgICAgIHVzZUNsYXNzOiBDdXN0b21EYXRlQWRhcHRlcixcclxuICAgICAgZGVwczogW01BVF9EQVRFX0xPQ0FMRSwgTUFUX01PTUVOVF9EQVRFX0FEQVBURVJfT1BUSU9OU10sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBNQVRfREFURV9GT1JNQVRTLFxyXG4gICAgICB1c2VWYWx1ZTogRGF0ZUZvcm1hdHMsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBNQVRfREFURVBJQ0tFUl9TQ1JPTExfU1RSQVRFR1ksXHJcbiAgICAgIHVzZUZhY3Rvcnk6IChvdmVybGF5OiBPdmVybGF5KSA9PiAoKSA9PlxyXG4gICAgICAgIG92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKCksXHJcbiAgICAgIGRlcHM6IFtPdmVybGF5XSxcclxuICAgIH0sXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RhdGUtcGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIERhdGVQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBGb3JtRmllbGQsIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBjb25maWchOiBGaWVsZENvbmZpZztcclxuICBncm91cCE6IEZvcm1Hcm91cDtcclxuICBkYXRlUGlja2VySGVhZGVyID0gRGF0ZVBpY2tlckhlYWRlckNvbXBvbmVudDtcclxuICBjYWxlbmRhclR5cGVzID0gQ2FsZW5kYXJUeXBlO1xyXG4gIHByaXZhdGUgX3NlbGVjdGVkRGF0ZXM6IHN0cmluZ1tdID0gW107XHJcbiAgLyoqXHJcbiAgICogR2V0cyBwcmVzZWxlY3RlZCBkYXRlcyBhcyBhbiBpbnB1dC5cclxuICAgKiBAbWVtYmVyb2YgRGF0ZVBpY2tlckNvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHNlbGVjdGVkRGF0ZXModmFsdWU6IHN0cmluZ1tdKSB7XHJcbiAgICB0aGlzLl9zZWxlY3RlZERhdGVzID0gdmFsdWU7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2xOYW1lICYmXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlcz8ubGVuZ3RoID09PSAxICYmXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlc1swXSAhPT0gdW5kZWZpbmVkICYmXHJcbiAgICAgIHRoaXMuY2FsZW5kYXJUeXBlID09PSBDYWxlbmRhclR5cGUuU0lOR0xFX0RBVEVfU0VMRUNUSU9OXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5kYXRlcGlja2VyU2VydmljZS5zZWxlY3RlZERhdGUgPSB2YWx1ZVswXTtcclxuICAgICAgdGhpcy5jcmVhdGVGb3JtR3JvdXAodmFsdWVbMF0pO1xyXG4gICAgICB0aGlzLmRhdGVwaWNrZXJTZXJ2aWNlLmlzUmFuZ2VTZWxlY3Rpb24gPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyBzZWxlY3RlZCBkYXRlc1xyXG4gICAqIEByZWFkb25seVxyXG4gICAqIEB0eXBlIHtzdHJpbmdbXX1cclxuICAgKiBAbWVtYmVyb2YgRGF0ZVBpY2tlckNvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldCBzZWxlY3RlZERhdGVzKCk6IHN0cmluZ1tdIHtcclxuICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZERhdGVzO1xyXG4gIH1cclxuICBwcml2YXRlIF9zZWxlY3RlZFJhbmdlOiBzdHJpbmdbXSA9IFtdO1xyXG4gIC8qKlxyXG4gICAqIEdldHMgcHJlc2VsZWN0ZWQgZGF0ZSByYW5nZSBhcyBhbiBpbnB1dC5cclxuICAgKiBAbWVtYmVyb2YgRGF0ZVBpY2tlckNvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHNlbGVjdGVkUmFuZ2UodmFsdWU6IHN0cmluZ1tdKSB7XHJcbiAgICB0aGlzLl9zZWxlY3RlZFJhbmdlID0gdmFsdWU7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSYW5nZT8ubGVuZ3RoID09PSAyICYmXHJcbiAgICAgIHRoaXMuY2FsZW5kYXJUeXBlID09PSBDYWxlbmRhclR5cGUuREFURV9SQU5HRV9TRUxFQ1RJT05cclxuICAgICkge1xyXG4gICAgICB0aGlzLmNyZWF0ZUZvcm1Hcm91cFdpdGhSYW5nZUNvbnRyb2xzKHZhbHVlWzBdLCB2YWx1ZVsxXSk7XHJcbiAgICAgIHRoaXMuc2V0RGF0ZVJhbmdlKHZhbHVlWzBdLCB2YWx1ZVsxXSk7XHJcbiAgICAgIHRoaXMuZGF0ZXBpY2tlclNlcnZpY2UuaXNSYW5nZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgc2VsZWN0ZWQgZGF0ZSByYW5nZVxyXG4gICAqIEByZWFkb25seVxyXG4gICAqIEB0eXBlIHtzdHJpbmdbXX1cclxuICAgKiBAbWVtYmVyb2YgRGF0ZVBpY2tlckNvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldCBzZWxlY3RlZFJhbmdlKCk6IHN0cmluZ1tdIHtcclxuICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZFJhbmdlO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgY2FsZW5kYXJUeXBlOiBDYWxlbmRhclR5cGUgPSBDYWxlbmRhclR5cGUuU0lOR0xFX0RBVEVfU0VMRUNUSU9OO1xyXG4gIEBJbnB1dCgpIGZvcm1Db250cm9sTmFtZSE6IHN0cmluZztcclxuICBASW5wdXQoKSBwbGFjZWhvbGRlckxhYmVsID0gJyc7XHJcbiAgQElucHV0KCkgaXNEaXNhYmxlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGlzTGFiZWxBbGlnbmVkTGVmdCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGRhdGVwaWNrZXJMYWJlbCA9ICcnO1xyXG4gIEBJbnB1dCgpIGRhdGVSYW5nZSE6IHsgbWluRGF0ZTogc3RyaW5nOyBtYXhEYXRlOiBzdHJpbmcgfTtcclxuICBASW5wdXQoKSBtaW5EYXRlITogRGF0ZSB8IG1vbWVudC5Nb21lbnQ7XHJcbiAgQElucHV0KCkgbWF4RGF0ZSE6IERhdGUgfCBtb21lbnQuTW9tZW50O1xyXG4gIEBPdXRwdXQoKSBzZWxlY3RlZERhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPFNlbGVjdGVkRGF0ZT4oKTtcclxuICBAT3V0cHV0KCkgc2VsZWN0ZWREYXRlUmFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHtcclxuICAgIHN0YXJ0RGF0ZTogc3RyaW5nO1xyXG4gICAgZW5kRGF0ZTogc3RyaW5nO1xyXG4gIH0+KCk7XHJcbiAgY2FsZW5kYXJTZWxlY3RlZERhdGUhOiBEYXRlO1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgYnV0dG9uQWN0aW9uc0luZm86IGFueSA9IGJ1dHRvbkFjdGlvbnNJbmZvO1xyXG4gIHByaXZhdGUgZm9ybU92ZXJsYXlTY3JvbGxDb250YWluZXI/OiBIVE1MRWxlbWVudDtcclxuICBwcml2YXRlIHJlYWRvbmx5IG92ZXJsYXlXaGVlbExpc3RlbmVyID0gKGV2ZW50OiBXaGVlbEV2ZW50KTogdm9pZCA9PiB7XHJcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgRWxlbWVudCB8IG51bGw7XHJcbiAgICBpZiAodGFyZ2V0Py5jbG9zZXN0KCcuY2RrLW92ZXJsYXktcGFuZScpKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgZm9ybUJvZHkgPSB0aGlzLmZvcm1PdmVybGF5U2Nyb2xsQ29udGFpbmVyO1xyXG4gICAgaWYgKCFmb3JtQm9keSB8fCBmb3JtQm9keS5zY3JvbGxIZWlnaHQgPD0gZm9ybUJvZHkuY2xpZW50SGVpZ2h0KSByZXR1cm47XHJcblxyXG4gICAgZm9ybUJvZHkuc2Nyb2xsVG9wICs9IGV2ZW50LmRlbHRhWTtcclxuICAgIGZvcm1Cb2R5LnNjcm9sbExlZnQgKz0gZXZlbnQuZGVsdGFYO1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICB9O1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgZGF0ZXBpY2tlclNlcnZpY2U6IERhdGVwaWNrZXJTZXJ2aWNlLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIGZvcm1VdGlsaXR5U2VydmljZTogRm9ybVV0aWxpdHlTZXJ2aWNlLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1lbXB0eS1mdW5jdGlvbixcclxuICApIHt9XHJcbiAgLyoqXHJcbiAgICogSW1wbGVtZW50YXRpb24gb2YgIG5nT25Jbml0IGxpZmVjeWNsZSBob29rIG1ldGhvZCB0byBjcmVhdGVzIGNvbmZpZyBpZiBpdHMgdW5kZWZpbmVkIGFuZCBzZXRzIGNvbXBvbmVudHMgaW5zdGFuY2UgdmFyaWFibGVzIGlmIGNvbmZpZyBpcyBkZWZpbmVkLiBTZXRzIHRoZSBmb3JtIGdyb3VwIHZhbHVlIGlmIGZvcm0gZ3JvdXAgaXMgZGVmaW5lZC5cclxuICAgKiBAbWVtYmVyb2YgRGF0ZVBpY2tlckNvbXBvbmVudFxyXG4gICAqL1xyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmNvbmZpZykge1xyXG4gICAgICBjb25zdCBjb250cm9sTmFtZSA9IHRoaXMuZm9ybUNvbnRyb2xOYW1lID8/ICdkYXRlcGlja2VyJztcclxuICAgICAgdGhpcy5jb25maWcgPSB0aGlzLmZvcm1VdGlsaXR5U2VydmljZS5nZXRGb3JtRmllbGRDb25maWcoXHJcbiAgICAgICAgY29udHJvbE5hbWUsXHJcbiAgICAgICAgRm9ybUNvbnRyb2xUeXBlLkRBVEVcclxuICAgICAgKTtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuY29uZmlnICYmXHJcbiAgICAgICAgdGhpcy5jYWxlbmRhclR5cGUgPT09IENhbGVuZGFyVHlwZS5EQVRFX1JBTkdFX1NFTEVDVElPTlxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLmNvbmZpZy5kYXRlUmFuZ2VDb250cm9scyA9IHtcclxuICAgICAgICAgIHN0YXJ0RGF0ZTogJ3N0YXJ0RGF0ZScsXHJcbiAgICAgICAgICBlbmREYXRlOiAnZW5kRGF0ZScsXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5pbml0aWFsaXplUHJvcGVydGllc0Zyb21Db25maWcoKTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5ncm91cCkge1xyXG4gICAgICBpZiAodGhpcy5jYWxlbmRhclR5cGUgPT09IENhbGVuZGFyVHlwZS5TSU5HTEVfREFURV9TRUxFQ1RJT04pIHtcclxuICAgICAgICB0aGlzLmNyZWF0ZUZvcm1Hcm91cCgpO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuY2FsZW5kYXJUeXBlID09PSBDYWxlbmRhclR5cGUuREFURV9SQU5HRV9TRUxFQ1RJT04pIHtcclxuICAgICAgICB0aGlzLmNyZWF0ZUZvcm1Hcm91cFdpdGhSYW5nZUNvbnRyb2xzKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemVzIHByb3BlcnRpZXMgZnJvbSB0aGUgY29uZmlnIGlucHV0XHJcbiAgICogQG1lbWJlcm9mIERhdGVQaWNrZXJDb21wb25lbnRcclxuICAgKi9cclxuICBpbml0aWFsaXplUHJvcGVydGllc0Zyb21Db25maWcoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNhbGVuZGFyVHlwZSA9XHJcbiAgICAgIHRoaXMuY29uZmlnPy5kYXRlUGlja2VyPy5jYWxlbmRhclR5cGUgPz9cclxuICAgICAgQ2FsZW5kYXJUeXBlLlNJTkdMRV9EQVRFX1NFTEVDVElPTjtcclxuICAgIHRoaXMucGxhY2Vob2xkZXJMYWJlbCA9IHRoaXMuY29uZmlnPy5kYXRlUGlja2VyPy5wbGFjZWhvbGRlckxhYmVsID8/ICcnO1xyXG4gICAgdGhpcy5kYXRlcGlja2VyTGFiZWwgPSB0aGlzLmNvbmZpZz8uZGF0ZVBpY2tlcj8ubGFiZWwgPz8gJyc7XHJcbiAgICB0aGlzLmlzTGFiZWxBbGlnbmVkTGVmdCA9XHJcbiAgICAgIHRoaXMuY29uZmlnPy5kYXRlUGlja2VyPy5pc0xhYmVsQWxpZ25lZExlZnQgPz8gZmFsc2U7XHJcbiAgICB0aGlzLmRhdGVSYW5nZSA9IHRoaXMuY29uZmlnPy5kYXRlUGlja2VyPy5kYXRlUmFuZ2UgPz8ge1xyXG4gICAgICBtaW5EYXRlOiAnJyxcclxuICAgICAgbWF4RGF0ZTogJycsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5pc0Rpc2FibGVkID0gISF0aGlzLmNvbmZpZy5kaXNhYmxlZDtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5jb25maWcuZGF0ZVBpY2tlcj8uY2FsZW5kYXJUeXBlID09PSBDYWxlbmRhclR5cGUuREFURV9SQU5HRV9TRUxFQ1RJT05cclxuICAgICkge1xyXG4gICAgICB0aGlzLmdyb3VwLmFkZENvbnRyb2woJ3N0YXJ0RGF0ZScsIG5ldyBGb3JtQ29udHJvbCgpKTtcclxuICAgICAgdGhpcy5ncm91cC5hZGRDb250cm9sKCdlbmREYXRlJywgbmV3IEZvcm1Db250cm9sKCkpO1xyXG4gICAgfVxyXG4gIH1cclxuICAvKipcclxuICAgKiBIYW5kbGUgZGF0ZSBjaGFuZ2UgZXZlbnQgYW5kIGVtaXRzIHRoZSBzZWxlY3RlZCBkYXRlLlxyXG4gICAqIEBtZW1iZXJvZiBEYXRlUGlja2VyQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25EYXRlQ2hhbmdlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZERhdGUuZW1pdCh7XHJcbiAgICAgIGRhdGU6IHRoaXMuZ3JvdXA/LmdldCh0aGlzLmNvbmZpZz8uY29udHJvbE5hbWUpPy52YWx1ZSxcclxuICAgICAgY29udHJvbE5hbWU6IHRoaXMuY29uZmlnPy5jb250cm9sTmFtZVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmRhdGVwaWNrZXJTZXJ2aWNlLnNlbGVjdGVkRGF0ZSA9IHRoaXMuZ3JvdXA/LmdldChcclxuICAgICAgdGhpcy5jb25maWcuY29udHJvbE5hbWVcclxuICAgICk/LnZhbHVlO1xyXG4gICAgdGhpcy5kYXRlcGlja2VyU2VydmljZS5pc1JhbmdlU2VsZWN0aW9uID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXRzIGFuZCBlbWl0cyBzZWxlY3RlZCBkYXRlIHJhbmdlXHJcbiAgICogQG1lbWJlcm9mIERhdGVQaWNrZXJDb21wb25lbnRcclxuICAgKi9cclxuICBvbkRhdGVSYW5nZUNoYW5nZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGF0ZXBpY2tlclNlcnZpY2UuaXNSYW5nZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICB0aGlzLnNldERhdGVSYW5nZShcclxuICAgICAgdGhpcy5ncm91cC52YWx1ZS5zdGFydERhdGUgPz8gJycsXHJcbiAgICAgIHRoaXMuZ3JvdXAudmFsdWUuZW5kRGF0ZSA/PyAnJ1xyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlLmVtaXQoe1xyXG4gICAgICBzdGFydERhdGU6IHRoaXMuZ3JvdXAudmFsdWUuc3RhcnREYXRlID8/ICcnLFxyXG4gICAgICBlbmREYXRlOiB0aGlzLmdyb3VwLnZhbHVlLmVuZERhdGUgPz8gJycsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIG1pbiBhbmQgbWF4IGRhdGUgcmFuZ2UuXHJcbiAgICogQHBhcmFtIHsoc3RyaW5nIHwgRGF0ZSl9IHN0YXJ0RGF0ZVxyXG4gICAqIEBwYXJhbSB7KHN0cmluZyB8IERhdGUpfSBlbmREYXRlXHJcbiAgICogQG1lbWJlcm9mIERhdGVQaWNrZXJDb21wb25lbnRcclxuICAgKi9cclxuICBzZXREYXRlUmFuZ2Uoc3RhcnREYXRlOiBzdHJpbmcgfCBEYXRlLCBlbmREYXRlOiBzdHJpbmcgfCBEYXRlKTogdm9pZCB7XHJcbiAgICB0aGlzLmRhdGVwaWNrZXJTZXJ2aWNlLnJhbmdlLm5leHQoe1xyXG4gICAgICBzdGFydDogc3RhcnREYXRlLFxyXG4gICAgICBlbmQ6IGVuZERhdGUsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgZm9ybSBncm91cCBhbmQgaW5pdGlhbGl6ZXMgZm9ybSB2YWx1ZVxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbZGF0ZV1cclxuICAgKiBAbWVtYmVyb2YgRGF0ZVBpY2tlckNvbXBvbmVudFxyXG4gICAqL1xyXG4gIGNyZWF0ZUZvcm1Hcm91cChkYXRlPzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmdyb3VwID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgIFt0aGlzLmZvcm1Db250cm9sTmFtZSA/IHRoaXMuZm9ybUNvbnRyb2xOYW1lIDogJ2RhdGVwaWNrZXInXTogZGF0ZVxyXG4gICAgICAgID8gW21vbWVudChkYXRlKS51dGModHJ1ZSkuZm9ybWF0KCldXHJcbiAgICAgICAgOiBbXSxcclxuICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBDcmVhdGVzIGZvcm0gZ3JvdXAgd2l0aCByYW5nZSB0eXBlIG9mIGNvbnRyb2xzIGFuZCBzZXRzIHRoZSBtaW4gYW5kIG1heCByYW5nZSB2YWx1ZXMuXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtzdGFydERhdGVdXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtlbmREYXRlXVxyXG4gICAqIEBtZW1iZXJvZiBEYXRlUGlja2VyQ29tcG9uZW50XHJcbiAgICovXHJcbiAgY3JlYXRlRm9ybUdyb3VwV2l0aFJhbmdlQ29udHJvbHMoc3RhcnREYXRlPzogc3RyaW5nLCBlbmREYXRlPzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmdyb3VwID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgIHN0YXJ0RGF0ZTogc3RhcnREYXRlID8gW21vbWVudChzdGFydERhdGUpLnV0Yyh0cnVlKS5mb3JtYXQoKV0gOiBbXSxcclxuICAgICAgZW5kRGF0ZTogZW5kRGF0ZSA/IFttb21lbnQoZW5kRGF0ZSkudXRjKHRydWUpLmZvcm1hdCgpXSA6IFtdLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIENoZWNrcyBpZiB0aGUgZm9ybSBjb250cm9sIGhhcyByZXF1aXJlZCB2YWxpZGF0b3IuXHJcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cclxuICAgKiBAbWVtYmVyb2YgRGF0ZVBpY2tlckNvbXBvbmVudFxyXG4gICAqL1xyXG4gIGlzUmVxdWlyZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5ncm91cD8uY29udHJvbHNbdGhpcy5jb25maWc/LmNvbnRyb2xOYW1lXT8uaGFzVmFsaWRhdG9yKFxyXG4gICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgdXBkYXRlZCBzZWxlY3RlZCBkYXRlIHVzaW5nIGRhdGVwaWNrZXIgc2VydmljZSB3aGljaCB3aWxsIGJlIHNob3duIGluIGRhdGVwaWNrZXIgaGVhZGVyXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNvbnRyb2xOYW1lXHJcbiAgICogQG1lbWJlcm9mIERhdGVQaWNrZXJDb21wb25lbnRcclxuICAgKi9cclxuICBvbkRhdGVQaWNrZXJPcGVuKGNvbnRyb2xOYW1lOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc2Nyb2xsRmllbGRJbnRvVmlld0ZvckNhbGVuZGFyKCk7XHJcbiAgICB0aGlzLnNldE92ZXJsYXlDbGlwQm91bmRzKCk7XHJcbiAgICB0aGlzLmRhdGVwaWNrZXJTZXJ2aWNlLnNlbGVjdGVkRGF0ZSA9IHRoaXMuZ3JvdXAuZ2V0KGNvbnRyb2xOYW1lKT8udmFsdWU7XHJcbiAgfVxyXG5cclxuICBvbkRhdGVQaWNrZXJDbG9zZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuY2xlYXJPdmVybGF5Q2xpcEJvdW5kcygpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmNsZWFyT3ZlcmxheUNsaXBCb3VuZHMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0T3ZlcmxheUNsaXBCb3VuZHMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBmb3JtQm9keSA9IHRoaXMuZ2V0Rm9ybU92ZXJsYXlTY3JvbGxDb250YWluZXIoKTtcclxuICAgIGNvbnN0IGRvY3VtZW50RWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm93bmVyRG9jdW1lbnRcclxuICAgICAgLmRvY3VtZW50RWxlbWVudDtcclxuICAgIGNvbnN0IHZpZXdwb3J0SGVpZ2h0ID1cclxuICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldz8uaW5uZXJIZWlnaHQgPz8gMDtcclxuXHJcbiAgICBpZiAoIWZvcm1Cb2R5IHx8ICF2aWV3cG9ydEhlaWdodCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGZvcm1Cb2R5UmVjdCA9IGZvcm1Cb2R5LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KFxyXG4gICAgICAnLS1pZWVlc2EtZm9ybS1vdmVybGF5LWNsaXAtdG9wJyxcclxuICAgICAgYCR7TWF0aC5tYXgoMCwgTWF0aC5mbG9vcihmb3JtQm9keVJlY3QudG9wKSl9cHhgXHJcbiAgICApO1xyXG4gICAgZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KFxyXG4gICAgICAnLS1pZWVlc2EtZm9ybS1vdmVybGF5LWNsaXAtYm90dG9tJyxcclxuICAgICAgYCR7TWF0aC5tYXgoMCwgdmlld3BvcnRIZWlnaHQgLSBNYXRoLmNlaWwoZm9ybUJvZHlSZWN0LmJvdHRvbSkpfXB4YFxyXG4gICAgKTtcclxuICAgIHRoaXMuZm9ybU92ZXJsYXlTY3JvbGxDb250YWluZXIgPSBmb3JtQm9keTtcclxuICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm93bmVyRG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcclxuICAgICAgJ3doZWVsJyxcclxuICAgICAgdGhpcy5vdmVybGF5V2hlZWxMaXN0ZW5lcixcclxuICAgICAgeyBjYXB0dXJlOiB0cnVlLCBwYXNzaXZlOiBmYWxzZSB9XHJcbiAgICApO1xyXG4gICAgZG9jdW1lbnRFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2llZWVzYS1mb3JtLW92ZXJsYXktb3BlbicpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzY3JvbGxGaWVsZEludG9WaWV3Rm9yQ2FsZW5kYXIoKTogdm9pZCB7XHJcbiAgICBjb25zdCBmb3JtQm9keSA9IHRoaXMuZ2V0Rm9ybU92ZXJsYXlTY3JvbGxDb250YWluZXIoKTtcclxuICAgIGNvbnN0IGRhdGVGaWVsZCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICAgICdpbnB1dFttYXRJbnB1dF0nXHJcbiAgICApIGFzIEhUTUxFbGVtZW50IHwgbnVsbDtcclxuXHJcbiAgICBpZiAoIWZvcm1Cb2R5IHx8ICFkYXRlRmllbGQpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBmb3JtQm9keVJlY3QgPSBmb3JtQm9keS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIGNvbnN0IGRhdGVGaWVsZFJlY3QgPSBkYXRlRmllbGQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICBjb25zdCB0YXJnZXRUb3AgPSBmb3JtQm9keVJlY3QudG9wICsgMTY7XHJcbiAgICBjb25zdCBzY3JvbGxEZWx0YSA9IGRhdGVGaWVsZFJlY3QudG9wIC0gdGFyZ2V0VG9wO1xyXG5cclxuICAgIGlmIChzY3JvbGxEZWx0YSA+IDApIHtcclxuICAgICAgZm9ybUJvZHkuc2Nyb2xsVG9wICs9IHNjcm9sbERlbHRhO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRGb3JtT3ZlcmxheVNjcm9sbENvbnRhaW5lcigpOiBIVE1MRWxlbWVudCB8IG51bGwge1xyXG4gICAgY29uc3QgY2FuZGlkYXRlcyA9IFtcclxuICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xvc2VzdCgnLmllZWVzYS1keW5hbWljLWZvcm1fX2JvZHknKSxcclxuICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xvc2VzdCgnLmllZWVzYS1zdGVwcGVyX19jb250ZW50JyksXHJcbiAgICBdIGFzIChIVE1MRWxlbWVudCB8IG51bGwpW107XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgY2FuZGlkYXRlcy5maW5kKChlbGVtZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKCFlbGVtZW50KSByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgICAgIGNvbnN0IG92ZXJmbG93WSA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkub3ZlcmZsb3dZO1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAob3ZlcmZsb3dZID09PSAnYXV0bycgfHwgb3ZlcmZsb3dZID09PSAnc2Nyb2xsJykgJiZcclxuICAgICAgICAgIGVsZW1lbnQuc2Nyb2xsSGVpZ2h0ID4gZWxlbWVudC5jbGllbnRIZWlnaHRcclxuICAgICAgICApO1xyXG4gICAgICB9KSA/P1xyXG4gICAgICBjYW5kaWRhdGVzLmZpbmQoKGVsZW1lbnQpID0+ICEhZWxlbWVudCkgPz9cclxuICAgICAgbnVsbFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2xlYXJPdmVybGF5Q2xpcEJvdW5kcygpOiB2b2lkIHtcclxuICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm93bmVyRG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcclxuICAgICAgJ3doZWVsJyxcclxuICAgICAgdGhpcy5vdmVybGF5V2hlZWxMaXN0ZW5lcixcclxuICAgICAgdHJ1ZVxyXG4gICAgKTtcclxuICAgIHRoaXMuZm9ybU92ZXJsYXlTY3JvbGxDb250YWluZXIgPSB1bmRlZmluZWQ7XHJcbiAgICBjb25zdCBkb2N1bWVudEVsZW1lbnQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5vd25lckRvY3VtZW50XHJcbiAgICAgIC5kb2N1bWVudEVsZW1lbnQ7XHJcbiAgICBkb2N1bWVudEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnaWVlZXNhLWZvcm0tb3ZlcmxheS1vcGVuJyk7XHJcbiAgICBkb2N1bWVudEVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoJy0taWVlZXNhLWZvcm0tb3ZlcmxheS1jbGlwLXRvcCcpO1xyXG4gICAgZG9jdW1lbnRFbGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KCctLWllZWVzYS1mb3JtLW92ZXJsYXktY2xpcC1ib3R0b20nKTtcclxuICB9XHJcbn0iLCI8ZGl2IGNsYXNzPVwiaWVlZXNhLWRhdGVwaWNrZXJcIj5cclxuICA8ZGl2XHJcbiAgICBbZm9ybUdyb3VwXT1cImdyb3VwXCJcclxuICAgICpuZ0lmPVwiY2FsZW5kYXJUeXBlID09PSBjYWxlbmRhclR5cGVzLlNJTkdMRV9EQVRFX1NFTEVDVElPTlwiXHJcbiAgICBjbGFzcz1cImllZWVzYS1kYXRlcGlja2VyLS1zaW5nbGUtc2VsZWN0aW9uXCJcclxuICAgIFtuZ0NsYXNzXT1cIiFpc1JlcXVpcmVkKCkgPyAnaWVlZXNhLWRhdGVwaWNrZXJfX3ZhbGlkLWRhdGUnIDogJydcIlxyXG4gICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAnaWVlZXNhLWRhdGVwaWNrZXJfX3ZhbGlkLWRhdGUnOiAhaXNSZXF1aXJlZCgpLFxyXG4gICAgICAnaWVlZXNhLWRhdGVwaWNrZXJfX2xhYmVsLWxlZnQnOiBpc0xhYmVsQWxpZ25lZExlZnQsXHJcbiAgICAgICdpZWVlc2EtZGF0ZXBpY2tlcl9fbGFiZWwtdG9wJzogIWlzTGFiZWxBbGlnbmVkTGVmdFxyXG4gICAgfVwiXHJcbiAgPlxyXG4gICAgPG1hdC1sYWJlbFxyXG4gICAgICAqbmdJZj1cImRhdGVwaWNrZXJMYWJlbFwiXHJcbiAgICAgIGNsYXNzPVwiaWVlZXNhLWJvZHktc20tMTQgaWVlZXNhLWRhdGVwaWNrZXJfX2xhYmVsXCJcclxuICAgICAgPnt7IGRhdGVwaWNrZXJMYWJlbCB9fVxyXG4gICAgPC9tYXQtbGFiZWw+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDxpbnB1dFxyXG4gICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgKGRhdGVJbnB1dCk9XCJvbkRhdGVDaGFuZ2UoKVwiXHJcbiAgICAgICAgKGNsaWNrKT1cInBpY2tlci5vcGVuKClcIlxyXG4gICAgICAgIFttYXREYXRlcGlja2VyXT1cInBpY2tlclwiXHJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJjb25maWcuYXJpYUxhYmVsXCJcclxuICAgICAgICBbYXJpYS1kZXNjcmliZWRieV09XCJjb25maWcuYXJpYURlc2NyaWJlZEJ5SWQgPz8gJydcIlxyXG4gICAgICAgIFttaW5dPVwiY29uZmlnPy5kYXRlUGlja2VyPy5taW5EYXRlID8/IG1pbkRhdGVcIlxyXG4gICAgICAgIFttYXhdPVwiY29uZmlnPy5kYXRlUGlja2VyPy5tYXhEYXRlID8/IG1heERhdGVcIlxyXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiY29uZmlnLmNvbnRyb2xOYW1lXCJcclxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiXHJcbiAgICAgICAgICBwbGFjZWhvbGRlckxhYmVsID8/IGJ1dHRvbkFjdGlvbnNJbmZvPy5kYXRlUGlja2VyPy5kYXRlRm9ybWF0TGFiZWxcclxuICAgICAgICBcIlxyXG4gICAgICAgICNjYWxlbmRhclxyXG4gICAgICAgIHJlYWRvbmx5XHJcbiAgICAgIC8+XHJcbiAgICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGVcclxuICAgICAgICBjbGFzcz1cIm1hdC1kYXRlcGlja2VyLXRvZ2dsZVwiXHJcbiAgICAgICAgbWF0SWNvblN1ZmZpeFxyXG4gICAgICAgIFtmb3JdPVwicGlja2VyXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzdmcgbWF0RGF0ZXBpY2tlclRvZ2dsZUljb24gY2xhc3M9XCJpZWVlc2EtZGF0ZXBpY2tlcl9fZGF0ZXBpY2tlci1pY29uXCI+XHJcbiAgICAgICAgICA8dXNlXHJcbiAgICAgICAgICAgIFthdHRyLnhsaW5rOmhyZWZdPVwiYnV0dG9uQWN0aW9uc0luZm8/LmRhdGVQaWNrZXI/LmRhdGVQaWNrZXJJY29uXCJcclxuICAgICAgICAgID48L3VzZT5cclxuICAgICAgICA8L3N2Zz5cclxuICAgICAgPC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XHJcbiAgICAgIDxtYXQtZGF0ZXBpY2tlclxyXG4gICAgICAgICNwaWNrZXJcclxuICAgICAgICB5UG9zaXRpb249XCJiZWxvd1wiXHJcbiAgICAgICAgW2NhbGVuZGFySGVhZGVyQ29tcG9uZW50XT1cImRhdGVQaWNrZXJIZWFkZXJcIlxyXG4gICAgICAgIChvcGVuZWQpPVwib25EYXRlUGlja2VyT3Blbihjb25maWcuY29udHJvbE5hbWUpXCJcclxuICAgICAgICAoY2xvc2VkKT1cIm9uRGF0ZVBpY2tlckNsb3NlKClcIlxyXG4gICAgICA+XHJcbiAgICAgIDwvbWF0LWRhdGVwaWNrZXI+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPGllZWVzYS1mb3JtLWVycm9yIFtmb3JtR3JvdXBdPVwiZ3JvdXBcIiBbY29uZmlnXT1cImNvbmZpZ1wiPlxyXG4gICAgPC9pZWVlc2EtZm9ybS1lcnJvcj5cclxuICAgIDxpZWVlc2EtZm9ybS1zdXBwb3J0LXRleHRcclxuICAgICAgW2Zvcm1Hcm91cF09XCJncm91cFwiXHJcbiAgICAgIFtjb25maWddPVwiY29uZmlnXCJcclxuICAgID48L2llZWVzYS1mb3JtLXN1cHBvcnQtdGV4dD5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdlxyXG4gICAgW2Zvcm1Hcm91cF09XCJncm91cFwiXHJcbiAgICAqbmdJZj1cImNhbGVuZGFyVHlwZSA9PT0gY2FsZW5kYXJUeXBlcy5EQVRFX1JBTkdFX1NFTEVDVElPTlwiXHJcbiAgICBjbGFzcz1cImllZWVzYS1kYXRlcGlja2VyLS1tdWx0aS1zZWxlY3Rpb25cIlxyXG4gICAgW25nQ2xhc3NdPVwiXHJcbiAgICAgIGlzTGFiZWxBbGlnbmVkTGVmdFxyXG4gICAgICAgID8gJ2llZWVzYS1kYXRlcGlja2VyX19sYWJlbC1sZWZ0J1xyXG4gICAgICAgIDogJ2llZWVzYS1kYXRlcGlja2VyX19sYWJlbC10b3AnXHJcbiAgICBcIlxyXG4gID5cclxuICAgIDxtYXQtbGFiZWxcclxuICAgICAgKm5nSWY9XCJkYXRlcGlja2VyTGFiZWxcIlxyXG4gICAgICBjbGFzcz1cImllZWVzYS1kYXRlcGlja2VyX19sYWJlbCBpZWVlc2EtYm9keS1zbS0xNFwiXHJcbiAgICAgID57eyBkYXRlcGlja2VyTGFiZWwgfX1cclxuICAgIDwvbWF0LWxhYmVsPlxyXG4gICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICA8bWF0LWRhdGUtcmFuZ2UtaW5wdXQgW3JhbmdlUGlja2VyXT1cInJhbmdlUGlja2VyXCIgW2Zvcm1Hcm91cF09XCJncm91cFwiPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgbWF0U3RhcnREYXRlXHJcbiAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJjb25maWcuZGF0ZVJhbmdlQ29udHJvbHM/LnN0YXJ0RGF0ZSA/PyAnJ1wiXHJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiYnV0dG9uQWN0aW9uc0luZm8/LmRhdGVQaWNrZXI/LmRhdGVGb3JtYXRMYWJlbCArICcgLSAnXCJcclxuICAgICAgICAgIChkYXRlQ2hhbmdlKT1cIm9uRGF0ZVJhbmdlQ2hhbmdlKClcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBtYXRFbmREYXRlXHJcbiAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJjb25maWcuZGF0ZVJhbmdlQ29udHJvbHM/LmVuZERhdGUgPz8gJydcIlxyXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImJ1dHRvbkFjdGlvbnNJbmZvPy5kYXRlUGlja2VyPy5kYXRlRm9ybWF0TGFiZWxcIlxyXG4gICAgICAgICAgKGRhdGVDaGFuZ2UpPVwib25EYXRlUmFuZ2VDaGFuZ2UoKVwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9tYXQtZGF0ZS1yYW5nZS1pbnB1dD5cclxuICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZVxyXG4gICAgICAgIGNsYXNzPVwibWF0LWRhdGVwaWNrZXItdG9nZ2xlXCJcclxuICAgICAgICBtYXRJY29uU3VmZml4XHJcbiAgICAgICAgW2Zvcl09XCJyYW5nZVBpY2tlclwiXHJcbiAgICAgID48L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cclxuICAgICAgPG1hdC1kYXRlLXJhbmdlLXBpY2tlclxyXG4gICAgICAgICNyYW5nZVBpY2tlclxyXG4gICAgICAgIHlQb3NpdGlvbj1cImJlbG93XCJcclxuICAgICAgICBbY2FsZW5kYXJIZWFkZXJDb21wb25lbnRdPVwiZGF0ZVBpY2tlckhlYWRlclwiXHJcbiAgICAgICAgKGRhdGVJbnB1dCk9XCJvbkRhdGVSYW5nZUNoYW5nZSgpXCJcclxuICAgICAgICAob3BlbmVkKT1cIm9uRGF0ZVBpY2tlck9wZW4oY29uZmlnLmNvbnRyb2xOYW1lKVwiXHJcbiAgICAgICAgKGNsb3NlZCk9XCJvbkRhdGVQaWNrZXJDbG9zZSgpXCJcclxuICAgICAgPlxyXG4gICAgICA8L21hdC1kYXRlLXJhbmdlLXBpY2tlcj5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXZcclxuICAgICpuZ0lmPVwiY2FsZW5kYXJUeXBlID09PSBjYWxlbmRhclR5cGVzLkNBTEVOREFSXCJcclxuICAgIGNsYXNzPVwiaWVlZXNhLWRhdGVwaWNrZXItLWNhbGVuZGFyXCJcclxuICA+XHJcbiAgICA8bWF0LWNhbGVuZGFyXHJcbiAgICAgIFtoZWFkZXJDb21wb25lbnRdPVwiZGF0ZVBpY2tlckhlYWRlclwiXHJcbiAgICAgIFsoc2VsZWN0ZWQpXT1cImNhbGVuZGFyU2VsZWN0ZWREYXRlXCJcclxuICAgID5cclxuICAgIDwvbWF0LWNhbGVuZGFyPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
389
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc2VudGF0aW9uL3NyYy9saWIvY29tcG9uZW50cy9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzZW50YXRpb24vc3JjL2xpYi9jb21wb25lbnRzL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBR0wsTUFBTSxFQUNOLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUwsV0FBVyxFQUVYLG1CQUFtQixFQUNuQixVQUFVLEdBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLCtCQUErQixHQUNoQyxNQUFNLGtDQUFrQyxDQUFDO0FBQzFDLE9BQU8sRUFDTCxXQUFXLEVBQ1gsZ0JBQWdCLEVBQ2hCLGVBQWUsR0FDaEIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2pFLE9BQU8sRUFDTCw4QkFBOEIsRUFDOUIsbUJBQW1CLEdBQ3BCLE1BQU0sOEJBQThCLENBQUM7QUFDdEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FB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bmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbmplY3RhYmxlLFxyXG4gIElucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEZvcm1CdWlsZGVyLFxyXG4gIEZvcm1Db250cm9sLFxyXG4gIEZvcm1Hcm91cCxcclxuICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gIFZhbGlkYXRvcnMsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQge1xyXG4gIE1vbWVudERhdGVBZGFwdGVyLFxyXG4gIE1BVF9NT01FTlRfREFURV9BREFQVEVSX09QVElPTlMsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwtbW9tZW50LWFkYXB0ZXInO1xyXG5pbXBvcnQge1xyXG4gIERhdGVBZGFwdGVyLFxyXG4gIE1BVF9EQVRFX0ZPUk1BVFMsXHJcbiAgTUFUX0RBVEVfTE9DQUxFLFxyXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBNYXRFeHBhbnNpb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9leHBhbnNpb24nO1xyXG5pbXBvcnQge1xyXG4gIE1BVF9EQVRFUElDS0VSX1NDUk9MTF9TVFJBVEVHWSxcclxuICBNYXREYXRlcGlja2VyTW9kdWxlLFxyXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInO1xyXG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XHJcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBPdmVybGF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xyXG5pbXBvcnQgbW9tZW50XyBmcm9tICdtb21lbnQnO1xyXG5pbXBvcnQgeyBEYXRlUGlja2VySGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9kYXRlLXBpY2tlci1oZWFkZXIvZGF0ZS1waWNrZXItaGVhZGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERhdGVGb3JtYXRzIH0gZnJvbSAnLi4vLi4vZGF0ZS1mb3JtYXRzJztcclxuaW1wb3J0IHsgRmllbGRDb25maWcgfSBmcm9tICcuLi8uLi8vbW9kZWxzL2ZpZWxkLWNvbmZpZy5tb2RlbCc7XHJcbmltcG9ydCB7IENhbGVuZGFyVHlwZSB9IGZyb20gJy4uLy4uL21vZGVscy9jYWxlbmRhci5tb2RlbCc7XHJcbmltcG9ydCB7IEZvcm1FcnJvckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvZm9ybS1lcnJvci9mb3JtLWVycm9yLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERhdGVwaWNrZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGF0ZXBpY2tlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRm9ybUZpZWxkIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2Zvcm0tZmllbGQubW9kZWwnO1xyXG5pbXBvcnQgKiBhcyBidXR0b25BY3Rpb25zSW5mbyBmcm9tICcuLi8uLi9hc3NldHMvY29uc3RhbnRzLmpzb24nO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbFR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvZm9ybS1jb250cm9sLXR5cGVzLm1vZGVsJztcclxuaW1wb3J0IHsgRm9ybVV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZm9ybS11dGlsaXR5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGb3JtT3ZlcmxheUJvdW5kc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9mb3JtLW92ZXJsYXktYm91bmRzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGb3JtU3VwcG9ydFRleHRDb21wb25lbnQgfSBmcm9tICcuLi9mb3JtLXN1cHBvcnQtdGV4dC9mb3JtLXN1cHBvcnQtdGV4dC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTZWxlY3RlZERhdGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvc2VsZWN0ZWQtZGF0ZS5tb2RlbCc7XHJcbmNvbnN0IG1vbWVudCA9IG1vbWVudF87XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBDdXN0b21EYXRlQWRhcHRlciBleHRlbmRzIE1vbWVudERhdGVBZGFwdGVyIHtcclxuICAvKipcclxuICAgKiBPdmVycmlkZXMgdGhlIGdldERheU9mV2Vla05hbWVzIG1ldGhvZCBvZiBNb21lbnREYXRlQWRhcHRlciB0byBzaG93IGZpcnN0IGxldHRlciBvZiBkYXkgaW4gY2FwaXRhbCBpbiBkYXRlIHBpY2tlciBoZWFkZXIuXHJcbiAgICogQHJldHVybiB7c3RyaW5nW119XHJcbiAgICogQG1lbWJlcm9mIEN1c3RvbURhdGVBZGFwdGVyXHJcbiAgICovXHJcbiAgb3ZlcnJpZGUgZ2V0RGF5T2ZXZWVrTmFtZXMoKTogc3RyaW5nW10ge1xyXG4gICAgcmV0dXJuIFsnUycsICdNJywgJ1QnLCAnVycsICdUJywgJ0YnLCAnUyddO1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIERhdGUgc2VsZWN0aW9uIG9mIHR5cGUgU0lOR0xFX0RBVEVfU0VMRUNUSU9OLCBEQVRFX1JBTkdFX1NFTEVDVElPTiBhbmQgQ0FMRU5EQVIgYW5kIGhhbmRsaW5nIG9mIGNhbGVuZGFyIGV2ZW50cy5cclxuICogQGV4cG9ydFxyXG4gKiBAY2xhc3MgRGF0ZVBpY2tlckNvbXBvbmVudFxyXG4gKiBAaW1wbGVtZW50cyB7Rm9ybUZpZWxkfVxyXG4gKiBAaW1wbGVtZW50cyB7T25Jbml0fVxyXG4gKiBAaW1wbGVtZW50cyB7QWZ0ZXJWaWV3SW5pdH1cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaWVlZXNhLWRhdGUtcGlja2VyJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBGb3JtRXJyb3JDb21wb25lbnQsXHJcbiAgICBNYXRFeHBhbnNpb25Nb2R1bGUsXHJcbiAgICBNYXRNZW51TW9kdWxlLFxyXG4gICAgTWF0SWNvbk1vZHVsZSxcclxuICAgIE1hdElucHV0TW9kdWxlLFxyXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxyXG4gICAgTWF0RGF0ZXBpY2tlck1vZHVsZSxcclxuICAgIERhdGVQaWNrZXJIZWFkZXJDb21wb25lbnQsXHJcbiAgICBNYXRCdXR0b25Nb2R1bGUsXHJcbiAgICBGb3JtU3VwcG9ydFRleHRDb21wb25lbnQsXHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHsgcHJvdmlkZTogTUFUX01PTUVOVF9EQVRFX0FEQVBURVJfT1BUSU9OUywgdXNlVmFsdWU6IHsgdXNlVXRjOiB0cnVlIH0gfSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogRGF0ZUFkYXB0ZXIsXHJcbiAgICAgIHVzZUNsYXNzOiBDdXN0b21EYXRlQWRhcHRlcixcclxuICAgICAgZGVwczogW01BVF9EQVRFX0xPQ0FMRSwgTUFUX01PTUVOVF9EQVRFX0FEQVBURVJfT1BUSU9OU10sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBNQVRfREFURV9GT1JNQVRTLFxyXG4gICAgICB1c2VWYWx1ZTogRGF0ZUZvcm1hdHMsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBNQVRfREFURVBJQ0tFUl9TQ1JPTExfU1RSQVRFR1ksXHJcbiAgICAgIHVzZUZhY3Rvcnk6IChvdmVybGF5OiBPdmVybGF5KSA9PiAoKSA9PlxyXG4gICAgICAgIG92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKCksXHJcbiAgICAgIGRlcHM6IFtPdmVybGF5XSxcclxuICAgIH0sXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RhdGUtcGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIERhdGVQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBGb3JtRmllbGQsIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBjb25maWchOiBGaWVsZENvbmZpZztcclxuICBncm91cCE6IEZvcm1Hcm91cDtcclxuICBkYXRlUGlja2VySGVhZGVyID0gRGF0ZVBpY2tlckhlYWRlckNvbXBvbmVudDtcclxuICBjYWxlbmRhclR5cGVzID0gQ2FsZW5kYXJUeXBlO1xyXG4gIHByaXZhdGUgX3NlbGVjdGVkRGF0ZXM6IHN0cmluZ1tdID0gW107XHJcbiAgLyoqXHJcbiAgICogR2V0cyBwcmVzZWxlY3RlZCBkYXRlcyBhcyBhbiBpbnB1dC5cclxuICAgKiBAbWVtYmVyb2YgRGF0ZVBpY2tlckNvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHNlbGVjdGVkRGF0ZXModmFsdWU6IHN0cmluZ1tdKSB7XHJcbiAgICB0aGlzLl9zZWxlY3RlZERhdGVzID0gdmFsdWU7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2xOYW1lICYmXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlcz8ubGVuZ3RoID09PSAxICYmXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlc1swXSAhPT0gdW5kZWZpbmVkICYmXHJcbiAgICAgIHRoaXMuY2FsZW5kYXJUeXBlID09PSBDYWxlbmRhclR5cGUuU0lOR0xFX0RBVEVfU0VMRUNUSU9OXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5kYXRlcGlja2VyU2VydmljZS5zZWxlY3RlZERhdGUgPSB2YWx1ZVswXTtcclxuICAgICAgdGhpcy5jcmVhdGVGb3JtR3JvdXAodmFsdWVbMF0pO1xyXG4gICAgICB0aGlzLmRhdGVwaWNrZXJTZXJ2aWNlLmlzUmFuZ2VTZWxlY3Rpb24gPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyBzZWxlY3RlZCBkYXRlc1xyXG4gICAqIEByZWFkb25seVxyXG4gICAqIEB0eXBlIHtzdHJpbmdbXX1cclxuICAgKiBAbWVtYmVyb2YgRGF0ZVBpY2tlckNvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldCBzZWxlY3RlZERhdGVzKCk6IHN0cmluZ1tdIHtcclxuICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZERhdGVzO1xyXG4gIH1cclxuICBwcml2YXRlIF9zZWxlY3RlZFJhbmdlOiBzdHJpbmdbXSA9IFtdO1xyXG4gIC8qKlxyXG4gICAqIEdldHMgcHJlc2VsZWN0ZWQgZGF0ZSByYW5nZSBhcyBhbiBpbnB1dC5cclxuICAgKiBAbWVtYmVyb2YgRGF0ZVBpY2tlckNvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHNlbGVjdGVkUmFuZ2UodmFsdWU6IHN0cmluZ1tdKSB7XHJcbiAgICB0aGlzLl9zZWxlY3RlZFJhbmdlID0gdmFsdWU7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSYW5nZT8ubGVuZ3RoID09PSAyICYmXHJcbiAgICAgIHRoaXMuY2FsZW5kYXJUeXBlID09PSBDYWxlbmRhclR5cGUuREFURV9SQU5HRV9TRUxFQ1RJT05cclxuICAgICkge1xyXG4gICAgICB0aGlzLmNyZWF0ZUZvcm1Hcm91cFdpdGhSYW5nZUNvbnRyb2xzKHZhbHVlWzBdLCB2YWx1ZVsxXSk7XHJcbiAgICAgIHRoaXMuc2V0RGF0ZVJhbmdlKHZhbHVlWzBdLCB2YWx1ZVsxXSk7XHJcbiAgICAgIHRoaXMuZGF0ZXBpY2tlclNlcnZpY2UuaXNSYW5nZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgc2VsZWN0ZWQgZGF0ZSByYW5nZVxyXG4gICAqIEByZWFkb25seVxyXG4gICAqIEB0eXBlIHtzdHJpbmdbXX1cclxuICAgKiBAbWVtYmVyb2YgRGF0ZVBpY2tlckNvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldCBzZWxlY3RlZFJhbmdlKCk6IHN0cmluZ1tdIHtcclxuICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZFJhbmdlO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgY2FsZW5kYXJUeXBlOiBDYWxlbmRhclR5cGUgPSBDYWxlbmRhclR5cGUuU0lOR0xFX0RBVEVfU0VMRUNUSU9OO1xyXG4gIEBJbnB1dCgpIGZvcm1Db250cm9sTmFtZSE6IHN0cmluZztcclxuICBASW5wdXQoKSBwbGFjZWhvbGRlckxhYmVsID0gJyc7XHJcbiAgQElucHV0KCkgaXNEaXNhYmxlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGlzTGFiZWxBbGlnbmVkTGVmdCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGRhdGVwaWNrZXJMYWJlbCA9ICcnO1xyXG4gIEBJbnB1dCgpIGRhdGVSYW5nZSE6IHsgbWluRGF0ZTogc3RyaW5nOyBtYXhEYXRlOiBzdHJpbmcgfTtcclxuICBASW5wdXQoKSBtaW5EYXRlITogRGF0ZSB8IG1vbWVudC5Nb21lbnQ7XHJcbiAgQElucHV0KCkgbWF4RGF0ZSE6IERhdGUgfCBtb21lbnQuTW9tZW50O1xyXG4gIEBPdXRwdXQoKSBzZWxlY3RlZERhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPFNlbGVjdGVkRGF0ZT4oKTtcclxuICBAT3V0cHV0KCkgc2VsZWN0ZWREYXRlUmFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHtcclxuICAgIHN0YXJ0RGF0ZTogc3RyaW5nO1xyXG4gICAgZW5kRGF0ZTogc3RyaW5nO1xyXG4gIH0+KCk7XHJcbiAgY2FsZW5kYXJTZWxlY3RlZERhdGUhOiBEYXRlO1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgYnV0dG9uQWN0aW9uc0luZm86IGFueSA9IGJ1dHRvbkFjdGlvbnNJbmZvO1xyXG4gIHByaXZhdGUgZm9ybU92ZXJsYXlTY3JvbGxDb250YWluZXI/OiBIVE1MRWxlbWVudDtcclxuICBwcml2YXRlIHJlYWRvbmx5IG92ZXJsYXlXaGVlbExpc3RlbmVyID0gKGV2ZW50OiBXaGVlbEV2ZW50KTogdm9pZCA9PiB7XHJcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgRWxlbWVudCB8IG51bGw7XHJcbiAgICBpZiAodGFyZ2V0Py5jbG9zZXN0KCcuY2RrLW92ZXJsYXktcGFuZScpKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgZm9ybUJvZHkgPSB0aGlzLmZvcm1PdmVybGF5U2Nyb2xsQ29udGFpbmVyO1xyXG4gICAgaWYgKCFmb3JtQm9keSB8fCBmb3JtQm9keS5zY3JvbGxIZWlnaHQgPD0gZm9ybUJvZHkuY2xpZW50SGVpZ2h0KSByZXR1cm47XHJcblxyXG4gICAgZm9ybUJvZHkuc2Nyb2xsVG9wICs9IGV2ZW50LmRlbHRhWTtcclxuICAgIGZvcm1Cb2R5LnNjcm9sbExlZnQgKz0gZXZlbnQuZGVsdGFYO1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICB9O1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgZGF0ZXBpY2tlclNlcnZpY2U6IERhdGVwaWNrZXJTZXJ2aWNlLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIGZvcm1VdGlsaXR5U2VydmljZTogRm9ybVV0aWxpdHlTZXJ2aWNlLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIGZvcm1PdmVybGF5Qm91bmRzOiBGb3JtT3ZlcmxheUJvdW5kc1NlcnZpY2UsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWVtcHR5LWZ1bmN0aW9uLFxyXG4gICkge31cclxuICAvKipcclxuICAgKiBJbXBsZW1lbnRhdGlvbiBvZiAgbmdPbkluaXQgbGlmZWN5Y2xlIGhvb2sgbWV0aG9kIHRvIGNyZWF0ZXMgY29uZmlnIGlmIGl0cyB1bmRlZmluZWQgYW5kIHNldHMgY29tcG9uZW50cyBpbnN0YW5jZSB2YXJpYWJsZXMgaWYgY29uZmlnIGlzIGRlZmluZWQuIFNldHMgdGhlIGZvcm0gZ3JvdXAgdmFsdWUgaWYgZm9ybSBncm91cCBpcyBkZWZpbmVkLlxyXG4gICAqIEBtZW1iZXJvZiBEYXRlUGlja2VyQ29tcG9uZW50XHJcbiAgICovXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuY29uZmlnKSB7XHJcbiAgICAgIGNvbnN0IGNvbnRyb2xOYW1lID0gdGhpcy5mb3JtQ29udHJvbE5hbWUgPz8gJ2RhdGVwaWNrZXInO1xyXG4gICAgICB0aGlzLmNvbmZpZyA9IHRoaXMuZm9ybVV0aWxpdHlTZXJ2aWNlLmdldEZvcm1GaWVsZENvbmZpZyhcclxuICAgICAgICBjb250cm9sTmFtZSxcclxuICAgICAgICBGb3JtQ29udHJvbFR5cGUuREFURVxyXG4gICAgICApO1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5jb25maWcgJiZcclxuICAgICAgICB0aGlzLmNhbGVuZGFyVHlwZSA9PT0gQ2FsZW5kYXJUeXBlLkRBVEVfUkFOR0VfU0VMRUNUSU9OXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuY29uZmlnLmRhdGVSYW5nZUNvbnRyb2xzID0ge1xyXG4gICAgICAgICAgc3RhcnREYXRlOiAnc3RhcnREYXRlJyxcclxuICAgICAgICAgIGVuZERhdGU6ICdlbmREYXRlJyxcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmluaXRpYWxpemVQcm9wZXJ0aWVzRnJvbUNvbmZpZygpO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLmdyb3VwKSB7XHJcbiAgICAgIGlmICh0aGlzLmNhbGVuZGFyVHlwZSA9PT0gQ2FsZW5kYXJUeXBlLlNJTkdMRV9EQVRFX1NFTEVDVElPTikge1xyXG4gICAgICAgIHRoaXMuY3JlYXRlRm9ybUdyb3VwKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5jYWxlbmRhclR5cGUgPT09IENhbGVuZGFyVHlwZS5EQVRFX1JBTkdFX1NFTEVDVElPTikge1xyXG4gICAgICAgIHRoaXMuY3JlYXRlRm9ybUdyb3VwV2l0aFJhbmdlQ29udHJvbHMoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbGl6ZXMgcHJvcGVydGllcyBmcm9tIHRoZSBjb25maWcgaW5wdXRcclxuICAgKiBAbWVtYmVyb2YgRGF0ZVBpY2tlckNvbXBvbmVudFxyXG4gICAqL1xyXG4gIGluaXRpYWxpemVQcm9wZXJ0aWVzRnJvbUNvbmZpZygpOiB2b2lkIHtcclxuICAgIHRoaXMuY2FsZW5kYXJUeXBlID1cclxuICAgICAgdGhpcy5jb25maWc/LmRhdGVQaWNrZXI/LmNhbGVuZGFyVHlwZSA/P1xyXG4gICAgICBDYWxlbmRhclR5cGUuU0lOR0xFX0RBVEVfU0VMRUNUSU9OO1xyXG4gICAgdGhpcy5wbGFjZWhvbGRlckxhYmVsID0gdGhpcy5jb25maWc/LmRhdGVQaWNrZXI/LnBsYWNlaG9sZGVyTGFiZWwgPz8gJyc7XHJcbiAgICB0aGlzLmRhdGVwaWNrZXJMYWJlbCA9IHRoaXMuY29uZmlnPy5kYXRlUGlja2VyPy5sYWJlbCA/PyAnJztcclxuICAgIHRoaXMuaXNMYWJlbEFsaWduZWRMZWZ0ID1cclxuICAgICAgdGhpcy5jb25maWc/LmRhdGVQaWNrZXI/LmlzTGFiZWxBbGlnbmVkTGVmdCA/PyBmYWxzZTtcclxuICAgIHRoaXMuZGF0ZVJhbmdlID0gdGhpcy5jb25maWc/LmRhdGVQaWNrZXI/LmRhdGVSYW5nZSA/PyB7XHJcbiAgICAgIG1pbkRhdGU6ICcnLFxyXG4gICAgICBtYXhEYXRlOiAnJyxcclxuICAgIH07XHJcbiAgICB0aGlzLmlzRGlzYWJsZWQgPSAhIXRoaXMuY29uZmlnLmRpc2FibGVkO1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmNvbmZpZy5kYXRlUGlja2VyPy5jYWxlbmRhclR5cGUgPT09IENhbGVuZGFyVHlwZS5EQVRFX1JBTkdFX1NFTEVDVElPTlxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuZ3JvdXAuYWRkQ29udHJvbCgnc3RhcnREYXRlJywgbmV3IEZvcm1Db250cm9sKCkpO1xyXG4gICAgICB0aGlzLmdyb3VwLmFkZENvbnRyb2woJ2VuZERhdGUnLCBuZXcgRm9ybUNvbnRyb2woKSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZSBkYXRlIGNoYW5nZSBldmVudCBhbmQgZW1pdHMgdGhlIHNlbGVjdGVkIGRhdGUuXHJcbiAgICogQG1lbWJlcm9mIERhdGVQaWNrZXJDb21wb25lbnRcclxuICAgKi9cclxuICBvbkRhdGVDaGFuZ2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkRGF0ZS5lbWl0KHtcclxuICAgICAgZGF0ZTogdGhpcy5ncm91cD8uZ2V0KHRoaXMuY29uZmlnPy5jb250cm9sTmFtZSk/LnZhbHVlLFxyXG4gICAgICBjb250cm9sTmFtZTogdGhpcy5jb25maWc/LmNvbnRyb2xOYW1lXHJcbiAgICB9KTtcclxuICAgIHRoaXMuZGF0ZXBpY2tlclNlcnZpY2Uuc2VsZWN0ZWREYXRlID0gdGhpcy5ncm91cD8uZ2V0KFxyXG4gICAgICB0aGlzLmNvbmZpZy5jb250cm9sTmFtZVxyXG4gICAgKT8udmFsdWU7XHJcbiAgICB0aGlzLmRhdGVwaWNrZXJTZXJ2aWNlLmlzUmFuZ2VTZWxlY3Rpb24gPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgYW5kIGVtaXRzIHNlbGVjdGVkIGRhdGUgcmFuZ2VcclxuICAgKiBAbWVtYmVyb2YgRGF0ZVBpY2tlckNvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uRGF0ZVJhbmdlQ2hhbmdlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kYXRlcGlja2VyU2VydmljZS5pc1JhbmdlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgIHRoaXMuc2V0RGF0ZVJhbmdlKFxyXG4gICAgICB0aGlzLmdyb3VwLnZhbHVlLnN0YXJ0RGF0ZSA/PyAnJyxcclxuICAgICAgdGhpcy5ncm91cC52YWx1ZS5lbmREYXRlID8/ICcnXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2UuZW1pdCh7XHJcbiAgICAgIHN0YXJ0RGF0ZTogdGhpcy5ncm91cC52YWx1ZS5zdGFydERhdGUgPz8gJycsXHJcbiAgICAgIGVuZERhdGU6IHRoaXMuZ3JvdXAudmFsdWUuZW5kRGF0ZSA/PyAnJyxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgbWluIGFuZCBtYXggZGF0ZSByYW5nZS5cclxuICAgKiBAcGFyYW0geyhzdHJpbmcgfCBEYXRlKX0gc3RhcnREYXRlXHJcbiAgICogQHBhcmFtIHsoc3RyaW5nIHwgRGF0ZSl9IGVuZERhdGVcclxuICAgKiBAbWVtYmVyb2YgRGF0ZVBpY2tlckNvbXBvbmVudFxyXG4gICAqL1xyXG4gIHNldERhdGVSYW5nZShzdGFydERhdGU6IHN0cmluZyB8IERhdGUsIGVuZERhdGU6IHN0cmluZyB8IERhdGUpOiB2b2lkIHtcclxuICAgIHRoaXMuZGF0ZXBpY2tlclNlcnZpY2UucmFuZ2UubmV4dCh7XHJcbiAgICAgIHN0YXJ0OiBzdGFydERhdGUsXHJcbiAgICAgIGVuZDogZW5kRGF0ZSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBmb3JtIGdyb3VwIGFuZCBpbml0aWFsaXplcyBmb3JtIHZhbHVlXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtkYXRlXVxyXG4gICAqIEBtZW1iZXJvZiBEYXRlUGlja2VyQ29tcG9uZW50XHJcbiAgICovXHJcbiAgY3JlYXRlRm9ybUdyb3VwKGRhdGU/OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuZ3JvdXAgPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgW3RoaXMuZm9ybUNvbnRyb2xOYW1lID8gdGhpcy5mb3JtQ29udHJvbE5hbWUgOiAnZGF0ZXBpY2tlciddOiBkYXRlXHJcbiAgICAgICAgPyBbbW9tZW50KGRhdGUpLnV0Yyh0cnVlKS5mb3JtYXQoKV1cclxuICAgICAgICA6IFtdLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgZm9ybSBncm91cCB3aXRoIHJhbmdlIHR5cGUgb2YgY29udHJvbHMgYW5kIHNldHMgdGhlIG1pbiBhbmQgbWF4IHJhbmdlIHZhbHVlcy5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0YXJ0RGF0ZV1cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2VuZERhdGVdXHJcbiAgICogQG1lbWJlcm9mIERhdGVQaWNrZXJDb21wb25lbnRcclxuICAgKi9cclxuICBjcmVhdGVGb3JtR3JvdXBXaXRoUmFuZ2VDb250cm9scyhzdGFydERhdGU/OiBzdHJpbmcsIGVuZERhdGU/OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuZ3JvdXAgPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgc3RhcnREYXRlOiBzdGFydERhdGUgPyBbbW9tZW50KHN0YXJ0RGF0ZSkudXRjKHRydWUpLmZvcm1hdCgpXSA6IFtdLFxyXG4gICAgICBlbmREYXRlOiBlbmREYXRlID8gW21vbWVudChlbmREYXRlKS51dGModHJ1ZSkuZm9ybWF0KCldIDogW10sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQ2hlY2tzIGlmIHRoZSBmb3JtIGNvbnRyb2wgaGFzIHJlcXVpcmVkIHZhbGlkYXRvci5cclxuICAgKiBAcmV0dXJuIHtib29sZWFufVxyXG4gICAqIEBtZW1iZXJvZiBEYXRlUGlja2VyQ29tcG9uZW50XHJcbiAgICovXHJcbiAgaXNSZXF1aXJlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmdyb3VwPy5jb250cm9sc1t0aGlzLmNvbmZpZz8uY29udHJvbE5hbWVdPy5oYXNWYWxpZGF0b3IoXHJcbiAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWRcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSB1cGRhdGVkIHNlbGVjdGVkIGRhdGUgdXNpbmcgZGF0ZXBpY2tlciBzZXJ2aWNlIHdoaWNoIHdpbGwgYmUgc2hvd24gaW4gZGF0ZXBpY2tlciBoZWFkZXJcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gY29udHJvbE5hbWVcclxuICAgKiBAbWVtYmVyb2YgRGF0ZVBpY2tlckNvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uRGF0ZVBpY2tlck9wZW4oY29udHJvbE5hbWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5zY3JvbGxGaWVsZEludG9WaWV3Rm9yQ2FsZW5kYXIoKTtcclxuICAgIHRoaXMuc2V0T3ZlcmxheUNsaXBCb3VuZHMoKTtcclxuICAgIHRoaXMuZGF0ZXBpY2tlclNlcnZpY2Uuc2VsZWN0ZWREYXRlID0gdGhpcy5ncm91cC5nZXQoY29udHJvbE5hbWUpPy52YWx1ZTtcclxuICB9XHJcblxyXG4gIG9uRGF0ZVBpY2tlckNsb3NlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jbGVhck92ZXJsYXlDbGlwQm91bmRzKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuY2xlYXJPdmVybGF5Q2xpcEJvdW5kcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRPdmVybGF5Q2xpcEJvdW5kcygpOiB2b2lkIHtcclxuICAgIGNvbnN0IGZvcm1Cb2R5ID0gdGhpcy5nZXRGb3JtT3ZlcmxheVNjcm9sbENvbnRhaW5lcigpO1xyXG4gICAgaWYgKCFmb3JtQm9keSkgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuZm9ybU92ZXJsYXlTY3JvbGxDb250YWluZXIgPSBmb3JtQm9keTtcclxuICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm93bmVyRG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcclxuICAgICAgJ3doZWVsJyxcclxuICAgICAgdGhpcy5vdmVybGF5V2hlZWxMaXN0ZW5lcixcclxuICAgICAgeyBjYXB0dXJlOiB0cnVlLCBwYXNzaXZlOiBmYWxzZSB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzY3JvbGxGaWVsZEludG9WaWV3Rm9yQ2FsZW5kYXIoKTogdm9pZCB7XHJcbiAgICBjb25zdCBmb3JtQm9keSA9IHRoaXMuZ2V0Rm9ybU92ZXJsYXlTY3JvbGxDb250YWluZXIoKTtcclxuICAgIGNvbnN0IGRhdGVGaWVsZCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICAgICdpbnB1dFttYXRJbnB1dF0nXHJcbiAgICApIGFzIEhUTUxFbGVtZW50IHwgbnVsbDtcclxuXHJcbiAgICBpZiAoIWZvcm1Cb2R5IHx8ICFkYXRlRmllbGQpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBmb3JtQm9keVJlY3QgPSBmb3JtQm9keS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIGNvbnN0IGRhdGVGaWVsZFJlY3QgPSBkYXRlRmllbGQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICBjb25zdCB0YXJnZXRUb3AgPSBmb3JtQm9keVJlY3QudG9wICsgMTY7XHJcbiAgICBjb25zdCBzY3JvbGxEZWx0YSA9IGRhdGVGaWVsZFJlY3QudG9wIC0gdGFyZ2V0VG9wO1xyXG5cclxuICAgIGlmIChzY3JvbGxEZWx0YSA+IDApIHtcclxuICAgICAgZm9ybUJvZHkuc2Nyb2xsVG9wICs9IHNjcm9sbERlbHRhO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRGb3JtT3ZlcmxheVNjcm9sbENvbnRhaW5lcigpOiBIVE1MRWxlbWVudCB8IG51bGwge1xyXG4gICAgLy8gQ29udGFpbm1lbnQgaXMgb3duZWQgYnkgRm9ybU92ZXJsYXlCb3VuZHNTZXJ2aWNlLCB3aGljaCBhbHNvIGtlZXBzIHRoZSBjbGlwXHJcbiAgICAvLyBiYW5kIGN1cnJlbnQgd2hpbGUgdGhlIHBhZ2Ugc2Nyb2xscy5cclxuICAgIHJldHVybiB0aGlzLmZvcm1PdmVybGF5Qm91bmRzLmNvbnRhaW4odGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjbGVhck92ZXJsYXlDbGlwQm91bmRzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQub3duZXJEb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFxyXG4gICAgICAnd2hlZWwnLFxyXG4gICAgICB0aGlzLm92ZXJsYXlXaGVlbExpc3RlbmVyLFxyXG4gICAgICB0cnVlXHJcbiAgICApO1xyXG4gICAgdGhpcy5mb3JtT3ZlcmxheVNjcm9sbENvbnRhaW5lciA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuZm9ybU92ZXJsYXlCb3VuZHMucmVsZWFzZSgpO1xyXG4gIH1cclxufSIsIjxkaXYgY2xhc3M9XCJpZWVlc2EtZGF0ZXBpY2tlclwiPlxyXG4gIDxkaXZcclxuICAgIFtmb3JtR3JvdXBdPVwiZ3JvdXBcIlxyXG4gICAgKm5nSWY9XCJjYWxlbmRhclR5cGUgPT09IGNhbGVuZGFyVHlwZXMuU0lOR0xFX0RBVEVfU0VMRUNUSU9OXCJcclxuICAgIGNsYXNzPVwiaWVlZXNhLWRhdGVwaWNrZXItLXNpbmdsZS1zZWxlY3Rpb25cIlxyXG4gICAgW25nQ2xhc3NdPVwiIWlzUmVxdWlyZWQoKSA/ICdpZWVlc2EtZGF0ZXBpY2tlcl9fdmFsaWQtZGF0ZScgOiAnJ1wiXHJcbiAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICdpZWVlc2EtZGF0ZXBpY2tlcl9fdmFsaWQtZGF0ZSc6ICFpc1JlcXVpcmVkKCksXHJcbiAgICAgICdpZWVlc2EtZGF0ZXBpY2tlcl9fbGFiZWwtbGVmdCc6IGlzTGFiZWxBbGlnbmVkTGVmdCxcclxuICAgICAgJ2llZWVzYS1kYXRlcGlja2VyX19sYWJlbC10b3AnOiAhaXNMYWJlbEFsaWduZWRMZWZ0XHJcbiAgICB9XCJcclxuICA+XHJcbiAgICA8bWF0LWxhYmVsXHJcbiAgICAgICpuZ0lmPVwiZGF0ZXBpY2tlckxhYmVsXCJcclxuICAgICAgY2xhc3M9XCJpZWVlc2EtYm9keS1zbS0xNCBpZWVlc2EtZGF0ZXBpY2tlcl9fbGFiZWxcIlxyXG4gICAgICA+e3sgZGF0ZXBpY2tlckxhYmVsIH19XHJcbiAgICA8L21hdC1sYWJlbD5cclxuICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgPGlucHV0XHJcbiAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAoZGF0ZUlucHV0KT1cIm9uRGF0ZUNoYW5nZSgpXCJcclxuICAgICAgICAoY2xpY2spPVwicGlja2VyLm9wZW4oKVwiXHJcbiAgICAgICAgW21hdERhdGVwaWNrZXJdPVwicGlja2VyXCJcclxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImNvbmZpZy5hcmlhTGFiZWxcIlxyXG4gICAgICAgIFthcmlhLWRlc2NyaWJlZGJ5XT1cImNvbmZpZy5hcmlhRGVzY3JpYmVkQnlJZCA/PyAnJ1wiXHJcbiAgICAgICAgW21pbl09XCJjb25maWc/LmRhdGVQaWNrZXI/Lm1pbkRhdGUgPz8gbWluRGF0ZVwiXHJcbiAgICAgICAgW21heF09XCJjb25maWc/LmRhdGVQaWNrZXI/Lm1heERhdGUgPz8gbWF4RGF0ZVwiXHJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJjb25maWcuY29udHJvbE5hbWVcIlxyXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJcclxuICAgICAgICAgIHBsYWNlaG9sZGVyTGFiZWwgPz8gYnV0dG9uQWN0aW9uc0luZm8/LmRhdGVQaWNrZXI/LmRhdGVGb3JtYXRMYWJlbFxyXG4gICAgICAgIFwiXHJcbiAgICAgICAgI2NhbGVuZGFyXHJcbiAgICAgICAgcmVhZG9ubHlcclxuICAgICAgLz5cclxuICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZVxyXG4gICAgICAgIGNsYXNzPVwibWF0LWRhdGVwaWNrZXItdG9nZ2xlXCJcclxuICAgICAgICBtYXRJY29uU3VmZml4XHJcbiAgICAgICAgW2Zvcl09XCJwaWNrZXJcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHN2ZyBtYXREYXRlcGlja2VyVG9nZ2xlSWNvbiBjbGFzcz1cImllZWVzYS1kYXRlcGlja2VyX19kYXRlcGlja2VyLWljb25cIj5cclxuICAgICAgICAgIDx1c2VcclxuICAgICAgICAgICAgW2F0dHIueGxpbms6aHJlZl09XCJidXR0b25BY3Rpb25zSW5mbz8uZGF0ZVBpY2tlcj8uZGF0ZVBpY2tlckljb25cIlxyXG4gICAgICAgICAgPjwvdXNlPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgICA8L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cclxuICAgICAgPG1hdC1kYXRlcGlja2VyXHJcbiAgICAgICAgI3BpY2tlclxyXG4gICAgICAgIHlQb3NpdGlvbj1cImJlbG93XCJcclxuICAgICAgICBbY2FsZW5kYXJIZWFkZXJDb21wb25lbnRdPVwiZGF0ZVBpY2tlckhlYWRlclwiXHJcbiAgICAgICAgKG9wZW5lZCk9XCJvbkRhdGVQaWNrZXJPcGVuKGNvbmZpZy5jb250cm9sTmFtZSlcIlxyXG4gICAgICAgIChjbG9zZWQpPVwib25EYXRlUGlja2VyQ2xvc2UoKVwiXHJcbiAgICAgID5cclxuICAgICAgPC9tYXQtZGF0ZXBpY2tlcj5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8aWVlZXNhLWZvcm0tZXJyb3IgW2Zvcm1Hcm91cF09XCJncm91cFwiIFtjb25maWddPVwiY29uZmlnXCI+XHJcbiAgICA8L2llZWVzYS1mb3JtLWVycm9yPlxyXG4gICAgPGllZWVzYS1mb3JtLXN1cHBvcnQtdGV4dFxyXG4gICAgICBbZm9ybUdyb3VwXT1cImdyb3VwXCJcclxuICAgICAgW2NvbmZpZ109XCJjb25maWdcIlxyXG4gICAgPjwvaWVlZXNhLWZvcm0tc3VwcG9ydC10ZXh0PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2XHJcbiAgICBbZm9ybUdyb3VwXT1cImdyb3VwXCJcclxuICAgICpuZ0lmPVwiY2FsZW5kYXJUeXBlID09PSBjYWxlbmRhclR5cGVzLkRBVEVfUkFOR0VfU0VMRUNUSU9OXCJcclxuICAgIGNsYXNzPVwiaWVlZXNhLWRhdGVwaWNrZXItLW11bHRpLXNlbGVjdGlvblwiXHJcbiAgICBbbmdDbGFzc109XCJcclxuICAgICAgaXNMYWJlbEFsaWduZWRMZWZ0XHJcbiAgICAgICAgPyAnaWVlZXNhLWRhdGVwaWNrZXJfX2xhYmVsLWxlZnQnXHJcbiAgICAgICAgOiAnaWVlZXNhLWRhdGVwaWNrZXJfX2xhYmVsLXRvcCdcclxuICAgIFwiXHJcbiAgPlxyXG4gICAgPG1hdC1sYWJlbFxyXG4gICAgICAqbmdJZj1cImRhdGVwaWNrZXJMYWJlbFwiXHJcbiAgICAgIGNsYXNzPVwiaWVlZXNhLWRhdGVwaWNrZXJfX2xhYmVsIGllZWVzYS1ib2R5LXNtLTE0XCJcclxuICAgICAgPnt7IGRhdGVwaWNrZXJMYWJlbCB9fVxyXG4gICAgPC9tYXQtbGFiZWw+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDxtYXQtZGF0ZS1yYW5nZS1pbnB1dCBbcmFuZ2VQaWNrZXJdPVwicmFuZ2VQaWNrZXJcIiBbZm9ybUdyb3VwXT1cImdyb3VwXCI+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBtYXRTdGFydERhdGVcclxuICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbmZpZy5kYXRlUmFuZ2VDb250cm9scz8uc3RhcnREYXRlID8/ICcnXCJcclxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJidXR0b25BY3Rpb25zSW5mbz8uZGF0ZVBpY2tlcj8uZGF0ZUZvcm1hdExhYmVsICsgJyAtICdcIlxyXG4gICAgICAgICAgKGRhdGVDaGFuZ2UpPVwib25EYXRlUmFuZ2VDaGFuZ2UoKVwiXHJcbiAgICAgICAgLz5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIG1hdEVuZERhdGVcclxuICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbmZpZy5kYXRlUmFuZ2VDb250cm9scz8uZW5kRGF0ZSA/PyAnJ1wiXHJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiYnV0dG9uQWN0aW9uc0luZm8/LmRhdGVQaWNrZXI/LmRhdGVGb3JtYXRMYWJlbFwiXHJcbiAgICAgICAgICAoZGF0ZUNoYW5nZSk9XCJvbkRhdGVSYW5nZUNoYW5nZSgpXCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L21hdC1kYXRlLXJhbmdlLWlucHV0PlxyXG4gICAgICA8bWF0LWRhdGVwaWNrZXItdG9nZ2xlXHJcbiAgICAgICAgY2xhc3M9XCJtYXQtZGF0ZXBpY2tlci10b2dnbGVcIlxyXG4gICAgICAgIG1hdEljb25TdWZmaXhcclxuICAgICAgICBbZm9yXT1cInJhbmdlUGlja2VyXCJcclxuICAgICAgPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxyXG4gICAgICA8bWF0LWRhdGUtcmFuZ2UtcGlja2VyXHJcbiAgICAgICAgI3JhbmdlUGlja2VyXHJcbiAgICAgICAgeVBvc2l0aW9uPVwiYmVsb3dcIlxyXG4gICAgICAgIFtjYWxlbmRhckhlYWRlckNvbXBvbmVudF09XCJkYXRlUGlja2VySGVhZGVyXCJcclxuICAgICAgICAoZGF0ZUlucHV0KT1cIm9uRGF0ZVJhbmdlQ2hhbmdlKClcIlxyXG4gICAgICAgIChvcGVuZWQpPVwib25EYXRlUGlja2VyT3Blbihjb25maWcuY29udHJvbE5hbWUpXCJcclxuICAgICAgICAoY2xvc2VkKT1cIm9uRGF0ZVBpY2tlckNsb3NlKClcIlxyXG4gICAgICA+XHJcbiAgICAgIDwvbWF0LWRhdGUtcmFuZ2UtcGlja2VyPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdlxyXG4gICAgKm5nSWY9XCJjYWxlbmRhclR5cGUgPT09IGNhbGVuZGFyVHlwZXMuQ0FMRU5EQVJcIlxyXG4gICAgY2xhc3M9XCJpZWVlc2EtZGF0ZXBpY2tlci0tY2FsZW5kYXJcIlxyXG4gID5cclxuICAgIDxtYXQtY2FsZW5kYXJcclxuICAgICAgW2hlYWRlckNvbXBvbmVudF09XCJkYXRlUGlja2VySGVhZGVyXCJcclxuICAgICAgWyhzZWxlY3RlZCldPVwiY2FsZW5kYXJTZWxlY3RlZERhdGVcIlxyXG4gICAgPlxyXG4gICAgPC9tYXQtY2FsZW5kYXI+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=