ngx-np-datepicker 2.7.2 → 2.7.4

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.
@@ -251,7 +251,7 @@ NpDatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
251
251
  useExisting: forwardRef(() => NpDatePickerComponent),
252
252
  multi: true,
253
253
  },
254
- ], ngImport: i0, template: "<ng-container *ngIf=\"!!mat; else notMatStyle\">\r\n <div\r\n class=\"custom-mat-field nepali-date-picker\"\r\n [class.has-value]=\"formattedDate\"\r\n [ngClass]=\"theme\"\r\n >\r\n <label *ngIf=\"!!label\" class=\"np-label\"> {{label}} </label>\r\n\r\n <input\r\n class=\"ngx_np_datepicker_input\"\r\n type=\"text\"\r\n [value]=\"formattedDate\"\r\n (focus)=\"open()\"\r\n (keydown)=\"$event.preventDefault()\"\r\n placeholder=\"yyyy/mm/dd\"\r\n autocomplete=\"donot_suggest_autocomplete\"\r\n\r\n autocorrect=\"off\"\r\n autocapitalize=\"off\"\r\n spellcheck=\"false\"\r\n />\r\n <a\r\n class=\"form-icon\"\r\n (click)=\"toggleOpen()\"\r\n [ngClass]=\"isOpen ? 'active' : ''\"\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\r\n <path\r\n d=\"M152 64H296V24C296 10.75 306.7 0 320 0C333.3 0 344 10.75 344 24V64H384C419.3 64 448 92.65 448 128V448C448 483.3 419.3 512 384 512H64C28.65 512 0 483.3 0 448V128C0 92.65 28.65 64 64 64H104V24C104 10.75 114.7 0 128 0C141.3 0 152 10.75 152 24V64zM48 448C48 456.8 55.16 464 64 464H384C392.8 464 400 456.8 400 448V192H48V448z\"\r\n />\r\n </svg>\r\n </a>\r\n <ng-container [ngTemplateOutlet]=\"npdp\" *ngIf=\"isOpen\"></ng-container>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-template #notMatStyle>\r\n <div class=\"nepali-date-picker\" [ngClass]=\"theme\">\r\n <input\r\n class=\"ngx_np_datepicker_input\"\r\n type=\"text\"\r\n [value]=\"formattedDate\"\r\n (focus)=\"open()\"\r\n (keydown)=\"$event.preventDefault()\"\r\n placeholder=\"yyyy/mm/dd\"\r\n autocomplete=\"donot_suggest_autocomplete\"\r\n autocorrect=\"off\"\r\n autocapitalize=\"off\"\r\n spellcheck=\"false\"\r\n />\r\n <a\r\n class=\"form-icon\"\r\n (click)=\"toggleOpen()\"\r\n [ngClass]=\"isOpen ? 'active' : ''\"\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\r\n <path\r\n d=\"M152 64H296V24C296 10.75 306.7 0 320 0C333.3 0 344 10.75 344 24V64H384C419.3 64 448 92.65 448 128V448C448 483.3 419.3 512 384 512H64C28.65 512 0 483.3 0 448V128C0 92.65 28.65 64 64 64H104V24C104 10.75 114.7 0 128 0C141.3 0 152 10.75 152 24V64zM48 448C48 456.8 55.16 464 64 464H384C392.8 464 400 456.8 400 448V192H48V448z\"\r\n />\r\n </svg>\r\n </a>\r\n <ng-container [ngTemplateOutlet]=\"npdp\" *ngIf=\"isOpen\"></ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #npdp>\r\n <div class=\"datepicker__container\">\r\n <div class=\"datepicker__options-container\">\r\n <a class=\"prev-month\" (click)=\"prevMonth()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\r\n <path\r\n d=\"M224 480c-8.188 0-16.38-3.125-22.62-9.375l-192-192c-12.5-12.5-12.5-32.75 0-45.25l192-192c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25L77.25 256l169.4 169.4c12.5 12.5 12.5 32.75 0 45.25C240.4 476.9 232.2 480 224 480z\"\r\n />\r\n </svg>\r\n </a>\r\n <a class=\"select-today\" (click)=\"selectToday()\">\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n class=\"feather feather-home\"\r\n >\r\n <path d=\"M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\"></path>\r\n <polyline points=\"9 22 9 12 15 12 15 22\"></polyline>\r\n </svg>\r\n </a>\r\n <span class=\"datepicker__options-month-container\">\r\n <select (change)=\"selectMonth($event)\">\r\n <option\r\n *ngFor=\"\r\n let month of monthsMapping[language][monthDisplayType];\r\n index as i\r\n \"\r\n [value]=\"month\"\r\n [selected]=\"i === currentNepaliDate.month\"\r\n >\r\n {{ month }}\r\n </option>\r\n </select>\r\n </span>\r\n <span class=\"datepicker__options-year-container\">\r\n <select (change)=\"selectYear($event)\">\r\n <option\r\n *ngFor=\"let year of years; index as i\"\r\n [value]=\"year\"\r\n [selected]=\"year == currentNepaliDate.year\"\r\n >\r\n {{ year | toNp: language : \"number\" }}\r\n </option>\r\n </select>\r\n </span>\r\n\r\n <a class=\"next-month\" (click)=\"nextMonth()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\r\n <path\r\n d=\"M96 480c-8.188 0-16.38-3.125-22.62-9.375c-12.5-12.5-12.5-32.75 0-45.25L242.8 256L73.38 86.63c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0l192 192c12.5 12.5 12.5 32.75 0 45.25l-192 192C112.4 476.9 104.2 480 96 480z\"\r\n />\r\n </svg>\r\n </a>\r\n </div>\r\n <div class=\"datepicker__days-container\">\r\n <div\r\n class=\"datepicker__days\"\r\n *ngFor=\"let day of daysMapping[language][dayDisplayType]; index as i\"\r\n >\r\n <div class=\"datepicker__weekday\">{{ day }}</div>\r\n <div\r\n class=\"datepicker__date-container\"\r\n *ngFor=\"let date of currentMonthData[i]\"\r\n >\r\n <div *ngIf=\"hasFuture; else noFutureDate\">\r\n <div\r\n *ngIf=\"date\"\r\n class=\"datepicker__date\"\r\n [class.datepicker__date--active]=\"\r\n date === currentNepaliDate.day &&\r\n currentNepaliDate.month === currentNepaliDate.month &&\r\n currentNepaliDate.year === currentNepaliDate.year\r\n \"\r\n [class.datepicker__date--current-day]=\"\r\n date === nepaliDateToday.day &&\r\n currentNepaliDate.month === nepaliDateToday.month &&\r\n currentNepaliDate.year === nepaliDateToday.year\r\n \"\r\n (click)=\"selectDate(date)\"\r\n >\r\n {{ date | toNp: language : \"number\" }}\r\n </div>\r\n <div *ngIf=\"!date\" class=\"datepicker__date--disabled\">\r\n <span>&nbsp;</span>\r\n </div>\r\n </div>\r\n\r\n <ng-template #noFutureDate>\r\n <div\r\n *ngIf=\"\r\n date &&\r\n this.currentNepaliDate.year * 365 +\r\n this.currentNepaliDate.month * 30 +\r\n date <=\r\n nepaliDateToday.day +\r\n nepaliDateToday.month * 30 +\r\n nepaliDateToday.year * 365;\r\n else disabledDates\r\n \"\r\n class=\"datepicker__date\"\r\n [class.datepicker__date--active]=\"\r\n date === selectedDate.day &&\r\n currentNepaliDate.month === selectedDate.month &&\r\n currentNepaliDate.year === selectedDate.year\r\n \"\r\n [class.datepicker__date--current-day]=\"\r\n date === nepaliDateToday.day &&\r\n currentNepaliDate.month === nepaliDateToday.month &&\r\n currentNepaliDate.year === nepaliDateToday.year\r\n \"\r\n (click)=\"selectDate(date)\"\r\n >\r\n {{ date | toNp: language : \"number\" }}\r\n </div>\r\n\r\n <ng-template #disabledDates>\r\n <div class=\"datepicker__date datepicker__date--disabled\">\r\n {{ date | toNp: language : \"number\" }}\r\n </div>\r\n </ng-template>\r\n\r\n <div *ngIf=\"!date\" class=\"datepicker__date--disabled\">\r\n <span>&nbsp;</span>\r\n </div>\r\n </ng-template>\r\n </div>\r\n <!--.datepicker__date-container ends-->\r\n </div>\r\n <!--.datepicker__days ends-->\r\n </div>\r\n <!--.datepicker__days-container ends-->\r\n </div>\r\n <!--.datepicker__container ends-->\r\n</ng-template>\r\n", styles: [".nepali-date-picker.nepali-date-picker{position:relative;display:inline-block;font-family:Arial,Helvetica,sans-serif;font-size:1em}.nepali-date-picker a.active svg{fill:#337ab7;opacity:.9}.nepali-date-picker .form-icon svg{width:14px;opacity:.3;position:absolute;right:8px;top:12px;cursor:pointer}.datepicker__container{border:1px solid #eee;background:#fff;width:294px;box-shadow:#0a0a0f33 0 7px 29px;position:absolute;z-index:99999}.datepicker__options-container{padding:12px 5px;border-bottom:1px solid #eee;display:flex;justify-content:space-evenly;background-color:#337ab7;color:#fff;line-height:25px;font-size:1em}.datepicker__days-container{display:flex;justify-content:center;color:#777}.datepicker__days{text-align:center;padding-bottom:10px}.datepicker__weekday{padding:8px;font-weight:700;border-bottom:1px solid #eee;margin-bottom:0}.datepicker__date-container{width:40px;height:40px;line-height:40px;margin:0}.datepicker__date-container>div{height:100%}.datepicker__date{cursor:pointer;border-radius:4px}.datepicker__date:hover{background-color:#eee}.datepicker__date.datepicker__date--disabled{background:#f3f3f3;border-radius:0}.datepicker__date.datepicker__date--disabled:hover{background:#f3f3f3}.datepicker__date--active.datepicker__date--active{background-color:#337ab7;color:#fff}select:focus,select:focus-visible{outline:1px solid #fff}.datepicker__container select{border:none;color:#fff;background:none;font-size:inherit}select option{color:#333}.ngx_np_datepicker_input{border:1px solid #eee;padding:10px;font-size:16px;color:#777}.ngx_np_datepicker_input:focus-visible{outline:2px solid #337ab7}.prev-month,.next-month{padding:0;width:25px;height:25px;display:block;opacity:.5;border-radius:50%;background:#f3f3f3;cursor:pointer;text-align:center;line-height:23px}.next-month:hover,.prev-month:hover{background:#ccc}.prev-month svg,.next-month svg{max-width:8px;height:auto}.select-today{padding:0;width:22px;height:22px;display:block;cursor:pointer;color:#ffffffe6;text-align:center;line-height:23px}.select-today:hover{color:#ffffff80}.select-today svg{max-width:100%}.dark.nepali-date-picker a.active svg{fill:#000}.dark .datepicker__options-container{border-bottom:1px solid #000;background-color:#000;color:#fff}.dark .datepicker__container{background:#333}.dark select{color:#fff}.datepicker__date--current-day{background-color:#f3f3f3;border:2px dashed rgba(0,0,0,.2);position:relative;z-index:999;height:100%}.dark .datepicker__date--active.datepicker__date--active{background-color:#000;color:#fff}.dark .ngx_np_datepicker_input:focus-visible{outline:2px solid #000}.dark .datepicker__days{background-color:#333}.dark .datepicker__date:hover{background-color:#222;color:#fff}.dark .datepicker__days-container{color:#aaa}.dark .datepicker__weekday{border-bottom:1px solid #555}.dark .datepicker__date--current-day{background:#555;border:none}.light.nepali-date-picker a.active svg{fill:#777}.light .datepicker__options-container{border-bottom:none;background-color:#fff;color:#777}.light select{color:#777}.light .datepicker__date--active.datepicker__date--active{background-color:#aaa;color:#fff}.light .ngx_np_datepicker_input:focus-visible{outline:1px solid #ddd}.lightblue.nepali-date-picker a.active svg{fill:#38c5f0da}.lightblue .datepicker__options-container{background-color:#38c5f0da;color:#fff}.lightblue select{color:#fff}.lightblue .datepicker__date--active.datepicker__date--active{background-color:#38c5f0da;color:#fff}.lightblue .ngx_np_datepicker_input:focus-visible{outline:2px solid #38c5f0da}.lightblue .ngx_np_datepicker_input:focus-visible{outline:1px solid #38c5f0da}.custom-mat-field{position:relative;width:100%;height:56px;background:rgba(0,0,0,.04);border-top-left-radius:4px;border-top-right-radius:4px;border-bottom:1px solid rgba(0,0,0,.42);transition:background-color .2s ease}.custom-mat-field:hover{background:rgba(0,0,0,.08)}.custom-mat-field:focus-within{border-bottom:2px solid #3f51b5}.custom-mat-field .ngx_np_datepicker_input:focus-visible{outline:none}.custom-mat-field .ngx_np_datepicker_input{width:100%;height:100%;border:none;background:transparent;outline:none;padding:24px 12px 8px;font-size:16px;box-sizing:border-box}.custom-mat-field .np-label{position:absolute;left:12px;top:18px;color:#0009;font-size:16px;pointer-events:none;transform-origin:left top;transition:all .15s ease}.custom-mat-field.has-value .np-label,.custom-mat-field:focus-within .np-label,.custom-mat-field .ngx_np_datepicker_input:not(:placeholder-shown)+.np-label{top:8px;font-size:12px;color:#3f51b5}.custom-mat-field .ngx_np_datepicker_input::placeholder{opacity:0;transition:opacity .15s ease}.custom-mat-field .ngx_np_datepicker_input:focus::placeholder{opacity:1}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }], pipes: { "toNp": i4.ToNpPipe }, encapsulation: i0.ViewEncapsulation.None });
254
+ ], ngImport: i0, template: "<ng-container *ngIf=\"!!mat; else notMatStyle\">\r\n <div\r\n class=\"custom-mat-field nepali-date-picker\"\r\n [class.has-value]=\"formattedDate\"\r\n [ngClass]=\"theme\"\r\n >\r\n <label *ngIf=\"!!label\" class=\"np-label\"> {{ label }} </label>\r\n\r\n <input\r\n class=\"ngx_np_datepicker_input\"\r\n type=\"text\"\r\n [value]=\"formattedDate\"\r\n (focus)=\"open()\"\r\n (keydown)=\"$event.preventDefault()\"\r\n placeholder=\"yyyy/mm/dd\"\r\n autocomplete=\"donot_suggest_autocomplete\"\r\n autocorrect=\"off\"\r\n autocapitalize=\"off\"\r\n spellcheck=\"false\"\r\n />\r\n <a\r\n class=\"form-icon\"\r\n (click)=\"toggleOpen()\"\r\n [ngClass]=\"isOpen ? 'active' : ''\"\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\r\n <path\r\n d=\"M152 64H296V24C296 10.75 306.7 0 320 0C333.3 0 344 10.75 344 24V64H384C419.3 64 448 92.65 448 128V448C448 483.3 419.3 512 384 512H64C28.65 512 0 483.3 0 448V128C0 92.65 28.65 64 64 64H104V24C104 10.75 114.7 0 128 0C141.3 0 152 10.75 152 24V64zM48 448C48 456.8 55.16 464 64 464H384C392.8 464 400 456.8 400 448V192H48V448z\"\r\n />\r\n </svg>\r\n </a>\r\n <ng-container [ngTemplateOutlet]=\"npdp\" *ngIf=\"isOpen\"></ng-container>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-template #notMatStyle>\r\n <div class=\"nepali-date-picker\" [ngClass]=\"theme\">\r\n <input\r\n class=\"ngx_np_datepicker_input\"\r\n type=\"text\"\r\n [value]=\"formattedDate\"\r\n (focus)=\"open()\"\r\n (keydown)=\"$event.preventDefault()\"\r\n placeholder=\"yyyy/mm/dd\"\r\n autocomplete=\"donot_suggest_autocomplete\"\r\n autocorrect=\"off\"\r\n autocapitalize=\"off\"\r\n spellcheck=\"false\"\r\n />\r\n <a\r\n class=\"form-icon\"\r\n (click)=\"toggleOpen()\"\r\n [ngClass]=\"isOpen ? 'active' : ''\"\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\r\n <path\r\n d=\"M152 64H296V24C296 10.75 306.7 0 320 0C333.3 0 344 10.75 344 24V64H384C419.3 64 448 92.65 448 128V448C448 483.3 419.3 512 384 512H64C28.65 512 0 483.3 0 448V128C0 92.65 28.65 64 64 64H104V24C104 10.75 114.7 0 128 0C141.3 0 152 10.75 152 24V64zM48 448C48 456.8 55.16 464 64 464H384C392.8 464 400 456.8 400 448V192H48V448z\"\r\n />\r\n </svg>\r\n </a>\r\n <ng-container [ngTemplateOutlet]=\"npdp\" *ngIf=\"isOpen\"></ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #npdp>\r\n <div class=\"datepicker__container\">\r\n <div class=\"datepicker__options-container\">\r\n <a class=\"prev-month\" (click)=\"prevMonth()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\r\n <path\r\n d=\"M224 480c-8.188 0-16.38-3.125-22.62-9.375l-192-192c-12.5-12.5-12.5-32.75 0-45.25l192-192c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25L77.25 256l169.4 169.4c12.5 12.5 12.5 32.75 0 45.25C240.4 476.9 232.2 480 224 480z\"\r\n />\r\n </svg>\r\n </a>\r\n <a class=\"select-today\" (click)=\"selectToday()\">\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n class=\"feather feather-home\"\r\n >\r\n <path d=\"M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\"></path>\r\n <polyline points=\"9 22 9 12 15 12 15 22\"></polyline>\r\n </svg>\r\n </a>\r\n <span class=\"datepicker__options-month-container\">\r\n <select (change)=\"selectMonth($event)\">\r\n <option\r\n *ngFor=\"\r\n let month of monthsMapping[language][monthDisplayType];\r\n index as i\r\n \"\r\n [value]=\"month\"\r\n [selected]=\"i === currentNepaliDate.month\"\r\n >\r\n {{ month }}\r\n </option>\r\n </select>\r\n </span>\r\n <span class=\"datepicker__options-year-container\">\r\n <select (change)=\"selectYear($event)\">\r\n <option\r\n *ngFor=\"let year of years; index as i\"\r\n [value]=\"year\"\r\n [selected]=\"year == currentNepaliDate.year\"\r\n >\r\n {{ year | toNp: language : \"number\" }}\r\n </option>\r\n </select>\r\n </span>\r\n\r\n <a class=\"next-month\" (click)=\"nextMonth()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\r\n <path\r\n d=\"M96 480c-8.188 0-16.38-3.125-22.62-9.375c-12.5-12.5-12.5-32.75 0-45.25L242.8 256L73.38 86.63c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0l192 192c12.5 12.5 12.5 32.75 0 45.25l-192 192C112.4 476.9 104.2 480 96 480z\"\r\n />\r\n </svg>\r\n </a>\r\n </div>\r\n <div class=\"datepicker__days-container\">\r\n <div\r\n class=\"datepicker__days\"\r\n *ngFor=\"let day of daysMapping[language][dayDisplayType]; index as i\"\r\n >\r\n <div class=\"datepicker__weekday\">{{ day }}</div>\r\n <div\r\n class=\"datepicker__date-container\"\r\n *ngFor=\"let date of currentMonthData[i]\"\r\n >\r\n <div *ngIf=\"hasFuture; else noFutureDate\">\r\n <div\r\n *ngIf=\"date\"\r\n class=\"datepicker__date\"\r\n [class.datepicker__date--active]=\"\r\n date === currentNepaliDate.day &&\r\n currentNepaliDate.month === currentNepaliDate.month &&\r\n currentNepaliDate.year === currentNepaliDate.year\r\n \"\r\n [class.datepicker__date--current-day]=\"\r\n date === nepaliDateToday.day &&\r\n currentNepaliDate.month === nepaliDateToday.month &&\r\n currentNepaliDate.year === nepaliDateToday.year\r\n \"\r\n (click)=\"selectDate(date)\"\r\n >\r\n {{ date | toNp: language : \"number\" }}\r\n </div>\r\n <div *ngIf=\"!date\" class=\"datepicker__date--disabled\">\r\n <span>&nbsp;</span>\r\n </div>\r\n </div>\r\n\r\n <ng-template #noFutureDate>\r\n <div\r\n *ngIf=\"\r\n date &&\r\n this.currentNepaliDate.year * 365 +\r\n this.currentNepaliDate.month * 30 +\r\n date <=\r\n nepaliDateToday.day +\r\n nepaliDateToday.month * 30 +\r\n nepaliDateToday.year * 365;\r\n else disabledDates\r\n \"\r\n class=\"datepicker__date\"\r\n [class.datepicker__date--active]=\"\r\n date === selectedDate.day &&\r\n currentNepaliDate.month === selectedDate.month &&\r\n currentNepaliDate.year === selectedDate.year\r\n \"\r\n [class.datepicker__date--current-day]=\"\r\n date === nepaliDateToday.day &&\r\n currentNepaliDate.month === nepaliDateToday.month &&\r\n currentNepaliDate.year === nepaliDateToday.year\r\n \"\r\n (click)=\"selectDate(date)\"\r\n >\r\n {{ date | toNp: language : \"number\" }}\r\n </div>\r\n\r\n <ng-template #disabledDates>\r\n <div class=\"datepicker__date datepicker__date--disabled\">\r\n {{ date | toNp: language : \"number\" }}\r\n </div>\r\n </ng-template>\r\n\r\n <div *ngIf=\"!date\" class=\"datepicker__date--disabled\">\r\n <span>&nbsp;</span>\r\n </div>\r\n </ng-template>\r\n </div>\r\n <!--.datepicker__date-container ends-->\r\n </div>\r\n <!--.datepicker__days ends-->\r\n </div>\r\n <!--.datepicker__days-container ends-->\r\n </div>\r\n <!--.datepicker__container ends-->\r\n</ng-template>\r\n", styles: [".nepali-date-picker.nepali-date-picker{position:relative;display:inline-block;font-family:Arial,Helvetica,sans-serif;font-size:1em}.nepali-date-picker a.active svg{fill:#337ab7;opacity:.9}.nepali-date-picker .form-icon svg{width:14px;opacity:.3;position:absolute;right:8px;top:12px;cursor:pointer}.datepicker__container{border:1px solid #eee;background:#fff;width:294px;box-shadow:#0a0a0f33 0 7px 29px;position:absolute;z-index:99999}.datepicker__options-container{padding:12px 5px;border-bottom:1px solid #eee;display:flex;justify-content:space-evenly;background-color:#337ab7;color:#fff;line-height:25px;font-size:1em}.datepicker__days-container{display:flex;justify-content:center;color:#777}.datepicker__days{text-align:center;padding-bottom:10px}.datepicker__weekday{padding:8px;font-weight:700;border-bottom:1px solid #eee;margin-bottom:0}.datepicker__date-container{width:40px;height:40px;line-height:40px;margin:0}.datepicker__date-container>div{height:100%}.datepicker__date{cursor:pointer;border-radius:4px}.datepicker__date:hover{background-color:#eee}.datepicker__date.datepicker__date--disabled{background:#f3f3f3;border-radius:0}.datepicker__date.datepicker__date--disabled:hover{background:#f3f3f3}.datepicker__date--active.datepicker__date--active{background-color:#337ab7;color:#fff}select:focus,select:focus-visible{outline:1px solid #fff}.datepicker__container select{border:none;color:#fff;background:none;font-size:inherit}select option{color:#333}.ngx_np_datepicker_input{border:1px solid #eee;padding:10px;font-size:16px;color:#777}.ngx_np_datepicker_input:focus-visible{outline:2px solid #337ab7}.prev-month,.next-month{padding:0;width:25px;height:25px;display:block;opacity:.5;border-radius:50%;background:#f3f3f3;cursor:pointer;text-align:center;line-height:23px}.next-month:hover,.prev-month:hover{background:#ccc}.prev-month svg,.next-month svg{max-width:8px;height:auto}.select-today{padding:0;width:22px;height:22px;display:block;cursor:pointer;color:#ffffffe6;text-align:center;line-height:23px}.select-today:hover{color:#ffffff80}.select-today svg{max-width:100%}.dark.nepali-date-picker a.active svg{fill:#000}.dark .datepicker__options-container{border-bottom:1px solid #000;background-color:#000;color:#fff}.dark .datepicker__container{background:#333}.dark select{color:#fff}.datepicker__date--current-day{background-color:#f3f3f3;border:2px dashed rgba(0,0,0,.2);position:relative;z-index:999;height:100%}.dark .datepicker__date--active.datepicker__date--active{background-color:#000;color:#fff}.dark .ngx_np_datepicker_input:focus-visible{outline:2px solid #000}.dark .datepicker__days{background-color:#333}.dark .datepicker__date:hover{background-color:#222;color:#fff}.dark .datepicker__days-container{color:#aaa}.dark .datepicker__weekday{border-bottom:1px solid #555}.dark .datepicker__date--current-day{background:#555;border:none}.light.nepali-date-picker a.active svg{fill:#777}.light .datepicker__options-container{border-bottom:none;background-color:#fff;color:#777}.light select{color:#777}.light .datepicker__date--active.datepicker__date--active{background-color:#aaa;color:#fff}.light .ngx_np_datepicker_input:focus-visible{outline:1px solid #ddd}.lightblue.nepali-date-picker a.active svg{fill:#38c5f0da}.lightblue .datepicker__options-container{background-color:#38c5f0da;color:#fff}.lightblue select{color:#fff}.lightblue .datepicker__date--active.datepicker__date--active{background-color:#38c5f0da;color:#fff}.lightblue .ngx_np_datepicker_input:focus-visible{outline:2px solid #38c5f0da}.lightblue .ngx_np_datepicker_input:focus-visible{outline:1px solid #38c5f0da}.custom-mat-field{position:relative;width:100%;height:45px;background:rgba(0,0,0,.04);border-top-left-radius:4px;border-top-right-radius:4px;border-bottom:1px solid rgba(0,0,0,.42);transition:background-color .2s ease}.custom-mat-field:hover{background:rgba(0,0,0,.08)}.custom-mat-field:focus-within{border-bottom:2px solid #3f51b5}.custom-mat-field .ngx_np_datepicker_input:focus-visible{outline:none}.custom-mat-field .ngx_np_datepicker_input{width:100%;height:100%;border:none;background:transparent;outline:none;padding:24px 12px 8px;font-size:16px;box-sizing:border-box}.custom-mat-field .np-label{position:absolute;left:12px;top:18px;color:#0009;font-size:16px;pointer-events:none;transform-origin:left top;transition:all .15s ease}.custom-mat-field.has-value .np-label,.custom-mat-field:focus-within .np-label,.custom-mat-field .ngx_np_datepicker_input:not(:placeholder-shown)+.np-label{top:8px;font-size:12px;color:#3f51b5}.custom-mat-field .ngx_np_datepicker_input::placeholder{opacity:0;transition:opacity .15s ease}.custom-mat-field .ngx_np_datepicker_input:focus::placeholder{opacity:1}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }], pipes: { "toNp": i4.ToNpPipe }, encapsulation: i0.ViewEncapsulation.None });
255
255
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: NpDatePickerComponent, decorators: [{
256
256
  type: Component,
257
257
  args: [{ selector: 'np-datepicker', providers: [
@@ -260,7 +260,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImpor
260
260
  useExisting: forwardRef(() => NpDatePickerComponent),
261
261
  multi: true,
262
262
  },
263
- ], encapsulation: ViewEncapsulation.None, template: "<ng-container *ngIf=\"!!mat; else notMatStyle\">\r\n <div\r\n class=\"custom-mat-field nepali-date-picker\"\r\n [class.has-value]=\"formattedDate\"\r\n [ngClass]=\"theme\"\r\n >\r\n <label *ngIf=\"!!label\" class=\"np-label\"> {{label}} </label>\r\n\r\n <input\r\n class=\"ngx_np_datepicker_input\"\r\n type=\"text\"\r\n [value]=\"formattedDate\"\r\n (focus)=\"open()\"\r\n (keydown)=\"$event.preventDefault()\"\r\n placeholder=\"yyyy/mm/dd\"\r\n autocomplete=\"donot_suggest_autocomplete\"\r\n\r\n autocorrect=\"off\"\r\n autocapitalize=\"off\"\r\n spellcheck=\"false\"\r\n />\r\n <a\r\n class=\"form-icon\"\r\n (click)=\"toggleOpen()\"\r\n [ngClass]=\"isOpen ? 'active' : ''\"\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\r\n <path\r\n d=\"M152 64H296V24C296 10.75 306.7 0 320 0C333.3 0 344 10.75 344 24V64H384C419.3 64 448 92.65 448 128V448C448 483.3 419.3 512 384 512H64C28.65 512 0 483.3 0 448V128C0 92.65 28.65 64 64 64H104V24C104 10.75 114.7 0 128 0C141.3 0 152 10.75 152 24V64zM48 448C48 456.8 55.16 464 64 464H384C392.8 464 400 456.8 400 448V192H48V448z\"\r\n />\r\n </svg>\r\n </a>\r\n <ng-container [ngTemplateOutlet]=\"npdp\" *ngIf=\"isOpen\"></ng-container>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-template #notMatStyle>\r\n <div class=\"nepali-date-picker\" [ngClass]=\"theme\">\r\n <input\r\n class=\"ngx_np_datepicker_input\"\r\n type=\"text\"\r\n [value]=\"formattedDate\"\r\n (focus)=\"open()\"\r\n (keydown)=\"$event.preventDefault()\"\r\n placeholder=\"yyyy/mm/dd\"\r\n autocomplete=\"donot_suggest_autocomplete\"\r\n autocorrect=\"off\"\r\n autocapitalize=\"off\"\r\n spellcheck=\"false\"\r\n />\r\n <a\r\n class=\"form-icon\"\r\n (click)=\"toggleOpen()\"\r\n [ngClass]=\"isOpen ? 'active' : ''\"\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\r\n <path\r\n d=\"M152 64H296V24C296 10.75 306.7 0 320 0C333.3 0 344 10.75 344 24V64H384C419.3 64 448 92.65 448 128V448C448 483.3 419.3 512 384 512H64C28.65 512 0 483.3 0 448V128C0 92.65 28.65 64 64 64H104V24C104 10.75 114.7 0 128 0C141.3 0 152 10.75 152 24V64zM48 448C48 456.8 55.16 464 64 464H384C392.8 464 400 456.8 400 448V192H48V448z\"\r\n />\r\n </svg>\r\n </a>\r\n <ng-container [ngTemplateOutlet]=\"npdp\" *ngIf=\"isOpen\"></ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #npdp>\r\n <div class=\"datepicker__container\">\r\n <div class=\"datepicker__options-container\">\r\n <a class=\"prev-month\" (click)=\"prevMonth()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\r\n <path\r\n d=\"M224 480c-8.188 0-16.38-3.125-22.62-9.375l-192-192c-12.5-12.5-12.5-32.75 0-45.25l192-192c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25L77.25 256l169.4 169.4c12.5 12.5 12.5 32.75 0 45.25C240.4 476.9 232.2 480 224 480z\"\r\n />\r\n </svg>\r\n </a>\r\n <a class=\"select-today\" (click)=\"selectToday()\">\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n class=\"feather feather-home\"\r\n >\r\n <path d=\"M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\"></path>\r\n <polyline points=\"9 22 9 12 15 12 15 22\"></polyline>\r\n </svg>\r\n </a>\r\n <span class=\"datepicker__options-month-container\">\r\n <select (change)=\"selectMonth($event)\">\r\n <option\r\n *ngFor=\"\r\n let month of monthsMapping[language][monthDisplayType];\r\n index as i\r\n \"\r\n [value]=\"month\"\r\n [selected]=\"i === currentNepaliDate.month\"\r\n >\r\n {{ month }}\r\n </option>\r\n </select>\r\n </span>\r\n <span class=\"datepicker__options-year-container\">\r\n <select (change)=\"selectYear($event)\">\r\n <option\r\n *ngFor=\"let year of years; index as i\"\r\n [value]=\"year\"\r\n [selected]=\"year == currentNepaliDate.year\"\r\n >\r\n {{ year | toNp: language : \"number\" }}\r\n </option>\r\n </select>\r\n </span>\r\n\r\n <a class=\"next-month\" (click)=\"nextMonth()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\r\n <path\r\n d=\"M96 480c-8.188 0-16.38-3.125-22.62-9.375c-12.5-12.5-12.5-32.75 0-45.25L242.8 256L73.38 86.63c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0l192 192c12.5 12.5 12.5 32.75 0 45.25l-192 192C112.4 476.9 104.2 480 96 480z\"\r\n />\r\n </svg>\r\n </a>\r\n </div>\r\n <div class=\"datepicker__days-container\">\r\n <div\r\n class=\"datepicker__days\"\r\n *ngFor=\"let day of daysMapping[language][dayDisplayType]; index as i\"\r\n >\r\n <div class=\"datepicker__weekday\">{{ day }}</div>\r\n <div\r\n class=\"datepicker__date-container\"\r\n *ngFor=\"let date of currentMonthData[i]\"\r\n >\r\n <div *ngIf=\"hasFuture; else noFutureDate\">\r\n <div\r\n *ngIf=\"date\"\r\n class=\"datepicker__date\"\r\n [class.datepicker__date--active]=\"\r\n date === currentNepaliDate.day &&\r\n currentNepaliDate.month === currentNepaliDate.month &&\r\n currentNepaliDate.year === currentNepaliDate.year\r\n \"\r\n [class.datepicker__date--current-day]=\"\r\n date === nepaliDateToday.day &&\r\n currentNepaliDate.month === nepaliDateToday.month &&\r\n currentNepaliDate.year === nepaliDateToday.year\r\n \"\r\n (click)=\"selectDate(date)\"\r\n >\r\n {{ date | toNp: language : \"number\" }}\r\n </div>\r\n <div *ngIf=\"!date\" class=\"datepicker__date--disabled\">\r\n <span>&nbsp;</span>\r\n </div>\r\n </div>\r\n\r\n <ng-template #noFutureDate>\r\n <div\r\n *ngIf=\"\r\n date &&\r\n this.currentNepaliDate.year * 365 +\r\n this.currentNepaliDate.month * 30 +\r\n date <=\r\n nepaliDateToday.day +\r\n nepaliDateToday.month * 30 +\r\n nepaliDateToday.year * 365;\r\n else disabledDates\r\n \"\r\n class=\"datepicker__date\"\r\n [class.datepicker__date--active]=\"\r\n date === selectedDate.day &&\r\n currentNepaliDate.month === selectedDate.month &&\r\n currentNepaliDate.year === selectedDate.year\r\n \"\r\n [class.datepicker__date--current-day]=\"\r\n date === nepaliDateToday.day &&\r\n currentNepaliDate.month === nepaliDateToday.month &&\r\n currentNepaliDate.year === nepaliDateToday.year\r\n \"\r\n (click)=\"selectDate(date)\"\r\n >\r\n {{ date | toNp: language : \"number\" }}\r\n </div>\r\n\r\n <ng-template #disabledDates>\r\n <div class=\"datepicker__date datepicker__date--disabled\">\r\n {{ date | toNp: language : \"number\" }}\r\n </div>\r\n </ng-template>\r\n\r\n <div *ngIf=\"!date\" class=\"datepicker__date--disabled\">\r\n <span>&nbsp;</span>\r\n </div>\r\n </ng-template>\r\n </div>\r\n <!--.datepicker__date-container ends-->\r\n </div>\r\n <!--.datepicker__days ends-->\r\n </div>\r\n <!--.datepicker__days-container ends-->\r\n </div>\r\n <!--.datepicker__container ends-->\r\n</ng-template>\r\n", styles: [".nepali-date-picker.nepali-date-picker{position:relative;display:inline-block;font-family:Arial,Helvetica,sans-serif;font-size:1em}.nepali-date-picker a.active svg{fill:#337ab7;opacity:.9}.nepali-date-picker .form-icon svg{width:14px;opacity:.3;position:absolute;right:8px;top:12px;cursor:pointer}.datepicker__container{border:1px solid #eee;background:#fff;width:294px;box-shadow:#0a0a0f33 0 7px 29px;position:absolute;z-index:99999}.datepicker__options-container{padding:12px 5px;border-bottom:1px solid #eee;display:flex;justify-content:space-evenly;background-color:#337ab7;color:#fff;line-height:25px;font-size:1em}.datepicker__days-container{display:flex;justify-content:center;color:#777}.datepicker__days{text-align:center;padding-bottom:10px}.datepicker__weekday{padding:8px;font-weight:700;border-bottom:1px solid #eee;margin-bottom:0}.datepicker__date-container{width:40px;height:40px;line-height:40px;margin:0}.datepicker__date-container>div{height:100%}.datepicker__date{cursor:pointer;border-radius:4px}.datepicker__date:hover{background-color:#eee}.datepicker__date.datepicker__date--disabled{background:#f3f3f3;border-radius:0}.datepicker__date.datepicker__date--disabled:hover{background:#f3f3f3}.datepicker__date--active.datepicker__date--active{background-color:#337ab7;color:#fff}select:focus,select:focus-visible{outline:1px solid #fff}.datepicker__container select{border:none;color:#fff;background:none;font-size:inherit}select option{color:#333}.ngx_np_datepicker_input{border:1px solid #eee;padding:10px;font-size:16px;color:#777}.ngx_np_datepicker_input:focus-visible{outline:2px solid #337ab7}.prev-month,.next-month{padding:0;width:25px;height:25px;display:block;opacity:.5;border-radius:50%;background:#f3f3f3;cursor:pointer;text-align:center;line-height:23px}.next-month:hover,.prev-month:hover{background:#ccc}.prev-month svg,.next-month svg{max-width:8px;height:auto}.select-today{padding:0;width:22px;height:22px;display:block;cursor:pointer;color:#ffffffe6;text-align:center;line-height:23px}.select-today:hover{color:#ffffff80}.select-today svg{max-width:100%}.dark.nepali-date-picker a.active svg{fill:#000}.dark .datepicker__options-container{border-bottom:1px solid #000;background-color:#000;color:#fff}.dark .datepicker__container{background:#333}.dark select{color:#fff}.datepicker__date--current-day{background-color:#f3f3f3;border:2px dashed rgba(0,0,0,.2);position:relative;z-index:999;height:100%}.dark .datepicker__date--active.datepicker__date--active{background-color:#000;color:#fff}.dark .ngx_np_datepicker_input:focus-visible{outline:2px solid #000}.dark .datepicker__days{background-color:#333}.dark .datepicker__date:hover{background-color:#222;color:#fff}.dark .datepicker__days-container{color:#aaa}.dark .datepicker__weekday{border-bottom:1px solid #555}.dark .datepicker__date--current-day{background:#555;border:none}.light.nepali-date-picker a.active svg{fill:#777}.light .datepicker__options-container{border-bottom:none;background-color:#fff;color:#777}.light select{color:#777}.light .datepicker__date--active.datepicker__date--active{background-color:#aaa;color:#fff}.light .ngx_np_datepicker_input:focus-visible{outline:1px solid #ddd}.lightblue.nepali-date-picker a.active svg{fill:#38c5f0da}.lightblue .datepicker__options-container{background-color:#38c5f0da;color:#fff}.lightblue select{color:#fff}.lightblue .datepicker__date--active.datepicker__date--active{background-color:#38c5f0da;color:#fff}.lightblue .ngx_np_datepicker_input:focus-visible{outline:2px solid #38c5f0da}.lightblue .ngx_np_datepicker_input:focus-visible{outline:1px solid #38c5f0da}.custom-mat-field{position:relative;width:100%;height:56px;background:rgba(0,0,0,.04);border-top-left-radius:4px;border-top-right-radius:4px;border-bottom:1px solid rgba(0,0,0,.42);transition:background-color .2s ease}.custom-mat-field:hover{background:rgba(0,0,0,.08)}.custom-mat-field:focus-within{border-bottom:2px solid #3f51b5}.custom-mat-field .ngx_np_datepicker_input:focus-visible{outline:none}.custom-mat-field .ngx_np_datepicker_input{width:100%;height:100%;border:none;background:transparent;outline:none;padding:24px 12px 8px;font-size:16px;box-sizing:border-box}.custom-mat-field .np-label{position:absolute;left:12px;top:18px;color:#0009;font-size:16px;pointer-events:none;transform-origin:left top;transition:all .15s ease}.custom-mat-field.has-value .np-label,.custom-mat-field:focus-within .np-label,.custom-mat-field .ngx_np_datepicker_input:not(:placeholder-shown)+.np-label{top:8px;font-size:12px;color:#3f51b5}.custom-mat-field .ngx_np_datepicker_input::placeholder{opacity:0;transition:opacity .15s ease}.custom-mat-field .ngx_np_datepicker_input:focus::placeholder{opacity:1}\n"] }]
263
+ ], encapsulation: ViewEncapsulation.None, template: "<ng-container *ngIf=\"!!mat; else notMatStyle\">\r\n <div\r\n class=\"custom-mat-field nepali-date-picker\"\r\n [class.has-value]=\"formattedDate\"\r\n [ngClass]=\"theme\"\r\n >\r\n <label *ngIf=\"!!label\" class=\"np-label\"> {{ label }} </label>\r\n\r\n <input\r\n class=\"ngx_np_datepicker_input\"\r\n type=\"text\"\r\n [value]=\"formattedDate\"\r\n (focus)=\"open()\"\r\n (keydown)=\"$event.preventDefault()\"\r\n placeholder=\"yyyy/mm/dd\"\r\n autocomplete=\"donot_suggest_autocomplete\"\r\n autocorrect=\"off\"\r\n autocapitalize=\"off\"\r\n spellcheck=\"false\"\r\n />\r\n <a\r\n class=\"form-icon\"\r\n (click)=\"toggleOpen()\"\r\n [ngClass]=\"isOpen ? 'active' : ''\"\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\r\n <path\r\n d=\"M152 64H296V24C296 10.75 306.7 0 320 0C333.3 0 344 10.75 344 24V64H384C419.3 64 448 92.65 448 128V448C448 483.3 419.3 512 384 512H64C28.65 512 0 483.3 0 448V128C0 92.65 28.65 64 64 64H104V24C104 10.75 114.7 0 128 0C141.3 0 152 10.75 152 24V64zM48 448C48 456.8 55.16 464 64 464H384C392.8 464 400 456.8 400 448V192H48V448z\"\r\n />\r\n </svg>\r\n </a>\r\n <ng-container [ngTemplateOutlet]=\"npdp\" *ngIf=\"isOpen\"></ng-container>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-template #notMatStyle>\r\n <div class=\"nepali-date-picker\" [ngClass]=\"theme\">\r\n <input\r\n class=\"ngx_np_datepicker_input\"\r\n type=\"text\"\r\n [value]=\"formattedDate\"\r\n (focus)=\"open()\"\r\n (keydown)=\"$event.preventDefault()\"\r\n placeholder=\"yyyy/mm/dd\"\r\n autocomplete=\"donot_suggest_autocomplete\"\r\n autocorrect=\"off\"\r\n autocapitalize=\"off\"\r\n spellcheck=\"false\"\r\n />\r\n <a\r\n class=\"form-icon\"\r\n (click)=\"toggleOpen()\"\r\n [ngClass]=\"isOpen ? 'active' : ''\"\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\r\n <path\r\n d=\"M152 64H296V24C296 10.75 306.7 0 320 0C333.3 0 344 10.75 344 24V64H384C419.3 64 448 92.65 448 128V448C448 483.3 419.3 512 384 512H64C28.65 512 0 483.3 0 448V128C0 92.65 28.65 64 64 64H104V24C104 10.75 114.7 0 128 0C141.3 0 152 10.75 152 24V64zM48 448C48 456.8 55.16 464 64 464H384C392.8 464 400 456.8 400 448V192H48V448z\"\r\n />\r\n </svg>\r\n </a>\r\n <ng-container [ngTemplateOutlet]=\"npdp\" *ngIf=\"isOpen\"></ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #npdp>\r\n <div class=\"datepicker__container\">\r\n <div class=\"datepicker__options-container\">\r\n <a class=\"prev-month\" (click)=\"prevMonth()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\r\n <path\r\n d=\"M224 480c-8.188 0-16.38-3.125-22.62-9.375l-192-192c-12.5-12.5-12.5-32.75 0-45.25l192-192c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25L77.25 256l169.4 169.4c12.5 12.5 12.5 32.75 0 45.25C240.4 476.9 232.2 480 224 480z\"\r\n />\r\n </svg>\r\n </a>\r\n <a class=\"select-today\" (click)=\"selectToday()\">\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n class=\"feather feather-home\"\r\n >\r\n <path d=\"M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\"></path>\r\n <polyline points=\"9 22 9 12 15 12 15 22\"></polyline>\r\n </svg>\r\n </a>\r\n <span class=\"datepicker__options-month-container\">\r\n <select (change)=\"selectMonth($event)\">\r\n <option\r\n *ngFor=\"\r\n let month of monthsMapping[language][monthDisplayType];\r\n index as i\r\n \"\r\n [value]=\"month\"\r\n [selected]=\"i === currentNepaliDate.month\"\r\n >\r\n {{ month }}\r\n </option>\r\n </select>\r\n </span>\r\n <span class=\"datepicker__options-year-container\">\r\n <select (change)=\"selectYear($event)\">\r\n <option\r\n *ngFor=\"let year of years; index as i\"\r\n [value]=\"year\"\r\n [selected]=\"year == currentNepaliDate.year\"\r\n >\r\n {{ year | toNp: language : \"number\" }}\r\n </option>\r\n </select>\r\n </span>\r\n\r\n <a class=\"next-month\" (click)=\"nextMonth()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\r\n <path\r\n d=\"M96 480c-8.188 0-16.38-3.125-22.62-9.375c-12.5-12.5-12.5-32.75 0-45.25L242.8 256L73.38 86.63c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0l192 192c12.5 12.5 12.5 32.75 0 45.25l-192 192C112.4 476.9 104.2 480 96 480z\"\r\n />\r\n </svg>\r\n </a>\r\n </div>\r\n <div class=\"datepicker__days-container\">\r\n <div\r\n class=\"datepicker__days\"\r\n *ngFor=\"let day of daysMapping[language][dayDisplayType]; index as i\"\r\n >\r\n <div class=\"datepicker__weekday\">{{ day }}</div>\r\n <div\r\n class=\"datepicker__date-container\"\r\n *ngFor=\"let date of currentMonthData[i]\"\r\n >\r\n <div *ngIf=\"hasFuture; else noFutureDate\">\r\n <div\r\n *ngIf=\"date\"\r\n class=\"datepicker__date\"\r\n [class.datepicker__date--active]=\"\r\n date === currentNepaliDate.day &&\r\n currentNepaliDate.month === currentNepaliDate.month &&\r\n currentNepaliDate.year === currentNepaliDate.year\r\n \"\r\n [class.datepicker__date--current-day]=\"\r\n date === nepaliDateToday.day &&\r\n currentNepaliDate.month === nepaliDateToday.month &&\r\n currentNepaliDate.year === nepaliDateToday.year\r\n \"\r\n (click)=\"selectDate(date)\"\r\n >\r\n {{ date | toNp: language : \"number\" }}\r\n </div>\r\n <div *ngIf=\"!date\" class=\"datepicker__date--disabled\">\r\n <span>&nbsp;</span>\r\n </div>\r\n </div>\r\n\r\n <ng-template #noFutureDate>\r\n <div\r\n *ngIf=\"\r\n date &&\r\n this.currentNepaliDate.year * 365 +\r\n this.currentNepaliDate.month * 30 +\r\n date <=\r\n nepaliDateToday.day +\r\n nepaliDateToday.month * 30 +\r\n nepaliDateToday.year * 365;\r\n else disabledDates\r\n \"\r\n class=\"datepicker__date\"\r\n [class.datepicker__date--active]=\"\r\n date === selectedDate.day &&\r\n currentNepaliDate.month === selectedDate.month &&\r\n currentNepaliDate.year === selectedDate.year\r\n \"\r\n [class.datepicker__date--current-day]=\"\r\n date === nepaliDateToday.day &&\r\n currentNepaliDate.month === nepaliDateToday.month &&\r\n currentNepaliDate.year === nepaliDateToday.year\r\n \"\r\n (click)=\"selectDate(date)\"\r\n >\r\n {{ date | toNp: language : \"number\" }}\r\n </div>\r\n\r\n <ng-template #disabledDates>\r\n <div class=\"datepicker__date datepicker__date--disabled\">\r\n {{ date | toNp: language : \"number\" }}\r\n </div>\r\n </ng-template>\r\n\r\n <div *ngIf=\"!date\" class=\"datepicker__date--disabled\">\r\n <span>&nbsp;</span>\r\n </div>\r\n </ng-template>\r\n </div>\r\n <!--.datepicker__date-container ends-->\r\n </div>\r\n <!--.datepicker__days ends-->\r\n </div>\r\n <!--.datepicker__days-container ends-->\r\n </div>\r\n <!--.datepicker__container ends-->\r\n</ng-template>\r\n", styles: [".nepali-date-picker.nepali-date-picker{position:relative;display:inline-block;font-family:Arial,Helvetica,sans-serif;font-size:1em}.nepali-date-picker a.active svg{fill:#337ab7;opacity:.9}.nepali-date-picker .form-icon svg{width:14px;opacity:.3;position:absolute;right:8px;top:12px;cursor:pointer}.datepicker__container{border:1px solid #eee;background:#fff;width:294px;box-shadow:#0a0a0f33 0 7px 29px;position:absolute;z-index:99999}.datepicker__options-container{padding:12px 5px;border-bottom:1px solid #eee;display:flex;justify-content:space-evenly;background-color:#337ab7;color:#fff;line-height:25px;font-size:1em}.datepicker__days-container{display:flex;justify-content:center;color:#777}.datepicker__days{text-align:center;padding-bottom:10px}.datepicker__weekday{padding:8px;font-weight:700;border-bottom:1px solid #eee;margin-bottom:0}.datepicker__date-container{width:40px;height:40px;line-height:40px;margin:0}.datepicker__date-container>div{height:100%}.datepicker__date{cursor:pointer;border-radius:4px}.datepicker__date:hover{background-color:#eee}.datepicker__date.datepicker__date--disabled{background:#f3f3f3;border-radius:0}.datepicker__date.datepicker__date--disabled:hover{background:#f3f3f3}.datepicker__date--active.datepicker__date--active{background-color:#337ab7;color:#fff}select:focus,select:focus-visible{outline:1px solid #fff}.datepicker__container select{border:none;color:#fff;background:none;font-size:inherit}select option{color:#333}.ngx_np_datepicker_input{border:1px solid #eee;padding:10px;font-size:16px;color:#777}.ngx_np_datepicker_input:focus-visible{outline:2px solid #337ab7}.prev-month,.next-month{padding:0;width:25px;height:25px;display:block;opacity:.5;border-radius:50%;background:#f3f3f3;cursor:pointer;text-align:center;line-height:23px}.next-month:hover,.prev-month:hover{background:#ccc}.prev-month svg,.next-month svg{max-width:8px;height:auto}.select-today{padding:0;width:22px;height:22px;display:block;cursor:pointer;color:#ffffffe6;text-align:center;line-height:23px}.select-today:hover{color:#ffffff80}.select-today svg{max-width:100%}.dark.nepali-date-picker a.active svg{fill:#000}.dark .datepicker__options-container{border-bottom:1px solid #000;background-color:#000;color:#fff}.dark .datepicker__container{background:#333}.dark select{color:#fff}.datepicker__date--current-day{background-color:#f3f3f3;border:2px dashed rgba(0,0,0,.2);position:relative;z-index:999;height:100%}.dark .datepicker__date--active.datepicker__date--active{background-color:#000;color:#fff}.dark .ngx_np_datepicker_input:focus-visible{outline:2px solid #000}.dark .datepicker__days{background-color:#333}.dark .datepicker__date:hover{background-color:#222;color:#fff}.dark .datepicker__days-container{color:#aaa}.dark .datepicker__weekday{border-bottom:1px solid #555}.dark .datepicker__date--current-day{background:#555;border:none}.light.nepali-date-picker a.active svg{fill:#777}.light .datepicker__options-container{border-bottom:none;background-color:#fff;color:#777}.light select{color:#777}.light .datepicker__date--active.datepicker__date--active{background-color:#aaa;color:#fff}.light .ngx_np_datepicker_input:focus-visible{outline:1px solid #ddd}.lightblue.nepali-date-picker a.active svg{fill:#38c5f0da}.lightblue .datepicker__options-container{background-color:#38c5f0da;color:#fff}.lightblue select{color:#fff}.lightblue .datepicker__date--active.datepicker__date--active{background-color:#38c5f0da;color:#fff}.lightblue .ngx_np_datepicker_input:focus-visible{outline:2px solid #38c5f0da}.lightblue .ngx_np_datepicker_input:focus-visible{outline:1px solid #38c5f0da}.custom-mat-field{position:relative;width:100%;height:45px;background:rgba(0,0,0,.04);border-top-left-radius:4px;border-top-right-radius:4px;border-bottom:1px solid rgba(0,0,0,.42);transition:background-color .2s ease}.custom-mat-field:hover{background:rgba(0,0,0,.08)}.custom-mat-field:focus-within{border-bottom:2px solid #3f51b5}.custom-mat-field .ngx_np_datepicker_input:focus-visible{outline:none}.custom-mat-field .ngx_np_datepicker_input{width:100%;height:100%;border:none;background:transparent;outline:none;padding:24px 12px 8px;font-size:16px;box-sizing:border-box}.custom-mat-field .np-label{position:absolute;left:12px;top:18px;color:#0009;font-size:16px;pointer-events:none;transform-origin:left top;transition:all .15s ease}.custom-mat-field.has-value .np-label,.custom-mat-field:focus-within .np-label,.custom-mat-field .ngx_np_datepicker_input:not(:placeholder-shown)+.np-label{top:8px;font-size:12px;color:#3f51b5}.custom-mat-field .ngx_np_datepicker_input::placeholder{opacity:0;transition:opacity .15s ease}.custom-mat-field .ngx_np_datepicker_input:focus::placeholder{opacity:1}\n"] }]
264
264
  }], ctorParameters: function () { return [{ type: i1.NpDatePickerService }, { type: i0.ElementRef }]; }, propDecorators: { theme: [{
265
265
  type: Input
266
266
  }], language: [{
@@ -281,4 +281,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImpor
281
281
  type: HostListener,
282
282
  args: ['document:click', ['$event']]
283
283
  }] } });
284
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnAtZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ucHgtbnAtZGF0ZXBpY2tlci9zcmMvbGliL25wLWRhdGVwaWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbnB4LW5wLWRhdGVwaWNrZXIvc3JjL2xpYi9ucC1kYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFHWixLQUFLLEVBQ0wsVUFBVSxFQUNWLGlCQUFpQixFQUNqQixNQUFNLEVBQ04sWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVN6RSxPQUFPLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7Ozs7O0FBZXZELE1BQU0sT0FBTyxxQkFBcUI7SUFpRWhDLFlBQ1MsV0FBZ0MsRUFDL0IsSUFBZ0I7UUFEakIsZ0JBQVcsR0FBWCxXQUFXLENBQXFCO1FBQy9CLFNBQUksR0FBSixJQUFJLENBQVk7UUFsRTFCLG9CQUFlLEdBQWUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQzVELHNCQUFpQixHQUFlLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUU5RCxrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQUtuQixVQUFLLEdBQWEsRUFBRSxDQUFDO1FBSXJCLGdCQUFXLEdBQWdCLFdBQVcsQ0FBQztRQUV2QyxrQkFBYSxHQUFpQixhQUFhLENBQUM7UUFFNUMsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUVmLGNBQVMsR0FBRyxLQUFLLENB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QUM7UUFDcEIsd0JBQXdCO0lBQzFCLENBQUM7O2tIQXhWVSxxQkFBcUI7c0dBQXJCLHFCQUFxQixvUkFUckI7UUFDVDtZQUNFLE9BQU8sRUFBRSxpQkFBaUI7WUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztZQUNwRCxLQUFLLEVBQUUsSUFBSTtTQUNaO0tBQ0YsMEJDakNILG9vUUE4TUE7MkZEMUthLHFCQUFxQjtrQkFiakMsU0FBUzsrQkFDRSxlQUFlLGFBR2Q7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsc0JBQXNCLENBQUM7NEJBQ3BELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGLGlCQUNjLGlCQUFpQixDQUFDLElBQUk7bUlBMEJyQyxLQUFLO3NCQURKLEtBQUs7Z0JBR04sUUFBUTtzQkFEUCxLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLEVBQUU7c0JBQVYsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUVJLFlBQVk7c0JBQXJCLE1BQU07Z0JBMEJQLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBPbkluaXQsXHJcbiAgRWxlbWVudFJlZixcclxuICBJbnB1dCxcclxuICBmb3J3YXJkUmVmLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIE91dHB1dCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5wRGF0ZVBpY2tlclNlcnZpY2UgfSBmcm9tICcuL25wLWRhdGVwaWNrZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmltcG9ydCB7XHJcbiAgTmVwYWxpRGF0ZSxcclxuICBNb250aERhdGEsXHJcbiAgRGF5c01hcHBpbmcsXHJcbiAgTW9udGhNYXBwaW5nLFxyXG4gIERhdGVGb3JtYXR0ZXIsXHJcbn0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IGRheXNNYXBwaW5nLCBtb250aHNNYXBwaW5nIH0gZnJvbSAnLi9tYXBwaW5nJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbnAtZGF0ZXBpY2tlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL25wLWRhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9ucC1kYXRlLXBpY2tlci5jb21wb25lbnQuY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBOcERhdGVQaWNrZXJDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgIH0sXHJcbiAgXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTnBEYXRlUGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcbiAgbmVwYWxpRGF0ZVRvZGF5OiBOZXBhbGlEYXRlID0geyBkYXk6IDAsIG1vbnRoOiAwLCB5ZWFyOiAwIH07XHJcbiAgY3VycmVudE5lcGFsaURhdGU6IE5lcGFsaURhdGUgPSB7IGRheTogMCwgbW9udGg6IDAsIHllYXI6IDAgfTtcclxuICBzZWxlY3RlZERhdGUhOiBOZXBhbGlEYXRlO1xyXG4gIGZvcm1hdHRlZERhdGUgPSAnJztcclxuICBjdXJyZW50RGF0ZTogYW55O1xyXG5cclxuICBkaXNwbGF5RGF0ZSE6IHN0cmluZztcclxuXHJcbiAgeWVhcnM6IG51bWJlcltdID0gW107XHJcblxyXG4gIGN1cnJlbnRNb250aERhdGEhOiBhbnk7XHJcblxyXG4gIGRheXNNYXBwaW5nOiBEYXlzTWFwcGluZyA9IGRheXNNYXBwaW5nO1xyXG5cclxuICBtb250aHNNYXBwaW5nOiBNb250aE1hcHBpbmcgPSBtb250aHNNYXBwaW5nO1xyXG5cclxuICBpc09wZW4gPSBmYWxzZTtcclxuXHJcbiAgaGlkZUlucHV0ID0gZmFsc2U7XHJcblxyXG4gIGFsd2F5c1Zpc2libGUgPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICB0aGVtZSE6IHN0cmluZztcclxuICBASW5wdXQoKVxyXG4gIGxhbmd1YWdlOiAnZW4nIHwgJ25lJyA9ICduZSc7XHJcbiAgQElucHV0KCkgaGFzRnV0dXJlOiBCb29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBmb3JtYXQ6IHN0cmluZyA9ICd5eS1tbS1kZCc7XHJcbiAgQElucHV0KCkgbG06IHN0cmluZyA9ICcvJztcclxuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nID0gJydcclxuICBASW5wdXQoKSBtYXQhOiBzdHJpbmdcclxuXHJcbiAgQE91dHB1dCgpIGRhdGVTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBtb250aERpc3BsYXlUeXBlOiAnZGVmYXVsdCcgfCAnbW9kZXJuJyB8ICdzaG9ydCcgPSAnZGVmYXVsdCc7XHJcblxyXG4gIGRheURpc3BsYXlUeXBlOiAnZGVmYXVsdCcgfCAnc2hvcnQnID0gJ3Nob3J0JztcclxuICBoYXNNYXRJbnB1dCE6IGJvb2xlYW47XHJcblxyXG4gIGRhdGVGb3JtYXR0ZXI6IERhdGVGb3JtYXR0ZXIgPSAoc2VsZWN0ZWREYXRlOiBOZXBhbGlEYXRlKSA9PiB7XHJcbiAgICBjb25zdCBkZCA9XHJcbiAgICAgIHNlbGVjdGVkRGF0ZS5kYXkgPCAxMCA/ICcwJyArIHNlbGVjdGVkRGF0ZS5kYXkgOiBzZWxlY3RlZERhdGUuZGF5O1xyXG4gICAgY29uc3QgbW0gPVxyXG4gICAgICBzZWxlY3RlZERhdGUubW9udGggKyAxIDwgMTBcclxuICAgICAgICA/ICcwJyArIChzZWxlY3RlZERhdGUubW9udGggKyAxKVxyXG4gICAgICAgIDogc2VsZWN0ZWREYXRlLm1vbnRoICsgMTtcclxuXHJcbiAgICBzd2l0Y2ggKHRoaXMuZm9ybWF0KSB7XHJcbiAgICAgIGNhc2UgJ2RkLW1tLXl5JzpcclxuICAgICAgICByZXR1cm4gYCR7ZGR9JHt0aGlzLmxtfSR7bW19JHt0aGlzLmxtfSR7dGhpcy5zZWxlY3RlZERhdGUueWVhcn1gO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBgJHt0aGlzLnNlbGVjdGVkRGF0ZS55ZWFyfSR7dGhpcy5sbX0ke21tfSR7dGhpcy5sbX0ke2RkfWA7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgaW5pdGlhbGl6ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxyXG4gIGNsaWNrb3V0KGV2ZW50OiBhbnkpIHtcclxuICAgIGlmICghdGhpcy5lUmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xyXG4gICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBfbmVwYWxpRGF0ZTogTnBEYXRlUGlja2VyU2VydmljZSxcclxuICAgIHByaXZhdGUgZVJlZjogRWxlbWVudFJlZixcclxuICApIHtcclxuICAgIHRoaXMuY3VycmVudERhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgdGhpcy5uZXBhbGlEYXRlVG9kYXkgPSBfbmVwYWxpRGF0ZS5lbmdUb05lcERhdGUoXHJcbiAgICAgIHRoaXMuY3VycmVudERhdGUuZ2V0RGF0ZSgpLFxyXG4gICAgICB0aGlzLmN1cnJlbnREYXRlLmdldE1vbnRoKCksXHJcbiAgICAgIHRoaXMuY3VycmVudERhdGUuZ2V0RnVsbFllYXIoKSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuc2V0Q3VycmVudERhdGUoKTtcclxuICAgIC8vdGhpcy5zZWxlY3REYXRlKHRoaXMuY3VycmVudE5lcGFsaURhdGUuZGF5KTtcclxuICAgIHRoaXMucG9wdWxhdGVZZWFycygpO1xyXG4gICAgdGhpcy5zZXRDdXJyZW50TW9udGhEYXRhKCk7XHJcbiAgICAvLyBjb25zb2xlLmxvZyh0aGlzLmN1cnJlbnRNb250aERhdGEpO1xyXG5cclxuICAgIGNvbnN0IGhhc01hdElucHV0ID1cclxuICAgICAgdGhpcy5lUmVmLm5hdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCdtYXRJbnB1dCcpICE9PSBudWxsO1xyXG4gICAgY29uc29sZS5sb2coaGFzTWF0SW5wdXQsICdoYXNNYXRJbnB1dC4uLicpO1xyXG4gIH1cclxuXHJcbiAgcG9wdWxhdGVZZWFycygpIHtcclxuICAgIGZvciAobGV0IGkgPSAyMDAxOyBpIDw9IDIwOTk7IGkrKykge1xyXG4gICAgICB0aGlzLnllYXJzLnB1c2goaSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZWxlY3RZZWFyKGU6IGFueSkge1xyXG4gICAgdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS55ZWFyID0gcGFyc2VJbnQoZS50YXJnZXQudmFsdWUpO1xyXG5cclxuICAgIGNvbnN0IG5ld0RhdGUgPSB7XHJcbiAgICAgIGRheTogdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS5kYXksXHJcbiAgICAgIG1vbnRoOiB0aGlzLmN1cnJlbnROZXBhbGlEYXRlLm1vbnRoLFxyXG4gICAgICB5ZWFyOiB0aGlzLmN1cnJlbnROZXBhbGlEYXRlLnllYXIsXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuY3VycmVudERhdGUgPSB0aGlzLl9uZXBhbGlEYXRlLm5lcFRvRW5nRGF0ZShcclxuICAgICAgbmV3RGF0ZS5kYXksXHJcbiAgICAgIG5ld0RhdGUubW9udGgsXHJcbiAgICAgIG5ld0RhdGUueWVhcixcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5zZXRDdXJyZW50TW9udGhEYXRhKCk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RNb250aChlOiBhbnkpIHtcclxuICAgIGxldCBtb250aCA9IGUudGFyZ2V0LnZhbHVlO1xyXG4gICAgbGV0IG5lcF9tb250aF9pbmRleCA9XHJcbiAgICAgIHRoaXMubW9udGhzTWFwcGluZ1t0aGlzLmxhbmd1YWdlXVt0aGlzLm1vbnRoRGlzcGxheVR5cGVdPy5pbmRleE9mKFxyXG4gICAgICAgIG1vbnRoLFxyXG4gICAgICApID8/IDA7XHJcblxyXG4gICAgdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS5tb250aCA9IG5lcF9tb250aF9pbmRleDtcclxuXHJcbiAgICBjb25zdCBuZXdOZXBhbGlEYXRlID0ge1xyXG4gICAgICBkYXk6IHRoaXMuY3VycmVudE5lcGFsaURhdGUuZGF5LFxyXG4gICAgICBtb250aDogdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS5tb250aCxcclxuICAgICAgeWVhcjogdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS55ZWFyLFxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLmN1cnJlbnREYXRlID0gdGhpcy5fbmVwYWxpRGF0ZS5uZXBUb0VuZ0RhdGUoXHJcbiAgICAgIG5ld05lcGFsaURhdGUuZGF5LFxyXG4gICAgICBuZXdOZXBhbGlEYXRlLm1vbnRoLFxyXG4gICAgICBuZXdOZXBhbGlEYXRlLnllYXIsXHJcbiAgICApO1xyXG4gICAgLy8gY29uc29sZS5sb2codGhpcy5jdXJyZW50RGF0ZSk7XHJcbiAgICB0aGlzLnNldEN1cnJlbnRNb250aERhdGEoKTtcclxuICB9XHJcblxyXG4gIHJlc2V0Q3VycmVudE1vbnRoRGF0YSgpIHtcclxuICAgIHRoaXMuY3VycmVudE1vbnRoRGF0YSA9IHtcclxuICAgICAgMDogW10sXHJcbiAgICAgIDE6IFtdLFxyXG4gICAgICAyOiBbXSxcclxuICAgICAgMzogW10sXHJcbiAgICAgIDQ6IFtdLFxyXG4gICAgICA1OiBbXSxcclxuICAgICAgNjogW10sXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgZm9ybWF0VmFsdWUoKSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZERhdGUpIHtcclxuICAgICAgdGhpcy5mb3JtYXR0ZWREYXRlID0gdGhpcy5kYXRlRm9ybWF0dGVyKHRoaXMuc2VsZWN0ZWREYXRlKTtcclxuICAgIH1cclxuICB9XHJcbiAgcHJvcGFnYXRlQ2hhbmdlID0gKF86IGFueSkgPT4geyB9O1xyXG4gIHByb3BhZ2F0ZVRvdWNoID0gKF86IGFueSkgPT4geyB9O1xyXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5zZWxlY3RlZERhdGUpO1xyXG4gICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gdmFsdWU7XHJcbiAgICAgIHRoaXMuY3VycmVudE5lcGFsaURhdGUgPSB2YWx1ZTtcclxuICAgICAgdGhpcy5mb3JtYXRWYWx1ZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuICByZWdpc3Rlck9uVG91Y2hlZCgpIHsgfVxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSkge1xyXG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIHNldEN1cnJlbnREYXRlKCkge1xyXG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkRGF0ZSkge1xyXG4gICAgICB0aGlzLmN1cnJlbnROZXBhbGlEYXRlID0gdGhpcy5fbmVwYWxpRGF0ZS5lbmdUb05lcERhdGUoXHJcbiAgICAgICAgdGhpcy5jdXJyZW50RGF0ZS5nZXREYXRlKCksXHJcbiAgICAgICAgdGhpcy5jdXJyZW50RGF0ZS5nZXRNb250aCgpLFxyXG4gICAgICAgIHRoaXMuY3VycmVudERhdGUuZ2V0RnVsbFllYXIoKSxcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IHsgZGF5LCBtb250aCwgeWVhciB9ID0gdGhpcy5zZWxlY3RlZERhdGU7XHJcbiAgICAgIHRoaXMuY3VycmVudE5lcGFsaURhdGUgPSB0aGlzLl9uZXBhbGlEYXRlLmVuZ1RvTmVwRGF0ZShkYXksIG1vbnRoLCB5ZWFyKTtcclxuICAgICAgdGhpcy5jdXJyZW50RGF0ZSA9IHRoaXMuX25lcGFsaURhdGUubmVwVG9FbmdEYXRlKFxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlLnllYXIsXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGUubW9udGgsXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGUuZGF5LFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0Q3VycmVudE1vbnRoRGF0YSgpIHtcclxuICAgIHRoaXMucmVzZXRDdXJyZW50TW9udGhEYXRhKCk7XHJcblxyXG4gICAgLy8gZmlsbCB0aGUgY3VycmVudE1vbnRoRGF0YSB3aXRoIGN1cnJlbnQgZGF0ZVxyXG4gICAgbGV0IGRheSA9IHRoaXMuY3VycmVudERhdGUuZ2V0RGF5KCk7XHJcblxyXG4gICAgdGhpcy5jdXJyZW50TW9udGhEYXRhW2RheV0gPSBbdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS5kYXldO1xyXG5cclxuICAgIC8vIGZpbGwgdGhlIGN1cnJlbnRNb250aERhdGEgd2l0aCBkYXkgYmVmb3JlIHRoZSBjdXJyZW50IGRhdGVcclxuICAgIHRoaXMuc2V0TW9udGhEYXRhQmVmb3JlKGRheSAtIDEsIHRoaXMuY3VycmVudE5lcGFsaURhdGUuZGF5IC0gMSk7XHJcblxyXG4gICAgdmFyIGN1cnJlbnRNb250aE1heFZhbHVlID1cclxuICAgICAgdGhpcy5fbmVwYWxpRGF0ZS5uZXBhbGlNb250aHNbdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS55ZWFyIC0gMjAwMF1bXHJcbiAgICAgIHRoaXMuY3VycmVudE5lcGFsaURhdGUubW9udGhcclxuICAgICAgXTtcclxuXHJcbiAgICAvLyBmaWxsIHRoZSBjdXJyZW50TW9udGhEYXRhIHdpdGggZGF5IGFmdGVyIHRoZSBjdXJyZW50IGRhdGVcclxuICAgIHRoaXMuc2V0TW9udGhEYXRhQWZ0ZXIoXHJcbiAgICAgIGRheSArIDEsXHJcbiAgICAgIHRoaXMuY3VycmVudE5lcGFsaURhdGUuZGF5ICsgMSxcclxuICAgICAgY3VycmVudE1vbnRoTWF4VmFsdWUsXHJcbiAgICApO1xyXG5cclxuICAgIC8vIHdlIG5lZWQgc29tZSBlbXB0eSBzcGFjZXMgaW4gcGxhY2Ugc28gdGhhdCB0aGUgZGF0ZXMgYXJlIHNob3duIGluIGNvcnJlY3Qgb3JkZXJcclxuICAgIC8vIGVnIGlmIHRoZSAxc3QgZGF5IHN0YXJ0cyBvbiBtb25kYXkgdGhlbiB3ZSBuZWVkIDEgZW1wdHkgc3BhY2UgZm9yIG5vbiBleGlzdGluZ24gZGF0ZSBvbiBTdW5kYXlcclxuICAgIHRoaXMuY3JlYXRlRW1wdHlTcGFjZXMoKTtcclxuICB9XHJcblxyXG4gIHNldE1vbnRoRGF0YUJlZm9yZShkYXk6IGFueSwgZGF0ZTogYW55KSB7XHJcbiAgICBpZiAoZGF0ZSA+PSAxKSB7XHJcbiAgICAgIGlmIChkYXkgPCAwKSB7XHJcbiAgICAgICAgZGF5ID0gNjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmN1cnJlbnRNb250aERhdGFbZGF5XSA9IFtkYXRlLCAuLi50aGlzLmN1cnJlbnRNb250aERhdGFbZGF5XV07XHJcbiAgICAgIHRoaXMuc2V0TW9udGhEYXRhQmVmb3JlKC0tZGF5LCAtLWRhdGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0TW9udGhEYXRhQWZ0ZXIoZGF5OiBhbnksIGRhdGU6IGFueSwgY3VycmVudE1vbnRoTWF4VmFsdWU6IGFueSkge1xyXG4gICAgY29uc3QgbmVwYWxpRGF0ZSA9IHtcclxuICAgICAgZGF5OiBkYXRlLFxyXG4gICAgICBtb250aDogdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS5tb250aCxcclxuICAgICAgeWVhcjogdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS55ZWFyLFxyXG4gICAgfTtcclxuXHJcbiAgICAvLyAgb25seSBhZGQgdGhlIGRhdGEgaWYgdGhlIGN1cnJlbnQgbW9udGggbWF0Y2hlc1xyXG4gICAgaWYgKGRhdGUgPD0gY3VycmVudE1vbnRoTWF4VmFsdWUpIHtcclxuICAgICAgaWYgKGRheSA+IDYpIHtcclxuICAgICAgICBkYXkgPSAwO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY3VycmVudE1vbnRoRGF0YVtkYXldID0gWy4uLnRoaXMuY3VycmVudE1vbnRoRGF0YVtkYXldLCBkYXRlXTtcclxuICAgICAgdGhpcy5zZXRNb250aERhdGFBZnRlcigrK2RheSwgKytkYXRlLCBjdXJyZW50TW9udGhNYXhWYWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjcmVhdGVFbXB0eVNwYWNlcygpIHtcclxuICAgIC8vIGZpcnN0IGZpbmQgb3V0IHdoaWNoIGRheSBoYXMgdGhlIDFzdFxyXG4gICAgLy8gIGlmIGl0cyBhIFN1bmRheSwgdGhlbiBkb24ndCBkbyBhbnl0aGluZyBlbHNlIGFkZCAxIHNwYWNlIG9uIGVhY2ggcHJldmlvdXMgZGF5XHJcbiAgICBsZXQgZGF5SW5kZXggPSAwO1xyXG4gICAgbGV0IHZhbHVlOiBhbnk7XHJcbiAgICBPYmplY3QudmFsdWVzKHRoaXMuY3VycmVudE1vbnRoRGF0YSkubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICB2YWx1ZSA9IGl0ZW07XHJcbiAgICAgIGlmICh2YWx1ZS5pbmNsdWRlcygxKSkge1xyXG4gICAgICAgIGRheUluZGV4ID0gaW5kZXg7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHZhbHVlLmluY2x1ZGVzKDEpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKGRheUluZGV4KSB7XHJcbiAgICAgIGZvciAoZGF5SW5kZXg7IGRheUluZGV4ID4gMDsgZGF5SW5kZXgtLSkge1xyXG4gICAgICAgIGNvbnN0IG1vbnRoRGF0YSA9IHRoaXMuY3VycmVudE1vbnRoRGF0YVtkYXlJbmRleCAtIDFdO1xyXG4gICAgICAgIHRoaXMuY3VycmVudE1vbnRoRGF0YVtkYXlJbmRleCAtIDFdID0gW251bGwsIC4uLm1vbnRoRGF0YV07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlbGVjdFRvZGF5KCkge1xyXG4gICAgY29uc3QgRW5nbGlzdERhdGVUb2RheSA9IG5ldyBEYXRlKCk7XHJcbiAgICB0aGlzLmN1cnJlbnROZXBhbGlEYXRlID0gdGhpcy5fbmVwYWxpRGF0ZS5lbmdUb05lcERhdGUoXHJcbiAgICAgIEVuZ2xpc3REYXRlVG9kYXkuZ2V0RGF0ZSgpLFxyXG4gICAgICBFbmdsaXN0RGF0ZVRvZGF5LmdldE1vbnRoKCksXHJcbiAgICAgIEVuZ2xpc3REYXRlVG9kYXkuZ2V0RnVsbFllYXIoKSxcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5zZWxlY3RlZERhdGUgPSB7IC4uLnRoaXMuY3VycmVudE5lcGFsaURhdGUgfTtcclxuICAgIHRoaXMuZm9ybWF0VmFsdWUoKTtcclxuICAgIHRoaXMuY2xvc2UoKTtcclxuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMuc2VsZWN0ZWREYXRlKTtcclxuICAgIHRoaXMuZGF0ZVNlbGVjdGVkLmVtaXQodGhpcy5zZWxlY3RlZERhdGUpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0RGF0ZShkYXk6IG51bWJlcikge1xyXG4gICAgdGhpcy5zZWxlY3RlZERhdGUgPSB7IC4uLnRoaXMuY3VycmVudE5lcGFsaURhdGUsIGRheSB9O1xyXG4gICAgdGhpcy5mb3JtYXRWYWx1ZSgpO1xyXG4gICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5zZWxlY3RlZERhdGUpO1xyXG4gICAgdGhpcy5kYXRlU2VsZWN0ZWQuZW1pdCh0aGlzLnNlbGVjdGVkRGF0ZSk7XHJcbiAgfVxyXG5cclxuICBwcmV2TW9udGgoKSB7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50TmVwYWxpRGF0ZS5tb250aCA8PSAwKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudE5lcGFsaURhdGUubW9udGggPSAxMTtcclxuICAgICAgdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS55ZWFyLS07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmN1cnJlbnROZXBhbGlEYXRlLm1vbnRoLS07XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbmV3TmVwYWxpRGF0ZSA9IHtcclxuICAgICAgZGF5OiB0aGlzLmN1cnJlbnROZXBhbGlEYXRlLmRheSxcclxuICAgICAgbW9udGg6IHRoaXMuY3VycmVudE5lcGFsaURhdGUubW9udGgsXHJcbiAgICAgIHllYXI6IHRoaXMuY3VycmVudE5lcGFsaURhdGUueWVhcixcclxuICAgIH07XHJcbiAgICB0aGlzLmN1cnJlbnREYXRlID0gdGhpcy5fbmVwYWxpRGF0ZS5uZXBUb0VuZ0RhdGUoXHJcbiAgICAgIG5ld05lcGFsaURhdGUuZGF5LFxyXG4gICAgICBuZXdOZXBhbGlEYXRlLm1vbnRoLFxyXG4gICAgICBuZXdOZXBhbGlEYXRlLnllYXIsXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuc2V0Q3VycmVudE1vbnRoRGF0YSgpO1xyXG4gIH1cclxuXHJcbiAgbmV4dE1vbnRoKCkge1xyXG4gICAgaWYgKHRoaXMuY3VycmVudE5lcGFsaURhdGUubW9udGggPj0gMTEpIHtcclxuICAgICAgdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS5tb250aCA9IDA7XHJcbiAgICAgIHRoaXMuY3VycmVudE5lcGFsaURhdGUueWVhcisrO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS5tb250aCsrO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG5ld0RhdGUgPSB7XHJcbiAgICAgIGRheTogdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS5kYXksXHJcbiAgICAgIG1vbnRoOiB0aGlzLmN1cnJlbnROZXBhbGlEYXRlLm1vbnRoLFxyXG4gICAgICB5ZWFyOiB0aGlzLmN1cnJlbnROZXBhbGlEYXRlLnllYXIsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5jdXJyZW50RGF0ZSA9IHRoaXMuX25lcGFsaURhdGUubmVwVG9FbmdEYXRlKFxyXG4gICAgICBuZXdEYXRlLmRheSxcclxuICAgICAgbmV3RGF0ZS5tb250aCxcclxuICAgICAgbmV3RGF0ZS55ZWFyLFxyXG4gICAgKTtcclxuICAgIHRoaXMuc2V0Q3VycmVudE1vbnRoRGF0YSgpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlT3BlbigpIHtcclxuICAgIGlmICghdGhpcy5hbHdheXNWaXNpYmxlKSB7XHJcbiAgICAgIHRoaXMuaXNPcGVuID0gIXRoaXMuaXNPcGVuO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3BlbigpIHtcclxuICAgIHRoaXMuaXNPcGVuID0gdHJ1ZTtcclxuICAgIGNvbnNvbGUubG9nKHRoaXMuaXNPcGVuKTtcclxuXHJcbiAgfVxyXG5cclxuICBjbG9zZSgpIHtcclxuICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XHJcbiAgICAvL3RoaXMuc2V0Q3VycmVudERhdGUoKTtcclxuICB9XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIiEhbWF0OyBlbHNlIG5vdE1hdFN0eWxlXCI+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJjdXN0b20tbWF0LWZpZWxkIG5lcGFsaS1kYXRlLXBpY2tlclwiXHJcbiAgICBbY2xhc3MuaGFzLXZhbHVlXT1cImZvcm1hdHRlZERhdGVcIlxyXG4gICAgW25nQ2xhc3NdPVwidGhlbWVcIlxyXG4gID5cclxuICAgIDxsYWJlbCAqbmdJZj1cIiEhbGFiZWxcIiBjbGFzcz1cIm5wLWxhYmVsXCI+IHt7bGFiZWx9fSA8L2xhYmVsPlxyXG5cclxuICAgIDxpbnB1dFxyXG4gICAgICBjbGFzcz1cIm5neF9ucF9kYXRlcGlja2VyX2lucHV0XCJcclxuICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICBbdmFsdWVdPVwiZm9ybWF0dGVkRGF0ZVwiXHJcbiAgICAgIChmb2N1cyk9XCJvcGVuKClcIlxyXG4gICAgICAoa2V5ZG93bik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXHJcbiAgICAgIHBsYWNlaG9sZGVyPVwieXl5eS9tbS9kZFwiXHJcbiAgICAgIGF1dG9jb21wbGV0ZT1cImRvbm90X3N1Z2dlc3RfYXV0b2NvbXBsZXRlXCJcclxuXHJcbiAgICAgIGF1dG9jb3JyZWN0PVwib2ZmXCJcclxuICAgICAgYXV0b2NhcGl0YWxpemU9XCJvZmZcIlxyXG4gICAgICBzcGVsbGNoZWNrPVwiZmFsc2VcIlxyXG4gICAgLz5cclxuICAgIDxhXHJcbiAgICAgIGNsYXNzPVwiZm9ybS1pY29uXCJcclxuICAgICAgKGNsaWNrKT1cInRvZ2dsZU9wZW4oKVwiXHJcbiAgICAgIFtuZ0NsYXNzXT1cImlzT3BlbiA/ICdhY3RpdmUnIDogJydcIlxyXG4gICAgPlxyXG4gICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDQ0OCA1MTJcIj5cclxuICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgZD1cIk0xNTIgNjRIMjk2VjI0QzI5NiAxMC43NSAzMDYuNyAwIDMyMCAwQzMzMy4zIDAgMzQ0IDEwLjc1IDM0NCAyNFY2NEgzODRDNDE5LjMgNjQgNDQ4IDkyLjY1IDQ0OCAxMjhWNDQ4QzQ0OCA0ODMuMyA0MTkuMyA1MTIgMzg0IDUxMkg2NEMyOC42NSA1MTIgMCA0ODMuMyAwIDQ0OFYxMjhDMCA5Mi42NSAyOC42NSA2NCA2NCA2NEgxMDRWMjRDMTA0IDEwLjc1IDExNC43IDAgMTI4IDBDMTQxLjMgMCAxNTIgMTAuNzUgMTUyIDI0VjY0ek00OCA0NDhDNDggNDU2LjggNTUuMTYgNDY0IDY0IDQ2NEgzODRDMzkyLjggNDY0IDQwMCA0NTYuOCA0MDAgNDQ4VjE5Mkg0OFY0NDh6XCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L3N2Zz5cclxuICAgIDwvYT5cclxuICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwibnBkcFwiICpuZ0lmPVwiaXNPcGVuXCI+PC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPG5nLXRlbXBsYXRlICNub3RNYXRTdHlsZT5cclxuICA8ZGl2IGNsYXNzPVwibmVwYWxpLWRhdGUtcGlja2VyXCIgW25nQ2xhc3NdPVwidGhlbWVcIj5cclxuICAgIDxpbnB1dFxyXG4gICAgICBjbGFzcz1cIm5neF9ucF9kYXRlcGlja2VyX2lucHV0XCJcclxuICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICBbdmFsdWVdPVwiZm9ybWF0dGVkRGF0ZVwiXHJcbiAgICAgIChmb2N1cyk9XCJvcGVuKClcIlxyXG4gICAgICAoa2V5ZG93bik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXHJcbiAgICAgIHBsYWNlaG9sZGVyPVwieXl5eS9tbS9kZFwiXHJcbiAgICAgIGF1dG9jb21wbGV0ZT1cImRvbm90X3N1Z2dlc3RfYXV0b2NvbXBsZXRlXCJcclxuICAgICAgYXV0b2NvcnJlY3Q9XCJvZmZcIlxyXG4gICAgICBhdXRvY2FwaXRhbGl6ZT1cIm9mZlwiXHJcbiAgICAgIHNwZWxsY2hlY2s9XCJmYWxzZVwiXHJcbiAgICAvPlxyXG4gICAgPGFcclxuICAgICAgY2xhc3M9XCJmb3JtLWljb25cIlxyXG4gICAgICAoY2xpY2spPVwidG9nZ2xlT3BlbigpXCJcclxuICAgICAgW25nQ2xhc3NdPVwiaXNPcGVuID8gJ2FjdGl2ZScgOiAnJ1wiXHJcbiAgICA+XHJcbiAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgNDQ4IDUxMlwiPlxyXG4gICAgICAgIDxwYXRoXHJcbiAgICAgICAgICBkPVwiTTE1MiA2NEgyOTZWMjRDMjk2IDEwLjc1IDMwNi43IDAgMzIwIDBDMzMzLjMgMCAzNDQgMTAuNzUgMzQ0IDI0VjY0SDM4NEM0MTkuMyA2NCA0NDggOTIuNjUgNDQ4IDEyOFY0NDhDNDQ4IDQ4My4zIDQxOS4zIDUxMiAzODQgNTEySDY0QzI4LjY1IDUxMiAwIDQ4My4zIDAgNDQ4VjEyOEMwIDkyLjY1IDI4LjY1IDY0IDY0IDY0SDEwNFYyNEMxMDQgMTAuNzUgMTE0LjcgMCAxMjggMEMxNDEuMyAwIDE1MiAxMC43NSAxNTIgMjRWNjR6TTQ4IDQ0OEM0OCA0NTYuOCA1NS4xNiA0NjQgNjQgNDY0SDM4NEMzOTIuOCA0NjQgNDAwIDQ1Ni44IDQwMCA0NDhWMTkySDQ4VjQ0OHpcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvc3ZnPlxyXG4gICAgPC9hPlxyXG4gICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJucGRwXCIgKm5nSWY9XCJpc09wZW5cIj48L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjbnBkcD5cclxuICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlcl9fY29udGFpbmVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlcl9fb3B0aW9ucy1jb250YWluZXJcIj5cclxuICAgICAgPGEgY2xhc3M9XCJwcmV2LW1vbnRoXCIgKGNsaWNrKT1cInByZXZNb250aCgpXCI+XHJcbiAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAzMjAgNTEyXCI+XHJcbiAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICBkPVwiTTIyNCA0ODBjLTguMTg4IDAtMTYuMzgtMy4xMjUtMjIuNjItOS4zNzVsLTE5Mi0xOTJjLTEyLjUtMTIuNS0xMi41LTMyLjc1IDAtNDUuMjVsMTkyLTE5MmMxMi41LTEyLjUgMzIuNzUtMTIuNSA0NS4yNSAwczEyLjUgMzIuNzUgMCA0NS4yNUw3Ny4yNSAyNTZsMTY5LjQgMTY5LjRjMTIuNSAxMi41IDEyLjUgMzIuNzUgMCA0NS4yNUMyNDAuNCA0NzYuOSAyMzIuMiA0ODAgMjI0IDQ4MHpcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L3N2Zz5cclxuICAgICAgPC9hPlxyXG4gICAgICA8YSBjbGFzcz1cInNlbGVjdC10b2RheVwiIChjbGljayk9XCJzZWxlY3RUb2RheSgpXCI+XHJcbiAgICAgICAgPHN2Z1xyXG4gICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICB3aWR0aD1cIjI0XCJcclxuICAgICAgICAgIGhlaWdodD1cIjI0XCJcclxuICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxyXG4gICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcclxuICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjJcIlxyXG4gICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXHJcbiAgICAgICAgICBjbGFzcz1cImZlYXRoZXIgZmVhdGhlci1ob21lXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8cGF0aCBkPVwiTTMgOWw5LTcgOSA3djExYTIgMiAwIDAgMS0yIDJINWEyIDIgMCAwIDEtMi0yelwiPjwvcGF0aD5cclxuICAgICAgICAgIDxwb2x5bGluZSBwb2ludHM9XCI5IDIyIDkgMTIgMTUgMTIgMTUgMjJcIj48L3BvbHlsaW5lPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgICA8L2E+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZGF0ZXBpY2tlcl9fb3B0aW9ucy1tb250aC1jb250YWluZXJcIj5cclxuICAgICAgICA8c2VsZWN0IChjaGFuZ2UpPVwic2VsZWN0TW9udGgoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgPG9wdGlvblxyXG4gICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICBsZXQgbW9udGggb2YgbW9udGhzTWFwcGluZ1tsYW5ndWFnZV1bbW9udGhEaXNwbGF5VHlwZV07XHJcbiAgICAgICAgICAgICAgaW5kZXggYXMgaVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBbdmFsdWVdPVwibW9udGhcIlxyXG4gICAgICAgICAgICBbc2VsZWN0ZWRdPVwiaSA9PT0gY3VycmVudE5lcGFsaURhdGUubW9udGhcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7eyBtb250aCB9fVxyXG4gICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJkYXRlcGlja2VyX19vcHRpb25zLXllYXItY29udGFpbmVyXCI+XHJcbiAgICAgICAgPHNlbGVjdCAoY2hhbmdlKT1cInNlbGVjdFllYXIoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgPG9wdGlvblxyXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgeWVhciBvZiB5ZWFyczsgaW5kZXggYXMgaVwiXHJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJ5ZWFyXCJcclxuICAgICAgICAgICAgW3NlbGVjdGVkXT1cInllYXIgPT0gY3VycmVudE5lcGFsaURhdGUueWVhclwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHt7IHllYXIgfCB0b05wOiBsYW5ndWFnZSA6IFwibnVtYmVyXCIgfX1cclxuICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICA8L3NwYW4+XHJcblxyXG4gICAgICA8YSBjbGFzcz1cIm5leHQtbW9udGhcIiAoY2xpY2spPVwibmV4dE1vbnRoKClcIj5cclxuICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDMyMCA1MTJcIj5cclxuICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgIGQ9XCJNOTYgNDgwYy04LjE4OCAwLTE2LjM4LTMuMTI1LTIyLjYyLTkuMzc1Yy0xMi41LTEyLjUtMTIuNS0zMi43NSAwLTQ1LjI1TDI0Mi44IDI1Nkw3My4zOCA4Ni42M2MtMTIuNS0xMi41LTEyLjUtMzIuNzUgMC00NS4yNXMzMi43NS0xMi41IDQ1LjI1IDBsMTkyIDE5MmMxMi41IDEyLjUgMTIuNSAzMi43NSAwIDQ1LjI1bC0xOTIgMTkyQzExMi40IDQ3Ni45IDEwNC4yIDQ4MCA5NiA0ODB6XCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgIDwvYT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImRhdGVwaWNrZXJfX2RheXMtY29udGFpbmVyXCI+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImRhdGVwaWNrZXJfX2RheXNcIlxyXG4gICAgICAgICpuZ0Zvcj1cImxldCBkYXkgb2YgZGF5c01hcHBpbmdbbGFuZ3VhZ2VdW2RheURpc3BsYXlUeXBlXTsgaW5kZXggYXMgaVwiXHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlcl9fd2Vla2RheVwiPnt7IGRheSB9fTwvZGl2PlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwiZGF0ZXBpY2tlcl9fZGF0ZS1jb250YWluZXJcIlxyXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGRhdGUgb2YgY3VycmVudE1vbnRoRGF0YVtpXVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cImhhc0Z1dHVyZTsgZWxzZSBub0Z1dHVyZURhdGVcIj5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiZGF0ZVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkYXRlcGlja2VyX19kYXRlXCJcclxuICAgICAgICAgICAgICBbY2xhc3MuZGF0ZXBpY2tlcl9fZGF0ZS0tYWN0aXZlXT1cIlxyXG4gICAgICAgICAgICAgICAgZGF0ZSA9PT0gY3VycmVudE5lcGFsaURhdGUuZGF5ICYmXHJcbiAgICAgICAgICAgICAgICBjdXJyZW50TmVwYWxpRGF0ZS5tb250aCA9PT0gY3VycmVudE5lcGFsaURhdGUubW9udGggJiZcclxuICAgICAgICAgICAgICAgIGN1cnJlbnROZXBhbGlEYXRlLnllYXIgPT09IGN1cnJlbnROZXBhbGlEYXRlLnllYXJcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5kYXRlcGlja2VyX19kYXRlLS1jdXJyZW50LWRheV09XCJcclxuICAgICAgICAgICAgICAgIGRhdGUgPT09IG5lcGFsaURhdGVUb2RheS5kYXkgJiZcclxuICAgICAgICAgICAgICAgIGN1cnJlbnROZXBhbGlEYXRlLm1vbnRoID09PSBuZXBhbGlEYXRlVG9kYXkubW9udGggJiZcclxuICAgICAgICAgICAgICAgIGN1cnJlbnROZXBhbGlEYXRlLnllYXIgPT09IG5lcGFsaURhdGVUb2RheS55ZWFyXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0RGF0ZShkYXRlKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7eyBkYXRlIHwgdG9OcDogbGFuZ3VhZ2UgOiBcIm51bWJlclwiIH19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWRhdGVcIiBjbGFzcz1cImRhdGVwaWNrZXJfX2RhdGUtLWRpc2FibGVkXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4+Jm5ic3A7PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9GdXR1cmVEYXRlPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgIGRhdGUgJiZcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS55ZWFyICogMzY1ICtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnROZXBhbGlEYXRlLm1vbnRoICogMzAgK1xyXG4gICAgICAgICAgICAgICAgICAgIGRhdGUgPD1cclxuICAgICAgICAgICAgICAgICAgICBuZXBhbGlEYXRlVG9kYXkuZGF5ICtcclxuICAgICAgICAgICAgICAgICAgICAgIG5lcGFsaURhdGVUb2RheS5tb250aCAqIDMwICtcclxuICAgICAgICAgICAgICAgICAgICAgIG5lcGFsaURhdGVUb2RheS55ZWFyICogMzY1O1xyXG4gICAgICAgICAgICAgICAgZWxzZSBkaXNhYmxlZERhdGVzXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImRhdGVwaWNrZXJfX2RhdGVcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5kYXRlcGlja2VyX19kYXRlLS1hY3RpdmVdPVwiXHJcbiAgICAgICAgICAgICAgICBkYXRlID09PSBzZWxlY3RlZERhdGUuZGF5ICYmXHJcbiAgICAgICAgICAgICAgICBjdXJyZW50TmVwYWxpRGF0ZS5tb250aCA9PT0gc2VsZWN0ZWREYXRlLm1vbnRoICYmXHJcbiAgICAgICAgICAgICAgICBjdXJyZW50TmVwYWxpRGF0ZS55ZWFyID09PSBzZWxlY3RlZERhdGUueWVhclxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgW2NsYXNzLmRhdGVwaWNrZXJfX2RhdGUtLWN1cnJlbnQtZGF5XT1cIlxyXG4gICAgICAgICAgICAgICAgZGF0ZSA9PT0gbmVwYWxpRGF0ZVRvZGF5LmRheSAmJlxyXG4gICAgICAgICAgICAgICAgY3VycmVudE5lcGFsaURhdGUubW9udGggPT09IG5lcGFsaURhdGVUb2RheS5tb250aCAmJlxyXG4gICAgICAgICAgICAgICAgY3VycmVudE5lcGFsaURhdGUueWVhciA9PT0gbmVwYWxpRGF0ZVRvZGF5LnllYXJcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3REYXRlKGRhdGUpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHt7IGRhdGUgfCB0b05wOiBsYW5ndWFnZSA6IFwibnVtYmVyXCIgfX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2Rpc2FibGVkRGF0ZXM+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGVwaWNrZXJfX2RhdGUgZGF0ZXBpY2tlcl9fZGF0ZS0tZGlzYWJsZWRcIj5cclxuICAgICAgICAgICAgICAgIHt7IGRhdGUgfCB0b05wOiBsYW5ndWFnZSA6IFwibnVtYmVyXCIgfX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhZGF0ZVwiIGNsYXNzPVwiZGF0ZXBpY2tlcl9fZGF0ZS0tZGlzYWJsZWRcIj5cclxuICAgICAgICAgICAgICA8c3Bhbj4mbmJzcDs8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tLmRhdGVwaWNrZXJfX2RhdGUtY29udGFpbmVyIGVuZHMtLT5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDwhLS0uZGF0ZXBpY2tlcl9fZGF5cyBlbmRzLS0+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0uZGF0ZXBpY2tlcl9fZGF5cy1jb250YWluZXIgZW5kcy0tPlxyXG4gIDwvZGl2PlxyXG4gIDwhLS0uZGF0ZXBpY2tlcl9fY29udGFpbmVyIGVuZHMtLT5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
284
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnAtZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ucHgtbnAtZGF0ZXBpY2tlci9zcmMvbGliL25wLWRhdGVwaWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbnB4LW5wLWRhdGVwaWNrZXIvc3JjL2xpYi9ucC1kYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFHWixLQUFLLEVBQ0wsVUFBVSxFQUNWLGlCQUFpQixFQUNqQixNQUFNLEVBQ04sWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVN6RSxPQUFPLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7Ozs7O0FBZXZELE1BQU0sT0FBTyxxQkFBcUI7SUFpRWhDLFlBQ1MsV0FBZ0MsRUFDL0IsSUFBZ0I7UUFEakIsZ0JBQVcsR0FBWCxXQUFXLENBQXFCO1FBQy9CLFNBQUksR0FBSixJQUFJLENBQVk7UUFsRTFCLG9CQUFlLEdBQWUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQzVELHNCQUFpQixHQUFlLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUU5RCxrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQUtuQixVQUFLLEdBQWEsRUFBRSxDQUFDO1FBSXJCLGdCQUFXLEdBQWdCLFdBQVcsQ0FBQztRQUV2QyxrQkFBYSxHQUFpQixhQUFhLENBQUM7UUFFNUMsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUVmLGNBQVMsR0FBRyxLQUFLLENB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QUM7UUFDcEIsd0JBQXdCO0lBQzFCLENBQUM7O2tIQXhWVSxxQkFBcUI7c0dBQXJCLHFCQUFxQixvUkFUckI7UUFDVDtZQUNFLE9BQU8sRUFBRSxpQkFBaUI7WUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztZQUNwRCxLQUFLLEVBQUUsSUFBSTtTQUNaO0tBQ0YsMEJDakNILGtvUUE2TUE7MkZEekthLHFCQUFxQjtrQkFiakMsU0FBUzsrQkFDRSxlQUFlLGFBR2Q7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsc0JBQXNCLENBQUM7NEJBQ3BELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGLGlCQUNjLGlCQUFpQixDQUFDLElBQUk7bUlBMEJyQyxLQUFLO3NCQURKLEtBQUs7Z0JBR04sUUFBUTtzQkFEUCxLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLEVBQUU7c0JBQVYsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUVJLFlBQVk7c0JBQXJCLE1BQU07Z0JBMEJQLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBPbkluaXQsXHJcbiAgRWxlbWVudFJlZixcclxuICBJbnB1dCxcclxuICBmb3J3YXJkUmVmLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIE91dHB1dCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5wRGF0ZVBpY2tlclNlcnZpY2UgfSBmcm9tICcuL25wLWRhdGVwaWNrZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmltcG9ydCB7XHJcbiAgTmVwYWxpRGF0ZSxcclxuICBNb250aERhdGEsXHJcbiAgRGF5c01hcHBpbmcsXHJcbiAgTW9udGhNYXBwaW5nLFxyXG4gIERhdGVGb3JtYXR0ZXIsXHJcbn0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IGRheXNNYXBwaW5nLCBtb250aHNNYXBwaW5nIH0gZnJvbSAnLi9tYXBwaW5nJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbnAtZGF0ZXBpY2tlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL25wLWRhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9ucC1kYXRlLXBpY2tlci5jb21wb25lbnQuY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBOcERhdGVQaWNrZXJDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgIH0sXHJcbiAgXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTnBEYXRlUGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcbiAgbmVwYWxpRGF0ZVRvZGF5OiBOZXBhbGlEYXRlID0geyBkYXk6IDAsIG1vbnRoOiAwLCB5ZWFyOiAwIH07XHJcbiAgY3VycmVudE5lcGFsaURhdGU6IE5lcGFsaURhdGUgPSB7IGRheTogMCwgbW9udGg6IDAsIHllYXI6IDAgfTtcclxuICBzZWxlY3RlZERhdGUhOiBOZXBhbGlEYXRlO1xyXG4gIGZvcm1hdHRlZERhdGUgPSAnJztcclxuICBjdXJyZW50RGF0ZTogYW55O1xyXG5cclxuICBkaXNwbGF5RGF0ZSE6IHN0cmluZztcclxuXHJcbiAgeWVhcnM6IG51bWJlcltdID0gW107XHJcblxyXG4gIGN1cnJlbnRNb250aERhdGEhOiBhbnk7XHJcblxyXG4gIGRheXNNYXBwaW5nOiBEYXlzTWFwcGluZyA9IGRheXNNYXBwaW5nO1xyXG5cclxuICBtb250aHNNYXBwaW5nOiBNb250aE1hcHBpbmcgPSBtb250aHNNYXBwaW5nO1xyXG5cclxuICBpc09wZW4gPSBmYWxzZTtcclxuXHJcbiAgaGlkZUlucHV0ID0gZmFsc2U7XHJcblxyXG4gIGFsd2F5c1Zpc2libGUgPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICB0aGVtZSE6IHN0cmluZztcclxuICBASW5wdXQoKVxyXG4gIGxhbmd1YWdlOiAnZW4nIHwgJ25lJyA9ICduZSc7XHJcbiAgQElucHV0KCkgaGFzRnV0dXJlOiBCb29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBmb3JtYXQ6IHN0cmluZyA9ICd5eS1tbS1kZCc7XHJcbiAgQElucHV0KCkgbG06IHN0cmluZyA9ICcvJztcclxuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nID0gJydcclxuICBASW5wdXQoKSBtYXQhOiBzdHJpbmdcclxuXHJcbiAgQE91dHB1dCgpIGRhdGVTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBtb250aERpc3BsYXlUeXBlOiAnZGVmYXVsdCcgfCAnbW9kZXJuJyB8ICdzaG9ydCcgPSAnZGVmYXVsdCc7XHJcblxyXG4gIGRheURpc3BsYXlUeXBlOiAnZGVmYXVsdCcgfCAnc2hvcnQnID0gJ3Nob3J0JztcclxuICBoYXNNYXRJbnB1dCE6IGJvb2xlYW47XHJcblxyXG4gIGRhdGVGb3JtYXR0ZXI6IERhdGVGb3JtYXR0ZXIgPSAoc2VsZWN0ZWREYXRlOiBOZXBhbGlEYXRlKSA9PiB7XHJcbiAgICBjb25zdCBkZCA9XHJcbiAgICAgIHNlbGVjdGVkRGF0ZS5kYXkgPCAxMCA/ICcwJyArIHNlbGVjdGVkRGF0ZS5kYXkgOiBzZWxlY3RlZERhdGUuZGF5O1xyXG4gICAgY29uc3QgbW0gPVxyXG4gICAgICBzZWxlY3RlZERhdGUubW9udGggKyAxIDwgMTBcclxuICAgICAgICA/ICcwJyArIChzZWxlY3RlZERhdGUubW9udGggKyAxKVxyXG4gICAgICAgIDogc2VsZWN0ZWREYXRlLm1vbnRoICsgMTtcclxuXHJcbiAgICBzd2l0Y2ggKHRoaXMuZm9ybWF0KSB7XHJcbiAgICAgIGNhc2UgJ2RkLW1tLXl5JzpcclxuICAgICAgICByZXR1cm4gYCR7ZGR9JHt0aGlzLmxtfSR7bW19JHt0aGlzLmxtfSR7dGhpcy5zZWxlY3RlZERhdGUueWVhcn1gO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBgJHt0aGlzLnNlbGVjdGVkRGF0ZS55ZWFyfSR7dGhpcy5sbX0ke21tfSR7dGhpcy5sbX0ke2RkfWA7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgaW5pdGlhbGl6ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxyXG4gIGNsaWNrb3V0KGV2ZW50OiBhbnkpIHtcclxuICAgIGlmICghdGhpcy5lUmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xyXG4gICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBfbmVwYWxpRGF0ZTogTnBEYXRlUGlja2VyU2VydmljZSxcclxuICAgIHByaXZhdGUgZVJlZjogRWxlbWVudFJlZixcclxuICApIHtcclxuICAgIHRoaXMuY3VycmVudERhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgdGhpcy5uZXBhbGlEYXRlVG9kYXkgPSBfbmVwYWxpRGF0ZS5lbmdUb05lcERhdGUoXHJcbiAgICAgIHRoaXMuY3VycmVudERhdGUuZ2V0RGF0ZSgpLFxyXG4gICAgICB0aGlzLmN1cnJlbnREYXRlLmdldE1vbnRoKCksXHJcbiAgICAgIHRoaXMuY3VycmVudERhdGUuZ2V0RnVsbFllYXIoKSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuc2V0Q3VycmVudERhdGUoKTtcclxuICAgIC8vdGhpcy5zZWxlY3REYXRlKHRoaXMuY3VycmVudE5lcGFsaURhdGUuZGF5KTtcclxuICAgIHRoaXMucG9wdWxhdGVZZWFycygpO1xyXG4gICAgdGhpcy5zZXRDdXJyZW50TW9udGhEYXRhKCk7XHJcbiAgICAvLyBjb25zb2xlLmxvZyh0aGlzLmN1cnJlbnRNb250aERhdGEpO1xyXG5cclxuICAgIGNvbnN0IGhhc01hdElucHV0ID1cclxuICAgICAgdGhpcy5lUmVmLm5hdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCdtYXRJbnB1dCcpICE9PSBudWxsO1xyXG4gICAgY29uc29sZS5sb2coaGFzTWF0SW5wdXQsICdoYXNNYXRJbnB1dC4uLicpO1xyXG4gIH1cclxuXHJcbiAgcG9wdWxhdGVZZWFycygpIHtcclxuICAgIGZvciAobGV0IGkgPSAyMDAxOyBpIDw9IDIwOTk7IGkrKykge1xyXG4gICAgICB0aGlzLnllYXJzLnB1c2goaSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZWxlY3RZZWFyKGU6IGFueSkge1xyXG4gICAgdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS55ZWFyID0gcGFyc2VJbnQoZS50YXJnZXQudmFsdWUpO1xyXG5cclxuICAgIGNvbnN0IG5ld0RhdGUgPSB7XHJcbiAgICAgIGRheTogdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS5kYXksXHJcbiAgICAgIG1vbnRoOiB0aGlzLmN1cnJlbnROZXBhbGlEYXRlLm1vbnRoLFxyXG4gICAgICB5ZWFyOiB0aGlzLmN1cnJlbnROZXBhbGlEYXRlLnllYXIsXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuY3VycmVudERhdGUgPSB0aGlzLl9uZXBhbGlEYXRlLm5lcFRvRW5nRGF0ZShcclxuICAgICAgbmV3RGF0ZS5kYXksXHJcbiAgICAgIG5ld0RhdGUubW9udGgsXHJcbiAgICAgIG5ld0RhdGUueWVhcixcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5zZXRDdXJyZW50TW9udGhEYXRhKCk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RNb250aChlOiBhbnkpIHtcclxuICAgIGxldCBtb250aCA9IGUudGFyZ2V0LnZhbHVlO1xyXG4gICAgbGV0IG5lcF9tb250aF9pbmRleCA9XHJcbiAgICAgIHRoaXMubW9udGhzTWFwcGluZ1t0aGlzLmxhbmd1YWdlXVt0aGlzLm1vbnRoRGlzcGxheVR5cGVdPy5pbmRleE9mKFxyXG4gICAgICAgIG1vbnRoLFxyXG4gICAgICApID8/IDA7XHJcblxyXG4gICAgdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS5tb250aCA9IG5lcF9tb250aF9pbmRleDtcclxuXHJcbiAgICBjb25zdCBuZXdOZXBhbGlEYXRlID0ge1xyXG4gICAgICBkYXk6IHRoaXMuY3VycmVudE5lcGFsaURhdGUuZGF5LFxyXG4gICAgICBtb250aDogdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS5tb250aCxcclxuICAgICAgeWVhcjogdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS55ZWFyLFxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLmN1cnJlbnREYXRlID0gdGhpcy5fbmVwYWxpRGF0ZS5uZXBUb0VuZ0RhdGUoXHJcbiAgICAgIG5ld05lcGFsaURhdGUuZGF5LFxyXG4gICAgICBuZXdOZXBhbGlEYXRlLm1vbnRoLFxyXG4gICAgICBuZXdOZXBhbGlEYXRlLnllYXIsXHJcbiAgICApO1xyXG4gICAgLy8gY29uc29sZS5sb2codGhpcy5jdXJyZW50RGF0ZSk7XHJcbiAgICB0aGlzLnNldEN1cnJlbnRNb250aERhdGEoKTtcclxuICB9XHJcblxyXG4gIHJlc2V0Q3VycmVudE1vbnRoRGF0YSgpIHtcclxuICAgIHRoaXMuY3VycmVudE1vbnRoRGF0YSA9IHtcclxuICAgICAgMDogW10sXHJcbiAgICAgIDE6IFtdLFxyXG4gICAgICAyOiBbXSxcclxuICAgICAgMzogW10sXHJcbiAgICAgIDQ6IFtdLFxyXG4gICAgICA1OiBbXSxcclxuICAgICAgNjogW10sXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgZm9ybWF0VmFsdWUoKSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZERhdGUpIHtcclxuICAgICAgdGhpcy5mb3JtYXR0ZWREYXRlID0gdGhpcy5kYXRlRm9ybWF0dGVyKHRoaXMuc2VsZWN0ZWREYXRlKTtcclxuICAgIH1cclxuICB9XHJcbiAgcHJvcGFnYXRlQ2hhbmdlID0gKF86IGFueSkgPT4geyB9O1xyXG4gIHByb3BhZ2F0ZVRvdWNoID0gKF86IGFueSkgPT4geyB9O1xyXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5zZWxlY3RlZERhdGUpO1xyXG4gICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gdmFsdWU7XHJcbiAgICAgIHRoaXMuY3VycmVudE5lcGFsaURhdGUgPSB2YWx1ZTtcclxuICAgICAgdGhpcy5mb3JtYXRWYWx1ZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuICByZWdpc3Rlck9uVG91Y2hlZCgpIHsgfVxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSkge1xyXG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIHNldEN1cnJlbnREYXRlKCkge1xyXG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkRGF0ZSkge1xyXG4gICAgICB0aGlzLmN1cnJlbnROZXBhbGlEYXRlID0gdGhpcy5fbmVwYWxpRGF0ZS5lbmdUb05lcERhdGUoXHJcbiAgICAgICAgdGhpcy5jdXJyZW50RGF0ZS5nZXREYXRlKCksXHJcbiAgICAgICAgdGhpcy5jdXJyZW50RGF0ZS5nZXRNb250aCgpLFxyXG4gICAgICAgIHRoaXMuY3VycmVudERhdGUuZ2V0RnVsbFllYXIoKSxcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IHsgZGF5LCBtb250aCwgeWVhciB9ID0gdGhpcy5zZWxlY3RlZERhdGU7XHJcbiAgICAgIHRoaXMuY3VycmVudE5lcGFsaURhdGUgPSB0aGlzLl9uZXBhbGlEYXRlLmVuZ1RvTmVwRGF0ZShkYXksIG1vbnRoLCB5ZWFyKTtcclxuICAgICAgdGhpcy5jdXJyZW50RGF0ZSA9IHRoaXMuX25lcGFsaURhdGUubmVwVG9FbmdEYXRlKFxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlLnllYXIsXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGUubW9udGgsXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGUuZGF5LFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0Q3VycmVudE1vbnRoRGF0YSgpIHtcclxuICAgIHRoaXMucmVzZXRDdXJyZW50TW9udGhEYXRhKCk7XHJcblxyXG4gICAgLy8gZmlsbCB0aGUgY3VycmVudE1vbnRoRGF0YSB3aXRoIGN1cnJlbnQgZGF0ZVxyXG4gICAgbGV0IGRheSA9IHRoaXMuY3VycmVudERhdGUuZ2V0RGF5KCk7XHJcblxyXG4gICAgdGhpcy5jdXJyZW50TW9udGhEYXRhW2RheV0gPSBbdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS5kYXldO1xyXG5cclxuICAgIC8vIGZpbGwgdGhlIGN1cnJlbnRNb250aERhdGEgd2l0aCBkYXkgYmVmb3JlIHRoZSBjdXJyZW50IGRhdGVcclxuICAgIHRoaXMuc2V0TW9udGhEYXRhQmVmb3JlKGRheSAtIDEsIHRoaXMuY3VycmVudE5lcGFsaURhdGUuZGF5IC0gMSk7XHJcblxyXG4gICAgdmFyIGN1cnJlbnRNb250aE1heFZhbHVlID1cclxuICAgICAgdGhpcy5fbmVwYWxpRGF0ZS5uZXBhbGlNb250aHNbdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS55ZWFyIC0gMjAwMF1bXHJcbiAgICAgIHRoaXMuY3VycmVudE5lcGFsaURhdGUubW9udGhcclxuICAgICAgXTtcclxuXHJcbiAgICAvLyBmaWxsIHRoZSBjdXJyZW50TW9udGhEYXRhIHdpdGggZGF5IGFmdGVyIHRoZSBjdXJyZW50IGRhdGVcclxuICAgIHRoaXMuc2V0TW9udGhEYXRhQWZ0ZXIoXHJcbiAgICAgIGRheSArIDEsXHJcbiAgICAgIHRoaXMuY3VycmVudE5lcGFsaURhdGUuZGF5ICsgMSxcclxuICAgICAgY3VycmVudE1vbnRoTWF4VmFsdWUsXHJcbiAgICApO1xyXG5cclxuICAgIC8vIHdlIG5lZWQgc29tZSBlbXB0eSBzcGFjZXMgaW4gcGxhY2Ugc28gdGhhdCB0aGUgZGF0ZXMgYXJlIHNob3duIGluIGNvcnJlY3Qgb3JkZXJcclxuICAgIC8vIGVnIGlmIHRoZSAxc3QgZGF5IHN0YXJ0cyBvbiBtb25kYXkgdGhlbiB3ZSBuZWVkIDEgZW1wdHkgc3BhY2UgZm9yIG5vbiBleGlzdGluZ24gZGF0ZSBvbiBTdW5kYXlcclxuICAgIHRoaXMuY3JlYXRlRW1wdHlTcGFjZXMoKTtcclxuICB9XHJcblxyXG4gIHNldE1vbnRoRGF0YUJlZm9yZShkYXk6IGFueSwgZGF0ZTogYW55KSB7XHJcbiAgICBpZiAoZGF0ZSA+PSAxKSB7XHJcbiAgICAgIGlmIChkYXkgPCAwKSB7XHJcbiAgICAgICAgZGF5ID0gNjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmN1cnJlbnRNb250aERhdGFbZGF5XSA9IFtkYXRlLCAuLi50aGlzLmN1cnJlbnRNb250aERhdGFbZGF5XV07XHJcbiAgICAgIHRoaXMuc2V0TW9udGhEYXRhQmVmb3JlKC0tZGF5LCAtLWRhdGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0TW9udGhEYXRhQWZ0ZXIoZGF5OiBhbnksIGRhdGU6IGFueSwgY3VycmVudE1vbnRoTWF4VmFsdWU6IGFueSkge1xyXG4gICAgY29uc3QgbmVwYWxpRGF0ZSA9IHtcclxuICAgICAgZGF5OiBkYXRlLFxyXG4gICAgICBtb250aDogdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS5tb250aCxcclxuICAgICAgeWVhcjogdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS55ZWFyLFxyXG4gICAgfTtcclxuXHJcbiAgICAvLyAgb25seSBhZGQgdGhlIGRhdGEgaWYgdGhlIGN1cnJlbnQgbW9udGggbWF0Y2hlc1xyXG4gICAgaWYgKGRhdGUgPD0gY3VycmVudE1vbnRoTWF4VmFsdWUpIHtcclxuICAgICAgaWYgKGRheSA+IDYpIHtcclxuICAgICAgICBkYXkgPSAwO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY3VycmVudE1vbnRoRGF0YVtkYXldID0gWy4uLnRoaXMuY3VycmVudE1vbnRoRGF0YVtkYXldLCBkYXRlXTtcclxuICAgICAgdGhpcy5zZXRNb250aERhdGFBZnRlcigrK2RheSwgKytkYXRlLCBjdXJyZW50TW9udGhNYXhWYWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjcmVhdGVFbXB0eVNwYWNlcygpIHtcclxuICAgIC8vIGZpcnN0IGZpbmQgb3V0IHdoaWNoIGRheSBoYXMgdGhlIDFzdFxyXG4gICAgLy8gIGlmIGl0cyBhIFN1bmRheSwgdGhlbiBkb24ndCBkbyBhbnl0aGluZyBlbHNlIGFkZCAxIHNwYWNlIG9uIGVhY2ggcHJldmlvdXMgZGF5XHJcbiAgICBsZXQgZGF5SW5kZXggPSAwO1xyXG4gICAgbGV0IHZhbHVlOiBhbnk7XHJcbiAgICBPYmplY3QudmFsdWVzKHRoaXMuY3VycmVudE1vbnRoRGF0YSkubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICB2YWx1ZSA9IGl0ZW07XHJcbiAgICAgIGlmICh2YWx1ZS5pbmNsdWRlcygxKSkge1xyXG4gICAgICAgIGRheUluZGV4ID0gaW5kZXg7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHZhbHVlLmluY2x1ZGVzKDEpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKGRheUluZGV4KSB7XHJcbiAgICAgIGZvciAoZGF5SW5kZXg7IGRheUluZGV4ID4gMDsgZGF5SW5kZXgtLSkge1xyXG4gICAgICAgIGNvbnN0IG1vbnRoRGF0YSA9IHRoaXMuY3VycmVudE1vbnRoRGF0YVtkYXlJbmRleCAtIDFdO1xyXG4gICAgICAgIHRoaXMuY3VycmVudE1vbnRoRGF0YVtkYXlJbmRleCAtIDFdID0gW251bGwsIC4uLm1vbnRoRGF0YV07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlbGVjdFRvZGF5KCkge1xyXG4gICAgY29uc3QgRW5nbGlzdERhdGVUb2RheSA9IG5ldyBEYXRlKCk7XHJcbiAgICB0aGlzLmN1cnJlbnROZXBhbGlEYXRlID0gdGhpcy5fbmVwYWxpRGF0ZS5lbmdUb05lcERhdGUoXHJcbiAgICAgIEVuZ2xpc3REYXRlVG9kYXkuZ2V0RGF0ZSgpLFxyXG4gICAgICBFbmdsaXN0RGF0ZVRvZGF5LmdldE1vbnRoKCksXHJcbiAgICAgIEVuZ2xpc3REYXRlVG9kYXkuZ2V0RnVsbFllYXIoKSxcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5zZWxlY3RlZERhdGUgPSB7IC4uLnRoaXMuY3VycmVudE5lcGFsaURhdGUgfTtcclxuICAgIHRoaXMuZm9ybWF0VmFsdWUoKTtcclxuICAgIHRoaXMuY2xvc2UoKTtcclxuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMuc2VsZWN0ZWREYXRlKTtcclxuICAgIHRoaXMuZGF0ZVNlbGVjdGVkLmVtaXQodGhpcy5zZWxlY3RlZERhdGUpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0RGF0ZShkYXk6IG51bWJlcikge1xyXG4gICAgdGhpcy5zZWxlY3RlZERhdGUgPSB7IC4uLnRoaXMuY3VycmVudE5lcGFsaURhdGUsIGRheSB9O1xyXG4gICAgdGhpcy5mb3JtYXRWYWx1ZSgpO1xyXG4gICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5zZWxlY3RlZERhdGUpO1xyXG4gICAgdGhpcy5kYXRlU2VsZWN0ZWQuZW1pdCh0aGlzLnNlbGVjdGVkRGF0ZSk7XHJcbiAgfVxyXG5cclxuICBwcmV2TW9udGgoKSB7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50TmVwYWxpRGF0ZS5tb250aCA8PSAwKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudE5lcGFsaURhdGUubW9udGggPSAxMTtcclxuICAgICAgdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS55ZWFyLS07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmN1cnJlbnROZXBhbGlEYXRlLm1vbnRoLS07XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbmV3TmVwYWxpRGF0ZSA9IHtcclxuICAgICAgZGF5OiB0aGlzLmN1cnJlbnROZXBhbGlEYXRlLmRheSxcclxuICAgICAgbW9udGg6IHRoaXMuY3VycmVudE5lcGFsaURhdGUubW9udGgsXHJcbiAgICAgIHllYXI6IHRoaXMuY3VycmVudE5lcGFsaURhdGUueWVhcixcclxuICAgIH07XHJcbiAgICB0aGlzLmN1cnJlbnREYXRlID0gdGhpcy5fbmVwYWxpRGF0ZS5uZXBUb0VuZ0RhdGUoXHJcbiAgICAgIG5ld05lcGFsaURhdGUuZGF5LFxyXG4gICAgICBuZXdOZXBhbGlEYXRlLm1vbnRoLFxyXG4gICAgICBuZXdOZXBhbGlEYXRlLnllYXIsXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuc2V0Q3VycmVudE1vbnRoRGF0YSgpO1xyXG4gIH1cclxuXHJcbiAgbmV4dE1vbnRoKCkge1xyXG4gICAgaWYgKHRoaXMuY3VycmVudE5lcGFsaURhdGUubW9udGggPj0gMTEpIHtcclxuICAgICAgdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS5tb250aCA9IDA7XHJcbiAgICAgIHRoaXMuY3VycmVudE5lcGFsaURhdGUueWVhcisrO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS5tb250aCsrO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG5ld0RhdGUgPSB7XHJcbiAgICAgIGRheTogdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS5kYXksXHJcbiAgICAgIG1vbnRoOiB0aGlzLmN1cnJlbnROZXBhbGlEYXRlLm1vbnRoLFxyXG4gICAgICB5ZWFyOiB0aGlzLmN1cnJlbnROZXBhbGlEYXRlLnllYXIsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5jdXJyZW50RGF0ZSA9IHRoaXMuX25lcGFsaURhdGUubmVwVG9FbmdEYXRlKFxyXG4gICAgICBuZXdEYXRlLmRheSxcclxuICAgICAgbmV3RGF0ZS5tb250aCxcclxuICAgICAgbmV3RGF0ZS55ZWFyLFxyXG4gICAgKTtcclxuICAgIHRoaXMuc2V0Q3VycmVudE1vbnRoRGF0YSgpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlT3BlbigpIHtcclxuICAgIGlmICghdGhpcy5hbHdheXNWaXNpYmxlKSB7XHJcbiAgICAgIHRoaXMuaXNPcGVuID0gIXRoaXMuaXNPcGVuO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3BlbigpIHtcclxuICAgIHRoaXMuaXNPcGVuID0gdHJ1ZTtcclxuICAgIGNvbnNvbGUubG9nKHRoaXMuaXNPcGVuKTtcclxuXHJcbiAgfVxyXG5cclxuICBjbG9zZSgpIHtcclxuICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XHJcbiAgICAvL3RoaXMuc2V0Q3VycmVudERhdGUoKTtcclxuICB9XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIiEhbWF0OyBlbHNlIG5vdE1hdFN0eWxlXCI+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJjdXN0b20tbWF0LWZpZWxkIG5lcGFsaS1kYXRlLXBpY2tlclwiXHJcbiAgICBbY2xhc3MuaGFzLXZhbHVlXT1cImZvcm1hdHRlZERhdGVcIlxyXG4gICAgW25nQ2xhc3NdPVwidGhlbWVcIlxyXG4gID5cclxuICAgIDxsYWJlbCAqbmdJZj1cIiEhbGFiZWxcIiBjbGFzcz1cIm5wLWxhYmVsXCI+IHt7IGxhYmVsIH19IDwvbGFiZWw+XHJcblxyXG4gICAgPGlucHV0XHJcbiAgICAgIGNsYXNzPVwibmd4X25wX2RhdGVwaWNrZXJfaW5wdXRcIlxyXG4gICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgIFt2YWx1ZV09XCJmb3JtYXR0ZWREYXRlXCJcclxuICAgICAgKGZvY3VzKT1cIm9wZW4oKVwiXHJcbiAgICAgIChrZXlkb3duKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcclxuICAgICAgcGxhY2Vob2xkZXI9XCJ5eXl5L21tL2RkXCJcclxuICAgICAgYXV0b2NvbXBsZXRlPVwiZG9ub3Rfc3VnZ2VzdF9hdXRvY29tcGxldGVcIlxyXG4gICAgICBhdXRvY29ycmVjdD1cIm9mZlwiXHJcbiAgICAgIGF1dG9jYXBpdGFsaXplPVwib2ZmXCJcclxuICAgICAgc3BlbGxjaGVjaz1cImZhbHNlXCJcclxuICAgIC8+XHJcbiAgICA8YVxyXG4gICAgICBjbGFzcz1cImZvcm0taWNvblwiXHJcbiAgICAgIChjbGljayk9XCJ0b2dnbGVPcGVuKClcIlxyXG4gICAgICBbbmdDbGFzc109XCJpc09wZW4gPyAnYWN0aXZlJyA6ICcnXCJcclxuICAgID5cclxuICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCA0NDggNTEyXCI+XHJcbiAgICAgICAgPHBhdGhcclxuICAgICAgICAgIGQ9XCJNMTUyIDY0SDI5NlYyNEMyOTYgMTAuNzUgMzA2LjcgMCAzMjAgMEMzMzMuMyAwIDM0NCAxMC43NSAzNDQgMjRWNjRIMzg0QzQxOS4zIDY0IDQ0OCA5Mi42NSA0NDggMTI4VjQ0OEM0NDggNDgzLjMgNDE5LjMgNTEyIDM4NCA1MTJINjRDMjguNjUgNTEyIDAgNDgzLjMgMCA0NDhWMTI4QzAgOTIuNjUgMjguNjUgNjQgNjQgNjRIMTA0VjI0QzEwNCAxMC43NSAxMTQuNyAwIDEyOCAwQzE0MS4zIDAgMTUyIDEwLjc1IDE1MiAyNFY2NHpNNDggNDQ4QzQ4IDQ1Ni44IDU1LjE2IDQ2NCA2NCA0NjRIMzg0QzM5Mi44IDQ2NCA0MDAgNDU2LjggNDAwIDQ0OFYxOTJINDhWNDQ4elwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9zdmc+XHJcbiAgICA8L2E+XHJcbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm5wZHBcIiAqbmdJZj1cImlzT3BlblwiPjwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG48L25nLWNvbnRhaW5lcj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjbm90TWF0U3R5bGU+XHJcbiAgPGRpdiBjbGFzcz1cIm5lcGFsaS1kYXRlLXBpY2tlclwiIFtuZ0NsYXNzXT1cInRoZW1lXCI+XHJcbiAgICA8aW5wdXRcclxuICAgICAgY2xhc3M9XCJuZ3hfbnBfZGF0ZXBpY2tlcl9pbnB1dFwiXHJcbiAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgW3ZhbHVlXT1cImZvcm1hdHRlZERhdGVcIlxyXG4gICAgICAoZm9jdXMpPVwib3BlbigpXCJcclxuICAgICAgKGtleWRvd24pPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxyXG4gICAgICBwbGFjZWhvbGRlcj1cInl5eXkvbW0vZGRcIlxyXG4gICAgICBhdXRvY29tcGxldGU9XCJkb25vdF9zdWdnZXN0X2F1dG9jb21wbGV0ZVwiXHJcbiAgICAgIGF1dG9jb3JyZWN0PVwib2ZmXCJcclxuICAgICAgYXV0b2NhcGl0YWxpemU9XCJvZmZcIlxyXG4gICAgICBzcGVsbGNoZWNrPVwiZmFsc2VcIlxyXG4gICAgLz5cclxuICAgIDxhXHJcbiAgICAgIGNsYXNzPVwiZm9ybS1pY29uXCJcclxuICAgICAgKGNsaWNrKT1cInRvZ2dsZU9wZW4oKVwiXHJcbiAgICAgIFtuZ0NsYXNzXT1cImlzT3BlbiA/ICdhY3RpdmUnIDogJydcIlxyXG4gICAgPlxyXG4gICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDQ0OCA1MTJcIj5cclxuICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgZD1cIk0xNTIgNjRIMjk2VjI0QzI5NiAxMC43NSAzMDYuNyAwIDMyMCAwQzMzMy4zIDAgMzQ0IDEwLjc1IDM0NCAyNFY2NEgzODRDNDE5LjMgNjQgNDQ4IDkyLjY1IDQ0OCAxMjhWNDQ4QzQ0OCA0ODMuMyA0MTkuMyA1MTIgMzg0IDUxMkg2NEMyOC42NSA1MTIgMCA0ODMuMyAwIDQ0OFYxMjhDMCA5Mi42NSAyOC42NSA2NCA2NCA2NEgxMDRWMjRDMTA0IDEwLjc1IDExNC43IDAgMTI4IDBDMTQxLjMgMCAxNTIgMTAuNzUgMTUyIDI0VjY0ek00OCA0NDhDNDggNDU2LjggNTUuMTYgNDY0IDY0IDQ2NEgzODRDMzkyLjggNDY0IDQwMCA0NTYuOCA0MDAgNDQ4VjE5Mkg0OFY0NDh6XCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L3N2Zz5cclxuICAgIDwvYT5cclxuICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwibnBkcFwiICpuZ0lmPVwiaXNPcGVuXCI+PC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI25wZHA+XHJcbiAgPGRpdiBjbGFzcz1cImRhdGVwaWNrZXJfX2NvbnRhaW5lclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImRhdGVwaWNrZXJfX29wdGlvbnMtY29udGFpbmVyXCI+XHJcbiAgICAgIDxhIGNsYXNzPVwicHJldi1tb250aFwiIChjbGljayk9XCJwcmV2TW9udGgoKVwiPlxyXG4gICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMzIwIDUxMlwiPlxyXG4gICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgZD1cIk0yMjQgNDgwYy04LjE4OCAwLTE2LjM4LTMuMTI1LTIyLjYyLTkuMzc1bC0xOTItMTkyYy0xMi41LTEyLjUtMTIuNS0zMi43NSAwLTQ1LjI1bDE5Mi0xOTJjMTIuNS0xMi41IDMyLjc1LTEyLjUgNDUuMjUgMHMxMi41IDMyLjc1IDAgNDUuMjVMNzcuMjUgMjU2bDE2OS40IDE2OS40YzEyLjUgMTIuNSAxMi41IDMyLjc1IDAgNDUuMjVDMjQwLjQgNDc2LjkgMjMyLjIgNDgwIDIyNCA0ODB6XCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgIDwvYT5cclxuICAgICAgPGEgY2xhc3M9XCJzZWxlY3QtdG9kYXlcIiAoY2xpY2spPVwic2VsZWN0VG9kYXkoKVwiPlxyXG4gICAgICAgIDxzdmdcclxuICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgd2lkdGg9XCIyNFwiXHJcbiAgICAgICAgICBoZWlnaHQ9XCIyNFwiXHJcbiAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcclxuICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXHJcbiAgICAgICAgICBzdHJva2Utd2lkdGg9XCIyXCJcclxuICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgICAgY2xhc3M9XCJmZWF0aGVyIGZlYXRoZXItaG9tZVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHBhdGggZD1cIk0zIDlsOS03IDkgN3YxMWEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMnpcIj48L3BhdGg+XHJcbiAgICAgICAgICA8cG9seWxpbmUgcG9pbnRzPVwiOSAyMiA5IDEyIDE1IDEyIDE1IDIyXCI+PC9wb2x5bGluZT5cclxuICAgICAgICA8L3N2Zz5cclxuICAgICAgPC9hPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImRhdGVwaWNrZXJfX29wdGlvbnMtbW9udGgtY29udGFpbmVyXCI+XHJcbiAgICAgICAgPHNlbGVjdCAoY2hhbmdlKT1cInNlbGVjdE1vbnRoKCRldmVudClcIj5cclxuICAgICAgICAgIDxvcHRpb25cclxuICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgbGV0IG1vbnRoIG9mIG1vbnRoc01hcHBpbmdbbGFuZ3VhZ2VdW21vbnRoRGlzcGxheVR5cGVdO1xyXG4gICAgICAgICAgICAgIGluZGV4IGFzIGlcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgW3ZhbHVlXT1cIm1vbnRoXCJcclxuICAgICAgICAgICAgW3NlbGVjdGVkXT1cImkgPT09IGN1cnJlbnROZXBhbGlEYXRlLm1vbnRoXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3sgbW9udGggfX1cclxuICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZGF0ZXBpY2tlcl9fb3B0aW9ucy15ZWFyLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxzZWxlY3QgKGNoYW5nZSk9XCJzZWxlY3RZZWFyKCRldmVudClcIj5cclxuICAgICAgICAgIDxvcHRpb25cclxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IHllYXIgb2YgeWVhcnM7IGluZGV4IGFzIGlcIlxyXG4gICAgICAgICAgICBbdmFsdWVdPVwieWVhclwiXHJcbiAgICAgICAgICAgIFtzZWxlY3RlZF09XCJ5ZWFyID09IGN1cnJlbnROZXBhbGlEYXRlLnllYXJcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7eyB5ZWFyIHwgdG9OcDogbGFuZ3VhZ2UgOiBcIm51bWJlclwiIH19XHJcbiAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgPC9zcGFuPlxyXG5cclxuICAgICAgPGEgY2xhc3M9XCJuZXh0LW1vbnRoXCIgKGNsaWNrKT1cIm5leHRNb250aCgpXCI+XHJcbiAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAzMjAgNTEyXCI+XHJcbiAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICBkPVwiTTk2IDQ4MGMtOC4xODggMC0xNi4zOC0zLjEyNS0yMi42Mi05LjM3NWMtMTIuNS0xMi41LTEyLjUtMzIuNzUgMC00NS4yNUwyNDIuOCAyNTZMNzMuMzggODYuNjNjLTEyLjUtMTIuNS0xMi41LTMyLjc1IDAtNDUuMjVzMzIuNzUtMTIuNSA0NS4yNSAwbDE5MiAxOTJjMTIuNSAxMi41IDEyLjUgMzIuNzUgMCA0NS4yNWwtMTkyIDE5MkMxMTIuNCA0NzYuOSAxMDQuMiA0ODAgOTYgNDgwelwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgICA8L2E+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJkYXRlcGlja2VyX19kYXlzLWNvbnRhaW5lclwiPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJkYXRlcGlja2VyX19kYXlzXCJcclxuICAgICAgICAqbmdGb3I9XCJsZXQgZGF5IG9mIGRheXNNYXBwaW5nW2xhbmd1YWdlXVtkYXlEaXNwbGF5VHlwZV07IGluZGV4IGFzIGlcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRhdGVwaWNrZXJfX3dlZWtkYXlcIj57eyBkYXkgfX08L2Rpdj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cImRhdGVwaWNrZXJfX2RhdGUtY29udGFpbmVyXCJcclxuICAgICAgICAgICpuZ0Zvcj1cImxldCBkYXRlIG9mIGN1cnJlbnRNb250aERhdGFbaV1cIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJoYXNGdXR1cmU7IGVsc2Ugbm9GdXR1cmVEYXRlXCI+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAqbmdJZj1cImRhdGVcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZGF0ZXBpY2tlcl9fZGF0ZVwiXHJcbiAgICAgICAgICAgICAgW2NsYXNzLmRhdGVwaWNrZXJfX2RhdGUtLWFjdGl2ZV09XCJcclxuICAgICAgICAgICAgICAgIGRhdGUgPT09IGN1cnJlbnROZXBhbGlEYXRlLmRheSAmJlxyXG4gICAgICAgICAgICAgICAgY3VycmVudE5lcGFsaURhdGUubW9udGggPT09IGN1cnJlbnROZXBhbGlEYXRlLm1vbnRoICYmXHJcbiAgICAgICAgICAgICAgICBjdXJyZW50TmVwYWxpRGF0ZS55ZWFyID09PSBjdXJyZW50TmVwYWxpRGF0ZS55ZWFyXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBbY2xhc3MuZGF0ZXBpY2tlcl9fZGF0ZS0tY3VycmVudC1kYXldPVwiXHJcbiAgICAgICAgICAgICAgICBkYXRlID09PSBuZXBhbGlEYXRlVG9kYXkuZGF5ICYmXHJcbiAgICAgICAgICAgICAgICBjdXJyZW50TmVwYWxpRGF0ZS5tb250aCA9PT0gbmVwYWxpRGF0ZVRvZGF5Lm1vbnRoICYmXHJcbiAgICAgICAgICAgICAgICBjdXJyZW50TmVwYWxpRGF0ZS55ZWFyID09PSBuZXBhbGlEYXRlVG9kYXkueWVhclxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdERhdGUoZGF0ZSlcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge3sgZGF0ZSB8IHRvTnA6IGxhbmd1YWdlIDogXCJudW1iZXJcIiB9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFkYXRlXCIgY2xhc3M9XCJkYXRlcGlja2VyX19kYXRlLS1kaXNhYmxlZFwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuPiZuYnNwOzwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI25vRnV0dXJlRGF0ZT5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICBkYXRlICYmXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudE5lcGFsaURhdGUueWVhciAqIDM2NSArXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS5tb250aCAqIDMwICtcclxuICAgICAgICAgICAgICAgICAgICBkYXRlIDw9XHJcbiAgICAgICAgICAgICAgICAgICAgbmVwYWxpRGF0ZVRvZGF5LmRheSArXHJcbiAgICAgICAgICAgICAgICAgICAgICBuZXBhbGlEYXRlVG9kYXkubW9udGggKiAzMCArXHJcbiAgICAgICAgICAgICAgICAgICAgICBuZXBhbGlEYXRlVG9kYXkueWVhciAqIDM2NTtcclxuICAgICAgICAgICAgICAgIGVsc2UgZGlzYWJsZWREYXRlc1xyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkYXRlcGlja2VyX19kYXRlXCJcclxuICAgICAgICAgICAgICBbY2xhc3MuZGF0ZXBpY2tlcl9fZGF0ZS0tYWN0aXZlXT1cIlxyXG4gICAgICAgICAgICAgICAgZGF0ZSA9PT0gc2VsZWN0ZWREYXRlLmRheSAmJlxyXG4gICAgICAgICAgICAgICAgY3VycmVudE5lcGFsaURhdGUubW9udGggPT09IHNlbGVjdGVkRGF0ZS5tb250aCAmJlxyXG4gICAgICAgICAgICAgICAgY3VycmVudE5lcGFsaURhdGUueWVhciA9PT0gc2VsZWN0ZWREYXRlLnllYXJcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5kYXRlcGlja2VyX19kYXRlLS1jdXJyZW50LWRheV09XCJcclxuICAgICAgICAgICAgICAgIGRhdGUgPT09IG5lcGFsaURhdGVUb2RheS5kYXkgJiZcclxuICAgICAgICAgICAgICAgIGN1cnJlbnROZXBhbGlEYXRlLm1vbnRoID09PSBuZXBhbGlEYXRlVG9kYXkubW9udGggJiZcclxuICAgICAgICAgICAgICAgIGN1cnJlbnROZXBhbGlEYXRlLnllYXIgPT09IG5lcGFsaURhdGVUb2RheS55ZWFyXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0RGF0ZShkYXRlKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7eyBkYXRlIHwgdG9OcDogbGFuZ3VhZ2UgOiBcIm51bWJlclwiIH19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkaXNhYmxlZERhdGVzPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlcGlja2VyX19kYXRlIGRhdGVwaWNrZXJfX2RhdGUtLWRpc2FibGVkXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBkYXRlIHwgdG9OcDogbGFuZ3VhZ2UgOiBcIm51bWJlclwiIH19XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWRhdGVcIiBjbGFzcz1cImRhdGVwaWNrZXJfX2RhdGUtLWRpc2FibGVkXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4+Jm5ic3A7PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPCEtLS5kYXRlcGlja2VyX19kYXRlLWNvbnRhaW5lciBlbmRzLS0+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8IS0tLmRhdGVwaWNrZXJfX2RheXMgZW5kcy0tPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tLmRhdGVwaWNrZXJfX2RheXMtY29udGFpbmVyIGVuZHMtLT5cclxuICA8L2Rpdj5cclxuICA8IS0tLmRhdGVwaWNrZXJfX2NvbnRhaW5lciBlbmRzLS0+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
@@ -682,7 +682,7 @@ NpDatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
682
682
  useExisting: forwardRef(() => NpDatePickerComponent),
683
683
  multi: true,
684
684
  },
685
- ], ngImport: i0, template: "<ng-container *ngIf=\"!!mat; else notMatStyle\">\r\n <div\r\n class=\"custom-mat-field nepali-date-picker\"\r\n [class.has-value]=\"formattedDate\"\r\n [ngClass]=\"theme\"\r\n >\r\n <label *ngIf=\"!!label\" class=\"np-label\"> {{label}} </label>\r\n\r\n <input\r\n class=\"ngx_np_datepicker_input\"\r\n type=\"text\"\r\n [value]=\"formattedDate\"\r\n (focus)=\"open()\"\r\n (keydown)=\"$event.preventDefault()\"\r\n placeholder=\"yyyy/mm/dd\"\r\n autocomplete=\"donot_suggest_autocomplete\"\r\n\r\n autocorrect=\"off\"\r\n autocapitalize=\"off\"\r\n spellcheck=\"false\"\r\n />\r\n <a\r\n class=\"form-icon\"\r\n (click)=\"toggleOpen()\"\r\n [ngClass]=\"isOpen ? 'active' : ''\"\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\r\n <path\r\n d=\"M152 64H296V24C296 10.75 306.7 0 320 0C333.3 0 344 10.75 344 24V64H384C419.3 64 448 92.65 448 128V448C448 483.3 419.3 512 384 512H64C28.65 512 0 483.3 0 448V128C0 92.65 28.65 64 64 64H104V24C104 10.75 114.7 0 128 0C141.3 0 152 10.75 152 24V64zM48 448C48 456.8 55.16 464 64 464H384C392.8 464 400 456.8 400 448V192H48V448z\"\r\n />\r\n </svg>\r\n </a>\r\n <ng-container [ngTemplateOutlet]=\"npdp\" *ngIf=\"isOpen\"></ng-container>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-template #notMatStyle>\r\n <div class=\"nepali-date-picker\" [ngClass]=\"theme\">\r\n <input\r\n class=\"ngx_np_datepicker_input\"\r\n type=\"text\"\r\n [value]=\"formattedDate\"\r\n (focus)=\"open()\"\r\n (keydown)=\"$event.preventDefault()\"\r\n placeholder=\"yyyy/mm/dd\"\r\n autocomplete=\"donot_suggest_autocomplete\"\r\n autocorrect=\"off\"\r\n autocapitalize=\"off\"\r\n spellcheck=\"false\"\r\n />\r\n <a\r\n class=\"form-icon\"\r\n (click)=\"toggleOpen()\"\r\n [ngClass]=\"isOpen ? 'active' : ''\"\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\r\n <path\r\n d=\"M152 64H296V24C296 10.75 306.7 0 320 0C333.3 0 344 10.75 344 24V64H384C419.3 64 448 92.65 448 128V448C448 483.3 419.3 512 384 512H64C28.65 512 0 483.3 0 448V128C0 92.65 28.65 64 64 64H104V24C104 10.75 114.7 0 128 0C141.3 0 152 10.75 152 24V64zM48 448C48 456.8 55.16 464 64 464H384C392.8 464 400 456.8 400 448V192H48V448z\"\r\n />\r\n </svg>\r\n </a>\r\n <ng-container [ngTemplateOutlet]=\"npdp\" *ngIf=\"isOpen\"></ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #npdp>\r\n <div class=\"datepicker__container\">\r\n <div class=\"datepicker__options-container\">\r\n <a class=\"prev-month\" (click)=\"prevMonth()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\r\n <path\r\n d=\"M224 480c-8.188 0-16.38-3.125-22.62-9.375l-192-192c-12.5-12.5-12.5-32.75 0-45.25l192-192c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25L77.25 256l169.4 169.4c12.5 12.5 12.5 32.75 0 45.25C240.4 476.9 232.2 480 224 480z\"\r\n />\r\n </svg>\r\n </a>\r\n <a class=\"select-today\" (click)=\"selectToday()\">\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n class=\"feather feather-home\"\r\n >\r\n <path d=\"M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\"></path>\r\n <polyline points=\"9 22 9 12 15 12 15 22\"></polyline>\r\n </svg>\r\n </a>\r\n <span class=\"datepicker__options-month-container\">\r\n <select (change)=\"selectMonth($event)\">\r\n <option\r\n *ngFor=\"\r\n let month of monthsMapping[language][monthDisplayType];\r\n index as i\r\n \"\r\n [value]=\"month\"\r\n [selected]=\"i === currentNepaliDate.month\"\r\n >\r\n {{ month }}\r\n </option>\r\n </select>\r\n </span>\r\n <span class=\"datepicker__options-year-container\">\r\n <select (change)=\"selectYear($event)\">\r\n <option\r\n *ngFor=\"let year of years; index as i\"\r\n [value]=\"year\"\r\n [selected]=\"year == currentNepaliDate.year\"\r\n >\r\n {{ year | toNp: language : \"number\" }}\r\n </option>\r\n </select>\r\n </span>\r\n\r\n <a class=\"next-month\" (click)=\"nextMonth()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\r\n <path\r\n d=\"M96 480c-8.188 0-16.38-3.125-22.62-9.375c-12.5-12.5-12.5-32.75 0-45.25L242.8 256L73.38 86.63c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0l192 192c12.5 12.5 12.5 32.75 0 45.25l-192 192C112.4 476.9 104.2 480 96 480z\"\r\n />\r\n </svg>\r\n </a>\r\n </div>\r\n <div class=\"datepicker__days-container\">\r\n <div\r\n class=\"datepicker__days\"\r\n *ngFor=\"let day of daysMapping[language][dayDisplayType]; index as i\"\r\n >\r\n <div class=\"datepicker__weekday\">{{ day }}</div>\r\n <div\r\n class=\"datepicker__date-container\"\r\n *ngFor=\"let date of currentMonthData[i]\"\r\n >\r\n <div *ngIf=\"hasFuture; else noFutureDate\">\r\n <div\r\n *ngIf=\"date\"\r\n class=\"datepicker__date\"\r\n [class.datepicker__date--active]=\"\r\n date === currentNepaliDate.day &&\r\n currentNepaliDate.month === currentNepaliDate.month &&\r\n currentNepaliDate.year === currentNepaliDate.year\r\n \"\r\n [class.datepicker__date--current-day]=\"\r\n date === nepaliDateToday.day &&\r\n currentNepaliDate.month === nepaliDateToday.month &&\r\n currentNepaliDate.year === nepaliDateToday.year\r\n \"\r\n (click)=\"selectDate(date)\"\r\n >\r\n {{ date | toNp: language : \"number\" }}\r\n </div>\r\n <div *ngIf=\"!date\" class=\"datepicker__date--disabled\">\r\n <span>&nbsp;</span>\r\n </div>\r\n </div>\r\n\r\n <ng-template #noFutureDate>\r\n <div\r\n *ngIf=\"\r\n date &&\r\n this.currentNepaliDate.year * 365 +\r\n this.currentNepaliDate.month * 30 +\r\n date <=\r\n nepaliDateToday.day +\r\n nepaliDateToday.month * 30 +\r\n nepaliDateToday.year * 365;\r\n else disabledDates\r\n \"\r\n class=\"datepicker__date\"\r\n [class.datepicker__date--active]=\"\r\n date === selectedDate.day &&\r\n currentNepaliDate.month === selectedDate.month &&\r\n currentNepaliDate.year === selectedDate.year\r\n \"\r\n [class.datepicker__date--current-day]=\"\r\n date === nepaliDateToday.day &&\r\n currentNepaliDate.month === nepaliDateToday.month &&\r\n currentNepaliDate.year === nepaliDateToday.year\r\n \"\r\n (click)=\"selectDate(date)\"\r\n >\r\n {{ date | toNp: language : \"number\" }}\r\n </div>\r\n\r\n <ng-template #disabledDates>\r\n <div class=\"datepicker__date datepicker__date--disabled\">\r\n {{ date | toNp: language : \"number\" }}\r\n </div>\r\n </ng-template>\r\n\r\n <div *ngIf=\"!date\" class=\"datepicker__date--disabled\">\r\n <span>&nbsp;</span>\r\n </div>\r\n </ng-template>\r\n </div>\r\n <!--.datepicker__date-container ends-->\r\n </div>\r\n <!--.datepicker__days ends-->\r\n </div>\r\n <!--.datepicker__days-container ends-->\r\n </div>\r\n <!--.datepicker__container ends-->\r\n</ng-template>\r\n", styles: [".nepali-date-picker.nepali-date-picker{position:relative;display:inline-block;font-family:Arial,Helvetica,sans-serif;font-size:1em}.nepali-date-picker a.active svg{fill:#337ab7;opacity:.9}.nepali-date-picker .form-icon svg{width:14px;opacity:.3;position:absolute;right:8px;top:12px;cursor:pointer}.datepicker__container{border:1px solid #eee;background:#fff;width:294px;box-shadow:#0a0a0f33 0 7px 29px;position:absolute;z-index:99999}.datepicker__options-container{padding:12px 5px;border-bottom:1px solid #eee;display:flex;justify-content:space-evenly;background-color:#337ab7;color:#fff;line-height:25px;font-size:1em}.datepicker__days-container{display:flex;justify-content:center;color:#777}.datepicker__days{text-align:center;padding-bottom:10px}.datepicker__weekday{padding:8px;font-weight:700;border-bottom:1px solid #eee;margin-bottom:0}.datepicker__date-container{width:40px;height:40px;line-height:40px;margin:0}.datepicker__date-container>div{height:100%}.datepicker__date{cursor:pointer;border-radius:4px}.datepicker__date:hover{background-color:#eee}.datepicker__date.datepicker__date--disabled{background:#f3f3f3;border-radius:0}.datepicker__date.datepicker__date--disabled:hover{background:#f3f3f3}.datepicker__date--active.datepicker__date--active{background-color:#337ab7;color:#fff}select:focus,select:focus-visible{outline:1px solid #fff}.datepicker__container select{border:none;color:#fff;background:none;font-size:inherit}select option{color:#333}.ngx_np_datepicker_input{border:1px solid #eee;padding:10px;font-size:16px;color:#777}.ngx_np_datepicker_input:focus-visible{outline:2px solid #337ab7}.prev-month,.next-month{padding:0;width:25px;height:25px;display:block;opacity:.5;border-radius:50%;background:#f3f3f3;cursor:pointer;text-align:center;line-height:23px}.next-month:hover,.prev-month:hover{background:#ccc}.prev-month svg,.next-month svg{max-width:8px;height:auto}.select-today{padding:0;width:22px;height:22px;display:block;cursor:pointer;color:#ffffffe6;text-align:center;line-height:23px}.select-today:hover{color:#ffffff80}.select-today svg{max-width:100%}.dark.nepali-date-picker a.active svg{fill:#000}.dark .datepicker__options-container{border-bottom:1px solid #000;background-color:#000;color:#fff}.dark .datepicker__container{background:#333}.dark select{color:#fff}.datepicker__date--current-day{background-color:#f3f3f3;border:2px dashed rgba(0,0,0,.2);position:relative;z-index:999;height:100%}.dark .datepicker__date--active.datepicker__date--active{background-color:#000;color:#fff}.dark .ngx_np_datepicker_input:focus-visible{outline:2px solid #000}.dark .datepicker__days{background-color:#333}.dark .datepicker__date:hover{background-color:#222;color:#fff}.dark .datepicker__days-container{color:#aaa}.dark .datepicker__weekday{border-bottom:1px solid #555}.dark .datepicker__date--current-day{background:#555;border:none}.light.nepali-date-picker a.active svg{fill:#777}.light .datepicker__options-container{border-bottom:none;background-color:#fff;color:#777}.light select{color:#777}.light .datepicker__date--active.datepicker__date--active{background-color:#aaa;color:#fff}.light .ngx_np_datepicker_input:focus-visible{outline:1px solid #ddd}.lightblue.nepali-date-picker a.active svg{fill:#38c5f0da}.lightblue .datepicker__options-container{background-color:#38c5f0da;color:#fff}.lightblue select{color:#fff}.lightblue .datepicker__date--active.datepicker__date--active{background-color:#38c5f0da;color:#fff}.lightblue .ngx_np_datepicker_input:focus-visible{outline:2px solid #38c5f0da}.lightblue .ngx_np_datepicker_input:focus-visible{outline:1px solid #38c5f0da}.custom-mat-field{position:relative;width:100%;height:56px;background:rgba(0,0,0,.04);border-top-left-radius:4px;border-top-right-radius:4px;border-bottom:1px solid rgba(0,0,0,.42);transition:background-color .2s ease}.custom-mat-field:hover{background:rgba(0,0,0,.08)}.custom-mat-field:focus-within{border-bottom:2px solid #3f51b5}.custom-mat-field .ngx_np_datepicker_input:focus-visible{outline:none}.custom-mat-field .ngx_np_datepicker_input{width:100%;height:100%;border:none;background:transparent;outline:none;padding:24px 12px 8px;font-size:16px;box-sizing:border-box}.custom-mat-field .np-label{position:absolute;left:12px;top:18px;color:#0009;font-size:16px;pointer-events:none;transform-origin:left top;transition:all .15s ease}.custom-mat-field.has-value .np-label,.custom-mat-field:focus-within .np-label,.custom-mat-field .ngx_np_datepicker_input:not(:placeholder-shown)+.np-label{top:8px;font-size:12px;color:#3f51b5}.custom-mat-field .ngx_np_datepicker_input::placeholder{opacity:0;transition:opacity .15s ease}.custom-mat-field .ngx_np_datepicker_input:focus::placeholder{opacity:1}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }], pipes: { "toNp": ToNpPipe }, encapsulation: i0.ViewEncapsulation.None });
685
+ ], ngImport: i0, template: "<ng-container *ngIf=\"!!mat; else notMatStyle\">\r\n <div\r\n class=\"custom-mat-field nepali-date-picker\"\r\n [class.has-value]=\"formattedDate\"\r\n [ngClass]=\"theme\"\r\n >\r\n <label *ngIf=\"!!label\" class=\"np-label\"> {{ label }} </label>\r\n\r\n <input\r\n class=\"ngx_np_datepicker_input\"\r\n type=\"text\"\r\n [value]=\"formattedDate\"\r\n (focus)=\"open()\"\r\n (keydown)=\"$event.preventDefault()\"\r\n placeholder=\"yyyy/mm/dd\"\r\n autocomplete=\"donot_suggest_autocomplete\"\r\n autocorrect=\"off\"\r\n autocapitalize=\"off\"\r\n spellcheck=\"false\"\r\n />\r\n <a\r\n class=\"form-icon\"\r\n (click)=\"toggleOpen()\"\r\n [ngClass]=\"isOpen ? 'active' : ''\"\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\r\n <path\r\n d=\"M152 64H296V24C296 10.75 306.7 0 320 0C333.3 0 344 10.75 344 24V64H384C419.3 64 448 92.65 448 128V448C448 483.3 419.3 512 384 512H64C28.65 512 0 483.3 0 448V128C0 92.65 28.65 64 64 64H104V24C104 10.75 114.7 0 128 0C141.3 0 152 10.75 152 24V64zM48 448C48 456.8 55.16 464 64 464H384C392.8 464 400 456.8 400 448V192H48V448z\"\r\n />\r\n </svg>\r\n </a>\r\n <ng-container [ngTemplateOutlet]=\"npdp\" *ngIf=\"isOpen\"></ng-container>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-template #notMatStyle>\r\n <div class=\"nepali-date-picker\" [ngClass]=\"theme\">\r\n <input\r\n class=\"ngx_np_datepicker_input\"\r\n type=\"text\"\r\n [value]=\"formattedDate\"\r\n (focus)=\"open()\"\r\n (keydown)=\"$event.preventDefault()\"\r\n placeholder=\"yyyy/mm/dd\"\r\n autocomplete=\"donot_suggest_autocomplete\"\r\n autocorrect=\"off\"\r\n autocapitalize=\"off\"\r\n spellcheck=\"false\"\r\n />\r\n <a\r\n class=\"form-icon\"\r\n (click)=\"toggleOpen()\"\r\n [ngClass]=\"isOpen ? 'active' : ''\"\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\r\n <path\r\n d=\"M152 64H296V24C296 10.75 306.7 0 320 0C333.3 0 344 10.75 344 24V64H384C419.3 64 448 92.65 448 128V448C448 483.3 419.3 512 384 512H64C28.65 512 0 483.3 0 448V128C0 92.65 28.65 64 64 64H104V24C104 10.75 114.7 0 128 0C141.3 0 152 10.75 152 24V64zM48 448C48 456.8 55.16 464 64 464H384C392.8 464 400 456.8 400 448V192H48V448z\"\r\n />\r\n </svg>\r\n </a>\r\n <ng-container [ngTemplateOutlet]=\"npdp\" *ngIf=\"isOpen\"></ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #npdp>\r\n <div class=\"datepicker__container\">\r\n <div class=\"datepicker__options-container\">\r\n <a class=\"prev-month\" (click)=\"prevMonth()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\r\n <path\r\n d=\"M224 480c-8.188 0-16.38-3.125-22.62-9.375l-192-192c-12.5-12.5-12.5-32.75 0-45.25l192-192c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25L77.25 256l169.4 169.4c12.5 12.5 12.5 32.75 0 45.25C240.4 476.9 232.2 480 224 480z\"\r\n />\r\n </svg>\r\n </a>\r\n <a class=\"select-today\" (click)=\"selectToday()\">\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n class=\"feather feather-home\"\r\n >\r\n <path d=\"M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\"></path>\r\n <polyline points=\"9 22 9 12 15 12 15 22\"></polyline>\r\n </svg>\r\n </a>\r\n <span class=\"datepicker__options-month-container\">\r\n <select (change)=\"selectMonth($event)\">\r\n <option\r\n *ngFor=\"\r\n let month of monthsMapping[language][monthDisplayType];\r\n index as i\r\n \"\r\n [value]=\"month\"\r\n [selected]=\"i === currentNepaliDate.month\"\r\n >\r\n {{ month }}\r\n </option>\r\n </select>\r\n </span>\r\n <span class=\"datepicker__options-year-container\">\r\n <select (change)=\"selectYear($event)\">\r\n <option\r\n *ngFor=\"let year of years; index as i\"\r\n [value]=\"year\"\r\n [selected]=\"year == currentNepaliDate.year\"\r\n >\r\n {{ year | toNp: language : \"number\" }}\r\n </option>\r\n </select>\r\n </span>\r\n\r\n <a class=\"next-month\" (click)=\"nextMonth()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\r\n <path\r\n d=\"M96 480c-8.188 0-16.38-3.125-22.62-9.375c-12.5-12.5-12.5-32.75 0-45.25L242.8 256L73.38 86.63c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0l192 192c12.5 12.5 12.5 32.75 0 45.25l-192 192C112.4 476.9 104.2 480 96 480z\"\r\n />\r\n </svg>\r\n </a>\r\n </div>\r\n <div class=\"datepicker__days-container\">\r\n <div\r\n class=\"datepicker__days\"\r\n *ngFor=\"let day of daysMapping[language][dayDisplayType]; index as i\"\r\n >\r\n <div class=\"datepicker__weekday\">{{ day }}</div>\r\n <div\r\n class=\"datepicker__date-container\"\r\n *ngFor=\"let date of currentMonthData[i]\"\r\n >\r\n <div *ngIf=\"hasFuture; else noFutureDate\">\r\n <div\r\n *ngIf=\"date\"\r\n class=\"datepicker__date\"\r\n [class.datepicker__date--active]=\"\r\n date === currentNepaliDate.day &&\r\n currentNepaliDate.month === currentNepaliDate.month &&\r\n currentNepaliDate.year === currentNepaliDate.year\r\n \"\r\n [class.datepicker__date--current-day]=\"\r\n date === nepaliDateToday.day &&\r\n currentNepaliDate.month === nepaliDateToday.month &&\r\n currentNepaliDate.year === nepaliDateToday.year\r\n \"\r\n (click)=\"selectDate(date)\"\r\n >\r\n {{ date | toNp: language : \"number\" }}\r\n </div>\r\n <div *ngIf=\"!date\" class=\"datepicker__date--disabled\">\r\n <span>&nbsp;</span>\r\n </div>\r\n </div>\r\n\r\n <ng-template #noFutureDate>\r\n <div\r\n *ngIf=\"\r\n date &&\r\n this.currentNepaliDate.year * 365 +\r\n this.currentNepaliDate.month * 30 +\r\n date <=\r\n nepaliDateToday.day +\r\n nepaliDateToday.month * 30 +\r\n nepaliDateToday.year * 365;\r\n else disabledDates\r\n \"\r\n class=\"datepicker__date\"\r\n [class.datepicker__date--active]=\"\r\n date === selectedDate.day &&\r\n currentNepaliDate.month === selectedDate.month &&\r\n currentNepaliDate.year === selectedDate.year\r\n \"\r\n [class.datepicker__date--current-day]=\"\r\n date === nepaliDateToday.day &&\r\n currentNepaliDate.month === nepaliDateToday.month &&\r\n currentNepaliDate.year === nepaliDateToday.year\r\n \"\r\n (click)=\"selectDate(date)\"\r\n >\r\n {{ date | toNp: language : \"number\" }}\r\n </div>\r\n\r\n <ng-template #disabledDates>\r\n <div class=\"datepicker__date datepicker__date--disabled\">\r\n {{ date | toNp: language : \"number\" }}\r\n </div>\r\n </ng-template>\r\n\r\n <div *ngIf=\"!date\" class=\"datepicker__date--disabled\">\r\n <span>&nbsp;</span>\r\n </div>\r\n </ng-template>\r\n </div>\r\n <!--.datepicker__date-container ends-->\r\n </div>\r\n <!--.datepicker__days ends-->\r\n </div>\r\n <!--.datepicker__days-container ends-->\r\n </div>\r\n <!--.datepicker__container ends-->\r\n</ng-template>\r\n", styles: [".nepali-date-picker.nepali-date-picker{position:relative;display:inline-block;font-family:Arial,Helvetica,sans-serif;font-size:1em}.nepali-date-picker a.active svg{fill:#337ab7;opacity:.9}.nepali-date-picker .form-icon svg{width:14px;opacity:.3;position:absolute;right:8px;top:12px;cursor:pointer}.datepicker__container{border:1px solid #eee;background:#fff;width:294px;box-shadow:#0a0a0f33 0 7px 29px;position:absolute;z-index:99999}.datepicker__options-container{padding:12px 5px;border-bottom:1px solid #eee;display:flex;justify-content:space-evenly;background-color:#337ab7;color:#fff;line-height:25px;font-size:1em}.datepicker__days-container{display:flex;justify-content:center;color:#777}.datepicker__days{text-align:center;padding-bottom:10px}.datepicker__weekday{padding:8px;font-weight:700;border-bottom:1px solid #eee;margin-bottom:0}.datepicker__date-container{width:40px;height:40px;line-height:40px;margin:0}.datepicker__date-container>div{height:100%}.datepicker__date{cursor:pointer;border-radius:4px}.datepicker__date:hover{background-color:#eee}.datepicker__date.datepicker__date--disabled{background:#f3f3f3;border-radius:0}.datepicker__date.datepicker__date--disabled:hover{background:#f3f3f3}.datepicker__date--active.datepicker__date--active{background-color:#337ab7;color:#fff}select:focus,select:focus-visible{outline:1px solid #fff}.datepicker__container select{border:none;color:#fff;background:none;font-size:inherit}select option{color:#333}.ngx_np_datepicker_input{border:1px solid #eee;padding:10px;font-size:16px;color:#777}.ngx_np_datepicker_input:focus-visible{outline:2px solid #337ab7}.prev-month,.next-month{padding:0;width:25px;height:25px;display:block;opacity:.5;border-radius:50%;background:#f3f3f3;cursor:pointer;text-align:center;line-height:23px}.next-month:hover,.prev-month:hover{background:#ccc}.prev-month svg,.next-month svg{max-width:8px;height:auto}.select-today{padding:0;width:22px;height:22px;display:block;cursor:pointer;color:#ffffffe6;text-align:center;line-height:23px}.select-today:hover{color:#ffffff80}.select-today svg{max-width:100%}.dark.nepali-date-picker a.active svg{fill:#000}.dark .datepicker__options-container{border-bottom:1px solid #000;background-color:#000;color:#fff}.dark .datepicker__container{background:#333}.dark select{color:#fff}.datepicker__date--current-day{background-color:#f3f3f3;border:2px dashed rgba(0,0,0,.2);position:relative;z-index:999;height:100%}.dark .datepicker__date--active.datepicker__date--active{background-color:#000;color:#fff}.dark .ngx_np_datepicker_input:focus-visible{outline:2px solid #000}.dark .datepicker__days{background-color:#333}.dark .datepicker__date:hover{background-color:#222;color:#fff}.dark .datepicker__days-container{color:#aaa}.dark .datepicker__weekday{border-bottom:1px solid #555}.dark .datepicker__date--current-day{background:#555;border:none}.light.nepali-date-picker a.active svg{fill:#777}.light .datepicker__options-container{border-bottom:none;background-color:#fff;color:#777}.light select{color:#777}.light .datepicker__date--active.datepicker__date--active{background-color:#aaa;color:#fff}.light .ngx_np_datepicker_input:focus-visible{outline:1px solid #ddd}.lightblue.nepali-date-picker a.active svg{fill:#38c5f0da}.lightblue .datepicker__options-container{background-color:#38c5f0da;color:#fff}.lightblue select{color:#fff}.lightblue .datepicker__date--active.datepicker__date--active{background-color:#38c5f0da;color:#fff}.lightblue .ngx_np_datepicker_input:focus-visible{outline:2px solid #38c5f0da}.lightblue .ngx_np_datepicker_input:focus-visible{outline:1px solid #38c5f0da}.custom-mat-field{position:relative;width:100%;height:45px;background:rgba(0,0,0,.04);border-top-left-radius:4px;border-top-right-radius:4px;border-bottom:1px solid rgba(0,0,0,.42);transition:background-color .2s ease}.custom-mat-field:hover{background:rgba(0,0,0,.08)}.custom-mat-field:focus-within{border-bottom:2px solid #3f51b5}.custom-mat-field .ngx_np_datepicker_input:focus-visible{outline:none}.custom-mat-field .ngx_np_datepicker_input{width:100%;height:100%;border:none;background:transparent;outline:none;padding:24px 12px 8px;font-size:16px;box-sizing:border-box}.custom-mat-field .np-label{position:absolute;left:12px;top:18px;color:#0009;font-size:16px;pointer-events:none;transform-origin:left top;transition:all .15s ease}.custom-mat-field.has-value .np-label,.custom-mat-field:focus-within .np-label,.custom-mat-field .ngx_np_datepicker_input:not(:placeholder-shown)+.np-label{top:8px;font-size:12px;color:#3f51b5}.custom-mat-field .ngx_np_datepicker_input::placeholder{opacity:0;transition:opacity .15s ease}.custom-mat-field .ngx_np_datepicker_input:focus::placeholder{opacity:1}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }], pipes: { "toNp": ToNpPipe }, encapsulation: i0.ViewEncapsulation.None });
686
686
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: NpDatePickerComponent, decorators: [{
687
687
  type: Component,
688
688
  args: [{ selector: 'np-datepicker', providers: [
@@ -691,7 +691,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImpor
691
691
  useExisting: forwardRef(() => NpDatePickerComponent),
692
692
  multi: true,
693
693
  },
694
- ], encapsulation: ViewEncapsulation.None, template: "<ng-container *ngIf=\"!!mat; else notMatStyle\">\r\n <div\r\n class=\"custom-mat-field nepali-date-picker\"\r\n [class.has-value]=\"formattedDate\"\r\n [ngClass]=\"theme\"\r\n >\r\n <label *ngIf=\"!!label\" class=\"np-label\"> {{label}} </label>\r\n\r\n <input\r\n class=\"ngx_np_datepicker_input\"\r\n type=\"text\"\r\n [value]=\"formattedDate\"\r\n (focus)=\"open()\"\r\n (keydown)=\"$event.preventDefault()\"\r\n placeholder=\"yyyy/mm/dd\"\r\n autocomplete=\"donot_suggest_autocomplete\"\r\n\r\n autocorrect=\"off\"\r\n autocapitalize=\"off\"\r\n spellcheck=\"false\"\r\n />\r\n <a\r\n class=\"form-icon\"\r\n (click)=\"toggleOpen()\"\r\n [ngClass]=\"isOpen ? 'active' : ''\"\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\r\n <path\r\n d=\"M152 64H296V24C296 10.75 306.7 0 320 0C333.3 0 344 10.75 344 24V64H384C419.3 64 448 92.65 448 128V448C448 483.3 419.3 512 384 512H64C28.65 512 0 483.3 0 448V128C0 92.65 28.65 64 64 64H104V24C104 10.75 114.7 0 128 0C141.3 0 152 10.75 152 24V64zM48 448C48 456.8 55.16 464 64 464H384C392.8 464 400 456.8 400 448V192H48V448z\"\r\n />\r\n </svg>\r\n </a>\r\n <ng-container [ngTemplateOutlet]=\"npdp\" *ngIf=\"isOpen\"></ng-container>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-template #notMatStyle>\r\n <div class=\"nepali-date-picker\" [ngClass]=\"theme\">\r\n <input\r\n class=\"ngx_np_datepicker_input\"\r\n type=\"text\"\r\n [value]=\"formattedDate\"\r\n (focus)=\"open()\"\r\n (keydown)=\"$event.preventDefault()\"\r\n placeholder=\"yyyy/mm/dd\"\r\n autocomplete=\"donot_suggest_autocomplete\"\r\n autocorrect=\"off\"\r\n autocapitalize=\"off\"\r\n spellcheck=\"false\"\r\n />\r\n <a\r\n class=\"form-icon\"\r\n (click)=\"toggleOpen()\"\r\n [ngClass]=\"isOpen ? 'active' : ''\"\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\r\n <path\r\n d=\"M152 64H296V24C296 10.75 306.7 0 320 0C333.3 0 344 10.75 344 24V64H384C419.3 64 448 92.65 448 128V448C448 483.3 419.3 512 384 512H64C28.65 512 0 483.3 0 448V128C0 92.65 28.65 64 64 64H104V24C104 10.75 114.7 0 128 0C141.3 0 152 10.75 152 24V64zM48 448C48 456.8 55.16 464 64 464H384C392.8 464 400 456.8 400 448V192H48V448z\"\r\n />\r\n </svg>\r\n </a>\r\n <ng-container [ngTemplateOutlet]=\"npdp\" *ngIf=\"isOpen\"></ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #npdp>\r\n <div class=\"datepicker__container\">\r\n <div class=\"datepicker__options-container\">\r\n <a class=\"prev-month\" (click)=\"prevMonth()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\r\n <path\r\n d=\"M224 480c-8.188 0-16.38-3.125-22.62-9.375l-192-192c-12.5-12.5-12.5-32.75 0-45.25l192-192c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25L77.25 256l169.4 169.4c12.5 12.5 12.5 32.75 0 45.25C240.4 476.9 232.2 480 224 480z\"\r\n />\r\n </svg>\r\n </a>\r\n <a class=\"select-today\" (click)=\"selectToday()\">\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n class=\"feather feather-home\"\r\n >\r\n <path d=\"M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\"></path>\r\n <polyline points=\"9 22 9 12 15 12 15 22\"></polyline>\r\n </svg>\r\n </a>\r\n <span class=\"datepicker__options-month-container\">\r\n <select (change)=\"selectMonth($event)\">\r\n <option\r\n *ngFor=\"\r\n let month of monthsMapping[language][monthDisplayType];\r\n index as i\r\n \"\r\n [value]=\"month\"\r\n [selected]=\"i === currentNepaliDate.month\"\r\n >\r\n {{ month }}\r\n </option>\r\n </select>\r\n </span>\r\n <span class=\"datepicker__options-year-container\">\r\n <select (change)=\"selectYear($event)\">\r\n <option\r\n *ngFor=\"let year of years; index as i\"\r\n [value]=\"year\"\r\n [selected]=\"year == currentNepaliDate.year\"\r\n >\r\n {{ year | toNp: language : \"number\" }}\r\n </option>\r\n </select>\r\n </span>\r\n\r\n <a class=\"next-month\" (click)=\"nextMonth()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\r\n <path\r\n d=\"M96 480c-8.188 0-16.38-3.125-22.62-9.375c-12.5-12.5-12.5-32.75 0-45.25L242.8 256L73.38 86.63c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0l192 192c12.5 12.5 12.5 32.75 0 45.25l-192 192C112.4 476.9 104.2 480 96 480z\"\r\n />\r\n </svg>\r\n </a>\r\n </div>\r\n <div class=\"datepicker__days-container\">\r\n <div\r\n class=\"datepicker__days\"\r\n *ngFor=\"let day of daysMapping[language][dayDisplayType]; index as i\"\r\n >\r\n <div class=\"datepicker__weekday\">{{ day }}</div>\r\n <div\r\n class=\"datepicker__date-container\"\r\n *ngFor=\"let date of currentMonthData[i]\"\r\n >\r\n <div *ngIf=\"hasFuture; else noFutureDate\">\r\n <div\r\n *ngIf=\"date\"\r\n class=\"datepicker__date\"\r\n [class.datepicker__date--active]=\"\r\n date === currentNepaliDate.day &&\r\n currentNepaliDate.month === currentNepaliDate.month &&\r\n currentNepaliDate.year === currentNepaliDate.year\r\n \"\r\n [class.datepicker__date--current-day]=\"\r\n date === nepaliDateToday.day &&\r\n currentNepaliDate.month === nepaliDateToday.month &&\r\n currentNepaliDate.year === nepaliDateToday.year\r\n \"\r\n (click)=\"selectDate(date)\"\r\n >\r\n {{ date | toNp: language : \"number\" }}\r\n </div>\r\n <div *ngIf=\"!date\" class=\"datepicker__date--disabled\">\r\n <span>&nbsp;</span>\r\n </div>\r\n </div>\r\n\r\n <ng-template #noFutureDate>\r\n <div\r\n *ngIf=\"\r\n date &&\r\n this.currentNepaliDate.year * 365 +\r\n this.currentNepaliDate.month * 30 +\r\n date <=\r\n nepaliDateToday.day +\r\n nepaliDateToday.month * 30 +\r\n nepaliDateToday.year * 365;\r\n else disabledDates\r\n \"\r\n class=\"datepicker__date\"\r\n [class.datepicker__date--active]=\"\r\n date === selectedDate.day &&\r\n currentNepaliDate.month === selectedDate.month &&\r\n currentNepaliDate.year === selectedDate.year\r\n \"\r\n [class.datepicker__date--current-day]=\"\r\n date === nepaliDateToday.day &&\r\n currentNepaliDate.month === nepaliDateToday.month &&\r\n currentNepaliDate.year === nepaliDateToday.year\r\n \"\r\n (click)=\"selectDate(date)\"\r\n >\r\n {{ date | toNp: language : \"number\" }}\r\n </div>\r\n\r\n <ng-template #disabledDates>\r\n <div class=\"datepicker__date datepicker__date--disabled\">\r\n {{ date | toNp: language : \"number\" }}\r\n </div>\r\n </ng-template>\r\n\r\n <div *ngIf=\"!date\" class=\"datepicker__date--disabled\">\r\n <span>&nbsp;</span>\r\n </div>\r\n </ng-template>\r\n </div>\r\n <!--.datepicker__date-container ends-->\r\n </div>\r\n <!--.datepicker__days ends-->\r\n </div>\r\n <!--.datepicker__days-container ends-->\r\n </div>\r\n <!--.datepicker__container ends-->\r\n</ng-template>\r\n", styles: [".nepali-date-picker.nepali-date-picker{position:relative;display:inline-block;font-family:Arial,Helvetica,sans-serif;font-size:1em}.nepali-date-picker a.active svg{fill:#337ab7;opacity:.9}.nepali-date-picker .form-icon svg{width:14px;opacity:.3;position:absolute;right:8px;top:12px;cursor:pointer}.datepicker__container{border:1px solid #eee;background:#fff;width:294px;box-shadow:#0a0a0f33 0 7px 29px;position:absolute;z-index:99999}.datepicker__options-container{padding:12px 5px;border-bottom:1px solid #eee;display:flex;justify-content:space-evenly;background-color:#337ab7;color:#fff;line-height:25px;font-size:1em}.datepicker__days-container{display:flex;justify-content:center;color:#777}.datepicker__days{text-align:center;padding-bottom:10px}.datepicker__weekday{padding:8px;font-weight:700;border-bottom:1px solid #eee;margin-bottom:0}.datepicker__date-container{width:40px;height:40px;line-height:40px;margin:0}.datepicker__date-container>div{height:100%}.datepicker__date{cursor:pointer;border-radius:4px}.datepicker__date:hover{background-color:#eee}.datepicker__date.datepicker__date--disabled{background:#f3f3f3;border-radius:0}.datepicker__date.datepicker__date--disabled:hover{background:#f3f3f3}.datepicker__date--active.datepicker__date--active{background-color:#337ab7;color:#fff}select:focus,select:focus-visible{outline:1px solid #fff}.datepicker__container select{border:none;color:#fff;background:none;font-size:inherit}select option{color:#333}.ngx_np_datepicker_input{border:1px solid #eee;padding:10px;font-size:16px;color:#777}.ngx_np_datepicker_input:focus-visible{outline:2px solid #337ab7}.prev-month,.next-month{padding:0;width:25px;height:25px;display:block;opacity:.5;border-radius:50%;background:#f3f3f3;cursor:pointer;text-align:center;line-height:23px}.next-month:hover,.prev-month:hover{background:#ccc}.prev-month svg,.next-month svg{max-width:8px;height:auto}.select-today{padding:0;width:22px;height:22px;display:block;cursor:pointer;color:#ffffffe6;text-align:center;line-height:23px}.select-today:hover{color:#ffffff80}.select-today svg{max-width:100%}.dark.nepali-date-picker a.active svg{fill:#000}.dark .datepicker__options-container{border-bottom:1px solid #000;background-color:#000;color:#fff}.dark .datepicker__container{background:#333}.dark select{color:#fff}.datepicker__date--current-day{background-color:#f3f3f3;border:2px dashed rgba(0,0,0,.2);position:relative;z-index:999;height:100%}.dark .datepicker__date--active.datepicker__date--active{background-color:#000;color:#fff}.dark .ngx_np_datepicker_input:focus-visible{outline:2px solid #000}.dark .datepicker__days{background-color:#333}.dark .datepicker__date:hover{background-color:#222;color:#fff}.dark .datepicker__days-container{color:#aaa}.dark .datepicker__weekday{border-bottom:1px solid #555}.dark .datepicker__date--current-day{background:#555;border:none}.light.nepali-date-picker a.active svg{fill:#777}.light .datepicker__options-container{border-bottom:none;background-color:#fff;color:#777}.light select{color:#777}.light .datepicker__date--active.datepicker__date--active{background-color:#aaa;color:#fff}.light .ngx_np_datepicker_input:focus-visible{outline:1px solid #ddd}.lightblue.nepali-date-picker a.active svg{fill:#38c5f0da}.lightblue .datepicker__options-container{background-color:#38c5f0da;color:#fff}.lightblue select{color:#fff}.lightblue .datepicker__date--active.datepicker__date--active{background-color:#38c5f0da;color:#fff}.lightblue .ngx_np_datepicker_input:focus-visible{outline:2px solid #38c5f0da}.lightblue .ngx_np_datepicker_input:focus-visible{outline:1px solid #38c5f0da}.custom-mat-field{position:relative;width:100%;height:56px;background:rgba(0,0,0,.04);border-top-left-radius:4px;border-top-right-radius:4px;border-bottom:1px solid rgba(0,0,0,.42);transition:background-color .2s ease}.custom-mat-field:hover{background:rgba(0,0,0,.08)}.custom-mat-field:focus-within{border-bottom:2px solid #3f51b5}.custom-mat-field .ngx_np_datepicker_input:focus-visible{outline:none}.custom-mat-field .ngx_np_datepicker_input{width:100%;height:100%;border:none;background:transparent;outline:none;padding:24px 12px 8px;font-size:16px;box-sizing:border-box}.custom-mat-field .np-label{position:absolute;left:12px;top:18px;color:#0009;font-size:16px;pointer-events:none;transform-origin:left top;transition:all .15s ease}.custom-mat-field.has-value .np-label,.custom-mat-field:focus-within .np-label,.custom-mat-field .ngx_np_datepicker_input:not(:placeholder-shown)+.np-label{top:8px;font-size:12px;color:#3f51b5}.custom-mat-field .ngx_np_datepicker_input::placeholder{opacity:0;transition:opacity .15s ease}.custom-mat-field .ngx_np_datepicker_input:focus::placeholder{opacity:1}\n"] }]
694
+ ], encapsulation: ViewEncapsulation.None, template: "<ng-container *ngIf=\"!!mat; else notMatStyle\">\r\n <div\r\n class=\"custom-mat-field nepali-date-picker\"\r\n [class.has-value]=\"formattedDate\"\r\n [ngClass]=\"theme\"\r\n >\r\n <label *ngIf=\"!!label\" class=\"np-label\"> {{ label }} </label>\r\n\r\n <input\r\n class=\"ngx_np_datepicker_input\"\r\n type=\"text\"\r\n [value]=\"formattedDate\"\r\n (focus)=\"open()\"\r\n (keydown)=\"$event.preventDefault()\"\r\n placeholder=\"yyyy/mm/dd\"\r\n autocomplete=\"donot_suggest_autocomplete\"\r\n autocorrect=\"off\"\r\n autocapitalize=\"off\"\r\n spellcheck=\"false\"\r\n />\r\n <a\r\n class=\"form-icon\"\r\n (click)=\"toggleOpen()\"\r\n [ngClass]=\"isOpen ? 'active' : ''\"\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\r\n <path\r\n d=\"M152 64H296V24C296 10.75 306.7 0 320 0C333.3 0 344 10.75 344 24V64H384C419.3 64 448 92.65 448 128V448C448 483.3 419.3 512 384 512H64C28.65 512 0 483.3 0 448V128C0 92.65 28.65 64 64 64H104V24C104 10.75 114.7 0 128 0C141.3 0 152 10.75 152 24V64zM48 448C48 456.8 55.16 464 64 464H384C392.8 464 400 456.8 400 448V192H48V448z\"\r\n />\r\n </svg>\r\n </a>\r\n <ng-container [ngTemplateOutlet]=\"npdp\" *ngIf=\"isOpen\"></ng-container>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-template #notMatStyle>\r\n <div class=\"nepali-date-picker\" [ngClass]=\"theme\">\r\n <input\r\n class=\"ngx_np_datepicker_input\"\r\n type=\"text\"\r\n [value]=\"formattedDate\"\r\n (focus)=\"open()\"\r\n (keydown)=\"$event.preventDefault()\"\r\n placeholder=\"yyyy/mm/dd\"\r\n autocomplete=\"donot_suggest_autocomplete\"\r\n autocorrect=\"off\"\r\n autocapitalize=\"off\"\r\n spellcheck=\"false\"\r\n />\r\n <a\r\n class=\"form-icon\"\r\n (click)=\"toggleOpen()\"\r\n [ngClass]=\"isOpen ? 'active' : ''\"\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\r\n <path\r\n d=\"M152 64H296V24C296 10.75 306.7 0 320 0C333.3 0 344 10.75 344 24V64H384C419.3 64 448 92.65 448 128V448C448 483.3 419.3 512 384 512H64C28.65 512 0 483.3 0 448V128C0 92.65 28.65 64 64 64H104V24C104 10.75 114.7 0 128 0C141.3 0 152 10.75 152 24V64zM48 448C48 456.8 55.16 464 64 464H384C392.8 464 400 456.8 400 448V192H48V448z\"\r\n />\r\n </svg>\r\n </a>\r\n <ng-container [ngTemplateOutlet]=\"npdp\" *ngIf=\"isOpen\"></ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #npdp>\r\n <div class=\"datepicker__container\">\r\n <div class=\"datepicker__options-container\">\r\n <a class=\"prev-month\" (click)=\"prevMonth()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\r\n <path\r\n d=\"M224 480c-8.188 0-16.38-3.125-22.62-9.375l-192-192c-12.5-12.5-12.5-32.75 0-45.25l192-192c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25L77.25 256l169.4 169.4c12.5 12.5 12.5 32.75 0 45.25C240.4 476.9 232.2 480 224 480z\"\r\n />\r\n </svg>\r\n </a>\r\n <a class=\"select-today\" (click)=\"selectToday()\">\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n class=\"feather feather-home\"\r\n >\r\n <path d=\"M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\"></path>\r\n <polyline points=\"9 22 9 12 15 12 15 22\"></polyline>\r\n </svg>\r\n </a>\r\n <span class=\"datepicker__options-month-container\">\r\n <select (change)=\"selectMonth($event)\">\r\n <option\r\n *ngFor=\"\r\n let month of monthsMapping[language][monthDisplayType];\r\n index as i\r\n \"\r\n [value]=\"month\"\r\n [selected]=\"i === currentNepaliDate.month\"\r\n >\r\n {{ month }}\r\n </option>\r\n </select>\r\n </span>\r\n <span class=\"datepicker__options-year-container\">\r\n <select (change)=\"selectYear($event)\">\r\n <option\r\n *ngFor=\"let year of years; index as i\"\r\n [value]=\"year\"\r\n [selected]=\"year == currentNepaliDate.year\"\r\n >\r\n {{ year | toNp: language : \"number\" }}\r\n </option>\r\n </select>\r\n </span>\r\n\r\n <a class=\"next-month\" (click)=\"nextMonth()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\r\n <path\r\n d=\"M96 480c-8.188 0-16.38-3.125-22.62-9.375c-12.5-12.5-12.5-32.75 0-45.25L242.8 256L73.38 86.63c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0l192 192c12.5 12.5 12.5 32.75 0 45.25l-192 192C112.4 476.9 104.2 480 96 480z\"\r\n />\r\n </svg>\r\n </a>\r\n </div>\r\n <div class=\"datepicker__days-container\">\r\n <div\r\n class=\"datepicker__days\"\r\n *ngFor=\"let day of daysMapping[language][dayDisplayType]; index as i\"\r\n >\r\n <div class=\"datepicker__weekday\">{{ day }}</div>\r\n <div\r\n class=\"datepicker__date-container\"\r\n *ngFor=\"let date of currentMonthData[i]\"\r\n >\r\n <div *ngIf=\"hasFuture; else noFutureDate\">\r\n <div\r\n *ngIf=\"date\"\r\n class=\"datepicker__date\"\r\n [class.datepicker__date--active]=\"\r\n date === currentNepaliDate.day &&\r\n currentNepaliDate.month === currentNepaliDate.month &&\r\n currentNepaliDate.year === currentNepaliDate.year\r\n \"\r\n [class.datepicker__date--current-day]=\"\r\n date === nepaliDateToday.day &&\r\n currentNepaliDate.month === nepaliDateToday.month &&\r\n currentNepaliDate.year === nepaliDateToday.year\r\n \"\r\n (click)=\"selectDate(date)\"\r\n >\r\n {{ date | toNp: language : \"number\" }}\r\n </div>\r\n <div *ngIf=\"!date\" class=\"datepicker__date--disabled\">\r\n <span>&nbsp;</span>\r\n </div>\r\n </div>\r\n\r\n <ng-template #noFutureDate>\r\n <div\r\n *ngIf=\"\r\n date &&\r\n this.currentNepaliDate.year * 365 +\r\n this.currentNepaliDate.month * 30 +\r\n date <=\r\n nepaliDateToday.day +\r\n nepaliDateToday.month * 30 +\r\n nepaliDateToday.year * 365;\r\n else disabledDates\r\n \"\r\n class=\"datepicker__date\"\r\n [class.datepicker__date--active]=\"\r\n date === selectedDate.day &&\r\n currentNepaliDate.month === selectedDate.month &&\r\n currentNepaliDate.year === selectedDate.year\r\n \"\r\n [class.datepicker__date--current-day]=\"\r\n date === nepaliDateToday.day &&\r\n currentNepaliDate.month === nepaliDateToday.month &&\r\n currentNepaliDate.year === nepaliDateToday.year\r\n \"\r\n (click)=\"selectDate(date)\"\r\n >\r\n {{ date | toNp: language : \"number\" }}\r\n </div>\r\n\r\n <ng-template #disabledDates>\r\n <div class=\"datepicker__date datepicker__date--disabled\">\r\n {{ date | toNp: language : \"number\" }}\r\n </div>\r\n </ng-template>\r\n\r\n <div *ngIf=\"!date\" class=\"datepicker__date--disabled\">\r\n <span>&nbsp;</span>\r\n </div>\r\n </ng-template>\r\n </div>\r\n <!--.datepicker__date-container ends-->\r\n </div>\r\n <!--.datepicker__days ends-->\r\n </div>\r\n <!--.datepicker__days-container ends-->\r\n </div>\r\n <!--.datepicker__container ends-->\r\n</ng-template>\r\n", styles: [".nepali-date-picker.nepali-date-picker{position:relative;display:inline-block;font-family:Arial,Helvetica,sans-serif;font-size:1em}.nepali-date-picker a.active svg{fill:#337ab7;opacity:.9}.nepali-date-picker .form-icon svg{width:14px;opacity:.3;position:absolute;right:8px;top:12px;cursor:pointer}.datepicker__container{border:1px solid #eee;background:#fff;width:294px;box-shadow:#0a0a0f33 0 7px 29px;position:absolute;z-index:99999}.datepicker__options-container{padding:12px 5px;border-bottom:1px solid #eee;display:flex;justify-content:space-evenly;background-color:#337ab7;color:#fff;line-height:25px;font-size:1em}.datepicker__days-container{display:flex;justify-content:center;color:#777}.datepicker__days{text-align:center;padding-bottom:10px}.datepicker__weekday{padding:8px;font-weight:700;border-bottom:1px solid #eee;margin-bottom:0}.datepicker__date-container{width:40px;height:40px;line-height:40px;margin:0}.datepicker__date-container>div{height:100%}.datepicker__date{cursor:pointer;border-radius:4px}.datepicker__date:hover{background-color:#eee}.datepicker__date.datepicker__date--disabled{background:#f3f3f3;border-radius:0}.datepicker__date.datepicker__date--disabled:hover{background:#f3f3f3}.datepicker__date--active.datepicker__date--active{background-color:#337ab7;color:#fff}select:focus,select:focus-visible{outline:1px solid #fff}.datepicker__container select{border:none;color:#fff;background:none;font-size:inherit}select option{color:#333}.ngx_np_datepicker_input{border:1px solid #eee;padding:10px;font-size:16px;color:#777}.ngx_np_datepicker_input:focus-visible{outline:2px solid #337ab7}.prev-month,.next-month{padding:0;width:25px;height:25px;display:block;opacity:.5;border-radius:50%;background:#f3f3f3;cursor:pointer;text-align:center;line-height:23px}.next-month:hover,.prev-month:hover{background:#ccc}.prev-month svg,.next-month svg{max-width:8px;height:auto}.select-today{padding:0;width:22px;height:22px;display:block;cursor:pointer;color:#ffffffe6;text-align:center;line-height:23px}.select-today:hover{color:#ffffff80}.select-today svg{max-width:100%}.dark.nepali-date-picker a.active svg{fill:#000}.dark .datepicker__options-container{border-bottom:1px solid #000;background-color:#000;color:#fff}.dark .datepicker__container{background:#333}.dark select{color:#fff}.datepicker__date--current-day{background-color:#f3f3f3;border:2px dashed rgba(0,0,0,.2);position:relative;z-index:999;height:100%}.dark .datepicker__date--active.datepicker__date--active{background-color:#000;color:#fff}.dark .ngx_np_datepicker_input:focus-visible{outline:2px solid #000}.dark .datepicker__days{background-color:#333}.dark .datepicker__date:hover{background-color:#222;color:#fff}.dark .datepicker__days-container{color:#aaa}.dark .datepicker__weekday{border-bottom:1px solid #555}.dark .datepicker__date--current-day{background:#555;border:none}.light.nepali-date-picker a.active svg{fill:#777}.light .datepicker__options-container{border-bottom:none;background-color:#fff;color:#777}.light select{color:#777}.light .datepicker__date--active.datepicker__date--active{background-color:#aaa;color:#fff}.light .ngx_np_datepicker_input:focus-visible{outline:1px solid #ddd}.lightblue.nepali-date-picker a.active svg{fill:#38c5f0da}.lightblue .datepicker__options-container{background-color:#38c5f0da;color:#fff}.lightblue select{color:#fff}.lightblue .datepicker__date--active.datepicker__date--active{background-color:#38c5f0da;color:#fff}.lightblue .ngx_np_datepicker_input:focus-visible{outline:2px solid #38c5f0da}.lightblue .ngx_np_datepicker_input:focus-visible{outline:1px solid #38c5f0da}.custom-mat-field{position:relative;width:100%;height:45px;background:rgba(0,0,0,.04);border-top-left-radius:4px;border-top-right-radius:4px;border-bottom:1px solid rgba(0,0,0,.42);transition:background-color .2s ease}.custom-mat-field:hover{background:rgba(0,0,0,.08)}.custom-mat-field:focus-within{border-bottom:2px solid #3f51b5}.custom-mat-field .ngx_np_datepicker_input:focus-visible{outline:none}.custom-mat-field .ngx_np_datepicker_input{width:100%;height:100%;border:none;background:transparent;outline:none;padding:24px 12px 8px;font-size:16px;box-sizing:border-box}.custom-mat-field .np-label{position:absolute;left:12px;top:18px;color:#0009;font-size:16px;pointer-events:none;transform-origin:left top;transition:all .15s ease}.custom-mat-field.has-value .np-label,.custom-mat-field:focus-within .np-label,.custom-mat-field .ngx_np_datepicker_input:not(:placeholder-shown)+.np-label{top:8px;font-size:12px;color:#3f51b5}.custom-mat-field .ngx_np_datepicker_input::placeholder{opacity:0;transition:opacity .15s ease}.custom-mat-field .ngx_np_datepicker_input:focus::placeholder{opacity:1}\n"] }]
695
695
  }], ctorParameters: function () { return [{ type: NpDatePickerService }, { type: i0.ElementRef }]; }, propDecorators: { theme: [{
696
696
  type: Input
697
697
  }], language: [{