@doku-dev/doku-fragment
Version:
A new Angular UI library that moving away from Bootstrap and built from scratch.
103 lines • 18.8 kB
JavaScript
import { CommonModule } from '@angular/common';
import { ChangeDetectionStrategy, Component, HostBinding, Inject, LOCALE_ID, Optional, Self, ViewEncapsulation, } from '@angular/core';
import { Subject, delay, distinctUntilChanged, filter, map, skip, startWith, takeUntil, } from 'rxjs';
import { DOKU_FORM_FIELD_ACCESSOR, } from '../../form-field';
import { DokuDatePickerBase } from '../base/date-picker-base.component';
import { DokuDatePickerBasicProps } from '../common/date-picker-basic-props.component';
import * as i0 from "@angular/core";
import * as i1 from "@angular/forms";
export class DokuDatePickerInline extends DokuDatePickerBasicProps {
constructor(cdr, localeId, ngControl) {
super();
this.cdr = cdr;
this.localeId = localeId;
this.ngControl = ngControl;
this.class = 'd-date-picker-inline';
this.destroy$ = new Subject();
this.fieldOptions = { withoutInputStyle: true };
if (this.ngControl) {
this.ngControl.valueAccessor = this;
}
}
ngOnInit() {
this.notifyChange$
.pipe(filter((change) => change === 'value' || change === 'minDate' || change === 'maxDate'), startWith(this.value?.toISOString() || null), map(() => this.value?.toISOString() || null), distinctUntilChanged(), skip(1), takeUntil(this.destroy$))
.subscribe((value) => {
this.valueChange.emit(value);
});
this.valueChange.pipe(distinctUntilChanged(), takeUntil(this.destroy$)).subscribe((value) => {
this.onChange?.(value);
this.onTouched?.();
this.cdr.detectChanges();
});
}
ngAfterViewInit() {
this.ngControl?.statusChanges
?.pipe(startWith(this.ngControl.status), distinctUntilChanged(), delay(0), takeUntil(this.destroy$))
.subscribe(() => {
this.disabled = !!this.ngControl?.disabled;
});
this.ngControl?.statusChanges
?.pipe(distinctUntilChanged(), delay(0), takeUntil(this.destroy$))
.subscribe((status) => {
if (status === 'VALID') {
this.onValidate?.('valid');
}
else if (status === 'INVALID') {
this.onValidate?.('invalid');
}
else {
this.onValidate?.();
}
});
this.notifyChange$
.pipe(filter((change) => change === 'disabled' || change === 'readonly'), startWith({ disabled: this.disabled, readonly: this.readonly }), map(() => ({ disabled: this.disabled, readonly: this.readonly })), distinctUntilChanged((prev, current) => JSON.stringify(prev) === JSON.stringify(current)), delay(0), takeUntil(this.destroy$))
.subscribe(({ disabled, readonly }) => {
this.onDisable?.(disabled);
this.onReadonly?.(readonly);
this.cdr.detectChanges();
});
}
ngOnDestroy() {
this.destroy$.next(true);
this.destroy$.complete();
}
registerOnDisable(fn) {
this.onDisable = fn;
}
registerOnReadonly(fn) {
this.onReadonly = fn;
}
registerOnValidate(fn) {
this.onValidate = fn;
}
writeValue(value) {
this.value = value;
}
registerOnChange(fn) {
this.onChange = fn;
}
registerOnTouched(fn) {
this.onTouched = fn;
}
setDisabledState(isDisabled) {
this.onDisable?.(isDisabled);
}
}
DokuDatePickerInline.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DokuDatePickerInline, deps: [{ token: i0.ChangeDetectorRef }, { token: LOCALE_ID }, { token: i1.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component });
DokuDatePickerInline.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: DokuDatePickerInline, isStandalone: true, selector: "doku-date-picker-inline", host: { properties: { "class": "this.class" } }, providers: [{ provide: DOKU_FORM_FIELD_ACCESSOR, useExisting: DokuDatePickerInline }], exportAs: ["dokuDatePickerInline"], usesInheritance: true, ngImport: i0, template: "<doku-date-picker-base\n [value]=\"value\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n (valueChange)=\"value = $event.start\"\n>\n <ng-content doku-date-picker-footer select=\"[doku-date-picker-footer]\"></ng-content>\n</doku-date-picker-base>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: DokuDatePickerBase, selector: "doku-date-picker-base", exportAs: ["dokuDatePickerBase"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DokuDatePickerInline, decorators: [{
type: Component,
args: [{ selector: 'doku-date-picker-inline', exportAs: 'dokuDatePickerInline', standalone: true, imports: [CommonModule, DokuDatePickerBase], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [{ provide: DOKU_FORM_FIELD_ACCESSOR, useExisting: DokuDatePickerInline }], template: "<doku-date-picker-base\n [value]=\"value\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n (valueChange)=\"value = $event.start\"\n>\n <ng-content doku-date-picker-footer select=\"[doku-date-picker-footer]\"></ng-content>\n</doku-date-picker-base>\n" }]
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
type: Inject,
args: [LOCALE_ID]
}] }, { type: i1.NgControl, decorators: [{
type: Optional
}, {
type: Self
}] }]; }, propDecorators: { class: [{
type: HostBinding,
args: ['class']
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXItaW5saW5lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rva3UtZnJhZ21lbnQvc3JjL2xpYi9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci1pbmxpbmUvZGF0ZS1waWNrZXItaW5saW5lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rva3UtZnJhZ21lbnQvc3JjL2xpYi9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci1pbmxpbmUvZGF0ZS1waWNrZXItaW5saW5lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQVcsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RCxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxXQUFXLEVBQ1gsTUFBTSxFQUNOLFNBQVMsRUFHVCxRQUFRLEVBQ1IsSUFBSSxFQUNKLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0wsT0FBTyxFQUNQLEtBQUssRUFDTCxvQkFBb0IsRUFDcEIsTUFBTSxFQUNOLEdBQUcsRUFDSCxJQUFJLEVBQ0osU0FBUyxFQUNULFNBQVMsR0FDVixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFDTCx3QkFBd0IsR0FJekIsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7O0FBWXZGLE1BQU0sT0FBTyxvQkFDWCxTQUFRLHdCQUF3QjtJQVFoQyxZQUNVLEdBQXNCLEVBQ0QsUUFBZ0IsRUFDakIsU0FBcUI7UUFFakQsS0FBSyxFQUFFLENBQUM7UUFKQSxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUNELGFBQVEsR0FBUixRQUFRLENBQVE7UUFD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QztJQUN2QixDQUFDO0lBSUQsVUFBVSxDQUFDLEtBQTRCO1FBQ3JDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLENBQUM7SUFDRCxnQkFBZ0IsQ0FBQyxFQUE0QjtRQUMzQyxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBQ0QsaUJBQWlCLENBQUMsRUFBYztRQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBQ0QsZ0JBQWdCLENBQUUsVUFBbUI7UUFDbkMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQy9CLENBQUM7O2lIQWpIVSxvQkFBb0IsbURBV3JCLFNBQVM7cUdBWFIsb0JBQW9CLHVIQUZwQixDQUFDLEVBQUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLFdBQVcsRUFBRSxvQkFBb0IsRUFBRSxDQUFDLHFGQzNDdkYsd1RBVUEsMkNENkJZLFlBQVksK0JBQUUsa0JBQWtCOzJGQU0vQixvQkFBb0I7a0JBVmhDLFNBQVM7K0JBQ0UseUJBQXlCLFlBQ3pCLHNCQUFzQixjQUNwQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsa0JBQWtCLENBQUMsaUJBRTVCLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEMsQ0FBQyxFQUFFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxXQUFXLHNCQUFzQixFQUFFLENBQUM7OzBCQWFsRixNQUFNOzJCQUFDLFNBQVM7OzBCQUNoQixRQUFROzswQkFBSSxJQUFJOzRDQVBBLEtBQUs7c0JBRHZCLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSwgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgSG9zdEJpbmRpbmcsXG4gIEluamVjdCxcbiAgTE9DQUxFX0lELFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFNlbGYsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICBTdWJqZWN0LFxuICBkZWxheSxcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gIGZpbHRlcixcbiAgbWFwLFxuICBza2lwLFxuICBzdGFydFdpdGgsXG4gIHRha2VVbnRpbCxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBET0tVX0ZPUk1fRklFTERfQUNDRVNTT1IsXG4gIERva3VGb3JtRmllbGRBY2Nlc3NvcixcbiAgRG9rdUZvcm1GaWVsZEFjY2Vzc29yVmFsaWRhdGVWYWx1ZSxcbiAgRG9rdUZvcm1GaWVsZE9wdGlvbnMsXG59IGZyb20gJy4uLy4uL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgRG9rdURhdGVQaWNrZXJCYXNlIH0gZnJvbSAnLi4vYmFzZS9kYXRlLXBpY2tlci1iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEb2t1RGF0ZVBpY2tlckJhc2ljUHJvcHMgfSBmcm9tICcuLi9jb21tb24vZGF0ZS1waWNrZXItYmFzaWMtcHJvcHMuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZG9rdS1kYXRlLXBpY2tlci1pbmxpbmUnLFxuICBleHBvcnRBczogJ2Rva3VEYXRlUGlja2VySW5saW5lJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRG9rdURhdGVQaWNrZXJCYXNlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtcGlja2VyLWlubGluZS5jb21wb25lbnQuaHRtbCcsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IERPS1VfRk9STV9GSUVMRF9BQ0NFU1NPUiwgdXNlRXhpc3Rpbmc6IERva3VEYXRlUGlja2VySW5saW5lIH1dLFxufSlcbmV4cG9ydCBjbGFzcyBEb2t1RGF0ZVBpY2tlcklubGluZVxuICBleHRlbmRzIERva3VEYXRlUGlja2VyQmFzaWNQcm9wc1xuICBpbXBsZW1lbnRzIERva3VGb3JtRmllbGRBY2Nlc3NvciwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95XG57XG4gIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2xhc3M6IE5nQ2xhc3NbJ25nQ2xhc3MnXSA9ICdkLWRhdGUtcGlja2VyLWlubGluZSc7XG5cbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIEBJbmplY3QoTE9DQUxFX0lEKSBwcm90ZWN0ZWQgbG9jYWxlSWQ6IHN0cmluZyxcbiAgICBAT3B0aW9uYWwoKSBAU2VsZigpIHByaXZhdGUgbmdDb250cm9sPzogTmdDb250cm9sXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgaWYgKHRoaXMubmdDb250cm9sKSB7XG4gICAgICB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm5vdGlmeUNoYW5nZSRcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKGNoYW5nZSkgPT4gY2hhbmdlID09PSAndmFsdWUnIHx8IGNoYW5nZSA9PT0gJ21pbkRhdGUnIHx8IGNoYW5nZSA9PT0gJ21heERhdGUnKSxcbiAgICAgICAgc3RhcnRXaXRoKHRoaXMudmFsdWU/LnRvSVNPU3RyaW5nKCkgfHwgbnVsbCksXG4gICAgICAgIG1hcCgoKSA9PiB0aGlzLnZhbHVlPy50b0lTT1N0cmluZygpIHx8IG51bGwpLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICBza2lwKDEpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgICB9KTtcblxuICAgIHRoaXMudmFsdWVDaGFuZ2UucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCB0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgIHRoaXMub25DaGFuZ2U/Lih2YWx1ZSk7XG4gICAgICB0aGlzLm9uVG91Y2hlZD8uKCk7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5uZ0NvbnRyb2w/LnN0YXR1c0NoYW5nZXNcbiAgICAgID8ucGlwZShcbiAgICAgICAgc3RhcnRXaXRoKHRoaXMubmdDb250cm9sLnN0YXR1cyksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIGRlbGF5KDApLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gISF0aGlzLm5nQ29udHJvbD8uZGlzYWJsZWQ7XG4gICAgICB9KTtcblxuICAgIHRoaXMubmdDb250cm9sPy5zdGF0dXNDaGFuZ2VzXG4gICAgICA/LnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgZGVsYXkoMCksIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoKHN0YXR1cykgPT4ge1xuICAgICAgICBpZiAoc3RhdHVzID09PSAnVkFMSUQnKSB7XG4gICAgICAgICAgdGhpcy5vblZhbGlkYXRlPy4oJ3ZhbGlkJyk7XG4gICAgICAgIH0gZWxzZSBpZiAoc3RhdHVzID09PSAnSU5WQUxJRCcpIHtcbiAgICAgICAgICB0aGlzLm9uVmFsaWRhdGU/LignaW52YWxpZCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMub25WYWxpZGF0ZT8uKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgdGhpcy5ub3RpZnlDaGFuZ2UkXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKChjaGFuZ2UpID0+IGNoYW5nZSA9PT0gJ2Rpc2FibGVkJyB8fCBjaGFuZ2UgPT09ICdyZWFkb25seScpLFxuICAgICAgICBzdGFydFdpdGgoeyBkaXNhYmxlZDogdGhpcy5kaXNhYmxlZCwgcmVhZG9ubHk6IHRoaXMucmVhZG9ubHkgfSksXG4gICAgICAgIG1hcCgoKSA9PiAoeyBkaXNhYmxlZDogdGhpcy5kaXNhYmxlZCwgcmVhZG9ubHk6IHRoaXMucmVhZG9ubHkgfSkpLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgocHJldiwgY3VycmVudCkgPT4gSlNPTi5zdHJpbmdpZnkocHJldikgPT09IEpTT04uc3RyaW5naWZ5KGN1cnJlbnQpKSxcbiAgICAgICAgZGVsYXkoMCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoeyBkaXNhYmxlZCwgcmVhZG9ubHkgfSkgPT4ge1xuICAgICAgICB0aGlzLm9uRGlzYWJsZT8uKGRpc2FibGVkKTtcbiAgICAgICAgdGhpcy5vblJlYWRvbmx5Py4ocmVhZG9ubHkpO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBmaWVsZE9wdGlvbnM/OiBEb2t1Rm9ybUZpZWxkT3B0aW9ucyB8IHVuZGVmaW5lZCA9IHsgd2l0aG91dElucHV0U3R5bGU6IHRydWUgfTtcbiAgb25EaXNhYmxlPzogKCh2YWx1ZTogYm9vbGVhbikgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG4gIG9uUmVhZG9ubHk/OiAoKHZhbHVlOiBib29sZWFuKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcbiAgb25WYWxpZGF0ZT86ICgodmFsdWU/OiBEb2t1Rm9ybUZpZWxkQWNjZXNzb3JWYWxpZGF0ZVZhbHVlIHwgdW5kZWZpbmVkKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcbiAgcmVnaXN0ZXJPbkRpc2FibGUoZm46ICh2YWx1ZTogYm9vbGVhbikgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25EaXNhYmxlID0gZm47XG4gIH1cbiAgcmVnaXN0ZXJPblJlYWRvbmx5KGZuOiAodmFsdWU6IGJvb2xlYW4pID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uUmVhZG9ubHkgPSBmbjtcbiAgfVxuICByZWdpc3Rlck9uVmFsaWRhdGU/KGZuOiAodmFsdWU/OiBEb2t1Rm9ybUZpZWxkQWNjZXNzb3JWYWxpZGF0ZVZhbHVlIHwgdW5kZWZpbmVkKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vblZhbGlkYXRlID0gZm47XG4gIH1cblxuICBvbkNoYW5nZT86ICh2YWx1ZTogdW5rbm93bikgPT4gdm9pZDtcbiAgb25Ub3VjaGVkPzogKCkgPT4gdm9pZDtcbiAgd3JpdGVWYWx1ZSh2YWx1ZT86IERhdGUgfCBzdHJpbmcgfCBudWxsKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogdW5rbm93bikgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cbiAgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMub25EaXNhYmxlPy4oaXNEaXNhYmxlZCk7XG4gIH1cbn1cbiIsIjxkb2t1LWRhdGUtcGlja2VyLWJhc2VcbiAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgW21pbkRhdGVdPVwibWluRGF0ZVwiXG4gIFttYXhEYXRlXT1cIm1heERhdGVcIlxuICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAodmFsdWVDaGFuZ2UpPVwidmFsdWUgPSAkZXZlbnQuc3RhcnRcIlxuPlxuICA8bmctY29udGVudCBkb2t1LWRhdGUtcGlja2VyLWZvb3RlciBzZWxlY3Q9XCJbZG9rdS1kYXRlLXBpY2tlci1mb290ZXJdXCI+PC9uZy1jb250ZW50PlxuPC9kb2t1LWRhdGUtcGlja2VyLWJhc2U+XG4iXX0=