{"version":3,"file":"sq-ui-ng-datetime-picker.mjs","sources":["../../../projects/ng-datetime-picker/src/lib/datetime-picker/enums/calendar-period-relativity.enum.ts","../../../projects/ng-datetime-picker/src/lib/datetime-picker/calendar-manager.service.ts","../../../projects/ng-datetime-picker/src/lib/datetime-picker/enums/calendar-period-type.enum.ts","../../../projects/ng-datetime-picker/src/lib/datetime-picker/enums/date-object-type.enum.ts","../../../projects/ng-datetime-picker/src/lib/datetime-picker/enums/time-unit.enum.ts","../../../projects/ng-datetime-picker/src/lib/datetime-picker/enums/time-object-type.enum.ts","../../../projects/ng-datetime-picker/src/lib/datetime-picker/time-picker/time-picker.component.ts","../../../projects/ng-datetime-picker/src/lib/datetime-picker/time-picker/time-picker.component.html","../../../projects/ng-datetime-picker/src/lib/datetime-picker/datetime-picker/datetime-picker.component.ts","../../../projects/ng-datetime-picker/src/lib/datetime-picker/datetime-picker/datetime-picker.component.html","../../../projects/ng-datetime-picker/src/lib/datetime-picker/datetime-picker.module.ts","../../../projects/ng-datetime-picker/src/lib/ng-datetime-picker.module.ts","../../../projects/ng-datetime-picker/src/index.ts","../../../projects/ng-datetime-picker/src/sq-ui-ng-datetime-picker.ts"],"sourcesContent":["export enum CalendarPeriodRelativityEnum {\r\n  Current = 0,\r\n  Before,\r\n  After\r\n}\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport { CalendarDay, InCalendarPicker } from './interfaces/calendar-entities';\r\nimport { CalendarPeriodRelativityEnum } from './enums/calendar-period-relativity.enum';\r\nimport { DateRange } from './interfaces/date-range';\r\nimport moment from 'moment';\r\n\r\n@Injectable()\r\nexport class CalendarManagerService {\r\n\r\n  constructor() { }\r\n\r\n  private locale = 'en';\r\n  private previouslySelectedYear = moment();\r\n\r\n  setLocale(locale: string) {\r\n    moment.locale(locale);\r\n    this.locale = locale;\r\n  }\r\n\r\n  generateCalendarForMonth(startDate: moment.Moment | Date,\r\n    currentMonth: moment.Moment,\r\n    selectedDates: moment.Moment[],\r\n    dateRange: DateRange): Array<CalendarDay[]> {\r\n    const monthStart = moment(startDate).startOf('month').locale(this.locale);\r\n    const isStartOfChosenMonthTheFirstDayOfTable = (monthStart.weekday() === 0);\r\n\r\n    const dateIterator = monthStart.clone();\r\n    const calendar = [];\r\n    let tableRow: CalendarDay[] = [];\r\n    let newDate: CalendarDay;\r\n\r\n    if (!isStartOfChosenMonthTheFirstDayOfTable) {\r\n      let daysToGoBack = dateIterator.weekday();\r\n      daysToGoBack = (daysToGoBack === 0) ? 1 : daysToGoBack;\r\n      dateIterator.subtract(daysToGoBack, 'days');\r\n    }\r\n\r\n    // add dates until the calendar has 6 week rows\r\n    while (calendar.length < 6) {\r\n      newDate = {\r\n        displayDate: dateIterator.format('D'),\r\n        momentObj: dateIterator.clone(),\r\n        relativityToCurrentMonth: this.determineDateRelativityToCurrentMonth(dateIterator, currentMonth),\r\n        isDisabled: this.determineIfDateIsDisabled(dateIterator, dateRange.minDate, dateRange.maxDate),\r\n        isSelected: this.getSelectedItemIndex(dateIterator, selectedDates) > -1\r\n      };\r\n\r\n      if (tableRow.length <= 6) {\r\n        tableRow.push(newDate);\r\n\r\n      } else {\r\n        calendar.push(tableRow);\r\n        tableRow = [newDate];\r\n      }\r\n\r\n      dateIterator.add(1, 'day');\r\n    }\r\n\r\n    return calendar;\r\n  }\r\n\r\n  generateMonthPickerCollection(currentYear: number, dateRange: DateRange): InCalendarPicker[] {\r\n    const months = this.getMonths();\r\n\r\n    return months.map((monthName, index) => {\r\n      const date = moment().year(currentYear).month(index);\r\n\r\n      return {\r\n        displayName: monthName,\r\n        momentObj: date,\r\n        isDisabled: this.determineIfDateIsDisabled(date, dateRange.minDate, dateRange.maxDate)\r\n      };\r\n    });\r\n  }\r\n\r\n  generateYearPickerCollection(start: moment.Moment, margin: number = 19, dateRange: DateRange): InCalendarPicker[] {\r\n    const yearsList = this.getYearList(start, margin);\r\n\r\n    return yearsList.map((year) => {\r\n      const date = moment().year(year);\r\n\r\n      return {\r\n        displayName: year.toString(),\r\n        momentObj: date,\r\n        isDisabled: this.determineIfDateIsDisabled(date, dateRange.minDate, dateRange.maxDate)\r\n      };\r\n    });\r\n  }\r\n\r\n  getWeekdays(short: boolean = true) {\r\n    return short ? moment.weekdaysShort(true) : moment.weekdays(true);\r\n  }\r\n\r\n  getMonths(short: boolean = true) {\r\n    return short ? moment.monthsShort() : moment.months();\r\n  }\r\n\r\n  getYearList(start: moment.Moment, margin: number = 19): number[] {\r\n    let yearIterator;\r\n    let endYear;\r\n\r\n    if (start) {\r\n      this.previouslySelectedYear = start.clone();\r\n    }\r\n\r\n    if (margin < 0) {\r\n      endYear = moment(this.previouslySelectedYear).add(margin, 'years');\r\n      yearIterator = moment(endYear).add(margin, 'years');\r\n    } else {\r\n      yearIterator = moment(this.previouslySelectedYear);\r\n      endYear = moment(yearIterator).add(margin, 'years');\r\n    }\r\n\r\n    const yearList = [];\r\n\r\n    while (yearIterator.isSameOrBefore(endYear)) {\r\n      yearList.push(yearIterator.clone().year());\r\n      yearIterator.add(1, 'year');\r\n    }\r\n\r\n    this.previouslySelectedYear = yearIterator.subtract(1, 'year').clone();\r\n\r\n    return yearList;\r\n  }\r\n\r\n  findADateFromCalendar(date: moment.Moment | Date, calendarTable: Array<CalendarDay[]>): CalendarDay {\r\n    const dateToFind = moment(date);\r\n\r\n    const flatCalendarTable = calendarTable.reduce((acc, val) => acc.concat(val), []);\r\n\r\n    return flatCalendarTable.find((calendarDay) => {\r\n      return calendarDay.momentObj.isSame(dateToFind, 'day');\r\n    });\r\n  }\r\n\r\n  getSelectedItemIndex(date: moment.Moment, selectedDates: moment.Moment[]): number {\r\n    return selectedDates.findIndex((selectedDate) => {\r\n      return moment(selectedDate).isSame(date, 'day');\r\n    });\r\n  }\r\n\r\n  determineIfDateIsDisabled(currentDate: moment.Moment | Date,\r\n    minDate: moment.Moment | Date,\r\n    maxDate: moment.Moment | Date): boolean {\r\n    const isAfterMaxDate = maxDate && moment(currentDate).isAfter(maxDate, 'day');\r\n    const isBeforeMinDate = minDate && moment(currentDate).isBefore(minDate, 'day');\r\n\r\n    return <boolean>(isAfterMaxDate || isBeforeMinDate);\r\n  }\r\n\r\n  determineDateRelativityToCurrentMonth(date: moment.Moment, currentMonth: moment.Moment): CalendarPeriodRelativityEnum {\r\n    const startOfCurrentMonth = moment(currentMonth).startOf('month');\r\n    const endOfCurrentMonth = moment(currentMonth).endOf('month');\r\n\r\n    if (moment(date).isBefore(startOfCurrentMonth)) {\r\n      return CalendarPeriodRelativityEnum.Before;\r\n    }\r\n\r\n    if (moment(date).isAfter(endOfCurrentMonth)) {\r\n      return CalendarPeriodRelativityEnum.After;\r\n    }\r\n\r\n    return CalendarPeriodRelativityEnum.Current;\r\n  }\r\n\r\n  sortDatesAsc(dates) {\r\n    return dates.sort((date1, date2) => {\r\n      if (moment(date1).isAfter(date2)) {\r\n        return 1;\r\n      } else {\r\n        return -1;\r\n      }\r\n    });\r\n  }\r\n}\r\n","export enum CalendarPeriodTypeEnum {\r\n  Month = 0,\r\n  Year\r\n}\r\n\r\n","export enum DateObjectType {\r\n  Moment = 'moment',\r\n  Date = 'date',\r\n  Unix = 'unix'\r\n}\r\n\r\n","export enum TimeUnit {\r\n  Hours = 'hours',\r\n  Minutes = 'minutes'\r\n}\r\n\r\n","export enum TimeObject {\r\n  String = 'string',\r\n  Moment = 'moment'\r\n}\r\n","import {\r\n  Component, forwardRef, OnInit, ViewEncapsulation,\r\n  Input, OnChanges, Output, EventEmitter, AfterViewInit\r\n} from '@angular/core';\r\nimport { InputCoreComponent } from '@sq-ui/ng-sq-common';\r\nimport { TimeUnit } from '../enums/time-unit.enum';\r\nimport { TimeObject } from '../enums/time-object-type.enum';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport moment from 'moment';\r\n\r\n\r\nconst CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR = {\r\n  provide: NG_VALUE_ACCESSOR,\r\n  useExisting: forwardRef(() => TimePickerComponent),\r\n  multi: true,\r\n};\r\n\r\n@Component({\r\n  selector: 'sq-time-picker',\r\n  templateUrl: './time-picker.component.html',\r\n  styleUrls: ['./time-picker.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n  providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR]\r\n})\r\nexport class TimePickerComponent extends InputCoreComponent implements OnInit, AfterViewInit, OnChanges {\r\n  @Input() hourStep = 1;\r\n  @Input() minuteStep = 1;\r\n  @Input() isMeridiem = false;\r\n  @Input() isEditable = true;\r\n  @Input('hours') inputHours: number;\r\n  @Input('minutes') inputMinutes: number;\r\n  @Input() timeObjectType: string = TimeObject.String;\r\n\r\n  @Output('hoursChange') inputHoursChange = new EventEmitter<number>();\r\n  @Output('minutesChange') inputMinutesChange = new EventEmitter<number>();\r\n\r\n  hours;\r\n  minutes;\r\n  noonRelativity = 'am';\r\n  timeUnit = TimeUnit;\r\n\r\n  private start = moment();\r\n  private hourFormat = 'HH'; // 24-hour format by default\r\n\r\n  limits = {\r\n    hours: {\r\n      min: 0,\r\n      max: 24\r\n    },\r\n    minutes: {\r\n      min: 0,\r\n      max: 59\r\n    }\r\n  };\r\n\r\n  constructor() {\r\n    super();\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.hours = this.start.format(this.hourFormat);\r\n    this.minutes = this.start.format('mm');\r\n    this.setValueResult();\r\n  }\r\n\r\n  ngOnChanges(changesObj) {\r\n    if (changesObj.isMeridiem) {\r\n      if (changesObj.isMeridiem.currentValue) {\r\n        this.hourFormat = 'hh';\r\n        this.noonRelativity = this.start.format('a');\r\n        this.limits.hours.min = 1;\r\n        this.limits.hours.max = 12;\r\n      } else {\r\n        this.hourFormat = 'HH';\r\n        this.limits.hours.min = 0;\r\n        this.limits.hours.max = 24;\r\n      }\r\n\r\n      this.hours = this.start.format(this.hourFormat);\r\n    }\r\n\r\n    if (changesObj.inputHours &&\r\n      changesObj.inputHours.currentValue !== null &&\r\n      typeof changesObj.inputHours.currentValue !== 'undefined' &&\r\n      changesObj.inputHours.currentValue > -1) {\r\n      this.hours = this.start.hours(changesObj.inputHours.currentValue).format(this.hourFormat);\r\n      this.noonRelativity = this.start.format('a');\r\n    }\r\n\r\n    if (changesObj.inputMinutes &&\r\n      changesObj.inputMinutes.currentValue !== null &&\r\n      typeof changesObj.inputMinutes.currentValue !== 'undefined' &&\r\n      changesObj.inputMinutes.currentValue > -1) {\r\n      this.minutes = this.start.minutes(changesObj.inputMinutes.currentValue).format('mm');\r\n    }\r\n\r\n    this.setValueResult();\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    setTimeout(() => {\r\n      this.setValueResult();\r\n    });\r\n  }\r\n\r\n  increment(unit: TimeUnit) {\r\n    switch (unit) {\r\n      case TimeUnit.Hours:\r\n        this.hours = this.start.add(this.hourStep, 'hours').format(this.hourFormat);\r\n        this.inputHoursChange.emit(parseInt(this.hours, 10));\r\n        break;\r\n      case TimeUnit.Minutes:\r\n        this.minutes = this.start.add(this.minuteStep, 'minutes').format('mm');\r\n        this.inputMinutesChange.emit(parseInt(this.minutes, 10));\r\n        break;\r\n    }\r\n\r\n    this.setValueResult();\r\n  }\r\n\r\n  decrement(unit: TimeUnit) {\r\n    switch (unit) {\r\n      case TimeUnit.Hours:\r\n        this.hours = this.start.subtract(this.hourStep, 'hours').format(this.hourFormat);\r\n        this.inputHoursChange.emit(parseInt(this.hours, 10));\r\n        break;\r\n      case TimeUnit.Minutes:\r\n        this.minutes = this.start.subtract(this.minuteStep, 'minutes').format('mm');\r\n        this.inputMinutesChange.emit(parseInt(this.minutes, 10));\r\n        break;\r\n    }\r\n\r\n    this.setValueResult();\r\n  }\r\n\r\n  changeNoonRelativity() {\r\n    this.noonRelativity = this.noonRelativity === 'am' ? 'pm' : 'am';\r\n    this.setValueResult();\r\n  }\r\n\r\n  validateInput(unit: TimeUnit) {\r\n    switch (unit) {\r\n      case TimeUnit.Hours:\r\n        this.hours = this.normalizeTimeInput(this.hours, TimeUnit.Hours);\r\n        break;\r\n      case TimeUnit.Minutes:\r\n        this.minutes = this.normalizeTimeInput(this.minutes, TimeUnit.Minutes);\r\n        break;\r\n    }\r\n\r\n    this.setValueResult();\r\n  }\r\n\r\n  private normalizeTimeInput(value: string, unit: TimeUnit) {\r\n    if (!value) {\r\n      value = '00';\r\n    }\r\n\r\n    if (parseInt(value, 10) >= this.limits[unit].max) {\r\n      value = this.limits[unit].max.toString();\r\n\r\n      if (unit === TimeUnit.Hours && !this.isMeridiem) {\r\n        value = '00';\r\n      }\r\n    }\r\n\r\n    if (parseInt(value, 10) < this.limits[unit].min) {\r\n      value = this.limits[unit].min.toString();\r\n    }\r\n\r\n    return value;\r\n  }\r\n\r\n  private setValueResult() {\r\n    let timeMoment: moment.Moment;\r\n    let timeString = `${this.hours}:${this.minutes}`;\r\n    timeString = this.isMeridiem ? `${timeString} ${this.noonRelativity.toUpperCase()}` : timeString;\r\n\r\n    if (this.timeObjectType === TimeObject.Moment) {\r\n      const momentFormat = this.isMeridiem ? 'hh:mm A' : 'HH:mm';\r\n      timeMoment = moment(timeString, momentFormat);\r\n    }\r\n\r\n    this.value = timeMoment ? timeMoment : timeString;\r\n  }\r\n}\r\n","<div class=\"time-picker display-flex justify-center align-items-center\">\r\n  <div class=\"time-unit display-flex column align-items-center\">\r\n    <button type=\"button\"\r\n            class=\"spinner display-flex justify-center align-items-center\"\r\n            (click)=\"increment(timeUnit.Hours)\">\r\n      <i class=\"fas fa-chevron-up\" aria-hidden=\"true\"></i>\r\n    </button>\r\n\r\n    <div class=\"time display-flex column align-items-center\">\r\n      <input type=\"text\"\r\n             name=\"time\"\r\n             [(ngModel)]=\"hours\"\r\n             maxlength=\"2\"\r\n             minlength=\"1\"\r\n             [disabled]=\"!isEditable\"\r\n             [ngModelOptions]=\"{standalone: true}\"\r\n             (ngModelChange)=\"validateInput(timeUnit.Hours)\">\r\n    </div>\r\n\r\n    <button type=\"button\"\r\n            class=\"spinner display-flex justify-center align-items-center\"\r\n            (click)=\"decrement(timeUnit.Hours)\">\r\n      <i class=\"fas fa-chevron-down\" aria-hidden=\"true\"></i>\r\n    </button>\r\n  </div>\r\n\r\n  <div class=\"time-unit divider\">:</div>\r\n\r\n  <div class=\"time-unit display-flex column align-items-center\">\r\n    <button type=\"button\"\r\n            class=\"spinner display-flex justify-center align-items-center\"\r\n            (click)=\"increment(timeUnit.Minutes)\">\r\n      <i class=\"fas fa-chevron-up\" aria-hidden=\"true\"></i>\r\n    </button>\r\n\r\n    <div class=\"time\">\r\n      <input type=\"text\"\r\n             name=\"minutes\"\r\n             [(ngModel)]=\"minutes\"\r\n             maxlength=\"2\"\r\n             minlength=\"1\"\r\n             [disabled]=\"!isEditable\"\r\n             [ngModelOptions]=\"{standalone: true}\"\r\n             (ngModelChange)=\"validateInput(timeUnit.Minutes)\">\r\n    </div>\r\n\r\n    <button type=\"button\"\r\n            class=\"spinner display-flex justify-center align-items-center\"\r\n            (click)=\"decrement(timeUnit.Minutes)\">\r\n      <i class=\"fas fa-chevron-down\" aria-hidden=\"true\"></i>\r\n    </button>\r\n  </div>\r\n\r\n  <div *ngIf=\"isMeridiem\"\r\n        class=\"time-unit\">\r\n    <button type=\"button\"\r\n            class=\"display-flex justify-center align-items-center\"\r\n            (click)=\"changeNoonRelativity()\">\r\n      <span class=\"meridiem\">\r\n        {{noonRelativity.toUpperCase()}}\r\n      </span>\r\n      <i class=\"far fa-clock meridiem-icon\" aria-hidden=\"true\"></i>\r\n    </button>\r\n  </div>\r\n</div>\r\n","import {\r\n  Component, forwardRef, OnInit, ViewEncapsulation,\r\n  Input, Output, EventEmitter, AfterViewInit,\r\n  OnChanges\r\n} from '@angular/core';\r\nimport { InputCoreComponent } from '@sq-ui/ng-sq-common';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { CalendarDay, InCalendarPicker } from '../interfaces/calendar-entities';\r\nimport { CalendarPeriodRelativityEnum } from '../enums/calendar-period-relativity.enum';\r\nimport { DateRange } from '../interfaces/date-range';\r\nimport { CalendarPeriodTypeEnum } from '../enums/calendar-period-type.enum';\r\nimport { DateObjectType } from '../enums/date-object-type.enum';\r\nimport { TimepickerConfig } from '../interfaces/timepicker-config';\r\nimport { List } from 'immutable';\r\nimport { CalendarManagerService } from '../calendar-manager.service';\r\nimport moment from 'moment';\r\nimport { take } from 'rxjs';\r\n\r\nconst CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR = {\r\n  provide: NG_VALUE_ACCESSOR,\r\n  useExisting: forwardRef(() => DatetimePickerComponent),\r\n  multi: true\r\n};\r\n\r\n@Component({\r\n  selector: 'sq-datetime-picker',\r\n  templateUrl: './datetime-picker.component.html',\r\n  styleUrls: ['./datetime-picker.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n  providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR]\r\n})\r\nexport class DatetimePickerComponent extends InputCoreComponent implements OnInit, AfterViewInit, OnChanges {\r\n  @Input() locale = 'en';\r\n  @Input() maxDate: moment.Moment | Date;\r\n  @Input() minDate: moment.Moment | Date;\r\n  @Input() isMultipleSelect = false;\r\n  @Input() format: string;\r\n  @Input() isTimepickerEnabled = false;\r\n  @Input() dateObjectType: string = DateObjectType.Moment;\r\n  @Input() timepickerConfig: TimepickerConfig;\r\n\r\n  @Output() dateSelectionChange: EventEmitter<moment.Moment | Date> = new EventEmitter<moment.Moment | Date>();\r\n\r\n  weekdays: string[];\r\n  months: InCalendarPicker[];\r\n  yearsList: InCalendarPicker[];\r\n  calendar: Array<CalendarDay[]>;\r\n  currentMonth: moment.Moment;\r\n  isMonthsPickerEnabled = false;\r\n  isYearsPickerEnabled = false;\r\n  time: moment.Moment;\r\n  calendarPeriodRelativity = CalendarPeriodRelativityEnum;\r\n  period: CalendarPeriodTypeEnum = CalendarPeriodTypeEnum.Month;\r\n\r\n  private selectedDates: List<moment.Moment> = List<moment.Moment>();\r\n  private parsedSelectedDates: any;\r\n\r\n  constructor(private calendarManager: CalendarManagerService) {\r\n    super();\r\n  }\r\n\r\n  ngOnInit() {\r\n    moment.locale(this.locale);\r\n    this.calendarManager.setLocale(this.locale);\r\n    const now = moment().hours(0).minutes(0).locale(this.locale);\r\n    this.selectedDates = List([now.clone()]);\r\n    this.weekdays = this.calendarManager.getWeekdays();\r\n    this.calendar = this.getMonthCalendar(now.clone());\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    setTimeout(() => {\r\n      this.setValueResult();\r\n    });\r\n  }\r\n\r\n  ngOnChanges(changesObj) {\r\n    if (changesObj.timepickerConfig && changesObj.timepickerConfig.currentValue) {\r\n      this.setValueResult();\r\n    }\r\n  }\r\n\r\n  override writeValue(newValue: any): void {\r\n    super.writeValue(newValue);\r\n\r\n    if (this.selectedDates.size === 1 && this.selectedDates.get(0).isSame(moment(), 'day')) {\r\n      if (newValue) {\r\n        this.deselectAll();\r\n\r\n        if (Array.isArray(newValue)) {\r\n          newValue.forEach((date) => {\r\n            if (!this.currentMonth.isSame(moment(date), 'month')) {\r\n              this.calendar = this.getMonthCalendar(moment(date));\r\n            }\r\n            const convertedDate = this.calendarManager.findADateFromCalendar(moment(date), this.calendar);\r\n            this.markDateAsSelected(convertedDate);\r\n          });\r\n        } else {\r\n          if (!this.currentMonth.isSame(moment(newValue), 'month')) {\r\n            this.calendar = this.getMonthCalendar(moment(newValue));\r\n          }\r\n          const calendarDay = this.calendarManager.findADateFromCalendar(moment(newValue), this.calendar);\r\n          this.markDateAsSelected(calendarDay);\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  onDateClick(date: CalendarDay) {\r\n    switch (date.relativityToCurrentMonth) {\r\n      case CalendarPeriodRelativityEnum.After:\r\n        this.select(date);\r\n        this.next();\r\n        break;\r\n      case CalendarPeriodRelativityEnum.Before:\r\n        this.select(date);\r\n        this.previous();\r\n        break;\r\n      default:\r\n        this.select(date);\r\n        break;\r\n    }\r\n  }\r\n\r\n  select(date: CalendarDay) {\r\n    const month = this.currentMonth.clone();\r\n\r\n    if (date.relativityToCurrentMonth === CalendarPeriodRelativityEnum.Before) {\r\n      month.subtract(1, 'month');\r\n    }\r\n\r\n    if (date.relativityToCurrentMonth === CalendarPeriodRelativityEnum.After) {\r\n      month.add(1, 'month');\r\n    }\r\n\r\n    this.markDateAsSelected(date);\r\n    this.dateSelectionChange.emit(this.value);\r\n  }\r\n\r\n  next() {\r\n    if (this.period === CalendarPeriodTypeEnum.Month) {\r\n      const nextMonth = this.currentMonth.add(1, 'month');\r\n      this.calendar = this.getMonthCalendar(nextMonth);\r\n    }\r\n\r\n    if (this.period === CalendarPeriodTypeEnum.Year) {\r\n      const dateRange = {\r\n        minDate: moment(this.minDate),\r\n        maxDate: moment(this.maxDate)\r\n      };\r\n\r\n      this.yearsList = this.calendarManager.generateYearPickerCollection(null, 19, dateRange);\r\n    }\r\n  }\r\n\r\n  previous() {\r\n    if (this.period === CalendarPeriodTypeEnum.Month) {\r\n      const previousMonth = this.currentMonth.subtract(1, 'month');\r\n      this.calendar = this.getMonthCalendar(previousMonth);\r\n    }\r\n\r\n    if (this.period === CalendarPeriodTypeEnum.Year) {\r\n      const dateRange = {\r\n        minDate: moment(this.minDate),\r\n        maxDate: moment(this.maxDate)\r\n      };\r\n\r\n      this.yearsList = this.calendarManager.generateYearPickerCollection(null, -19, dateRange);\r\n    }\r\n  }\r\n\r\n  getMonthCalendar(startPeriod: moment.Moment): Array<CalendarDay[]> {\r\n    const selectedDates = this.selectedDates.toArray();\r\n    const dateRange: DateRange = {\r\n      minDate: this.minDate,\r\n      maxDate: this.maxDate\r\n    };\r\n\r\n    this.currentMonth = startPeriod.clone();\r\n\r\n    return this.calendarManager.generateCalendarForMonth(startPeriod, this.currentMonth, selectedDates, dateRange);\r\n  }\r\n\r\n  showMonthsPicker(year: number = this.currentMonth.year()) {\r\n    this.deselectAll();\r\n    this.isYearsPickerEnabled = false;\r\n    this.isMonthsPickerEnabled = true;\r\n    this.currentMonth.year(year);\r\n    const dateRange = {\r\n      minDate: this.minDate,\r\n      maxDate: this.maxDate\r\n    };\r\n\r\n    this.period = CalendarPeriodTypeEnum.Month;\r\n    this.months = this.calendarManager.generateMonthPickerCollection(year, dateRange);\r\n  }\r\n\r\n  showYearsPicker() {\r\n    this.deselectAll();\r\n    this.isMonthsPickerEnabled = false;\r\n    this.isYearsPickerEnabled = true;\r\n    const dateRange = {\r\n      minDate: this.minDate,\r\n      maxDate: this.maxDate\r\n    };\r\n\r\n    this.period = CalendarPeriodTypeEnum.Year;\r\n    this.yearsList = this.calendarManager.generateYearPickerCollection(this.currentMonth, 19, dateRange);\r\n  }\r\n\r\n  selectMonth(month) {\r\n    this.calendar = this.getMonthCalendar(month.momentObj);\r\n    this.isMonthsPickerEnabled = false;\r\n  }\r\n\r\n  selectYear(year) {\r\n    this.showMonthsPicker(year.momentObj.year());\r\n  }\r\n\r\n  onTimeChange() {\r\n    this.setValueResult();\r\n    this.dateSelectionChange.emit(this.value);\r\n  }\r\n\r\n  private markDateAsSelected(date: CalendarDay) {\r\n    const selectedMomentObj = moment(date.momentObj);\r\n    const selectedIndex = this.calendarManager.getSelectedItemIndex(selectedMomentObj, this.selectedDates.toArray());\r\n\r\n    if (this.isMultipleSelect) {\r\n      if (selectedIndex > -1) {\r\n        date.isSelected = false;\r\n        this.selectedDates = this.selectedDates.remove(selectedIndex);\r\n      } else {\r\n        this.selectedDates = this.selectedDates.push(selectedMomentObj);\r\n        date.isSelected = true;\r\n      }\r\n\r\n    } else {\r\n      const previousDate = this.calendarManager.findADateFromCalendar(this.selectedDates.get(0), this.calendar);\r\n      if (previousDate) {\r\n        previousDate.isSelected = false;\r\n      }\r\n\r\n      this.selectedDates = this.selectedDates.clear();\r\n      this.selectedDates = this.selectedDates.push(selectedMomentObj);\r\n      date.isSelected = true;\r\n    }\r\n\r\n    this.setValueResult();\r\n  }\r\n\r\n  private deselectAll() {\r\n    this.selectedDates.toArray().forEach((selectedDate) => {\r\n      const calendarDay = this.calendarManager.findADateFromCalendar(selectedDate, this.calendar);\r\n\r\n      // this handles the case when we have a selected date\r\n      // from the previous month but we haven't selected anything\r\n      // from the current\r\n      if (calendarDay) {\r\n        calendarDay.isSelected = false;\r\n      }\r\n    });\r\n\r\n    this.selectedDates = List([]);\r\n    this.setValueResult();\r\n  }\r\n\r\n  private setValueResult() {\r\n    this.parsedSelectedDates = this.selectedDates.toArray();\r\n\r\n    if (this.parsedSelectedDates.length > 0) {\r\n      this.setValueTimeIfNeeded();\r\n      this.sortValueIfNeeded();\r\n      this.toValueDateObjectTypeIfNeeded();\r\n      this.toValueFormatIfNeeded();\r\n    }\r\n\r\n    if (this.isMultipleSelect) {\r\n      this.value = this.parsedSelectedDates;\r\n    } else {\r\n      this.value = this.parsedSelectedDates[0];\r\n    }\r\n  }\r\n\r\n  private toValueDateObjectTypeIfNeeded() {\r\n    if (!this.format) {\r\n      switch (this.dateObjectType) {\r\n        case DateObjectType.Date:\r\n          this.parsedSelectedDates = this.parsedSelectedDates.map((momentObj) => {\r\n            return momentObj.toDate();\r\n          });\r\n          break;\r\n        case DateObjectType.Unix:\r\n          this.parsedSelectedDates = this.parsedSelectedDates.map((momentObj) => {\r\n            return momentObj.toDate().getTime();\r\n          });\r\n          break;\r\n      }\r\n    }\r\n  }\r\n\r\n  private toValueFormatIfNeeded() {\r\n    if (this.format) {\r\n      const formattedDates = this.parsedSelectedDates.map((date) => {\r\n        return moment(date).format(this.format);\r\n      });\r\n\r\n      this.parsedSelectedDates = formattedDates;\r\n    }\r\n  }\r\n\r\n  private setValueTimeIfNeeded() {\r\n    if (this.isTimepickerEnabled && this.time) {\r\n      const datesWithTime = this.parsedSelectedDates.map((momentObj) => {\r\n        return momentObj.hours(this.time.hours()).minutes(this.time.minutes());\r\n      });\r\n\r\n      this.parsedSelectedDates = datesWithTime;\r\n    }\r\n  }\r\n\r\n  private sortValueIfNeeded() {\r\n    if (this.isMultipleSelect) {\r\n      const sortedDates = this.calendarManager.sortDatesAsc(this.parsedSelectedDates);\r\n      this.parsedSelectedDates = sortedDates;\r\n    }\r\n  }\r\n}\r\n","<div class=\"datetime-picker-wrapper\">\r\n  <div class=\"period-section display-flex\"\r\n       [ngClass]=\"{'justify-center': isMonthsPickerEnabled,\r\n                   'space-between': !isMonthsPickerEnabled}\">\r\n    <button type=\"button\"\r\n            (click)=\"previous()\"\r\n            class=\"change-period prev\"\r\n            *ngIf=\"!isMonthsPickerEnabled\">\r\n      <i class=\"fas fa-chevron-left\"></i>\r\n    </button>\r\n\r\n    <div>\r\n      <button type=\"button\"\r\n              class=\"month-name\"\r\n              (click)=\"showMonthsPicker()\"\r\n              *ngIf=\"!isMonthsPickerEnabled && !isYearsPickerEnabled\">\r\n        <strong class=\"period-name\">{{ currentMonth.format('MMMM') }}</strong>\r\n      </button>\r\n\r\n      <button type=\"button\"\r\n              (click)=\"showYearsPicker()\"\r\n              *ngIf=\"!isYearsPickerEnabled\">\r\n        <strong class=\"period-name\">{{ currentMonth.format('YYYY') }}</strong>\r\n      </button>\r\n\r\n      <strong class=\"period-name\" *ngIf=\"isYearsPickerEnabled\">\r\n        {{ yearsList[0].displayName + ' - ' + yearsList[yearsList.length - 1].displayName }}\r\n      </strong>\r\n    </div>\r\n\r\n    <button type=\"button\"\r\n            (click)=\"next()\"\r\n            class=\"change-period next\"\r\n            *ngIf=\"!isMonthsPickerEnabled\">\r\n      <i class=\"fas fa-chevron-right\"></i>\r\n    </button>\r\n  </div>\r\n\r\n  <div class=\"alt-picker display-flex space-between wrap\"\r\n       *ngIf=\"isMonthsPickerEnabled || isYearsPickerEnabled\">\r\n    <ng-template [ngIf]=\"isMonthsPickerEnabled\">\r\n      <button type=\"button\"\r\n              class=\"picker-item\"\r\n              *ngFor=\"let month of months\"\r\n              (click)=\"selectMonth(month)\"\r\n              [ngClass]=\"{'disabled': month.isDisabled}\">\r\n        {{ month.displayName }}\r\n      </button>\r\n    </ng-template>\r\n\r\n    <ng-template [ngIf]=\"isYearsPickerEnabled\">\r\n      <button type=\"button\"\r\n              class=\"picker-item\"\r\n              *ngFor=\"let year of yearsList\"\r\n              (click)=\"selectYear(year)\"\r\n              [ngClass]=\"{'disabled': year.isDisabled}\">\r\n        {{ year.displayName }}\r\n      </button>\r\n    </ng-template>\r\n  </div>\r\n\r\n  <table class=\"datetime-picker\" *ngIf=\"!isMonthsPickerEnabled && !isYearsPickerEnabled\">\r\n    <thead>\r\n      <tr>\r\n        <th *ngFor=\"let day of weekdays\" class=\"heading\">\r\n          <span class=\"text\">{{ day }}</span>\r\n        </th>\r\n      </tr>\r\n    </thead>\r\n    <tbody>\r\n      <tr *ngFor=\"let dateRow of calendar\" class=\"row\">\r\n        <td *ngFor=\"let date of dateRow\"\r\n            class=\"cell\"\r\n            (click)=\"onDateClick(date)\"\r\n            [ngClass]=\"{'beyond-current-period': date.relativityToCurrentMonth !== calendarPeriodRelativity.Current,\r\n                        'selected': date.isSelected,\r\n                        'disabled': date.isDisabled}\">\r\n          {{ date.displayDate }}\r\n        </td>\r\n      </tr>\r\n    </tbody>\r\n  </table>\r\n\r\n  <sq-time-picker *ngIf=\"isTimepickerEnabled\"\r\n                  [(ngModel)]=\"time\"\r\n                  (ngModelChange)=\"onTimeChange()\"\r\n                  [ngModelOptions]=\"{standalone: true}\"\r\n                  timeObjectType=\"moment\"\r\n                  [hours]=\"timepickerConfig.hours\"\r\n                  [minutes]=\"timepickerConfig.minutes\"\r\n                  [hourStep]=\"timepickerConfig.hourStep\"\r\n                  [minuteStep]=\"timepickerConfig.minuteStep\"\r\n                  [isEditable]=\"timepickerConfig.isEditable\"\r\n                  [isMeridiem]=\"timepickerConfig.isMeridiem\">\r\n  </sq-time-picker>\r\n</div>\r\n","import { NgModule, CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { CalendarManagerService } from './calendar-manager.service';\r\nimport { DatetimePickerComponent } from './datetime-picker/datetime-picker.component';\r\nimport { TimePickerComponent } from './time-picker/time-picker.component';\r\n\r\n@NgModule({\r\n  imports: [\r\n    CommonModule,\r\n    FormsModule\r\n  ],\r\n  declarations: [\r\n    TimePickerComponent,\r\n    DatetimePickerComponent\r\n  ],\r\n  exports: [\r\n    TimePickerComponent,\r\n    DatetimePickerComponent\r\n  ],\r\n  providers: [CalendarManagerService],\r\n  schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA]\r\n})\r\nexport class DatetimePickerModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { DatetimePickerModule } from './datetime-picker/datetime-picker.module';\r\n\r\n@NgModule({\r\n  imports: [\r\n    DatetimePickerModule\r\n  ],\r\n  declarations: [],\r\n  exports: [DatetimePickerModule]\r\n})\r\nexport class NgDatetimePickerModule { }\r\n","/*\r\n * Public API Surface of ng-datetime-picker\r\n */\r\n\r\nexport * from './lib/ng-datetime-picker.module';\r\nexport { DatetimePickerModule } from './lib/datetime-picker/datetime-picker.module';\r\nexport { DatetimePickerComponent } from './lib/datetime-picker/datetime-picker/datetime-picker.component';\r\nexport { TimePickerComponent } from './lib/datetime-picker/time-picker/time-picker.component';\r\nexport { TimepickerConfig } from './lib/datetime-picker/interfaces/timepicker-config';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR","i1","i2","i1.CalendarManagerService","i3","i4.TimePickerComponent"],"mappings":";;;;;;;;;;AAAA,IAAY,4BAIX,CAAA;AAJD,CAAA,UAAY,4BAA4B,EAAA;AACtC,IAAA,4BAAA,CAAA,4BAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW,CAAA;AACX,IAAA,4BAAA,CAAA,4BAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM,CAAA;AACN,IAAA,4BAAA,CAAA,4BAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK,CAAA;AACP,CAAC,EAJW,4BAA4B,KAA5B,4BAA4B,GAIvC,EAAA,CAAA,CAAA;;MCGY,sBAAsB,CAAA;AAEjC,IAAA,WAAA,GAAA;QAEQ,IAAM,CAAA,MAAA,GAAG,IAAI,CAAC;QACd,IAAsB,CAAA,sBAAA,GAAG,MAAM,EAAE,CAAC;KAHzB;AAKjB,IAAA,SAAS,CAAC,MAAc,EAAA;AACtB,QAAA,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACtB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;KACtB;AAED,IAAA,wBAAwB,CAAC,SAA+B,EACtD,YAA2B,EAC3B,aAA8B,EAC9B,SAAoB,EAAA;AACpB,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1E,MAAM,sCAAsC,IAAI,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;AAE5E,QAAA,MAAM,YAAY,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC;QACxC,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,IAAI,QAAQ,GAAkB,EAAE,CAAC;AACjC,QAAA,IAAI,OAAoB,CAAC;QAEzB,IAAI,CAAC,sCAAsC,EAAE;AAC3C,YAAA,IAAI,YAAY,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC;AAC1C,YAAA,YAAY,GAAG,CAAC,YAAY,KAAK,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC;AACvD,YAAA,YAAY,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;AAC7C,SAAA;;AAGD,QAAA,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC1B,YAAA,OAAO,GAAG;AACR,gBAAA,WAAW,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC;AACrC,gBAAA,SAAS,EAAE,YAAY,CAAC,KAAK,EAAE;gBAC/B,wBAAwB,EAAE,IAAI,CAAC,qCAAqC,CAAC,YAAY,EAAE,YAAY,CAAC;AAChG,gBAAA,UAAU,EAAE,IAAI,CAAC,yBAAyB,CAAC,YAAY,EAAE,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC;gBAC9F,UAAU,EAAE,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC;aACxE,CAAC;AAEF,YAAA,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE;AACxB,gBAAA,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAExB,aAAA;AAAM,iBAAA;AACL,gBAAA,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACxB,gBAAA,QAAQ,GAAG,CAAC,OAAO,CAAC,CAAC;AACtB,aAAA;AAED,YAAA,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAC5B,SAAA;AAED,QAAA,OAAO,QAAQ,CAAC;KACjB;IAED,6BAA6B,CAAC,WAAmB,EAAE,SAAoB,EAAA;AACrE,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAEhC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,KAAK,KAAI;AACrC,YAAA,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAErD,OAAO;AACL,gBAAA,WAAW,EAAE,SAAS;AACtB,gBAAA,SAAS,EAAE,IAAI;AACf,gBAAA,UAAU,EAAE,IAAI,CAAC,yBAAyB,CAAC,IAAI,EAAE,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC;aACvF,CAAC;AACJ,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,4BAA4B,CAAC,KAAoB,EAAE,MAAiB,GAAA,EAAE,EAAE,SAAoB,EAAA;QAC1F,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAElD,QAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;YAC5B,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEjC,OAAO;AACL,gBAAA,WAAW,EAAE,IAAI,CAAC,QAAQ,EAAE;AAC5B,gBAAA,SAAS,EAAE,IAAI;AACf,gBAAA,UAAU,EAAE,IAAI,CAAC,yBAAyB,CAAC,IAAI,EAAE,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC;aACvF,CAAC;AACJ,SAAC,CAAC,CAAC;KACJ;IAED,WAAW,CAAC,QAAiB,IAAI,EAAA;AAC/B,QAAA,OAAO,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KACnE;IAED,SAAS,CAAC,QAAiB,IAAI,EAAA;AAC7B,QAAA,OAAO,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;KACvD;AAED,IAAA,WAAW,CAAC,KAAoB,EAAE,MAAA,GAAiB,EAAE,EAAA;AACnD,QAAA,IAAI,YAAY,CAAC;AACjB,QAAA,IAAI,OAAO,CAAC;AAEZ,QAAA,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;AAC7C,SAAA;QAED,IAAI,MAAM,GAAG,CAAC,EAAE;AACd,YAAA,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACnE,YAAA,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACrD,SAAA;AAAM,aAAA;AACL,YAAA,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;AACnD,YAAA,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACrD,SAAA;QAED,MAAM,QAAQ,GAAG,EAAE,CAAC;AAEpB,QAAA,OAAO,YAAY,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;YAC3C,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;AAC3C,YAAA,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAC7B,SAAA;AAED,QAAA,IAAI,CAAC,sBAAsB,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;AAEvE,QAAA,OAAO,QAAQ,CAAC;KACjB;IAED,qBAAqB,CAAC,IAA0B,EAAE,aAAmC,EAAA;AACnF,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAEhC,MAAM,iBAAiB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;AAElF,QAAA,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC,WAAW,KAAI;YAC5C,OAAO,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;AACzD,SAAC,CAAC,CAAC;KACJ;IAED,oBAAoB,CAAC,IAAmB,EAAE,aAA8B,EAAA;AACtE,QAAA,OAAO,aAAa,CAAC,SAAS,CAAC,CAAC,YAAY,KAAI;YAC9C,OAAO,MAAM,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAClD,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,yBAAyB,CAAC,WAAiC,EACzD,OAA6B,EAC7B,OAA6B,EAAA;AAC7B,QAAA,MAAM,cAAc,GAAG,OAAO,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAC9E,QAAA,MAAM,eAAe,GAAG,OAAO,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAEhF,QAAA,QAAiB,cAAc,IAAI,eAAe,EAAE;KACrD;IAED,qCAAqC,CAAC,IAAmB,EAAE,YAA2B,EAAA;QACpF,MAAM,mBAAmB,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAClE,MAAM,iBAAiB,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAE9D,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE;YAC9C,OAAO,4BAA4B,CAAC,MAAM,CAAC;AAC5C,SAAA;QAED,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE;YAC3C,OAAO,4BAA4B,CAAC,KAAK,CAAC;AAC3C,SAAA;QAED,OAAO,4BAA4B,CAAC,OAAO,CAAC;KAC7C;AAED,IAAA,YAAY,CAAC,KAAK,EAAA;QAChB,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,KAAI;YACjC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAChC,gBAAA,OAAO,CAAC,CAAC;AACV,aAAA;AAAM,iBAAA;gBACL,OAAO,CAAC,CAAC,CAAC;AACX,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;8GAtKU,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAAtB,sBAAsB,EAAA,CAAA,CAAA,EAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC,UAAU;;;ACNX,IAAY,sBAGX,CAAA;AAHD,CAAA,UAAY,sBAAsB,EAAA;AAChC,IAAA,sBAAA,CAAA,sBAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAS,CAAA;AACT,IAAA,sBAAA,CAAA,sBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;AACN,CAAC,EAHW,sBAAsB,KAAtB,sBAAsB,GAGjC,EAAA,CAAA,CAAA;;ACHD,IAAY,cAIX,CAAA;AAJD,CAAA,UAAY,cAAc,EAAA;AACxB,IAAA,cAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,cAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,cAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACf,CAAC,EAJW,cAAc,KAAd,cAAc,GAIzB,EAAA,CAAA,CAAA;;ACJD,IAAY,QAGX,CAAA;AAHD,CAAA,UAAY,QAAQ,EAAA;AAClB,IAAA,QAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,QAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACrB,CAAC,EAHW,QAAQ,KAAR,QAAQ,GAGnB,EAAA,CAAA,CAAA;;ACHD,IAAY,UAGX,CAAA;AAHD,CAAA,UAAY,UAAU,EAAA;AACpB,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACnB,CAAC,EAHW,UAAU,KAAV,UAAU,GAGrB,EAAA,CAAA,CAAA;;ACQD,MAAMA,qCAAmC,GAAG;AAC1C,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,mBAAmB,CAAC;AAClD,IAAA,KAAK,EAAE,IAAI;CACZ,CAAC;AASI,MAAO,mBAAoB,SAAQ,kBAAkB,CAAA;AA+BzD,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE,CAAC;QA/BD,IAAQ,CAAA,QAAA,GAAG,CAAC,CAAC;QACb,IAAU,CAAA,UAAA,GAAG,CAAC,CAAC;QACf,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;QACnB,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC;AAGlB,QAAA,IAAA,CAAA,cAAc,GAAW,UAAU,CAAC,MAAM,CAAC;AAE7B,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAU,CAAC;AAC5C,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,YAAY,EAAU,CAAC;QAIzE,IAAc,CAAA,cAAA,GAAG,IAAI,CAAC;QACtB,IAAQ,CAAA,QAAA,GAAG,QAAQ,CAAC;QAEZ,IAAK,CAAA,KAAA,GAAG,MAAM,EAAE,CAAC;AACjB,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,CAAC;AAE1B,QAAA,IAAA,CAAA,MAAM,GAAG;AACP,YAAA,KAAK,EAAE;AACL,gBAAA,GAAG,EAAE,CAAC;AACN,gBAAA,GAAG,EAAE,EAAE;AACR,aAAA;AACD,YAAA,OAAO,EAAE;AACP,gBAAA,GAAG,EAAE,CAAC;AACN,gBAAA,GAAG,EAAE,EAAE;AACR,aAAA;SACF,CAAC;KAID;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;AAED,IAAA,WAAW,CAAC,UAAU,EAAA;QACpB,IAAI,UAAU,CAAC,UAAU,EAAE;AACzB,YAAA,IAAI,UAAU,CAAC,UAAU,CAAC,YAAY,EAAE;AACtC,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;gBACvB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC7C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;gBAC1B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC;AAC5B,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;gBACvB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;gBAC1B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC;AAC5B,aAAA;AAED,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACjD,SAAA;QAED,IAAI,UAAU,CAAC,UAAU;AACvB,YAAA,UAAU,CAAC,UAAU,CAAC,YAAY,KAAK,IAAI;AAC3C,YAAA,OAAO,UAAU,CAAC,UAAU,CAAC,YAAY,KAAK,WAAW;AACzD,YAAA,UAAU,CAAC,UAAU,CAAC,YAAY,GAAG,CAAC,CAAC,EAAE;YACzC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1F,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC9C,SAAA;QAED,IAAI,UAAU,CAAC,YAAY;AACzB,YAAA,UAAU,CAAC,YAAY,CAAC,YAAY,KAAK,IAAI;AAC7C,YAAA,OAAO,UAAU,CAAC,YAAY,CAAC,YAAY,KAAK,WAAW;AAC3D,YAAA,UAAU,CAAC,YAAY,CAAC,YAAY,GAAG,CAAC,CAAC,EAAE;YAC3C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACtF,SAAA;QAED,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;IAED,eAAe,GAAA;QACb,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,cAAc,EAAE,CAAC;AACxB,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,SAAS,CAAC,IAAc,EAAA;AACtB,QAAA,QAAQ,IAAI;YACV,KAAK,QAAQ,CAAC,KAAK;gBACjB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC5E,gBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;gBACrD,MAAM;YACR,KAAK,QAAQ,CAAC,OAAO;gBACnB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACvE,gBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;gBACzD,MAAM;AACT,SAAA;QAED,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;AAED,IAAA,SAAS,CAAC,IAAc,EAAA;AACtB,QAAA,QAAQ,IAAI;YACV,KAAK,QAAQ,CAAC,KAAK;gBACjB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACjF,gBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;gBACrD,MAAM;YACR,KAAK,QAAQ,CAAC,OAAO;gBACnB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC5E,gBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;gBACzD,MAAM;AACT,SAAA;QAED,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;IAED,oBAAoB,GAAA;AAClB,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QACjE,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;AAED,IAAA,aAAa,CAAC,IAAc,EAAA;AAC1B,QAAA,QAAQ,IAAI;YACV,KAAK,QAAQ,CAAC,KAAK;AACjB,gBAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACjE,MAAM;YACR,KAAK,QAAQ,CAAC,OAAO;AACnB,gBAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACvE,MAAM;AACT,SAAA;QAED,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;IAEO,kBAAkB,CAAC,KAAa,EAAE,IAAc,EAAA;QACtD,IAAI,CAAC,KAAK,EAAE;YACV,KAAK,GAAG,IAAI,CAAC;AACd,SAAA;AAED,QAAA,IAAI,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE;AAChD,YAAA,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YAEzC,IAAI,IAAI,KAAK,QAAQ,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBAC/C,KAAK,GAAG,IAAI,CAAC;AACd,aAAA;AACF,SAAA;AAED,QAAA,IAAI,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE;AAC/C,YAAA,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;AAC1C,SAAA;AAED,QAAA,OAAO,KAAK,CAAC;KACd;IAEO,cAAc,GAAA;AACpB,QAAA,IAAI,UAAyB,CAAC;QAC9B,IAAI,UAAU,GAAG,CAAA,EAAG,IAAI,CAAC,KAAK,CAAA,CAAA,EAAI,IAAI,CAAC,OAAO,CAAA,CAAE,CAAC;QACjD,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,GAAG,UAAU,CAAA,CAAA,EAAI,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,EAAE,GAAG,UAAU,CAAC;AAEjG,QAAA,IAAI,IAAI,CAAC,cAAc,KAAK,UAAU,CAAC,MAAM,EAAE;AAC7C,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC;AAC3D,YAAA,UAAU,GAAG,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;AAC/C,SAAA;AAED,QAAA,IAAI,CAAC,KAAK,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC;KACnD;8GAhKU,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EAFnB,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,CAAA,OAAA,EAAA,YAAA,CAAA,EAAA,YAAA,EAAA,CAAA,SAAA,EAAA,cAAA,CAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,EAAA,SAAA,EAAA,CAACA,qCAAmC,CAAC,sECtBlD,m+EAiEA,EAAA,MAAA,EAAA,CAAA,q0BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FDzCa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAP/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,iBAGX,iBAAiB,CAAC,IAAI,EAC1B,SAAA,EAAA,CAACF,qCAAmC,CAAC,EAAA,QAAA,EAAA,m+EAAA,EAAA,MAAA,EAAA,CAAA,q0BAAA,CAAA,EAAA,CAAA;0EAGvC,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACU,UAAU,EAAA,CAAA;sBAAzB,KAAK;uBAAC,OAAO,CAAA;gBACI,YAAY,EAAA,CAAA;sBAA7B,KAAK;uBAAC,SAAS,CAAA;gBACP,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBAEiB,gBAAgB,EAAA,CAAA;sBAAtC,MAAM;uBAAC,aAAa,CAAA;gBACI,kBAAkB,EAAA,CAAA;sBAA1C,MAAM;uBAAC,eAAe,CAAA;;;AEhBzB,MAAM,mCAAmC,GAAG;AAC1C,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,uBAAuB,CAAC;AACtD,IAAA,KAAK,EAAE,IAAI;CACZ,CAAC;AASI,MAAO,uBAAwB,SAAQ,kBAAkB,CAAA;AA0B7D,IAAA,WAAA,CAAoB,eAAuC,EAAA;AACzD,QAAA,KAAK,EAAE,CAAC;QADU,IAAe,CAAA,eAAA,GAAf,eAAe,CAAwB;QAzBlD,IAAM,CAAA,MAAA,GAAG,IAAI,CAAC;QAGd,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;QAEzB,IAAmB,CAAA,mBAAA,GAAG,KAAK,CAAC;AAC5B,QAAA,IAAA,CAAA,cAAc,GAAW,cAAc,CAAC,MAAM,CAAC;AAG9C,QAAA,IAAA,CAAA,mBAAmB,GAAuC,IAAI,YAAY,EAAwB,CAAC;QAO7G,IAAqB,CAAA,qBAAA,GAAG,KAAK,CAAC;QAC9B,IAAoB,CAAA,oBAAA,GAAG,KAAK,CAAC;QAE7B,IAAwB,CAAA,wBAAA,GAAG,4BAA4B,CAAC;AACxD,QAAA,IAAA,CAAA,MAAM,GAA2B,sBAAsB,CAAC,KAAK,CAAC;QAEtD,IAAa,CAAA,aAAA,GAAwB,IAAI,EAAiB,CAAC;KAKlE;IAED,QAAQ,GAAA;AACN,QAAA,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3B,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7D,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;AACnD,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;KACpD;IAED,eAAe,GAAA;QACb,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,cAAc,EAAE,CAAC;AACxB,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,WAAW,CAAC,UAAU,EAAA;QACpB,IAAI,UAAU,CAAC,gBAAgB,IAAI,UAAU,CAAC,gBAAgB,CAAC,YAAY,EAAE;YAC3E,IAAI,CAAC,cAAc,EAAE,CAAC;AACvB,SAAA;KACF;AAEQ,IAAA,UAAU,CAAC,QAAa,EAAA;AAC/B,QAAA,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAE3B,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,EAAE;AACtF,YAAA,IAAI,QAAQ,EAAE;gBACZ,IAAI,CAAC,WAAW,EAAE,CAAC;AAEnB,gBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AAC3B,oBAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACxB,wBAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,EAAE;AACpD,4BAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACrD,yBAAA;AACD,wBAAA,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC9F,wBAAA,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;AACzC,qBAAC,CAAC,CAAC;AACJ,iBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,EAAE;AACxD,wBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AACzD,qBAAA;AACD,oBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,qBAAqB,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AAChG,oBAAA,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;AACtC,iBAAA;AACF,aAAA;AACF,SAAA;KACF;AAED,IAAA,WAAW,CAAC,IAAiB,EAAA;QAC3B,QAAQ,IAAI,CAAC,wBAAwB;YACnC,KAAK,4BAA4B,CAAC,KAAK;AACrC,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAClB,IAAI,CAAC,IAAI,EAAE,CAAC;gBACZ,MAAM;YACR,KAAK,4BAA4B,CAAC,MAAM;AACtC,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAClB,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAChB,MAAM;AACR,YAAA;AACE,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAClB,MAAM;AACT,SAAA;KACF;AAED,IAAA,MAAM,CAAC,IAAiB,EAAA;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;AAExC,QAAA,IAAI,IAAI,CAAC,wBAAwB,KAAK,4BAA4B,CAAC,MAAM,EAAE;AACzE,YAAA,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAC5B,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,wBAAwB,KAAK,4BAA4B,CAAC,KAAK,EAAE;AACxE,YAAA,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACvB,SAAA;AAED,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC3C;IAED,IAAI,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,sBAAsB,CAAC,KAAK,EAAE;AAChD,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACpD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;AAClD,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,sBAAsB,CAAC,IAAI,EAAE;AAC/C,YAAA,MAAM,SAAS,GAAG;AAChB,gBAAA,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;AAC7B,gBAAA,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;aAC9B,CAAC;AAEF,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,4BAA4B,CAAC,IAAI,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;AACzF,SAAA;KACF;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,sBAAsB,CAAC,KAAK,EAAE;AAChD,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YAC7D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;AACtD,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,sBAAsB,CAAC,IAAI,EAAE;AAC/C,YAAA,MAAM,SAAS,GAAG;AAChB,gBAAA,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;AAC7B,gBAAA,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;aAC9B,CAAC;AAEF,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,4BAA4B,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;AAC1F,SAAA;KACF;AAED,IAAA,gBAAgB,CAAC,WAA0B,EAAA;QACzC,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;AACnD,QAAA,MAAM,SAAS,GAAc;YAC3B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC;AAEF,QAAA,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC,KAAK,EAAE,CAAC;AAExC,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,wBAAwB,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC;KAChH;AAED,IAAA,gBAAgB,CAAC,IAAe,GAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,EAAA;QACtD,IAAI,CAAC,WAAW,EAAE,CAAC;AACnB,QAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;AAClC,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;AAClC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7B,QAAA,MAAM,SAAS,GAAG;YAChB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC;AAEF,QAAA,IAAI,CAAC,MAAM,GAAG,sBAAsB,CAAC,KAAK,CAAC;AAC3C,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,6BAA6B,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;KACnF;IAED,eAAe,GAAA;QACb,IAAI,CAAC,WAAW,EAAE,CAAC;AACnB,QAAA,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;AACnC,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;AACjC,QAAA,MAAM,SAAS,GAAG;YAChB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC;AAEF,QAAA,IAAI,CAAC,MAAM,GAAG,sBAAsB,CAAC,IAAI,CAAC;AAC1C,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,4BAA4B,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;KACtG;AAED,IAAA,WAAW,CAAC,KAAK,EAAA;QACf,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AACvD,QAAA,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;KACpC;AAED,IAAA,UAAU,CAAC,IAAI,EAAA;QACb,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;KAC9C;IAED,YAAY,GAAA;QACV,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC3C;AAEO,IAAA,kBAAkB,CAAC,IAAiB,EAAA;QAC1C,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACjD,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,iBAAiB,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAEjH,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,IAAI,aAAa,GAAG,CAAC,CAAC,EAAE;AACtB,gBAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;gBACxB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AAC/D,aAAA;AAAM,iBAAA;gBACL,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAChE,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACxB,aAAA;AAEF,SAAA;AAAM,aAAA;YACL,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,qBAAqB,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC1G,YAAA,IAAI,YAAY,EAAE;AAChB,gBAAA,YAAY,CAAC,UAAU,GAAG,KAAK,CAAC;AACjC,aAAA;YAED,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;YAChD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAChE,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACxB,SAAA;QAED,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;IAEO,WAAW,GAAA;QACjB,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,YAAY,KAAI;AACpD,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,qBAAqB,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;;;;AAK5F,YAAA,IAAI,WAAW,EAAE;AACf,gBAAA,WAAW,CAAC,UAAU,GAAG,KAAK,CAAC;AAChC,aAAA;AACH,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;IAEO,cAAc,GAAA;QACpB,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;AAExD,QAAA,IAAI,IAAI,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE;YACvC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,IAAI,CAAC,6BAA6B,EAAE,CAAC;YACrC,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAC9B,SAAA;QAED,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC;AACvC,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;AAC1C,SAAA;KACF;IAEO,6BAA6B,GAAA;AACnC,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB,QAAQ,IAAI,CAAC,cAAc;gBACzB,KAAK,cAAc,CAAC,IAAI;AACtB,oBAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,SAAS,KAAI;AACpE,wBAAA,OAAO,SAAS,CAAC,MAAM,EAAE,CAAC;AAC5B,qBAAC,CAAC,CAAC;oBACH,MAAM;gBACR,KAAK,cAAc,CAAC,IAAI;AACtB,oBAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,SAAS,KAAI;AACpE,wBAAA,OAAO,SAAS,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC;AACtC,qBAAC,CAAC,CAAC;oBACH,MAAM;AACT,aAAA;AACF,SAAA;KACF;IAEO,qBAAqB,GAAA;QAC3B,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,MAAM,cAAc,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;gBAC3D,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC1C,aAAC,CAAC,CAAC;AAEH,YAAA,IAAI,CAAC,mBAAmB,GAAG,cAAc,CAAC;AAC3C,SAAA;KACF;IAEO,oBAAoB,GAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,IAAI,EAAE;YACzC,MAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,SAAS,KAAI;gBAC/D,OAAO,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AACzE,aAAC,CAAC,CAAC;AAEH,YAAA,IAAI,CAAC,mBAAmB,GAAG,aAAa,CAAC;AAC1C,SAAA;KACF;IAEO,iBAAiB,GAAA;QACvB,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAChF,YAAA,IAAI,CAAC,mBAAmB,GAAG,WAAW,CAAC;AACxC,SAAA;KACF;8GAvSU,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAG,sBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EAFvB,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,EAAA,SAAA,EAAA,CAAC,mCAAmC,CAAC,sEC7BlD,muHAgGA,EAAA,MAAA,EAAA,CAAA,gyDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FDjEa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAPnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,iBAGf,iBAAiB,CAAC,IAAI,EAC1B,SAAA,EAAA,CAAC,mCAAmC,CAAC,EAAA,QAAA,EAAA,muHAAA,EAAA,MAAA,EAAA,CAAA,gyDAAA,CAAA,EAAA,CAAA;0GAGvC,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBACG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,mBAAmB,EAAA,CAAA;sBAA3B,KAAK;gBACG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBAEI,mBAAmB,EAAA,CAAA;sBAA5B,MAAM;;;MElBI,oBAAoB,CAAA;8GAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,iBAV7B,mBAAmB;AACnB,YAAA,uBAAuB,aALvB,YAAY;AACZ,YAAA,WAAW,aAOX,mBAAmB;YACnB,uBAAuB,CAAA,EAAA,CAAA,CAAA,EAAA;AAKd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,EAHpB,SAAA,EAAA,CAAC,sBAAsB,CAAC,YAXjC,YAAY;YACZ,WAAW,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAaF,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAhBhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;AACZ,qBAAA;AACD,oBAAA,YAAY,EAAE;wBACZ,mBAAmB;wBACnB,uBAAuB;AACxB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,mBAAmB;wBACnB,uBAAuB;AACxB,qBAAA;oBACD,SAAS,EAAE,CAAC,sBAAsB,CAAC;AACnC,oBAAA,OAAO,EAAE,CAAC,sBAAsB,EAAE,gBAAgB,CAAC;AACpD,iBAAA,CAAA;;;MCZY,sBAAsB,CAAA;8GAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;+GAAtB,sBAAsB,EAAA,OAAA,EAAA,CAL/B,oBAAoB,CAAA,EAAA,OAAA,EAAA,CAGZ,oBAAoB,CAAA,EAAA,CAAA,CAAA,EAAA;+GAEnB,sBAAsB,EAAA,OAAA,EAAA,CAL/B,oBAAoB,EAGZ,oBAAoB,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAEnB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAPlC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,oBAAoB;AACrB,qBAAA;AACD,oBAAA,YAAY,EAAE,EAAE;oBAChB,OAAO,EAAE,CAAC,oBAAoB,CAAC;AAChC,iBAAA,CAAA;;;ACTD;;AAEG;;ACFH;;AAEG;;;;"}