UNPKG

systelab-components

Version:

systelab-components is a set of components that use wide accepted and adopted standard technologies like Angular and Bootstrap, as well as other popular libraries. Please read the ATTRIBUTION.md file for a complete list of dependencies.

80 lines 19.9 kB
import { Component, Input } from '@angular/core'; import { DatepickerComponent } from './datepicker.component'; import { TouchSpinValues } from '../spinner/touch.spin-values'; import { DataTransformerService } from './date-transformer.service'; import * as i0 from "@angular/core"; import * as i1 from "systelab-translate"; import * as i2 from "./date-transformer.service"; import * as i3 from "primeng/api"; import * as i4 from "@angular/common"; import * as i5 from "../spinner/spinner.component"; import * as i6 from "./datepicker.component"; export class DatepickerTimeComponent extends DatepickerComponent { get currentDate() { return this._currentDate; } constructor(myRenderer, i18nService, dataTransformerService, config) { super(myRenderer, i18nService, dataTransformerService, config); this.resetTimeWhenChangingCurrentDate = false; this.showCalendar = true; this.touchSpinHourValues = new TouchSpinValues(0, 0, 23, 1); this.touchSpinMinutesValues = new TouchSpinValues(0, 0, 59, 1); } set currentDate(value) { this._currentDate = value; if (this.withIntegratedTime) { this.currentDateChange.emit(this._currentDate); } else if (this._currentDate) { if (this.resetTimeWhenChangingCurrentDate) { this.touchSpinHourValues.value = this._currentDate.getHours(); this.touchSpinMinutesValues.value = this._currentDate.getMinutes(); } else { if (this._currentDate.getHours() === 0 || this.touchSpinHourValues.value !== 0) { this._currentDate.setHours(this.touchSpinHourValues.value); } else { this.touchSpinHourValues.value = this._currentDate.getHours(); } if (this._currentDate.getMinutes() === 0 || this.touchSpinMinutesValues.value !== 0) { this._currentDate.setMinutes(this.touchSpinMinutesValues.value); } else { this.touchSpinMinutesValues.value = this._currentDate.getMinutes(); } } } else { this.touchSpinHourValues.value = 0; this.touchSpinMinutesValues.value = 0; this.currentHoursChanged(0); this.currentMinutesChanged(0); } } currentHoursChanged(value) { if (this._currentDate) { this._currentDate.setHours(value); this.currentDateChange.emit(this._currentDate); } } currentMinutesChanged(value) { if (this._currentDate) { this._currentDate.setMinutes(value); this.currentDateChange.emit(this._currentDate); } } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: DatepickerTimeComponent, deps: [{ token: i0.Renderer2 }, { token: i1.I18nService }, { token: i2.DataTransformerService }, { token: i3.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.9", type: DatepickerTimeComponent, selector: "systelab-date-time", inputs: { currentDate: "currentDate", resetTimeWhenChangingCurrentDate: "resetTimeWhenChangingCurrentDate", showCalendar: "showCalendar" }, providers: [DataTransformerService], usesInheritance: true, ngImport: i0, template: "<div class=\"d-flex\">\n <ng-container *ngIf=\"showCalendar || withIntegratedTime\">\n <systelab-datepicker\n [(currentDate)]=\"currentDate\"\n (currentDateChange)=\"currentDateChange.emit($event)\"\n [disabled]=\"disabled\"\n [error]=\"error\"\n [markPreviousAfterDate]=\"markPreviousAfterDate\"\n [required]=\"required\"\n [inputExpandHeight]=\"inputExpandHeight\"\n [inputFontSize]=\"inputFontSize\"\n [showTodayButton]=\"showTodayButton\"\n [tabindex]=\"tabindex\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [warnDaysAfter]=\"warnDaysAfter\"\n [warnDaysBefore]=\"warnDaysBefore\"\n [autofocus]=\"autofocus\"\n [onlyTime]=\"!showCalendar\"\n [withIntegratedTime]=\"withIntegratedTime\"\n [inline]=\"inline\"\n [showOtherMonths]=\"showOtherMonths\"\n [selectOtherMonths]=\"selectOtherMonths\"></systelab-datepicker>\n </ng-container>\n\n <ng-container *ngIf=\"!withIntegratedTime\">\n <systelab-spinner class=\"d-flex h-100\" id=\"hours\"\n [spinValues]=\"touchSpinHourValues\"\n [fillUnitsWithZero]=\"true\"\n [(value)]=\"touchSpinHourValues.value\"\n [disabled]=\"disabled\"\n [error]=\"error\"\n [tabindex]=\"tabindex\"\n (valueChange)=\"currentHoursChanged($event)\"></systelab-spinner>\n <label class=\"mx-1 my-0\" [class.text-danger]=\"error\">:</label>\n <systelab-spinner class=\"d-flex h-100\" id=\"minutes\"\n [spinValues]=\"touchSpinMinutesValues\"\n [fillUnitsWithZero]=\"true\"\n [tabindex]=\"tabindex\"\n [(value)]=\"touchSpinMinutesValues.value\"\n [disabled]=\"disabled\"\n [error]=\"error\"\n (valueChange)=\"currentMinutesChanged($event)\"></systelab-spinner>\n </ng-container>\n</div>", dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.TouchspinComponent, selector: "systelab-spinner", inputs: ["error", "disabled", "fillUnitsWithZero", "tabindex", "isInGrid", "value", "spinValues", "valueStr"], outputs: ["valueChange", "change", "valueStrChange"] }, { kind: "component", type: i6.DatepickerComponent, selector: "systelab-datepicker", inputs: ["disabled", "error", "required", "inputExpandHeight", "markPreviousAfterDate", "inputFontSize", "showTodayButton", "inline", "minDate", "maxDate", "warnDaysBefore", "warnDaysAfter", "autofocus", "fromDateForRelativeDates", "tabindex", "withIntegratedTime", "onlyTime", "showOtherMonths", "selectOtherMonths", "dateFormat", "currentDate"], outputs: ["currentDateChange"] }] }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: DatepickerTimeComponent, decorators: [{ type: Component, args: [{ selector: 'systelab-date-time', providers: [DataTransformerService], template: "<div class=\"d-flex\">\n <ng-container *ngIf=\"showCalendar || withIntegratedTime\">\n <systelab-datepicker\n [(currentDate)]=\"currentDate\"\n (currentDateChange)=\"currentDateChange.emit($event)\"\n [disabled]=\"disabled\"\n [error]=\"error\"\n [markPreviousAfterDate]=\"markPreviousAfterDate\"\n [required]=\"required\"\n [inputExpandHeight]=\"inputExpandHeight\"\n [inputFontSize]=\"inputFontSize\"\n [showTodayButton]=\"showTodayButton\"\n [tabindex]=\"tabindex\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [warnDaysAfter]=\"warnDaysAfter\"\n [warnDaysBefore]=\"warnDaysBefore\"\n [autofocus]=\"autofocus\"\n [onlyTime]=\"!showCalendar\"\n [withIntegratedTime]=\"withIntegratedTime\"\n [inline]=\"inline\"\n [showOtherMonths]=\"showOtherMonths\"\n [selectOtherMonths]=\"selectOtherMonths\"></systelab-datepicker>\n </ng-container>\n\n <ng-container *ngIf=\"!withIntegratedTime\">\n <systelab-spinner class=\"d-flex h-100\" id=\"hours\"\n [spinValues]=\"touchSpinHourValues\"\n [fillUnitsWithZero]=\"true\"\n [(value)]=\"touchSpinHourValues.value\"\n [disabled]=\"disabled\"\n [error]=\"error\"\n [tabindex]=\"tabindex\"\n (valueChange)=\"currentHoursChanged($event)\"></systelab-spinner>\n <label class=\"mx-1 my-0\" [class.text-danger]=\"error\">:</label>\n <systelab-spinner class=\"d-flex h-100\" id=\"minutes\"\n [spinValues]=\"touchSpinMinutesValues\"\n [fillUnitsWithZero]=\"true\"\n [tabindex]=\"tabindex\"\n [(value)]=\"touchSpinMinutesValues.value\"\n [disabled]=\"disabled\"\n [error]=\"error\"\n (valueChange)=\"currentMinutesChanged($event)\"></systelab-spinner>\n </ng-container>\n</div>" }] }], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i1.I18nService }, { type: i2.DataTransformerService }, { type: i3.PrimeNGConfig }], propDecorators: { currentDate: [{ type: Input }], resetTimeWhenChangingCurrentDate: [{ type: Input }], showCalendar: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci10aW1lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N5c3RlbGFiLWNvbXBvbmVudHMvc3JjL2xpYi9kYXRlcGlja2VyL2RhdGVwaWNrZXItdGltZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zeXN0ZWxhYi1jb21wb25lbnRzL3NyYy9saWIvZGF0ZXBpY2tlci9kYXRlcGlja2VyLXRpbWUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRS9ELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7OztBQVFwRSxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsbUJBQW1CO0lBQy9ELElBQ2EsV0FBVztRQUN2QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDMUIsQ0FBQztJQU9ELFlBQVksVUFBcUIsRUFBRSxXQUF3QixFQUFFLHNCQUE4QyxFQUFFLE1BQXFCO1FBQ2pJLEtBQUssQ0FBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBUGhELHFDQUFnQyxHQUFHLEtBQUssQ0FBQztRQUN6QyxpQkFBWSxHQUFHLElBQUksQ0FBQztRQVFuQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxlQUFlLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksZUFBZSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxJQUFhLFdBQVcsQ0FBQyxLQUFXO1FBQ25DLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQzFCLElBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFDO1lBQzFCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQy9DO2FBQU0sSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQzdCLElBQUksSUFBSSxDQUFDLGdDQUFnQyxFQUFFO2dCQUMxQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQzlELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsQ0FBQzthQUNuRTtpQkFBTTtnQkFDTixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEtBQUssQ0FBQyxFQUFFO29CQUMvRSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQzNEO3FCQUFNO29CQUNOLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztpQkFDOUQ7Z0JBQ0QsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxLQUFLLENBQUMsRUFBRTtvQkFDcEYsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUNoRTtxQkFBTTtvQkFDTixJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLENBQUM7aUJBQ25FO2FBQ0Q7U0FDRDthQUFNO1lBQ04sSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7WUFDbkMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7WUFDdEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUM5QjtJQUNGLENBQUM7SUFFTSxtQkFBbUIsQ0FBQyxLQUFhO1FBQ3ZDLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUN0QixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNsQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUMvQztJQUNGLENBQUM7SUFFTSxxQkFBcUIsQ0FBQyxLQUFhO1FBQ3pDLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUN0QixJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNwQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUMvQztJQUNGLENBQUM7OEdBMURXLHVCQUF1QjtrR0FBdkIsdUJBQXVCLHlMQUZ0QixDQUFDLHNCQUFzQixDQUFDLGlEQ1Z0Qyxnd0VBNENNOzsyRkRoQ08sdUJBQXVCO2tCQUxuQyxTQUFTOytCQUNJLG9CQUFvQixhQUVwQixDQUFDLHNCQUFzQixDQUFDO3lLQUl4QixXQUFXO3NCQUR2QixLQUFLO2dCQUlVLGdDQUFnQztzQkFBL0MsS0FBSztnQkFDVSxZQUFZO3NCQUEzQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYXRlcGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi9kYXRlcGlja2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUb3VjaFNwaW5WYWx1ZXMgfSBmcm9tICcuLi9zcGlubmVyL3RvdWNoLnNwaW4tdmFsdWVzJztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnc3lzdGVsYWItdHJhbnNsYXRlJztcbmltcG9ydCB7IERhdGFUcmFuc2Zvcm1lclNlcnZpY2UgfSBmcm9tICcuL2RhdGUtdHJhbnNmb3JtZXIuc2VydmljZSc7XG5pbXBvcnQgeyBQcmltZU5HQ29uZmlnIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICAgICdzeXN0ZWxhYi1kYXRlLXRpbWUnLFxuXHR0ZW1wbGF0ZVVybDogJ2RhdGVwaWNrZXItdGltZS5jb21wb25lbnQuaHRtbCcsXG5cdHByb3ZpZGVyczogICBbRGF0YVRyYW5zZm9ybWVyU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgRGF0ZXBpY2tlclRpbWVDb21wb25lbnQgZXh0ZW5kcyBEYXRlcGlja2VyQ29tcG9uZW50IHtcblx0QElucHV0KClcblx0b3ZlcnJpZGUgZ2V0IGN1cnJlbnREYXRlKCk6IERhdGUge1xuXHRcdHJldHVybiB0aGlzLl9jdXJyZW50RGF0ZTtcblx0fVxuXHRASW5wdXQoKSBwdWJsaWMgcmVzZXRUaW1lV2hlbkNoYW5naW5nQ3VycmVudERhdGUgPSBmYWxzZTtcblx0QElucHV0KCkgcHVibGljIHNob3dDYWxlbmRhciA9IHRydWU7XG5cblx0cHVibGljIHRvdWNoU3BpbkhvdXJWYWx1ZXM6IFRvdWNoU3BpblZhbHVlcztcblx0cHVibGljIHRvdWNoU3Bpbk1pbnV0ZXNWYWx1ZXM6IFRvdWNoU3BpblZhbHVlcztcblxuXHRjb25zdHJ1Y3RvcihteVJlbmRlcmVyOiBSZW5kZXJlcjIsIGkxOG5TZXJ2aWNlOiBJMThuU2VydmljZSwgZGF0YVRyYW5zZm9ybWVyU2VydmljZTogRGF0YVRyYW5zZm9ybWVyU2VydmljZSwgY29uZmlnOiBQcmltZU5HQ29uZmlnKSB7XG5cdFx0c3VwZXIobXlSZW5kZXJlciwgaTE4blNlcnZpY2UsIGRhdGFUcmFuc2Zvcm1lclNlcnZpY2UsIGNvbmZpZyk7XG5cblx0XHR0aGlzLnRvdWNoU3BpbkhvdXJWYWx1ZXMgPSBuZXcgVG91Y2hTcGluVmFsdWVzKDAsIDAsIDIzLCAxKTtcblx0XHR0aGlzLnRvdWNoU3Bpbk1pbnV0ZXNWYWx1ZXMgPSBuZXcgVG91Y2hTcGluVmFsdWVzKDAsIDAsIDU5LCAxKTtcblx0fVxuXG5cdG92ZXJyaWRlIHNldCBjdXJyZW50RGF0ZSh2YWx1ZTogRGF0ZSkge1xuXHRcdHRoaXMuX2N1cnJlbnREYXRlID0gdmFsdWU7XG5cdFx0aWYodGhpcy53aXRoSW50ZWdyYXRlZFRpbWUpe1xuXHRcdFx0dGhpcy5jdXJyZW50RGF0ZUNoYW5nZS5lbWl0KHRoaXMuX2N1cnJlbnREYXRlKTtcblx0XHR9IGVsc2UgaWYgKHRoaXMuX2N1cnJlbnREYXRlKSB7XG5cdFx0XHRpZiAodGhpcy5yZXNldFRpbWVXaGVuQ2hhbmdpbmdDdXJyZW50RGF0ZSkge1xuXHRcdFx0XHR0aGlzLnRvdWNoU3BpbkhvdXJWYWx1ZXMudmFsdWUgPSB0aGlzLl9jdXJyZW50RGF0ZS5nZXRIb3VycygpO1xuXHRcdFx0XHR0aGlzLnRvdWNoU3Bpbk1pbnV0ZXNWYWx1ZXMudmFsdWUgPSB0aGlzLl9jdXJyZW50RGF0ZS5nZXRNaW51dGVzKCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRpZiAodGhpcy5fY3VycmVudERhdGUuZ2V0SG91cnMoKSA9PT0gMCB8fCB0aGlzLnRvdWNoU3BpbkhvdXJWYWx1ZXMudmFsdWUgIT09IDApIHtcblx0XHRcdFx0XHR0aGlzLl9jdXJyZW50RGF0ZS5zZXRIb3Vycyh0aGlzLnRvdWNoU3BpbkhvdXJWYWx1ZXMudmFsdWUpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHRoaXMudG91Y2hTcGluSG91clZhbHVlcy52YWx1ZSA9IHRoaXMuX2N1cnJlbnREYXRlLmdldEhvdXJzKCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHRoaXMuX2N1cnJlbnREYXRlLmdldE1pbnV0ZXMoKSA9PT0gMCB8fCB0aGlzLnRvdWNoU3Bpbk1pbnV0ZXNWYWx1ZXMudmFsdWUgIT09IDApIHtcblx0XHRcdFx0XHR0aGlzLl9jdXJyZW50RGF0ZS5zZXRNaW51dGVzKHRoaXMudG91Y2hTcGluTWludXRlc1ZhbHVlcy52YWx1ZSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGhpcy50b3VjaFNwaW5NaW51dGVzVmFsdWVzLnZhbHVlID0gdGhpcy5fY3VycmVudERhdGUuZ2V0TWludXRlcygpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMudG91Y2hTcGluSG91clZhbHVlcy52YWx1ZSA9IDA7XG5cdFx0XHR0aGlzLnRvdWNoU3Bpbk1pbnV0ZXNWYWx1ZXMudmFsdWUgPSAwO1xuXHRcdFx0dGhpcy5jdXJyZW50SG91cnNDaGFuZ2VkKDApO1xuXHRcdFx0dGhpcy5jdXJyZW50TWludXRlc0NoYW5nZWQoMCk7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIGN1cnJlbnRIb3Vyc0NoYW5nZWQodmFsdWU6IG51bWJlcikge1xuXHRcdGlmICh0aGlzLl9jdXJyZW50RGF0ZSkge1xuXHRcdFx0dGhpcy5fY3VycmVudERhdGUuc2V0SG91cnModmFsdWUpO1xuXHRcdFx0dGhpcy5jdXJyZW50RGF0ZUNoYW5nZS5lbWl0KHRoaXMuX2N1cnJlbnREYXRlKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgY3VycmVudE1pbnV0ZXNDaGFuZ2VkKHZhbHVlOiBudW1iZXIpIHtcblx0XHRpZiAodGhpcy5fY3VycmVudERhdGUpIHtcblx0XHRcdHRoaXMuX2N1cnJlbnREYXRlLnNldE1pbnV0ZXModmFsdWUpO1xuXHRcdFx0dGhpcy5jdXJyZW50RGF0ZUNoYW5nZS5lbWl0KHRoaXMuX2N1cnJlbnREYXRlKTtcblx0XHR9XG5cdH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0NhbGVuZGFyIHx8IHdpdGhJbnRlZ3JhdGVkVGltZVwiPlxuICAgICAgICA8c3lzdGVsYWItZGF0ZXBpY2tlclxuICAgICAgICAgICAgICAgIFsoY3VycmVudERhdGUpXT1cImN1cnJlbnREYXRlXCJcbiAgICAgICAgICAgICAgICAoY3VycmVudERhdGVDaGFuZ2UpPVwiY3VycmVudERhdGVDaGFuZ2UuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIFtlcnJvcl09XCJlcnJvclwiXG4gICAgICAgICAgICAgICAgW21hcmtQcmV2aW91c0FmdGVyRGF0ZV09XCJtYXJrUHJldmlvdXNBZnRlckRhdGVcIlxuICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgICAgICAgICAgW2lucHV0RXhwYW5kSGVpZ2h0XT1cImlucHV0RXhwYW5kSGVpZ2h0XCJcbiAgICAgICAgICAgICAgICBbaW5wdXRGb250U2l6ZV09XCJpbnB1dEZvbnRTaXplXCJcbiAgICAgICAgICAgICAgICBbc2hvd1RvZGF5QnV0dG9uXT1cInNob3dUb2RheUJ1dHRvblwiXG4gICAgICAgICAgICAgICAgW3RhYmluZGV4XT1cInRhYmluZGV4XCJcbiAgICAgICAgICAgICAgICBbbWF4RGF0ZV09XCJtYXhEYXRlXCJcbiAgICAgICAgICAgICAgICBbbWluRGF0ZV09XCJtaW5EYXRlXCJcbiAgICAgICAgICAgICAgICBbd2FybkRheXNBZnRlcl09XCJ3YXJuRGF5c0FmdGVyXCJcbiAgICAgICAgICAgICAgICBbd2FybkRheXNCZWZvcmVdPVwid2FybkRheXNCZWZvcmVcIlxuICAgICAgICAgICAgICAgIFthdXRvZm9jdXNdPVwiYXV0b2ZvY3VzXCJcbiAgICAgICAgICAgICAgICBbb25seVRpbWVdPVwiIXNob3dDYWxlbmRhclwiXG4gICAgICAgICAgICAgICAgW3dpdGhJbnRlZ3JhdGVkVGltZV09XCJ3aXRoSW50ZWdyYXRlZFRpbWVcIlxuICAgICAgICAgICAgICAgIFtpbmxpbmVdPVwiaW5saW5lXCJcbiAgICAgICAgICAgICAgICBbc2hvd090aGVyTW9udGhzXT1cInNob3dPdGhlck1vbnRoc1wiXG4gICAgICAgICAgICAgICAgW3NlbGVjdE90aGVyTW9udGhzXT1cInNlbGVjdE90aGVyTW9udGhzXCI+PC9zeXN0ZWxhYi1kYXRlcGlja2VyPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF3aXRoSW50ZWdyYXRlZFRpbWVcIj5cbiAgICAgICAgPHN5c3RlbGFiLXNwaW5uZXIgY2xhc3M9XCJkLWZsZXggaC0xMDBcIiBpZD1cImhvdXJzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3NwaW5WYWx1ZXNdPVwidG91Y2hTcGluSG91clZhbHVlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtmaWxsVW5pdHNXaXRoWmVyb109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgWyh2YWx1ZSldPVwidG91Y2hTcGluSG91clZhbHVlcy52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtlcnJvcl09XCJlcnJvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFt0YWJpbmRleF09XCJ0YWJpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJjdXJyZW50SG91cnNDaGFuZ2VkKCRldmVudClcIj48L3N5c3RlbGFiLXNwaW5uZXI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cIm14LTEgbXktMFwiIFtjbGFzcy50ZXh0LWRhbmdlcl09XCJlcnJvclwiPjo8L2xhYmVsPlxuICAgICAgICA8c3lzdGVsYWItc3Bpbm5lciBjbGFzcz1cImQtZmxleCBoLTEwMFwiIGlkPVwibWludXRlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtzcGluVmFsdWVzXT1cInRvdWNoU3Bpbk1pbnV0ZXNWYWx1ZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbZmlsbFVuaXRzV2l0aFplcm9dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFt0YWJpbmRleF09XCJ0YWJpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFsodmFsdWUpXT1cInRvdWNoU3Bpbk1pbnV0ZXNWYWx1ZXMudmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbZXJyb3JdPVwiZXJyb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwiY3VycmVudE1pbnV0ZXNDaGFuZ2VkKCRldmVudClcIj48L3N5c3RlbGFiLXNwaW5uZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG48L2Rpdj4iXX0=