@piserve-tech/form-submission 1.3.90 → 1.3.91

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.
@@ -387,8 +387,13 @@ export class DateTimeFieldsComponent {
387
387
  }
388
388
  return date;
389
389
  }
390
+ ngOnDestroy() {
391
+ if (this.fullTime3) {
392
+ this.fullTime3.close();
393
+ }
394
+ }
390
395
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DateTimeFieldsComponent, deps: [{ token: i1.DatePipe }], target: i0.ɵɵFactoryTarget.Component }); }
391
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DateTimeFieldsComponent, selector: "lib-date-time-fields", inputs: { question: "question" }, providers: [DatePipe], viewQueries: [{ propertyName: "datepicker", first: true, predicate: ["datepickerYMD"], descendants: true }, { propertyName: "dateRangePicker", first: true, predicate: ["daterangepicker"], descendants: true }, { propertyName: "dateAndTimePicker", first: true, predicate: ["dateAndTimePicker"], descendants: true }], ngImport: i0, template: "<div class=\"mb-5 px-3\">\n <div class=\"input-wrapper mb-2\">\n <div [innerHTML]=\"question.questionNumber\"></div>\n &nbsp;&nbsp; <label>{{ question.question }}</label\n >&nbsp;\n <span class=\"text-danger\" *ngIf=\"required\">*</span>\n <div\n class=\"svg-wrapper mb-2 hintIcon\"\n [attr.data-title]=\"hint\"\n *ngIf=\"hint\"\n >\n <svg\n class=\"hintSvg\"\n viewBox=\"0 0 30 30\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n <ng-container *ngIf=\"dateType === 'DATE_ONLY'\">\n <!-- Date only picker -->\n <div class=\"input-container\">\n <input\n class=\"form-control height\"\n #datepickerYMD=\"bsDatepicker\"\n bsDatepicker\n [minDate]=\"minDate ? minDate : undefined\"\n [maxDate]=\"maxDate ? maxDate : undefined\"\n [bsConfig]=\"{ dateInputFormat: format, containerClass: 'theme-custom' }\"\n [(ngModel)]=\"selectedDate\"\n (blur)=\"validateField()\"\n (ngModelChange)=\"validateField()\"\n [class.invalid]=\"validationFailed\"\n placeholder=\"Select date\"\n />\n <i\n class=\"fa-solid fa-calendar-days calendar-icon text-primary fs-5\"\n (click)=\"openDatePicker()\"\n ></i>\n </div>\n <div *ngIf=\"validationFailed\" class=\"text-danger mt-2\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ validationMessage }}\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"dateType === 'TIME_ONLY'\">\n <!-- Time picker -->\n\n\n<div class=\"input-container\">\n <input\n class=\"form-control height appearanceInput mt-3\"\n aria-label=\"Select time\"\n placeholder=\"Select time\"\n readonly\n [format]=\"timeFormat==='24'?24:12\"\n [ngxTimepicker]=\"fullTime3\"\n [(ngModel)]=\"selectedTime\"\n [max]=\"maxTime\"\n [min]=\"minTime\"\n (ngModelChange)=\"validateField()\"\n [class.invalid]=\"validationFailed\"\n />\n \n <i\n id=\"startDateIcon\"\n class=\"fa-solid fa-clock text-primary fs-6 clock-icon\"\n (click)=\"fullTime3.open()\"\n style=\"cursor: pointer;\"\n></i>\n <ngx-material-timepicker #fullTime3></ngx-material-timepicker>\n</div>\n <div *ngIf=\"validationFailed\" class=\"text-danger mt-2\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ validationMessage }}\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"dateType === 'DATE_AND_TIME'\">\n <!-- Date and time picker -->\n <div class=\"input-container\">\n <input\n #dateAndTimePicker=\"bsDatepicker\"\n type=\"text\"\n class=\"form-control height\"\n [minDate]=\"minDate ? minDate : undefined\"\n [maxDate]=\"maxDate ? maxDate : undefined\"\n [bsConfig]=\"{\n dateInputFormat: format, containerClass: 'theme-custom' \n }\"\n placeholder=\"Select date\"\n bsDatepicker\n [class.invalid]=\"validationFailed\"\n [(ngModel)]=\"selectedDateAndTime\"\n (blur)=\"validateField()\"\n (ngModelChange)=\"validateField()\"\n />\n <i\n class=\"fa-solid fa-calendar-days calendar-icon text-primary fs-5\"\n (click)=\"openDateAndTimePicker()\"\n ></i>\n </div>\n <div class=\"input-container\" *ngIf=\"selectedDateAndTime && selectedDateAndTime != null\">\n <input\n \n class=\"form-control height appearanceInput mt-3\"\n aria-label=\"Select time\"\n placeholder=\"Select time\"\n readonly\n [format]=\"timeFormat==='24'?24:12\"\n [ngxTimepicker]=\"fullTime4\"\n [(ngModel)]=\"selectedTime\"\n [max]=\"maxTime\"\n [min]=\"minTime\"\n (ngModelChange)=\"validateField()\"\n (focus)=\"closeDatepicker()\"\n [class.invalid]=\"timeValidationFailed\"\n />\n \n <i\n id=\"startDateIcon\"\n class=\"fa-solid fa-clock text-primary fs-6 clock-icon\"\n (click)=\"fullTime4.open()\"\n style=\"cursor: pointer;\"\n ></i>\n <ngx-material-timepicker #fullTime4></ngx-material-timepicker>\n </div>\n \n <div *ngIf=\"validationFailed || timeValidationFailed\" class=\"text-danger mt-2\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ validationMessage }}\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"dateType === 'DATE_RANGE'\">\n <!-- Date range picker -->\n <div class=\"input-container\">\n <input\n type=\"text\"\n class=\"form-control height\"\n #daterangepicker=\"bsDaterangepicker\"\n bsDaterangepicker\n placeholder=\"Select date\"\n [minDate]=\"minDate ? minDate : undefined\"\n [maxDate]=\"maxDate ? maxDate : undefined\"\n [bsConfig]=\"{\n rangeInputFormat: format,\n dateInputFormat: format, containerClass: 'theme-custom' \n }\"\n [(ngModel)]=\"selectedDateRange\"\n (blur)=\"validateField()\"\n (ngModelChange)=\"validateField()\"\n [class.invalid]=\"validationFailed\"\n />\n <i\n class=\"fa-solid fa-calendar-days calendar-icon text-primary fs-5\"\n (click)=\"openDateRangePicker()\"\n ></i>\n </div>\n <div *ngIf=\"validationFailed\" class=\"text-danger mt-2\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ validationMessage }}\n </div>\n </ng-container>\n</div>\n", styles: [".input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-inline-start:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);right:0;padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;min-width:300px;word-wrap:break-word;word-break:break-word;text-align:center;white-space:normal}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}.validationSvg{width:24px;height:24px;fill:none}:root{--library-font-family: Roboto, \"Helvetica Neue\", sans-serif;--library-font-size: 14px}::ng-deep html lib-formSubmission{font-family:var(--library-font-family)!important;font-size:var(--library-font-size)!important}.input-container{position:relative}.input-container .form-control{padding-right:30px}.input-container .calendar-icon,.clock-icon{position:absolute;top:50%;right:10px;transform:translateY(-50%);cursor:pointer}.appearanceInput{background-color:#fff}::ng-deep ngx-material-timepicker-content{--body-background-color: #fff;--button-color: #08bff6 !important;--dial-active-color: #fff;--dial-inactive-color: rgba(255, 255, 255, .5);--dial-background-color: #08bff6 !important;--dial-editable-active-color: #08bff6!important;--dial-editable-background-color: #fff;--clock-face-time-active-color: #fff;--clock-face-time-inactive-color: #6c6c6c;--clock-face-inner-time-inactive-color: #929292;--clock-face-time-disabled-color: #c5c5c5;--clock-face-background-color: #f0f0f0;--clock-hand-color: #08bff6 !important;position:relative;z-index:99999999}::ng-deep ngx-material-timepicker-container{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#00000052;z-index:99998}.theme-custom .bs-datepicker-head,.timepicker__header{background-color:#08bff6!important}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.BsDatepickerDirective, selector: "[bsDatepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isDisabled", "minDate", "maxDate", "minMode", "daysDisabled", "datesDisabled", "datesEnabled", "dateCustomClasses", "dateTooltipTexts", "isOpen", "bsValue", "bsConfig"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDatepicker"] }, { kind: "directive", type: i3.BsDatepickerInputDirective, selector: "input[bsDatepicker]" }, { kind: "directive", type: i3.BsDaterangepickerDirective, selector: "[bsDaterangepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isOpen", "bsValue", "bsConfig", "isDisabled", "minDate", "maxDate", "dateCustomClasses", "daysDisabled", "datesDisabled", "datesEnabled"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDaterangepicker"] }, { kind: "directive", type: i3.BsDaterangepickerInputDirective, selector: "input[bsDaterangepicker]" }, { kind: "component", type: i4.NgxMaterialTimepickerComponent, selector: "ngx-material-timepicker", inputs: ["cancelBtnTmpl", "editableHintTmpl", "confirmBtnTmpl", "ESC", "enableKeyboardInput", "preventOverlayClick", "disableAnimation", "appendToInput", "hoursOnly", "defaultTime", "timepickerClass", "theme", "min", "max", "ngxMaterialTimepickerTheme", "format", "minutesGap"], outputs: ["timeSet", "opened", "closed", "hourSelected", "timeChanged"] }, { kind: "directive", type: i4.TimepickerDirective, selector: "[ngxTimepicker]", inputs: ["format", "min", "max", "ngxTimepicker", "value", "disabled", "disableClick"] }], encapsulation: i0.ViewEncapsulation.None }); }
396
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DateTimeFieldsComponent, selector: "lib-date-time-fields", inputs: { question: "question" }, providers: [DatePipe], viewQueries: [{ propertyName: "datepicker", first: true, predicate: ["datepickerYMD"], descendants: true }, { propertyName: "dateRangePicker", first: true, predicate: ["daterangepicker"], descendants: true }, { propertyName: "dateAndTimePicker", first: true, predicate: ["dateAndTimePicker"], descendants: true }, { propertyName: "fullTime3", first: true, predicate: ["fullTime3"], descendants: true }], ngImport: i0, template: "<div class=\"mb-5 px-3\">\n <div class=\"input-wrapper mb-2\">\n <div [innerHTML]=\"question.questionNumber\"></div>\n &nbsp;&nbsp; <label>{{ question.question }}</label\n >&nbsp;\n <span class=\"text-danger\" *ngIf=\"required\">*</span>\n <div\n class=\"svg-wrapper mb-2 hintIcon\"\n [attr.data-title]=\"hint\"\n *ngIf=\"hint\"\n >\n <svg\n class=\"hintSvg\"\n viewBox=\"0 0 30 30\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n <ng-container *ngIf=\"dateType === 'DATE_ONLY'\">\n <!-- Date only picker -->\n <div class=\"input-container\">\n <input\n class=\"form-control height\"\n #datepickerYMD=\"bsDatepicker\"\n bsDatepicker\n [minDate]=\"minDate ? minDate : undefined\"\n [maxDate]=\"maxDate ? maxDate : undefined\"\n [bsConfig]=\"{ dateInputFormat: format, containerClass: 'theme-custom' }\"\n [(ngModel)]=\"selectedDate\"\n (blur)=\"validateField()\"\n (ngModelChange)=\"validateField()\"\n [class.invalid]=\"validationFailed\"\n placeholder=\"Select date\"\n />\n <i\n class=\"fa-solid fa-calendar-days calendar-icon text-primary fs-5\"\n (click)=\"openDatePicker()\"\n ></i>\n </div>\n <div *ngIf=\"validationFailed\" class=\"text-danger mt-2\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ validationMessage }}\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"dateType === 'TIME_ONLY'\">\n <!-- Time picker -->\n\n\n<div class=\"input-container\">\n <input\n class=\"form-control height appearanceInput mt-3\"\n aria-label=\"Select time\"\n placeholder=\"Select time\"\n readonly\n [format]=\"timeFormat==='24'?24:12\"\n [ngxTimepicker]=\"fullTime3\"\n [(ngModel)]=\"selectedTime\"\n [max]=\"maxTime\"\n [min]=\"minTime\"\n (ngModelChange)=\"validateField()\"\n [class.invalid]=\"validationFailed\"\n />\n \n <i\n id=\"startDateIcon\"\n class=\"fa-solid fa-clock text-primary fs-6 clock-icon\"\n (click)=\"fullTime3.open()\"\n style=\"cursor: pointer;\"\n></i>\n <ngx-material-timepicker #fullTime3></ngx-material-timepicker>\n</div>\n <div *ngIf=\"validationFailed\" class=\"text-danger mt-2\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ validationMessage }}\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"dateType === 'DATE_AND_TIME'\">\n <!-- Date and time picker -->\n <div class=\"input-container\">\n <input\n #dateAndTimePicker=\"bsDatepicker\"\n type=\"text\"\n class=\"form-control height\"\n [minDate]=\"minDate ? minDate : undefined\"\n [maxDate]=\"maxDate ? maxDate : undefined\"\n [bsConfig]=\"{\n dateInputFormat: format, containerClass: 'theme-custom' \n }\"\n placeholder=\"Select date\"\n bsDatepicker\n [class.invalid]=\"validationFailed\"\n [(ngModel)]=\"selectedDateAndTime\"\n (blur)=\"validateField()\"\n (ngModelChange)=\"validateField()\"\n />\n <i\n class=\"fa-solid fa-calendar-days calendar-icon text-primary fs-5\"\n (click)=\"openDateAndTimePicker()\"\n ></i>\n </div>\n <div class=\"input-container\" *ngIf=\"selectedDateAndTime && selectedDateAndTime != null\">\n <input\n \n class=\"form-control height appearanceInput mt-3\"\n aria-label=\"Select time\"\n placeholder=\"Select time\"\n readonly\n [format]=\"timeFormat==='24'?24:12\"\n [ngxTimepicker]=\"fullTime4\"\n [(ngModel)]=\"selectedTime\"\n [max]=\"maxTime\"\n [min]=\"minTime\"\n (ngModelChange)=\"validateField()\"\n (focus)=\"closeDatepicker()\"\n [class.invalid]=\"timeValidationFailed\"\n />\n \n <i\n id=\"startDateIcon\"\n class=\"fa-solid fa-clock text-primary fs-6 clock-icon\"\n (click)=\"fullTime4.open()\"\n style=\"cursor: pointer;\"\n ></i>\n <ngx-material-timepicker #fullTime4></ngx-material-timepicker>\n </div>\n \n <div *ngIf=\"validationFailed || timeValidationFailed\" class=\"text-danger mt-2\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ validationMessage }}\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"dateType === 'DATE_RANGE'\">\n <!-- Date range picker -->\n <div class=\"input-container\">\n <input\n type=\"text\"\n class=\"form-control height\"\n #daterangepicker=\"bsDaterangepicker\"\n bsDaterangepicker\n placeholder=\"Select date\"\n [minDate]=\"minDate ? minDate : undefined\"\n [maxDate]=\"maxDate ? maxDate : undefined\"\n [bsConfig]=\"{\n rangeInputFormat: format,\n dateInputFormat: format, containerClass: 'theme-custom' \n }\"\n [(ngModel)]=\"selectedDateRange\"\n (blur)=\"validateField()\"\n (ngModelChange)=\"validateField()\"\n [class.invalid]=\"validationFailed\"\n />\n <i\n class=\"fa-solid fa-calendar-days calendar-icon text-primary fs-5\"\n (click)=\"openDateRangePicker()\"\n ></i>\n </div>\n <div *ngIf=\"validationFailed\" class=\"text-danger mt-2\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ validationMessage }}\n </div>\n </ng-container>\n</div>\n", styles: [".input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-inline-start:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);right:0;padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;min-width:300px;word-wrap:break-word;word-break:break-word;text-align:center;white-space:normal}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}.validationSvg{width:24px;height:24px;fill:none}:root{--library-font-family: Roboto, \"Helvetica Neue\", sans-serif;--library-font-size: 14px}::ng-deep html lib-formSubmission{font-family:var(--library-font-family)!important;font-size:var(--library-font-size)!important}.input-container{position:relative}.input-container .form-control{padding-right:30px}.input-container .calendar-icon,.clock-icon{position:absolute;top:50%;right:10px;transform:translateY(-50%);cursor:pointer}.appearanceInput{background-color:#fff}::ng-deep ngx-material-timepicker-content{--body-background-color: #fff;--button-color: #08bff6 !important;--dial-active-color: #fff;--dial-inactive-color: rgba(255, 255, 255, .5);--dial-background-color: #08bff6 !important;--dial-editable-active-color: #08bff6!important;--dial-editable-background-color: #fff;--clock-face-time-active-color: #fff;--clock-face-time-inactive-color: #6c6c6c;--clock-face-inner-time-inactive-color: #929292;--clock-face-time-disabled-color: #c5c5c5;--clock-face-background-color: #f0f0f0;--clock-hand-color: #08bff6 !important;position:relative;z-index:99999999}::ng-deep ngx-material-timepicker-container{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#00000052;z-index:99998}.theme-custom .bs-datepicker-head,.timepicker__header{background-color:#08bff6!important}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.BsDatepickerDirective, selector: "[bsDatepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isDisabled", "minDate", "maxDate", "minMode", "daysDisabled", "datesDisabled", "datesEnabled", "dateCustomClasses", "dateTooltipTexts", "isOpen", "bsValue", "bsConfig"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDatepicker"] }, { kind: "directive", type: i3.BsDatepickerInputDirective, selector: "input[bsDatepicker]" }, { kind: "directive", type: i3.BsDaterangepickerDirective, selector: "[bsDaterangepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isOpen", "bsValue", "bsConfig", "isDisabled", "minDate", "maxDate", "dateCustomClasses", "daysDisabled", "datesDisabled", "datesEnabled"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDaterangepicker"] }, { kind: "directive", type: i3.BsDaterangepickerInputDirective, selector: "input[bsDaterangepicker]" }, { kind: "component", type: i4.NgxMaterialTimepickerComponent, selector: "ngx-material-timepicker", inputs: ["cancelBtnTmpl", "editableHintTmpl", "confirmBtnTmpl", "ESC", "enableKeyboardInput", "preventOverlayClick", "disableAnimation", "appendToInput", "hoursOnly", "defaultTime", "timepickerClass", "theme", "min", "max", "ngxMaterialTimepickerTheme", "format", "minutesGap"], outputs: ["timeSet", "opened", "closed", "hourSelected", "timeChanged"] }, { kind: "directive", type: i4.TimepickerDirective, selector: "[ngxTimepicker]", inputs: ["format", "min", "max", "ngxTimepicker", "value", "disabled", "disableClick"] }], encapsulation: i0.ViewEncapsulation.None }); }
392
397
  }
393
398
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DateTimeFieldsComponent, decorators: [{
394
399
  type: Component,
@@ -404,5 +409,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
404
409
  }], dateAndTimePicker: [{
405
410
  type: ViewChild,
406
411
  args: ['dateAndTimePicker']
412
+ }], fullTime3: [{
413
+ type: ViewChild,
414
+ args: ['fullTime3']
407
415
  }] } });
408
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS10aW1lLWZpZWxkcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3JtLXN1Ym1pc3Npb24vc3JjL2Zvcm0tZmllbGRzL2RhdGUtdGltZS1maWVsZHMvZGF0ZS10aW1lLWZpZWxkcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3JtLXN1Ym1pc3Npb24vc3JjL2Zvcm0tZmllbGRzL2RhdGUtdGltZS1maWVsZHMvZGF0ZS10aW1lLWZpZWxkcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFjL0UsTUFBTSxPQUFPLHVCQUF1QjtJQW9DbEMsWUFBb0IsUUFBa0I7UUFBbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQW5DdEMsYUFBUSxHQUFnQztZQUN0QyxjQUFjLEVBQUUsY0FBYztZQUM5QixVQUFVLEVBQUUsSUFBSTtZQUNoQixnQkFBZ0IsRUFBRSxJQUFJO1lBQ3RCLGVBQWUsRUFBRSxLQUFLO1NBQ3ZCLENBQUM7UUFFTyxhQUFRLEdBQVEsRUFBRSxDQUFDO1FBQzVCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsU0FBSSxHQUFXLEVBQUUsQ0FBQztRQUNsQixVQUFLLEdBQVcsQ0FBQyxDQUFDO1FBQ2xCLFlBQU8sR0FBVyxFQUFFLENBQUM7UUFDckIsWUFBTyxHQUFXLEVBQUUsQ0FBQztRQUNyQixhQUFRLEdBQVcsRUFBRSxDQUFDO1FBQ3RCLFdBQU0sR0FBVyxFQUFFLENBQUM7UUFDcEIsZUFBVSxHQUFXLEVBQUUsQ0FBQztRQUN4QixlQUFVLEdBQVcsRUFBRSxDQUFDO1FBQ3hCLGtCQUFhLEdBQVcsRUFBRSxD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WnZCLGttVkFxVEE7OzRGRHRTYSx1QkFBdUI7a0JBUG5DLFNBQVM7K0JBQ0Usc0JBQXNCLGFBR3JCLENBQUMsUUFBUSxDQUFDLGlCQUNOLGlCQUFpQixDQUFDLElBQUk7K0ZBVTVCLFFBQVE7c0JBQWhCLEtBQUs7Z0JBeUJzQixVQUFVO3NCQUFyQyxTQUFTO3VCQUFDLGVBQWU7Z0JBQ0ksZUFBZTtzQkFBNUMsU0FBUzt1QkFBQyxpQkFBaUI7Z0JBQ0ksaUJBQWlCO3NCQUFoRCxTQUFTO3VCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEJzRGF0ZXBpY2tlckNvbmZpZyxcbiAgQnNEYXRlcGlja2VyRGlyZWN0aXZlLFxufSBmcm9tICduZ3gtYm9vdHN0cmFwL2RhdGVwaWNrZXInO1xuaW1wb3J0IHsgTmd4TWF0ZXJpYWxUaW1lcGlja2VyQ29tcG9uZW50IH0gZnJvbSAnbmd4LW1hdGVyaWFsLXRpbWVwaWNrZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItZGF0ZS10aW1lLWZpZWxkcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlLXRpbWUtZmllbGRzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0ZS10aW1lLWZpZWxkcy5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtEYXRlUGlwZV0sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgRGF0ZVRpbWVGaWVsZHNDb21wb25lbnQge1xuICBic0NvbmZpZzogUGFydGlhbDxCc0RhdGVwaWNrZXJDb25maWc+ID0ge1xuICAgIGNvbnRhaW5lckNsYXNzOiAndGhlbWUtY3VzdG9tJyxcbiAgICBpc0FuaW1hdGVkOiB0cnVlLFxuICAgIGFkYXB0aXZlUG9zaXRpb246IHRydWUsXG4gICAgc2hvd1dlZWtOdW1iZXJzOiBmYWxzZSxcbiAgfTtcblxuICBASW5wdXQoKSBxdWVzdGlvbjogYW55ID0ge307XG4gIHJlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XG4gIGhpbnQ6IHN0cmluZyA9ICcnO1xuICBjb3VudDogbnVtYmVyID0gMDtcbiAgbWluVGltZTogc3RyaW5nID0gJyc7XG4gIG1heFRpbWU6IHN0cmluZyA9ICcnO1xuICBkYXRlVHlwZTogc3RyaW5nID0gJyc7XG4gIGZvcm1hdDogc3RyaW5nID0gJyc7XG4gIERhdGVmb3JtYXQ6IHN0cmluZyA9ICcnO1xuICB0aW1lRm9ybWF0OiBzdHJpbmcgPSAnJztcbiAgbWluRGF0ZU9wdGlvbjogc3RyaW5nID0gJyc7XG4gIG1pbkRhdGU6IERhdGUgfCB1bmRlZmluZWQ7XG4gIG1heERhdGVPcHRpb246IHN0cmluZyA9ICcnO1xuICBtYXhEYXRlOiBEYXRlIHwgdW5kZWZpbmVkO1xuICB0b2RheURhdGU6IERhdGUgPSBuZXcgRGF0ZSgpO1xuICBzZWxlY3RlZERhdGU6IERhdGUgfCBudWxsID0gbnVsbDtcbiAgc2VsZWN0ZWRUaW1lOiBzdHJpbmcgPSAnJztcbiAgc2VsZWN0ZWREYXRlUmFuZ2U6IHN0cmluZyA9ICcnO1xuICBzZWxlY3RlZERhdGVBbmRUaW1lOiBEYXRlIHwgbnVsbCA9IG51bGw7XG4gIHZhbGlkYXRpb25GYWlsZWQhOiBib29sZWFuO1xuICB0aW1lVmFsaWRhdGlvbkZhaWxlZCE6IGJvb2xlYW47XG4gIHZhbGlkYXRpb25NZXNzYWdlOiBzdHJpbmcgPSAnJztcbiAgbWF4VGltZU9wdGlvbjogc3RyaW5nID0gJyc7XG4gIG1pblRpbWVPcHRpb246IHN0cmluZyA9ICcnO1xuXG4gIEBWaWV3Q2hpbGQoJ2RhdGVwaWNrZXJZTUQnKSBkYXRlcGlja2VyITogQnNEYXRlcGlja2VyRGlyZWN0aXZlO1xuICBAVmlld0NoaWxkKCdkYXRlcmFuZ2VwaWNrZXInKSBkYXRlUmFuZ2VQaWNrZXIhOiBCc0RhdGVwaWNrZXJEaXJlY3RpdmU7XG4gIEBWaWV3Q2hpbGQoJ2RhdGVBbmRUaW1lUGlja2VyJykgZGF0ZUFuZFRpbWVQaWNrZXIhOiBCc0RhdGVwaWNrZXJEaXJlY3RpdmU7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGF0ZVBpcGU6IERhdGVQaXBlKSB7IH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnZhbHVlQXNzaWduZWQoKTtcbiAgfVxuXG4gIHZhbHVlQXNzaWduZWQoKSB7XG5cbiAgICB0aGlzLmNvdW50ID0gdGhpcy5xdWVzdGlvbi5jb3VudDtcbiAgICB0aGlzLnJlcXVpcmVkID0gdGhpcy5xdWVzdGlvbi5yZXF1aXJlZDtcbiAgICB0aGlzLmhpbnQgPSB0aGlzLnF1ZXN0aW9uLmhpbnQ7XG4gICAgdGhpcy5kYXRlVHlwZSA9IHRoaXMucXVlc3Rpb24uZm9ybUVsZW1lbnQuYXBwZWFyYW5jZS5kYXRlVHlwZTtcbiAgICB0aGlzLm1pbkRhdGVPcHRpb24gPSB0aGlzLnF1ZXN0aW9uLmZvcm1FbGVtZW50LnZhbGlkYXRpb24ubWluRGF0ZU9wdGlvbjtcbiAgICB0aGlzLkRhdGVmb3JtYXQgPSB0aGlzLnF1ZXN0aW9uLmZvcm1FbGVtZW50LmFwcGVhcmFuY2UuZm9ybWF0LnJlcGxhY2UoL0REL2csICdkZCcpO1xuXG5cbiAgICB0aGlzLm1pbkRhdGUgPSB0aGlzLmdldE1pbkRhdGUoKTtcblxuXG4gICAgdGhpcy5tYXhEYXRlT3B0aW9uID0gdGhpcy5xdWVzdGlvbi5mb3JtRWxlbWVudC52YWxpZGF0aW9uLm1heERhdGVPcHRpb247XG4gICAgdGhpcy5tYXhEYXRlID0gdGhpcy5nZXRNYXhEYXRlKCk7XG4gICAgdGhpcy5zZXREYXRlVGltZUZvcm1hdCgpO1xuICAgIGlmICh0aGlzLnF1ZXN0aW9uPy5hbnN3ZXIgJiYgKHRoaXMucXVlc3Rpb24/LmFuc3dlcikubGVuZ3RoID4gMClcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gdGhpcy5xdWVzdGlvbj8uYW5zd2VyO1xuICAgIHRoaXMuc2VsZWN0ZWRUaW1lID0gdGhpcy5xdWVzdGlvbi5hbnN3ZXI7XG4gICAgaWYgKHRoaXMucXVlc3Rpb24/LmFuc3dlciAmJiAodGhpcy5xdWVzdGlvbj8uYW5zd2VyKS5sZW5ndGggPiAwKVxuICAgICAgdGhpcy5zZWxlY3RlZERhdGVBbmRUaW1lID0gbmV3IERhdGUodGhpcy5xdWVzdGlvbi5hbnN3ZXIpO1xuICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2UgPSB0aGlzLnF1ZXN0aW9uLmFuc3dlcjtcbiAgICB0aGlzLm1pblRpbWVPcHRpb24gPSB0aGlzLnF1ZXN0aW9uLmZvcm1FbGVtZW50LnZhbGlkYXRpb24ubWluVGltZU9wdGlvbjtcbiAgICB0aGlzLm1heFRpbWVPcHRpb24gPSB0aGlzLnF1ZXN0aW9uLmZvcm1FbGVtZW50LnZhbGlkYXRpb24ubWF4VGltZU9wdGlvbjtcbiAgICBpZiAodGhpcy5kYXRlVHlwZSAhPT0gJ0RBVEVfQU5EX1RJTUUnKSB7XG4gICAgICB0aGlzLm1pblRpbWUgPSB0aGlzLmdldE1pblRpbWUoKS50b1N0cmluZygpO1xuICAgICAgdGhpcy5tYXhUaW1lID0gdGhpcy5nZXRNYXhUaW1lKCkudG9TdHJpbmcoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZGF0ZVR5cGUgPT09ICdEQVRFX0FORF9USU1FJyAmJiB0aGlzLnF1ZXN0aW9uPy5hbnN3ZXIpIHtcbiAgICAgIGNvbnN0IGRhdGVUaW1lQXJyYXkgPSB0aGlzLnF1ZXN0aW9uLmFuc3dlclxuICAgICAgICA/IHRoaXMucXVlc3Rpb24uYW5zd2VyLnNwbGl0KCcsJylcbiAgICAgICAgOiBbXTsgLy8gRmFsbGJhY2sgdG8gYW4gZW1wdHkgYXJyYXkgaWYgYHRoaXMucXVlc3Rpb24uYW5zd2VyYCBpcyB1bmRlZmluZWRcblxuICAgICAgaWYgKGRhdGVUaW1lQXJyYXkubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGNvbnN0IGZldGNoZWREYXRlID0gZGF0ZVRpbWVBcnJheVswXS50cmltKCk7XG4gICAgICAgIGNvbnN0IGZldGNoZWRUaW1lID0gZGF0ZVRpbWVBcnJheVsxXS50cmltKCk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gZmV0Y2hlZERhdGU7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUaW1lID0gZmV0Y2hlZFRpbWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZvcm1hdHRlZERhdGUgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh0aGlzLnNlbGVjdGVkRGF0ZUFuZFRpbWUsIHRoaXMuRGF0ZWZvcm1hdCk7XG4gICAgICBjb25zdCBmb3JtYXR0ZW1pbkRhdGUgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh0aGlzLm1pbkRhdGUsIHRoaXMuRGF0ZWZvcm1hdCk7XG4gICAgICBjb25zdCBmb3JtYXR0ZW1heERhdGUgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh0aGlzLm1heERhdGUsIHRoaXMuRGF0ZWZvcm1hdCk7XG5cbiAgICAgIGlmIChmb3JtYXR0ZWREYXRlID09PSBmb3JtYXR0ZW1pbkRhdGUpIHtcbiAgICAgICAgdGhpcy5taW5UaW1lID0gdGhpcy5nZXRNaW5UaW1lKCkudG9TdHJpbmcoKTtcbiAgICAgICAgaWYgKHRoaXMudGltZUZvcm1hdCA9PT0gJzEyJykge1xuICAgICAgICAgIHRoaXMubWF4VGltZSA9ICcxMjowMCBwbSc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5tYXhUaW1lID0gJzIzOjU5JztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGZvcm1hdHRlZERhdGUgPT09IGZvcm1hdHRlbWF4RGF0ZSkge1xuICAgICAgICB0aGlzLm1heFRpbWUgPSB0aGlzLmdldE1heFRpbWUoKS50b1N0cmluZygpO1xuICAgICAgICBpZiAodGhpcy50aW1lRm9ybWF0ID09PSAnMTInKSB7XG4gICAgICAgICAgdGhpcy5taW5UaW1lID0gJzEyOjAwIGFtJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLm1pblRpbWUgPSAnMDA6MDAnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZm9ybWF0dGVkRGF0ZSAhPT0gZm9ybWF0dGVtaW5EYXRlICYmIGZvcm1hdHRlZERhdGUgIT09IGZvcm1hdHRlbWF4RGF0ZSkge1xuICAgICAgICBpZiAodGhpcy50aW1lRm9ybWF0ID09PSAnMTInKSB7XG4gICAgICAgICAgdGhpcy5taW5UaW1lID0gJzEyOjAwIGFtJztcbiAgICAgICAgICB0aGlzLm1heFRpbWUgPSAnMTI6MDAgcG0nO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubWluVGltZSA9ICcwMDowMCc7XG4gICAgICAgICAgdGhpcy5tYXhUaW1lID0gJzIzOjU5JztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgfVxuXG5cbiAgICBpZiAoIXRoaXMubWluVGltZSB8fCB0aGlzLm1pblRpbWUubGVuZ3RoID09PSAwKSB7XG4gICAgICBpZiAodGhpcy50aW1lRm9ybWF0ID09PSAnMTInKSB7XG4gICAgICAgIHRoaXMubWluVGltZSA9ICcxMjowMCBhbSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm1pblRpbWUgPSAnMDA6MDAnO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghdGhpcy5tYXhUaW1lIHx8IHRoaXMubWF4VGltZS5sZW5ndGggPT09IDApIHtcbiAgICAgIGlmICh0aGlzLnRpbWVGb3JtYXQgPT09ICcxMicpIHtcbiAgICAgICAgdGhpcy5tYXhUaW1lID0gJzExOjU5IHBtJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubWF4VGltZSA9ICcyMzo1OSc7XG4gICAgICB9XG4gICAgfVxuXG5cblxuICB9XG5cbiAgc2V0RGF0ZVRpbWVGb3JtYXQoKSB7XG4gICAgc3dpdGNoICh0aGlzLmRhdGVUeXBlKSB7XG4gICAgICBjYXNlICdEQVRFX09OTFknOlxuICAgICAgICB0aGlzLmZvcm1hdCA9IHRoaXMucXVlc3Rpb24uZm9ybUVsZW1lbnQuYXBwZWFyYW5jZS5mb3JtYXQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnVElNRV9PTkxZJzpcbiAgICAgICAgdGhpcy50aW1lRm9ybWF0ID0gdGhpcy5xdWVzdGlvbi5mb3JtRWxlbWVudC5hcHBlYXJhbmNlLnRpbWVGb3JtYXQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnREFURV9BTkRfVElNRSc6XG4gICAgICAgIHRoaXMuZm9ybWF0ID0gdGhpcy5xdWVzdGlvbi5mb3JtRWxlbWVudC5hcHBlYXJhbmNlLmZvcm1hdDtcbiAgICAgICAgdGhpcy50aW1lRm9ybWF0ID0gdGhpcy5xdWVzdGlvbi5mb3JtRWxlbWVudC5hcHBlYXJhbmNlLnRpbWVGb3JtYXQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnREFURV9SQU5HRSc6XG4gICAgICAgIHRoaXMuZm9ybWF0ID0gdGhpcy5xdWVzdGlvbi5mb3JtRWxlbWVudC5hcHBlYXJhbmNlLmZvcm1hdDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aGlzLmZvcm1hdCA9ICdERC9NTS9ZWVlZJztcbiAgICB9XG4gIH1cblxuICBnZXRNaW5EYXRlKCk6IERhdGUgfCB1bmRlZmluZWQge1xuICAgIGlmICh0aGlzLm1pbkRhdGVPcHRpb24gPT09ICdDVVJSRU5UX0RBVEUnKSB7XG4gICAgICByZXR1cm4gdGhpcy50b2RheURhdGU7XG4gICAgfSBlbHNlIGlmICh0aGlzLm1pbkRhdGVPcHRpb24gPT09ICdDVVNUT00nKSB7XG4gICAgICByZXR1cm4gbmV3IERhdGUodGhpcy5xdWVzdGlvbi5mb3JtRWxlbWVudC52YWxpZGF0aW9uLm1pbkRhdGUpO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkOyAvLyBSZXR1cm4gdW5kZWZpbmVkIGlmIG5vIHZhbGlkIG9wdGlvblxuICB9XG5cbiAgZ2V0TWF4RGF0ZSgpOiBEYXRlIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodGhpcy5tYXhEYXRlT3B0aW9uID09PSAnQ1VSUkVOVF9EQVRFJykge1xuICAgICAgcmV0dXJuIHRoaXMudG9kYXlEYXRlO1xuICAgIH0gZWxzZSBpZiAodGhpcy5tYXhEYXRlT3B0aW9uID09PSAnQ1VTVE9NJykge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKHRoaXMucXVlc3Rpb24uZm9ybUVsZW1lbnQudmFsaWRhdGlvbi5tYXhEYXRlKTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldE1pblRpbWUoKSB7XG4gICAgaWYgKHRoaXMubWluVGltZU9wdGlvbikge1xuICAgICAgY29uc3QgZm9ybWF0ID0gdGhpcy50aW1lRm9ybWF0ID09PSAnMjQnID8gJ0hIOm1tJyA6ICdoaDptbSBhJztcblxuICAgICAgaWYgKHRoaXMubWluVGltZU9wdGlvbiA9PT0gJ0NVUlJFTlRfVElNRScpIHtcbiAgICAgICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKG5vdywgZm9ybWF0KSB8fCAnJztcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5taW5UaW1lT3B0aW9uID09PSAnQ1VTVE9NJykge1xuICAgICAgICBjb25zdCBjdXN0b21UaW1lID0gdGhpcy5xdWVzdGlvbi5mb3JtRWxlbWVudC52YWxpZGF0aW9uLm1pblRpbWU7XG4gICAgICAgIGNvbnN0IFtob3VycywgbWludXRlc10gPSBjdXN0b21UaW1lLnNwbGl0KCc6Jyk7IC8vIFNwbGl0IGJ5IGNvbG9uIHRvIGdldCBob3VycyBhbmQgbWludXRlc1xuXG4gICAgICAgIC8vIENyZWF0ZSBhIERhdGUgb2JqZWN0IHdpdGggYSBmaXhlZCBkYXRlIGFuZCBjdXN0b20gdGltZVxuICAgICAgICBjb25zdCBjdXN0b21EYXRlID0gbmV3IERhdGUoKTtcbiAgICAgICAgY3VzdG9tRGF0ZS5zZXRIb3VycyhwYXJzZUludChob3VycywgMTApLCBwYXJzZUludChtaW51dGVzLCAxMCksIDAsIDApOyAvLyBTZXQgaG91cnMgYW5kIG1pbnV0ZXNcblxuICAgICAgICByZXR1cm4gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oY3VzdG9tRGF0ZSwgZm9ybWF0KSB8fCAnJztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBFbnN1cmUgYSBkZWZhdWx0IHJldHVybiBpZiBubyBjb25kaXRpb24gaXMgbWV0XG4gICAgcmV0dXJuICcnO1xuICB9XG5cblxuICBnZXRNYXhUaW1lKCkge1xuICAgIGlmICh0aGlzLm1heFRpbWVPcHRpb24pIHtcbiAgICAgIGNvbnN0IGZvcm1hdCA9IHRoaXMudGltZUZvcm1hdCA9PT0gJzI0JyA/ICdISDptbScgOiAnaGg6bW0gYSc7XG4gICAgICBpZiAodGhpcy5tYXhUaW1lT3B0aW9uID09PSAnQ1VSUkVOVF9USU1FJykge1xuICAgICAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0obm93LCBmb3JtYXQpIHx8ICcnO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAodGhpcy5tYXhUaW1lT3B0aW9uID09PSAnQ1VTVE9NJykge1xuICAgICAgICBjb25zdCBjdXN0b21UaW1lID0gdGhpcy5xdWVzdGlvbi5mb3JtRWxlbWVudC52YWxpZGF0aW9uLm1heFRpbWU7XG4gICAgICAgIGNvbnN0IFtob3VycywgbWludXRlc10gPSBjdXN0b21UaW1lLnNwbGl0KCc6Jyk7IC8vIFNwbGl0IGJ5IGNvbG9uIHRvIGdldCBob3VycyBhbmQgbWludXRlc1xuXG4gICAgICAgIC8vIENyZWF0ZSBhIERhdGUgb2JqZWN0IHdpdGggYSBmaXhlZCBkYXRlIGFuZCBjdXN0b20gdGltZVxuICAgICAgICBjb25zdCBjdXN0b21EYXRlID0gbmV3IERhdGUoKTtcbiAgICAgICAgY3VzdG9tRGF0ZS5zZXRIb3VycyhwYXJzZUludChob3VycywgMTApLCBwYXJzZUludChtaW51dGVzLCAxMCksIDAsIDApOyAvLyBTZXQgaG91cnMgYW5kIG1pbnV0ZXNcblxuICAgICAgICByZXR1cm4gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oY3VzdG9tRGF0ZSwgZm9ybWF0KSB8fCAnJztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBvcGVuRGF0ZVBpY2tlcigpIHsgICAgXG4gICAgdGhpcy5kYXRlcGlja2VyLnRvZ2dsZSgpO1xuICB9XG5cbiAgb3BlbkRhdGVSYW5nZVBpY2tlcigpIHtcbiAgICB0aGlzLmRhdGVSYW5nZVBpY2tlci50b2dnbGUoKTtcbiAgfVxuXG4gIG9wZW5EYXRlQW5kVGltZVBpY2tlcigpIHtcbiAgICB0aGlzLmRhdGVBbmRUaW1lUGlja2VyLnRvZ2dsZSgpO1xuICB9XG5cbiAgY2xvc2VEYXRlcGlja2VyKCkge1xuICAgIGlmICh0aGlzLmRhdGVBbmRUaW1lUGlja2VyKSB7XG4gICAgICB0aGlzLmRhdGVBbmRUaW1lUGlja2VyLmhpZGUoKTsgLy8gQ2xvc2UgdGhlIGRhdGVwaWNrZXJcbiAgICB9XG4gIH1cblxuXG5cblxuICB2YWxpZGF0ZUZpZWxkKCkge1xuICAgIGlmICh0aGlzLmRhdGVUeXBlID09PSAnREFURV9PTkxZJykge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWREYXRlKSB7XG4gICAgICAgIHRoaXMucXVlc3Rpb24uYW5zd2VyID0gdGhpcy5mb3JtYXREYXRlKHRoaXMuc2VsZWN0ZWREYXRlLnRvU3RyaW5nKCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5xdWVzdGlvbi5hbnN3ZXIgPSAnJztcbiAgICAgIH1cblxuICAgICAgdGhpcy52YWxpZGF0ZURhdGVPbmx5KClcbiAgICB9XG4gICAgZWxzZSBpZiAodGhpcy5kYXRlVHlwZSA9PT0gJ1RJTUVfT05MWScpIHtcbiAgICAgIHRoaXMucXVlc3Rpb24uYW5zd2VyID0gU3RyaW5nKHRoaXMuc2VsZWN0ZWRUaW1lKTtcbiAgICAgIHRoaXMudmFsaWRhdGVUaW1lT25seSgpXG4gICAgfVxuICAgIGVsc2UgaWYgKHRoaXMuZGF0ZVR5cGUgPT09ICdEQVRFX0FORF9USU1FJykge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWREYXRlQW5kVGltZSkge1xuICAgICAgICB0aGlzLnF1ZXN0aW9uLmFuc3dlciA9IHRoaXMuZm9ybWF0RGF0ZSh0aGlzLnNlbGVjdGVkRGF0ZUFuZFRpbWUudG9TdHJpbmcoKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnF1ZXN0aW9uLmFuc3dlciA9ICcnO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnZhbGlkYXRlRGF0ZUFuZFRpbWUoKVxuXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5xdWVzdGlvbi5hbnN3ZXIgPSB0aGlzLmZvcm1hdERhdGUodGhpcy5zZWxlY3RlZERhdGVSYW5nZSk7XG4gICAgICB0aGlzLnZhbGlkYXRlRGF0ZVJhbmdlKClcbiAgICB9XG4gIH1cblxuICBmb3JtYXREYXRlKGRhdGU6IHN0cmluZyB8IERhdGUsIHR5cGU6IHN0cmluZyA9ICdkYXRlVGltZScpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAodGhpcy5kYXRlVHlwZSkge1xuICAgICAgY2FzZSAnREFURV9PTkxZJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHRoaXMuc2VsZWN0ZWREYXRlLCB0aGlzLkRhdGVmb3JtYXQpIHx8ICcnO1xuICAgICAgICBjYXNlICdEQVRFX0FORF9USU1FJzpcbiAgICAgICAgICBjb25zdCBmb3JtYXR0ZWREYXRlID0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odGhpcy5zZWxlY3RlZERhdGVBbmRUaW1lLCB0aGlzLkRhdGVmb3JtYXQpO1xuICAgICAgICAgIGNvbnN0IGZvcm1hdHRlbWluRGF0ZSA9IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHRoaXMubWluRGF0ZSwgdGhpcy5EYXRlZm9ybWF0KTtcbiAgICAgICAgICBjb25zdCBmb3JtYXR0ZW1heERhdGUgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh0aGlzLm1heERhdGUsIHRoaXMuRGF0ZWZvcm1hdCk7XG4gICAgICAgICAgXG4gICAgICAgICAgaWYgKGZvcm1hdHRlZERhdGUgPT09IGZvcm1hdHRlbWluRGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5taW5UaW1lID0gdGhpcy5nZXRNaW5UaW1lKCkudG9TdHJpbmcoKTtcbiAgICAgICAgICAgIHRoaXMubWF4VGltZSA9IHRoaXMudGltZUZvcm1hdCA9PT0gJzEyJyA/ICcxMTo1OSBwbScgOiAnMjM6NTknO1xuICAgICAgICAgIH1cbiAgICAgICAgICBcbiAgICAgICAgICBpZiAoZm9ybWF0dGVkRGF0ZSA9PT0gZm9ybWF0dGVtYXhEYXRlKSB7XG4gICAgICAgICAgICB0aGlzLm1heFRpbWUgPSB0aGlzLmdldE1heFRpbWUoKS50b1N0cmluZygpO1xuICAgICAgICAgICAgdGhpcy5taW5UaW1lID0gdGhpcy50aW1lRm9ybWF0ID09PSAnMTInID8gJzEyOjAwIGFtJyA6ICcwMDowMCc7XG4gICAgICAgICAgfVxuICAgICAgICAgIFxuICAgICAgICAgIGlmIChmb3JtYXR0ZWREYXRlICE9PSBmb3JtYXR0ZW1pbkRhdGUgJiYgZm9ybWF0dGVkRGF0ZSAhPT0gZm9ybWF0dGVtYXhEYXRlKSB7XG4gICAgICAgICAgICB0aGlzLm1pblRpbWUgPSB0aGlzLnRpbWVGb3JtYXQgPT09ICcxMicgPyAnMTI6MDAgYW0nIDogJzAwOjAwJztcbiAgICAgICAgICAgIHRoaXMubWF4VGltZSA9IHRoaXMudGltZUZvcm1hdCA9PT0gJzEyJyA/ICcxMTo1OSBwbScgOiAnMjM6NTknO1xuICAgICAgICAgIH1cbiAgICAgICAgICBcbiAgICAgICAgICBjb25zdCBmb3JtYXR0ZWRUaW1lID0gdGhpcy5zZWxlY3RlZFRpbWUgfHwgJyc7ICAvLyBFbnN1cmUgc2VsZWN0ZWRUaW1lIGlzIGhhbmRsZWQgcHJvcGVybHlcbiAgICAgICAgICBpZiAoZm9ybWF0dGVkRGF0ZSAmJiBmb3JtYXR0ZWRUaW1lKSB7XG4gICAgICAgICAgICByZXR1cm4gYCR7Zm9ybWF0dGVkRGF0ZX0sICR7Zm9ybWF0dGVkVGltZX1gO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICBjYXNlICdEQVRFX1JBTkdFJzpcblxuICAgICAgICBjb25zdCBkYXRlcyA9IGRhdGUgYXMgdW5rbm93biBhcyBEYXRlW107XG5cbiAgICAgICAgLy8gRW5zdXJlIGRhdGVzIGlzIGRlZmluZWQgYW5kIGlzIGFuIGFycmF5XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGVzKSAmJiBkYXRlcy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICBjb25zdCBzdGFydCA9IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGRhdGVzWzBdLCB0aGlzLkRhdGVmb3JtYXQpO1xuICAgICAgICAgIGNvbnN0IGVuZCA9IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGRhdGVzWzFdLCB0aGlzLkRhdGVmb3JtYXQpO1xuICAgICAgICAgIHJldHVybiBgJHtzdGFydH0gLSAke2VuZH1gO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICcnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGRhdGUsIHRoaXMuRGF0ZWZvcm1hdCkgfHwgJyc7XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGVEYXRlT25seSgpIHtcbiAgICB0aGlzLnZhbGlkYXRpb25GYWlsZWQgPSBmYWxzZTtcbiAgICB0aGlzLnZhbGlkYXRpb25NZXNzYWdlID0gJyc7XG4gICAgaWYgKHRoaXMucmVxdWlyZWQgJiYgIXRoaXMuc2VsZWN0ZWREYXRlKSB7XG4gICAgICB0aGlzLnZhbGlkYXRpb25GYWlsZWQgPSB0cnVlO1xuICAgICAgdGhpcy52YWxpZGF0aW9uTWVzc2FnZSA9ICdUaGlzIGlzIGEgcmVxdWlyZWQgcXVlc3Rpb24nO1xuICAgICAgdGhpcy5xdWVzdGlvbi52YWxpZGF0aW9uID0gZmFsc2U7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5xdWVzdGlvbi52YWxpZGF0aW9uID0gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgdmFsaWRhdGVUaW1lT25seSgpIHtcbiAgICB0aGlzLnZhbGlkYXRpb25GYWlsZWQgPSBmYWxzZTtcbiAgICB0aGlzLnZhbGlkYXRpb25NZXNzYWdlID0gJyc7XG4gICAgaWYgKHRoaXMucmVxdWlyZWQgJiYgIXRoaXMuc2VsZWN0ZWRUaW1lKSB7XG4gICAgICB0aGlzLnZhbGlkYXRpb25GYWlsZWQgPSB0cnVlO1xuICAgICAgdGhpcy52YWxpZGF0aW9uTWVzc2FnZSA9ICdUaGlzIGlzIGEgcmVxdWlyZWQgcXVlc3Rpb24nOztcbiAgICAgIHRoaXMucXVlc3Rpb24udmFsaWRhdGlvbiA9IGZhbHNlO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMucXVlc3Rpb24udmFsaWRhdGlvbiA9IHRydWU7XG4gICAgfVxuICB9XG4gIHZhbGlkYXRlRGF0ZVJhbmdlKCkge1xuICAgIHRoaXMudmFsaWRhdGlvbkZhaWxlZCA9IGZhbHNlO1xuICAgIHRoaXMudmFsaWRhdGlvbk1lc3NhZ2UgPSAnJztcbiAgICBpZiAodGhpcy5yZXF1aXJlZCAmJiAhdGhpcy5zZWxlY3RlZERhdGVSYW5nZSkge1xuICAgICAgdGhpcy52YWxpZGF0aW9uRmFpbGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMudmFsaWRhdGlvbk1lc3NhZ2UgPSAnVGhpcyBpcyBhIHJlcXVpcmVkIHF1ZXN0aW9uJztcbiAgICAgIHRoaXMucXVlc3Rpb24udmFsaWRhdGlvbiA9IGZhbHNlO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMucXVlc3Rpb24udmFsaWRhdGlvbiA9IHRydWU7XG4gICAgfVxuICB9XG4gIHZhbGlkYXRlRGF0ZUFuZFRpbWUoKSB7XG4gICAgdGhpcy52YWxpZGF0aW9uRmFpbGVkID0gZmFsc2U7XG4gICAgdGhpcy50aW1lVmFsaWRhdGlvbkZhaWxlZCA9IGZhbHNlO1xuICAgIHRoaXMudmFsaWRhdGlvbk1lc3NhZ2UgPSAnJztcbiAgICBpZiAodGhpcy5yZXF1aXJlZCAmJiAhdGhpcy5zZWxlY3RlZERhdGVBbmRUaW1lKSB7XG4gICAgICB0aGlzLnZhbGlkYXRpb25GYWlsZWQgPSB0cnVlO1xuICAgICAgdGhpcy52YWxpZGF0aW9uTWVzc2FnZSA9ICdUaGlzIGlzIGEgcmVxdWlyZWQgcXVlc3Rpb24nO1xuICAgICAgdGhpcy5xdWVzdGlvbi52YWxpZGF0aW9uID0gZmFsc2U7XG4gICAgfVxuICAgIGVsc2UgaWYgKHRoaXMucmVxdWlyZWQgJiYgIXRoaXMuc2VsZWN0ZWRUaW1lKSB7XG4gICAgICB0aGlzLnRpbWVWYWxpZGF0aW9uRmFpbGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMudmFsaWRhdGlvbk1lc3NhZ2UgPSAnVGhpcyBpcyBhIHJlcXVpcmVkIHF1ZXN0aW9uJztcbiAgICAgIHRoaXMucXVlc3Rpb24udmFsaWRhdGlvbiA9IGZhbHNlO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMucXVlc3Rpb24udmFsaWRhdGlvbiA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgY29udmVydFRvSVNPRGF0ZShcbiAgICBkYXRlSW5wdXQ6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXSB8IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWRcbiAgKTogRGF0ZSB8IG51bGwge1xuXG5cbiAgICBpZiAoIWRhdGVJbnB1dCkge1xuXG5cbiAgICAgIHJldHVybiBudWxsOyAvLyBSZXR1cm4gbnVsbCBpZiBkYXRlSW5wdXQgaXMgbnVsbCwgdW5kZWZpbmVkLCBvciBhbnkgZmFsc3kgdmFsdWVcbiAgICB9XG5cbiAgICBsZXQgeWVhciwgbW9udGgsIGRheTtcblxuICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGVJbnB1dCkpIHtcbiAgICAgIC8vIEV4dHJhY3QgeWVhciwgbW9udGgsIGFuZCBkYXkgZnJvbSBhcnJheSBpbnB1dFxuICAgICAgW3llYXIsIG1vbnRoLCBkYXldID0gZGF0ZUlucHV0O1xuXG4gICAgICAvLyBWYWxpZGF0ZSB0aGUgYXJyYXkgZm9ybWF0XG4gICAgICBpZiAoXG4gICAgICAgIHR5cGVvZiB5ZWFyICE9PSAnbnVtYmVyJyB8fFxuICAgICAgICB0eXBlb2YgbW9udGggIT09ICdudW1iZXInIHx8XG4gICAgICAgIHR5cGVvZiBkYXkgIT09ICdudW1iZXInIHx8XG4gICAgICAgIGlzTmFOKHllYXIpIHx8XG4gICAgICAgIGlzTmFOKG1vbnRoKSB8fFxuICAgICAgICBpc05hTihkYXkpIHx8XG4gICAgICAgICFOdW1iZXIuaXNJbnRlZ2VyKHllYXIpIHx8XG4gICAgICAgICFOdW1iZXIuaXNJbnRlZ2VyKG1vbnRoKSB8fFxuICAgICAgICAhTnVtYmVyLmlzSW50ZWdlcihkYXkpIHx8XG4gICAgICAgIG1vbnRoIDwgMSB8fFxuICAgICAgICBtb250aCA+IDEyIHx8XG4gICAgICAgIGRheSA8IDEgfHxcbiAgICAgICAgZGF5ID4gMzFcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBkYXRlSW5wdXQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAvLyBDaGVjayBpZiB0aGUgc3RyaW5nIG1hdGNoZXMgdGhlIFlZWVktTU0tREQgZm9ybWF0XG4gICAgICBjb25zdCBkYXRlUGFydHMgPSBkYXRlSW5wdXQuc3BsaXQoJy0nKTtcbiAgICAgIGlmIChkYXRlUGFydHMubGVuZ3RoICE9PSAzKSByZXR1cm4gbnVsbDtcblxuICAgICAgW3llYXIsIG1vbnRoLCBkYXldID0gZGF0ZVBhcnRzLm1hcChOdW1iZXIpO1xuXG4gICAgICAvLyBWYWxpZGF0ZSB0aGUgcGFyc2VkIHBhcnRzXG4gICAgICBpZiAoXG4gICAgICAgIGlzTmFOKHllYXIpIHx8XG4gICAgICAgIGlzTmFOKG1vbnRoKSB8fFxuICAgICAgICBpc05hTihkYXkpIHx8XG4gICAgICAgICFOdW1iZXIuaXNJbnRlZ2VyKHllYXIpIHx8XG4gICAgICAgICFOdW1iZXIuaXNJbnRlZ2VyKG1vbnRoKSB8fFxuICAgICAgICAhTnVtYmVyLmlzSW50ZWdlcihkYXkpIHx8XG4gICAgICAgIG1vbnRoIDwgMSB8fFxuICAgICAgICBtb250aCA+IDEyIHx8XG4gICAgICAgIGRheSA8IDEgfHxcbiAgICAgICAgZGF5ID4gMzFcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7IC8vIFVuc3VwcG9ydGVkIGlucHV0IHR5cGVcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgYSBEYXRlIG9iamVjdCAobW9udGggaXMgMC1iYXNlZCwgc28gc3VidHJhY3QgMSlcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoeWVhciwgbW9udGggLSAxLCBkYXkpO1xuXG4gICAgLy8gVmVyaWZ5IGlmIHRoZSBEYXRlIG9iamVjdCBtYXRjaGVzIHRoZSBwcm92aWRlZCB5ZWFyLCBtb250aCwgYW5kIGRheVxuICAgIGlmIChcbiAgICAgIGRhdGUuZ2V0RnVsbFllYXIoKSAhPT0geWVhciB8fFxuICAgICAgZGF0ZS5nZXRNb250aCgpICE9PSBtb250aCAtIDEgfHxcbiAgICAgIGRhdGUuZ2V0RGF0ZSgpICE9PSBkYXlcbiAgICApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBkYXRlO1xuICB9XG5cbn1cbiIsIjxkaXYgIGNsYXNzPVwibWItNSBweC0zXCI+XG4gIDxkaXYgY2xhc3M9XCJpbnB1dC13cmFwcGVyIG1iLTJcIj5cbiAgICA8ZGl2IFtpbm5lckhUTUxdPVwicXVlc3Rpb24ucXVlc3Rpb25OdW1iZXJcIj48L2Rpdj5cbiAgICAmbmJzcDsmbmJzcDsgPGxhYmVsPnt7IHF1ZXN0aW9uLnF1ZXN0aW9uIH19PC9sYWJlbFxuICAgID4mbmJzcDtcbiAgICA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyXCIgKm5nSWY9XCJyZXF1aXJlZFwiPio8L3NwYW4+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJzdmctd3JhcHBlciBtYi0yIGhpbnRJY29uXCJcbiAgICAgIFthdHRyLmRhdGEtdGl0bGVdPVwiaGludFwiXG4gICAgICAqbmdJZj1cImhpbnRcIlxuICAgID5cbiAgICAgIDxzdmdcbiAgICAgICAgY2xhc3M9XCJoaW50U3ZnXCJcbiAgICAgICAgdmlld0JveD1cIjAgMCAzMCAzMFwiXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgIGQ9XCJNMTUgMjYuMjVWMjYuMjVDOC43ODYyNSAyNi4yNSAzLjc1IDIxLjIxMzggMy43NSAxNVYxNUMzLjc1IDguNzg2MjUgOC43ODYyNSAzLjc1IDE1IDMuNzVWMy43NUMyMS4yMTM4IDMuNzUgMjYuMjUgOC43ODYyNSAyNi4yNSAxNVYxNUMyNi4yNSAyMS4yMTM4IDIxLjIxMzggMjYuMjUgMTUgMjYuMjVaXCJcbiAgICAgICAgICBzdHJva2U9XCIjMzIzMjMyXCJcbiAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjVcIlxuICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgLz5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICBkPVwiTTE1IDE2LjU2MjNWMTYuMjQ5OEMxNSAxNS4yMjg1IDE1LjYzMTIgMTQuNjc0OCAxNi4yNjM3IDE0LjI0OThDMTYuODgxMiAxMy44MzM1IDE3LjUgMTMuMjkxIDE3LjUgMTIuMjkxQzE3LjUgMTAuOTA5OCAxNi4zODEzIDkuNzkxMDIgMTUgOS43OTEwMkMxMy42MTg3IDkuNzkxMDIgMTIuNSAxMC45MDk4IDEyLjUgMTIuMjkxXCJcbiAgICAgICAgICBzdHJva2U9XCIjMzIzMjMyXCJcbiAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjVcIlxuICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgLz5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICBkPVwiTTE0Ljk5ODggMjBDMTQuODI2MyAyMCAxNC42ODYzIDIwLjE0IDE0LjY4NzUgMjAuMzEyNUMxNC42ODc1IDIwLjQ4NSAxNC44Mjc1IDIwLjYyNSAxNSAyMC42MjVDMTUuMTcyNSAyMC42MjUgMTUuMzEyNSAyMC40ODUgMTUuMzEyNSAyMC4zMTI1QzE1LjMxMjUgMjAuMTQgMTUuMTcyNSAyMCAxNC45OTg4IDIwXCJcbiAgICAgICAgICBzdHJva2U9XCIjMzIzMjMyXCJcbiAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjVcIlxuICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGVUeXBlID09PSAnREFURV9PTkxZJ1wiPlxuICAgIDwhLS0gRGF0ZSBvbmx5IHBpY2tlciAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtY29udGFpbmVyXCI+XG4gICAgICA8aW5wdXRcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgaGVpZ2h0XCJcbiAgICAgICAgI2RhdGVwaWNrZXJZTUQ9XCJic0RhdGVwaWNrZXJcIlxuICAgICAgICBic0RhdGVwaWNrZXJcbiAgICAgICAgW21pbkRhdGVdPVwibWluRGF0ZSA/IG1pbkRhdGUgOiB1bmRlZmluZWRcIlxuICAgICAgICBbbWF4RGF0ZV09XCJtYXhEYXRlID8gbWF4RGF0ZSA6IHVuZGVmaW5lZFwiXG4gICAgICAgIFtic0NvbmZpZ109XCJ7IGRhdGVJbnB1dEZvcm1hdDogZm9ybWF0LCBjb250YWluZXJDbGFzczogJ3RoZW1lLWN1c3RvbScgfVwiXG4gICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWREYXRlXCJcbiAgICAgICAgKGJsdXIpPVwidmFsaWRhdGVGaWVsZCgpXCJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidmFsaWRhdGVGaWVsZCgpXCJcbiAgICAgICAgW2NsYXNzLmludmFsaWRdPVwidmFsaWRhdGlvbkZhaWxlZFwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IGRhdGVcIlxuICAgICAgLz5cbiAgICAgIDxpXG4gICAgICAgIGNsYXNzPVwiZmEtc29saWQgZmEtY2FsZW5kYXItZGF5cyBjYWxlbmRhci1pY29uIHRleHQtcHJpbWFyeSBmcy01XCJcbiAgICAgICAgKGNsaWNrKT1cIm9wZW5EYXRlUGlja2VyKClcIlxuICAgICAgPjwvaT5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwidmFsaWRhdGlvbkZhaWxlZFwiIGNsYXNzPVwidGV4dC1kYW5nZXIgbXQtMlwiPlxuICAgICAgPHN2Z1xuICAgICAgICBjbGFzcz1cInZhbGlkYXRpb25TdmdcIlxuICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICA+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgZD1cIk0xMi4wMDEgMTYuNzVDMTIuMTM5IDE2Ljc1IDEyLjI1MSAxNi42MzggMTIuMjUgMTYuNUMxMi4yNSAxNi4zNjIgMTIuMTM4IDE2LjI1IDEyIDE2LjI1QzExLjg2MiAxNi4yNSAxMS43NSAxNi4zNjIgMTEuNzUgMTYuNUMxMS43NSAxNi42MzggMTEuODYyIDE2Ljc1IDEyLjAwMSAxNi43NVwiXG4gICAgICAgICAgc3Ryb2tlPVwid2hpdGVcIlxuICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiXG4gICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAvPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgIGQ9XCJNMTIgMjFDNy4wMjkgMjEgMyAxNi45NzEgMyAxMkMzIDcuMDI5IDcuMDI5IDMgMTIgM0MxNi45NzEgMyAyMSA3LjAyOSAyMSAxMkMyMSAxNi45NzEgMTYuOTcxIDIxIDEyIDIxWlwiXG4gICAgICAgICAgZmlsbD1cIiNGRjAwMDBcIlxuICAgICAgICAgIHN0cm9rZT1cIiNGRjAwMDBcIlxuICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiXG4gICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAvPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGQ9XCJNMTIgMTIuNzVMMTIgNy43NVwiXG4gICAgICAgICAgc3Ryb2tlPVwid2hpdGVcIlxuICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiXG4gICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAvPlxuICAgICAgICA8Y2lyY2xlIGN4PVwiMTJcIiBjeT1cIjE2XCIgcj1cIjFcIiBmaWxsPVwid2hpdGVcIiAvPlxuICAgICAgPC9zdmc+XG4gICAgICB7eyB2YWxpZGF0aW9uTWVzc2FnZSB9fVxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0ZVR5cGUgPT09ICdUSU1FX09OTFknXCI+XG4gICAgPCEtLSBUaW1lIHBpY2tlciAtLT5cblxuXG48ZGl2IGNsYXNzPVwiaW5wdXQtY29udGFpbmVyXCI+XG4gICAgICA8aW5wdXRcbiAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGhlaWdodCBhcHBlYXJhbmNlSW5wdXQgbXQtM1wiXG4gICAgICBhcmlhLWxhYmVsPVwiU2VsZWN0IHRpbWVcIlxuICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgdGltZVwiXG4gICAgICByZWFkb25seVxuICAgICAgW2Zvcm1hdF09XCJ0aW1lRm9ybWF0PT09JzI0Jz8yNDoxMlwiXG4gICAgICBbbmd4VGltZXBpY2tlcl09XCJmdWxsVGltZTNcIlxuICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFRpbWVcIlxuICAgICAgW21heF09XCJtYXhUaW1lXCJcbiAgICAgIFttaW5dPVwibWluVGltZVwiXG4gICAgICAobmdNb2RlbENoYW5nZSk9XCJ2YWxpZGF0ZUZpZWxkKClcIlxuICAgICAgW2NsYXNzLmludmFsaWRdPVwidmFsaWRhdGlvbkZhaWxlZFwiXG4gIC8+XG4gIFxuICA8aVxuICBpZD1cInN0YXJ0RGF0ZUljb25cIlxuICBjbGFzcz1cImZhLXNvbGlkIGZhLWNsb2NrIHRleHQtcHJpbWFyeSBmcy02IGNsb2NrLWljb25cIlxuICAoY2xpY2spPVwiZnVsbFRpbWUzLm9wZW4oKVwiXG4gIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyO1wiXG4+PC9pPlxuICA8bmd4LW1hdGVyaWFsLXRpbWVwaWNrZXIgI2Z1bGxUaW1lMz48L25neC1tYXRlcmlhbC10aW1lcGlja2VyPlxuPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cInZhbGlkYXRpb25GYWlsZWRcIiBjbGFzcz1cInRleHQtZGFuZ2VyIG10LTJcIj5cbiAgICAgIDxzdmdcbiAgICAgICAgY2xhc3M9XCJ2YWxpZGF0aW9uU3ZnXCJcbiAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGQ9XCJNMTIuMDAxIDE2Ljc1QzEyLjEzOSAxNi43NSAxMi4yNTEgMTYuNjM4IDEyLjI1IDE2LjVDMTIuMjUgMTYuMzYyIDEyLjEzOCAxNi4yNSAxMiAxNi4yNUMxMS44NjIgMTYuMjUgMTEuNzUgMTYuMzYyIDExLjc1IDE2LjVDMTEuNzUgMTYuNjM4IDExLjg2MiAxNi43NSAxMi4wMDEgMTYuNzVcIlxuICAgICAgICAgIHN0cm9rZT1cIndoaXRlXCJcbiAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjVcIlxuICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgLz5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICBmaWxsLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICBkPVwiTTEyIDIxQzcuMDI5IDIxIDMgMTYuOTcxIDMgMTJDMyA3LjAyOSA3LjAyOSAzIDEyIDNDMTYuOTcxIDMgMjEgNy4wMjkgMjEgMTJDMjEgMTYuOTcxIDE2Ljk3MSAyMSAxMiAyMVpcIlxuICAgICAgICAgIGZpbGw9XCIjRkYwMDAwXCJcbiAgICAgICAgICBzdHJva2U9XCIjRkYwMDAwXCJcbiAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjVcIlxuICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgLz5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICBkPVwiTTEyIDEyLjc1TDEyIDcuNzVcIlxuICAgICAgICAgIHN0cm9rZT1cIndoaXRlXCJcbiAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjVcIlxuICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgLz5cbiAgICAgICAgPGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxNlwiIHI9XCIxXCIgZmlsbD1cIndoaXRlXCIgLz5cbiAgICAgIDwvc3ZnPlxuICAgICAge3sgdmFsaWRhdGlvbk1lc3NhZ2UgfX1cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGVUeXBlID09PSAnREFURV9BTkRfVElNRSdcIj5cbiAgICA8IS0tIERhdGUgYW5kIHRpbWUgcGlja2VyIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1jb250YWluZXJcIj5cbiAgICAgIDxpbnB1dFxuICAgICAgICAjZGF0ZUFuZFRpbWVQaWNrZXI9XCJic0RhdGVwaWNrZXJcIlxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGhlaWdodFwiXG4gICAgICAgIFttaW5EYXRlXT1cIm1pbkRhdGUgPyBtaW5EYXRlIDogdW5kZWZpbmVkXCJcbiAgICAgICAgW21heERhdGVdPVwibWF4RGF0ZSA/IG1heERhdGUgOiB1bmRlZmluZWRcIlxuICAgICAgICBbYnNDb25maWddPVwie1xuICAgICAgICAgIGRhdGVJbnB1dEZvcm1hdDogZm9ybWF0LCBjb250YWluZXJDbGFzczogJ3RoZW1lLWN1c3RvbScgXG4gICAgICAgIH1cIlxuICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBkYXRlXCJcbiAgICAgICAgYnNEYXRlcGlja2VyXG4gICAgICAgIFtjbGFzcy5pbnZhbGlkXT1cInZhbGlkYXRpb25GYWlsZWRcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkRGF0ZUFuZFRpbWVcIlxuICAgICAgICAoYmx1cik9XCJ2YWxpZGF0ZUZpZWxkKClcIlxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ2YWxpZGF0ZUZpZWxkKClcIlxuICAgICAgLz5cbiAgICAgIDxpXG4gICAgICAgIGNsYXNzPVwiZmEtc29saWQgZmEtY2FsZW5kYXItZGF5cyBjYWxlbmRhci1pY29uIHRleHQtcHJpbWFyeSBmcy01XCJcbiAgICAgICAgKGNsaWNrKT1cIm9wZW5EYXRlQW5kVGltZVBpY2tlcigpXCJcbiAgICAgID48L2k+XG4gICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtY29udGFpbmVyXCIgKm5nSWY9XCJzZWxlY3RlZERhdGVBbmRUaW1lICYmIHNlbGVjdGVkRGF0ZUFuZFRpbWUgIT0gbnVsbFwiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGhlaWdodCBhcHBlYXJhbmNlSW5wdXQgbXQtM1wiXG4gICAgICAgIGFyaWEtbGFiZWw9XCJTZWxlY3QgdGltZVwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IHRpbWVcIlxuICAgICAgICByZWFkb25seVxuICAgICAgICBbZm9ybWF0XT1cInRpbWVGb3JtYXQ9PT0nMjQnPzI0OjEyXCJcbiAgICAgICAgW25neFRpbWVwaWNrZXJdPVwiZnVsbFRpbWU0XCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFRpbWVcIlxuICAgICAgICBbbWF4XT1cIm1heFRpbWVcIlxuICAgICAgICBbbWluXT1cIm1pblRpbWVcIlxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ2YWxpZGF0ZUZpZWxkKClcIlxuICAgICAgICAoZm9jdXMpPVwiY2xvc2VEYXRlcGlja2VyKClcIlxuICAgICAgICBbY2xhc3MuaW52YWxpZF09XCJ0aW1lVmFsaWRhdGlvbkZhaWxlZFwiXG4gICAgLz5cbiAgICBcbiAgICA8aVxuICAgIGlkPVwic3RhcnREYXRlSWNvblwiXG4gICAgY2xhc3M9XCJmYS1zb2xpZCBmYS1jbG9jayB0ZXh0LXByaW1hcnkgZnMtNiBjbG9jay1pY29uXCJcbiAgICAoY2xpY2spPVwiZnVsbFRpbWU0Lm9wZW4oKVwiXG4gICAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7XCJcbiAgPjwvaT5cbiAgICA8bmd4LW1hdGVyaWFsLXRpbWVwaWNrZXIgI2Z1bGxUaW1lND48L25neC1tYXRlcmlhbC10aW1lcGlja2VyPlxuICA8L2Rpdj5cbiAgIFxuICAgIDxkaXYgKm5nSWY9XCJ2YWxpZGF0aW9uRmFpbGVkIHx8IHRpbWVWYWxpZGF0aW9uRmFpbGVkXCIgY2xhc3M9XCJ0ZXh0LWRhbmdlciBtdC0yXCI+XG4gICAgICA8c3ZnXG4gICAgICAgIGNsYXNzPVwidmFsaWRhdGlvblN2Z1wiXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgID5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICBkPVwiTTEyLjAwMSAxNi43NUMxMi4xMzkgMTYuNzUgMTIuMjUxIDE2LjYzOCAxMi4yNSAxNi41QzEyLjI1IDE2LjM2MiAxMi4xMzggMTYuMjUgMTIgMTYuMjVDMTEuODYyIDE2LjI1IDExLjc1IDE2LjM2MiAxMS43NSAxNi41QzExLjc1IDE2LjYzOCAxMS44NjIgMTYuNzUgMTIuMDAxIDE2Ljc1XCJcbiAgICAgICAgICBzdHJva2U9XCJ3aGl0ZVwiXG4gICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS41XCJcbiAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgIC8+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgZmlsbC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgZD1cIk0xMiAyMUM3LjAyOSAyMSAzIDE2Ljk3MSAzIDEyQzMgNy4wMjkgNy4wMjkgMyAxMiAzQzE2Ljk3MSAzIDIxIDcuMDI5IDIxIDEyQzIxIDE2Ljk3MSAxNi45NzEgMjEgMTIgMjFaXCJcbiAgICAgICAgICBmaWxsPVwiI0ZGMDAwMFwiXG4gICAgICAgICAgc3Ryb2tlPVwiI0ZGMDAwMFwiXG4gICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS41XCJcbiAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgIC8+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgZD1cIk0xMiAxMi43NUwxMiA3Ljc1XCJcbiAgICAgICAgICBzdHJva2U9XCJ3aGl0ZVwiXG4gICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS41XCJcbiAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgIC8+XG4gICAgICAgIDxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiMTZcIiByPVwiMVwiIGZpbGw9XCJ3aGl0ZVwiIC8+XG4gICAgICA8L3N2Zz5cbiAgICAgIHt7IHZhbGlkYXRpb25NZXNzYWdlIH19XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRlVHlwZSA9PT0gJ0RBVEVfUkFOR0UnXCI+XG4gICAgPCEtLSBEYXRlIHJhbmdlIHBpY2tlciAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtY29udGFpbmVyXCI+XG4gICAgICA8aW5wdXRcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBoZWlnaHRcIlxuICAgICAgICAjZGF0ZXJhbmdlcGlja2VyPVwiYnNEYXRlcmFuZ2VwaWNrZXJcIlxuICAgICAgICBic0RhdGVyYW5nZXBpY2tlclxuICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBkYXRlXCJcbiAgICAgICAgW21pbkRhdGVdPVwibWluRGF0ZSA/IG1pbkRhdGUgOiB1bmRlZmluZWRcIlxuICAgICAgICBbbWF4RGF0ZV09XCJtYXhEYXRlID8gbWF4RGF0ZSA6IHVuZGVmaW5lZFwiXG4gICAgICAgIFtic0NvbmZpZ109XCJ7XG4gICAgICAgICAgcmFuZ2VJbnB1dEZvcm1hdDogZm9ybWF0LFxuICAgICAgICAgIGRhdGVJbnB1dEZvcm1hdDogZm9ybWF0LCBjb250YWluZXJDbGFzczogJ3RoZW1lLWN1c3RvbScgXG4gICAgICAgIH1cIlxuICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkRGF0ZVJhbmdlXCJcbiAgICAgICAgKGJsdXIpPVwidmFsaWRhdGVGaWVsZCgpXCJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidmFsaWRhdGVGaWVsZCgpXCJcbiAgICAgICAgW2NsYXNzLmludmFsaWRdPVwidmFsaWRhdGlvbkZhaWxlZFwiXG4gICAgICAvPlxuICAgICAgPGlcbiAgICAgICAgY2xhc3M9XCJmYS1zb2xpZCBmYS1jYWxlbmRhci1kYXlzIGNhbGVuZGFyLWljb24gdGV4dC1wcmltYXJ5IGZzLTVcIlxuICAgICAgICAoY2xpY2spPVwib3BlbkRhdGVSYW5nZVBpY2tlcigpXCJcbiAgICAgID48L2k+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cInZhbGlkYXRpb25GYWlsZWRcIiBjbGFzcz1cInRleHQtZGFuZ2VyIG10LTJcIj5cbiAgICAgIDxzdmdcbiAgICAgICAgY2xhc3M9XCJ2YWxpZGF0aW9uU3ZnXCJcbiAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGQ9XCJNMTIuMDAxIDE2Ljc1QzEyLjEzOSAxNi43NSAxMi4yNTEgMTYuNjM4IDEyLjI1IDE2LjVDMTIuMjUgMTYuMzYyIDEyLjEzOCAxNi4yNSAxMiAxNi4yNUMxMS44NjIgMTYuMjUgMTEuNzUgMTYuMzYyIDExLjc1IDE2LjVDMTEuNzUgMTYuNjM4IDExLjg2MiAxNi43NSAxMi4wMDEgMTYuNzVcIlxuICAgICAgICAgIHN0cm9rZT1cIndoaXRlXCJcbiAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjVcIlxuICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgLz5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICBmaWxsLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICBkPVwiTTEyIDIxQzcuMDI5IDIxIDMgMTYuOTcxIDMgMTJDMyA3LjAyOSA3LjAyOSAzIDEyIDNDMTYuOTcxIDMgMjEgNy4wMjkgMjEgMTJDMjEgMTYuOTcxIDE2Ljk3MSAyMSAxMiAyMVpcIlxuICAgICAgICAgIGZpbGw9XCIjRkYwMDAwXCJcbiAgICAgICAgICBzdHJva2U9XCIjRkYwMDAwXCJcbiAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjVcIlxuICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgLz5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICBkPVwiTTEyIDEyLjc1TDEyIDcuNzVcIlxuICAgICAgICAgIHN0cm9rZT1cIndoaXRlXCJcbiAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjVcIlxuICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgLz5cbiAgICAgICAgPGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxNlwiIHI9XCIxXCIgZmlsbD1cIndoaXRlXCIgLz5cbiAgICAgIDwvc3ZnPlxuICAgICAge3sgdmFsaWRhdGlvbk1lc3NhZ2UgfX1cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cbiJdfQ==
416
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS10aW1lLWZpZWxkcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3JtLXN1Ym1pc3Npb24vc3JjL2Zvcm0tZmllbGRzL2RhdGUtdGltZS1maWVsZHMvZGF0ZS10aW1lLWZpZWxkcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3JtLXN1Ym1pc3Npb24vc3JjL2Zvcm0tZmllbGRzL2RhdGUtdGltZS1maWVsZHMvZGF0ZS10aW1lLWZpZWxkcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFjL0UsTUFBTSxPQUFPLHVCQUF1QjtJQXNDbEMsWUFBb0IsUUFBa0I7UUFBbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQXJDdEMsYUFBUSxHQUFnQztZQUN0QyxjQUFjLEVBQUUsY0FBYztZQUM5QixVQUFVLEVBQUUsSUFBSTtZQUNoQixnQkFBZ0IsRUFBRSxJQUFJO1lBQ3RCLGVBQWUsRUFBRSxLQUFLO1NBQ3ZCLENBQUM7UUFFTyxhQUFRLEdBQVEsRUFBRSxDQUFDO1FBQzVCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsU0FBSSxHQUFXLEVBQUUsQ0FBQztRQUNsQixVQUFLLEdBQVcsQ0FBQyxDQUFDO1FBQ2xCLFlBQU8sR0FBVyxFQUFFLENBQUM7UUFDckIsWUFBTyxHQUFXLEVBQUUsQ0FBQztRQUNyQixhQUFRLEdBQVcsRUFBRSxDQUFDO1FBQ3RCLFdBQU0sR0FBVyxFQUFFLENBQUM7UUFDcEIsZUFBVSxHQUFXLEVBQUUsQ0FBQztRQUN4QixlQUFVLEdBQVcsRUFBRSxDQUFDO1FBQ3hCLGtCQUFhLEdBQVcsRUFBRSxD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QUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ3hCO0lBQ0gsQ0FBQzsrR0FyY1UsdUJBQXVCO21HQUF2Qix1QkFBdUIsaUZBSHZCLENBQUMsUUFBUSxDQUFDLDhhQ1p2QixrbVZBcVRBOzs0RkR0U2EsdUJBQXVCO2tCQVBuQyxTQUFTOytCQUNFLHNCQUFzQixhQUdyQixDQUFDLFFBQVEsQ0FBQyxpQkFDTixpQkFBaUIsQ0FBQyxJQUFJOytGQVU1QixRQUFRO3NCQUFoQixLQUFLO2dCQXlCc0IsVUFBVTtzQkFBckMsU0FBUzt1QkFBQyxlQUFlO2dCQUNJLGVBQWU7c0JBQTVDLFNBQVM7dUJBQUMsaUJBQWlCO2dCQUNJLGlCQUFpQjtzQkFBaEQsU0FBUzt1QkFBQyxtQkFBbUI7Z0JBQ04sU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQnNEYXRlcGlja2VyQ29uZmlnLFxuICBCc0RhdGVwaWNrZXJEaXJlY3RpdmUsXG59IGZyb20gJ25neC1ib290c3RyYXAvZGF0ZXBpY2tlcic7XG5pbXBvcnQgeyBOZ3hNYXRlcmlhbFRpbWVwaWNrZXJDb21wb25lbnQgfSBmcm9tICduZ3gtbWF0ZXJpYWwtdGltZXBpY2tlcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1kYXRlLXRpbWUtZmllbGRzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtdGltZS1maWVsZHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXRlLXRpbWUtZmllbGRzLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW0RhdGVQaXBlXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBEYXRlVGltZUZpZWxkc0NvbXBvbmVudCB7XG4gIGJzQ29uZmlnOiBQYXJ0aWFsPEJzRGF0ZXBpY2tlckNvbmZpZz4gPSB7XG4gICAgY29udGFpbmVyQ2xhc3M6ICd0aGVtZS1jdXN0b20nLFxuICAgIGlzQW5pbWF0ZWQ6IHRydWUsXG4gICAgYWRhcHRpdmVQb3NpdGlvbjogdHJ1ZSxcbiAgICBzaG93V2Vla051bWJlcnM6IGZhbHNlLFxuICB9O1xuXG4gIEBJbnB1dCgpIHF1ZXN0aW9uOiBhbnkgPSB7fTtcbiAgcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaGludDogc3RyaW5nID0gJyc7XG4gIGNvdW50OiBudW1iZXIgPSAwO1xuICBtaW5UaW1lOiBzdHJpbmcgPSAnJztcbiAgbWF4VGltZTogc3RyaW5nID0gJyc7XG4gIGRhdGVUeXBlOiBzdHJpbmcgPSAnJztcbiAgZm9ybWF0OiBzdHJpbmcgPSAnJztcbiAgRGF0ZWZvcm1hdDogc3RyaW5nID0gJyc7XG4gIHRpbWVGb3JtYXQ6IHN0cmluZyA9ICcnO1xuICBtaW5EYXRlT3B0aW9uOiBzdHJpbmcgPSAnJztcbiAgbWluRGF0ZTogRGF0ZSB8IHVuZGVmaW5lZDtcbiAgbWF4RGF0ZU9wdGlvbjogc3RyaW5nID0gJyc7XG4gIG1heERhdGU6IERhdGUgfCB1bmRlZmluZWQ7XG4gIHRvZGF5RGF0ZTogRGF0ZSA9IG5ldyBEYXRlKCk7XG4gIHNlbGVjdGVkRGF0ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xuICBzZWxlY3RlZFRpbWU6IHN0cmluZyA9ICcnO1xuICBzZWxlY3RlZERhdGVSYW5nZTogc3RyaW5nID0gJyc7XG4gIHNlbGVjdGVkRGF0ZUFuZFRpbWU6IERhdGUgfCBudWxsID0gbnVsbDtcbiAgdmFsaWRhdGlvbkZhaWxlZCE6IGJvb2xlYW47XG4gIHRpbWVWYWxpZGF0aW9uRmFpbGVkITogYm9vbGVhbjtcbiAgdmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZyA9ICcnO1xuICBtYXhUaW1lT3B0aW9uOiBzdHJpbmcgPSAnJztcbiAgbWluVGltZU9wdGlvbjogc3RyaW5nID0gJyc7XG5cbiAgQFZpZXdDaGlsZCgnZGF0ZXBpY2tlcllNRCcpIGRhdGVwaWNrZXIhOiBCc0RhdGVwaWNrZXJEaXJlY3RpdmU7XG4gIEBWaWV3Q2hpbGQoJ2RhdGVyYW5nZXBpY2tlcicpIGRhdGVSYW5nZVBpY2tlciE6IEJzRGF0ZXBpY2tlckRpcmVjdGl2ZTtcbiAgQFZpZXdDaGlsZCgnZGF0ZUFuZFRpbWVQaWNrZXInKSBkYXRlQW5kVGltZVBpY2tlciE6IEJzRGF0ZXBpY2tlckRpcmVjdGl2ZTtcbiAgQFZpZXdDaGlsZCgnZnVsbFRpbWUzJykgZnVsbFRpbWUzITogTmd4TWF0ZXJpYWxUaW1lcGlja2VyQ29tcG9uZW50O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGF0ZVBpcGU6IERhdGVQaXBlKSB7IH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnZhbHVlQXNzaWduZWQoKTtcbiAgfVxuXG4gIHZhbHVlQXNzaWduZWQoKSB7XG5cbiAgICB0aGlzLmNvdW50ID0gdGhpcy5xdWVzdGlvbi5jb3VudDtcbiAgICB0aGlzLnJlcXVpcmVkID0gdGhpcy5xdWVzdGlvbi5yZXF1aXJlZDtcbiAgICB0aGlzLmhpbnQgPSB0aGlzLnF1ZXN0aW9uLmhpbnQ7XG4gICAgdGhpcy5kYXRlVHlwZSA9IHRoaXMucXVlc3Rpb24uZm9ybUVsZW1lbnQuYXBwZWFyYW5jZS5kYXRlVHlwZTtcbiAgICB0aGlzLm1pbkRhdGVPcHRpb24gPSB0aGlzLnF1ZXN0aW9uLmZvcm1FbGVtZW50LnZhbGlkYXRpb24ubWluRGF0ZU9wdGlvbjtcbiAgICB0aGlzLkRhdGVmb3JtYXQgPSB0aGlzLnF1ZXN0aW9uLmZvcm1FbGVtZW50LmFwcGVhcmFuY2UuZm9ybWF0LnJlcGxhY2UoL0REL2csICdkZCcpO1xuXG5cbiAgICB0aGlzLm1pbkRhdGUgPSB0aGlzLmdldE1pbkRhdGUoKTtcblxuXG4gICAgdGhpcy5tYXhEYXRlT3B0aW9uID0gdGhpcy5xdWVzdGlvbi5mb3JtRWxlbWVudC52YWxpZGF0aW9uLm1heERhdGVPcHRpb247XG4gICAgdGhpcy5tYXhEYXRlID0gdGhpcy5nZXRNYXhEYXRlKCk7XG4gICAgdGhpcy5zZXREYXRlVGltZUZvcm1hdCgpO1xuICAgIGlmICh0aGlzLnF1ZXN0aW9uPy5hbnN3ZXIgJiYgKHRoaXMucXVlc3Rpb24/LmFuc3dlcikubGVuZ3RoID4gMClcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gdGhpcy5xdWVzdGlvbj8uYW5zd2VyO1xuICAgIHRoaXMuc2VsZWN0ZWRUaW1lID0gdGhpcy5xdWVzdGlvbi5hbnN3ZXI7XG4gICAgaWYgKHRoaXMucXVlc3Rpb24/LmFuc3dlciAmJiAodGhpcy5xdWVzdGlvbj8uYW5zd2VyKS5sZW5ndGggPiAwKVxuICAgICAgdGhpcy5zZWxlY3RlZERhdGVBbmRUaW1lID0gbmV3IERhdGUodGhpcy5xdWVzdGlvbi5hbnN3ZXIpO1xuICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2UgPSB0aGlzLnF1ZXN0aW9uLmFuc3dlcjtcbiAgICB0aGlzLm1pblRpbWVPcHRpb24gPSB0aGlzLnF1ZXN0aW9uLmZvcm1FbGVtZW50LnZhbGlkYXRpb24ubWluVGltZU9wdGlvbjtcbiAgICB0aGlzLm1heFRpbWVPcHRpb24gPSB0aGlzLnF1ZXN0aW9uLmZvcm1FbGVtZW50LnZhbGlkYXRpb24ubWF4VGltZU9wdGlvbjtcbiAgICBpZiAodGhpcy5kYXRlVHlwZSAhPT0gJ0RBVEVfQU5EX1RJTUUnKSB7XG4gICAgICB0aGlzLm1pblRpbWUgPSB0aGlzLmdldE1pblRpbWUoKS50b1N0cmluZygpO1xuICAgICAgdGhpcy5tYXhUaW1lID0gdGhpcy5nZXRNYXhUaW1lKCkudG9TdHJpbmcoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZGF0ZVR5cGUgPT09ICdEQVRFX0FORF9USU1FJyAmJiB0aGlzLnF1ZXN0aW9uPy5hbnN3ZXIpIHtcbiAgICAgIGNvbnN0IGRhdGVUaW1lQXJyYXkgPSB0aGlzLnF1ZXN0aW9uLmFuc3dlclxuICAgICAgICA/IHRoaXMucXVlc3Rpb24uYW5zd2VyLnNwbGl0KCcsJylcbiAgICAgICAgOiBbXTsgLy8gRmFsbGJhY2sgdG8gYW4gZW1wdHkgYXJyYXkgaWYgYHRoaXMucXVlc3Rpb24uYW5zd2VyYCBpcyB1bmRlZmluZWRcblxuICAgICAgaWYgKGRhdGVUaW1lQXJyYXkubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGNvbnN0IGZldGNoZWREYXRlID0gZGF0ZVRpbWVBcnJheVswXS50cmltKCk7XG4gICAgICAgIGNvbnN0IGZldGNoZWRUaW1lID0gZGF0ZVRpbWVBcnJheVsxXS50cmltKCk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gZmV0Y2hlZERhdGU7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUaW1lID0gZmV0Y2hlZFRpbWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZvcm1hdHRlZERhdGUgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh0aGlzLnNlbGVjdGVkRGF0ZUFuZFRpbWUsIHRoaXMuRGF0ZWZvcm1hdCk7XG4gICAgICBjb25zdCBmb3JtYXR0ZW1pbkRhdGUgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh0aGlzLm1pbkRhdGUsIHRoaXMuRGF0ZWZvcm1hdCk7XG4gICAgICBjb25zdCBmb3JtYXR0ZW1heERhdGUgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh0aGlzLm1heERhdGUsIHRoaXMuRGF0ZWZvcm1hdCk7XG5cbiAgICAgIGlmIChmb3JtYXR0ZWREYXRlID09PSBmb3JtYXR0ZW1pbkRhdGUpIHtcbiAgICAgICAgdGhpcy5taW5UaW1lID0gdGhpcy5nZXRNaW5UaW1lKCkudG9TdHJpbmcoKTtcbiAgICAgICAgaWYgKHRoaXMudGltZUZvcm1hdCA9PT0gJzEyJykge1xuICAgICAgICAgIHRoaXMubWF4VGltZSA9ICcxMjowMCBwbSc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5tYXhUaW1lID0gJzIzOjU5JztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGZvcm1hdHRlZERhdGUgPT09IGZvcm1hdHRlbWF4RGF0ZSkge1xuICAgICAgICB0aGlzLm1heFRpbWUgPSB0aGlzLmdldE1heFRpbWUoKS50b1N0cmluZygpO1xuICAgICAgICBpZiAodGhpcy50aW1lRm9ybWF0ID09PSAnMTInKSB7XG4gICAgICAgICAgdGhpcy5taW5UaW1lID0gJzEyOjAwIGFtJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLm1pblRpbWUgPSAnMDA6MDAnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZm9ybWF0dGVkRGF0ZSAhPT0gZm9ybWF0dGVtaW5EYXRlICYmIGZvcm1hdHRlZERhdGUgIT09IGZvcm1hdHRlbWF4RGF0ZSkge1xuICAgICAgICBpZiAodGhpcy50aW1lRm9ybWF0ID09PSAnMTInKSB7XG4gICAgICAgICAgdGhpcy5taW5UaW1lID0gJzEyOjAwIGFtJztcbiAgICAgICAgICB0aGlzLm1heFRpbWUgPSAnMTI6MDAgcG0nO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubWluVGltZSA9ICcwMDowMCc7XG4gICAgICAgICAgdGhpcy5tYXhUaW1lID0gJzIzOjU5JztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgfVxuXG5cbiAgICBpZiAoIXRoaXMubWluVGltZSB8fCB0aGlzLm1pblRpbWUubGVuZ3RoID09PSAwKSB7XG4gICAgICBpZiAodGhpcy50aW1lRm9ybWF0ID09PSAnMTInKSB7XG4gICAgICAgIHRoaXMubWluVGltZSA9ICcxMjowMCBhbSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm1pblRpbWUgPSAnMDA6MDAnO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghdGhpcy5tYXhUaW1lIHx8IHRoaXMubWF4VGltZS5sZW5ndGggPT09IDApIHtcbiAgICAgIGlmICh0aGlzLnRpbWVGb3JtYXQgPT09ICcxMicpIHtcbiAgICAgICAgdGhpcy5tYXhUaW1lID0gJzExOjU5IHBtJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubWF4VGltZSA9ICcyMzo1OSc7XG4gICAgICB9XG4gICAgfVxuXG5cblxuICB9XG5cbiAgc2V0RGF0ZVRpbWVGb3JtYXQoKSB7XG4gICAgc3dpdGNoICh0aGlzLmRhdGVUeXBlKSB7XG4gICAgICBjYXNlICdEQVRFX09OTFknOlxuICAgICAgICB0aGlzLmZvcm1hdCA9IHRoaXMucXVlc3Rpb24uZm9ybUVsZW1lbnQuYXBwZWFyYW5jZS5mb3JtYXQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnVElNRV9PTkxZJzpcbiAgICAgICAgdGhpcy50aW1lRm9ybWF0ID0gdGhpcy5xdWVzdGlvbi5mb3JtRWxlbWVudC5hcHBlYXJhbmNlLnRpbWVGb3JtYXQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnREFURV9BTkRfVElNRSc6XG4gICAgICAgIHRoaXMuZm9ybWF0ID0gdGhpcy5xdWVzdGlvbi5mb3JtRWxlbWVudC5hcHBlYXJhbmNlLmZvcm1hdDtcbiAgICAgICAgdGhpcy50aW1lRm9ybWF0ID0gdGhpcy5xdWVzdGlvbi5mb3JtRWxlbWVudC5hcHBlYXJhbmNlLnRpbWVGb3JtYXQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnREFURV9SQU5HRSc6XG4gICAgICAgIHRoaXMuZm9ybWF0ID0gdGhpcy5xdWVzdGlvbi5mb3JtRWxlbWVudC5hcHBlYXJhbmNlLmZvcm1hdDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aGlzLmZvcm1hdCA9ICdERC9NTS9ZWVlZJztcbiAgICB9XG4gIH1cblxuICBnZXRNaW5EYXRlKCk6IERhdGUgfCB1bmRlZmluZWQge1xuICAgIGlmICh0aGlzLm1pbkRhdGVPcHRpb24gPT09ICdDVVJSRU5UX0RBVEUnKSB7XG4gICAgICByZXR1cm4gdGhpcy50b2RheURhdGU7XG4gICAgfSBlbHNlIGlmICh0aGlzLm1pbkRhdGVPcHRpb24gPT09ICdDVVNUT00nKSB7XG4gICAgICByZXR1cm4gbmV3IERhdGUodGhpcy5xdWVzdGlvbi5mb3JtRWxlbWVudC52YWxpZGF0aW9uLm1pbkRhdGUpO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkOyAvLyBSZXR1cm4gdW5kZWZpbmVkIGlmIG5vIHZhbGlkIG9wdGlvblxuICB9XG5cbiAgZ2V0TWF4RGF0ZSgpOiBEYXRlIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodGhpcy5tYXhEYXRlT3B0aW9uID09PSAnQ1VSUkVOVF9EQVRFJykge1xuICAgICAgcmV0dXJuIHRoaXMudG9kYXlEYXRlO1xuICAgIH0gZWxzZSBpZiAodGhpcy5tYXhEYXRlT3B0aW9uID09PSAnQ1VTVE9NJykge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKHRoaXMucXVlc3Rpb24uZm9ybUVsZW1lbnQudmFsaWRhdGlvbi5tYXhEYXRlKTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldE1pblRpbWUoKSB7XG4gICAgaWYgKHRoaXMubWluVGltZU9wdGlvbikge1xuICAgICAgY29uc3QgZm9ybWF0ID0gdGhpcy50aW1lRm9ybWF0ID09PSAnMjQnID8gJ0hIOm1tJyA6ICdoaDptbSBhJztcblxuICAgICAgaWYgKHRoaXMubWluVGltZU9wdGlvbiA9PT0gJ0NVUlJFTlRfVElNRScpIHtcbiAgICAgICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKG5vdywgZm9ybWF0KSB8fCAnJztcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5taW5UaW1lT3B0aW9uID09PSAnQ1VTVE9NJykge1xuICAgICAgICBjb25zdCBjdXN0b21UaW1lID0gdGhpcy5xdWVzdGlvbi5mb3JtRWxlbWVudC52YWxpZGF0aW9uLm1pblRpbWU7XG4gICAgICAgIGNvbnN0IFtob3VycywgbWludXRlc10gPSBjdXN0b21UaW1lLnNwbGl0KCc6Jyk7IC8vIFNwbGl0IGJ5IGNvbG9uIHRvIGdldCBob3VycyBhbmQgbWludXRlc1xuXG4gICAgICAgIC8vIENyZWF0ZSBhIERhdGUgb2JqZWN0IHdpdGggYSBmaXhlZCBkYXRlIGFuZCBjdXN0b20gdGltZVxuICAgICAgICBjb25zdCBjdXN0b21EYXRlID0gbmV3IERhdGUoKTtcbiAgICAgICAgY3VzdG9tRGF0ZS5zZXRIb3VycyhwYXJzZUludChob3VycywgMTApLCBwYXJzZUludChtaW51dGVzLCAxMCksIDAsIDApOyAvLyBTZXQgaG91cnMgYW5kIG1pbnV0ZXNcblxuICAgICAgICByZXR1cm4gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oY3VzdG9tRGF0ZSwgZm9ybWF0KSB8fCAnJztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBFbnN1cmUgYSBkZWZhdWx0IHJldHVybiBpZiBubyBjb25kaXRpb24gaXMgbWV0XG4gICAgcmV0dXJuICcnO1xuICB9XG5cblxuICBnZXRNYXhUaW1lKCkge1xuICAgIGlmICh0aGlzLm1heFRpbWVPcHRpb24pIHtcbiAgICAgIGNvbnN0IGZvcm1hdCA9IHRoaXMudGltZUZvcm1hdCA9PT0gJzI0JyA/ICdISDptbScgOiAnaGg6bW0gYSc7XG4gICAgICBpZiAodGhpcy5tYXhUaW1lT3B0aW9uID09PSAnQ1VSUkVOVF9USU1FJykge1xuICAgICAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0obm93LCBmb3JtYXQpIHx8ICcnO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAodGhpcy5tYXhUaW1lT3B0aW9uID09PSAnQ1VTVE9NJykge1xuICAgICAgICBjb25zdCBjdXN0b21UaW1lID0gdGhpcy5xdWVzdGlvbi5mb3JtRWxlbWVudC52YWxpZGF0aW9uLm1heFRpbWU7XG4gICAgICAgIGNvbnN0IFtob3VycywgbWludXRlc10gPSBjdXN0b21UaW1lLnNwbGl0KCc6Jyk7IC8vIFNwbGl0IGJ5IGNvbG9uIHRvIGdldCBob3VycyBhbmQgbWludXRlc1xuXG4gICAgICAgIC8vIENyZWF0ZSBhIERhdGUgb2JqZWN0IHdpdGggYSBmaXhlZCBkYXRlIGFuZCBjdXN0b20gdGltZVxuICAgICAgICBjb25zdCBjdXN0b21EYXRlID0gbmV3IERhdGUoKTtcbiAgICAgICAgY3VzdG9tRGF0ZS5zZXRIb3VycyhwYXJzZUludChob3VycywgMTApLCBwYXJzZUludChtaW51dGVzLCAxMCksIDAsIDApOyAvLyBTZXQgaG91cnMgYW5kIG1pbnV0ZXNcblxuICAgICAgICByZXR1cm4gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oY3VzdG9tRGF0ZSwgZm9ybWF0KSB8fCAnJztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBvcGVuRGF0ZVBpY2tlcigpIHsgICAgXG4gICAgdGhpcy5kYXRlcGlja2VyLnRvZ2dsZSgpO1xuICB9XG5cbiAgb3BlbkRhdGVSYW5nZVBpY2tlcigpIHtcbiAgICB0aGlzLmRhdGVSYW5nZVBpY2tlci50b2dnbGUoKTtcbiAgfVxuXG4gIG9wZW5EYXRlQW5kVGltZVBpY2tlcigpIHtcbiAgICB0aGlzLmRhdGVBbmRUaW1lUGlja2VyLnRvZ2dsZSgpO1xuICB9XG5cbiAgY2xvc2VEYXRlcGlja2VyKCkge1xuICAgIGlmICh0aGlzLmRhdGVBbmRUaW1lUGlja2VyKSB7XG4gICAgICB0aGlzLmRhdGVBbmRUaW1lUGlja2VyLmhpZGUoKTsgLy8gQ2xvc2UgdGhlIGRhdGVwaWNrZXJcbiAgICB9XG4gIH1cblxuXG5cblxuICB2YWxpZGF0ZUZpZWxkKCkge1xuICAgIGlmICh0aGlzLmRhdGVUeXBlID09PSAnREFURV9PTkxZJykge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWREYXRlKSB7XG4gICAgICAgIHRoaXMucXVlc3Rpb24uYW5zd2VyID0gdGhpcy5mb3JtYXREYXRlKHRoaXMuc2VsZWN0ZWREYXRlLnRvU3RyaW5nKCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5xdWVzdGlvbi5hbnN3ZXIgPSAnJztcbiAgICAgIH1cblxuICAgICAgdGhpcy52YWxpZGF0ZURhdGVPbmx5KClcbiAgICB9XG4gICAgZWxzZSBpZiAodGhpcy5kYXRlVHlwZSA9PT0gJ1RJTUVfT05MWScpIHtcbiAgICAgIHRoaXMucXVlc3Rpb24uYW5zd2VyID0gU3RyaW5nKHRoaXMuc2VsZWN0ZWRUaW1lKTtcbiAgICAgIHRoaXMudmFsaWRhdGVUaW1lT25seSgpXG4gICAgfVxuICAgIGVsc2UgaWYgKHRoaXMuZGF0ZVR5cGUgPT09ICdEQVRFX0FORF9USU1FJykge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWREYXRlQW5kVGltZSkge1xuICAgICAgICB0aGlzLnF1ZXN0aW9uLmFuc3dlciA9IHRoaXMuZm9ybWF0RGF0ZSh0aGlzLnNlbGVjdGVkRGF0ZUFuZFRpbWUudG9TdHJpbmcoKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnF1ZXN0aW9uLmFuc3dlciA9ICcnO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnZhbGlkYXRlRGF0ZUFuZFRpbWUoKVxuXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5xdWVzdGlvbi5hbnN3ZXIgPSB0aGlzLmZvcm1hdERhdGUodGhpcy5zZWxlY3RlZERhdGVSYW5nZSk7XG4gICAgICB0aGlzLnZhbGlkYXRlRGF0ZVJhbmdlKClcbiAgICB9XG4gIH1cblxuICBmb3JtYXREYXRlKGRhdGU6IHN0cmluZyB8IERhdGUsIHR5cGU6IHN0cmluZyA9ICdkYXRlVGltZScpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAodGhpcy5kYXRlVHlwZSkge1xuICAgICAgY2FzZSAnREFURV9PTkxZJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHRoaXMuc2VsZWN0ZWREYXRlLCB0aGlzLkRhdGVmb3JtYXQpIHx8ICcnO1xuICAgICAgICBjYXNlICdEQVRFX0FORF9USU1FJzpcbiAgICAgICAgICBjb25zdCBmb3JtYXR0ZWREYXRlID0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odGhpcy5zZWxlY3RlZERhdGVBbmRUaW1lLCB0aGlzLkRhdGVmb3JtYXQpO1xuICAgICAgICAgIGNvbnN0IGZvcm1hdHRlbWluRGF0ZSA9IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHRoaXMubWluRGF0ZSwgdGhpcy5EYXRlZm9ybWF0KTtcbiAgICAgICAgICBjb25zdCBmb3JtYXR0ZW1heERhdGUgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh0aGlzLm1heERhdGUsIHRoaXMuRGF0ZWZvcm1hdCk7XG4gICAgICAgICAgXG4gICAgICAgICAgaWYgKGZvcm1hdHRlZERhdGUgPT09IGZvcm1hdHRlbWluRGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5taW5UaW1lID0gdGhpcy5nZXRNaW5UaW1lKCkudG9TdHJpbmcoKTtcbiAgICAgICAgICAgIHRoaXMubWF4VGltZSA9IHRoaXMudGltZUZvcm1hdCA9PT0gJzEyJyA/ICcxMTo1OSBwbScgOiAnMjM6NTknO1xuICAgICAgICAgIH1cbiAgICAgICAgICBcbiAgICAgICAgICBpZiAoZm9ybWF0dGVkRGF0ZSA9PT0gZm9ybWF0dGVtYXhEYXRlKSB7XG4gICAgICAgICAgICB0aGlzLm1heFRpbWUgPSB0aGlzLmdldE1heFRpbWUoKS50b1N0cmluZygpO1xuICAgICAgICAgICAgdGhpcy5taW5UaW1lID0gdGhpcy50aW1lRm9ybWF0ID09PSAnMTInID8gJzEyOjAwIGFtJyA6ICcwMDowMCc7XG4gICAgICAgICAgfVxuICAgICAgICAgIFxuICAgICAgICAgIGlmIChmb3JtYXR0ZWREYXRlICE9PSBmb3JtYXR0ZW1pbkRhdGUgJiYgZm9ybWF0dGVkRGF0ZSAhPT0gZm9ybWF0dGVtYXhEYXRlKSB7XG4gICAgICAgICAgICB0aGlzLm1pblRpbWUgPSB0aGlzLnRpbWVGb3JtYXQgPT09ICcxMicgPyAnMTI6MDAgYW0nIDogJzAwOjAwJztcbiAgICAgICAgICAgIHRoaXMubWF4VGltZSA9IHRoaXMudGltZUZvcm1hdCA9PT0gJzEyJyA/ICcxMTo1OSBwbScgOiAnMjM6NTknO1xuICAgICAgICAgIH1cbiAgICAgICAgICBcbiAgICAgICAgICBjb25zdCBmb3JtYXR0ZWRUaW1lID0gdGhpcy5zZWxlY3RlZFRpbWUgfHwgJyc7ICAvLyBFbnN1cmUgc2VsZWN0ZWRUaW1lIGlzIGhhbmRsZWQgcHJvcGVybHlcbiAgICAgICAgICBpZiAoZm9ybWF0dGVkRGF0ZSAmJiBmb3JtYXR0ZWRUaW1lKSB7XG4gICAgICAgICAgICByZXR1cm4gYCR7Zm9ybWF0dGVkRGF0ZX0sICR7Zm9ybWF0dGVkVGltZX1gO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICBjYXNlICdEQVRFX1JBTkdFJzpcblxuICAgICAgICBjb25zdCBkYXRlcyA9IGRhdGUgYXMgdW5rbm93biBhcyBEYXRlW107XG5cbiAgICAgICAgLy8gRW5zdXJlIGRhdGVzIGlzIGRlZmluZWQgYW5kIGlzIGFuIGFycmF5XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGVzKSAmJiBkYXRlcy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICBjb25zdCBzdGFydCA9IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGRhdGVzWzBdLCB0aGlzLkRhdGVmb3JtYXQpO1xuICAgICAgICAgIGNvbnN0IGVuZCA9IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGRhdGVzWzFdLCB0aGlzLkRhdGVmb3JtYXQpO1xuICAgICAgICAgIHJldHVybiBgJHtzdGFydH0gLSAke2VuZH1gO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICcnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGRhdGUsIHRoaXMuRGF0ZWZvcm1hdCkgfHwgJyc7XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGVEYXRlT25seSgpIHtcbiAgICB0aGlzLnZhbGlkYXRpb25GYWlsZWQgPSBmYWxzZTtcbiAgICB0aGlzLnZhbGlkYXRpb25NZXNzYWdlID0gJyc7XG4gICAgaWYgKHRoaXMucmVxdWlyZWQgJiYgIXRoaXMuc2VsZWN0ZWREYXRlKSB7XG4gICAgICB0aGlzLnZhbGlkYXRpb25GYWlsZWQgPSB0cnVlO1xuICAgICAgdGhpcy52YWxpZGF0aW9uTWVzc2FnZSA9ICdUaGlzIGlzIGEgcmVxdWlyZWQgcXVlc3Rpb24nO1xuICAgICAgdGhpcy5xdWVzdGlvbi52YWxpZGF0aW9uID0gZmFsc2U7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5xdWVzdGlvbi52YWxpZGF0aW9uID0gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgdmFsaWRhdGVUaW1lT25seSgpIHtcbiAgICB0aGlzLnZhbGlkYXRpb25GYWlsZWQgPSBmYWxzZTtcbiAgICB0aGlzLnZhbGlkYXRpb25NZXNzYWdlID0gJyc7XG4gICAgaWYgKHRoaXMucmVxdWlyZWQgJiYgIXRoaXMuc2VsZWN0ZWRUaW1lKSB7XG4gICAgICB0aGlzLnZhbGlkYXRpb25GYWlsZWQgPSB0cnVlO1xuICAgICAgdGhpcy52YWxpZGF0aW9uTWVzc2FnZSA9ICdUaGlzIGlzIGEgcmVxdWlyZWQgcXVlc3Rpb24nOztcbiAgICAgIHRoaXMucXVlc3Rpb24udmFsaWRhdGlvbiA9IGZhbHNlO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMucXVlc3Rpb24udmFsaWRhdGlvbiA9IHRydWU7XG4gICAgfVxuICB9XG4gIHZhbGlkYXRlRGF0ZVJhbmdlKCkge1xuICAgIHRoaXMudmFsaWRhdGlvbkZhaWxlZCA9IGZhbHNlO1xuICAgIHRoaXMudmFsaWRhdGlvbk1lc3NhZ2UgPSAnJztcbiAgICBpZiAodGhpcy5yZXF1aXJlZCAmJiAhdGhpcy5zZWxlY3RlZERhdGVSYW5nZSkge1xuICAgICAgdGhpcy52YWxpZGF0aW9uRmFpbGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMudmFsaWRhdGlvbk1lc3NhZ2UgPSAnVGhpcyBpcyBhIHJlcXVpcmVkIHF1ZXN0aW9uJztcbiAgICAgIHRoaXMucXVlc3Rpb24udmFsaWRhdGlvbiA9IGZhbHNlO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMucXVlc3Rpb24udmFsaWRhdGlvbiA9IHRydWU7XG4gICAgfVxuICB9XG4gIHZhbGlkYXRlRGF0ZUFuZFRpbWUoKSB7XG4gICAgdGhpcy52YWxpZGF0aW9uRmFpbGVkID0gZmFsc2U7XG4gICAgdGhpcy50aW1lVmFsaWRhdGlvbkZhaWxlZCA9IGZhbHNlO1xuICAgIHRoaXMudmFsaWRhdGlvbk1lc3NhZ2UgPSAnJztcbiAgICBpZiAodGhpcy5yZXF1aXJlZCAmJiAhdGhpcy5zZWxlY3RlZERhdGVBbmRUaW1lKSB7XG4gICAgICB0aGlzLnZhbGlkYXRpb25GYWlsZWQgPSB0cnVlO1xuICAgICAgdGhpcy52YWxpZGF0aW9uTWVzc2FnZSA9ICdUaGlzIGlzIGEgcmVxdWlyZWQgcXVlc3Rpb24nO1xuICAgICAgdGhpcy5xdWVzdGlvbi52YWxpZGF0aW9uID0gZmFsc2U7XG4gICAgfVxuICAgIGVsc2UgaWYgKHRoaXMucmVxdWlyZWQgJiYgIXRoaXMuc2VsZWN0ZWRUaW1lKSB7XG4gICAgICB0aGlzLnRpbWVWYWxpZGF0aW9uRmFpbGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMudmFsaWRhdGlvbk1lc3NhZ2UgPSAnVGhpcyBpcyBhIHJlcXVpcmVkIHF1ZXN0aW9uJztcbiAgICAgIHRoaXMucXVlc3Rpb24udmFsaWRhdGlvbiA9IGZhbHNlO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMucXVlc3Rpb24udmFsaWRhdGlvbiA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgY29udmVydFRvSVNPRGF0ZShcbiAgICBkYXRlSW5wdXQ6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXSB8IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWRcbiAgKTogRGF0ZSB8IG51bGwge1xuXG5cbiAgICBpZiAoIWRhdGVJbnB1dCkge1xuXG5cbiAgICAgIHJldHVybiBudWxsOyAvLyBSZXR1cm4gbnVsbCBpZiBkYXRlSW5wdXQgaXMgbnVsbCwgdW5kZWZpbmVkLCBvciBhbnkgZmFsc3kgdmFsdWVcbiAgICB9XG5cbiAgICBsZXQgeWVhciwgbW9udGgsIGRheTtcblxuICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGVJbnB1dCkpIHtcbiAgICAgIC8vIEV4dHJhY3QgeWVhciwgbW9udGgsIGFuZCBkYXkgZnJvbSBhcnJheSBpbnB1dFxuICAgICAgW3llYXIsIG1vbnRoLCBkYXldID0gZGF0ZUlucHV0O1xuXG4gICAgICAvLyBWYWxpZGF0ZSB0aGUgYXJyYXkgZm9ybWF0XG4gICAgICBpZiAoXG4gICAgICAgIHR5cGVvZiB5ZWFyICE9PSAnbnVtYmVyJyB8fFxuICAgICAgICB0eXBlb2YgbW9udGggIT09ICdudW1iZXInIHx8XG4gICAgICAgIHR5cGVvZiBkYXkgIT09ICdudW1iZXInIHx8XG4gICAgICAgIGlzTmFOKHllYXIpIHx8XG4gICAgICAgIGlzTmFOKG1vbnRoKSB8fFxuICAgICAgICBpc05hTihkYXkpIHx8XG4gICAgICAgICFOdW1iZXIuaXNJbnRlZ2VyKHllYXIpIHx8XG4gICAgICAgICFOdW1iZXIuaXNJbnRlZ2VyKG1vbnRoKSB8fFxuICAgICAgICAhTnVtYmVyLmlzSW50ZWdlcihkYXkpIHx8XG4gICAgICAgIG1vbnRoIDwgMSB8fFxuICAgICAgICBtb250aCA+IDEyIHx8XG4gICAgICAgIGRheSA8IDEgfHxcbiAgICAgICAgZGF5ID4gMzFcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBkYXRlSW5wdXQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAvLyBDaGVjayBpZiB0aGUgc3RyaW5nIG1hdGNoZXMgdGhlIFlZWVktTU0tREQgZm9ybWF0XG4gICAgICBjb25zdCBkYXRlUGFydHMgPSBkYXRlSW5wdXQuc3BsaXQoJy0nKTtcbiAgICAgIGlmIChkYXRlUGFydHMubGVuZ3RoICE9PSAzKSByZXR1cm4gbnVsbDtcblxuICAgICAgW3llYXIsIG1vbnRoLCBkYXldID0gZGF0ZVBhcnRzLm1hcChOdW1iZXIpO1xuXG4gICAgICAvLyBWYWxpZGF0ZSB0aGUgcGFyc2VkIHBhcnRzXG4gICAgICBpZiAoXG4gICAgICAgIGlzTmFOKHllYXIpIHx8XG4gICAgICAgIGlzTmFOKG1vbnRoKSB8fFxuICAgICAgICBpc05hTihkYXkpIHx8XG4gICAgICAgICFOdW1iZXIuaXNJbnRlZ2VyKHllYXIpIHx8XG4gICAgICAgICFOdW1iZXIuaXNJbnRlZ2VyKG1vbnRoKSB8fFxuICAgICAgICAhTnVtYmVyLmlzSW50ZWdlcihkYXkpIHx8XG4gICAgICAgIG1vbnRoIDwgMSB8fFxuICAgICAgICBtb250aCA+IDEyIHx8XG4gICAgICAgIGRheSA8IDEgfHxcbiAgICAgICAgZGF5ID4gMzFcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7IC8vIFVuc3VwcG9ydGVkIGlucHV0IHR5cGVcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgYSBEYXRlIG9iamVjdCAobW9udGggaXMgMC1iYXNlZCwgc28gc3VidHJhY3QgMSlcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoeWVhciwgbW9udGggLSAxLCBkYXkpO1xuXG4gICAgLy8gVmVyaWZ5IGlmIHRoZSBEYXRlIG9iamVjdCBtYXRjaGVzIHRoZSBwcm92aWRlZCB5ZWFyLCBtb250aCwgYW5kIGRheVxuICAgIGlmIChcbiAgICAgIGRhdGUuZ2V0RnVsbFllYXIoKSAhPT0geWVhciB8fFxuICAgICAgZGF0ZS5nZXRNb250aCgpICE9PSBtb250aCAtIDEgfHxcbiAgICAgIGRhdGUuZ2V0RGF0ZSgpICE9PSBkYXlcbiAgICApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBkYXRlO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZnVsbFRpbWUzKSB7XG4gICAgICB0aGlzLmZ1bGxUaW1lMy5jbG9zZSgpO1xuICAgIH1cbiAgfVxuXG59XG4iLCI8ZGl2ICBjbGFzcz1cIm1iLTUgcHgtM1wiPlxuICA8ZGl2IGNsYXNzPVwiaW5wdXQtd3JhcHBlciBtYi0yXCI+XG4gICAgPGRpdiBbaW5uZXJIVE1MXT1cInF1ZXN0aW9uLnF1ZXN0aW9uTnVtYmVyXCI+PC9kaXY+XG4gICAgJm5ic3A7Jm5ic3A7IDxsYWJlbD57eyBxdWVzdGlvbi5xdWVzdGlvbiB9fTwvbGFiZWxcbiAgICA+Jm5ic3A7XG4gICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWRhbmdlclwiICpuZ0lmPVwicmVxdWlyZWRcIj4qPC9zcGFuPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwic3ZnLXdyYXBwZXIgbWItMiBoaW50SWNvblwiXG4gICAgICBbYXR0ci5kYXRhLXRpdGxlXT1cImhpbnRcIlxuICAgICAgKm5nSWY9XCJoaW50XCJcbiAgICA+XG4gICAgICA8c3ZnXG4gICAgICAgIGNsYXNzPVwiaGludFN2Z1wiXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgMzAgMzBcIlxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgID5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICBmaWxsLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICBkPVwiTTE1IDI2LjI1VjI2LjI1QzguNzg2MjUgMjYuMjUgMy43NSAyMS4yMTM4IDMuNzUgMTVWMTVDMy43NSA4Ljc4NjI1IDguNzg2MjUgMy43NSAxNSAzLjc1VjMuNzVDMjEuMjEzOCAzLjc1IDI2LjI1IDguNzg2MjUgMjYuMjUgMTVWMTVDMjYuMjUgMjEuMjEzOCAyMS4yMTM4IDI2LjI1IDE1IDI2LjI1WlwiXG4gICAgICAgICAgc3Ryb2tlPVwiIzMyMzIzMlwiXG4gICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS41XCJcbiAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgIC8+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgZD1cIk0xNSAxNi41NjIzVjE2LjI0OThDMTUgMTUuMjI4NSAxNS42MzEyIDE0LjY3NDggMTYuMjYzNyAxNC4yNDk4QzE2Ljg4MTIgMTMuODMzNSAxNy41IDEzLjI5MSAxNy41IDEyLjI5MUMxNy41IDEwLjkwOTggMTYuMzgxMyA5Ljc5MTAyIDE1IDkuNzkxMDJDMTMuNjE4NyA5Ljc5MTAyIDEyLjUgMTAuOTA5OCAxMi41IDEyLjI5MVwiXG4gICAgICAgICAgc3Ryb2tlPVwiIzMyMzIzMlwiXG4gICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS41XCJcbiAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgIC8+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgZD1cIk0xNC45OTg4IDIwQzE0LjgyNjMgMjAgMTQuNjg2MyAyMC4xNCAxNC42ODc1IDIwLjMxMjVDMTQuNjg3NSAyMC40ODUgMTQuODI3NSAyMC42MjUgMTUgMjAuNjI1QzE1LjE3MjUgMjAuNjI1IDE1LjMxMjUgMjAuNDg1IDE1LjMxMjUgMjAuMzEyNUMxNS4zMTI1IDIwLjE0IDE1LjE3MjUgMjAgMTQuOTk4OCAyMFwiXG4gICAgICAgICAgc3Ryb2tlPVwiIzMyMzIzMlwiXG4gICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS41XCJcbiAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgIC8+XG4gICAgICA8L3N2Zz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRlVHlwZSA9PT0gJ0RBVEVfT05MWSdcIj5cbiAgICA8IS0tIERhdGUgb25seSBwaWNrZXIgLS0+XG4gICAgPGRpdiBjbGFzcz1cImlucHV0LWNvbnRhaW5lclwiPlxuICAgICAgPGlucHV0XG4gICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGhlaWdodFwiXG4gICAgICAgICNkYXRlcGlja2VyWU1EPVwiYnNEYXRlcGlja2VyXCJcbiAgICAgICAgYnNEYXRlcGlja2VyXG4gICAgICAgIFttaW5EYXRlXT1cIm1pbkRhdGUgPyBtaW5EYXRlIDogdW5kZWZpbmVkXCJcbiAgICAgICAgW21heERhdGVdPVwibWF4RGF0ZSA/IG1heERhdGUgOiB1bmRlZmluZWRcIlxuICAgICAgICBbYnNDb25maWddPVwieyBkYXRlSW5wdXRGb3JtYXQ6IGZvcm1hdCwgY29udGFpbmVyQ2xhc3M6ICd0aGVtZS1jdXN0b20nIH1cIlxuICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkRGF0ZVwiXG4gICAgICAgIChibHVyKT1cInZhbGlkYXRlRmllbGQoKVwiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInZhbGlkYXRlRmllbGQoKVwiXG4gICAgICAgIFtjbGFzcy5pbnZhbGlkXT1cInZhbGlkYXRpb25GYWlsZWRcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBkYXRlXCJcbiAgICAgIC8+XG4gICAgICA8aVxuICAgICAgICBjbGFzcz1cImZhLXNvbGlkIGZhLWNhbGVuZGFyLWRheXMgY2FsZW5kYXItaWNvbiB0ZXh0LXByaW1hcnkgZnMtNVwiXG4gICAgICAgIChjbGljayk9XCJvcGVuRGF0ZVBpY2tlcigpXCJcbiAgICAgID48L2k+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cInZhbGlkYXRpb25GYWlsZWRcIiBjbGFzcz1cInRleHQtZGFuZ2VyIG10LTJcIj5cbiAgICAgIDxzdmdcbiAgICAgICAgY2xhc3M9XCJ2YWxpZGF0aW9uU3ZnXCJcbiAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGQ9XCJNMTIuMDAxIDE2Ljc1QzEyLjEzOSAxNi43NSAxMi4yNTEgMTYuNjM4IDEyLjI1IDE2LjVDMTIuMjUgMTYuMzYyIDEyLjEzOCAxNi4yNSAxMiAxNi4yNUMxMS44NjIgMTYuMjUgMTEuNzUgMTYuMzYyIDExLjc1IDE2LjVDMTEuNzUgMTYuNjM4IDExLjg2MiAxNi43NSAxMi4wMDEgMTYuNzVcIlxuICAgICAgICAgIHN0cm9rZT1cIndoaXRlXCJcbiAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjVcIlxuICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgLz5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICBmaWxsLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICBkPVwiTTEyIDIxQzcuMDI5IDIxIDMgMTYuOTcxIDMgMTJDMyA3LjAyOSA3LjAyOSAzIDEyIDNDMTYuOTcxIDMgMjEgNy4wMjkgMjEgMTJDMjEgMTYuOTcxIDE2Ljk3MSAyMSAxMiAyMVpcIlxuICAgICAgICAgIGZpbGw9XCIjRkYwMDAwXCJcbiAgICAgICAgICBzdHJva2U9XCIjRkYwMDAwXCJcbiAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjVcIlxuICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgLz5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICBkPVwiTTEyIDEyLjc1TDEyIDcuNzVcIlxuICAgICAgICAgIHN0cm9rZT1cIndoaXRlXCJcbiAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjVcIlxuICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgLz5cbiAgICAgICAgPGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxNlwiIHI9XCIxXCIgZmlsbD1cIndoaXRlXCIgLz5cbiAgICAgIDwvc3ZnPlxuICAgICAge3sgdmFsaWRhdGlvbk1lc3NhZ2UgfX1cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGVUeXBlID09PSAnVElNRV9PTkxZJ1wiPlxuICAgIDwhLS0gVGltZSBwaWNrZXIgLS0+XG5cblxuPGRpdiBjbGFzcz1cImlucHV0LWNvbnRhaW5lclwiPlxuICAgICAgPGlucHV0XG4gICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBoZWlnaHQgYXBwZWFyYW5jZUlucHV0IG10LTNcIlxuICAgICAgYXJpYS1sYWJlbD1cIlNlbGVjdCB0aW1lXCJcbiAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IHRpbWVcIlxuICAgICAgcmVhZG9ubHlcbiAgICAgIFtmb3JtYXRdPVwidGltZUZvcm1hdD09PScyNCc/MjQ6MTJcIlxuICAgICAgW25neFRpbWVwaWNrZXJdPVwiZnVsbFRpbWUzXCJcbiAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRUaW1lXCJcbiAgICAgIFttYXhdPVwibWF4VGltZVwiXG4gICAgICBbbWluXT1cIm1pblRpbWVcIlxuICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidmFsaWRhdGVGaWVsZCgpXCJcbiAgICAgIFtjbGFzcy5pbnZhbGlkXT1cInZhbGlkYXRpb25GYWlsZWRcIlxuICAvPlxuICBcbiAgPGlcbiAgaWQ9XCJzdGFydERhdGVJY29uXCJcbiAgY2xhc3M9XCJmYS1zb2xpZCBmYS1jbG9jayB0ZXh0LXByaW1hcnkgZnMtNiBjbG9jay1pY29uXCJcbiAgKGNsaWNrKT1cImZ1bGxUaW1lMy5vcGVuKClcIlxuICBzdHlsZT1cImN1cnNvcjogcG9pbnRlcjtcIlxuPjwvaT5cbiAgPG5neC1tYXRlcmlhbC10aW1lcGlja2VyICNmdWxsVGltZTM+PC9uZ3gtbWF0ZXJpYWwtdGltZXBpY2tlcj5cbjwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJ2YWxpZGF0aW9uRmFpbGVkXCIgY2xhc3M9XCJ0ZXh0LWRhbmdlciBtdC0yXCI+XG4gICAgICA8c3ZnXG4gICAgICAgIGNsYXNzPVwidmFsaWRhdGlvblN2Z1wiXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgID5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICBkPVwiTTEyLjAwMSAxNi43NUMxMi4xMzkgMTYuNzUgMTIuMjUxIDE2LjYzOCAxMi4yNSAxNi41QzEyLjI1IDE2LjM2MiAxMi4xMzggMTYuMjUgMTIgMTYuMjVDMTEuODYyIDE2LjI1IDExLjc1IDE2LjM2MiAxMS43NSAxNi41QzExLjc1IDE2LjYzOCAxMS44NjIgMTYuNzUgMTIuMDAxIDE2Ljc1XCJcbiAgICAgICAgICBzdHJva2U9XCJ3aGl0ZVwiXG4gICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS41XCJcbiAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgIC8+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgZmlsbC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgZD1cIk0xMiAyMUM3LjAyOSAyMSAzIDE2Ljk3MSAzIDEyQzMgNy4wMjkgNy4wMjkgMyAxMiAzQzE2Ljk3MSAzIDIxIDcuMDI5IDIxIDEyQzIxIDE2Ljk3MSAxNi45NzEgMjEgMTIgMjFaXCJcbiAgICAgICAgICBmaWxsPVwiI0ZGMDAwMFwiXG4gICAgICAgICAgc3Ryb2tlPVwiI0ZGMDAwMFwiXG4gICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS41XCJcbiAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgIC8+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgZD1cIk0xMiAxMi43NUwxMiA3Ljc1XCJcbiAgICAgICAgICBzdHJva2U9XCJ3aGl0ZVwiXG4gICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS41XCJcbiAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgIC8+XG4gICAgICAgIDxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiMTZcIiByPVwiMVwiIGZpbGw9XCJ3aGl0ZVwiIC8+XG4gICAgICA8L3N2Zz5cbiAgICAgIHt7IHZhbGlkYXRpb25NZXNzYWdlIH19XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRlVHlwZSA9PT0gJ0RBVEVfQU5EX1RJTUUnXCI+XG4gICAgPCEtLSBEYXRlIGFuZCB0aW1lIHBpY2tlciAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtY29udGFpbmVyXCI+XG4gICAgICA8aW5wdXRcbiAgICAgICAgI2RhdGVBbmRUaW1lUGlja2VyPVwiYnNEYXRlcGlja2VyXCJcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBoZWlnaHRcIlxuICAgICAgICBbbWluRGF0ZV09XCJtaW5EYXRlID8gbWluRGF0ZSA6IHVuZGVmaW5lZFwiXG4gICAgICAgIFttYXhEYXRlXT1cIm1heERhdGUgPyBtYXhEYXRlIDogdW5kZWZpbmVkXCJcbiAgICAgICAgW2JzQ29uZmlnXT1cIntcbiAgICAgICAgICBkYXRlSW5wdXRGb3JtYXQ6IGZvcm1hdCwgY29udGFpbmVyQ2xhc3M6ICd0aGVtZS1jdXN0b20nIFxuICAgICAgICB9XCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgZGF0ZVwiXG4gICAgICAgIGJzRGF0ZXBpY2tlclxuICAgICAgICBbY2xhc3MuaW52YWxpZF09XCJ2YWxpZGF0aW9uRmFpbGVkXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZERhdGVBbmRUaW1lXCJcbiAgICAgICAgKGJsdXIpPVwidmFsaWRhdGVGaWVsZCgpXCJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidmFsaWRhdGVGaWVsZCgpXCJcbiAgICAgIC8+XG4gICAgICA8aVxuICAgICAgICBjbGFzcz1cImZhLXNvbGlkIGZhLWNhbGVuZGFyLWRheXMgY2FsZW5kYXItaWNvbiB0ZXh0LXByaW1hcnkgZnMtNVwiXG4gICAgICAgIChjbGljayk9XCJvcGVuRGF0ZUFuZFRpbWVQaWNrZXIoKVwiXG4gICAgICA+PC9pPlxuICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWNvbnRhaW5lclwiICpuZ0lmPVwic2VsZWN0ZWREYXRlQW5kVGltZSAmJiBzZWxlY3RlZERhdGVBbmRUaW1lICE9IG51bGxcIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgIFxuICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBoZWlnaHQgYXBwZWFyYW5jZUlucHV0IG10LTNcIlxuICAgICAgICBhcmlhLWxhYmVsPVwiU2VsZWN0IHRpbWVcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCB0aW1lXCJcbiAgICAgICAgcmVhZG9ubHlcbiAgICAgICAgW2Zvcm1hdF09XCJ0aW1lRm9ybWF0PT09JzI0Jz8yNDoxMlwiXG4gICAgICAgIFtuZ3hUaW1lcGlja2VyXT1cImZ1bGxUaW1lNFwiXG4gICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRUaW1lXCJcbiAgICAgICAgW21heF09XCJtYXhUaW1lXCJcbiAgICAgICAgW21pbl09XCJtaW5UaW1lXCJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidmFsaWRhdGVGaWVsZCgpXCJcbiAgICAgICAgKGZvY3VzKT1cImNsb3NlRGF0ZXBpY2tlcigpXCJcbiAgICAgICAgW2NsYXNzLmludmFsaWRdPVwidGltZVZhbGlkYXRpb25GYWlsZWRcIlxuICAgIC8+XG4gICAgXG4gICAgPGlcbiAgICBpZD1cInN0YXJ0RGF0ZUljb25cIlxuICAgIGNsYXNzPVwiZmEtc29saWQgZmEtY2xvY2sgdGV4dC1wcmltYXJ5IGZzLTYgY2xvY2staWNvblwiXG4gICAgKGNsaWNrKT1cImZ1bGxUaW1lNC5vcGVuKClcIlxuICAgIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyO1wiXG4gID48L2k+XG4gICAgPG5neC1tYXRlcmlhbC10aW1lcGlja2VyICNmdWxsVGltZTQ+PC9uZ3gtbWF0ZXJpYWwtdGltZXBpY2tlcj5cbiAgPC9kaXY+XG4gICBcbiAgICA8ZGl2ICpuZ0lmPVwidmFsaWRhdGlvbkZhaWxlZCB8fCB0aW1lVmFsaWRhdGlvbkZhaWxlZFwiIGNsYXNzPVwidGV4dC1kYW5nZXIgbXQtMlwiPlxuICAgICAgPHN2Z1xuICAgICAgICBjbGFzcz1cInZhbGlkYXRpb25TdmdcIlxuICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICA+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgZD1cIk0xMi4wMDEgMTYuNzVDMTIuMTM5IDE2Ljc1IDEyLjI1MSAxNi42MzggMTIuMjUgMTYuNUMxMi4yNSAxNi4zNjIgMTIuMTM4IDE2LjI1IDEyIDE2LjI1QzExLjg2MiAxNi4yNSAxMS43NSAxNi4zNjIgMTEuNzUgMTYuNUMxMS43NSAxNi42MzggMTEuODYyIDE2Ljc1IDEyLjAwMSAxNi43NVwiXG4gICAgICAgICAgc3Ryb2tlPVwid2hpdGVcIlxuICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiXG4gICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAvPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgIGQ9XCJNMTIgMjFDNy4wMjkgMjEgMyAxNi45NzEgMyAxMkMzIDcuMDI5IDcuMDI5IDMgMTIgM0MxNi45NzEgMyAyMSA3LjAyOSAyMSAxMkMyMSAxNi45NzEgMTYuOTcxIDIxIDEyIDIxWlwiXG4gICAgICAgICAgZmlsbD1cIiNGRjAwMDBcIlxuICAgICAgICAgIHN0cm9rZT1cIiNGRjAwMDBcIlxuICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiXG4gICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAvPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGQ9XCJNMTIgMTIuNzVMMTIgNy43NVwiXG4gICAgICAgICAgc3Ryb2tlPVwid2hpdGVcIlxuICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiXG4gICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAvPlxuICAgICAgICA8Y2lyY2xlIGN4PVwiMTJcIiBjeT1cIjE2XCIgcj1cIjFcIiBmaWxsPVwid2hpdGVcIiAvPlxuICAgICAgPC9zdmc+XG4gICAgICB7eyB2YWxpZGF0aW9uTWVzc2FnZSB9fVxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0ZVR5cGUgPT09ICdEQVRFX1JBTkdFJ1wiPlxuICAgIDwhLS0gRGF0ZSByYW5nZSBwaWNrZXIgLS0+XG4gICAgPGRpdiBjbGFzcz1cImlucHV0LWNvbnRhaW5lclwiPlxuICAgICAgPGlucHV0XG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgaGVpZ2h0XCJcbiAgICAgICAgI2RhdGVyYW5nZXBpY2tlcj1cImJzRGF0ZXJhbmdlcGlja2VyXCJcbiAgICAgICAgYnNEYXRlcmFuZ2VwaWNrZXJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgZGF0ZVwiXG4gICAgICAgIFttaW5EYXRlXT1cIm1pbkRhdGUgPyBtaW5EYXRlIDogdW5kZWZpbmVkXCJcbiAgICAgICAgW21heERhdGVdPVwibWF4RGF0ZSA/IG1heERhdGUgOiB1bmRlZmluZWRcIlxuICAgICAgICBbYnNDb25maWddPVwie1xuICAgICAgICAgIHJhbmdlSW5wdXRGb3JtYXQ6IGZvcm1hdCxcbiAgICAgICAgICBkYXRlSW5wdXRGb3JtYXQ6IGZvcm1hdCwgY29udGFpbmVyQ2xhc3M6ICd0aGVtZS1jdXN0b20nIFxuICAgICAgICB9XCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZERhdGVSYW5nZVwiXG4gICAgICAgIChibHVyKT1cInZhbGlkYXRlRmllbGQoKVwiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInZhbGlkYXRlRmllbGQoKVwiXG4gICAgICAgIFtjbGFzcy5pbnZhbGlkXT1cInZhbGlkYXRpb25GYWlsZWRcIlxuICAgICAgLz5cbiAgICAgIDxpXG4gICAgICAgIGNsYXNzPVwiZmEtc29saWQgZmEtY2FsZW5kYXItZGF5cyBjYWxlbmRhci1pY29uIHRleHQtcHJpbWFyeSBmcy01XCJcbiAgICAgICAgKGNsaWNrKT1cIm9wZW5EYXRlUmFuZ2VQaWNrZXIoKVwiXG4gICAgICA+PC9pPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJ2YWxpZGF0aW9uRmFpbGVkXCIgY2xhc3M9XCJ0ZXh0LWRhbmdlciBtdC0yXCI+XG4gICAgICA8c3ZnXG4gICAgICAgIGNsYXNzPVwidmFsaWRhdGlvblN2Z1wiXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgID5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICBkPVwiTTEyLjAwMSAxNi43NUMxMi4xMzkgMTYuNzUgMTIuMjUxIDE2LjYzOCAxMi4yNSAxNi41QzEyLjI1IDE2LjM2MiAxMi4xMzggMTYuMjUgMTIgMTYuMjVDMTEuODYyIDE2LjI1IDExLjc1IDE2LjM2MiAxMS43NSAxNi41QzExLjc1IDE2LjYzOCAxMS44NjIgMTYuNzUgMTIuMDAxIDE2Ljc1XCJcbiAgICAgICAgICBzdHJva2U9XCJ3aGl0ZVwiXG4gICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS41XCJcbiAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgIC8+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgZmlsbC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgZD1cIk0xMiAyMUM3LjAyOSAyMSAzIDE2Ljk3MSAzIDEyQzMgNy4wMjkgNy4wMjkgMyAxMiAzQzE2Ljk3MSAzIDIxIDcuMDI5IDIxIDEyQzIxIDE2Ljk3MSAxNi45NzEgMjEgMTIgMjFaXCJcbiAgICAgICAgICBmaWxsPVwiI0ZGMDAwMFwiXG4gICAgICAgICAgc3Ryb2tlPVwiI0ZGMDAwMFwiXG4gICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS41XCJcbiAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgIC8+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgZD1cIk0xMiAxMi43NUwxMiA3Ljc1XCJcbiAgICAgICAgICBzdHJva2U9XCJ3aGl0ZVwiXG4gICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS41XCJcbiAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgIC8+XG4gICAgICAgIDxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiMTZcIiByPVwiMVwiIGZpbGw9XCJ3aGl0ZVwiIC8+XG4gICAgICA8L3N2Zz5cbiAgICAgIHt7IHZhbGlkYXRpb25NZXNzYWdlIH19XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG4iXX0=
@@ -1411,8 +1411,13 @@ class DateTimeFieldsComponent {
1411
1411
  }
1412
1412
  return date;
1413
1413
  }
1414
+ ngOnDestroy() {
1415
+ if (this.fullTime3) {
1416
+ this.fullTime3.close();
1417
+ }
1418
+ }
1414
1419
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DateTimeFieldsComponent, deps: [{ token: i1$1.DatePipe }], target: i0.ɵɵFactoryTarget.Component }); }
1415
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DateTimeFieldsComponent, selector: "lib-date-time-fields", inputs: { question: "question" }, providers: [DatePipe], viewQueries: [{ propertyName: "datepicker", first: true, predicate: ["datepickerYMD"], descendants: true }, { propertyName: "dateRangePicker", first: true, predicate: ["daterangepicker"], descendants: true }, { propertyName: "dateAndTimePicker", first: true, predicate: ["dateAndTimePicker"], descendants: true }], ngImport: i0, template: "<div class=\"mb-5 px-3\">\n <div class=\"input-wrapper mb-2\">\n <div [innerHTML]=\"question.questionNumber\"></div>\n &nbsp;&nbsp; <label>{{ question.question }}</label\n >&nbsp;\n <span class=\"text-danger\" *ngIf=\"required\">*</span>\n <div\n class=\"svg-wrapper mb-2 hintIcon\"\n [attr.data-title]=\"hint\"\n *ngIf=\"hint\"\n >\n <svg\n class=\"hintSvg\"\n viewBox=\"0 0 30 30\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n <ng-container *ngIf=\"dateType === 'DATE_ONLY'\">\n <!-- Date only picker -->\n <div class=\"input-container\">\n <input\n class=\"form-control height\"\n #datepickerYMD=\"bsDatepicker\"\n bsDatepicker\n [minDate]=\"minDate ? minDate : undefined\"\n [maxDate]=\"maxDate ? maxDate : undefined\"\n [bsConfig]=\"{ dateInputFormat: format, containerClass: 'theme-custom' }\"\n [(ngModel)]=\"selectedDate\"\n (blur)=\"validateField()\"\n (ngModelChange)=\"validateField()\"\n [class.invalid]=\"validationFailed\"\n placeholder=\"Select date\"\n />\n <i\n class=\"fa-solid fa-calendar-days calendar-icon text-primary fs-5\"\n (click)=\"openDatePicker()\"\n ></i>\n </div>\n <div *ngIf=\"validationFailed\" class=\"text-danger mt-2\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ validationMessage }}\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"dateType === 'TIME_ONLY'\">\n <!-- Time picker -->\n\n\n<div class=\"input-container\">\n <input\n class=\"form-control height appearanceInput mt-3\"\n aria-label=\"Select time\"\n placeholder=\"Select time\"\n readonly\n [format]=\"timeFormat==='24'?24:12\"\n [ngxTimepicker]=\"fullTime3\"\n [(ngModel)]=\"selectedTime\"\n [max]=\"maxTime\"\n [min]=\"minTime\"\n (ngModelChange)=\"validateField()\"\n [class.invalid]=\"validationFailed\"\n />\n \n <i\n id=\"startDateIcon\"\n class=\"fa-solid fa-clock text-primary fs-6 clock-icon\"\n (click)=\"fullTime3.open()\"\n style=\"cursor: pointer;\"\n></i>\n <ngx-material-timepicker #fullTime3></ngx-material-timepicker>\n</div>\n <div *ngIf=\"validationFailed\" class=\"text-danger mt-2\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ validationMessage }}\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"dateType === 'DATE_AND_TIME'\">\n <!-- Date and time picker -->\n <div class=\"input-container\">\n <input\n #dateAndTimePicker=\"bsDatepicker\"\n type=\"text\"\n class=\"form-control height\"\n [minDate]=\"minDate ? minDate : undefined\"\n [maxDate]=\"maxDate ? maxDate : undefined\"\n [bsConfig]=\"{\n dateInputFormat: format, containerClass: 'theme-custom' \n }\"\n placeholder=\"Select date\"\n bsDatepicker\n [class.invalid]=\"validationFailed\"\n [(ngModel)]=\"selectedDateAndTime\"\n (blur)=\"validateField()\"\n (ngModelChange)=\"validateField()\"\n />\n <i\n class=\"fa-solid fa-calendar-days calendar-icon text-primary fs-5\"\n (click)=\"openDateAndTimePicker()\"\n ></i>\n </div>\n <div class=\"input-container\" *ngIf=\"selectedDateAndTime && selectedDateAndTime != null\">\n <input\n \n class=\"form-control height appearanceInput mt-3\"\n aria-label=\"Select time\"\n placeholder=\"Select time\"\n readonly\n [format]=\"timeFormat==='24'?24:12\"\n [ngxTimepicker]=\"fullTime4\"\n [(ngModel)]=\"selectedTime\"\n [max]=\"maxTime\"\n [min]=\"minTime\"\n (ngModelChange)=\"validateField()\"\n (focus)=\"closeDatepicker()\"\n [class.invalid]=\"timeValidationFailed\"\n />\n \n <i\n id=\"startDateIcon\"\n class=\"fa-solid fa-clock text-primary fs-6 clock-icon\"\n (click)=\"fullTime4.open()\"\n style=\"cursor: pointer;\"\n ></i>\n <ngx-material-timepicker #fullTime4></ngx-material-timepicker>\n </div>\n \n <div *ngIf=\"validationFailed || timeValidationFailed\" class=\"text-danger mt-2\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ validationMessage }}\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"dateType === 'DATE_RANGE'\">\n <!-- Date range picker -->\n <div class=\"input-container\">\n <input\n type=\"text\"\n class=\"form-control height\"\n #daterangepicker=\"bsDaterangepicker\"\n bsDaterangepicker\n placeholder=\"Select date\"\n [minDate]=\"minDate ? minDate : undefined\"\n [maxDate]=\"maxDate ? maxDate : undefined\"\n [bsConfig]=\"{\n rangeInputFormat: format,\n dateInputFormat: format, containerClass: 'theme-custom' \n }\"\n [(ngModel)]=\"selectedDateRange\"\n (blur)=\"validateField()\"\n (ngModelChange)=\"validateField()\"\n [class.invalid]=\"validationFailed\"\n />\n <i\n class=\"fa-solid fa-calendar-days calendar-icon text-primary fs-5\"\n (click)=\"openDateRangePicker()\"\n ></i>\n </div>\n <div *ngIf=\"validationFailed\" class=\"text-danger mt-2\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ validationMessage }}\n </div>\n </ng-container>\n</div>\n", styles: [".input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-inline-start:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);right:0;padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;min-width:300px;word-wrap:break-word;word-break:break-word;text-align:center;white-space:normal}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}.validationSvg{width:24px;height:24px;fill:none}:root{--library-font-family: Roboto, \"Helvetica Neue\", sans-serif;--library-font-size: 14px}::ng-deep html lib-formSubmission{font-family:var(--library-font-family)!important;font-size:var(--library-font-size)!important}.input-container{position:relative}.input-container .form-control{padding-right:30px}.input-container .calendar-icon,.clock-icon{position:absolute;top:50%;right:10px;transform:translateY(-50%);cursor:pointer}.appearanceInput{background-color:#fff}::ng-deep ngx-material-timepicker-content{--body-background-color: #fff;--button-color: #08bff6 !important;--dial-active-color: #fff;--dial-inactive-color: rgba(255, 255, 255, .5);--dial-background-color: #08bff6 !important;--dial-editable-active-color: #08bff6!important;--dial-editable-background-color: #fff;--clock-face-time-active-color: #fff;--clock-face-time-inactive-color: #6c6c6c;--clock-face-inner-time-inactive-color: #929292;--clock-face-time-disabled-color: #c5c5c5;--clock-face-background-color: #f0f0f0;--clock-hand-color: #08bff6 !important;position:relative;z-index:99999999}::ng-deep ngx-material-timepicker-container{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#00000052;z-index:99998}.theme-custom .bs-datepicker-head,.timepicker__header{background-color:#08bff6!important}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3$1.BsDatepickerDirective, selector: "[bsDatepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isDisabled", "minDate", "maxDate", "minMode", "daysDisabled", "datesDisabled", "datesEnabled", "dateCustomClasses", "dateTooltipTexts", "isOpen", "bsValue", "bsConfig"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDatepicker"] }, { kind: "directive", type: i3$1.BsDatepickerInputDirective, selector: "input[bsDatepicker]" }, { kind: "directive", type: i3$1.BsDaterangepickerDirective, selector: "[bsDaterangepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isOpen", "bsValue", "bsConfig", "isDisabled", "minDate", "maxDate", "dateCustomClasses", "daysDisabled", "datesDisabled", "datesEnabled"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDaterangepicker"] }, { kind: "directive", type: i3$1.BsDaterangepickerInputDirective, selector: "input[bsDaterangepicker]" }, { kind: "component", type: i4.NgxMaterialTimepickerComponent, selector: "ngx-material-timepicker", inputs: ["cancelBtnTmpl", "editableHintTmpl", "confirmBtnTmpl", "ESC", "enableKeyboardInput", "preventOverlayClick", "disableAnimation", "appendToInput", "hoursOnly", "defaultTime", "timepickerClass", "theme", "min", "max", "ngxMaterialTimepickerTheme", "format", "minutesGap"], outputs: ["timeSet", "opened", "closed", "hourSelected", "timeChanged"] }, { kind: "directive", type: i4.TimepickerDirective, selector: "[ngxTimepicker]", inputs: ["format", "min", "max", "ngxTimepicker", "value", "disabled", "disableClick"] }], encapsulation: i0.ViewEncapsulation.None }); }
1420
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DateTimeFieldsComponent, selector: "lib-date-time-fields", inputs: { question: "question" }, providers: [DatePipe], viewQueries: [{ propertyName: "datepicker", first: true, predicate: ["datepickerYMD"], descendants: true }, { propertyName: "dateRangePicker", first: true, predicate: ["daterangepicker"], descendants: true }, { propertyName: "dateAndTimePicker", first: true, predicate: ["dateAndTimePicker"], descendants: true }, { propertyName: "fullTime3", first: true, predicate: ["fullTime3"], descendants: true }], ngImport: i0, template: "<div class=\"mb-5 px-3\">\n <div class=\"input-wrapper mb-2\">\n <div [innerHTML]=\"question.questionNumber\"></div>\n &nbsp;&nbsp; <label>{{ question.question }}</label\n >&nbsp;\n <span class=\"text-danger\" *ngIf=\"required\">*</span>\n <div\n class=\"svg-wrapper mb-2 hintIcon\"\n [attr.data-title]=\"hint\"\n *ngIf=\"hint\"\n >\n <svg\n class=\"hintSvg\"\n viewBox=\"0 0 30 30\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n <ng-container *ngIf=\"dateType === 'DATE_ONLY'\">\n <!-- Date only picker -->\n <div class=\"input-container\">\n <input\n class=\"form-control height\"\n #datepickerYMD=\"bsDatepicker\"\n bsDatepicker\n [minDate]=\"minDate ? minDate : undefined\"\n [maxDate]=\"maxDate ? maxDate : undefined\"\n [bsConfig]=\"{ dateInputFormat: format, containerClass: 'theme-custom' }\"\n [(ngModel)]=\"selectedDate\"\n (blur)=\"validateField()\"\n (ngModelChange)=\"validateField()\"\n [class.invalid]=\"validationFailed\"\n placeholder=\"Select date\"\n />\n <i\n class=\"fa-solid fa-calendar-days calendar-icon text-primary fs-5\"\n (click)=\"openDatePicker()\"\n ></i>\n </div>\n <div *ngIf=\"validationFailed\" class=\"text-danger mt-2\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ validationMessage }}\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"dateType === 'TIME_ONLY'\">\n <!-- Time picker -->\n\n\n<div class=\"input-container\">\n <input\n class=\"form-control height appearanceInput mt-3\"\n aria-label=\"Select time\"\n placeholder=\"Select time\"\n readonly\n [format]=\"timeFormat==='24'?24:12\"\n [ngxTimepicker]=\"fullTime3\"\n [(ngModel)]=\"selectedTime\"\n [max]=\"maxTime\"\n [min]=\"minTime\"\n (ngModelChange)=\"validateField()\"\n [class.invalid]=\"validationFailed\"\n />\n \n <i\n id=\"startDateIcon\"\n class=\"fa-solid fa-clock text-primary fs-6 clock-icon\"\n (click)=\"fullTime3.open()\"\n style=\"cursor: pointer;\"\n></i>\n <ngx-material-timepicker #fullTime3></ngx-material-timepicker>\n</div>\n <div *ngIf=\"validationFailed\" class=\"text-danger mt-2\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ validationMessage }}\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"dateType === 'DATE_AND_TIME'\">\n <!-- Date and time picker -->\n <div class=\"input-container\">\n <input\n #dateAndTimePicker=\"bsDatepicker\"\n type=\"text\"\n class=\"form-control height\"\n [minDate]=\"minDate ? minDate : undefined\"\n [maxDate]=\"maxDate ? maxDate : undefined\"\n [bsConfig]=\"{\n dateInputFormat: format, containerClass: 'theme-custom' \n }\"\n placeholder=\"Select date\"\n bsDatepicker\n [class.invalid]=\"validationFailed\"\n [(ngModel)]=\"selectedDateAndTime\"\n (blur)=\"validateField()\"\n (ngModelChange)=\"validateField()\"\n />\n <i\n class=\"fa-solid fa-calendar-days calendar-icon text-primary fs-5\"\n (click)=\"openDateAndTimePicker()\"\n ></i>\n </div>\n <div class=\"input-container\" *ngIf=\"selectedDateAndTime && selectedDateAndTime != null\">\n <input\n \n class=\"form-control height appearanceInput mt-3\"\n aria-label=\"Select time\"\n placeholder=\"Select time\"\n readonly\n [format]=\"timeFormat==='24'?24:12\"\n [ngxTimepicker]=\"fullTime4\"\n [(ngModel)]=\"selectedTime\"\n [max]=\"maxTime\"\n [min]=\"minTime\"\n (ngModelChange)=\"validateField()\"\n (focus)=\"closeDatepicker()\"\n [class.invalid]=\"timeValidationFailed\"\n />\n \n <i\n id=\"startDateIcon\"\n class=\"fa-solid fa-clock text-primary fs-6 clock-icon\"\n (click)=\"fullTime4.open()\"\n style=\"cursor: pointer;\"\n ></i>\n <ngx-material-timepicker #fullTime4></ngx-material-timepicker>\n </div>\n \n <div *ngIf=\"validationFailed || timeValidationFailed\" class=\"text-danger mt-2\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ validationMessage }}\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"dateType === 'DATE_RANGE'\">\n <!-- Date range picker -->\n <div class=\"input-container\">\n <input\n type=\"text\"\n class=\"form-control height\"\n #daterangepicker=\"bsDaterangepicker\"\n bsDaterangepicker\n placeholder=\"Select date\"\n [minDate]=\"minDate ? minDate : undefined\"\n [maxDate]=\"maxDate ? maxDate : undefined\"\n [bsConfig]=\"{\n rangeInputFormat: format,\n dateInputFormat: format, containerClass: 'theme-custom' \n }\"\n [(ngModel)]=\"selectedDateRange\"\n (blur)=\"validateField()\"\n (ngModelChange)=\"validateField()\"\n [class.invalid]=\"validationFailed\"\n />\n <i\n class=\"fa-solid fa-calendar-days calendar-icon text-primary fs-5\"\n (click)=\"openDateRangePicker()\"\n ></i>\n </div>\n <div *ngIf=\"validationFailed\" class=\"text-danger mt-2\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ validationMessage }}\n </div>\n </ng-container>\n</div>\n", styles: [".input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-inline-start:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);right:0;padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;min-width:300px;word-wrap:break-word;word-break:break-word;text-align:center;white-space:normal}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}.validationSvg{width:24px;height:24px;fill:none}:root{--library-font-family: Roboto, \"Helvetica Neue\", sans-serif;--library-font-size: 14px}::ng-deep html lib-formSubmission{font-family:var(--library-font-family)!important;font-size:var(--library-font-size)!important}.input-container{position:relative}.input-container .form-control{padding-right:30px}.input-container .calendar-icon,.clock-icon{position:absolute;top:50%;right:10px;transform:translateY(-50%);cursor:pointer}.appearanceInput{background-color:#fff}::ng-deep ngx-material-timepicker-content{--body-background-color: #fff;--button-color: #08bff6 !important;--dial-active-color: #fff;--dial-inactive-color: rgba(255, 255, 255, .5);--dial-background-color: #08bff6 !important;--dial-editable-active-color: #08bff6!important;--dial-editable-background-color: #fff;--clock-face-time-active-color: #fff;--clock-face-time-inactive-color: #6c6c6c;--clock-face-inner-time-inactive-color: #929292;--clock-face-time-disabled-color: #c5c5c5;--clock-face-background-color: #f0f0f0;--clock-hand-color: #08bff6 !important;position:relative;z-index:99999999}::ng-deep ngx-material-timepicker-container{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#00000052;z-index:99998}.theme-custom .bs-datepicker-head,.timepicker__header{background-color:#08bff6!important}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3$1.BsDatepickerDirective, selector: "[bsDatepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isDisabled", "minDate", "maxDate", "minMode", "daysDisabled", "datesDisabled", "datesEnabled", "dateCustomClasses", "dateTooltipTexts", "isOpen", "bsValue", "bsConfig"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDatepicker"] }, { kind: "directive", type: i3$1.BsDatepickerInputDirective, selector: "input[bsDatepicker]" }, { kind: "directive", type: i3$1.BsDaterangepickerDirective, selector: "[bsDaterangepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isOpen", "bsValue", "bsConfig", "isDisabled", "minDate", "maxDate", "dateCustomClasses", "daysDisabled", "datesDisabled", "datesEnabled"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDaterangepicker"] }, { kind: "directive", type: i3$1.BsDaterangepickerInputDirective, selector: "input[bsDaterangepicker]" }, { kind: "component", type: i4.NgxMaterialTimepickerComponent, selector: "ngx-material-timepicker", inputs: ["cancelBtnTmpl", "editableHintTmpl", "confirmBtnTmpl", "ESC", "enableKeyboardInput", "preventOverlayClick", "disableAnimation", "appendToInput", "hoursOnly", "defaultTime", "timepickerClass", "theme", "min", "max", "ngxMaterialTimepickerTheme", "format", "minutesGap"], outputs: ["timeSet", "opened", "closed", "hourSelected", "timeChanged"] }, { kind: "directive", type: i4.TimepickerDirective, selector: "[ngxTimepicker]", inputs: ["format", "min", "max", "ngxTimepicker", "value", "disabled", "disableClick"] }], encapsulation: i0.ViewEncapsulation.None }); }
1416
1421
  }
1417
1422
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DateTimeFieldsComponent, decorators: [{
1418
1423
  type: Component,
@@ -1428,6 +1433,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1428
1433
  }], dateAndTimePicker: [{
1429
1434
  type: ViewChild,
1430
1435
  args: ['dateAndTimePicker']
1436
+ }], fullTime3: [{
1437
+ type: ViewChild,
1438
+ args: ['fullTime3']
1431
1439
  }] } });
1432
1440
 
1433
1441
  class DropDownFieldsComponent {