@skyux/datetime 11.19.2 → 11.21.0

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.
@@ -361,7 +361,7 @@ export class SkyDateRangePickerComponent {
361
361
  multi: true,
362
362
  },
363
363
  { provide: SKY_FORM_ERRORS_ENABLED, useValue: true },
364
- ], ngImport: i0, template: "<div class=\"sky-date-range-picker\" [formGroup]=\"formGroup\">\n <div\n class=\"sky-date-range-picker-form-group\"\n [ngClass]=\"{\n 'sky-date-range-picker-last-input':\n !showStartDatePicker() && !showEndDatePicker()\n }\"\n >\n <sky-input-box\n [hasErrors]=\"calculatorIdHasErrors()\"\n [helpKey]=\"helpKey\"\n [helpPopoverContent]=\"helpPopoverContent\"\n [helpPopoverTitle]=\"helpPopoverTitle\"\n [hintText]=\"hintText\"\n [labelText]=\"\n labelText ||\n label ||\n ('skyux_date_range_picker_default_label' | skyLibResources)\n \"\n >\n <select\n formControlName=\"calculatorId\"\n (blur)=\"onBlur()\"\n (change)=\"onCalculatorIdChange()\"\n >\n @for (calculator of calculators; track calculator.calculatorId) {\n <option [value]=\"calculator.calculatorId\">\n {{\n calculator._shortDescriptionResourceKey\n ? (calculator._shortDescriptionResourceKey | skyLibResources)\n : calculator.shortDescription\n }}\n </option>\n }\n </select>\n @if (\n hostControl?.errors?.['skyDateRange']?.errors?.[\n 'endDateBeforeStartDate'\n ] && labelText\n ) {\n <sky-form-error\n [errorName]=\"'endDateBeforeStartDate'\"\n [errorText]=\"\n 'skyux_date_range_picker_end_date_before_start_date_error_label_text'\n | skyLibResources\n \"\n />\n }\n <ng-content select=\"sky-form-error\" />\n </sky-input-box>\n </div>\n <div\n class=\"sky-date-range-picker-form-group sky-date-range-datepicker-wrapper\"\n [hidden]=\"!showStartDatePicker()\"\n [ngClass]=\"{\n 'sky-date-range-picker-last-input':\n showStartDatePicker() && !showEndDatePicker()\n }\"\n >\n <sky-input-box\n [hasErrors]=\"startDateHasErrors()\"\n [labelText]=\"\n selectedCalculator.type\n | skyDateRangePickerStartDateResourceKey\n | skyLibResources\n \"\n >\n <sky-datepicker (calendarDateChange)=\"onDateChange()\">\n <input\n formControlName=\"startDate\"\n name=\"startDate\"\n skyDatepickerInput\n type=\"text\"\n [attr.aria-label]=\"\n labelText || label\n ? ('skyux_date_range_picker_default_aria_label'\n | skyLibResources\n : (selectedCalculator.type\n | skyDateRangePickerStartDateResourceKey\n | skyLibResources)\n : (labelText ? labelText : label))\n : (selectedCalculator.type\n | skyDateRangePickerStartDateResourceKey\n | skyLibResources)\n \"\n [dateFormat]=\"dateFormat\"\n [required]=\"showStartDatePicker()\"\n (change)=\"onDateChange()\"\n />\n </sky-datepicker>\n </sky-input-box>\n </div>\n <div\n class=\"sky-date-range-picker-form-group sky-date-range-datepicker-wrapper\"\n [hidden]=\"!showEndDatePicker()\"\n [ngClass]=\"{ 'sky-date-range-picker-last-input': showEndDatePicker() }\"\n >\n <sky-input-box\n [hasErrors]=\"endDateHasErrors()\"\n [labelText]=\"\n selectedCalculator.type\n | skyDateRangePickerEndDateResourceKey\n | skyLibResources\n \"\n >\n <sky-datepicker (calendarDateChange)=\"onDateChange()\">\n <input\n formControlName=\"endDate\"\n name=\"endDate\"\n skyDatepickerInput\n type=\"text\"\n [attr.aria-label]=\"\n labelText || label\n ? ('skyux_date_range_picker_default_aria_label'\n | skyLibResources\n : (selectedCalculator.type\n | skyDateRangePickerEndDateResourceKey\n | skyLibResources)\n : (labelText ? labelText : label))\n : (selectedCalculator.type\n | skyDateRangePickerEndDateResourceKey\n | skyLibResources)\n \"\n [dateFormat]=\"dateFormat\"\n [required]=\"showEndDatePicker()\"\n (change)=\"onDateChange()\"\n />\n </sky-datepicker>\n </sky-input-box>\n </div>\n</div>\n", styles: [".sky-date-range-picker:not(.sky-theme-modern *){--sky-override-date-range-picker-responsive-bottom-margin: var( --sky-margin-stacked-lg );--sky-override-date-range-picker-margin-right: 0;--sky-override-date-range-picker-padding-left: 5px;--sky-override-date-range-picker-padding-right: 5px}:host{display:block}.sky-date-range-picker{display:flex}:host .sky-date-range-picker{flex-direction:column}:host .sky-date-range-picker-form-group{flex-basis:100%}:host .sky-date-range-picker-form-group:not(:first-of-type){padding-left:initial}:host .sky-date-range-picker-form-group:not(:last-of-type){padding-right:initial}:host .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:var(--sky-override-date-range-picker-responsive-bottom-margin, var(--sky-space-gap-form-l));margin-right:0}:host-context(.sky-responsive-container-xs) .sky-date-range-picker,:host-context(.sky-responsive-container-sm) .sky-date-range-picker,:host-context(.sky-responsive-container-md) .sky-date-range-picker,:host-context(.sky-responsive-container-lg) .sky-date-range-picker{flex-direction:column}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group{flex-basis:100%}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:first-of-type){padding-left:initial}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:last-of-type){padding-right:initial}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:var(--sky-override-date-range-picker-responsive-bottom-margin, var(--sky-space-gap-form-l));margin-right:0}@media (min-width: 768px){:host .sky-date-range-picker{flex-direction:initial}:host .sky-date-range-picker-form-group{flex-basis:33.3333333333%;padding:0}:host .sky-date-range-picker-form-group:not(:first-of-type){padding-left:var(--sky-override-date-range-picker-padding-left, 0)}:host .sky-date-range-picker-form-group:not(:last-of-type){padding-right:var(--sky-override-date-range-picker-padding-right, 0)}:host .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:0;margin-right:var(--sky-override-date-range-picker-margin-right, var(--sky-space-gap-form-l))}}:host-context(.sky-responsive-container-sm) .sky-date-range-picker,:host-context(.sky-responsive-container-md) .sky-date-range-picker,:host-context(.sky-responsive-container-lg) .sky-date-range-picker{flex-direction:initial}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group{flex-basis:33.3333333333%;padding:0}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:first-of-type){padding-left:var(--sky-override-date-range-picker-padding-left, 0)}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:last-of-type){padding-right:var(--sky-override-date-range-picker-padding-right, 0)}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:0;margin-right:var(--sky-override-date-range-picker-margin-right, var(--sky-space-gap-form-l))}@media (min-width: 768px){:host-context(sky-filter-inline-item) .sky-date-range-picker-form-group{flex-basis:100%}}.sky-responsive-container-sm :host-context(sky-filter-inline-item) .sky-date-range-picker-form-group,.sky-responsive-container-md :host-context(sky-filter-inline-item) .sky-date-range-picker-form-group,.sky-responsive-container-lg :host-context(sky-filter-inline-item) .sky-date-range-picker-form-group{flex-basis:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: SkyDatepickerModule }, { kind: "component", type: i3.SkyDatepickerComponent, selector: "sky-datepicker", inputs: ["pickerClass"], outputs: ["calendarDateRangeChange", "dateFormatChange", "openChange", "calendarDateChange"] }, { kind: "directive", type: i4.SkyDatepickerInputDirective, selector: "[skyDatepickerInput]", inputs: ["dateFormat", "disabled", "maxDate", "minDate", "startAtDate", "skyDatepickerInput", "skyDatepickerNoValidate", "startingDay", "strict"] }, { kind: "pipe", type: SkyDateRangePickerEndDateResourceKeyPipe, name: "skyDateRangePickerEndDateResourceKey" }, { kind: "pipe", type: SkyDateRangePickerStartDateResourceKeyPipe, name: "skyDateRangePickerStartDateResourceKey" }, { kind: "ngmodule", type: SkyDatetimeResourcesModule }, { kind: "pipe", type: i5.SkyLibResourcesPipe, name: "skyLibResources" }, { kind: "ngmodule", type: SkyInputBoxModule }, { kind: "component", type: i6.λ10, selector: "sky-input-box", inputs: ["hasErrors", "disabled", "labelText", "characterLimit", "stacked", "helpPopoverTitle", "helpPopoverContent", "helpKey", "hintText"] }, { kind: "directive", type: i6.λ20, selector: "input:not([skyId]):not(.sky-form-control),select:not([skyId]):not(.sky-form-control),textarea:not([skyId]):not(.sky-form-control)", inputs: ["autocomplete"] }, { kind: "component", type: i6.λ22, selector: "sky-form-error", inputs: ["errorName", "errorText"] }, { kind: "ngmodule", type: SkyFormErrorsModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
364
+ ], ngImport: i0, template: "<div class=\"sky-date-range-picker\" [formGroup]=\"formGroup\">\n <div\n class=\"sky-date-range-picker-form-group sky-date-range-picker-select-calculator\"\n [ngClass]=\"{\n 'sky-date-range-picker-last-input':\n !showStartDatePicker() && !showEndDatePicker()\n }\"\n >\n <sky-input-box\n [hasErrors]=\"calculatorIdHasErrors()\"\n [helpKey]=\"helpKey\"\n [helpPopoverContent]=\"helpPopoverContent\"\n [helpPopoverTitle]=\"helpPopoverTitle\"\n [hintText]=\"hintText\"\n [labelText]=\"\n labelText ||\n label ||\n ('skyux_date_range_picker_default_label' | skyLibResources)\n \"\n >\n <select\n formControlName=\"calculatorId\"\n (blur)=\"onBlur()\"\n (change)=\"onCalculatorIdChange()\"\n >\n @for (calculator of calculators; track calculator.calculatorId) {\n <option [value]=\"calculator.calculatorId\">\n {{\n calculator._shortDescriptionResourceKey\n ? (calculator._shortDescriptionResourceKey | skyLibResources)\n : calculator.shortDescription\n }}\n </option>\n }\n </select>\n @if (\n hostControl?.errors?.['skyDateRange']?.errors?.[\n 'endDateBeforeStartDate'\n ] && labelText\n ) {\n <sky-form-error\n errorName=\"endDateBeforeStartDate\"\n [errorText]=\"\n 'skyux_date_range_picker_end_date_before_start_date_error_label_text'\n | skyLibResources\n \"\n />\n }\n <span class=\"sky-input-box-descendent-form-error\">\n <ng-content select=\"sky-form-error\" />\n </span>\n </sky-input-box>\n </div>\n <div\n class=\"sky-date-range-picker-form-group sky-date-range-datepicker-wrapper sky-date-range-picker-start-date\"\n [hidden]=\"!showStartDatePicker()\"\n [ngClass]=\"{\n 'sky-date-range-picker-last-input':\n showStartDatePicker() && !showEndDatePicker()\n }\"\n >\n <sky-input-box\n [hasErrors]=\"startDateHasErrors()\"\n [labelText]=\"\n selectedCalculator.type\n | skyDateRangePickerStartDateResourceKey\n | skyLibResources\n \"\n >\n <sky-datepicker (calendarDateChange)=\"onDateChange()\">\n <input\n formControlName=\"startDate\"\n name=\"startDate\"\n skyDatepickerInput\n type=\"text\"\n [attr.aria-label]=\"\n labelText || label\n ? ('skyux_date_range_picker_default_aria_label'\n | skyLibResources\n : (selectedCalculator.type\n | skyDateRangePickerStartDateResourceKey\n | skyLibResources)\n : (labelText ? labelText : label))\n : (selectedCalculator.type\n | skyDateRangePickerStartDateResourceKey\n | skyLibResources)\n \"\n [dateFormat]=\"dateFormat\"\n [required]=\"showStartDatePicker()\"\n (change)=\"onDateChange()\"\n />\n </sky-datepicker>\n </sky-input-box>\n </div>\n <div\n class=\"sky-date-range-picker-form-group sky-date-range-datepicker-wrapper sky-date-range-picker-end-date\"\n [hidden]=\"!showEndDatePicker()\"\n [ngClass]=\"{ 'sky-date-range-picker-last-input': showEndDatePicker() }\"\n >\n <sky-input-box\n [hasErrors]=\"endDateHasErrors()\"\n [labelText]=\"\n selectedCalculator.type\n | skyDateRangePickerEndDateResourceKey\n | skyLibResources\n \"\n >\n <sky-datepicker (calendarDateChange)=\"onDateChange()\">\n <input\n formControlName=\"endDate\"\n name=\"endDate\"\n skyDatepickerInput\n type=\"text\"\n [attr.aria-label]=\"\n labelText || label\n ? ('skyux_date_range_picker_default_aria_label'\n | skyLibResources\n : (selectedCalculator.type\n | skyDateRangePickerEndDateResourceKey\n | skyLibResources)\n : (labelText ? labelText : label))\n : (selectedCalculator.type\n | skyDateRangePickerEndDateResourceKey\n | skyLibResources)\n \"\n [dateFormat]=\"dateFormat\"\n [required]=\"showEndDatePicker()\"\n (change)=\"onDateChange()\"\n />\n </sky-datepicker>\n </sky-input-box>\n </div>\n</div>\n", styles: [".sky-date-range-picker:not(.sky-theme-modern *){--sky-override-date-range-picker-responsive-bottom-margin: var( --sky-margin-stacked-lg );--sky-override-date-range-picker-margin-right: 0;--sky-override-date-range-picker-padding-left: 5px;--sky-override-date-range-picker-padding-right: 5px}:host{display:block}.sky-date-range-picker{display:flex}:host .sky-date-range-picker{flex-direction:column}:host .sky-date-range-picker-form-group{flex-basis:100%}:host .sky-date-range-picker-form-group:not(:first-of-type){padding-left:initial}:host .sky-date-range-picker-form-group:not(:last-of-type){padding-right:initial}:host .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:var(--sky-override-date-range-picker-responsive-bottom-margin, var(--sky-space-gap-form-l));margin-right:0}:host-context(.sky-responsive-container-xs) .sky-date-range-picker,:host-context(.sky-responsive-container-sm) .sky-date-range-picker,:host-context(.sky-responsive-container-md) .sky-date-range-picker,:host-context(.sky-responsive-container-lg) .sky-date-range-picker{flex-direction:column}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group{flex-basis:100%}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:first-of-type){padding-left:initial}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:last-of-type){padding-right:initial}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:var(--sky-override-date-range-picker-responsive-bottom-margin, var(--sky-space-gap-form-l));margin-right:0}@media (min-width: 768px){:host .sky-date-range-picker{flex-direction:initial}:host .sky-date-range-picker-form-group{flex-basis:33.3333333333%;padding:0}:host .sky-date-range-picker-form-group:not(:first-of-type){padding-left:var(--sky-override-date-range-picker-padding-left, 0)}:host .sky-date-range-picker-form-group:not(:last-of-type){padding-right:var(--sky-override-date-range-picker-padding-right, 0)}:host .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:0;margin-right:var(--sky-override-date-range-picker-margin-right, var(--sky-space-gap-form-l))}}:host-context(.sky-responsive-container-sm) .sky-date-range-picker,:host-context(.sky-responsive-container-md) .sky-date-range-picker,:host-context(.sky-responsive-container-lg) .sky-date-range-picker{flex-direction:initial}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group{flex-basis:33.3333333333%;padding:0}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:first-of-type){padding-left:var(--sky-override-date-range-picker-padding-left, 0)}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:last-of-type){padding-right:var(--sky-override-date-range-picker-padding-right, 0)}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:0;margin-right:var(--sky-override-date-range-picker-margin-right, var(--sky-space-gap-form-l))}@media (min-width: 768px){:host-context(sky-filter-inline-item) .sky-date-range-picker-form-group{flex-basis:100%}}.sky-responsive-container-sm :host-context(sky-filter-inline-item) .sky-date-range-picker-form-group,.sky-responsive-container-md :host-context(sky-filter-inline-item) .sky-date-range-picker-form-group,.sky-responsive-container-lg :host-context(sky-filter-inline-item) .sky-date-range-picker-form-group{flex-basis:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: SkyDatepickerModule }, { kind: "component", type: i3.SkyDatepickerComponent, selector: "sky-datepicker", inputs: ["pickerClass"], outputs: ["calendarDateRangeChange", "dateFormatChange", "openChange", "calendarDateChange"] }, { kind: "directive", type: i4.SkyDatepickerInputDirective, selector: "[skyDatepickerInput]", inputs: ["dateFormat", "disabled", "maxDate", "minDate", "startAtDate", "skyDatepickerInput", "skyDatepickerNoValidate", "startingDay", "strict"] }, { kind: "pipe", type: SkyDateRangePickerEndDateResourceKeyPipe, name: "skyDateRangePickerEndDateResourceKey" }, { kind: "pipe", type: SkyDateRangePickerStartDateResourceKeyPipe, name: "skyDateRangePickerStartDateResourceKey" }, { kind: "ngmodule", type: SkyDatetimeResourcesModule }, { kind: "pipe", type: i5.SkyLibResourcesPipe, name: "skyLibResources" }, { kind: "ngmodule", type: SkyInputBoxModule }, { kind: "component", type: i6.λ10, selector: "sky-input-box", inputs: ["hasErrors", "disabled", "labelText", "characterLimit", "stacked", "helpPopoverTitle", "helpPopoverContent", "helpKey", "hintText"] }, { kind: "directive", type: i6.λ20, selector: "input:not([skyId]):not(.sky-form-control),select:not([skyId]):not(.sky-form-control),textarea:not([skyId]):not(.sky-form-control)", inputs: ["autocomplete"] }, { kind: "component", type: i6.λ22, selector: "sky-form-error", inputs: ["errorName", "errorText"] }, { kind: "ngmodule", type: SkyFormErrorsModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
365
365
  }
366
366
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: SkyDateRangePickerComponent, decorators: [{
367
367
  type: Component,
@@ -387,7 +387,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
387
387
  multi: true,
388
388
  },
389
389
  { provide: SKY_FORM_ERRORS_ENABLED, useValue: true },
390
- ], selector: 'sky-date-range-picker', standalone: true, template: "<div class=\"sky-date-range-picker\" [formGroup]=\"formGroup\">\n <div\n class=\"sky-date-range-picker-form-group\"\n [ngClass]=\"{\n 'sky-date-range-picker-last-input':\n !showStartDatePicker() && !showEndDatePicker()\n }\"\n >\n <sky-input-box\n [hasErrors]=\"calculatorIdHasErrors()\"\n [helpKey]=\"helpKey\"\n [helpPopoverContent]=\"helpPopoverContent\"\n [helpPopoverTitle]=\"helpPopoverTitle\"\n [hintText]=\"hintText\"\n [labelText]=\"\n labelText ||\n label ||\n ('skyux_date_range_picker_default_label' | skyLibResources)\n \"\n >\n <select\n formControlName=\"calculatorId\"\n (blur)=\"onBlur()\"\n (change)=\"onCalculatorIdChange()\"\n >\n @for (calculator of calculators; track calculator.calculatorId) {\n <option [value]=\"calculator.calculatorId\">\n {{\n calculator._shortDescriptionResourceKey\n ? (calculator._shortDescriptionResourceKey | skyLibResources)\n : calculator.shortDescription\n }}\n </option>\n }\n </select>\n @if (\n hostControl?.errors?.['skyDateRange']?.errors?.[\n 'endDateBeforeStartDate'\n ] && labelText\n ) {\n <sky-form-error\n [errorName]=\"'endDateBeforeStartDate'\"\n [errorText]=\"\n 'skyux_date_range_picker_end_date_before_start_date_error_label_text'\n | skyLibResources\n \"\n />\n }\n <ng-content select=\"sky-form-error\" />\n </sky-input-box>\n </div>\n <div\n class=\"sky-date-range-picker-form-group sky-date-range-datepicker-wrapper\"\n [hidden]=\"!showStartDatePicker()\"\n [ngClass]=\"{\n 'sky-date-range-picker-last-input':\n showStartDatePicker() && !showEndDatePicker()\n }\"\n >\n <sky-input-box\n [hasErrors]=\"startDateHasErrors()\"\n [labelText]=\"\n selectedCalculator.type\n | skyDateRangePickerStartDateResourceKey\n | skyLibResources\n \"\n >\n <sky-datepicker (calendarDateChange)=\"onDateChange()\">\n <input\n formControlName=\"startDate\"\n name=\"startDate\"\n skyDatepickerInput\n type=\"text\"\n [attr.aria-label]=\"\n labelText || label\n ? ('skyux_date_range_picker_default_aria_label'\n | skyLibResources\n : (selectedCalculator.type\n | skyDateRangePickerStartDateResourceKey\n | skyLibResources)\n : (labelText ? labelText : label))\n : (selectedCalculator.type\n | skyDateRangePickerStartDateResourceKey\n | skyLibResources)\n \"\n [dateFormat]=\"dateFormat\"\n [required]=\"showStartDatePicker()\"\n (change)=\"onDateChange()\"\n />\n </sky-datepicker>\n </sky-input-box>\n </div>\n <div\n class=\"sky-date-range-picker-form-group sky-date-range-datepicker-wrapper\"\n [hidden]=\"!showEndDatePicker()\"\n [ngClass]=\"{ 'sky-date-range-picker-last-input': showEndDatePicker() }\"\n >\n <sky-input-box\n [hasErrors]=\"endDateHasErrors()\"\n [labelText]=\"\n selectedCalculator.type\n | skyDateRangePickerEndDateResourceKey\n | skyLibResources\n \"\n >\n <sky-datepicker (calendarDateChange)=\"onDateChange()\">\n <input\n formControlName=\"endDate\"\n name=\"endDate\"\n skyDatepickerInput\n type=\"text\"\n [attr.aria-label]=\"\n labelText || label\n ? ('skyux_date_range_picker_default_aria_label'\n | skyLibResources\n : (selectedCalculator.type\n | skyDateRangePickerEndDateResourceKey\n | skyLibResources)\n : (labelText ? labelText : label))\n : (selectedCalculator.type\n | skyDateRangePickerEndDateResourceKey\n | skyLibResources)\n \"\n [dateFormat]=\"dateFormat\"\n [required]=\"showEndDatePicker()\"\n (change)=\"onDateChange()\"\n />\n </sky-datepicker>\n </sky-input-box>\n </div>\n</div>\n", styles: [".sky-date-range-picker:not(.sky-theme-modern *){--sky-override-date-range-picker-responsive-bottom-margin: var( --sky-margin-stacked-lg );--sky-override-date-range-picker-margin-right: 0;--sky-override-date-range-picker-padding-left: 5px;--sky-override-date-range-picker-padding-right: 5px}:host{display:block}.sky-date-range-picker{display:flex}:host .sky-date-range-picker{flex-direction:column}:host .sky-date-range-picker-form-group{flex-basis:100%}:host .sky-date-range-picker-form-group:not(:first-of-type){padding-left:initial}:host .sky-date-range-picker-form-group:not(:last-of-type){padding-right:initial}:host .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:var(--sky-override-date-range-picker-responsive-bottom-margin, var(--sky-space-gap-form-l));margin-right:0}:host-context(.sky-responsive-container-xs) .sky-date-range-picker,:host-context(.sky-responsive-container-sm) .sky-date-range-picker,:host-context(.sky-responsive-container-md) .sky-date-range-picker,:host-context(.sky-responsive-container-lg) .sky-date-range-picker{flex-direction:column}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group{flex-basis:100%}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:first-of-type){padding-left:initial}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:last-of-type){padding-right:initial}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:var(--sky-override-date-range-picker-responsive-bottom-margin, var(--sky-space-gap-form-l));margin-right:0}@media (min-width: 768px){:host .sky-date-range-picker{flex-direction:initial}:host .sky-date-range-picker-form-group{flex-basis:33.3333333333%;padding:0}:host .sky-date-range-picker-form-group:not(:first-of-type){padding-left:var(--sky-override-date-range-picker-padding-left, 0)}:host .sky-date-range-picker-form-group:not(:last-of-type){padding-right:var(--sky-override-date-range-picker-padding-right, 0)}:host .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:0;margin-right:var(--sky-override-date-range-picker-margin-right, var(--sky-space-gap-form-l))}}:host-context(.sky-responsive-container-sm) .sky-date-range-picker,:host-context(.sky-responsive-container-md) .sky-date-range-picker,:host-context(.sky-responsive-container-lg) .sky-date-range-picker{flex-direction:initial}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group{flex-basis:33.3333333333%;padding:0}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:first-of-type){padding-left:var(--sky-override-date-range-picker-padding-left, 0)}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:last-of-type){padding-right:var(--sky-override-date-range-picker-padding-right, 0)}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:0;margin-right:var(--sky-override-date-range-picker-margin-right, var(--sky-space-gap-form-l))}@media (min-width: 768px){:host-context(sky-filter-inline-item) .sky-date-range-picker-form-group{flex-basis:100%}}.sky-responsive-container-sm :host-context(sky-filter-inline-item) .sky-date-range-picker-form-group,.sky-responsive-container-md :host-context(sky-filter-inline-item) .sky-date-range-picker-form-group,.sky-responsive-container-lg :host-context(sky-filter-inline-item) .sky-date-range-picker-form-group{flex-basis:100%}\n"] }]
390
+ ], selector: 'sky-date-range-picker', standalone: true, template: "<div class=\"sky-date-range-picker\" [formGroup]=\"formGroup\">\n <div\n class=\"sky-date-range-picker-form-group sky-date-range-picker-select-calculator\"\n [ngClass]=\"{\n 'sky-date-range-picker-last-input':\n !showStartDatePicker() && !showEndDatePicker()\n }\"\n >\n <sky-input-box\n [hasErrors]=\"calculatorIdHasErrors()\"\n [helpKey]=\"helpKey\"\n [helpPopoverContent]=\"helpPopoverContent\"\n [helpPopoverTitle]=\"helpPopoverTitle\"\n [hintText]=\"hintText\"\n [labelText]=\"\n labelText ||\n label ||\n ('skyux_date_range_picker_default_label' | skyLibResources)\n \"\n >\n <select\n formControlName=\"calculatorId\"\n (blur)=\"onBlur()\"\n (change)=\"onCalculatorIdChange()\"\n >\n @for (calculator of calculators; track calculator.calculatorId) {\n <option [value]=\"calculator.calculatorId\">\n {{\n calculator._shortDescriptionResourceKey\n ? (calculator._shortDescriptionResourceKey | skyLibResources)\n : calculator.shortDescription\n }}\n </option>\n }\n </select>\n @if (\n hostControl?.errors?.['skyDateRange']?.errors?.[\n 'endDateBeforeStartDate'\n ] && labelText\n ) {\n <sky-form-error\n errorName=\"endDateBeforeStartDate\"\n [errorText]=\"\n 'skyux_date_range_picker_end_date_before_start_date_error_label_text'\n | skyLibResources\n \"\n />\n }\n <span class=\"sky-input-box-descendent-form-error\">\n <ng-content select=\"sky-form-error\" />\n </span>\n </sky-input-box>\n </div>\n <div\n class=\"sky-date-range-picker-form-group sky-date-range-datepicker-wrapper sky-date-range-picker-start-date\"\n [hidden]=\"!showStartDatePicker()\"\n [ngClass]=\"{\n 'sky-date-range-picker-last-input':\n showStartDatePicker() && !showEndDatePicker()\n }\"\n >\n <sky-input-box\n [hasErrors]=\"startDateHasErrors()\"\n [labelText]=\"\n selectedCalculator.type\n | skyDateRangePickerStartDateResourceKey\n | skyLibResources\n \"\n >\n <sky-datepicker (calendarDateChange)=\"onDateChange()\">\n <input\n formControlName=\"startDate\"\n name=\"startDate\"\n skyDatepickerInput\n type=\"text\"\n [attr.aria-label]=\"\n labelText || label\n ? ('skyux_date_range_picker_default_aria_label'\n | skyLibResources\n : (selectedCalculator.type\n | skyDateRangePickerStartDateResourceKey\n | skyLibResources)\n : (labelText ? labelText : label))\n : (selectedCalculator.type\n | skyDateRangePickerStartDateResourceKey\n | skyLibResources)\n \"\n [dateFormat]=\"dateFormat\"\n [required]=\"showStartDatePicker()\"\n (change)=\"onDateChange()\"\n />\n </sky-datepicker>\n </sky-input-box>\n </div>\n <div\n class=\"sky-date-range-picker-form-group sky-date-range-datepicker-wrapper sky-date-range-picker-end-date\"\n [hidden]=\"!showEndDatePicker()\"\n [ngClass]=\"{ 'sky-date-range-picker-last-input': showEndDatePicker() }\"\n >\n <sky-input-box\n [hasErrors]=\"endDateHasErrors()\"\n [labelText]=\"\n selectedCalculator.type\n | skyDateRangePickerEndDateResourceKey\n | skyLibResources\n \"\n >\n <sky-datepicker (calendarDateChange)=\"onDateChange()\">\n <input\n formControlName=\"endDate\"\n name=\"endDate\"\n skyDatepickerInput\n type=\"text\"\n [attr.aria-label]=\"\n labelText || label\n ? ('skyux_date_range_picker_default_aria_label'\n | skyLibResources\n : (selectedCalculator.type\n | skyDateRangePickerEndDateResourceKey\n | skyLibResources)\n : (labelText ? labelText : label))\n : (selectedCalculator.type\n | skyDateRangePickerEndDateResourceKey\n | skyLibResources)\n \"\n [dateFormat]=\"dateFormat\"\n [required]=\"showEndDatePicker()\"\n (change)=\"onDateChange()\"\n />\n </sky-datepicker>\n </sky-input-box>\n </div>\n</div>\n", styles: [".sky-date-range-picker:not(.sky-theme-modern *){--sky-override-date-range-picker-responsive-bottom-margin: var( --sky-margin-stacked-lg );--sky-override-date-range-picker-margin-right: 0;--sky-override-date-range-picker-padding-left: 5px;--sky-override-date-range-picker-padding-right: 5px}:host{display:block}.sky-date-range-picker{display:flex}:host .sky-date-range-picker{flex-direction:column}:host .sky-date-range-picker-form-group{flex-basis:100%}:host .sky-date-range-picker-form-group:not(:first-of-type){padding-left:initial}:host .sky-date-range-picker-form-group:not(:last-of-type){padding-right:initial}:host .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:var(--sky-override-date-range-picker-responsive-bottom-margin, var(--sky-space-gap-form-l));margin-right:0}:host-context(.sky-responsive-container-xs) .sky-date-range-picker,:host-context(.sky-responsive-container-sm) .sky-date-range-picker,:host-context(.sky-responsive-container-md) .sky-date-range-picker,:host-context(.sky-responsive-container-lg) .sky-date-range-picker{flex-direction:column}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group{flex-basis:100%}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:first-of-type){padding-left:initial}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:last-of-type){padding-right:initial}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:var(--sky-override-date-range-picker-responsive-bottom-margin, var(--sky-space-gap-form-l));margin-right:0}@media (min-width: 768px){:host .sky-date-range-picker{flex-direction:initial}:host .sky-date-range-picker-form-group{flex-basis:33.3333333333%;padding:0}:host .sky-date-range-picker-form-group:not(:first-of-type){padding-left:var(--sky-override-date-range-picker-padding-left, 0)}:host .sky-date-range-picker-form-group:not(:last-of-type){padding-right:var(--sky-override-date-range-picker-padding-right, 0)}:host .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:0;margin-right:var(--sky-override-date-range-picker-margin-right, var(--sky-space-gap-form-l))}}:host-context(.sky-responsive-container-sm) .sky-date-range-picker,:host-context(.sky-responsive-container-md) .sky-date-range-picker,:host-context(.sky-responsive-container-lg) .sky-date-range-picker{flex-direction:initial}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group{flex-basis:33.3333333333%;padding:0}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:first-of-type){padding-left:var(--sky-override-date-range-picker-padding-left, 0)}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:last-of-type){padding-right:var(--sky-override-date-range-picker-padding-right, 0)}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:0;margin-right:var(--sky-override-date-range-picker-margin-right, var(--sky-space-gap-form-l))}@media (min-width: 768px){:host-context(sky-filter-inline-item) .sky-date-range-picker-form-group{flex-basis:100%}}.sky-responsive-container-sm :host-context(sky-filter-inline-item) .sky-date-range-picker-form-group,.sky-responsive-container-md :host-context(sky-filter-inline-item) .sky-date-range-picker-form-group,.sky-responsive-container-lg :host-context(sky-filter-inline-item) .sky-date-range-picker-form-group{flex-basis:100%}\n"] }]
391
391
  }], propDecorators: { calculatorIds: [{
392
392
  type: Input
393
393
  }], dateFormat: [{
@@ -414,4 +414,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
414
414
  }], helpKey: [{
415
415
  type: Input
416
416
  }] } });
417
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lL3NyYy9saWIvbW9kdWxlcy9kYXRlLXJhbmdlLXBpY2tlci9kYXRlLXJhbmdlLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL2RhdGUtcmFuZ2UtcGlja2VyL2RhdGUtcmFuZ2UtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsV0FBVyxFQUNYLFFBQVEsRUFDUixLQUFLLEVBR0wsZ0JBQWdCLEVBQ2hCLFFBQVEsRUFDUixNQUFNLEVBQ04sTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRSxPQUFPLEVBR0wsV0FBVyxFQUNYLFdBQVcsRUFDWCxXQUFXLEVBQ1gsYUFBYSxFQUNiLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsbUJBQW1CLEVBQ25CLGlCQUFpQixFQUNqQixrQkFBa0IsR0FHbkIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsbUJBQW1CLEVBQ25CLGlCQUFpQixHQUNsQixNQUFNLGNBQWMsQ0FBQztBQUV0QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV6RCxPQUFPLEVBQUUsbUJB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RDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLDZCQUE2Qjs0QkFDeEMsS0FBSyxFQUFFLElBQUk7eUJBQ1o7d0JBQ0QsRUFBRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtxQkFDckQsWUFDUyx1QkFBdUIsY0FDckIsSUFBSTs4QkFrQkwsYUFBYTtzQkFEdkIsS0FBSztnQkE4QkMsVUFBVTtzQkFEaEIsS0FBSztnQkFXSyxRQUFRO3NCQURsQixLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQWUvQixrQkFBa0I7c0JBRHhCLEtBQUs7Z0JBUUMsZ0JBQWdCO3NCQUR0QixLQUFLO2dCQVFDLFFBQVE7c0JBRGQsS0FBSztnQkFRSyxLQUFLO3NCQURmLEtBQUs7Z0JBb0JDLFNBQVM7c0JBRGYsS0FBSztnQkFTQyxPQUFPO3NCQUZiLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7O3NCQUNyQyxXQUFXO3VCQUFDLDhCQUE4QjtnQkFTcEMsT0FBTztzQkFEYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIERlc3Ryb3lSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBJbmplY3RvcixcbiAgSW5wdXQsXG4gIFNpZ25hbCxcbiAgVGVtcGxhdGVSZWYsXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIGNvbXB1dGVkLFxuICBpbmplY3QsXG4gIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQsIHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgRm9ybUJ1aWxkZXIsXG4gIEZvcm1Db250cm9sLFxuICBGb3Jtc01vZHVsZSxcbiAgTkdfVkFMSURBVE9SUyxcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIE5nQ29udHJvbCxcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgU3RhdHVzQ2hhbmdlRXZlbnQsXG4gIFRvdWNoZWRDaGFuZ2VFdmVudCxcbiAgVmFsaWRhdGlvbkVycm9ycyxcbiAgVmFsaWRhdG9yLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTa3lMb2dTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2NvcmUnO1xuaW1wb3J0IHtcbiAgU0tZX0ZPUk1fRVJST1JTX0VOQUJMRUQsXG4gIFNreUZvcm1FcnJvcnNNb2R1bGUsXG4gIFNreUlucHV0Qm94TW9kdWxlLFxufSBmcm9tICdAc2t5dXgvZm9ybXMnO1xuXG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2t5RGF0ZXBpY2tlck1vZHVsZSB9IGZyb20gJy4uL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5tb2R1bGUnO1xuaW1wb3J0IHsgU2t5RGF0ZXRpbWVSZXNvdXJjZXNNb2R1bGUgfSBmcm9tICcuLi9zaGFyZWQvc2t5LWRhdGV0aW1lLXJlc291cmNlcy5tb2R1bGUnO1xuXG5pbXBvcnQgeyBTa3lEYXRlUmFuZ2VQaWNrZXJFbmREYXRlUmVzb3VyY2VLZXlQaXBlIH0gZnJvbSAnLi9kYXRlLXJhbmdlLXBpY2tlci1lbmQtZGF0ZS1yZXNvdXJjZS1rZXkucGlwZSc7XG5pbXBvcnQgeyBTa3lEYXRlUmFuZ2VQaWNrZXJTdGFydERhdGVSZXNvdXJjZUtleVBpcGUgfSBmcm9tICcuL2RhdGUtcmFuZ2UtcGlja2VyLXN0YXJ0LWRhdGUtcmVzb3VyY2Uta2V5LnBpcGUnO1xuaW1wb3J0IHsgU2t5RGF0ZVJhbmdlU2VydmljZSB9IGZyb20gJy4vZGF0ZS1yYW5nZS5zZXJ2aWNlJztcbmltcG9ydCB7IFNreURhdGVSYW5nZUNhbGN1bGF0aW9uIH0gZnJvbSAnLi90eXBlcy9kYXRlLXJhbmdlLWNhbGN1bGF0aW9uJztcbmltcG9ydCB7IFNreURhdGVSYW5nZUNhbGN1bGF0b3IgfSBmcm9tICcuL3R5cGVzL2RhdGUtcmFuZ2UtY2FsY3VsYXRvcic7XG5pbXBvcnQgeyBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9ySWQgfSBmcm9tICcuL3R5cGVzL2RhdGUtcmFuZ2UtY2FsY3VsYXRvci1pZCc7XG5pbXBvcnQgeyBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9yVHlwZSB9IGZyb20gJy4vdHlwZXMvZGF0ZS1yYW5nZS1jYWxjdWxhdG9yLXR5cGUnO1xuaW1wb3J0IHsgU0tZX0RFRkFVTFRfQ0FMQ1VMQVRPUl9JRFMgfSBmcm9tICcuL3R5cGVzL2RhdGUtcmFuZ2UtZGVmYXVsdC1jYWxjdWxhdG9yLWNvbmZpZ3MnO1xuXG50eXBlIERhdGVWYWx1ZSA9IERhdGUgfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuXG5mdW5jdGlvbiBhcmVEYXRlUmFuZ2VzRXF1YWwoXG4gIHJhbmdlQTogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRpb24gfCB1bmRlZmluZWQsXG4gIHJhbmdlQjogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRpb24gfCB1bmRlZmluZWQsXG4pOiBib29sZWFuIHtcbiAgcmV0dXJuIChcbiAgICAhIXJhbmdlQSAmJlxuICAgICEhcmFuZ2VCICYmXG4gICAgcmFuZ2VBLmNhbGN1bGF0b3JJZCA9PT0gcmFuZ2VCLmNhbGN1bGF0b3JJZCAmJlxuICAgIGFyZURhdGVzRXF1YWwocmFuZ2VBLnN0YXJ0RGF0ZSwgcmFuZ2VCLnN0YXJ0RGF0ZSkgJiZcbiAgICBhcmVEYXRlc0VxdWFsKHJhbmdlQS5lbmREYXRlLCByYW5nZUIuZW5kRGF0ZSlcbiAgKTtcbn1cblxuZnVuY3Rpb24gYXJlRGF0ZXNFcXVhbChhOiBEYXRlVmFsdWUsIGI6IERhdGVWYWx1ZSk6IGJvb2xlYW4ge1xuICBpZiAodHlwZW9mIGEgIT09IHR5cGVvZiBiKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCFhICYmICFiKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAodHlwZW9mIGEgPT09ICdzdHJpbmcnICYmIGEgPT09IGIpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBhIGluc3RhbmNlb2YgRGF0ZSAmJiBiIGluc3RhbmNlb2YgRGF0ZSAmJiBhLmdldFRpbWUoKSA9PT0gYi5nZXRUaW1lKCk7XG59XG5cbmZ1bmN0aW9uIGlzTnVsbE9yVW5kZWZpbmVkKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgdW5kZWZpbmVkIHwgbnVsbCB7XG4gIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsO1xufVxuXG5mdW5jdGlvbiBpc1BhcnRpYWxWYWx1ZShcbiAgdmFsdWU6IFBhcnRpYWw8U2t5RGF0ZVJhbmdlQ2FsY3VsYXRpb24+IHwgbnVsbCB8IHVuZGVmaW5lZCxcbik6IHZhbHVlIGlzIFBhcnRpYWw8U2t5RGF0ZVJhbmdlQ2FsY3VsYXRpb24+IHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiAoXG4gICAgaXNOdWxsT3JVbmRlZmluZWQodmFsdWUpIHx8XG4gICAgaXNOdWxsT3JVbmRlZmluZWQodmFsdWUuY2FsY3VsYXRvcklkKSB8fFxuICAgICEoJ2VuZERhdGUnIGluIHZhbHVlKSB8fFxuICAgICEoJ3N0YXJ0RGF0ZScgaW4gdmFsdWUpXG4gICk7XG59XG5cbkBDb21wb25lbnQoe1xuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIFNreURhdGVwaWNrZXJNb2R1bGUsXG4gICAgU2t5RGF0ZVJhbmdlUGlja2VyRW5kRGF0ZVJlc291cmNlS2V5UGlwZSxcbiAgICBTa3lEYXRlUmFuZ2VQaWNrZXJTdGFydERhdGVSZXNvdXJjZUtleVBpcGUsXG4gICAgU2t5RGF0ZXRpbWVSZXNvdXJjZXNNb2R1bGUsXG4gICAgU2t5SW5wdXRCb3hNb2R1bGUsXG4gICAgU2t5Rm9ybUVycm9yc01vZHVsZSxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgIHVzZUV4aXN0aW5nOiBTa3lEYXRlUmFuZ2VQaWNrZXJDb21wb25lbnQsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IFNreURhdGVSYW5nZVBpY2tlckNvbXBvbmVudCxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gICAgeyBwcm92aWRlOiBTS1lfRk9STV9FUlJPUlNfRU5BQkxFRCwgdXNlVmFsdWU6IHRydWUgfSxcbiAgXSxcbiAgc2VsZWN0b3I6ICdza3ktZGF0ZS1yYW5nZS1waWNrZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzdHlsZVVybDogJy4vZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50LnNjc3MnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lEYXRlUmFuZ2VQaWNrZXJDb21wb25lbnRcbiAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yXG57XG4gIHJlYWRvbmx5ICNkYXRlUmFuZ2VTdmMgPSBpbmplY3QoU2t5RGF0ZVJhbmdlU2VydmljZSk7XG4gIHJlYWRvbmx5ICNkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICByZWFkb25seSAjaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICByZWFkb25seSAjbG9nZ2VyID0gaW5qZWN0KFNreUxvZ1NlcnZpY2UpO1xuXG4gIC8qKlxuICAgKiBJRHMgZm9yIHRoZSBkYXRlIHJhbmdlIG9wdGlvbnMgdG8gaW5jbHVkZSBpbiB0aGUgcGlja2VyJ3MgZHJvcGRvd24uXG4gICAqIFRoZSBvcHRpb25zIHNwZWNpZnkgY2FsY3VsYXRvciBvYmplY3RzIHRoYXQgcmV0dXJuIHR3byBgRGF0ZWAgb2JqZWN0cyB0byByZXByZXNlbnQgZGF0ZSByYW5nZXMuXG4gICAqIEJ5IGRlZmF1bHQsIHRoaXMgcHJvcGVydHkgaW5jbHVkZXMgYWxsIGBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9ySWRgIHZhbHVlcy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgY2FsY3VsYXRvcklkcyhcbiAgICBjYWxjdWxhdG9ySWRzOiBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9ySWRbXSB8IHVuZGVmaW5lZCxcbiAgKSB7XG4gICAgY29uc3QgY3VycmVudENhbGN1bGF0b3JJZCA9IHRoaXMuI2dldFZhbHVlKCkuY2FsY3VsYXRvcklkO1xuXG4gICAgdGhpcy4jX2NhbGN1bGF0b3JJZHMgPSBjYWxjdWxhdG9ySWRzID8/IFNLWV9ERUZBVUxUX0NBTENVTEFUT1JfSURTO1xuICAgIHRoaXMuY2FsY3VsYXRvcnMgPSB0aGlzLiNkYXRlUmFuZ2VTdmMuZmlsdGVyQ2FsY3VsYXRvcnMoXG4gICAgICB0aGlzLiNfY2FsY3VsYXRvcklkcyxcbiAgICApO1xuXG4gICAgLy8gSWYgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBjYWxjdWxhdG9yIGlzbid0IGF2YWlsYWJsZSBhbnltb3JlLFxuICAgIC8vIHNlbGVjdCB0aGUgZmlyc3QgY2FsY3VsYXRvciBpbiB0aGUgbmV3IGFycmF5LlxuICAgIGlmICghdGhpcy4jX2NhbGN1bGF0b3JJZHMuaW5jbHVkZXMoY3VycmVudENhbGN1bGF0b3JJZCkpIHtcbiAgICAgIHRoaXMuI3NldFZhbHVlKHsgY2FsY3VsYXRvcklkOiB0aGlzLmNhbGN1bGF0b3JJZHNbMF0gfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBjYWxjdWxhdG9ySWRzKCk6IFNreURhdGVSYW5nZUNhbGN1bGF0b3JJZFtdIHtcbiAgICByZXR1cm4gdGhpcy4jX2NhbGN1bGF0b3JJZHM7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGRhdGUgZm9ybWF0IGZvclxuICAgKiBbdGhlIGBza3ktZGF0ZXBpY2tlcmAgY29tcG9uZW50c10oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL2RhdGVwaWNrZXIpXG4gICAqIHRoYXQgbWFrZSB1cCB0aGUgZGF0ZSByYW5nZSBwaWNrZXIuIFRoZSB0ZXh0IGlucHV0IGlzIGEgY29tcG9zaXRlIGNvbXBvbmVudCBvZlxuICAgKiB1cCB0byB0d28gYHNreS1kYXRlcGlja2VyYCBjb21wb25lbnRzLlxuICAgKiBAZGVmYXVsdCBcIk1NL0REL1lZWVlcIlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGRhdGVGb3JtYXQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV2hldGhlciB0byBkaXNhYmxlIHRoZSBkYXRlIHJhbmdlIHBpY2tlciBvbiB0ZW1wbGF0ZS1kcml2ZW4gZm9ybXMuIERvbid0IHVzZVxuICAgKiB0aGlzIGlucHV0IG9uIHJlYWN0aXZlIGZvcm1zIGJlY2F1c2UgdGhleSBtYXkgb3ZlcndyaXRlIHRoZSBpbnB1dCBvciBsZWF2ZVxuICAgKiB0aGUgY29udHJvbCBvdXQgb2Ygc3luYy4gVG8gc2V0IHRoZSBkaXNhYmxlZCBzdGF0ZSBvbiByZWFjdGl2ZSBmb3JtcyxcbiAgICogdXNlIHRoZSBgRm9ybUNvbnRyb2xgIGluc3RlYWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgcHVibGljIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5mb3JtR3JvdXAuZGlzYWJsZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZvcm1Hcm91cC5lbmFibGUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhlIGNvbnRlbnQgb2YgdGhlIGhlbHAgcG9wb3Zlci4gV2hlbiBzcGVjaWZpZWQgYWxvbmcgd2l0aCBgbGFiZWxUZXh0YCwgYSBbaGVscCBpbmxpbmVdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvY29tcG9uZW50cy9oZWxwLWlubGluZSlcbiAgICogYnV0dG9uIGlzIGFkZGVkIHRvIGRhdGUgcmFuZ2UgcGlja2VyLiBUaGUgaGVscCBpbmxpbmUgYnV0dG9uIGRpc3BsYXlzIGEgW3BvcG92ZXJdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvY29tcG9uZW50cy9wb3BvdmVyKVxuICAgKiB3aGVuIGNsaWNrZWQgdXNpbmcgdGhlIHNwZWNpZmllZCBjb250ZW50IGFuZCBvcHRpb25hbCB0aXRsZS4gVGhpcyBwcm9wZXJ0eSBvbmx5IGFwcGxpZXMgd2hlbiBgbGFiZWxUZXh0YCBpcyBhbHNvIHNwZWNpZmllZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoZWxwUG9wb3ZlckNvbnRlbnQ6IHN0cmluZyB8IFRlbXBsYXRlUmVmPHVua25vd24+IHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgdGl0bGUgb2YgdGhlIGhlbHAgcG9wb3Zlci4gVGhpcyBwcm9wZXJ0eSBvbmx5IGFwcGxpZXMgd2hlbiBgaGVscFBvcG92ZXJDb250ZW50YCBpc1xuICAgKiBhbHNvIHNwZWNpZmllZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoZWxwUG9wb3ZlclRpdGxlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFtQZXJzaXN0ZW50IGlubGluZSBoZWxwIHRleHRdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvZGVzaWduL2d1aWRlbGluZXMvdXNlci1hc3Npc3RhbmNlI2lubGluZS1oZWxwKSB0aGF0IHByb3ZpZGVzXG4gICAqIGFkZGl0aW9uYWwgY29udGV4dCB0byB0aGUgdXNlci5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoaW50VGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgbGFiZWwgZm9yIHRoZSBkYXRlIHJhbmdlIHBpY2tlci5cbiAgICogQGRlcHJlY2F0ZWQgVXNlIHRoZSBgbGFiZWxUZXh0YCBpbnB1dCBpbnN0ZWFkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBsYWJlbCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX2xhYmVsID0gdmFsdWU7XG5cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuI2xvZ2dlci5kZXByZWNhdGVkKCdTa3lEYXRlUmFuZ2VQaWNrZXJDb21wb25lbnQubGFiZWwnLCB7XG4gICAgICAgIGRlcHJlY2F0aW9uTWFqb3JWZXJzaW9uOiAxMCxcbiAgICAgICAgcmVwbGFjZW1lbnRSZWNvbW1lbmRhdGlvbjogJ1VzZSB0aGUgYGxhYmVsVGV4dGAgaW5wdXQgaW5zdGVhZC4nLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBsYWJlbCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfbGFiZWw7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHRleHQgdG8gZGlzcGxheSBhcyB0aGUgZGF0ZSByYW5nZSBwaWNrZXIncyBsYWJlbC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBsYWJlbFRleHQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgZGF0ZSByYW5nZSBwaWNrZXIgaXMgc3RhY2tlZCBvbiBhbm90aGVyIGZvcm0gY29tcG9uZW50LiBXaGVuIHNwZWNpZmllZCwgdGhlIGFwcHJvcHJpYXRlXG4gICAqIHZlcnRpY2FsIHNwYWNpbmcgaXMgYXV0b21hdGljYWxseSBhZGRlZCB0byB0aGUgZGF0ZSByYW5nZSBwaWNrZXIuXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5za3ktZm9ybS1maWVsZC1zdGFja2VkJylcbiAgcHVibGljIHN0YWNrZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogQSBoZWxwIGtleSB0aGF0IGlkZW50aWZpZXMgdGhlIGdsb2JhbCBoZWxwIGNvbnRlbnQgdG8gZGlzcGxheS4gV2hlbiBzcGVjaWZpZWQgYWxvbmcgd2l0aCBgbGFiZWxUZXh0YCwgYSBbaGVscCBpbmxpbmVdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvY29tcG9uZW50cy9oZWxwLWlubGluZSlcbiAgICogYnV0dG9uIGlzIHBsYWNlZCBiZXNpZGUgdGhlIGRhdGUgcmFuZ2UgcGlja2VyIGxhYmVsLiBDbGlja2luZyB0aGUgYnV0dG9uIGludm9rZXMgW2dsb2JhbCBoZWxwXShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2xlYXJuL2RldmVsb3AvZ2xvYmFsLWhlbHApXG4gICAqIGFzIGNvbmZpZ3VyZWQgYnkgdGhlIGFwcGxpY2F0aW9uLiBUaGlzIHByb3BlcnR5IG9ubHkgYXBwbGllcyB3aGVuIGBsYWJlbFRleHRgIGlzIGFsc28gc3BlY2lmaWVkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhlbHBLZXk6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBwcm90ZWN0ZWQgY2FsY3VsYXRvcnMgPSB0aGlzLiNkYXRlUmFuZ2VTdmMuY2FsY3VsYXRvcnM7XG4gIHByb3RlY3RlZCBob3N0Q29udHJvbDogQWJzdHJhY3RDb250cm9sIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgcHJvdGVjdGVkIHNlbGVjdGVkQ2FsY3VsYXRvciA9IHRoaXMuY2FsY3VsYXRvcnNbMF07XG4gIHByb3RlY3RlZCBzaG93RW5kRGF0ZVBpY2tlciA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHByb3RlY3RlZCBzaG93U3RhcnREYXRlUGlja2VyID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcblxuICAjbm90aWZ5Q2hhbmdlOiAoKF86IFNreURhdGVSYW5nZUNhbGN1bGF0aW9uKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcbiAgI25vdGlmeVRvdWNoZWQ6ICgoKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcblxuICAjY2FsY3VsYXRvcklkQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxudW1iZXI+KFxuICAgIHRoaXMuI2dldFZhbHVlKCkuY2FsY3VsYXRvcklkLFxuICAgIHsgbm9uTnVsbGFibGU6IHRydWUgfSxcbiAgKTtcbiAgI2NhbGN1bGF0b3JJZEludmFsaWQgPSB0aGlzLiNjcmVhdGVTdGF0dXNDaGFuZ2VTaWduYWwoXG4gICAgdGhpcy4jY2FsY3VsYXRvcklkQ29udHJvbCxcbiAgKTtcbiAgI2NhbGN1bGF0b3JJZFRvdWNoZWQgPSB0aGlzLiNjcmVhdGVUb3VjaGVkQ2hhbmdlU2lnbmFsKFxuICAgIHRoaXMuI2NhbGN1bGF0b3JJZENvbnRyb2wsXG4gICk7XG5cbiAgI2VuZERhdGVDb250cm9sID0gbmV3IEZvcm1Db250cm9sPERhdGVWYWx1ZT4odGhpcy4jZ2V0VmFsdWUoKS5lbmREYXRlKTtcbiAgI2VuZERhdGVJbnZhbGlkID0gdGhpcy4jY3JlYXRlU3RhdHVzQ2hhbmdlU2lnbmFsKHRoaXMuI2VuZERhdGVDb250cm9sKTtcbiAgI2VuZERhdGVUb3VjaGVkID0gdGhpcy4jY3JlYXRlVG91Y2hlZENoYW5nZVNpZ25hbCh0aGlzLiNlbmREYXRlQ29udHJvbCk7XG5cbiAgI3N0YXJ0RGF0ZUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2w8RGF0ZVZhbHVlPih0aGlzLiNnZXRWYWx1ZSgpLnN0YXJ0RGF0ZSk7XG4gICNzdGFydERhdGVJbnZhbGlkID0gdGhpcy4jY3JlYXRlU3RhdHVzQ2hhbmdlU2lnbmFsKHRoaXMuI3N0YXJ0RGF0ZUNvbnRyb2wpO1xuICAjc3RhcnREYXRlVG91Y2hlZCA9IHRoaXMuI2NyZWF0ZVRvdWNoZWRDaGFuZ2VTaWduYWwodGhpcy4jc3RhcnREYXRlQ29udHJvbCk7XG5cbiAgcHJvdGVjdGVkIGZvcm1Hcm91cCA9IGluamVjdChGb3JtQnVpbGRlcikuZ3JvdXAoe1xuICAgIGNhbGN1bGF0b3JJZDogdGhpcy4jY2FsY3VsYXRvcklkQ29udHJvbCxcbiAgICBzdGFydERhdGU6IHRoaXMuI3N0YXJ0RGF0ZUNvbnRyb2wsXG4gICAgZW5kRGF0ZTogdGhpcy4jZW5kRGF0ZUNvbnRyb2wsXG4gIH0pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBjYWxjdWxhdG9ySWRIYXNFcnJvcnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgdG91Y2hlZCA9IHRoaXMuI2NhbGN1bGF0b3JJZFRvdWNoZWQoKTtcbiAgICBjb25zdCBpbnZhbGlkID0gdGhpcy4jY2FsY3VsYXRvcklkSW52YWxpZCgpO1xuXG4gICAgcmV0dXJuIHRvdWNoZWQgJiYgaW52YWxpZDtcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGVuZERhdGVIYXNFcnJvcnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY2FsY3VsYXRvcklkSGFzRXJyb3JzID0gdGhpcy5jYWxjdWxhdG9ySWRIYXNFcnJvcnMoKTtcbiAgICBjb25zdCB0b3VjaGVkID0gdGhpcy4jZW5kRGF0ZVRvdWNoZWQoKTtcbiAgICBjb25zdCBpbnZhbGlkID0gdGhpcy4jZW5kRGF0ZUludmFsaWQoKTtcblxuICAgIHJldHVybiBjYWxjdWxhdG9ySWRIYXNFcnJvcnMgfHwgKHRvdWNoZWQgJiYgaW52YWxpZCk7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBzdGFydERhdGVIYXNFcnJvcnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY2FsY3VsYXRvcklkSGFzRXJyb3JzID0gdGhpcy5jYWxjdWxhdG9ySWRIYXNFcnJvcnMoKTtcbiAgICBjb25zdCB0b3VjaGVkID0gdGhpcy4jc3RhcnREYXRlVG91Y2hlZCgpO1xuICAgIGNvbnN0IGludmFsaWQgPSB0aGlzLiNzdGFydERhdGVJbnZhbGlkKCk7XG5cbiAgICByZXR1cm4gY2FsY3VsYXRvcklkSGFzRXJyb3JzIHx8ICh0b3VjaGVkICYmIGludmFsaWQpO1xuICB9KTtcblxuICAjX2NhbGN1bGF0b3JJZHMgPSBTS1lfREVGQVVMVF9DQUxDVUxBVE9SX0lEUztcbiAgI19sYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAjX3ZhbHVlID0gdGhpcy5zZWxlY3RlZENhbGN1bGF0b3IuZ2V0VmFsdWUoKTtcblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaG9zdENvbnRyb2wgPSB0aGlzLiNpbmplY3Rvci5nZXQoTmdDb250cm9sLCBudWxsLCB7XG4gICAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICAgIHNlbGY6IHRydWUsXG4gICAgfSk/LmNvbnRyb2w7XG5cbiAgICAvLyBTZXQgYSBkZWZhdWx0IHZhbHVlIG9uIHRoZSBjb250cm9sIGlmIGl0J3MgdW5kZWZpbmVkIG9uIGluaXQuXG4gICAgLy8gV2UgbmVlZCB0byB1c2Ugc2V0VGltZW91dCB0byBhdm9pZCBpbnRlcmZlcmluZyB3aXRoIHRoZSBmaXJzdFxuICAgIC8vIHZhbGlkYXRpb24gY3ljbGUuXG4gICAgaWYgKGlzUGFydGlhbFZhbHVlKHRoaXMuaG9zdENvbnRyb2w/LnZhbHVlKSkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuaG9zdENvbnRyb2w/LnNldFZhbHVlKHRoaXMuI2dldFZhbHVlKCksIHtcbiAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIElmIHRoZSBkYXRlcGlja2Vycycgc3RhdHVzZXMgY2hhbmdlLCB3ZSB3YW50IHRvIHJldHJpZ2dlciB0aGUgaG9zdFxuICAgIC8vIGNvbnRyb2wncyB2YWxpZGF0aW9uIHNvIHRoYXQgdGhlaXIgZXJyb3JzIGFyZSByZWZsZWN0ZWQgYmFjayB0byB0aGUgaG9zdC5cbiAgICB0aGlzLmZvcm1Hcm91cC5ldmVudHNcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKGV2dCkgPT4gZXZ0IGluc3RhbmNlb2YgU3RhdHVzQ2hhbmdlRXZlbnQpLFxuICAgICAgICBtYXAoKGV2dDogU3RhdHVzQ2hhbmdlRXZlbnQpID0+IGV2dC5zdGF0dXMpLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy4jZGVzdHJveVJlZiksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5ob3N0Q29udHJvbD8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7XG4gICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZSxcbiAgICAgICAgICBvbmx5U2VsZjogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgIC8vIE1hcmsgYWxsIGZpZWxkcyBhcyB0b3VjaGVkIGlmIHRoZSBob3N0IGNvbnRyb2wgaXMgdG91Y2hlZC5cbiAgICB0aGlzLmhvc3RDb250cm9sPy5ldmVudHNcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKGV2dCkgPT4gZXZ0IGluc3RhbmNlb2YgVG91Y2hlZENoYW5nZUV2ZW50KSxcbiAgICAgICAgbWFwKChldnQ6IFRvdWNoZWRDaGFuZ2VFdmVudCkgPT4gZXZ0LnRvdWNoZWQpLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy4jZGVzdHJveVJlZiksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5mb3JtR3JvdXAubWFya0FsbEFzVG91Y2hlZCgpO1xuICAgICAgfSk7XG4gIH1cblxuICAvLyBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogKF86IHVua25vd24pID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLiNub3RpZnlDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIC8vIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuI25vdGlmeVRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIC8vIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIC8vIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgVmFsaWRhdG9yLlxuICBwdWJsaWMgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGxldCBlcnJvcnM6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0gbnVsbDtcblxuICAgIGNvbnN0IGNhbGN1bGF0b3JFcnJvcnMgPSB0aGlzLnNlbGVjdGVkQ2FsY3VsYXRvci52YWxpZGF0ZShjb250cm9sLnZhbHVlKTtcbiAgICBjb25zdCBzdGFydERhdGVFcnJvcnMgPSB0aGlzLiNzdGFydERhdGVDb250cm9sLmVycm9ycztcbiAgICBjb25zdCBlbmREYXRlRXJyb3JzID0gdGhpcy4jZW5kRGF0ZUNvbnRyb2wuZXJyb3JzO1xuXG4gICAgaWYgKGNhbGN1bGF0b3JFcnJvcnMpIHtcbiAgICAgIGVycm9ycyA9IHtcbiAgICAgICAgc2t5RGF0ZVJhbmdlOiB7XG4gICAgICAgICAgY2FsY3VsYXRvcklkOiB0aGlzLiNnZXRWYWx1ZSgpLmNhbGN1bGF0b3JJZCxcbiAgICAgICAgICBlcnJvcnM6IGNhbGN1bGF0b3JFcnJvcnMsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIFNldCBjYWxjdWxhdG9yIGVycm9ycyBvbiB0aGUgc2VsZWN0IHNvIHRoYXQgdGhleSBhcHBlYXIgYmVuZWF0aCBpdC5cbiAgICB0aGlzLiNjYWxjdWxhdG9ySWRDb250cm9sLnNldEVycm9ycyhlcnJvcnMpO1xuXG4gICAgaWYgKHRoaXMuc2hvd1N0YXJ0RGF0ZVBpY2tlcigpICYmIHN0YXJ0RGF0ZUVycm9ycykge1xuICAgICAgZXJyb3JzIHx8PSB7fTtcbiAgICAgIGVycm9ycyA9IHsgLi4uZXJyb3JzLCAuLi5zdGFydERhdGVFcnJvcnMgfTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zaG93RW5kRGF0ZVBpY2tlcigpICYmIGVuZERhdGVFcnJvcnMpIHtcbiAgICAgIGVycm9ycyB8fD0ge307XG4gICAgICBlcnJvcnMgPSB7IC4uLmVycm9ycywgLi4uZW5kRGF0ZUVycm9ycyB9O1xuICAgIH1cblxuICAgIHJldHVybiBlcnJvcnM7XG4gIH1cblxuICAvLyBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAvLyBUaGUgZGF0ZSByYW5nZSBwaWNrZXIgYWx3YXlzIGhhcyBhIHZhbHVlLCBzbyBpZiB0aGUgY29uc3VtZXIgcGFzc2VzIGluIGFcbiAgLy8gcGFydGlhbCB2YWx1ZSAodmlhIGBwYXRjaFZhbHVlYCkgb3IgbnVsbCwgd2UgbmVlZCB0byB1cGRhdGUgdGhlIGhvc3QgY29udHJvbCdzXG4gIC8vIHZhbHVlIHdpdGggdGhlIGNvbXBsZXRlIHZhbHVlIGFmdGVyIGl0J3MgYmVlbiBtb2RpZmllZC5cbiAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IFBhcnRpYWw8U2t5RGF0ZVJhbmdlQ2FsY3VsYXRpb24+IHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgdGhpcy4jcGF0Y2hWYWx1ZSh2YWx1ZSk7XG5cbiAgICAvLyBVcGRhdGUgdGhlIGhvc3QgY29udHJvbCBpZiBpdCBpcyBzZXQgdG8gYSBwYXJ0aWFsIG9yIG51bGwgdmFsdWUuXG4gICAgaWYgKGlzUGFydGlhbFZhbHVlKHZhbHVlKSkge1xuICAgICAgdGhpcy5ob3N0Q29udHJvbD8uc2V0VmFsdWUodGhpcy4jZ2V0VmFsdWUoKSwge1xuICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlLFxuICAgICAgICBvbmx5U2VsZjogdHJ1ZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvbkJsdXIoKTogdm9pZCB7XG4gICAgdGhpcy4jbm90aWZ5VG91Y2hlZD8uKCk7XG4gIH1cblxuICAvKipcbiAgICogRmlyZXMgd2hlbiBhIHVzZXIgY2hhbmdlcyB0aGUgc2VsZWN0ZWQgY2FsY3VsYXRvciBJRC5cbiAgICovXG4gIHByb3RlY3RlZCBvbkNhbGN1bGF0b3JJZENoYW5nZSgpOiB2b2lkIHtcbiAgICAvLyBSZXNldCB0aGUgdmFsdWUgd2hlbiB0aGUgY2FsY3VsYXRvciBJRCBjaGFuZ2VzLlxuICAgIHRoaXMuI3NldFZhbHVlKHsgY2FsY3VsYXRvcklkOiArdGhpcy4jY2FsY3VsYXRvcklkQ29udHJvbC52YWx1ZSB9KTtcbiAgICB0aGlzLm9uRGF0ZUNoYW5nZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gYSB1c2VyIGludGVyYWN0cyB3aXRoIGEgZGF0ZSByYW5nZSBwaWNrZXIuXG4gICAqL1xuICBwcm90ZWN0ZWQgb25EYXRlQ2hhbmdlKCk6IHZvaWQge1xuICAgIC8vIFdhaXQgdW50aWwgdGhlIGZvcm0gY29udHJvbCBpcyB1cGRhdGVkIGJlZm9yZSByZXRyaWV2aW5nIGl0cyB2YWx1ZS5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuI25vdGlmeUNoYW5nZT8uKFxuICAgICAgICB0aGlzLmZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpIGFzIFNreURhdGVSYW5nZUNhbGN1bGF0aW9uLFxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gICNnZXRDYWxjdWxhdG9yKGNhbGN1bGF0b3JJZDogbnVtYmVyKTogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvciB7XG4gICAgY29uc3QgZm91bmQgPSB0aGlzLmNhbGN1bGF0b3JzLmZpbmQoKGMpID0+IGMuY2FsY3VsYXRvcklkID09PSBjYWxjdWxhdG9ySWQpO1xuXG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgaWY6IHNhZmV0eSBjaGVjayovXG4gICAgaWYgKCFmb3VuZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgQSBkYXRlIHJhbmdlIGNhbGN1bGF0b3Igd2l0aCBJRCAoJHtjYWxjdWxhdG9ySWR9KSBjb3VsZCBub3QgYmUgZm91bmQuYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvdW5kO1xuICB9XG5cbiAgI2dldFZhbHVlKCk6IFNreURhdGVSYW5nZUNhbGN1bGF0aW9uIHtcbiAgICAvLyBJbXBvcnRhbnQhIFJldHVybiBhIGNsb25lIHRvIGF2b2lkIGNoYW5naW5nIHRoZSBwcm9wZXJ0aWVzIGJ5IHJlZmVyZW5jZS5cbiAgICByZXR1cm4geyAuLi50aGlzLiNfdmFsdWUgfTtcbiAgfVxuXG4gICNwYXRjaFZhbHVlKFxuICAgIHBhcnRpYWxWYWx1ZTogUGFydGlhbDxTa3lEYXRlUmFuZ2VDYWxjdWxhdGlvbj4gfCBudWxsIHwgdW5kZWZpbmVkLFxuICApOiB2b2lkIHtcbiAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQocGFydGlhbFZhbHVlKSkge1xuICAgICAgdGhpcy4jc2V0VmFsdWUobnVsbCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgb2xkVmFsdWUgPSB0aGlzLiNnZXRWYWx1ZSgpO1xuXG4gICAgLy8gSWYgdGhlIG5ldyBJRCBpcyBkaXN0aW5jdCwgZXJhc2UgdGhlIG9sZCBzdGFydCBhbmQgZW5kIGRhdGVzIGJlY2F1c2VcbiAgICAvLyB0aGV5J3JlIG5vIGxvbmdlciBhcHBsaWNhYmxlLlxuICAgIGlmIChcbiAgICAgICFpc051bGxPclVuZGVmaW5lZChwYXJ0aWFsVmFsdWUuY2FsY3VsYXRvcklkKSAmJlxuICAgICAgb2xkVmFsdWUuY2FsY3VsYXRvcklkICE9PSBwYXJ0aWFsVmFsdWUuY2FsY3VsYXRvcklkXG4gICAgKSB7XG4gICAgICBkZWxldGUgb2xkVmFsdWUuZW5kRGF0ZTtcbiAgICAgIGRlbGV0ZSBvbGRWYWx1ZS5zdGFydERhdGU7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWUgPSB7XG4gICAgICAuLi5vbGRWYWx1ZSxcbiAgICAgIC4uLnBhcnRpYWxWYWx1ZSxcbiAgICB9O1xuXG4gICAgdGhpcy4jc2V0VmFsdWUodmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHZhbHVlIHRvIGJlIHVzZWQgYnkgdGhlIGRhdGUgcmFuZ2UgcGlja2VyIGZvcm0gY29udHJvbC5cbiAgICovXG4gICNzZXRWYWx1ZSh2YWx1ZTogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRpb24gfCBudWxsIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgY29uc3Qgb2xkVmFsdWUgPSB0aGlzLiNnZXRWYWx1ZSgpO1xuXG4gICAgY29uc3QgaXNWYWx1ZUVtcHR5ID0gIXZhbHVlIHx8IGlzTnVsbE9yVW5kZWZpbmVkKHZhbHVlLmNhbGN1bGF0b3JJZCk7XG4gICAgY29uc3QgdmFsdWVPckRlZmF1bHQgPSBpc1ZhbHVlRW1wdHlcbiAgICAgID8gdGhpcy5jYWxjdWxhdG9yc1swXS5nZXRWYWx1ZSgpXG4gICAgICA6IHtcbiAgICAgICAgICAuLi50aGlzLiNnZXRDYWxjdWxhdG9yKHZhbHVlLmNhbGN1bGF0b3JJZCkuZ2V0VmFsdWUoKSxcbiAgICAgICAgICAuLi52YWx1ZSxcbiAgICAgICAgfTtcblxuICAgIC8vIEVuc3VyZSBmYWxzeSB2YWx1ZXMgYXJlIHNldCB0byBudWxsLlxuICAgIHZhbHVlT3JEZWZhdWx0LmVuZERhdGUgPSB2YWx1ZU9yRGVmYXVsdC5lbmREYXRlIHx8IG51bGw7XG4gICAgdmFsdWVPckRlZmF1bHQuc3RhcnREYXRlID0gdmFsdWVPckRlZmF1bHQuc3RhcnREYXRlIHx8IG51bGw7XG5cbiAgICBpZiAoIWFyZURhdGVSYW5nZXNFcXVhbChvbGRWYWx1ZSwgdmFsdWVPckRlZmF1bHQpKSB7XG4gICAgICB0aGlzLiNfdmFsdWUgPSB2YWx1ZU9yRGVmYXVsdDtcblxuICAgICAgaWYgKG9sZFZhbHVlLmNhbGN1bGF0b3JJZCAhPT0gdmFsdWVPckRlZmF1bHQuY2FsY3VsYXRvcklkKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDYWxjdWxhdG9yID0gdGhpcy4jZ2V0Q2FsY3VsYXRvcihcbiAgICAgICAgICB2YWx1ZU9yRGVmYXVsdC5jYWxjdWxhdG9ySWQsXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy4jdXBkYXRlUGlja2VyVmlzaWJpbGl0eSh0aGlzLnNlbGVjdGVkQ2FsY3VsYXRvcik7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZm9ybUdyb3VwLnBhdGNoVmFsdWUodmFsdWVPckRlZmF1bHQpO1xuICAgIH1cbiAgfVxuXG4gICN1cGRhdGVQaWNrZXJWaXNpYmlsaXR5KGNhbGN1bGF0b3I6IFNreURhdGVSYW5nZUNhbGN1bGF0b3IpOiB2b2lkIHtcbiAgICBsZXQgc2hvd0VuZERhdGVQaWNrZXIgPSBmYWxzZTtcbiAgICBsZXQgc2hvd1N0YXJ0RGF0ZVBpY2tlciA9IGZhbHNlO1xuXG4gICAgc3dpdGNoIChjYWxjdWxhdG9yLnR5cGUpIHtcbiAgICAgIGNhc2UgU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvclR5cGUuQmVmb3JlOlxuICAgICAgICBzaG93RW5kRGF0ZVBpY2tlciA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFNreURhdGVSYW5nZUNhbGN1bGF0b3JUeXBlLkFmdGVyOlxuICAgICAgICBzaG93U3RhcnREYXRlUGlja2VyID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvclR5cGUuUmFuZ2U6XG4gICAgICAgIHNob3dFbmREYXRlUGlja2VyID0gdHJ1ZTtcbiAgICAgICAgc2hvd1N0YXJ0RGF0ZVBpY2tlciA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICB0aGlzLnNob3dFbmREYXRlUGlja2VyLnNldChzaG93RW5kRGF0ZVBpY2tlcik7XG4gICAgdGhpcy5zaG93U3RhcnREYXRlUGlja2VyLnNldChzaG93U3RhcnREYXRlUGlja2VyKTtcbiAgfVxuXG4gICNjcmVhdGVTdGF0dXNDaGFuZ2VTaWduYWwoY29udHJvbDogRm9ybUNvbnRyb2wpOiBTaWduYWw8Ym9vbGVhbiB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiB0b1NpZ25hbChcbiAgICAgIGNvbnRyb2wuZXZlbnRzLnBpcGUoXG4gICAgICAgIGZpbHRlcigoZXZ0KSA9PiBldnQgaW5zdGFuY2VvZiBTdGF0dXNDaGFuZ2VFdmVudCksXG4gICAgICAgIG1hcCgoZXZ0OiBTdGF0dXNDaGFuZ2VFdmVudCkgPT4gZXZ0LnN0YXR1cyA9PT0gJ0lOVkFMSUQnKSxcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuI2Rlc3Ryb3lSZWYpLFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgI2NyZWF0ZVRvdWNoZWRDaGFuZ2VTaWduYWwoXG4gICAgY29udHJvbDogRm9ybUNvbnRyb2wsXG4gICk6IFNpZ25hbDxib29sZWFuIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRvU2lnbmFsKFxuICAgICAgY29udHJvbC5ldmVudHMucGlwZShcbiAgICAgICAgZmlsdGVyKChldnQpID0+IGV2dCBpbnN0YW5jZW9mIFRvdWNoZWRDaGFuZ2VFdmVudCksXG4gICAgICAgIG1hcCgoZXZ0OiBUb3VjaGVkQ2hhbmdlRXZlbnQpID0+IGV2dC50b3VjaGVkKSxcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuI2Rlc3Ryb3lSZWYpLFxuICAgICAgKSxcbiAgICApO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwic2t5LWRhdGUtcmFuZ2UtcGlja2VyXCIgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIj5cbiAgPGRpdlxuICAgIGNsYXNzPVwic2t5LWRhdGUtcmFuZ2UtcGlja2VyLWZvcm0tZ3JvdXBcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICdza3ktZGF0ZS1yYW5nZS1waWNrZXItbGFzdC1pbnB1dCc6XG4gICAgICAgICFzaG93U3RhcnREYXRlUGlja2VyKCkgJiYgIXNob3dFbmREYXRlUGlja2VyKClcbiAgICB9XCJcbiAgPlxuICAgIDxza3ktaW5wdXQtYm94XG4gICAgICBbaGFzRXJyb3JzXT1cImNhbGN1bGF0b3JJZEhhc0Vycm9ycygpXCJcbiAgICAgIFtoZWxwS2V5XT1cImhlbHBLZXlcIlxuICAgICAgW2hlbHBQb3BvdmVyQ29udGVudF09XCJoZWxwUG9wb3ZlckNvbnRlbnRcIlxuICAgICAgW2hlbHBQb3BvdmVyVGl0bGVdPVwiaGVscFBvcG92ZXJUaXRsZVwiXG4gICAgICBbaGludFRleHRdPVwiaGludFRleHRcIlxuICAgICAgW2xhYmVsVGV4dF09XCJcbiAgICAgICAgbGFiZWxUZXh0IHx8XG4gICAgICAgIGxhYmVsIHx8XG4gICAgICAgICgnc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZGVmYXVsdF9sYWJlbCcgfCBza3lMaWJSZXNvdXJjZXMpXG4gICAgICBcIlxuICAgID5cbiAgICAgIDxzZWxlY3RcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiY2FsY3VsYXRvcklkXCJcbiAgICAgICAgKGJsdXIpPVwib25CbHVyKClcIlxuICAgICAgICAoY2hhbmdlKT1cIm9uQ2FsY3VsYXRvcklkQ2hhbmdlKClcIlxuICAgICAgPlxuICAgICAgICBAZm9yIChjYWxjdWxhdG9yIG9mIGNhbGN1bGF0b3JzOyB0cmFjayBjYWxjdWxhdG9yLmNhbGN1bGF0b3JJZCkge1xuICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cImNhbGN1bGF0b3IuY2FsY3VsYXRvcklkXCI+XG4gICAgICAgICAgICB7e1xuICAgICAgICAgICAgICBjYWxjdWxhdG9yLl9zaG9ydERlc2NyaXB0aW9uUmVzb3VyY2VLZXlcbiAgICAgICAgICAgICAgICA/IChjYWxjdWxhdG9yLl9zaG9ydERlc2NyaXB0aW9uUmVzb3VyY2VLZXkgfCBza3lMaWJSZXNvdXJjZXMpXG4gICAgICAgICAgICAgICAgOiBjYWxjdWxhdG9yLnNob3J0RGVzY3JpcHRpb25cbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgIH1cbiAgICAgIDwvc2VsZWN0PlxuICAgICAgQGlmIChcbiAgICAgICAgaG9zdENvbnRyb2w/LmVycm9ycz8uWydza3lEYXRlUmFuZ2UnXT8uZXJyb3JzPy5bXG4gICAgICAgICAgJ2VuZERhdGVCZWZvcmVTdGFydERhdGUnXG4gICAgICAgIF0gJiYgbGFiZWxUZXh0XG4gICAgICApIHtcbiAgICAgICAgPHNreS1mb3JtLWVycm9yXG4gICAgICAgICAgW2Vycm9yTmFtZV09XCInZW5kRGF0ZUJlZm9yZVN0YXJ0RGF0ZSdcIlxuICAgICAgICAgIFtlcnJvclRleHRdPVwiXG4gICAgICAgICAgICAnc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZW5kX2RhdGVfYmVmb3JlX3N0YXJ0X2RhdGVfZXJyb3JfbGFiZWxfdGV4dCdcbiAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgICAgICBcIlxuICAgICAgICAvPlxuICAgICAgfVxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwic2t5LWZvcm0tZXJyb3JcIiAvPlxuICAgIDwvc2t5LWlucHV0LWJveD5cbiAgPC9kaXY+XG4gIDxkaXZcbiAgICBjbGFzcz1cInNreS1kYXRlLXJhbmdlLXBpY2tlci1mb3JtLWdyb3VwIHNreS1kYXRlLXJhbmdlLWRhdGVwaWNrZXItd3JhcHBlclwiXG4gICAgW2hpZGRlbl09XCIhc2hvd1N0YXJ0RGF0ZVBpY2tlcigpXCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAnc2t5LWRhdGUtcmFuZ2UtcGlja2VyLWxhc3QtaW5wdXQnOlxuICAgICAgICBzaG93U3RhcnREYXRlUGlja2VyKCkgJiYgIXNob3dFbmREYXRlUGlja2VyKClcbiAgICB9XCJcbiAgPlxuICAgIDxza3ktaW5wdXQtYm94XG4gICAgICBbaGFzRXJyb3JzXT1cInN0YXJ0RGF0ZUhhc0Vycm9ycygpXCJcbiAgICAgIFtsYWJlbFRleHRdPVwiXG4gICAgICAgIHNlbGVjdGVkQ2FsY3VsYXRvci50eXBlXG4gICAgICAgICAgfCBza3lEYXRlUmFuZ2VQaWNrZXJTdGFydERhdGVSZXNvdXJjZUtleVxuICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICBcIlxuICAgID5cbiAgICAgIDxza3ktZGF0ZXBpY2tlciAoY2FsZW5kYXJEYXRlQ2hhbmdlKT1cIm9uRGF0ZUNoYW5nZSgpXCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInN0YXJ0RGF0ZVwiXG4gICAgICAgICAgbmFtZT1cInN0YXJ0RGF0ZVwiXG4gICAgICAgICAgc2t5RGF0ZXBpY2tlcklucHV0XG4gICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICBsYWJlbFRleHQgfHwgbGFiZWxcbiAgICAgICAgICAgICAgPyAoJ3NreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2RlZmF1bHRfYXJpYV9sYWJlbCdcbiAgICAgICAgICAgICAgICB8IHNreUxpYlJlc291cmNlc1xuICAgICAgICAgICAgICAgICAgOiAoc2VsZWN0ZWRDYWxjdWxhdG9yLnR5cGVcbiAgICAgICAgICAgICAgICAgICAgICB8IHNreURhdGVSYW5nZVBpY2tlclN0YXJ0RGF0ZVJlc291cmNlS2V5XG4gICAgICAgICAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXMpXG4gICAgICAgICAgICAgICAgICA6IChsYWJlbFRleHQgPyBsYWJlbFRleHQgOiBsYWJlbCkpXG4gICAgICAgICAgICAgIDogKHNlbGVjdGVkQ2FsY3VsYXRvci50eXBlXG4gICAgICAgICAgICAgICAgfCBza3lEYXRlUmFuZ2VQaWNrZXJTdGFydERhdGVSZXNvdXJjZUtleVxuICAgICAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzKVxuICAgICAgICAgIFwiXG4gICAgICAgICAgW2RhdGVGb3JtYXRdPVwiZGF0ZUZvcm1hdFwiXG4gICAgICAgICAgW3JlcXVpcmVkXT1cInNob3dTdGFydERhdGVQaWNrZXIoKVwiXG4gICAgICAgICAgKGNoYW5nZSk9XCJvbkRhdGVDaGFuZ2UoKVwiXG4gICAgICAgIC8+XG4gICAgICA8L3NreS1kYXRlcGlja2VyPlxuICAgIDwvc2t5LWlucHV0LWJveD5cbiAgPC9kaXY+XG4gIDxkaXZcbiAgICBjbGFzcz1cInNreS1kYXRlLXJhbmdlLXBpY2tlci1mb3JtLWdyb3VwIHNreS1kYXRlLXJhbmdlLWRhdGVwaWNrZXItd3JhcHBlclwiXG4gICAgW2hpZGRlbl09XCIhc2hvd0VuZERhdGVQaWNrZXIoKVwiXG4gICAgW25nQ2xhc3NdPVwieyAnc2t5LWRhdGUtcmFuZ2UtcGlja2VyLWxhc3QtaW5wdXQnOiBzaG93RW5kRGF0ZVBpY2tlcigpIH1cIlxuICA+XG4gICAgPHNreS1pbnB1dC1ib3hcbiAgICAgIFtoYXNFcnJvcnNdPVwiZW5kRGF0ZUhhc0Vycm9ycygpXCJcbiAgICAgIFtsYWJlbFRleHRdPVwiXG4gICAgICAgIHNlbGVjdGVkQ2FsY3VsYXRvci50eXBlXG4gICAgICAgICAgfCBza3lEYXRlUmFuZ2VQaWNrZXJFbmREYXRlUmVzb3VyY2VLZXlcbiAgICAgICAgICB8IHNreUxpYlJlc291cmNlc1xuICAgICAgXCJcbiAgICA+XG4gICAgICA8c2t5LWRhdGVwaWNrZXIgKGNhbGVuZGFyRGF0ZUNoYW5nZSk9XCJvbkRhdGVDaGFuZ2UoKVwiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJlbmREYXRlXCJcbiAgICAgICAgICBuYW1lPVwiZW5kRGF0ZVwiXG4gICAgICAgICAgc2t5RGF0ZXBpY2tlcklucHV0XG4gICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICBsYWJlbFRleHQgfHwgbGFiZWxcbiAgICAgICAgICAgICAgPyAoJ3NreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2RlZmF1bHRfYXJpYV9sYWJlbCdcbiAgICAgICAgICAgICAgICB8IHNreUxpYlJlc291cmNlc1xuICAgICAgICAgICAgICAgICAgOiAoc2VsZWN0ZWRDYWxjdWxhdG9yLnR5cGVcbiAgICAgICAgICAgICAgICAgICAgICB8IHNreURhdGVSYW5nZVBpY2tlckVuZERhdGVSZXNvdXJjZUtleVxuICAgICAgICAgICAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzKVxuICAgICAgICAgICAgICAgICAgOiAobGFiZWxUZXh0ID8gbGFiZWxUZXh0IDogbGFiZWwpKVxuICAgICAgICAgICAgICA6IChzZWxlY3RlZENhbGN1bGF0b3IudHlwZVxuICAgICAgICAgICAgICAgIHwgc2t5RGF0ZVJhbmdlUGlja2VyRW5kRGF0ZVJlc291cmNlS2V5XG4gICAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXMpXG4gICAgICAgICAgXCJcbiAgICAgICAgICBbZGF0ZUZvcm1hdF09XCJkYXRlRm9ybWF0XCJcbiAgICAgICAgICBbcmVxdWlyZWRdPVwic2hvd0VuZERhdGVQaWNrZXIoKVwiXG4gICAgICAgICAgKGNoYW5nZSk9XCJvbkRhdGVDaGFuZ2UoKVwiXG4gICAgICAgIC8+XG4gICAgICA8L3NreS1kYXRlcGlja2VyPlxuICAgIDwvc2t5LWlucHV0LWJveD5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
417
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lL3NyYy9saWIvbW9kdWxlcy9kYXRlLXJhbmdlLXBpY2tlci9kYXRlLXJhbmdlLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL2RhdGUtcmFuZ2UtcGlja2VyL2RhdGUtcmFuZ2UtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsV0FBVyxFQUNYLFFBQVEsRUFDUixLQUFLLEVBR0wsZ0JBQWdCLEVBQ2hCLFFBQVEsRUFDUixNQUFNLEVBQ04sTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRSxPQUFPLEVBR0wsV0FBVyxFQUNYLFdBQVcsRUFDWCxXQUFXLEVBQ1gsYUFBYSxFQUNiLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsbUJBQW1CLEVBQ25CLGlCQUFpQixFQUNqQixrQkFBa0IsR0FHbkIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsbUJBQW1CLEVBQ25CLGlCQUFpQixHQUNsQixNQUFNLGNBQWMsQ0FBQztBQUV0QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV6RCxPQUFPLEVBQUUsbUJB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RDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLDZCQUE2Qjs0QkFDeEMsS0FBSyxFQUFFLElBQUk7eUJBQ1o7d0JBQ0QsRUFBRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtxQkFDckQsWUFDUyx1QkFBdUIsY0FDckIsSUFBSTs4QkFrQkwsYUFBYTtzQkFEdkIsS0FBSztnQkE4QkMsVUFBVTtzQkFEaEIsS0FBSztnQkFXSyxRQUFRO3NCQURsQixLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQWUvQixrQkFBa0I7c0JBRHhCLEtBQUs7Z0JBUUMsZ0JBQWdCO3NCQUR0QixLQUFLO2dCQVFDLFFBQVE7c0JBRGQsS0FBSztnQkFRSyxLQUFLO3NCQURmLEtBQUs7Z0JBb0JDLFNBQVM7c0JBRGYsS0FBSztnQkFTQyxPQUFPO3NCQUZiLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7O3NCQUNyQyxXQUFXO3VCQUFDLDhCQUE4QjtnQkFTcEMsT0FBTztzQkFEYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIERlc3Ryb3lSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBJbmplY3RvcixcbiAgSW5wdXQsXG4gIFNpZ25hbCxcbiAgVGVtcGxhdGVSZWYsXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIGNvbXB1dGVkLFxuICBpbmplY3QsXG4gIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQsIHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgRm9ybUJ1aWxkZXIsXG4gIEZvcm1Db250cm9sLFxuICBGb3Jtc01vZHVsZSxcbiAgTkdfVkFMSURBVE9SUyxcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIE5nQ29udHJvbCxcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgU3RhdHVzQ2hhbmdlRXZlbnQsXG4gIFRvdWNoZWRDaGFuZ2VFdmVudCxcbiAgVmFsaWRhdGlvbkVycm9ycyxcbiAgVmFsaWRhdG9yLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTa3lMb2dTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2NvcmUnO1xuaW1wb3J0IHtcbiAgU0tZX0ZPUk1fRVJST1JTX0VOQUJMRUQsXG4gIFNreUZvcm1FcnJvcnNNb2R1bGUsXG4gIFNreUlucHV0Qm94TW9kdWxlLFxufSBmcm9tICdAc2t5dXgvZm9ybXMnO1xuXG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2t5RGF0ZXBpY2tlck1vZHVsZSB9IGZyb20gJy4uL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5tb2R1bGUnO1xuaW1wb3J0IHsgU2t5RGF0ZXRpbWVSZXNvdXJjZXNNb2R1bGUgfSBmcm9tICcuLi9zaGFyZWQvc2t5LWRhdGV0aW1lLXJlc291cmNlcy5tb2R1bGUnO1xuXG5pbXBvcnQgeyBTa3lEYXRlUmFuZ2VQaWNrZXJFbmREYXRlUmVzb3VyY2VLZXlQaXBlIH0gZnJvbSAnLi9kYXRlLXJhbmdlLXBpY2tlci1lbmQtZGF0ZS1yZXNvdXJjZS1rZXkucGlwZSc7XG5pbXBvcnQgeyBTa3lEYXRlUmFuZ2VQaWNrZXJTdGFydERhdGVSZXNvdXJjZUtleVBpcGUgfSBmcm9tICcuL2RhdGUtcmFuZ2UtcGlja2VyLXN0YXJ0LWRhdGUtcmVzb3VyY2Uta2V5LnBpcGUnO1xuaW1wb3J0IHsgU2t5RGF0ZVJhbmdlU2VydmljZSB9IGZyb20gJy4vZGF0ZS1yYW5nZS5zZXJ2aWNlJztcbmltcG9ydCB7IFNreURhdGVSYW5nZUNhbGN1bGF0aW9uIH0gZnJvbSAnLi90eXBlcy9kYXRlLXJhbmdlLWNhbGN1bGF0aW9uJztcbmltcG9ydCB7IFNreURhdGVSYW5nZUNhbGN1bGF0b3IgfSBmcm9tICcuL3R5cGVzL2RhdGUtcmFuZ2UtY2FsY3VsYXRvcic7XG5pbXBvcnQgeyBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9ySWQgfSBmcm9tICcuL3R5cGVzL2RhdGUtcmFuZ2UtY2FsY3VsYXRvci1pZCc7XG5pbXBvcnQgeyBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9yVHlwZSB9IGZyb20gJy4vdHlwZXMvZGF0ZS1yYW5nZS1jYWxjdWxhdG9yLXR5cGUnO1xuaW1wb3J0IHsgU0tZX0RFRkFVTFRfQ0FMQ1VMQVRPUl9JRFMgfSBmcm9tICcuL3R5cGVzL2RhdGUtcmFuZ2UtZGVmYXVsdC1jYWxjdWxhdG9yLWNvbmZpZ3MnO1xuXG50eXBlIERhdGVWYWx1ZSA9IERhdGUgfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuXG5mdW5jdGlvbiBhcmVEYXRlUmFuZ2VzRXF1YWwoXG4gIHJhbmdlQTogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRpb24gfCB1bmRlZmluZWQsXG4gIHJhbmdlQjogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRpb24gfCB1bmRlZmluZWQsXG4pOiBib29sZWFuIHtcbiAgcmV0dXJuIChcbiAgICAhIXJhbmdlQSAmJlxuICAgICEhcmFuZ2VCICYmXG4gICAgcmFuZ2VBLmNhbGN1bGF0b3JJZCA9PT0gcmFuZ2VCLmNhbGN1bGF0b3JJZCAmJlxuICAgIGFyZURhdGVzRXF1YWwocmFuZ2VBLnN0YXJ0RGF0ZSwgcmFuZ2VCLnN0YXJ0RGF0ZSkgJiZcbiAgICBhcmVEYXRlc0VxdWFsKHJhbmdlQS5lbmREYXRlLCByYW5nZUIuZW5kRGF0ZSlcbiAgKTtcbn1cblxuZnVuY3Rpb24gYXJlRGF0ZXNFcXVhbChhOiBEYXRlVmFsdWUsIGI6IERhdGVWYWx1ZSk6IGJvb2xlYW4ge1xuICBpZiAodHlwZW9mIGEgIT09IHR5cGVvZiBiKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCFhICYmICFiKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAodHlwZW9mIGEgPT09ICdzdHJpbmcnICYmIGEgPT09IGIpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBhIGluc3RhbmNlb2YgRGF0ZSAmJiBiIGluc3RhbmNlb2YgRGF0ZSAmJiBhLmdldFRpbWUoKSA9PT0gYi5nZXRUaW1lKCk7XG59XG5cbmZ1bmN0aW9uIGlzTnVsbE9yVW5kZWZpbmVkKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgdW5kZWZpbmVkIHwgbnVsbCB7XG4gIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsO1xufVxuXG5mdW5jdGlvbiBpc1BhcnRpYWxWYWx1ZShcbiAgdmFsdWU6IFBhcnRpYWw8U2t5RGF0ZVJhbmdlQ2FsY3VsYXRpb24+IHwgbnVsbCB8IHVuZGVmaW5lZCxcbik6IHZhbHVlIGlzIFBhcnRpYWw8U2t5RGF0ZVJhbmdlQ2FsY3VsYXRpb24+IHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiAoXG4gICAgaXNOdWxsT3JVbmRlZmluZWQodmFsdWUpIHx8XG4gICAgaXNOdWxsT3JVbmRlZmluZWQodmFsdWUuY2FsY3VsYXRvcklkKSB8fFxuICAgICEoJ2VuZERhdGUnIGluIHZhbHVlKSB8fFxuICAgICEoJ3N0YXJ0RGF0ZScgaW4gdmFsdWUpXG4gICk7XG59XG5cbkBDb21wb25lbnQoe1xuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIFNreURhdGVwaWNrZXJNb2R1bGUsXG4gICAgU2t5RGF0ZVJhbmdlUGlja2VyRW5kRGF0ZVJlc291cmNlS2V5UGlwZSxcbiAgICBTa3lEYXRlUmFuZ2VQaWNrZXJTdGFydERhdGVSZXNvdXJjZUtleVBpcGUsXG4gICAgU2t5RGF0ZXRpbWVSZXNvdXJjZXNNb2R1bGUsXG4gICAgU2t5SW5wdXRCb3hNb2R1bGUsXG4gICAgU2t5Rm9ybUVycm9yc01vZHVsZSxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgIHVzZUV4aXN0aW5nOiBTa3lEYXRlUmFuZ2VQaWNrZXJDb21wb25lbnQsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IFNreURhdGVSYW5nZVBpY2tlckNvbXBvbmVudCxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gICAgeyBwcm92aWRlOiBTS1lfRk9STV9FUlJPUlNfRU5BQkxFRCwgdXNlVmFsdWU6IHRydWUgfSxcbiAgXSxcbiAgc2VsZWN0b3I6ICdza3ktZGF0ZS1yYW5nZS1waWNrZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzdHlsZVVybDogJy4vZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50LnNjc3MnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lEYXRlUmFuZ2VQaWNrZXJDb21wb25lbnRcbiAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yXG57XG4gIHJlYWRvbmx5ICNkYXRlUmFuZ2VTdmMgPSBpbmplY3QoU2t5RGF0ZVJhbmdlU2VydmljZSk7XG4gIHJlYWRvbmx5ICNkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICByZWFkb25seSAjaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICByZWFkb25seSAjbG9nZ2VyID0gaW5qZWN0KFNreUxvZ1NlcnZpY2UpO1xuXG4gIC8qKlxuICAgKiBJRHMgZm9yIHRoZSBkYXRlIHJhbmdlIG9wdGlvbnMgdG8gaW5jbHVkZSBpbiB0aGUgcGlja2VyJ3MgZHJvcGRvd24uXG4gICAqIFRoZSBvcHRpb25zIHNwZWNpZnkgY2FsY3VsYXRvciBvYmplY3RzIHRoYXQgcmV0dXJuIHR3byBgRGF0ZWAgb2JqZWN0cyB0byByZXByZXNlbnQgZGF0ZSByYW5nZXMuXG4gICAqIEJ5IGRlZmF1bHQsIHRoaXMgcHJvcGVydHkgaW5jbHVkZXMgYWxsIGBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9ySWRgIHZhbHVlcy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgY2FsY3VsYXRvcklkcyhcbiAgICBjYWxjdWxhdG9ySWRzOiBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9ySWRbXSB8IHVuZGVmaW5lZCxcbiAgKSB7XG4gICAgY29uc3QgY3VycmVudENhbGN1bGF0b3JJZCA9IHRoaXMuI2dldFZhbHVlKCkuY2FsY3VsYXRvcklkO1xuXG4gICAgdGhpcy4jX2NhbGN1bGF0b3JJZHMgPSBjYWxjdWxhdG9ySWRzID8/IFNLWV9ERUZBVUxUX0NBTENVTEFUT1JfSURTO1xuICAgIHRoaXMuY2FsY3VsYXRvcnMgPSB0aGlzLiNkYXRlUmFuZ2VTdmMuZmlsdGVyQ2FsY3VsYXRvcnMoXG4gICAgICB0aGlzLiNfY2FsY3VsYXRvcklkcyxcbiAgICApO1xuXG4gICAgLy8gSWYgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBjYWxjdWxhdG9yIGlzbid0IGF2YWlsYWJsZSBhbnltb3JlLFxuICAgIC8vIHNlbGVjdCB0aGUgZmlyc3QgY2FsY3VsYXRvciBpbiB0aGUgbmV3IGFycmF5LlxuICAgIGlmICghdGhpcy4jX2NhbGN1bGF0b3JJZHMuaW5jbHVkZXMoY3VycmVudENhbGN1bGF0b3JJZCkpIHtcbiAgICAgIHRoaXMuI3NldFZhbHVlKHsgY2FsY3VsYXRvcklkOiB0aGlzLmNhbGN1bGF0b3JJZHNbMF0gfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBjYWxjdWxhdG9ySWRzKCk6IFNreURhdGVSYW5nZUNhbGN1bGF0b3JJZFtdIHtcbiAgICByZXR1cm4gdGhpcy4jX2NhbGN1bGF0b3JJZHM7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGRhdGUgZm9ybWF0IGZvclxuICAgKiBbdGhlIGBza3ktZGF0ZXBpY2tlcmAgY29tcG9uZW50c10oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL2RhdGVwaWNrZXIpXG4gICAqIHRoYXQgbWFrZSB1cCB0aGUgZGF0ZSByYW5nZSBwaWNrZXIuIFRoZSB0ZXh0IGlucHV0IGlzIGEgY29tcG9zaXRlIGNvbXBvbmVudCBvZlxuICAgKiB1cCB0byB0d28gYHNreS1kYXRlcGlja2VyYCBjb21wb25lbnRzLlxuICAgKiBAZGVmYXVsdCBcIk1NL0REL1lZWVlcIlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGRhdGVGb3JtYXQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV2hldGhlciB0byBkaXNhYmxlIHRoZSBkYXRlIHJhbmdlIHBpY2tlciBvbiB0ZW1wbGF0ZS1kcml2ZW4gZm9ybXMuIERvbid0IHVzZVxuICAgKiB0aGlzIGlucHV0IG9uIHJlYWN0aXZlIGZvcm1zIGJlY2F1c2UgdGhleSBtYXkgb3ZlcndyaXRlIHRoZSBpbnB1dCBvciBsZWF2ZVxuICAgKiB0aGUgY29udHJvbCBvdXQgb2Ygc3luYy4gVG8gc2V0IHRoZSBkaXNhYmxlZCBzdGF0ZSBvbiByZWFjdGl2ZSBmb3JtcyxcbiAgICogdXNlIHRoZSBgRm9ybUNvbnRyb2xgIGluc3RlYWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgcHVibGljIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5mb3JtR3JvdXAuZGlzYWJsZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZvcm1Hcm91cC5lbmFibGUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhlIGNvbnRlbnQgb2YgdGhlIGhlbHAgcG9wb3Zlci4gV2hlbiBzcGVjaWZpZWQgYWxvbmcgd2l0aCBgbGFiZWxUZXh0YCwgYSBbaGVscCBpbmxpbmVdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvY29tcG9uZW50cy9oZWxwLWlubGluZSlcbiAgICogYnV0dG9uIGlzIGFkZGVkIHRvIGRhdGUgcmFuZ2UgcGlja2VyLiBUaGUgaGVscCBpbmxpbmUgYnV0dG9uIGRpc3BsYXlzIGEgW3BvcG92ZXJdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvY29tcG9uZW50cy9wb3BvdmVyKVxuICAgKiB3aGVuIGNsaWNrZWQgdXNpbmcgdGhlIHNwZWNpZmllZCBjb250ZW50IGFuZCBvcHRpb25hbCB0aXRsZS4gVGhpcyBwcm9wZXJ0eSBvbmx5IGFwcGxpZXMgd2hlbiBgbGFiZWxUZXh0YCBpcyBhbHNvIHNwZWNpZmllZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoZWxwUG9wb3ZlckNvbnRlbnQ6IHN0cmluZyB8IFRlbXBsYXRlUmVmPHVua25vd24+IHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgdGl0bGUgb2YgdGhlIGhlbHAgcG9wb3Zlci4gVGhpcyBwcm9wZXJ0eSBvbmx5IGFwcGxpZXMgd2hlbiBgaGVscFBvcG92ZXJDb250ZW50YCBpc1xuICAgKiBhbHNvIHNwZWNpZmllZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoZWxwUG9wb3ZlclRpdGxlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFtQZXJzaXN0ZW50IGlubGluZSBoZWxwIHRleHRdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvZGVzaWduL2d1aWRlbGluZXMvdXNlci1hc3Npc3RhbmNlI2lubGluZS1oZWxwKSB0aGF0IHByb3ZpZGVzXG4gICAqIGFkZGl0aW9uYWwgY29udGV4dCB0byB0aGUgdXNlci5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoaW50VGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgbGFiZWwgZm9yIHRoZSBkYXRlIHJhbmdlIHBpY2tlci5cbiAgICogQGRlcHJlY2F0ZWQgVXNlIHRoZSBgbGFiZWxUZXh0YCBpbnB1dCBpbnN0ZWFkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBsYWJlbCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX2xhYmVsID0gdmFsdWU7XG5cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuI2xvZ2dlci5kZXByZWNhdGVkKCdTa3lEYXRlUmFuZ2VQaWNrZXJDb21wb25lbnQubGFiZWwnLCB7XG4gICAgICAgIGRlcHJlY2F0aW9uTWFqb3JWZXJzaW9uOiAxMCxcbiAgICAgICAgcmVwbGFjZW1lbnRSZWNvbW1lbmRhdGlvbjogJ1VzZSB0aGUgYGxhYmVsVGV4dGAgaW5wdXQgaW5zdGVhZC4nLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBsYWJlbCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfbGFiZWw7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHRleHQgdG8gZGlzcGxheSBhcyB0aGUgZGF0ZSByYW5nZSBwaWNrZXIncyBsYWJlbC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBsYWJlbFRleHQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgZGF0ZSByYW5nZSBwaWNrZXIgaXMgc3RhY2tlZCBvbiBhbm90aGVyIGZvcm0gY29tcG9uZW50LiBXaGVuIHNwZWNpZmllZCwgdGhlIGFwcHJvcHJpYXRlXG4gICAqIHZlcnRpY2FsIHNwYWNpbmcgaXMgYXV0b21hdGljYWxseSBhZGRlZCB0byB0aGUgZGF0ZSByYW5nZSBwaWNrZXIuXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5za3ktZm9ybS1maWVsZC1zdGFja2VkJylcbiAgcHVibGljIHN0YWNrZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogQSBoZWxwIGtleSB0aGF0IGlkZW50aWZpZXMgdGhlIGdsb2JhbCBoZWxwIGNvbnRlbnQgdG8gZGlzcGxheS4gV2hlbiBzcGVjaWZpZWQgYWxvbmcgd2l0aCBgbGFiZWxUZXh0YCwgYSBbaGVscCBpbmxpbmVdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvY29tcG9uZW50cy9oZWxwLWlubGluZSlcbiAgICogYnV0dG9uIGlzIHBsYWNlZCBiZXNpZGUgdGhlIGRhdGUgcmFuZ2UgcGlja2VyIGxhYmVsLiBDbGlja2luZyB0aGUgYnV0dG9uIGludm9rZXMgW2dsb2JhbCBoZWxwXShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2xlYXJuL2RldmVsb3AvZ2xvYmFsLWhlbHApXG4gICAqIGFzIGNvbmZpZ3VyZWQgYnkgdGhlIGFwcGxpY2F0aW9uLiBUaGlzIHByb3BlcnR5IG9ubHkgYXBwbGllcyB3aGVuIGBsYWJlbFRleHRgIGlzIGFsc28gc3BlY2lmaWVkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhlbHBLZXk6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBwcm90ZWN0ZWQgY2FsY3VsYXRvcnMgPSB0aGlzLiNkYXRlUmFuZ2VTdmMuY2FsY3VsYXRvcnM7XG4gIHByb3RlY3RlZCBob3N0Q29udHJvbDogQWJzdHJhY3RDb250cm9sIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgcHJvdGVjdGVkIHNlbGVjdGVkQ2FsY3VsYXRvciA9IHRoaXMuY2FsY3VsYXRvcnNbMF07XG4gIHByb3RlY3RlZCBzaG93RW5kRGF0ZVBpY2tlciA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHByb3RlY3RlZCBzaG93U3RhcnREYXRlUGlja2VyID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcblxuICAjbm90aWZ5Q2hhbmdlOiAoKF86IFNreURhdGVSYW5nZUNhbGN1bGF0aW9uKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcbiAgI25vdGlmeVRvdWNoZWQ6ICgoKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcblxuICAjY2FsY3VsYXRvcklkQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxudW1iZXI+KFxuICAgIHRoaXMuI2dldFZhbHVlKCkuY2FsY3VsYXRvcklkLFxuICAgIHsgbm9uTnVsbGFibGU6IHRydWUgfSxcbiAgKTtcbiAgI2NhbGN1bGF0b3JJZEludmFsaWQgPSB0aGlzLiNjcmVhdGVTdGF0dXNDaGFuZ2VTaWduYWwoXG4gICAgdGhpcy4jY2FsY3VsYXRvcklkQ29udHJvbCxcbiAgKTtcbiAgI2NhbGN1bGF0b3JJZFRvdWNoZWQgPSB0aGlzLiNjcmVhdGVUb3VjaGVkQ2hhbmdlU2lnbmFsKFxuICAgIHRoaXMuI2NhbGN1bGF0b3JJZENvbnRyb2wsXG4gICk7XG5cbiAgI2VuZERhdGVDb250cm9sID0gbmV3IEZvcm1Db250cm9sPERhdGVWYWx1ZT4odGhpcy4jZ2V0VmFsdWUoKS5lbmREYXRlKTtcbiAgI2VuZERhdGVJbnZhbGlkID0gdGhpcy4jY3JlYXRlU3RhdHVzQ2hhbmdlU2lnbmFsKHRoaXMuI2VuZERhdGVDb250cm9sKTtcbiAgI2VuZERhdGVUb3VjaGVkID0gdGhpcy4jY3JlYXRlVG91Y2hlZENoYW5nZVNpZ25hbCh0aGlzLiNlbmREYXRlQ29udHJvbCk7XG5cbiAgI3N0YXJ0RGF0ZUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2w8RGF0ZVZhbHVlPih0aGlzLiNnZXRWYWx1ZSgpLnN0YXJ0RGF0ZSk7XG4gICNzdGFydERhdGVJbnZhbGlkID0gdGhpcy4jY3JlYXRlU3RhdHVzQ2hhbmdlU2lnbmFsKHRoaXMuI3N0YXJ0RGF0ZUNvbnRyb2wpO1xuICAjc3RhcnREYXRlVG91Y2hlZCA9IHRoaXMuI2NyZWF0ZVRvdWNoZWRDaGFuZ2VTaWduYWwodGhpcy4jc3RhcnREYXRlQ29udHJvbCk7XG5cbiAgcHJvdGVjdGVkIGZvcm1Hcm91cCA9IGluamVjdChGb3JtQnVpbGRlcikuZ3JvdXAoe1xuICAgIGNhbGN1bGF0b3JJZDogdGhpcy4jY2FsY3VsYXRvcklkQ29udHJvbCxcbiAgICBzdGFydERhdGU6IHRoaXMuI3N0YXJ0RGF0ZUNvbnRyb2wsXG4gICAgZW5kRGF0ZTogdGhpcy4jZW5kRGF0ZUNvbnRyb2wsXG4gIH0pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBjYWxjdWxhdG9ySWRIYXNFcnJvcnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgdG91Y2hlZCA9IHRoaXMuI2NhbGN1bGF0b3JJZFRvdWNoZWQoKTtcbiAgICBjb25zdCBpbnZhbGlkID0gdGhpcy4jY2FsY3VsYXRvcklkSW52YWxpZCgpO1xuXG4gICAgcmV0dXJuIHRvdWNoZWQgJiYgaW52YWxpZDtcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGVuZERhdGVIYXNFcnJvcnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY2FsY3VsYXRvcklkSGFzRXJyb3JzID0gdGhpcy5jYWxjdWxhdG9ySWRIYXNFcnJvcnMoKTtcbiAgICBjb25zdCB0b3VjaGVkID0gdGhpcy4jZW5kRGF0ZVRvdWNoZWQoKTtcbiAgICBjb25zdCBpbnZhbGlkID0gdGhpcy4jZW5kRGF0ZUludmFsaWQoKTtcblxuICAgIHJldHVybiBjYWxjdWxhdG9ySWRIYXNFcnJvcnMgfHwgKHRvdWNoZWQgJiYgaW52YWxpZCk7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBzdGFydERhdGVIYXNFcnJvcnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY2FsY3VsYXRvcklkSGFzRXJyb3JzID0gdGhpcy5jYWxjdWxhdG9ySWRIYXNFcnJvcnMoKTtcbiAgICBjb25zdCB0b3VjaGVkID0gdGhpcy4jc3RhcnREYXRlVG91Y2hlZCgpO1xuICAgIGNvbnN0IGludmFsaWQgPSB0aGlzLiNzdGFydERhdGVJbnZhbGlkKCk7XG5cbiAgICByZXR1cm4gY2FsY3VsYXRvcklkSGFzRXJyb3JzIHx8ICh0b3VjaGVkICYmIGludmFsaWQpO1xuICB9KTtcblxuICAjX2NhbGN1bGF0b3JJZHMgPSBTS1lfREVGQVVMVF9DQUxDVUxBVE9SX0lEUztcbiAgI19sYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAjX3ZhbHVlID0gdGhpcy5zZWxlY3RlZENhbGN1bGF0b3IuZ2V0VmFsdWUoKTtcblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaG9zdENvbnRyb2wgPSB0aGlzLiNpbmplY3Rvci5nZXQoTmdDb250cm9sLCBudWxsLCB7XG4gICAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICAgIHNlbGY6IHRydWUsXG4gICAgfSk/LmNvbnRyb2w7XG5cbiAgICAvLyBTZXQgYSBkZWZhdWx0IHZhbHVlIG9uIHRoZSBjb250cm9sIGlmIGl0J3MgdW5kZWZpbmVkIG9uIGluaXQuXG4gICAgLy8gV2UgbmVlZCB0byB1c2Ugc2V0VGltZW91dCB0byBhdm9pZCBpbnRlcmZlcmluZyB3aXRoIHRoZSBmaXJzdFxuICAgIC8vIHZhbGlkYXRpb24gY3ljbGUuXG4gICAgaWYgKGlzUGFydGlhbFZhbHVlKHRoaXMuaG9zdENvbnRyb2w/LnZhbHVlKSkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuaG9zdENvbnRyb2w/LnNldFZhbHVlKHRoaXMuI2dldFZhbHVlKCksIHtcbiAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIElmIHRoZSBkYXRlcGlja2Vycycgc3RhdHVzZXMgY2hhbmdlLCB3ZSB3YW50IHRvIHJldHJpZ2dlciB0aGUgaG9zdFxuICAgIC8vIGNvbnRyb2wncyB2YWxpZGF0aW9uIHNvIHRoYXQgdGhlaXIgZXJyb3JzIGFyZSByZWZsZWN0ZWQgYmFjayB0byB0aGUgaG9zdC5cbiAgICB0aGlzLmZvcm1Hcm91cC5ldmVudHNcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKGV2dCkgPT4gZXZ0IGluc3RhbmNlb2YgU3RhdHVzQ2hhbmdlRXZlbnQpLFxuICAgICAgICBtYXAoKGV2dDogU3RhdHVzQ2hhbmdlRXZlbnQpID0+IGV2dC5zdGF0dXMpLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy4jZGVzdHJveVJlZiksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5ob3N0Q29udHJvbD8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7XG4gICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZSxcbiAgICAgICAgICBvbmx5U2VsZjogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgIC8vIE1hcmsgYWxsIGZpZWxkcyBhcyB0b3VjaGVkIGlmIHRoZSBob3N0IGNvbnRyb2wgaXMgdG91Y2hlZC5cbiAgICB0aGlzLmhvc3RDb250cm9sPy5ldmVudHNcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKGV2dCkgPT4gZXZ0IGluc3RhbmNlb2YgVG91Y2hlZENoYW5nZUV2ZW50KSxcbiAgICAgICAgbWFwKChldnQ6IFRvdWNoZWRDaGFuZ2VFdmVudCkgPT4gZXZ0LnRvdWNoZWQpLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy4jZGVzdHJveVJlZiksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5mb3JtR3JvdXAubWFya0FsbEFzVG91Y2hlZCgpO1xuICAgICAgfSk7XG4gIH1cblxuICAvLyBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogKF86IHVua25vd24pID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLiNub3RpZnlDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIC8vIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuI25vdGlmeVRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIC8vIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIC8vIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgVmFsaWRhdG9yLlxuICBwdWJsaWMgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGxldCBlcnJvcnM6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0gbnVsbDtcblxuICAgIGNvbnN0IGNhbGN1bGF0b3JFcnJvcnMgPSB0aGlzLnNlbGVjdGVkQ2FsY3VsYXRvci52YWxpZGF0ZShjb250cm9sLnZhbHVlKTtcbiAgICBjb25zdCBzdGFydERhdGVFcnJvcnMgPSB0aGlzLiNzdGFydERhdGVDb250cm9sLmVycm9ycztcbiAgICBjb25zdCBlbmREYXRlRXJyb3JzID0gdGhpcy4jZW5kRGF0ZUNvbnRyb2wuZXJyb3JzO1xuXG4gICAgaWYgKGNhbGN1bGF0b3JFcnJvcnMpIHtcbiAgICAgIGVycm9ycyA9IHtcbiAgICAgICAgc2t5RGF0ZVJhbmdlOiB7XG4gICAgICAgICAgY2FsY3VsYXRvcklkOiB0aGlzLiNnZXRWYWx1ZSgpLmNhbGN1bGF0b3JJZCxcbiAgICAgICAgICBlcnJvcnM6IGNhbGN1bGF0b3JFcnJvcnMsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIFNldCBjYWxjdWxhdG9yIGVycm9ycyBvbiB0aGUgc2VsZWN0IHNvIHRoYXQgdGhleSBhcHBlYXIgYmVuZWF0aCBpdC5cbiAgICB0aGlzLiNjYWxjdWxhdG9ySWRDb250cm9sLnNldEVycm9ycyhlcnJvcnMpO1xuXG4gICAgaWYgKHRoaXMuc2hvd1N0YXJ0RGF0ZVBpY2tlcigpICYmIHN0YXJ0RGF0ZUVycm9ycykge1xuICAgICAgZXJyb3JzIHx8PSB7fTtcbiAgICAgIGVycm9ycyA9IHsgLi4uZXJyb3JzLCAuLi5zdGFydERhdGVFcnJvcnMgfTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zaG93RW5kRGF0ZVBpY2tlcigpICYmIGVuZERhdGVFcnJvcnMpIHtcbiAgICAgIGVycm9ycyB8fD0ge307XG4gICAgICBlcnJvcnMgPSB7IC4uLmVycm9ycywgLi4uZW5kRGF0ZUVycm9ycyB9O1xuICAgIH1cblxuICAgIHJldHVybiBlcnJvcnM7XG4gIH1cblxuICAvLyBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAvLyBUaGUgZGF0ZSByYW5nZSBwaWNrZXIgYWx3YXlzIGhhcyBhIHZhbHVlLCBzbyBpZiB0aGUgY29uc3VtZXIgcGFzc2VzIGluIGFcbiAgLy8gcGFydGlhbCB2YWx1ZSAodmlhIGBwYXRjaFZhbHVlYCkgb3IgbnVsbCwgd2UgbmVlZCB0byB1cGRhdGUgdGhlIGhvc3QgY29udHJvbCdzXG4gIC8vIHZhbHVlIHdpdGggdGhlIGNvbXBsZXRlIHZhbHVlIGFmdGVyIGl0J3MgYmVlbiBtb2RpZmllZC5cbiAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IFBhcnRpYWw8U2t5RGF0ZVJhbmdlQ2FsY3VsYXRpb24+IHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgdGhpcy4jcGF0Y2hWYWx1ZSh2YWx1ZSk7XG5cbiAgICAvLyBVcGRhdGUgdGhlIGhvc3QgY29udHJvbCBpZiBpdCBpcyBzZXQgdG8gYSBwYXJ0aWFsIG9yIG51bGwgdmFsdWUuXG4gICAgaWYgKGlzUGFydGlhbFZhbHVlKHZhbHVlKSkge1xuICAgICAgdGhpcy5ob3N0Q29udHJvbD8uc2V0VmFsdWUodGhpcy4jZ2V0VmFsdWUoKSwge1xuICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlLFxuICAgICAgICBvbmx5U2VsZjogdHJ1ZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvbkJsdXIoKTogdm9pZCB7XG4gICAgdGhpcy4jbm90aWZ5VG91Y2hlZD8uKCk7XG4gIH1cblxuICAvKipcbiAgICogRmlyZXMgd2hlbiBhIHVzZXIgY2hhbmdlcyB0aGUgc2VsZWN0ZWQgY2FsY3VsYXRvciBJRC5cbiAgICovXG4gIHByb3RlY3RlZCBvbkNhbGN1bGF0b3JJZENoYW5nZSgpOiB2b2lkIHtcbiAgICAvLyBSZXNldCB0aGUgdmFsdWUgd2hlbiB0aGUgY2FsY3VsYXRvciBJRCBjaGFuZ2VzLlxuICAgIHRoaXMuI3NldFZhbHVlKHsgY2FsY3VsYXRvcklkOiArdGhpcy4jY2FsY3VsYXRvcklkQ29udHJvbC52YWx1ZSB9KTtcbiAgICB0aGlzLm9uRGF0ZUNoYW5nZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gYSB1c2VyIGludGVyYWN0cyB3aXRoIGEgZGF0ZSByYW5nZSBwaWNrZXIuXG4gICAqL1xuICBwcm90ZWN0ZWQgb25EYXRlQ2hhbmdlKCk6IHZvaWQge1xuICAgIC8vIFdhaXQgdW50aWwgdGhlIGZvcm0gY29udHJvbCBpcyB1cGRhdGVkIGJlZm9yZSByZXRyaWV2aW5nIGl0cyB2YWx1ZS5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuI25vdGlmeUNoYW5nZT8uKFxuICAgICAgICB0aGlzLmZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpIGFzIFNreURhdGVSYW5nZUNhbGN1bGF0aW9uLFxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gICNnZXRDYWxjdWxhdG9yKGNhbGN1bGF0b3JJZDogbnVtYmVyKTogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvciB7XG4gICAgY29uc3QgZm91bmQgPSB0aGlzLmNhbGN1bGF0b3JzLmZpbmQoKGMpID0+IGMuY2FsY3VsYXRvcklkID09PSBjYWxjdWxhdG9ySWQpO1xuXG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgaWY6IHNhZmV0eSBjaGVjayovXG4gICAgaWYgKCFmb3VuZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgQSBkYXRlIHJhbmdlIGNhbGN1bGF0b3Igd2l0aCBJRCAoJHtjYWxjdWxhdG9ySWR9KSBjb3VsZCBub3QgYmUgZm91bmQuYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvdW5kO1xuICB9XG5cbiAgI2dldFZhbHVlKCk6IFNreURhdGVSYW5nZUNhbGN1bGF0aW9uIHtcbiAgICAvLyBJbXBvcnRhbnQhIFJldHVybiBhIGNsb25lIHRvIGF2b2lkIGNoYW5naW5nIHRoZSBwcm9wZXJ0aWVzIGJ5IHJlZmVyZW5jZS5cbiAgICByZXR1cm4geyAuLi50aGlzLiNfdmFsdWUgfTtcbiAgfVxuXG4gICNwYXRjaFZhbHVlKFxuICAgIHBhcnRpYWxWYWx1ZTogUGFydGlhbDxTa3lEYXRlUmFuZ2VDYWxjdWxhdGlvbj4gfCBudWxsIHwgdW5kZWZpbmVkLFxuICApOiB2b2lkIHtcbiAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQocGFydGlhbFZhbHVlKSkge1xuICAgICAgdGhpcy4jc2V0VmFsdWUobnVsbCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgb2xkVmFsdWUgPSB0aGlzLiNnZXRWYWx1ZSgpO1xuXG4gICAgLy8gSWYgdGhlIG5ldyBJRCBpcyBkaXN0aW5jdCwgZXJhc2UgdGhlIG9sZCBzdGFydCBhbmQgZW5kIGRhdGVzIGJlY2F1c2VcbiAgICAvLyB0aGV5J3JlIG5vIGxvbmdlciBhcHBsaWNhYmxlLlxuICAgIGlmIChcbiAgICAgICFpc051bGxPclVuZGVmaW5lZChwYXJ0aWFsVmFsdWUuY2FsY3VsYXRvcklkKSAmJlxuICAgICAgb2xkVmFsdWUuY2FsY3VsYXRvcklkICE9PSBwYXJ0aWFsVmFsdWUuY2FsY3VsYXRvcklkXG4gICAgKSB7XG4gICAgICBkZWxldGUgb2xkVmFsdWUuZW5kRGF0ZTtcbiAgICAgIGRlbGV0ZSBvbGRWYWx1ZS5zdGFydERhdGU7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWUgPSB7XG4gICAgICAuLi5vbGRWYWx1ZSxcbiAgICAgIC4uLnBhcnRpYWxWYWx1ZSxcbiAgICB9O1xuXG4gICAgdGhpcy4jc2V0VmFsdWUodmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHZhbHVlIHRvIGJlIHVzZWQgYnkgdGhlIGRhdGUgcmFuZ2UgcGlja2VyIGZvcm0gY29udHJvbC5cbiAgICovXG4gICNzZXRWYWx1ZSh2YWx1ZTogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRpb24gfCBudWxsIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgY29uc3Qgb2xkVmFsdWUgPSB0aGlzLiNnZXRWYWx1ZSgpO1xuXG4gICAgY29uc3QgaXNWYWx1ZUVtcHR5ID0gIXZhbHVlIHx8IGlzTnVsbE9yVW5kZWZpbmVkKHZhbHVlLmNhbGN1bGF0b3JJZCk7XG4gICAgY29uc3QgdmFsdWVPckRlZmF1bHQgPSBpc1ZhbHVlRW1wdHlcbiAgICAgID8gdGhpcy5jYWxjdWxhdG9yc1swXS5nZXRWYWx1ZSgpXG4gICAgICA6IHtcbiAgICAgICAgICAuLi50aGlzLiNnZXRDYWxjdWxhdG9yKHZhbHVlLmNhbGN1bGF0b3JJZCkuZ2V0VmFsdWUoKSxcbiAgICAgICAgICAuLi52YWx1ZSxcbiAgICAgICAgfTtcblxuICAgIC8vIEVuc3VyZSBmYWxzeSB2YWx1ZXMgYXJlIHNldCB0byBudWxsLlxuICAgIHZhbHVlT3JEZWZhdWx0LmVuZERhdGUgPSB2YWx1ZU9yRGVmYXVsdC5lbmREYXRlIHx8IG51bGw7XG4gICAgdmFsdWVPckRlZmF1bHQuc3RhcnREYXRlID0gdmFsdWVPckRlZmF1bHQuc3RhcnREYXRlIHx8IG51bGw7XG5cbiAgICBpZiAoIWFyZURhdGVSYW5nZXNFcXVhbChvbGRWYWx1ZSwgdmFsdWVPckRlZmF1bHQpKSB7XG4gICAgICB0aGlzLiNfdmFsdWUgPSB2YWx1ZU9yRGVmYXVsdDtcblxuICAgICAgaWYgKG9sZFZhbHVlLmNhbGN1bGF0b3JJZCAhPT0gdmFsdWVPckRlZmF1bHQuY2FsY3VsYXRvcklkKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDYWxjdWxhdG9yID0gdGhpcy4jZ2V0Q2FsY3VsYXRvcihcbiAgICAgICAgICB2YWx1ZU9yRGVmYXVsdC5jYWxjdWxhdG9ySWQsXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy4jdXBkYXRlUGlja2VyVmlzaWJpbGl0eSh0aGlzLnNlbGVjdGVkQ2FsY3VsYXRvcik7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZm9ybUdyb3VwLnBhdGNoVmFsdWUodmFsdWVPckRlZmF1bHQpO1xuICAgIH1cbiAgfVxuXG4gICN1cGRhdGVQaWNrZXJWaXNpYmlsaXR5KGNhbGN1bGF0b3I6IFNreURhdGVSYW5nZUNhbGN1bGF0b3IpOiB2b2lkIHtcbiAgICBsZXQgc2hvd0VuZERhdGVQaWNrZXIgPSBmYWxzZTtcbiAgICBsZXQgc2hvd1N0YXJ0RGF0ZVBpY2tlciA9IGZhbHNlO1xuXG4gICAgc3dpdGNoIChjYWxjdWxhdG9yLnR5cGUpIHtcbiAgICAgIGNhc2UgU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvclR5cGUuQmVmb3JlOlxuICAgICAgICBzaG93RW5kRGF0ZVBpY2tlciA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFNreURhdGVSYW5nZUNhbGN1bGF0b3JUeXBlLkFmdGVyOlxuICAgICAgICBzaG93U3RhcnREYXRlUGlja2VyID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvclR5cGUuUmFuZ2U6XG4gICAgICAgIHNob3dFbmREYXRlUGlja2VyID0gdHJ1ZTtcbiAgICAgICAgc2hvd1N0YXJ0RGF0ZVBpY2tlciA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICB0aGlzLnNob3dFbmREYXRlUGlja2VyLnNldChzaG93RW5kRGF0ZVBpY2tlcik7XG4gICAgdGhpcy5zaG93U3RhcnREYXRlUGlja2VyLnNldChzaG93U3RhcnREYXRlUGlja2VyKTtcbiAgfVxuXG4gICNjcmVhdGVTdGF0dXNDaGFuZ2VTaWduYWwoY29udHJvbDogRm9ybUNvbnRyb2wpOiBTaWduYWw8Ym9vbGVhbiB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiB0b1NpZ25hbChcbiAgICAgIGNvbnRyb2wuZXZlbnRzLnBpcGUoXG4gICAgICAgIGZpbHRlcigoZXZ0KSA9PiBldnQgaW5zdGFuY2VvZiBTdGF0dXNDaGFuZ2VFdmVudCksXG4gICAgICAgIG1hcCgoZXZ0OiBTdGF0dXNDaGFuZ2VFdmVudCkgPT4gZXZ0LnN0YXR1cyA9PT0gJ0lOVkFMSUQnKSxcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuI2Rlc3Ryb3lSZWYpLFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgI2NyZWF0ZVRvdWNoZWRDaGFuZ2VTaWduYWwoXG4gICAgY29udHJvbDogRm9ybUNvbnRyb2wsXG4gICk6IFNpZ25hbDxib29sZWFuIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRvU2lnbmFsKFxuICAgICAgY29udHJvbC5ldmVudHMucGlwZShcbiAgICAgICAgZmlsdGVyKChldnQpID0+IGV2dCBpbnN0YW5jZW9mIFRvdWNoZWRDaGFuZ2VFdmVudCksXG4gICAgICAgIG1hcCgoZXZ0OiBUb3VjaGVkQ2hhbmdlRXZlbnQpID0+IGV2dC50b3VjaGVkKSxcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuI2Rlc3Ryb3lSZWYpLFxuICAgICAgKSxcbiAgICApO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwic2t5LWRhdGUtcmFuZ2UtcGlja2VyXCIgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIj5cbiAgPGRpdlxuICAgIGNsYXNzPVwic2t5LWRhdGUtcmFuZ2UtcGlja2VyLWZvcm0tZ3JvdXAgc2t5LWRhdGUtcmFuZ2UtcGlja2VyLXNlbGVjdC1jYWxjdWxhdG9yXCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAnc2t5LWRhdGUtcmFuZ2UtcGlja2VyLWxhc3QtaW5wdXQnOlxuICAgICAgICAhc2hvd1N0YXJ0RGF0ZVBpY2tlcigpICYmICFzaG93RW5kRGF0ZVBpY2tlcigpXG4gICAgfVwiXG4gID5cbiAgICA8c2t5LWlucHV0LWJveFxuICAgICAgW2hhc0Vycm9yc109XCJjYWxjdWxhdG9ySWRIYXNFcnJvcnMoKVwiXG4gICAgICBbaGVscEtleV09XCJoZWxwS2V5XCJcbiAgICAgIFtoZWxwUG9wb3ZlckNvbnRlbnRdPVwiaGVscFBvcG92ZXJDb250ZW50XCJcbiAgICAgIFtoZWxwUG9wb3ZlclRpdGxlXT1cImhlbHBQb3BvdmVyVGl0bGVcIlxuICAgICAgW2hpbnRUZXh0XT1cImhpbnRUZXh0XCJcbiAgICAgIFtsYWJlbFRleHRdPVwiXG4gICAgICAgIGxhYmVsVGV4dCB8fFxuICAgICAgICBsYWJlbCB8fFxuICAgICAgICAoJ3NreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2RlZmF1bHRfbGFiZWwnIHwgc2t5TGliUmVzb3VyY2VzKVxuICAgICAgXCJcbiAgICA+XG4gICAgICA8c2VsZWN0XG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cImNhbGN1bGF0b3JJZFwiXG4gICAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcbiAgICAgICAgKGNoYW5nZSk9XCJvbkNhbGN1bGF0b3JJZENoYW5nZSgpXCJcbiAgICAgID5cbiAgICAgICAgQGZvciAoY2FsY3VsYXRvciBvZiBjYWxjdWxhdG9yczsgdHJhY2sgY2FsY3VsYXRvci5jYWxjdWxhdG9ySWQpIHtcbiAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJjYWxjdWxhdG9yLmNhbGN1bGF0b3JJZFwiPlxuICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgY2FsY3VsYXRvci5fc2hvcnREZXNjcmlwdGlvblJlc291cmNlS2V5XG4gICAgICAgICAgICAgICAgPyAoY2FsY3VsYXRvci5fc2hvcnREZXNjcmlwdGlvblJlc291cmNlS2V5IHwgc2t5TGliUmVzb3VyY2VzKVxuICAgICAgICAgICAgICAgIDogY2FsY3VsYXRvci5zaG9ydERlc2NyaXB0aW9uXG4gICAgICAgICAgICB9fVxuICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICB9XG4gICAgICA8L3NlbGVjdD5cbiAgICAgIEBpZiAoXG4gICAgICAgIGhvc3RDb250cm9sPy5lcnJvcnM/Llsnc2t5RGF0ZVJhbmdlJ10/LmVycm9ycz8uW1xuICAgICAgICAgICdlbmREYXRlQmVmb3JlU3RhcnREYXRlJ1xuICAgICAgICBdICYmIGxhYmVsVGV4dFxuICAgICAgKSB7XG4gICAgICAgIDxza3ktZm9ybS1lcnJvclxuICAgICAgICAgIGVycm9yTmFtZT1cImVuZERhdGVCZWZvcmVTdGFydERhdGVcIlxuICAgICAgICAgIFtlcnJvclRleHRdPVwiXG4gICAgICAgICAgICAnc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZW5kX2RhdGVfYmVmb3JlX3N0YXJ0X2RhdGVfZXJyb3JfbGFiZWxfdGV4dCdcbiAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgICAgICBcIlxuICAgICAgICAvPlxuICAgICAgfVxuICAgICAgPHNwYW4gY2xhc3M9XCJza3ktaW5wdXQtYm94LWRlc2NlbmRlbnQtZm9ybS1lcnJvclwiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJza3ktZm9ybS1lcnJvclwiIC8+XG4gICAgICA8L3NwYW4+XG4gICAgPC9za3ktaW5wdXQtYm94PlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgIGNsYXNzPVwic2t5LWRhdGUtcmFuZ2UtcGlja2VyLWZvcm0tZ3JvdXAgc2t5LWRhdGUtcmFuZ2UtZGF0ZXBpY2tlci13cmFwcGVyIHNreS1kYXRlLXJhbmdlLXBpY2tlci1zdGFydC1kYXRlXCJcbiAgICBbaGlkZGVuXT1cIiFzaG93U3RhcnREYXRlUGlja2VyKClcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICdza3ktZGF0ZS1yYW5nZS1waWNrZXItbGFzdC1pbnB1dCc6XG4gICAgICAgIHNob3dTdGFydERhdGVQaWNrZXIoKSAmJiAhc2hvd0VuZERhdGVQaWNrZXIoKVxuICAgIH1cIlxuICA+XG4gICAgPHNreS1pbnB1dC1ib3hcbiAgICAgIFtoYXNFcnJvcnNdPVwic3RhcnREYXRlSGFzRXJyb3JzKClcIlxuICAgICAgW2xhYmVsVGV4dF09XCJcbiAgICAgICAgc2VsZWN0ZWRDYWxjdWxhdG9yLnR5cGVcbiAgICAgICAgICB8IHNreURhdGVSYW5nZVBpY2tlclN0YXJ0RGF0ZVJlc291cmNlS2V5XG4gICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPHNreS1kYXRlcGlja2VyIChjYWxlbmRhckRhdGVDaGFuZ2UpPVwib25EYXRlQ2hhbmdlKClcIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic3RhcnREYXRlXCJcbiAgICAgICAgICBuYW1lPVwic3RhcnREYXRlXCJcbiAgICAgICAgICBza3lEYXRlcGlja2VySW5wdXRcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgIGxhYmVsVGV4dCB8fCBsYWJlbFxuICAgICAgICAgICAgICA/ICgnc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZGVmYXVsdF9hcmlhX2xhYmVsJ1xuICAgICAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICAgICAgICAgICAgICA6IChzZWxlY3RlZENhbGN1bGF0b3IudHlwZVxuICAgICAgICAgICAgICAgICAgICAgIHwgc2t5RGF0ZVJhbmdlUGlja2VyU3RhcnREYXRlUmVzb3VyY2VLZXlcbiAgICAgICAgICAgICAgICAgICAgICB8IHNreUxpYlJlc291cmNlcylcbiAgICAgICAgICAgICAgICAgIDogKGxhYmVsVGV4dCA/IGxhYmVsVGV4dCA6IGxhYmVsKSlcbiAgICAgICAgICAgICAgOiAoc2VsZWN0ZWRDYWxjdWxhdG9yLnR5cGVcbiAgICAgICAgICAgICAgICB8IHNreURhdGVSYW5nZVBpY2tlclN0YXJ0RGF0ZVJlc291cmNlS2V5XG4gICAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXMpXG4gICAgICAgICAgXCJcbiAgICAgICAgICBbZGF0ZUZvcm1hdF09XCJkYXRlRm9ybWF0XCJcbiAgICAgICAgICBbcmVxdWlyZWRdPVwic2hvd1N0YXJ0RGF0ZVBpY2tlcigpXCJcbiAgICAgICAgICAoY2hhbmdlKT1cIm9uRGF0ZUNoYW5nZSgpXCJcbiAgICAgICAgLz5cbiAgICAgIDwvc2t5LWRhdGVwaWNrZXI+XG4gICAgPC9za3ktaW5wdXQtYm94PlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgIGNsYXNzPVwic2t5LWRhdGUtcmFuZ2UtcGlja2VyLWZvcm0tZ3JvdXAgc2t5LWRhdGUtcmFuZ2UtZGF0ZXBpY2tlci13cmFwcGVyIHNreS1kYXRlLXJhbmdlLXBpY2tlci1lbmQtZGF0ZVwiXG4gICAgW2hpZGRlbl09XCIhc2hvd0VuZERhdGVQaWNrZXIoKVwiXG4gICAgW25nQ2xhc3NdPVwieyAnc2t5LWRhdGUtcmFuZ2UtcGlja2VyLWxhc3QtaW5wdXQnOiBzaG93RW5kRGF0ZVBpY2tlcigpIH1cIlxuICA+XG4gICAgPHNreS1pbnB1dC1ib3hcbiAgICAgIFtoYXNFcnJvcnNdPVwiZW5kRGF0ZUhhc0Vycm9ycygpXCJcbiAgICAgIFtsYWJlbFRleHRdPVwiXG4gICAgICAgIHNlbGVjdGVkQ2FsY3VsYXRvci50eXBlXG4gICAgICAgICAgfCBza3lEYXRlUmFuZ2VQaWNrZXJFbmREYXRlUmVzb3VyY2VLZXlcbiAgICAgICAgICB8IHNreUxpYlJlc291cmNlc1xuICAgICAgXCJcbiAgICA+XG4gICAgICA8c2t5LWRhdGVwaWNrZXIgKGNhbGVuZGFyRGF0ZUNoYW5nZSk9XCJvbkRhdGVDaGFuZ2UoKVwiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJlbmREYXRlXCJcbiAgICAgICAgICBuYW1lPVwiZW5kRGF0ZVwiXG4gICAgICAgICAgc2t5RGF0ZXBpY2tlcklucHV0XG4gICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICBsYWJlbFRleHQgfHwgbGFiZWxcbiAgICAgICAgICAgICAgPyAoJ3NreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2RlZmF1bHRfYXJpYV9sYWJlbCdcbiAgICAgICAgICAgICAgICB8IHNreUxpYlJlc291cmNlc1xuICAgICAgICAgICAgICAgICAgOiAoc2VsZWN0ZWRDYWxjdWxhdG9yLnR5cGVcbiAgICAgICAgICAgICAgICAgICAgICB8IHNreURhdGVSYW5nZVBpY2tlckVuZERhdGVSZXNvdXJjZUtleVxuICAgICAgICAgICAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzKVxuICAgICAgICAgICAgICAgICAgOiAobGFiZWxUZXh0ID8gbGFiZWxUZXh0IDogbGFiZWwpKVxuICAgICAgICAgICAgICA6IChzZWxlY3RlZENhbGN1bGF0b3IudHlwZVxuICAgICAgICAgICAgICAgIHwgc2t5RGF0ZVJhbmdlUGlja2VyRW5kRGF0ZVJlc291cmNlS2V5XG4gICAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXMpXG4gICAgICAgICAgXCJcbiAgICAgICAgICBbZGF0ZUZvcm1hdF09XCJkYXRlRm9ybWF0XCJcbiAgICAgICAgICBbcmVxdWlyZWRdPVwic2hvd0VuZERhdGVQaWNrZXIoKVwiXG4gICAgICAgICAgKGNoYW5nZSk9XCJvbkRhdGVDaGFuZ2UoKVwiXG4gICAgICAgIC8+XG4gICAgICA8L3NreS1kYXRlcGlja2VyPlxuICAgIDwvc2t5LWlucHV0LWJveD5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1waWNrZXItaGFybmVzcy5maWx0ZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lL3Rlc3Rpbmcvc3JjL2RhdGUtcmFuZ2UtcGlja2VyL2RhdGUtcmFuZ2UtcGlja2VyLWhhcm5lc3MuZmlsdGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2t5SGFybmVzc0ZpbHRlcnMgfSBmcm9tICdAc2t5dXgvY29yZS90ZXN0aW5nJztcblxuLyoqXG4gKiBBIHNldCBvZiBjcml0ZXJpYSB0aGF0IGNhbiBiZSB1c2VkIHRvIGZpbHRlciBhIGxpc3Qgb2YgYFNreURhdGVSYW5nZVBpY2tlckhhcm5lc3NgIGluc3RhbmNlcy5cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1pbnRlcmZhY2UsIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1vYmplY3QtdHlwZVxuZXhwb3J0IGludGVyZmFjZSBTa3lEYXRlUmFuZ2VQaWNrZXJGaWx0ZXJzIGV4dGVuZHMgU2t5SGFybmVzc0ZpbHRlcnMge31cbiJdfQ==
@@ -0,0 +1,143 @@
1
+ import { SkyComponentHarness } from '@skyux/core/testing';
2
+ import { SkyInputBoxHarness } from '@skyux/forms/testing';
3
+ import { SkyDatepickerHarness } from '../public-api';
4
+ /**
5
+ * Harness for interacting with date range picker components in tests.
6
+ */
7
+ export class SkyDateRangePickerHarness extends SkyComponentHarness {
8
+ /**
9
+ * @internal
10
+ */
11
+ static { this.hostSelector = 'sky-date-range-picker'; }
12
+ #getStartDateInputBoxHarness = this.locatorFor(SkyInputBoxHarness.with({
13
+ ancestor: '.sky-date-range-picker-start-date',
14
+ }));
15
+ #getEndDateInputBoxHarness = this.locatorFor(SkyInputBoxHarness.with({
16
+ ancestor: '.sky-date-range-picker-end-date',
17
+ }));
18
+ #getCalculatorIdInputBoxHarness = this.locatorFor(SkyInputBoxHarness.with({
19
+ ancestor: '.sky-date-range-picker-select-calculator',
20
+ }));
21
+ /**
22
+ * Gets a `HarnessPredicate` that can be used to search for a
23
+ * `SkyDateRangePickerHarness` that meets certain criteria.
24
+ */
25
+ static with(filters) {
26
+ return SkyDateRangePickerHarness.getDataSkyIdPredicate(filters);
27
+ }
28
+ /**
29
+ * Clicks the help inline button.
30
+ */
31
+ async clickHelpInline() {
32
+ await (await this.#getCalculatorIdInputBoxHarness()).clickHelpInline();
33
+ }
34
+ /**
35
+ * Gets the help popover content.
36
+ */
37
+ async getHelpPopoverContent() {
38
+ return (await (await this.#getCalculatorIdInputBoxHarness()).getHelpPopoverContent());
39
+ }
40
+ /**
41
+ * Gets the help inline popover title.
42
+ */
43
+ async getHelpPopoverTitle() {
44
+ return await (await this.#getCalculatorIdInputBoxHarness()).getHelpPopoverTitle();
45
+ }
46
+ /**
47
+ * Gets the hint text.
48
+ */
49
+ async getHintText() {
50
+ return await (await this.#getCalculatorIdInputBoxHarness()).getHintText();
51
+ }
52
+ /**
53
+ * Gets the label text.
54
+ */
55
+ async getLabelText() {
56
+ return await (await this.#getCalculatorIdInputBoxHarness()).getLabelText();
57
+ }
58
+ /**
59
+ * Whether date range picker end date before start date error is thrown.
60
+ */
61
+ async hasEndDateBeforeStartDateError() {
62
+ return await (await this.#getCalculatorIdInputBoxHarness()).hasCustomFormError('endDateBeforeStartDate');
63
+ }
64
+ /**
65
+ * Whether end date input has required error.
66
+ */
67
+ async hasEndDateRequiredError() {
68
+ return await (await this.#getEndDateInputBoxHarness()).hasRequiredError();
69
+ }
70
+ /**
71
+ * Whether a custom error has fired.
72
+ * @params errorName `errorName` property of the custom `sky-form-error`.
73
+ */
74
+ async hasError(errorName) {
75
+ return await (await this.#getCalculatorIdInputBoxHarness()).hasCustomFormError(errorName);
76
+ }
77
+ /**
78
+ * Whether start date input has required error.
79
+ */
80
+ async hasStartDateRequiredError() {
81
+ return await (await this.#getStartDateInputBoxHarness()).hasRequiredError();
82
+ }
83
+ /**
84
+ * Whether the date range picker component is disabled.
85
+ */
86
+ async isDisabled() {
87
+ return await (await this.#getCalculatorIdInputBoxHarness()).getDisabled();
88
+ }
89
+ /**
90
+ * Whether end date datepicker is visible.
91
+ */
92
+ async isEndDateVisible() {
93
+ return !(await (await this.locatorFor('.sky-date-range-picker-end-date')()).getProperty('hidden'));
94
+ }
95
+ /**
96
+ * Whether the date range picker has stacked enabled.
97
+ */
98
+ async isStacked() {
99
+ return await (await this.host()).hasClass('sky-form-field-stacked');
100
+ }
101
+ /**
102
+ * Whether start date datepicker is visible.
103
+ */
104
+ async isStartDateVisible() {
105
+ return !(await (await this.locatorFor('.sky-date-range-picker-start-date')()).getProperty('hidden'));
106
+ }
107
+ /**
108
+ * Selects the specified calculator.
109
+ */
110
+ async selectCalculator(calculatorId) {
111
+ const select = await this.locatorFor('select[FormControlName="calculatorId"')();
112
+ return await select.selectOptions(calculatorId);
113
+ }
114
+ /**
115
+ * Sets the end date.
116
+ * @param newDate date input as a formatted string.
117
+ */
118
+ async setEndDateValue(newDate) {
119
+ if (!(await this.isEndDateVisible())) {
120
+ throw new Error('Unable to set end date. End datepicker is not visible.');
121
+ }
122
+ const input = await (await this.#getEndDatepicker()).getControl();
123
+ await input.setValue(newDate);
124
+ }
125
+ /**
126
+ * Sets the start date.
127
+ * @param newDate date input as a formatted string.
128
+ */
129
+ async setStartDateValue(newDate) {
130
+ if (!(await this.isEndDateVisible())) {
131
+ throw new Error('Unable to set start date. Start datepicker is not visible.');
132
+ }
133
+ const input = await (await this.#getStartDatepicker()).getControl();
134
+ await input.setValue(newDate);
135
+ }
136
+ async #getEndDatepicker() {
137
+ return await (await this.#getEndDateInputBoxHarness()).queryHarness(SkyDatepickerHarness);
138
+ }
139
+ async #getStartDatepicker() {
140
+ return await (await this.#getStartDateInputBoxHarness()).queryHarness(SkyDatepickerHarness);
141
+ }
142
+ }
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1waWNrZXItaGFybmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9kYXRldGltZS90ZXN0aW5nL3NyYy9kYXRlLXJhbmdlLXBpY2tlci9kYXRlLXJhbmdlLXBpY2tlci1oYXJuZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRzFELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTFELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUlyRDs7R0FFRztBQUNILE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxtQkFBbUI7SUFDaEU7O09BRUc7YUFDVyxpQkFBWSxHQUFHLHVCQUF1QixDQUFDO0lBRXJELDRCQUE0QixHQUFHLElBQUksQ0FBQyxVQUFVLENBQzVDLGtCQUFrQixDQUFDLElBQUksQ0FBQztRQUN0QixRQUFRLEVBQUUsbUNBQW1DO0tBQzlDLENBQUMsQ0FDSCxDQUFDO0lBQ0YsMEJBQTBCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FDMUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDO1FBQ3RCLFFBQVEsRUFBRSxpQ0FBaUM7S0FDNUMsQ0FBQyxDQUNILENBQUM7SUFDRiwrQkFBK0IsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUMvQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7UUFDdEIsUUFBUSxFQUFFLDBDQUEwQztLQUNyRCxDQUFDLENBQ0gsQ0FBQztJQUVGOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxJQUFJLENBQ2hCLE9BQWtDO1FBRWxDLE9BQU8seUJBQXlCLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLGVBQWU7UUFDMUIsTUFBTSxDQUFDLE1BQU0sSUFB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Q0FBQyxlQUFlLENBQUMsT0FBZTtRQUMxQyxJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNyQyxNQUFNLElBQUksS0FBSyxDQUFDLHdEQUF3RCxDQUFDLENBQUM7UUFDNUUsQ0FBQztRQUNELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEUsTUFBTSxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7O09BR0c7SUFDSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsT0FBZTtRQUM1QyxJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNyQyxNQUFNLElBQUksS0FBSyxDQUNiLDREQUE0RCxDQUM3RCxDQUFDO1FBQ0osQ0FBQztRQUNELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDcEUsTUFBTSxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxLQUFLLENBQUMsaUJBQWlCO1FBQ3JCLE9BQU8sTUFBTSxDQUNYLE1BQU0sSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQ3hDLENBQUMsWUFBWSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELEtBQUssQ0FBQyxtQkFBbUI7UUFDdkIsT0FBTyxNQUFNLENBQ1gsTUFBTSxJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FDMUMsQ0FBQyxZQUFZLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUN2QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSGFybmVzc1ByZWRpY2F0ZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90ZXN0aW5nJztcbmltcG9ydCB7IFNreUNvbXBvbmVudEhhcm5lc3MgfSBmcm9tICdAc2t5dXgvY29yZS90ZXN0aW5nJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAbngvZW5mb3JjZS1tb2R1bGUtYm91bmRhcmllc1xuaW1wb3J0IHsgU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcklkIH0gZnJvbSAnQHNreXV4L2RhdGV0aW1lJztcbmltcG9ydCB7IFNreUlucHV0Qm94SGFybmVzcyB9IGZyb20gJ0Bza3l1eC9mb3Jtcy90ZXN0aW5nJztcblxuaW1wb3J0IHsgU2t5RGF0ZXBpY2tlckhhcm5lc3MgfSBmcm9tICcuLi9wdWJsaWMtYXBpJztcblxuaW1wb3J0IHsgU2t5RGF0ZVJhbmdlUGlja2VyRmlsdGVycyB9IGZyb20gJy4vZGF0ZS1yYW5nZS1waWNrZXItaGFybmVzcy5maWx0ZXJzJztcblxuLyoqXG4gKiBIYXJuZXNzIGZvciBpbnRlcmFjdGluZyB3aXRoIGRhdGUgcmFuZ2UgcGlja2VyIGNvbXBvbmVudHMgaW4gdGVzdHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBTa3lEYXRlUmFuZ2VQaWNrZXJIYXJuZXNzIGV4dGVuZHMgU2t5Q29tcG9uZW50SGFybmVzcyB7XG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaG9zdFNlbGVjdG9yID0gJ3NreS1kYXRlLXJhbmdlLXBpY2tlcic7XG5cbiAgI2dldFN0YXJ0RGF0ZUlucHV0Qm94SGFybmVzcyA9IHRoaXMubG9jYXRvckZvcihcbiAgICBTa3lJbnB1dEJveEhhcm5lc3Mud2l0aCh7XG4gICAgICBhbmNlc3RvcjogJy5za3ktZGF0ZS1yYW5nZS1waWNrZXItc3RhcnQtZGF0ZScsXG4gICAgfSksXG4gICk7XG4gICNnZXRFbmREYXRlSW5wdXRCb3hIYXJuZXNzID0gdGhpcy5sb2NhdG9yRm9yKFxuICAgIFNreUlucHV0Qm94SGFybmVzcy53aXRoKHtcbiAgICAgIGFuY2VzdG9yOiAnLnNreS1kYXRlLXJhbmdlLXBpY2tlci1lbmQtZGF0ZScsXG4gICAgfSksXG4gICk7XG4gICNnZXRDYWxjdWxhdG9ySWRJbnB1dEJveEhhcm5lc3MgPSB0aGlzLmxvY2F0b3JGb3IoXG4gICAgU2t5SW5wdXRCb3hIYXJuZXNzLndpdGgoe1xuICAgICAgYW5jZXN0b3I6ICcuc2t5LWRhdGUtcmFuZ2UtcGlja2VyLXNlbGVjdC1jYWxjdWxhdG9yJyxcbiAgICB9KSxcbiAgKTtcblxuICAvKipcbiAgICogR2V0cyBhIGBIYXJuZXNzUHJlZGljYXRlYCB0aGF0IGNhbiBiZSB1c2VkIHRvIHNlYXJjaCBmb3IgYVxuICAgKiBgU2t5RGF0ZVJhbmdlUGlja2VySGFybmVzc2AgdGhhdCBtZWV0cyBjZXJ0YWluIGNyaXRlcmlhLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB3aXRoKFxuICAgIGZpbHRlcnM6IFNreURhdGVSYW5nZVBpY2tlckZpbHRlcnMsXG4gICk6IEhhcm5lc3NQcmVkaWNhdGU8U2t5RGF0ZVJhbmdlUGlja2VySGFybmVzcz4ge1xuICAgIHJldHVybiBTa3lEYXRlUmFuZ2VQaWNrZXJIYXJuZXNzLmdldERhdGFTa3lJZFByZWRpY2F0ZShmaWx0ZXJzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGlja3MgdGhlIGhlbHAgaW5saW5lIGJ1dHRvbi5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBjbGlja0hlbHBJbmxpbmUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgKGF3YWl0IHRoaXMuI2dldENhbGN1bGF0b3JJZElucHV0Qm94SGFybmVzcygpKS5jbGlja0hlbHBJbmxpbmUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBoZWxwIHBvcG92ZXIgY29udGVudC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRIZWxwUG9wb3ZlckNvbnRlbnQoKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gKGF3YWl0IChcbiAgICAgIGF3YWl0IHRoaXMuI2dldENhbGN1bGF0b3JJZElucHV0Qm94SGFybmVzcygpXG4gICAgKS5nZXRIZWxwUG9wb3ZlckNvbnRlbnQoKSkgYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGhlbHAgaW5saW5lIHBvcG92ZXIgdGl0bGUuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0SGVscFBvcG92ZXJUaXRsZSgpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiBhd2FpdCAoXG4gICAgICBhd2FpdCB0aGlzLiNnZXRDYWxjdWxhdG9ySWRJbnB1dEJveEhhcm5lc3MoKVxuICAgICkuZ2V0SGVscFBvcG92ZXJUaXRsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGhpbnQgdGV4dC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRIaW50VGV4dCgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0Q2FsY3VsYXRvcklkSW5wdXRCb3hIYXJuZXNzKCkpLmdldEhpbnRUZXh0KCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgbGFiZWwgdGV4dC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRMYWJlbFRleHQoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2dldENhbGN1bGF0b3JJZElucHV0Qm94SGFybmVzcygpKS5nZXRMYWJlbFRleHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGRhdGUgcmFuZ2UgcGlja2VyIGVuZCBkYXRlIGJlZm9yZSBzdGFydCBkYXRlIGVycm9yIGlzIHRocm93bi5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBoYXNFbmREYXRlQmVmb3JlU3RhcnREYXRlRXJyb3IoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IChcbiAgICAgIGF3YWl0IHRoaXMuI2dldENhbGN1bGF0b3JJZElucHV0Qm94SGFybmVzcygpXG4gICAgKS5oYXNDdXN0b21Gb3JtRXJyb3IoJ2VuZERhdGVCZWZvcmVTdGFydERhdGUnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGVuZCBkYXRlIGlucHV0IGhhcyByZXF1aXJlZCBlcnJvci5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBoYXNFbmREYXRlUmVxdWlyZWRFcnJvcigpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2dldEVuZERhdGVJbnB1dEJveEhhcm5lc3MoKSkuaGFzUmVxdWlyZWRFcnJvcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgYSBjdXN0b20gZXJyb3IgaGFzIGZpcmVkLlxuICAgKiBAcGFyYW1zIGVycm9yTmFtZSBgZXJyb3JOYW1lYCBwcm9wZXJ0eSBvZiB0aGUgY3VzdG9tIGBza3ktZm9ybS1lcnJvcmAuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaGFzRXJyb3IoZXJyb3JOYW1lOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgKFxuICAgICAgYXdhaXQgdGhpcy4jZ2V0Q2FsY3VsYXRvcklkSW5wdXRCb3hIYXJuZXNzKClcbiAgICApLmhhc0N1c3RvbUZvcm1FcnJvcihlcnJvck5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgc3RhcnQgZGF0ZSBpbnB1dCBoYXMgcmVxdWlyZWQgZXJyb3IuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaGFzU3RhcnREYXRlUmVxdWlyZWRFcnJvcigpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2dldFN0YXJ0RGF0ZUlucHV0Qm94SGFybmVzcygpKS5oYXNSZXF1aXJlZEVycm9yKCk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgZGF0ZSByYW5nZSBwaWNrZXIgY29tcG9uZW50IGlzIGRpc2FibGVkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGlzRGlzYWJsZWQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRDYWxjdWxhdG9ySWRJbnB1dEJveEhhcm5lc3MoKSkuZ2V0RGlzYWJsZWQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGVuZCBkYXRlIGRhdGVwaWNrZXIgaXMgdmlzaWJsZS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBpc0VuZERhdGVWaXNpYmxlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiAhKGF3YWl0IChcbiAgICAgIGF3YWl0IHRoaXMubG9jYXRvckZvcignLnNreS1kYXRlLXJhbmdlLXBpY2tlci1lbmQtZGF0ZScpKClcbiAgICApLmdldFByb3BlcnR5KCdoaWRkZW4nKSk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgZGF0ZSByYW5nZSBwaWNrZXIgaGFzIHN0YWNrZWQgZW5hYmxlZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBpc1N0YWNrZWQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IChhd2FpdCB0aGlzLmhvc3QoKSkuaGFzQ2xhc3MoJ3NreS1mb3JtLWZpZWxkLXN0YWNrZWQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHN0YXJ0IGRhdGUgZGF0ZXBpY2tlciBpcyB2aXNpYmxlLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGlzU3RhcnREYXRlVmlzaWJsZSgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gIShhd2FpdCAoXG4gICAgICBhd2FpdCB0aGlzLmxvY2F0b3JGb3IoJy5za3ktZGF0ZS1yYW5nZS1waWNrZXItc3RhcnQtZGF0ZScpKClcbiAgICApLmdldFByb3BlcnR5KCdoaWRkZW4nKSk7XG4gIH1cblxuICAvKipcbiAgICogU2VsZWN0cyB0aGUgc3BlY2lmaWVkIGNhbGN1bGF0b3IuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgc2VsZWN0Q2FsY3VsYXRvcihcbiAgICBjYWxjdWxhdG9ySWQ6IFNreURhdGVSYW5nZUNhbGN1bGF0b3JJZCxcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgc2VsZWN0ID0gYXdhaXQgdGhpcy5sb2NhdG9yRm9yKFxuICAgICAgJ3NlbGVjdFtGb3JtQ29udHJvbE5hbWU9XCJjYWxjdWxhdG9ySWRcIicsXG4gICAgKSgpO1xuICAgIHJldHVybiBhd2FpdCBzZWxlY3Quc2VsZWN0T3B0aW9ucyhjYWxjdWxhdG9ySWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGVuZCBkYXRlLlxuICAgKiBAcGFyYW0gbmV3RGF0ZSBkYXRlIGlucHV0IGFzIGEgZm9ybWF0dGVkIHN0cmluZy5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBzZXRFbmREYXRlVmFsdWUobmV3RGF0ZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCEoYXdhaXQgdGhpcy5pc0VuZERhdGVWaXNpYmxlKCkpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byBzZXQgZW5kIGRhdGUuIEVuZCBkYXRlcGlja2VyIGlzIG5vdCB2aXNpYmxlLicpO1xuICAgIH1cbiAgICBjb25zdCBpbnB1dCA9IGF3YWl0IChhd2FpdCB0aGlzLiNnZXRFbmREYXRlcGlja2VyKCkpLmdldENvbnRyb2woKTtcbiAgICBhd2FpdCBpbnB1dC5zZXRWYWx1ZShuZXdEYXRlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBzdGFydCBkYXRlLlxuICAgKiBAcGFyYW0gbmV3RGF0ZSBkYXRlIGlucHV0IGFzIGEgZm9ybWF0dGVkIHN0cmluZy5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBzZXRTdGFydERhdGVWYWx1ZShuZXdEYXRlOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIShhd2FpdCB0aGlzLmlzRW5kRGF0ZVZpc2libGUoKSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ1VuYWJsZSB0byBzZXQgc3RhcnQgZGF0ZS4gU3RhcnQgZGF0ZXBpY2tlciBpcyBub3QgdmlzaWJsZS4nLFxuICAgICAgKTtcbiAgICB9XG4gICAgY29uc3QgaW5wdXQgPSBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0U3RhcnREYXRlcGlja2VyKCkpLmdldENvbnRyb2woKTtcbiAgICBhd2FpdCBpbnB1dC5zZXRWYWx1ZShuZXdEYXRlKTtcbiAgfVxuXG4gIGFzeW5jICNnZXRFbmREYXRlcGlja2VyKCk6IFByb21pc2U8U2t5RGF0ZXBpY2tlckhhcm5lc3M+IHtcbiAgICByZXR1cm4gYXdhaXQgKFxuICAgICAgYXdhaXQgdGhpcy4jZ2V0RW5kRGF0ZUlucHV0Qm94SGFybmVzcygpXG4gICAgKS5xdWVyeUhhcm5lc3MoU2t5RGF0ZXBpY2tlckhhcm5lc3MpO1xuICB9XG5cbiAgYXN5bmMgI2dldFN0YXJ0RGF0ZXBpY2tlcigpOiBQcm9taXNlPFNreURhdGVwaWNrZXJIYXJuZXNzPiB7XG4gICAgcmV0dXJuIGF3YWl0IChcbiAgICAgIGF3YWl0IHRoaXMuI2dldFN0YXJ0RGF0ZUlucHV0Qm94SGFybmVzcygpXG4gICAgKS5xdWVyeUhhcm5lc3MoU2t5RGF0ZXBpY2tlckhhcm5lc3MpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,19 @@
1
+ import { SkyInputHarness } from '@skyux/core/testing';
2
+ /**
3
+ * Harness to interact with the datepicker input harness.
4
+ */
5
+ export class SkyDatepickerInputHarness extends SkyInputHarness {
6
+ /**
7
+ * @internal
8
+ */
9
+ static { this.hostSelector = '[skyDatepickerInput]'; }
10
+ /**
11
+ * Sets the value of the input.
12
+ */
13
+ async setValue(value) {
14
+ await super.setValue(value);
15
+ await (await this.host()).blur();
16
+ await (await this.host()).dispatchEvent('change');
17
+ }
18
+ }
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1oYXJuZXNzLWlucHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lL3Rlc3Rpbmcvc3JjL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci1oYXJuZXNzLWlucHV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RDs7R0FFRztBQUNILE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxlQUFlO0lBQzVEOztPQUVHO2FBQ1csaUJBQVksR0FBRyxzQkFBc0IsQ0FBQztJQUVwRDs7T0FFRztJQUNhLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBYTtRQUMxQyxNQUFNLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFNUIsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDakMsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3BELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTa3lJbnB1dEhhcm5lc3MgfSBmcm9tICdAc2t5dXgvY29yZS90ZXN0aW5nJztcblxuLyoqXG4gKiBIYXJuZXNzIHRvIGludGVyYWN0IHdpdGggdGhlIGRhdGVwaWNrZXIgaW5wdXQgaGFybmVzcy5cbiAqL1xuZXhwb3J0IGNsYXNzIFNreURhdGVwaWNrZXJJbnB1dEhhcm5lc3MgZXh0ZW5kcyBTa3lJbnB1dEhhcm5lc3Mge1xuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGhvc3RTZWxlY3RvciA9ICdbc2t5RGF0ZXBpY2tlcklucHV0XSc7XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSBpbnB1dC5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBhc3luYyBzZXRWYWx1ZSh2YWx1ZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgc3VwZXIuc2V0VmFsdWUodmFsdWUpO1xuXG4gICAgYXdhaXQgKGF3YWl0IHRoaXMuaG9zdCgpKS5ibHVyKCk7XG4gICAgYXdhaXQgKGF3YWl0IHRoaXMuaG9zdCgpKS5kaXNwYXRjaEV2ZW50KCdjaGFuZ2UnKTtcbiAgfVxufVxuIl19
@@ -1,5 +1,9 @@
1
1
  import { SkyComponentHarness } from '@skyux/core/testing';
2
2
  import { SkyDatepickerCalendarHarness } from './datepicker-calendar-harness';
3
+ import { SkyDatepickerInputHarness } from './datepicker-harness-input';
4
+ /**
5
+ * Harness for interacting with datepicker components in tests.
6
+ */
3
7
  export class SkyDatepickerHarness extends SkyComponentHarness {
4
8
  /**
5
9
  * @internal
@@ -23,7 +27,7 @@ export class SkyDatepickerHarness extends SkyComponentHarness {
23
27
  * Clicks the calendar button.
24
28
  */
25
29
  async clickCalendarButton() {
26
- return (await this.#getCalendarButton()).click();
30
+ return await (await this.#getCalendarButton()).click();
27
31
  }
28
32
  /**
29
33
  * Gets the `SkyDatepickerCalendarHarness` for the calendar picker controlled by
@@ -36,6 +40,12 @@ export class SkyDatepickerHarness extends SkyComponentHarness {
36
40
  }
37
41
  return await this.#documentRootLocator.locatorFor(SkyDatepickerCalendarHarness.with({ selector: `#${calendarId}` }))();
38
42
  }
43
+ /**
44
+ * Gets the datepicker input harness.
45
+ */
46
+ async getControl() {
47
+ return await this.locatorFor(SkyDatepickerInputHarness)();
48
+ }
39
49
  /**
40
50
  * Whether the datepicker calendar picker is open.
41
51
  */
@@ -43,7 +53,7 @@ export class SkyDatepickerHarness extends SkyComponentHarness {
43
53
  return ((await (await this.#getCalendarButton()).getAttribute('aria-expanded')) === 'true');
44
54
  }
45
55
  async #getAriaControls() {
46
- return (await this.#getCalendarButton()).getAttribute('aria-controls');
56
+ return await (await this.#getCalendarButton()).getAttribute('aria-controls');
47
57
  }
48
58
  }
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1oYXJuZXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lL3Rlc3Rpbmcvc3JjL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci1oYXJuZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTFELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRzdFLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxtQkFBbUI7SUFDM0Q7O09BRUc7YUFDVyxpQkFBWSxHQUFHLGtDQUFrQyxDQUFDO0lBRWhFLG9CQUFvQixHQUFHLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO0lBRXpELGtCQUFrQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsaUNBQWlDLENBQUMsQ0FBQztJQUV4RTs7Ozs7Ozs7T0FRRztJQUNJLE1BQU0sQ0FBQyxJQUFJLENBQ2hCLE9BQTZCO1FBRTdCLE9BQU8sb0JBQW9CLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLG1CQUFtQjtRQUM5QixPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ25ELENBQUM7SUFFRDs7O09BR0c7SUFDSSxLQUFLLENBQUMscUJBQXFCO1FBQ2hDLE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFFakQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQ2IseURBQXlELENBQzFELENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTyxNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQy9DLDRCQUE0QixDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FDbEUsRUFBRSxDQUFDO0lBQ04sQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLGdCQUFnQjtRQUMzQixPQUFPLENBQ0wsQ0FBQyxNQUFNLENBQ0wsTUFBTSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FDaEMsQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLENBQUMsS0FBSyxNQUFNLENBQzVDLENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLGdCQUFnQjtRQUNwQixPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUN6RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSGFybmVzc1ByZWRpY2F0ZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90ZXN0aW5nJztcbmltcG9ydCB7IFNreUNvbXBvbmVudEhhcm5lc3MgfSBmcm9tICdAc2t5dXgvY29yZS90ZXN0aW5nJztcblxuaW1wb3J0IHsgU2t5RGF0ZXBpY2tlckNhbGVuZGFySGFybmVzcyB9IGZyb20gJy4vZGF0ZXBpY2tlci1jYWxlbmRhci1oYXJuZXNzJztcbmltcG9ydCB7IFNreURhdGVwaWNrZXJGaWx0ZXJzIH0gZnJvbSAnLi9kYXRlcGlja2VyLWhhcm5lc3MuZmlsdGVycyc7XG5cbmV4cG9ydCBjbGFzcyBTa3lEYXRlcGlja2VySGFybmVzcyBleHRlbmRzIFNreUNvbXBvbmVudEhhcm5lc3Mge1xuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGhvc3RTZWxlY3RvciA9ICdza3ktZGF0ZXBpY2tlciwgLnNreS1pbnB1dC1ncm91cCc7XG5cbiAgI2RvY3VtZW50Um9vdExvY2F0b3IgPSB0aGlzLmRvY3VtZW50Um9vdExvY2F0b3JGYWN0b3J5KCk7XG5cbiAgI2dldENhbGVuZGFyQnV0dG9uID0gdGhpcy5sb2NhdG9yRm9yKCcuc2t5LWlucHV0LWdyb3VwLWRhdGVwaWNrZXItYnRuJyk7XG5cbiAgLyoqXG4gICAqIEdldHMgYSBgSGFybmVzc1ByZWRpY2F0ZWAgdGhhdCBjYW4gYmUgdXNlZCB0byBzZWFyY2ggZm9yIGFcbiAgICogYFNreURhdGVwaWNrZXJIYXJuZXNzYCB0aGF0IG1lZXRzIGNlcnRhaW4gY3JpdGVyaWEuXG4gICAqXG4gICAqIFRoZXNlIGZpbHRlcnMgb25seSB3b3JrIGZvciBzdGFuZGFsb25lIGRhdGVwaWNrZXJzLiBGb3IgZGF0ZXBpY2tlcnNcbiAgICogd3JhcHBlZCBpbnNpZGUgYHNreS1pbnB1dC1ib3hgLCBwbGFjZSBmaWx0ZXJzIG9uIHRoZSBpbnB1dCBib3ggaW5zdGVhZCBhbmRcbiAgICogcXVlcnkgdGhlIGRhdGVwaWNrZXIgdXNpbmcgYSBgU2t5SW5wdXRCb3hIYXJuZXNzYC5cbiAgICogRm9yIHRoZSBpbnB1dCBib3ggaW1wbGVtZW50YXRpb24sIHNlZSB0aGUgY29kZSBleGFtcGxlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB3aXRoKFxuICAgIGZpbHRlcnM6IFNreURhdGVwaWNrZXJGaWx0ZXJzLFxuICApOiBIYXJuZXNzUHJlZGljYXRlPFNreURhdGVwaWNrZXJIYXJuZXNzPiB7XG4gICAgcmV0dXJuIFNreURhdGVwaWNrZXJIYXJuZXNzLmdldERhdGFTa3lJZFByZWRpY2F0ZShmaWx0ZXJzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGlja3MgdGhlIGNhbGVuZGFyIGJ1dHRvbi5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBjbGlja0NhbGVuZGFyQnV0dG9uKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy4jZ2V0Q2FsZW5kYXJCdXR0b24oKSkuY2xpY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBgU2t5RGF0ZXBpY2tlckNhbGVuZGFySGFybmVzc2AgZm9yIHRoZSBjYWxlbmRhciBwaWNrZXIgY29udHJvbGxlZCBieVxuICAgKiB0aGUgZGF0ZXBpY2tlci4gVGhyb3dzIGFuIGVycm9yIGlmIHRoZSBjYWxlbmRhciBwaWNrZXIgaXMgbm90IG9wZW4uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0RGF0ZXBpY2tlckNhbGVuZGFyKCk6IFByb21pc2U8U2t5RGF0ZXBpY2tlckNhbGVuZGFySGFybmVzcz4ge1xuICAgIGNvbnN0IGNhbGVuZGFySWQgPSBhd2FpdCB0aGlzLiNnZXRBcmlhQ29udHJvbHMoKTtcblxuICAgIGlmICghY2FsZW5kYXJJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnVW5hYmxlIHRvIGdldCBjYWxlbmRhciBwaWNrZXIgYmVjYXVzZSBwaWNrZXIgaXMgY2xvc2VkLicsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBhd2FpdCB0aGlzLiNkb2N1bWVudFJvb3RMb2NhdG9yLmxvY2F0b3JGb3IoXG4gICAgICBTa3lEYXRlcGlja2VyQ2FsZW5kYXJIYXJuZXNzLndpdGgoeyBzZWxlY3RvcjogYCMke2NhbGVuZGFySWR9YCB9KSxcbiAgICApKCk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgZGF0ZXBpY2tlciBjYWxlbmRhciBwaWNrZXIgaXMgb3Blbi5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBpc0RhdGVwaWNrZXJPcGVuKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiAoXG4gICAgICAoYXdhaXQgKFxuICAgICAgICBhd2FpdCB0aGlzLiNnZXRDYWxlbmRhckJ1dHRvbigpXG4gICAgICApLmdldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcpKSA9PT0gJ3RydWUnXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jICNnZXRBcmlhQ29udHJvbHMoKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLiNnZXRDYWxlbmRhckJ1dHRvbigpKS5nZXRBdHRyaWJ1dGUoJ2FyaWEtY29udHJvbHMnKTtcbiAgfVxufVxuIl19
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1oYXJuZXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lL3Rlc3Rpbmcvc3JjL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci1oYXJuZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTFELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzdFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBR3ZFOztHQUVHO0FBQ0gsTUFBTSxPQUFPLG9CQUFxQixTQUFRLG1CQUFtQjtJQUMzRDs7T0FFRzthQUNXLGlCQUFZLEdBQUcsa0NBQWtDLENBQUM7SUFFaEUsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7SUFFekQsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0lBRXhFOzs7Ozs7OztPQVFHO0lBQ0ksTUFBTSxDQUFDLElBQUksQ0FDaEIsT0FBNkI7UUFFN0IsT0FBTyxvQkFBb0IsQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsbUJBQW1CO1FBQzlCLE9BQU8sTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN6RCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksS0FBSyxDQUFDLHFCQUFxQjtRQUNoQyxNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBRWpELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNoQixNQUFNLElBQUksS0FBSyxDQUNiLHlEQUF5RCxDQUMxRCxDQUFDO1FBQ0osQ0FBQztRQUVELE9BQU8sTUFBTSxJQUFJLENBQUMsb0JBQW9CLENBQUMsVUFBVSxDQUMvQyw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQ2xFLEVBQUUsQ0FBQztJQUNOLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxVQUFVO1FBQ3JCLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLHlCQUF5QixDQUFDLEVBQUUsQ0FBQztJQUM1RCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsZ0JBQWdCO1FBQzNCLE9BQU8sQ0FDTCxDQUFDLE1BQU0sQ0FDTCxNQUFNLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUNoQyxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsQ0FBQyxLQUFLLE1BQU0sQ0FDNUMsQ0FBQztJQUNKLENBQUM7SUFFRCxLQUFLLENBQUMsZ0JBQWdCO1FBQ3BCLE9BQU8sTUFBTSxDQUNYLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQ2hDLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ2xDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIYXJuZXNzUHJlZGljYXRlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Rlc3RpbmcnO1xuaW1wb3J0IHsgU2t5Q29tcG9uZW50SGFybmVzcyB9IGZyb20gJ0Bza3l1eC9jb3JlL3Rlc3RpbmcnO1xuXG5pbXBvcnQgeyBTa3lEYXRlcGlja2VyQ2FsZW5kYXJIYXJuZXNzIH0gZnJvbSAnLi9kYXRlcGlja2VyLWNhbGVuZGFyLWhhcm5lc3MnO1xuaW1wb3J0IHsgU2t5RGF0ZXBpY2tlcklucHV0SGFybmVzcyB9IGZyb20gJy4vZGF0ZXBpY2tlci1oYXJuZXNzLWlucHV0JztcbmltcG9ydCB7IFNreURhdGVwaWNrZXJGaWx0ZXJzIH0gZnJvbSAnLi9kYXRlcGlja2VyLWhhcm5lc3MuZmlsdGVycyc7XG5cbi8qKlxuICogSGFybmVzcyBmb3IgaW50ZXJhY3Rpbmcgd2l0aCBkYXRlcGlja2VyIGNvbXBvbmVudHMgaW4gdGVzdHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBTa3lEYXRlcGlja2VySGFybmVzcyBleHRlbmRzIFNreUNvbXBvbmVudEhhcm5lc3Mge1xuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGhvc3RTZWxlY3RvciA9ICdza3ktZGF0ZXBpY2tlciwgLnNreS1pbnB1dC1ncm91cCc7XG5cbiAgI2RvY3VtZW50Um9vdExvY2F0b3IgPSB0aGlzLmRvY3VtZW50Um9vdExvY2F0b3JGYWN0b3J5KCk7XG5cbiAgI2dldENhbGVuZGFyQnV0dG9uID0gdGhpcy5sb2NhdG9yRm9yKCcuc2t5LWlucHV0LWdyb3VwLWRhdGVwaWNrZXItYnRuJyk7XG5cbiAgLyoqXG4gICAqIEdldHMgYSBgSGFybmVzc1ByZWRpY2F0ZWAgdGhhdCBjYW4gYmUgdXNlZCB0byBzZWFyY2ggZm9yIGFcbiAgICogYFNreURhdGVwaWNrZXJIYXJuZXNzYCB0aGF0IG1lZXRzIGNlcnRhaW4gY3JpdGVyaWEuXG4gICAqXG4gICAqIFRoZXNlIGZpbHRlcnMgb25seSB3b3JrIGZvciBzdGFuZGFsb25lIGRhdGVwaWNrZXJzLiBGb3IgZGF0ZXBpY2tlcnNcbiAgICogd3JhcHBlZCBpbnNpZGUgYHNreS1pbnB1dC1ib3hgLCBwbGFjZSBmaWx0ZXJzIG9uIHRoZSBpbnB1dCBib3ggaW5zdGVhZCBhbmRcbiAgICogcXVlcnkgdGhlIGRhdGVwaWNrZXIgdXNpbmcgYSBgU2t5SW5wdXRCb3hIYXJuZXNzYC5cbiAgICogRm9yIHRoZSBpbnB1dCBib3ggaW1wbGVtZW50YXRpb24sIHNlZSB0aGUgY29kZSBleGFtcGxlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB3aXRoKFxuICAgIGZpbHRlcnM6IFNreURhdGVwaWNrZXJGaWx0ZXJzLFxuICApOiBIYXJuZXNzUHJlZGljYXRlPFNreURhdGVwaWNrZXJIYXJuZXNzPiB7XG4gICAgcmV0dXJuIFNreURhdGVwaWNrZXJIYXJuZXNzLmdldERhdGFTa3lJZFByZWRpY2F0ZShmaWx0ZXJzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGlja3MgdGhlIGNhbGVuZGFyIGJ1dHRvbi5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBjbGlja0NhbGVuZGFyQnV0dG9uKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0Q2FsZW5kYXJCdXR0b24oKSkuY2xpY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBgU2t5RGF0ZXBpY2tlckNhbGVuZGFySGFybmVzc2AgZm9yIHRoZSBjYWxlbmRhciBwaWNrZXIgY29udHJvbGxlZCBieVxuICAgKiB0aGUgZGF0ZXBpY2tlci4gVGhyb3dzIGFuIGVycm9yIGlmIHRoZSBjYWxlbmRhciBwaWNrZXIgaXMgbm90IG9wZW4uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0RGF0ZXBpY2tlckNhbGVuZGFyKCk6IFByb21pc2U8U2t5RGF0ZXBpY2tlckNhbGVuZGFySGFybmVzcz4ge1xuICAgIGNvbnN0IGNhbGVuZGFySWQgPSBhd2FpdCB0aGlzLiNnZXRBcmlhQ29udHJvbHMoKTtcblxuICAgIGlmICghY2FsZW5kYXJJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnVW5hYmxlIHRvIGdldCBjYWxlbmRhciBwaWNrZXIgYmVjYXVzZSBwaWNrZXIgaXMgY2xvc2VkLicsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBhd2FpdCB0aGlzLiNkb2N1bWVudFJvb3RMb2NhdG9yLmxvY2F0b3JGb3IoXG4gICAgICBTa3lEYXRlcGlja2VyQ2FsZW5kYXJIYXJuZXNzLndpdGgoeyBzZWxlY3RvcjogYCMke2NhbGVuZGFySWR9YCB9KSxcbiAgICApKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgZGF0ZXBpY2tlciBpbnB1dCBoYXJuZXNzLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldENvbnRyb2woKTogUHJvbWlzZTxTa3lEYXRlcGlja2VySW5wdXRIYXJuZXNzPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMubG9jYXRvckZvcihTa3lEYXRlcGlja2VySW5wdXRIYXJuZXNzKSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGRhdGVwaWNrZXIgY2FsZW5kYXIgcGlja2VyIGlzIG9wZW4uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaXNEYXRlcGlja2VyT3BlbigpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gKFxuICAgICAgKGF3YWl0IChcbiAgICAgICAgYXdhaXQgdGhpcy4jZ2V0Q2FsZW5kYXJCdXR0b24oKVxuICAgICAgKS5nZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnKSkgPT09ICd0cnVlJ1xuICAgICk7XG4gIH1cblxuICBhc3luYyAjZ2V0QXJpYUNvbnRyb2xzKCk6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4ge1xuICAgIHJldHVybiBhd2FpdCAoXG4gICAgICBhd2FpdCB0aGlzLiNnZXRDYWxlbmRhckJ1dHRvbigpXG4gICAgKS5nZXRBdHRyaWJ1dGUoJ2FyaWEtY29udHJvbHMnKTtcbiAgfVxufVxuIl19